From 9defe7b617b7a416779d6c3a57f52c390f88fb4d Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Thu, 20 Apr 2023 16:16:29 +0800 Subject: [PATCH 01/62] FIX: STUDIO-2383 slicing error while using compensation set resolution value to 0 could avoid shape error 1. elephant compensation 2. xy-hole-compensation 3. xy-contour-compensation Signed-off-by: qing.zhang Change-Id: I238b6dd3342e09d33f4d10f7928f5fb48371d2b3 (cherry picked from commit f3518dbd226e7fe7cc6e0bbead118aa8321037bd) --- src/libslic3r/Print.cpp | 3 ++- src/libslic3r/PrintObjectSlice.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 12ab102120..cb540c987d 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -172,6 +172,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n } else if ( opt_key == "initial_layer_print_height" || opt_key == "nozzle_diameter" + || opt_key == "resolution" // Spiral Vase forces different kind of slicing than the normal model: // In Spiral Vase mode, holes are closed and only the largest area contour is kept at each layer. // Therefore toggling the Spiral Vase on / off requires complete reslicing. @@ -220,7 +221,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n opt_key == "initial_layer_line_width" || opt_key == "min_layer_height" || opt_key == "max_layer_height" - || opt_key == "resolution" + //|| opt_key == "resolution" //BBS: when enable arc fitting, we must re-generate perimeter || opt_key == "enable_arc_fitting" || opt_key == "wall_infill_order") { diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 382296e16c..d92fb2398d 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -140,7 +140,7 @@ static std::vector slice_volumes_inner( params_base.trafo = object_trafo; //BBS: 0.0025mm is safe enough to simplify the data to speed slicing up for high-resolution model. //Also has on influence on arc fitting which has default resolution 0.0125mm. - params_base.resolution = 0.0025; + params_base.resolution = print_config.resolution <= 0.001 ? 0.0f : 0.0025; switch (print_object_config.slicing_mode.value) { case SlicingMode::Regular: params_base.mode = MeshSlicingParams::SlicingMode::Regular; break; case SlicingMode::EvenOdd: params_base.mode = MeshSlicingParams::SlicingMode::EvenOdd; break; From d20afab1150361f8b3e4ea3ec32fb058774a6a52 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Sun, 23 Apr 2023 10:18:52 +0800 Subject: [PATCH 02/62] FIX: save and load layer_range to 3mf Change-Id: Ie18aa8140b5c0fbba87be6ef2f8d0c924fa61791 (cherry picked from commit 6ef824bfbe06c694609c8e69338a3628248b93ac) --- src/libslic3r/Format/bbs_3mf.cpp | 35 +++++++++++++++++--------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index e0eb8fcb77..5f447f91a0 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -154,8 +154,8 @@ const std::string BBS_MODEL_CONFIG_FILE = "Metadata/model_settings.config"; const std::string BBS_MODEL_CONFIG_RELS_FILE = "Metadata/_rels/model_settings.config.rels"; const std::string SLICE_INFO_CONFIG_FILE = "Metadata/slice_info.config"; const std::string BBS_LAYER_HEIGHTS_PROFILE_FILE = "Metadata/layer_heights_profile.txt"; -/*const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/Prusa_Slicer_layer_config_ranges.xml"; -const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"; +const std::string LAYER_CONFIG_RANGES_FILE = "Metadata/layer_config_ranges.xml"; +/*const std::string SLA_SUPPORT_POINTS_FILE = "Metadata/Slic3r_PE_sla_support_points.txt"; const std::string SLA_DRAIN_HOLES_FILE = "Metadata/Slic3r_PE_sla_drain_holes.txt";*/ const std::string CUSTOM_GCODE_PER_PRINT_Z_FILE = "Metadata/custom_gcode_per_layer.xml"; const std::string AUXILIARY_DIR = "Auxiliaries/"; @@ -750,8 +750,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) typedef std::map IdToCutObjectInfoMap; //typedef std::map IdToGeometryMap; typedef std::map> IdToLayerHeightsProfileMap; - /*typedef std::map IdToLayerConfigRangesMap; - typedef std::map> IdToSlaSupportPointsMap; + typedef std::map IdToLayerConfigRangesMap; + /*typedef std::map> IdToSlaSupportPointsMap; typedef std::map> IdToSlaDrainHolesMap;*/ struct ObjectImporter @@ -941,8 +941,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) IdToMetadataMap m_objects_metadata; IdToCutObjectInfoMap m_cut_object_infos; IdToLayerHeightsProfileMap m_layer_heights_profiles; - /*IdToLayerConfigRangesMap m_layer_config_ranges; - IdToSlaSupportPointsMap m_sla_support_points; + IdToLayerConfigRangesMap m_layer_config_ranges; + /*IdToSlaSupportPointsMap m_sla_support_points; IdToSlaDrainHolesMap m_sla_drain_holes;*/ std::string m_curr_metadata_name; std::string m_curr_characters; @@ -1198,7 +1198,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) m_curr_config.volume_id = -1; m_objects_metadata.clear(); m_layer_heights_profiles.clear(); - //m_layer_config_ranges.clear(); + m_layer_config_ranges.clear(); //m_sla_support_points.clear(); m_curr_metadata_name.clear(); m_curr_characters.clear(); @@ -1509,10 +1509,10 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) _extract_layer_heights_profile_config_from_archive(archive, stat); } else - /*if (boost::algorithm::iequals(name, LAYER_CONFIG_RANGES_FILE)) { + if (boost::algorithm::iequals(name, LAYER_CONFIG_RANGES_FILE)) { // extract slic3r layer config ranges file _extract_layer_config_ranges_from_archive(archive, stat, config_substitutions); - }*/ + } //BBS: disable SLA related files currently /*else if (boost::algorithm::iequals(name, SLA_SUPPORT_POINTS_FILE)) { // extract sla support points file @@ -1686,12 +1686,12 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) model_object->layer_height_profile.set(std::move(obj_layer_heights_profile->second)); // m_layer_config_ranges are indexed by a 1 based model object index. - /*IdToLayerConfigRangesMap::iterator obj_layer_config_ranges = m_layer_config_ranges.find(object.second + 1); + IdToLayerConfigRangesMap::iterator obj_layer_config_ranges = m_layer_config_ranges.find(object.second + 1); if (obj_layer_config_ranges != m_layer_config_ranges.end()) model_object->layer_config_ranges = std::move(obj_layer_config_ranges->second); // m_sla_support_points are indexed by a 1 based model object index. - IdToSlaSupportPointsMap::iterator obj_sla_support_points = m_sla_support_points.find(object.second + 1); + /*IdToSlaSupportPointsMap::iterator obj_sla_support_points = m_sla_support_points.find(object.second + 1); if (obj_sla_support_points != m_sla_support_points.end() && !obj_sla_support_points->second.empty()) { model_object->sla_support_points = std::move(obj_sla_support_points->second); model_object->sla_points_status = sla::PointsStatus::UserModified; @@ -2435,7 +2435,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } } } - /* + void _BBS_3MF_Importer::_extract_layer_config_ranges_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat, ConfigSubstitutionContext& config_substitutions) { if (stat.m_uncomp_size > 0) { @@ -2493,7 +2493,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } } } - + /* void _BBS_3MF_Importer::_extract_sla_support_points_from_archive(mz_zip_archive& archive, const mz_zip_archive_file_stat& stat) { if (stat.m_uncomp_size > 0) { @@ -5353,14 +5353,16 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) proFn(EXPORT_STAGE_ADD_LAYER_RANGE, 0, 1, cb_cancel); if (cb_cancel) return false; - } + }*/ // Adds layer config ranges file ("Metadata/Slic3r_PE_layer_config_ranges.txt"). // All layer height profiles of all ModelObjects are stored here, indexed by 1 based index of the ModelObject in Model. // The index differes from the index of an object ID of an object instance of a 3MF file! if (!_add_layer_config_ranges_file_to_archive(archive, model)) { + close_zip_writer(&archive); + boost::filesystem::remove(filename); return false; - }*/ + } // BBS progress point /*BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ":" <<__LINE__ << boost::format("export 3mf EXPORT_STAGE_ADD_SUPPORT\n"); @@ -6406,7 +6408,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } - /* + bool _BBS_3MF_Exporter::_add_layer_config_ranges_file_to_archive(mz_zip_archive& archive, Model& model) { std::string out = ""; @@ -6466,6 +6468,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) return true; } + /* bool _BBS_3MF_Exporter::_add_sla_support_points_file_to_archive(mz_zip_archive& archive, Model& model) { assert(is_decimal_separator_point()); From 6c0d1898b370116947ff5e76593e630ebfc6bd97 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Sun, 23 Apr 2023 10:58:42 +0800 Subject: [PATCH 03/62] FIX: crash when setting negative thickness value on text tool github issue #1656 Change-Id: Ib77bdd3e4b2508c466d7122a9052d1d15d6bc4bb (cherry picked from commit 8e347eb971ad28bd53fd4bfcdbccd0b980e81810) --- src/slic3r/GUI/Gizmos/GLGizmoText.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 64015ebf2b..2d4bc86621 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -771,10 +771,12 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) m_imgui->text(_L("Thickness")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(list_width); - if(ImGui::InputFloat("###text_thickness", &m_thickness,0.0f, 0.0f, "%.2f")) - m_need_update_text = true; + float old_value = m_thickness; + ImGui::InputFloat("###text_thickness", &m_thickness, 0.0f, 0.0f, "%.2f"); if (m_thickness < 0.1f) m_thickness = 0.1f; + if (old_value != m_thickness) + m_need_update_text = true; const float slider_icon_width = m_imgui->get_slider_icon_size().x; const float slider_width = list_width - 1.5 * slider_icon_width - space_size; @@ -806,10 +808,12 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) m_imgui->text(_L("Embeded\ndepth")); ImGui::SameLine(caption_size); ImGui::PushItemWidth(list_width); - if (ImGui::InputFloat("###text_embeded_depth", &m_embeded_depth, 0.0f, 0.0f, "%.2f")) - m_need_update_text = true; + old_value = m_embeded_depth; + ImGui::InputFloat("###text_embeded_depth", &m_embeded_depth, 0.0f, 0.0f, "%.2f"); if (m_embeded_depth < 0.f) m_embeded_depth = 0.f; + if (old_value != m_embeded_depth) + m_need_update_text = true; ImGui::AlignTextToFramePadding(); m_imgui->text(_L("Input text")); @@ -1468,6 +1472,11 @@ void GLGizmoText::generate_text_volume(bool is_temp) TextInfo text_info = get_text_info(); if (m_is_modify && m_need_update_text) { + if (m_object_idx == -1 || m_volume_idx == -1) { + BOOST_LOG_TRIVIAL(error) << boost::format("Text: selected object_idx = %1%, volume_idx = %2%") % m_object_idx % m_volume_idx; + return; + } + plater->take_snapshot("Modify Text"); const Selection &selection = m_parent.get_selection(); ModelObject * model_object = selection.get_model()->objects[m_object_idx]; From ae0a470f4c4a0707637c166227b8fea299ca9a5c Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 21 Apr 2023 11:02:36 +0800 Subject: [PATCH 04/62] FIX: rotate model before cut, the rotation of connectors is incorrect github issue #1646 & #1647 Change-Id: Iab1d6984685a532011f425e704ccae039a6ef65d (cherry picked from commit 1219045039de4ac0ed677b264e6e8469e6bc72dd) --- src/libslic3r/Model.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 5dac9b6d73..9d2c664d26 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1846,7 +1846,7 @@ void ModelObject::process_connector_cut( // Perform cut TriangleMesh upper_mesh, lower_mesh; - process_volume_cut(volume, instance_matrix, cut_matrix, attributes, upper_mesh, lower_mesh); + process_volume_cut(volume, Transform3d::Identity(), cut_matrix, attributes, upper_mesh, lower_mesh); // add small Z offset to better preview upper_mesh.translate((-0.05 * Vec3d::UnitZ()).cast()); From 64428b4d3b7b4484643b201fed7fb891177d83ee Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Wed, 19 Apr 2023 19:48:11 +0800 Subject: [PATCH 05/62] ENH: add support for PLA and support for PA Signed-off-by: qing.zhang Change-Id: I83781d4e11bd986131caaabba479c0074f2506a0 (cherry picked from commit 545c0122d1c0fce96b62de7ee9042b24911d93a6) --- resources/profiles/BBL.json | 34 ++++++++++++++++- .../Bambu Support For PA PET @BBL X1C.json | 16 ++++++++ .../Bambu Support For PA PET @base.json | 35 +++++++++++++++++ ...u Support For PLA @BBL X1C 0.2 nozzle.json | 21 ++++++++++ .../Bambu Support For PLA @BBL X1C.json | 16 ++++++++ .../filament/Bambu Support For PLA @base.json | 29 ++++++++++++++ .../Bambu Support For PA PET @BBL P1P.json | 13 +++++++ ...u Support For PLA @BBL P1P 0.2 nozzle.json | 38 +++++++++++++++++++ .../P1P/Bambu Support For PLA @BBL P1P.json | 31 +++++++++++++++ 9 files changed, 232 insertions(+), 1 deletion(-) create mode 100644 resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json create mode 100644 resources/profiles/BBL/filament/Bambu Support For PA PET @base.json create mode 100644 resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json create mode 100644 resources/profiles/BBL/filament/Bambu Support For PLA @base.json create mode 100644 resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json create mode 100644 resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json create mode 100644 resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 2c94e639cd..703813e853 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.06.00.01", + "version": "01.06.00.02", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -868,6 +868,38 @@ { "name": "Bambu PET-CF @BBL P1P", "sub_path": "filament/P1P/Bambu PET-CF @BBL P1P.json" + }, + { + "name":"Bambu Support For PLA @base", + "sub_path":"filament/Bambu Support For PLA @base.json" + }, + { + "name":"Bambu Support For PLA @BBL X1C 0.2 nozzle", + "sub_path":"filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json" + }, + { + "name":"Bambu Support For PLA @BBL X1C", + "sub_path":"filament/Bambu Support For PLA @BBL X1C.json" + }, + { + "name":"Bambu Support For PLA @BBL P1P 0.2 nozzle", + "sub_path":"filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json" + }, + { + "name":"Bambu Support For PLA @BBL P1P", + "sub_path":"filament/P1P/Bambu Support For PLA @BBL P1P.json" + }, + { + "name":"Bambu Support For PA/PET @base", + "sub_path":"filament/Bambu Support For PA PET @base.json" + }, + { + "name":"Bambu Support For PA/PET @BBL P1P", + "sub_path":"filament/P1P/Bambu Support For PA PET @BBL P1P.json" + }, + { + "name":"Bambu Support For PA/PET @BBL X1C", + "sub_path":"filament/Bambu Support For PA PET @BBL X1C.json" } ], "machine_list": [ diff --git a/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json new file mode 100644 index 0000000000..bbf5d836ac --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "setting_id": "GFSS03_00", + "name": "Bambu Support For PA/PET @BBL X1C", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PA/PET @base", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json new file mode 100644 index 0000000000..5ba24bd8d3 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "filament_id": "GFS03", + "name": "Bambu Support For PA/PET @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pa", + "required_nozzle_HRC": [ + "3" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "filament_density": [ + "1.22" + ], + "filament_is_support": [ + "1" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "fan_cooling_layer_time": [ + "10" + ], + "filament_cost": [ + "34.99" + ], + "slow_down_layer_time":[ + "6" + ] +} diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json new file mode 100644 index 0000000000..7903c25650 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "setting_id": "GFSS02_01", + "name": "Bambu Support For PLA @BBL X1C 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PLA @base", + "filament_max_volumetric_speed": [ + "0.5" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json new file mode 100644 index 0000000000..61cf0a8ab6 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "setting_id": "GFSS02_02", + "name": "Bambu Support For PLA @BBL X1C", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PLA @base", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json new file mode 100644 index 0000000000..5a49fef271 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "filament_id": "GFS02", + "name": "Bambu Support For PLA @base", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_pla", + "filament_vendor": [ + "Bambu Lab" + ], + "filament_density": [ + "1.30" + ], + "filament_is_support": [ + "1" + ], + "cool_plate_temp": [ + "40" + ], + "cool_plate_temp_initial_layer": [ + "40" + ], + "filament_cost": [ + "69.98" + ], + "slow_down_layer_time": [ + "8" + ] +} diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json new file mode 100644 index 0000000000..e59d77e2dc --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PA PET @BBL P1P.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "setting_id": "GFSS03_01", + "name": "Bambu Support For PA/PET @BBL P1P", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PA/PET @base", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json new file mode 100644 index 0000000000..0b73e5f494 --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "setting_id": "GFSS02_11", + "name": "Bambu Support For PLA @BBL P1P 0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PLA @base", + "filament_max_volumetric_speed": [ + "0.5" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" + ], + "hot_plate_temp" : [ + "65" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "65" + ], + "fan_min_speed": [ + "50" + ], + "fan_cooling_layer_time": [ + "80" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json new file mode 100644 index 0000000000..19ebe7afc1 --- /dev/null +++ b/resources/profiles/BBL/filament/P1P/Bambu Support For PLA @BBL P1P.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "setting_id": "GFSS02_12", + "name": "Bambu Support For PLA @BBL P1P", + "from": "system", + "instantiation": "true", + "inherits": "Bambu Support For PLA @base", + "hot_plate_temp" : [ + "65" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "65" + ], + "fan_min_speed": [ + "50" + ], + "fan_cooling_layer_time": [ + "80" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} From 8be14d6cfe96fec8986c312980bfae0414dbe6d3 Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Tue, 25 Apr 2023 17:41:07 +0800 Subject: [PATCH 06/62] FIX: set temp befor open HB fan to avoid oozing Signed-off-by: qing.zhang Change-Id: Ibbda89a855927615d7da0e6da94a988852a10465 --- resources/profiles/BBL.json | 2 +- resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json | 2 +- resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json | 2 +- .../profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 703813e853..017470de67 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.06.00.02", + "version": "01.06.00.03", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json index 380f00d7f5..07c26c7236 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.2 nozzle.json @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z-0.04 ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z-0.04 ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "upward_compatible_machine":[ "Bambu Lab X1 0.2 nozzle", "Bambu Lab X1 Carbon 0.2 nozzle" diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json index f4016ebad0..7af2778d3c 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.4 nozzle.json @@ -23,7 +23,7 @@ "0x28" ], "extruder_clearance_max_radius": "56", - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "scan_first_layer": "0", "machine_load_filament_time": "29", "machine_unload_filament_time": "28", diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json index d5e2180d11..5c55f9e45b 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.6 nozzle.json @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json index cb10e3e27a..92867bd3cf 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P 0.8 nozzle.json @@ -29,7 +29,7 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230323 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", + "machine_start_gcode": ";===== machine: P1P ========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X230 Y15\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_extruder]==\"PLA\"}\n {if (bed_temperature[initial_extruder] >45)||(bed_temperature_initial_layer[initial_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_extruder] >50)||(bed_temperature_initial_layer[initial_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== fmech mode fast check============================\n\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature_initial_layer[initial_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json index d727b43d07..5f9ff32645 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "nozzle_type": "stainless_steel", "upward_compatible_machine":[ "Bambu Lab P1P 0.2 nozzle", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json index e77c8c8566..d504610c0f 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json @@ -26,7 +26,7 @@ "20", "20" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "scan_first_layer": "1", "machine_load_filament_time": "29", "machine_unload_filament_time": "28", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json index bfc3bfa467..3aaebcd2c2 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json index b11a5b9313..1c4225d3ee 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json @@ -29,7 +29,7 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "nozzle_type": "hardened_steel", "nozzle_hrc": "55", "upward_compatible_machine":[ diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json index fd99ccab49..f34ba14f2e 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "5" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018\n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061\n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659\n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769\n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256\n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "nozzle_type": "stainless_steel", "nozzle_hrc": "20", "upward_compatible_machine":[ diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json index 0b079aca78..58a0464c3e 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json @@ -26,7 +26,7 @@ "20", "20" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on \nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY \n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1 \nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90 \nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000 \n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E0.933 \n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.018 \n G1 F1200.0 X28.500 Y19.500 Z0.200 E0.933 \n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.091 \n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.080 \n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.238 \n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.403 \n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.183 \n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.403 \n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.201 \n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.061 \n G1 F1200.0 X30.000 Y20.000 Z0.200 E0.659 \n G1 F1200.0 X30.000 Y41.000 Z0.200 E0.769 \n G1 F1200.0 X50.000 Y41.000 Z0.200 E0.732 \n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.256 \n G1 F1200.0 X30.000 Y34.000 Z0.200 E0.732 \n G1 F1500.000 E-0.800 \n\n ;=========== extruder cali extrusion ================== \n T1000 \n M83 \n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800 \n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800 \n G0 Z1\n G0 X180 Z0.3 F18000\n \n M900 L1000.0 M1.0\n M900 K0.040 \n G0 X45.000 F30000 \n G0 Y20.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.020 \n G0 X45.000 F30000 \n G0 Y22.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800 \n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n M400\n\n G0 X45.000 F30000 \n M900 K0.000 \n G0 X45.000 F30000 \n G0 Y24.000 F30000 \n G1 F1500.000 E0.800 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos \n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration =========== \nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G0 F6000 X40.000 Y54.500 Z0.000 \n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500 \n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P1 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P200 \n M971 S5 P3 \n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1 \n G0 Y37.50 \n M400 P200\n M971 S5 P2 \n M960 S0 P0\n M960 S2 P1 \n G0 Y54.50 \n M400 P500 \n M971 S5 P4 \n M963 S1 \n M400 P1500 \n M964 \n T1100 \n G1 Z3 F3000 \n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100 \n M400 P400 \n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400 \n M960 S1 P1 \n M400 P50 \n\n M969 S1 N3 A2000 \n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100 \n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000 \n T1000 \n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600 \n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623 \n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60} \n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60} \n M973 S4 \n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan \nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90 \nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60} \nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "scan_first_layer": "1", "machine_load_filament_time": "29", "machine_unload_filament_time": "28", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json index 53ebc5f479..ac7a701175 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json @@ -26,7 +26,7 @@ "retraction_minimum_travel": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X18 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.679\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.032\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.679\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.164\n G1 F1200.0 X31.000 Y49.000 Z0.200 E1.944\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.428\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.725\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.329\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.725\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.362\n G1 F1200.0 X48.000 Y20.000 Z0.200 E1.910\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.186\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.384\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.318\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.461\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.318\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "upward_compatible_machine":[ "Bambu Lab P1P 0.6 nozzle", "Bambu Lab X1 0.6 nozzle" diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json index 1da5d4cb6e..428c360f8a 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json @@ -29,7 +29,7 @@ "retract_length_toolchange": [ "3" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230322 =====================\n;===== turn on the HB fan =================\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp to turn on the HB fan\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20230425 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG0 Z12 F300 ; lower the hotbed , to prevent the nozzle is below the hotbed\nG0 Z-6;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y15 E1.500 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.500\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X18 E15\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n G0 F3000 X28.000 Y19.500 Z0.200\n G1 F1200.0 X28.000 Y45.000 Z0.200 E1.8660\n G1 F1200.0 X28.500 Y45.000 Z0.200 E0.0360\n G1 F1200.0 X28.500 Y19.500 Z0.200 E1.8660\n G1 F1200.0 X31.000 Y19.500 Z0.200 E0.1820\n G1 F1200.0 X31.000 Y49.000 Z0.200 E2.1600\n G1 F1200.0 X37.500 Y49.000 Z0.200 E0.4760\n G1 F1200.0 X37.500 Y60.000 Z0.200 E0.8060\n G1 F1200.0 X42.500 Y60.000 Z0.200 E0.3660\n G1 F1200.0 X42.500 Y49.000 Z0.200 E0.8060\n G1 F1200.0 X48.000 Y49.000 Z0.200 E0.4020\n G1 F1200.0 X48.000 Y20.000 Z0.200 E2.1220\n G1 F1200.0 X30.000 Y20.000 Z0.200 E1.3180\n G1 F1200.0 X30.000 Y41.000 Z0.200 E1.5380\n G1 F1200.0 X50.000 Y41.000 Z0.200 E1.4640\n G1 F1200.0 X50.000 Y34.000 Z0.200 E0.5120\n G1 F1200.0 X30.000 Y34.000 Z0.200 E1.4640\n G1 F1500.000 E-0.800\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y18.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y20.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y22.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y24.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y18.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X40.000 Y54.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P16000\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P1\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S1 P1\n G0 Y37.50\n M400 P200\n M971 S5 P2\n M960 S0 P0\n M960 S2 P1\n G0 Y54.50\n M400 P500\n M971 S5 P4\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y22.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y16.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y16.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", "upward_compatible_machine":[ "Bambu Lab P1P 0.8 nozzle", "Bambu Lab X1 0.8 nozzle" From 18fcbc8857d7c9cf54e7cbc043453262b29cf61e Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 26 Apr 2023 10:07:26 +0800 Subject: [PATCH 07/62] NEW:add color picker control to material settings Change-Id: I69dc51b64edb0a44331cd93d7fc157b4b0284fdc --- src/slic3r/GUI/AMSMaterialsSetting.cpp | 69 +++++++++++++++++++++----- src/slic3r/GUI/AMSMaterialsSetting.hpp | 3 ++ 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 820cac35d8..865a432be0 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -669,17 +669,6 @@ void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event) m_color_picker_popup.set_ams_colours(ams_colors); m_color_picker_popup.set_def_colour(m_clr_picker->m_colour); m_color_picker_popup.Popup(); - - /*auto clr_dialog = new wxColourDialog(this, m_clrData); - if (clr_dialog->ShowModal() == wxID_OK) { - m_clrData = &(clr_dialog->GetColourData()); - m_clr_picker->SetBackgroundColor(wxColour( - m_clrData->GetColour().Red(), - m_clrData->GetColour().Green(), - m_clrData->GetColour().Blue(), - 254 - )); - }*/ } bool AMSMaterialsSetting::is_virtual_tray() @@ -1114,7 +1103,7 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent) } wxBoxSizer* m_sizer_other = new wxBoxSizer(wxHORIZONTAL); - auto m_title_other = new wxStaticText(m_def_color_box, wxID_ANY, _L("Other color"), wxDefaultPosition, wxDefaultSize, 0); + auto m_title_other = new wxStaticText(m_def_color_box, wxID_ANY, _L("Other Color"), wxDefaultPosition, wxDefaultSize, 0); m_title_other->SetFont(::Label::Body_14); m_title_other->SetBackgroundColour(wxColour(238, 238, 238)); m_sizer_other->Add(m_title_other, 0, wxALL, 5); @@ -1124,11 +1113,43 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent) other_line->SetBackgroundColour(wxColour(0xCECECE)); m_sizer_other->Add(other_line, 1, wxALIGN_CENTER, 0); + //custom color + wxBoxSizer* m_sizer_custom = new wxBoxSizer(wxHORIZONTAL); + auto m_title_custom = new wxStaticText(m_def_color_box, wxID_ANY, _L("Custom Color"), wxDefaultPosition, wxDefaultSize, 0); + m_title_custom->SetFont(::Label::Body_14); + m_title_custom->SetBackgroundColour(wxColour(238, 238, 238)); + auto custom_line = new wxPanel(m_def_color_box, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); + custom_line->SetBackgroundColour(wxColour(0xCECECE)); + custom_line->SetMinSize(wxSize(-1, 1)); + custom_line->SetMaxSize(wxSize(-1, 1)); + m_sizer_custom->Add(m_title_custom, 0, wxALL, 5); + m_sizer_custom->Add(custom_line, 1, wxALIGN_CENTER, 0); + + m_custom_cp = new StaticBox(m_def_color_box); + m_custom_cp->SetSize(FromDIP(60), FromDIP(25)); + m_custom_cp->SetMinSize(wxSize(FromDIP(60), FromDIP(25))); + m_custom_cp->SetMaxSize(wxSize(FromDIP(60), FromDIP(25))); + m_custom_cp->SetBorderColor(StateColor(std::pair(wxColour(238, 238, 238), StateColor::Normal))); + m_custom_cp->Bind(wxEVT_LEFT_DOWN, &ColorPickerPopup::on_custom_clr_picker, this); + m_custom_cp->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { + SetCursor(wxCURSOR_HAND); + }); + m_custom_cp->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { + SetCursor(wxCURSOR_ARROW); + }); + + m_clrData = new wxColourData(); + m_clrData->SetChooseFull(true); + m_clrData->SetChooseAlpha(false); + + m_sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); m_sizer_box->Add(m_sizer_ams, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); m_sizer_box->Add(m_ams_fg_sizer, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); m_sizer_box->Add(m_sizer_other, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); m_sizer_box->Add(fg_sizer, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); + m_sizer_box->Add(m_sizer_custom, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(10)); + m_sizer_box->Add(m_custom_cp, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(16)); m_sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); @@ -1145,6 +1166,28 @@ ColorPickerPopup::ColorPickerPopup(wxWindow* parent) wxGetApp().UpdateDarkUIWin(this); } +void ColorPickerPopup::on_custom_clr_picker(wxMouseEvent& event) +{ + auto clr_dialog = new wxColourDialog(nullptr, m_clrData); + wxColour picker_color; + + if (clr_dialog->ShowModal() == wxID_OK) { + m_clrData = &(clr_dialog->GetColourData()); + + picker_color = wxColour( + m_clrData->GetColour().Red(), + m_clrData->GetColour().Green(), + m_clrData->GetColour().Blue(), + 254 + ); + m_custom_cp->SetBackgroundColor(picker_color); + set_def_colour(picker_color); + wxCommandEvent evt(EVT_SELECTED_COLOR); + unsigned long g_col = ((picker_color.Red() & 0xff) << 16) + ((picker_color.Green() & 0xff) << 8) + (picker_color.Blue() & 0xff); + evt.SetInt(g_col); + wxPostEvent(GetParent(), evt); + } +} void ColorPickerPopup::set_ams_colours(std::vector ams) { @@ -1202,6 +1245,8 @@ void ColorPickerPopup::set_def_colour(wxColour col) } } + m_custom_cp->SetBackgroundColor(m_def_col); + Dismiss(); } diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 6c0b38e408..60d7e17c0c 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -54,6 +54,8 @@ public: class ColorPickerPopup : public PopupWindow { public: + StaticBox* m_custom_cp; + wxColourData* m_clrData; StaticBox* m_def_color_box; wxFlexGridSizer* m_ams_fg_sizer; wxColour m_def_col; @@ -65,6 +67,7 @@ public: public: ColorPickerPopup(wxWindow* parent); ~ColorPickerPopup() {}; + void on_custom_clr_picker(wxMouseEvent& event); void set_ams_colours(std::vector ams); void set_def_colour(wxColour col); void paintEvent(wxPaintEvent& evt); From 1f42a95ee4d1a02ad951031cf22486804d0f2c80 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Wed, 26 Apr 2023 15:59:42 +0800 Subject: [PATCH 08/62] ENH: update version to 01.06.02.01 Change-Id: I97fbdfb2f58638fd819fc4cec41333ee695547f8 --- src/slic3r/Utils/bambu_networking.hpp | 2 +- version.inc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index 8e46f88c72..a0dea1cfe1 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -41,7 +41,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.06.00.01" +#define BAMBU_NETWORK_AGENT_VERSION "01.06.02.01" //iot preset type strings diff --git a/version.inc b/version.inc index 219cd935f2..d42f10153d 100644 --- a/version.inc +++ b/version.inc @@ -10,4 +10,4 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SLIC3R_VERSION "01.06.00.66") +set(SLIC3R_VERSION "01.06.02.01") From 48bdf6dbc7f0ccaaa2701568ae8301b266c4b5a0 Mon Sep 17 00:00:00 2001 From: gerrit Date: Wed, 26 Apr 2023 16:09:17 +0800 Subject: [PATCH 09/62] ci: update network module based on commit 2f3f938 Change-Id: I56ea8cf7a512e77d2c7e617fdff381d705399b5c --- src/slic3r/Utils/bambu_networking.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index a0dea1cfe1..50f29aec3d 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -43,7 +43,6 @@ namespace BBL { #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" #define BAMBU_NETWORK_AGENT_VERSION "01.06.02.01" - //iot preset type strings #define IOT_PRINTER_TYPE_STRING "printer" #define IOT_FILAMENT_STRING "filament" From afe0ed6f41ef5f691e9bf3354a471520af248641 Mon Sep 17 00:00:00 2001 From: gerrit Date: Wed, 26 Apr 2023 16:11:33 +0800 Subject: [PATCH 10/62] ci: update build version to 01.06.02.02 Change-Id: Id18fc70803c7a5c96749a6b004a3dec1480f3a77 --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index d42f10153d..a969484fa2 100644 --- a/version.inc +++ b/version.inc @@ -10,4 +10,4 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SLIC3R_VERSION "01.06.02.01") +set(SLIC3R_VERSION "01.06.02.02") From 8b08d2be9f0617e77fb141b0bfd903db9cb3c97d Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Wed, 19 Apr 2023 17:16:08 +0800 Subject: [PATCH 11/62] FIX:add layer range, the extruder should inherit from object config Change-Id: I11615ebe40393cf1a1fe5caad7490dc6083ec2e7 (cherry picked from commit 864869b656fb4afbf68d47a191b6a8105dd25933) --- src/slic3r/GUI/GUI_ObjectList.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index f2c236c3eb..1b676ab67f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2900,7 +2900,10 @@ DynamicPrintConfig ObjectList::get_default_layer_config(const int obj_idx) wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("layer_height"); config.set_key_value("layer_height",new ConfigOptionFloat(layer_height)); // BBS - config.set_key_value("extruder", new ConfigOptionInt(1)); + int extruder = object(obj_idx)->config.has("extruder") ? + object(obj_idx)->config.opt_int("extruder") : + wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_float("extruder"); + config.set_key_value("extruder", new ConfigOptionInt(extruder)); return config; } @@ -3314,7 +3317,7 @@ void ObjectList::part_selection_changed() Sidebar& panel = wxGetApp().sidebar(); panel.Freeze(); - wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event("", false); + //wxGetApp().plater()->canvas3D()->handle_sidebar_focus_event("", false); // BBS //wxGetApp().obj_manipul() ->UpdateAndShow(update_and_show_manipulations); wxGetApp().obj_settings()->UpdateAndShow(update_and_show_settings); From fe0415650049b0979eee2b9830377ab6781b0e69 Mon Sep 17 00:00:00 2001 From: gerrit Date: Wed, 26 Apr 2023 16:39:50 +0800 Subject: [PATCH 12/62] ci: update build version to 01.06.02.03 Change-Id: Ibbda1d0b2163fbcb318eb6554dbc766c561fddf9 --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index a969484fa2..260c8591de 100644 --- a/version.inc +++ b/version.inc @@ -10,4 +10,4 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SLIC3R_VERSION "01.06.02.02") +set(SLIC3R_VERSION "01.06.02.03") From 955d9bb84b287b023d4250f89f61af1e780d6ec8 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Wed, 26 Apr 2023 19:27:03 +0800 Subject: [PATCH 13/62] FIX: mac command key been translated and cannot work Change-Id: Ib8f83e7c0acee36ebf2f7365f544eeb804b4db8a --- src/slic3r/GUI/MainFrame.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 06a5f3f6e9..a36b56befb 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -158,6 +158,12 @@ static wxIcon main_frame_icon(GUI_App::EAppMode app_mode) wxDEFINE_EVENT(EVT_SYNC_CLOUD_PRESET, SimpleEvent); +#ifdef __APPLE__ +static const wxString ctrl = ("Ctrl+"); +#else +static const wxString ctrl = _L("Ctrl+"); +#endif + MainFrame::MainFrame() : DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_STYLE, "mainframe") , m_printhost_queue_dlg(new PrintHostQueueDialog(this)) @@ -1974,7 +1980,6 @@ static void add_common_publish_menu_items(wxMenu* publish_menu, MainFrame* mainF static void add_common_view_menu_items(wxMenu* view_menu, MainFrame* mainFrame, std::function can_change_view) { - const wxString ctrl = _L("Ctrl+"); // The camera control accelerators are captured by GLCanvas3D::on_char(). append_menu_item(view_menu, wxID_ANY, _L("Default View") + "\t" + ctrl + "0", _L("Default View"), [mainFrame](wxCommandEvent&) { mainFrame->select_view("plate"); @@ -2004,8 +2009,6 @@ void MainFrame::init_menubar_as_editor() wxMenuBar::SetAutoWindowMenu(false); m_menubar = new wxMenuBar(); #endif - - const wxString ctrl = _L("Ctrl+"); // File menu wxMenu* fileMenu = new wxMenu; From dbc797305c00d754d3b098b20263d614385a7506 Mon Sep 17 00:00:00 2001 From: gerrit Date: Thu, 27 Apr 2023 10:28:47 +0800 Subject: [PATCH 14/62] ci: update build version to 01.06.02.04 Change-Id: I7bfdc18da15ed4061458a0261b577abfb42abc1c --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 260c8591de..2ebe8e5839 100644 --- a/version.inc +++ b/version.inc @@ -10,4 +10,4 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SLIC3R_VERSION "01.06.02.03") +set(SLIC3R_VERSION "01.06.02.04") From b953fd0b4dc66328df84d295a011a19a72f0aa28 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Fri, 28 Apr 2023 14:55:24 +0800 Subject: [PATCH 15/62] ENH: switch back to ubuntu 20.04 for building linux This reverts commit 32f978c8932064395c0cfc3d8c22c2c9a263d4df. --- .github/workflows/build_ubuntu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_ubuntu.yml b/.github/workflows/build_ubuntu.yml index 88fbbca331..7e1adf506e 100644 --- a/.github/workflows/build_ubuntu.yml +++ b/.github/workflows/build_ubuntu.yml @@ -6,7 +6,7 @@ jobs: appimage-builder: name: Linux AppImage Build - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 From 9b7d72584cb5ae425c766946b775c47651815713 Mon Sep 17 00:00:00 2001 From: YGK3D <100242058+YGK3D@users.noreply.github.com> Date: Sat, 20 May 2023 23:41:57 -0400 Subject: [PATCH 16/62] Update RRF start script for Vivedino Troodon 2.0 (#1104) * Added profiles for Vivedino Troodon 2.0 * Added printer images for Vivedino Troodon 2.0 * Delete Troodon 2.0 - Klipper_cover.png * Delete Troodon 2.0 - RRF_cover.png * Move printer images to vendor folder * Update RRF start script --- resources/profiles/Vivedino/machine/fdm_rrf_common.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Vivedino/machine/fdm_rrf_common.json b/resources/profiles/Vivedino/machine/fdm_rrf_common.json index 93965350b7..d73876ec01 100644 --- a/resources/profiles/Vivedino/machine/fdm_rrf_common.json +++ b/resources/profiles/Vivedino/machine/fdm_rrf_common.json @@ -131,7 +131,7 @@ "bed_exclude_area": [ "0x0" ], - "machine_start_gcode": "M104 S0\n M190 S0\n M98 P\"start_print.g\" A[first_layer_bed_temperature] B\"[filament_type]\" C[first_layer_temperature] D[nozzle_diameter] ", + "machine_start_gcode": "M104 S0\nM190 S0\nM98 P\"start_print.g\" A[first_layer_bed_temperature] B\"[filament_type]\" C[first_layer_temperature] D[nozzle_diameter] E{first_layer_print_min[0]} F{first_layer_print_max[0]} H{first_layer_print_min[1]} J{first_layer_print_max[1]}", "machine_end_gcode": "M0", "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", From fe6ce5e28a4755c7d0aff53adde997400db07399 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 22 May 2023 20:35:20 +0800 Subject: [PATCH 17/62] Improve bridge_density #1043 --- src/libslic3r/Fill/Fill.cpp | 7 ++++++- src/libslic3r/Layer.hpp | 2 +- src/libslic3r/LayerRegion.cpp | 6 ++---- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 5b0bb503cc..0127b191c8 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -185,7 +185,7 @@ std::vector group_fills(const Layer &layer) params.bridge = is_bridge || Fill::use_bridge_flow(params.pattern); params.flow = params.bridge ? //BBS: always enable thick bridge for internal bridge - layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges, surface.is_external() ? region_config.bridge_density.get_abs_value(1.0) : 1.0f) : + layerm.bridging_flow(extrusion_role, (surface.is_bridge() && !surface.is_external()) || object_config.thick_bridges) : layerm.flow(extrusion_role, (surface.thickness == -1) ? layer.height : surface.thickness); // Calculate flow spacing for infill pattern generation. @@ -494,6 +494,11 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. f->spacing = surface_fill.params.spacing; surface_fill.surface.expolygon = std::move(expoly); + + if(surface_fill.params.bridge && surface_fill.surface.is_external() && surface_fill.params.density > 0.99){ + params.density = layerm->region().config().bridge_density.get_abs_value(1.0); + params.dont_adjust = true; + } // BBS: make fill f->fill_surface_extrusion(&surface_fill.surface, params, diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 331129ba45..47b0b78177 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -72,7 +72,7 @@ public: Flow flow(FlowRole role) const; Flow flow(FlowRole role, double layer_height) const; - Flow bridging_flow(FlowRole role, bool thick_bridge = false , float bridge_density = 1.0f) const; + Flow bridging_flow(FlowRole role, bool thick_bridge = false) const; void slices_to_fill_surfaces_clipped(); void prepare_fill_surfaces(); diff --git a/src/libslic3r/LayerRegion.cpp b/src/libslic3r/LayerRegion.cpp index 06b632eaa2..61eef17801 100644 --- a/src/libslic3r/LayerRegion.cpp +++ b/src/libslic3r/LayerRegion.cpp @@ -26,7 +26,7 @@ Flow LayerRegion::flow(FlowRole role, double layer_height) const return m_region->flow(*m_layer->object(), role, layer_height, m_layer->id() == 0); } -Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge, float bridge_density) const +Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge) const { const PrintRegion ®ion = this->region(); const PrintRegionConfig ®ion_config = region.config(); @@ -43,8 +43,6 @@ Flow LayerRegion::bridging_flow(FlowRole role, bool thick_bridge, float bridge_d // The same way as other slicers: Use normal extrusions. Apply bridge_flow while maintaining the original spacing. bridge_flow = this->flow(role).with_flow_ratio(region_config.bridge_flow); } - bridge_density = boost::algorithm::clamp(bridge_density, 0.1f, 1.0f); - bridge_flow.set_spacing(bridge_flow.spacing() + bridge_flow.width() * ((1.0f / bridge_density) - 1.0f)); return bridge_flow; } @@ -245,7 +243,7 @@ void LayerRegion::process_external_surfaces(const Layer *lower_layer, const Poly // Grown by 3mm. //BBS: eliminate too narrow area to avoid generating bridge on top layer when wall loop is 1 //Polygons polys = offset(bridges[i].expolygon, bridge_margin, EXTERNAL_SURFACES_OFFSET_PARAMETERS); - Polygons polys = offset2({ bridges[i].expolygon }, -scale_(nozzle_diameter * 0.1), bridge_margin + scale_((1.0 / this->region().config().bridge_density.get_abs_value(1.0) - 1.0)*nozzle_diameter/2.0), EXTERNAL_SURFACES_OFFSET_PARAMETERS); + Polygons polys = offset2({ bridges[i].expolygon }, -scale_(nozzle_diameter * 0.1), bridge_margin, EXTERNAL_SURFACES_OFFSET_PARAMETERS); if (idx_island == -1) { BOOST_LOG_TRIVIAL(trace) << "Bridge did not fall into the source region!"; } else { From ab5e7f7de8e5b54707607c25d267a2dc4fb195c6 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 22 May 2023 21:14:11 +0800 Subject: [PATCH 18/62] tiny code clean up for `Improve bridge_density` commit --- src/libslic3r/Fill/Fill.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 0127b191c8..65e7d4b9d0 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -495,7 +495,7 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: f->spacing = surface_fill.params.spacing; surface_fill.surface.expolygon = std::move(expoly); - if(surface_fill.params.bridge && surface_fill.surface.is_external() && surface_fill.params.density > 0.99){ + if(surface_fill.params.bridge && surface_fill.surface.is_external() && surface_fill.params.density > 99.0){ params.density = layerm->region().config().bridge_density.get_abs_value(1.0); params.dont_adjust = true; } From 442c23232387c93aa015024e439bfcea41505e95 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 24 May 2023 00:27:29 +0800 Subject: [PATCH 19/62] Skip checking Repetier server name #1116 --- src/slic3r/Utils/Repetier.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/Utils/Repetier.cpp b/src/slic3r/Utils/Repetier.cpp index 0569d97fae..63f4384289 100644 --- a/src/slic3r/Utils/Repetier.cpp +++ b/src/slic3r/Utils/Repetier.cpp @@ -156,7 +156,7 @@ bool Repetier::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Error bool Repetier::validate_version_text(const boost::optional &version_text) const { - return version_text ? boost::starts_with(*version_text, "Repetier") : true; + return version_text ? (!version_text->empty()) : true; } void Repetier::set_auth(Http &http) const From 2f34ddb5247b49d387090d45524656d94f599b95 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 26 May 2023 23:43:34 +0800 Subject: [PATCH 20/62] Fixed an issue that project file(.3mf) can't be loaded if plate name contains illegal characters like `&` #1141 --- src/libslic3r/Format/bbs_3mf.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index c2a826100a..ab13652188 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -6810,7 +6810,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) stream << " <" << PLATE_TAG << ">\n"; //plate index stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATERID_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->plate_index + 1 << "\"/>\n"; - stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATER_NAME_ATTR << "\" " << VALUE_ATTR << "=\"" << plate_data->plate_name << "\"/>\n"; + stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << PLATER_NAME_ATTR << "\" " << VALUE_ATTR << "=\"" << xml_escape(plate_data->plate_name) << "\"/>\n"; stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << LOCK_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->locked<< "\"/>\n"; ConfigOption* bed_type_opt = plate_data->config.option("curr_bed_type"); t_config_enum_names bed_type_names = ConfigOptionEnum::get_enum_names(); From cf4df922bfc8c24971fad23a174b24d456d4277c Mon Sep 17 00:00:00 2001 From: fr3ak2402 <96239814+fr3ak2402@users.noreply.github.com> Date: Sat, 27 May 2023 03:07:29 +0200 Subject: [PATCH 21/62] fix BIQU Profiles (#1147) --- resources/profiles/BIQU.json | 62 ++++++------- resources/profiles/BIQU/BIQU B1_cover.png | Bin 23623 -> 0 bytes resources/profiles/BIQU/BIQU BX_cover.png | Bin 27841 -> 0 bytes .../profiles/BIQU/BIQU Hurakan_cover.png | Bin 24999 -> 0 bytes .../BIQU/filament/BIQU Generic ABS.json | 6 +- .../BIQU/filament/BIQU Generic ASA.json | 6 +- .../BIQU/filament/BIQU Generic PA-CF.json | 6 +- .../BIQU/filament/BIQU Generic PA.json | 6 +- .../BIQU/filament/BIQU Generic PC.json | 6 +- .../BIQU/filament/BIQU Generic PETG-CF.json | 6 +- .../BIQU/filament/BIQU Generic PETG.json | 6 +- .../BIQU/filament/BIQU Generic PLA Silk.json | 7 +- .../BIQU/filament/BIQU Generic PLA-CF.json | 6 +- .../BIQU/filament/BIQU Generic PLA.json | 6 +- .../BIQU/filament/BIQU Generic PVA.json | 6 +- .../BIQU/filament/BIQU Generic TPU.json | 6 +- .../BIQU/machine/BIQU B1 (0.4 nozzle).json | 86 ++++++++++++++++++ .../BIQU/machine/BIQU B1 0.4 nozzle.json | 86 ------------------ resources/profiles/BIQU/machine/BIQU B1.json | 8 +- .../BIQU/machine/BIQU BX (0.4 nozzle).json | 86 ++++++++++++++++++ .../BIQU/machine/BIQU BX 0.4 nozzle.json | 86 ------------------ resources/profiles/BIQU/machine/BIQU BX.json | 8 +- ...le.json => BIQU Hurakan (0.4 nozzle).json} | 3 +- .../profiles/BIQU/machine/BIQU Hurakan.json | 8 +- .../BIQU/machine/fdm_biqu_common.json | 3 +- .../BIQU/machine/fdm_machine_common.json | 1 - ...=> 0.12mm Fine @BIQU B1 (0.4 nozzle).json} | 4 +- ...=> 0.12mm Fine @BIQU BX (0.4 nozzle).json} | 4 +- ...12mm Fine @BIQU Hurakan (0.4 nozzle).json} | 4 +- ...0.15mm Optimal @BIQU B1 (0.4 nozzle).json} | 4 +- ...0.15mm Optimal @BIQU BX (0.4 nozzle).json} | 4 +- ...m Optimal @BIQU Hurakan (0.4 nozzle).json} | 6 +- ....20mm Standard @BIQU B1 (0.4 nozzle).json} | 4 +- ....20mm Standard @BIQU BX (0.4 nozzle).json} | 4 +- ... Standard @BIQU Hurakan (0.4 nozzle).json} | 4 +- ...> 0.24mm Draft @BIQU B1 (0.4 nozzle).json} | 4 +- ...> 0.24mm Draft @BIQU BX (0.4 nozzle).json} | 4 +- ...4mm Draft @BIQU Hurakan (0.4 nozzle).json} | 4 +- .../BIQU/process/fdm_process_biqu_common.json | 7 +- .../process/fdm_process_hurakan_common.json | 7 +- 40 files changed, 282 insertions(+), 292 deletions(-) delete mode 100644 resources/profiles/BIQU/BIQU B1_cover.png delete mode 100644 resources/profiles/BIQU/BIQU BX_cover.png delete mode 100644 resources/profiles/BIQU/BIQU Hurakan_cover.png create mode 100644 resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json delete mode 100644 resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json create mode 100644 resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json delete mode 100644 resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json rename resources/profiles/BIQU/machine/{BIQU Hurakan 0.4 nozzle.json => BIQU Hurakan (0.4 nozzle).json} (95%) rename resources/profiles/BIQU/process/{0.12mm Fine @BIQU B1.json => 0.12mm Fine @BIQU B1 (0.4 nozzle).json} (78%) rename resources/profiles/BIQU/process/{0.12mm Fine @BIQU BX.json => 0.12mm Fine @BIQU BX (0.4 nozzle).json} (78%) rename resources/profiles/BIQU/process/{0.12mm Fine @BIQU Hurakan.json => 0.12mm Fine @BIQU Hurakan (0.4 nozzle).json} (75%) rename resources/profiles/BIQU/process/{0.15mm Optimal @BIQU BX.json => 0.15mm Optimal @BIQU B1 (0.4 nozzle).json} (77%) rename resources/profiles/BIQU/process/{0.15mm Optimal @BIQU B1.json => 0.15mm Optimal @BIQU BX (0.4 nozzle).json} (77%) rename resources/profiles/BIQU/process/{0.15mm Optimal @BIQU Hurakan.json => 0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json} (73%) rename resources/profiles/BIQU/process/{0.20mm Standard @BIQU B1.json => 0.20mm Standard @BIQU B1 (0.4 nozzle).json} (77%) rename resources/profiles/BIQU/process/{0.20mm Standard @BIQU BX.json => 0.20mm Standard @BIQU BX (0.4 nozzle).json} (77%) rename resources/profiles/BIQU/process/{0.20mm Standard @BIQU Hurakan.json => 0.20mm Standard @BIQU Hurakan (0.4 nozzle).json} (75%) rename resources/profiles/BIQU/process/{0.24mm Draft @BIQU BX.json => 0.24mm Draft @BIQU B1 (0.4 nozzle).json} (80%) rename resources/profiles/BIQU/process/{0.24mm Draft @BIQU B1.json => 0.24mm Draft @BIQU BX (0.4 nozzle).json} (80%) rename resources/profiles/BIQU/process/{0.24mm Draft @BIQU Hurakan.json => 0.24mm Draft @BIQU Hurakan (0.4 nozzle).json} (78%) diff --git a/resources/profiles/BIQU.json b/resources/profiles/BIQU.json index 2ea29332d4..864a31c2a4 100644 --- a/resources/profiles/BIQU.json +++ b/resources/profiles/BIQU.json @@ -1,6 +1,6 @@ { "name": "BIQU", - "version": "01.00.01.00", + "version": "01.01.00.00", "force_update": "0", "description": "BIQU configurations", "machine_model_list": [ @@ -31,52 +31,52 @@ "sub_path": "process/fdm_process_hurakan_common.json" }, { - "name": "0.12mm Fine @BX", - "sub_path": "process/0.12mm Fine @BIQU BX.json" + "name": "0.12mm Fine @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.12mm Fine @BIQU BX (0.4 nozzle).json" }, { - "name": "0.15mm Optimal @BX", - "sub_path": "process/0.15mm Optimal @BIQU BX.json" + "name": "0.15mm Optimal @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.15mm Optimal @BIQU BX (0.4 nozzle).json" }, { - "name": "0.20mm Standard @BX", - "sub_path": "process/0.20mm Standard @BIQU BX.json" + "name": "0.20mm Standard @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @BIQU BX (0.4 nozzle).json" }, { - "name": "0.24mm Draft @BX", - "sub_path": "process/0.24mm Draft @BIQU BX.json" + "name": "0.24mm Draft @BIQU BX (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @BIQU BX (0.4 nozzle).json" }, { - "name": "0.12mm Fine @B1", - "sub_path": "process/0.12mm Fine @BIQU B1.json" + "name": "0.12mm Fine @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.12mm Fine @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.15mm Optimal @B1", - "sub_path": "process/0.15mm Optimal @BIQU B1.json" + "name": "0.15mm Optimal @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.20mm Standard @B1", - "sub_path": "process/0.20mm Standard @BIQU B1.json" + "name": "0.20mm Standard @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.24mm Draft @B1", - "sub_path": "process/0.24mm Draft @BIQU B1.json" + "name": "0.24mm Draft @BIQU B1 (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @BIQU B1 (0.4 nozzle).json" }, { - "name": "0.12mm Fine @Hurakan", - "sub_path": "process/0.12mm Fine @BIQU Hurakan.json" + "name": "0.12mm Fine @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json" }, { - "name": "0.15mm Optimal @Hurakan", - "sub_path": "process/0.15mm Optimal @BIQU Hurakan.json" + "name": "0.15mm Optimal @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json" }, { - "name": "0.20mm Standard @Hurakan", - "sub_path": "process/0.20mm Standard @BIQU Hurakan.json" + "name": "0.20mm Standard @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json" }, { - "name": "0.24mm Draft @Hurakan", - "sub_path": "process/0.24mm Draft @BIQU Hurakan.json" + "name": "0.24mm Draft @BIQU Hurakan (0.4 nozzle)", + "sub_path": "process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json" } ], "filament_list": [ @@ -179,16 +179,16 @@ "sub_path": "machine/fdm_klipper_common.json" }, { - "name": "BIQU BX 0.4 nozzle", - "sub_path": "machine/BIQU BX 0.4 nozzle.json" + "name": "BIQU BX (0.4 nozzle)", + "sub_path": "machine/BIQU BX (0.4 nozzle).json" }, { - "name": "BIQU B1 0.4 nozzle", - "sub_path": "machine/BIQU B1 0.4 nozzle.json" + "name": "BIQU B1 (0.4 nozzle)", + "sub_path": "machine/BIQU B1 (0.4 nozzle).json" }, { - "name": "BIQU Hurakan 0.4 nozzle", - "sub_path": "machine/BIQU Hurakan 0.4 nozzle.json" + "name": "BIQU Hurakan (0.4 nozzle)", + "sub_path": "machine/BIQU Hurakan (0.4 nozzle).json" } ] } diff --git a/resources/profiles/BIQU/BIQU B1_cover.png b/resources/profiles/BIQU/BIQU B1_cover.png deleted file mode 100644 index 5a896fe6d86b5bf0bcc027f3f8d0697f091fce5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23623 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®eF%fS7(HJa&Gj`Q{BkioESGUVp3c$xPxl74KH zu$(^vwyc4Yj5R;}3F)fhNihgZ!L7i&OOgIu53S#JCtnH`2tF!vXm@!IoC7BLJ6|4e zMxV~|zPS>E{!FV`3^0Pfx~J!=re@QfLj&o1tOYsql=K=phHj@OmC5i!PrQ&tdbO_y z#9dlBIH7B@t$ulRd{7bYH+aqE@G#q*+_`eWVGbI!;i1G}fO?zMGr81gzvKn-Kr6!% z@o+qu!@Wuk9t)3@I{`@C4W{}K#rkRPpkx3*Hk%3fcgQ|bEQtt!0P=r?T#@J zQB#z~ZvK8QOxjB)QLuIfSf}OH`%QlAI;wZ7+6+%fZ$2s$vNk4DRJKB^6;1V zr^?yU=G{yU3L!DeP#i-O2m6AUhem6uIS(jPHlLvckJgW>u`=qT*>t^Or>-1{SQnRJ#>1b{_{f{;-4 z4Y=B*U%*%!B>;;&BrKfDFsr$VX=pn*0MaxoJ^q7;R?UZ}R^_he0pbx4@DUKR^|P}f z*rt}03V!W=M~PI)FeAl6%zcbot2Bk*{R#ie$Xi~7O(yPuJ8RgkwBD=(DH8S~NJ&dR zCR6eNnb<{%3PsB*vbTROFPRJh?NyM3$OU3WSL5IQzQ!a zjqP_G26>FUy}c6`72v78$gr+RcZJy4Q=ud3B#8<4Zjlp7AdX-nBQc{WG6Tw!Nwt$D z<=tb<2sZKnX)XkikdW|Wsdnk3c%P#>z`rkPv!$+rK2GJc-e{b@^}X|De@hZlI8p5TNsBYmABHy zgJYcVzrHIH{HATVdCA;sXo3qmj?}-G@&Q6RtOQb`3806L z;Mg-KrU}_%xE4OV;&_fB6!C!OaF|@AtNmpIVMbKh^`%(|E`Zl^$|=do?|0|s=5(y= zMc>uJxO1N3)wOT3vCR&FeCfls8|*AA0KqfP54m&)>bq&t;%6oPFZNpc>fuLlz{%7$pLzAd zRyf^T6P<*&{0DGq_R^wHd^C+qmo=EtDm;(WfB3GU=+leeh>N>`4x~-5@p(Yj&Q1GUg$1D)+~+!dq7%*!V%>3j0QZ3z2`Pb! z$EVE%W7+M_{K=Ook7A7x)&OIafzmz-7NOM681|w|f5tXLhF(iVj*WjW^XjI{xkh=I z!&h12uz&2TEaqBvLOi6U$Jh_d5LXD5OK)KBbd`nR?>3w9-S z7B{<`m~`hae#$mi;(s!+4iE7ayohNu^6e}9P{0&ROgNPhR#G!pihY~O@7Xy^buTy5F*_swTYweVsO1s37cbH(MVLa!k_&t?M%|84!BP4%9*u1Lm-)yJ7> z_S*q|*o{UVWFt6S%Fxo#+xz#g?Fu+qM&>Oqs=+`)WY=gS)e`mJE!pz$ee^baX;3C< zUEQ|rB3L_{y48zLUZS$Ba*5%qrLUFup;T7rQtK1%*h=Nbi0_&$NZ-;V%D3!5f6ALp z6hi4gD4I`1>#$Ak|8nEw-bu<)Hg65M3A)>-r$T(IXQQ!Coiy?NGCSKA15lFWE1xH- z8@E+j_Ai4l9{B&4(XmXDevH7W-ZPX6#f9 z>2*(sCP}7VaqPFf{v?nvJpM=b?znm%ABbouxm9o>$kv$D7{oYn6Nu^b5{UZNYP&Au z-}r?>c-9acBpvGD!~T4%zzavjnDoa%TvYBzBJA=kGN5C$3{L(#jwxgK`GX`C8mfOC zJrX9KKMtM^@tBM%1U?WX6^KTWK~e!RNbQ6lBe)KElSQQfA4m*N%BA{^+sPX|PaxGO z6}C&n_5?{!ACyrukoqW<6t3#uvAuj%?p{JgVm|o>sXIO?rax+~>KUtm;%Uo+D$eV1 z47x$wxtfw6s(!Ur5_AO1Fd>z{#Hl#mz3YURMhvt}`#oWU7FKnYX-GT<#yLX_j6*J< z4w?onz{kXwlZ3>&=x9oWRmW-J@PtgnN$K+4s?=tKv*b}&>EX~9U2xNfOgx7yCrB5r zf*y9&TgA5@hHwxuXQXxrWfv#m7nJoZu(&ud+sL^?$GXW}$6{=SC;Ys(^LpE_SM^~- zr9yaP45{xdnw8=#d+bUK7+rfP`0HkHh78Kr0Oc$%%VePKVihY{Xq+K_cNH`;aEOPI zwtyP<%2x)*WKu|zjxT$HSL$s8D(sWCC_*`^NI;2c87E4=nj{vtRJgKXpzq@C@4WWt zZ*M#!k!!`k*1& zC;O=wD+_x^1fe7RccG!7$Si2Y@EIS|qJlX%OMEEya-9$muVE-=9cQiXXvUU^k>im9 zN7Uap!_+~jJx)_X?;LYq0cUp>RxTA^RuG3JM`R<6bK+CLc2QX1tMV%&2d_@0L2H^Y ziBNx#YDE%|T)8)yn4?8pt^fP2yK?p8$_2I>Yb)~5*sh?X%ZzP9SB1fkI; zY?dFPpuauN4x7T*%yn$S0r3nZqm}8mzY20jo+WoVpLkL#h@y0Xy4X~e2Rkn=H{?t% zFsg{3+>sv#(w_s=G;A9M(3+vBeQ0ax-cCz>XNIBQq;{eU0gr_ub$lAz1761$YKx7LYi(BD$N4sgt76Th%=z@8LvPjL=@J6LY_5d>}e~KLMJrWiJ#1) z_sqnhj-xU^j+5W9J?vZ57T4%skaD0fp?|)jlTB2y);w6*0W@#=eHCdTTGEDx2;$RD0g!zVNm!i#oOyuxy#M$VXA$9 z2|T^QlSQ8~Os`WM4iJm8)>1bZC3N0>pAA7pgj9Tn3E{Q1@tk;aWPFN-9ket_-}0Iz zeRE5tYOk>nCkO+kqCBr}4_rJ!I2VZH0n%RtF-{%UE+lFh7(jV&o#Y&mAdAr9&S=f@ zS=EY^_@iB^Cke{^f)GG+0_2n1De6sg68p_apYkh+<_S9w4mmk%j4WVLGI`GnN(fc4?b=p}Y zD~m3Ev_FuhyG#Pz6p9~o0jCaka?nPNaX^>p0dgjy7ad4+4is{suj4bk4D3Dd8AZ4g zE8sDpx1rsqh3xR`o8U1DqX`>!^Wk$~a-Z{o#F*U|f{4s+B@q;?-C-!==bk;c6;yG! z71m&rW9?vO2q%>Y)oT_gF+WEf%BU=qD}i%?`5&?!f2gM$h@Z; zoX^1-W5RUv%w^qw4f0qn{)5DtxA?>R=5#F7&#ZN4_=ua*+dZpn`fcu#BhY(xoBATC0y zMxD2rQKrSa%#Rh#a3eRbs%*j5=JwtQQZsOt*~@jdV6ZA*yAxAW&EmEuc*W9s;$puI zppatQl^+-6H8mQ<`(RT9M9S=047Tj8uj-|_93x|yLGwIT3#cHjsUL-=U%7K+=`#Zi zGvtaVM4~NY>3~BXd)VgXj z{Po(c9nL8yYLTLZHK3IS`cB>_S*{*5LzVsf8;~-rKsju=>T%h7gx*$+pI~dJd#jjt1uEjNrBl)6dW*~LYmkl)XlCGs z_RvB43FL4{FOa#KSiaXW0nZ7ct>leEb>$e>S0+LYCBmqTEEf3yuFNvSQTw|g9S9kq zI8C*HiTG8(wY~l8E6r@U2~$W+HhHL%bk#m04}x+&T*IbBqu7_`pwLB`H@taBlJT*o z?1H$V)IWBy{W@s)m;H5VT2w2ir9xi$gIETo0I5cu_8XxrWNwt25JM_JFHu~KQYb~T zp+I+z%t?%%L6=LSUD6mK%RG&4tISPa9W1u>#aZvv{^`>GX}9_Cy^82faqA*9kH?$6;9@Z zV?pIdgBJkT(57kGfzi)mqN!6#45Upnc+v6K9g<%#V*ITZY+e82w#Lu@MEDjQsmS!% z1_I7e%5P{OD^WxbuZ{LPx)D`>IEno>wW|sXJZkQYmXDW(bX40wU0kH&I@ZQ;00O|j z1EB|$R0#-8Sg{q=>`MY)(MeJx=4$qZ^Z?I8`2(jZpBsR_-jNAD%+{Ow{&9*FtJbQ^ zdd5Hjj#Y`nQnMaz^ej%HP_;xYHz|;Z765`)(L%5E&k#W!7p(?cGA%Dh-kQF{jbHru za@OV3B4@V?+O#$^I#C^x#8@=_+l6{mlrpG zEq)aXneSxC1bS`?wqV$;{G2Pi3_Jot5a9i=Vya-&rDO~aeD6YSEmxuAbZHbAQEz9B zSzr;BYC&4DuJAIDjD;Q9L&=Lbo9%?+<#K-ua1{8%cRP~HF~%#>t~Ij(Mnsgr8-Zw5 zZv22}!7LB|C*oN2qR?VBG@ZK8W>CkvZ51|piGDUS(G8NA;}wCA3zq?ht5qO`C{$&X zo(7%Z3F!Qu_BS(67_+fnzyetaDU;(OAx-Z)Hu@vxGvd09QcYf!;O) z&lp5k?7;@A%L-+nY3l;7;pOUyelZooKh^C0BpSJTNSgv5Hsu+giY_WLo2qg!7e@KL z?keblul-(1qX_0l45p5&#ymHBDdLBM_Z3Y8G!ZveMim^q<>8=o!Hn)h7^_#sS(LYN+am3+MIO#4 z@6$)U&8Ds%4q!(_c;UgO8JmCgV6&#K2JUj1PJmC z#kl9(hw%1dvb={Y#mQh(trKf%ByV=&Oj^uAHHK6KarbjwYFgldxzPCt5eV}K)wr-p zmE==|%7~*7{s1zujDU=WOuuab%q;O+jz!I)=uqH50d*@;Yj)Pxt?>zv zhDiB6-L0zJ-_Ew{J+1>P=4FMF$+{V5pVd*Wn%{R~EQ1+;`JRP24wi2w$mX*AKZIi- zt{`-CxF&WT+*$b5+E2pt%|Z={0g;j_6OOlnrF++B0zAxOIQ=Hc(*ztqd2=kn-Uvq( z?_hb+S0KgPL7=Z^nfp;K- zO0}+n%0oJQO}ud714dVS5iUTH%pm8dWX`pHxEsiU7=e#Ofd1zE;v!Fnt^2H%3KgGT z|6}P#T0AsBp`^wX9UcyERj2(dmpRe|NJJ%+KSJU}tp;@GIWwYf0H(!_J67y+JK^qUFey9(;U!fTxfF zCimFKFF_bf!W&;kFLqlH>}XKc@4o2z(PS3`7(Afgi{9Ji5@vEcb) zZX+>bc>0+DIia86^u~L;+1Nch(yAPJ*5#S_u;C*c)fsmK*d{=`ZJuD{2p_XfOVKBY z*TItags0=WBR>3`>3+VRFuy~bGZ^Ufi z*h^l*DO=i@BF)?le7n~lXve`_h=j0k6D|^!Rj?Hivqi$mUk_H}@4CI)ySsr~9>9a) zl0sR4aRX}j6B~|cUZQAj&+PA+vR0~bkrX?V=qbslPBrU2zKCy7-)HR7BFjD=cLY7_ z!ff~!UG=mVsYGG{QF@G1MiEIYKj}N3pO@?XTW9}IA7}m7m$m9@PES7uDvcmd3U?F!sbY*=F9n$aS^2%@a zVnQ>0BF_6l{@FdoM{gNCew>B+k8b*>sUrBz%aC=ZV@4doBa_fp|1SEa? z@f1VTa+(^Z@kosRK$>by#le9LAc?6Q+O@%_K2N?rY6@k8Kxo)6_X5;&OxC4;!7_3g z%b=a+pX9>qiv}NF`BaQ3!RItOtdw#C# z(3d)WNVSAt4$aL4qhn*qkMpk0G!vzVs{}QuN!ZoS&no{l#7K+{9LQ9`&p?Z#7qs8= zykpiYXFJUxJ1Rct9c?ky9~N}5B=0d9BsnGv@q-D%&aUAUYW7?kVI#pa>t&wCX9O64 z`@C0_>8I=MDf9k2S-+!6ci&SzwbOzohDyKW24*COeHOf%pUfn}B)Z+>3aS((i*$^n z4q0*eP-KQ_mHXH_xPaf`v2B?*!r~w280hyetCnQpOuyRi26AhIMd>8 zbsVJjzEi{%eg?oCtAEQ}a(~(SJm$!|#z(P6nK_8`$>S`ok`qFSQFPa?4v4jwE}~IQe>N zbJSE>3#QblG_)H}O`?1lA)EZp;!*P)WwFbhoJiN1!r@QJ_1@tsw)>b%o-+NZy+Koe z%(sMYhv#uW_x`3Z$@pNF?~qZCMUBpPoXlub_AZqXcZ=&>hr!OcGkUxT{a0TZH)pI8 zQ`c7o2nnzCOhNzRHOw<ARnUFEu(wQIhb5Z?u1J2fgeR{{)l1s zxUv3x|5yc$WJnB?83FBrQhSCJ&SKO!1a&*g|EK3T`eyVU>*S9aI-J(ok0q-W^4-N5 zy?nf$6=yQef*(QkLq-PFpt<3-KFL{AqQ_{VPkH-65vw8@pRUNyyR^%T2*A%mF4n~+ z^+V1ZI>~m;d*j7MBw^dZBlE23T8kI%+orZZq(ANL1+Pj^<$nEC*}kbe`Ouw_j7yKA z4k@^RE>Ka`3{QK5K(m_~okjD~WNER|X%tkgslv;Rpd2ZPd&u5>d)dip%w$^t;}F(u4WZKX)*AJcv6AT0P4<^3OjSEyN#Z zgq%tE<<+zmN|_-(LKZoBsOn3r&}52Qp||e7Sci5UEzd~1o0eZ03tbHWcd#tWl_`={ z#;{~oxG*<~`3DLWF7vU*>9Si(?G+Qw=E=gklsG3g%Ii*Swb%@Jl2^I)LyDo?wd_&= zn01Q}NlwIWDS4NXmTj@lyo`-@P=n6C94c58U-&B*@93#bZHedtlFGGFbGx>GyTYUC zFL!7Nw~?bGzvs>r5nJ}7erAFR*WAB8105!jH5HKUXaOB>A+gX}y-@(KyE~`)p2*j? zrsumk^1q@mZB8emm^(&K*kBH#dPtOmwM`t9|9h#FB!&$^V!wYuQAiJw zN4DE@8FdG@%u?Ll`*wDOFLjOCcfPg<8xsKWlMFf*1{LjQ+qB;)8FsZ)*YEuAY~~db z%yuI!JS1W5feqFrAZSk=6@v+)w&ic^r%0CCxF z3)|R-Tg~94`RMCoixO+_kr8p8v}C4Y`m>CV&93+Z%ue#d6s4$ggUnSjBE2HyNNP%f zaHQcifRav3G_ilG^V%B5=#Is0|E}zmZ{2{NjpD7o?OY0~DUxGwY5-^mZRo*{=6&UL z#(K=S^p?U#g0JF47#ZlG$imJ}mP>N&a5riBcgs8h7!@fatGfgS_k|VNz`M8{)%Tlb z=uGHAMPz0DU#aKXt{+vXO?4hAFxy@tD~VEk7}6ZxPvm8=4B6=Ix7*XGz`cme;*+g zBn>$$)1p*4`#czh3H)e-H&2>dZNhk*u^lxv+cIs{*Uqk%T^uD=(2rgV+0~8>cYnW| zL_Cm6-2C5YNY!D2i#z<5ERcnebo<>Y|# z54ujg8T4}u?H6Bb3sb#$w_o0{(Ue+|6sl72h4Gnrag_;$2UeZuDwLR9jUGZXjq@BF z87cbgSWs1^+myn?q&52avj}g*@kaoAgjn*X?>jerGpd-7j^VD@3?M^#Yx2yLq>)c~ zuSx?fy%|^_;g|GvHIMGTk>SkmKyUfefd}VXBV~`v@`00#2dVQ-=!{*o+8BIE7WeJF5j@W zZGKkn!WdaCXjkuqB>-qgYmY<2fG4z+N5(=_95w6j<>RfyCx!67Db|a&l;7v9JmklH ze8`HhzFSdMNCyHfoxp6v%t+e@_P65B6tm@f3^2P(l$lHKBgKM0cd9c<-&;xcv>fw3 z`>2B6wE`tYG&2}fbJXA-SOupK4G;fma2Tm~Zqfoa=2UgLLLzp8=%gXPy~gFo+HM~a z&pE$bT|}~>v1%x=bQu5$D(UkJ1?ovEW#w}5njpc7W2JPFS@_YaZ;A7OTw+tLdmhMZr`TKP>HDa4?e^wX~C@bg?(D+F5kb);D%Pmt0UvX&#K>4;D(gy2#X87|#F7p8rRPet*0)=4^+K!Km;G%b zU!ZKu_Wu6!nLo-uo9>gF^aC_q4G&?dec=u9zVbEMK|m9+@MrK{u#x}X&_F2+1j#I^ zyM9u-lhX@4#{ve@(lV}l+&7jWmBxICXTtJUO6ZiX{c%u4gu9_ey_wRV(j`P~G}!8@ zM(~k{J8bmu-e?=0wFq_1$;`<~nmI4BRGz7al4ic7>5N{MM9BpaJCt!PdXmoSby1+G zs@bx1tRJ7Czcok!Jl)Y8w)}>YJsEAMJg)g!5&^ebX?s#<=lu}M^r-yCpm01r@~pnS zJ@}I8_dE`qKb`Yt=|@&;U7eko%8$tJ{pJ@A)VS2zAc;ZbUL<5r$@aD z)!qC;qa<~0gV(yl1oWlT*wf$K8J_@A4;+ZqkzD-rw8{HeQ|ELuXZu?kb`Ac;2AW`e z-gn}N2B$(5R2T>%P{Ar9SaXJyR_Px!`pV$&1sqF*>#6*^ckeD%vmElWzQ6O` zPPg>5SOk9w;5~P4{)c$tG7J;+iC8Bs1ACE?)+2nZg1Ofy}s^LJmv%(fmUz66pe-Nk$d39;^+|Sa@(3i zbb4Ri4C}eA`})DB%&fc*(`%Y`)S5V{5W(;J(6NTG>7Wr>T(;zuQoa^LP0$k~|8!GU z5(2;eic%E1t$V7fuHM%IM3N-n4$F6NdM?b<@KvXsd=kQp2X2g)=ZDq4W)To15%TB} z45ZG{+dKwgf>@4pa(^+%gY>1n zQfeq-psUWHTw&_wYPa^{(-kK|CPX+-uZ$&lrQBkb$$e^#)&?Qix|? z%TWHs(rO4_iAf1nOi162b5X8iE&ml6D~QU3G;lsQNmFCRH}nK>DN40Z%(D2iFMGvV zN!bxR&?viaUrB|(P4p=ib4AIBg}vxg^Z4@v-6Z?K2PO93m%^K_mwrV?y5z2!__Dr#v<;ph!Jw+{WR@MA zr!f{U@a?P(RBkuEU<@TG-3V4_;NP1iZrYgGOVKLEp7;E%_0GpPSB*aEifg)l&r(iK z?kdRNbjs=uUqW$GGGTc2#G;xINXVbh`dwVl7{rAG_JtRCH|y?;#wN|}Dvn1!_lCh* zCB-5q&LnIC{=0f}I6u64^R%}0bQBF$HTej*gE7 ze#6bfnKJ!baH0trZejv~Fp7o29Zed1Anh%c;R}p;^Ie|{mDiqZ65Wb=;n0VT^0;B_ zT@+1TNoPVibtEh%6}cPh0YX0|jn=#hf@Q>(_JeacF(K0yMffB!AG9X{guVk#$Ypr7 zebnMRWZg@2viA8FY07boeO8n+G(KCJuK30q;^(i&ikv!?bUA(;J)2LJw>kl#2=GAF z)b$JR^LIB6-Yu>PxccIw-C#<_C;RbSX)lXt*2EdIDZaNZ2IkeLc7a8q45Srpc5w)Y;sCYE$y37#Ihpb5%39D zn@t*l)IICE`m4@@6sN!Wf;^L-vnsT2vA+1&BPvk*!U?27s?h2U!u~irV;Qus-1g~H z(Pp_A_8d@DBEmx1q4-fOcAjqo%}%bX#V*eDMZ8dC0(Y0sc&A)HnBu^c3AjZ}OiYv= z0gDGEjRHnf__)c10g2GrdniHZ*FiD7^Dvyt* zQ^55k+V}Dw*GW^cI+{m2JrovzMODM@D&=<_EygN5T#Oo!VAfvEDXZ4{;G?8#a^D0B zd{T7;9M_3O(%bG^#2ZV-fI6lc7$}p-EK7kT245sA+r9$}`}@`(0dJXa zhQ>aj=-BKjpA$(=AuD2ZVy)C2u*LTMDyps4;V$xlnxcj0^ zo&)S05iANyMyN9du$e`OR^*Nk>1Q|NWz3<0F>RCF)7;#(tt~>c{uBIW4NF(uEp-T? z=OLdn3Na=jVmn?T+l|k`E544%Flz{9%o#6eoN_q zyJyJjHo01@wI1l`7_&Wl`sVOw&78Q9UYMJ;mseH-!RQzCLcq?%)Df;mR-{n^Vo$;xdd(sbsRrC zpZxgwM;MIkWEe;H&eqMRIw@w$%fiL zCfkdmL^Wy~=K%V>y**)Zrj|+z%J~NaZ3h0#Z_VA14Rmf)45d!zPtQ&cLN0)RpKG%2 z=^?w2eQm9z)?tMCj;yRJqa>E~4A>%VW#)oMetA>Nr{_Z|<7^QoLsHwEuW*Q03M!hA zJIM823Vliz+2%5vfnCcn|6iJAKguZGwCIzF7$DgdFQ{$|AHBRMLxCh>OOsF=qo+4g zm7P}yI>Z+}g{j;3dF|7*fRVAXhh$+%5vN*~h_d;Ioo(~h2b!$s#@WTo8h!H&Xt30K zuwf%;Bu|zAZ2L?vMy}ufmZI=yLDIRylx!zK^PMzZ0*Z)AUyByj2n}RPBzDSA%2~fo zgb^1V{^Kq03(r!;F)zn9>fd6+_^^W%b)s_8uRpIijyF;?kJ<}NaK~tsM}Q*MX=CVW zNuK?~k;e^RL(T`mMvn@Rs+fCL|DB?CdmU;isF#Ov0@CzjtAO>Axv?_+8liNp7NB*` zfaL>KU?zAA{*2LYfu*EZY`I=~fP&Cl&zfO0Cgamkb zHM%@{^l0eczaT|;-J}Q3NGV2d_%E-$HsPsC8t`GryNC;{h8sDCm$T@J?NFulDhqKX zHdMm8OknoRuB!11DQ;0VH+Osfe9O1QJ%T-G*E}=@x$R64q<6=I8Ul*u zul@Zocf`f*@}<3bWkf_$KuBD)8ITwAO==ZZy$Rr8OP&?i>P;VVHfo&bb>2JpMkNs* zIdeb3NMp7*Stl14*z1pM>BOl%^>vSRx3#OR|MPVu*{8v-=K4~HLKJQXnbYju(sTYpQ zc1y`OQ0MQeDe)DABu&@aD8ssXcXk8zPcJpOU9baUGFm_N z8=Y;b>r9DOZmx8QEmZNJ91s+1o)l_D)vE-g`SqR)y@%A$yZ!6@|!A_6Q+PHre}s z`F!vD{@(Zh{{McDzelQbuJ^pI*L*&o*DLKODntZy1P};>NKI7{2L5fh{>8fm{+1fN zB?y7sybsqi@-ouYkg#@j=C!hMeP+w+=j;Z?ArMI!KQ}9DM_VuEXSVim7b({5)=pMt zxQ!I6p@=5GrkjH8bGT}NhpleF6FutyM{98#RvBpmNk0j20cTq;D`r1uCl^l%KPlFK zt}6llfBiKdEAu~xcsWY38fj`XE4X^tGK=tv@ba@t6EI79*w{(H6qWzuWbjFf^|_aq zn*<-9udgq!uMn@RhdrNwxVShUzaXEWAP+c#$J5`%%gT?(#q-|vCH{2{MO#m654f8b z+|`Bo`kGeHT)n-dSXse1^M5{>v)g}N+{N=h-X6>YpP!W*p8zjE-+w>Y?YXO$tLJmq z|HCQ&HT=I$wDp7k`yKwrZLUZD*Wq4pyZ^)C*CYSya4^@Jn*aB=aCZJ5FXHK?x2K-Jn=K#A*3;G7!`fEK$JWK`-am5z?k1t&VQb}Os|bFjSOxh7g?RWy zcm(+M1RhBU3rYx!KI9kV=l`#RHC=7scK-jL2a8JZi-ChB{`=9uJZ!AItp5KT|6da> zaeef^9txP||MiLfeU5^wldA`KIPeZa|2*u!htw1lv^`wy;7(vnS5sS0i5aHNEG#6z zBgg~Z>=Cn~f*Lc2wh-q(r(G|hgf`sI*2zc_?riJg3CvB3RY2@tGw|KM$e{ z{0!VpR76Bb796`M47yJJ;a=m0u-q$v-?*a#lEcoxM z8U1@qiuI8opTNI|jQ`irwHGl<{$pDbs&G#)R}cSxzWSGI>Ds#g>(jqJI>G<(DQ4z> zEK9=5`uhG-tZp8zHs02@HvilQT<%|^p00LYzE&Q#a`wQeq*&$b?BL)@{h76|-HTa} zS&)~XSNMOP;``hdT<-t1u>Z|^`2OS3_^#djKc7vK?|(hL>(`#0fh&Zh$+s*15JEUo%uMG^QV(Hg!`c*B5*BISY8Nw_c#caBRo17rg9-7g z*X$3b^|o~D9phhr+RNzB;1L$w}5GY;2#0?|%_;?1YC!d?UqEV`lM$mHMNW(ud|cW!AQmbd|!`inutFj{LWD z^^bB;n5^~*GG-?x9tmX*c6jx%yreumJM)H?K6iEXH8n9QfFk8-tob!{w>ASO^%+S2bn5=} zoe%bYXi#zdVM&bX&(_wQBtQSo2hxHZ(&1wGG?{!fZFhG!eFXD+u>|WsC|*34NFE-Z zOuL~RbM&%DwvgR7zs368i;bPRj#TqcSm8OJ|E#ZDcWl!uC@7qM{1|rdcYtpKpXGRE zFw?QgY3lFWgoK282S-QKf#tdqxQPX{)DvCF5hrLx=>U1gg0m>bu0#2$u7XtdmFHa# z^z9T|sfnLI&ttnuWX@{`cw4{C&K$K0{R%w8KD7Vrt^p43*w!7|1J54h=Jx$(le1}6 zeZA0QVPP9@Z|^ZLU*G1>?pfaE%~MUAX41K?<>loR_SxPBNyTvS`6C_{1euZ!J05lq z%~I96=<|#eMg|5%)jA5}FOpHr62tnL^%g`?=Q9T~x&Uv=iOPzGPKS~f(zdd)QZ+q2 z?ZKNG={ytYo9BatixWUnV8mSqMLr`WA+nF)|K8+0V=yu{rk^x~*<4sy=()VSH0X7w zTM`p3^u3LlyL**%V*5Ff*kgJDVfny1Ibk~!FQ6igEp&WtC^`68KIhcetV zfg>glP8aiqRbvE^OdeO;p~3E12+#2KK;J<7H#GP9*bA&`CfE+~-J^YMeN*l`LzLC( z3u+4v$&3Awzvp{Hp+g@(eq8k5TbXV1SnhvTYosWe`GOStg*?`c8#n%JuRoBZ$ty3v z-C{<(?2-Nlm7qW(mE6$KP$TZS@&{FA8W|aR@IpSnxVgExSewHJ7Z=wQ*r7efL%h<6 zyNN=6Et0v9HtH=8RqR3Xu*v*U`u2$^UeP*AZ$$XGgQSN>48yNUA&+O2^5XI`L|8;5 z--x@QxcF8MCOnK8PX&iRhLykP7mC-x!9kmwO2^WYq}Tna@p$xjyfuf_xHscT&|R?n z9Pgm-OH1V_mA-p3vQkAW5%$nTFo)S1b5IgIfBrmd9TmMqldfTRvhb2A zIrHXUiYWewIF5hMbU~F)2@gt)2n&H1g7qyymxrf1wtdAD_B?8hY|=GWMmb`NMMOj{ zN^FhGi;^W+K4US1*Ah?AHRUwS=;ruFL_{=ZBbZ*XB<3wgDhz|hKdYU@`Ws~T&nsv*3tfqL;*4?soI%1WdHf9h|IJwQeEX`M`ns?c)EY%4y8d8z-QQAa%Wm$RcL`5hWk(+Uw3;KgGSsk&>)Ku0%#AFFWBa z5>7)y6GqDV!|Y?9%{nT9pD-Uj9sTsnz23kM+-`n;V8#rd-vs__Z>y-Q-yW|rk1Z}{ z7fXmlp(OOU?f|2Xr+?ISbfNftN$eI24&sgC2&(G#K;5r1X*`xU9-keldhgMV9bNqP zoM}pW$(FG6+voryo)CF@8lb3ybN!tL9v0;5Hi8sKE(~1rLsh0E142W>9QSD=z89rZ z`n!jQmribOZYcp;P<-6mmO`z~Qk%2*}gM~|#8P7i=Btxr_rT62?) z?w@cE$dlsq*$BS+uJR*#s!X^PCF70eC$!37Ulfa~T4zSc;<4}yB+8NEp~ZPp2ZU1x zK7kkeq<6%O2rGtvy|@#r^x2(oL|AH|PC{dZTdS{V%SwYQoE@P$w8t&70FN(&(=CcU znTsvJgY_#?=s?Mo@5z@n&>|^;MVJuF3QoldKp+^&lN^4+PvTlQcOjBP3cql{)c1n8 z#4jw21LgdCB1!ysgP+^7g8>*SUIZjgKpU#kF06Tj1!v01z`&546Y(aaSjnB?CFGgB z>PK-Bh+;8324sPmriTej$=>E9_$*|YpZ0Mluzp!6EtHeQq~30@HS8^}ocW_L8}BzT z_M;Lw9k>rPtNO*{X)~~j?*>#?0Kp1uk7ES#*uN_7A%hzy+=|`R*j9qDpP*! z!?ZXxJ9OboWhKnw7Wj?B4r>p>6lFmqv+&!!>E-3smykeA7L^ZS7RT(4Xvr|Tqc8IF zS&s4|iT{dY-WJ0nJnw2lAHwrpDs2+~>4S7g(W>()l4g zIAB+g#iD3aKlNRBkQ^z@huGm6AP`KCvo|()nql{TJ;3Yg;)tmkK2rSn1u3m}_1fK$ zm8gKpvHs6Ax4q1_LuY2@sGj^9-4f7{04wtuPLxTd0eSVS6lsd@F_v>HOtFvF`s;R< zr#AFvnCiqqv;fuf3@X8%AZTd`JcB|>=lP5eX_VCq0fU9C+w##fGc%@%FatYu)~a9+ z_K5I3PUL_%2~oEjt@YY5N9JIR20H~!)Pe`v+Sv(H;UFYrc&P}H2Ft+n_YS&m%^gy>J(ns_ij(1a z*Bw0o9pD6D7cFM!5n&!MAV{d- zhE@{IjORoq3b4~y1IMv49!I#}L(5#9FRqs4&M`$T1es4z#8>1YjGbl2(w_Keh=w29 zqq9zy^7Hezu~nVEH`vQ-Ca$AEh`Je;L!l+Pi#>m2K2T?)sj2CdVfR`5H7C+tpZVU1 zur<1+#`$rb^W!Gx$D)J^FzB)(!D5agL$C7mp&>~dxy7C5I-lNgu`joC0iUWWFHbVG z3_j>D$qk`PvAw?n(j^F`3D&>?yZNp7bQIeyRe4;w9{cKoC}GihUgUc#)*Z zPV?N@G|O01xw3ff1Ir%dSaC} zql=63G^2#Ez$(tP@Sv)*T^JeBroTnOi?P3D8e|ZgP|81`{IKRGh=4>{u~n(dtCAz? zoavW6XhAXrIoF|$y>Z567++X9f(qoCSGTb5xo|XQaZ!)ij0?No0XD^nbeZuX$JfBs zP1d#-r1i_e^){3EBTOr>TJ=+SkfSoZoR%8G&y|QP>x_s__UKI7V8)9shQs`W^_bPt zpL2DU8ToJ}lRyw})LK{5yjnw9aC9Qd8+In2FVGBX9H}G~_B*n`iE+bhDw5kPy3R_i z*{nChW?TwB(j-Bn_5Wme=6qNkJzLeZqEtG|meqygDMW?78S#-nuJ7pLbAvVs%48wAH2-}K0j}^q zPC7wHH=K8$(wTYFNd%hs8t;-Ld*Ah&9cc^nY&ZSBdm9!;2 z&sD&|3JOKqnI@f5J@P&IUGZUCLbD0Y*6rU|L{i~T;EUsQ;2NF3e%=yT>DN))OK zMPmFv^T$otAUWn@|N6YYv$c(tw8fh&Re@u;e20KVxjmWrHcQ{-pO;kf+THv`Wg~CV zHd-ns`W~O>Z;TM9A+Vikl>5YAck_>qvb|R|lGxAAsk!(upfhNnoaN4s9-iVTWG#g# z<9mq2_&wDX(*Xrpk(%h3)22@7Lk{}squ{0qUOzth-JCnNl#_Q)pVX7}rrrA+Cac9P ztO>G>l|-B)O%KO>J=YvI1P8~e=E`3jLHb!(lN|BsJ%Kub!vT!lH0Cp#=7{9Sm@LP$tB3MQ7Gj*b9?$`g>z;vHEX zD3uzTno_)deG8kKsFq>=2r6x!ALVAb{UHYQ3Xo@lj(^l1e3vKaqFE{<_K^5kz)^&R z!AFbj3*2YDC*Fc?OmeU9-s_;>{ST|pHKcPbf1|3*gD0U;Ruxi5KRvfIWkN5ri{UOE z`@`zJg?VDMpfYrx>BH=ST=il}?5kgCS$PfyOBU7xkzFK8k4y8y9u%jxqEY6GD;MO| z7*V8DQWMcy9={RxDvmPbY-V0m;_>78gX5*wS1MXsLsnJm#8XY}!*vxM4vc@IKyQ_< zLup=TH<-Z(P_WtHA4=4-(-RZTrxCY#IhcHZx(EJN+YipQ6{Pj_^Ajsw$*t-u6K?pc zUVh%i#lBhWHjMAZ(2IaUDXHbiCiNG&k(4=@__E3k|2YKSzEbAd| zuu?X9diu`Labx?7zlHW8Ub79WBiIn5W|!>C=FSV}wHqXoZs+5brZSU1e(cWWQ*~AB~Rh-<< z5u=DQjP{sN<4jW1eFID6CwyQ-6nwIrN?mQyemVduFk+eWodFlrYB8?nNHVp#myXA` zHvc_rNG6t3$mwcHsPAUuL{5Y4KuYM^#)f3J=OxJt`GsO3wAfO|P|%8ysmx9|$wm|B z;+gb>u%_0Y*l2eyT2DvD+uZPQAFFv*v4D;rkMam2D^IVFbkpZBYmZ>2@eL38lm9Z# zdwo2(Z?A2QLj2*`@ZMq=B6Q(^U=}%zS+;Ish0g7 zdRNKaa?1+`7vJia+N{Cz)X=B;JWl$&Je&B?Jxe{Sud`Cyb3H{A&(SSU<4*bybt5W` zY*zJHU%cuwGH&r$PJUMVVY05`Ag;Fa;<#644$jvjj>*y$JDju*Jv;^5USn$#CZFP;iRnM7!P(1XIg zb&J;sl)Sd{=PQp$+7HG}ec|s)rT^$%mK86VhiTb<3gsD`HL;zD>yn!+z`~Jf$GR%&T_-* zjup_QO0SfaS52=}?jOp0rQmzSG4G?e~d%zuYmz$vyjtG0@Bu-E4Jsc9y}5c#4j>^RQ~B&UOHQ{r8hfg}2em6nuKI5~B1ta)0+>nWbntS>+dLkYaq|tOq#>E?m&jd7 zzEbJ3ehS0V57&$Ek%ppUTLn}tSa*78G)8dvpFIN&dM)C>o%*>vUa3pRb5fkZ{UDjk z-PcQ|E-lMHbis35N)8Eab)0R@RH4?&{6XRQc|E7Mt|FQg2HQe;O_+@3YLC4%aDJ;F z{O7C2lMF9x9wb|wKtVxx|EM-xxopWn;->oMVejqNGM68g{Vf7%qKqfJF*2ur3RnEH zFsJL)R|BnJ%|k2oxQIeeM{=uL&$e1;EVhj%yv41#3;RrTXyT{EGK3Gmb|M>UE2?Q zJu&DD7Z9q?M|HJ=Plna`DrbJUXSpw&g}guClaFD0U$6#{oSez;)=3Eu9VKuDv&y{kEI z025O4n)!J;J8!mMTwE}j)js<|J7E#H>1cppCZu6eG|Y+hdRE~vRXYAXru0~1%=Ez> z_H5a86z>aCL38Ki@0-#F%)9y}6t=yC1GONkmu6>YUoD`IbJhj_N>`m#?=y$O&591aKyeNNSd+8t0wWo`Th~$}#K2xb3nx16)1p z!@Z24$}UH`BV&S)1cKN!mF9X+7X0w{fBj;f0^Kq9{Lwr+(njBeo#!1CH!!E!PZEs} zxpo_yz`(Op;QLHu@^v#3O~ETNmrF8s+rP9kcylvD`bM@(C}OapZ_ou`*Z6FjY=V`| z4FuVekt!;m=;Am%3dXOyB}= z_4QQKg=4RK!W2ONj4e-xQ|U%AYgV_E?LU>oets=5pe<#fu>yN~#umI^fAx2&DTpOB z00~Q1;EboWz62oNWbzP(TAeeV8E>V`0s$c>D2*Xca26D|5Zwp%z{B!64zwYwCIN8* zVhNrAbo*9U;qDo39<=-A#IdSn1q7SZH8}wKUNr<9ti@l4qwVWF9tbY-sY~Q%|`O;5t;^iC$=XAjG(&GX=^JPnO^N~8FPCt_O4GbWrwo78{4&=!O zI;E#pG^`2MZs?J==j2iOm$yoOI^)R6B9k+c6N^lx^lmleDC#c7KDv>3ap@m(ofGUwNgxW<8*fdRtWS#a$zUIV}JL>73A&bo+7J z`l+s;EuOi4;3}=frKP39zFR+oExsRdCM|(9GzP$-rk+^VAp^15XZS z3?LFg7vrX`*`H{VU{G9Hc}ZxAl@(+TMsD1W|DqtkA)B}MZd)FA1@tzUB!nrIhdUs*^*pZ7MofUGB+T2?c&xe*UBf_ zz;e&W6}*3PGgI%6=?U^3|AWmr4lH|081!x|#{Y&SQO29LLl!_c9Z=?g|YQ4;3zP}BqX`psI8wJ9UV90 zYVWAr_5Yn>ogm%=LI4Zg(Q!mVLLvdg&}}w^Hbm_pUxR(*0PWkc*96d^&6;lFk=Kv6 z!~#J56#IC)%~LXpqe zrKLJS8x^m;r)UEmwOq9Zd_tvJ0L=0ZozLw%euzcS2D}T!nalCA=uivXU zJw44e4?Y-^>9ebMH#Id4+HODU==Pp1d_nq(ksGPOYOep6OjwitowZok-cCNf#GsKu zk_%1H+)sZgAv=v`5~+=vZ#pWBcPfo)S;=+d?le*K-sX=AIQlC=UF-P{ zx=hK5Oqug5h02sQG1jz~6+;EMQq^mmZWup)0P=qGWbwuOHy$4wzFj(rp1lOA&6^Qo z7ILyoG?2=7^{iA+B7&5)D47oO7%xIxhjQ@SvIjS4pL2)0o17c*y}1VhB4Bko6N~9h zJXGs(D+T<+U6TQGBnO5PtrAyXkAfd2ePvD^02UT_4L`-txU_D*+hxFjoXiKPx(SQ1 zi3wj8M!CdCX+C460=fW&A1TpN@b!JvzYMKggJ%GDgo4`FQf9R%Da7OJ{Zz3f{|ncf z6m|-hp%(`|g|DRpobt8BUXa3YnQ@sF@B|*d>t{u`;D>?N58$-cz+(|iSV{xri85Y3 zC%V4wO3zEZ1v&aR?NGtg;1(&R6%E4dwgl%;RoU0^D!79K9caVpAz_cVKa8N3(2u1% zL2VuyyELilx|8hq5TFL`3}OjMPSW1yL!|O^w^d1%v6LZSKg!A3E@UUHcj%I{wQJB= zOIU9pKvmejz1z!V2^yx}c+=$~-6!J60{AouFX~Uh5R|h%#tZ^Is7=$%7$G z&V>xq@vo`wgrzrwnU6A=&L(>|UNQyvg%}!6q;epmplW44R+@K7Z5N9ixgU(`HSQ)s z7~Pk!AsmI#y0py6Fg>n!66O;m04nRprkNYD4*GPHy1{k2VRZ-O6mebPp}Li98BTcb zd<=3}?vNWE6-w*AuL{YpT0a7vX00|yP#JLRnMbo;x;q>7LzgR{{yF=QA~eIOktTcA zF+^j1nkDY3+G5sIteGi`_sPAN@g)=)p+GE-)BMxpHXcijGrc?>;0pk%rx8^k#Z_4$ z*5NQx7{LYKl*c1g>T{YJ_WjA|J9mKwNaShl!TQ7iy=&VpMb$d*esE_tZ2ArFX*RlA z*Gtd#WpQlOjj-sOHo~k8tl7P3P!0Wk15Votc!mn+?9!){y&;*FA9F}cB#mfl5(PXT;P=?3n*qg2mS)DA%I30$A|4TbTg$!U5WnPgSSK&h z;^|dTfv9rK^7OF*Ytvl)VKHVIG)X48Ll~Lg{&R~SEgF%`Py4BFw>33olCrANX@@?v z0+R!S{@(LH;HNS*H3<}ToeFxh=!+u<>2-fIupHoJZs`r$B*VkslNO+ZcIIo_>AC`# z!f{-3T`dSY6P_#ITI@lsV2{TlJhVsJE5JPf)wul*FP|I&iQ`fr1V|;JCpr-Dknelh4|Kor6wNBjv#dV(H#Bg*x1b}C(&??*J32{GYP-aj0fy zJiwPFdfdU0BNx!fWYZr~Zt3W_G#IEGZ>b6l3Jtwd;XuYCNY}*Bi-4aCIf%79e}?~Y zBoO*!j*I=YVxv@$Wl3 zLw!I=f-5!T$f)MXCct8&ji+-D!5{wPp)o4k3-w4dKp&dUY$ci*T-MllPz9jZtUx))D|nl|Tye%)X?o*qW3w;ra|wB6K5i+XY-s}s43a!JHarlK4X{xLd< z$N5aSSy*AhyTYg=C@@fvG_6>qiD`k@NiH0)?F)?Cez+C^tM?@jCzootAO0|K@bESd z9jvmv>8Mv0ielBBZouy*l_M?EyvvGU?w?6y9ZKRSbY$o))ydUYzk+^IDoqhj8mmo& z*u*Syaw1^@3uTx@1gRZOR56^cw4)c&@P1uwrq6n?Zh!t`-;FF{m_Sd1N6UHDvsyn& zh|UG?L;Z%H{ov3A01FUz952R_0D@9QGhJ{wM`%dW^PoT}_Atg-DqmDsnXYg^DVFMO zrD^jbg5t?XAOS#lqNQ;su6~{BjP@)9-L?7!c>AY4akPL^_!JeN`F(hpKyyNllOB1$ z_X)ah`&v$r<(UjcdR=Y*rjf@BnrA|0_htyeEqzbVMyfT~BROKo&-64=OJW>Uv1&HD z>YF#pj-YyP6h;~lzl(ZUvOnbYox(fMjB@G&WG>t~E$~7%f>WT#qH(nYUMx~&yst&C z=>>Wd2PF!Vn_MSr7MK8LBMl&FK~PX0g<|z>BaAlOK>(+ZV!>y5_9@~f5PASfi!5(y zcQU8$&f2u$Zc}qR(X|}|P}1C-5kW(y+ui3JNu{6`Dk>%xmwR=N z!N#d;X-U_+O6Bi~mOy)(VMbr8k+*SmT%5y#`!2KaI0lW zr|*JD;4K|plvN)fuoJ;=fgaZa05`fp_Y3*ewukO6(=XTNpsWF1hK&%?kG>er-WK05 zpw==Ds|-&11#L7?v6*Qxy#HI2lMOeTs<&1RFa2iTD;RX_D4|iLm;H9pi+e;pG`DbZ zM{uqbjR?DGcHihl3PYdMF6AY+D`yrDHQw`tlEwH?(oFprs#P^qfyw|-7|?`7pw=|v z55;;SxvMDox3Al%*5eL`Env}0E8MY11aI31Zxl8kdL7l;=lE}dI`K=@tt@#+2 zv}I&uv@iB&@`qcr`PF&?Hd@A{R4*iB2xD5nv52bjgk-@S2uVozb|kAglfF8!Big>v zJk*6glp|%hqx8cn%af<_9i_gPlT@qMuRIBSP*>J8Hje3Dwb~8R4ed#?BcArF3mD{y z^nBvHfkjFoF7FajImMzm;>Ce{yM5M(AO&)gloTq^;zA%ne98XCeV96t0Xn+1+yOgJ z(=HBSBq^P&uzWP}N8;}9>TsVK#d(&3`bg(ufP|`CkIN)qyUz*Kb-w|P zT@BD07ctPsbT<0!E@}eA^OF()%6E5mb~eNk)`#Uy0XvoJmeJ4_ zby=4T1L}Zpb=)^T#&Hme-)nGq?83K(l)MY|d>C&#a|pN$Bmnm5AP7(5nIQGL}kyp;;+MV*`)xE&ROgS+cbf-ZqpZ_teQh#Gw&I<$A$AtDT6 zaQ{q37AAinLSSg-{-yX?typDs^>!qQLzOxnsh4KHsGs5|tyML!dzU^5rja;zgs6 zuWq(+JQ+?c3nK63kE`206LENHOf)qBTbOiXby@8IC4z+zJKz@~ zc!$5m&T_Q2P-j&ys4atbU%;R#F0it1MYWmokgqvPQVq$&c~wU`ScCsxH*6& zwA*e@H&!d^c#VRh&Vnc+?7DYm8C&FpZ&t9wRk#J?j$f$Y@BdI?V#M}ixtJ@drBq2)B$f^0JKyC>`_b&KhAk3P2AIN zIn6rZWHz;9ABo%JKk0+lE&RJW^um!vrN0>KBZrA|fIj_g`KD&I;$#URDAU5^1a2|v zP%0r|uWqya*=(K<3A(1;geyx*OII&JeQ@CpDo5O2_n+(t8jBBZ3y8o+l!xgIwE(wM zZfa<#aCLGz54WQE0qWX`R36jA`Ht;eVaM@`xtn{``yk0BJ4+hOsEQ}zlm($UNjDT( zZ!CWkWUG|w60NCe!P+C1BD_sU&z~#Qu*x7oyW443Z~Tr^lY7A78)i?%A;X|tRO!nz z9c7(;FPf-_J zUtd#P4*=a3s>taKe7pCoW4^&<7IlC9QAKE=_g-Ypnm5pw>`HTNM@(~U$-bW_rF2g| zfIgRv6Rj$I>)7{P)}Z8j%Pkg_jpx1Y%*bS59kW0gSPqn^bpW;o)|4>_zSA1a5LwUY z>FK#$$g#$lDmSfm96nT(tVfnGj78fxq1r0zyT6#_2>1)8CYRZODZ`Gx?+!hOq>jEl z$njh3L?%z4pX_z|ewV|&I2sB$tPclmpCUu(`EKaV8V^6eV+CNWx`*Sz+d}LwyF@0; zbWcESet0%kZipdx(WSB^R^`o5GQQWAvDU-w#qg3Q>eIWOGFup&M(Idn>bon~_jsHY zcg?1THuATOj#jQSVJ?rtdTAZ@H9q8p^fNig?O9QdjZaLFF!}#}D|7em-9x}A!$I8@ zYTOxe(UfWtzzI;0AK%i23W0>ysao*+^G5q-(g=5S5|v9oj*i_I;=3V`nMY$y&g($* zXAh|1x@%KB7E8!X;Wqxexdgb2&W__ReC#=efctH`;tM?)Pyj?jFSZ}%j-gpCe03N} zfli&nI7$-{6aSUZe`*Q95~gXuN8)e$4+Vz&1wC`lR+CaSHRbgfKbB_$KjH@EnzoQNrSKQyllw_pK^PRH z1JEGhVS;k=wXr|)H2iMM#D)ClQ_>^sVS0DC5VYbJ}*fge!9E(W#aOY{Wb^I-aoWqbd00*}yyZbM$Y8w$D-^nR zSk#?id*5Qgoayon$*+aA+sDo2hx?Tp0HRr5MNE2?z4P!d(<~(42R2F5%M^-jVSGVw zH|Q4@X%`kLe^2)6NXa}uz`wV1g8qK3c2sU?Z2WRPL09wF_5L_OGoWE@ZSmGXqla7v)dh|`0jwHmT{%&Ih~uEBjE)-ZS&)WEnfC` zS*>h|M#?WbRV~PLH?+d9#{IAR^Kj`KrBvZlxy*<>>qt)PUV_OvxB)b;x|)eZX1@mT z7t3{JW9=x^H1&1B_c&g7>AU^SUuHj_WEsdGE+xUw9zZ!I9nQDhdeem2d*f(@2$ErE zfDl^-&is?O&|;O6^~D-_>pc9qUeb*)Mh|U>6Q&(uWuz%aCFkkc9SbplauRh5H$8F8 zJv{!|f-7~>SRFhVI7r<_Of3HUO<*eu)v*t_$WX$M_X5|Vd~PKv=V8#D1LPuaWet z{SujrGXT!E9}R^9ZUEbl=ap?1Kb$>aZM5{+>Hg{vH>k>(XszFp$`{k)AjNN6ch4{B zKk>B$qSo5Q=C}g~jv|gGxWuQsrL-Q4uO3Lh0r~#1gaq2S)o1fVL(2>qSlJsN)gEN; zBi2z5fE3KjJT-=b$O)q|;-H^Ld8nS$?QPDBMA*h_7mVGgGT^=6$Hnmu{cMUtY%%(t z#PzZQV9M(oKn-FaZ3eZL@Rzcm0#;~Fmh+%)YU5MKw)%)L1*WrVT}=e`E~h$Z^lYj4 zd($RI(pS}|MRY~hUjS%YBoEq^4x_nRL2YmI&JRVxHW75l{yNJK@c2woJX z@>zCti=qRs#fF|OS{Z|joRMRCTE#$@#e>mA5(9A-JT<3Usj}#TELpQant&y_~1#U z!`cPbqbtpz;KI^_igSHTWUnqX$-Ea+pyuD%8o97w6)T{ucMx)abQKC+ z%^f>x_LZ8BWJbIx3%(0h%Dr+*fb&6`0F?(?;hp+(8f92=mfre6JW|adb@GD!1I*Nv z9yGnB>k`BA*~Arbnx;4SdD&HHqG&Zo?2J-GuBlUZp+{kAT;Dy44zP8*%7cag1e#HN z-+7j@Yz1%j-OsMC2|?1Xz?p#-A)u=$@CzPG;*p++E+j8`OGjoOl(A^1nH&n7Py4{5 z41t7x4J=zT=7>?_ zgg@&C_G&#d#ckNqf>6aWGcESx!*P=4h#>@N=L7V*tYAjvU? zL5urTA>>blkux*NNS{3{WCL#X2z!2cd93qf%_oy4C*y9=TurA~G&V@%Vc%7H8#w2W z5l2;>rP%rd;ZKOJu5Jrx)Y3$qO(utj$?fW={6G*4tW23%|FkDrZ14~;ub$lIJ7&%W zy~lr!(h|?cszYqgfeu2<+RbfeR<~HAWnqcw>Ua$#gzmo_uC&1ATw6DrtN~rEu8dM} zAG6T>p*k|S9{#p3m9(HFKYt;isi}z?E6<2K5tNo)*E%lKy_55Oq_U)2ys0aO+d|=3vI_vrc?jg<19e)h)<^`^;A#~@#JK0dctviBpQ{~e3aAT^I?(SU+8YMDZWy5b8sW){q zO3ZlIUjq~;4s2>+_zR{*#1~Lu48PAVgNF82zPPtB<3*%f(X2!;KXu@|1%bjZCgW{m zqBv=-rL8MqcY;*##gJal$IA49<{WYZ@n#WZrqx7SW7`qoy^P{_8JU@}Kq>L=@X)8E zy?qum>pGyh=Qr4S@(6S(d`InL+q1M9bo9G(f!mEhGc(R7*z+6glBqho7Uo=PLX8V! zzP+!wt@N4m9h4(=0FZxRTUe8GAehc|%@J-T9pQU;5i9(J2aJv0+I~Wrk1s;4``I}v zA8;b?T64cYr1rvNxe2)=ubNJ}=!Q1e9Qli?N)^LIW)$l?&7kcC)2#;TZsmqvo+tp_ zms5|?D^H8BHiGxfCt`s;UT?fp0Abb}=v|gT%Ss1mHy?&xw%nl!(93R^`_6i|dpH-L z|1AtD=8BJit?`tO1k*jeS9sm+K3wKF zQMGJ&(r<{K23j>k&=VRm0!+iu0=zZ-+%WSd>!E*=HR$W7A9d`;hYAu}KM~DrU#_S} zuXO_Mb{(0FJ!w%tRmTnX$#KL0E@A=Yf^zdMcsqRlVz}q7j*GPTxpA9!~`$o6FD+P?@=zu@O*?mZl|qxG8EY{T3a&>pZ--$ zL0dP)Ejgs#HR%;N!BcQ)fYFkn{CHSrS<3$i!e%U8ES{KV&Or(EAm9NnueMO@RbTA0 z+Wa}RUY8KoR6jjye=>O_;&+dy<6b^v=4oT3UQM>L$>Z`fAR|gx0^7&30@g|) zVW9IN2B2V*bN8MkppA9JBUgDptZG&Q0Nl&ew)l%XHz!gakEJZ(7$&1169^dQG;aef7zJv0CP`!B%y=>hJSz2eEfG|P7o4U3wa zQwfQP+@bI&fpJku$)KI-Mn{<+^Yb$0B_+KZ>+6{S{&hO*&>GFdmD{14;U{Wjfywlm z<{eQczse8l?byDTIuKtW%Zfeb)wUhH-7P0%pUC=U z{Nt^GGfo~29DhK!B?=a;$W_Fk^q20PTJ@Z+#eMHtD;lW0>U(%bx43Wplv8fi`bCPZ zH+|F(=L|bv;N$kdeq=!|lCkE#>blMM`;p5}8pjNFTI+)8JbiSAh&tGK*;hX#9aw@J zSe?c&Yd$NChu!2qU}ydGDf1a102>Ur-lgYY+C9Z&f;ND}ZN+(gavW^)&GXMmJ>+~a z|5lXVC)q+owBA@#Q9^0G^7(g0xnRT7Kwp)ek<6(Ef6`c*2&e|xT@=%Y+v_dFsTprj zubK`^-+$nZIy=h?XD+~j3HCY6(v@ZMJ zV~2%j=R}&{-JJahdeJ_hEiMAwXPaokQWV&S%Nb=QY?|WzoKmS5l+(}mRtA9;x{U6f z1i=bjoW@RsN#q#o3vDSTEziE1^Y`|qM@R2fwz(-mIHXIwm&oEYm ztn4#{VuY-0glt5ZtUUP`pDz0yi89``-vJ}|P4_}6NCi=KtLyPIMq06gv}0Gr7@&2i z0E)C0KxZ=r?P%iG#<)*>@4UL$7HXagSnt}}+Ij&=X=rX{x`Xp6B0N0YWWrknEe_5I zuUb!&4we90r^%wM7F7-<`S5LDk9}U1)9vCPr*6Ba*#AQRjXY>t?uW z8ymBlm<&6m5Hgk`K@6LyB$xqIb#lbSveIr3qBn3#;YyMi=jaz7d5)wLY}W&J$53C= z;A8o!H~Xt%+qR!YN7016Ug%Rv|4c*9VxXw-%i#8#Qe1glynbeP2(3z397|Cc0_TMy zVHg1x7YELrXltxKu>G%q>nF2zw^}q#K6GZ}bCqGd#>i1_!c!0QW6*>6lzv}QOk*fc z_6Q-x>GecwCBm9|+?~V{fIeqNIhh@{0=7T`_8V+1Mpc1s&@U(TIS-3soiR2)SEe}6 zo7Ei`6QdE6AQj%m+Af*Hc1D)=jVWoOUwyZE8bc;ai7OZ26-`tf zv7gXjm68t`Jjzq#mYfobGp@L$Ubk5@lgV5>7I~QZNt95&X%t&`os63C7`CYOF!%GG z&fV!n-M5*(!Yc<=bqxQh1=y23jr#lNYbr~-;IsLg*wlFac_H`(zBfoyn7Q$puoM|0 z5R_(a+Wgv_AK6|&aErq71QfX;iiI%{WV_g7nxr?L9S#7IG7SYg8n*V05?W`$NOoYi(@Ko6pp= zADFkfDho9vq>|2hQrOH==6MRK{y%k{Ra{ix*N2B5I)$NY2ysM8y1NCGt|0}bJCqt2 zIt2ug77PRdrKMx=N4J1{mTV#!H0`|&e^lqTF>)6u2j(^&~~y~|NGge z8sE1=E=ukb<>ub)hzclDB0^Bi8bkaD%^#zj$-RVRuiW@bbV=t@<;eGaH<#Hh;cR;} z{B*)4`Q22$qBvAi+gR3~?D;B1UQ6|}b&JXEI)2mtfD;zSO1w$aLCiUTTg=W?r71*I zWZZfZ!iwLgJn@CITgXNV4AM#e$DfA)&EcWs(`f__5)5bl?2nG7O)o8Zf`xI^E;Dk6 zp-)rRCW$$BqpAG8Swv^N5z0qw-Cq{TmG8a}II6-M@is)zQ{&@U&8Wf9r9XFm4O`B- zK-6c~T}@%t4)cMgLIFkrXQAT*70v2(tNdpi@5TQnmG#)gvL*aJkfW~^fvjdzWf3Wf zQDl6JioT_Ye+ch%kPH4k-f@&`jwGP8*CT@7Qsj@|$K7GUXXJ-OBlA8YgN2}>*m%j{ zBeE~9xVdJlMTkz`*bp8DG9hdOC{uFfh>|~V;Vtlt7Ko@);nd(q z<5SZd;wjR|8kxu7mi4n9$$w-WujWY_bu?(KiDuS@^nl9ElkpjdM2_po2i^8rF?1&Tt;mnb8B3TUBR@PJ@`sTdiOY7u; zdcq<#fc7wth&x&zcn;$w)W81m7|HTSyd#;znzH0)M5a|V0YmL}Bw5zV>91AK2RFCi zGZ8?d&Zk>X!vc-l z-)>!X^%c}%S`r+R7&WSERBAcL)R{TB48_yU?iOiAT65A7;4@Pr^*YkCtKpm^K6E@q zF={orHOz#m?4tYFqhGRf6QXhx2UWXOm{$L#t@TvPw|~y^pFB7Za>JW1e6)-GuQm83ZJT8X#rYZi{=~< z0qUWIh)C`JpFUeg<&nWbs^Q?je|uCn-@m<{patEi-)km`WM5b)X2yz*D5!|AysY67 zr)Baq@rs6Yjv|ck7g}^A1iya$Dr#t8h^1s#mt`X=qsw+Go^>m+0j-cqU_)*^W&rg#qpa(c0|qJmDpLC;2@PdPnVNc2RCW0%(kHKbOu@wbW?iqIF(_v zT58%YMGb{qgnY=3eMLTr=%^Uy+jv7&iDp=c;4 z%Q!xDKW2Q|a>7sWbg6X6wanCB6$H;5U zblG9B9Qlx6+q(h3f2Gj=0TX-<&YdBp;>(n34&>cgd~oot;jA3?~%WQ+f;z zB7em&063?JpTueeRlfJmwrQN$J@H8flB+G}5k6g-B-e6WGlk=DrxyMlYT{e3`mQkS ziq7Y3Uyu5j`8P>m1%*WRhJPDK@2wt-F2&F!bA0GYOT-8l@z(I=W3X2D%mh)14y9?n z-S6I93fs7HvSv}Ei1>xQaK$VLMLytW8GH}HGqsgV_Br6V-f#$yGeZ#0*NwT{UykgI zAfP2ATU4HSikvdZabxGu4@CJ@E$1A8mw22Q&dSF z6v*CgKkOo{0aW`N9xVaUKI~I5rqs%+D)~t_@mL-$qiAEwi#Mk4 zd!XEZ_z*yo8g0nqXFE_UF1Z`CPG;&6O&x&6+gpU1XQ%7(rVlwA3S^~?Y>iD!pn_y6 zAoXS~#gxF4Itz^jDq7TDFL7hKBWo#l|4{@6I+ZW~ZDRRab@kYAICX`9oV8X9wD%{J`ZkLw+wY~lBU!zJa5Zrj<{~9577;o%^|5d|%y_N?PUqm40 zk6wr|B~t|Bb4KYkNBSGZxK zDICgjK{Q_9nv=rMQQ@g=y7w|_;2H1fM2_fckKiSm$g&zV%RsS6Yf_%XmLl=oJ>00| zV1c}jB=u6#KxOA;L7EUJreEg(-lm%SN|E~x&y3N?5-jbtX(1kW;Ea)=&$66pN_eZNMQ&gDe0 zO2up``-w%b-*S|-lS?%-n?Gm#Ht0X9N|RxY=W4A|=CQKV9>pX%g$ug8YGUXUeg)?l!87e8!pj%9(>Lab<3hOm?$q@g2&5M2I365=s>6g$!pG zv?=H*=0523Gtx*Xr_R%}$Nogv{m z68#zFTBvkPl8PD)?Ulc+^d1of|I#{O>{TB7e1Q49dJ*=Uv?2MHfVw30lh5!xj&u~U z{_2kz+I&Z$?_RC+ZUYfjbx1GLM;XuJ)t)z$elOEbs{A0lWD}9pCf5DDTTyxePvmcE z^*&NXHgk$CT>?t_nwAg+|M zGM-5$a#%L;M165C#g9#+7VA#zU)5Un(gV5b@sLvdCo=4h~M@>orf4XDDhK*Q><*#*!XlVo|aEA{A$m( zom<}{Z?w)rF9i5$f7CTJD4(BwE`0u=)keV$)+Y}MmE3C09DgS?sT!XO&cFhZ5f|2o zS)~$UVwTCb-M^VSvzu3bxG3ogYjv6XcapWGd}@?S@7Y@23UQw8(-rk*vu82SzS^b4 zrCKdEw#9GI;}=n+!s+O2BuZ^E$n3w1Db4J1Aj4-%p-`)SOP03H@ncHBWq)f~!WN%B z1om+=a#Emrh){6B(acF}l7;!LEi=)PqgA1`@_REyI1}oPI(4f0*pdWfel3DYh2@Z3 zpUZ>=o#fE%KX*RiT_i);xK(7AnK8XkM@i4Nl&{Qn}p6-BGkU+>VQbzFa+d(QmJp+Jesp`Gg->XPbgD;`}cPCf6MVRekvJD9R3}kjo2V^ zeAP!Hxxzu0b~{pFpjvL^K`^>M@X3ujKUV^oIkDfX6*gIHiJ`U9kAyX)ovSnxC&>)* z{HH;l$DW;=yl#t86y&dF6kpVPO*O|c*&Y+?Lrcc^L5YhoJJ{P(sj~nO7%}tCTz`N6 zy^xR)Y-8-VdZ-?>7;X2L+j=I|YnZrBzJ72$a){QGy*W>#-U#>0} z(4B95Ylb`1R%8ZsK0LA?z7&aw(?HLk*I+)7xIAjJq!gv-zf%r3Gb2lpc;7y522T z&sK`F{VXXY6w%wOb~Bf=6ks0|)cB%mwC$6X@lv^j#BwK*xXqItxct&Ze^#{;aJ*N{BhkksmJ|QeD&u4eBe6Vc$ z?ALj^cA1?F1=&2hoZ0NDn8Eu`#m&v=C;sHGoQs@ts#%Bx`6VG;Gv;^G1MI`MIH_Gu z?`slb+IsAQXu7YL_PP%h29>lm4=n`U{MigBH1d&GzB?LRcQwE0+}&US*Fr*QVL(h$f}mj=bdELfiE=}ANDiee-4UZ2X8 zx)9b^i&3t@hhGCyVz!EHDvGvGxsnl&J|M4mSoP(+k%W!bLtTz+Cqr}6+5s`EH+^+21a_1LWv zwo)jWnm1+}h>20M@yRyzNGgMalrKu~AlQZvMvGvA?tSa@g@R#5m^ZaIT_k&r@#pV+ z-rWML_4Bhngi^Kgx1W!o=L~}-i7W&$5BMxEcJ}C3Kj0dm&7zB5o7CJ}v-ce9GhocI z;BK59T(z0+y4Yhd7-UErcuZ}am9lHKhf&+rCR%Q70{sMIvbRjFt4IZ4b_={2Ldhp5jBBhle0mmHM&(;czT7;q{n@AAze6 zLws-autl#)Atxn5$h$j${pAH(=EHKp+ljG*<%{8U3wbSfL>B%7;DWLLraA%q!KBz8 zcT6**7j8bHM$byL^T3~w> zYOs$M?PQQl+DRbe}4o-=&W1-56~38$MSCd#*0uswUs+_MOen^W-9POXdFt>>8~$8gLq= zim89anX1gXqsX@uHn~5j=a*-dTY^70vC*U0{r+ZasERIPKZ>J-IDx;3WK)cYPd{xt zLO}@>a)^Q5#_O*5E2YwVESfmtCMJHD9@Vy15(^6NlnMCU5cGSxRGj%SyR?FeqxZ@0 z$%d1F-Ty<$@*+3UQS(-D+0HTqwzZtp;cMmfmO|rGX`5v1?>im%o}sy!{O_1lWYbjz zvy?dtRf^3bXp-$``UQ1|7F7lF)#UTkxXP6c9aZTFs`i#oNf|gyANKbRAW0%|Sm9bq zB6O-p%SMDWFGmk`zmSniymtN4NYRC(JhSlO?%aVJrhn0X55t~q_2HJ59Z@* zN$=H-PhqDOp1C^nykhR20<^q_RP*ouK=<;y815#uR~JuLzLtkUs6QxHnzWP=>x~|; z4DUeEt&!NgAVTAm!~1UaPw)>O!fAHiRN=Nw4m*l81UW{X8%&6aF_8;xuKfK?93jk~ zfKNz~>Mf){XFSgmjhFf7+E!okZ>8g1FO2F#OEm|aMhaX55>2`^_`8GzRoQq)u1GiD zL^t77`z9h0PRa9Q$&h|3xcaEY)0Md!SI*oA92tBDxu4C5&zdWCZWXDkwYN;xk$xg1Kn<3#%Rv zL>8U>W=+acW%@S9SU-n0O%6Mf`YS&!3fhR=@DF_Teg${m1=Z>ZgIW9Ma?cu8UQafnD zTj5-KePQoR4fyF zA|91t2FqJLADVn$G*Hbw# zFBj;J8&k!U@w!iNP9?ojE|~>7rN;MDgynV5A(SZ6_KA9b$ZED30ZPk(E6NN(KQcTx zi12$J7Z~AA`$~Az9fLY@rutLc*k7choAHJMCn`^!(3s*V@cUhuszjlG^_F#-n38fV zhD7H_(GzNM@$SA-!~n3Hn4e8744)1?+v|KvzFFsY9a|r-@1j`y&|vObHs{Y`7$w(_ z1Ik5tbWU~H$28v*?Yb!KI$Y}s!^)~Cqo~ZPN>ai0hL-jxR0(ki6*mgL{yQXm7M1i& z$>{3jAP|-HdCX<9ZNvEoC%BQpes$G*adDwi?z-6`msuSaD&v#5A*BgXGi)}oO{|G2 zhE2zIuaQ{mX=*90Bl|6rS{S>=Yv%7KoJXlrmRFH5*hor#&Uf&?EEF1(3tU@eG%@eW zXg!frjz}?RoZ5EZ*()ac>^`&o3fm&a{U2IO_jU}Tavshlr-)yq`bT+Q|H=BvZ_$JB zo6Ab_gj%n0UzQN9Xa zna~E@(SAXnx9u-l=Zohhm6k&J)&wEm?yMzIoe%s&PeN(rJsL8ni=LwVU4uEL2HcSgGBKU%nqVqPFJmEvTcT!&;g~6=fwT0p!`o^2h0^Kkh3WR!$s= zUtj~<_rS%q!u7h%mMTHaIq1It1}N0SQq=U7aXp6G$PvGWq7EcZKJnE_S+CU+7`z zpnJ!8jDvYv#~y3=$qlO?h-Tf9*`PJbwK6KveI9O>aUSF(3e3g=ng*%PTbZYu{X9^)87~ zAu`bQ-@z1r*hLfFQg1kiIe>UY*7xwFoWla%Ji9xzofy#hp`IBcZL~> z%4h&^ls@1jjjQS?~1|%;{<&QB~%2mLgc^}+WD^%jdy3i z(DRx}bmUHl#xCvd)w=}hj6-fo6P>mQGXAxfdLch+cknFZ}Y3_g{7h-3%bw2qstJg3xm;Ot6J@$PO zegaG9(#_$LigZ>Furm)ozj&)yRzJTlSVd!bR2{b@A*zdlGHuzr8RmbP?V(<~o#4a! za=^X97;AD^CGm>5)PUa$A|0`FwkOps)DKvQRRE6cfR=S9KnUbsmG8UPS%BFHrBGi2 z#0OGaum#w%WZ}MTXGiGXcO~n4FpKs)N3LjOS#4C!OdoLXtE;P_!>UV;3E5RjCHR?N zT16gp?cYk3={7N`^oVZD7Zz9~O=x z!9hTR2q1t)qmq&c5IhIm@af3N5M_f!Wv5BS{cTBoK(>s)_BLKKSj`N9unNF7(0swh z9MOJRMCrWaXKS>q)~%TMj{d@oLeb`A$JoA>Pma6})3t6|Z5dm1iuV8IG5%aMbzq+= zvDX9Ac>E6tzwcnMJQFpVx3WD}N)fSfws#+rQ&3>S%gbv7E>)AxOTp8bCv|`*P{y(3_f z+0^@V*H~yXQZvx~=As2XBx_{(+ruEnwSxK6OYO4RvnS6?kDlsndwl==IF-C;F02&? z0$h)Ok7_CSngzf)gTM8Gw{?R?_6E+#NeH7usMQQ>t$Pc|v+bS#4IwWlmtSd8!PsYJlJTZ?D;RtLVC&pN+ui56-HF-p6cUs+m%-Ezp6YkY1*NF-BVYu&blQ4KMK>bha3yG-F1rRse5BW0pi3Bn@Je&d8 zbajwdSE{S43m3@JmZeYRA&pVa^_4fOn4$xv~L?f7{LSZZLI<2s(;kFRZDwZ(otXlS|R?zh(%u2K#e5nzCvZ(vhp5@aBz2 zet4X3CI&SO={{Kr-mH%nt1QJ~*8BivI&*w{9BNrPeQi=vX9}>h`TDg?BQ778#T3Xm z{cvu>LQ5d4O!Oiy$S0z%X;B;%unpRM|F)03`=Y|6BIaKRb~*@UZvsMU{{YAgvaz0F z9~aw~I}HH=mFDInCvRe62xQMcZvl70%VCocMr(MV0gN^i63oP=#r0bbP8skyqjfS= zVGh8kybBn%s}0a3n)pZCel2&E48N8I!y`sU#$xa^8h{%t_x0-^zJNLj71Imt5F6?q za`x@1{fL-zrHWb(T;e!Wy1kKU)Ue;wyccwSrP9748G7b+4P3F7;e46%j>*YM1zYP% zc~#BO-+cHWjlV7UM!);0~Wf+HuZ(Nwuc0<_BT;ifNB znbAWW13n1yYnXm{iD^LtGTwtk-TmrV3O@oWQZX9~Ib`B&Uji~65SStVi%y$$v^n&-7v!X-B4;#STn=1 z*S;q4o1@R<$yc%nF-~|dOed(|t#k^vR{H7JbR;Rha-2GJ4Cl~A?9VQd!bNBJNeoDD zI-d6~0Iy2uY+x6Ih(h%76hF_tnW?hYkpp(J3fPfQ$?9tncCb*3%4zV!Y2*a7Jj)<( z*^$K10)|uB2OdPWIfwz$S+}!GObYAe8Sn?|m_0E~crrA9SW)G!jsXECO@2E@9&Tp3dB3(m+L-&AyBRPbmbPU}kNH~B&>L5xZ3s=c+ zC&o#c`?)u5UR}m zk9HNn|9{^W=jQxJl|T<=ZgV|DP7NP_XHID`X)y_I6>?4`eVX)S|E2ohlK)X1%(b50|2+yXum3iXfWYg)U?Tow zQvX|r{&U;`CSktL;%MgppCErn=j*}F-hn*-m<#Y}3L5^-_JPit;76HTNeCd2HV5QKG6REPyK&QxWeDs z|Lhdln*V2y{{4)GkEf46=o}cswSRQ>-$gexGz|THTri%X%vjIRq)%h02DbVfTE&jVe*V)_kf0X=PGS8sDd*0L=0~T58->sSd zyG)r|R!Us*-$fSxqv-D`;#B&_-cr!P1O)o{hyCNNe;zGkXTN{G`sYhe%s|3~kY{!!t-*ah(1Ki>oP1{f~! ze_1Z@;$ODU*&FOCe_+`VALIuh5Q1n7*dPDbzJNdk(}L0lQG`bHU8;P?1|~Ib!w$g= ziAIH~jc?&dLFO*9YDUT1dPKGMF1*-TPB&ZOJJ@{2mY5-_hm5g`m|L*M$KJ~W=0d}b zYy&AN0d04FQo?W)uU9A`f={ij<}5Sz(I;OF=?D~VKl@zuJ+n^quw-9*ZE`D;lC0vF z>)w>frtw>kq?C@Gtj@NxNXg7zg+%wPFLqBi2nmwR6@x@OOuw^a#dEhZWbZWc%WVYA ztVsr@ALfKUUh1cW(VzP_X%FuCRvEhFuzc8Eoc!Yb*d6CjePdniUW}g3&;wpgSQk0c zu-Ur!E$SDE3GYiWLj&eV7ol281`Gm~hA~NwKT;EJ9(*q{7v#K|twu(9Gxfno3Ud12 z;tGm)f32Huy1P1a%6yiOT5&%X_B|j>)C;OTB99dF(|fBseL54d{pXWBx$t?-h@Rb# zq@AzC5;TPe?%DNJ18qIxzL3!?a|4y`FYcZCm;(<*=Br~70D(}@{rw?;WM(r%Ae@jJ zn(8K@+3S&E+14L}HgB1RthJQ54!fmdVNkAAO06!bE{g35LSFtV(JQB(0&*#G6Ov?p zY;@gZT@<$+*uEtZJT&iOX;x`>R91F2VGq}JQP-MjUcvmEt4uS!Z>5wu_2 zrk)$LeGQzua}qpbY@4I7JX$JbM;-92lkKNOg8XOu|NY+!rPM;3X!*~S1Ih>A9HCq# z5?x<1i}8UrK14%e_(Z}=C|9x9wBnc5-L~`7Wz{XksU>BT&osv&mkgACUt(clc|b`` zZF%qBy{dwOf;wxlaU-F0Mp`7J5lZz1&XO0)iG&K`@55pR@tj!Br_LP+z32TddHQ&C zRQRCsfv4isV4&bLo?XiMg#?abM@Pq+wzj<8gM+sV3-*ytP9J)fcZ#=8NE|<3%9rd4 zyfpPiijt=c_Yg9K$I(DUbC;d5up1CKQs*IzRsdU+j(&qG#lg5=;G`f!+x28*WpX+C z_t4~cdPp>y9I3PC(`ZfNNC}y5+KdlXx;sXyvK^Bl)^_SIUHCry3FwCU_vfy;1w1@F z;RXgNU#F*EQC+^=t);DPT<0Z#g^_V-BH;{poEC&P9W4rZ3=zTO%5hR~Jb(0k7y%IjYjLcHsgC9F}PDnDz`qg3c}2_0Oc})U#IE83E`m-6daF6A@{GPjnaxn z#6hJ6VX4*o0cS_YTXDINYjWmi|%K#kW4_85p&55lxryHDjH>o8tid-J0_+OVT4l0j5TA6iBl?yVq?kM zC7A>SS&m$$R2RqZOcupJt*_yjko8deSpAuoE?bv z#V&_!D_xF5+FMkaH+!7yZ}<>NjBb;>h3aXnh~NGFXn1dJJgW2H>XwTlZBI$b|eA#IO?eLINU z49lI*7KY!xpx*92C3tu7-gyT`D(rVn76irM`S-N|82-nrtrZb6IuZUUJ z+^?^#?d=n9vu4wIDv%f9FT8vzH4s)a%UhamDo8ZAGv6c@Xv37exQ#KLFzR~Ezsr|l z{hqD+=;d-42ch8@a}tbwIop6UQfDF+yYMK0dhTGMNlb3p)IU781c#1=eHX&Bp)k*3 zkBw1D1U)Et9}b-*X_k*mmg>{DKK4*Gz;=thGa}!kKNorImiR3FXQT%8+dYKmaqM$2>Jb5v{q(lI5BLY7PS^j2< z3PY7j;SmN<7E=_J|G-;psuW}n(a+U2VSe*w-*zl91JuW?q3Wjti2Y0W8ElK@6<~R#{N;fW%mow zWB!?+ZxEJiSF3JUX9OW~eAC}rlFv0v3W{y{M?@ zv>;x#!scCF)W%e;Hh%pr0}5V|hBkya#eKfCC>`?g$dmlDJMyG;@M`zudef$&wB8k0 z=JBqF1a?kNyfszn&KB>kcC%!y{*fUn!d3g>bT%&NT4yTou4mDx`xbgDwr9U?&0c4+ z2}~)*Y(3KC-l$!M>eSw$yvjVdqXz9QL6>rP&NKzhzoZX;szLlx)$GLny*vZuqAanC zbOC`Hsy7|&faJ?BnD4B#FqV_hzCuS5S}Zp%0!~F&gMOv|Jfw5DmWVar8H7w%|4V87 zd=`Om3i>nQXh_%yP2jc32yFs7r)y)C5lcJSy?zZtf}Nga&515w#jZWj@^|O$L}@xD z4<%5H@VV;o>F$RAH2fIDdd}MoEWtBLKJ_am@7W4U+5;c3vESn zRgOBmD zb?-Ikb*@|Z_+#amy@nGrm)z#n$aMMzyInYUFC{6CrFs=w%mz%PtQJ8L_w{6x)UslR z7A0~-s^pOd$)#+~y**-hPgc6}Rj4w9JFR2Z9WwWq}o4P=R2TH;lh`>pT%f-=1-HB!Bvq$}kvH)bjLmO-zez(dm2tXUrM z(En6SJ^{R5i7f;Z%lJJJWo{ik78%2S!6G4I6q5 z#%&k-8b=6aVQTe|K@b&O=9h$@PAJ{}OzBw7A~=RP=jZdkU+ha>@=7$*^wnns>(o#i zPxVO-XW-lZJBpbvsbA~z^wzQPT-CGphXkw^CQ#tezFaV^7gsPfF1-GKKl>ho=i4{C z*G67GmJWRJ>O$|VmdC2BGXa!@BfhXF1zYE6IAWcOsrY-&#U{qy<_-ls&`!8Y$_Dq8 zNF75c&%PEw41JTC@$7VxJSqJ#txJ9IT3|QuXH$RLSw8GpKk2hrQwr1?6>joTG3Tzj zyW1CCn;*l-mSC0W$zjAF&v?0-_lV~8De~u8vC@3M_)B#+D9wUdvPQs;PGGLf>ZE@r zbbwEzo7I)d0p|rFy~|ddQp(>WqnP=3$@?F=v8PLQzRY{$&lx5&{j2cpY`hr(^)JP1 zGuLN#D-Q0?A6J~sD_=V97{MfRec%y%7cY+OWTK?t{JEtcD;8Oe-=){^Jb^k((;=I&w3)$}qZurNcE>uW-Gn}hEc zVtzY69D+|S8qaTz+kO^wW_5JyuTdeMPkt`ct#0?N8a8qa4&Y^RYR#X=&){56TDqle z=ijeVz`o6OuN;voAx$Os|{E)~Dh^5#*f`up})S zgAXBLxd(kb7V#R_3yntA;*)~ZK8j;9ZJq)1dxJP>AP!4CqAmP>+{(%-<=xU#D_X^n z&Ft-#im0=-9S|x18Tndn(?^Y08ozx}$d{tL^Zs6)?GUZe@g9Rf-bZzv&vuk%A7V|& z>%3I$ruSPl8ZRi-#uV_~{CUT#m9RdUC z>%1I8Lz%t2ydDPJPV8QcEMM~;MR<)KL|Va}fpgD!gR>0%YT+7rcX=S^g9IfKI!wmZ zn=X9ocuQ%`rseD`GFag%%goz5z7skkgQ^XiAI;0H*ArR3ZtY!8w3&GPCn{`sQs8W^ z?evGh`U%Hf{Kiv`Gk4!{;RD#5`1|E%*aOY-@U!$=TM7!aS*$)`eO8;>krxJncv8ed zpbaUWzSQKGde_8S>sDSTbAYtoog^4Hiz5wc^~!4CaX0WEMswP#$HRsCr-hsJ=hJOx zR?Q_PC3;YGEUeNiYklV3!346P@{=DM2`3jmQJ2SzT#tfXAWa7*ruo8LkUw5q%K#BX zWJpU+4yM4o(vBcEa(`0MdOS&!n+6H(c+A&b_~wmGZCyRpJ8za;*C#=3Gj&0qH)a+n z)QlXK*?dM~lY0cBes@;1{GPXI|N6$N$H$iKxi%SJB3h>l((ZAiq{a61JCo#qd;v~q zy6%Pu--TlJG)C1(qGqR4L!OS{WJ@QeF=^p3F4U~yYg`$_H~UPr$btg z2N{I_NYg%NY@h$E(yPg4ii|p4gq}vL2_cjif2q`o{&y&St9WH-FRh40GxK!4Pl{BR-L#BDm0a-V zx40*_UiY{L98nplo@CXt)rYFHDya?)Pu;z(kbyQGPZ_k6h=x0S?O98Z$BPB-Sxy{cZldX!lVubzBuE0n(3a&dmr=D&*1 zVD}=u2^Z{{8fetdtulZ8^z+L4`UiZ*?T0~YUkl#7d$;NGX*crXA&AY~!Lp{D?>cgv zOc;69XeSMMe0}}A&2=!hLKr`5_29}iJg!D$tseK~WAdUC4$VvZU}e&iv8AO2w0H^s zBU-1uOn(2{WH;`8-_?IuwA2w3M{JV=G8M4aE1R3~Uej{thl>Sj+mCEd-&?oY zcTyuKMpgs=#5^%ro!Co>ikdMGz3ASeK6iO*@py3AK#=j#7Vpy=iyIW`(3lQ{+c5JE zTL{fE8y-!T9RNDeJzilO)d@xuUi48x8SC;EP35I;Gu|ya`VvQorzavJs`R>&S*#8x z?lL!m*QTIZpP=s^lByoYG<|<4e15EYzNi}SvT5J7_);z|?`+-G5hTUqC#_Kg(Talj zIRXhyXm9SF%|;Gh?5Uc`zUx%y!>3 zH!NOhcSz$V3jbwVX^;nvI?M(+mLD&)pJTdi;iOgR;&f-v*g!dG>>-2j*X*#L&zY>l zSMfWWEeEqK2lhDhB~*-{sYR#vcj-Nq!})nmV7nfjpWih^ErhX$-?>A)d}>9(C=%+! zopwls?6Jw-xxBl#7rF6JxO^qMp!<0=%lJ_J+}(FaPx4NGyvp855yEexcxlIjf`g}k zS!AO{S|9ZAq@0e;&(BXjb;dk(j^l}%&+hbNsQRFbw$h70KS#oA|r^)Jc0s{k_Cc6rjm(TKhDTe=Ya$i}V4W%e&KGc(6a;!#H< z5S8yI=Y%j+m%n^v5fks3AYljb;|G@zHVJD@%q%SGAg;HXnwn}A!XD;3TVTe6THaXI z2Vab+o{gwN4)-V@Mnz4OyQCMbhWaZjD@*9nVPOsB6p*zdT>Wg&xD65Hcu;Yx*#n2Z z&h??2gp{=Z-B#;KnY71O-PFajF0Qz8YKFYy(UR9Cx#7Po2X|EZNy z>U7PE{F+;;u(Gmpr~zNX7$>=CbJJk|Ts9(`BY+6v zm3vM8RH*oW)V>`xA43X(Ce{|%J0+dM zlirBYpqaJ|^yUpb`qpg3PQPOLvFfd1gS&s81Ok6mwYj+oOx#b&t}e2ngUH0>WbWs> z$pL0aEVf+pMyf7C<{nc2EqT3cIt&nWy?z@Tz~JtFATwn*V=-e}PJ4PM$cWV5s6>kou(T7=DrL?jnQ zw7L$-xUn58!Lo|d;JxxS^J=Hw`l;#ZfH>rWCY;Yi;kezI!*Vyjt``hMX&z2HC8dH&|bByCrSMGPIK&*9+-cM{;~=3wU6dZT)@XY7F6rr0 zMiASS;w%Xh=VS<=>nqNEPr0)C9l+k%*w|Qva&V7+J&Is2UjxY72Q(SMGFx`QL~y>u zi($d)Ns;5@W4lcL7sGBZ)3Gq_-%}nHHbb+s`YLCo1}z4(*?V2(_pduXs&ud*=}TE_ z-^^9_oHkagTXCp#r6502!DTDaljcLZgXd4wS**vei!k14si+V)5~Rl!V}^p1BkJmS zEJ&#F0VBv+b}ouuT|6;n?9IYZ0@>G^$K&yM$WQIjFlUiFc82XmDL!gCMOT3b~% zk`*@_etr_J_{{OVyHt2Ct?4(wh$zDQMC(r1Jh5O-dZ%2KLTgN{3-DWq5xNx39n^MK$DLke*ftc zFEkh7rhPC!;g~{Id*Q2)(^`$kFOBD&WVOj(AE~LGYunk}H#(84G^ZGdnC7nO5?!IW zYM@e2!Bfay*K&Nxzr~=?oH-uGhJzWFsY9v9gX}Z;Bj%W}up%_vg_#6}r^TW7Pe8Ob z(z^G?$4eQ#XPCkuY<3Eus1!7+oA1OJH9R}3;!IBl4Zk^E7pXTAo{m=G`T#?&pi%A? zj1Y-|MlHCWduA6~cSlc8kGa(IQ(a!#qt%^3)hNw`;go0b>{qThqDqa~x=Y46HVPV*S z+mUhi&=8#ox*KrdLBfD>cwtrNX_1e~w5+u2XkV*nW2ai<;;ksg=RgX+N-8W>STZu7Q}<3=T*1-@*=`dAtxTj4egXP8(Uv!K|0VO%YH0ocZyAeKqz~MGFte(Rz9Sm z^%2tha+7QY>A@en)aXBH10o4o8`|Yj;!fR4ZVJRqDlfF?u`7bd-$zMlwEH79??C9e+&a%%}d@hh2g#3NE%d>pc9 z8tP-WOp@^+8ZZ+}g}C=YHlewsC^*=oIfMB>wcn2=c<3-pTyp92XnuZ~7gFDArvBxS4%j|O1AIQ zT8`cDRhX(dpQ`*42b0iyTlSIF)VHP1t0=P5G3W_lm(8u4f_jeky9@7sa5(AJfx)g` z!eLg{vlGmfVj^2wfbmbjkuNCC3?03xl^1@IhC{D30k`SAgh%KZzF&4tgm*pr5@h3+DbvIJ z?(MKfD+?Ru$vpzP+RcvGfaD03%X%Yatm26dqqA+TH!l|o*VYAvHt)|SO7cGGbq~}W z4?4Un0cHH~S~PL#&wUy~Y63w5K8PSOA;Ez1#1gvp<{PRD)mS^8?MI z^0kL(Au_I3^e4K%BttK=adrTUQpP1iOyDI{@6e^#GRRBKSMR%GQLKPM`yMtcgdcV1 z`T&Q#SO}n_)zve4jKDeGH+)5SLU-;VK#HXj=Z$o`mViBoZ=^-;75m`x&J+Zm4xDBwpW$=M5~_9t&fRAKqp!qa6eD+CAHH=auHGAT4*{ zd=nuCCQ-{>aSaU(*OjKbQ}gq7uVArKU1hz}wMH49GLLk4xu5j%%IZB~iSJ->l*;Hc zv%}sQ>gSc}&L(>SNfLZE9Jl>#Tn$eOBk8PEYlqQFc;6q z{GRB!!~J)y><|+kjU?T&ho=Y2_-paW$<(hcYf*B^I|hJml?@3FZfYujb zZMp0eig_sQan{_a%kKWPk7~gz20AycKxwZ+?C6<&kN$BEntZyhTi(lF-+Kat%G%o6 zq#%MCbdp*VZ{B_{?vd%TG25cZg&)nmd%Rk)v~zShVadGKee8{mjm=!Gmz6}9lQw_` zle7vjnb!5*Gh+~y65JO;MMLddx0oyyGdO4bDLLf?oqIC+o{h6=3su9ETOxJ%jUiMA z}KVIs~$XjXJT*Ac{ zn>iX6u-n@(Ji2a(s=v;ic13AW*sP}7E)l~(wMjJOIenh#HQfjC+*jHP=;nwzy?1ds zcoFeIV47VLnN_^{tT^lu?vD`MITQBY-6~k8=TndI7(LV~;^mCeAn+&MAR1{f_hQ~8 ze}VzAN9|Y-h#2%p)mhybA%J^3HWAA>*=`Qok&uyzZ*6T&2ZV_TKug-%@U82vIYD0s z(4{{B@EpgQgCc*2xMUPcTDi98;*#Ti}%QA=`vs2lRJ1*ZH3O!oN zxX?s34oM_3$uEz83mnlKWUC@A>!i84-S#un!^z5OI^){&&lWj3Ij-FfRlk&7$etj`xfbf^$XujOe|)bBU0MW!IxQ_N2?d3R!^1|2NlB)Fk_Fffh|P!i-(=D< zOk4O32)M;wf5g}#h)o6f#NTMNz|g!F03MIp4nKp)feUw_ zTp;o`vvXsOdssO9>dRZ^>>aY(YY8g5TuqpfV(G-HD}gqHV58qHe*1Pu_S#W|_GtXw z?+*k#Ayz^aB?c--KU%VPwo;OkL~l2T{%!%V%w+i9*sWKKAOiR1`mhSl$y^~W7|Rn` z@bkV_;esGLqnNe%)w?;omzcuQi|z7rTJV05_dGRyWd<^p+Y;bVsH(`w>}x;@YsYDk zH6}vW!ER|yP1rgSWW2ee`_wMA-Ne6$;-(*cpL0WQLbX?+XU6dGFaZh<5)$q-=$F+% zLqUAe)`-40z~L-vdd;y)hkEJtkv@?Y^(>kolMp>ZXn`0Y~@5Z`k#KB}d@e0gqvB=0v}rRHmZozFFxPp5Jn1OYCxagEdPt0LWbVEr#d>^tBeyr! z)--r&J8lT%{76YoE(d|kEx^m&Ty*yV@`6nCLy0amvbge9*ca`vK&FVn1Ux2{jd^XF zknhah0PvwN%nW~qDkW=j$2ca-lK||b9qa^(z6|k;+0GQD)3-eE#Z|lN7=BKPB}gL0 zSllp0zR+T5qxJbZ$h8#-=C9=)CDz$@#vk0t4M`|pD+CV1AerQO3=98m#oayOklE%i zRc{RDNXc=11H`4To_|feEy6e$%(g6?S=?_`5V1_qV|@h2d^RJ{Y}%B!|_Hhzu0dKU*Hg4kJ@!On>cKW)Tr zDGnis&<%pgo&=7x#m?^$dc5C%qwEPCKo0RsS$=s^m;ajMgHzJ?PWMD>KXFkG1Hk41qZl4&x_ovi?@ly$9J$>=ngj5i zebng{d+X(@T=kg!)QiS~&tcLD0Tsq&pLm&ARsKk0|Ls_%<6 z1+j+t*fKa0PIYI%6!#@74i;66qXnrq$8BKa7gJP@SB$I_)?bPecQKzZjUb}(ap4Jz za?8()$@;3dR|-@9X6o_wAgJ{nNb6e~0yc%O$EmZy_&FQIj=77mYhreG_BQ>akIn)) zfnOB#M#z0Y*FU}s-mtX1^JY10jtP0n6b-~L>1cKKw_ek*SW;H`wCKSwJ~G#+m&1N+ zI`HASxfCFLksJ@=7zsMF9Z)%0w`kMK#?gLs@XLPOv*h2fQ8!)okWUlOPS5pYOo#VR zS^|6c%4DJGCQRGQCK;Ttq}%?ze73ACEUS22E^SX-s(+&=3T{x06H5asgaS?=gL#uP zEXAVZyt>%?-r#12*vvUdueSniLNK($aF*T;!>6#v|nocv#X#_*3zk?yKGQ zOa7A~Y$YG$Lx91l$D>QTl?T^UKr<(s4UYS-%dLFM$Ika6Ie;EY2alGZB*LN7`(19l z%n=^u6~ogfR_QgBUodd}C@uWM86;OGEbs>K;~ed`ex+Oh9fn3A=x!fdw>=;%imb&B zyt>RueSMEO_d@q4UEe;}b!l0YV_KiC7jFvv{rw<2U_josWoJN9{0ck!-HT$qtW8Y` z2+eI(!g<;BTMQv{k@b7P7m1vGy4CvU*H}hg5wa$j;n{OwTGen%Q-D>Xm>oeS!iZSlJ#&_KZUxLnTsn~?Y2Y4w$3JPL5++J0juR!6yhT`X5XU{+jbtE1ZavRtAowp)l9JAW@fZvq&rnelKk2JD*NaBI^afIeD^KKOleEY$*BoDltTdgI zJFZjB9aMRYm-8;4egS;lxj726G5L1+TLQ;jxv=&u1Q&m8K{{bkX8xnKW%YsJ&*4ae zbWfGuTB-o~Uw%`Vl8s`V%5`}9o&EI~uW2SR+tzQ-Rin;({<@U6lb+)Xf){|EuFfJK zF@n7%e%o4vD!swPq=frK=C{>y5Dsiv2nAO&i0D0Kve;Qzj=pT2&2E9ktU3ZNCbn~r z@-5}qgSwG)j-2O_x|bdiMZe+2zLuxPby7w_JV9chgdL zgclsnyu;rqQKzccred02E6S{4&>vrmW1K&fHL32IWa1sR(pES3&N8BoGMZaj&R(J5 zt#=N*4_i~fyv`Rr(SHwCAp`i`v#SY5ewnn_8bgk=J_5eIxKY#}kV1AscEGzBWELM~ zdrgl8E&uG#N=Qqi@ft6;;h1X<3m7r^S@0cFh}EugB297O3}i_1T$z&oMjbcwm#%8S zWL{9WPggrr0CoZP=p$e^E5mkvhA1D--_!OY%I3jhdVluw#$44yP!tHr#qTv<9it$V zcdN*T{Sk5We6n@&mzDy*fBkyj-mcdDs-pE+(K#4l$$_W&%6j7BMp<8slVdnaO_)dFEFU^ z{D#%64Q}zqACKqUGV5Xjl7Vy4fv5F4rS>hE0aTqmWQ8v;@|pXGS~JOJ7Cyh4Ap|y; zvbOg|x-~Tlo)f{adBgW)qh9fEPD99<5FZaP*fbqpLqYn-c=YOP9>ZOi_u0LYbZ+#w zfr!**yzoh+tI#(9=ckxItpy)9ZX0!VHITK=>xrk#$w`XpdFal|(o)Hd<(C#2j(=r3 z45StIxI)H-@FCuIE-%4wfa?kNRi7upzEe?Bwg=e&P>Pb0GW-13tBPD-x!h&9MLV{i zhFt-Z!PgQkttzC@p*@NqvDhyv##9ihg@njTJ*SM1kLL!naZ=c6^35Ve_6biw%`hdF zx*m}g9WGG(J*f?jv<;qgzLSo=d=q|MChN^++?SD&o%0OayGQw6JCpIg3RZ=D$!j#3 zYyqst5GhqbO@q_Wty^uSaR$I6bG@sr-BVPnd}Hl=BJBYX^AccA?|$v`6w)0Rcukcs zKyxhdLgr{ijfgP)y3xwS%EV*g@&<>c{f+6%7RFJ>BYAhTF;n44L1;lL8gmqJ_sB6t z`RTKPgQ(zf<@G_;qtYIWt%#75KT9QS?*dn=@dA0xe?EjXpXE@Lx1E!$8TJJ+`>H)h z7_tJ{rbVMannzb4vZi`2B+$-xJ|MB`@=Wlw7spwTw#xUg-1?1W)r+vkbH%mXh-_3e zjp4ImxZ_j2S#EIVrDy}tnbRM}`i+rpZlR_yxq@w_s7b&AlFb3ITxMgU>fRf3zlZg9 z9mwZ>NmYAmvPE;Di+gcPFX}^m8=`ud&d+yjGK=d!ycn+2E#`A(4#%MZChOmJw&5cK zD7BBOYwPO~zd#lvC)DSrw{TBa?OGB&&`@<^%#$u%5wlcdn8$sJ#tAM_d`*?9Sx=Ik zZJ0ZVl+Dq%Imnt*IE$4ar2s zMv2MPK@~dAG zrwG)23Z!zE8w)C(Zyt?`KtV~{$qHJ#o{6UW=i?|)sB8*Bcs0(Q7;>FZj`LF-_qRmN zW=-x=?zH;{ALtBj=M6H=60hgc8yU=RS70*TFqn=>KrjC4mz_KPlvc4Jo5DXdgeA;J z2?=ty3*IZ21j()zi{T{tBZ7>XMzwH{9Z>U)rrT=>J`sW17k$cB7zt_~7y@@NyXMF7N|fE&H=yr`@4-Q&tw?Tl-hatb`ytfeA&l?^?De*-(VB?42t%T&4)bR0E8ZeQ z-?-OG6vRC0_tJR3)yWMV4hc3;?z<;G<9A4tL(D`kH})`5ROWCqkFAh(=S2hHV)CMD zON=L@Z{(Q4`m&wC;Bl_fhu56D0O1LG5j{FT-%i$Oy(dw!16Xr@DXS zX7b^Eh~dYpvGyyRsP}%>Fl1#wH}#Kdd5N-^SoINb&yb?#YC$w%pdL{^=XJHi$dhm` zZ1nOGELKB@3>h2Q0w2rwSeO-Kr7SjOC82Opy|vlPdG8L2<{1sIc}ZN)r!CrO+USDn zoB+2B6GUz?2BhDH=}F&+xi_nk6^9^V`nTeT%x$+Kp6_}K!{G1 znw7N|!3b5BA-qK2^-FPo!tvq+XRLoa591Rl`CP~Q-R>9Fo`l%jHEu?muosNL zdD(3@4o2Q?29SmLQou*ylt)?yhO}3aJ&Cw);_07!2ATeB3E-rlwc zZQl83={T+GV%%}<{vVT@kz++Ezzf>>S;8(N-~1^9Hj-f(@TxM=$!8BvDbX~C+`hC| z>l1bPlb$+}qi?J<8I8H2;6TnXz6U|7o6ireHj(H#j`cr4=p|rShk}TTF`TqXq?bl1 znd7Oo;DRIhYaLzdmmqjbR-&?DCSr-Cm;h=+axUVA!I*~@3kuXqBu=X)w-<- zF0t0b$5bXG{GLfPKs9e5AW1gS)-#xG9LlT?{SC)QG;52gLy7nRN>yO~*%8n&tD3aa zb>5vXu0H~#B;f0SvgePIPX;bl(OaGv`8{`8Q+QQBW`;s~Ala0G)Gx}0)P-0m32Rm; z4B>f={!O2VfichtR6eoj=P&4ZBuU;S2(=$F-@b|zr0hd-vryDX2*tpFu#e3V$HXrE}Jr3R2lZC)6#WDtC&<8{l(hqbn8*Ck=P#d~0S#Jw2 zGYR$HaCb0=?+&o!yV>b)N9)!(0(|X7Z7oA~!0hB?SjM8<;O_2zHb3_CtV*(VDqyBv zg?h{6K{Hv0{R)Y`@`efJWvW7;)8}k5$xmz_)nkq)==Kw`|LL10PrxPjX-NvT#C@Oe z#W0jRO%R~7oauy)F~KR__k8VSvf{cB(9(9k>)g3&;T+`9aCbz zRo$fp`BEU;-vL%umh!cARjl{7%7yQ?s(;+vC##)7ruX|pWb$Gn19@By&{X{lm;+eF zF~LgAw=VH4naMvS3{MI%UtC<33toAaYcz<-62#cAREk{H=pOGxZM%wAhbnWbNdol)Ht+3R z-6Br>2cYEfJzjma4TMye5{VV7-80Q*UVZapgK`me(*ntk9S%7{1xs~DXh370K1GQ1 zA#H6rnm=jfA@Be4uE-AXoTvm4YagQj!r6kc&U=QHl2xAi)6$UQQ=v-KuI9TJq_ zrW`;SeFqxtnVlhqs0XDz-&PKt=tNw20B9iEhaPq_iAy&Z%jgJ`u=cW`sc}K~xFpO6 za2Q_7EG9m|u93XHA7>&I2Z$gTaz2b5h!y~c6QMdm+ATr(tk{CD3HMj6i?wI26rm_z zGb6L?{rPIZmQq@9nJsxyZ3OXQ(GOrU1qC#6breafIwfCvnEZXSxdUwyoQZpb7q*CL zDCizuQYNKW2S|2Fl>OFh3-C~Y+<>rSdoZ1Y|c*E`Z+v14b4=26u+0rpWuMC4daz zu+{c4TBX5jy6%Lka{>avp|728^nOmRwEwCp{}Zvh5R1tKO#6~Q3%I`HaIZ_4x4HnQ zDU=3TW)GZED=@^`KNHOOG!#gcSsHY(w6ri=ic3&2X|A{08X|S@?I<$fQ_Ju z+D(itp_zk7yCL` z=<1s{UO*=T1e?V9W#jS14~sEio$q%qf~CI87pTLT{(4i?J2R%!^3FwNNR`(W6nuTQ zCqJ$h0&n`snCOWb4lRZ+pT`#zZcgs602U@GylCOx(@_G)=`T|vfe7JN~IrP ze;H~!T@vq&r@Aurc5>Ycp{E$>>$`mj!n7Pqp>#_+pkx#kEH7UJG6NJGY*8RvkzjOl z#M3`6<^2mz|N7HlzXU@9WEtFy1LlhbENn;JhF_ida&uXvhXA!9YvTO#Vhb-#GzvV6 z>s!j_GOck0c5_hHPvYzeT;Rx$!8%{vq46tD*@a&n7a;@mt=gz0zu&ErS+Zw zKEG2U_ENTv;X;PBKN&b}GG0?yU49}s-|es^h7S&s;CrI(uQ;xzzWx^JEg*18M@`gv z+%g@BpAsK!EqFRsqc$x-OIA}?m&{|g^75#aV?g$Grbr^tsR0>Rr(Eb*%&W2W_J%aM z&|KMp?9!xsER`_r15WmoTT4t6bA*6e0E!cjF)VpriP?zRV*=rB-sn%MN?a2cm!S@u zF+VR?wlyQ6a>+?_21+zQ$4d!>%}>ajq~3r{^41|>fJcAjWUDPNFeJnZz=2-4FES&D z<&)Mn+V*LVJL^>psM1B{cPK{RiGaF`hJ?+O!*RdkaR&PN=6R5|+|E{Mfrx z;ao3*A!$25G7@CYAHLsnJR%alhTR^1H`FctVFKoc52T$hFA0 zX(()VmK}S)FWPB|nx{dhrl;($i$KK~p7Uh|u+v;Q1^`#m=C{TGxZ^H;w1_E6lnX0T zjAIwZXKTZ2-K`>D{{C|mF(yX6p*>wUJU)Ia35C7xk_hB9abU~6l!--`V)e3Qh;Ny$ zzaRSgRC+a+OTE)D$DSEbmSYkYI#ZU$yfu=Y@igv(hBv=vO4oVa>NB}QLzV|$7e!{t zg6RWs2*APxGx`>3H#%2tx*dZfLTnM9?jLtRZ5!jce_Vr9kGk{MC^Pl* z>0`Qf`SRVT|4?cyinrCIw;q4`np~G$6ZzG`M>M-BqBqfPyA!#h%^rqT28_ld zZ7r<<8OlYau8Gpbs<1@Kn?lT~Xh%xeLp79|@8u&TJ5ZJj())ArZhy17<^?1%c31*V z7}CMb38q-Lr8Zng6PVEPl9MyvN$sl}!V=6K6?foid_n?2e%aZ}E>3*xJlnT}zv8Bu zcjarQqE=brZ2OFLUPNkqbYernTz;ML#wRuwy$jGN4mD=!mog1*h=;oT_sYx5%c#UO z)yg=16rQEd@7P5|MOd|i6Qm(E>v z>Z_-|^=&=#I$CpYKmGW_8XbAlgkJN(HCHOAFC-F)g_%r74}<)KkU-Oc0>pqXb(mTd zoD0~tjY7VFNYp}0CI(&CAS+4g04h_RB!uuVIx>n~yY^O`J5edI1f&ZniT3t(aGzsn zcnAPcDwW_>(k(SjLpGb;@Awb`N_7xQAbbzL?^SJH#u(D+6od$7hsa9L5o+Vwcy&nN zTJ0Y?e$i+!0VOmCbX~8GHtM=w?FmAyYnmqF@i^k~`2NwzN{BGDou!nO(M?gwwsWe# z4+JJgm}4D}$E#*aIC>e3fCl;4qoXd){{7EDG80m27#$hLeLwjJlyZ9mlcR|rFs0K( zI|?FWo@K@R4U@bUwe+8+6Y&Rr_{u3r5~PwTIIfR@ z;Q=Up0p=aM3Jbd0p_>dk6e1}g-C3EQ1PQJr5N53@K%qiz$)Uy4(35cxRS4p^N`eUv zlwX18*x0>$_c(K+)()=?MX7KK6D3fJ1`RE!B>+J_i01{_Z>}FS97YLZ@g$h0L00A- zdY(V7@o9|06C8s3Fs=XJ-nqosm0jogTl;a&eb<95l1+BA^@1L)j+9s}$x0_`13{93 zGO!a50s}#Y0hEb>j55hU8D!+ZgFpiV$xKEN$bmBm5*Uae#IVwO*+SG3t$vfuCaYM* zs$2JY9((VV!9KTGY_$`}Yyn143t(4uJ?_1A&%gKn*INJjPmiK-9pD3l;edW`@JPdb zCT_|=Yuj*k0xXw{v)3L&>;@0?EIG@wlaUY}?aF5tv8!ZkI-PCXp7Ce}Ob8fjAqAop zR;|Mu3kH^L&2Vys#q2KL^|C%&4UiBu-DBkIlsB3dO@Y*|I1|8-b>k|E#t5e1xi9@w zNDX!zIDX@gaSttF*ym{ffO7I-QqrQFPyt%5{Uwe3Z{NH~2U;fT-|L(u}7k8fo zj!z8e2M->k&8`q*l1yI$^pOmtrD>MBQf1Gb$v>W9>ph)ShwV^EL5Jl6XF`wASJzYsalP8d|I! zQh0}u0l%J2SuKw+BKV?&B%n60b4-4lQp`IwN71eT|^cK^e=yuwuRHhjQ+^5oZn|qUc=cD3WL?^f{1Z}AoiR1luS+7>i9=y$>s&GYth!UD5Rw8B5!y3bQG~nvqB?{*-Mld*x zDJjbV*ROAJ-6)tW_pojg!$i;|rI3}cI!EC)?7A_lzX zi5iiJh~f;?RRu9nq)3VlDK?-1lPY5M08JI%`Lh#ZLpwIHIjJ@r+IdG3%PJ&RYvIz> zk72xr0BwxS=0~iThgokT!sru!55IMTqaS>O@l($e6x!)ssE<)eSQY%_8X>f>JVE^s zbtTfypsh$r*}3!#DG0HRG_zx#dG3o`y|hgT4eS0TZr|SL@aYz43bN^5h7gGB zHLiaH5yN~j=OZ8ALE8qATxXx2+#@zM-W8Ax?cr-whkuSO`}pxLsflQPEAJi2f^!rf z{W9|K9op&#Fu20##&gWy{4O;6h#DrlA0eeB#=(O-KV>oBVgKO-XAKAU_Bp)$Q|cyg zeE$~xD`Sdsz|JtSx4ZSkj#3{)9olYyv(Xyl!#!YK$=3FjZWhi{H%kT@NNOqj+c;BV zHDYX@_d7aSu)S46N@r#M?kPY)q$R2$B*D8LF-4L--X@+-r|)}_H4gyh$!{a{`aRlq zf=Ztz7@|0=Ef74BT;a~06UttX>(}>a>V~RmX_`cT zFd&A=^rY&TXQp3AC&y${ROtp340MD^MOZAB96WfJltO1$K-O5d3!0N#42l-(gwWOOEKO?q+v0iF&T|W?HXJ3SgdADAH13E8%%-vUHUgZ&HVn)aF;*A z%Jd1#`?N+d$s#D_-t!E$t`OpidHNd+Mmwl0v071UM4V?ZzD7!cYB47^E%W0COz*xy z+eSnS`okf0d(w4gYrHiK2A=K7;LekR@yP+Lr1RQYRYgtSx$0`pgLnToTaz8u)f%%J zF`PU_={?r>Da$d5fGtLdf%#&=VmV~ofA3w?6j9}${Kn_l+wJr2yNCSy2hVfs){j}P zmO$o@>-Cym*<-O>oK-K*xU`XO(xgCiOxv#T<$z^OAO+48IPdU zbdK$v9S(;}2E&plj%5|W#IA{=T)i?OB@k6_C_GEoX!Z%Lz?Oon=;+X^N!(cg8Z>l=p3+Nv!I2lTGF;_ z6wiFVV(apn6k)lXaeVOhnY}}A_i0Yv_z{I$qp_yH`yuq|hghct);Pp?#Pm4$;U6*> zZIf10s(L|6Eh*M$4ES67#5Lo2wIoB(UXxohu*1JBJ@cmaCSgZtz7P;|g4FOtrj6YAXqsLmsu5A&2v|;S+8-%u}TX@!#;{)jc2{C5Zh<#(hXd1 z8)Qf#(ySXK2_;>f7%08P7X_m5aQ{t0TycWpyvN+Ooj-@gmY&|=8MZHfn3unIgfW_@ zzI_j4J%iCDirxqjr3owc_wN%@ONuQi)Yzy5XK``~0ot~v4GR_z-y~M2h$#?jX+xsi z)OkfnK-BaYkk9YPoB!W@%%w_bLyc;r=#6>saK^P84M|{ma-VuN&9j$cD0cQx>qyNC z>2DG1C84eeZAC~8m_8;wq#R60#-XOb4z|$s64jQNT1Mk*VEceD*t*Kq4}F1?yMKnp zie8cMu3@P#+W9csd(Wfvu#y-J`|Ru$cJ*mk$a%q!(fpMQ?$Kk+Qz`QA@C zo=<5PbC!z(X7iIyQP-zeZXw2j8KHK->2k$#xumL=lx|530UKk-`5T-wxxR{F`_eN+ ztx2f{iKGxAW_}*pin>0b4Of^R{gkF!b~GZPcy_OUk@2OQK%%bZgcuMbILX7grB!Ty zC(|m;e7{-Gm`~ru*gn=YNDGL^8b`>-AZMvmY0kW_(Knl?}^j!@?jH$-|Pnul*vAHNMYFLJdrQnMm0h0NcCYIZlb1yX}*Vlcdd zH3bj}B22FRb$b1)ET?ZVUmjArl76`jZj#?KUtnC#*4F6g=CjxDJt-bP2tXT6Ki}*T z5-|l15BKR81yK{z!z0E!`#kfhzeQmRdV?K~qG25u478-F7LIlt21XFBaHcj)|; zunHkU*`J`sGMz6ei-LoLJ0MC(5yF(?SHE?3^)~9Ntw0KtgGI~WdzU71htbwN|t zINK6JOIh^uvApt=w>V2T0d z;4)SUW{ZYuc8Al4w@I68wgKVh_kgk}`P+Z^(8vfDZuB&bhQ{?e@xZ zRTnjAg4KGBFA5585EX2SXjr4J1cdRYfD(kUzomF%;X7ffK0Yv~~m7=he zg{40z8I%RRBKvn_pA5lRmwmrXZZ_;6PPzABL7NgA@B8eDmrxO$8KMagrL9})`joag z!8%B`tALnB zalB~w^z&arQ(`!ImV?``WbRug>h^%q_OmQzHOpD8qswfRD)2ix9dEM4x z&S?aph+$2XhSv8fMm+>bB-ZOCCbkqsiSs?IDe-3jehU>Pg+z!A%h@q)2rL&%Lc8X4e!_Y^ zqi$CmoCczOiqYBDyzjd$r4 zj&f&*;b@zXplT|d^Pq;w&Ly;7(C-(B7obMyb8vXf-lYLXwX^wx&1E&6Uz|v;E8DE1 zIio(=C}yK@(@y_jv96%VHZB-rX>5hF4(~&*Yj+|b0D~f;cyIAu@h;PiT+7anozU*W z2q_A0+}USQHIISMSP<*!nG!$TMJ0Arr6r~{)p|y|4z%kAF$v=m)-5Ufo{+NWNzNCZ ze}QOIAQ;EupS|9JFH@brmb;eQAt$wn$q{W z`A8+S4I$J>QWlF-o_qcUdgC#YAZg4!1wOv49CM?Un~~Cd})+v{S6oMw|6ft;QicGei zW;xr(T1QH4UiA!UsuS+tKY%D5zl9CMGqy`yjC6*H9nibP&2$N(5reT7YitH$2m0(i zmk{G{KDUXJ=0sLCf(oY7FF0p#HYbS2=Es+=#=GI0s>MUmk&v;scvl`S!QJef^zx-ucbxbo!61wa;&DZ50C#&EcO? zb-Pzmo6Bf!i#Q%o>|O^e6r)|F+(E?U`Z0p0il8-`A|XaX?k&>|RREoihE0-`!If0I zT~k5hqn*v1^Kmu;x?$bA{(z;BUocOoh`Vx z|KMErt|L1skYdDYL$H0EfYF#=e7k0K@__YfhV>;zBi4I*MW4}VOiW5_V}4Qkcq{)e z0{8inor*vbG*qnW1+$}984XHAc9^y;r}In^H#TLPQ!GDr*PQ8Ow;TFq&8E{SSX+`3 zSW)@|i!mjuRfRE$L9fqvJYsieoAGGKXgr|omEARp#E^L9m7j2M|2~&@-A``bxcXNI z(4YCtXUwfzw>~+W&At*s`1oWp8Kjg#3W27rCB5SHf>)kmCT1KjsERL*~Hj3E+H8bp<9cAMj)KHGd0@g*W2y1RTC zlig2kXC>S{N%#In5Xae5bPXGo28%%r%v-R!K*-YE<*MfJWXhXwzk`zS&Qlfz{Xw7c zXvFc!A^9ft1B(}5eDU&IZ@u+`sy;m!49cpiB!t?B5VzYV z?0^{~Y^mxM)%a|TaW90nOlMB@U423~=HFSOc{T%Q9s$=Fi?P|DT*P2(aV9<&>kx5> z%_o8wi&%pgk1=I7MK>O?9xFv|=~|bMU6TzIt#sz*k|mTzHv|K6zdvoZ;f{9X5}_g; zJ;*MF@>7Uc{`EPHV_H5#1 z6Yp(#pZ{J=G1uBr`emQtaDwk`A$G`UxJ@u-(S)#Qs(M&A&A>Tljp-w%z=#FwFxKLW z{{CRH^@bQTDsBI{#bV_*gSIN>u_|J=Hr7q?^sxn&YwrdtL7k~?m8Ja;Q2+ja|4;w+ z{s)1<4;0YnJz*TGQWf8ed zw$9y4DP2h^?MU8A6lji0{H?QEaM59d|ve_HP_L4Z6`ti#bau=`Mi5V7$jz zhxig_`xraG+7jbRY%#>z0`EN5d5rUjw-nxEZHcp+g_iyDFedA%$(rhF-O{vkVtoR* zt{!X=fx=p>&*qcO^d76zA5(b2U#=%`n{@Z z{%ANH9`Eh#Egn96`1Im*`J40k;VGA=1Q*|{qvKDCr>5KK75ny zOLss2tH1WU*Pr>=?dkORg_r-=_x{&E0TpoPH z1Wdl`p?Iv#x(;ItjO$^%$NLiJJkIwJ<7h*RHZ`$rX_^&ns1aRb0ApO%yO@%;J!QQ< zK5LYun9dAy;Qi^wd%t#m=5Tj+muH`Smj0lxG3obbv)Lcd=clXHYPr9?vpqA&Cs&L0 zjfY1^S6A!xR*Y#+jM)(*Th2M}eGlh^OP4S4iI0E$IHmMEZ@u-_anj4f4IH9{U2}r?2YgLGVt+!@mCtqzes%U3!gWO#lkLTbH7|H2kZ4})HKaNRePPE zTTfLBps%VupdjZE9>D<)#dlxdd@Rp>EJdWRssj=FK&i?Qm;hs--~C>9S489sZQK5}^?H4!s;Z(Wic}QE+*AHk=i*|8)KHvxtXfYopZIdwv92y#bS{{2&o%@u+BN-y_e4JK)d1M z=)G?w-xpE4pRv7OuRoj3ZY~y!r>d$dRCP5Tj}Q0u_U>H1e7SnN(0i@1o3xQL6mh>N(0i@1o3xQL6mh>N(0i@1o3_@%}F0U27t UmiP&%bN~PV07*qoM6N<$g0{3IH~;_u diff --git a/resources/profiles/BIQU/filament/BIQU Generic ABS.json b/resources/profiles/BIQU/filament/BIQU Generic ABS.json index 8e3273c097..9db0d1dcdb 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic ABS.json +++ b/resources/profiles/BIQU/filament/BIQU Generic ABS.json @@ -13,8 +13,8 @@ "12" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic ASA.json b/resources/profiles/BIQU/filament/BIQU Generic ASA.json index 68fff18155..b0281bf899 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic ASA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic ASA.json @@ -13,8 +13,8 @@ "0.926" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json b/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json index 98eff9d182..55344dfae0 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PA-CF.json @@ -37,8 +37,8 @@ "2" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PA.json b/resources/profiles/BIQU/filament/BIQU Generic PA.json index 2acf172d8c..6b8db4e32e 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PA.json @@ -19,8 +19,8 @@ "16" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PC.json b/resources/profiles/BIQU/filament/BIQU Generic PC.json index 370dc31378..e70c31a11a 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PC.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PC.json @@ -13,8 +13,8 @@ "0.94" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json b/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json index a6b08bdea7..0d72df1e96 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PETG-CF.json @@ -82,8 +82,8 @@ "20" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PETG.json b/resources/profiles/BIQU/filament/BIQU Generic PETG.json index a30e7743a6..0a358a7580 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PETG.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PETG.json @@ -43,8 +43,8 @@ "; filament start gcode\n" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json b/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json index 0bdf0090ee..9e4f780789 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PLA Silk.json @@ -14,6 +14,7 @@ ], "filament_flow_ratio": [ "0.98" + ], "slow_down_layer_time": [ "8" ], @@ -21,8 +22,8 @@ "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif};Prevent PLA from jamming" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json b/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json index 0335156d33..bb63cd0324 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PLA-CF.json @@ -37,8 +37,8 @@ "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PLA.json b/resources/profiles/BIQU/filament/BIQU Generic PLA.json index d3616b441c..fd2c5ba4c7 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PLA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PLA.json @@ -16,8 +16,8 @@ "8" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/filament/BIQU Generic PVA.json b/resources/profiles/BIQU/filament/BIQU Generic PVA.json index 21e6f93526..2ce1334b7a 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic PVA.json +++ b/resources/profiles/BIQU/filament/BIQU Generic PVA.json @@ -19,8 +19,8 @@ "10" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/BIQU/filament/BIQU Generic TPU.json b/resources/profiles/BIQU/filament/BIQU Generic TPU.json index 3aa5017b12..a218690d45 100644 --- a/resources/profiles/BIQU/filament/BIQU Generic TPU.json +++ b/resources/profiles/BIQU/filament/BIQU Generic TPU.json @@ -13,8 +13,8 @@ "; filament start gcode\n{if (bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >30)||(bed_temperature_initial_layer[current_extruder] >30)}M106 P3 S180\n{endif}" ], "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" + "BIQU BX (0.4 nozzle)", + "BIQU B1 (0.4 nozzle)", + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json b/resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json new file mode 100644 index 0000000000..52653b3b8f --- /dev/null +++ b/resources/profiles/BIQU/machine/BIQU B1 (0.4 nozzle).json @@ -0,0 +1,86 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "BIQU B1 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_biqu_common", + "printer_model": "BIQU B1", + "default_print_profile": "0.20mm Standard @BIQU B1 (0.4 nozzle)", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "235x0", + "235x235", + "0x235" + ], + "printable_height": "270", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "deretraction_speed": [ + "70" +], +"gcode_flavor": "marlin", +"machine_max_acceleration_e": [ + "10000" +], +"machine_max_acceleration_extruding": [ + "1000" +], +"machine_max_acceleration_retracting": [ + "1000" +], +"machine_max_acceleration_x": [ + "1000" +], +"machine_max_acceleration_y": [ + "1000" +], +"machine_max_acceleration_z": [ + "100" +], +"machine_max_speed_e": [ + "60" +], +"machine_max_speed_x": [ + "500" +], +"machine_max_speed_y": [ + "500" +], +"machine_max_speed_z": [ + "10" +], +"machine_max_jerk_e": [ + "5" +], +"machine_max_jerk_x": [ + "10" +], +"machine_max_jerk_y": [ + "10" +], +"machine_max_jerk_z": [ + "0.3" +], +"max_layer_height": [ + "0.32" +], +"min_layer_height": [ + "0.10" +], +"printer_variant": "0.4", +"retraction_minimum_travel": [ + "1.5" +], +"retraction_length": [ + "7" +], +"retraction_speed": [ + "70" +], +"machine_start_gcode": "; BIQU B1 Start G-code\nM117 Getting the bed up to temp!\nM140 S{material_bed_temperature_layer_0}; Set Heat Bed temperature\nM190 S{material_bed_temperature_layer_0}; Wait for Heat Bed temperature\nM117 Getting the extruder up to temp!\nM104 S{material_print_temperature_layer_0}; Set Extruder temperature\nG92 E0; Reset Extruder\nM117 Homing axes\nG28; Home all axes\nM109 S{material_print_temperature_layer_0}; Wait for Extruder temperature\nG1 Z2.0 F3000; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y20 Z0.3 F5000.0; Move to start position\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30; Draw the second line\nG92 E0; Reset Extruder\nM117 Lets make\nG1 Z2.0 F3000; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0; Move over to prevent blob squish", +"machine_end_gcode": ";BIQU B1 Default End Gcode\nG91;Relative positioning\nG1 E-2 F2700;Retract a bit\nG1 E-2 Z0.2 F2400;Retract a bit more and raise Z\nG1 X5 Y5 F3000;Wipe out\nG1 Z10;Raise Z by 10mm\nG90;Return to absolute positioning\nG1 X0 Y{machine_depth};\nM106 S0;Turn-off fan\nM104 S0;Turn-off hotend\nM140 S0;Turn-off bed\nM84 X Y E;Disable all steppers but Z" +} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json b/resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json deleted file mode 100644 index 02089ee9fa..0000000000 --- a/resources/profiles/BIQU/machine/BIQU B1 0.4 nozzle.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "BIQU B1 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_biqu_common", - "printer_model": "BIQU B1", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "235x0", - "235x235", - "0x235" - ], - "printable_height": "270", - "nozzle_type": "undefine", - "auxiliary_fan": "0", - "deretraction_speed": [ - "70" -], -"gcode_flavor": "marlin", -"machine_max_acceleration_e": [ - "10000" -], -"machine_max_acceleration_extruding": [ - "1000" -], -"machine_max_acceleration_retracting": [ - "1000" -], -"machine_max_acceleration_x": [ - "1000" -], -"machine_max_acceleration_y": [ - "1000" -], -"machine_max_acceleration_z": [ - "100" -], -"machine_max_speed_e": [ - "60" -], -"machine_max_speed_x": [ - "500" -], -"machine_max_speed_y": [ - "500" -], -"machine_max_speed_z": [ - "10" -], -"machine_max_jerk_e": [ - "5" -], -"machine_max_jerk_x": [ - "10" -], -"machine_max_jerk_y": [ - "10" -], -"machine_max_jerk_z": [ - "0.3" -], -"max_layer_height": [ - "0.32" -], -"min_layer_height": [ - "0.10" -], -"printer_variant": "0.4", -"retraction_minimum_travel": [ - "1.5" -], -"retraction_length": [ - "7" -], -"retraction_speed": [ - "70" -], -"default_print_profile": "0.15mm Optimal @BIQU B1", -"machine_start_gcode": "; BIQU B1 Start G-code\nM117 Getting the bed up to temp!\nM140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature\nM117 Getting the extruder up to temp!\nM104 S{material_print_temperature_layer_0} ; Set Extruder temperature\nG92 E0 ; Reset Extruder\nM117 Homing axes\nG28 ; Home all axes\nM109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y20 Z0.3 F5000.0 ; Move to start position\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nM117 Lets make\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish", -"machine_end_gcode": ";BIQU B1 Default End Gcode\nG91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract a bit more and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z by 10mm\nG90 ;Return to absolute positioning\nG1 X0 Y{machine_depth} ;TaDaaaa\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z" -} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU B1.json b/resources/profiles/BIQU/machine/BIQU B1.json index 7aa6bb520a..c9cfe75c98 100644 --- a/resources/profiles/BIQU/machine/BIQU B1.json +++ b/resources/profiles/BIQU/machine/BIQU B1.json @@ -5,8 +5,8 @@ "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "BIQU", - "bed_model": "BIQU_B1_buildplate_model.stl", - "bed_texture": "BIQU_B1_buildplate_texture.png", - "hotend_model": "BIQU_B1_hotend.stl", - "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS;" + "bed_model": "biqu_b1_buildplate_model.stl", + "bed_texture": "biqu_b1_buildplate_texture.png", + "hotend_model": "biqu_b1_hotend.stl", + "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS" } diff --git a/resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json b/resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json new file mode 100644 index 0000000000..29250444d1 --- /dev/null +++ b/resources/profiles/BIQU/machine/BIQU BX (0.4 nozzle).json @@ -0,0 +1,86 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "BIQU BX (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_biqu_common", + "printer_model": "BIQU BX", + "default_print_profile": "0.20mm Standard @BIQU BX (0.4 nozzle)", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "250x0", + "250x250", + "0x250" + ], + "printable_height": "250", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "deretraction_speed": [ + "70" +], +"gcode_flavor": "marlin", +"machine_max_acceleration_e": [ + "10000" +], +"machine_max_acceleration_extruding": [ + "1000" +], +"machine_max_acceleration_retracting": [ + "1000" +], +"machine_max_acceleration_x": [ + "1000" +], +"machine_max_acceleration_y": [ + "1000" +], +"machine_max_acceleration_z": [ + "100" +], +"machine_max_speed_e": [ + "60" +], +"machine_max_speed_x": [ + "500" +], +"machine_max_speed_y": [ + "500" +], +"machine_max_speed_z": [ + "10" +], +"machine_max_jerk_e": [ + "5" +], +"machine_max_jerk_x": [ + "10" +], +"machine_max_jerk_y": [ + "10" +], +"machine_max_jerk_z": [ + "0.3" +], +"max_layer_height": [ + "0.32" +], +"min_layer_height": [ + "0.10" +], +"printer_variant": "0.4", +"retraction_minimum_travel": [ + "1.5" +], +"retraction_length": [ + "1" +], +"retraction_speed": [ + "40" +], +"machine_start_gcode": "; BIQU BX Start G-code\n;M117 Initial homing sequence; Home so that the probe is positioned to heat\nG28\nM117 Probe heating position\nG0 X65 Y5 Z1; Move the probe to the heating position.\nM117 Getting the heaters up to temp!\nM104 S140; Set Extruder temperature, no wait\nM140 S60; Set Heat Bed temperature\nM190 S60; Wait for Heat Bed temperature\nM117 Waiting for probe to warm; Wait another 90s for the probe to absorb heat.\nG4 S90\nM117 Post warming re-home\nG28; Home all axes again after warming\nM117 Z-Dance of my people\nG34\nM117 ABL Probing\nG29\nM900 K0 L0 T0;Edit the K and L values if you have calibrated a k factor for your filament\nM900 T0 S0\nG1 Z2.0 F3000; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y10 Z0.3 F5000.0; Move to start position\nM117 Getting the extruder up to temp\nM140 S{material_bed_temperature_layer_0}; Set Heat Bed temperature\nM104 S{material_print_temperature_layer_0}; Set Extruder temperature\nM109 S{material_print_temperature_layer_0}; Wait for Extruder temperature\nM190 S{material_bed_temperature_layer_0}; Wait for Heat Bed temperature\nG92 E0; Reset Extruder\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30; Draw the second line\nG92 E0; Reset Extruder\nM117 Lets make\nG1 X8 Y20 Z0.3 F5000.0; Move over to prevent blob squish", +"machine_end_gcode": "; BIQU BX Default End Gcode\nG91;Relative positioning\nG1 E-2 F2700;Retract a bit\nG1 E-2 Z0.2 F2400;Retract a bit more and raise Z\nG1 X5 Y5 F3000;Wipe out\nG1 Z10;Raise Z by 10mm\nG90;Return to absolute positioning\nG1 X0 Y{machine_depth};TaDaaaa\nM106 S0;Turn-off fan\nM104 S0;Turn-off hotend\nM140 S0;Turn-off bed\nM84 X Y E;Disable all steppers but Z" +} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json b/resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json deleted file mode 100644 index f2fa6833c7..0000000000 --- a/resources/profiles/BIQU/machine/BIQU BX 0.4 nozzle.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM001", - "name": "BIQU BX 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_biqu_common", - "printer_model": "BIQU BX", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "250x0", - "250x250", - "0x250" - ], - "printable_height": "250", - "nozzle_type": "undefine", - "auxiliary_fan": "0", - "deretraction_speed": [ - "70" -], -"gcode_flavor": "marlin", -"machine_max_acceleration_e": [ - "10000" -], -"machine_max_acceleration_extruding": [ - "1000" -], -"machine_max_acceleration_retracting": [ - "1000" -], -"machine_max_acceleration_x": [ - "1000" -], -"machine_max_acceleration_y": [ - "1000" -], -"machine_max_acceleration_z": [ - "100" -], -"machine_max_speed_e": [ - "60" -], -"machine_max_speed_x": [ - "500" -], -"machine_max_speed_y": [ - "500" -], -"machine_max_speed_z": [ - "10" -], -"machine_max_jerk_e": [ - "5" -], -"machine_max_jerk_x": [ - "10" -], -"machine_max_jerk_y": [ - "10" -], -"machine_max_jerk_z": [ - "0.3" -], -"max_layer_height": [ - "0.32" -], -"min_layer_height": [ - "0.10" -], -"printer_variant": "0.4", -"retraction_minimum_travel": [ - "1.5" -], -"retraction_length": [ - "1" -], -"retraction_speed": [ - "40" -], -"default_print_profile": "0.15mm Optimal @BIQU BX", -"machine_start_gcode": "; BIQU BX Start G-code\n; For the official github site visit: https://github.com/bigtreetech/BIQU-BX\nM117 Initial homing sequence. ; Home so that the probe is positioned to heat\nG28\nM117 Probe heating position\nG0 X65 Y5 Z1 ; Move the probe to the heating position.\nM117 Getting the heaters up to temp!\nM104 S140 ; Set Extruder temperature, no wait\nM140 S60 ; Set Heat Bed temperature\nM190 S60 ; Wait for Heat Bed temperature\nM117 Waiting for probe to warm! ; Wait another 90s for the probe to absorb heat.\nG4 S90\nM117 Post warming re-home\nG28 ; Home all axes again after warming\nM117 Z-Dance of my people\nG34\nM117 ABL Probing\nG29\nM900 K0 L0 T0 ;Edit the K and L values if you have calibrated a k factor for your filament\nM900 T0 S0\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X4.1 Y10 Z0.3 F5000.0 ; Move to start position\nM117 Getting the extruder up to temp\nM140 S{material_bed_temperature_layer_0} ; Set Heat Bed temperature\nM104 S{material_print_temperature_layer_0} ; Set Extruder temperature\nM109 S{material_print_temperature_layer_0} ; Wait for Extruder temperature\nM190 S{material_bed_temperature_layer_0} ; Wait for Heat Bed temperature\nG92 E0 ; Reset Extruder\nM117 Purging\nG1 X4.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X4.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X4.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nM117 Lets make\nG1 X8 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish", -"machine_end_gcode": "; BIQU BX Default End Gcode\nG91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract a bit more and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z by 10mm\nG90 ;Return to absolute positioning\nG1 X0 Y{machine_depth} ;TaDaaaa\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z" -} \ No newline at end of file diff --git a/resources/profiles/BIQU/machine/BIQU BX.json b/resources/profiles/BIQU/machine/BIQU BX.json index cf8ed01417..e0d6e3d470 100644 --- a/resources/profiles/BIQU/machine/BIQU BX.json +++ b/resources/profiles/BIQU/machine/BIQU BX.json @@ -5,8 +5,8 @@ "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "BIQU", - "bed_model": "BIQU_BX_buildplate_model.stl", - "bed_texture": "BIQU_BX_buildplate_texture.png", - "hotend_model": "Biqu_BX_hotend.stl", - "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS;" + "bed_model": "biqu_bx_buildplate_model.stl", + "bed_texture": "biqu_bx_buildplate_texture.png", + "hotend_model": "biqu_bx_hotend.stl", + "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS" } diff --git a/resources/profiles/BIQU/machine/BIQU Hurakan 0.4 nozzle.json b/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json similarity index 95% rename from resources/profiles/BIQU/machine/BIQU Hurakan 0.4 nozzle.json rename to resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json index 9b248fbd4b..85ffe772ce 100644 --- a/resources/profiles/BIQU/machine/BIQU Hurakan 0.4 nozzle.json +++ b/resources/profiles/BIQU/machine/BIQU Hurakan (0.4 nozzle).json @@ -1,11 +1,12 @@ { "type": "machine", "setting_id": "GM001", - "name": "BIQU Hurakan 0.4 nozzle", + "name": "BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_klipper_common", "printer_model": "BIQU Hurakan", + "default_print_profile": "0.20mm Standard @BIQU Hurakan (0.4 nozzle)", "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/BIQU/machine/BIQU Hurakan.json b/resources/profiles/BIQU/machine/BIQU Hurakan.json index 594dcc7bc4..ab3e2c804e 100644 --- a/resources/profiles/BIQU/machine/BIQU Hurakan.json +++ b/resources/profiles/BIQU/machine/BIQU Hurakan.json @@ -5,8 +5,8 @@ "nozzle_diameter": "0.4", "machine_tech": "FFF", "family": "BIQU", - "bed_model": "BIQU_Hurakan_buildplate_model.stl", - "bed_texture": "BIQU_Hurakan_buildplate_texture.png", - "hotend_model": "Biqu_Hurakan_hotend.stl", - "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS;" + "bed_model": "biqu_hurakan_buildplate_model.stl", + "bed_texture": "biqu_hurakan_buildplate_texture.png", + "hotend_model": "biqu_hurakan_hotend.stl", + "default_materials": "BIQU Generic PLA;BIQU Generic PETG;BIQU Generic ABS" } diff --git a/resources/profiles/BIQU/machine/fdm_biqu_common.json b/resources/profiles/BIQU/machine/fdm_biqu_common.json index ef8d68bb0c..5da04e99c1 100644 --- a/resources/profiles/BIQU/machine/fdm_biqu_common.json +++ b/resources/profiles/BIQU/machine/fdm_biqu_common.json @@ -124,9 +124,8 @@ "1" ], "default_filament_profile": [ - "Generic PLA @BIQU" + "BIQU Generic PLA" ], - "default_print_profile": "0.20mm Standard @BIQU", "bed_exclude_area": [ "0x0" ], diff --git a/resources/profiles/BIQU/machine/fdm_machine_common.json b/resources/profiles/BIQU/machine/fdm_machine_common.json index 8884d46f0c..a31cfc8144 100644 --- a/resources/profiles/BIQU/machine/fdm_machine_common.json +++ b/resources/profiles/BIQU/machine/fdm_machine_common.json @@ -111,7 +111,6 @@ "1" ], "z_lift_type": "NormalLift", - "default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle", "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end" } diff --git a/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1.json b/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1 (0.4 nozzle).json similarity index 78% rename from resources/profiles/BIQU/process/0.12mm Fine @BIQU B1.json rename to resources/profiles/BIQU/process/0.12mm Fine @BIQU B1 (0.4 nozzle).json index 5d3cac461f..178300d7b0 100644 --- a/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.12mm Fine @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @BIQU B1", + "name": "0.12mm Fine @BIQU B1 (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "bottom_shell_layers": "5", "top_shell_layers": "6", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX.json b/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX (0.4 nozzle).json similarity index 78% rename from resources/profiles/BIQU/process/0.12mm Fine @BIQU BX.json rename to resources/profiles/BIQU/process/0.12mm Fine @BIQU BX (0.4 nozzle).json index 17791ae1fb..eee743dabb 100644 --- a/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.12mm Fine @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @BIQU BX", + "name": "0.12mm Fine @BIQU BX (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "bottom_shell_layers": "5", "top_shell_layers": "6", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json similarity index 75% rename from resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json index e42f64077d..ed3e38fd51 100644 --- a/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.12mm Fine @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.12mm Fine @BIQU Hurakan", + "name": "0.12mm Fine @BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "bottom_shell_layers": "5", "top_shell_layers": "6", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX.json b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX.json rename to resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json index 78b16fbf69..467cd93327 100644 --- a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @BIQU BX", + "name": "0.15mm Optimal @BIQU B1 (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "top_shell_layers": "5", "layer_height": "0.15", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1.json b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1.json rename to resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX (0.4 nozzle).json index 7c11ac4f5b..3333991bc8 100644 --- a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @BIQU B1", + "name": "0.15mm Optimal @BIQU BX (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -9,6 +9,6 @@ "top_shell_layers": "5", "layer_height": "0.15", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json similarity index 73% rename from resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json index 3a3d3a5f60..4ad9fde878 100644 --- a/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.15mm Optimal @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.15mm Optimal @BIQU Hurakan", + "name": "0.15mm Optimal @BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_hurakan_common", @@ -9,6 +9,6 @@ "top_shell_layers": "5", "layer_height": "0.15", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" - ] + "BIQU Hurakan (0.4 nozzle)" + ] } diff --git a/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1.json b/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1 (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.20mm Standard @BIQU B1.json rename to resources/profiles/BIQU/process/0.20mm Standard @BIQU B1 (0.4 nozzle).json index 9901991aec..c541cacaa3 100644 --- a/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.20mm Standard @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @BIQU B1", + "name": "0.20mm Standard @BIQU B1 (0.4 nozzle)", "from": "system", "inherits": "fdm_process_biqu_common", "instantiation": "true", @@ -9,6 +9,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX.json b/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX (0.4 nozzle).json similarity index 77% rename from resources/profiles/BIQU/process/0.20mm Standard @BIQU BX.json rename to resources/profiles/BIQU/process/0.20mm Standard @BIQU BX (0.4 nozzle).json index 59f1cc13a2..a7e03f2d2b 100644 --- a/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.20mm Standard @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @BIQU BX", + "name": "0.20mm Standard @BIQU BX (0.4 nozzle)", "from": "system", "inherits": "fdm_process_biqu_common", "instantiation": "true", @@ -9,6 +9,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json similarity index 75% rename from resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json index 8db0ed210c..36d1224e79 100644 --- a/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.20mm Standard @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.20mm Standard @BIQU Hurakan", + "name": "0.20mm Standard @BIQU Hurakan (0.4 nozzle)", "from": "system", "inherits": "fdm_process_hurakan_common", "instantiation": "true", @@ -9,6 +9,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX.json b/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1 (0.4 nozzle).json similarity index 80% rename from resources/profiles/BIQU/process/0.24mm Draft @BIQU BX.json rename to resources/profiles/BIQU/process/0.24mm Draft @BIQU B1 (0.4 nozzle).json index 8e5ae7a45b..7939b37b88 100644 --- a/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX.json +++ b/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1 (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @BIQU BX", + "name": "0.24mm Draft @BIQU B1 (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -10,6 +10,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU BX 0.4 nozzle" + "BIQU B1 (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1.json b/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX (0.4 nozzle).json similarity index 80% rename from resources/profiles/BIQU/process/0.24mm Draft @BIQU B1.json rename to resources/profiles/BIQU/process/0.24mm Draft @BIQU BX (0.4 nozzle).json index e746011e5a..1241d93357 100644 --- a/resources/profiles/BIQU/process/0.24mm Draft @BIQU B1.json +++ b/resources/profiles/BIQU/process/0.24mm Draft @BIQU BX (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @BIQU B1", + "name": "0.24mm Draft @BIQU BX (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_biqu_common", @@ -10,6 +10,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU B1 0.4 nozzle" + "BIQU BX (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan.json b/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json similarity index 78% rename from resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan.json rename to resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json index 17504bbd72..e9ac5c635a 100644 --- a/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan.json +++ b/resources/profiles/BIQU/process/0.24mm Draft @BIQU Hurakan (0.4 nozzle).json @@ -1,7 +1,7 @@ { "type": "process", "setting_id": "GP004", - "name": "0.24mm Draft @BIQU Hurakan", + "name": "0.24mm Draft @BIQU Hurakan (0.4 nozzle)", "from": "system", "instantiation": "true", "inherits": "fdm_process_hurakan_common", @@ -10,6 +10,6 @@ "bottom_shell_layers": "3", "top_shell_layers": "4", "compatible_printers": [ - "BIQU Hurakan 0.4 nozzle" + "BIQU Hurakan (0.4 nozzle)" ] } diff --git a/resources/profiles/BIQU/process/fdm_process_biqu_common.json b/resources/profiles/BIQU/process/fdm_process_biqu_common.json index 5ba9d9ba30..7fef4b7f6a 100644 --- a/resources/profiles/BIQU/process/fdm_process_biqu_common.json +++ b/resources/profiles/BIQU/process/fdm_process_biqu_common.json @@ -100,10 +100,5 @@ "wipe_tower_no_sparse_layers": "0", "prime_tower_width": "35", "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" - ] + "xy_contour_compensation": "0" } diff --git a/resources/profiles/BIQU/process/fdm_process_hurakan_common.json b/resources/profiles/BIQU/process/fdm_process_hurakan_common.json index ec74a3b9ff..e1bf276aa6 100644 --- a/resources/profiles/BIQU/process/fdm_process_hurakan_common.json +++ b/resources/profiles/BIQU/process/fdm_process_hurakan_common.json @@ -100,10 +100,5 @@ "wipe_tower_no_sparse_layers": "0", "prime_tower_width": "35", "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "compatible_printers": [ - "BIQU BX 0.4 nozzle", - "BIQU B1 0.4 nozzle", - "BIQU Hurakan 0.4 nozzle" - ] + "xy_contour_compensation": "0" } From aa4704a6dbd86e0f019a0aa32aab0f15e76de413 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 27 May 2023 10:17:31 +0800 Subject: [PATCH 22/62] Decrease default PETG temp for temp tower test #1117 --- src/slic3r/GUI/calib_dlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index 14fdc6b143..d08c8b3a01 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -347,7 +347,7 @@ void Temp_Calibration_Dlg::on_filament_type_changed(wxCommandEvent& event) { end = 230; break; case tPETG: - start = 260; + start = 250; end = 230; break; case tTPU: From 8b0e3079414b3d0c874fa0048417dd0857bddfa7 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Sat, 27 May 2023 17:39:48 +0800 Subject: [PATCH 23/62] infill_anchor #500 #136 --- src/libslic3r/Fill/Fill.cpp | 9 +++-- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 49 +++++++++++++++++++++++++++ src/libslic3r/PrintConfig.hpp | 5 ++- src/libslic3r/PrintObject.cpp | 2 ++ src/slic3r/GUI/ConfigManipulation.cpp | 6 +++- src/slic3r/GUI/GUI_Factories.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 3 ++ 8 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 65e7d4b9d0..028ab8fba2 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -199,8 +199,13 @@ std::vector group_fills(const Layer &layer) // so that internall infill will be aligned over all layers of the current region. params.spacing = layerm.region().flow(*layer.object(), frInfill, layer.object()->config().layer_height, false).spacing(); // Anchor a sparse infill to inner perimeters with the following anchor length: - params.anchor_length = float(Fill::infill_anchor * 0.01 * params.spacing); - params.anchor_length_max = Fill::infill_anchor_max; + // Anchor a sparse infill to inner perimeters with the following anchor length: + params.anchor_length = float(region_config.infill_anchor); + if (region_config.infill_anchor.percent) + params.anchor_length = float(params.anchor_length * 0.01 * params.spacing); + params.anchor_length_max = float(region_config.infill_anchor_max); + if (region_config.infill_anchor_max.percent) + params.anchor_length_max = float(params.anchor_length_max * 0.01 * params.spacing); params.anchor_length = std::min(params.anchor_length, params.anchor_length_max); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 0931238298..02ff26aa56 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -756,7 +756,7 @@ static std::vector s_Preset_print_options { "bridge_density", "precise_outer_wall", "overhang_speed_classic", "bridge_acceleration", "sparse_infill_acceleration", "internal_solid_infill_acceleration", "tree_support_adaptive_layer_height", "tree_support_auto_brim", "tree_support_brim_width", "gcode_comments", "gcode_label_objects", - "initial_layer_travel_speed", "exclude_object", "slow_down_layers" + "initial_layer_travel_speed", "exclude_object", "slow_down_layers", "infill_anchor", "infill_anchor_max" }; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index f12cfcf3c3..d59bcd66c8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1434,6 +1434,55 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Lightning")); def->set_default_value(new ConfigOptionEnum(ipCubic)); + auto def_infill_anchor_min = def = this->add("infill_anchor", coFloatOrPercent); + def->label = L("Length of the infill anchor"); + def->category = L("Strength"); + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " + "shorter than infill_anchor_max is found, the infill line is connected to a perimeter segment at just one side " + "and the length of the perimeter segment taken is limited to this parameter, but no longer than anchor_length_max. " + "\nSet this parameter to zero to disable anchoring perimeters connected to a single infill line."); + def->sidetext = L("mm or %"); + def->ratio_over = "sparse_infill_line_width"; + def->max_literal = 1000; + def->gui_type = ConfigOptionDef::GUIType::f_enum_open; + def->enum_values.push_back("0"); + def->enum_values.push_back("1"); + def->enum_values.push_back("2"); + def->enum_values.push_back("5"); + def->enum_values.push_back("10"); + def->enum_values.push_back("1000"); + def->enum_labels.push_back(L("0 (no open anchors)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloatOrPercent(400, true)); + + def = this->add("infill_anchor_max", coFloatOrPercent); + def->label = L("Maximum length of the infill anchor"); + def->category = L("Strength"); + def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " + "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " + "shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side " + "and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. " + "\nIf set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0."); + def->sidetext = def_infill_anchor_min->sidetext; + def->ratio_over = def_infill_anchor_min->ratio_over; + def->gui_type = def_infill_anchor_min->gui_type; + def->enum_values = def_infill_anchor_min->enum_values; + def->max_literal = def_infill_anchor_min->max_literal; + def->enum_labels.push_back(L("0 (Simple connect)")); + def->enum_labels.push_back("1 mm"); + def->enum_labels.push_back("2 mm"); + def->enum_labels.push_back("5 mm"); + def->enum_labels.push_back("10 mm"); + def->enum_labels.push_back(L("1000 (unlimited)")); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloatOrPercent(20, false)); + def = this->add("outer_wall_acceleration", coFloat); def->label = L("Outer wall"); def->tooltip = L("Acceleration of outer walls"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index ea78f20863..5ac32bae60 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -780,9 +780,8 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, small_perimeter_threshold)) ((ConfigOptionFloat, top_solid_infill_flow_ratio)) ((ConfigOptionFloat, bottom_solid_infill_flow_ratio)) - - - + ((ConfigOptionFloatOrPercent, infill_anchor)) + ((ConfigOptionFloatOrPercent, infill_anchor_max)) ) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index bbaa16a34f..890d7aab8a 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -831,6 +831,8 @@ bool PrintObject::invalidate_state_by_config_options( || opt_key == "bottom_surface_pattern" || opt_key == "external_fill_link_max_length" || opt_key == "sparse_infill_pattern" + || opt_key == "infill_anchor" + || opt_key == "infill_anchor_max" || opt_key == "top_surface_line_width" || opt_key == "initial_layer_line_width") { steps.emplace_back(posInfill); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index cef3bc24c9..70562dc0a7 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -547,8 +547,12 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_infill = config->option("sparse_infill_density")->value > 0; // sparse_infill_filament uses the same logic as in Print::extruders() for (auto el : { "sparse_infill_pattern", "infill_combination", - "minimum_sparse_infill_area", "sparse_infill_filament"}) + "minimum_sparse_infill_area", "sparse_infill_filament", "infill_anchor_max"}) toggle_line(el, have_infill); + + // Only allow configuration of open anchors if the anchoring is enabled. + bool has_infill_anchors = have_infill && config->option("infill_anchor_max")->value > 0; + toggle_field("infill_anchor", has_infill_anchors); bool has_spiral_vase = config->opt_bool("spiral_mode"); bool has_top_solid_infill = config->opt_int("top_shell_layers") > 0; diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index bd28915c27..624a89d694 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -95,7 +95,7 @@ std::map> SettingsFactory::PART_CAT }}, { L("Strength"), {{"wall_loops", "",1},{"top_shell_layers", L("Top Solid Layers"),1},{"top_shell_thickness", L("Top Minimum Shell Thickness"),1}, {"bottom_shell_layers", L("Bottom Solid Layers"),1}, {"bottom_shell_thickness", L("Bottom Minimum Shell Thickness"),1}, - {"sparse_infill_density", "",1},{"sparse_infill_pattern", "",1},{"top_surface_pattern", "",1},{"bottom_surface_pattern", "",1}, + {"sparse_infill_density", "",1},{"sparse_infill_pattern", "",1},{"infill_anchor", "",1},{"infill_anchor_max", "",1},{"top_surface_pattern", "",1},{"bottom_surface_pattern", "",1}, {"infill_combination", "",1}, {"infill_wall_overlap", "",1}, {"infill_direction", "",1}, {"bridge_angle", "",1}, {"minimum_sparse_infill_area", "",1} }}, { L("Speed"), {{"outer_wall_speed", "",1},{"inner_wall_speed", "",2},{"sparse_infill_speed", "",3},{"top_surface_speed", "",4}, {"internal_solid_infill_speed", "",5}, diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index d003969d5c..497ef553d0 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1905,6 +1905,9 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Infill"), L"param_infill"); optgroup->append_single_option_line("sparse_infill_density"); optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse"); + optgroup->append_single_option_line("infill_anchor"); + optgroup->append_single_option_line("infill_anchor_max"); + optgroup->append_single_option_line("filter_out_gap_fill"); optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); From 1ab212512eaeaf90d9afd9edb2ee774f64bd15db Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Sat, 27 May 2023 19:08:42 +0800 Subject: [PATCH 24/62] 1. Add run_gettext.sh 2. Update locale --- bbl/i18n/OrcaSlicer.pot | 41 +++++++++++++++++- bbl/i18n/cs/OrcaSlicer_cs.po | 41 +++++++++++++++++- bbl/i18n/de/OrcaSlicer_de.po | 66 ++++++++++++++++++++++++++++- bbl/i18n/en/OrcaSlicer_en.po | 41 +++++++++++++++++- bbl/i18n/es/OrcaSlicer_es.po | 41 +++++++++++++++++- bbl/i18n/fr/OrcaSlicer_fr.po | 41 +++++++++++++++++- bbl/i18n/hu/OrcaSlicer_hu.po | 41 +++++++++++++++++- bbl/i18n/it/OrcaSlicer_it.po | 41 +++++++++++++++++- bbl/i18n/ja/OrcaSlicer_ja.po | 41 +++++++++++++++++- bbl/i18n/nl/OrcaSlicer_nl.po | 41 +++++++++++++++++- bbl/i18n/sv/OrcaSlicer_sv.po | 41 +++++++++++++++++- bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po | 62 +++++++++++++++++++++------ resources/i18n/de/OrcaSlicer.mo | Bin 276893 -> 279721 bytes resources/i18n/zh_cn/OrcaSlicer.mo | Bin 201192 -> 203741 bytes run_gettext.sh | 21 +++++++++ src/libslic3r/PrintConfig.cpp | 2 +- 16 files changed, 535 insertions(+), 26 deletions(-) create mode 100755 run_gettext.sh diff --git a/bbl/i18n/OrcaSlicer.pot b/bbl/i18n/OrcaSlicer.pot index b28a1ff3ee..489081e0ea 100644 --- a/bbl/i18n/OrcaSlicer.pot +++ b/bbl/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:52+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -6929,6 +6929,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/cs/OrcaSlicer_cs.po b/bbl/i18n/cs/OrcaSlicer_cs.po index d8888c3945..87c2c6ac5e 100755 --- a/bbl/i18n/cs/OrcaSlicer_cs.po +++ b/bbl/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: 2023-03-31 22:48+0200\n" "Last-Translator: Momo \n" "Language-Team: \n" @@ -7456,6 +7456,45 @@ msgstr "Kubický podepíraný" msgid "Lightning" msgstr "Blesky" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "Zrychlení vnějších stěny" diff --git a/bbl/i18n/de/OrcaSlicer_de.po b/bbl/i18n/de/OrcaSlicer_de.po index 4d4631f166..25da170e9b 100644 --- a/bbl/i18n/de/OrcaSlicer_de.po +++ b/bbl/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -7712,6 +7712,66 @@ msgstr "Kubisch Stützen" msgid "Lightning" msgstr "Blitz" +msgid "Sparse infill anchor length" +msgstr "Länge des Infill-Ankers" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" +"Verbindet eine Infill-Linie mit einem kurzen Segment eines zusätzlichen " +"Perimeters mit einem internen Perimeter. Wenn sie als Prozentsatz " +"ausgedrückt wird (Beispiel: 15%), wird sie über die Breite der Infill-" +"Extrusion berechnet. PrusaSlicer versucht, zwei nahe beieinander liegende " +"Infill-Linien mit einem kurzen Perimetersegment zu verbinden. Wenn kein " +"solches Perimetersegment gefunden wird, das kürzer als infill_anchor_max " +"ist, wird die Infill-Linie nur an einer Seite mit einem Perimetersegment " +"verbunden und die Länge des genommenen Perimetersegments ist auf diesen " +"Parameter begrenzt, aber nicht länger als anchor_length_max. Setzen Sie " +"diesen Parameter auf Null, um die Verankerung von Perimetern zu " +"deaktivieren, die mit einer einzelnen Infill-Linie verbunden sind." + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" +"Verbindet eine Infill-Linie mit einem kurzen Segment eines zusätzlichen " +"Perimeters mit einem internen Perimeter. Wenn sie als Prozentsatz " +"ausgedrückt wird (Beispiel: 15%), wird sie über die Breite der Infill-" +"Extrusion berechnet. PrusaSlicer versucht, zwei nahe beieinander liegende " +"Infill-Linien mit einem kurzen Perimetersegment zu verbinden. Wenn kein " +"solches Perimetersegment gefunden wird, das kürzer als dieser Parameter ist, " +"wird die Infill-Linie nur an einer Seite mit einem Perimetersegment " +"verbunden und die Länge des genommenen Perimetersegments wird auf " +"infill_anchor begrenzt, aber nicht länger als dieser Parameter. Setzen Sie " +"diesen Parameter auf Null, um die Verankerung zu deaktivieren." + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "Beschleunigung Außenwände" @@ -9887,7 +9947,9 @@ msgstr "" "CA-Datei in den Zertifikatspeicher / das Schlüsselbund." msgid "Connection to printers connected via the print host failed." -msgstr "Die Verbindung zu den über den Druck-Host verbundenen Druckern ist fehlgeschlagen." +msgstr "" +"Die Verbindung zu den über den Druck-Host verbundenen Druckern ist " +"fehlgeschlagen." #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" diff --git a/bbl/i18n/en/OrcaSlicer_en.po b/bbl/i18n/en/OrcaSlicer_en.po index 904a648412..f559b81b99 100644 --- a/bbl/i18n/en/OrcaSlicer_en.po +++ b/bbl/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -7208,6 +7208,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/es/OrcaSlicer_es.po b/bbl/i18n/es/OrcaSlicer_es.po index 8ffa8c1a58..afd7af8591 100644 --- a/bbl/i18n/es/OrcaSlicer_es.po +++ b/bbl/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7301,6 +7301,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/fr/OrcaSlicer_fr.po b/bbl/i18n/fr/OrcaSlicer_fr.po index 246de337bb..d6907b02c0 100644 --- a/bbl/i18n/fr/OrcaSlicer_fr.po +++ b/bbl/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril\n" @@ -7712,6 +7712,45 @@ msgstr "Support cubique" msgid "Lightning" msgstr "Éclair" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "Accélération des parois extérieures" diff --git a/bbl/i18n/hu/OrcaSlicer_hu.po b/bbl/i18n/hu/OrcaSlicer_hu.po index b0d77da42d..843ea0edbf 100644 --- a/bbl/i18n/hu/OrcaSlicer_hu.po +++ b/bbl/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7268,6 +7268,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/it/OrcaSlicer_it.po b/bbl/i18n/it/OrcaSlicer_it.po index 7cac3e09e0..55ea91f5c5 100644 --- a/bbl/i18n/it/OrcaSlicer_it.po +++ b/bbl/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7208,6 +7208,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/ja/OrcaSlicer_ja.po b/bbl/i18n/ja/OrcaSlicer_ja.po index 80a8f6016c..99bc60077a 100644 --- a/bbl/i18n/ja/OrcaSlicer_ja.po +++ b/bbl/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -7195,6 +7195,45 @@ msgstr "キュービックサポート" msgid "Lightning" msgstr "ライトニング" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/nl/OrcaSlicer_nl.po b/bbl/i18n/nl/OrcaSlicer_nl.po index 05a7e8e895..8ca58a5b2f 100644 --- a/bbl/i18n/nl/OrcaSlicer_nl.po +++ b/bbl/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7310,6 +7310,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/sv/OrcaSlicer_sv.po b/bbl/i18n/sv/OrcaSlicer_sv.po index e95324908a..ccaef1e1ef 100644 --- a/bbl/i18n/sv/OrcaSlicer_sv.po +++ b/bbl/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -7198,6 +7198,45 @@ msgstr "" msgid "Lightning" msgstr "" +msgid "Sparse infill anchor length" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" + +msgid "0 (no open anchors)" +msgstr "" + +msgid "1000 (unlimited)" +msgstr "" + +msgid "Maximum length of the infill anchor" +msgstr "" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "" diff --git a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po index dea9c507ad..f9283ae84e 100644 --- a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po +++ b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-14 11:27+0800\n" +"POT-Creation-Date: 2023-05-27 18:30+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -7091,6 +7091,54 @@ msgstr "支撑立方体" msgid "Lightning" msgstr "闪电" +msgid "Sparse infill anchor length" +msgstr "稀疏填充锚线长度" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" +"用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" +"算填充拉伸宽度。PrusaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果" +"找不到短于“填充”和“锚点”最大值的周长线段,则填充线仅在一侧连接到周长线段,并" +"且所取周长线段的长度仅限于此参数,但不超过“锚点长度”最大值。将此参数设置为" +"零,以禁用连接到单个填充线的锚点周长。" + +msgid "0 (no open anchors)" +msgstr "0 (无锚线)" + +msgid "1000 (unlimited)" +msgstr "1000(无限制)" + +msgid "Maximum length of the infill anchor" +msgstr "填充锚线的最大长度" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" +"用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" +"算填充拉伸宽度。PrusaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果" +"找不到比此参数短的周长线段,则填充线仅在一侧连接到周长线段,并且所采用的周长" +"线段的长度仅限于 infl_anchor,但不超过此参数。将此参数设置为零以禁用锚点。" + +msgid "0 (Simple connect)" +msgstr "" + msgid "Acceleration of outer walls" msgstr "外墙的加速度。它通常使用比内壁速度慢的加速度,以获得更好的质量" @@ -12216,24 +12264,12 @@ msgstr "" #~ msgid "Bridges" #~ msgstr "桥接" -#~ msgid "Sparse infill anchor length" -#~ msgstr "稀疏填充锚线长度" - -#~ msgid "0 (no open anchors)" -#~ msgstr "0 (无锚线)" - #~ msgid "5 mm" #~ msgstr "5 mm" #~ msgid "10 mm" #~ msgstr "10 mm" -#~ msgid "1000 (unlimited)" -#~ msgstr "1000(无限制)" - -#~ msgid "Maximum length of the infill anchor" -#~ msgstr "填充锚线的最大长度" - #~ msgid "0 (not anchored)" #~ msgstr "0(无)" diff --git a/resources/i18n/de/OrcaSlicer.mo b/resources/i18n/de/OrcaSlicer.mo index 3f20a8c5ff98f549aefb509ccd203e0c0a5bc9ee..5cc6695d8bd036fc7f4e1adeb801e1141e68ac7e 100644 GIT binary patch delta 57668 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 Z!`RvwdCmHzep0a#yk_laoAgos{{c*eoO1vG delta 55768 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 Date: Sat, 27 May 2023 20:45:34 +0800 Subject: [PATCH 29/62] Tweak default settings for Qidi: turn off ironing by default and turn arc fitting for 3 serials --- resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json | 4 ++-- resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json | 4 ++-- .../profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json | 4 ++-- .../profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json | 4 ++-- .../profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json | 4 ++-- .../profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json | 4 ++-- .../profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XMax.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json | 4 ++-- .../profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json | 4 ++-- .../profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json | 4 ++-- .../profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json | 4 ++-- resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json | 2 +- .../profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json | 4 ++-- .../profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json | 4 ++-- .../Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json | 4 ++-- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json | 2 +- .../Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json | 4 ++-- .../Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json | 4 ++-- 30 files changed, 45 insertions(+), 45 deletions(-) diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json index afba0de567..3f9e2616e3 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json index 7a8dcc66e2..2fc9c3724f 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json index dc4b5b3d68..d446732d42 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json index e0c99f1149..f67d8cab4a 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json index e4b05ad7c9..bfd9861ad4 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json index 1bddf5cf67..9cc58846ad 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json index 420749338c..17fc7978bd 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json index 2364174546..d5238371d9 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json index ad7c03a9e0..8deb92f972 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json index ad0512dd15..a4063bc0d3 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json index 4e1bcf6cbd..03282a5fc3 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json index e498aeff64..e8f53f39f0 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json index 8c52434ddc..845ee793a0 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json index 1ce37e942b..0eef925546 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json index 26ce8bcc58..5f3d0a615e 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json index bdb29f3471..6898f059b5 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json index e804b905be..a4a7e4c2ed 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json index 322d210048..15e37fa011 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json index 62192b929b..89450cde8a 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json index 0719bf34c2..d0a8221950 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json index acea431a4b..17b8feb304 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json index 8d6c4e9ece..0fb597c3a5 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json index 1bc2ccf75a..79ed4331c7 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json index d3b70f70de..cd81a7542a 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json index aece5ac36f..6ae915de0d 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json index 7637ddfd3f..d66ecc7285 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json index 6e96736278..514998a7c9 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json index 9614550cb3..03d780b267 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json @@ -43,7 +43,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json index a70b9bc2ad..0d96aad7f0 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json index 8f6ba3ec22..9e18195b46 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json @@ -25,7 +25,7 @@ "bridge_no_support": "0", "draft_shield": "disabled", "elefant_foot_compensation": "0", - "enable_arc_fitting": "0", + "enable_arc_fitting": "1", "outer_wall_line_width": "0.4", "wall_infill_order": "inner wall/outer wall/infill", "line_width": "0.42", @@ -46,7 +46,7 @@ "ironing_flow": "15%", "ironing_spacing": "0.1", "ironing_speed": "15", - "ironing_type": "top", + "ironing_type": "no ironing", "reduce_infill_retraction": "1", "filename_format": "[input_filename_base].gcode", "detect_overhang_wall": "1", From a636df63c14e788b408603daf9ecf973be6dd5dd Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 28 May 2023 10:51:04 +0800 Subject: [PATCH 30/62] bump version to 1.6.3 --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 62938cd02d..e03bc473dc 100644 --- a/version.inc +++ b/version.inc @@ -10,5 +10,5 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SoftFever_VERSION "1.6.3-beta") +set(SoftFever_VERSION "1.6.3") set(SLIC3R_VERSION "01.06.00.66") \ No newline at end of file From c675d979a746390a3243eadf97781fb34525aa27 Mon Sep 17 00:00:00 2001 From: Branden Cash <203336+ammmze@users.noreply.github.com> Date: Wed, 31 May 2023 09:14:47 -0700 Subject: [PATCH 31/62] fix(macos): disable App Transport Security (#1157) * feat(webview): enable context menu This enables the ability (at least on MacOS) to reload the webview. * fix(webview): add handler for webview error Adding this un-covered the following error when trying to load a the printer page using http and hostname: ``` OnError: error loading page about:blank wxWEBVIEW_NAV_ERR_OTHER The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. ``` * fix(macos): disable App Transport Security policy Disables the [App Transport Security](https://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity) policy that blocks loading http urls (via hostname...ip addresses were fine because ip addresses can't have certs, so they would be excluded from the ATS restriction). Resolves #791 --- cmake/modules/MacOSXBundleInfo.plist.in | 8 ++++++ src/slic3r/GUI/PrinterWebView.cpp | 34 +++++++++++++++++++++++++ src/slic3r/GUI/PrinterWebView.hpp | 1 + src/slic3r/GUI/Widgets/WebView.cpp | 2 +- 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index 5e61a9e94c..40c8e7c3a0 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -118,5 +118,13 @@ NSHumanReadableCopyright ${MACOSX_BUNDLE_COPYRIGHT} + NSAppTransportSecurity + + + NSAllowsArbitraryLoads + + NSAllowsArbitraryLoadsInWebContent + + diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 13102fd981..5830d13798 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -30,6 +30,8 @@ PrinterWebView::PrinterWebView(wxWindow *parent) return; } + Bind(wxEVT_WEBVIEW_ERROR, &PrinterWebView::OnError, this); + SetSizer(topsizer); topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1)); @@ -83,6 +85,38 @@ void PrinterWebView::OnClose(wxCloseEvent& evt) this->Hide(); } +void PrinterWebView::OnError(wxWebViewEvent &evt) +{ + auto e = "unknown error"; + switch (evt.GetInt()) { + case wxWEBVIEW_NAV_ERR_CONNECTION: + e = "wxWEBVIEW_NAV_ERR_CONNECTION"; + break; + case wxWEBVIEW_NAV_ERR_CERTIFICATE: + e = "wxWEBVIEW_NAV_ERR_CERTIFICATE"; + break; + case wxWEBVIEW_NAV_ERR_AUTH: + e = "wxWEBVIEW_NAV_ERR_AUTH"; + break; + case wxWEBVIEW_NAV_ERR_SECURITY: + e = "wxWEBVIEW_NAV_ERR_SECURITY"; + break; + case wxWEBVIEW_NAV_ERR_NOT_FOUND: + e = "wxWEBVIEW_NAV_ERR_NOT_FOUND"; + break; + case wxWEBVIEW_NAV_ERR_REQUEST: + e = "wxWEBVIEW_NAV_ERR_REQUEST"; + break; + case wxWEBVIEW_NAV_ERR_USER_CANCELLED: + e = "wxWEBVIEW_NAV_ERR_USER_CANCELLED"; + break; + case wxWEBVIEW_NAV_ERR_OTHER: + e = "wxWEBVIEW_NAV_ERR_OTHER"; + break; + } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< boost::format(": error loading page %1% %2% %3% %4%") %evt.GetURL() %evt.GetTarget() %e %evt.GetString(); +} + } // GUI diff --git a/src/slic3r/GUI/PrinterWebView.hpp b/src/slic3r/GUI/PrinterWebView.hpp index 4356268d69..bdf5f4c68f 100644 --- a/src/slic3r/GUI/PrinterWebView.hpp +++ b/src/slic3r/GUI/PrinterWebView.hpp @@ -38,6 +38,7 @@ public: void load_url(wxString& url); void UpdateState(); void OnClose(wxCloseEvent& evt); + void OnError(wxWebViewEvent& evt); private: diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 74efaa67ba..36cf241eef 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -218,7 +218,7 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url) #ifndef __WIN32__ }); #endif - webView->EnableContextMenu(false); + webView->EnableContextMenu(true); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": failed. Use fake web view."; webView = new FakeWebView; From 9861051cd70029d7a3ed1d73c660913b59dab4af Mon Sep 17 00:00:00 2001 From: Heti <45892416+prostolyubo@users.noreply.github.com> Date: Mon, 5 Jun 2023 04:54:25 +0200 Subject: [PATCH 32/62] Easier solution to allow opening the app on OSX described in README.md (#1232) Update README.md Easier solution to allow opening the app --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c96c0db5ce..d9f9f5c9f1 100644 --- a/README.md +++ b/README.md @@ -33,12 +33,16 @@ Prebuilt binaries are available through the [github releases page](https://githu 2. Double click to unzip the package, move OrcaSlicer.app to Application folder. 3. The app is signed but not notarized at the moment due to the proptiery network plugin. We have two options to make it run on our machines - - Option 1: + - Option 1 (You only need to do this once. After that the app can be oppened normally.): + - Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**. + - Step 2: A warning window will pop up, click _Open_ + + - Option 2: Execute this command in terminal: `xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app` ```console softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app ``` - - Option 2: + - Option 3: - Step 1: open the app, a warning window will pop up ![image](./SoftFever_doc/mac_cant_open.png) - Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`: From 335ba93982fed73487c269b8c94cba0f1206f5c3 Mon Sep 17 00:00:00 2001 From: Heiko Liebscher Date: Mon, 5 Jun 2023 05:02:07 +0200 Subject: [PATCH 33/62] fix some typo and new feature (#1202) --- bbl/i18n/OrcaSlicer.pot | 26 ++++++-------------- bbl/i18n/cs/OrcaSlicer_cs.po | 14 +++++------ bbl/i18n/de/OrcaSlicer_de.po | 38 ++++++++++++++--------------- bbl/i18n/en/OrcaSlicer_en.po | 18 +++++++------- bbl/i18n/es/OrcaSlicer_es.po | 14 +++++------ bbl/i18n/fr/OrcaSlicer_fr.po | 34 ++++++++++++++------------ bbl/i18n/hu/OrcaSlicer_hu.po | 14 +++++------ bbl/i18n/it/OrcaSlicer_it.po | 22 ++++++++--------- bbl/i18n/ja/OrcaSlicer_ja.po | 14 +++++------ bbl/i18n/nl/OrcaSlicer_nl.po | 14 +++++------ bbl/i18n/sv/OrcaSlicer_sv.po | 20 +++++++-------- bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po | 32 ++++++++++++------------ resources/i18n/de/OrcaSlicer.mo | Bin 279721 -> 280055 bytes resources/i18n/fr/OrcaSlicer.mo | Bin 288616 -> 286600 bytes resources/i18n/zh_cn/OrcaSlicer.mo | Bin 203741 -> 203739 bytes 15 files changed, 126 insertions(+), 134 deletions(-) diff --git a/bbl/i18n/OrcaSlicer.pot b/bbl/i18n/OrcaSlicer.pot index ec6f677ae0..815c3d1c07 100644 --- a/bbl/i18n/OrcaSlicer.pot +++ b/bbl/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,18 +18,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -msgid "Maximum speed of X axis" -msgstr "" - -msgid "Maximum speed of Y axis" -msgstr "" - -msgid "Maximum speed of Z axis" -msgstr "" - -msgid "Maximum speed of E axis" -msgstr "" - msgid "Supports Painting" msgstr "" @@ -4970,8 +4958,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -7097,10 +7085,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/cs/OrcaSlicer_cs.po b/bbl/i18n/cs/OrcaSlicer_cs.po index 87c2c6ac5e..7151df9683 100755 --- a/bbl/i18n/cs/OrcaSlicer_cs.po +++ b/bbl/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: 2023-03-31 22:48+0200\n" "Last-Translator: Momo \n" "Language-Team: \n" @@ -5254,8 +5254,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Při nahrávání timelapse bez nástrojové hlavy se doporučuje přidat " "\"Timelapse Wipe Tower\" \n" @@ -7624,10 +7624,10 @@ msgstr "Maximální otáčky ventilátoru ve vrstvě" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/de/OrcaSlicer_de.po b/bbl/i18n/de/OrcaSlicer_de.po index 25da170e9b..3c653caa8b 100644 --- a/bbl/i18n/de/OrcaSlicer_de.po +++ b/bbl/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -841,7 +841,7 @@ msgid "Load..." msgstr "Laden..." msgid "Orca Cube" -msgstr "" +msgstr "Orca Würfel" msgid "3DBenchy" msgstr "" @@ -850,7 +850,7 @@ msgid "Autodesk FDM Test" msgstr "" msgid "Voron Cube" -msgstr "" +msgstr "Voron Würfel" msgid "Cube" msgstr "Würfel" @@ -5421,13 +5421,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen " "\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste " -"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"->" -"\"Timelapse Wischturm\" wählen." +"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"-" +">\"Timelapse Wischturm\" wählen." msgid "Line width" msgstr "Breite der Linie" @@ -7729,7 +7729,7 @@ msgstr "" "Verbindet eine Infill-Linie mit einem kurzen Segment eines zusätzlichen " "Perimeters mit einem internen Perimeter. Wenn sie als Prozentsatz " "ausgedrückt wird (Beispiel: 15%), wird sie über die Breite der Infill-" -"Extrusion berechnet. PrusaSlicer versucht, zwei nahe beieinander liegende " +"Extrusion berechnet. OrcaSlicer versucht, zwei nahe beieinander liegende " "Infill-Linien mit einem kurzen Perimetersegment zu verbinden. Wenn kein " "solches Perimetersegment gefunden wird, das kürzer als infill_anchor_max " "ist, wird die Infill-Linie nur an einer Seite mit einem Perimetersegment " @@ -7739,13 +7739,13 @@ msgstr "" "deaktivieren, die mit einer einzelnen Infill-Linie verbunden sind." msgid "0 (no open anchors)" -msgstr "" +msgstr "0 (keine offenen Anker)" msgid "1000 (unlimited)" -msgstr "" +msgstr "1000 (unbegrenzt)" msgid "Maximum length of the infill anchor" -msgstr "" +msgstr "Maximale Länge des Infill-Ankers" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " @@ -7761,7 +7761,7 @@ msgstr "" "Verbindet eine Infill-Linie mit einem kurzen Segment eines zusätzlichen " "Perimeters mit einem internen Perimeter. Wenn sie als Prozentsatz " "ausgedrückt wird (Beispiel: 15%), wird sie über die Breite der Infill-" -"Extrusion berechnet. PrusaSlicer versucht, zwei nahe beieinander liegende " +"Extrusion berechnet. OrcaSlicer versucht, zwei nahe beieinander liegende " "Infill-Linien mit einem kurzen Perimetersegment zu verbinden. Wenn kein " "solches Perimetersegment gefunden wird, das kürzer als dieser Parameter ist, " "wird die Infill-Linie nur an einer Seite mit einem Perimetersegment " @@ -7770,7 +7770,7 @@ msgstr "" "diesen Parameter auf Null, um die Verankerung zu deaktivieren." msgid "0 (Simple connect)" -msgstr "" +msgstr "0 (Einfache Verbindung)" msgid "Acceleration of outer walls" msgstr "Beschleunigung Außenwände" @@ -7917,13 +7917,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" -"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht" -"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " +"Die Lüftergeschwindigkeit wird linear von Null bei der " +"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " "\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, " "wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall " "läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal " diff --git a/bbl/i18n/en/OrcaSlicer_en.po b/bbl/i18n/en/OrcaSlicer_en.po index f559b81b99..a9e51e731d 100644 --- a/bbl/i18n/en/OrcaSlicer_en.po +++ b/bbl/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5087,13 +5087,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgid "Line width" msgstr "Line width" @@ -7372,10 +7372,10 @@ msgstr "Full fan speed at layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/es/OrcaSlicer_es.po b/bbl/i18n/es/OrcaSlicer_es.po index afd7af8591..de8bfb5859 100644 --- a/bbl/i18n/es/OrcaSlicer_es.po +++ b/bbl/i18n/es/OrcaSlicer_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5147,8 +5147,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -7465,10 +7465,10 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/fr/OrcaSlicer_fr.po b/bbl/i18n/fr/OrcaSlicer_fr.po index c607a82eb9..c5d95ecfd4 100644 --- a/bbl/i18n/fr/OrcaSlicer_fr.po +++ b/bbl/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril\n" @@ -17,18 +17,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n==0 || n==1) ? 0 : 1;\n" "X-Generator: Poedit 3.3.1\n" -msgid "Maximum speed of X axis" -msgstr "Vitesse maximale de l'axe X" - -msgid "Maximum speed of Y axis" -msgstr "Vitesse maximale de l'axe Y" - -msgid "Maximum speed of Z axis" -msgstr "Vitesse maximale de l'axe Z" - -msgid "Maximum speed of E axis" -msgstr "Vitesse maximale de l'extrudeur" - msgid "Supports Painting" msgstr "Peindre les supports" @@ -7038,6 +7026,7 @@ msgstr "" msgid "Cooling overhang threshold" msgstr "Seuil de surplomb" +#, fuzzy, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " "exceeds this value. Expressed as percentage which indicides how much width " @@ -7602,9 +7591,10 @@ msgstr "" msgid "Shrinkage" msgstr "Rétrécissement" +#, fuzzy, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling (94% " -"if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"Enter the shrinkage percentage that the filament will get after cooling " +"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " "compensate. Only the filament used for the perimeter is taken into account.\n" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." @@ -7845,6 +7835,7 @@ msgstr "Le paramètre max_accel_to_decel de Klipper sera ajusté automatiquement msgid "accel_to_decel" msgstr "Ajuster l’accélération à la décélération" +#, fuzzy, c-format, boost-format msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" msgstr "" "Le paramètre max_accel_to_decel de Klipper sera ajusté à ce pourcentage " @@ -9512,6 +9503,7 @@ msgstr "" msgid "invalid value " msgstr "valeur invalide " +#, fuzzy, c-format, boost-format msgid " doesn't work at 100%% density " msgstr " ne fonctionne pas à 100% de densité " @@ -10225,3 +10217,15 @@ msgstr "" "Améliorer la résistance\n" "Saviez-vous que vous pouvez utiliser plus de parois et une densité de " "remplissage plus élevée pour améliorer la résistance du modèle ?" + +#~ msgid "Maximum speed of X axis" +#~ msgstr "Vitesse maximale de l'axe X" + +#~ msgid "Maximum speed of Y axis" +#~ msgstr "Vitesse maximale de l'axe Y" + +#~ msgid "Maximum speed of Z axis" +#~ msgstr "Vitesse maximale de l'axe Z" + +#~ msgid "Maximum speed of E axis" +#~ msgstr "Vitesse maximale de l'extrudeur" diff --git a/bbl/i18n/hu/OrcaSlicer_hu.po b/bbl/i18n/hu/OrcaSlicer_hu.po index 843ea0edbf..04a89f34b7 100644 --- a/bbl/i18n/hu/OrcaSlicer_hu.po +++ b/bbl/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5124,8 +5124,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -7430,10 +7430,10 @@ msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/it/OrcaSlicer_it.po b/bbl/i18n/it/OrcaSlicer_it.po index 55ea91f5c5..55fc2d0704 100644 --- a/bbl/i18n/it/OrcaSlicer_it.po +++ b/bbl/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5086,8 +5086,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -5962,8 +5962,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" -"\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " +"firmware\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -7371,10 +7371,10 @@ msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -10000,8 +10000,8 @@ msgstr "" #~ "Quando si registra un timelapse senza testa di satmpa, si consiglia di " #~ "aggiungere un \"Timelapse Torre di pulizia\"\n" #~ "facendo clic con il pulsante destro del mouse sulla posizione vuota del " -#~ "piatto e scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di pulizia" -#~ "\"».\n" +#~ "piatto e scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di " +#~ "pulizia\"».\n" #~ msgid "" #~ "When sparse infill density is low, the internal solid infill or internal " diff --git a/bbl/i18n/ja/OrcaSlicer_ja.po b/bbl/i18n/ja/OrcaSlicer_ja.po index 99bc60077a..4a45f17519 100644 --- a/bbl/i18n/ja/OrcaSlicer_ja.po +++ b/bbl/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5097,8 +5097,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -7354,10 +7354,10 @@ msgstr "最大回転速度の積層" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/nl/OrcaSlicer_nl.po b/bbl/i18n/nl/OrcaSlicer_nl.po index 8ca58a5b2f..c64420c4c4 100644 --- a/bbl/i18n/nl/OrcaSlicer_nl.po +++ b/bbl/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5153,8 +5153,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -7476,10 +7476,10 @@ msgstr "Volledige snelheid op laag" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/sv/OrcaSlicer_sv.po b/bbl/i18n/sv/OrcaSlicer_sv.po index ccaef1e1ef..d049a3991d 100644 --- a/bbl/i18n/sv/OrcaSlicer_sv.po +++ b/bbl/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5087,8 +5087,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -6746,9 +6746,9 @@ msgid "" "quality for needle and small details" msgstr "" "Aktivera detta val för att sänka utskifts hastigheten för att göra den sista " -"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets tröskel" -"\", detta så att lager kan kylas under en längre tid. Detta kan förbättra " -"kylnings kvaliteten för små detaljer" +"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets " +"tröskel\", detta så att lager kan kylas under en längre tid. Detta kan " +"förbättra kylnings kvaliteten för små detaljer" msgid "Normal printing" msgstr "Normal utskrift" @@ -7361,10 +7361,10 @@ msgstr "Full fläkthastighet vid lager" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" diff --git a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po index f9283ae84e..332942e3a2 100644 --- a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po +++ b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-27 18:30+0800\n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -5059,8 +5059,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -7106,10 +7106,10 @@ msgid "" "single infill line." msgstr "" "用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" -"算填充拉伸宽度。PrusaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果" -"找不到短于“填充”和“锚点”最大值的周长线段,则填充线仅在一侧连接到周长线段,并" -"且所取周长线段的长度仅限于此参数,但不超过“锚点长度”最大值。将此参数设置为" -"零,以禁用连接到单个填充线的锚点周长。" +"算填充拉伸宽度。OrcaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果找" +"不到短于“填充”和“锚点”最大值的周长线段,则填充线仅在一侧连接到周长线段,并且" +"所取周长线段的长度仅限于此参数,但不超过“锚点长度”最大值。将此参数设置为零," +"以禁用连接到单个填充线的锚点周长。" msgid "0 (no open anchors)" msgstr "0 (无锚线)" @@ -7132,9 +7132,9 @@ msgid "" "create the same result as with 1000 & 0." msgstr "" "用附加周长的一小段将填充线连接到内部周长。如果以百分比(例如:15%)表示,则计" -"算填充拉伸宽度。PrusaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果" -"找不到比此参数短的周长线段,则填充线仅在一侧连接到周长线段,并且所采用的周长" -"线段的长度仅限于 infl_anchor,但不超过此参数。将此参数设置为零以禁用锚点。" +"算填充拉伸宽度。OrcaSlicer 试图将两条紧密的填充线连接到一个短的周长段。如果找" +"不到比此参数短的周长线段,则填充线仅在一侧连接到周长线段,并且所采用的周长线" +"段的长度仅限于 infl_anchor,但不超过此参数。将此参数设置为零以禁用锚点。" msgid "0 (Simple connect)" msgstr "" @@ -7256,10 +7256,10 @@ msgstr "满速风扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" "第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" @@ -13103,8 +13103,8 @@ msgstr "" #~ msgstr "正在准备设置页" #~ msgid "" -#~ "You have the following presets with saved options for \"Print Host upload" -#~ "\"" +#~ "You have the following presets with saved options for \"Print Host " +#~ "upload\"" #~ msgstr "您的以下预设中包含未保存的选项“打印主机上传”" #~ msgid "" diff --git a/resources/i18n/de/OrcaSlicer.mo b/resources/i18n/de/OrcaSlicer.mo index 5cc6695d8bd036fc7f4e1adeb801e1141e68ac7e..58a06b8931454ab876c356500cd2318c842297ec 100644 GIT binary patch delta 55583 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 QB-+qQLAO>4)*|}<0cT;2Z~y=R delta 57692 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 diff --git a/resources/i18n/zh_cn/OrcaSlicer.mo b/resources/i18n/zh_cn/OrcaSlicer.mo index b2fa253bad13fdcee697b7af162578e2ea368250..34565e84cbb653f9712f8a5243f7ae5ec9b16bf2 100644 GIT binary patch delta 15118 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 Tfj7yNT0pAZj`I})fouN{Z@YSK delta 15120 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 Riat{+urgjSjwWt% From 678a0918d213ba74b75ec450e0faada93f7097d7 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 7 Jun 2023 14:50:19 +0800 Subject: [PATCH 34/62] build deps --- .github/workflows/build_deps.yml | 57 ++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/build_deps.yml diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml new file mode 100644 index 0000000000..b85be0d8d1 --- /dev/null +++ b/.github/workflows/build_deps.yml @@ -0,0 +1,57 @@ +# name: Build Deps +name: Build deps + +on: + pull_request: + branches: + - main + paths: + - 'deps/**' + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: ubuntu-20.04 + - os: windows-latest + - os: macos-12 + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Build on Windows + working-directory: ${{ github.workspace }} + if: runner.os == 'Windows' + run: | + choco install strawberryperl + - run: mkdir ${{ github.workspace }}/deps/build + - run: mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep + - run: .\build_release.bat deps + + - name: Build on Mac x86_64 + working-directory: ${{ github.workspace }} + if: runner.os == 'macos-12' + run: | + brew install cmake git gettext + - run: mkdir -p ${{ github.workspace }}/deps/build_x86_64 + - run: mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64 + - run: ./build_release_macos.sh -d -a x86_64 + + - name: Build on Ubuntu + working-directory: ${{ github.workspace }} + if: runner.os == 'ubuntu-20.04' + run: | + sudo apt-get update + sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \ + extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \ + libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \ + libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \ + libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget + mkdir -p ${{ github.workspace }}/deps/build + mkdir -p ${{ github.workspace }}/deps/build/destdir + sudo ./BuildLinux.sh -ur + sudo chown $USER -R ./ + - run: ./BuildLinux.sh -dr \ No newline at end of file From 483febb01d62dff66e90031836d75535a14c8cc3 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 7 Jun 2023 15:13:02 +0800 Subject: [PATCH 35/62] fix build_deps syntax --- .github/workflows/build_deps.yml | 68 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index b85be0d8d1..a325298af3 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -10,48 +10,48 @@ on: jobs: build: - runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-20.04 - os: windows-latest - os: macos-12 + runs-on: ${{ matrix.os }} steps: - - name: Checkout - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - name: Build on Windows - working-directory: ${{ github.workspace }} - if: runner.os == 'Windows' - run: | - choco install strawberryperl - - run: mkdir ${{ github.workspace }}/deps/build - - run: mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep - - run: .\build_release.bat deps + - name: Build on Windows + working-directory: ${{ github.workspace }} + if: ${{ runner.os == 'Windows' }} + run: | + choco install strawberryperl + mkdir ${{ github.workspace }}/deps/build + mkdir ${{ github.workspace }}/deps/build/OrcaSlicer_dep + .\build_release.bat deps - - name: Build on Mac x86_64 - working-directory: ${{ github.workspace }} - if: runner.os == 'macos-12' - run: | - brew install cmake git gettext - - run: mkdir -p ${{ github.workspace }}/deps/build_x86_64 - - run: mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64 - - run: ./build_release_macos.sh -d -a x86_64 + - name: Build on Mac x86_64 + if: ${{ runner.os == 'macos-12' }} + working-directory: ${{ github.workspace }} + run: | + brew install cmake git gettext + mkdir -p ${{ github.workspace }}/deps/build_x86_64 + mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64 + ./build_release_macos.sh -d -a x86_64 - - name: Build on Ubuntu - working-directory: ${{ github.workspace }} - if: runner.os == 'ubuntu-20.04' - run: | - sudo apt-get update - sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \ - extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \ - libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \ - libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \ - libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget - mkdir -p ${{ github.workspace }}/deps/build - mkdir -p ${{ github.workspace }}/deps/build/destdir - sudo ./BuildLinux.sh -ur - sudo chown $USER -R ./ - - run: ./BuildLinux.sh -dr \ No newline at end of file + - name: Build on Ubuntu + if: ${{ runner.os == 'ubuntu-20.04' }} + working-directory: ${{ github.workspace }} + run: | + sudo apt-get update + sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \ + extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \ + libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \ + libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \ + libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget + mkdir -p ${{ github.workspace }}/deps/build + mkdir -p ${{ github.workspace }}/deps/build/destdir + sudo ./BuildLinux.sh -ur + sudo chown $USER -R ./ + ./BuildLinux.sh -dr \ No newline at end of file From 6aa84e8c42dca108722bf5c295b73af4f78f1902 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 7 Jun 2023 15:42:18 +0800 Subject: [PATCH 36/62] build deps cicd --- .github/workflows/build_deps.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index a325298af3..3e4553370c 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -11,6 +11,7 @@ on: jobs: build: strategy: + fail-fast: true matrix: include: - os: ubuntu-20.04 @@ -22,9 +23,13 @@ jobs: - name: Checkout uses: actions/checkout@v3 + - name: setup dev on Windows + if: matrix.os == 'Windows' + uses: ilammy/msvc-dev-cmd@v1 + - name: Build on Windows + if: matrix.os == 'Windows' working-directory: ${{ github.workspace }} - if: ${{ runner.os == 'Windows' }} run: | choco install strawberryperl mkdir ${{ github.workspace }}/deps/build @@ -32,7 +37,7 @@ jobs: .\build_release.bat deps - name: Build on Mac x86_64 - if: ${{ runner.os == 'macos-12' }} + if: ${{ runner.os == 'macOS' }} working-directory: ${{ github.workspace }} run: | brew install cmake git gettext @@ -41,7 +46,7 @@ jobs: ./build_release_macos.sh -d -a x86_64 - name: Build on Ubuntu - if: ${{ runner.os == 'ubuntu-20.04' }} + if: matrix.os == 'ubuntu-20.04' working-directory: ${{ github.workspace }} run: | sudo apt-get update From 42d78a3a574b5f0177181e0a8e7bfb3b1d87210a Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 7 Jun 2023 16:02:45 +0800 Subject: [PATCH 37/62] update cicd triggers --- .github/workflows/build_deps.yml | 5 +++++ .github/workflows/build_linux.yml | 2 -- .github/workflows/build_mac_arm64.yml | 2 -- .github/workflows/build_mac_x64.yml | 2 -- .github/workflows/build_win.yml | 2 -- 5 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index 3e4553370c..3633a98d2c 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -7,6 +7,11 @@ on: - main paths: - 'deps/**' + push: + branches: + - main + paths: + - 'deps/**' jobs: build: diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index f23f7f357e..f6ba96a85b 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' diff --git a/.github/workflows/build_mac_arm64.yml b/.github/workflows/build_mac_arm64.yml index bd138c2a44..1316ee1806 100644 --- a/.github/workflows/build_mac_arm64.yml +++ b/.github/workflows/build_mac_arm64.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' diff --git a/.github/workflows/build_mac_x64.yml b/.github/workflows/build_mac_x64.yml index 8d48460dd6..c3544f56eb 100644 --- a/.github/workflows/build_mac_x64.yml +++ b/.github/workflows/build_mac_x64.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' diff --git a/.github/workflows/build_win.yml b/.github/workflows/build_win.yml index 0fabf39707..b3a81574fa 100644 --- a/.github/workflows/build_win.yml +++ b/.github/workflows/build_win.yml @@ -6,7 +6,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' @@ -17,7 +16,6 @@ on: - main paths: - 'src/**' - - 'deps/**' - '**/CMakeLists.txt' - 'version.inc' - 'bbl/**' From d54861b8f73a0e84cfc65d28d4c090fc43dd23f0 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Wed, 7 Jun 2023 17:44:48 +0800 Subject: [PATCH 38/62] add mac arm64 for build_deps --- .github/workflows/build_deps.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index 3633a98d2c..37f2188651 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -20,8 +20,11 @@ jobs: matrix: include: - os: ubuntu-20.04 - - os: windows-latest + - os: windows-2019 - os: macos-12 + arch: x86_64 + - os: macos-12 + arch: arm64 runs-on: ${{ matrix.os }} steps: @@ -33,7 +36,7 @@ jobs: uses: ilammy/msvc-dev-cmd@v1 - name: Build on Windows - if: matrix.os == 'Windows' + if: matrix.os == 'windows-2019' working-directory: ${{ github.workspace }} run: | choco install strawberryperl @@ -42,7 +45,7 @@ jobs: .\build_release.bat deps - name: Build on Mac x86_64 - if: ${{ runner.os == 'macOS' }} + if: matrix.os == 'macos-12' && matrix.arch == 'x86_64' working-directory: ${{ github.workspace }} run: | brew install cmake git gettext @@ -50,6 +53,15 @@ jobs: mkdir -p ${{ github.workspace }}/deps/build_x86_64/OrcaSlicer_dep_x86_64 ./build_release_macos.sh -d -a x86_64 + - name: Build on Mac arm64 + if: matrix.os == 'macos-12' && matrix.arch == 'arm64' + working-directory: ${{ github.workspace }} + run: | + brew install cmake git gettext + mkdir -p ${{ github.workspace }}/deps/build_arm64 + mkdir -p ${{ github.workspace }}/deps/build_arm64/OrcaSlicer_dep_arm64 + ./build_release_macos.sh -d -a arm64 + - name: Build on Ubuntu if: matrix.os == 'ubuntu-20.04' working-directory: ${{ github.workspace }} From 6108d8ee408cb1de2af2d4d428b696b9f901f66a Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Thu, 8 Jun 2023 16:42:42 +0800 Subject: [PATCH 39/62] tweak ubuntu packages --- .github/workflows/build_deps.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index 37f2188651..b954c8062c 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -14,7 +14,7 @@ on: - 'deps/**' jobs: - build: + build_deps: strategy: fail-fast: true matrix: @@ -67,11 +67,11 @@ jobs: working-directory: ${{ github.workspace }} run: | sudo apt-get update - sudo apt-get install -y autoconf build-essential cmake curl eglexternalplatform-dev \ - extra-cmake-modules file git libcairo2-dev libcurl4-openssl-dev libdbus-1-dev libglew-dev libglu1-mesa-dev \ - libglu1-mesa-dev libgstreamer1.0-dev libgstreamerd-3-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev \ - libgtk-3-dev libgtk-3-dev libmspack-dev libosmesa6-dev libsecret-1-dev libsoup2.4-dev libssl-dev libudev-dev libwayland-dev \ - libwebkit2gtk-4.0-dev libxkbcommon-dev locales locales-all m4 pkgconf sudo wayland-protocols wget + sudo apt-get install -y cmake git g++ build-essential libgl1-mesa-dev m4 \ + libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \ + libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.0-dev \ + libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \ + gstreamer1.0-plugins-bad libosmesa6-dev wget sudo mkdir -p ${{ github.workspace }}/deps/build mkdir -p ${{ github.workspace }}/deps/build/destdir sudo ./BuildLinux.sh -ur From e065809e3af3776b233eb8c1266d505e222bbe48 Mon Sep 17 00:00:00 2001 From: Maciej Lisiewski Date: Sat, 10 Jun 2023 23:36:33 -0400 Subject: [PATCH 40/62] Fix building with GCC13 (required to build on Arch and Fedora) (#1220) * Backport TBB fix to allow building on GCC13 * Fix OpenEXR build with GCC13 * Fix Clipper2 build with GCC13 --------- Co-authored-by: SoftFever --- deps/OpenEXR/0001-OpenEXR-GCC13.patch | 31 ++++ deps/OpenEXR/OpenEXR.cmake | 5 +- deps/TBB/0001-TBB-GCC13.patch | 11 ++ deps/TBB/TBB.cmake | 3 +- .../include/clipper2/clipper.engine.h | 36 +++-- .../Clipper2Lib/src/clipper.engine.cpp | 145 +++++++++--------- 6 files changed, 140 insertions(+), 91 deletions(-) create mode 100644 deps/OpenEXR/0001-OpenEXR-GCC13.patch create mode 100644 deps/TBB/0001-TBB-GCC13.patch diff --git a/deps/OpenEXR/0001-OpenEXR-GCC13.patch b/deps/OpenEXR/0001-OpenEXR-GCC13.patch new file mode 100644 index 0000000000..bf7d6ae82b --- /dev/null +++ b/deps/OpenEXR/0001-OpenEXR-GCC13.patch @@ -0,0 +1,31 @@ +--- a/OpenEXR/IlmImf/ImfDwaCompressor.cpp ++++ b/OpenEXR/IlmImf/ImfDwaCompressor.cpp +@@ -159,6 +159,7 @@ + #include + + #include ++#include + + + // Windows specific addition to prevent the indirect import of the redefined min/max macros +--- a/OpenEXR/IlmImf/ImfHuf.h ++++ b/OpenEXR/IlmImf/ImfHuf.h +@@ -40,6 +40,8 @@ + #include "ImfExport.h" + #include "ImfNamespace.h" + ++#include ++ + //----------------------------------------------------------------------------- + // + // 16-bit Huffman compression and decompression: +--- a/OpenEXR/IlmImf/ImfMisc.h ++++ b/OpenEXR/IlmImf/ImfMisc.h +@@ -51,6 +51,7 @@ + #include "ImfForward.h" + + #include ++#include + #include + + diff --git a/deps/OpenEXR/OpenEXR.cmake b/deps/OpenEXR/OpenEXR.cmake index 5ffdd1c964..74d6de3272 100644 --- a/deps/OpenEXR/OpenEXR.cmake +++ b/deps/OpenEXR/OpenEXR.cmake @@ -33,12 +33,13 @@ bambustudio_add_cmake_project(OpenEXR # GIT_REPOSITORY https://github.com/openexr/openexr.git URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de + PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch DEPENDS ${ZLIB_PKG} GIT_TAG v2.5.5 CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DBUILD_TESTING=OFF - -DPYILMBASE_ENABLE:BOOL=OFF + -DBUILD_TESTING=OFF + -DPYILMBASE_ENABLE:BOOL=OFF -DOPENEXR_VIEWERS_ENABLE:BOOL=OFF -DOPENEXR_BUILD_UTILS:BOOL=OFF ) diff --git a/deps/TBB/0001-TBB-GCC13.patch b/deps/TBB/0001-TBB-GCC13.patch new file mode 100644 index 0000000000..047daa4497 --- /dev/null +++ b/deps/TBB/0001-TBB-GCC13.patch @@ -0,0 +1,11 @@ +--- a/include/tbb/task.h ++++ b/include/tbb/task.h +@@ -219,7 +219,7 @@ + #if __TBB_TASK_PRIORITY + //! Pointer to the next offloaded lower priority task. + /** Used to maintain a list of offloaded tasks inside the scheduler. **/ +- task* next_offloaded; ++ tbb::task* next_offloaded; + }; + #endif /* __TBB_TASK_PRIORITY */ + diff --git a/deps/TBB/TBB.cmake b/deps/TBB/TBB.cmake index 9891fca41a..304b3ffb1b 100644 --- a/deps/TBB/TBB.cmake +++ b/deps/TBB/TBB.cmake @@ -2,7 +2,8 @@ bambustudio_add_cmake_project( TBB URL "https://github.com/wjakob/tbb/archive/a0dc9bf76d0120f917b641ed095360448cabc85b.tar.gz" URL_HASH SHA256=0545cb6033bd1873fcae3ea304def720a380a88292726943ae3b9b207f322efe - CMAKE_ARGS + PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-TBB-GCC13.patch + CMAKE_ARGS -DTBB_BUILD_SHARED=OFF -DTBB_BUILD_TESTS=OFF -DTBB_BUILD_TESTS=OFF diff --git a/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h b/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h index 34e216ac5a..67383f2130 100644 --- a/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h +++ b/src/clipper2/Clipper2Lib/include/clipper2/clipper.engine.h @@ -17,6 +17,8 @@ constexpr auto CLIPPER2_VERSION = "1.0.6"; #include #include #include +#include +#include #include "clipper.core.h" namespace Clipper2Lib { @@ -31,19 +33,19 @@ namespace Clipper2Lib { //Note: all clipping operations except for Difference are commutative. enum class ClipType { None, Intersection, Union, Difference, Xor }; - + enum class PathType { Subject, Clip }; enum class VertexFlags : uint32_t { None = 0, OpenStart = 1, OpenEnd = 2, LocalMax = 4, LocalMin = 8 }; - constexpr enum VertexFlags operator &(enum VertexFlags a, enum VertexFlags b) + constexpr enum VertexFlags operator &(enum VertexFlags a, enum VertexFlags b) { return (enum VertexFlags)(uint32_t(a) & uint32_t(b)); } - constexpr enum VertexFlags operator |(enum VertexFlags a, enum VertexFlags b) + constexpr enum VertexFlags operator |(enum VertexFlags a, enum VertexFlags b) { return (enum VertexFlags)(uint32_t(a) | uint32_t(b)); } @@ -97,7 +99,7 @@ namespace Clipper2Lib { //Important: UP and DOWN here are premised on Y-axis positive down //displays, which is the orientation used in Clipper's development. /////////////////////////////////////////////////////////////////// - + struct Active { Point64 bot; Point64 top; @@ -168,7 +170,7 @@ namespace Clipper2Lib { std::vector::iterator current_locmin_iter_; std::vector vertex_lists_; std::priority_queue scanline_list_; - std::vector intersect_nodes_; + std::vector intersect_nodes_; std::vector joiner_list_; //pointers in case of memory reallocs void Reset(); void InsertScanline(int64_t y); @@ -197,7 +199,7 @@ namespace Clipper2Lib { void ProcessIntersectList(); void SwapPositionsInAEL(Active& edge1, Active& edge2); OutPt* AddOutPt(const Active &e, const Point64& pt); - OutPt* AddLocalMinPoly(Active &e1, Active &e2, + OutPt* AddLocalMinPoly(Active &e1, Active &e2, const Point64& pt, bool is_new = false); OutPt* AddLocalMaxPoly(Active &e1, Active &e2, const Point64& pt); void DoHorizontal(Active &horz); @@ -254,7 +256,7 @@ namespace Clipper2Lib { PolyPath* parent_; public: PolyPath(PolyPath* parent = nullptr): parent_(parent){} - virtual ~PolyPath() { Clear(); }; + virtual ~PolyPath() { Clear(); }; //https://en.cppreference.com/w/cpp/language/rule_of_three PolyPath(const PolyPath&) = delete; PolyPath& operator=(const PolyPath&) = delete; @@ -274,7 +276,7 @@ namespace Clipper2Lib { const PolyPath* Parent() const { return parent_; } - bool IsHole() const + bool IsHole() const { const PolyPath* pp = parent_; bool is_hole = pp; @@ -364,13 +366,13 @@ namespace Clipper2Lib { PathD polygon_; typedef typename std::vector::const_iterator ppD_itor; public: - PolyPathD(PolyPathD* parent = nullptr) : PolyPath(parent) + PolyPathD(PolyPathD* parent = nullptr) : PolyPath(parent) { inv_scale_ = parent ? parent->inv_scale_ : 1.0; } - PolyPathD* operator [] (size_t index) - { - return static_cast(childs_[index]); + PolyPathD* operator [] (size_t index) + { + return static_cast(childs_[index]); } ppD_itor begin() const { return childs_.cbegin(); } ppD_itor end() const { return childs_.cend(); } @@ -437,7 +439,7 @@ namespace Clipper2Lib { return Execute(clip_type, fill_rule, closed_paths, dummy); } - bool Execute(ClipType clip_type, FillRule fill_rule, + bool Execute(ClipType clip_type, FillRule fill_rule, Paths64& closed_paths, Paths64& open_paths) { closed_paths.clear(); @@ -509,12 +511,12 @@ namespace Clipper2Lib { void CheckCallback() { if(zCallback_) - // if the user defined float point callback has been assigned + // if the user defined float point callback has been assigned // then assign the proxy callback function - ClipperBase::zCallback_ = + ClipperBase::zCallback_ = std::bind(&ClipperD::ZCB, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, - std::placeholders::_4, std::placeholders::_5); + std::placeholders::_4, std::placeholders::_5); else ClipperBase::zCallback_ = nullptr; } @@ -581,6 +583,6 @@ namespace Clipper2Lib { }; -} // namespace +} // namespace #endif // CLIPPER_ENGINE_H diff --git a/src/clipper2/Clipper2Lib/src/clipper.engine.cpp b/src/clipper2/Clipper2Lib/src/clipper.engine.cpp index 0c0d47f37a..069b52392c 100644 --- a/src/clipper2/Clipper2Lib/src/clipper.engine.cpp +++ b/src/clipper2/Clipper2Lib/src/clipper.engine.cpp @@ -15,6 +15,9 @@ #include #include "clipper2/clipper.engine.h" +#include +#include + namespace Clipper2Lib { static const double FloatingPointTolerance = 1.0e-12; @@ -94,7 +97,7 @@ namespace Clipper2Lib { inline bool IsOpenEnd(const Vertex& v) { - return (v.flags & (VertexFlags::OpenStart | VertexFlags::OpenEnd)) != + return (v.flags & (VertexFlags::OpenStart | VertexFlags::OpenEnd)) != VertexFlags::None; } @@ -189,8 +192,8 @@ namespace Clipper2Lib { } inline Point64 GetEndE1ClosestToEndE2( - const Active& e1, const Active& e2) - { + const Active& e1, const Active& e2) + { double d[] = { DistanceSqr(e1.bot, e2.bot), DistanceSqr(e1.top, e2.top), @@ -204,7 +207,7 @@ namespace Clipper2Lib { if (d[i] < d[idx]) idx = i; if (d[i] == 0) break; } - switch (idx) + switch (idx) { case 1: case 2: return e1.top; default: return e1.bot; @@ -214,7 +217,7 @@ namespace Clipper2Lib { Point64 GetIntersectPoint(const Active& e1, const Active& e2) { double b1, b2, q = (e1.dx - e2.dx); - if (std::abs(q) < 1e-5) // 1e-5 is a rough empirical limit + if (std::abs(q) < 1e-5) // 1e-5 is a rough empirical limit return GetEndE1ClosestToEndE2(e1, e2); // ie almost parallel if (e1.dx == 0) @@ -235,7 +238,7 @@ namespace Clipper2Lib { { b1 = e1.bot.x - e1.bot.y * e1.dx; b2 = e2.bot.x - e2.bot.y * e2.dx; - + q = (b2 - b1) / q; return (abs(e1.dx) < abs(e2.dx)) ? Point64(static_cast(e1.dx * q + b1), @@ -306,7 +309,7 @@ namespace Clipper2Lib { //PrevPrevVertex: useful to get the (inverted Y-axis) top of the - //alternate edge (ie left or right bound) during edge insertion. + //alternate edge (ie left or right bound) during edge insertion. inline Vertex* PrevPrevVertex(const Active& ae) { if (ae.wind_dx > 0) @@ -353,7 +356,7 @@ namespace Clipper2Lib { while (result->next->pt.y == result->pt.y) result = result->next; else while (result->prev->pt.y == result->pt.y) result = result->prev; - if (!IsMaxima(*result)) result = nullptr; // not a maxima + if (!IsMaxima(*result)) result = nullptr; // not a maxima return result; } @@ -494,7 +497,7 @@ namespace Clipper2Lib { return result * 0.5; } - inline double AreaTriangle(const Point64& pt1, + inline double AreaTriangle(const Point64& pt1, const Point64& pt2, const Point64& pt3) { return (static_cast(pt3.y + pt1.y) * static_cast(pt3.x - pt1.x) + @@ -630,7 +633,7 @@ namespace Clipper2Lib { Clear(); } - void ClipperBase::DeleteEdges(Active*& e) + void ClipperBase::DeleteEdges(Active*& e) { while (e) { @@ -681,7 +684,7 @@ namespace Clipper2Lib { void ClipperBase::SetZ(const Active& e1, const Active& e2, Point64& ip) { if (!zCallback_) return; - // prioritize subject over clip vertices by passing + // prioritize subject over clip vertices by passing // subject vertices before clip vertices in the callback if (GetPolyType(e1) == PathType::Subject) { @@ -872,19 +875,19 @@ namespace Clipper2Lib { case FillRule::EvenOdd: break; case FillRule::NonZero: - if (abs(e.wind_cnt) != 1) return false; + if (abs(e.wind_cnt) != 1) return false; break; case FillRule::Positive: - if (e.wind_cnt != 1) return false; + if (e.wind_cnt != 1) return false; break; case FillRule::Negative: - if (e.wind_cnt != -1) return false; + if (e.wind_cnt != -1) return false; break; } switch (cliptype_) { - case ClipType::None: + case ClipType::None: return false; case ClipType::Intersection: switch (fillrule_) @@ -914,17 +917,17 @@ namespace Clipper2Lib { bool result; switch (fillrule_) { - case FillRule::Positive: - result = (e.wind_cnt2 <= 0); + case FillRule::Positive: + result = (e.wind_cnt2 <= 0); break; case FillRule::Negative: - result = (e.wind_cnt2 >= 0); + result = (e.wind_cnt2 >= 0); break; - default: + default: result = (e.wind_cnt2 == 0); } if (GetPolyType(e) == PathType::Subject) - return result; + return result; else return !result; break; @@ -940,15 +943,15 @@ namespace Clipper2Lib { bool is_in_clip, is_in_subj; switch (fillrule_) { - case FillRule::Positive: - is_in_clip = e.wind_cnt2 > 0; + case FillRule::Positive: + is_in_clip = e.wind_cnt2 > 0; is_in_subj = e.wind_cnt > 0; break; - case FillRule::Negative: - is_in_clip = e.wind_cnt2 < 0; + case FillRule::Negative: + is_in_clip = e.wind_cnt2 < 0; is_in_subj = e.wind_cnt < 0; break; - default: + default: is_in_clip = e.wind_cnt2 != 0; is_in_subj = e.wind_cnt != 0; } @@ -1085,15 +1088,15 @@ namespace Clipper2Lib { //the direction they're about to turn if (!IsMaxima(resident) && (resident.top.y > newcomer.top.y)) { - return CrossProduct(newcomer.bot, + return CrossProduct(newcomer.bot, resident.top, NextVertex(resident)->pt) <= 0; } - else if (!IsMaxima(newcomer) && (newcomer.top.y > resident.top.y)) + else if (!IsMaxima(newcomer) && (newcomer.top.y > resident.top.y)) { return CrossProduct(newcomer.bot, newcomer.top, NextVertex(newcomer)->pt) >= 0; } - + int64_t y = newcomer.bot.y; bool newcomerIsLeft = newcomer.is_left_bound; @@ -1103,7 +1106,7 @@ namespace Clipper2Lib { else if (resident.is_left_bound != newcomerIsLeft) return newcomerIsLeft; else if (CrossProduct(PrevPrevVertex(resident)->pt, - resident.bot, resident.top) == 0) return true; + resident.bot, resident.top) == 0) return true; else //compare turning direction of the alternate bound return (CrossProduct(PrevPrevVertex(resident)->pt, @@ -1319,7 +1322,7 @@ namespace Clipper2Lib { SetSides(*outrec, e1, e2); else SetSides(*outrec, e2, e1); - } + } else { Active* prevHotEdge = GetPrevHotEdge(e1); @@ -1335,7 +1338,7 @@ namespace Clipper2Lib { else SetSides(*outrec, e1, e2); } - else + else { outrec->owner = nullptr; if (is_new) @@ -1344,7 +1347,7 @@ namespace Clipper2Lib { SetSides(*outrec, e2, e1); } } - + OutPt* op = new OutPt(pt, outrec); outrec->pts = op; return op; @@ -1359,7 +1362,7 @@ namespace Clipper2Lib { SwapFrontBackSides(*e1.outrec); else if (IsOpenEnd(e2)) SwapFrontBackSides(*e2.outrec); - else + else { succeeded_ = false; return nullptr; @@ -1369,7 +1372,7 @@ namespace Clipper2Lib { OutPt* result = AddOutPt(e1, pt); if (e1.outrec == e2.outrec) { - OutRec& outrec = *e1.outrec; + OutRec& outrec = *e1.outrec; outrec.pts = result; UncoupleOutRec(e1); @@ -1523,7 +1526,7 @@ namespace Clipper2Lib { void ClipperBase::DoSplitOp(OutRec* outrec, OutPt* splitOp) { - // splitOp.prev -> splitOp && + // splitOp.prev -> splitOp && // splitOp.next -> splitOp.next.next are intersecting OutPt* prevOp = splitOp->prev; OutPt* nextNextOp = splitOp->next->next; @@ -1572,7 +1575,7 @@ namespace Clipper2Lib { SafeDeleteOutPtJoiners(splitOp->next); SafeDeleteOutPtJoiners(splitOp); - if (absArea2 >= 1 && + if (absArea2 >= 1 && (absArea2 > absArea1 || (area2 > 0) == (area1 > 0))) { OutRec* newOutRec = new OutRec(); @@ -1762,7 +1765,7 @@ namespace Clipper2Lib { else result = result->next_in_ael; } result = e->prev_in_ael; - while (result) + while (result) { if (result->local_min == e->local_min) return result; else if (!IsHorizontal(*result) && e->bot != result->bot) return nullptr; @@ -1791,14 +1794,14 @@ namespace Clipper2Lib { edge_c = &e1; } - if (abs(edge_c->wind_cnt) != 1) return nullptr; + if (abs(edge_c->wind_cnt) != 1) return nullptr; switch (cliptype_) { - case ClipType::Union: - if (!IsHotEdge(*edge_c)) return nullptr; + case ClipType::Union: + if (!IsHotEdge(*edge_c)) return nullptr; break; - default: - if (edge_c->local_min->polytype == PathType::Subject) + default: + if (edge_c->local_min->polytype == PathType::Subject) return nullptr; } @@ -1821,11 +1824,11 @@ namespace Clipper2Lib { edge_o->outrec = nullptr; return resultOp; } - + //horizontal edges can pass under open paths at a LocMins else if (pt == edge_o->local_min->vertex->pt && !IsOpenEnd(*edge_o->local_min->vertex)) - { + { //find the other side of the LocMin and //if it's 'hot' join up with it ... Active* e3 = FindEdgeWithMatchingLocMin(edge_o); @@ -1833,7 +1836,7 @@ namespace Clipper2Lib { { edge_o->outrec = e3->outrec; if (edge_o->wind_dx > 0) - SetSides(*e3->outrec, *edge_o, *e3); + SetSides(*e3->outrec, *edge_o, *e3); else SetSides(*e3->outrec, *e3, *edge_o); return e3->outrec->pts; @@ -1847,7 +1850,7 @@ namespace Clipper2Lib { //MANAGING CLOSED PATHS FROM HERE ON - + //UPDATE WINDING COUNTS... int old_e1_windcnt, old_e2_windcnt; @@ -1913,7 +1916,7 @@ namespace Clipper2Lib { { return nullptr; } - + //NOW PROCESS THE INTERSECTION ... OutPt* resultOp = nullptr; //if both edges are 'hot' ... @@ -2282,7 +2285,7 @@ namespace Clipper2Lib { inline bool HorzIsSpike(const Active& horzEdge) { Point64 nextPt = NextVertex(horzEdge)->pt; - return (nextPt.y == horzEdge.bot.y) && + return (nextPt.y == horzEdge.bot.y) && (horzEdge.bot.x < horzEdge.top.x) != (horzEdge.top.x < nextPt.x); } @@ -2295,7 +2298,7 @@ namespace Clipper2Lib { //always trim 180 deg. spikes (in closed paths) //but otherwise break if preserveCollinear = true if (preserveCollinear && - ((pt.x < horzEdge.top.x) != (horzEdge.bot.x < horzEdge.top.x))) + ((pt.x < horzEdge.top.x) != (horzEdge.bot.x < horzEdge.top.x))) break; horzEdge.vertex_top = NextVertex(horzEdge); @@ -2353,11 +2356,11 @@ namespace Clipper2Lib { OutPt* op; while (true) // loop through consec. horizontal edges - { + { if (horzIsOpen && IsMaxima(horz) && !IsOpenEnd(horz)) { vertex_max = GetCurrYMaximaVertex(horz); - if (vertex_max) + if (vertex_max) max_pair = GetHorzMaximaPair(horz, vertex_max); } @@ -2388,7 +2391,7 @@ namespace Clipper2Lib { //if horzEdge is a maxima, keep going until we reach //its maxima pair, otherwise check for break conditions - if (vertex_max != horz.vertex_top || IsOpenEnd(horz)) + if (vertex_max != horz.vertex_top || IsOpenEnd(horz)) { //otherwise stop when 'ae' is beyond the end of the horizontal line if ((is_left_to_right && e->curr_x > horz_right) || @@ -2467,15 +2470,15 @@ namespace Clipper2Lib { { AddOutPt(horz, horz.top); if (IsFront(horz)) - horz.outrec->front_edge = nullptr; + horz.outrec->front_edge = nullptr; else horz.outrec->back_edge = nullptr; horz.outrec = nullptr; } - DeleteFromAEL(horz); + DeleteFromAEL(horz); return; } - else if (NextVertex(horz)->pt.y != horz.top.y) + else if (NextVertex(horz)->pt.y != horz.top.y) break; //still more horizontals in bound to process ... @@ -2486,7 +2489,7 @@ namespace Clipper2Lib { if (PreserveCollinear && !horzIsOpen && HorzIsSpike(horz)) TrimHorz(horz, true); - is_left_to_right = + is_left_to_right = ResetHorzDirection(horz, max_pair, horz_left, horz_right); } @@ -2499,7 +2502,7 @@ namespace Clipper2Lib { else op = nullptr; - if ((horzIsOpen && !IsOpenEnd(horz)) || + if ((horzIsOpen && !IsOpenEnd(horz)) || (!horzIsOpen && vertex_max != horz.vertex_top)) { UpdateEdgeIntoAEL(&horz); // this is the end of an intermediate horiz. @@ -2516,7 +2519,7 @@ namespace Clipper2Lib { AddJoin(op2, op); } } - else if (IsHotEdge(horz)) + else if (IsHotEdge(horz)) AddLocalMaxPoly(horz, *max_pair, horz.top); else { @@ -2966,7 +2969,7 @@ namespace Clipper2Lib { OutRec* outrec = ProcessJoin(j); CleanCollinear(outrec); } - else + else delete j; } @@ -3015,7 +3018,7 @@ namespace Clipper2Lib { bool CollinearSegsOverlap(const Point64& seg1a, const Point64& seg1b, const Point64& seg2a, const Point64& seg2b) { - //precondition: seg1 and seg2 are collinear + //precondition: seg1 and seg2 are collinear if (seg1a.x == seg1b.x) { if (seg2a.x != seg1a.x || seg2a.x != seg2b.x) return false; @@ -3146,7 +3149,7 @@ namespace Clipper2Lib { { or1->pts = op1; or2->pts = nullptr; - if (or1->owner && (!or2->owner || + if (or1->owner && (!or2->owner || or2->owner->idx < or1->owner->idx)) or1->owner = or2->owner; or2->owner = or1; @@ -3156,7 +3159,7 @@ namespace Clipper2Lib { result = or2; or2->pts = op1; or1->pts = nullptr; - if (or2->owner && (!or1->owner || + if (or2->owner && (!or1->owner || or1->owner->idx < or2->owner->idx)) or2->owner = or1->owner; or1->owner = or2; @@ -3207,7 +3210,7 @@ namespace Clipper2Lib { { or1->pts = op1; or2->pts = nullptr; - if (or1->owner && (!or2->owner || + if (or1->owner && (!or2->owner || or2->owner->idx < or1->owner->idx)) or1->owner = or2->owner; or2->owner = or1; @@ -3217,9 +3220,9 @@ namespace Clipper2Lib { result = or2; or2->pts = op1; or1->pts = nullptr; - if (or2->owner && (!or1->owner || + if (or2->owner && (!or1->owner || or1->owner->idx < or2->owner->idx)) - or2->owner = or1->owner; + or2->owner = or1->owner; or1->owner = or2; } } @@ -3310,11 +3313,11 @@ namespace Clipper2Lib { if (pt.y > result.bottom) result.bottom = pt.y; } return result; - } + } bool BuildPath64(OutPt* op, bool reverse, bool isOpen, Path64& path) { - if (op->next == op || (!isOpen && op->next == op->prev)) + if (op->next == op || (!isOpen && op->next == op->prev)) return false; path.resize(0); @@ -3355,9 +3358,9 @@ namespace Clipper2Lib { if (owner->bounds.IsEmpty()) owner->bounds = GetBounds(owner->path); bool is_inside_owner_bounds = owner->bounds.Contains(outrec->bounds); - // while looking for the correct owner, check the owner's - // splits **before** checking the owner itself because - // splits can occur internally, and checking the owner + // while looking for the correct owner, check the owner's + // splits **before** checking the owner itself because + // splits can occur internally, and checking the owner // first would miss the inner split's true ownership if (owner->splits) { @@ -3388,7 +3391,7 @@ namespace Clipper2Lib { { if (is_inside_owner_bounds && Path1InsidePath2(outrec, outrec->owner)) return true; - // otherwise keep trying with owner's owner + // otherwise keep trying with owner's owner outrec->owner = outrec->owner->owner; if (!outrec->owner) return true; // true or false is_inside_owner_bounds = outrec->owner->bounds.Contains(outrec->bounds); From 4a799aa7705d14767c7de5a7ebb7d1ce61afa0cc Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Sun, 11 Jun 2023 14:44:44 +0800 Subject: [PATCH 41/62] update Ubuntu deps --- .github/workflows/build_deps.yml | 6 +++--- .github/workflows/build_linux.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index b954c8062c..e42b1a7250 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -19,7 +19,7 @@ jobs: fail-fast: true matrix: include: - - os: ubuntu-20.04 + - os: ubuntu-22.04 - os: windows-2019 - os: macos-12 arch: x86_64 @@ -63,7 +63,7 @@ jobs: ./build_release_macos.sh -d -a arm64 - name: Build on Ubuntu - if: matrix.os == 'ubuntu-20.04' + if: matrix.os == 'ubuntu-22.04' working-directory: ${{ github.workspace }} run: | sudo apt-get update @@ -71,7 +71,7 @@ jobs: libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules pkgconf \ libglu1-mesa-dev libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.0-dev \ libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-base1.0-dev \ - gstreamer1.0-plugins-bad libosmesa6-dev wget sudo + gstreamer1.0-plugins-bad libosmesa6-dev wget sudo autoconf curl libunwind-dev mkdir -p ${{ github.workspace }}/deps/build mkdir -p ${{ github.workspace }}/deps/build/destdir sudo ./BuildLinux.sh -ur diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index f6ba96a85b..6bda2ce959 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -62,11 +62,11 @@ jobs: run: | mkdir -p ${{ github.workspace }}/deps/build mkdir -p ${{ github.workspace }}/deps/build/destdir - curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz - tar -zxf OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz -C ${{ github.workspace }}/deps/build + curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz + tar -zxf OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz -C ${{ github.workspace }}/deps/build chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build/destdir ls -l ${{ github.workspace }}/deps/build/destdir - rm OrcaSlicer_dep_ubuntu_05-04-2023.tar.gz + rm OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz - name: Build Studio From b943a04da724891e4a382508fca64905ef969869 Mon Sep 17 00:00:00 2001 From: Scott Mudge <19617165+scottmudge@users.noreply.github.com> Date: Sun, 25 Jun 2023 01:32:47 -0400 Subject: [PATCH 42/62] Fix tooltip referencing "Studio" (#1370) Fixed language with reference to "Studio" --- bbl/i18n/OrcaSlicer.pot | 4 ++-- bbl/i18n/cs/OrcaSlicer_cs.po | 4 ++-- bbl/i18n/de/OrcaSlicer_de.po | 4 ++-- bbl/i18n/en/OrcaSlicer_en.po | 4 ++-- bbl/i18n/es/OrcaSlicer_es.po | 4 ++-- bbl/i18n/fr/OrcaSlicer_fr.po | 4 ++-- bbl/i18n/hu/OrcaSlicer_hu.po | 4 ++-- bbl/i18n/it/OrcaSlicer_it.po | 4 ++-- bbl/i18n/ja/OrcaSlicer_ja.po | 4 ++-- bbl/i18n/nl/OrcaSlicer_nl.po | 4 ++-- bbl/i18n/sv/OrcaSlicer_sv.po | 4 ++-- bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po | 8 ++++---- src/libslic3r/PrintConfig.cpp | 2 +- 13 files changed, 27 insertions(+), 27 deletions(-) diff --git a/bbl/i18n/OrcaSlicer.pot b/bbl/i18n/OrcaSlicer.pot index 815c3d1c07..cdebf257c8 100644 --- a/bbl/i18n/OrcaSlicer.pot +++ b/bbl/i18n/OrcaSlicer.pot @@ -6599,8 +6599,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/cs/OrcaSlicer_cs.po b/bbl/i18n/cs/OrcaSlicer_cs.po index 7151df9683..a9e6534f17 100755 --- a/bbl/i18n/cs/OrcaSlicer_cs.po +++ b/bbl/i18n/cs/OrcaSlicer_cs.po @@ -7079,8 +7079,8 @@ msgid "Internal bridge support thickness" msgstr "Tloušťka vnitřní podpory mostu" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/de/OrcaSlicer_de.po b/bbl/i18n/de/OrcaSlicer_de.po index 3c653caa8b..4adf81a7f7 100644 --- a/bbl/i18n/de/OrcaSlicer_de.po +++ b/bbl/i18n/de/OrcaSlicer_de.po @@ -7315,8 +7315,8 @@ msgid "Internal bridge support thickness" msgstr "Dicke der internen Brückenstützen" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/en/OrcaSlicer_en.po b/bbl/i18n/en/OrcaSlicer_en.po index a9e51e731d..508cfb8f57 100644 --- a/bbl/i18n/en/OrcaSlicer_en.po +++ b/bbl/i18n/en/OrcaSlicer_en.po @@ -6849,8 +6849,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/es/OrcaSlicer_es.po b/bbl/i18n/es/OrcaSlicer_es.po index de8bfb5859..9a931361a0 100644 --- a/bbl/i18n/es/OrcaSlicer_es.po +++ b/bbl/i18n/es/OrcaSlicer_es.po @@ -6937,8 +6937,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/fr/OrcaSlicer_fr.po b/bbl/i18n/fr/OrcaSlicer_fr.po index c5d95ecfd4..928d57064b 100644 --- a/bbl/i18n/fr/OrcaSlicer_fr.po +++ b/bbl/i18n/fr/OrcaSlicer_fr.po @@ -7310,8 +7310,8 @@ msgid "Internal bridge support thickness" msgstr "Épaisseur des supports de ponts internes" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/hu/OrcaSlicer_hu.po b/bbl/i18n/hu/OrcaSlicer_hu.po index 04a89f34b7..ac96b28857 100644 --- a/bbl/i18n/hu/OrcaSlicer_hu.po +++ b/bbl/i18n/hu/OrcaSlicer_hu.po @@ -6906,8 +6906,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/it/OrcaSlicer_it.po b/bbl/i18n/it/OrcaSlicer_it.po index 55fc2d0704..f8a8e89836 100644 --- a/bbl/i18n/it/OrcaSlicer_it.po +++ b/bbl/i18n/it/OrcaSlicer_it.po @@ -6849,8 +6849,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/ja/OrcaSlicer_ja.po b/bbl/i18n/ja/OrcaSlicer_ja.po index 4a45f17519..e913a823dc 100644 --- a/bbl/i18n/ja/OrcaSlicer_ja.po +++ b/bbl/i18n/ja/OrcaSlicer_ja.po @@ -6843,8 +6843,8 @@ msgid "Internal bridge support thickness" msgstr "内部ブリッジサポート厚さ" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/nl/OrcaSlicer_nl.po b/bbl/i18n/nl/OrcaSlicer_nl.po index c64420c4c4..e48b2bf9d2 100644 --- a/bbl/i18n/nl/OrcaSlicer_nl.po +++ b/bbl/i18n/nl/OrcaSlicer_nl.po @@ -6945,8 +6945,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/sv/OrcaSlicer_sv.po b/bbl/i18n/sv/OrcaSlicer_sv.po index d049a3991d..11742381b8 100644 --- a/bbl/i18n/sv/OrcaSlicer_sv.po +++ b/bbl/i18n/sv/OrcaSlicer_sv.po @@ -6841,8 +6841,8 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" diff --git a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po index 332942e3a2..9ae334c214 100644 --- a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po +++ b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po @@ -6745,8 +6745,8 @@ msgid "Internal bridge support thickness" msgstr "内部桥接支撑厚度" msgid "" -"If enabled, Studio will generate support loops under the contours of " -"internal bridges.These support loops could prevent internal bridges from " +"If enabled, support loops will be generated under the contours of " +"internal bridges. These support loops could prevent internal bridges from " "extruding over the air and improve the top surface quality, especially when " "the sparse infill density is low.This value determines the thickness of the " "support loops. 0 means disable this feature" @@ -9697,8 +9697,8 @@ msgstr "" #~ "中打印指定厚度的环形走线,为内部桥接提供更好的铆接。0值代表关闭该功能。" #~ msgid "" -#~ "If enabled, Studio will generate support loops under the contours of " -#~ "internal bridges.These support loops could prevent internal bridges from " +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges. These support loops could prevent internal bridges from " #~ "extruding over the air and improve the top surface quality, expecially " #~ "with a low infill density.This value determins the thickness of the " #~ "support loops." diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 8384e1fe26..5641a13194 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1008,7 +1008,7 @@ void PrintConfigDef::init_fff_params() def = this->add("internal_bridge_support_thickness", coFloat); def->label = L("Internal bridge support thickness"); def->category = L("Strength"); - def->tooltip = L("If enabled, Studio will generate support loops under the contours of internal bridges." + def->tooltip = L("If enabled, support loops will be generated under the contours of internal bridges." "These support loops could prevent internal bridges from extruding over the air and improve the top surface quality, especially when the sparse infill density is low." "This value determines the thickness of the support loops. 0 means disable this feature"); def->sidetext = L("mm"); From 1ef8ca2de039f00c85d7fad666ca1392044ce2d0 Mon Sep 17 00:00:00 2001 From: Scott Mudge <19617165+scottmudge@users.noreply.github.com> Date: Sun, 25 Jun 2023 01:38:29 -0400 Subject: [PATCH 43/62] Bugfix for zero-width tree supports (#1367) fix bug with zero width tree supports throwing exception. --- src/libslic3r/TreeSupport.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp index 2eca6b343a..31db2d1488 100644 --- a/src/libslic3r/TreeSupport.cpp +++ b/src/libslic3r/TreeSupport.cpp @@ -1378,6 +1378,10 @@ void TreeSupport::generate_toolpaths() coordf_t layer_height = object_config.layer_height.value; const size_t wall_count = object_config.tree_support_wall_count.value; + // Check if set to zero, use default if so. + if (support_extrusion_width <= 0.0) + support_extrusion_width = Flow::auto_extrusion_width(FlowRole::frSupportMaterial, (float)nozzle_diameter); + // coconut: use same intensity settings as SupportMaterial.cpp auto m_support_material_interface_flow = support_material_interface_flow(m_object, float(m_slicing_params.layer_height)); coordf_t interface_spacing = object_config.support_interface_spacing.value + m_support_material_interface_flow.spacing(); From 3fee164058c010f2293b89fb5b73eb0d5aaa15d5 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 25 Jun 2023 14:39:08 +0800 Subject: [PATCH 44/62] update linux deps --- .github/workflows/build_linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml index 6bda2ce959..043c34fc1b 100644 --- a/.github/workflows/build_linux.yml +++ b/.github/workflows/build_linux.yml @@ -62,7 +62,7 @@ jobs: run: | mkdir -p ${{ github.workspace }}/deps/build mkdir -p ${{ github.workspace }}/deps/build/destdir - curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Mar/OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz + curl -LJO https://github.com/SoftFever/FileSharing/releases/download/OrcaSlicer_deps_Jun_2023/OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz tar -zxf OrcaSlicer_dep_ubuntu_11-06-2023.tar.gz -C ${{ github.workspace }}/deps/build chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build/destdir ls -l ${{ github.workspace }}/deps/build/destdir From e925db8c0f6dc40f46eb1b5f24c55b3f34016142 Mon Sep 17 00:00:00 2001 From: Dylan <331506+macdylan@users.noreply.github.com> Date: Sun, 25 Jun 2023 15:18:56 +0800 Subject: [PATCH 45/62] fix is_extruder_used (#1422) --- src/libslic3r/GCode.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 2d65ec76b5..f734477c52 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1728,7 +1728,11 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato //m_placeholder_parser.set("has_single_extruder_multi_material_priming", has_wipe_tower && print.config().single_extruder_multi_material_priming); m_placeholder_parser.set("total_toolchanges", std::max(0, print.wipe_tower_data().number_of_toolchanges)); // Check for negative toolchanges (single extruder mode) and set to 0 (no tool change). - std::vector is_extruder_used(print.config().filament_diameter.size(), 0); + // PlaceholderParser currently substitues non-existent vector values with the zero'th value, which is harmful in the + // case of "is_extruder_used[]" as Slicer may lie about availability of such non-existent extruder. We rather + // sacrifice 256B of memory before we change the behavior of the PlaceholderParser, which should really only fill in + // the non-existent vector elements for filament parameters. + std::vector is_extruder_used(std::max(size_t(255), print.config().filament_diameter.size()), 0); for (unsigned int extruder : tool_ordering.all_extruders()) is_extruder_used[extruder] = true; m_placeholder_parser.set("is_extruder_used", new ConfigOptionBools(is_extruder_used)); From 8e4a43ea5c55329e09d0c07661d39eeabefef427 Mon Sep 17 00:00:00 2001 From: Scott Mudge <19617165+scottmudge@users.noreply.github.com> Date: Mon, 26 Jun 2023 08:53:17 -0400 Subject: [PATCH 46/62] Add option for skirt-speed override (#1371) Add skirt speed option. Co-authored-by: SoftFever --- src/libslic3r/GCode.cpp | 6 ++++++ src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 1 + src/libslic3r/PrintConfig.cpp | 9 +++++++++ src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/Plater.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 1 + 7 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index f734477c52..6d1ce40f2c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4022,6 +4022,12 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, } } } + // Override skirt speed if set + if (path.role() == erSkirt) { + const double skirt_speed = m_config.get_abs_value("skirt_speed"); + if (skirt_speed > 0.0) + speed = skirt_speed; + } //BBS: remove this config //else if (this->object_layer_over_raft()) // speed = m_config.get_abs_value("first_layer_speed_over_raft", speed); diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 02ff26aa56..36f6633ade 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -720,7 +720,7 @@ static std::vector s_Preset_print_options { "inner_wall_speed", "outer_wall_speed", "sparse_infill_speed", "internal_solid_infill_speed", "top_surface_speed", "support_speed", "support_object_xy_distance", "support_interface_speed", "bridge_speed", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed", - "outer_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_loops", "skirt_distance", "skirt_height", "draft_shield", + "outer_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_loops", "skirt_speed", "skirt_distance", "skirt_height", "draft_shield", "brim_width", "brim_object_gap", "brim_type", "enable_support", "support_type", "support_threshold_angle", "enforce_support_layers", "raft_layers", "raft_first_layer_density", "raft_first_layer_expansion", "raft_contact_distance", "raft_expansion", "support_base_pattern", "support_base_pattern_spacing", "support_expansion", "support_style", diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 1650801034..b5a349931e 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -185,6 +185,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n // These steps have no influence on the G-code whatsoever. Just ignore them. } else if ( opt_key == "skirt_loops" + || opt_key == "skirt_speed" || opt_key == "skirt_height" || opt_key == "draft_shield" || opt_key == "skirt_distance" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5641a13194..25009af8e2 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2691,6 +2691,15 @@ void PrintConfigDef::init_fff_params() def->mode = comSimple; def->set_default_value(new ConfigOptionInt(1)); + def = this->add("skirt_speed", coFloat); + def->label = L("Skirt speed"); + def->full_label = L("Skirt speed"); + def->tooltip = L("Speed of skirt, in mm/s. Zero means use default layer extrusion speed."); + def->min = 0; + def->sidetext = L("mm/s"); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionFloat(0.0)); + def = this->add("slow_down_layer_time", coFloats); def->label = L("Layer time"); def->tooltip = L("The printing speed in exported gcode will be slowed down, when the estimated layer time is shorter than this value, to " diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 5ac32bae60..db93f3b1a1 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -968,6 +968,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionFloat, skirt_distance)) ((ConfigOptionInt, skirt_height)) ((ConfigOptionInt, skirt_loops)) + ((ConfigOptionFloat, skirt_speed)) ((ConfigOptionFloats, slow_down_layer_time)) ((ConfigOptionBool, spiral_mode)) ((ConfigOptionInt, standby_temperature_delta)) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index cd5baa548c..0801ca19b9 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2231,7 +2231,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) //BBS: add bed_exclude_area , config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({ "printable_area", "bed_exclude_area", "bed_custom_texture", "bed_custom_model", "print_sequence", - "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_distance", + "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_speed", "skirt_distance", "brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_volume", "extruder_colour", "filament_colour", "material_colour", "printable_height", "printer_model", "printer_technology", diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 497ef553d0..2bba25ff3e 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2033,6 +2033,7 @@ void TabPrint::build() optgroup->append_single_option_line("skirt_loops"); optgroup->append_single_option_line("skirt_distance"); optgroup->append_single_option_line("skirt_height"); + optgroup->append_single_option_line("skirt_speed"); //optgroup->append_single_option_line("draft_shield"); optgroup->append_single_option_line("brim_type", "auto-brim"); optgroup->append_single_option_line("brim_width", "auto-brim#manual"); From 1c780496aa4bf4a40df51ca3ed0ee0880409985b Mon Sep 17 00:00:00 2001 From: igiannakas <59056762+igiannakas@users.noreply.github.com> Date: Thu, 29 Jun 2023 05:02:07 +0100 Subject: [PATCH 47/62] Optimise sandwich wall mode when perimeters are shared with multiple islands(Arachne only) (#1352) * Update PerimeterGenerator.cpp * PerimeterGenerator updated with improved Sandwich infill handling Cleaned up code * Beautified syntax * Optimise the logic --------- Co-authored-by: SoftFever --- src/libslic3r/PerimeterGenerator.cpp | 53 ++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 976bdeecfd..e47f10f7ac 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -1374,7 +1374,8 @@ void PerimeterGenerator::process_arachne() bool is_outer_wall_first = this->config->wall_infill_order == WallInfillOrder::OuterInnerInfill || - this->config->wall_infill_order == WallInfillOrder::InfillOuterInner; + this->config->wall_infill_order == WallInfillOrder::InfillOuterInner || + this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill; if (is_outer_wall_first) { start_perimeter = 0; end_perimeter = int(perimeters.size()); @@ -1501,17 +1502,49 @@ void PerimeterGenerator::process_arachne() } } - - if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) - if (ordered_extrusions.size() > 1) { - int last_outer = 0; - int outer = 0; - for (; outer < ordered_extrusions.size(); ++outer) - if (ordered_extrusions[outer].extrusion->inset_idx == 0 && outer - last_outer > 1) { - std::swap(ordered_extrusions[outer], ordered_extrusions[outer - 1]); - last_outer = outer; + + if (this->config->wall_infill_order == WallInfillOrder::InnerOuterInnerInfill) { + if (ordered_extrusions.size() > 2) { // 3 walls minimum needed to do inner outer inner ordering + int position = 0; // index to run the re-ordering for multiple external perimeters in a single island. + int arr_i = 0; // index to run through the walls + int outer, first_internal, second_internal; // allocate index values + // run the re-ordering for all wall loops in the same island + while (position < ordered_extrusions.size()) { + outer = first_internal = second_internal = -1; // initialise all index values to -1 + // run through the walls to get the index values that need re-ordering until the first one for each + // is found. Start at "position" index to enable the for loop to iterate for multiple external + // perimeters in a single island + for (arr_i = position; arr_i < ordered_extrusions.size(); ++arr_i) { + switch (ordered_extrusions[arr_i].extrusion->inset_idx) { + case 0: // external perimeter + if (outer == -1) + outer = arr_i; + break; + case 1: // first internal wall + if (first_internal == -1 && arr_i > outer) + first_internal = arr_i; + break; + case 2: // second internal wall + if (ordered_extrusions[arr_i].extrusion->inset_idx == 2 && second_internal == -1 && + arr_i > first_internal) + second_internal = arr_i; + break; + } + if (second_internal != -1) + break; // found all three perimeters to re-order } + if (outer > -1 && first_internal > -1 && second_internal > -1) { // found perimeters to re-order? + const auto temp = ordered_extrusions[second_internal]; + ordered_extrusions[second_internal] = ordered_extrusions[first_internal]; + ordered_extrusions[first_internal] = ordered_extrusions[outer]; + ordered_extrusions[outer] = temp; + } else + break; // did not find any more candidates to re-order, so stop the while loop early + // go to the next perimeter to continue scanning for external walls in the same island + position = arr_i + 1; + } } + } if (ExtrusionEntityCollection extrusion_coll = traverse_extrusions(*this, ordered_extrusions); !extrusion_coll.empty()) From 1a809b0931bc1bfe7a5aa7c2cbb34f595d291cc7 Mon Sep 17 00:00:00 2001 From: Dylan <331506+macdylan@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:03:34 +0800 Subject: [PATCH 48/62] Fix check multi filament valid (#1433) * no need to check different filaments if using a multi-head printer * bed temperatures warning --- src/libslic3r/Print.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index b5a349931e..21f577ed69 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -913,9 +913,29 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* return { L("No extrusions under current settings.") }; if (extruders.size() > 1 && m_config.print_sequence != PrintSequence::ByObject) { - auto ret = check_multi_filament_valid(*this); - if (!ret.string.empty()) - return ret; + if (m_config.single_extruder_multi_material) { + auto ret = check_multi_filament_valid(*this); + if (!ret.string.empty()) + return ret; + } + + if (warning) { + for (unsigned int extruder_a: extruders) { + const ConfigOptionInts* bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); + const ConfigOptionInts* bed_temp_1st_opt = m_config.option(get_bed_temp_1st_layer_key(m_config.curr_bed_type)); + int bed_temp_a = bed_temp_opt->get_at(extruder_a); + int bed_temp_1st_a = bed_temp_1st_opt->get_at(extruder_a); + for (unsigned int extruder_b: extruders) { + int bed_temp_b = bed_temp_opt->get_at(extruder_b); + int bed_temp_1st_b = bed_temp_1st_opt->get_at(extruder_b); + if (std::abs(bed_temp_a - bed_temp_b) > 15 || std::abs(bed_temp_1st_a - bed_temp_1st_b) > 15) { + warning->string = L("Bed temperatures for the used filaments differ significantly."); + goto DONE; + } + } + } + DONE:; + } } if (m_config.print_sequence == PrintSequence::ByObject) { From 92e02dbef489c08a7843a4de1a36c3d1436ecafc Mon Sep 17 00:00:00 2001 From: Jeremy Lucas <47125917+jermylucas@users.noreply.github.com> Date: Wed, 28 Jun 2023 22:04:16 -0600 Subject: [PATCH 49/62] Added doc & photo for wiki guide for max volumetric flow (#1301) * Added doc and photo for max volumetric flow * Fixed comments on doc. Same old image * Added photos and finished description * Forgot to save * Added other method back in --- doc/Calibration.md | 25 +++++++++++++++++++++++-- doc/images/caliper_sample_mvf.jpg | Bin 0 -> 162302 bytes doc/images/max_volumetric_flow.jpg | Bin 0 -> 291719 bytes doc/images/vmf_measurement_point.jpg | Bin 0 -> 169223 bytes 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 doc/images/caliper_sample_mvf.jpg create mode 100644 doc/images/max_volumetric_flow.jpg create mode 100644 doc/images/vmf_measurement_point.jpg diff --git a/doc/Calibration.md b/doc/Calibration.md index ecadaef965..58baa67223 100644 --- a/doc/Calibration.md +++ b/doc/Calibration.md @@ -5,8 +5,8 @@ - [Temp tower](#Temp-tower) - [Retraction test](#Retraction-test) - [Orca Tolerance Test](#Orca-Tolerance-Test) -- [Advanced calibration] - 1. [Max Volumetric speed] +- [Advanced calibration](#Advanced-Calibration) + 1. [Max Volumetric speed](#Max-Volumetric-speed) 2. [VFA] **NOTE**: After completing the calibration process, remember to create a new project in order to exit the calibration mode. @@ -82,6 +82,27 @@ You can assess the tolerance using either an M6 Allen key or the printed hexagon ![image](./images/OrcaToleranceTes_m6.jpg) ![image](./images/OrcaToleranceTest_print.jpg) +# Advanced Calibration + +## Max Volumetric speed +This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament. + +You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer. + +Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well. + +![image](./images/vmf_measurement_point.jpg) + +Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings. + +![image](./images/caliper_sample_mvf.jpg) + +You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet. + +![image](./images/max_volumetric_flow.jpg) + + #### *NOTE You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.* + *** *Credits:* - *The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)* diff --git a/doc/images/caliper_sample_mvf.jpg b/doc/images/caliper_sample_mvf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..718a124077487d62504682e6b14d96c7f87e5e53 GIT binary patch literal 162302 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

EZ|Tu; zT3@P?v;HcXo=u7q-I~`iqQ_)8t!tz+T;?}5pn@fwMD9U}?FL-72Yf3ifEY{3wpv=k zKoU8uZhM^VA*NFk(z}ahSPc;cpEZLpkj93z5ey9PlmR^9GSP^?Qs&NI&vUbyLx;^L z5;u`M<_-IB(wv$rRMGv_TB155ZCOr0hQ!UW!uVk4NamMB&NBeWfCckcc@y2%O|rHl zn`CXF(;?AqdDe%4f65;Dh7d&B(J9GTTC&kC50so7-2VWUVCFc2K_8?_Q)$yFex$Zf z_Kc5=Z;0EXI05pIF>wcBmDnoMJym&>GJ*I|L^lA?!b4g!By+PvKoSS#XgdwcP@&A3 zgY&XR{2b9Hjf9zRROT2E*z5p^9eMu%Hf1Lbts+jI273w>t?OG|7RS%AuM8$X*Fk#vdNWOt$2Z8Hob<;*v%ZqKPEC5 zipIU}Xp`Fa8{Aw0iJUbVOaX#xJ2|AbV7a6lzFFZWol=q5W`!vIm4XagW|D1KPe_Lh zOJOsZT~0@W*1Qj!<|jDHU`ls)`bjQ+D~0E_J`i8;#%3>QypS7iq%Nx+-FV|f=7 zqjct#BL3Dz{;6tXj(6~4kaY~xhVZF9&A~s>_7ZV6TRGb^3A9jsVZD3g(})GWx}5PA&3#C@zA{ zg<`5QbQ~4bCiPsEwlnUYe5(Y6ch^M3SA?8MyLu#dv1?3D{{Uo#swHqnw7pkFiCmTA zHqK3j8Q7&<^jMFY0@ZRf^0EXum7fT)M`z35ps}$J_J6Yc?JyN#S5)8tRJJpI=mrBkR;A8>XvLYE98Ac~y4HPg(HZoQb1>?yKX_ z-lm8N#!34W8m-AoJPDikb5@YB`du`ZAt*5&TJT$ZPX7Q@zJ5Dqf-Pxpp{_lZY->II zy%n5TmBzXt=4|^Qs5Topo%#*@FI^labp;_}gMResb=Pj;Dk;H2i0a^yiYMEZ6Lma(++j1P}?9g?Z44K4YEVCz&D~riQzG} z+H`7|bByY*z)D5g^I~L_FY`nepHh|;rHQs z>V=;)U%Iyi=YHH}8A@7+JEwP5?BP2+eCy9WtjbrDrf0hI+jL!0mHwe!W$d9ccbV+G zXN&IFZc_%V~Q-zjoeh5u<%g9w5gZ6F!0e7hS%BW)QpzyX+NY7h$||)St4Bldia|?9$=JI}Nh+TMxUhg`j+I-nJWDmPTd- zKHImRVLZe3;p&sJ?W^%jx3}2=FyuxG;q?drVO4rN2VWTXKo$|I-j2t1nhRU&T#-+Y zKV$}+e0RRJEjlWMQ`hO}hn%Px52~w@_Ndn$6|rZ;=tp_?OWGn_wZu1QSltW^Z{Zd+-`mlY6eo!o9x zXs$>DLlwID^hIMX;c!}j4RG~GXQx|`TS=nr-(;<;1H!qcVjHzqz4dabx7#aJ%)Y6G zb*?TZrl}o#>l5gm$`N!`*GrNOp3A3iEo)iXp0;KT3^!l23%aZ89iBi9^}#P;v0uCB zt?c%BEbZE)Lo&x_chI6hNgsA zQ+f5h36Q?3K>BqF0kf;RiHL$-$FbWL6L6gZEn*q1SDWy?%;Z`HwRq?u#9Bf<$bSD!@W8rr77 zoX}!DZX=K$eDzWgh--oio$KnQ6BIYrlm`7-x#;oU_7DX+L0X zRb09YJ8OEbu-WRjt0qIaVSCjLoVO(h3|2L$&^Znzc1H)-!bS`0jc^FUDqu*?N<;{; zN?tKSK_kipNA*&R8oH#S$C?vvn~G2fQZXyKi-M@kIFS<0izH}<^t?vZZ&d+z#I9A}eC0 zf*^W&7AEN5R5ryyi4{Oa#<5isRyJ`o_=8o&SJ>iL1!)eqq;Y`Cwyp>94Db4)+5Z6a z;$Qy&Q3-eMX1Ojm-%XD{CEJ^-5P$ywP9q=FHC7k%Pu&^!#=ag5xK;`dXOu`71+d!O zy=R(T!nr1LJ%c^qXcwJ}Plm3&jDQJ#$$7Z~y03x+fC52dTieA^Qi^e{D;V8StX}QYU=Iwrx(XR zv}Z60iLjT?K1cSEEZH3dX%ou`tNP^##>X-yiYQ45vnqs&^x)~(1 zI{69DG19!q3xV>SI-YrxZ#l*8Ep`FGHeBWi8_`*u=y~t?nJ^yd{J@!pk)(dmP=j-{ z6M6YX<2e48F#g-d8sxJj#*m04>6V6oZv*C=oJO44U8?lSYV4v~#s zAEan47o95N)0bk#Fxi;avJ*>Tz-Y~D8YeR$i8qqte3d1d&LX+ad*0waXFB3cr##(v z`BxUKqh}Du!p;#IV$O3em<EJFw#^YI-8xhXLwsHnpxuf>a5M*aH9G_?z zjRJa1&G$?6j)hj*NjG1ECUu924d5S?s~n#QfLS2j_>9q`UHoK~HAk>gbZnu4&5a0v zbTq(+#C+43T@F*WLvCz0-q(D Y_hMf$Za2ia(0*1LOeA3Pi`Kjv6Vc;Cb;>t(Ij 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 `8*POdYA{Zn z&qD4V(b~p^Bh@LvNamw)^=g?+$8q7GZO1Y6#^B7N1erFmmZTo@jq`W0+Ed%=$n$|; z_hl>}5x#c{t-_FVODxF01NUeD70Uhpz0Lo<6g)Fsxy=h6u2pqMk1aRT-%i>hI6o^Eh8YLa` zYNbf{9zeL#Cj;|;0lrCamyUvQ2u#(10CE8wO#34jU2xgQc-J4SKw8~38(KH2cnX-X zU)P4EzTk)9e73(CDzN>x6G;ddl4$|(Vn|eM)zK{b{e4L1Y9(Me=1(ZZdEJDGdX>L= zTI!Q`2Cm3J0!cTM^}1Q^>fFIxQNSoJ1jSXi9jM;YMqUA9{q5|d!J2Gez$}b2pmP&Q zoDN|h##gEbbO?Ivuyhw$kd%5pCNu3>mZo+5@7T&az^tH~X^ZEp5p{aC_R&i4PUU}E3A4_3XMY2ylN{owKNXHLCOsZ2Yu*fb@rv3BvVQn4r> z7|usNX^2W=c6p}dOJd@gHZV{-^#SZN6AFeq0G{r$q9V%4ty^LoOJlS8yW*+rC;#>` z=@pmhU|NC4h;>Wqk@b%~a2lSMUI4vL)DD!)L0FCrMNzHv|_k7?zwNBjhAR=mH7Z!Dcc;I z(>du$$0*nsxyIviaR^@07k~7|?j||!y-(&;L{#yx8ik4!mO9qal>9Zpz$rP8#smD9 zM|Q;JW18HKRcsCePaSUXp|!KdCZXhqV(z#4-q;2zRpCooN$TN)P9Ei%5;q#UgHaAP zQ>#&dM^3r#`0>ays_9SJzt3wwBXl4Gx?Bdnu4-j`wE9j;5zyl?J)B>1U^HP3&y--Hl4k4o(6bIT5 z7$se6n+HykEo3m}lhB4|IeH$OEb*AD}5OIH0vqMQ>NW0nwTU-)25wY7&6^R z7KoD_pxzS{XH#?)l8BcM4On0sZ0}00WYF3qNfaD=cbs@8NRp;V!adbGo7});O!g{{ItvwCVAe5LQ2(->N$%r~HWp zNc_}}&M5Y^wUfUOcH*n4w?f$N8ap4N+zVs;5--7sqDgXen>a?ycC@ zpZ)N#!O0y8CS2Te1=d2}--O3jRMgY0g50^e*gOAf$>y1cE(XUkj+PnGJB?S=uiMjw1ts1S z>VtlRp2?fufltMeJST0xxi#_;IV^4mOaQRqHTWF#^*Ya;6xSf7O8MdR)GG~wxn>)}lD&nU zLa#cJWh}O3+H!A<&7)`_*Z&gS2uBRT%XkCIsZ2N`t zepdy?e+8`-W>!oNwi1RpBU$ilT2l|kgjYGE@@{EdLu8u%XbgM?2G0pKgnwL!(B2kC6xRBzi`f`%VGkoL`MmK^v|VezQx zx4%p|gk9EZnHnhlO!#{!=lToSFt%0DQTpauA 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
7^OU$j$ZC}g!iz9uQ+6qx#&6||)(Nmpj_w-Y| z-sWX&D!av>IUvkq2ym$1)%UozFPr-PIX*b}nb>8G7}z|Fy}rx;Vz1bizd*0#7x&PR zN!I7h3v$yM?Vi{7Ju-oG-HVH!quu<1Vq>^+?V(j>spQqfpTiu|P%#z+;}Q_d{OkF0 zPdOat_k$bJM0tTvx)@L;RmC>={;b(lDTMV`hShS<%JK;It!C42ZpRP1t6se%efaX@ z^U5cPFA1&bOXuQHQBKtOltgOCMR*}Yu-mM!_z?PZNN0A8=H3oDhovj&1Gbw^5}QSX zVq5C=JWR;gtbM(?>6SX9xc*hS;Ldlz>0$X(@6G!g zv01N@&j!4@uQ4I8AIl}L4Al`Dy{GFs=LMhPsb;^b_Z=9kzD}#Cs?#NlpYHdJ>k?`R za#zMcIs*ifiR}-EhS&T7)765x{epD|OLna9p>CRDoJXYPTmspT8Ieo(xdf;@p!5nC zeVNJqekpp9rNOwcBmQ_SLhUP)B7`6vErF+w-*%XCazT_kl;H<;7^zC>zs;3`+IC|} z&hi7_ac6>_rU$+F;Tv+GTEdKz&|q@}WCj~4jwGF7O9mika`Ny`O$vPvY=c{`mcd-? z1m|k{^ItL+_x1zb%vCX5sG*s#ZryAT=P6BbWk&8Q&zzpgfP?y2U47F>!B(~!lXNfU zO9P2A{gU-a#|wrlMc$8!HiUfiEd1D&JVR-1r9LO+OU>E*cd}@f^ zi8t0~d6r`bO|rRv5+0-8J@3|I@@4TSOYLdGMij^t>|xYAISIvXH~)0=y_Ph%%lcVt zNN4J(gn!%8env1lQ#xsptbkaPPJWie#gB{1~vyUmw@CWaoc6lm@af5FOA5R_E ze~;mEyic&d+2DArbR>G7o}j?Ls{=H@?+zQtv1ZaUmn-8@_~KgDRE9cpjlUqn361Ak z`tlMzqO8evu$0WKe4u4ok(jg>K(36+<)%mbtpa$2QFPs5w}$Da@a7QzF~4W5r^je% zpns634KEXv5nFnjL;vKy4))|xu7r}@e<{cyJJh)+edVBW8lBd9Vn!+fF)*i>Vi>&lYD#VgeIkCd|>?Pb=K_I7ojsazjr)o_ z7N0el6O&{Z2=H#3b8OU$A6|)(iR}QG8;PebmYggE&^)EF=xEDw1ZGt;EhfGO(Rj`6 z{P+#`_Psu;7ai}25MK&#!3w^+xEQ@FC3~jp!(Gij7cT(o4hV`lNzD|#7V-WrgEEIb zTTgzP5iE{fP7u{kckdlRGvv-HKBv0@OcdP%cNJPYWP62%I#gB*+2J`T@fW0HwC}>u z3(Ui70IN-Ex(Q;PzwR>5cT=I;uxlQ%>GsD5-cp#7tDU+?9damZBJ4)Q7n<+FsSIuZ zC6^f&D>7FG*+iM%0#VfA{O`n+6A3orjvPc(PW3rze1~@6B|EPqmN2I$G}U&s!^@cx zPm9W@K((AG?45{%2yNvahHFafBv0zM-E>MoQ7rxm|GI-^*vA^Ex{TUp=?Fybc-%9; z(Mi|J9E7@tmp#s|1B?Dkd)u^{Ah@}f1-vw-ijUx#SQg;RWWCynCC{{09r1?PcF|6X zW{O|}2X;(VZlzv-v#d?Buz75k)4id;dhh-i(jDQ9-n_nn)WH2iZs|Qmu8_1%HhJ~` z`3sVJ0i4|nO5nBVg3iZR+G9d?)fs$O+>iZZoGy<>9xcKt%rX@i~;$T0WJ=<_5n;C(mo+>KwJMf`P{Mn1reF ztEW3DN&S4aSZ92&aRHueF9zvMT0yKjAswO%bos~c7NPZ1u7g+NXcdd#61*Ra zob6r;?mRG`wz9t)p)}3pO8N=(!nf3!+QIxG8WGtt0l8Eg7#R3Y?^ITOWm}UHb3J5)?Pr+_Z-S@ZVOt;|#@Vc?ms`s4J;s2<$DM142}nP$9$978ts=TAa} zaT3y{i|5qgi2Y{Hv)V99Gq4_5O`i|1P@cH5ko~w}q*|p58Kys0I=*OXG9&NAxFW-n z^MPKCg=;)uf z&jQRqlM2o&eL!KZnV6q-2;#&>EIU)B!AN~<0x4!ltd1PZ9C;s)O$r|~D!uxgaaJha z=Q6kXxY%gN*eMUK0jsSY=6PGrlV3F-M3AsyYx5w&>#ErG+<Mf z%F(er z8P<5Btmid)Df^M{g~=cNOb(WlUa{gmwi33%X<}W8LxX5DNMBWr#pWz~)Q;oyd?hw^ z_YG7lI~r{ef}gWeo&Y5r>F61@giw|bNYY(EImQf%MKsKMotaqPPB?&QUjB@ zmf8uubG=VzpmBa`r+8dbUb2LUayrSP`kik-j5VGznm98t-fiKDrL7(vx6Z%_RKGI0 z1L@W_V77FvP{mG_P6x1HuY!aQiR}C`zdehxW@!YfD%~?WFv#5q=RL>BFS((M{t9=J zep^xSD^~vN2cmSA{tZOa#a*!8-^6MKou!oo-q(%Jx_;cHc(!<_#5HH<06H^a0sghn zoVGeKnY4^x@p*RMDa|k{481RxqsSLgT|!MOGUPMF{<2DuXg(o4`mwxOJtr}-@Gtzh zpz(ZwM&!=WtFaS9Cyy9uM5Vpg3aQU@*{6&`33qJfi9h{00`TlSKRez-p@Hs{_)fs0 z^O@f4z7Fa2;=WScam{xX6nTGIit6N}9zBU_ld$D8r=)#wRYkBz+|1JsH|!1kv_~^c z-e$s4c-MsY;Hu+xLVK?9o!jA2Ao$N zy5YbL+i2;=vMfzEDFc$-B%W%x30&-R$DcE$dkn5=IN(iP3>y&ms+@5ne>Bsa*mc0C zqBZNTowP=r5DmIKrD*6`NU0htvXCg#FrIg=^T7)*h1O%#tp+!)GyVhoIsVQ6o49>x z_`7u%j_i7RgQ6l8RM*l2sc-7g38!P8UeGniyMBoPo4YKKNxhjKgVkK?>|fD zKkIpu$D>(aTmzk<&sMM%G^DpyhaTtAJ287>GQ9K8^a*slk_M{K7{w6W%}mfRgtMgP zTOkmULQ?HFfsC#t1!pShn?yIXvUN~$GQSTx4LJ2*@`usmoW>#GWqXUJs^%%qs?i#! zw{jalU|s7|YBoqzIV4%s*Ogzu34D+?k*>(A03!tzfVhT1sx&WzN&@ z_fjIMHuTVm_t|OqvOkxN4(qhZkiL93BHa7mXH6{KKBFiO3qvfy5tvlzksQQO=sBLK z;4g@wd~;R0VC89%P@V9;ZM$Eu7JCP0=*kbxudNRikTDWVuSNV@v9;#wyAou$%X!D;=0aUy77HuC9; z)~1Qv+K*DMj5?OL$zJhr>@T)nqX5nm_9nL(j$TQ+P$z@L$$*>56Fpc-T(z~4_iV!8^9g(C2x>z0d z+pE?WTH%Yc!m!TN&4?ft+^fbc(-E8$5EHoY=Y>aOuh5lu<&%dYH2qW@D%2l}TIbSP za~{T7vK}5HHdq$|Q}Be~BS`Ik{o?=a4pb;!=RA17*eOBgOwvBj6}+rVMRIWEAwZ1(fZ9I< zi18a0xxgKAzVbeS0#&sQU>X7y)2mO{6c}4v1F(EhdH-Cf3U7v3f{oT+UQ}Ib;@0$} zLMQ`9lcb{&3md5-XS&2w9NO0iIe-%XP=r{|xmDX~DH^l5zNVctbdEYKRwp7dB)hT* zUX=CrwPbteci@!u$^k*iy|D5*{f0p6*-YTJ3FNiaaVFGQ&2%8fa!^(aw@oB??XFU1 zdnh_)mxCt0UN1y`5N#GLlZ=@sURRK~9vf;VIU#uN{}HUtb?F3^O;iDnA*G|Pix(4r zZUU7^)Y6MYc5jGI&7~8LTsXz~9L4yWfz0m!IvNe`PGqY4O<6!40$v!p>Jb8ozLFc( zz81k#kKx^Ah=Q^*1nUc~n8`-HFI|U>iP&<#M-Q{*p64__*?32FtUQyF2Yv-&nq@f8 zzY55i^U4E=>OHG2I6)uii&PZ{b|EPOr2qqhp`NZuBl&?J&&|(@>MT4m4+%v}y z{Fxa+rk4mUrMWxO2xGYuz^8??e_{u*%yid#O_@h+>E!P>j2PVcbT4Hg&iu<+&aMnd zsIjQJZZ#6*nj;h=n|(_ND6`~&0owfq>)bG+Omtf%6(~^W<}`EZ$lPh(dOLd1y%iMV~Z=Vq=>BU7b zzMlWgIAZ|B`@qdosw;hnZPHFfk3A3u6Du2$~Wefd|9K$ACJr@ z;H=ZdzefwA|AG>@CtFS9Xy6h>bjw)1x+|R4C*_LJtH^ z0O2O@AK^yp(Vy9M8ViXMdWc@(l@7pFY5*i0V+kaE{s&c**GITpEVnp!1h?wkwZnk) zBlh1e4C-^7JWBLElg$s`Ce!bb2lQQ;Etqw{9hd6uzFWf@T$H37zGt2Zeoa~#iZW+F z2R2?8XqwE1-n^jAO}{oNSU11BsxiY3!|0WsHR#GIj$x{KUS53gN4g@Wx$B^Tz4Kow z+}wjxKdwwPrGLu%dR*YV$aS2 z=JCz`Z>$8HyJ}CyqGORoXZ(zzi*pzVhqO@W#_zfA8jzz@ z^MgWC87D(NZ-5mY-W2nD=7g@QF7j}I+EB4AA8vAiWWDGkIx7$uZxGrfDQf( zp;lwcYHcUWxga!gMM_4#;e{80=i?j4-I5mdzQFnP!#C@?aIT3@&dD_NS4xB_TGyC~ zupp&FGgOZ=33*()I4Fe0hxP^z`2RjP9I&(a6s!)<s|UjaN@n_yi~R_CPi*@vn@tNLW+j9As!t~995 zRCezfODj9PXL%@sFXxy}IrH{Ml7wBVLe_dWF<{HEO!D(5*-T2rNu!I{GICEMWu-j&be?4VDHfFdN$ ze8P6F15~OW-Y$Qt3EXygd)K!gE#rI#$DN}l-(_T%KaQ%n0a_M@x-36=!LC4YX7`sw z`l^)dkfzV>RP+%cm`|dwaP#xC>f#y%pyS64x_;sQa;L?N;c&(&ua-5V%R}Tif?6Q; z2tkgG=d%Q5BvdSzo&W+(56nW0EqKnpA%!qKb_JCtNY+wLTUs<8lUu7;pS)pEZFMSX zBH6CANr~GT|5UnVqYJ^9wcf0-G!uGSSG83%4ms8to!xjKj(=1hw5m2E zt6D_gb~xGm_-LqKC;sD}!@XUV2R{tPYMTR-DWBULRZZs@9`^~=)N1k??aea#@&I9j zpxH4(mUn|{{7%R}>i1T}@z!@3UL;Vuse^F4)oChM>9)bR;?Jp?Y?#>jr@LDlBMC@5 z1;k1u0uV?emM!aSx%y`_UYY(3w9EmTLYkRBFYrv1z41z>*A{xsXb|)6W-O6=++UEM zJYTf1NuJWDmyNOyv<%nI#W>4B+gneI9XU4dhz$w9a;A_K3e81^PPbs}+Bh*4PO+As zopp$rE)a>*FDk-3(wfQCQqrBV`6%`;V@=AQB2`uii^WA50y*$CTRfpHRhnE zd4C!#m*~=^`du)xFmJ$_{ZFdfaK!4p+~B62QovfQA7zl_U2`=F-)6F>9mVn9 z)AQR{hc*AWr-=zkBRg5vJcEmI1$nZrP7kd3>fIDTL*mRX60z>vi%4JH1xXA~mKUyL z&e!#O`sF4=>41vSy6q3DdS80 zm_{rVIVWrXIOz4!I|)ldv2w4&o>Zw4iHOYQs|zlT3isgc#b)1`?U<%y=BrEqS8gH2 z6M*8Y)o5>)@D-uW!obD-?D2@N-`mGv_v=R&0@RjBpHkq2hQ?hpiLsMrQ?ba#_JG>h z3E9C1(SDmHHYGjz)~@TP|7avttZ9h}UxuKQjh11pT3Gvn-HHu>i~n&%z=?BQn08=b zZp;Z!>!v6-TTrnH0 zqJ0=nRsq*ng}%j@y6&yRxG9 z9QxhEu#H{GtUS<(@7p6T1g>GgQK=oMnxP{h`G_n?lO`|_b?wP*6jSU+W(kNCW#Foh zmOJh}D^GsE^?s({A5>RvWZ+zsSg3jRY~l>OM6UiLricBGSVcB>WPb>Eu{J4txm>L~z>%N_ei8S}rdu!pp{1^;nFBe+EBrjGa2M4rVt$}Y3t0nK zJj^v#e8O%hZ% zv(4#cLi#r(t>Vk>GUQ)%#vJ!_Ia*P9o5KH%-{-3v2d1&I;2nHoA)9+lS0|@%X z`^Nkyjfih|W1rqd%cEWn9&L6TzvV?%uzRy;3pU|ZvW`zn)8fEHZ)I&EnbGT-ewT@h zV@OwGP1jHH#e7bPJh?~XKW)!L6~6l2aTl-f%a=5tK<#Z4&B4SIYuhLUmN(y$t zqSq6NH0j?va#VzUW}tZP-q*SvJ0D{UgU#dj%opYgljQh#-j!IAe;|Asi^HV0J7)wt ze~JBYY+NHTQ&#&2d0TqcdW3{?p!Phb(S1T)_6#yLtkw4VIjXgz%XjAR&=1d9pb@r$ zEP~btm2V1r?AT(`xOVep0EMd}>Qz+^?gbj3wS>Sb+Mw4j1XVU+=0@<}gyvN0T`sQ? z@v_UZ-EMx9qT!yTLzLM3qd<1;`r2Ff_}$_Aq!Mqsp{B1-d3C|P6y4Br#p+f! zF92&g%~v2cY(;~@e$+H-kz6g1zW#Wh!5LR?Y3|A#vmXC&mEnQzCTDC?b`~AvRchJw ze(06aqxGqoys8-8A}8YCb*!zF=G+<-K-zr|#$xbN{aXbr_a=$)!hyZW{d7WPtYFB6 z9xaA5`oTo(mzl+Iu$B=d2cDuGwm9Y_Y6}gu*d8qsf6^@wsFUb*A++bIP-d*Vvi(ad z%1`(f6H0gD@|3H*t&veN*4o+WZ8)6+1@{wz4=};#6Wn6%4fI3VBflUXXY%+D_b?J|}-49AJ*`V0D&XaE#ewh`Fkz4f#4dhv%#6J`GSE&HXuRnhFCLrb!_atQut{7B&9{bsAV$KX4{g(Fz1PDd=qoIdx$A2)TxEt zXVtuR1OoM6;k7iV<9S$BRiCQNT*%`>=mpAZZ>RtwPl+-ie z{B{hxEu1i`$;AhFL#0+6RRBfE_!M672Eq+cx?*6_FmTf&jEb(AvpV`?^Ku;3bXk)z z1cgqJcYl*7NBTs`0!gd&DOeUneDi+Y!5Rb8SsymWeMy5B>u)?!E^L3gwHhlW+ppv} zuEZ!;Eq{EdX&`>nR`|EikPNmGy{J)%!l<$e43{3p&iW$nyT1J?B3R4g^VYo@fO|#j z-@_Jkqqi)L>1GzsBuz=R0w0ZUu#1e&5+--=-EiUBD8ZE+BG#Cz5nrzXbu2-sNpLle zaQoc2IkNzbH#3kKzc<&z>{pReIITi|k;#W&q zFf8oF&d`gI*CPhI?N@KxBr6TSrh6S0dNb||rnkV@C_ujj6XK)2z(@Cc#ls>lhi|53@&nnYk-+8P zA@<+_<_Sbn;2|y~Iqn!*k2sR&3&(Sydm@l|6!I>$p``N{uo+rFkxiXJw2Xq_3yMMp^5`o~eNOW^tX9dM>Es7#GZ+Veyd-3&%kjTVY69r3#)1$B1t~|kC z(}NPo9V>p+~OH*y5Ji%0eM&k3~w}Y>{M6YH#QMaE9f_reXNe&n?>3m*!Nf9=7aQnM* zr>M94i*8Y~-anjTZ14YLx;{puI^O{NLy%9R!l=i7YE8{O(ipp;tKKqVz8i|QF`Gg9-hthxzj_U`sVr3bl64_+Ylx;kp{E-XW0`jC&KD%JNMz2?19 zP>^L0wYwf(?;LeRVGQlZuLGR1`vH(C2sr!Cq7ingt!zasH(7lDfalb`V6I*F zIe+reIwg~pl_MGdr}jdeHs%WWoK>upDO|n;HF>yLOudpLaOHKmYp>Y1gpdsIzW6Hr@7!5BKczj4y1u`f0u(7Er~yuwd@(bQtZb zUD0J!z4$>?n&ih=XwkSZO*3lZ-rMVMcU_quh>(9%=D_uE{wU7`e?WoDg|td~zWGd_ zbT~ch`XkB;OEB>M+6eV_7C$LPP-2}|IU^u^?kkQDe|KGG20J$njPv40IN10WB!kx| z);ta)#Q_F8H_$>r{C^*!(axX%btt6=?Ea(VbSn%+1)PU%(s-4qn+V!+JI&XZh|X&{ zbdLX67eR@CD2v|I9zGoqedP<$$cH<6IomWsZBysI7rtw!rgCq(2)>|^6`ntn@$!tlzotb)!CMH2+xIZK5_z`7(J=lFapD|54(r7a*Eo_e4W`8$|bTMTB;YKauC7EI)c#o$O_K zH^ePGyCIHuqDl5yRgOyecIrZu`}esS6ZlhG?%XaC&re-kH{W*O@h*~PoyBQm(*iv$ zm#r|O5e2nz1F0+$_PIWv)14$W2!#&A8Tq=P9}SYv@Q)I^7@4Q;Ui|1NRD);>SjDv7 z@9kxO7z;=JYB|Tt{#LxmnnPW%zr?-3`Z{|Tl*cSJ`$^K{M%?WYD|QErGMXQbGT!D) zBYQ1wJGNS`4?0W+5MI67@@ip0?<@jz0{>2FI-~pY9BdpyDjLIEhBI?r7BehO?R0dR{2lV~QCs)05AQH5NeL@G`mh^J=VPuB<_Vc5~e(ej0qg0h)gJL&n2{ammlWQJZZET<$@H^9b zWuf28ZfC&+x*^`SZQ9c@flb8RY2VmX9L1@W&CFng4^pU)+tY0+3?xmMSI07wo+bIO zWVq{xsE!>VP39H6k8+S7jTjZ2WwL?l{Dh(~Y#j!4oUpCu;D!!hxOj(F`~&nxoX9u2 zh$bQYgC9*XdTM2u>iU}h#oT-Uv-!vWzfoGPSuL#{Ev=%cO^FyqX^Fj8i(0k!j8UVC z6h+NYBetr&cS38`ioN%a8HAqe{W<4$zUOw%xt*WSAK=QBn7*aEAx%53%XHL7SM@P*hn(^a@O9v z3{jDGG(ZtjE+udByaORl2CbhBR>FTPKM^QcsJ!c(1L?(xq?OL%i#uOd52O?i7H_7; zRDMhyK2(06Bow`v7|9+&z5M^UQ+|ZVENPcvR`XxsQax2$G02GB)UU03s*fb*o6Wzl zo|8&f_l+Y7PZ$TUZkD$mJOSig1dudGUXTMq_nUv9nE(4T*eZbL67XjC{wHF#1I)Jk zWm7s}`K?&_4Z z*pXgO<~%jw8Mf(06W(gVyxZ|%)U(n7^B?~g&ShC>2mJ8lABgC>dJrqS2tD@&>>EJ+ zC5V9g{}M)X{=e{*EeY4}T6gD%uI>MUQjyodnSM|HSh5>=xcv`w<2n&|ou$EZ4?yUK ztE_LY4Q|RGA)MRyx9c<=&+9R!9T`>T3$<6kJ&ots&iGg~UX@=r`=9U3NK&^2R`t&( zikArnI)2BH3cC$*4*6G+_t`LcO91`Pj(d}**)@BdHiLz<>Aw7{uSq^$K*wXI{eE5y zgFBCM34oQWt)RNA({p(giKpZXsNAhdke;{@dFn=hAwJNNe2Lp=J?j^)y=+Ycua^ps z1?@ZEMHs?Ha7)QvtgRZ|k1qIE-;!K*vZqS0c2=_!jV0<|M29M4pid!3<3SI-THxGH zzR(*`FaVe|okNB(Q*WyhpoUNwN(IE#Y&&x*X)EYg11AF+4_gn%r(%My15`m0fsRVR zJ7K}S{Xk0Q{M%bXyqj-%gq=7<`Wwh=E&Sa!0v-4LGb9^{3|hhB^dQAyvFPvQ+dGm!#B4PRaqm@ zK`hDy?fP9MT2RL39|g*`e$W#sYFUl7%qma-R7D<9J~Ujrt~?%eKVeV$oB8n3=wX1b zMk>e^x2y1kQihCaF5~U`{2?j|#N|1xg;4>?s`ZOC^OF|zgJ>7S_oFmM%2~e^@5|h& zb4LY84C>I{hMf6@&x~`aJT`E1Q80ZPF=D1ma z>o!7EYa$AY;||*ZQl=}=U?WOTX9#WVH&DnT*NE#jj6-syCe1KY8KuwY+Bf{r(n8Noo;P5^HzZU>ipDV z?MuX4>LI;Rv3m~AdI{-zzme6QG(h{-stn6fkgC(0r59<^reA^TTJ~&=Z}IB)we#48 zRyeQ>f|lAuVs0jTQkPmMQhvTcQQx~ILx9-Vt@8BN^>pir4^U^Z*rh#-OH?H04r!xU zj!q{sbmfY=tEPX#Sw?hP^zoHAETtp;>z($&w^3PwE95P5#g)AAO66G)Zhip^qM)18 z+1HkVtr@2Ak4yTj`0j^yB9j>w+_tq(!}UI(rB8j=ITK{Xp3TzfTJh8~t*)19I)Y5I z+)s<$LOMMKbFbWVeqXrks1mt0a!FrRPNl4#wXq);QwR(>LJFhP(j4-!RShY~i@q?DTTncI!DCd5^41TY`3=-9!*q_tLJ!_P;lVAN4qlP#k^a{gZoiVfe`dd3j(-XxB$vWl z30ivK3myBnAG|R0=X~=t0LjR5wDq`1Wnp_VP}~qNja{}zthBU@@t1+S#CADEojL58 zm{PpBtU1L`h>@6BX76IzpVL>!#W!9a^hY8*5lAokfxp%8!BshlGzPv$O`mtgzJx(J zlLXz4_m9h3%p!bi8b7ASgeQn3ogJ>%r2DAETpjaAXA?$ogSQHMabhO=Q#=w5#|1{$ z2Aik7)F@}6>G59{IK`sczq7q?7dP(vK}GHNj5*BV$yATpOToz6 zUv(?tn2H|p7j}%SUvhnfl;J*bC-Hf5!|5XS*kwO4ikCFC?3>X+ZX)l8w|gB*`>b)@ zcA^!zMwI~x@&=?b*fV}ER=jHHF~pWSy888>fTY*%3-d?IPRtY%gLCRkCp!@C98OYq zH*7YAs+ii3zn{DWH_vY4YLg!y<{m?cw2*CXJJbi&zMNr%x2d1lLVxLqTS5@$fHyAW zHmku^4sTZpR!dn(V#d<*dE3RxIstenWLtUg#&itcC*qUXDHA_it{sVW36b(Y;>gL= zSPxIs9c)dw0?Qvof1oP6QHtz6gB+=jo}Nf~(GAIqTahpxmQ&%QAaZxxcH_LQAhO3I zQ=7h7Z6qtcdPjlpl1Dp66D82YMmZaTGk;S5CXDVn@b$8%i*MLXbN7XPgEwVnF8yTt zE*L^-J2iVxN!;ZE+duHYOKC&jSTnxT@}Xy*ni6}(bzMqk?PW>M#UU2yk4*XN_^W-Ug}sx2RsMnYleLd zmKQ%sq61t^Qiew|xngo-FwW$)1@8t&woP~hkAzP#)Y9L(L(p0E>xtrR>{1uYdE6U^ zHABC%>KEdw%+slquL5E`LzRvgqOB>2&VBE_P=NlQBK*wpJ1gb z`oF(K)A}0BDEf38e0jrcK|cu1geKaTHpJvO`oUGc%G~Dg+`NX9tt9cm3KNPxJVmzu zH*6UL;1ji)9Ja&-1PpVb8(DiEOLd2EsWm=xAZbksHU^Y0N}#ZTjNCC>mOcBr9_Z=y zrJA^|_IO88nz%jT2Z(Aayqy)qt12>|q}j|!tIlhk zp5Ox057df_hySOi>8b(hn5L1(bHx{=ns6`uFn&hJ0=)78HIruKrTH=td}YVsu@Xzvd!-`Qe8j4_bYDuUXR2V;>31-WS# zaKpT}t4YuQ#xHwGX91nj>eb8lZaD)vtU{3?ae(}It(bKwGXn*$+3Sx;SbaGX=BS%a zNMA^}AVcgj!1I;1?83SSf6pTh=}4zRaldA_6=3qQ`mI8$jxUrT5r+jUb zO$0i6GXviK<|%A`vQ&gftAXRDg0@t0=Go7&l23D)z_Ns*rm1YseL%&;nrO6F_7$e` zt;BE3)jQJ)@kqa{#AV z5Uv@{e%4b7(Umd^+Ba8So=R=52_<1Xp5{`49Oqib3{~GaftJ&cPRb?gaEZsrE%T^H z6FuDslq_Q1z{`}aDOuX#^4WlA$Bom|^>T>)w)4z=M4`1_5;u zNAb~AJ(T`QEU3i3oY8iu5}sF5Cg|Cn3`L!9Z<@M2S$W?6y}1*-Vv(XKUMCUlj z)&y0Av7K;A&>t@|ueBsow|l>Y@6)BXcEl4rUKXz6w}8?c!ZBfB7|tTP#P%x=hu&mS zcfouFls-qGl+~E$MLds{MiO^pB(qxrMr(7f1paOcU;H+PAn|;DN+W-}l>39(i)D@` z)!;g}Gq+4qy6)f6zkbHOj#Jj8cZDbfP*Nmtb=s3L4_@}Swr}EDGo(UFstbi%&dw($ z(zN|T6uJq+XKeLkE(y`kFtw{XynGHx9;!&|&);t)*od>%u>b)!#i-Lo5k;x0_dl8v z5xPlA;SuPW)|+_7spjgngvYtz52MssnbJJx;-7I!8i}8>MMry?W({(npRO$gEqFt3gu4gpq?A{cNc}V4;pJ66mvD@JFhAa!E zeQ9e%DQv%NzkI^O$VQh=>L}tp28)M4NlZM^*lUQeq`IH7=e{I$=OgN+=7<(I$vX>g zoE|9ClEqDIQ>OO~MmicL^k90{v3r^LZ4GFMN1CULhwUi{WotjFNrZpM4h{G7jk3&q zG0x=L?R)BiJh!sE*%0^|bWDiId(g1rm4utLzoEQ)|H`CGCEwfkn3E~_DoOnKaS(?C z`P)kHX6iA;%$nqFQy^rU5#@L61T&PLT-;W;8qe^7bDr&$k=Tx0MhaoCS~?2tQlC%R zfvW8i2`raGZ^;ciI&LePrl$03YS;)a#@b%lhe(y zGgLEJ~og}$IFqseJ|v|eOSs|e>tqXXS0nHuep6; z%h2!fugdhv$c($$G;x_^H!;L{Znep-y#>8K9xfvNEAc*qJmyL7-5NP1)~D+7LQ6Tt z(JBJT#VxbKzlNu`ygI>h-1oj2=dspk)LaE@H#Tln*&G*EH47~|efHPO-A=m58_O7r z?+_7fkXmI^CQX4eXg?SQtL#2)~|4IYhcdo z3nN>?@A^6omnXTrtS5eXwQ*Ub?BH!Vi*oU@H(jg(V@(<^BvWC(>uTkh?{?mkr&UpY zq6xSyIZm0!Kl1snB$0}q(R}@_6Db+NR=8vTLtkRFO}j%y*Hu$*ZU%eYTwaEiO4of% zSHU_?t}0cd>`+?s*Ig;cn;Q+I<^M9b+|5{qTw;Ic=jLJioNwtu{JpKEvgHwNhzd;z z6Mdok{DZA2OgrMgj=i`1^MKoRdh`Xi1zj@3HT-r+p; zOO+u!U%o*!4H8LWsU;{d5)uF#Vrus!GtMtxUiuFcS}Bt^%IlkiR=nT~n1wMpf7f_Z zaY23_DQ)%Ys@pWw^V&2(A4y@2iHfPrsM}Acn6^ltN+M57GpZWS@RV-U7gqM12m*(F+TI1 zNM`TkMMM-YL1EEn7^4>=!5+J0FYZXoldZ(`R8c{6kzK5sXW421M|fnA!s2+VN{wIfXW5MPwHQUfQo{9s`SbOF#8Qw*3*(lM zK|ubz4zf#k?nYBx2*if~xmOiS`+BI%_!DnN7tae)lGAc;{AwP)vdfG~xLLAIPw$S^ ze;Sf)(v-z{7+;xt`4f$s+cb#@cN5sH9dEhSG%3mA&zGGjw;988EDEP`wqA5Q`Pn{A zv44`$=dx@bKlwvIfJv!OPbwijA%l|hG!vir1K+8OQ*Dj3NH!XKj?VCatfknx$Jl{x z+>FvsVMl-{3$iR?zY&cP%<(Y~Kl$q|TnTjqKF-|RZ+{6pRl$dVm}k^Xl@b?$Q8>xY z@>xV^SP$Bs=QMK+sg6&u_wuxAX-a!FVi~`*rMb7`@HM{cM5F^hy`)=#qp~*;sjK?x z@D&3-HI1>(54zLaQxo+9GaFp8PwV|f8)voS8(!#jx@i%@qm%qcyUQi(l_o7wN089` z=n(0!*)OT2sj~==QZbD4WO=7$Z)DkkB(7U1weK8j4$F6C^;A&NOG)#9rs1C2?^&ZRz4^(%~EX z4{<*pOGWUl+uQ^!u0Ef|mr-=1wt$7q-_L1@$HWt2wriMJli8q`=3(LFTxnQ-gX`}y z&kGF0SAhk$wk+y*2i801i=}2u$WJE_>RmBYy2iiI#iu3@jq1Z3bGg{rs*a>z1q^e? zOn~{+crvbvT4?dfo%0i{FLAW4eA!Fx@qWjCe|+NSmiwG5Ua@n0qA9uv9)T41N_i~D zz?VepuS%CxmHGC@MZ#Yc#3@nOpIO8{`}W*U(76b-R^Ev-GKp!DwrY)CtzuFxasRJL zZB9Gtj(mh%*(Yg#%xXKk1j*eOM8|=lKx+Xk2KwQ)aLSqqp96&6sFR($mwjN{rQR(x zuKk1#LwJeHFST86jhdq!K2cscK%II;<|EW<%)j1T}M}Jo^H#%0)`*9HWX02YT&T4a?ph(I1;q$*L<*Q9g&)Vr(ZQH_VlWCfrqh#Li;8E)=%hHx`+ln_NPni>9ztV4n zVQh^gh~#(&o*u)kY}RytRqMx#|IKAAy2 z$&62VC2k_@lC|U3$dQ#9^$2IFYbyirX#^20EAVl^zMo8KDTZJFZ&_)X(su^%QEk*KKkb&+3U*1aJ9Qc%P_Ehw^hmZv(wMw4K~8N(o^kE(&2v$NN7;s|ABU2 za5h8Ha4^9E$0T!&9`lg&`8cPLv_$`$cX#ekf!=`AJ4Z{BXsAbjh*aZJQa-yMuyrm? z;bTqISePya2L~J;)2{;NOhn#vwWXETV6#thbg93XbqTw-^t!%-*dHdONjN5U zY_Qo;ROJHnOW-s7hpDeajwMS7jnC$dwXGw(PT7fcwIGYS&m*A&GX1LM{+2lY&wQCn zJ2n-sPhBTo{5&{Ceh6o{&3o8+gKzH^mi;)z3`tg1>B8e}=X7IA(SdHl zsQOcb1*F%KBl^KTNvafe*yEoqq}$RIxWw8Jf2BfiAZuUMN`8!r{|8btdKy2qC+unE zy>0+f{8lGN7Oy6dnRrx++ypus(UvvAf=L?|z5{g|>id|EOL8{^@=v5VhV7XEO0F7WDG z)wy=ydq0Mcjn>C`{U!4aH(D<$r7u@SPl6(= zsGj1AV0x(9|2qJ3ruBW{a?MqazX-?hbBz)`%gUc1c+Q*A)EoU9h*1@8CckOFrt|w4 z(U<3rOy{}}W2GFd7h;~2mC@xT)*Y(H zE_3|kk`atubF_-Yvyl{8a<{nCkRrgL+w>Xp%D@w!kImcYN|LN}Pq5D!?{JIs)aN8kWub zNSU?xeAoh_&5Cq4*F2gB17hI9S^jO&at09fS=dw3cjwGQE*mi?x4t4ywc(9z`5-st zL5Vy-5wao|Cdcw2WW2oV+ zC$xcPfaMZD#3q3uh8jApznNLKfgDuLH%(%sbB|=YH%9}wnpjbs)0=A3yBEW(ok%Rf z2DDrt^$*k_gdfpAUb)ER@se^|$G;ighYzs}B_c{~$N943yL zBN-wZbPNnn&J2YnaWTzsT|_y~pXwd-gZP%}ImFhLqbnrSFRg_g*0WIj=iMOA(c0zL zLYv5r@E*v~MCRP_e7Ttg;%F`itlD$Bo^La|r9aG1-+MC1KnvQKUcF`wC@enKgff!* z=M)O349d$;U6{igY%pcem$I=-h~%N68`fB)t9b4V#O+OOzM=xDq|D63=|}Y&g)Dcv zMZO1emYb>)$L_wK>jJdd3YlArp)+22q?t-|V@?&i-d`L}2#uw^Fu%~MBcr|W%sYdCcKd~5e=7~0 zWPjgfM}a%L*#JcY!bQocwS6LNowYAR3QpwP#Yliv%um>(yhe~6LCiD!EYE1?d;s}! zWK)KU5=#mWW2XtlaA+z0cDs6Z-84iTVb+oCIpsi{+5C*iEi=Q`hhSR=ftemVW|6wh zMahgZs}m=Nv8albH%khG_6HA8fgX&h-i{HO5Xqq%BfYT zZtM0oFN@UGR%scp8K9^jet#SDPKIhg;=G<<>k1vPZ8g58&0(p;4-qemOB71jA@U%q zAQ+g%yI5d(ya+vaVh26ye*J*mG0~MVkHsXcFc{D#9i=CWT*m5RUhra~>dAGUZOypf zZY9^5K-?&h*L$}D;{Ie3RjM>xq@-(+|9IvD%2YvDt6QzKTZ5x%)Nuk;Sg?9rB%||n z4;tfNcxli>_47R7OBnlnaCd+nCo{IUwYp(lmvt3}4K^B?TbDYOc5>ByQB-_LSXs}k z)_tqQF62O_j9z-ttYDbp_0eo`aMrXQmT_p)MMTftlQfVKlGvJt#eI|~PSUE1fFXTv%VWQKK z>0Fy1OOsAyL65A_1XtHw-GX9{isK66UbB^XPiM+*V-Je%ty;v?bJFk0u!HjhZ0~7W zajpVwf$P&J1;5i55+UE>QY)V-xprkz?JSJGZPxK7{@SwM4ASE!cLw^+rhW)KV7{Oj zOM3f){<>(8|ULr6rNyK39;OE(rlwA9^`%n#H@_$=V|dS0pgB`K`>i^hn1PJv0QH1ZF47nKE9q6hE?n952dpcq&K z00287#PQ}ZF;FX1PjYSA5*{RAFRwawvr2HvxG=TjJw;q>QD;uR?~5x%*{sN`{z4*d_4=1kF9~Ocot6d_D9WO)tA4gRlWX{yzoKXzf1Z( zTyy>fG0LTVJ2h{~sPqFv68Wx*-?YKQz7SaO@`8mbl#|JyZ7Vq z;;dtthOrCs#60RTj$gy#2cFz;9bhTADI26-Xzp)YP&XfiNtg zZWxL7(`%E)P?Uwo)3g_<#6M9tVQ)R!PcPiJ#5b4LQ&^by5LKu=oyvV+DXTO@SZ4TC z99-;Ff2Py|sGsIU|D%q+_;@!kys5Zz?vbk8-HmDBMPTXyl%5y51q?Er|Aj`6C|dF# zirZMl>eX0RF^m+7$DngMRHR)$IN`Z z%60~q((k34;E&{GkK8xhkR2tMXIAa>Y;akv61%QUXiu4w&G>pXS#Js&oBwhhVoO=y zgQhOE=dF`+xUy}vroE~dDq?VOnjm{WouvE3Gwg&N3y!f1NMCK1)UvE`Y-7!UIsOCX z8J3t;2{^vvp^c8)|H{Rkf?kfj<);~d9M$cd+S>r^u7jN47sF-Rb=#PIJyviVFA=_f zb%!9?N#iS?ZQu-n(rfeAm=Pe?*J$urG-O&)(TKC+v>}?=t z^a#b}PuaG?lbpnp7fDYZGBj0-Z&1P6xEMEhm={2Bz@%7KnYt3B=n6BwT>FkCLKH%m zDD^7$T>m^=GdsFgSNfmMGvIEu;dVS2t<38QkxVRUbf(Y7!lHX>~wEiM6gqU>o_ zfui60$|<}O8t^3s7d&Z^orge69T@p5x~1%lDs|rkO-konM8%Zf0)f{HN<7Cx&55Q7 zl-dazk`ettGavSq^I-rLS;{9pEzdXUVx|DnQQOtD94hJyH(YlV;ZJOF^tqNRs>wS- zq8lti9aufy{&lyOz502M zKjaazOo&hFT>$?@L3Ze9(+BKS{*>ulZS!}++ZHoLa}n|mu($zn@bAJ| zdzy~Myc7%LlMf&dk#+t;JH}7_q*HlbKsgnN%9YfyI*#}F`E-zAyii@}jQcv$ z?!T~G-S+3QoQ?AHiAQf9M&cjO|A93f8zC5Mx5!G{QW^qx91LmnLV=3oE7Mn1$xV)g=${D)N{?t19tm@VXG2&HlTU)_s=fH!ZLb}i2HtN9y@TryFYy$NR# z%TZ?=i$A^1&U|SQ8P%6(1ej)$tlG=bj4QgNBw%mQ~xdHiVO!jmR3piqMllTwW7&(5`E*he5(#io3Zwc}zh&tUNu+v-jau%`83_v6u=}p$+z>(5uSs8i|Mgf+&HW);Uda_H!M;Lu@#o zwyOlIV2yEp>U6oryAmi~JYGBXG{gQ$UVr~y#mC93E|*9RaQ?9;M<}qRVPFZk#ammy z*^$mwENe8h#`X8r(d!Cy40}bJ4g=>wS-HBsB$Jz8&c@KpW@An1>fCuQKo#*+n5{6{ z%B2~~w0{bFXm_aiH*b5YYlePj%v}CNzYTnyz4`i=A3x=GLqM0_8zx&pw0tgBi?@(< z*@xtsHD^@M%*7!K-y!K2pr>0|gA?kxJ8!@)>=yey;gJ^nQf2|y?~~RuEMWb<&o@az z_#4sawr^nCqN>~*rkJOv_B}0U)7G~?Srq7_UvKxoVJ_P6#pjuH-3ySuv6s=_ZyY|utla;iYmcMj1Oui zW*j@ji~)o|`7P@0@gSl7lTvwY%rt))U(m+W#P3uYL{jeHM5X*KFGJO#y2^~K?>8Eg z>maf$x1}SZ;yV>aMc!V;qL((P^6688wnu|8^5;7LK=@Z>yh9=sd#%V zWPsZA_6`7pfz{$z=XZKiSu}o`Vq)Siy8_@7&|t_d=C~@yo-K{hg<^`k0hEpbh|cjZ zm$Pz**RVaq>Bte(8IX>>WQnoIEIEL6`x{I(ko5AF`(lwkV2At)cv2)Bz#( zS1*Shlq~K)DecE59h8ep(z*T_S))cvpzRTb4*Z-y>tmOu^g_G`R^mk;eY*&iVUGAx zF6JG+`6Hai;~m2tdJg^`)c+yeVh`3k>zh=qQN8?;!n4xbT5;JUJ7p_hdz}|+j;dAA zT6Y%8*}7);FCa~?h+Ml0RHfdrzo-}XYFlH!`6MnlLv}!<{kfaXMidU*H zS7-`f?rgo=1k1;Bs*Ie}KdIK>P3+Fx4SnW9%dyxa4xu&$!aZ7AbwdOftNaO@Q@w`` z18J0*rHgnWT178&l|uQ;nwuJRP_Ds`qgSqZiZiUZ21DB)4pn1VBhekRQ7)}09rmhJ zr@67&+yu3L2lr%=atD|cPAOIoIVeom6bDtK5G_W_*Wky zh`25Bz6aQqoo04ouD7#mYEAlfd?}8>T5VhQMflz&RY~=+5_d|fIZ20yvN5|qXnKb4 zJpC{$6+E4E6HNs9#wrw5cwlDw^I*TrL3CfU&WK0iaebA24apZbk*2uk5uk%oHpok| ztt56DiWcuMrhY|L9=lyH+TpFSvSbqk6N6f!lom?$vgnU$xs{)pk?Coxyu3c%D{sOU zJLt4@MQSkWzB2D-L2<;hOG^4DZdregUE&daCY6|1smH;(?g)WYEXuNegts*A#~o|h z>^&0>aRajGT~lae=&p%%#5K)~x7RD265%Q9{YZo9O>DxHcg()YBhcb`A8r0HW+ zucLqO=UU@rKiS8pJ|ib5ij^Pr@nW2RSP?kdfZBLJy264egCh> zJhi{f5J5L}yrcmVR^42>o1W0;%#ggRjwa)Br&w5cKwN?0J+NMUnuDucQjA$trT+yv z&K-Ov&u-L~RrSk(xrUaR=npehuHH|7FFY^KsC(|&Fz@p~hV2W|PtO^tsqvlzhm$$# zC6^X+{g@P<3Qr4ynonDKxx}CZuC>iaihWTP2)Kzw6QIjH4vZHNNqt790o6~#PKN_l zpGhhN6g3`OdEIzvo=&N?xVjqA*$?h+_;xz3TwjX!pjwdfwc)iQoya1qjk+=x8w4J;{4NJz1^b)&!=TgORYO|ubY5o8) zu_gWNSHdzmClAyExE+j^l>HbX8E*x zv*CaRWz|r)m8aVa*t2ZK876v6AP@UeZRh6}D*SI4^{k!f%h62-O3bwI1ZckuCB<%IFwYM@$u|OlF9xZyeu+4kBz8WKl3Db0ba7GPd_QpyHDhInWBO?6^##c*mRW1+O$(w^YJhzRJ!PgJX z@VnKMrRx!@Bgc|TO`~PyVjpYOoeSF}Q_@y7wlh0L_FIXsZ{Yv5wNjT}b8pVw#7b!_ zvB-ATKv8#k3GWjn>*qCFG!;w@zJV zM2d2jpf4U!-XP&PM`aJ(hR8@e;++lxshPcS z^WgUEuLln};$jtC4O=4eZRa@BU^O_(vOE+=hsapzLdyF%Dj_x{nFVUOEZlHQ*1;fw zkjZlOf!r1q45WVZ9BLilIJlIz9#Y2lG4bOrlTMoH z(HqN9U{5oUGHmQPn&Vp~a7X-R({e|$nz*qRQ7vl${6;4d1a-5$g#l10xUsJF> zNI(3mQI$N%GGjGhJ9{+nvAvjCg>;5JM@3cZL0s=5wnZS+b;?ph$%iHT>(T0+RcrF= z-?3k!+VB>Rfy{)5I4{JC6Q|}FjKJQ&r^v)7q;$k@k&NN{?B;C0bLm+FAu{Zlk>r?XR1! zJUCrGY|sKZo{*N>t8~XErF_B@yceL)n}r@DBLzgOr5a|(i>arOow388Zr!g7KnQUE zSv%$pohI!N2^+hnBN(^f*28oiUPu0%T&fP|KzC|1>Q(&TzHTk z5AXhEgQYRte&EY9Flc!gUm!1~@~iM&t-EE+j32g$;M+Q^)e*>uH(G?Fq&jyQlBM13zY2Nq_ z?Mj2hppYqsAmTqt@K$8XbnGZm8$RLGvUR8`1L)cL5L$q5?DRBq8gCM^8@Vb&-~A0f z3x7mW%8F~&=rwgVx>Yy-Y5w*qKCjfSrnGbd?*|(`u0OGFR=bwS{md3w;FQE+&AG;W zbH{$ejKTk7bjBFD_!8xPUkg{_vqT%jifozJ&V-iNt;Xe?oH)m%iosrNF z{6CN~F8KS;ME7Z)iMRCVJD0BnLer5AFg1I>j#eTMv-|#{SbzJ|E5Sjv5eL&fNu$Q@ zhh9;!G=0uxYi*oK4mm@qvv}0OpQQ)&MH_!j2u#v9nld=w*h^AAUK`wPF=Vi0d%N58 zgB_eq&#>M7!Jl%u;~$954MWfp{0G_?&AM|=(>EqrwnAI-SsnqTe<$J4o?f zN4E&$e@Zjpg*scHBm7MYl%v~z`Iv%1)=}?qg>X6TSDoI1yXRiu6gS{`>2!;5rv)Fj zyj@O>hnxLH4ezeTfV;d#L^6`Fk{UsYx^f0B>cQmqrK@t~H7e=SNHNUW} zHq?}zf=WKt!eZ|d>vh2&;_Gp=8FsEAv#8Bltyw$aeWQv6&c7nUxrxv*|}>cA-*Lrft(Fqav~l=X62F)N0D*-wQ*#ax=(O z?(aXSH!Cqa2YV<9we{956*qj#{OuAr%>P^EA1GyZGuaU6#1yxxeZ41q8HtZBm`2D+ z>ZN(-EX<;leXhzEE>RVY@{K#$J)~IM-D9Z$o>BLJ$5^?MtcqWe@(yIXI@{-|^`=)J znFX|$ipzaGOuz}!^3*9hZMxrn#{0+Y@@kpQ88M@RJz)3E49)}Dhi|6;mNrUEyq&NW z6puPSr5pRJ;4z%P*)H4rd)9Ov8Cg<1>cM`K{8+DcX+lGRu5f_v{{$h|U;MAKNf~e^ zwB{iII{pIR9RWbci#ewdpuIBsAo&Ww!E7>*22PkAx@7YH1J%N=*uxPMXV+>%9cKSw zPjlV$hT(l;SB)3oe)y5rKhO;PswXhwe^HP(qzwMgs!9LJt7m~u;e+zX>^w5~6oE0N z?yQ#pO=N#z#ZG=a0q-eCLNpaM>$f*mL17HK+n7IZuOA0y=A7iz9w53>Z%IN0f%Uh7 zNT6dBHM~KUIRMhBE?wfiGfJU_cr`deI|tDYFpAQIU7AJa&iH|c)O)FXaVP!sgu=%9 z^<(DY6%RIWVYdps;IfoDfHPAds?$JVGHs0@zLrQF>K)}Qmb02ETrX~fwh3Sh+uk{Y zs{Z(Xr+qW@LZiC=+$EM;SjYh=kRs8vbZJ9Fo)JB}Ad?U7ogy8fbu^BZCD_oX)k|c5 zcZdE?L&MZs=W=^lDv#|*`1URK+jE>xfGq9OddKFArSRsAhllh zI~#G?X=@~Vo6!Z`Ibsrt#$e-kwq;z|M`!quzk6JOf4r zsEV9zTC>t-l;_gRd(S}aKT`W3w*qYQ3WGV<@r*Yvf)OYYRwWlCI(hYa{~Gd|)NA`% zcwsuiZ2ZT27i{oUI+Mg8YnFQ!sSri1qT5`;-hpSxO+MeF0SK4$R;-%uN-W@k5U0%x zG;bDCodxpYxwDCbIL|Cn$8)#s@dVEJm#4YUAxi6t`||xD=w?4zCqzL=xEN_1AkYnx z`s#ZZ&S+@MIRnr-h}DVfgtY=(RO)-ONHx`&T-P~SBxutBMgM#$&UZwQ0En040DoD0 z!7D%2bbhfd_cV*hc9HTrhHuG#a$SpE&9UGbm6@}c6J_iCC%JcMM7I@rNe1rQc(`<)(#q~U*8;YvGn^VUmCt<(pSY~{1ydB zqtEEC?6-O6o7P(7u8Q`^y|c9s)6hE?4s?H2?c4?}+8lX1Fh8M#P5i$F?ZC->yl0Wd z1WX7FJfxi*Ph!)<6Sh*o;_BV65aP81es1hPOUi&bT5F^URy?;*Zpt!&f39l-xe93X zrqHjrgf?bUO9duEmX%hrl{n(+rweanJ920}{(Rrj;AH^U=R_x{YjzIgmNIcBDLCVU ziNIw_2O?4Lat?JMQpz3vy)kGuc4Wu{BZ92zDPa!gKuYg;FhCPYz76h8>i9nEWg%7h zu+S%?Ri%AsrJud}GDPoj_PcN?T&y6>5ESz6h_cbyn+yhX(c;(Qkc2T+nB!Y2qgo3;u|-|klB{p@?K|=Tq{|?#Zp_e7eoa~o8E^4EzA#y z0&Wx9_Z9yFoABG>47(#Y@}@`dvdgH7d_n&{(F14SlilGU`XVuN0M7$)Q{@&j4~_nS z(lHL>SQhWFD1Uo&lHcIpnK4P64)V^red>?w)bV1$fL%YJ> zQ;`!C;lAo?{AL-@?Oppnsy;&m?(F(aZ5RBKL4^N`JHBq0?;=1NXIU%Db64kw)yyw0 z=3=S^1aA9(W9}`3+Is&e&QQEX3N6K@K%uz11o>g5xVsm3*HCDIq6La;i+hpa?oy;! za0~8EfROI}&(6;7%+9{w7tHYLCO5hF=6Sy7oX;^$xqz8A)+3fL@ag_memvTe_)lP< z+g~5}0CAU$%uhqkN{ZY({Q3;+kj-bg)8cz$^*T*jH$-2lBez+<*d4B6beM5oPA{Gu zf7<4_dg1xP^M}=25F8tikj^#?=e1tnt>97Xok@M{HIHGz#FK;+?g3IqL2a(EK2wdK zGRr?yIf^>|oqB+6Ep>vGrXz*If-Vq>vcEpcPG_RCjW1o;Kgv~@0ga;>dcJ|cYx?#y{RHt3RSK=j*fpMgM@(2ZAELOP#7 zGy1?ApHO~kjjLg8?GTsWQa^WkMd5X{0)|-jxd-7$4@NL6XMM5ZZ^2e7-j^N}DBpCH za;@5yMDTC4=yHQlbjEW)!<3yCV5<^eSYI$6DjZ$2_SGy&Z9G+2*A04x!{D)(m)2}J z;YxnkZMo)mOzN_t-JQwd4cJRz5|}_RFYLT z=WdhL3c;b84pKqF;n2|O!Q^k4n~*tgYj#E1{%ByB*c4XO1!h&FTyBgN(LQ4{p%_Xm ze&y-4x8y?kLql4c8plv7jqFIgKwLpPHfv2kZm#A@1M$bh_v3A0PMwQEBDa>U@bSx=+w4_L8nD zf4#^cskFcBQOm|uyt(=RdrcgHW&5S1;fiFl@dYI2M*$@n_j({-U3WbApp;W7gr*%D z012)5ZJg7`EUqVpzhQ^c#giyM>42#^?(Thjc+ejg62&=FZRh5rOg8^>qtE0FIx;(nfxx-Iyld+&Z`@Cy#IMm2QVvkTTRCwK3afJf_Z zKOMcXt0tcQwotMKdz%vya_eg~}5z;QZ`@%|Ei<(Dh?i`Z^MGr2$$-bJx3yMd)rhN9LW!Sidn zJ=$$;Lhoil1+zmi5N|XXUP0UOXSjzL##KjIt@sS>JUN#0PxxELjJuJ?Q<4KEkMc8# zfVjSVC}#`pJ?ER?d9W;SOeTZpgU7I-+7lv{$gxQeawGA85VI!-M^){lc3Wm}6u|c< zXAnl8eS!>DKsSu37llzNee+?w{5{N0Yep~ z6h$gRAaCtTK^#ng3*TzZa`wHV9s)stjIhA`6!!xBLHBiQ@oCKjxVL{v|(W&k3$ zKDKg9WzFV7uIJ@R4$R_R_aoIG-~(@T0ms%3S^V>|m0(fAfRWaVezVKoH3K!{#@F6A z;;6hCuqeJSJ`Gur@|a4~ieB6k99_Fn86c0dZal(kcHuZqJow^}wt3mAqakQu^1b z-Tdv{{Ip!@0V(<&(D}05oY1_!;uc7&Ru#-afZwf&lCb6aFYP|(`xwt0)ZG!LhG6P| z#T7bLzA2#=`mo`1OF7rjH4=(0*`5vKyDh6L8Fw3%##Ej8?zvP@lm9b$ zN8fC7N(BH0m`&_oADkoCFFvIecV*NHY_zv12gaoSsCQygVB$$0VJ?=;DQj);+`o%h zbJTjBB^$JD9>&+AIBauGw-N8i1a4y&iA z&i1!2BH2zbOjY_CIp7}zJYjyh?hU^U`|f#J+Jhu;Ahn|ZzTGS#OEtfO!kg0#ZcMFn z&^;C!^0ucGSM6*WqLmHLR71#(x1M&)ULSGYenffRp~%9mE`~HTSVoQN=Ze1kR6w{X zZ(9yA$RF+xP^-$a^kC2GUa65rFA_~tnwVc_TM!>VaPL<`I=Zc3xej3FzWL~&v8)q$ zwbSLn-^?!Y%Lz5-1nVD2&FUI34E9r_1C{*7-QWo_GQOy@lKK2YKBk$|sx#9GBY({k zBP*F<-|&Ozzh*cNqd!ZakI!>`%@iAv0dd>5=QlLJpw3A5z>3~^!_+c?u*9g-s+aN= z-DuW|-7D$n`J)@=FL{jTi>xH`d@j@?T-zCSSL)FJrnH40Nm0-)JlHfLgB{&@PE)zX z|A5~tl$={FuM;mFwn`?tB^xZ7tW1)Rj(NHfLC(IA-=O%AJw3ld#T0J_=L>YEDmlD5 z)U7+99j!d+H>)qWIV-`5)`+ zSlKZIteH!z$Q!bPEd`tZGNiYL&Dft@jl4V^4rmRjSZCN}zMW5TY&y=Q@*n{p3E-}2 z2Kbo7AYKMct?|#z$t)XJXBVJT1SvVs%;sayXqQN+am-2NI$$*{V8yC6r)Dwja zfQl)7(2mPDFa)^@w8=@p>vfymhf2}JfQub=pryi3!@kNs-EMeAtcvs(0;`>h0N&!d z-~?mxpGix$(RNEL>YItP5!h4VQWR?;pY2iA^LH8+e^1}(zkJe=rA0!Jj#ko$M9zrb zRsJmIX@e%^lHZ>U2(4PiUIq`*%nfNsQNyAemd70xoLxW8aY9YVjff3b6bFs?_K&iy zo&bv$tolt;5R><#geKeS^R-jus0lvTSE7k|tqWA)@u=LnHHURPn~M(v{v;hu5zud0 z#P;=nI*qgOM#zloZgv#U?nC_rNEU!nx)=MG;sL2$K(VEhrgE_4pRht(hM+G5o$F6l zC}J}_dqDpp{s+PX>cdXQ%Z=;zaxbb$OYUz#1JgHpj_$=PMo+Ed%R6!($A}~h8D?oj zs0l=CUr@!m=SLey%xEf!s|3D-R_Z3U=qkc?-xs01NQR*&^wvr)U2%@&M1lK76Z$$# zF7%L*%>O_h;HNjx*&y&=apsy;yG(&?QRr=bh4E9)c6|y%d_SMF{B!mDNJLf&TJSxY zUS+A=crh$-F*5(+mG;)OYuBpl5zOj~mz^4Z3PXhH7cI8gcG?Xx#`DwKK*7)Deq~iR zXtq?M#)BjarN`6BJ6%+qqTZEUcnHa%{x$jzTi$~Qj?9KTjkI8k4x*Gwy$wDafIn(v-iYdwg7b$Z5&QW5%=Z=<${Jm zQI2(NhWS^2#(Z*)Sddr}D=K``=tT{QxR_okx$>()VSXAdAvSayH2#(UK#^;2vW86A zXRa}tmGw^z)|9_Vvtii9F(#RN`26A-3bL#?(k_tE|JEii^c9FRX`$Z z?x0C~Zsxu?ma4a+p&<$6fxSu#o6__@?DAlwIToUwZ;Sh+7Rh&@cW&<^N!QT!mCv?x zWwlRqMKa|0H_pr`hApN^?a*2o!+F}*9fV$)y%4*qhASU>exTn8k{N%D_Dlj-K1~I zoHK2lry?Yq$+3@2)_b$eaMw-E;vkAJap_WL#p^2czHJ4L<4V=7%Lb1WZH+sf7d$Tc z=q5D@KqZ|7!tBCP10Y0tZ?SlZ1=BC9$H*%EqDV3s$8&MwWV-z0F79+p-QF2{^xaK zc;HeL+dJB6`JuKLvFz)8NbnwgxP9BK<@uA*E_hR6sR&M>wflblYi1`$ydp+O+_)bH^FPQSubW8K`ZFZ$xmmO%o8tpbV#(2(;51U~mx?<- zh4CY&fYHKvp_DE&8@W&Sz5a%62Pg$M8h`|`jyuS zmkyR1(;Pp&5#FBPNFqNSCbRD)q14EFCofF4J;k={IewtC=n0J)?&&#{U|S3#0aS+W zHAaNW)`{hr)?7`HO^JSR-3xs>MfQ{K42J$X9wvF##okaLp%Q|RlsM;#;ir8i*-`Fb zcK&_Y4tBQ`l2y|E>zy5){Trp?pa@MV%9pnBiU(3#vyI{|TztN#cP@jH#(TM}`g4DM zI#=^nJ!e+XhHKOi(!c`&$M2`%nATK~8QhiF#Dx7#CT&EavL_W8Hjy4QeeHQ1kyH>2`4&1Ba?CIbk7wkE&XLyEZd9_?ue0FZl2&oR54KJX?} z|5=3xC*P|Lx6(^C5p|pW;Y25FxxzbgpvSVKZG=5L+PKkC^GnWGVp^e4VXD=(wq~ z=wa})9fpKHw+hb1Q|uHbCEfL_beKan4ZQc=%ryiL@vt?0$Zmr<+Vb=%7aECM5U4?8Hst_w^U`-5g>21L`3F5W_snPY% zZPtpaUI=GC8kwjC|6;k?A*yOuVEquv>k-UqMi#_%E{%{aN5J|-ZDaV!ypF~KmD$c- z8vi%t_>Jl0#f+$Q%u+BgHRB!vvfiO;uDKDdRL@{V_Jr8C`m|i3AG2U}{^2gt#v? z@J~jXz3`$Y?OzjwRe6uQ_MUBtG*G`#nm&U!WeSw*M&P zpH_@C<=Fd$9$5qZ75dMxmk|nEdNKUUOgslmE;YWkPB7kQC~Z$(rY+H&eA{Rns`VU_ z^;Zd;s?+Z`p5&wj+PXt5QY5JTwXOv|Q3@9d%ct&iwYicD1gJ{n-&KYjU% zq5}An<$60gt#1U)7f;g@vq)WlYBWhTHGDo!iLJz7Sy@RSjp0QHTkfizJn^qSqG6gr zqQi|QPZZDiXmTn|M1<&#Z7fp~9=aELYww$=h!-i}A<^T4s^~{l`Pal;9ky2cf4cb-q&( z8vTc7?^ndo@~otemD{Ljx=x;}ar-WTKSa7u>e9-ObM6A~<$j7uso6(zouz2?bp38l zwrw`Vae%e?0MPW;h4W?as4iN%sAkltt`N^v`kG~LUdPc{3HtJ? z07XYjyt_qAr=vDg{)dlA!DC-pzIEI_Uv3_E@ta}notuM?#037XldmgRLp}kg+*uro zzt(0?9>I4BRL2dvv^Q-9+w)B}-|T*lUy(?FD_wUNx@4b#KNoHg0L%UE$k)VT{K5qELCHI1l*83fF`xN%pTl2{p#R;hP-)?VO8}#1|Z`703j1f zfW)VH@XQVW%DMlEEY;_+5Rf`r&r#DkQ(A)b!CF=qAX^P)B`#whzDI*&)+S*;G9`30 zVTRM>Q>ZF3fF2>avo3wFa*^jE$bGcOi1n?>J(ZD3$Y@6M73>@gR{)==qhAe)YtmNn z*8)|^!E$etsnrgUrD(Gm*8@U-Xc}A&;&ZP-m%*@e{=9^3`?hAV7v7Xn(IK<1U_&dRnTvuyG!=58Kf;&!S8}gc;eh4md2;H> z5R6|R7mR+diFdjYVwrs5I!X6r&kI@N55|SRh1#mrGvHvxm-g5Jz#&hs^JnxV znv38w0H(O)w3vg1VHWiobS}MbAE2$jx-a?T#-!s42;hDYoe`Uv52a%9)w0XSX49H0 zmy}~|;z#4248g8a(&^dz2ddJnP{;gQHg#QI?l9_88W`0=UZFuzLaiU0X~k6$1a%QC z=h>bcE{`zzR=(n#4MbtLy z6#JxaO@T8eh$E%Uc-0g;YffKopl}Gd*P-&X{nfE(Z>7m^x=C&h(6X^MK6Q#bl@)Wr zWg;<2y7vTTls(Ch{jzHH^*(L*#9oCe6iLy(Nr34X zWC^Qutlj#F7j>4uf`ZoH1BRXH)(Ml*Y1eq!E{FKg8Y!OH%rA<9V@w7aew10slL8Kk z%kJtcB*J|s475c$ah_L6T25AA&VakSe4D`h@-MaBE-wOjuFFqwQ+45?KhFuJ<6Fvh z6Y(rxO8!R`w~`cirLo4{td6xwCzYiiN{LR5eUmSz(8s+Tf#>FP)pnp`0P*~76P=u# zF!nGv^2)_CDL+(+8cXD1&i}Q`D6(Ag6c^B|%0uawV#lCvpzgi2ak^sAL;b`xNlXf2=}tWnTDPf_cM4{g_Ro@2U(D2yO;W#q z#$=X7iz?TN9pOa9Vtv?tZqlYF@!GrCnP6BHQ$j*?3f<=URtO>O#7g!}^-@fc_#OrW-OszC9;M=_Bn9FNii+IuHYXjHv*X6_n#QV{-AAZ8hnpgb!@c?rnsLg?;B@mHJZM=hV7p2 z|48A3Iaxf z!BtP4ylNZukRbc_hZV!h^P*DwEBhvzk7MDXhoc_VCEo!p=slV%)bT{)b9;Mp8^d?o zl)U@Q3d6?E*K=nK#6u+$zY`Pr$990bAy^RmNV6vL?bpaMJe9=B_vqk=l&>9;wh%)EdRaNa%zN06;g?wsxUf$H+N$` ziz|}jwFQ(z1#z4@l81~^JUEz|Pfgp(kx1b`;BRAdbWNA_cB9zL_e{uWvL+GU#-vuF zx{#u(>Sza)L%04b#UV5X&3@D~s9rBcU8(&^NN-6FY?`Bsrof*ZDWOnWK{4O5_2NaD z)2S;Hlp&dS#UlfmiK2a#%Ld^ z%>TR7JV{<~X^rO}NN@6?Nn+|2b#OaeR*A&i;*j|ik56+lTB|w8Tb7uO9Ex9SKnvG( zK1F{YFPm`MRC3>qjFds6W=67Q#c+C?7=4)b$;%X}{*n}rw)slr2<2B~M2Km>?f+0* zQqhF{^nB6W^q&0t-b@pa2i+9H_VTd&-EiUcl%tlGm{+o{R{W=4ZY-WgasrHYlp9{{ zH=)zP(AW7kM!o6Pe~ZI?c$Z=uC`i1Ve`8s>y>FUEoaCsp=)!wrWpK8#FZ0g6JQ~ev zbKiAV8T*dGFIyQS#trJRp0~djn3E5#*oZ>sHuf?wsSau8;|g>_B-O4V(?~eU*Q(EX z9hbr6r#=BCqug^fuH^)L2c~KTh+dHbxz+*bAeMHcp2Yb&JlsU5x~dJ+n8++_mzUFVN4et_jb8muCg*2B^Y#Q2# z@%m&deI8N;W?cuy|3J5iHa5i0j8xo%3SImM-b``PNxTHYbP0bn_3fEl>dBxj_3vg} z$k1JQRsARL$Mur7t*PL7SI8p@6|Eg}MUlG$ZJRkpwdg3N29fqqgKL z_sKn!fXNLe8RK4j_(5iOo`z=sGc_O=3n*Shu~dYpPPSGuL3izOQh6_qvT8Ic&nM3( zhsw-kkbJ;HUX^FPL%1VPaKS8!B+Y$mjBGip=)2G5#97IQ>+^dPhtpa67BJ)D?(CoK zThT>t0VgCf5rqXD+G{TXIC4buMICw+ov(P%giOL=@Pn=mEQYHX+aezAScnLbEAgN= zzv&0&t@?CuS#!qUg%1$1BlJg;7Os`NIdSm-rA^xfI_x~cXUs}?n~wg!#!*vy&nji1 zagL*|@wieXde1i3=6q>zE2Ac{;0jMXh-~lPeYqo8lJ+y4+FfA!GP-N)4O9|Z z?raWY*SWs6gW@FL&9nF4cN3U0tjF#Uid)-e2a^y`jB-CTw{!`ibR{VKX;_P)6lP*5 zxr!R1b>S5l{cB4poP6~7MG=8y_cF#sUgdXvoFD>&gxOcuH)jSGGJELcN6Kc>@~MXR6s(3<7CR_2G}>h?DRcq>Koc@~0w90Rdhl;LF525;#0Tt#{wyHw@1 zq<Su1p*#lCLiNh>c22{|o>^Rs65Iw!qvUR%8`&`n}c3Jt6NqrcMhR<6)1gy=S<~k_{z$% zG|BY$v8~}zj17P_Luxx19d9o|Bb)HpnR5>KjlCHz1YNcU5we9i5kcq!1Gm8V2;lSS zeMoF;Nd6yw(9W7N$wopa(hVZIG}|uZxaBAoXWOU2t%wTjV9c3b4lKEwsd0++x&{q9 zj$^@|j>o=VFWaZ12|zkmKTHw;?SWB=KO1tG*54V?Lnh&g}GXD+m?SIucW9se{T3)r%&&m z8P*H(^08|zu}$uhOh~Z`h94Vsl?W&mp6_JgCpw7!#6D9za4JDPL(emXmsUOr>87b& z(KAdoWPPgw5XBO~={^?2$iu<1!sSX@=NV?lEMh6|@0R*x!1OCV{o11ERvd(D)Za^s zxR}0ve0ykqwS1JJY<_bP-`Ph3B_wjl{FTz$)to85{hzg@{?T6rkcS_7hpqOl52v>LY2bd&r2dd zf4D?!VXabC9G2XNhl#$#cac4xG~@YJee!GiWD?mp%dDs!EG_cHrl&j;1m3((r8esq z%*?5OdZZ+yamvQyRl59Yk=wZ-vJVobAW`N9S?7XC)>afYg7Hh z*+s~ZIs3su@%`2t@bI2;{0lLyCin;FOao7n((eWxt7C&YJ9M#+=Uh<&p%gHsR=eTh zr2j5ws6AVLgAET(#f4rs+KB4`>k*@LJ!@hGp(RdIa!N*RY>$gURRuMNtsAbFhnbT| z$f1y4c-=S~H|=MEJSl4EZPq3s{>NHlYAvHQhv5V=-u@N!9rN8 zT13MbPZ&np2bgAp+l2dru4G;{zixqQ$Es%$-x>F|OI%kMIl~V4=h?@(2Jc$!=7#1+ zpFCzsyl=c4K0azZr5z5R}xC92`ldkW#YWO z1Oj+eGi>r>eLx(UFvrzGtOt;RMoD6WjnBcNphNTdW68Jvy18_@5<)t0g3=XmTu$s4 z!a$@V0z8xg-(RO+Q){ms8Je401y|8$U50*n<6z zF17_3T0PT0U$t3#+d-)^-n5k!Rq)AA{}JlRS8^av8bP8ZzhAfSn%H(yOzI_f$>cT?Lsfio@!QW) zksFI8jTfKtiv4QT@$r(3mrOqOqJP(AihhHoKy4<@(!HH*%oY6(zeB6?Wb>cUcS6R>B#je*>|$r<5xP4qG*j)!CJFl*E8=3 zF|xFgZDHPf90^*crity5IF&;SpYm>X%{oVDAIB%RMJnHYF40ugaz;_N8C)Muq<<2y z?~%#;ur7AmnC$rJR`E8bCd!n0PFxy}{COz{OoDZ_8-X0Jj52ss^LwQ zj!)!-hi%oIP*deuS)CyN4}?FhB(`+-*WaI7O|+&h);IX%)3O5$3Jo~h_0AQa^MXzx zg*H2A9v=;<-`OTP?tCp!`jpXQ9^L0Nr!Ad?rO5oOJV@x`?KxL0yLU{Cd`rDt>WeH0 zx4cb+{u0aUSL=@1?l6+^hBQ1}a_t+l6v&6zzSz?gPt>FcQeMtm`GwNv4gj_#XUfYH zID)%`Y-0nXG-Ifo-n8^z+=Dh}rUMSf?GS*ndd*y3;^G6%aJS zHpb3DEWX?w=i{RL&Y-^GvoUAP7Bwqu^Xyy0d~nlUvXK&g8{5lGvQ)aypA%$4GOGVG zDn?uQQ&OM^EX=@$9*Lp6;k7tf-wuw3j!c8a8*?P>Ke%Wn$7ThUbt-tD4{+(Vok3Hw z#LU8eBNWsTDFw_40(RG6+<~{5x32WIS2}1mk$3MeLC4QhK_?iwzdF#j2D3KRqSl0y z`vdX@*9pxee+J|6%Gv%p?AAAQ!Tq5JRo8sq-HV>|8qJi5@xSfwJqcokZ~Y#Cj%?}@ z9}s(R#fqjpaq-O5gC5)mx*>cWN2+oT6t98H5e&W4LmZJ`3+m?Hw$BxRinDEP_2(dF z;QO598yfZVRX(G1jMZdcf)kzn`vr@m(kle9Qu#eC_$x;{!}WuUnMsOQrYGEfkR_^i|-9$JM>S zFM9q(L*ttCRe=>1#4aw)t*<=sQh58NIxF#P6Za*Lud9wrxIbc|PwxDw2+3pbQx+G6`G*KS`%*hek@2?XZQ>Ufh;Q=K zuJd~7pnaZQa=jC9gE*sfL^H*V*v3)5 za#EMU8brSOY@9d1Mds()zeaQp{=AKd?WAv=&b>W68)yZR+Ppj#<$D z@z{2jv@*9)5~kW}&zVeBbivt}`dm2tpRHtX%HIzh#|agZFN4g_QF-TQJrqu~#GI1k zDx0e^Mmd%Mlcfo@5Vy15L9uFJ?aCf?s{(Z+bb`eoKePZ+O-#FV1tM8-j&6qihQq@< zM&^;f{MIMZk#Wc&{dOnAhwTlfsCo3&*;^pSS`Zu9sCJM^qCxO632aHaLz@T86k-z6 z+9b^2%yI1;TWVx}j`GtkoXqFUk(DRch+=@eU(Y0K{4s_;j6A(jh;WmEKG*fd}qxoB0*D703=y94dk|EQ3oT2hN6=& z#`?DnO=#QKei$y`S#lF}M?4oG^rkgM9Kl_`+$aVGRuM+|QglVM%jI|G6$T09PVdMk zyXgvi;pL67HVS%UKyTR}9$%G5{gfVLUx;AtUt@LF8(2S&QY!WPbf;1~uPc_kZ9Htb z;A=E^S+nXQa}j+hywzw=%zwqnXbGZv&wNoeW`?&u6285>n4l-N;PtC__t-Z?WcmcD zQhI={i$^ik({hW2#mi`i%~1nVFc zL^Pax^cK~iuc~tDL-Pueu{lma_zjr%c6_=hZrd}m_t6+&vM|aZFUbm7&1PBR^&IK0 zn*7=n^6~=KBbEU2OY5KS#BHgAK^mRB+1d=awvt5X6?bEtL~Pu5BFM?C1{Dl1zlq~I zK;~Bdbe&mr<(DV<5$FJeD!&BOB?+oHJ;D8AGMYbuEaY!$2uJ+w;d)=A?>x`)S%PDX zkp-2*DVFL7d0ccD$w-hQ^sm6#w_Nu5N-Lu_6Is2swlIH^POqd--p*A(%W4=J$u>;X zWH6=eNpw|lyHbk^r9Uo9(@{Eb=gI^=<8j@SqDi50B>pO=tugh!yF@RKD+Vg3iFY_O zJJ=qQVgRL9)3NMy?%!#x^dH(5&L>FgHA!TWoO zs0W=uGu%U8@pN6xo0QrIyv*CY#lQ`dg#Lt>C9?=<+=tz@G4%)w_Ea=o9bEFX9a}sR zp3kG#{QYh%L#Av8H4AAQ3Q<8e7i{tu*^M6h2qXEd6PbrCagLR8NyRPfGY=1AYy3i6 zM!kg)+^4t@Vgz-PT{{;|tzR>cyPYp|tp6^JZ547%75`H%P}{wbr_#Or*Zb$?1t7F3 zG(~pN|DS1^@f!i=0FZVlVKA97af~*2u{dajzz0|%R*^Fxu+2kcFoW(-h>;^Oh}y?# z|L|h9r>o3w38tjzxrMYvOhAA#Bk&5UKlO&`iZp-tc3E+PRJa=)C;!I?t?wCOX~CcS zPI;#%J}G_Qbe+~c$;h>wG@I4%hCQlqbwQMp(`}E|6R^#1+herO+ca%>-rrvBnV8_< zD0nKuyz0RFU+`x}^Vmd%bp7oo&#ojpl1Tq>atzx>Oa?`fp6-)Ol|ji6tN2hF778_$ zl>n+KPF)s@b=n*uun^hgeC9MJwIVGbnmtQ2+NFArUIv=tuWJ4YoN(*~Dx^8T_IV42 zt%L$VG(DPi&iQgTES`LbDfZYSFBz*qbBz%WDKT9%)cwItXVrvWCGWAi00^4RMI)xM zeK+}^mpiQvGF`T~1EyV=D_$WiGyf1Mm}wkIor>2U94I%#tHIA>AXG0QR92V8qzt80 z56Mz7RN3dA*TwwdjJCOaLjhkB?_^#MJyvDLsQw>2DFhoit9pd;E6Nyzj$d~N0a~Dya%sM zynkj^!hgDogJi{DuAO=?pSFFP4weJyPxw&>f92dvP96+qZFWu996TAp#*UB4lu{YQ zhE#EG9(H||Yw2oN^%q8`PvBd>-c2WVxdTF$YNiD%8`>eZWytviZpaLGNZuZDE0lKT z#pEmv(5~K(@>=Kq%@B}s^tq?_bTxdvcJk=n_9|bGk^I`V$374){*aicf#(t8nl@Kw zKiX5L-!ub7^H5*dmjS*uyWwN3U^#A~0>Qv+TmCb?xo>-q&G|B?|3C~y%xg!(*Apz_ zlWLlh2ZbwQ<(X27<^JG2k>c$pI!!F~ki&!`hTzkz$Z9ws4lh_7Mf;LbA&06}_;yfx zNAi04!$`i5zNBt9MXNW+G9l|5ly~0s@}|NwQX6B+f;(&hbm;gg`%uN9>lN70`ZwQa=Al zN%b5`Nl}Q2$gGxklw=a{z?z)?Oll?Iz<0=}!yxd9Px~831r-56Ev89P6|B%`T+5!z zkQlr8jh?JoHm<1|uv&x{V2r_y6_z6O5Qu{Us;a*@hq2|(t*tC1zCyfAi*0awGP@d8FY)Zv{S zRYZ?9nfe;787nb#TrVRCDkHCjT>+A4o-8u$^r7_VKc$qH+LL(Db?#;V*dGgemW0g+ zhn42rIF~Mdv}u_nf8GWEXk)kHvS5}(mg{$Ycckm0E6+qfNs*j7LWaJ)mfwssG(iU{ zuv0s8UzXT^R$&2qF`6V~8#~KcaC)iW#OctzG+O?0P-^uqlr1{)8(tC(soUV%{h1UI z|66Tg#@d6=(b8c7@gjRwVs=i1KhW}wA2na%pkvo=dxZP|%?_pRk7dJaU`-u#HcQ;v zvF4a$Wk!-#v}wC!fX&{_(9!mJzWGbx_3pi;(6`Gi?w`Y9RZJ_2@@|3K7h0H-^yi;i+^+OLPN2wPyO30Cj8AJJJ>5&9 z-b)HpI_Tmo?F{Y?e8GVw2df_S#ud#yKuP2-^+Wt%dSd{7&BK%Y;Z5ZElF=6+*Ng5m ze1fFuiZ?m=@!-AE*rdTvO2nfVH~2hJeTu;z8qB&3RI&Y+-1zty`Ta>sCHx8t+R#O5 zVj|;pZyWP*c%W*h&=GranepTu)(0N(J8TTE9{3?J<#Q?2-~6_l82?PZ=o=Cfq*fjb zb+w6q+6nw&NjvVbC)qLyHoehoTjlBwSdZfOBsuw#%Hfg$?Pz~Sr#)IP5&Bh`1-MAu}lW1z7@~{3`L`i^N`+cuflsqLxGFxi)$YR1PSpgIN>bWjZ|r{ zog9y+{@nqdEQdHDlvOaDu3uEC{B{>C@vg^y8a@Y`T~ur8=i<_c5EUfi>dKR`0(fXE zm3)GhP9_IIz-#l#z&=yREOT@m-5id{Vs5&J69Gzun*Y|Adx^tR?4ZYDQ%jO;y*mmh zAu3_UM~Yk@jLwaVDRj*o=HF$D#?3Fkk*)2%l!R&sTJB`fZv0e6qk6b)k) zJ^2Uv?c$w9b|PS3S?Mh-Q`B%rs>qn=_l$)|$tg5Mmw|y&jchrFDXqZ1`eOA^h?H+| z*^tu6GMu4w^{u9;)v52n;CuAvRr-f%hK@W#{0vG-)nOsJ#ajunong+jTs1z>^H{FxiMGow7_274q9Tfy^VAbc zUQ@Jg&Q)5uG*n=R@EH+}&_-JrIi_mQ>G;Tsf5B`~=VtJL#MIRuP2DmW%*NS0ie6|Y zd`igaw-$Ej>T>}{BO!kdID#zv2{59P64XEB9T}#ggkxM7qZKdq(MWbRjZKUcEfRO) zw%*~nX8*+4Hox8z*G_$?JU?A;4BDeHA6$8`qGsDWI!CE|^Yv;myEEy+??Ue@>uZiW zQdL4O0rF2kdk9~x3*NHYqhjBK&Jlh9wT!K@Ki+^9Z{45}i5y0~)f7l+5=2<#chgxW zHUj-+pd`+29-c7Y1g^W0*Y@X!&A^9v&Hnsmkr?JAy(F)p528#N+o*VVWc$F7xSft@ zd%wP$AfxtbAr-XN-H8G~>=cfEb>r$4COt`>m(4C2LtxdpK?Fo5(y&vRTp&mC#er}< zS;jUVq^-Tw_?C>%iXH>hx5UL&zlmM58+FEzs3V9JtFnEzmoS2H)(tZV3RZ4!|yNgJu}1OmWKl!mTILWWiAXbc>HRkT-o~Btz0G5T%G$N%@vfXuuMAcn;Wc9=Q8uhwTwOFYsVar=Q{ z+&KhRx&7n*{5kqupqJt3!rKp5H&y8zC+#YZR6H2a`L~oB1{c)Rd-)?k>uMibn?>gh zHMp;}xb$Zg|6|sd3Gx1@AJn2v(z7AnHtpQbUGPV(nd1bLVu(oB`|zuoYSAb6>=G82 zN!?tEINHq~uEaP-XUaO!AKt>OeHgT|N+#KH`Hq?jRCjs-5yhq2Dil?9E8nGb*q2dG zws_jM4B|IqX~xi*)y>B9r>geh5A~*LxpH*oVPsz?Jdw1c`TIN^Cp)c)RuRmZ^1`?j zsm$jj^{$)LpWY}(#yqnBTuWM0ZR{rsdwxc@SE8n&F%GBxr1+5y@~#0p96$f1d;rj& z01|u9<@>)3Dq?o+V#R)8`)r37k`)oW(#5^jkMbg;u9q5Mms^y{{l?r zu4*vWjh&3|?ioOUr*8<^(yPnb9Udlvp?jUCyj3*NqdgCa2*Na~vAs_I+ZEF#{v9ii z)I?^n7Fs)lg@ZM}=o`CN(78tq=|Fz9Jro^B)iOOEEyoNV;$7Cm50Z6kzHKDJ6DdSq zrdV5q6?$X%2)wI`8@SFjfwnghLp&JSA#bnqF&f%)dw0cR>`iguVo8b%5n6}%PR8sZ z%zx&mDn*-^l=anF)ljnzqC(~I9STJPLDXfy22WYvt7rY>ik%(2!FUP|Jq~7>I#`m3 z!Q~VfO41S0C|>5Xh~T*r`RKV~TQVKWU0S`R;wTH-{a&0ztGk5Zv92m(LKAX1^qcKz z#WSL3l9~A>qDiYZF=@_xdQo-7aGBAAlTZb*J}8#AYxk_GCc@is0lCm{k4(5fp?@74 zZ1TI{=h+gpLCimht4uCPT-v61MQ-N!)I~oYP6V9lMw6?XV|Ht2b7%6OmRzH6;4ZdQ zaK?i+KiWapVhHucEKILer{VH&IM;f~L3F8dkCv|=Cj@yi49@Yu-;$fz^{)Tx^+--q zoAHycH8GbkQ{OreZMwGV|4q&{X>fGBkWLqqv)IaM(FEzcUMxR-<5~YXw2k)1)UQCV zD`6~4qnZ2qQe#w}CqAlKW6I~4jk8Ln$W*#i$?~@T#qhF~^zStMY%7u`n{#---uH~I zdTVGXUWO~VxjIiaa$6mXB;u!M(dxT_%5jXbzdvpzq;D|Xq&K2xodu}_uv%ss<^1v+ zmO|W&sL~>5t;)Tr>qPA#y`)9^;>4^>dem+LL2%3Cm44 z*%eie??O~@87>8|F1Qp`u){&ft9kE^|AV=|j*9C4!+6m_6hsL@x|LG88wN!Qk(L}O z0qL$G2Sh;WkdPQqy1Tne7+~n`t|12)=6m<=oV(6i_pE!*-}evx-Lsh4Yw!2x{XEa> z$?I2XYE)n*AY-Y{ylM)lon1iR@MZt9k@U>`vwy@Q?Q~_4fEW!hIuySYpRyP*plwU{Ctjcg9KsJwv{Vf3U=Ax^9py|!6S-ydl?c#4Atr_f3bMB zu-v>jKqWy!8;^tAfXjlU5efE1arJn`rs!$fsRVqZ6W0GkXpU=*PkoKm8R?czLb6s2 zjDHB@+*LC5e?w7EuM21WxiCVRI-?N@3P0F|1tHoA{Ruijy$uaX`wHu(tSF`9wkV`nQVR&5HBfY$2VAI_`&r6Z+Z>|cs7g9k8 z-(B9 zo;T+w$0wP0blW79S8 z$Tg)WxLvZ94xK3!lrdaJelLnSL*X-roZd@7ehalP7MIyQ=@Y(SLT&;LpY6xXnODn= z4?s9RY7sMeo6?OMZ?GqR(;@A?Y?Z$5uxu^vaI^S$178@Y`aUAp@c7QSkv>HIwpAAY z7rb@h3zivPYo(52%*eXw>gw|?mymAM#hRKW!sdU<-QI5mBjZxH3$loZ4h+48&)tCh zP__O`BILZhGcA-0jmeM=xsh;-_ zWtmXfqg-Tc6^nz1h9HET3Qe9Pe*qjRs!!O7G*(DkU`+b zsEFWbmtJ6oClJ}=tL5Q)AN+12K{0B6=W|PItwGDMsq5jHI2(m_$P>kp=uJJk4JGq> zl*~S>ier)HTV;-vfd|n98bX)zLebxvjOhAri86x}!*WiK|DLJvW%zrW6_!@EFlPjH z233TUJVi=yq^|Y#PUj9%yNP0I&ZmkO{+>AL?5!Gh>s`ec{Ea`noN;(wd)qd1;oJ7q z8rjuUld4h(UWOi;!EIADh!|?yFOS;v(2lf8-#I`_d zRZlVbjJ@;E8c?&_xtRh#*K>IkerU~fBUKx{-2is{Dndb3-o7$=e4tB^!N=-Jn8e;h zSwG6HXM8{Ty3Q+p;k~!JV1I4_z(;3sQ^VdV(zx$=nODt}>Bqa**@LmzSh zeJ{1-x;rV>G$RjNUC4sN^mh3-EM33L#)vkS48O7tS>tq(wwE89+brZp5A$LcdM1t^ z=*%T%T%X(}D=5~~8k$+E=$>g;1K|Lh#|qrgcmjt>*%JnSf6jX#06`!!VrQ6USfMh) z^(k6>vsxuxnX)_aHM5o=fn(vQT{maPnaMQaq*v;Z-@Y5w*~VpxJnfHhtX z-_V^U!o$hPdP3cZGK2fX_awK}L7w80&kT#;^H#2zpE}4z>elm=mL4ysrkc>Qd;|Zu zjSHWiAE)K|dS<5aBWFQDZSu2uf(C}=bSWmn&p&_fHaU$qJ#NtmK~Z_O{3(=xT_6G052h(vrbAhteD^qDFj4&- zvXu_EPuKXaX4{71OqmZwa-`;>E3`-a2wesM>{xL+IT0seM- z*;*H3W#?ka1HVIS)c!lvKW3M|1`MR`fc4NA{BxPEqJHXF8ob&&A=0Wau|Bw&pl##u zC)(omi_n*W-*jd{qa7|Yxh~U;+`dc%c9PE*YTDs=SOh9{Lh9mIORRa$rd<_*CuXrt(PopwbAQb8t$?D+OW^O%j z*E%DzvJ0yf3*&BkWrO9K450UKLcSe09ru&Se^Zi@rlS9bbkqXMN;dRV3eN&0WJUkv zp&`0+y%-GglRI_5R<4Hgl6A8&&&`ayw)G&T-$^9|yBpd>Iu&Q`0YjGTWhU} zExypghasG=;In`60p{UjXvjKHkG(=IZQyOk6w*Rslf6qN>cfl@=D$yscvi$ROs9Z# zU#w<|OMx%y#m@R!H=eF^FE9~9zb>K!P)?!Q1^clhO?G=4+Z0T%W`E9nRZ~-zDTe5v z8`s*Y{p8Ym+FqbNlVfdlUovRT&uEFZSin+Ueh!kk@Q5;G6mf6l{CA)KL$Ib`Eu)VX4 zVc2DhB>n8ToSu3-X(6FH{qMN+Ag<)87AKnxrk}K#;nLc9iwEXfaPOU(`sO<>N)OW% z|CqqYPaE_hKs_t3tj-kt=8lifgr1v`i53=wA9l#Im7tBhe5&Go+3FHr`C#Fn_Ukz4 zd}UP#i%9F83{+7Eg&%~WaX4L(JMF9X@+caiihMCsdib>|8i#Kvn%DJ!Dsl8n=YY(? z0G1B(<+T6XmoX3J0Gdv>^`%G3Ra4B9QKc=2crBF_={iBdouVeI$QhY6rf^LtI}^Ea zw{`it|Cgmwvnfi~fUaoubaT~~=9py9wLtaH;{`P`=N)Y%sdgsR27c5Pr*-8Uq#IJj zV!^uML+d7oF~1;>$xgVoguH`>qLy$rD1foBrY+$QRO%`e<&Yn0UaP`IclnwqzOXiQ z^(9Sql>Rf#ugh8P9sM7=&=3?SV$HbKy9{`879K>{a7!93Uei%_t@W+ce4qDfDs;$Z zA(Z#*bwS!9M}&qG4HzPXf`*?@##>joiBw+djHazZ|F`F0IutHtXKM>8F+KIJ!=rN| zjr(cz#lCz_lVm}ZkEu9sJqO$O1q0DB-4@tnAoxBfoMYSe3?pCobX=xFPBsku#HIj0_-ai4h_ zaL{ojX*HKKDMHaUDZ(PV;at!V&YY$&md_y-t#0;FwZ8F^?{IAmD3L~6u0e)9PmKdb zRDISNOrb;5vm@(IoriyLfBdm|^eC1yr5&pHPn~6l;pL1<*i~Q^lD#sbyGall^fHM^ zqXhQ#yBdyx!6^Bo12~s?Czw%MCJ(LMO{*T^N6PWDOq$DehE`-Luf$%Ch%fa^gZgXC zy9@4AvoG}qC zYRlsHaF2UfPaEy&PS|Ric76TncS++!0G3OhS<5NN*-}w-^eDaV^W~^r3<|$b9e)uT zu+SaAbV}40vsPGZUF&Z+u>lc#ZdCQ)FZI^5`~=2nQ(0X{pLCs-s7!ik3Y6`VMb)Wj z{o28S6tq-0Mg8ZO24u~yM)~o?ticP;PyGLZ^ob!Z9DhI;JYoars5@zl+|04N`lJ4A zn_GJq>t%-1ql{*|)K7yhWNCw&1Uom6aDTGKrFpyWMN0sT$9~<029#68hUbLgInmV4s6Jl~bp;K`GG%)CUI6YH=tu?QZ?WHb9xc&VMnO%;MpkRMxFs)6P zMOyvG_yT7yldi?CK*+`!9oz#aneO_@NOhW{i~rU6aqPT8emWukb-z#R|N1Y&POy}i zcN3);4l~g|Hh+daZ>J`H^U{1TB3Eo!XU6Ft67+>n?dT;jK5S{LNLD{(Z_JzP-@Y#+ zlJC`AY?+Jt?n^7hdN$OkD?!x2yOJ!Ciw+ova;TtG(<^I%5Y2JQyo;p^RYGI1)9yms ziJEK;&OVkD9l1gnK#dV;s~QtlnUgjt`k30%l$XY^7C*;v_Wg;)=%}D;GelgXEcxT< zQGL**dZf?Sp!N30Xg95T6hm(A_cq@8@C&xQ!MXTX#soheZAMZ(1`!NWmx-+*dijW; zCY`skLF-^##r2dLx|vCL8@0bzD^|aww+%qL=g%sLA`3TYisoTGF(e1Hea!{Xm9Cg| ziA$+UpX%9t_C9Nq^#11ISYe0Q#~o&op;=GhPseLx@B+pY7SPw7SSA$ykK8GTqqL(R z5oQEd8WXuSPb!sY9&tPqwW!L(3q(%B^#WMY71A!=mQViinKe=J3w-(%VXYKQpZ@6m=k$va{or-cDBq13 z@&n21kS_qsK49H9tolwbQRYv)HZwn>V(nMDMIN;WIZpANDil}w^dv%Bwp(?Ab@J=@ zdi=H4I8Szr>Lfe&P3oe;UqOKyAZ7C*X-*?xx>|iFLV}r;6wPeF61D+CTvgUnX56dwJy`kyj9_W>iCu)Dg$wP zwzZhsEpGrKU4_KG#0!6w^MAzi|Nkhaub3iwNqviY1AZkTe(2@wznAU%YFpja1=ITK z9FN#DVP@O7J=yl=e1XbK4YJUH*%K3!7C_tyj|}y!zQ#Pk{tC0%$HA!Y$&q>gc2w}a z$cssgc{&sQIM03c8NN~DJuHI=o+-e%1K!kl*c{X!;BT!gx?v|Ez7eO1dvp{0fm(<( zv0uLb<}!=GuYciN*~tBIi?(zB_Rg;E-}%b&cWw*u;0&U30S-cc9W*A2pMIs8M#|-& zW(*P?aq}g$`KB)*d=6Xl5B?9M#p;!!y$uorclqxvo9)WG#GNy8@}oCtexxG_(5#Ni21Qd%vL)H@JGc*4`KQvgTmURZ+q$X6v23 ziZf|j)QRTFQU@!&`OHP`T6O%8&yLfcS{Eb43;!wlT)CZb`2rczCu_FidVZ@7-8;kT zAE|XHH{%z|X5(h|W%J@G%WmL`U*#o4TA6Z;r3ZZarrL@lP58(j2Mf)@KVEE<3Ha3< zCLQQ@Q82ImD_;LRVE|Zs+k9R1>+wXqOd;c2?8EaHbW=N&bl-sQWKLvpLkjJ^*j#NC zoV^E6IySGtLxF5+VJ;4U4mK)H56Q&)=pw@B%R%$i|V+aoUl0e6et&O%v+U zzop!~a+!sHHcLC<;q4f)5W-L6;cwX%t)0b~KfUjpXU?*rGW~Vd z)TcMcv)97@;3Ql2Sjwezt4OO{-eYI=b|CLw|3ZDr`eYo&t?lI_s=k9MIH$I7grSLD zzl>numhHh?A7I(@fc$YnruyV~JggP{b3S zD@hqyhEh_$Sx{ZtYk+n9FjVbsbh1 zb_W9BbuMzxi^WE2Q``{bLKK_l=ua#}NH{p8a7hx6>8&+RXRAc+qD?x0gvade+-F}t zNFiCa5xb4MK}ua<&eaC@IsnmaGVn4%hDchXbBBV8C0_4z{g+sSa7Ua$L+j9(@ zDC7n7hzh5IlK)+TcV;lR+Sz8!rSB2#T9RLX37lm1d z1XJDq699rdqbUm??)e;<@F9Or@va6(AXcMH2th%7oRX_8M=2K7YCZD4d4)Zl?s7YJ zoZWiS<`?0uR>dHda3eF)J6l*EKQ#Z7LGF?gL1LjT&_nEWX8quU#&RNKKurzKD;ZAp zH_OGv^pnlk^wEGBNn4l2HZN+#AgU0@m1UsVHo!hSo9;_V-(*KS&3dWAlmdIPW-5T{ z9+0tJYRTlW;)ND#Y{$~ta6Bk|d-+y&%9UjA(+|s9+gduE_r(GgSP$!gdK&hU!u6uQ z?(mBI7~2YV-Mm|$)TYAU%CpzQ~PTb#y`@lFl%3tT3t3;13PtwO8`BlFfLct%?`<^eS zWI2l+9t_G}3Wq3)FV)AGq}{sbd0SmuB`w88UPz391jy^WB;g&5{I6-jJdopx!G2^d z_Xp9;8mcmXjtY@vg6XMBkL|n zfYiA%i(gu7A`>6=6?jLsE0Crp(#K=e*H>FVdXdmsMxsz$M@G!!5hUCqqVebAn|&H3 zz(lqu_qcx>YS zBJb_e?%gv_n07wHdcmQRV!bC1SD;p(qoPXt7$w#_lIC?Jl+7Lgk!%y-GspT8w9hDG zQCRn(zcIrk;YMmcsjMX(i8I!u zY}lypkMpG#t)ln3E`bnk+#*H;MHrV-TDF07Kq%S2Q2OKse@t_5@;R6MakVe7rPre2 zJqGkZMh#y2wATd%!w&Ao$^~Q#e z8~>DkzCjkdGbrxpf!C;fWy-yaY^GUFgRWwLnfg`m>b=XP2Hx}6y3CQJop|Ag+x26Y z2+>u9i*I2s%4gKzRiAHky3n-L+fufI8lZ%G+rUM|dUa*&j*L;c>)(i?7xi$m~21K{PK?BwUU zvZi%k+3Rvi-R+pHHzk^V-f4QpfkfZK2>&n4Dis;5%YYzli+1wE$6#u)aQx-#SmO3& z`m?!#hfJplBJGrbZuUh+ck$!O^$MZU;Zx#~c(sUfDu^+T`XTDlkbcgb!1 z@-n25Qv8c|j(K2Q;TIT=9O?9;D--$S)x^Llowx6~p2?2kzcatbc3iLeXz>MmSjPNo zs5g?8Z7$DM@w?ci2V7^tt&%cKO7+|4Mv63dss7DFD``Nl+=rA3KU-Q_GO-mX>rJAb#&L;!^!51c}i0E zX?`RsJu<0@kW`XP%tYy2DPN{f2YPM1@_9}7-$!YMLc%cGg05a5;E){MNq65azw+nM z8kF2;*v*klabN%d2c!>wLCPKffDmtHCMuT|;v%Fd%_l1d|0>OkS$MqKch(7gEE`%r zi-u`WCis_z^o)DOnM>iTm5zBZ003IV|67dLgIReyp+rZep5BnH^qiIrLuSMwy$md| z|AAoR&G$a%;M2$(Ce#gZpTiDsux|bW&-|FmB=6`s^Mby1{Jwm84H(b3HF;)a|NL|V zJKo?C5$rt|bE;1j>_HbbYL;sa`$&o$g-H$i}qZRDE zBfmh^TRFOzuVyPV|g^1LtFzYMwUtU;@_s>qch5>FEx|6-jlu9 zRk(W8d9ZTxq@(QH@)-%4VZRlO^G!ilGmlfQY0*AD=?C>UbDuAEp`99p8S=WVQx<~8 zO9;<tP;rVe_H}Q*^ zS*`?t${H53)6-uOqHxb+_a+L6f-5%IWE*oV|x^_x9^XB~C*)fgKFFyM|6#!2w9k_q{jbj{!Lyw9`6 z^)+GsSa{?AcLC2`6f4=#9&rf3nFmjcoqP$o8bJ^3txQd95T8*AlkVG>5v3pO>SMGU z8sO_fp?B{hH@)`N+YjWZU~4p#KwX0_5?GGUKKDLZsCiR4)5viDy4eqGGw3g`<#b$> zTZQ#@g}u19qYVcg@nBTVN`w@ybaiP1-$yUsqEx$pd#KuRXfu-N&RO7_z|i`B>Qys& zg8q`xBIKcz@wCtuGx(U7>f!``837R$dv+kuZw})~<_t`#j~Ye13)qsvo$~J|$BBCH zUV#xoNuLjr?aqMmTu(w`qSprJ6=mM^>H}^*;^pBCy`EH^P-5Cw7Gi?s_(fT=@OC6K zeWLrb6+>v~l0z*e>2DTt}yByL~~AjvVQINe0px$@m5oz{aR+<|va zByhpA<>4rU#Rdx;kJBj(klZLItUqE+sxE; zZ%m1=o!b2_CZP>`M3pBA*u!KKW!igG&r6UTpYZ&ALwW&4;vi=UqqAj5 zI12Z!X&pA?U4}E$l}Z~evZ1vJ%0Urqi$lFg7 zpl&Lr?g+x4+wzH-+Ko0+ryuQVe7ybxJs%jCV=T|csJ5V7NAi|T6tnjA@I`M!iXQ3N zn<~DLU}lsx^?kA`t&LZ0UaV?WI_$!;sQ7SE2@yB?nDvZUUG_4@C_l`jKw6WK7O#yR zE`3-%$)a^WpU|Pbl#MvOI$8kH8&OQzfr)Azh;RNj+UYw)kWwtp2=vlt2PZDNLRqrJ zORgr|)6~&7(=F#Sj+yoo0W_|`X9!piE@i!*Rb9DwWvQ{(kLjOxFy>BFupW8Fcp zuIFVX@hp1@T`b}@><`5IjlJrq=$+ky6)`Loh6Q#@U;A*ExxBaW9`J|nYH zA*Goa*+Gj5W0x#5?k-A}RgcT4iX*7Y^ee8~e7L zcD)%ovYx`N!tAe(A~Ysv8C9AfFZO2fSv`)WwEuq~38-r{@O8iuWf(m>hR|{tbE4Xd z7H?`ki5pAJPWsF=8k!xJAcU=>Y2v_ud@(2d@LIZ0RLBu4vsYdBMNTgl z1LZnKXKy1tj*i~(Xx37>x)7~>$u|&&&&$9ba3LP-OG4rbm96q3SLq^t4U=eutB@Y! zNfd1(bBUe>LOk1a>*V$r8iAo;j#E36y&OT&$ z82_*(GvNKt7Cxu^zIfRfVcP&}$J(^SZxU3F3KX~S{H{>T}mc1Alv2+2X(X zLzr8vq~D1_L^j@*p?iJ=_EZ574 zx75Zu6<(arUCg+9oP}p&0PT|MVWruL+NZ-Um8Sxfxgp1p=-dKG5#}6Gw@hwN7T|25 zCHqHBhD+t{tpLYyd7bRL*#4Y3QdafoZ_1uZpnjdWo67^;S_aX536=zniFvN?qmUjk zbX;PvX^}v*TDuq_5O$DSH+mAc^}Tg#{^X<z`J61|fddHPN?Bv0mbwLWBi-R7bh>SzE;b+FRpdtpzK zq5%IK9F6C7eGn}@|#{JvTr|E=h67y9p}fVk_2txa@UR}tVE#EXyr(C-4j^-B7@nZ6~8 zJJTQ|Tf2Y$sYm|0s>+|o>$-Ylnu#Q7+T>H-4%=1wjXCVJlVucR{Q#YM5wOku>wc-> zoFYJHO+RVi;wENtJO|BUj3SD>p7#tZu+@#V^6%>D#RIYWyNu%Ojd1+DWOpJpswrr; z_{6hS@X?YS6|-ez(%oJ+Kb(h7(3;GP=xU=*J0j(5n~wjo(Ay&4-0Z(G=c-Ok(I4@v z0O^|VAa!||*i>)f3+4J^TQCi|+FPo-W%D|_Nv{v{qbq|JNn|Qa9E&^*4EZ%DXECeh z67S=Q(n_d@({uIw8=t8As7_=_y$Zc!TH8gB5aF}1bCE%5 z_X3Hc@acuzE69pn+rWM(gix>AeIXIcCAHw?2ywE^D>v?s;~c)qwjLMOqr+4b{C1w} zTlA2|ikL#J3>s&^Rp!X!G7qEPfMIg`vv|pLmLwFK3{Ro_u$|MM%yN3Ej`FpOW|gG4%+uA zz8lwiClVQLMq6bIpKe{A0ThErjamVeXo}RPln9zfB}9tP+ObLURr=Q*R4d-Q8zVI$Fb0eKa3Yg z*k2CxYR7b^W=#JSE#>*Op%T=?7r??U>^4plMssyw6c%iM;`h0Y*RGvvKh^1nY^Se> z+t=yi17CXnnkv>R@8E~OSRSdXcjX{4>P2?oM=dH={xIRIB*EEU2gi{g>qbY{pIkDv zC$G!!V|ui&*@j=gej~$1_qwL0^`>b*qg7O3>*GcX-)gH~pU-99&#b-rrtNaC%<4J) z9%E(a+~_euH4sO>?Ouz`DIL&#?$0IyCPR}LjJaPWnnGINj*JsVWfTxlb2~drqCSUx zzu-~nlYNO4CSn}9^9HHPk-hToVr8zW-|FLEmD7xH`Y;hh%eIO?bmt8Fws~Yj(B;Nw4Pld zlw(aAi;og570pJGtg}~}moCpOskZEC6eIwc!%gzWj50BP=@RSa3JC6a055jbr?tQ9 zURxDegRu^HQ2l)m;Z!i6Qp@$*LcMND>Cd(Mno#hMnP?Y`<{z_zQGgk!bST z5{VXy_-`D|M@h?KwLR(%-ZjN1f_NJp1KYXPXvl`DeDBB_1V(T`w661|G)E-z+ny4Q z#E-JIpuvH?5eJM^Q)2}rMWi{y?IRlID@}TU$m;v12$Fi&F8Zv_>sgtcxYLKL|3Fbm zZLHI6Vm6W{fhUf66{wgH_hBO*b2i6g;qn*e^1dwQWM3Xw*dKL_dZvmnY|P$lXrr~) zkLY^$)*yf)xL=25`&AI51fikbR$Xx~GUp}{=ZbadRonoFVp-5GMT+^*%x<5g2>+Mf zKZ$d3dn`;&UUdxIJ~!@0QT6Lpq7S+liP264OLm6&VHcTb1*Ac(>j{iIUJ3aaQvQoD zgdBDD2RODdG1aC>i><9Z_7kt4!YeO?+BmXKo|wi;zjl*)Z3j*9(7#%Rhy488`R|s| z$Zbu=OMTp4#5YRRj)5KBv|yslIFQTf+-cH?Ur;*2vc?zTr(8O_TL)*F5@GmyHFH!~ z=Q$nyHFbsNT#jY?BksAcUM+U;*&I5!J9YXu>VcGvEFIgXAY{>2s6~ab1U9Ki2XbW! zV&1Dy(4RMn?hnBV_ydecX@_ZPC%xOpv=z7E zTBq-_0)Sdpg5mLA9r?mUw#?aDmn>49_VZK1x5}V+ad2D-f({DqH6a#pI?N>7^@7v4 zzhb4l_S~ifW#WnRHcP3nnN)3wgr(2QYsu85q%cmA27Gg1ZR7#Ud^YZ7$ zlTzN(=FbJ6pEr1v@m+;EJoyi_#?-B{@<_J8kCdRLy3T}@+(FgxVe{6q`3)hAf1#dn zLn2EtbkB#lbX}w+zHfB>hC9nH?Kg|o@I#fUr6$h1)WuVi&J%h+1>}hnh7X`&m{e7- z`$ox*Y`qg7T?`sF&&W>qEYFq3SyKn?nc!iVR*7_XdibHq>vp9Vsd+zMSew0fjeR57 zl;lnrRx^`gBE#h62a zsYd?w{5^SBu>k0ewr@T&#nc{IttZEbv_JoBI50z-yRc}=ONs;Ld@YWnBd56w$|7v= zBUz`5p<;Tf_;*F@=c8^z2Cl=StHj^RgrU+Fq`~PIog<#KB!@_pb}y}JU11Is-*~d- z;Me(!=Gtnj@ORj=iq&Yz@atCjp7J8UCni6I=4+V9FCW5ijSdu4JF}ED;pdHFf)HWP ze{*-u3n#Q2vN&kknNCUAPgxeD1V{CvqsY`_sF3GI13wzAx4IJD;*q~E zw#;}MU0G_d*Hb!qrR&7`uEU~`*|mc(R-#{IRNoqCgmO=sPNJd`YQC|fcOg@G9+2RL_X?Z}?GRVr>Odxsouutg-rPlUS)t<;n(vHzn;OqSzFp3Vg}(8h0vl zFI&2#d*g$CJiJ%RBBtxheA;4ky2r!RgQcHzXKmtUwma~QRMMjh*I=6D+>Q{A8dUr!?b0ty= zawc-1n;M#%jp0HIut&KFKV@%}YFZc=Fy8zO5(*w%2)Yod+&CdeKUJJ*d%Y{mj1;*! za%xe2^v`6LkB~HmSK>)?^PUZ^NFT<^ zu|p_by9NeA$Mi71O78Y?jPUg@?>bXt&md&W(~Xfe<(lCN&itrXuy@r|-?1`J(DFLV zE?Lt+wa`GGtp^%zaI};iM>?njCTPb zPPO59L~Jl!=pns@iyWis2FU|x*c$c^L)cGY-x12QcjsD92O=Hy#20andQE4t{Pa%M zqSgxhM2gX#Dr?zxSL|nW4$5)IJaZNn7FO?dToTv5Mc(RVj^P*|+>yZs2chQJMq}6> zckPz? z!MB&^J9Qs#oSNuXh$eoYlbi&2=kfEbcuh;gIHM|BFyHTRKN8d>UG_KKM#2nD`vgDS z?Sy|-*~qroU_+@OSWbfOk#RTL6(k$!rm-YTPPWeY)xdir)<+xSg6}3uEPJ-ev=tup z_UOq-C-%Y=mWgczedu@6Wro#;+cEY41qN@^8u0?G(Hn6K)2Xb+;T@URKZH93X}%S| z=BUVhQar$XDlV<%-LoOlm7f00*WX&V>ue;Zo1BbAEDwhJw%P6a*0cA8**=)!fBpfN znjLd`_l0QRF%>o&lHs^$p>rI-lJa07=E_!j6;*?S7*gsL^7_aqC@GK?Z`28poHXFL zuAm%0N3;4^@6V}@tAe=ns~c`ssRRs&tPT8p9}o`Bjb3Kyt7I>Aj2B*ZfF9icM~93* z5nZ>1U(~TULUt0guHvk|`|9idr>N!c+G4OO*>EKW8C8*#)d&3yppDzHhj6o1%7=_< z;}gGIe6BX|3-Y$=Nm8)l!j50sp|QT^}bxrHV0W zfuF><9J*ZeGF^{d4`e-B^jSULyFq=ZVq8$1QWbL69*Diwy2*^fWjz;)>Qy?}Q$7fa zMEY&i9MQ;Lc!#mLh8!SEA21>ETk#h-b^&0-?Ie=lt`yC+NrhOY);CnoCf z5ow!Z44+9wUtw%&MBjeT9?g5P-Bo(k? zGMelL^9Tc)y`dZRE((gK!F%arfSF?BGSyM`K5##54l9Gv8vF0_^s_Rq9HP_~WvEaOwI0azdIOL) z_E0~85Q&o;b+~4{lE$zdtNg8h@BS*f}3wAB0WF))5cPYnU^z#upi9<71i(Pkj@yN ztDUny$~#h(k#2}Bx#u@SuCDy5FD|8Aun3d?KspLlg69d%yI_-{M2O8G19Yz!r2I|x zED(y|pdUx3Ka)|j6?x$joY_t8$N;?!&OE;vdpM+gollslsmTS4w_a;H>Nm~{WLv_5 z`FnW}Jve2073fh5(x{Qw=FtR90L|kVU$!PIXeRuJ6buFqk+G0jh%u8Rb7ZVJ>SnNg zxx9%b{~GihKX*x^_(_1eqxA!wTkYxtjbe{{?lg7jF@dcRAc+e8@bq~1)y~1CL=Ns= z2U5&;;xb2zp?NtyXFD4YUK1Dxsg)EuyDW(IB~10%S)n%%2W7Zv_e~k8sxp9#qKX#% zre5tYvZqj)ub0YC7b+|X>8=S6@^ZYc|tH&r znK#5G4!C$EaYc%*%tH9q815#bp0pE>f_Bl;yz&hJx_pH3V$8UFPrO1lGhxCggpUFbRa^M;H5TCKQ*!MFL` zimNVxZbvFYgRG=cCAkf{_OK5na}1IXB+VJo8#iOP*AB+8Tj0?qvM~Gw)_g;f`<{Ew zbfYMJJ*^?sNq+3s|J4I%z;z0!>r9S*QgfA;pl>7I|8?WnxK6)9YL5IHOpztvbuAL8 zuxzs8V33U2k|V7ORpfMqHHXJKX_U^eq{TIBpDr}61j;^07;E1T0Q0bWFG4Kf80 zwzWpT$@!undFBeu6VUnU!P9l=v?Vv7dYC18=zp9&9Z3A)?#XR6mZ0%J5Zmx)V6E#4 zyXUMe|3!Y}uz5jo*^YTGq~0*uCT&*1Io3x_q=cpkF!2`40pr z$dZ<_PL~s~7FdR0K~_20eJE` zyfHn8OGt7O3z=#6xu>}=1Y0$)JpU}#LxR`Eiqc8Ple!msSXOSIeQ&&c_KJy*Nes8Z z5Oaa@3Uk;9@hD|bp5SG&>w2?d$p_7pk=XV955%94**3-JA-3Y}^}o^yA8!N1zCU6| zr^pUM7qKVZZ0GIBirrMw$I9;+9;~*i2{fThkyMfQZEG*gMrGHeVgiCIvlK*1C#UsD z7a;><2%tgf+1jt@@3hmCFJeB2swzy#B)<|{hA3olUNG9?U|8XbrwO|XCg{Vr7WW7cm3m#et&QaYe! zF!j5vN9*?!e9ZMLU4cut4$OhC)=a*g@T9Q*QOyA?kt1}ToUD_h?7n$O%p5NG>F!)? zKKD59?u2)z8Fr%1C2_Cbh}p$e_2aE56q|2Lvz*yHk36~Pc~jwitO)x6sDo=v$W3C7 z$yx%^AZ@bTA{2s9B~z{YV&@5&ibP*G?cUy2+XR{ z^~7OLV3+k$!*v#_g`97A)cl6)j}aIgkjX^#;R$<1Q~36>LMT*UQYk;t)Ro9~1=3sk zhW(EvRk9?}by9)28f=>5?tkA><`;gP@P7tBIatq>|JDF1Bk+$`ozzsot?!1OeP@uY zT>YPv57YrYM#KSefYiJUD=Z>&M+`}d-+8-HUfF>sSgHGvo^;@4ecr-)!Lo<=bez|R z??4!T7B`vc0?D9=@}S?OZfPf(zu&tgdei(Pj%Vid%V(^uEOom;+3F}UT>uQ@=sZUBVH9`{~yR=Pq$^sPDKE_o#}YS)YH~^ z^ZfqRo##&*Z1zX^Wk1Sz(E&jEfFd7&Ppbb<;n)GA5-1zxBg=^BaKrr zaAO%DF4bngdLDV!6#WP0FXZ30y}oWK4z`Z_9rO@2c*&j}qu!W0bsW!kA)cdj%&U)y zbsEt1v;3A2)J#1HfY&bK_A1at$}bYM4K7o@+|SIeex*V)Z}_D>PHfkhh!AbF6xXb@uMK5J!BBIA1a5|u9 zg)+}#Tqbod+bU#V>UZbv*9REal2D3OwUNPYEjdh=qtHwNf>%TSlE)B8LF&^VDaCyo zkCd{AJcGNF%(t5+ML2f0LRst8T7O3{nXECq7pcADa()#3(}tAkY+^5U?bb(N?f@fm zUky<3@r|4|=$0IN_Po5dJL+$Lu0D9&WIi0Hfm2P78+8q9^eeT8->cYPlQyR>ZWCawI(l<`-ixXrk8{eTAS(aM_3SUY*~bSREtKOjds5f z&{*N%MXt*APUxEc6>EOJhm80@@ycoH9<9r0;+hI|ngp3ivyqrRy(s8J2iTsY!_P=b zu6`v|-~>^mmOQ}|h>3jy0)C?>#U>%?%e@YHayh{+zOHfoect%e(K1rufN|_}`*(05 zG=mplJuz@DLe%6RPmHUkIv2(DkV5%3<&nyf9#a$Tt+te zcZO?_;3Q6N8L2C1FVcecV0C_MdEe@M9!=-Xil=Ee%>`pOp-kmyWZHUYsngk>v%WR( zXz=Wt`UGz^sPfGmZG7?y_pdB>!wj>i;nCu?MnXzi%5gm2M&?!QswIpR@!3IMJxw)p z=y$;Ba&$h|OL$~{gNVVWY7n0CDvpt7Q1-r9QiN5(UP1<2^zL!q1E%U~^PQ;0qF7hK zoK@7=Y9O&f_+B}N$u38*^|;yQ%3F+@wMH?0C@U^5kg9;@QI*h&{j ztMkDFulaSbg6iMSTN9zrLHqZ{oo&Qfg!HfEZesodC{S3q8y~3M^ zfd)naLt~^?e+^$Bv2BQSN6QcptlYI_8b)vQ&bRj9k<_(NZkl%67C*EqKh45zJTf5H zz}H-Br;w}o4`gYFs{8X-Y3|@|0f-t-i0;eG{JFR+U2i8)S!-m5(d!PM$e_DEcyi#2 ztQ=h!K=O^QJk3gtSS>>lQle-0Ts=6sSd9Re23_AO9}cNm_=ax7+-V~lVZl~>sJL@c7+mpv<@w0!5csDU;?Sl8zaX37=9`A#7UhOoc-&!UPDk{O<+QReGv!p6^ z&Z2g4;f|f!r?Q{Sk87ybwtez z&S{31TFN|uLNeqUmI@7OarHoidc1FytI}GKW3_bwB#Cwc--FWH+N0yQbpRHF6p3+5SYhGRk|GD-*xA zyEapG5E*T|Rn%z88+Q}j@$Kk6W(TMOe_mw(OKzrk6LaPJLSlFL$_w(?Oi<5HJ-|aAHT1QoC}Tm z)`rQS=#ug6Fnb;->+_;~4chnl@Iq6Lu@VJE^`F$J9t!nf5$=JwMT2m*sx1D}lGRTS zR&1Z93@ge*?=r=z+~joQt`W>4f#NLh^7x_3VKv`?4$bzlKbGEM{EWiO<+}RMKhQ4s z4~i5MVv*^nsTW%&=gAmJA}IFhWjE!uM#r<=_gt0?(&yxn!GXYcG$J(8Om0A2-AXd; zQi}N$69xMFqX3i*>J5s32-JMTKRW8^B**Uk(5c zNaGreU7^4A;Jg{6GLHF&uC=%zZx?5J6ReR@YOU-9Zz*9IwB-PyT_NX6vH{h_pJwmZ zr)+(BplfgG2%&HV+0{WUsXv6-SBgSj9)(@n=6|R;GN63k+OSri;1+gQ!cp$vaBjb4 z-1}7`S(aU;TBZVIVW=LPP9NaESZQD@Fpy+JUW>+kF^esSm&*wG zaU9_0jI81$4fDAqN-DF{z746{cJ-<^0u-+&!Ag*v0+2h z1xHP=IKkEzA_aX?5?xnH=(`SAu326^+5Gtr?aemZztH9h<9i~WggY2NS!(!ghJ-KAcR?d>VqvVE{rzz_17`twTGXF1MASeL`K zV$Il8>?GN_Em@jntk0b%C8s|-d#{y%z~{||?cHN!e)-CM5CuhJorNdv43DBT(eMA_ zd|ta}mKWda91oZ$;MiXf_w%=|tyg459*+)SyYER;3~4LJH)9lNt&IDv_NL2k9oej{jK<(MGWq(aZEd;EpT)X9Q3u_s1R1?> zPe?5+y60--AT&N)xJ!Fu2*t8(WJ&JDi*eC&(XW#SFz@Ua7fj^7*A`@J^LXmqF&6$c zPRXpaJu{9lHhH=W@;kLYHesJ@SEcWQn%7%Jc@5N|i1!mGmI6Ox+fEZ&AcBL+)`MUi zm-_#77XJGUU48B@?MVU0F#w*&G ziK%Pd#l~1RjxXTmxki>@9TtBd35^qf|3FoMWuC!0Q9ilow5_D+F#8>R&rSC>CSTiW zckk@5+L-@RSWFWp5bGJweKc}qaP{tz=k4mkt(vsh2z5E#QJ5T7_9=sqP?a4-ud``} z!=p_GXx8rG3$r9>{xfowz!}I=z0i(rZB}e2@Xmzoe4)71_Q0~G7MyJM84d8DF-#8O zqLP;t>KQy5&)Pa|7RBO-sj5CPYm|+3j9JBOvDp#Sf6Xpc`VU}_@u-_3RirD6tr2Hl zNLM*J>T5fiuQW2Ta5D6>Ol&ES0O7rD8WHq4yq}tSj_tZq=haSvkX2LImQ*W=>+VoO z6tn!UAF*-ZK3oiDUs|!7{3LyKa{9L;ObLj6$bXU|+cOQOuc3Q^h6?fbRI{Ppi_NwP z2n`OQxgGXf2CsQOPx?y9*g72fNZPqF0uPH=OmCH&C7*e-u=F)pVR)qrw zyxB?7FOzZ+y0$Rj@^d@Q7L`)JpK2UJ3}&cIeJduSPfjrr)W@5JsLwE$Wc{N4Q!zuM zJK+~Y@?0nR5z0Q{;Y?~e>FjJT z$g@LZ%yv=tedf2q8NL$0t9MN1mI<5y3Uvtx6-)LxO`qq*_EEZSC*3rH>F=Ry{+b_yoiCkxW5QdP7s>K4F(s5Cr6>nxkCOGo>CTZEX7+^xmB1f+&FLpZ`by*q zB-7?Ve&ubM*I{D)*^JbY6ALzES*PBCg(xb_JKi2V&j8#ogVZ@B6hl0!;t}#pRuQr2pmTQ%PD@@74D&aXvCdsE50Y__Aa%WyXP9YoWVqD}1Cklt2Wwxv zjL2>xx3Kd|9UIjDRHLmnP7+4PYGi52D4Gel(ia!=IaQ^WguPtc0hvV7)D6(7{Z~^! z3Q1(^^)=B29^E?LR^sVyqi&rlnZ1Eksi!D6e;&!yvLSn_EnXZpbKP*=(tjU!MBM9z zb|^#S@@;}&@~&A7R2SS^^tZC-7q2Wg!cUvoPT4BqpES_ZiTJpL zc^C$Vx}qMxvA{8nvgc(!4r|sj zN(*!E7DrVWEcHfD2T!%NECgXiwwFGAx>>z7_l{K;fBW1P?d@v+?rCu9|H2!GNGPB; zdd>vAUUWp#8T%;uXECNN%r`Q5{`u%nQ}YTj?Nx$RH=CdmHsNTKwil{5tnJbwaBNs7!|Hr(4Em!qEs$ zz9ZAoc|*zI=Q}AezXh4De$_Y71|peKZlj(O{&K4Qv^?AQtYsB@j%`C9?X6IN}L@Fa2v3RN+0^gPC`vr|*J z;#C#irr4n{lc^eltCU0&K7g-RsFjQt)dSS^gWN$lsJ=voK29SGRBxa!X-hF8iK(ln zF5QX!koCD%RAw7)IG|L_Ug~}O-j*DMSWHXKzDbuYBbe9n#~c@(QG zTuLH+-r5tD;sJM397?=7rlAgSulDiVm+e^SPXnvdcgzjjVt5Ove?X(n+)`8e6rUeu zahBPGVn^L{MH%FbBO_d2b_|TyFORW1Y_%rH8-)!`k0pGk$}fQ%17pPr4^agS7AYDR z6R9*mXjGf#FhiQW;{}O(Q|PQD-~Xhrj8UD8f!tf1A0XuC8%3-ZSg%=>1yr)MT2bPJ zuKZS9iE|pA6~i7Sngp?(DVeBJ*}DGP7hd_IhAYv0+by{Gn(D6z3O~q;s0Tfmiy#9n zR^~o$Fwv30%g(}=5tB*p@|_%=(#^pcgdb9ODBZAVF&hJHw;T!jN^PJ5ao1;WGnBA( z24_yu@wvhR?h`3@o>#A{x_Y|m=kH>9@wjhQiELW=iz}Ux1Jh>(DRA--l|sdQX3Mbm zzGR|mnD0Zy1$`E`s?uGHef$mhbu@uly9$mZ+e};_ZrV>=@fQe%aP4;53;zKV>@2lF z9<}HJM7h|QUqtr%lFKT^(I!h5%6Eb;Xm^#smk8#Wc5PS3;`Mu&@)X};Rs63R_UorZ zD}4btph1n>Ef@;xWRa7*f4!KV`zcU$07@PD$L2BCme!z?`IZJuw)Z<}>qEZS8H*b{KC#4V>($pn1sL_+C$LQzUrffeyH?&mX&Xx$ zwLcm6%6^R2po?L&pdu2SdMQID%7~uX^EU>-vKDNv`XI!C8@$Le`AnbI&fKwhOZN|u zl6($%c56owO7(3+AH!uxGys2N82_(NRd{dk<;_0;8nSV6QF06T;D<`SqpFeth>Pc% zt{s>t%4X@5_b7))Q+tNUw*KA)Kl=xe-^;)4MO`}X!uh#1_>ht}2-0=wnv0?ofxDh* zGdoj|W?k@&DWv^BKxQ5i_789>eJwJOcZoV;yg;U+zGr*#!4nm?2v*!b-kUs>zI+n@ z4Q}J0DWqW(`bx0r`o)2Vs+qP*+PuK1+KaYX2P@{Bz(&?m=Yycm+2lWfNmimS1{i^> zxnpG!$1f5duKbPdu0BumO%dl6O(HhHt)*wb@w0+MQi6*tBTMcPd?n87x`-+U6LTy< zBIx-r#ECi_?0&3p)^mrqkkit-3qrio47ziJJXLWs0*0v`XZXFT3i6cuc;Bup(fr-Z zf+&}v3VVYMURiXyh6$c3sGt=&Q6y-6Jn$JrISuk{zAEleb5f8@7}9+t+fT#rQwNM3O-3yu0$^Da78xTuIN9?EV_!1F=}cy?FC z&z`S?)16UccmVswtRP0P_f65RZa$OvS}?QF6%PCCN{XUhwYIa0Jp7pv?Wo^+k0nnU zaafRcKnGNjkzLQX72i$?pZoYoIfaoGcC!jxM;ulxQ@ZDwtj^-U2UA@vKB!NwGgP6W z?qM0KJi&<@lP7ytyY*Y0>nOU!KY(CJb+!J)Gq4)6%Ie-e8oF||Es6SoYzs42~4F?T|&`f>> zzUH|`Jo{-1Jk2=$1E46W*aB$J8xvX0a1Bf!$iDjNTEd&V9go7*Vv0!E36})^%9S}o{VTZS*W$$Dt0GJqcn}#0ygztSbtdF( z*6+1@tM3k+Fj~~?Mj3Bmy2)DjBZm1!k)y^`Bv z6eD=R6FR&18(VMFJ?VyIrmu-dA)7-MDE*~}q4W{IYa}%!Md+k!B)si6fK6H;ykAZfd##i^3Dk=RK zwj0nspI+~pCE{OQ@8whGZBe1rm%`V5f|Hx1!6_0%#z6NOloadqBv>7w-WchAKUj>j=m+apJvQfGyyMB-_p|rWHlI zDFL1Dd#msqs^U_lgrXWp67o^i8Bf-YQsYxO6~W668r5}iDbFWU7%kg5Ng&18nx_r* zxtV<`Z+~KF2;F2cFT6i6keLq%>R>-}CmDFI#;Jn@E0bbnJmh!|#H4vYh=ypjmlyV+Lf}tNbj3{|= z&F3ckheCTPGmOkhxSqzYl&oBR{u7StZMo}pnQIN~@uuAM89I%fhBgFI?M0PAOk~Cc zG6jEsiuv=_ilQk@P-xt@@V4R6tJI}-r|5+8YQWE-`I%+N6BVeAZtUI(*e_maWjg)F zGaAGbKm)$`&&?;L_ncLD=A!`r2SB<~cybpUCH6n8Pnh|7SbSSy4`?B|Xh`6cD>-~v zTuw@hR2x~kcCg%Q2f`M6uYqw_pZEX_y%od6$)F5jP2{2=1e;Q@laK==9TOL6(?OT9q2P z=IXRfYgQG`z+jq%Q2em1`E4Ci(&K~-!MC*XRZsaMDX9<@w2EQ6B)zyzeEyrEn?F{v ziB7VKo|K7li&Q0qqVOhj$&u|}V01x-r0%=2OCzT^#*ejUs!vi)<4Y5&nmhj%OZa!XQc+j@C_*6P6Aropx zC))o9prQ(F0gTUjl6kcK5tTFytELQhlP@l-IVC_9N@PyWHE3rIx6No6W{E^XYs=pG zSfUWc%140&7X$$zmD@N65 zOzDlb6Y3nEMQHi4fkORd)uvbT>}lQ9DnC!&wp`EFpf8Q|RLt0KysrQ6touQLb+GwX z!+pi|st5nVaN8f6z)%M_|2v2Z3(CQ97@)wL`>9EIOn~@HNZFdfIIXOL;E=paN; zEE?)hJg(ir{fC8V5f2hov2v&54UO*UGyYOj z9PsT8@gXAk`75rCRWj6OFM7;vuxC2GfnEB z(;y=L=c5N7=l}R0Gp3QLIkh&Z#2$YlIQ0Wh)sAAQ)+q^y5$PDcmj&j|2p80b> zabA=WL7ack8YTOgl!0c{un+_^>rZnP&TNe+e9yRwDgB$gI@8U1gW984lnwvgnB< zmwXkB=g{ge=hgfVAk&&D;;Z5sM;BM&-t6%fdKg4K7ewphIet?vS+eXDiKpU5JkIFy z^%rrQ%K-)1X826Ya_49JJs!NmF#}_i?=4L@0Q)uQ4?3{YYS;rw?|fZ4YPZqn%7c0e zCZD*ukm3Mc@lZY3OG+*4(-V|5-v5wawFh4eX;{PGt-P5eUWTrI7U;3YO~>cS#RmZX z0rI}|wnl~X_TrM86jlhH`McD76#cq|CV1Qfe71&^8r%;K**?x4npHu=sXG671k|#x zi)IWT^pWBQMQz06QV0t5e0Y|_&~YM4I4GpMwKne}I<25U(v$0?=O@M28A7Ad0T$^2 zs5PwerXo;tkbJMs5T04NdbDQ2otWF@fx^yx&o*x2FxfbtQ3 z*_g*hpfoaW76G-{D&F$qrqVi#Nes(3au|d|wBeezkNAaUrS>8?u|KIy7&Cqb zs&KLtH_U!YQ6dli!N)=&55qc1so3`YO_x$r;a~Utmd-*X%0)u33>C0%2z=iM&Xt)1 zw`RviqIzYpaW$9@hCiFSB~670Kbe=KhTBl^BYw06VRwJJWEBlqZQmLxvT-Ou_O8i& zgx(=_)!>aH@3lrcgEeIF?k}$Ao+&o{rk_ zBloKOJ6u%ZPFp!1_i)Lc|5Tmu8?p;vSJiEfns~xZl#Gk6`Vq!0cyKBq zCg-;}lMkNK&~t8#6*_U^WM^gTQ!&E-{^mtF?s-q0(D4we)Z^{U21k^~FSC}g^)t;d zqlo0~Ei>()AXyoVo#1wEG+Jmy5OZ6C1aBofv>&x+>io%eAEY*F`rkFxTr*Cb!NSkO zZo#Yg-7}%m|4ToRp@CC6dqN!!TuwP`;p;npeRfgUrybaj@Km#F^Li2u8AGqdiOZx>ou}~1S2maqs>31 z;3GDrSe zv$k$4zV)hwhWZn^ohp4|M-j2?N)01&TnUlmqYhXrB_k=fVa-<0l zf(Jh&knbcw@XA>6_K~Uq>`$%`+*lo#a*oDMD@_ugpz^xY{Y1uEX`Asx8)od}W2|cf zl4*E1;ulc);d1qwY?VT=nr2C-n6Id7@uuZY9kS{A)4=VHI?c8mQGrBi?+mkhti+zx z54#tytET+m@O+w&{KS6_^zEi$I^;Zf$vjkZ7JtJ+;o-@08^}EhCkjsnD9}^=11x71 z@9Mex#EgIQ{VxLbm@DpX2sh` zu%C+(T|6szCayyeUTT+4{ZS8;{mF)yQPJpnZihcRcq(r_+~{jq&vG;x)^ys9R~r97 z^i$|B*y_u|ZEa3DhcV~^ZucQw6`(nT=co~B8@%mt`#z%0JKvAPr2ibP&N8(Ot zEbK&_nR0FF*@R$M@ZMGuDk2(o^ei{xc;To6FBp2L?cItpJ@sf~TTZG@_akUUS7Za4dp4ivdvCD>_bUM+NJ5+g(%AjRS^j;O z_GT?t_-+^~d_r|9W~(zRGrLT6V;|d+zW1VcwJeO_ZiiX&Zpjb%HtdqsKK*O{d;)WO z>rcX{huFFsZOXY3bx{9_qe{GD)!g>R-vb5oR_RFi8co2kqM6ERs|;Ia=Bc@tuNQPJE$<#tF2oB0L~Q@!yP7-QRZ z;~$k1So?!^u+pD3sEj6`%GEj>p%|uU51lIE1PauKJ)(AXMwc;UcuLkKweaIqQv4 zDFbdP=^CgYD$#usJy_*@GKMa+VD_3K5Fg61jt#{K%?Iod@^-Z!VO{uU5%9;Wjggho6^nSbVkYS)LVv(R{`h zva{^!F$&x~lf2P`Yj9GV37)wcCm~TZL*ewO3LUGweiOc?w9Q3piO|o?KvL~P75QU)=B3#sa9mHEveI3pU)8-c_Pe9AuX?Wg=p@_fNPu>yL z$NxGM|59stTA|nMParh6(M#+X1^B1rY;nseqbcosSw1yQXP@&Jt%7G)hrwf3)cbsC z%-_qUmwR>23Qyadz=+PPFQ1utnf(ot_L>&F>d)%`2ecy%Z6_dzqfngVZN3&0(IY&{ zI-7Z%GB)b@%-`%`@niAq#S#YPCDW~L5Z1IO=&kK-Ynz_3um7!0CW}{doZ;!{r?+A_ zuG!abx8D(I%M$SQwTK>lf}+oghZ;K~)q0Ki>-#W>^nFf|@sTdhH}eZ)1HP3PGA)_w z@;aI!LC5k0Dq+ossmm_yDf7_zaI}2y%WSjfpSu=_XjZj_a9rV!zX`K<%|7_k? zmD+?LGBJcc(Lx(czk5?tOa*9ka-RQGvT!b1SGC@j>-314)YCJpptmF(Z&hn1HTQNm z3XWJr9VD;~1%p~E!CU7<*@N>`y< zA4fI2wF#KV?R$eV{mAUJkm6!fldZ4!{+=-*_*`I%y7Z!Y+bVubjF($E@FVvGE&JC9 zNn1;(ka-C{i5mpqX1^>B3?R9$gwedSeV1m6+b;9_URu>gRBUUMrCc^%iU$tz=f}!m zsr51sy2^E78K`W>+{fI8>&~MR5yc1=lf_!)DfKT+^S#@t5%} z8^8njI@r34Y~{YraH$*yD6sZvo~go;X<$yg~CQr!k{g7{EbOk!N3p_9*e0JK6qoQb)6hp>m_ zC)#Nqp(y&cGf{x_v?$Pi^P!!l`0y5Uv9DFO1FgZo+~-#d4JX=e(%P@k(DZJ&&Od-H zTF^SyIrgFlj_J$eB(^cUtu~U&k1=mF9gvdr`L_6O3J*-Fnl~fAnmrY$yIkA5klx?bp$W? zg5U?Q7OLuJ%iab#iIJkjMDhARxs;DM6lSgsw{PPw_Krpeaz9T6QTbr?9pmLiZZ@0N z=_%fcd(LuXc^sX33x|^JPqXwa#}X+FizeGLq8|anS++sMKGMD9Uiq6{ct>6Mj=6gx z&vyQTyJ^tR<}|t8uho>W)Aw5Z zBP;fp!fx`qwYdtHDP80@4YUu``3n(NMw>}V;R)Ah*N~{$elLS`5CV7(?lpKHhY-)) z(eU;5QYaaJ9pR}_J0wr|wKaqPBCnmtMBxIZtu_S5cGB0MPl1i8MG`+HOyBiUkZ69A zT^7=IJHq!vGa|45IFejkBv~|t)wbcYuigBdbmF)!4^@RP^L}n;%8HzYC5V*3m2v}W zdE>T%m({1tYlEnJ1F+8X`jPxzm(@2M_er)wqz*M>sCCtdV6Z(V2Jm>dsXW+XaX#7I zbspnm_~oKsxm=mO+PzfzHf>68h=ep@>(+EFlp$lPiNNl>nj}E5Wufzf9j#o;d-9ii zE#ev9s*Z@!FlJE!HKkcs9nHMk2;Y%yO~O$nB6SyEP$Fw=JI(gE z?lw($yFh^r_EvMzbbxe`{$S+xjn3O9Jty${?AG{-tY3_pz3^(`=bx3%9HOc)`G#jI zQAxjb;;u`NmXE$^hhUi>BOh^>ud(>H4YO>Fa(?gNZ|sLENKiLkP;`rn%r`23rkIQX zo=2{Z)w6YUB&56AvEP17nxOYu)qV@2>Uw>X_v#*~c~ORVe-Rm9r;O9r6t8vq4`IB@k<%roWH9P~A18;`UFQxnsvj_a+kj zLExz|{-6!Q^iegqhdcpC|M=Lg-Q*D+u76HO?yJUV6EzU`5n&IRi>n<-(uShw_V(SS zBV$p_in$q>A!5hdk+t>}LGzjR2F5Z0Y3Z%s;?g-eEtBOn7;{1?-{=$2R{9nXsy?u+ z3!#oj@H^yBF;p$`|6&*Zf81k`zUp@hR0}4@6a;+rhc$|%()45fE;`*$aEnc*_M_1jOjQA5Ltpgi}bIt=JtdObl9Sn-k*59Yj1BXzw7aeb|D{o2;l z&54GKbn**mCaH$3^He0D0k9z5w%08l*UTFtKx-cKA;x&c=P7>{e5}wcpj?c6DS^}G zEK$ZYm96Ftrh1P5y!|?P8LJthXl5}P zY}m5hb4B82eJ0UVH{HLWqXVDqoHm74^RwNR@~)bvDzsHi8UTO#Tw7F|lsPCm#3RF2 zB83p4MM!kyefRIAjp%~M1OnbD$9)BnfKNCNyJj4(eWDO0Wnw&jigmn@i zFjLME@g#tj>z>=s@qLH)GnTKNckfYR|Lyf80`n)A^BF-mImi`Blz&u|e&z{yMk4{h z`>F*WH3CnbH2o~E?+9XCk9-+Ok)p_-0LPWHoAFOKJGgq(xLWeg-Q|K+- zlLvnO>dhrE*Bf+_@v^ma@iv^zai#-xtD)uHscze@L;@f8NhTN13m=gUfc)xNdt24pqa8au7IEQ9-1pM+U1`rgK7gEfk<=<-d zix46PeD-Jqxj(95urX0`vscQ56jp{P(%OLnV-L$e4{0#!lT8gd`-L5;p>Y$Fvh9 zSOUfk+zx*2b(StxiuU;|y^$TZl56+bsV^m4Gqpn*AYZ(m{tqz!1rcoEbp-HnHbMDp z47|=1LBK7Qr}n4q5Ne)ga%~I%S4g|206wPeR_C4A0ovw;3jE7Zu~Toh`_k!etbLl9 zpIrNghwA%I00z<{rqQ#uD-xIxd zgxv01JN`0tJ_AsrI{g4#$Ba*dN5`V9=6ya~_hT6sc?;QgL7HKF*^aUntz8S@VNAg{ zx1B)2LtXQy-$6NLKLexe+TPotB<=TMJel@f+N5OgGnKR4xf6?QZ8RMjik~TSuxq{@ zzs%6PE+T6z!IA)@ zyS)5sSo4ln{N;|HJ4CTs;4VR~$p>LKJ2&(|0AmQv>JAd*pZO_y7o zxr}B#_ASYnVn0d#R#e-o*#>Tap0@wd#f`xAQA>B`t=h@{h;u3m@mDO~sA${X5?)SA zI2{?tHS;UF;1_GC>SB`mbNNJK#3pzY8O$6}9sa>_1fTQ0wL#S#a|=a~o8M_S36Uz@ zNDJvYL4Za@+b{eIEK_I2-&VUJYWYBap+bF$-pFU5B4A3Nv#&|)QLEGCa+L_}L;_ar zH}ND7LQ7{^vc4$|nEez!!X9*|2$-(VaNLj1!KkIRws&dd$V?hMAvWKEVO->{BXj~g zwxTVVDcn#Xj(-4hz5T09UMsyjDpc!c@T37?I(bXEU5qOs2eMH5&|ka1GdT)Z&f*#} z$4_QFtg)mCV&+T4Eu|w|5uZZ?G9;~JK3OBN89t=k#$V8YBiQATD*B6kowob4G&{O0 zUFY(9cu#UZiTit~gs%ol@=#(ujC(ftKlu$`ipP5f%^uz_vWkDAdC@CkZ@tCh;mLs2Qm;xAgR|kv7WNG*Vcn)VSdGZ9dM znvU~<%$i{r8nOJLa-`x z!|jn>>a87S2>!G!5|n{ptxhBut9mB;dhY4b#gb`J_dZbRD7Yiu|oD3na7{y zx--@+h+k36eB_H;-2ACr4Rh3|Pe+^O<>HdoMbjW37&di+4g{6n@aZZqSkIni?uM=T zh7?S%eoM0y({8(^yuo-O^j4~3>Cn41>!iLR7j+tK!}zj)O%1#Hjmz?EH;W{0%c5X# zw>)Qxr`t`sXf72b`@ls;twdl--p!+w~_X9Oan0$zbS*n^27w4Osjg^jR^p z`QbWw@kYh>IPcgL!z1ZH{N;t#9oOoztv9EroJ*!BAtS`JD@3kje+FD7PGzgBe1p)#?6psQ(X;aZ8h`%2&7% zu@yT&&Nr9dsNGW=3p8q=`zqk*7y2pC@%l~&>e?euIL4RO%{8jeI$tV66VatHA$h1-crGrx*++f z4I6EhlG^<^&tOi^gGD#GpkkLHAFuehdFp*T{Ep)c)f?PIS3 zud_exxuB(+g;T~hm!8{z(|Fb6C#GFh;--6D;R&f>3`T`khWk{xi^tH#l6~Hddl^qb zs7za^M?G0zRUz|=e0v-cK9mR(+ESI?h*{3$AR53iTsva=3yoZLB;RFAqCma%gFHTj z=lZB1uP+J@pkwj0ro-MPbXE%Hv%fzWeT_@K;@_%mP9(V=qLT2AS$8Njhcemle%sLMqsub{ICD%nu>Qm2-i;@S){(^@; zs)2F(+A@Ip+nkeu>d@zIAmt6hUKTZkvC6mDw@vf*dJKZcyB9-oY)Ez^slREf51CyF zRNEEoA>TgxB|qr)kLm~qwKOTMDDiBKOOHOUttvJtxrFSGvU?#Oh6%E3hs=E}8^yAN zgd<;_c`BLSe^FVQ8kqq3hJrqCR z=^_w$D5ozvnG8pS?Xz81^*!6%hnaSuzgYI8$saa&+pnF3M@fJV)=LAvm!Vjou9b}+ zx&tXI7CU+ur##w-8}CGHH+=tZFGVCQ7@w>OLTGS?h-#Mal^#e zuWt1?v^c^6SHH+S_d=6#TW=i0)!r2o0m^WrRHC>{x&J6!m6Pqr$B~s_I2ioi-&dWt zVk;;lmpSLHSD(xr-JDY4)De>)>6ufRSdn++{ zs;S)a`vkw~&f0X4P>| z?9TKWW>3lSfHL(-DHujh_T$|lk`rETz-6jH85Isu<4S`zS*QG3N`;-EBeZ0>Pahks zbDPf$nBDwo(|pQE)(ZK8R=Qg3v`n$=6oY3Ls5rf!0!DEN?y*Hcn<6xdE#|HK8P4<_ z$TDbrdoi1{nG?j`B8uSic!B>5e6Cr{df53TZxlRppxyW7m1D-8hu|7%qUHX5)3wm2 z>g9W{0k~x@n~2(+nbym_Ulm;atCxm%WpY?#uT;T`^J?ijE~>nR??+!XA$j@|2i~kBEz@ z%kVK^g1=7k@Y|}T=>~rwD;VMbvEvGjbZ1Ym4sG(k9j!Wp@lsnjXOzLh^^n>yi&0mS zJ=%nd1ov;U$vYvjwu|jQIzN5?lwBjcG?#}j^o$(k)@6zqFyAcvd^aPi;2xvZM@WE}Q3m{VvRi zB#4z)VDW!7y(KGlMNe+opmx!NK8uvFY*?|RtHX*~1MY3+X-i?b2#bk4o1?ioI&t{E zES8WU6U23)`Fv?Y!Jw-A!ZZT)$5KnQH4wZ_1&6F>sJKYbDU&zp0)4si0<<$6QgpzwX>9g-O$7bvvxSun7DAge ze1L~2v=sEb;y~L#JL+A5om<3Y*686sfW=~m!)rf$SHk*45(Qy)Ti`-v_VU7@Vh@1>jc!|C%pUx^l8w69DD8N!OD1&Ki}B+wYBd&l!Kd@0W*y(^9qhvHHU4ySQM^w9(#ns(5J7(B$f@2bAF z{~y%7^-~*f{Pvp`T1v4NcW9wdic{PIdo}JWMuDXp-S$|pz3JPUzn8q zbE#owVV1czR?eYl@?}KQbC3GjJ}Hmn@c{Ahv*07Z45|=!+gRSHxz8NiT3B|vz}Y?E zn39^fqz`qlVeSz&bCjWYGvXs&6&VuQ|2KW%MUckMsMYH&Mj)k^^KXZ;!`W++0V8z{oMtQ^&~%GrFz})_fki68WvhRL1xNe?t@+U3 zium{lY@D!)E`n_qS$ohJm`T^SP-*vSK*-anZ0a&~_R#HuR%#;CP|BVI{-gJ=A-Wvc z2_8h{rN}^gW8yG2T==u({{Vh8RRsg_B($vC`N}Qd+%Mb`w9{Oz=4nIcC(*8|Z#SS4 zgCpP4s+^VH@{QV+7E1gm$o-WS#6_)0N>gRuNgu1#G*92Su)bT9cdu4t7)Qgvz!-&UgY8GPr9b4TG6HB2TjMaSKji6C1F*1y7qQEZmyji z07fRAx3+HP=B0)-d-_|!Ol+ID(Pp5+2Bo8=7N9(XlvxqTFSHiT&&87c1E~o|eYqng z8^qI(X&D#mBwP4{v+CN)^%9eIj*aMpJS>O#={x1E#MIq(O(iiOR*BxR=!e$!(798r z?-n6%vt@r#hJx@ny1QLKdj-oITakWYdp0+UM%xpd_iO(^J53za>ai4SS|WUurn#}o z5vCf!GD4h#bYGP2kMFe%*NGx}9V|)^IuNu^=Ye|`KU&rcVVeJ7)5kHmX3z(4pRTcvp}) z@6JBwT|mty+x(&~r~jmF?}>H~*TvWA^RTn}S%E0zX<+@`Rc|d{^9FSokF0N6B1S8v zs*v?z?j>h7Q-^b>UYWh5;-&m?H6yio2}BQ7l_Ac1*GVB)*6kdr*p*@#YFWi*6ZXQj z5UKlz>5~;i;l|cI#zFzjmRbbT2R>x0BM$omOm zaK%}p;yez!N)UE~ZwDCy*Ejm!5WTYHB#N{l?KUNiZ-MGxo$C*j4Envba&^M;NR^xo zb%p*U?-h}GAt|+Q=v3;Ss1Da`Hi@}4Q*}+#8Rb-2O&nLZ=oKt9QzJ4gZ`eCsDOsyM zo^|&Vt2fKgfg7(YG!w@v{3>DLr@xO5IrEz&`hrK{{(j-`+l;de#4F@JcsaUfnKPy| zhl#rXu7(?KT6RmpJ-cZq$}XfQaL8jMm}2Pqwc@)bnUMA^hhJ}= zWg#7!*+~y)T0`LsK~F_h=Tj!_4RhxMv%@SCQTFbuBpZ9svT97ZHzg|K0(^@aHjR4? zc2*sNXPzoC#L9(7`~z(1LLF`n?Fk(z9lXM^J$`t$$nP-md~pjm8~o35_Qebq-+~<- zn}Ja7XE8EF#^6xTY6uLi@bJNU*;v70w~so1g_>tli*%@a=Yn~)815VGQt2MUOc8sc zeM7pf4MEo-#qW^#W~=NJgK;r$BLPj}<%7S13EnI4J&Nl6HQ2J?@-;3wcfNP@81%6; z2_KZTDYw(EV4GNM^Rg?d@xe+VdG_kVrwSP%$h_f#jMwN_ujS=?y5aV(7t4cCy)2e9 zwossy$u`OLeNT+{K6exQ^GiCkm`oT?&8A(*E%gUDRZ3C@-DhI6=9bY)hy41sWGee| zC>7kmEQaTaPN!}PHfz0r$$GLNAe|t2IdPAddgU@GzJ^*5()0@ymd+-C^As1c;JDc4 zOP2)bStKyMEwIO{Uf{nQa2at=`^IqiwY;2bx1+{6s~zHcDXg!~B=KgBKGPsO!>U4V z*7$TENn4=Q-Z;y`<3$mk%G;DMNf;?)Rv3?N;2(8KR(r0g)t8Q*gI5FLXFEHCWVnTm zQJ~vPQpPEp?HO|d`To^GQVY&TFAfE-T}9awRc7r@&T=DV^aNBj6Qt9*E!;qnO`jYq zoq{4@*HyYRD?PfW!GL+AHRWZ5Na5M*{wDrzXoq{lu3@2W!6~5$zumY8!y?bzc42~U z8z1$g^EV*(O_rLXZN}QA!sBL~7p6H&BI=S=wFF5}#N}j)zTMn>n$0v>@34aU5+hu` zZ*E{3GDKIpOK2=stHNw1DqG`%Zy&t2dDPQ)lb9XCDh=W@YC5 z>l=sk^E+At<7r979KZN8pWr&y{A#D!RB+o0?byzFrE{GA^YxVZDI zfpr({T=OlK8Nz#+*mmg8Sl`8bDbMwp|Dq=%iR0RO4yZpq+(8wDx+R3EpGK1yggM6uUi^Q824@FGN@xe7xR8KYBJV6 zOg0X(*99U2h18$&@-LhYmQS-I>iLON=Nv9dd!(wAr@JQZ0n__f zf?KS1IT+A5HcgBEBPyQmn`^bv_TsOGU%~`iMp#RT--wYbx%8uLA06Yg_s@+(jHAXX z-l17AetM}y2+BrBNZG+nddfSAxw@h%**N{ab63>qX$tF0zCwQmESeLcJVfiM7tlTw z`<#s(n@g6F{LE>vWut1LP1!nH*vdP}w_me&wc|vN_WS&PEo=4U;Ph3P2U2MbrUzG1 zO*Q-9Yif#Z<-JJ7o{1@PeEztw7<#=Cw3tI^>jEUoN|d-;>s9Aj6>Kc6wLX>AXUOP& z%)B>WO;L7Z0y(9F_K^;oG#CelEEhY`Ughq7eV&7<)aAE#ZzJ1AZ3e=UINosDbTM-n zzGB?aecXhG-6$;+gE1^f+-?m?A6eWkSJwy=4p|q5ZHtA!yM5!Q3ZScIjzSES`PsVn z8fdiZl(^UF4Xn>v*c(XT{K2s7t#Bax@j{t{@NLZfxLXPhi8r_aHLYp*(W1EhVlLfV z*9O){fN{B@L_8B0^-PE~G3Jr~Sd6smO*_fvlhRfuwa|q^aao~uUnTD^uM*293+I(F zL+j6Uf06tP{<4#7{iP07}ITV{-Yzi2$yF2>^{WoRI{jb+83LPyBFTX!GRV<=@)G595V zY24ghs-GGS4h}$mD00sj$hnAJLrAHlSZ4`Z#hy}VrjB7@ieEOm_nlJi3mf|j+zZoe z+J%WSEH;3NSB`x@ELh*Dm8={-2p?N^N)MWvnXlF-bhCWJ6(8<--daVlNt|p3$J!1} za<;L9YOWJW&rB*z?_O4)eMs2mpZm0L5u)MYhi8;S?LyUd=i|%b zm7rEd;aa{I887nb>}~t;pAEPlQ7{`37>Ju}JxTPvl?e7>S8w^e`roGa%5Nyy{#5CJ zXL3z<7G3}614D+H8ryt?n}g|{E@Y>&hBuA=HBLXaSdX#2$q+?w1ZSL8GU5tmzz(J6 ztj&>W%}@CBhh*nm@C_Q0WvC=DpGv9J zHaFEh|B_JXYkC#O8}-vOK6~vWn%$O0Y~MKrqDkrE8il=JmU4L}zYg905J21bBD0P0 zuhEmfSc04PfRg;C4FYdVE5uu-$i2W|7Rk45L`hHn4|Hpg9gw>k(h8}!A4_$5OBnTc zrPfzNp&JN@?nes36{9z6&=7-&HM4>AD6Arj+hdBokMsh~8LqsSgtTOnW2?rkT_M?m zvo@WCqg!o8)Jhkl{cnyL)iTs#gfcBTJfzD=(yXg!&C`B-s|sOIY&m$g-}MGbSLFVA zI|Z^e>SJ`eEE1Z(P@ozu(Ue5<;!g?o2p29crdq@)Qs-j7R}INJht$eF%%-3IUfUM9 zJac8x9KE$bbZ2Xx^k0aMJ?69DFX%ECv<7VKdZ`5wS=%)De+?nUvAhMgktS4S5qoD; z0cI`oOwnX%WVf{#T+W-Y5;#euut1(S4ICq66OKd)G_|L!9_U&xq+&fKlrikbr6sXg zk6zk@$2ld6VGP8EJb?R*uqDV49^1bdY_9EcVXy+>7E^{7idZPYhvX%(-m0 z;05^NOnd*Vb`N`W1)>QwAT!rORjNW%ys)8^ZRrskF_hjW6%?W1CIdUg`tM>g(uFxE z{2?sbR#<#%xCnI6_0hxqp(4L#T%N2L-AnZav_pSzGLH+|zFG0Pt@w z(}#bcu(K1E8-pf{;pRB#pFMOBlDr+8T*X=WU5|98dr`l zfxg9cq95fxY->+C!3DwLPGvtdFqBOj4KW4ULiiaenM4Gt@JOwwso;ZU7Yn@#F3xMB zqvDWR9ue`=pAM$S!sCoXBu-lfN+YiX20f=>Fibw5D+M3e?Z-_!y?f*BWW=hb5p zhgG)Rgu=>d-oXrdYC~C^?w6GNiAJ~H7wkd8J}^C2=7IE-5&}a-*3(Mv<|N_5GNEn-XCY0-Z%g<> z5x5#Y=LRwGVFt2F}G$;t(M;@t&vn@t3gSL3jdxkcvJr2bPMJWzD$vWFQ6zmih zg~dy~YY$r)LbsXNG80>}B`AYG1>9+18hb{O9|`MRKzmR)i2ik&c^4nmK5;!OtJI(o zx#%xsA0qgy1UMnY8fHIP#L(>I;re%d=+m8l-CX#h+1fF;g)Hb&<>plwI9%R;H4V_! zUO|5|@@gyK2*(O(4<8JJ(fks$Eh;h)%};66bX|NHOBp1YJ2Ro_X#Mf{*Y>5ht&q6z z)XOKQV2JH{(ISqV+LN$?{>;WOyi_5%;pt{+ewCCL6qSuwV*q^fM-Km8Ospih4`Xm%;n6F?|JSW9geK3o_>LMcG@`s{Y4G< zIz@M@^CKcd0ZyH>soij#(;%9*bzp4^O&Q%CtCt_}{r0)9Y-nh|$_@Pg6Fy8D4&KHH zb=F+0?05f~PoT;1yVi)AODXw}P_Rd+qz{@q_SnLX&RXQ+z3{%o^a>d}Ob=WVT_%<=3CMeu8r&&cGJOp{_?wQfejX;RAM9%xww zO6pAUC8oe*|Ff8&n)`DJF~Xgfj8E{%!v+73+&}(6F+{t<{5;JP_Bj61;%#qkH|UbY z`~I|bM-i;l&}_+D8D$83r8#|MiCAKD~HB5$-}jliLG-|OHApm2?N(8`9UzU zD-n@el#@7iJ|V|>=qBKha4F{1+MC!D`3)3E9kzW5ZM#v27&W>Qrs}qvi9OgYxe2AK z?w{6%R@>99Omc;sW_RxnHOYxI1T@e97sqet*ypA>mN1%l!e`pm>wGE5PoMoUhr4%n zt}ATpn&_$bn}MO-b`j<_mW4MurToHV1U@+vpE~DuuGYXPFd+r@im>{)>D@AUSNfdA z1mTy(7j=s~(!}bs74pep$Y|p4ahecS<`lyQ>wC@WH2v5|zwIt_g=d;v(5ms;0g zZpCOioqJA*C{-ag$5$mbLz}gX8#P-Bc5P6gb``=w;3}Bo+py}ZUE=8@^s(@KHpfBy z{f;MGQUI;k+$d@1v^ejXhTKQ%Oq{_S&EcSXZ z(RJ0Cah98D^x2|l5O-HE;AU(WIRIU84ugE(XEew0Lv53~?uPCL7^G_LR22c0nQxBn zmu|NLtYO;3Bl4ImEcTM|*^6BC$*yC$HfjKO$T*vWz*WE+ek{1;2DPPib{3=?WwiZx z`Us0{^>|SG(Z?%}v6hhzaxAs8b7aCL5+9=BH+~ny-hw}Y4F678Smf0P1@rF{g79b<7G|Syz9*unS9# zTcBk4OduD7lj;_BSvYbvba*V&HrKS>K-22uv*1rXqVdNmyIs`}VBW-cnhs;lQnE7c z#)M^>`qKn$fRh(rcP?Y_&TV0i#}j%5sM$vh#G|`ojk`r)C&M+l7S#s>i5* z>iOC7h`qbO;g?LbxgWEVsIk7AqFqNt_<00~&y5ruEueQn^~VC&>+ND0VGCo$yIhPL z4D@UfCq@18>wU)9-ZVgfdwnW5ahCmL{%l1_(P1{GOV{xhR4O9qQheFRxOZ331b-d( zVdMe(?o_V%nN){_X2B|WML;|raw$EcZ-q?H1dEc&zI0fPe7=%dyNhbI;EYc-W4^GH(+WVuw zK$g<%+})`dei>cK=yCRqG0EYvMi^Dtv6@tlI6{@2y)fCBx7=ZeP4IEP)bqmOtA7W9 zM)S%{nN(tolO_yfCjG4?Z-okSk9sF=C{_d+CC*lisYVgJ*Lnk<2-#+D(!a=iQbQvfX+ zvh7RzwBF%e&`{~8X1G_;1)ShaJ7YfqOZxoriz~D?FTb}{n7{HJ=?#>NJT9h zPs@QP!i_4XuVw`oTUGgyuFq~#1i4VSE(69>5%h}Z{-#udA-TqInVK3aRNi%SyXy;g zn$&UuMga#Ec(TZw5pFyUL?!O7Q$fmDW!*Y^f2&bGr?q^XPCZvAPY;Sho671#k5@-cWjacu&EC(ZsQfN#uRrGd|DTONClaXHa)YC(v05%}o5+-*W03Y}sVobQ z$GSl!iKUp$IM2nsje(kwhqJ_OtXM2W=*lSEH#4O29Q0nqa>~p)+$pg8xsN;TB`#RA zVpJ52#F+KvcQ@uIw>#;2YjI*W0|{T;Z%TZulw#oR9-{V-5zCcFMkeq^|D}=@%q03A zh?iGbV**$52hyK}B`S5@<3C*NM>;EOY0hpoU8Q@!U>5$y%b}69^W%;9872(e&`wg6 zxndz0^XLB9&;Fg_TEYHeS#Dx%RTXoO?rlT)g08~cbfZ|}=%-A-274jTg>F z(@Wj-2pm5&2TX9akqAg+0tSenmW5pAVPPheK4j zJ{3__r>uGK7j+h?sw`Tiyi2QHpet0_WF89NlNu8$hQp3fxb6^!$pFFexVYY{|KP;6);7EI41ue8u_F!rSPeHcv@}&tGyNCR@S$kRaM?PJ9-xaRL~g@V z(253t?Rcna!mF;KY3WQ6s4Ea9(3B7HybG-Vk*ij?NyCRY|lei>YjqRwejS`=)Ru4Z}xYx!xf%8q*_cr%>0|B zR@Qx4@$LF4AE2uG1Xxd*EOjkrcT{8dmxr$;>f`^lOz-D& zbxhF3B3;*vPz;z4*T9Iem!?C@&Zkn`kh(aX>1X*lFRnuGMqpqQ`a^{D6R6t-#S+Nj z5XgLWRk&xBf05M)!5LLDDVFiEcz>_OF;2#NCFzh9cfmO%Fhm#lik3VW(RxHY9$gjl zn?sDZakSk`gzAp}`00Fynd?!#V{XG|clFNh>2TK!Ty_TrvKigPJEIOmGiPNbXs5KTTj`RjGvrKOrJC0 zlbih!BjW<2ACaiJwP|b7q>N1)a~BaHJ3pM5&X8KDI;*jEu4%N4M_%czNvjKn?5RuN z?(C=N!xz!btXl+Z2NU!tzgn)iYiYIy%Qq6xV-(KfeF8t8{s9}p7K*6Z=e`ZqaUA-? zGf0UUp~V+`*=u@DRX^8^^o?Zp^e0*Sb2gGkX~v$Iun*3;wQE@CZCz}Hk6%5P{4@50 z?=}CcGmI2c5O3}GL89g!g&`L|T=$@%8HicB!k0O2&E?R%NP}HPbb@cSXtYs@@tF=A zS+y5?sij{jQ)VnvuQBBNWiKkX zYGu2ghIjuO9^$9aqrY^RZRMVqt~RUjo4PnQ$s%hW#M=kLH3kR32X@W zW4&L%U}3|+0w$uXDN^z?+4eCeWteCC5&HMCR<2CnIyNRxE?Ke9f6eDuvrjpFPg--~ z5^0dE#3n*LV6(Iz9W`Pcmn}AoH+()fz>xEl$el1+tg|Ff6cvBeq|?0WvHFHID@MXa z5<}#`xomd9DE2z$L(G6N4J$h`+30c)86T1UBFZw>rMw|8Y?3JRYnsQ6O{x3-ZV~_& zSuny|J`5C4j2KD~xMaI28)$d*{~Sf>)bm*HhE|QE4?Mjap0ZaoI@{BxO|WwRdQg88 zwl)bjXknf=V!YtS5w@srsLKCqG0AYLrPsj7z+5bRv$NLX-ouu{ngLBZ>>e&2y+^Ng#N#ro;FqzH=&}L9hifv%! z>Y>^sy%x!X^|-@3HKM!lntqj`LbKSOf#YQj#wHYX*H zv^~RW5^|Ikb*H|b{G+=xatWkp>$E4>dO$L+=qsjn3VqcwclJL5>eZoR&6L^_JGhWv z51~EjM=uDc@Vff;E}~89g4SxtWGT9|@9nBsm~`#Nr_496M;U+sUQ-dLh2qwkYTMt2 zYZh*5V{fVK+9h1y>!<~S*44AozOg`KzRHzZ<}B6rPF6|_4=E))-~cskt^_Xf|1Kjb z1F}Z?O^7CBwkb#rmS?4++A`B>7%k{0l)wz#UM?6#Kh|`-HCRzZ5B05t_J1@BLL7nl zVqzU2F8<~$d3AF6lgCQ#{h5PZ{!&Atq!gNUoxf*5bbXGIe9>SwL%c0OrL8C#+-+IB zc}5xsh@h6&C>l!2c*aIyI0jAkT7KU(CwBit+XR`-Ns@r0P3pO$bbgr%Cn(BPW(g|k zFtTesP+e3-M(h@SoG~ctVINq_4q)A!IeFh|pgOTUo%yLV+W12{6Cql|2vEBM^cT8L z!(`9@uzPl72ajVa91dh4{zaF24lwIo-a)zW}rjBMWtNh-R z-?zfsk)pkPRYBgEXmjg#io+(E-4l*43A;-f^Q3!-m87IGiPwHIOg^`}e2kUkN6H%) zOqL%PZB#%808K?5iUx6g=?q7*TH#klUdQbzjaP78KERaIid&mg_DqlICk$e@Ef#cr z){FR(Ev$Ivx>iHEPVb-T+H6s**yCI`rkh{4HY>wo&)AHbQPelBGR&+oOfn;is&3Zf zvp39H42Nts4CV~_{-Xzyujum7U3ok&7pM%G*qssHWpC`7>lIx+Tm5QJkzhqjrP>2t zYwuIZV`VxpYbLcWU*7sYUDJinv2-XxSUU6LP@JcaRss4^RG{&|7^0CjqlyUmv$O<;p+iMNyA_0+5ueQ9U^fwnaq zA8fW6&#y;0cc5GWqk|-5{6}FTT>PYzdR^;oc8+6yx}X&Uc1g(O@=bvN6su(A^VNZT z2ImdgfluAe0(T^Sm03YUJrnka&Q{YN%AHrYCQYiITD*%>bf6z(BAk<#734nIC6$sh z7Rz6EcQ~(D%Eq0BhHD3u*+Qixc%Plj>n}$nha~^74X_CvBO>;$Z0%U*32H+I9f2V zALDXDmGWc6?D%XUEX9ivPMV$ZE(&_;b45R&W16W$qUttjUB|*m(e_}}YnDC*e%MAk zRyW#G2#D(SUCvg?wiB13_^S^^Dh-=gnd&LZ8IkDvst#)uToT+ayr1KGt#Agd z>9jvem1{FbR13|!<0<@3>ir2SB70Nehp+HZzx3k|fU>3#*@O61Bn!OnUHuY)q2G|@ zho>}Hy5y~Tab!U1OoR1z=!naf=lLD~;RG&7#1l{U3QS}fDyhIWo7nBsl|Nq?1I9ED zzF1WCtwKGo>^^MQfj9L7_Qxuom*F3=c6Ccbw5G+xn8_bCn`ay9o%}eP0bT0a(k+si zq_@=~U4}=lQ&Q&3ddG5ZXW;n&d7UwnNxfQ#W3zI{#%)wM|{ zgofAQ4qUS#?my`!34gC=YZb+F+${{VGb8g0>nt{=gNhsCG6e^J%pE%E*U#??Z2`;U z5L_}h-6zxYXU&ML|B4rT$=v)nhMWzJyhoJ6ht(h<45RM`cR`)F?m5uZFG{%X5~>S^ zl0dUI!;9Da()A`Oy5O8?Ckib)`3wc5EC%`_Rp11A!$A7}4}|gj5EpQFjtiE7cBJ0? zWK7^N@KBqL3KRv;Ao*N)i|rt9S|*;-h9~X1H3!QI#LI$R+ll?CPxFwnxij-?#LNW2>@IDXNsI^fXQ(1-Ym4Tu)s|AAvY(kdja<4i=l+oj z#b1#ji^#V**2UR1=wic zaw1Ul%ZrVIZlT}617!xGe%q*5L3e0nH0~~YT}md=-=kHCR0wS}RQy2)pb}+bQO=7T zB!QNAlZGFGJ5+U!Mu5{oS;{g?iOi29GrEIw>LJR@FWB#gUvM^7oSfNa1=euS+TKyo zxuVw_29}p1{>bCSgIu#6MyQv2C5p%W=+%4aZ?U><|HbgUF3r~jfdoO!!PP*Y4p`GB z?843;aSiQf zYc*wc)m#Z)BoQ-|7w%e}7TusAzH&PNDJ|b!y@xuWR5YvfP|#(r)nB>`^7ez@M`jxk zmnfI?a5tq(Ik{xaZTdn*>2ciP#<#cviQ4}hR|!J&pGBEvW6172Tq;`BgxQ|krZk?d z)Hgi}G|yTZ5ufMl-gMk*{q>;KAX-J3^#sBO09DTl{&L^XVif9hEuvRumw{5;Gg28v;>(plcO_9SFcqZRpv`K7OPT6jU>aA zn5%fm_5|ku>r0EzI`oE*~p}ypQ>cErI>%-4I<| z-}~6m2b`R6B)}OcWga#L<_gn;E4u$hFec@SNS^+NWn1ZNZ^>b?Xei`oxGq|4cv+RC zv{L(6vSn$>80{CMqEU7dY55)0IBJIQlCYZsjIe7m=hAoa$WqqRs@*zuiqS!F9lh7M zj(WoTJh}@HgO6LLwb+6pMU@M6E4J-D9y`YUoNS(Ww~`nO&ESR-Dn`eXkW7JdB_fAriw+EWwR(O%?AH%@UYYHDgyQTE-E(rV~r0yw4O1l z^QHc=A>EX-0>i^UkX|Sarg-7upTDxKb27I@D&&E;NAjP@?g-w2c_lRP!gKIo7w3Jk zCpMxKG);h1Xiiwh<^4ZUVMaz^8Byz-lHF)+TlCnpSeIP9xA|@7K@ZohrY#>rqNpi@ zH0N&hR;&yerL$KQ(O6D@B^RhJsdOa8$8aVZLTkJUW{^6MGL31D>3(5Iz7h+~^y0SC zmBGeV>(V&J90!{Q8|@E?XKy&KoT)yd?H(~7GSgrbr#(uVlP@&6Z1H<@mfzo{8|+pd zEQ3=Ct;>iFK=-f2MurmHv7y%A8-rVu@#)Y5 ziB~acJd`kKuf(VozIsh|*StK;q2eYJCi1f7K2?)3owI>tSSg&`-j6L@a$RZzqG;i} z?Uv)%U$+l_u`ZYmcrPt}!hSiAQ!if*F!HwPnJ4G}WM+Y8>r)b(icu?l^|Bjem5{lZ z?6-NnuW@mkSZ1Ycq1@S2tP8LqD6X23hr}RSLbi$qf;g{5E%s1nBVynAZJ`eQ9`4`H zh4VR54gOzk=p>3Nw>in<=O~DaH&j3Q?=edS8w$Xl1qhBu* z_boKv>io|&)=(N#TdK+VJ0f(@H4an63W9jMRVAf=VH8Yz!H~GsVSKiS`VTH^dGU9Y zKV0TAka6@?d#4jMuFnD5t|jmrk3R8jo(FkL0Y>9PPtiOl9~jm+!}`9;pP1W^mG9IY z@aglC|I0ST9Nf;1(NL-wmOaXv-+IyvV1BQwgFv)u8&Y(x59V3y7|hj&ovcZAFAeIn zY%vTm#Mdmy?E;Y+TNO$Xi;WA!8y7LXjjfAeCgJpMcXJ(=xaSkctqd z+1|jnNOb4xY3;a+(9qL?hg3Ds?m*(nmPhb7sWgJ#Oypqj1@;`eo=ze&G%eN&)p0j?xw@1LF;MYuetd&wqo-nNbEXm542pLruO zim<*(uY(+4TRK&eM^odwfBqMl@0nL(Gz7-Y!QW<^5++t^>!D!)VO*0et65hfXeU8^(p+JLJ%H@^K@NJEiMzkl^J&?V=9 z4gy+^$cM?)1?exglT_+8tW0}<#!deq3A)@{{_u@MNi70&smpxehkgv`f3Z*$h?hr; z64N(i-fE>I>6OdHSyX=$))+34$!xeiQ8}p?`~tue_-!b|t5p!(+LMQCEV?vY?6@v=9GeK4dk zToBs6lB@3e@mUXrIQ`}V&sjZ5h_8tI3>GW9_|@Kmo%KoaLSA%b!=)`Hrf}0s;g6fP zswCC?xp?pMJA)C!4rUk7ZN4xF#>HLO&FR;M|2(Q$PU%q4jy6+!w(rq|QXkPk@P4!u8e32agGI5*_(PayS)MO^2!V@PqZjge_`AI56Z%-x8ncB zyZB90%B}L1_W#tw|JVLN7%*tC8(q*G>pwYD6Z`|E)*$e1a`7fQV|0FRmZkC|p`=n01{(%_Dw%8wm{ft1xA$X4hwf2O! z*L7b8kS)Nd9k4{Z4j`TFx?n&2pX0Cq$1y^XTvz*cTBDM{obTWviO)Kvum!(6K^>H0 z2Z%ra>FK$#<*z0g>r5#Oqz8Qu%Se<1TBS2x zU$!p}uVq0q;Y}i7f`QlcFx(@rH%kNTKfvamZp(CuG#oUtnm-LIr8b$zQoMenb}sR3 z`sd=0QX>i@L)WtX9gv4!?>q8Em;#%~&>!ba!S+(Q;~tmC%Yi|Ur_dNa8lxgPpnV`& zMD4KK>4k4;z$@zPW?4Q)BK#zEQ}l+CV5N)dI6{fcfSn~1J{ytjZNn~L&O@{hnODS!pg}_m2d->VLzt6wo%nmoc`- zUCjh$x>PSXy7`q$z|o&J^jtss2E#7Lh4l-gqx%jhfLsDqt`AK#N_mr>(N!x6xwVu0 zw3n89yFcwR=qPR9r|Y=JCrwBhCY`)sfLI4s#lYwUin;Zc!2COooCD@uXUb%Wq&M8r z^ zZ#X)M5fZua+4?Y5koNAty6&H>Bu)@(LjuCz;0nCR#2c!v$tsZYk^t%XQh?lUtv*h_ zkCPTTE%;&6q=;jXuv1yco8v>324C%AVP_P?Z}=4AsARDE5A;wb95ib_ zSqqRicBWqXK5rUdsdi*~6xE=_c37zP5czEl&LJxfFBI{${XFB(bSlzvy5L`8e~d&W zTlbw5EYiTFO^&DT=)n6k{>(%|+9sI*0<0LU`PgAO9BVrRx*_Eu|FZIj3;6K6Nh)Aa zbqf;PZv<~@2uVaCt1>s^$GM?LU!GL`>Gu6U->YfFb}60BE>m;qI9$I^v<3L3s0SeD zg%5ZCIydW3PUn4$YaSrM&g*+Y;RE@kGooZh(jqt7eLi8*I6STVhxUGZdQQ z=08xTn&6#Z_iQR0Y5vTe${tLv5;RqdQqTE~{CG2gM>S{;8r-l&sx{#T!()z^_|O`> zTMh%_Wg2d%n~%(&Ig09^3OfZv*ms|F#dEI%LjcK^tWWbDRyxR)&kxscjkJVl8FaIW zrV{8Q^#qSy ziy`rAnrOpdAIl_>@@uIg^r4nlhgx}1fHqL28c{8=9E5-3euuPN^#D588voI-Z$)%G zKeNqwvYdWqOthv}>AS}CE^41KF$VITjtiF`n4*935gS`LTU45{Enb7n<8D;BQ_ZdH zr48RV0gR3tya+>DvHX#jJ2}5&N7{=`*FLk0fqIb4`HaHrg^I}doAPbDwQNrl?s^%B zBkt!|-Ab9Ycz--qhsFEbDplImscP`dbil-PV*H8KR_rgW=yLZf&DM?4aXJ&q%bhEL z_p#VosLL4YVxutnG4$o9Zdd{bSQnwB*{L9>-O<9_>=FE2QhdM4f(lf@DQcYXy77cE z%0c5yLni|#_IK1>1&Lakn6Mc?`V(h*;fzO=>rSTU9dJL7q_Ox{@9>lLnJuU9aJWv2 z_`Hw_yFCO`$0 zMC#~YFTr^3z{s~}3L6d3U!lO?7c99CMo|1TdUe(pwA={{-ho2y9?{~sG3)>BcJSq?%sMcF;JFDl(HmOFg7KJ&Zg z4F=dW2_EP1TBbKe^=7UMmRQ<-$yYbe^~kM*hGwMr zcPlTi;xz$kbu|_XGe)vs!nVfIRF~+T?)w1EuxgAP_~aM~$rH*?C9^UU z(eY8gGko$4_?i=Ptp_IPds-158_D8m`lBzu(@t_GUQ$M8zE%=hf@auxZ#-Umd* zmg)J)ZF6k41Ok`qs>&`09T;l&3ohKN22<$@I$11l^^ojyMAh_uga{f`&> zhF)?G+t~&#F{1@mhLfN>)5i2oY07b$(q|?PGqhGobbE&8QKl}xsM_l&+Wp#D9baA{ zb!p0+FRi^3#ZU3;-XBJXu8!)NKAB@H+NNdT+!-j;$ta-A+$GyFPmK}yvbpo%1l0_q zYxVRq0(T#lXrMOCn_~ZY?Gy97JM6i-#Al=hfaRN;@rl*rmy2JdHWy|LZ6}E zk$BQp?|-}#&ii%}hYq)8;?oIV(=vGlV?;v^UV~n;-xf^>{%&HF?*lr^Jpd_?#d8YM zPe^*#v626zxU62Ji@J<3*f;i(k6?_Xc(ixQVb0CkqejJO4USK_%&vh}KOg(3 zzTwcHgw;zoGMyGEoC&rO&3?L*q41~}QgnE$wo=B&dycWJ4~T-QBsl$&u+jWq-|RSk zzD=g-L+>yEXu>6bzvsc{fo9(8y2tgdfS0jFORF+0f|8Ln?x8jt#|+7=-xGwR3gf=i zb>fQA%XfH@&+=X#*7`T<;zmqYV|~u}EB?6T9+0eld!J|6d_3;(Q1T06W62Fno7CFc zfALH2rKOP^6mI$wsZKojh}!Y4OAx>?C<8@aiCENFqL>bMe|*s7Cj(1{&r=bD5hK|0P`$nshIUwMg`$=@;^pEaJU+%#;!!&`RK1B+P zw2=1m13bI*58bdT2fLS0y)YHlx2!2sR;oT7s460;~PtbRk0)?hGMi zE;Q+4r=aZe{Za5;_n~g9Z=MZcyK=75{Mj_0XOJS86c$F6m-OJtXSY9cMD8<@?8Q^G z%4+9?W#hi;h+}j5!HQLcTR^l#DkEKG&u47~X{!hL`OCa81LY1wfT?q;d&X$w#n;~0 zk$Ps;$=(OZweJs2f^g6KOZL<^$MY+%1*xCPO}19N^eIkF2hrxBwu8F>Xve?Uw^GP; zuU-fM$rD{yX|Te)g!(P64`U2@9;cg>I6ng%3n`4+H%Gcw7ME;)iMN-P(kX&5tRoTE zqPdr!{(&;K9^d!!v%B!pxD>lIDGg{j(8Znu$yR)T#3 z&xWFyt$XUEXOSfbo-tL;f0tJE%P+?XfBHXU2iExYve_)UoRyU5_|=(R<#b*2Q_#c+ zM%aa$&eL;>?B$8(S#YqTpEGj_!sDKSnMlbDSG_bTM&e;!<@?332#n6~b@hvz-$J`{ zJWLoDgTHKZ?xxwK50~7^s@nC_fd%s~+r*!iWU|t;FPkltZ?x8BP%RH@Qd^ax2HbdXaCVq&9(oFy7vrfstw^8|IwDPkP^34J z-a%TZp(r2%5fD&1(z|q|OAEc%Py&Pw0YVKBcz6DDKJ7hoX3os{v?sGBU)IVbGb`)4 zpZoq@*Huln%_6jWCYB3~!pV4_cT63)i48?#TOzcZ7Q@D0#mkl(CiHtn{DWfz9YH}t zH)p(iXI8kkWgF>u`5`tVBQ5sfhWk>dy;Cg4L_9#CzC@9=w>`Y+6vF?FSt)>`oW}LXJJB=;@JP%2Vvpd)S2Q{1^U& z3|d?$?I%hB@qGt!5MEzlI(0{LMOxR@y%v#L*0|a+yty|1q9MViW3Ig1LYyGCX4zBF z`Y)5576>246On+OElgdzr7`@q{N%=XmL4|~d7|GKzb}(a{`W;~2A2;98?_46`E(F{ z{(pdy$$Ba`@R7w5*&`Y6_e^k$`{*N0Jd*Y+*#1c&ezi;E(y3E-bShMuDr;W{6J}ef zR)51*-YV_Su;V!Lb~?;0*X7lY@t)9b!lLdJ-9;*S9;pWryoa?~8iZ$7SNfS6U8f_Q z>FZDiliugCjKfF%QYaZ$7V4k-W|bxDnuaF*9n)@=(-{XT2DW20+xKeAjCxho%2<+l zw94Al#c`t@!^c`b@?4|}TV8R#R5dkH!!zHeQ#cI1k3qpWpL83SyBnbXk3#t0_Pf7$ zF6IAMXq?Hq^z;a^RoSN6Pa}~~{qwE6*>nta@3llfvfqFzuC<+Kmd(GZQK|oc)V304 zGO;yFuHr@{J~W`u#OE}cZS9_i;3J!7U4ZcgJK&Y};`wuP4|jd7dB~_5{~pMNH{?uh zOn5_iMg^sIqc|mrVP08XZSwzswXhx_Q|1cmFNl{cw-6;n#DioY7(xz;0~`Ba~pE)UCd6(Z(48K8-p^Oe}e7#iFKl`!LiiJRs@F zL@NH9BUCa4{i`dMhoLLxR^Zqj_o!&?@Y}}FIu+OmBeU1jYNzAqhRUF-jzblX9ZAJ6 z^DYIk9s}35L&X~+R?#oJYQ(N`fEAKk?IN$8$0)`$q^BmJ`*%?5_jy``6ry zd!aRuGLhHV*^lQpu!@5Tmw%te*B`Rs^;6*xoW|T^CZDnq=I&R2hTwc#dut#W*H{-> zk-OTaOZcub9Wg9Xh86Efw05kLv^lUY3pK>h4b4jWE+`=N&Bw0PEs(3o1^8NOs0TtY z-23NC14Gkq(Q;E#39%3P3Nk(ste!LNTO=qG{%@T?JSi*xT;74^O29%6?;X6keHZUE zIu&G|Z;Um)d1C(L;Fslab5s2^k>)2wX(hr(L1hbGv8S_j(Et6CjWZFSP6m`d|G#$D4|DZCi*Q`1h~xMK#QMCEHbiZW)?MF3X06}fJNlg z$F05GFZOg)Q>V9-BwUjq`NG4AgPG#=dw7}tq7V!Zu`K)7=Jhy-k zHf-JWc!ia<0fu}K;g;r2CSA(UO;RI|lgVLshoZXP)F%Js!%fc0#(w?}Qp zj|$EiiNK)r@#T*~KX!Y&Fq%7)^~ln8bZU^aX8H_HtJiWig*!=Zx%YMaVz{*8{ zYp`o$LfN|DgWfXJd1GS)Gr!b7)(>AdPFYf1@pjov9H<b-Zb~hueFvJ^R8{o>lsSmZ`@`_mPg$kq+ zW`Vivj&pu*uG~skrSA7)&)hr%$a};_uGcBXEMrEl|?Px&X)LQ2--j63W6Q)-& zXp4n}8Qgp9#9CFfROrmv5rwk}Nu$#r8)8^$=UN^hYtkZ@`LPGm!XEmeO?yO^^Qn3fn&U%+;()UNa>Dm zW7Go;sKaqtgGl2RAyvF@mS;q)0r!Lt@kC#_OVJan^ns7QI>V5rmEB(vd-`uLkq(4+?F$Cfdh$G6jrmt^m#@*<4oAILp(%;Fe7bEm-uzD`mY7i~;) zSZi*(G4H7vY7A^me*h%|5Hntu6CKNSaDL4>Uf*SKttp1?pt<$q)@1FU;adc;C|S=0g(oRMdO;ca)j)p2?hACD8UJc~`}BIc z_uMD$VWq>k=-AX?L1mk95@&C%JphZEou$)~9^+RxZz4|Izr-*3lCC zGIl=w0(yE1hb=>(y48~|^%~!pqw5wYhunQ966gxF76oBWDom&t*BtNqmn(+48At`HqUk4J=-CXoV%-DOx9{hLmoH4vErO}gdLt&8V zQ&B?lhmgonS%%(h1{tw3M=5ZWD42LC7b}O>{l0W~V=hr=&$J*_MB_z8NX2-SRaPIEbah;GyhqT>*2S-S|Ju zo|TQf3@r0$iR7I(;Y@tY!5iAinqTtoq5?>cdxi0fcX1aCl3!~B8`sq`WjXU2COnEo zJ@tW0vW$~z9AB=t$K_z1en24Ut zLlM-1w0jnUU`DK`PaNJt?$vTzN+!f*vo`U;5KR)dDziRg<*Z&pyfVId7IDW6DO;yH zU(Swfl`Y=)Gx)k?rflmrDXNrk`oZH9HK|@acRMrIXC20{U%S&R9#*_3Rnd-;&3}Ag z6Xn>=zKqNqrag^zpe0d_POYgW;0Cc*j#Ab8om3=2oLC-6*X7tMih*uml~TnBEHmK zd6_J~nHXXY5Kj2+6gWn)|0JX#O?EWZkEDF_-hvF@%a5ycT_{eEr!cb^z%u^B1+gml zFcCam?D!vG7jfFna-EQVxTvDRs4xB>;1T*oBb1D>0!E6{p5VjX{|`VG^({z9BD(Hd z;N|pzP4#q0w`}WSbRw@r>Ql&)Dv*)r!}l3ORV*O}*z*`I_iMGn?v6f1jWXpTc8^1a zXFp--)zg~@V+2i?{1a@E!Ho9^unSRH04zmo$?I-s3KNr+@2ob#cFBV3Hm0qn$&EMj z91vbk_`r12x{D-7kc(YYg~pnDEWXD7w~jBpDV=5mC~tz=R01W`j3ky_d%WG?x#+Z^ zh%Q9$T-2e@d|k_5QBy|)rh4Kptkfc}V{1=gPJJbmeHQ9uL>UBgq2M*sl~-7KlzY_dLrX|%7oza1 zJzthCIM8JxPwxI=qSWdWz<%pPOpDTZtAy2WY{Wn4aiZzY+)=SZ#ckn5-||8uU8)mM zOqc*Z2-zR8-uVx}RC$JW?n4}0Q249^A0jjyS&vgcF7TDhte4as@`dJXe0Ve`7PbbA zl;g*s@xi81GN2M?-wWR6Ee&S7WrxKRAlR`8mqYMYZyl?ms?$=en6V zxsbsTdQW@R!$Xzrj38<)&iU?P2d!g3W6}le&$6o5#^GXzHOXQIi#@A{b6Lc?cw8U~ zMz=3@`Q_uRH#%fJFsk;(Fj+P?QSa%iu|I1+GHePNedyEw=N4Xqlpb}z!WtT+Th=PR z7|o>5s~dkt5Fr(I5-WTH+0bW}kGkWWmU(x_(s+DWA`#90!cxN&Bsck)GIIju(Yc+V zz?N){L3R7yi5}0~j)mSWu8mO{*Egi*4V11cfB)+#Q_E;1O#*_aFg*3_^~`>Rv(3Sx z^rZ^Z^Y;y&WcF0?qx-5VUgp?wGA=f(@c-PtSyp}LHRhZ}Kieu&&dO;x>FzzE{Xh=x z=Y|>dy7b7m*>0>5>0x7@3F0hi&n(}alhVKDX)#&uu};wcA)Hv0@Ldt-Kq&ryGcCZG zUyu09qrl0^9p@t1zZ$q2;ZM;V<2S~V z`N9dIZZaW1vhAr7GD5_DkC&-1S%{nAVU#K5GBgn-A@XU+k4QVwr>m}`BwCXB4&f+r zMf`L;q~BU5uBc@7>_33)o_M2Mz>PT8&e+C=HhvAYgo$psG~7SzDDsf zd@SQ&h9h9}!2YYSYK2%H;JlYjWo@AUfR0jUFv{1&l76LhGn86B8Uwau1UDT;J@vSk zMQooQ+|~dqq}kUIbzQzbN0pqHY$$En?O`WUv2vD*dR6hy7f*Y`_9QFq2iPLy>iQyh z2xOyM=KWp0gYmZ9or!&e zL~B|vJa4w(v-#$4cOk}P=+glFsV<-~<(r;M%L17XNtt=Ocfnp3{ROaL_~o0HE3F_`mAZGcmCGv>TQ61Nou}kdSS47Z_5n@AFL^y7{~K zI>~_c1WDv(shl((U|qp0w4_Afg3Hgirql~c6v2yr-qtlvh)Y@L?CZ2mKkI7Ln_?;` z?x$o2e6XJ5Oe6kt0X(cX>i4by#ZOxK8NhS16v{kG%&*rF}cNG0fNwhwMSe zPRoW#8`pH!{CA|!o_f6_&jJ@;W75Ff!LU_j3!zwCi~sH^5K~~w!O{ZECA}Uers3db z-vsL73GCx?nj3Sc{{Tr#v?S1IN?p;Qpy8%-Lg4Jr*#7{0800*)gV60#>}i%kmA@lC zif{_?qbnVfN119QFw=pN4CM?(%IL{tdHB(Eg}+snjoNbjM*|GJyGLy7keZbp zM?oe@I0QVb&T%MLw9wj;>@)IG84R4fcM2_bz0-5+L9ICuhHSetDCjs_+c8LIK+i22QM!wx%u@z9L&yG2DBqgsBdqB zzLkOL>s*Z!@eMCXKDA$*Oi*+S1y+ek#%3Q`FVeN^?4JVr$B882^_)~k*y%gtGx^Z` z6F+<2EL;^`=;z==3R+N~r!G%(e7tHKcT_bGsTo0xTBN)-w{Ow_bD+mGy}PQsg)#u7g~ZFTWu4@LX#xV` z1GI@Sx2oF)?Em1$1B1@Xg&K8xNLY!^-8gmWw!b& z{|}!y^(sNUwosP$;RgHR2{C`qvda1=S$V0#Np;wd@9K9fcFoq02reJ7_6QC)p>cck z)bp(OLI3^($eo4xy<+xE8kI_`oAYg!OZO_Ze5|3Nztr0ieW5L#R?TL6qXwy$kyw+g zGvXMYlT7^B*1QVb#u^TaujMI^k|#uNcLeO+@k0*XSs~4iiamB(zjmZ)x|)t&ZCc-y zWg_ErI8rsz74n6@`*}{Ia!Mz%ks{oz9uU+qt^|j+=j34H;dm*jWkjpxze6(_Cah*U zywvjVTT5t}UNPd9#FhT0;;2QDhf75R|2G#z=V==!%SjQN7YhNcJf@ zf`?+4_PB@B{{i|mA?bI$6jitUHC3M%D}v|n-B5hvDk%*kaT~*6d2MR@&VD~1xsPwt zL-6wvTRHdhNoXrHQ@A+icMKQc|2PQOj}T=S!E&TcGa=6*2LIgZC_2a1gK2yj96=I7 z)Nqaz_-j9E3hQ;)W31VZmy(~u*1k$Bn{DRGD<)|3O03jFv}N6-O07!&US+I!&7c0K z=R}6vjcC&wxq;)4%*$YfItF=~`VxJP`j19Cmo8d!;KRNE!g*X#=^B&9l@OIzLR4(rLgZ?^|{*Qku&i(YhC z>5cC1K1RZH@L>{cdD8}waclE)y3rmn+P?aKfQyw?_)Wq_Me=k=f*vU3BxRnuu2#2 zFpmq07R@d9ufb8eMk)GHDt}IGn14K=tf~(?-#BN_Ew{vS*Ta4tpZ>dqfR~*<^(M-> zXVF3~u0S~6-Hu49rMY&h<~28TPK+&_B2sT zDBSbAYHw;vl99QFt0%LP44)3lYVeQb^Sn2Xj6B?SviD-s(5Yrq^&eA;-p1}3^gnM* zdY_!{h@ZX>N$~!0J7@`mFQ2hfgBhH~x72?Bm2!U%Irwer-gyAXh9jrP)#h=)va1lA z*~mUTyj$Mx(@46z^)M^5*3^WpLNEe1zlyP3h}e+Y^{5;DORR42q4d7)&|lN<^E;ZJ zRqSfLncsx=j5a2+!F0NtG&wui~^U;{>O$HMyFsZPt9!d_diu@F7b2?H_ z};&q`jASVS)M%f=sWkv>4)sx$T`w6^Kukk4~C zC0I1pgI0_WyvlV?DrNMm0Ts^VvJw-*eHzDwkm%ogpb67m?dTWu2Qo-0*E?m-@?p!zNYp}kS z>?Gpq{IaweDzjEQopJ0DG&xZzrk+M6)wivkA+VZ)5wQ;syca;YSnq(xwS>xp;(T4s zAU|zxYu4UWXP~Ga3`Z1Q$`@FpbEhmdwPwPqTIYD~PBl)aLz=|6&OvK4X=_z^t~J30 zLz42k{wS79#_|Eqc=jkCz1UT}k^Mp4El>;NTV(H8iEUnA-(-LAX2R6vOK0DM;htAx z3ML}4cO>^^WN)KNH45jkiutV#E;RK~tqCEAk^q(N(2y;PYihRMUho=OT!ABpt5z_x3~Ewn(8Q3gC0)ht?W>Ddtt_74^@Rv_s=SL$EbD#%qGN>f6FyGduuF?d3l^}z}6NYz?>;#%j_{khIJ76 z3olGjbS$SLR?~-0IH6GoV?G{6$HF>tpQp#F4-W)aOT*2M0e>o;+|p1v}Iv zwHG$1^FM@hzjedcxLZ}9Ljc(Ho*0^__DB1OXao47j5^m8ifH?LrM6V8SM0S~qgTHjseC8I z985;FWGVh#cC-HOf|0oNWqF+C-Tk~=O=c=V_><)H4OizOu0sIpKk|v~Q{4W+9v9(h zhY9|2H^};;=Oj)u2U$FDZ+o=Sj^&Ji#l9%y7E&cUi~lBqu_k=(&#@n6RXCXJsyo8Q z++xgx_UG9mJKh)P@P&x)XA^}ygE$)3%M(GuCtpa4h-dODXC%a}y}dZE6mZBw7{u5( z2h3yvYB@@gG-ig_}18`WqOrpF1;*J_>LU*CB~Rvr5f$Iop@jc^K^^~dDra`LEV1jxto=+Y_){no@l1a> z$p^)LweatfGLPLDPayCnti&2=cnDDC+ZvL5*F>Wjpy}?^?%20d^RVf5MkY&b%w&Hj z$4Z&*|H-xee|aa}P(|a>`4>ZQ)z6shzN6-v7=6<^4ihI|{xMx_3*z%S{U zrA%1({SBX9)dGmUdLu?uYWl=%#bIJzyyim_#r8mbSM;c)Jcv}5jJ|gf+ig%kBj7{S zJTlV1D7Q0_r~{|`?8+X7$XF4XH8pxtwD{A4=%kTIyG1B2U8vDbK8mr@FT8hP;BQ$| z{xZ_FVal}K8EGD0yv4{^Ts-9)n~_)(?B}+3ZTty=aC3mH4klB1wCTN%tR~Kya&Ci1e$FjzXMYzV7JbkMG_<03&)fgZ#$`@lK1NeWwy5O^ zOZDIM-RDsuPfHszpB4juL2TB~EG3zm3^=nqNIFqzfhkDh0@8-3<+vf~deu$!**dz7 zT-Hr#(hhlPKC=3o`qbT3x?V|Xoe>5t4O4FA?5VB=L%bSn<9_rY3(o|Y)9I|`*9w0_ z9nH7Y+|EOTGY41C&)*J6UoR|poxZ3Rj0%!3hE!SnnW!tXYn`qtG!2A2Dr;dOK%dKy zpJji|5^Okj-TJZyBta5duldhznZJD?6kK|bGF1{p{J!|jXvllE!X~^#Vc!Jnwa(=; zMzgGHU-}yMM3cYH5Wrhv!2H5MFPX!8N7Kg;Z?PIzm0y>re)cA1c1yb7CZapQuNqgGMs2?*OPNxYC8xsTV`KoVPZbgw41;M z_>)ba-tR*LsTW3L)uKY8yG^BUaB*k?$KZIsIxukGomV?codNAfE%A7_Ynzm;y{U>4 zQv?Sy1ih~Bh_XmkZFRn+HCt9)yOpCTVSMGf66C=bnnW^lB z$xNlA4W6<9-(H*Cygoko55QvBhnP>-J~oJ0qo9In)@!*}xmw3PZ7{x!W%A<^01qnc zhx2YzJwnmMw91wuEf*{hdB|QmhLlOii%FBEe8@aUSe{UW&~&9gC+KBX$CFkk8C$`a z_%@M!-R=wH7Z8*~8dXbB(tS(8Avm)*`XYzM#1Ws{0sI>B0Gs0`qh7ir_rm=3o`V2; zq~=@hX}a$lt}15z`L758Y?8frtUQ|(Yd6;w0>sC4QCE;;mX3KjzsRcP^U`EVpdY&b zkWToIN64WfDs5ysL=*zYN5EvRbNj#q^``U&Yi?xgbQIlz@-1rmL{?f_hHljUBieWy z2-t%lrL>9jmj2C{iMOUE2t=>5I~gZ`4Og;`x=bReD8WHTEsJ>CY($ykidf77?p~^n zI?>!@oikezzO$z*Ot6NfmU7+tOQk8tj!j>`j1Cg#$Qm=Bu@UzhS6MORb}M?O;ccX^ zAR9^SKXdub$5o@d+4qa5uc_M9@bQFij(a)j>~!K>Ywn=2hAt(%Pp{s*5@LG_SeFrBx-lH{f}EN)O^Y(`R-)2SuN!0L zz`~1f_UUw5q@KNQF(dJnmjsQ0=>M+C$Fm6^8)UzTPcG?7i32sOxw-HkK3@6w$tG$z zt~KQn<_ZWH>vc!NsBr9aZYHbxkcr zS;UGWJwk&EWc+rxJa_tp1)y4?m=k1!iHbZQvD9yvxtsDSr$r?0iDN93AR2DN)$ht< zKdBSN#%4TJUrlxQ=Apmy?>!pQ&Hm zo)%nwEH9L-uTN*Cqp$E@o0L3tsZ+-m(ZD9^;mmA?E&RzULR%P>8i_7jm=2s@N=q__J z({jgOHVUt4vCEDVrSvuAp(%RwZm*bt31osqBkXv9r=#Rb6O)tbiO3(+W4rl z1nm*5di4Ulk#$eZP3|TvUZxs97~?=BT1ZwaMMmnYn zQ}A}Nx(|aJ(AQn*B;U_{xSt}+w~t=sFwvPU`X1;OT_bv>(R4C zzKwH+dMa_!!+#N7x-C=8u)%!l3=g6D_3XG6VN6P5vs+oIl2~?H?Yr;ui=A%ymd&R> zQF+VY%XQNUPdcCw|O#NC|4F)9c!9Mo((aNNVYfu~@8Sdhh2c&$lSJuuU3 zxRwJxAivx>`9Xv33r_M-Tz5JW96O3XcyIKi=sqt7S1)nLjWF=u6CQeJ0g{T zhwDu=#5i9JynB(kMV8d$hQ4CBaJ6Ul&tUai=w`m@_?70srg+*mer(9<+-zRi=I&Z7 z{IZ4dn~v`rM^1$`Ol$Zc1wd<3B;HGb^&8|G)yF0@cMhcmSDIiYOr{^6!wy7s=b48e z#%;V*Aa$x{;XbQGqLMc^VZFrdjen<6#};KdyRmamJ|;n~4Syu`UL?-5d7j+4Wagtt zi44C(IM-F9<=EP`FZh>q{sok#8l)Ojo0~2XyAHK;>nHpPpcNMOoUOCQE})EX#(wK6 za~#f%vnd1*chX4`GRhe8-l(pCi-X?YXbw-BnQ0X49-IvJ{`y)E<4BsGV@2T$ z{*DLrl1Jx@$odh=*JQeqiHy0iHlO1~$)oc)zuYTV(JNkOU;5yca&M~;h*u( zpT1$lKQ{n4E<)k|o5$)|+9g|DEY@XQx$QQ#{7Lb+J34_Ex}aEl;x^f8q%4$NUmu}L z7)$$!MwUw9VRrL_pd3mR{UcX9;yXKb5NTBrJ-5As;u3Q)?_5@9;FN*L<~@c#{Z?;R z_0sydnO}H-htAd$%Db&TI~9WopybW(OT!63S5Y2#@P1$S2UX{0ZCo3?XjhFq@Wtnl zL;v4wWzXQJWe@h6lUrOhUwhn_KN-iMucrrPrTxZ$*#UNxP%eV|jQ=*aWuYddz7}A}$qcm?8NLw8x1C{cb06u!_sq^WB6k4It6qOHGty zS1n1i?dGr^#4!5@K5B4*kn1Rb zD3;nIc)uV0AHYG0ailNxDaY;R2WJ%;#3S_}Cf6)^U#7eFpZ+w`C$#NQzh4-A%Nd7WWGl8m*=-+_G8N&LW zaCC2W=wvNU&ouc^Nuh4_C%wmBrsR67OxTNr`hKXgX; zEOJySMw3>?{#iOk%zF{$KAJXutxJ&*+`Rk#qaLiJ;BK~cR3m8@t#x8pf`|1~la?OH zKj8~MNbp(Q-0Oi|Xlekz9-{7qRWH>``xe`ga4`zyr1-*uo}l3=HvUZL<}bO}shZVh2<*)%!gwU2i!xX5*c`13sQ_e2|1| zLveI;L`KhLn{pq%saq6{PXCgi4%eKoq*KOAo0U`~nFdNO94dVSC<6|J*=#H=sJ-;4 zOi0b{(_LPD@gLA_0%R@$yHW#7Z`Z-IskOj5Szh#noH`c?v_;GGC*;Lxthd;fv%gOZ zo0kMikN$SDdSz=PrgBYy1oawbqo}j^J>t4XT3>v zzOR}BpN3s%$!C6gi0v2Ti;);+hOY63ekUC|rx)N0>R)_}K5As0O~?fvH0JOc|G_45OI5S)8!(tPxT6rk z0TY8=J2lT(?-f~kYQ6eH$l|q7N<912{mL2LPtS=!C8(d$H|;ons$Qnp$Z7#kKhe3r zJdU6FH*34GU$xsDkle>P?u)v>w{+#|%DXn~2u4*vD8h<+^yk}{&N88z+7B$4`D{!H zBiigc9J73_E&MeOtRS?Qq<&%jkC0Tx%g~Q6R)r#jF^|AE6U+89pIDw_HP#xBi;r-{ zrE+j{?i%2##{e0Zc|*XBG(g!VdVrL*-7Q})sP#-4__J(?40MB!NpSiyY6QDT747_O zb%7JnI;o!j4}jG7czy=oYAWC=fD9a|kxPTNvnxP(OTr#B^+pb!@!Y!vXSa@FYF!MB z2&7Kh`_GTMVBOEFeuh~5!a0yjS8@|*3@nZc-R?(?lrKu2RymO1943|8$UUUfY_zjPMohl=1urF`)dt_CFy7gY?VG&fG9ZV5#>6r&qSu)0$fd7mq>t!L zj8xu=gG)AMdd-qb;@^DZs6ojb?i&SM#yy`xC0n_#STo7)ht0@%iS=!&hk%FDHV^BW zEMA|e+1Tx(P5U^!o*>}ScGLOx_SU1kS!t_@DoS38O-p3Ua9yFrW+DMmd|2OI5baeQgR; zgQio)Yyq-9n*pXv&dCK` zZe{$`=gksIaq$)fe5Pl+g0ppe5qqD4l85~Vuw0~n9_8MWtb=q1!bGV`6=W`UJQb)7 z^tDaHj^<8^gJTi9;{lpX+ba^4k7aTKQV&x|F0MUpwwjcoAo;X^HYs!v~}Cm z(Q^j@{!J!hyx%E!)d@{UaMgw}TpKMoHigsvPw+C{@6_;JnnB(0OI4nQH{Z_<7UP+j zc;@?wV0m|p*eOlS%WqVfb=vb5#yur3VwIeDVgVDdL#RO1^i4KQh9WQM?Qvo5+DOQ_ zg`;0d&6`msHN0AX;YX||6_W=_<5l&?FCYP4;jm#6FM{{ ziN^;ruiAcZ24;g~k3erHQ=19t8qId#X=@9nQO3Q!O zDe0&-zUABIlP!G$0e+k8p;wK$Mi=2ytEbt;sN&j5m%4-7lu1UB0ihhC^CN8bXtfhU zWapXWbW8^8l-yhVh$PJ++N7I%cirgQ!+sX9Are=i-Y z*W;%we7oVkNAp@b2BtY3H>Ke&RW9-8g9anMFU}hL{`%(O^b;)V(>a~K^s-&ImTRNL z_fG66+=KC!R8L{-r@Rwvp|_sU59Lm=*qZwJmyfKRQ1&b9U*DmDH+YJSWn2E0Dc+jp zzRh#s4`&^&hZ(CYTtL4S1t}=RbI4l05V=_BLSZg%R8+s1wVM%RI6FID=yyLj^YT*Jw@0Orf6Of^xcGhlX@w=^ z-Cj_cKZ46q{tv4rNC~T~6u$AVNvA`x_@Qyll!~x&Z>NATMfa)j5!;qeFm)XRW~ zOH(5v^{JafFXT;T+o_SuKL)4mq2NiMOsnT9aMk7%gi<3~_nDeD<}w49^9jV^Q=vTNLq9nZnOEuP z`}od2{la5wccwZv?@c8GI}>xHhh%@RE&BHzbB9vZo|rXGC2wzTvt!j-mOOp-D__GQQ!B)laG0+s9(DL#VMp{VSVC`F zf|az(cS4mn^7L{466M8n^&#~BeEctT8mM&0VR7z`^eU>ht9v~?_4lpi6-#BhbBXhp zzSIH>CpP1rtar-cfr$j2*RuujU(0qIh0HZecbnP6*(5~1ZV-m*=f#3Zi8hU>KLbO` zbdR&DUrww;X%UXQz+yE!s!Gs$=S`nX}Xgd0X(;>-=bM zB*9JyRbv9P>t(bcanGO>Ej`7bk2J4yJiJ1c@$N4-I7<%d31kN2oO8ba8n7Umm-NuMT-pRvY;z#!lYVXX2R zh}QNv!(?PKtU1`pzI8=m&-#<~fJ_G0{%)8>cfroZ6V^22-3Ei};NQWEfkr7@b33H~ z`s&`Ynd}TUn%kdu&-Tk6IRYtMy_E^^SrWF}Af}Dp%dkPzp&w~(mBTpnqdcQCHxnkR zC(r)A<%$u+X%+7gQ zQH3D9(@2GN9Dwk8s=TydWO`#1BS#RHVx(lzy_>X^jhoNwd?9kz+%1zruNtG*ajQGgd$wsdtIC;SJn zUorak8{woVMm6`%&+SDTXW#5n#igpYDZYH3o;`thY2v-W9Z3o!b^_h0Pt_Bqot=SVmDThLd3ii`Q555?DYY_-1kbqtjYqIc@6+f@=p$kjgcG%S7JqrOiSFaLSgEh&G+xjDHZ+sf_Iuu*_L zh7ryO$Kl6_lbFH^>WcOIBe{5Qir^+wQ^j3MYo}~DGpyxF+i{0M-9(V9wP&ytVo}Cx zvA+A>o0mowuW(TBCiyQu?<=D7LNjgtmU1;DH~PBr^7`{j$hf>MIRC1WlF(MSSnG5- z(WZ^o==8ntm4Lag2Qz55)ta9!D00NiladbkDXWu>DO)3%ifxXG&pRSEFhp~Y6S^wc z7A+-3H_g_}ibp5T|6Nqps$$*6zZLBN2RKf|`U*KyB@Z_s7R`m>ThZwQMlnt55^4;w zk4C%#fVd>sqyGSNftI&qbKk(PN_6?PD@OAqIeC=}^Cul8TLja#EWLz1HGEu$!Bo4x zCZqN4_Qm^;uZc5$or+Nu7osW&&-MqzZVDJ{Fh2n%3ifeI)ws>)OS}0oFHAsOL3sRuC6_*rummtNpI0Px4paBA% z?DNbydw=`PzL@8kxmXt~7c1{dUj6?Jnq{z%wMPU4h8=Hq5w0KlTSV7uJTtNPaa(jK zRI~>#?gT9pTgPE1)+lJbu(q};e!P3hi?MF^fH&Q);U~yva**~!&eoy-X8MQK-Zw%k z%a;aX+qqWeFoe#gc^4ei?TQp?7pZ!)dD+p}iExRbRsUw9CMs>}+Pw|1j2U;W^h;dH z!JRTO=W9axz)qt&#pgUv$%6_;6>4hgr$3~q;M83u|aJ;AXG; z0S7!VTxMqOcxw@P(IG}wjkaY;*lv0LM086rNkP;Za|7V6NS)iiP9Ov!@?D$gJ#e~o zT)t>b?F|x3-)xWfG>Cw4mG|?#pT(Lb8*m8}N50>hMF^=t(lV^lbL>+6evNN0NBtA2spLKfKeusT^br(Bd_w=s83#th83=87) z3dUPC@l85ao<%7ZphyLOn!OQ3*>nG*dexHMqcY?oplRTL7 zqB-+U!qlqd_dee-w|IC|8%KBS+u;2JLpQy8@b8#@X%S=#sAPb95RzAEvHa@L+bw-< zYy7oJyMve?)s8oK3r}su;d)`zSO?8ohG}qvu^Hr^O=)%li07=>4-&2 zM{7Q8s}7pIo@_MiQQnD7Q=RPLKl(IV+1cBOLy|x&VW>MW`g4*SiWPt`K-UgmE?6NV ze$X^UG?3u!&o|mT7Vfvk)%7vfzwR-N1oCq?Cy5RVwIQBvJ~SazufiJP6H!$WYh|F1 zCCmr1ng9S1TqWJ6|OF}!x$K!#`X$26hRGSSFIK&Kz*4z$A zGoTZ!H>4C(1VSsy|qIeTOtFZ8d`W%i4Aef8{m{O9$b zMLEB+%5i5N%nEYd2>PG--|FZvn!P0T79Vie>>rpBESXy}q<_|E8sMlzs86ZcD03Nm z^7sD7Gyjx!e>a8TMBbbZLkeg9f+Lj}_Wsn>b zIvL`7+E0S99w>%jvKN_IHph+RtO!_U<;D5+gw1#7wXB2^I@~Ei-o-SKY$0vX7&p|O zyEw1)xZNj}CZ#Rek(uk&xM6H*Y$Wlckrcr|@67%M5NS0}pw{Ln9Kk!K(HGKD&*Neek~B4FcGHva3A=XVgo>J}!K<~T zXO#npc^J$xg$nxN8%FeUQ@QH+2x94NZ{ZMOpD)jfkx4yHK9{@1)Ta&VokxsU6py-9 z{DC_tH5n(r<9Q}grW4Tr5g70(Oc$?NC3h>R1qni@n+M|&zvya}t3D)%rAXD3{JwlY z6qZ{-1DKc###vpo6CYTGe7&GI(VcR7a;H1>>1Fx}_j}v7tf15v3581ey<*FW3t2D0 z-ECE>@&YElxpJ9i4`a#tXp=F2F`EEL-3w}}6SD8^V4#8npJ6&(!o?_?ep;jD}zMW+mP=X!hB04-E)xOoU&qKSpYph3iau z7Qy4|3QSGAz+B7MSJ9KgjH+SYWn7YtU#elL^u%^p-Dr<+2A3~u{55ct$o#G2>SL-^ zGd%vmGFqkn&p2Rwe=Pm>_h^bDiEnT(`vsW6KA1iG$KrgWzQIp%9+HXlO?jq9j0vIH z;8A{65hxK3V*}+3RrQr|E#;Hk+R=!mN32qO9P9lqSia}lYAginpC4~Pn_Epx?72KM zGj+TK;59Y|mi;*)9$@iCSuEYsGNugIkZ@*;FHstB5eJ zI!AmOyi48ejpmG`DvVpA*LWa%*;qK&&nm!;i7d34>bYB(GQd{SbKe}YsS$O%*WVQ> zL;L}L*|o&eE>N)|U-_2h?ZbqQ%y*V=0z?%d!OmG9%8i86x4=tGPzzG}!e;n-q;;B+ z{i9zVzdpaL2f@V}fv#1ubUbBnF1z4Y=$4iF_Pw4t3Y4Bw^r|qWMl~hQl96k1IdL{i zgwg_NiIreN+eqrtMP%=t{OslN(|5JCH8DELCK-N2S*f)J?b`BRP{Sforfh0x`I_!J zk*5r~@8N(kIQpWBQUlRhVddUrAWobYC$aWe74zYBioLF|h?5x3HyFjCv;>l~EYSHr zPcnu%g+_{ILK8tz^_7ydusN1oB(*0a*t1V8B70@2J{TWkWW{wfZcV ziEh(^w(_%uqnPY7KK6EsB{{Q}3A%Yo@B>X#*wMw9`lxXYf+f7{^jT|4*huuRDB{?p z^46cyg$$RcYe2AR1M=81?crG$ypqN{N(vGYC{sCj)wP5l5)m!C_{1;v7a_v>E_K%5f5*FnVyN>-aykFah`pWTe*wkz zp||1kbFYW<9{nkk9u+|$k{@ma zgHl~?V669Nc9`P-^l>*_|9x$7ek^i-ClrUk8#DkCK2RdN`X6=b?PM3+=Z>jkk9)sW zl2W)b=P0CPDQNw^P(>)kK3@hO5Was_GM-x>)d#{d3w%F+x&ACrzG-UgA_05a^N^*z z^{uLJLb`C)TV?%j#%xD8Fut@ zc`-_e;5Uey-7zGa4CDNBAKQ`3Dx&HsliAe>Uta>6-Bt!m2kndntOq-~%%nmOEn;ML z79Mc!Iddx^7|11!FY5$>Ok3=~%@58d@AFffu|Uc})~_G`yE zfC!Turw%~UllJ2xGT*(~hP4(Ly57Mqig6Z~XZeC##6+*5LctW?x*xvlG+8BiMi`rx0s)R^*utd%EIq1mWxKRYeU4KzaEGeU73bQ=avA9+xn5e$P37 z{BL|bdQK(zPU_dyg#4*o9xXLUkA;Re+b`Zh+8pTK>yj zYq?D<5ic=&%=xMY%8clq0L?)5bd7~gtxu%@bl{Td5C){tW4iLh#OeG@d&|S+F6sKq zQLFe4AGg~XW>cOMZ*XROiR9&Nt_nacKT>RO_d@JYj#^WyHS_^Alm}Q2Sy9@nmI4)t zg&w$~n$X#6pqRgQyHlpXrp9X{Z&OrvcMQ2y ziZB?$kn&>Cdz<*tIQydZueO@zy(0b;{Y9oHMp3QpUTPuBB2eJ@DSacM#Y(V*U;WHX* zB?ES_3M{v>TT~)eh5`Jwtfg)I31#SnUTW4ZM_Ig^k86U452gNsl))%=LepZykvZ&{ zg?s*C0d504y3#fQZ)NBNuK>eXBzbiD*{P#_!6?v~?DNjb{r#y*%8TOjfKT$Td0wpE6b0 z-qq)5gZz{)#sZsMU~10m5nXP}r-=rI$TWz2TvOzmKe7*gg}>wXrnjDsljrtP0Dlkf zWqEG3;{s!iXW8(MBv@nffqb2d z#A-P@p+#f(x!lqUtgDJOt=R`?+|1;(LP%m^>RIB)N)IZ+UK!`;%V$Cqdd8sCZsz7c z-|7T{KTTOvS`%=EBQwv-3Oh3dvVVbSBok*`O?_Tu?-2j0LegL!>CII?r8Nzo2)sm7 z2~5!_T22X^LTC627$Gqv;f^QRqIr}4BZs90ALG*l#S3Khmh>CapbDnp)hw*|Mcf3F z>=n$Q8r2kviIp`AN*SDQL#r6${5nwBi~dM$y!@+bk73b$cj0u?nrYY0o#GcWeJyUmyEGg2C&}N9c`LmgYSC@rLLGlhRtAI7Xr;w z_Ec#D*wL8fraCPYiBSE0MU%ddW!~tF-3>Hvcy;iziRI&ijxL5HCug|* zmXKi^pr=4*9OI|~N?Nxj0>wJJz&+neTFD5MJ@V%33Xv-UnWXufIfz7Nx>|8-7wu+y z&ml&2GqqSA`LJJxo_!;#r6i5o;=Wh7`Bs8F(fyBaPtk-X?gy#3zg}tBu~cVR^CiO2 zW%E7qPWNzYXx5_*XzU;@_bYx-SkpiEZnv5fBbG2XFnSZTDG)C-;>@k)LPy^+YAYR? z%LIHSMP&V`y%eogEH`v1kiRMV3kcb2Z*-wnW1_EgRm?|6;lY#5#1mU;a_${EGOb%o zFO34#u*DW%^)1!81iF&Bm%Kl%Kff_ZSFX_D4E*JG>kvm^7VUG#I|jdMQ^IzG}W5@4(W^Y z79_MuXwbI~hMT_GOlN;*lWt(2A(ucBh~^C{DLT4&SmiHgcBu8@P?PTMy7Z#)fd!~y z7q8Vv*2GVrKS%PKx~g-Ip_~vhS_r|D8Z#w|)?pTqoas}N??e4VM;c=jLIq^pyZIia zrm9l?#md&VNqBje!@QR*d zUt-aD{sl;CPCE~cgH+y&NoM65`Hj04muodL`7zI#grt83rai!d2L^X_ip z)3M<!EcA3W;!iWN7<0P;K8U3@rEf27Ld9^BpSk3-Mcd*kh6(KKS=PPF79OdOs3 zGloQy$7b`<68oY?J$O151U=q2;z4H~<}7~!HLuajlj^6k*n6+cd(Yfc;NH8Ev4>WT zYw&ro9yz&|JmCN7qUaB_L@MT^?BJeDxQ(&7BH8uct-_&wbjx6Rs&K#TXPlw<3Hb=}s($?GZ-gf|B36$(5?s(>_GL0wJ+L zcaA9H33Tj%2(V7(%Qjg>OhAkn0bO8vbDX=(X{Fnt0mvFiZV3Jj={^)Xa-X2DtodGW zvyEY!D7%!GgL&&M^yaE@=3>?A$^;Rd?-C%L|Fp+N(16JG7cozPB=0I+ELn&mQ>-!$UAjDBH#ijdovyHUgI!ukB*Qd&B@oM5YCNlzeMztkb ziUIbC6B#KHb$_nMD_CWsnIVxYJ)_a`neR()9H(WxZk?r-%+VEYD?TSoJsD49#&V7< zVrO7=te^GMQiy_F@jaL zBvlc8-N9sug>#ZRB?BB;f|@Pav$5M0vHWyp^x}vWgGAqot0TB~LbYHOujU-Hwya~M zs$C{t7_m{y;Rrgs{d+5Ueb&O^HSkUN=Fu`k%TJ`e&}xMuTFvWi@pX5-KI&)&v=IPB zh=dhr9QlA=8Cqw5c$i3*B>mO5%~~Rchc(@Rd?gTP^nCqu#^86VMIE-L=%MACV*> zX!8w)LgrzI5qc=`w}YM%iw25)SdJ($HUzDYq&++toY6(km`nDz z;*rEv*aW-JsRn;rc!uZ61VE%5|HwT03+NGjU`0l}PwS^?OxbKU{kUoW>%4^7>XT)@ z6v-3+0N6_VKOBR{;JDx&mM9k1zhPZck0^$(1sfL9cU(hun_Y5DB3x& zB*H7m2KPg*Lw#N12DTOB5bjiLd`T?W_}+O6^pW?oKfY{ZC&n~0-_T2i_PFX?S1M|I z)hD8Vl&SZqcRP$lr>W*er?iDI^mHxJv7#JSscR+mWx{^}SdAsLqLzi>J@2j5xSLYa zCiJi8?xDMo-rPmot^0PZ6%D7tKRO)AbgjpGOV%+`fu#k+F*$cF+viIi=gRkCgi2|UZI+MoeO%_9cr>i%ty9hfHg({FKG-zpORZKd%uz z`hn0yexL^W#`|jf zijwce6sZl1lp6$pp6Q-1FPNUz-ZAe0L7KPis?!EDh#I4pJQL*HN;YUEm8C!*8l zI=PXyz|RkKfBZlHT+@K8gPT^ltc0(G-+9aJz7IA?tX0sEmFbXW@T}AdXXohNChH+L zu!65^z~?UKHWobZ9nCtHzLwZ!Fg^OwmXO?BA1Q`k9(t|!_!BzNZ0WG84wbe}FL(+- znz@)k@*A210*=unrA}*3<|)%pnj!DMI;SDPxfoBD^kdxs}-#-G$8GsEoh(4UPR{|8nK%@t+NkM&l?-q0SxX3JN zsb*`7PnJ;;6__JdT7A(KDGfvf7drZRR36;gqE-F&xD!P_9E5DZI1}Pa6+=lSdv@2fip@ndCJ`h7B1b+B- zQj%bE;^}^ddc&rlmug$4%aK{|rcH*DmEnll+qYV|+)cGv)gtUYP&JFlE`p2IH=8EN z;`8oKX2jU&!K>vPV~QEs)Splqe!oXy=9T^4`?3s7@&OjT;K&S%Xq3R#I;l*Ur2N)k z-K^6wSH0P@<0Lz+X`jSxudvrWZ`~j(bWNM4ok{B?$3kFIG-@l{M((PTxW7gncB!r1 zpRg5>8Wj@aNf!As1cp6{m!oC2HweZ;+jgTqHPYy&DfI3RE@(xsA$W+R`Q#=# zC%wDLWupsVC;g-Yky=vhX#4;!^^HH2pRT_ndM)AI82K_@Btg^gu*wl(_JzOzIg22i8-(LEK#`DGyl&l9tAZ;U!|(;|E`IXQv`} z?>*6D^EqHxFded@H-}Gyu)4jelX^N?N1CxKN2bm~B%R!atcfg~)F$~FB*EXadOTx< z!h#P#!zw>Mj4y1*@5v?`B|{&hH|o~Q>g9V!l{x03){j8GKo3IVkdVMtc^?pVAXBj~ zY|A{Q@Q`%X)P9EfOqD3B(-cxmnZVIFKd2HqIrH$GHR}0H)q)EAS=XjSak7lvT!TgZ zkFVh=_)Z0T`QsYu-!OVO|L+d@1L6p$3<)H#+E^!c$PtV(>}o-%o&PqfPV=H8u%hWo zwQ(9*d%qHVI>IMDCjr7kI`+ztc>ysFr77kl4XSynu4s*pgoP_q+ox zwn8K$j1vEQZb>;>YKnNEHw@H9n5TR!@r~&h_D(J;1{d1+0rg2rep)+E;8 z{;yw0MqfYpCwZ7xAt*O4{C(n4{CPXCA|KO zGXq(*X(rJt&5<;!VDj7Z`>Z_0{nDljy|j^a>@lDi6&ibyNBsXn2F5zm?RaRZAeShI z8t@V7+y4tVBW?T(sIEZYk^}UJJWT81Cu!38{?pv;Ot~DwiNmY_j#B0%S3Zt=^4!E% zyKaHizxLV*U~H0pc{~*^wm$D^)tF^$J7tr~6gb@TvOM?Ah}?jWK-)$g=un5Ee}p<5 zAFwyEv5cG2E6?`LWGi}4x1?1%0)KBP#I)K_Q~$xMa(&={F9p6vpN86nJYEeh4HUki zn~v*YIiw{!T9k?K%s~_I6F!43hd=^`8;L_3^JUF#h5q$0YErC3EsgP z7J_2;Yt`@JkEO;fii&uI7>uuSw{&77>Btnr(QZ<{=l%NrEMIM3p5%LOl9AG}F=PG$ zMJTu%!f}E#9ldERqN^+$5x6nMhw$FzLNk@$Hf;XZ&Ukoham0P9@T$tI2jG<8DkgQN zXH1E4<;#h8*?HCrko)`-lz46;s9y$66zFQYpSuf~KVIHDZ+Z=h4CEyVK~Zj=67;=L zyHB?Hsmf(Vz+93}MdCe-a=64!9^RfZf8(rvbnl%aI#oiWsjsEX`!*Q+JDHOT=Ih)v zv~E~$H}>^Wu_R~UI{%<=MP~mrRuZ)<-gO&T<2?E$rj5Z+-_z@$fW3H5CLJLwT6gcC zaw)yn6+qh;B5J>=&d;g?Y^#(Bxto<>5&P$XMRk)8xhdTJENtT}INcMeB}tEW6UYOb z&aA*~o}y3}c$syy{%6Gm%F>As{%8-+j)o73DrGlJ_zLdi86_+fJqjDV@0`$yjgweB zT+gVT2#w?^yP!ho23E?8dlK>Wu6U}VUe zepfW7i?j3!6Jm8LOYUmm9^TR-wx8=VpUE5$Kb0IFI_`>oJL8l*Z|5lIU}v#?eWrTw zC=c$(3GP_l`49nPvJi#M3FdeYr0#@G74eRY*dUID@W_cC)gb?MSSt1%cm`1#M*E?Q zN3YX0gs2d0@OW>B8Jk+oGJ5?!!kisq?LP4Iq=eC9a=!kY<3>Bel*fmo8gno9ZqBbz zL*SED=-}}RD0w)Ka826Odi#kTexaRC!b)`W3r3De^H;BDoty=l%b--lF!Ynr%9)T6 z33PMS(kI;ggq&5qHJqTF4>EFERLYX5_Up@X%&z1WINR9`A?_n8AWYvXs#@TWZ;_#o z$SM>41f7;E=c8MULH484ay|?x=@ib_i&*)4k~S&atIJqKv94%01(Q*U6b;6l3s8lh zA|os|-XA1h#~e^MzT&QouCvS+Z&zl87%5^ctc5Txg}o}tx)9t+=~tm;uqd&LPQ**^ zXiQiflsXvbfSjaQP}BSPpwp|+>q26D^Ps;?#gNqRCc2Y~h3E=5hVfvFOxq^8=?YWD z8qsc3uhrq}Jp51jh9FAGI~^cTcXCV3LXqJ|THQSkMZH6<g;hPRxRHm1#KMP+5I~S5;(6UH)ZDlt3 zd_uohTBAMx%yKjUJi4?hV=UQxn<92C#1uG|GfQ#&?vZ5TX{@K9ANz`jb{4V!o&QWw zT`tHN@S#j6kqLb5ra}2s@!Fc{{={BtzrzkwZ;lt;Nesk*M|0l;<;&hcmw*eALW-el z$&lAFWErwfeK03;U>jGiwgU?EwBb8C4JxVxwq!<$T}t!W$6cpUc#}jM3x0nYG8VWyS&T-miv8Sq zRBE7TJB{izMxaI??3m``#F8$_JM;?}6`2MN&ytueLQ?gW7jpTdX7#?Go(h96lA5K6 zcx0t3XvTB9pH^=PEJ*4O2ifyteiS+@KQs=@y6Jk8B%p6F&|1leoe-Y8=^zHU{jN+9 zw4g6z>|TDUPYwB=kBq2%Q~#BY?sl$On!^F{^bRU{J2iwit>)75h0yyipibQ+_%XiQ z{n0{*NuYHXn6|0rLa2gduq~b-LjPirNRe&Ajx2J&d1j#H0`ejX_O|N0jh$XNYyLBk z+EPl-k97H!C(KR5&^UhhDWFgwLQqgSNUt3Tp zf}~&VdCTfK@DqL;NvvQ+#8A4yJxu+VO;l14JE3%5u+S67rNCV89lX0AG&RqPY>vA2 zWx(W7ZpCPM-vpg@j7yqmMbGi}&PUe6c>6ZolQOXOqF@6-iu5=oo(n@{PK}5u@Y-QZ zAu%PTy_ueehYexlIcwesrq@n zRUAiBCHdMP7VVR&=L^`Ij{%_L<{Gp)ay9Lv<5qQpy*>!-Awe60gQ2?DfFQR0p|VC) zJ3{eW5Q({O*~i#EI(NW9@V6bEaX+z=ayn6{s31|a`WBwp_KXrPM%Gq}|E!LMvB~MW z>lcF@wGRg%()u{oozz`cDaMJaW|GN#EWj|8g1wIYD#nD-20-zso&6D z@hr;Z9lZ6WPXA8y38?g)Nif<%^|w%>>)DEOtHR3K=PW&DHFO&50EiND`L&VjnDKzJ z06dd%emB~3`IunzIeJU2%^nee5&lP9$4F5Q>dNt1j-5qoc*AL{LfAXPxwAzQzwSBV zq9_27#paC5hFNF%UM8U%y|B&s(b`jQ!%814MyezL%}bc!$;q?vDVkTS z+3N{15dhjW2*|-E=)P>gBSid8hmDzt1x;;~oc76kO*fOC_KTT;A3C2rj}Cv&dz>l{ z^xe4Ft785vn8kpHSpYJ%*535f{1IRi0&I4YoT5dwpMf~y+!6=Zp;a_e9v zCNV{uqFES=DTDu>sY{Uk1}y2XiP^$owr{ zToesrAyQJY(A@6KY=2r{$rLq6jVG~X>8(sl(PPc*GcJc$fG+Wad@Iz#uY3)8E~&WV zaw~^*zZ{YfUu-v|5#lCBSpy(^5m+{kg&ZjT4y|dysVuScd zv@GZY(HpKXb7YKKlQ4QY2Ol|AGNo_p&2VjJZ)0x&*T~7TFn-@$9-^(^`Ag{HeU&)p zyvUQ5)%7zwSL@d;w6^`6sJ33J(tf$}{7@fQt$|`^fgA?Byk?l%(pVDMT!?6HMW|)} z%51#x_Y+ZMqMk^7L?4hi8Q+dB6&GGz!*?@`JcDo#kQ-a7zo%DhvFO;`18zMT+Wpti zX}{Q8NCQXbCl9Cn#_i33VYlF#^Km7z0vO~?PWVbrq2hh`1HRo6?E@K0djd(9SE;Fp zC}R?K2;KH2@SVZHnH5K%w$_CKC_XpzTE=j*5(qEVt^Nz>dim&n^1AEk=IN8*WeZZ2 z+!w+6hH2IJfSP)o#T?OBseAWRxAQjH@GjWG;GlBk*DZoO)!sVp@nY-vRVaojwaRmV z2#&{~+vLK5&*ukfU&ZcpX?plza)H>mbxmzN>!;h=*xddFHO1NIyfEd_x&3QKbgBry zpx|h!PW~PhD=!M)z;<^p99=-p2$ot99^L{y-EYNyS030FbnPCwk)Y?z);+ZKX6RzK zW1>d}uC^X&PR~DDwd%0O(oD5h`;I%`rI(KmwBBc7sAcvIeo+=krgU>;8;dxnLP4!-BEf{eU6%yKB@yCf1m4!cF{(wsMl*A$U(MC=%QV{%=Hl{ z!fpO9fCfeH2A@Ou3ORMs#q#;(P-73j=t_OhcYH26#rS*Yc(pBrv!Us`sR@+LK<-84 zGTKxzF^kk6=l}rUNiRGEp(PGoRw%arqd5Z$l3pc$#PiTx-dSEAR7w`~y%qQP?8|S@ z7E7o({BN}#bEKyOrQ!0P&N;hw!Bba`0m?QhFX+wYbW^a_(HpU*|JYQ|)r4FHm}(Lv zZU0=6k&YVkn2JyU&3ymQ&o(Rw;rs_8@jpK~@b^{M`7z1;9dOg|s#AQ*x!o;b6Q_-R zi&mBG@>yM~@awCSUtxyBR9=KdhGi1!7=sEHn-(*}3p>KU+6PFjs; z*yW$^;Z-SIqAQgGDS{Xk|M3mA5tLsmC3zj`t|wSNy3uL&JyqqZ21RJeG0#3T7eX6G z88uimayMiVYI}GVKZ}Uc^Rj&8^2tM%CikDMRlEvNwy(pbbtrdzQHcyD&sb?67qw4F8lIN^V*D{M(E6Q|MPRJ*@egQ@41M?liV|1 z;Kxf7CHkIy{1qzrt6MlCL*P9cQNYZ0n23Lw@SHsOe%6ou5PA#1}dLE@*9X0y< z(Sw!^W7bn#f;&vSYrTy-7CLslf`#XfA(fs1Z)a(ZI_j05!L&Yt)|@{TU~UND05%d) zrg}hZ-$Y5)Ek`vKLz;utw}~27CFqPuHi3yVoq~fo&71Obfhc&bm`q@7NV3|H6Mv_JP?3V+h|6D@6I& zY@xqOrq5g)5pdY_7eFZ}(bUlv&CXOm?ZwD-TuaFYanAdpgiA`7kcW>j=3EkxLJI+} zsx}rcI#~L883d+;cpv$?EA7<6x4koB4UDrYhge#geHxX1RpZHs;>R?I13ZOXmauxv z`QR4)EVGh8;%tZ`|57C>PodX~aqYKDlyNncDtQqbq?>f!n5 zW{1tfP_8lpr;?K0r5U_d_)SAxm^PAL7o5^Y>NszMT-~$}etxL1-f!^C!@>M%%374jg(x1W>hr|gzHkQbD!#Jy~4DEYOz(ZX`udDUS<)oY2JO|@|4ooEC0gf`K?g%=`5`(Xv~ zxwXQ#P90(06w^^Wz0n#;Ye_s8p})m8gr8^0#zcRfv4E&<+62-CT0|fG1?aYh_vtJd zn~atkb-zn!HG(pna))qLyg0*S#;U)7@Dzkdt#47r2yzE(UPqvqN>Q?CUO!Yn#y}wV ziK+3bxV<+Kshl&7?o-j#^KW|3y*K?1)8QqC)AfgDVvt~VbEGppP@fX2a>kQG`&pYL z-I)m|aIgnkxej990Q1zutF>Qanr?qz={qQgAU@qZF3zvaR;LyF(Bf!R$aD1g+2)t@ zSHfWcvAaHsMMGrWW^SDHE95A&b*;^|#Lu1SkH1aJdoN~@1x&s!yOuji?e}kZzw1;8 zSZ3ME2u;b-TlDXDF2e}MUTZuvMou4~GApvtaMAbKpxWNDxVP)fZvv_V4@!VPi;tI;DR0qca!W6*LS9V5^nEW) z`nMh}?{Gv@Hwk2yIFObw8^ohqIv)d5)`&~q!i7{4R0R_`&?}e-$Dt0}hpZFldXF?8 z4L%0?TDqBM!bm8Pcyd#LL0+3(H7Gbmqa)eieG&XFQkuExG$X(y~XE>|_Xg zFUw#8-7zMErKE9Yf~f~KHLy|2Qx@vc&p~B=8Qw)iCr$q416p-XJCzQ~hErK=%ysCP z2CZV0HN4VopQa7Dwnaj0Y=`x(1?lbNj6cTrIiL3ReRh(vjIUXyE3;by|5*___A?hC zsZru9v(=bbe$ZNS#r=)lwF*?Le`d6iNLKTt?ta&z^>G!DhT|~&U6ej@#${{SyH)r7 zi-Q>gd1smrb<5SV^shgHEgeTn^GE{V!5teiPkkwSTNS?sqB#?fE*CyuvR7l#i#vvv zE(_+^EJl;0obh2D)9p!qD7EXN5Tr&s?e1;8JgRaj^P_xXC(I&Z8&IbBE$JDc{Kn4c z;e)hg^EhY!pFHC0P4Ly*v^1YIX`wba@7KH}vHCHiCsxGDFXX*LjSZKvNk<-Sh8__4 zt@Cqbq^cOeiNbin2k*Y^+oHQuaJ! zpr4$1*Y&e0#hJpn`lWE*kVZ;6E>LW>*_NIY%9e-uztjVcy%ql^G58KF71WYvP^*nZspU7d~-cmWA*y4!c%x+U6~3=q!2(Rg^iT`g6xFv_`B5 z3%geD^YAc}4TjIwY#59$%~f?kd;S8V4cryNjllgPgsdEdG2&)y;f`KIIDlKkdQ2QAzv2;RXL{e z=tpJI{ln?Vtr5!EH=uxevFqB!N|)pjF&h@(wihB z$5hK<;&(I5&sVPkL$>$u&Wcl<@zqX@Jb1+&uU{NN!GMr#MlCO zrE2|3tu$E(M@(W-(6t|S9`*T_kEsa2{kIoI{2ct2zd4Gn$ z3b6XUob|ov%u^PL4AKni7D5D|~1Rs3`XrqnzqckC@+j#5v zaFNw{nu2**p^CQUd2&X3?as$EsuRB6^=_up@NESxA!<2TCpimUaEJitXV|K`0n=*2 z=|aSq){2`O8-+8w^^%0ffBB&Qra7m~q7-y&fGFU6K~gW$0=uS&@lWC&&NKi%a#t2|hK%0t z+^t7&J+l|&sq_{;N{qdLp=89{Ywt5Zj);Znre8^ABEa5^xdMmSGgT@r#is2Bz`2 zij21(zEcmbT1OD7(u{`D;$>NN7{oJ{--Sp>o41G^nsB=8D7=B81DA?AJ|__kp9^?j z<`Mcy+uSr zafBb0_c|5WlgZ-@@QCp~Xl!bmicn#fRD;^~HHRKP6#iUt_ZasfhNAA!L1p~4Dq=TH zUi(_=J@jEo29qSl+V@!2)qcw}@Z#a0gTj$SDA`GD>R0Y2Ip19n7p2kR&6eBoU2&>S zvk}Kojq@><04uQ03_=hvf0Oleh?V-{2OY;uO|C`X?M%9_sU;oSZ+a42N>OGf3%pfUk5l3+R!NX{UF$hP<71I$#5QvK3rEv!_BA zu2jh5eUJBLA74k&?Ij;8M{9LM{qed~04nDEid}oMm&dY%E+d)o;%?ea&8rXoGs5S? zu;~!mrX-2U(f9^ND&TlxnLkHv>& z$BQ1=w`mjsL^3>mSAyJBn+}oM<>)_+tQIwUoVT4L1vd7utr-vjzXOhhP}PJ;1nXXE z^rjd{e|x|Sy!W5R$dngKTb5od$(qI$gGHj7^*DAT9uJS+zV=PRs}-*s2R+eGgcyqq zYxR|Qt{9i(-BEV?=eDf5JK8v=?ieLpApVjF`Z5fxH_1b|S&e@dCm1fSZrpA(tA=}S zC$Y6nP$+)rj=G-L0}Iuq;O<_N#nwgfB^BByu^}3ed`yWB&0Dmp8E0Q#Y7N;J0qSVp zZ@I0-l~l7~ZksdCT3Nnp!CJ{^a@@+6w`LlD-Sq+YKu5u>GXJ>>8wh{Y>A7wQ+aQ(Rc#pHKXDq z{l>iyFL$IpL#dCBY=EqfrU{P%jh(bTP(J+;BI!rZS0o}J|2tyvu>s-TgXjlevTJqyvA6k@_kk`4CQ>0FrAWzh)UR8pXIgZb+dtabQh zxd@Q%`B&Ejtdj`~8IjEU2Sw2zWQn7~8v!~yZ+30#4}kP6XWx7EC4(j(OKvQ1m!hm^ zcSmU>M@cq@01Fs9A?s`~VBd7c@PP~=LcO<5gs0sH6gZJybkj0^Fr2B~(P}yU4tk%f zF_@=^msh5z2z&R|#PsLOFV|yIls0^YLM%(758nW>xJRMk(Jp5tmp^XfW&!Jc5b|NF z(j^je4QCFu66U=>GWgNz>5`s#_~Tu|{7`rMO7*FxRIx+t7FsoV){$T2=gVh#_;t{F z=RY3d;I@o%x90f!0kdR#x?92xxSIZwOw@@t71RD@9(u>B9dK1lHbEDgk(k^`8IF2; z{o`zW#dA3)EKEtAU8-y>HZeBW*u@{4_b;G4DRwKaHw05*MYG+Bp?zurZ2achZG|vc zY&Qh^C_qa&mi=~G6RXK8and_4*!NVqF?=Qi5PYgLz>00@D#cE2onacJ_>bX6agDCH z{{juFA^#@`E+X>)dKi6I@$l$?|L&gwam50c)Bhd+mMe0*FS8~yp02B@B~K3c|Kl>y z+63L;4WmO3HO?qT7yjjr9HT~_f_|XgKvNkT@ndqRh(V0}Rc#{LgjSBe6bnXMam)jZ zi$Mr+o#6EVkxJMeBes75uf_i`$j-Od@-aU7fO)gLiy`7PcR8O~vSi{LZqyp3-O|$9 zau#?e=0c-X)tFDP)35$wMNAaSjk-)`lX9x-|7!0&qoV4%bkRao1QY}WB$f&iL_ji< z3h^b0h~y}xf~1n1V-XZ2CjliYIU}*iMMgkCawu|NWit=o~?mpf3?e25W*W>Fm z?mgrE!C>s#d#%0Jnscu(=QE$V2uz9Z;P^Y;c+%~8Gh!cJ*f;4r3eme?j
$N8d!> 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 E2U}rMGynhq literal 0 HcmV?d00001 diff --git a/doc/images/vmf_measurement_point.jpg b/doc/images/vmf_measurement_point.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c9af518e541177924f80c21439da1ec98453f41e GIT binary patch literal 169223 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%0AK|CcB&b!=G01UY+d^;T;Nt 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 Date: Wed, 28 Jun 2023 22:45:34 +0800 Subject: [PATCH 50/62] update doxygen setting --- src/.doxygen => .doxygen | 280 +++++++++++++++------------ resources/images/OrcaSlicer_32px.png | Bin 0 -> 1433 bytes 2 files changed, 154 insertions(+), 126 deletions(-) rename src/.doxygen => .doxygen (94%) create mode 100644 resources/images/OrcaSlicer_32px.png diff --git a/src/.doxygen b/.doxygen similarity index 94% rename from src/.doxygen rename to .doxygen index f822282e40..fb8ae5f045 100644 --- a/src/.doxygen +++ b/.doxygen @@ -1,4 +1,4 @@ -# Doxyfile 1.9.5 +# Doxyfile 1.9.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. @@ -48,7 +48,7 @@ PROJECT_NAME = OrcaSlicer # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.5.0 +PROJECT_NUMBER = 1.6.3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -61,14 +61,14 @@ PROJECT_BRIEF = OrcaSlicer # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = D:/a/OrcaSlicer/OrcaSlicer/resources/images/BambuStudio.png +PROJECT_LOGO = ./resources/images/OrcaSlicer_32px.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = OrcaSlicer-doc +OUTPUT_DIRECTORY = ../ # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -86,7 +86,7 @@ CREATE_SUBDIRS = YES # level increment doubles the number of directories, resulting in 4096 # directories at level 8 which is the default and also the maximum value. The # sub-directories are organized in 2 levels, the first level always has a fixed -# numer of 16 directories. +# number of 16 directories. # Minimum value: 0, maximum value: 8, default value: 8. # This tag requires that the tag CREATE_SUBDIRS is set to YES. @@ -184,7 +184,7 @@ FULL_PATH_NAMES = YES # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. -STRIP_FROM_PATH = /Users/lijiang/lab/OrcaSlicer/ +STRIP_FROM_PATH = /Users/runner/work/OrcaSlicer/OrcaSlicer # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which @@ -193,7 +193,7 @@ STRIP_FROM_PATH = /Users/lijiang/lab/OrcaSlicer/ # specify the list of include paths that are normally passed to the compiler # using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = /Users/runner/work/OrcaSlicer/OrcaSlicer # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't @@ -363,6 +363,17 @@ MARKDOWN_SUPPORT = YES TOC_INCLUDE_HEADINGS = 5 +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = GITHUB + # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or @@ -379,7 +390,7 @@ AUTOLINK_SUPPORT = YES # diagrams that involve STL classes more complete and accurate. # The default value is: NO. -BUILTIN_STL_SUPPORT = NO +BUILTIN_STL_SUPPORT = YES # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. @@ -418,7 +429,7 @@ DISTRIBUTE_GROUP_DOC = NO # is disabled and one has to add nested compounds explicitly via \ingroup. # The default value is: NO. -GROUP_NESTED_COMPOUNDS = NO +GROUP_NESTED_COMPOUNDS = YES # Set the SUBGROUPING tag to YES to allow class member groups of the same type # (for instance a group of public functions) to be put as a subgroup of that @@ -487,6 +498,14 @@ LOOKUP_CACHE_SIZE = 6 NUM_PROC_THREADS = 0 +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- @@ -499,7 +518,7 @@ NUM_PROC_THREADS = 0 # normally produced when WARNINGS is set to YES. # The default value is: NO. -EXTRACT_ALL = NO +EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will # be included in the documentation. @@ -568,7 +587,8 @@ HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO @@ -714,26 +734,26 @@ STRICT_PROTO_MATCHING = NO # list. This list is created by putting \todo commands in the documentation. # The default value is: YES. -GENERATE_TODOLIST = YES +GENERATE_TODOLIST = NO # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test # list. This list is created by putting \test commands in the documentation. # The default value is: YES. -GENERATE_TESTLIST = YES +GENERATE_TESTLIST = NO # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug # list. This list is created by putting \bug commands in the documentation. # The default value is: YES. -GENERATE_BUGLIST = YES +GENERATE_BUGLIST = NO # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) # the deprecated list. This list is created by putting \deprecated commands in # the documentation. # The default value is: YES. -GENERATE_DEPRECATEDLIST= YES +GENERATE_DEPRECATEDLIST= NO # The ENABLED_SECTIONS tag can be used to enable conditional documentation # sections, marked by \if ... \endif and \cond @@ -859,11 +879,26 @@ WARN_IF_INCOMPLETE_DOC = YES WARN_NO_PARAMDOC = NO +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about +# undocumented enumeration values. If set to NO, doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS # then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but # at the end of the doxygen process doxygen will return with a non-zero status. -# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. # The default value is: NO. WARN_AS_ERROR = NO @@ -908,7 +943,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = . +INPUT = ./src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1031,9 +1066,6 @@ EXCLUDE_PATTERNS = # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # ANamespace::AClass, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* EXCLUDE_SYMBOLS = @@ -1219,46 +1251,6 @@ USE_HTAGS = YES VERBATIM_HEADERS = YES -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: -# http://clang.llvm.org/) for more accurate parsing at the cost of reduced -# performance. This can be particularly helpful with template rich C++ code for -# which doxygen's built-in parser lacks the necessary type information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS -# tag is set to YES then doxygen will add the directory of each input to the -# include path. -# The default value is: YES. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_ADD_INC_PATHS = YES - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -# If clang assisted parsing is enabled you can provide the clang parser with the -# path to the directory containing a file called compile_commands.json. This -# file is the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the -# options used when the source files were built. This is equivalent to -# specifying the -p option to a clang tool, such as clang-check. These options -# will then be passed to the parser. Any options specified with CLANG_OPTIONS -# will be added as well. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. - -CLANG_DATABASE_PATH = - #--------------------------------------------------------------------------- # Configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -1270,10 +1262,11 @@ CLANG_DATABASE_PATH = ALPHABETICAL_INDEX = YES -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = @@ -1293,7 +1286,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = html +HTML_OUTPUT = OrcaSlicer_Dev_Document # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -1352,7 +1345,12 @@ HTML_STYLESHEET = # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @@ -1368,17 +1366,13 @@ HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output -# should be rendered with a dark or light theme. Default setting AUTO_LIGHT -# enables light output unless the user preference is dark output. Other options -# are DARK to always use dark mode, LIGHT to always use light mode, AUTO_DARK to -# default to dark mode unless the user prefers light mode, and TOGGLE to let the -# user toggle between dark and light mode via a button. -# Possible values are: LIGHT Always generate light output., DARK Always generate -# dark output., AUTO_LIGHT Automatically set the mode according to the user -# preference, use light mode if no preference is set (the default)., AUTO_DARK -# Automatically set the mode according to the user preference, use dark mode if -# no preference is set. and TOGGLE Allow to user to switch between light and -# dark mode via a button.. +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generate light mode output, DARK always +# generate dark mode output, AUTO_LIGHT automatically set the mode according to +# the user preference, use light mode if no preference is set (the default), +# AUTO_DARK automatically set the mode according to the user preference, use +# dark mode if no preference is set and TOGGLE allow to user to switch between +# light and dark mode via a button. # The default value is: AUTO_LIGHT. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1414,15 +1408,6 @@ HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will @@ -1440,7 +1425,7 @@ HTML_DYNAMIC_MENUS = YES # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_DYNAMIC_SECTIONS = NO +HTML_DYNAMIC_SECTIONS = YES # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand @@ -1468,7 +1453,7 @@ HTML_INDEX_NUM_ENTRIES = 100 # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_DOCSET = NO +GENERATE_DOCSET = YES # This tag determines the name of the docset feed. A documentation feed provides # an umbrella under which multiple documentation sets from a single provider @@ -1572,6 +1557,16 @@ BINARY_TOC = NO TOC_EXPAND = NO +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help @@ -1736,7 +1731,7 @@ OBFUSCATE_EMAILS = YES # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FORMULA_FORMAT = png +HTML_FORMULA_FORMAT = svg # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful @@ -2060,9 +2055,16 @@ PDF_HYPERLINKS = YES USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode -# command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. +# The LATEX_BATCHMODE tag ignals the behavior of LaTeX in case of an error. +# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch +# mode nothing is printed on the terminal, errors are scrolled as if is +# hit at every error; missing files that TeX tries to input or request from +# keyboard input (\read on a not open input stream) cause the job to abort, +# NON_STOP In nonstop mode the diagnostic message will appear on the terminal, +# but there is no possibility of user interaction just like in batch mode, +# SCROLL In scroll mode, TeX will stop only for missing files to input or if +# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at +# each error, asking for user intervention. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. @@ -2083,14 +2085,6 @@ LATEX_HIDE_INDICES = NO LATEX_BIB_STYLE = plain -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_TIMESTAMP = NO - # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) # path from which the emoji images will be read. If a relative path is entered, # it will be relative to the LATEX_OUTPUT directory. If left blank the @@ -2256,7 +2250,7 @@ DOCBOOK_OUTPUT = docbook #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. # The default value is: NO. @@ -2267,6 +2261,28 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to Sqlite3 output #--------------------------------------------------------------------------- +# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3 +# database with symbols found by doxygen stored in tables. +# The default value is: NO. + +GENERATE_SQLITE3 = NO + +# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be +# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put +# in front of it. +# The default directory is: sqlite3. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_OUTPUT = sqlite3 + +# The SQLITE3_OVERWRITE_DB tag is set to YES, the existing doxygen_sqlite3.db +# database file will be recreated with each doxygen run. If set to NO, doxygen +# will warn if an a database file is already found and not modify it. +# The default value is: YES. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_RECREATE_DB = YES + #--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- @@ -2322,7 +2338,7 @@ ENABLE_PREPROCESSING = YES # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -MACRO_EXPANSION = NO +MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then # the macro expansion is limited to the macros specified with the PREDEFINED and @@ -2330,7 +2346,7 @@ MACRO_EXPANSION = NO # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -EXPAND_ONLY_PREDEF = NO +EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES, the include files in the # INCLUDE_PATH will be searched if a #include is found. @@ -2431,16 +2447,9 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to diagram generator tools #--------------------------------------------------------------------------- -# You can include diagrams made with dia in doxygen documentation. Doxygen will -# then run dia to produce the diagram and insert it in the documentation. The -# DIA_PATH tag allows you to specify the directory where the dia binary resides. -# If left empty dia is assumed to be found in the default search path. - -DIA_PATH = - # If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. # The default value is: YES. @@ -2449,7 +2458,7 @@ HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is # set to NO # The default value is: NO. @@ -2502,13 +2511,15 @@ DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a -# graph for each documented class showing the direct and indirect inheritance -# relations. In case HAVE_DOT is set as well dot will be used to draw the graph, -# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set -# to TEXT the direct and indirect inheritance relations will be shown as texts / -# links. -# Possible values are: NO, YES, TEXT and GRAPH. +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will +# generate a graph for each documented class showing the direct and indirect +# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and +# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case +# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the +# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used. +# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance +# relations will be shown as texts / links. +# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN. # The default value is: YES. CLASS_GRAPH = YES @@ -2579,7 +2590,7 @@ DOT_WRAP_THRESHOLD = 17 # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -TEMPLATE_RELATIONS = NO +TEMPLATE_RELATIONS = YES # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to # YES then doxygen will generate a graph for each documented file showing the @@ -2649,7 +2660,7 @@ DIR_GRAPH_MAX_DEPTH = 1 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: -# http://www.graphviz.org/)). +# https://www.graphviz.org/)). # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order # to make the SVG files visible in IE 9+ (other browsers do not have this # requirement). @@ -2686,11 +2697,12 @@ DOT_PATH = DOTFILE_DIRS = -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the \mscfile -# command). +# You can include diagrams made with dia in doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. -MSCFILE_DIRS = +DIA_PATH = # The DIAFILE_DIRS tag can be used to specify one or more directories that # contain dia files that are included in the documentation (see the \diafile @@ -2738,7 +2750,7 @@ DOT_GRAPH_MAX_NODES = 50 # Minimum value: 0, maximum value: 1000, default value: 0. # This tag requires that the tag HAVE_DOT is set to YES. -MAX_DOT_GRAPH_DEPTH = 4 +MAX_DOT_GRAPH_DEPTH = 5 # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This @@ -2767,3 +2779,19 @@ GENERATE_LEGEND = YES # The default value is: YES. DOT_CLEANUP = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will +# use a built-in version of mscgen tool to produce the charts. Alternatively, +# the MSCGEN_TOOL tag can also specify the name an external tool. For instance, +# specifying prog as the value, doxygen will call the tool as prog -T +# -o . The external tool should support +# output file formats "png", "eps", "svg", and "ismap". + +MSCGEN_TOOL = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = diff --git a/resources/images/OrcaSlicer_32px.png b/resources/images/OrcaSlicer_32px.png new file mode 100644 index 0000000000000000000000000000000000000000..424fd4f63a11f524a6e88fd2485508c373e98d43 GIT binary patch literal 1433 zcmV;K1!nq*P)(Uiz!A6h6sWbiqsaRi)jO;rNnl-SR&BUE!pn6+uiHKbarQE@2tM@ z;3S(lnatkrobP=1J9mh4jyriV+~MnvCm@R+`g}fHPEO9#9DF+wydcUUkVK3?AR;0H zKmdpcAYz<|I1zCWIDtSw97MAqj1Z?zkH^ynAZErQvj&EShTM`Y9VVhOb#-6?7DNDq zF{z7Xhyk3B%F!(=?^<~+Qwt>7#tsov!PV+?fTRO7#K!kTF(dY%J#PQLySrPqWMFuB zcqfzD*ILE;>di4YFgQ4XzTRF0CMFP#Md5TR@Or(d+)#z0q9OwmDq#e0JmYe?_6rjj z8M$Qrh{aO+nVg(7{4F;(7wgxTV{B{;Lqivl zNF;Fd$PWkvCh%#?XNLAAKqW#AsM;na**g&2?gG61&b#=0-xu(Dy~1iYZhQ<~Cr{(! zy`SLa`i3L}ilU&t{uMA{DZQx0DWs{>EJ6-$6A8@YDa413O>j6I2Jpp;7o(|pFBC<= z`1lz1G=2n0lHhbY(b&|CdrM2x1j>j>mOj9UF{`cS_m3kK3KTDrd}SA@S@iOw?B6uO&HXIClnIzXkPe1!bNEDF-7%9En7d z;AE;Io}Gn2?IuL>?^dmR`UbkL`c2g9n9ayQnwzP=yu3VX@U5E=UH}INmiY$J_vKe< zYa~s~G65#4UQK4rntRf~6Il!3ZWUY#N3i_xF}Qku!|=t6$=>UAkdXn+Ek#T`@@OR_ zNiu*>)K(|K9sa8*-rou5SO5SJ49;lt(x?MuZUNULIA;iEyVm>i~EPBAKgEyXg9`0;A+S}R?iG+pVg@uK9bJuRHUAIoydu_c~ zEH+|!B=h-vJC?6l{*A~&K|nAV#L2D`7#tYDty{OiB!)syAs%{oEy~NwVY6jrJjM|S zVv^xPi19g)rAWeqCz9;@9&Sb zwzfVsJvIHaKuI{@)AQ1l74--=&41f)Q1mhgzNSkY> n4ZScd0mL}x2}_Ls{nzn7p_;3!Quzp?00000NkvXXu0mjfag>!c literal 0 HcmV?d00001 From f6c5369e760aee5a4c6d2d7129dbb8803cda2e7c Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:00:53 +0800 Subject: [PATCH 51/62] fix OCCT build on Mac when build_release_macos.sh --- deps/OCCT/OCCT.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/OCCT/OCCT.cmake b/deps/OCCT/OCCT.cmake index 2943a3cbbd..6a15292ece 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/OCCT/OCCT.cmake @@ -8,7 +8,7 @@ bambustudio_add_cmake_project(OCCT URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_0.zip URL_HASH SHA256=28334f0e98f1b1629799783e9b4d21e05349d89e695809d7e6dfa45ea43e1dbc #PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch - PATCH_COMMAND git apply --directory deps/build/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch + PATCH_COMMAND git apply --directory ${CMAKE_BINARY_DIR}/dep_OCCT-prefix/src/dep_OCCT --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch #DEPENDS dep_Boost #DEPENDS dep_FREETYPE CMAKE_ARGS From 1318051bc3a2c89c6c8986507c94671842712793 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Fri, 30 Jun 2023 20:17:58 +0800 Subject: [PATCH 52/62] update gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index da7a18c3a9..656e9bc261 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,5 @@ deps/build-linux/* install_* build_*/ SVG -src/OrcaSlicer-doc/ \ No newline at end of file +src/OrcaSlicer-doc/ +.idea/ \ No newline at end of file From 85882c3dde69c6e5dd895aee4e84f6e1c6d5f5d6 Mon Sep 17 00:00:00 2001 From: Carlos Caruncho Date: Fri, 30 Jun 2023 16:46:21 +0200 Subject: [PATCH 53/62] Update OrcaSlicer_es.po (#1443) --- bbl/i18n/es/OrcaSlicer_es.po | 317 ++++++++++++++++++++--------------- 1 file changed, 183 insertions(+), 134 deletions(-) diff --git a/bbl/i18n/es/OrcaSlicer_es.po b/bbl/i18n/es/OrcaSlicer_es.po index 9a931361a0..422e82332a 100644 --- a/bbl/i18n/es/OrcaSlicer_es.po +++ b/bbl/i18n/es/OrcaSlicer_es.po @@ -20,7 +20,7 @@ msgid "Section view" msgstr "Vista de la sección" msgid "Reset direction" -msgstr "" +msgstr "Reiniciar dirección" msgid "Ctrl + Mouse wheel" msgstr "Ctrl + Rueda del ratón" @@ -53,13 +53,13 @@ msgid "Highlight overhang areas" msgstr "Resaltar las zonas de voladizos" msgid "Gap fill" -msgstr "" +msgstr "Rellenar hueco" msgid "Perform" msgstr "Realizar" msgid "Gap area" -msgstr "" +msgstr "Rellenar área" msgid "Tool type" msgstr "Tipo de herramienta" @@ -68,7 +68,7 @@ msgid "Smart fill angle" msgstr "Ángulo de relleno inteligente" msgid "On overhangs only" -msgstr "" +msgstr "Solo voladizos" msgid "Auto support threshold angle: " msgstr "Ángulo del umbral de soporte automático: " @@ -83,11 +83,11 @@ msgid "Fill" msgstr "Llenar" msgid "Gap Fill" -msgstr "" +msgstr "Rellenar hueco" #, boost-format msgid "Allows painting only on facets selected by: \"%1%\"" -msgstr "" +msgstr "Permite pintar solo las facetas seleccionadas por: \"%1%\"" msgid "Highlight faces according to overhang angle." msgstr "Resalte las caras según el ángulo del voladizo." @@ -150,7 +150,7 @@ msgid "Ctrl + Shift + Enter" msgstr "" msgid "Toggle Wireframe" -msgstr "" +msgstr "Alternar soporte" msgid "Shortcut Key " msgstr "Tecla de acceso directo " @@ -248,70 +248,70 @@ msgid "uniform scale" msgstr "Escala uniforme" msgid "Left click" -msgstr "" +msgstr "Click izquierdo" msgid "Add connector" -msgstr "" +msgstr "Añadir conector" msgid "Right click" -msgstr "" +msgstr "Click derecho" msgid "Remove connector" -msgstr "" +msgstr "Borrar conector" msgid "Drag" -msgstr "" +msgstr "Soltar" msgid "Move connector" -msgstr "" +msgstr "Mover conector" msgid "Add connector to selection" -msgstr "" +msgstr "Añadir conector a la selección" msgid "Remove connector from selection" -msgstr "" +msgstr "Borrar conector de la selección" msgid "Select all connectors" -msgstr "" +msgstr "Seleccionar todos los conectores" msgid "Cut" msgstr "Cortar" msgid "Connector" -msgstr "" +msgstr "Conector" msgid "Movement:" msgstr "Movimiento:" msgid "Movement" -msgstr "" +msgstr "Movimiento" msgid "Height" -msgstr "" +msgstr "Altura" msgid "Edit connectors" -msgstr "" +msgstr "Editar conectores" msgid "Add connectors" -msgstr "" +msgstr "Añadir conectores" msgid "Upper part" -msgstr "" +msgstr "Parte alta" msgid "Lower part" -msgstr "" +msgstr "Parte baja" msgid "Keep" -msgstr "" +msgstr "Mantener" msgid "Place on cut" -msgstr "" +msgstr "Colocar en la posición de corte" msgid "Flip" -msgstr "" +msgstr "Girar" msgid "After cut" -msgstr "" +msgstr "Después del corte" msgid "Cut to parts" msgstr "Cortar por partes" @@ -326,7 +326,7 @@ msgid "Reset" msgstr "Reiniciar" msgid "Connectors" -msgstr "" +msgstr "conectores" msgid "Type" msgstr "Tipo" @@ -338,25 +338,25 @@ msgid "Shape" msgstr "Forma" msgid "Depth ratio" -msgstr "" +msgstr "Relación de profundidad" msgid "Remove connectors" -msgstr "" +msgstr "Borrar conectores" msgid "Prizm" -msgstr "" +msgstr "Prisma" msgid "Frustum" -msgstr "" +msgstr "Tronco de cono" msgid "Square" -msgstr "" +msgstr "Cuadrado" msgid "Hexagon" -msgstr "" +msgstr "Hexágono" msgid "Confirm connectors" -msgstr "" +msgstr "Confirmar conectores" msgid "Cancel" msgstr "Cancelar" @@ -365,30 +365,31 @@ msgid "Warning" msgstr "Peligro" msgid "Invalid connectors detected" -msgstr "" +msgstr "Conectores inválidos detectados" msgid "connector is out of cut contour" -msgstr "" +msgstr "el conector está fuera del contorno de corte" msgid "connectors are out of cut contour" -msgstr "" +msgstr "los conectores están fuera del contorno de corte" msgid "connector is out of object" -msgstr "" +msgstr "el conector está fuera del objeto" msgid "connectors is out of object" -msgstr "" +msgstr "los conectores están fuera del objeto" msgid "Some connectors are overlapped" -msgstr "" +msgstr "Algunos conectores están solapados" msgid "" "Invalid state. \n" "No one part is selected for keep after cut" msgstr "" +"Niguna parte seleccionada para mantener después del corte msgid "Plug" -msgstr "" +msgstr "Conectar" msgid "Dowel" msgstr "" @@ -829,10 +830,10 @@ msgid "3DBenchy" msgstr "" msgid "Autodesk FDM Test" -msgstr "" +msgstr "Prueba Autodesk FDM" msgid "Voron Cube" -msgstr "" +msgstr "Cubo de Vorón" msgid "Cube" msgstr "Cubo" @@ -844,7 +845,7 @@ msgid "Cone" msgstr "Cono" msgid "Height range Modifier" -msgstr "" +msgstr "Modificador de rango de altura" msgid "Add settings" msgstr "Añadir ajustes" @@ -1029,7 +1030,7 @@ msgid "auto rotate current plate" msgstr "Auto rotación de la placa actual" msgid "Delete Plate" -msgstr "" +msgstr "Borrar Cama" msgid "Remove the selected plate" msgstr "Retirar la placa seleccionada" @@ -1038,13 +1039,13 @@ msgid "Clone" msgstr "Clonar" msgid "Simplify Model" -msgstr "" +msgstr "Simplificar Modelo" msgid "Center" -msgstr "" +msgstr "Centrar" msgid "Edit Process Settings" -msgstr "" +msgstr "Editar Ajustes de Procesado" msgid "Edit print parameters for a single object" msgstr "Editar los parámetros de impresión de un solo objeto" @@ -1292,7 +1293,7 @@ msgid "to" msgstr "a" msgid "Remove height range" -msgstr "" +msgstr "Borrar rango de altura" msgid "Add height range" msgstr "" @@ -1735,7 +1736,7 @@ msgid "Quick" msgstr "" msgid "Importing SLA archive" -msgstr "" +msgstr "Importando archivo SLA" msgid "" "The SLA archive doesn't contain any presets. Please activate some SLA " @@ -1743,10 +1744,10 @@ msgid "" msgstr "" msgid "Importing canceled." -msgstr "" +msgstr "Importación cancelada." msgid "Importing done." -msgstr "" +msgstr "Importación realizada." msgid "" "The imported SLA archive did not contain any presets. The current SLA " @@ -3876,13 +3877,13 @@ msgid "ERROR" msgstr "" msgid "CANCELED" -msgstr "" +msgstr "CANCELADO" msgid "COMPLETED" -msgstr "" +msgstr "COMPLETADO" msgid "Cancel upload" -msgstr "" +msgstr "carga cancelada" msgid "Slice ok." msgstr "Rebanado correcto." @@ -4893,7 +4894,7 @@ msgid "Offline" msgstr "Fuera de línea" msgid "(LAN)" -msgstr "" +msgstr "(Red local)" msgid "My Device" msgstr "Mi dispositivo" @@ -4905,7 +4906,7 @@ msgid "Input access code" msgstr "Introducir el código de acceso" msgid "Can't find my devices?" -msgstr "" +msgstr "No puedo encontrar mis dispositivos?" msgid "Log out successful." msgstr "Cierre de sesión con éxito." @@ -4951,7 +4952,7 @@ msgstr "" "Finalización del tiempo de sincronización de la información del dispositivo" msgid "Cannot send the print job when the printer is updating firmware" -msgstr "" +msgstr "No es posible enviar el trabajo cuando la impresora está actualizando el firmware" msgid "" "The printer is executing instructions. Please restart printing after it ends" @@ -4967,11 +4968,16 @@ msgid "" "Filament %s exceeds the number of AMS slots. Please update the printer " "firmware to support AMS slot assignment." msgstr "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" +"impresora para que soporte la asignación de ranuras AMS." + msgid "" "Filament exceeds the number of AMS slots. Please update the printer firmware " "to support AMS slot assignment." msgstr "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" +"impresora para que soporte la asignación de ranuras AMS." msgid "" "Filaments to AMS slots mappings have been established. You can click a " @@ -4992,49 +4998,59 @@ msgid "" "Filament %s does not match the filament in AMS slot %s. Please update the " "printer firmware to support AMS slot assignment." msgstr "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" +"impresora para que soporte la asignación de ranuras AMS." msgid "" "Filament does not match the filament in AMS slot. Please update the printer " "firmware to support AMS slot assignment." msgstr "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" +"impresora para que soporte la asignación de ranuras AMS." msgid "" "The printer firmware only supports sequential mapping of filament => AMS " "slot." msgstr "" +"El firmware de la impresora solo soporta el mapeo secuencial de filamento => ranura " +"AMS." msgid "An SD card needs to be inserted before printing." -msgstr "" +msgstr "Es necesario introducir una tarjeta SD antes de imprimir." msgid "An SD card needs to be inserted to record timelapse." -msgstr "" +msgstr "Es necesario insertar una tarjeta SD para guardar el intervalo de tiempo." + msgid "" "Cannot send the print job to a printer whose firmware is required to get " "updated." -msgstr "" +msgstr "No es posible enviar el trabajo de impresión a una impresora la cual necesita una actualización de firmware" msgid "Cannot send the print job for empty plate" -msgstr "" +msgstr "No es posible enviar el trabajo de impresión a una cama vacía" msgid "This printer does not support printing all plates" -msgstr "" +msgstr "Esta impresora no soporta la impresión en todas las camas." msgid "Errors" -msgstr "" +msgstr "Errores" msgid "Please check the following:" -msgstr "" +msgstr "Por favor compruebe lo siguiente:" msgid "" "The printer type selected when generating G-Code is not consistent with the " "currently selected printer. It is recommended that you use the same printer " "type for slicing." msgstr "" +"El tipo de impresora seleccionado cuando se genera el G-Code no tiene consistencia " +"con la impresora seleccionada actualmente. Es recomendable que use el mismo tipo de impresora " +"para rebanar." #, c-format, boost-format msgid "%s is not supported by AMS." -msgstr "" +msgstr "%s no está soportado por el AMS." msgid "" "There are some unknown filaments in the AMS mappings. Please check whether " @@ -5053,7 +5069,7 @@ msgid "Modifying the device name" msgstr "Modificar el nombre del dispositivo" msgid "Send to Printer SD card" -msgstr "" +msgstr "Enviar a la tarjeta SD de la impresora" msgid "Cannot send the print task when the upgrade is in progress" msgstr "" @@ -5061,13 +5077,13 @@ msgstr "" "curso" msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "" +msgstr "Es necesario insertar una tarjeta SD antes de enviar a la tarjeta SD de la impresora." msgid "The printer is required to be in the same LAN as Orca Slicer." -msgstr "" +msgstr "Es necesaria que la impresora esté en la misma red local que Orca Slicer." msgid "The printer does not support sending to printer SD card." -msgstr "" +msgstr "La impresora no soporta el envio directo a la tarjeta SD." msgid "Log in printer" msgstr "Iniciar sesión en la impresora" @@ -5104,38 +5120,51 @@ msgid "Delete this preset" msgstr "Borra este ajuste" msgid "Search in preset" -msgstr "" +msgstr "Buscar en los ajustes por defecto" msgid "Click to reset all settings to the last saved preset." -msgstr "" +msgstr "Presionar para reiniciar todos los ajustes a los últimos ajustes por defecto." msgid "" "Prime tower is required for smooth timeplase. There may be flaws on the " "model without prime tower. Are you sure you want to disable prime tower?" msgstr "" +"Es necesario imprimir una torre de purga para un intervalo de tiempo fino. Pueden aparecer imperfecciones +"en el modelo si se desactiva la torre de purga. ¿Está seguro de desactivar la torre de purga? msgid "" "Prime tower is required for smooth timelapse. There may be flaws on the " "model without prime tower. Do you want to enable prime tower?" msgstr "" +"Es necesario imprimir una torre de purga para un intervalo de tiempo fino. Pueden aparecer imperfecciones +"en el modelo si se desactiva la torre de purga. ¿Está seguro de activar la torre de purga? msgid "" "We have added an experimental style \"Tree Slim\" that features smaller " "support volume but weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" +"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta volumenes de soporte" +"más pequeños con menos fuerza.\n" +"Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 muros." msgid "" "Change these settings automatically? \n" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" +"Cambiar estos ajustes automaticamente? \n" +"Sí - Cambiar estos ajustes automaticamente\n" +"No - No cambiar estos ajustes" msgid "" "For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " "settings: at least 2 interface layers, at least 0.1mm top z distance or " "using support materials on interface." msgstr "" +"Para \"Árboles fuertes\" y \"Árboles Híbridos\", recomendamos lo siguiente " +"ajustes: al menos 2 capas de interfaz, al menos 0.1mm de distancia superior en z o " +"usar materiales de soporte en la interfaz" msgid "" "When using support material for the support interface, We recommend the " @@ -5143,6 +5172,8 @@ msgid "" "0 top z distance, 0 interface spacing, concentric pattern and disable " "independent support layer height" msgstr "" +"Cuando se user material de soporte para las interfaces de soporte, recomendamos " +"los siguientes ajustes:\n" msgid "" "When recording timelapse without toolhead, it is recommended to add a " @@ -5150,6 +5181,8 @@ msgid "" "by right-click the empty position of build plate and choose \"Add " "Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" +"Cuando grabamos intervalos de tiempo sin cabezal de impresión, es recomendable añadir un " +"\"Torre de Purga de Intervalo\" \n" msgid "Line width" msgstr "Ancho de línea" @@ -5161,7 +5194,7 @@ msgid "Precision" msgstr "Precisión" msgid "Wall generator" -msgstr "" +msgstr "Generador de paredes" msgid "Walls" msgstr "Paredes" @@ -5195,10 +5228,10 @@ msgid "Acceleration" msgstr "Aceleración" msgid "Jerk(XY)" -msgstr "" +msgstr "Sacudida(XY)" msgid "Raft" -msgstr "" +msgstr "Base de impresión" msgid "Support filament" msgstr "Filamento de soporte" @@ -5210,10 +5243,10 @@ msgid "Special mode" msgstr "Modo especial" msgid "G-code output" -msgstr "" +msgstr "G-code de salida" msgid "Post-processing Scripts" -msgstr "" +msgstr "Script de Post-procesado" msgid "Frequent" msgstr "Frecuente" @@ -5357,13 +5390,13 @@ msgid "Printable space" msgstr "Espacio imprimible" msgid "Cooling Fan" -msgstr "" +msgstr "Ventilador de enfriamento" msgid "Fan speed-up time" -msgstr "" +msgstr "Tiempo de aumento de velocidad del ventilador" msgid "Extruder Clearance" -msgstr "" +msgstr "Margen del extrusor" msgid "Accessory" msgstr "Accesorio" @@ -5420,7 +5453,7 @@ msgid "" msgstr "" msgid "Firmware Retraction" -msgstr "" +msgstr "Retracción de firmware" msgid "Detached" msgstr "Separado" @@ -5541,12 +5574,18 @@ msgid "" "Would you like to keep these changed settings (new value) after switching " "preset?" msgstr "" +"Has modificado algunos ajustes del perfil \"%1%\". \n" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar " +"de perfil?" msgid "" "You have changed some preset settings. \n" "Would you like to keep these changed settings (new value) after switching " "preset?" msgstr "" +"Has cambiado algunos ajustes de perfil. \n" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar " +"de perfil?" msgid "Extruders count" msgstr "Contador de extrusores" @@ -5558,13 +5597,13 @@ msgid "Capabilities" msgstr "Capacidades" msgid "Select presets to compare" -msgstr "" +msgstr "Seleccionar perfiles para comparar" msgid "Show all presets (including incompatible)" -msgstr "" +msgstr "Mostrar todos los perfiles (incluyendo los compatibles)" msgid "Add File" -msgstr "" +msgstr "Añadir archivo" msgid "Set as cover" msgstr "Ajustar como cubierta" @@ -5589,7 +5628,7 @@ msgid "Assembly Guide" msgstr "Guía de montaje" msgid "Author" -msgstr "" +msgstr "Autor" msgid "Model Name" msgstr "Nombre del modelo" @@ -5647,18 +5686,18 @@ msgid "Flushing volumes for filament change" msgstr "Volúmenes de limpieza para el cambio de filamentos" msgid "Multiplier" -msgstr "" +msgstr "Multiplicador" msgid "Flushing volume (mm³) for each filament pair." msgstr "Volumen de limpieza (mm³) para cada par de filamentos." #, c-format, boost-format msgid "Suggestion: Flushing Volume in range [%d, %d]" -msgstr "" +msgstr "Sugerencias: " #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." -msgstr "" +msgstr "El multiplicador debería estar en el rango [%.2f, %.2f]." msgid "unloaded" msgstr "descargado" @@ -5692,7 +5731,7 @@ msgid "Objects list" msgstr "Lista de objetos" msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" -msgstr "" +msgstr "Importar datos de geometría de los archivos STL/STEP/3MF/OBJ/AMF" msgid "⌘+Shift+G" msgstr "" @@ -5707,7 +5746,7 @@ msgid "Paste from clipboard" msgstr "Pegar desde el portapapeles" msgid "Show/Hide 3Dconnexion devices settings dialog" -msgstr "" +msgstr "Mostrar/Ocultar el diálogo de ajustes de los dispositivos 3Dconnexion" msgid "Show keyboard shortcuts list" msgstr "Muestra lista de atajos de teclado" @@ -5716,16 +5755,16 @@ msgid "Global shortcuts" msgstr "Atajos globales" msgid "Rotate View" -msgstr "" +msgstr "Rotar Vista" msgid "Pan View" -msgstr "" +msgstr "Vista Panorámica" msgid "Mouse wheel" -msgstr "" +msgstr "Rueda de ratón" msgid "Zoom View" -msgstr "" +msgstr "Vista de Zoom" msgid "Shift+A" msgstr "" @@ -5755,13 +5794,13 @@ msgid "Movement in camera space" msgstr "Movimiento en el espacio de la cámara" msgid "⌥+Left mouse button" -msgstr "" +msgstr "Botón de ratón ⌥+Left" msgid "Select a part" -msgstr "" +msgstr "Seleccionar una parte" msgid "⌘+Left mouse button" -msgstr "" +msgstr "⌘+botón izquierdo de ratón" msgid "Select multiple objects" msgstr "Seleccionar varios objetos" @@ -5770,13 +5809,13 @@ msgid "Ctrl+Any arrow" msgstr "Ctrl+Cualquier flecha" msgid "Alt+Left mouse button" -msgstr "" +msgstr "Alt+Botón izquierdo de ratón" msgid "Ctrl+Left mouse button" -msgstr "" +msgstr "Ctrl+Botón izquierdo de ratón" msgid "Shift+Left mouse button" -msgstr "" +msgstr "Shift+Left+Botón izquierdo de ratón" msgid "Select objects by rectangle" msgstr "Seleccionar objetos por rectángulo" @@ -5842,22 +5881,22 @@ msgid "Select all objects" msgstr "Seleccionar todos los objetos" msgid "Gizmo move" -msgstr "" +msgstr "Movimiento Gizmo" msgid "Gizmo scale" -msgstr "" +msgstr "Escala Gizmo" msgid "Gizmo rotate" -msgstr "" +msgstr "Rotación Gizmo" msgid "Gizmo cut" -msgstr "" +msgstr "Corte Gizmo" msgid "Gizmo Place face on bed" -msgstr "" +msgstr "Situar cara en cama en modo Gizmo" msgid "Gizmo SLA support points" -msgstr "" +msgstr "Puntos de soporte SLA Gizmo" msgid "Gizmo FDM paint-on seam" msgstr "" @@ -5940,108 +5979,117 @@ msgid "Move slider 5x faster" msgstr "Mover el deslizador 5 veces más rápido" msgid "Shift+Mouse wheel" -msgstr "" +msgstr "Shit+Rueda de ratón" msgid "Release Note" -msgstr "" +msgstr "Notas de lanzamiento" #, c-format, boost-format msgid "version %s update information :" -msgstr "" +msgstr "información de actualización de la versión %s" msgid "Network plug-in update" -msgstr "" +msgstr "Actualizar plug-in de red" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." -msgstr "" +msgstr "Click en Aceptar para actualizar el plug-in de red cuando Orca Slicer vuelva a iniciarse." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" -msgstr "" +msgstr "Un nuevo plug-in de red(%s) está disponible. ¿Desea instalarlo?" msgid "New version of Orca Slicer" msgstr "Nueva versión de Orca Slicer" msgid "Don't remind me of this version again" -msgstr "" +msgstr "No volver a recordarme está versión otra vez" msgid "Done" -msgstr "" +msgstr "Hecho" msgid "LAN Connection Failed (Sending print file)" -msgstr "" +msgstr "Conexión de red fallida (Mandando archivo de impresión)" msgid "" "Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "" +msgstr "Paso 1, por favor confirmar que Orca Slicer y tu impresora se encuentran en la misma red local." msgid "" "Step 2, if the IP and Access Code below are different from the actual values " "on your printer, please correct them." -msgstr "" +msgstr "Paso 2, si la IP y el Código de Acceso de abajo son diferentes de los valores actuales " +"de tu impresora, por favor corríjalos. msgid "IP" msgstr "" msgid "Access Code" -msgstr "" +msgstr "Código de Acceso" msgid "Where to find your printer's IP and Access Code?" -msgstr "" +msgstr "¿Dónde encontrar la IP de su impresora y el Código de Acceso?" msgid "Error: IP or Access Code are not correct" -msgstr "" +msgstr "Error: la IP o el Código de Acceso no son correctos" msgid "Model:" -msgstr "" +msgstr "Modelo:" msgid "Serial:" -msgstr "" +msgstr "Número de serie:" msgid "Version:" -msgstr "" +msgstr "Versión" msgid "Update firmware" -msgstr "" +msgstr "Actualizar firmware" msgid "Printing" -msgstr "" +msgstr "Imprimendo" msgid "Idle" -msgstr "" +msgstr "Inactivo" msgid "Latest version" -msgstr "" +msgstr "Última versión" msgid "Updating" -msgstr "" +msgstr "Actualizando" msgid "Updating failed" -msgstr "" +msgstr "Fallo Actualizando" msgid "Updating successful" -msgstr "" +msgstr "Actualización exitosa" msgid "" "Are you sure you want to update? This will take about 10 minutes. Do not " "turn off the power while the printer is updating." msgstr "" +"¿Estás seguro que deseas actualizar? Esto puede llevar sobre 10 minutos. No " +"desconecte la alimentación mientras la impresora está actualizando. msgid "" "An important update was detected and needs to be run before printing can " "continue. Do you want to update now? You can also update later from 'Upgrade " "firmware'." msgstr "" +"Una actualización importante fue detectada y necesita ejecutarse antes de que " +la impresión continue. ¿Quieres actualizar ahora? Puede actualizar despues desde " +"'Actualizar firmware'." msgid "" "The firmware version is abnormal. Repairing and updating are required before " "printing. Do you want to update now? You can also update later on printer or " "update next time starting the studio." msgstr "" +"La versión de firmware es anormal. Es necesario reparar y actualizar antes de " +"imprimir. ¿Quieres actualizar ahora? Puedes actualizar al iniciar en el siguiente " +"arranque de la impresora o cuando arranque Orca Slicer." msgid "Extension Board" -msgstr "" +msgstr "Placa de ampliación" msgid "Saving objects into the 3mf failed." msgstr "El guardado de objetos en el 3mf no ha funcionado." @@ -6287,6 +6335,7 @@ msgstr "La llamada de recuperación de la escritura ha fallado" msgid "" "%1% is too close to exclusion area, there may be collisions when printing." msgstr "" +"%1% está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." #, boost-format msgid "%1% is too close to others, and collisions may be caused." @@ -6297,10 +6346,10 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% es demasiado alto, y se producirán colisiones." msgid " is too close to others, there may be collisions when printing." -msgstr "" +msgstr " está muy cerca de otros, puede conllevar colisiones cuando se imprime" msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" +msgstr " está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." msgid "Prime Tower" msgstr "Torre principal" From b47777e73eb3c83003eedeb97fe632b10017818f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 6 Jul 2023 00:01:06 +0800 Subject: [PATCH 54/62] optimize gcode generation --- src/libslic3r/GCode.cpp | 25 +------------------------ src/libslic3r/GCodeWriter.cpp | 7 +++---- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 6d1ce40f2c..85f08d3e2f 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3642,14 +3642,6 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou gcode += m_writer.extrude_to_xy(this->point_to_gcode(pt), 0,"move inwards before travel",true); } - //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. - if (!this->on_first_layer()) { - // reset acceleration - if (m_config.default_acceleration.value > 0) - gcode += m_writer.set_acceleration((unsigned int)(m_config.default_acceleration.value + 0.5)); - if (m_config.default_jerk.value > 0) - gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); - } return gcode; } @@ -3673,14 +3665,7 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string } m_wipe.path.reverse(); } - //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. - if (!this->on_first_layer()) { - // reset acceleration - if (m_config.default_acceleration.value > 0) - gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); - if(m_config.default_jerk.value > 0) - gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); - } + return gcode; } @@ -3705,15 +3690,7 @@ std::string GCode::extrude_path(ExtrusionPath path, std::string description, dou m_wipe.path = std::move(path.polyline); m_wipe.path.reverse(); } - //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. - if (!this->on_first_layer()){ - // reset acceleration - if (m_config.default_acceleration.value > 0) - gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); - if(m_config.default_jerk.value > 0) - gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); - } return gcode; } diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 0b78ce96ae..e52b413b4b 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -177,14 +177,13 @@ std::string GCodeWriter::set_acceleration(unsigned int acceleration) // Use M204 P, we don't want to override travel acc by M204 S (which is deprecated anyway). gcode << "M204 P" << acceleration; } else if (FLAVOR_IS(gcfKlipper) && this->config.accel_to_decel_enable) { - gcode << "SET_VELOCITY_LIMIT ACCEL_TO_DECEL=" << acceleration * this->config.accel_to_decel_factor / 100; + gcode << "SET_VELOCITY_LIMIT ACCEL=" << acceleration + << " ACCEL_TO_DECEL=" << acceleration * this->config.accel_to_decel_factor / 100; if (GCodeWriter::full_gcode_comment) gcode << " ; adjust ACCEL_TO_DECEL"; - gcode << "\nM204 S" << acceleration; - // Set max accel to decel to half of acceleration } else gcode << "M204 S" << acceleration; - + //BBS if (GCodeWriter::full_gcode_comment) gcode << " ; adjust acceleration"; gcode << "\n"; From c3c6bbc4e55ed12c7aa72ed3dc71cc3b9561e184 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 6 Jul 2023 21:08:39 +0800 Subject: [PATCH 55/62] Port PrusaSlicer `staggered_inner_seams` --- src/libslic3r/GCode/SeamPlacer.cpp | 2518 +++++++++++++------------ src/libslic3r/GCode/SeamPlacer.hpp | 194 +- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/PrintConfig.cpp | 6 + src/libslic3r/PrintConfig.hpp | 1 + src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/Tab.cpp | 1 + 7 files changed, 1469 insertions(+), 1255 deletions(-) diff --git a/src/libslic3r/GCode/SeamPlacer.cpp b/src/libslic3r/GCode/SeamPlacer.cpp index 4b89930635..cf5b9c5080 100644 --- a/src/libslic3r/GCode/SeamPlacer.cpp +++ b/src/libslic3r/GCode/SeamPlacer.cpp @@ -1,5 +1,7 @@ #include "SeamPlacer.hpp" +#include "Polygon.hpp" +#include "PrintConfig.hpp" #include "tbb/parallel_for.h" #include "tbb/blocked_range.h" #include "tbb/parallel_reduce.h" @@ -33,957 +35,1059 @@ namespace Slic3r { namespace SeamPlacerImpl { -// ************ FOR BACKPORT COMPATIBILITY ONLY *************** -// Color mapping of a value into RGB false colors. -inline Vec3f value_to_rgbf(float minimum, float maximum, float value) -{ - float ratio = 2.0f * (value - minimum) / (maximum - minimum); - float b = std::max(0.0f, (1.0f - ratio)); - float r = std::max(0.0f, (ratio - 1.0f)); - float g = 1.0f - b - r; - return Vec3f{r, g, b}; +template int sgn(T val) { + return int(T(0) < val) - int(val < T(0)); } -// Color mapping of a value into RGB false colors. -inline Vec3i value_to_rgbi(float minimum, float maximum, float value) { return (value_to_rgbf(minimum, maximum, value) * 255).cast(); } -// *************************** - -template int sgn(T val) { return int(T(0) < val) - int(val < T(0)); } - // base function: ((e^(((1)/(x^(2)+1)))-1)/(e-1)) // checkout e.g. here: https://www.geogebra.org/calculator -float gauss(float value, float mean_x_coord, float mean_value, float falloff_speed) -{ - float shifted = value - mean_x_coord; - float denominator = falloff_speed * shifted * shifted + 1.0f; - float exponent = 1.0f / denominator; - return mean_value * (std::exp(exponent) - 1.0f) / (std::exp(1.0f) - 1.0f); +float gauss(float value, float mean_x_coord, float mean_value, float falloff_speed) { + float shifted = value - mean_x_coord; + float denominator = falloff_speed * shifted * shifted + 1.0f; + float exponent = 1.0f / denominator; + return mean_value * (std::exp(exponent) - 1.0f) / (std::exp(1.0f) - 1.0f); } -float compute_angle_penalty(float ccw_angle) -{ - // This function is used: - // ((ℯ^(((1)/(x^(2)*3+1)))-1)/(ℯ-1))*1+((1)/(2+ℯ^(-x))) - // looks scary, but it is gaussian combined with sigmoid, - // so that concave points have much smaller penalty over convex ones - // https://github.com/prusa3d/PrusaSlicer/tree/master/doc/seam_placement/corner_penalty_function.png - return gauss(ccw_angle, 0.0f, 1.0f, 3.0f) + 1.0f / (2 + std::exp(-ccw_angle)); +float compute_angle_penalty(float ccw_angle) { + // This function is used: + // ((ℯ^(((1)/(x^(2)*3+1)))-1)/(ℯ-1))*1+((1)/(2+ℯ^(-x))) + // looks scary, but it is gaussian combined with sigmoid, + // so that concave points have much smaller penalty over convex ones + // https://github.com/prusa3d/PrusaSlicer/tree/master/doc/seam_placement/corner_penalty_function.png + return gauss(ccw_angle, 0.0f, 1.0f, 3.0f) + + 1.0f / (2 + std::exp(-ccw_angle)); } /// Coordinate frame -class Frame -{ +class Frame { public: - Frame() - { - mX = Vec3f(1, 0, 0); - mY = Vec3f(0, 1, 0); - mZ = Vec3f(0, 0, 1); - } + Frame() { + mX = Vec3f(1, 0, 0); + mY = Vec3f(0, 1, 0); + mZ = Vec3f(0, 0, 1); + } - Frame(const Vec3f &x, const Vec3f &y, const Vec3f &z) : mX(x), mY(y), mZ(z) {} + Frame(const Vec3f &x, const Vec3f &y, const Vec3f &z) : + mX(x), mY(y), mZ(z) { + } - void set_from_z(const Vec3f &z) - { - mZ = z.normalized(); - Vec3f tmpZ = mZ; - Vec3f tmpX = (std::abs(tmpZ.x()) > 0.99f) ? Vec3f(0, 1, 0) : Vec3f(1, 0, 0); - mY = (tmpZ.cross(tmpX)).normalized(); - mX = mY.cross(tmpZ); - } + void set_from_z(const Vec3f &z) { + mZ = z.normalized(); + Vec3f tmpZ = mZ; + Vec3f tmpX = (std::abs(tmpZ.x()) > 0.99f) ? Vec3f(0, 1, 0) : Vec3f(1, 0, 0); + mY = (tmpZ.cross(tmpX)).normalized(); + mX = mY.cross(tmpZ); + } - Vec3f to_world(const Vec3f &a) const { return a.x() * mX + a.y() * mY + a.z() * mZ; } + Vec3f to_world(const Vec3f &a) const { + return a.x() * mX + a.y() * mY + a.z() * mZ; + } - Vec3f to_local(const Vec3f &a) const { return Vec3f(mX.dot(a), mY.dot(a), mZ.dot(a)); } + Vec3f to_local(const Vec3f &a) const { + return Vec3f(mX.dot(a), mY.dot(a), mZ.dot(a)); + } - const Vec3f &binormal() const { return mX; } + const Vec3f& binormal() const { + return mX; + } - const Vec3f &tangent() const { return mY; } + const Vec3f& tangent() const { + return mY; + } - const Vec3f &normal() const { return mZ; } + const Vec3f& normal() const { + return mZ; + } private: - Vec3f mX, mY, mZ; + Vec3f mX, mY, mZ; }; -Vec3f sample_sphere_uniform(const Vec2f &samples) -{ - float term1 = 2.0f * float(PI) * samples.x(); - float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); - return {cos(term1) * term2, sin(term1) * term2, 1.0f - 2.0f * samples.y()}; +Vec3f sample_sphere_uniform(const Vec2f &samples) { + float term1 = 2.0f * float(PI) * samples.x(); + float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); + return {cos(term1) * term2, sin(term1) * term2, + 1.0f - 2.0f * samples.y()}; } -Vec3f sample_hemisphere_uniform(const Vec2f &samples) -{ - float term1 = 2.0f * float(PI) * samples.x(); - float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); - return {cos(term1) * term2, sin(term1) * term2, abs(1.0f - 2.0f * samples.y())}; +Vec3f sample_hemisphere_uniform(const Vec2f &samples) { + float term1 = 2.0f * float(PI) * samples.x(); + float term2 = 2.0f * sqrt(samples.y() - samples.y() * samples.y()); + return {cos(term1) * term2, sin(term1) * term2, + abs(1.0f - 2.0f * samples.y())}; } -Vec3f sample_power_cosine_hemisphere(const Vec2f &samples, float power) -{ - float term1 = 2.f * float(PI) * samples.x(); - float term2 = pow(samples.y(), 1.f / (power + 1.f)); - float term3 = sqrt(1.f - term2 * term2); +Vec3f sample_power_cosine_hemisphere(const Vec2f &samples, float power) { + float term1 = 2.f * float(PI) * samples.x(); + float term2 = pow(samples.y(), 1.f / (power + 1.f)); + float term3 = sqrt(1.f - term2 * term2); - return Vec3f(cos(term1) * term3, sin(term1) * term3, term2); + return Vec3f(cos(term1) * term3, sin(term1) * term3, term2); } std::vector raycast_visibility(const AABBTreeIndirect::Tree<3, float> &raycasting_tree, - const indexed_triangle_set & triangles, - const TriangleSetSamples & samples, - size_t negative_volumes_start_index) -{ - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() << " triangles: end"; + const indexed_triangle_set &triangles, + const TriangleSetSamples &samples, + size_t negative_volumes_start_index) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() + << " triangles: end"; - // prepare uniform samples of a hemisphere - float step_size = 1.0f / SeamPlacer::sqr_rays_per_sample_point; - std::vector precomputed_sample_directions(SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); - for (size_t x_idx = 0; x_idx < SeamPlacer::sqr_rays_per_sample_point; ++x_idx) { - float sample_x = x_idx * step_size + step_size / 2.0; - for (size_t y_idx = 0; y_idx < SeamPlacer::sqr_rays_per_sample_point; ++y_idx) { - size_t dir_index = x_idx * SeamPlacer::sqr_rays_per_sample_point + y_idx; - float sample_y = y_idx * step_size + step_size / 2.0; - precomputed_sample_directions[dir_index] = sample_hemisphere_uniform({sample_x, sample_y}); - } + //prepare uniform samples of a hemisphere + float step_size = 1.0f / SeamPlacer::sqr_rays_per_sample_point; + std::vector precomputed_sample_directions( + SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); + for (size_t x_idx = 0; x_idx < SeamPlacer::sqr_rays_per_sample_point; ++x_idx) { + float sample_x = x_idx * step_size + step_size / 2.0; + for (size_t y_idx = 0; y_idx < SeamPlacer::sqr_rays_per_sample_point; ++y_idx) { + size_t dir_index = x_idx * SeamPlacer::sqr_rays_per_sample_point + y_idx; + float sample_y = y_idx * step_size + step_size / 2.0; + precomputed_sample_directions[dir_index] = sample_hemisphere_uniform( { sample_x, sample_y }); } + } - bool model_contains_negative_parts = negative_volumes_start_index < triangles.indices.size(); + bool model_contains_negative_parts = negative_volumes_start_index < triangles.indices.size(); - std::vector result(samples.positions.size()); - tbb::parallel_for(tbb::blocked_range(0, result.size()), [&triangles, &precomputed_sample_directions, model_contains_negative_parts, negative_volumes_start_index, - &raycasting_tree, &result, &samples](tbb::blocked_range r) { - // Maintaining hits memory outside of the loop, so it does not have to be reallocated for each query. - std::vector hits; - for (size_t s_idx = r.begin(); s_idx < r.end(); ++s_idx) { - result[s_idx] = 1.0f; - constexpr float decrease_step = 1.0f / (SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); + std::vector result(samples.positions.size()); + tbb::parallel_for(tbb::blocked_range(0, result.size()), + [&triangles, &precomputed_sample_directions, model_contains_negative_parts, negative_volumes_start_index, + &raycasting_tree, &result, &samples](tbb::blocked_range r) { + // Maintaining hits memory outside of the loop, so it does not have to be reallocated for each query. + std::vector hits; + for (size_t s_idx = r.begin(); s_idx < r.end(); ++s_idx) { + result[s_idx] = 1.0f; + constexpr float decrease_step = 1.0f + / (SeamPlacer::sqr_rays_per_sample_point * SeamPlacer::sqr_rays_per_sample_point); - const Vec3f ¢er = samples.positions[s_idx]; - const Vec3f &normal = samples.normals[s_idx]; - // apply the local direction via Frame struct - the local_dir is with respect to +Z being forward - Frame f; - f.set_from_z(normal); + const Vec3f ¢er = samples.positions[s_idx]; + const Vec3f &normal = samples.normals[s_idx]; + // apply the local direction via Frame struct - the local_dir is with respect to +Z being forward + Frame f; + f.set_from_z(normal); - for (const auto &dir : precomputed_sample_directions) { - Vec3f final_ray_dir = (f.to_world(dir)); - if (!model_contains_negative_parts) { - igl::Hit hitpoint; - // FIXME: This AABBTTreeIndirect query will not compile for float ray origin and - // direction. - Vec3d final_ray_dir_d = final_ray_dir.cast(); - Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. - bool hit = AABBTreeIndirect::intersect_ray_first_hit(triangles.vertices, triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hitpoint); - if (hit && its_face_normal(triangles, hitpoint.id).dot(final_ray_dir) <= 0) { result[s_idx] -= decrease_step; } - } else { // TODO improve logic for order based boolean operations - consider order of volumes - bool casting_from_negative_volume = samples.triangle_indices[s_idx] >= negative_volumes_start_index; - - Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. - if (casting_from_negative_volume) { // if casting from negative volume face, invert direction, change start pos - final_ray_dir = -1.0 * final_ray_dir; - ray_origin_d = (center - normal * 0.01f).cast(); - } - Vec3d final_ray_dir_d = final_ray_dir.cast(); - bool some_hit = AABBTreeIndirect::intersect_ray_all_hits(triangles.vertices, triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hits); - if (some_hit) { - int counter = 0; - // NOTE: iterating in reverse, from the last hit for one simple reason: We know the state of the ray at that point; - // It cannot be inside model, and it cannot be inside negative volume - for (int hit_index = int(hits.size()) - 1; hit_index >= 0; --hit_index) { - Vec3f face_normal = its_face_normal(triangles, hits[hit_index].id); - if (hits[hit_index].id >= int(negative_volumes_start_index)) { // negative volume hit - counter -= sgn(face_normal.dot(final_ray_dir)); // if volume face aligns with ray dir, we are leaving negative space - // which in reverse hit analysis means, that we are entering negative space :) and vice versa - } else { - counter += sgn(face_normal.dot(final_ray_dir)); + for (const auto &dir : precomputed_sample_directions) { + Vec3f final_ray_dir = (f.to_world(dir)); + if (!model_contains_negative_parts) { + igl::Hit hitpoint; + // FIXME: This AABBTTreeIndirect query will not compile for float ray origin and + // direction. + Vec3d final_ray_dir_d = final_ray_dir.cast(); + Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. + bool hit = AABBTreeIndirect::intersect_ray_first_hit(triangles.vertices, + triangles.indices, raycasting_tree, ray_origin_d, final_ray_dir_d, hitpoint); + if (hit && its_face_normal(triangles, hitpoint.id).dot(final_ray_dir) <= 0) { + result[s_idx] -= decrease_step; } + } else { //TODO improve logic for order based boolean operations - consider order of volumes + bool casting_from_negative_volume = samples.triangle_indices[s_idx] + >= negative_volumes_start_index; + + Vec3d ray_origin_d = (center + normal * 0.01f).cast(); // start above surface. + if (casting_from_negative_volume) { // if casting from negative volume face, invert direction, change start pos + final_ray_dir = -1.0 * final_ray_dir; + ray_origin_d = (center - normal * 0.01f).cast(); + } + Vec3d final_ray_dir_d = final_ray_dir.cast(); + bool some_hit = AABBTreeIndirect::intersect_ray_all_hits(triangles.vertices, + triangles.indices, raycasting_tree, + ray_origin_d, final_ray_dir_d, hits); + if (some_hit) { + int counter = 0; + // NOTE: iterating in reverse, from the last hit for one simple reason: We know the state of the ray at that point; + // It cannot be inside model, and it cannot be inside negative volume + for (int hit_index = int(hits.size()) - 1; hit_index >= 0; --hit_index) { + Vec3f face_normal = its_face_normal(triangles, hits[hit_index].id); + if (hits[hit_index].id >= int(negative_volumes_start_index)) { //negative volume hit + counter -= sgn(face_normal.dot(final_ray_dir)); // if volume face aligns with ray dir, we are leaving negative space + // which in reverse hit analysis means, that we are entering negative space :) and vice versa + } else { + counter += sgn(face_normal.dot(final_ray_dir)); + } + } + if (counter == 0) { + result[s_idx] -= decrease_step; + } + } + } } - if (counter == 0) { result[s_idx] -= decrease_step; } - } - } - } - } - }); + } + }); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() << " triangles: end"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: raycast visibility of " << samples.positions.size() << " samples over " << triangles.indices.size() + << " triangles: end"; - return result; + return result; } -std::vector calculate_polygon_angles_at_vertices(const Polygon &polygon, const std::vector &lengths, float min_arm_length) -{ - std::vector result(polygon.size()); +std::vector calculate_polygon_angles_at_vertices(const Polygon &polygon, const std::vector &lengths, + float min_arm_length) { + std::vector result(polygon.size()); - if (polygon.size() == 1) { result[0] = 0.0f; } + if (polygon.size() == 1) { + result[0] = 0.0f; + } - size_t idx_prev = 0; - size_t idx_curr = 0; - size_t idx_next = 0; + size_t idx_prev = 0; + size_t idx_curr = 0; + size_t idx_next = 0; - float distance_to_prev = 0; - float distance_to_next = 0; + float distance_to_prev = 0; + float distance_to_next = 0; - // push idx_prev far enough back as initialization - while (distance_to_prev < min_arm_length) { - idx_prev = Slic3r::prev_idx_modulo(idx_prev, polygon.size()); - distance_to_prev += lengths[idx_prev]; + //push idx_prev far enough back as initialization + while (distance_to_prev < min_arm_length) { + idx_prev = Slic3r::prev_idx_modulo(idx_prev, polygon.size()); + distance_to_prev += lengths[idx_prev]; + } + + for (size_t _i = 0; _i < polygon.size(); ++_i) { + // pull idx_prev to current as much as possible, while respecting the min_arm_length + while (distance_to_prev - lengths[idx_prev] > min_arm_length) { + distance_to_prev -= lengths[idx_prev]; + idx_prev = Slic3r::next_idx_modulo(idx_prev, polygon.size()); } - for (size_t _i = 0; _i < polygon.size(); ++_i) { - // pull idx_prev to current as much as possible, while respecting the min_arm_length - while (distance_to_prev - lengths[idx_prev] > min_arm_length) { - distance_to_prev -= lengths[idx_prev]; - idx_prev = Slic3r::next_idx_modulo(idx_prev, polygon.size()); - } - - // push idx_next forward as far as needed - while (distance_to_next < min_arm_length) { - distance_to_next += lengths[idx_next]; - idx_next = Slic3r::next_idx_modulo(idx_next, polygon.size()); - } - - // Calculate angle between idx_prev, idx_curr, idx_next. - const Point &p0 = polygon.points[idx_prev]; - const Point &p1 = polygon.points[idx_curr]; - const Point &p2 = polygon.points[idx_next]; - result[idx_curr] = float(angle(p1 - p0, p2 - p1)); - - // increase idx_curr by one - float curr_distance = lengths[idx_curr]; - idx_curr++; - distance_to_prev += curr_distance; - distance_to_next -= curr_distance; + //push idx_next forward as far as needed + while (distance_to_next < min_arm_length) { + distance_to_next += lengths[idx_next]; + idx_next = Slic3r::next_idx_modulo(idx_next, polygon.size()); } - return result; + // Calculate angle between idx_prev, idx_curr, idx_next. + const Point &p0 = polygon.points[idx_prev]; + const Point &p1 = polygon.points[idx_curr]; + const Point &p2 = polygon.points[idx_next]; + result[idx_curr] = float(angle(p1 - p0, p2 - p1)); + + // increase idx_curr by one + float curr_distance = lengths[idx_curr]; + idx_curr++; + distance_to_prev += curr_distance; + distance_to_next -= curr_distance; + } + + return result; } -struct CoordinateFunctor -{ - const std::vector *coordinates; - CoordinateFunctor(const std::vector *coords) : coordinates(coords) {} - CoordinateFunctor() : coordinates(nullptr) {} +struct CoordinateFunctor { + const std::vector *coordinates; + CoordinateFunctor(const std::vector *coords) : + coordinates(coords) { + } + CoordinateFunctor() : + coordinates(nullptr) { + } - const float &operator()(size_t idx, size_t dim) const { return coordinates->operator[](idx)[dim]; } + const float& operator()(size_t idx, size_t dim) const { + return coordinates->operator [](idx)[dim]; + } }; // structure to store global information about the model - occlusion hits, enforcers, blockers -struct GlobalModelInfo -{ - TriangleSetSamples mesh_samples; - std::vector mesh_samples_visibility; - CoordinateFunctor mesh_samples_coordinate_functor; - KDTreeIndirect<3, float, CoordinateFunctor> mesh_samples_tree{CoordinateFunctor{}}; - float mesh_samples_radius; +struct GlobalModelInfo { + TriangleSetSamples mesh_samples; + std::vector mesh_samples_visibility; + CoordinateFunctor mesh_samples_coordinate_functor; + KDTreeIndirect<3, float, CoordinateFunctor> mesh_samples_tree { CoordinateFunctor { } }; + float mesh_samples_radius; - indexed_triangle_set enforcers; - indexed_triangle_set blockers; - AABBTreeIndirect::Tree<3, float> enforcers_tree; - AABBTreeIndirect::Tree<3, float> blockers_tree; + indexed_triangle_set enforcers; + indexed_triangle_set blockers; + AABBTreeIndirect::Tree<3, float> enforcers_tree; + AABBTreeIndirect::Tree<3, float> blockers_tree; - bool is_enforced(const Vec3f &position, float radius) const - { - if (enforcers.empty()) { return false; } - float radius_sqr = radius * radius; - return AABBTreeIndirect::is_any_triangle_in_radius(enforcers.vertices, enforcers.indices, enforcers_tree, position, radius_sqr); + bool is_enforced(const Vec3f &position, float radius) const { + if (enforcers.empty()) { + return false; + } + float radius_sqr = radius * radius; + return AABBTreeIndirect::is_any_triangle_in_radius(enforcers.vertices, enforcers.indices, + enforcers_tree, position, radius_sqr); + } + + bool is_blocked(const Vec3f &position, float radius) const { + if (blockers.empty()) { + return false; + } + float radius_sqr = radius * radius; + return AABBTreeIndirect::is_any_triangle_in_radius(blockers.vertices, blockers.indices, + blockers_tree, position, radius_sqr); + } + + float calculate_point_visibility(const Vec3f &position) const { + std::vector points = find_nearby_points(mesh_samples_tree, position, mesh_samples_radius); + if (points.empty()) { + return 1.0f; } - bool is_blocked(const Vec3f &position, float radius) const - { - if (blockers.empty()) { return false; } - float radius_sqr = radius * radius; - return AABBTreeIndirect::is_any_triangle_in_radius(blockers.vertices, blockers.indices, blockers_tree, position, radius_sqr); + auto compute_dist_to_plane = [](const Vec3f &position, const Vec3f &plane_origin, const Vec3f &plane_normal) { + Vec3f orig_to_point = position - plane_origin; + return std::abs(orig_to_point.dot(plane_normal)); + }; + + float total_weight = 0; + float total_visibility = 0; + for (size_t i = 0; i < points.size(); ++i) { + size_t sample_idx = points[i]; + + Vec3f sample_point = this->mesh_samples.positions[sample_idx]; + Vec3f sample_normal = this->mesh_samples.normals[sample_idx]; + + float weight = mesh_samples_radius - compute_dist_to_plane(position, sample_point, sample_normal); + weight += (mesh_samples_radius - (position - sample_point).norm()); + total_visibility += weight * mesh_samples_visibility[sample_idx]; + total_weight += weight; } - float calculate_point_visibility(const Vec3f &position) const - { - std::vector points = find_nearby_points(mesh_samples_tree, position, mesh_samples_radius); - if (points.empty()) { return 1.0f; } + return total_visibility / total_weight; - auto compute_dist_to_plane = [](const Vec3f &position, const Vec3f &plane_origin, const Vec3f &plane_normal) { - Vec3f orig_to_point = position - plane_origin; - return std::abs(orig_to_point.dot(plane_normal)); - }; - - float total_weight = 0; - float total_visibility = 0; - for (size_t i = 0; i < points.size(); ++i) { - size_t sample_idx = points[i]; - - Vec3f sample_point = this->mesh_samples.positions[sample_idx]; - Vec3f sample_normal = this->mesh_samples.normals[sample_idx]; - - float weight = mesh_samples_radius - compute_dist_to_plane(position, sample_point, sample_normal); - weight += (mesh_samples_radius - (position - sample_point).norm()); - total_visibility += weight * mesh_samples_visibility[sample_idx]; - total_weight += weight; - } - - return total_visibility / total_weight; - } + } #ifdef DEBUG_FILES - void debug_export(const indexed_triangle_set &obj_mesh) const + void debug_export(const indexed_triangle_set &obj_mesh) const { + + indexed_triangle_set divided_mesh = obj_mesh; + Slic3r::CNumericLocalesSetter locales_setter; + { - indexed_triangle_set divided_mesh = obj_mesh; - Slic3r::CNumericLocalesSetter locales_setter; + auto filename = debug_out_path("visiblity.obj"); + FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); + if (fp == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << filename << " for writing"; + return; + } - { - auto filename = debug_out_path("visiblity.obj"); - FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << filename << " for writing"; - return; - } - - for (size_t i = 0; i < divided_mesh.vertices.size(); ++i) { - float visibility = calculate_point_visibility(divided_mesh.vertices[i]); - Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); - fprintf(fp, "v %f %f %f %f %f %f\n", divided_mesh.vertices[i](0), divided_mesh.vertices[i](1), divided_mesh.vertices[i](2), color(0), color(1), color(2)); - } - for (size_t i = 0; i < divided_mesh.indices.size(); ++i) - fprintf(fp, "f %d %d %d\n", divided_mesh.indices[i][0] + 1, divided_mesh.indices[i][1] + 1, divided_mesh.indices[i][2] + 1); - fclose(fp); - } - - { - auto filename = debug_out_path("visiblity_samples.obj"); - FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); - if (fp == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << filename << " for writing"; - return; - } - - for (size_t i = 0; i < mesh_samples.positions.size(); ++i) { - float visibility = mesh_samples_visibility[i]; - Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); - fprintf(fp, "v %f %f %f %f %f %f\n", mesh_samples.positions[i](0), mesh_samples.positions[i](1), mesh_samples.positions[i](2), color(0), color(1), color(2)); - } - fclose(fp); - } + for (size_t i = 0; i < divided_mesh.vertices.size(); ++i) { + float visibility = calculate_point_visibility(divided_mesh.vertices[i]); + Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); + fprintf(fp, "v %f %f %f %f %f %f\n", + divided_mesh.vertices[i](0), divided_mesh.vertices[i](1), divided_mesh.vertices[i](2), + color(0), color(1), color(2)); + } + for (size_t i = 0; i < divided_mesh.indices.size(); ++i) + fprintf(fp, "f %d %d %d\n", divided_mesh.indices[i][0] + 1, divided_mesh.indices[i][1] + 1, + divided_mesh.indices[i][2] + 1); + fclose(fp); } + + { + auto filename = debug_out_path("visiblity_samples.obj"); + FILE *fp = boost::nowide::fopen(filename.c_str(), "w"); + if (fp == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << filename << " for writing"; + return; + } + + for (size_t i = 0; i < mesh_samples.positions.size(); ++i) { + float visibility = mesh_samples_visibility[i]; + Vec3f color = value_to_rgbf(0.0f, 1.0f, visibility); + fprintf(fp, "v %f %f %f %f %f %f\n", + mesh_samples.positions[i](0), mesh_samples.positions[i](1), mesh_samples.positions[i](2), + color(0), color(1), color(2)); + } + fclose(fp); + } + + } #endif -}; +} +; -// Extract perimeter polygons of the given layer -Polygons extract_perimeter_polygons(const Layer *layer, const SeamPosition configured_seam_preference, std::vector &corresponding_regions_out) -{ - Polygons polygons; - for (const LayerRegion *layer_region : layer->regions()) { - for (const ExtrusionEntity *ex_entity : layer_region->perimeters.entities) { - if (ex_entity->is_collection()) { // collection of inner, outer, and overhang perimeters - for (const ExtrusionEntity *perimeter : static_cast(ex_entity)->entities) { - ExtrusionRole role = perimeter->role(); - if (perimeter->is_loop()) { - for (const ExtrusionPath &path : static_cast(perimeter)->paths) { - if (path.role() == ExtrusionRole::erExternalPerimeter) { role = ExtrusionRole::erExternalPerimeter; } - } - } - - if (role == ExtrusionRole::erExternalPerimeter || - (is_perimeter(role) && configured_seam_preference == spRandom)) { // for random seam alignment, extract all perimeters - Points p; - perimeter->collect_points(p); - polygons.emplace_back(std::move(p)); - corresponding_regions_out.push_back(layer_region); - } - } - if (polygons.empty()) { - Points p; - ex_entity->collect_points(p); - polygons.emplace_back(std::move(p)); - corresponding_regions_out.push_back(layer_region); - } - } else { - Points p; - ex_entity->collect_points(p); - polygons.emplace_back(std::move(p)); - corresponding_regions_out.push_back(layer_region); +//Extract perimeter polygons of the given layer +Polygons extract_perimeter_polygons(const Layer *layer, std::vector &corresponding_regions_out) { + Polygons polygons; + for (const LayerRegion *layer_region : layer->regions()) { + for (const ExtrusionEntity *ex_entity : layer_region->perimeters.entities) { + if (ex_entity->is_collection()) { //collection of inner, outer, and overhang perimeters + for (const ExtrusionEntity *perimeter : static_cast(ex_entity)->entities) { + ExtrusionRole role = perimeter->role(); + if (perimeter->is_loop()) { + for (const ExtrusionPath &path : static_cast(perimeter)->paths) { + if (path.role() == ExtrusionRole::erExternalPerimeter) { + role = ExtrusionRole::erExternalPerimeter; + } } + } + + if (role == ExtrusionRole::erExternalPerimeter) { + Points p; + perimeter->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } } + if (polygons.empty()) { + Points p; + ex_entity->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } + } else { + Points p; + ex_entity->collect_points(p); + polygons.emplace_back(std::move(p)); + corresponding_regions_out.push_back(layer_region); + } } + } - if (polygons.empty()) { // If there are no perimeter polygons for whatever reason (disabled perimeters .. ) insert dummy point - // it is easier than checking everywhere if the layer is not emtpy, no seam will be placed to this layer anyway - polygons.emplace_back(std::vector{Point{0, 0}}); - corresponding_regions_out.push_back(nullptr); - } + if (polygons.empty()) { // If there are no perimeter polygons for whatever reason (disabled perimeters .. ) insert dummy point + // it is easier than checking everywhere if the layer is not emtpy, no seam will be placed to this layer anyway + polygons.emplace_back(Points{ { 0, 0 } }); + corresponding_regions_out.push_back(nullptr); + } - return polygons; + return polygons; } // Insert SeamCandidates created from perimeter polygons in to the result vector. // Compute its type (Enfrocer,Blocker), angle, and position -// each SeamCandidate also contains pointer to shared Perimeter structure representing the polygon +//each SeamCandidate also contains pointer to shared Perimeter structure representing the polygon // if Custom Seam modifiers are present, oversamples the polygon if necessary to better fit user intentions -void process_perimeter_polygon( - const Polygon &orig_polygon, float z_coord, const LayerRegion *region, const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) -{ - if (orig_polygon.size() == 0) { return; } - Polygon polygon = orig_polygon; - bool was_clockwise = polygon.make_counter_clockwise(); - float angle_arm_len = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).nozzle_diameter() : 0.5f; +void process_perimeter_polygon(const Polygon &orig_polygon, float z_coord, const LayerRegion *region, + const GlobalModelInfo &global_model_info, PrintObjectSeamData::LayerSeams &result) { + if (orig_polygon.size() == 0) { + return; + } + Polygon polygon = orig_polygon; + bool was_clockwise = polygon.make_counter_clockwise(); + float angle_arm_len = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).nozzle_diameter() : 0.5f; - std::vector lengths{}; - for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) { lengths.push_back((unscale(polygon[point_idx]) - unscale(polygon[point_idx + 1])).norm()); } - lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1)); - std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, angle_arm_len); + std::vector lengths { }; + for (size_t point_idx = 0; point_idx < polygon.size() - 1; ++point_idx) { + lengths.push_back((unscale(polygon[point_idx]) - unscale(polygon[point_idx + 1])).norm()); + } + lengths.push_back(std::max((unscale(polygon[0]) - unscale(polygon[polygon.size() - 1])).norm(), 0.1)); + std::vector polygon_angles = calculate_polygon_angles_at_vertices(polygon, lengths, + angle_arm_len); - result.perimeters.push_back({}); - Perimeter &perimeter = result.perimeters.back(); + result.perimeters.push_back( { }); + Perimeter &perimeter = result.perimeters.back(); - std::queue orig_polygon_points{}; - for (size_t index = 0; index < polygon.size(); ++index) { - Vec2f unscaled_p = unscale(polygon[index]).cast(); - orig_polygon_points.emplace(unscaled_p.x(), unscaled_p.y(), z_coord); + std::queue orig_polygon_points { }; + for (size_t index = 0; index < polygon.size(); ++index) { + Vec2f unscaled_p = unscale(polygon[index]).cast(); + orig_polygon_points.emplace(unscaled_p.x(), unscaled_p.y(), z_coord); + } + Vec3f first = orig_polygon_points.front(); + std::queue oversampled_points { }; + size_t orig_angle_index = 0; + perimeter.start_index = result.points.size(); + perimeter.flow_width = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).width() : 0.0f; + bool some_point_enforced = false; + while (!orig_polygon_points.empty() || !oversampled_points.empty()) { + EnforcedBlockedSeamPoint type = EnforcedBlockedSeamPoint::Neutral; + Vec3f position; + float local_ccw_angle = 0; + bool orig_point = false; + if (!oversampled_points.empty()) { + position = oversampled_points.front(); + oversampled_points.pop(); + } else { + position = orig_polygon_points.front(); + orig_polygon_points.pop(); + local_ccw_angle = was_clockwise ? -polygon_angles[orig_angle_index] : polygon_angles[orig_angle_index]; + orig_angle_index++; + orig_point = true; } - Vec3f first = orig_polygon_points.front(); - std::queue oversampled_points{}; - size_t orig_angle_index = 0; - perimeter.start_index = result.points.size(); - perimeter.flow_width = region != nullptr ? region->flow(FlowRole::frExternalPerimeter).width() : 0.0f; - bool some_point_enforced = false; - while (!orig_polygon_points.empty() || !oversampled_points.empty()) { - EnforcedBlockedSeamPoint type = EnforcedBlockedSeamPoint::Neutral; - Vec3f position; - float local_ccw_angle = 0; - bool orig_point = false; - if (!oversampled_points.empty()) { - position = oversampled_points.front(); - oversampled_points.pop(); + + if (global_model_info.is_enforced(position, perimeter.flow_width)) { + type = EnforcedBlockedSeamPoint::Enforced; + } + + if (global_model_info.is_blocked(position, perimeter.flow_width)) { + type = EnforcedBlockedSeamPoint::Blocked; + } + some_point_enforced = some_point_enforced || type == EnforcedBlockedSeamPoint::Enforced; + + if (orig_point) { + Vec3f pos_of_next = orig_polygon_points.empty() ? first : orig_polygon_points.front(); + float distance_to_next = (position - pos_of_next).norm(); + if (global_model_info.is_enforced(position, distance_to_next)) { + Vec3f vec_to_next = (pos_of_next - position).normalized(); + float step_size = SeamPlacer::enforcer_oversampling_distance; + float step = step_size; + while (step < distance_to_next) { + oversampled_points.push(position + vec_to_next * step); + step += step_size; + } + } + } + + result.points.emplace_back(position, perimeter, local_ccw_angle, type); + } + + perimeter.end_index = result.points.size(); + + if (some_point_enforced) { + // We will patches of enforced points (patch: continuous section of enforced points), choose + // the longest patch, and select the middle point or sharp point (depending on the angle) + // this point will have high priority on this perimeter + size_t perimeter_size = perimeter.end_index - perimeter.start_index; + const auto next_index = [&](size_t idx) { + return perimeter.start_index + Slic3r::next_idx_modulo(idx - perimeter.start_index, perimeter_size); + }; + + std::vector patches_starts_ends; + for (size_t i = perimeter.start_index; i < perimeter.end_index; ++i) { + if (result.points[i].type != EnforcedBlockedSeamPoint::Enforced && + result.points[next_index(i)].type == EnforcedBlockedSeamPoint::Enforced) { + patches_starts_ends.push_back(next_index(i)); + } + if (result.points[i].type == EnforcedBlockedSeamPoint::Enforced && + result.points[next_index(i)].type != EnforcedBlockedSeamPoint::Enforced) { + patches_starts_ends.push_back(next_index(i)); + } + } + //if patches_starts_ends are empty, it means that the whole perimeter is enforced.. don't do anything in that case + if (!patches_starts_ends.empty()) { + //if the first point in the patches is not enforced, it marks a patch end. in that case, put it to the end and start on next + // to simplify the processing + assert(patches_starts_ends.size() % 2 == 0); + bool start_on_second = false; + if (result.points[patches_starts_ends[0]].type != EnforcedBlockedSeamPoint::Enforced) { + start_on_second = true; + patches_starts_ends.push_back(patches_starts_ends[0]); + } + //now pick the longest patch + std::pair longest_patch { 0, 0 }; + auto patch_len = [perimeter_size](const std::pair &start_end) { + if (start_end.second < start_end.first) { + return start_end.first + (perimeter_size - start_end.second); } else { - position = orig_polygon_points.front(); - orig_polygon_points.pop(); - local_ccw_angle = was_clockwise ? -polygon_angles[orig_angle_index] : polygon_angles[orig_angle_index]; - orig_angle_index++; - orig_point = true; + return start_end.second - start_end.first; } - - if (global_model_info.is_enforced(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Enforced; } - - if (global_model_info.is_blocked(position, perimeter.flow_width)) { type = EnforcedBlockedSeamPoint::Blocked; } - some_point_enforced = some_point_enforced || type == EnforcedBlockedSeamPoint::Enforced; - - if (orig_point) { - Vec3f pos_of_next = orig_polygon_points.empty() ? first : orig_polygon_points.front(); - float distance_to_next = (position - pos_of_next).norm(); - if (distance_to_next > perimeter.flow_width * perimeter.flow_width * 4) - oversampled_points.push((position + pos_of_next) / 2); - if (global_model_info.is_enforced(position, distance_to_next)) { - Vec3f vec_to_next = (pos_of_next - position).normalized(); - float step_size = SeamPlacer::enforcer_oversampling_distance; - float step = step_size; - while (step < distance_to_next) { - oversampled_points.push(position + vec_to_next * step); - step += step_size; - } - } + }; + for (size_t patch_idx = start_on_second ? 1 : 0; patch_idx < patches_starts_ends.size(); patch_idx += 2) { + std::pair current_patch { patches_starts_ends[patch_idx], patches_starts_ends[patch_idx + + 1] }; + if (patch_len(longest_patch) < patch_len(current_patch)) { + longest_patch = current_patch; } - - result.points.emplace_back(position, perimeter, local_ccw_angle, type); + } + std::vector viable_points_indices; + std::vector large_angle_points_indices; + for (size_t point_idx = longest_patch.first; point_idx != longest_patch.second; + point_idx = next_index(point_idx)) { + viable_points_indices.push_back(point_idx); + if (std::abs(result.points[point_idx].local_ccw_angle) + > SeamPlacer::sharp_angle_snapping_threshold) { + large_angle_points_indices.push_back(point_idx); + } + } + assert(viable_points_indices.size() > 0); + if (large_angle_points_indices.empty()) { + size_t central_idx = viable_points_indices[viable_points_indices.size() / 2]; + result.points[central_idx].central_enforcer = true; + } else { + size_t central_idx = large_angle_points_indices.size() / 2; + result.points[large_angle_points_indices[central_idx]].central_enforcer = true; + } } + } - perimeter.end_index = result.points.size(); - - if (some_point_enforced) { - // We will patches of enforced points (patch: continuous section of enforced points), choose - // the longest patch, and select the middle point or sharp point (depending on the angle) - // this point will have high priority on this perimeter - size_t perimeter_size = perimeter.end_index - perimeter.start_index; - const auto next_index = [&](size_t idx) { return perimeter.start_index + Slic3r::next_idx_modulo(idx - perimeter.start_index, perimeter_size); }; - - std::vector patches_starts_ends; - for (size_t i = perimeter.start_index; i < perimeter.end_index; ++i) { - if (result.points[i].type != EnforcedBlockedSeamPoint::Enforced && result.points[next_index(i)].type == EnforcedBlockedSeamPoint::Enforced) { - patches_starts_ends.push_back(next_index(i)); - } - if (result.points[i].type == EnforcedBlockedSeamPoint::Enforced && result.points[next_index(i)].type != EnforcedBlockedSeamPoint::Enforced) { - patches_starts_ends.push_back(next_index(i)); - } - } - // if patches_starts_ends are empty, it means that the whole perimeter is enforced.. don't do anything in that case - if (!patches_starts_ends.empty()) { - // if the first point in the patches is not enforced, it marks a patch end. in that case, put it to the end and start on next - // to simplify the processing - assert(patches_starts_ends.size() % 2 == 0); - bool start_on_second = false; - if (result.points[patches_starts_ends[0]].type != EnforcedBlockedSeamPoint::Enforced) { - start_on_second = true; - patches_starts_ends.push_back(patches_starts_ends[0]); - } - // now pick the longest patch - std::pair longest_patch{0, 0}; - auto patch_len = [perimeter_size](const std::pair &start_end) { - if (start_end.second < start_end.first) { - return start_end.first + (perimeter_size - start_end.second); - } else { - return start_end.second - start_end.first; - } - }; - for (size_t patch_idx = start_on_second ? 1 : 0; patch_idx < patches_starts_ends.size(); patch_idx += 2) { - std::pair current_patch{patches_starts_ends[patch_idx], patches_starts_ends[patch_idx + 1]}; - if (patch_len(longest_patch) < patch_len(current_patch)) { longest_patch = current_patch; } - } - std::vector viable_points_indices; - std::vector large_angle_points_indices; - for (size_t point_idx = longest_patch.first; point_idx != longest_patch.second; point_idx = next_index(point_idx)) { - viable_points_indices.push_back(point_idx); - if (std::abs(result.points[point_idx].local_ccw_angle) > SeamPlacer::sharp_angle_snapping_threshold) { large_angle_points_indices.push_back(point_idx); } - } - assert(viable_points_indices.size() > 0); - if (large_angle_points_indices.empty()) { - size_t central_idx = viable_points_indices[viable_points_indices.size() / 2]; - result.points[central_idx].central_enforcer = true; - } else { - size_t central_idx = large_angle_points_indices.size() / 2; - result.points[large_angle_points_indices[central_idx]].central_enforcer = true; - } - } - } } // Get index of previous and next perimeter point of the layer. Because SeamCandidates of all polygons of the given layer // are sequentially stored in the vector, each perimeter contains info about start and end index. These vales are used to // deduce index of previous and next neigbour in the corresponding perimeter. -std::pair find_previous_and_next_perimeter_point(const std::vector &perimeter_points, size_t point_index) -{ - const SeamCandidate ¤t = perimeter_points[point_index]; - int prev = point_index - 1; // for majority of points, it is true that neighbours lie behind and in front of them in the vector - int next = point_index + 1; +std::pair find_previous_and_next_perimeter_point(const std::vector &perimeter_points, + size_t point_index) { + const SeamCandidate ¤t = perimeter_points[point_index]; + int prev = point_index - 1; //for majority of points, it is true that neighbours lie behind and in front of them in the vector + int next = point_index + 1; - if (point_index == current.perimeter.start_index) { - // if point_index is equal to start, it means that the previous neighbour is at the end - prev = current.perimeter.end_index; - } + if (point_index == current.perimeter.start_index) { + // if point_index is equal to start, it means that the previous neighbour is at the end + prev = current.perimeter.end_index; + } - if (point_index == current.perimeter.end_index - 1) { - // if point_index is equal to end, than next neighbour is at the start - next = current.perimeter.start_index; - } + if (point_index == current.perimeter.end_index - 1) { + // if point_index is equal to end, than next neighbour is at the start + next = current.perimeter.start_index; + } - assert(prev >= 0); - assert(next >= 0); - return {size_t(prev), size_t(next)}; + assert(prev >= 0); + assert(next >= 0); + return {size_t(prev),size_t(next)}; } // Computes all global model info - transforms object, performs raycasting -void compute_global_occlusion(GlobalModelInfo &result, const PrintObject *po, std::function throw_if_canceled) -{ - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather occlusion meshes: start"; - auto obj_transform = po->trafo_centered(); - indexed_triangle_set triangle_set; - indexed_triangle_set negative_volumes_set; - // add all parts - for (const ModelVolume *model_volume : po->model_object()->volumes) { - if (model_volume->type() == ModelVolumeType::MODEL_PART || model_volume->type() == ModelVolumeType::NEGATIVE_VOLUME) { - auto model_transformation = model_volume->get_matrix(); - indexed_triangle_set model_its = model_volume->mesh().its; - its_transform(model_its, model_transformation); - if (model_volume->type() == ModelVolumeType::MODEL_PART) { - its_merge(triangle_set, model_its); - } else { - its_merge(negative_volumes_set, model_its); - } - } +void compute_global_occlusion(GlobalModelInfo &result, const PrintObject *po, + std::function throw_if_canceled) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather occlusion meshes: start"; + auto obj_transform = po->trafo_centered(); + indexed_triangle_set triangle_set; + indexed_triangle_set negative_volumes_set; + //add all parts + for (const ModelVolume *model_volume : po->model_object()->volumes) { + if (model_volume->type() == ModelVolumeType::MODEL_PART + || model_volume->type() == ModelVolumeType::NEGATIVE_VOLUME) { + auto model_transformation = model_volume->get_matrix(); + indexed_triangle_set model_its = model_volume->mesh().its; + its_transform(model_its, model_transformation); + if (model_volume->type() == ModelVolumeType::MODEL_PART) { + its_merge(triangle_set, model_its); + } else { + its_merge(negative_volumes_set, model_its); + } } - throw_if_canceled(); + } + throw_if_canceled(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather occlusion meshes: end"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather occlusion meshes: end"; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: decimate: start"; - its_short_edge_collpase(triangle_set, 25000); - its_short_edge_collpase(negative_volumes_set, 25000); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: decimate: start"; + its_short_edge_collpase(triangle_set, SeamPlacer::fast_decimation_triangle_count_target); + its_short_edge_collpase(negative_volumes_set, SeamPlacer::fast_decimation_triangle_count_target); - size_t negative_volumes_start_index = triangle_set.indices.size(); - its_merge(triangle_set, negative_volumes_set); - its_transform(triangle_set, obj_transform); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: decimate: end"; + size_t negative_volumes_start_index = triangle_set.indices.size(); + its_merge(triangle_set, negative_volumes_set); + its_transform(triangle_set, obj_transform); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: decimate: end"; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Compute visibility sample points: start"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: Compute visibility sample points: start"; - result.mesh_samples = sample_its_uniform_parallel(SeamPlacer::raycasting_visibility_samples_count, triangle_set); - result.mesh_samples_coordinate_functor = CoordinateFunctor(&result.mesh_samples.positions); - result.mesh_samples_tree = KDTreeIndirect<3, float, CoordinateFunctor>(result.mesh_samples_coordinate_functor, result.mesh_samples.positions.size()); + result.mesh_samples = sample_its_uniform_parallel(SeamPlacer::raycasting_visibility_samples_count, + triangle_set); + result.mesh_samples_coordinate_functor = CoordinateFunctor(&result.mesh_samples.positions); + result.mesh_samples_tree = KDTreeIndirect<3, float, CoordinateFunctor>(result.mesh_samples_coordinate_functor, + result.mesh_samples.positions.size()); - // The following code determines search area for random visibility samples on the mesh when calculating visibility of each perimeter point - // number of random samples in the given radius (area) is approximately poisson distribution - // to compute ideal search radius (area), we use exponential distribution (complementary distr to poisson) - // parameters of exponential distribution to compute area that will have with probability="probability" more than given number of samples="samples" - float probability = 0.9f; - float samples = 4; - float density = SeamPlacer::raycasting_visibility_samples_count / result.mesh_samples.total_area; - // exponential probability distrubtion function is : f(x) = P(X > x) = e^(l*x) where l is the rate parameter (computed as 1/u where u is mean value) - // probability that sampled area A with S samples contains more than samples count: - // P(S > samples in A) = e^-(samples/(density*A)); express A: - float search_area = samples / (-logf(probability) * density); - float search_radius = sqrt(search_area / PI); - result.mesh_samples_radius = search_radius; + // The following code determines search area for random visibility samples on the mesh when calculating visibility of each perimeter point + // number of random samples in the given radius (area) is approximately poisson distribution + // to compute ideal search radius (area), we use exponential distribution (complementary distr to poisson) + // parameters of exponential distribution to compute area that will have with probability="probability" more than given number of samples="samples" + float probability = 0.9f; + float samples = 4; + float density = SeamPlacer::raycasting_visibility_samples_count / result.mesh_samples.total_area; + // exponential probability distrubtion function is : f(x) = P(X > x) = e^(l*x) where l is the rate parameter (computed as 1/u where u is mean value) + // probability that sampled area A with S samples contains more than samples count: + // P(S > samples in A) = e^-(samples/(density*A)); express A: + float search_area = samples / (-logf(probability) * density); + float search_radius = sqrt(search_area / PI); + result.mesh_samples_radius = search_radius; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Compute visiblity sample points: end"; - throw_if_canceled(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: Compute visiblity sample points: end"; + throw_if_canceled(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: Mesh sample raidus: " << result.mesh_samples_radius; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: Mesh sample raidus: " << result.mesh_samples_radius; - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB tree: start"; - auto raycasting_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(triangle_set.vertices, triangle_set.indices); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB tree: start"; + auto raycasting_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(triangle_set.vertices, + triangle_set.indices); - throw_if_canceled(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB tree: end"; - result.mesh_samples_visibility = raycast_visibility(raycasting_tree, triangle_set, result.mesh_samples, negative_volumes_start_index); - throw_if_canceled(); + throw_if_canceled(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB tree: end"; + result.mesh_samples_visibility = raycast_visibility(raycasting_tree, triangle_set, result.mesh_samples, + negative_volumes_start_index); + throw_if_canceled(); #ifdef DEBUG_FILES - result.debug_export(triangle_set); + result.debug_export(triangle_set); #endif } -void gather_enforcers_blockers(GlobalModelInfo &result, const PrintObject *po) -{ - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: start"; +void gather_enforcers_blockers(GlobalModelInfo &result, const PrintObject *po) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: start"; - auto obj_transform = po->trafo_centered(); + auto obj_transform = po->trafo_centered(); - for (const ModelVolume *mv : po->model_object()->volumes) { - if (mv->is_seam_painted()) { - auto model_transformation = obj_transform * mv->get_matrix(); + for (const ModelVolume *mv : po->model_object()->volumes) { + if (mv->is_seam_painted()) { + auto model_transformation = obj_transform * mv->get_matrix(); - indexed_triangle_set enforcers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::ENFORCER); - its_transform(enforcers, model_transformation); - its_merge(result.enforcers, enforcers); + indexed_triangle_set enforcers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::ENFORCER); + its_transform(enforcers, model_transformation); + its_merge(result.enforcers, enforcers); - indexed_triangle_set blockers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::BLOCKER); - its_transform(blockers, model_transformation); - its_merge(result.blockers, blockers); - } + indexed_triangle_set blockers = mv->seam_facets.get_facets(*mv, EnforcerBlockerType::BLOCKER); + its_transform(blockers, model_transformation); + its_merge(result.blockers, blockers); } + } - result.enforcers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.enforcers.vertices, result.enforcers.indices); - result.blockers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.blockers.vertices, result.blockers.indices); + result.enforcers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.enforcers.vertices, + result.enforcers.indices); + result.blockers_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(result.blockers.vertices, + result.blockers.indices); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: end"; + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: build AABB trees for raycasting enforcers/blockers: end"; } -struct SeamComparator -{ - SeamPosition setup; - float angle_importance; - explicit SeamComparator(SeamPosition setup) : setup(setup) - { - angle_importance = setup == spNearest ? SeamPlacer::angle_importance_nearest : SeamPlacer::angle_importance_aligned; +struct SeamComparator { + SeamPosition setup; + float angle_importance; + explicit SeamComparator(SeamPosition setup) : + setup(setup) { + angle_importance = + setup == spNearest ? SeamPlacer::angle_importance_nearest : SeamPlacer::angle_importance_aligned; + } + + // Standard comparator, must respect the requirements of comparators (e.g. give same result on same inputs) for sorting usage + // should return if a is better seamCandidate than b + bool is_first_better(const SeamCandidate &a, const SeamCandidate &b, const Vec2f &preffered_location = Vec2f { 0.0f, + 0.0f }) const { + if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { + return a.central_enforcer; } - // Standard comparator, must respect the requirements of comparators (e.g. give same result on same inputs) for sorting usage - // should return if a is better seamCandidate than b - bool is_first_better(const SeamCandidate &a, const SeamCandidate &b, const Vec2f &preffered_location = Vec2f{0.0f, 0.0f}) const - { - if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { return a.central_enforcer; } - - // Blockers/Enforcers discrimination, top priority - if (a.type != b.type) { return a.type > b.type; } - - // avoid overhangs - if (a.overhang > 0.0f || b.overhang > 0.0f) { return a.overhang < b.overhang; } - - // prefer hidden points (more than 0.5 mm inside) - if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { return true; } - if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { return false; } - - if (setup == SeamPosition::spRear && a.position.y() != b.position.y()) { return a.position.y() > b.position.y(); } - - float distance_penalty_a = 0.0f; - float distance_penalty_b = 0.0f; - if (setup == spNearest) { - distance_penalty_a = 1.0f - gauss((a.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); - distance_penalty_b = 1.0f - gauss((b.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); - } - - // the penalites are kept close to range [0-1.x] however, it should not be relied upon - float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle) + distance_penalty_a; - float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle) + distance_penalty_b; - - return penalty_a < penalty_b; + // Blockers/Enforcers discrimination, top priority + if (a.type != b.type) { + return a.type > b.type; } - // Comparator used during alignment. If there is close potential aligned point, it is compared to the current - // seam point of the perimeter, to find out if the aligned point is not much worse than the current seam - // Also used by the random seam generator. - bool is_first_not_much_worse(const SeamCandidate &a, const SeamCandidate &b) const - { - // Blockers/Enforcers discrimination, top priority - if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { - // Prefer centers of enforcers. - return a.central_enforcer; - } - - if (a.type == EnforcedBlockedSeamPoint::Enforced) { return true; } - - if (a.type == EnforcedBlockedSeamPoint::Blocked) { return false; } - - if (a.type != b.type) { return a.type > b.type; } - - // avoid overhangs - if ((a.overhang > 0.0f || b.overhang > 0.0f) && abs(a.overhang - b.overhang) > (0.1f * a.perimeter.flow_width)) { return a.overhang < b.overhang; } - - // prefer hidden points (more than 0.5 mm inside) - if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { return true; } - if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { return false; } - - if (setup == SeamPosition::spRandom) { return true; } - - if (setup == SeamPosition::spRear) { return a.position.y() + SeamPlacer::seam_align_score_tolerance * 5.0f > b.position.y(); } - - float penalty_a = a.overhang + a.visibility + angle_importance * compute_angle_penalty(a.local_ccw_angle); - float penalty_b = b.overhang + b.visibility + angle_importance * compute_angle_penalty(b.local_ccw_angle); - - return penalty_a <= penalty_b || penalty_a - penalty_b < SeamPlacer::seam_align_score_tolerance; + //avoid overhangs + if (a.overhang > 0.0f || b.overhang > 0.0f) { + return a.overhang < b.overhang; } - bool are_similar(const SeamCandidate &a, const SeamCandidate &b) const { return is_first_not_much_worse(a, b) && is_first_not_much_worse(b, a); } + // prefer hidden points (more than 0.5 mm inside) + if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { + return true; + } + if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { + return false; + } + + if (setup == SeamPosition::spRear && a.position.y() != b.position.y()) { + return a.position.y() > b.position.y(); + } + + float distance_penalty_a = 0.0f; + float distance_penalty_b = 0.0f; + if (setup == spNearest) { + distance_penalty_a = 1.0f - gauss((a.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); + distance_penalty_b = 1.0f - gauss((b.position.head<2>() - preffered_location).norm(), 0.0f, 1.0f, 0.005f); + } + + // the penalites are kept close to range [0-1.x] however, it should not be relied upon + float penalty_a = a.overhang + a.visibility + + angle_importance * compute_angle_penalty(a.local_ccw_angle) + + distance_penalty_a; + float penalty_b = b.overhang + b.visibility + + angle_importance * compute_angle_penalty(b.local_ccw_angle) + + distance_penalty_b; + + return penalty_a < penalty_b; + } + + // Comparator used during alignment. If there is close potential aligned point, it is compared to the current + // seam point of the perimeter, to find out if the aligned point is not much worse than the current seam + // Also used by the random seam generator. + bool is_first_not_much_worse(const SeamCandidate &a, const SeamCandidate &b) const { + // Blockers/Enforcers discrimination, top priority + if (setup == SeamPosition::spAligned && a.central_enforcer != b.central_enforcer) { + // Prefer centers of enforcers. + return a.central_enforcer; + } + + if (a.type == EnforcedBlockedSeamPoint::Enforced) { + return true; + } + + if (a.type == EnforcedBlockedSeamPoint::Blocked) { + return false; + } + + if (a.type != b.type) { + return a.type > b.type; + } + + //avoid overhangs + if ((a.overhang > 0.0f || b.overhang > 0.0f) + && abs(a.overhang - b.overhang) > (0.1f * a.perimeter.flow_width)) { + return a.overhang < b.overhang; + } + + // prefer hidden points (more than 0.5 mm inside) + if (a.embedded_distance < -0.5f && b.embedded_distance > -0.5f) { + return true; + } + if (b.embedded_distance < -0.5f && a.embedded_distance > -0.5f) { + return false; + } + + if (setup == SeamPosition::spRandom) { + return true; + } + + if (setup == SeamPosition::spRear) { + return a.position.y() + SeamPlacer::seam_align_score_tolerance * 5.0f > b.position.y(); + } + + float penalty_a = a.overhang + a.visibility + + angle_importance * compute_angle_penalty(a.local_ccw_angle); + float penalty_b = b.overhang + b.visibility + + angle_importance * compute_angle_penalty(b.local_ccw_angle); + + return penalty_a <= penalty_b || penalty_a - penalty_b < SeamPlacer::seam_align_score_tolerance; + } + + bool are_similar(const SeamCandidate &a, const SeamCandidate &b) const { + return is_first_not_much_worse(a, b) && is_first_not_much_worse(b, a); + } }; #ifdef DEBUG_FILES -void debug_export_points(const std::vector &layers, const BoundingBox &bounding_box, const SeamComparator &comparator) -{ - for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { - std::string angles_file_name = debug_out_path(("angles_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG angles_svg{angles_file_name, bounding_box}; - float min_vis = 0; - float max_vis = min_vis; +void debug_export_points(const std::vector &layers, + const BoundingBox &bounding_box, const SeamComparator &comparator) { + for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { + std::string angles_file_name = debug_out_path( + ("angles_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG angles_svg { angles_file_name, bounding_box }; + float min_vis = 0; + float max_vis = min_vis; - float min_weight = std::numeric_limits::min(); - float max_weight = min_weight; + float min_weight = std::numeric_limits::min(); + float max_weight = min_weight; - for (const SeamCandidate &point : layers[layer_idx].points) { - Vec3i color = value_to_rgbi(-PI, PI, point.local_ccw_angle); - std::string fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + std::to_string(color.z()) + ")"; - angles_svg.draw(scaled(Vec2f(point.position.head<2>())), fill); - min_vis = std::min(min_vis, point.visibility); - max_vis = std::max(max_vis, point.visibility); + for (const SeamCandidate &point : layers[layer_idx].points) { + Vec3i color = value_to_rgbi(-PI, PI, point.local_ccw_angle); + std::string fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + + std::to_string(color.z()) + ")"; + angles_svg.draw(scaled(Vec2f(point.position.head<2>())), fill); + min_vis = std::min(min_vis, point.visibility); + max_vis = std::max(max_vis, point.visibility); - min_weight = std::min(min_weight, -compute_angle_penalty(point.local_ccw_angle)); - max_weight = std::max(max_weight, -compute_angle_penalty(point.local_ccw_angle)); - } + min_weight = std::min(min_weight, -compute_angle_penalty(point.local_ccw_angle)); + max_weight = std::max(max_weight, -compute_angle_penalty(point.local_ccw_angle)); - std::string visiblity_file_name = debug_out_path(("visibility_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG visibility_svg{visiblity_file_name, bounding_box}; - std::string weights_file_name = debug_out_path(("weight_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG weight_svg{weights_file_name, bounding_box}; - std::string overhangs_file_name = debug_out_path(("overhang_" + std::to_string(layer_idx) + ".svg").c_str()); - SVG overhangs_svg{overhangs_file_name, bounding_box}; - - for (const SeamCandidate &point : layers[layer_idx].points) { - Vec3i color = value_to_rgbi(min_vis, max_vis, point.visibility); - std::string visibility_fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + std::to_string(color.z()) + ")"; - visibility_svg.draw(scaled(Vec2f(point.position.head<2>())), visibility_fill); - - Vec3i weight_color = value_to_rgbi(min_weight, max_weight, -compute_angle_penalty(point.local_ccw_angle)); - std::string weight_fill = "rgb(" + std::to_string(weight_color.x()) + "," + std::to_string(weight_color.y()) + "," + std::to_string(weight_color.z()) + ")"; - weight_svg.draw(scaled(Vec2f(point.position.head<2>())), weight_fill); - - Vec3i overhang_color = value_to_rgbi(-0.5, 0.5, std::clamp(point.overhang, -0.5f, 0.5f)); - std::string overhang_fill = "rgb(" + std::to_string(overhang_color.x()) + "," + std::to_string(overhang_color.y()) + "," + std::to_string(overhang_color.z()) + ")"; - overhangs_svg.draw(scaled(Vec2f(point.position.head<2>())), overhang_fill); - } } + + std::string visiblity_file_name = debug_out_path( + ("visibility_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG visibility_svg { visiblity_file_name, bounding_box }; + std::string weights_file_name = debug_out_path( + ("weight_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG weight_svg { weights_file_name, bounding_box }; + std::string overhangs_file_name = debug_out_path( + ("overhang_" + std::to_string(layer_idx) + ".svg").c_str()); + SVG overhangs_svg { overhangs_file_name, bounding_box }; + + for (const SeamCandidate &point : layers[layer_idx].points) { + Vec3i color = value_to_rgbi(min_vis, max_vis, point.visibility); + std::string visibility_fill = "rgb(" + std::to_string(color.x()) + "," + std::to_string(color.y()) + "," + + std::to_string(color.z()) + ")"; + visibility_svg.draw(scaled(Vec2f(point.position.head<2>())), visibility_fill); + + Vec3i weight_color = value_to_rgbi(min_weight, max_weight, + -compute_angle_penalty(point.local_ccw_angle)); + std::string weight_fill = "rgb(" + std::to_string(weight_color.x()) + "," + std::to_string(weight_color.y()) + + "," + + std::to_string(weight_color.z()) + ")"; + weight_svg.draw(scaled(Vec2f(point.position.head<2>())), weight_fill); + + Vec3i overhang_color = value_to_rgbi(-0.5, 0.5, std::clamp(point.overhang, -0.5f, 0.5f)); + std::string overhang_fill = "rgb(" + std::to_string(overhang_color.x()) + "," + + std::to_string(overhang_color.y()) + + "," + + std::to_string(overhang_color.z()) + ")"; + overhangs_svg.draw(scaled(Vec2f(point.position.head<2>())), overhang_fill); + } + } } #endif // Pick best seam point based on the given comparator -void pick_seam_point(std::vector &perimeter_points, size_t start_index, const SeamComparator &comparator) -{ - size_t end_index = perimeter_points[start_index].perimeter.end_index; +void pick_seam_point(std::vector &perimeter_points, size_t start_index, + const SeamComparator &comparator) { + size_t end_index = perimeter_points[start_index].perimeter.end_index; - size_t seam_index = start_index; - for (size_t index = start_index; index < end_index; ++index) { - if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index])) { seam_index = index; } + size_t seam_index = start_index; + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index])) { + seam_index = index; } - perimeter_points[start_index].perimeter.seam_index = seam_index; + } + perimeter_points[start_index].perimeter.seam_index = seam_index; } -size_t pick_nearest_seam_point_index(const std::vector &perimeter_points, size_t start_index, const Vec2f &preffered_location) -{ - size_t end_index = perimeter_points[start_index].perimeter.end_index; - SeamComparator comparator{spNearest}; +size_t pick_nearest_seam_point_index(const std::vector &perimeter_points, size_t start_index, + const Vec2f &preffered_location) { + size_t end_index = perimeter_points[start_index].perimeter.end_index; + SeamComparator comparator { spNearest }; - size_t seam_index = start_index; - for (size_t index = start_index; index < end_index; ++index) { - if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index], preffered_location)) { seam_index = index; } + size_t seam_index = start_index; + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.is_first_better(perimeter_points[index], perimeter_points[seam_index], preffered_location)) { + seam_index = index; } - return seam_index; + } + return seam_index; } // picks random seam point uniformly, respecting enforcers blockers and overhang avoidance. -void pick_random_seam_point(const std::vector &perimeter_points, size_t start_index) -{ - SeamComparator comparator{spRandom}; +void pick_random_seam_point(const std::vector &perimeter_points, size_t start_index) { + SeamComparator comparator { spRandom }; - // algorithm keeps a list of viable points and their lengths. If it finds a point - // that is much better than the viable_example_index (e.g. better type, no overhang; see is_first_not_much_worse) - // then it throws away stored lists and starts from start - // in the end, the list should contain points with same type (Enforced > Neutral > Blocked) and also only those which are not - // big overhang. - size_t viable_example_index = start_index; - size_t end_index = perimeter_points[start_index].perimeter.end_index; - struct Viable - { - // Candidate seam point index. - size_t index; - float edge_length; - Vec3f edge; - }; - std::vector viables; + // algorithm keeps a list of viable points and their lengths. If it finds a point + // that is much better than the viable_example_index (e.g. better type, no overhang; see is_first_not_much_worse) + // then it throws away stored lists and starts from start + // in the end, the list should contain points with same type (Enforced > Neutral > Blocked) and also only those which are not + // big overhang. + size_t viable_example_index = start_index; + size_t end_index = perimeter_points[start_index].perimeter.end_index; + struct Viable { + // Candidate seam point index. + size_t index; + float edge_length; + Vec3f edge; + }; + std::vector viables; - const Vec3f pseudornd_seed = perimeter_points[viable_example_index].position; - float rand = std::abs(sin(pseudornd_seed.dot(Vec3f(12.9898f, 78.233f, 133.3333f))) * 43758.5453f); - rand = rand - (int) rand; + const Vec3f pseudornd_seed = perimeter_points[viable_example_index].position; + float rand = std::abs(sin(pseudornd_seed.dot(Vec3f(12.9898f,78.233f, 133.3333f))) * 43758.5453f); + rand = rand - (int) rand; - for (size_t index = start_index; index < end_index; ++index) { - if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) { - // index ok, push info into viables - Vec3f edge_to_next{perimeter_points[index == end_index - 1 ? start_index : index + 1].position - perimeter_points[index].position}; - float dist_to_next = edge_to_next.norm(); - viables.push_back({index, dist_to_next, edge_to_next}); - } else if (comparator.is_first_not_much_worse(perimeter_points[viable_example_index], perimeter_points[index])) { - // index is worse then viable_example_index, skip this point - } else { - // index is better than viable example index, update example, clear gathered info, start again - // clear up all gathered info, start from scratch, update example index - viable_example_index = index; - viables.clear(); + for (size_t index = start_index; index < end_index; ++index) { + if (comparator.are_similar(perimeter_points[index], perimeter_points[viable_example_index])) { + // index ok, push info into viables + Vec3f edge_to_next { perimeter_points[index == end_index - 1 ? start_index : index + 1].position + - perimeter_points[index].position }; + float dist_to_next = edge_to_next.norm(); + viables.push_back( { index, dist_to_next, edge_to_next }); + } else if (comparator.is_first_not_much_worse(perimeter_points[viable_example_index], + perimeter_points[index])) { + // index is worse then viable_example_index, skip this point + } else { + // index is better than viable example index, update example, clear gathered info, start again + // clear up all gathered info, start from scratch, update example index + viable_example_index = index; + viables.clear(); - Vec3f edge_to_next = (perimeter_points[index == end_index - 1 ? start_index : index + 1].position - perimeter_points[index].position); - float dist_to_next = edge_to_next.norm(); - viables.push_back({index, dist_to_next, edge_to_next}); - } + Vec3f edge_to_next = (perimeter_points[index == end_index - 1 ? start_index : index + 1].position + - perimeter_points[index].position); + float dist_to_next = edge_to_next.norm(); + viables.push_back( { index, dist_to_next, edge_to_next }); } + } - // now pick random point from the stored options - float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) { return acc + v.edge_length; }); - float picked_len = len_sum * rand; + // now pick random point from the stored options + float len_sum = std::accumulate(viables.begin(), viables.end(), 0.0f, [](const float acc, const Viable &v) { + return acc + v.edge_length; + }); + float picked_len = len_sum * rand; - size_t point_idx = 0; - while (picked_len - viables[point_idx].edge_length > 0) { - picked_len = picked_len - viables[point_idx].edge_length; - point_idx++; - } + size_t point_idx = 0; + while (picked_len - viables[point_idx].edge_length > 0) { + picked_len = picked_len - viables[point_idx].edge_length; + point_idx++; + } - Perimeter &perimeter = perimeter_points[start_index].perimeter; - perimeter.seam_index = viables[point_idx].index; - perimeter.final_seam_position = perimeter_points[perimeter.seam_index].position + viables[point_idx].edge.normalized() * picked_len; - perimeter.finalized = true; + Perimeter &perimeter = perimeter_points[start_index].perimeter; + perimeter.seam_index = viables[point_idx].index; + perimeter.final_seam_position = perimeter_points[perimeter.seam_index].position + + viables[point_idx].edge.normalized() * picked_len; + perimeter.finalized = true; } -class PerimeterDistancer -{ - std::vector lines; - AABBTreeIndirect::Tree<2, double> tree; - -public: - PerimeterDistancer(const Layer *layer) - { - ExPolygons layer_outline = layer->lslices; - for (const ExPolygon &island : layer_outline) { - assert(island.contour.is_counter_clockwise()); - for (const auto &line : island.contour.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } - for (const Polygon &hole : island.holes) { - assert(hole.is_clockwise()); - for (const auto &line : hole.lines()) { lines.emplace_back(unscale(line.a), unscale(line.b)); } - } - } - tree = AABBTreeLines::build_aabb_tree_over_indexed_lines(lines); - } - - float distance_from_perimeter(const Vec2f &point) const - { - Vec2d p = point.cast(); - size_t hit_idx_out{}; - Vec2d hit_point_out = Vec2d::Zero(); - auto distance = AABBTreeLines::squared_distance_to_indexed_lines(lines, tree, p, hit_idx_out, hit_point_out); - if (distance < 0) { return std::numeric_limits::max(); } - - distance = sqrt(distance); - const Linef &line = lines[hit_idx_out]; - Vec2d v1 = line.b - line.a; - Vec2d v2 = p - line.a; - if ((v1.x() * v2.y()) - (v1.y() * v2.x()) > 0.0) { distance *= -1; } - return distance; - } -}; - } // namespace SeamPlacerImpl // Parallel process and extract each perimeter polygon of the given print object. // Gather SeamCandidates of each layer into vector and build KDtree over them // Store results in the SeamPlacer variables m_seam_per_object -void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference) -{ - using namespace SeamPlacerImpl; - PrintObjectSeamData &seam_data = m_seam_per_object.emplace(po, PrintObjectSeamData{}).first->second; - seam_data.layers.resize(po->layer_count()); +void SeamPlacer::gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info) { + using namespace SeamPlacerImpl; + PrintObjectSeamData &seam_data = m_seam_per_object.emplace(po, PrintObjectSeamData { }).first->second; + seam_data.layers.resize(po->layer_count()); - tbb::parallel_for(tbb::blocked_range(0, po->layers().size()), [po, configured_seam_preference, &global_model_info, &seam_data](tbb::blocked_range r) { - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - PrintObjectSeamData::LayerSeams &layer_seams = seam_data.layers[layer_idx]; - const Layer * layer = po->get_layer(layer_idx); - auto unscaled_z = layer->slice_z; - std::vector regions; - // NOTE corresponding region ptr may be null, if the layer has zero perimeters - Polygons polygons = extract_perimeter_polygons(layer, configured_seam_preference, regions); - for (size_t poly_index = 0; poly_index < polygons.size(); ++poly_index) { - process_perimeter_polygon(polygons[poly_index], unscaled_z, regions[poly_index], global_model_info, layer_seams); - } - auto functor = SeamCandidateCoordinateFunctor{layer_seams.points}; - seam_data.layers[layer_idx].points_tree = std::make_unique(functor, layer_seams.points.size()); - } - }); + tbb::parallel_for(tbb::blocked_range(0, po->layers().size()), + [po, &global_model_info, &seam_data] + (tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + PrintObjectSeamData::LayerSeams &layer_seams = seam_data.layers[layer_idx]; + const Layer *layer = po->get_layer(layer_idx); + auto unscaled_z = layer->slice_z; + std::vector regions; + //NOTE corresponding region ptr may be null, if the layer has zero perimeters + Polygons polygons = extract_perimeter_polygons(layer, regions); + for (size_t poly_index = 0; poly_index < polygons.size(); ++poly_index) { + process_perimeter_polygon(polygons[poly_index], unscaled_z, + regions[poly_index], global_model_info, layer_seams); + } + auto functor = SeamCandidateCoordinateFunctor { layer_seams.points }; + seam_data.layers[layer_idx].points_tree = + std::make_unique(functor, + layer_seams.points.size()); + } + } + ); } -void SeamPlacer::calculate_candidates_visibility(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info) -{ - using namespace SeamPlacerImpl; +void SeamPlacer::calculate_candidates_visibility(const PrintObject *po, + const SeamPlacerImpl::GlobalModelInfo &global_model_info) { + using namespace SeamPlacerImpl; - std::vector &layers = m_seam_per_object[po].layers; - tbb::parallel_for(tbb::blocked_range(0, layers.size()), [&layers, &global_model_info](tbb::blocked_range r) { - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - for (auto &perimeter_point : layers[layer_idx].points) { perimeter_point.visibility = global_model_info.calculate_point_visibility(perimeter_point.position); } - } - }); + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), + [&layers, &global_model_info](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + for (auto &perimeter_point : layers[layer_idx].points) { + perimeter_point.visibility = global_model_info.calculate_point_visibility( + perimeter_point.position); + } + } + }); } -void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) -{ - using namespace SeamPlacerImpl; +void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) { + using namespace SeamPlacerImpl; + using PerimeterDistancer = AABBTreeLines::LinesDistancer; - std::vector &layers = m_seam_per_object[po].layers; - tbb::parallel_for(tbb::blocked_range(0, layers.size()), [po, &layers](tbb::blocked_range r) { - std::unique_ptr prev_layer_distancer; - if (r.begin() > 0) { // previous layer exists - prev_layer_distancer = std::make_unique(po->layers()[r.begin() - 1]); - } + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), + [po, &layers](tbb::blocked_range r) { + std::unique_ptr prev_layer_distancer; + if (r.begin() > 0) { // previous layer exists + prev_layer_distancer = std::make_unique(to_unscaled_linesf(po->layers()[r.begin() - 1]->lslices)); + } - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - size_t regions_with_perimeter = 0; - for (const LayerRegion *region : po->layers()[layer_idx]->regions()) { - if (region->perimeters.entities.size() > 0) { regions_with_perimeter++; } - }; - bool should_compute_layer_embedding = regions_with_perimeter > 1; - std::unique_ptr current_layer_distancer = std::make_unique(po->layers()[layer_idx]); + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + size_t regions_with_perimeter = 0; + for (const LayerRegion *region : po->layers()[layer_idx]->regions()) { + if (region->perimeters.entities.size() > 0) { + regions_with_perimeter++; + } + }; + bool should_compute_layer_embedding = regions_with_perimeter > 1; + std::unique_ptr current_layer_distancer = std::make_unique( + to_unscaled_linesf(po->layers()[layer_idx]->lslices)); - for (SeamCandidate &perimeter_point : layers[layer_idx].points) { - Vec2f point = Vec2f{perimeter_point.position.head<2>()}; - if (prev_layer_distancer.get() != nullptr) { - perimeter_point.overhang = prev_layer_distancer->distance_from_perimeter(point) + 0.6f * perimeter_point.perimeter.flow_width - - tan(SeamPlacer::overhang_angle_threshold) * po->layers()[layer_idx]->height; - perimeter_point.overhang = perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang; - } + for (SeamCandidate &perimeter_point : layers[layer_idx].points) { + Vec2f point = Vec2f { perimeter_point.position.head<2>() }; + if (prev_layer_distancer.get() != nullptr) { + perimeter_point.overhang = prev_layer_distancer->distance_from_lines(point.cast()) + + 0.6f * perimeter_point.perimeter.flow_width + - tan(SeamPlacer::overhang_angle_threshold) + * po->layers()[layer_idx]->height; + perimeter_point.overhang = + perimeter_point.overhang < 0.0f ? 0.0f : perimeter_point.overhang; + } - if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) - perimeter_point.embedded_distance = current_layer_distancer->distance_from_perimeter(point) + 0.6f * perimeter_point.perimeter.flow_width; - } - } + if (should_compute_layer_embedding) { // search for embedded perimeter points (points hidden inside the print ,e.g. multimaterial join, best position for seam) + perimeter_point.embedded_distance = current_layer_distancer->distance_from_lines(point.cast()) + + 0.6f * perimeter_point.perimeter.flow_width; + } + } - prev_layer_distancer.swap(current_layer_distancer); - } - }); + prev_layer_distancer.swap(current_layer_distancer); + } + } + ); } // Estimates, if there is good seam point in the layer_idx which is close to last_point_pos @@ -993,107 +1097,122 @@ void SeamPlacer::calculate_overhangs_and_layer_embedding(const PrintObject *po) // If the closest point is good enough to replace current chosen seam, it is stored in potential_string_seams, returns true and updates last_point_pos // Otherwise does nothing, returns false // Used by align_seam_points(). -std::optional> SeamPlacer::find_next_seam_in_layer(const std::vector &layers, - const Vec3f & projected_position, - const size_t layer_idx, - const float max_distance, - const SeamPlacerImpl::SeamComparator & comparator) const -{ - using namespace SeamPlacerImpl; - std::vector nearby_points_indices = find_nearby_points(*layers[layer_idx].points_tree, projected_position, max_distance); - - if (nearby_points_indices.empty()) { return {}; } - - size_t best_nearby_point_index = nearby_points_indices[0]; - size_t nearest_point_index = nearby_points_indices[0]; - - // Now find best nearby point, nearest point, and corresponding indices - for (const size_t &nearby_point_index : nearby_points_indices) { - const SeamCandidate &point = layers[layer_idx].points[nearby_point_index]; - if (point.perimeter.finalized) { - continue; // skip over finalized perimeters, try to find some that is not finalized - } - if (comparator.is_first_better(point, layers[layer_idx].points[best_nearby_point_index], projected_position.head<2>()) || - layers[layer_idx].points[best_nearby_point_index].perimeter.finalized) { - best_nearby_point_index = nearby_point_index; - } - if ((point.position - projected_position).squaredNorm() < (layers[layer_idx].points[nearest_point_index].position - projected_position).squaredNorm() || - layers[layer_idx].points[nearest_point_index].perimeter.finalized) { - nearest_point_index = nearby_point_index; - } - } - - const SeamCandidate &best_nearby_point = layers[layer_idx].points[best_nearby_point_index]; - const SeamCandidate &nearest_point = layers[layer_idx].points[nearest_point_index]; - - if (nearest_point.perimeter.finalized) { - // all points are from already finalized perimeter, skip - return {}; - } - - // from the nearest_point, deduce index of seam in the next layer - const SeamCandidate &next_layer_seam = layers[layer_idx].points[nearest_point.perimeter.seam_index]; - - // First try to pick central enforcer if any present - if (next_layer_seam.central_enforcer && (next_layer_seam.position - projected_position).squaredNorm() < sqr(3 * max_distance)) { - return {std::pair{layer_idx, nearest_point.perimeter.seam_index}}; - } - - // First try to align the nearest, then try the best nearby - if (comparator.is_first_not_much_worse(nearest_point, next_layer_seam)) { return {std::pair{layer_idx, nearest_point_index}}; } - // If nearest point is not good enough, try it with the best nearby point. - if (comparator.is_first_not_much_worse(best_nearby_point, next_layer_seam)) { return {std::pair{layer_idx, best_nearby_point_index}}; } +std::optional> SeamPlacer::find_next_seam_in_layer( + const std::vector &layers, + const Vec3f &projected_position, + const size_t layer_idx, const float max_distance, + const SeamPlacerImpl::SeamComparator &comparator) const { + using namespace SeamPlacerImpl; + std::vector nearby_points_indices = find_nearby_points(*layers[layer_idx].points_tree, projected_position, + max_distance); + if (nearby_points_indices.empty()) { return {}; + } + + size_t best_nearby_point_index = nearby_points_indices[0]; + size_t nearest_point_index = nearby_points_indices[0]; + + // Now find best nearby point, nearest point, and corresponding indices + for (const size_t &nearby_point_index : nearby_points_indices) { + const SeamCandidate &point = layers[layer_idx].points[nearby_point_index]; + if (point.perimeter.finalized) { + continue; // skip over finalized perimeters, try to find some that is not finalized + } + if (comparator.is_first_better(point, layers[layer_idx].points[best_nearby_point_index], + projected_position.head<2>()) + || layers[layer_idx].points[best_nearby_point_index].perimeter.finalized) { + best_nearby_point_index = nearby_point_index; + } + if ((point.position - projected_position).squaredNorm() + < (layers[layer_idx].points[nearest_point_index].position - projected_position).squaredNorm() + || layers[layer_idx].points[nearest_point_index].perimeter.finalized) { + nearest_point_index = nearby_point_index; + } + } + + const SeamCandidate &best_nearby_point = layers[layer_idx].points[best_nearby_point_index]; + const SeamCandidate &nearest_point = layers[layer_idx].points[nearest_point_index]; + + if (nearest_point.perimeter.finalized) { + //all points are from already finalized perimeter, skip + return {}; + } + + //from the nearest_point, deduce index of seam in the next layer + const SeamCandidate &next_layer_seam = layers[layer_idx].points[nearest_point.perimeter.seam_index]; + + // First try to pick central enforcer if any present + if (next_layer_seam.central_enforcer + && (next_layer_seam.position - projected_position).squaredNorm() + < sqr(3 * max_distance)) { + return {std::pair {layer_idx, nearest_point.perimeter.seam_index}}; + } + + // First try to align the nearest, then try the best nearby + if (comparator.is_first_not_much_worse(nearest_point, next_layer_seam)) { + return {std::pair {layer_idx, nearest_point_index}}; + } + // If nearest point is not good enough, try it with the best nearby point. + if (comparator.is_first_not_much_worse(best_nearby_point, next_layer_seam)) { + return {std::pair {layer_idx, best_nearby_point_index}}; + } + + return {}; } -std::vector> SeamPlacer::find_seam_string(const PrintObject * po, - std::pair start_seam, - const SeamPlacerImpl::SeamComparator &comparator) const -{ - const std::vector &layers = m_seam_per_object.find(po)->second.layers; - int layer_idx = start_seam.first; +std::vector> SeamPlacer::find_seam_string(const PrintObject *po, + std::pair start_seam, const SeamPlacerImpl::SeamComparator &comparator) const { + const std::vector &layers = m_seam_per_object.find(po)->second.layers; + int layer_idx = start_seam.first; - // initialize searching for seam string - cluster of nearby seams on previous and next layers - int next_layer = layer_idx + 1; - int step = 1; - std::pair prev_point_index = start_seam; - std::vector> seam_string{start_seam}; + //initialize searching for seam string - cluster of nearby seams on previous and next layers + int next_layer = layer_idx + 1; + int step = 1; + std::pair prev_point_index = start_seam; + std::vector> seam_string { start_seam }; - auto reverse_lookup_direction = [&]() { - step = -1; - prev_point_index = start_seam; - next_layer = layer_idx - 1; - }; + auto reverse_lookup_direction = [&]() { + step = -1; + prev_point_index = start_seam; + next_layer = layer_idx - 1; + }; - while (next_layer >= 0) { - if (next_layer >= int(layers.size())) { - reverse_lookup_direction(); - if (next_layer < 0) { break; } - } - float max_distance = SeamPlacer::seam_align_tolerable_dist_factor * layers[start_seam.first].points[start_seam.second].perimeter.flow_width; - Vec3f prev_position = layers[prev_point_index.first].points[prev_point_index.second].position; - Vec3f projected_position = prev_position; - projected_position.z() = float(po->get_layer(next_layer)->slice_z); - - std::optional> maybe_next_seam = find_next_seam_in_layer(layers, projected_position, next_layer, max_distance, comparator); - - if (maybe_next_seam.has_value()) { - // For old macOS (pre 10.14), std::optional does not have .value() method, so the code is using operator*() instead. - seam_string.push_back(maybe_next_seam.operator*()); - prev_point_index = seam_string.back(); - // String added, prev_point_index updated - } else { - if (step == 1) { - reverse_lookup_direction(); - if (next_layer < 0) { break; } - } else { - break; - } - } - next_layer += step; + while (next_layer >= 0) { + if (next_layer >= int(layers.size())) { + reverse_lookup_direction(); + if (next_layer < 0) { + break; + } } - return seam_string; + float max_distance = SeamPlacer::seam_align_tolerable_dist_factor * + layers[start_seam.first].points[start_seam.second].perimeter.flow_width; + Vec3f prev_position = layers[prev_point_index.first].points[prev_point_index.second].position; + Vec3f projected_position = prev_position; + projected_position.z() = float(po->get_layer(next_layer)->slice_z); + + std::optional> maybe_next_seam = find_next_seam_in_layer(layers, projected_position, + next_layer, + max_distance, comparator); + + if (maybe_next_seam.has_value()) { + // For old macOS (pre 10.14), std::optional does not have .value() method, so the code is using operator*() instead. + seam_string.push_back(maybe_next_seam.operator*()); + prev_point_index = seam_string.back(); + //String added, prev_point_index updated + } else { + if (step == 1) { + reverse_lookup_direction(); + if (next_layer < 0) { + break; + } + } else { + break; + } + } + next_layer += step; + } + return seam_string; } // clusters already chosen seam points into strings across multiple layers, and then @@ -1101,309 +1220,398 @@ std::vector> SeamPlacer::find_seam_string(const PrintO // Does not change the positions of the SeamCandidates themselves, instead stores // the new aligned position into the shared Perimeter structure of each perimeter // Note that this position does not necesarilly lay on the perimeter. -void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator) -{ - using namespace SeamPlacerImpl; +void SeamPlacer::align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator) { + using namespace SeamPlacerImpl; - // Prepares Debug files for writing. + // Prepares Debug files for writing. #ifdef DEBUG_FILES - Slic3r::CNumericLocalesSetter locales_setter; - auto clusters_f = debug_out_path("seam_clusters.obj"); - FILE * clusters = boost::nowide::fopen(clusters_f.c_str(), "w"); - if (clusters == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; - return; - } - auto aligned_f = debug_out_path("aligned_clusters.obj"); - FILE *aligns = boost::nowide::fopen(aligned_f.c_str(), "w"); - if (aligns == nullptr) { - BOOST_LOG_TRIVIAL(error) << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; - return; - } + Slic3r::CNumericLocalesSetter locales_setter; + auto clusters_f = debug_out_path("seam_clusters.obj"); + FILE *clusters = boost::nowide::fopen(clusters_f.c_str(), "w"); + if (clusters == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; + return; + } + auto aligned_f = debug_out_path("aligned_clusters.obj"); + FILE *aligns = boost::nowide::fopen(aligned_f.c_str(), "w"); + if (aligns == nullptr) { + BOOST_LOG_TRIVIAL(error) + << "stl_write_obj: Couldn't open " << clusters_f << " for writing"; + return; + } #endif - // gather vector of all seams on the print_object - pair of layer_index and seam__index within that layer - const std::vector &layers = m_seam_per_object[po].layers; - std::vector> seams; - for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { - const std::vector &layer_perimeter_points = layers[layer_idx].points; - size_t current_point_index = 0; - while (current_point_index < layer_perimeter_points.size()) { - seams.emplace_back(layer_idx, layer_perimeter_points[current_point_index].perimeter.seam_index); - current_point_index = layer_perimeter_points[current_point_index].perimeter.end_index; - } + //gather vector of all seams on the print_object - pair of layer_index and seam__index within that layer + const std::vector &layers = m_seam_per_object[po].layers; + std::vector> seams; + for (size_t layer_idx = 0; layer_idx < layers.size(); ++layer_idx) { + const std::vector &layer_perimeter_points = layers[layer_idx].points; + size_t current_point_index = 0; + while (current_point_index < layer_perimeter_points.size()) { + seams.emplace_back(layer_idx, layer_perimeter_points[current_point_index].perimeter.seam_index); + current_point_index = layer_perimeter_points[current_point_index].perimeter.end_index; } + } - // sort them before alignment. Alignment is sensitive to initializaion, this gives it better chance to choose something nice - std::stable_sort(seams.begin(), seams.end(), [&comparator, &layers](const std::pair &left, const std::pair &right) { - return comparator.is_first_better(layers[left.first].points[left.second], layers[right.first].points[right.second]); - }); + //sort them before alignment. Alignment is sensitive to initializaion, this gives it better chance to choose something nice + std::stable_sort(seams.begin(), seams.end(), + [&comparator, &layers](const std::pair &left, + const std::pair &right) { + return comparator.is_first_better(layers[left.first].points[left.second], + layers[right.first].points[right.second]); + } + ); - // align the seam points - start with the best, and check if they are aligned, if yes, skip, else start alignment - // Keeping the vectors outside, so with a bit of luck they will not get reallocated after couple of for loop iterations. - std::vector> seam_string; - std::vector> alternative_seam_string; - std::vector observations; - std::vector observation_points; - std::vector weights; + //align the seam points - start with the best, and check if they are aligned, if yes, skip, else start alignment + // Keeping the vectors outside, so with a bit of luck they will not get reallocated after couple of for loop iterations. + std::vector> seam_string; + std::vector> alternative_seam_string; + std::vector observations; + std::vector observation_points; + std::vector weights; - int global_index = 0; - while (global_index < int(seams.size())) { - size_t layer_idx = seams[global_index].first; - size_t seam_index = seams[global_index].second; - global_index++; - const std::vector &layer_perimeter_points = layers[layer_idx].points; - if (layer_perimeter_points[seam_index].perimeter.finalized) { - // This perimeter is already aligned, skip seam - continue; - } else { - seam_string = this->find_seam_string(po, {layer_idx, seam_index}, comparator); - size_t step_size = 1 + seam_string.size() / 20; - for (size_t alternative_start = 0; alternative_start < seam_string.size(); alternative_start += step_size) { - size_t start_layer_idx = seam_string[alternative_start].first; - size_t seam_idx = layers[start_layer_idx].points[seam_string[alternative_start].second].perimeter.seam_index; - alternative_seam_string = this->find_seam_string(po, std::pair(start_layer_idx, seam_idx), comparator); - if (alternative_seam_string.size() > seam_string.size()) { seam_string = std::move(alternative_seam_string); } - } - if (seam_string.size() < seam_align_minimum_string_seams) { - // string NOT long enough to be worth aligning, skip - continue; - } - - // String is long enough, all string seams and potential string seams gathered, now do the alignment - // sort by layer index - std::sort(seam_string.begin(), seam_string.end(), - [](const std::pair &left, const std::pair &right) { return left.first < right.first; }); - - // repeat the alignment for the current seam, since it could be skipped due to alternative path being aligned. - global_index--; - - // gather all positions of seams and their weights - observations.resize(seam_string.size()); - observation_points.resize(seam_string.size()); - weights.resize(seam_string.size()); - - auto angle_3d = [](const Vec3f &a, const Vec3f &b) { return std::abs(acosf(a.normalized().dot(b.normalized()))); }; - - auto angle_weight = [](float angle) { return 1.0f / (0.1f + compute_angle_penalty(angle)); }; - - // gather points positions and weights - float total_length = 0.0f; - Vec3f last_point_pos = layers[seam_string[0].first].points[seam_string[0].second].position; - for (size_t index = 0; index < seam_string.size(); ++index) { - const SeamCandidate ¤t = layers[seam_string[index].first].points[seam_string[index].second]; - float layer_angle = 0.0f; - if (index > 0 && index < seam_string.size() - 1) { - layer_angle = angle_3d(current.position - layers[seam_string[index - 1].first].points[seam_string[index - 1].second].position, - layers[seam_string[index + 1].first].points[seam_string[index + 1].second].position - current.position); - } - observations[index] = current.position.head<2>(); - observation_points[index] = current.position.z(); - weights[index] = angle_weight(current.local_ccw_angle); - float sign = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -0.8f : 1.0f; - if (current.type == EnforcedBlockedSeamPoint::Enforced) { - sign = 1.0f; - weights[index] += 3.0f; - } - total_length += sign * (last_point_pos - current.position).norm(); - last_point_pos = current.position; - } - - // Curve Fitting - size_t number_of_segments = std::max(size_t(1), size_t(std::max(0.0f, total_length) / SeamPlacer::seam_align_mm_per_segment)); - auto curve = Geometry::fit_cubic_bspline(observations, observation_points, weights, number_of_segments); - - // Do alignment - compute fitted point for each point in the string from its Z coord, and store the position into - // Perimeter structure of the point; also set flag aligned to true - for (size_t index = 0; index < seam_string.size(); ++index) { - const auto &pair = seam_string[index]; - float t = std::min(1.0f, std::pow(std::abs(layers[pair.first].points[pair.second].local_ccw_angle) / SeamPlacer::sharp_angle_snapping_threshold, 3.0f)); - if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced) { t = std::max(0.4f, t); } - - Vec3f current_pos = layers[pair.first].points[pair.second].position; - Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); - - // interpolate between current and fitted position, prefer current pos for large weights. - Vec3f final_position = t * current_pos + (1.0f - t) * to_3d(fitted_pos, current_pos.z()); - - Perimeter &perimeter = layers[pair.first].points[pair.second].perimeter; - perimeter.seam_index = pair.second; - perimeter.final_seam_position = final_position; - perimeter.finalized = true; - } - -#ifdef DEBUG_FILES - auto randf = []() { return float(rand()) / float(RAND_MAX); }; - Vec3f color{randf(), randf(), randf()}; - for (size_t i = 0; i < seam_string.size(); ++i) { - auto orig_seam = layers[seam_string[i].first].points[seam_string[i].second]; - fprintf(clusters, "v %f %f %f %f %f %f \n", orig_seam.position[0], orig_seam.position[1], orig_seam.position[2], color[0], color[1], color[2]); - } - - color = Vec3f{randf(), randf(), randf()}; - for (size_t i = 0; i < seam_string.size(); ++i) { - const Perimeter &perimeter = layers[seam_string[i].first].points[seam_string[i].second].perimeter; - fprintf(aligns, "v %f %f %f %f %f %f \n", perimeter.final_seam_position[0], perimeter.final_seam_position[1], perimeter.final_seam_position[2], color[0], - color[1], color[2]); - } -#endif - } - } - -#ifdef DEBUG_FILES - fclose(clusters); - fclose(aligns); -#endif -} - -void SeamPlacer::init(const Print &print, std::function throw_if_canceled_func) -{ - using namespace SeamPlacerImpl; - m_seam_per_object.clear(); - - for (const PrintObject *po : print.objects()) { - throw_if_canceled_func(); - SeamPosition configured_seam_preference = po->config().seam_position.value; - SeamComparator comparator{configured_seam_preference}; - - { - GlobalModelInfo global_model_info{}; - gather_enforcers_blockers(global_model_info, po); - throw_if_canceled_func(); - if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { compute_global_occlusion(global_model_info, po, throw_if_canceled_func); } - throw_if_canceled_func(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather_seam_candidates: start"; - gather_seam_candidates(po, global_model_info, configured_seam_preference); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: gather_seam_candidates: end"; - throw_if_canceled_func(); - if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_candidates_visibility : start"; - calculate_candidates_visibility(po, global_model_info); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_candidates_visibility : end"; - } - } // destruction of global_model_info (large structure, no longer needed) - throw_if_canceled_func(); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_overhangs and layer embdedding : start"; - calculate_overhangs_and_layer_embedding(po); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: calculate_overhangs and layer embdedding: end"; - throw_if_canceled_func(); - if (configured_seam_preference != spNearest) { // For spNearest, the seam is picked in the place_seam method with actual nozzle position information - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: pick_seam_point : start"; - // pick seam point - std::vector &layers = m_seam_per_object[po].layers; - tbb::parallel_for(tbb::blocked_range(0, layers.size()), [&layers, configured_seam_preference, comparator](tbb::blocked_range r) { - for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { - std::vector &layer_perimeter_points = layers[layer_idx].points; - for (size_t current = 0; current < layer_perimeter_points.size(); current = layer_perimeter_points[current].perimeter.end_index) - if (configured_seam_preference == spRandom) - pick_random_seam_point(layer_perimeter_points, current); - else - pick_seam_point(layer_perimeter_points, current, comparator); - } - }); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: pick_seam_point : end"; - } - throw_if_canceled_func(); - if (configured_seam_preference == spAligned || configured_seam_preference == spRear) { - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: align_seam_points : start"; - align_seam_points(po, comparator); - BOOST_LOG_TRIVIAL(debug) << "SeamPlacer: align_seam_points : end"; - } - -#ifdef DEBUG_FILES - debug_export_points(m_seam_per_object[po].layers, po->bounding_box(), comparator); -#endif - } -} - -void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const -{ - using namespace SeamPlacerImpl; - const PrintObject *po = layer->object(); - // Must not be called with supprot layer. - assert(dynamic_cast(layer) == nullptr); - // Object layer IDs are incremented by the number of raft layers. - assert(layer->id() >= po->slicing_parameters().raft_layers()); - const size_t layer_index = layer->id() - po->slicing_parameters().raft_layers(); - const double unscaled_z = layer->slice_z; - auto get_next_loop_point = [&loop](ExtrusionLoop::ClosestPathPoint current) { - current.segment_idx += 1; - if (current.segment_idx >= loop.paths[current.path_idx].polyline.points.size()) { - current.path_idx = next_idx_modulo(current.path_idx, loop.paths.size()); - current.segment_idx = 0; - } - current.foot_pt = loop.paths[current.path_idx].polyline.points[current.segment_idx]; - return current; - }; - - const PrintObjectSeamData::LayerSeams& layer_perimeters = - m_seam_per_object.find(layer->object())->second.layers[layer_index]; - - // Find the closest perimeter in the SeamPlacer to this loop. - // Repeat search until two consecutive points of the loop are found, that result in the same closest_perimeter - // This is beacuse with arachne, T-Junctions may exist and sometimes the wrong perimeter was chosen - size_t closest_perimeter_point_index = 0; - { // local space for the closest_perimeter_point_index - Perimeter* closest_perimeter = nullptr; - ExtrusionLoop::ClosestPathPoint closest_point{ 0,0,loop.paths[0].polyline.points[0] }; - size_t points_count = std::accumulate(loop.paths.begin(), loop.paths.end(), 0, [](size_t acc, const ExtrusionPath& p) { - return acc + p.polyline.points.size(); - }); - for (size_t _ = 0; _ < points_count; ++_) { - Vec2f unscaled_p = unscaled(closest_point.foot_pt); - closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(), - to_3d(unscaled_p, float(unscaled_z))); - if (closest_perimeter != &layer_perimeters.points[closest_perimeter_point_index].perimeter) { - closest_perimeter = &layer_perimeters.points[closest_perimeter_point_index].perimeter; - closest_point = get_next_loop_point(closest_point); - } - else { - break; - } - } - } - Vec3f seam_position; - size_t seam_index; - if (const Perimeter &perimeter = layer_perimeters.points[closest_perimeter_point_index].perimeter; perimeter.finalized) { - seam_position = perimeter.final_seam_position; - seam_index = perimeter.seam_index; + int global_index = 0; + while (global_index < int(seams.size())) { + size_t layer_idx = seams[global_index].first; + size_t seam_index = seams[global_index].second; + global_index++; + const std::vector &layer_perimeter_points = layers[layer_idx].points; + if (layer_perimeter_points[seam_index].perimeter.finalized) { + // This perimeter is already aligned, skip seam + continue; } else { - seam_index = po->config().seam_position == spNearest ? pick_nearest_seam_point_index(layer_perimeters.points, perimeter.start_index, unscaled(last_pos)) : - perimeter.seam_index; - seam_position = layer_perimeters.points[seam_index].position; + seam_string = this->find_seam_string(po, { layer_idx, seam_index }, comparator); + size_t step_size = 1 + seam_string.size() / 20; + for (size_t alternative_start = 0; alternative_start < seam_string.size(); alternative_start += step_size) { + size_t start_layer_idx = seam_string[alternative_start].first; + size_t seam_idx = + layers[start_layer_idx].points[seam_string[alternative_start].second].perimeter.seam_index; + alternative_seam_string = this->find_seam_string(po, + std::pair(start_layer_idx, seam_idx), comparator); + if (alternative_seam_string.size() > seam_string.size()) { + seam_string = std::move(alternative_seam_string); + } + } + if (seam_string.size() < seam_align_minimum_string_seams) { + //string NOT long enough to be worth aligning, skip + continue; + } + + // String is long enough, all string seams and potential string seams gathered, now do the alignment + //sort by layer index + std::sort(seam_string.begin(), seam_string.end(), + [](const std::pair &left, const std::pair &right) { + return left.first < right.first; + }); + + //repeat the alignment for the current seam, since it could be skipped due to alternative path being aligned. + global_index--; + + // gather all positions of seams and their weights + observations.resize(seam_string.size()); + observation_points.resize(seam_string.size()); + weights.resize(seam_string.size()); + + auto angle_3d = [](const Vec3f& a, const Vec3f& b){ + return std::abs(acosf(a.normalized().dot(b.normalized()))); + }; + + auto angle_weight = [](float angle){ + return 1.0f / (0.1f + compute_angle_penalty(angle)); + }; + + //gather points positions and weights + float total_length = 0.0f; + Vec3f last_point_pos = layers[seam_string[0].first].points[seam_string[0].second].position; + for (size_t index = 0; index < seam_string.size(); ++index) { + const SeamCandidate ¤t = layers[seam_string[index].first].points[seam_string[index].second]; + float layer_angle = 0.0f; + if (index > 0 && index < seam_string.size() - 1) { + layer_angle = angle_3d( + current.position + - layers[seam_string[index - 1].first].points[seam_string[index - 1].second].position, + layers[seam_string[index + 1].first].points[seam_string[index + 1].second].position + - current.position + ); + } + observations[index] = current.position.head<2>(); + observation_points[index] = current.position.z(); + weights[index] = angle_weight(current.local_ccw_angle); + float curling_influence = layer_angle > 2.0 * std::abs(current.local_ccw_angle) ? -0.8f : 1.0f; + if (current.type == EnforcedBlockedSeamPoint::Enforced) { + curling_influence = 1.0f; + weights[index] += 3.0f; + } + total_length += curling_influence * (last_point_pos - current.position).norm(); + last_point_pos = current.position; + } + + if (comparator.setup == spRear) { + total_length *= 0.3f; + } + + // Curve Fitting + size_t number_of_segments = std::max(size_t(1), + size_t(std::max(0.0f,total_length) / SeamPlacer::seam_align_mm_per_segment)); + auto curve = Geometry::fit_cubic_bspline(observations, observation_points, weights, number_of_segments); + + // Do alignment - compute fitted point for each point in the string from its Z coord, and store the position into + // Perimeter structure of the point; also set flag aligned to true + for (size_t index = 0; index < seam_string.size(); ++index) { + const auto &pair = seam_string[index]; + float t = std::min(1.0f, std::pow(std::abs(layers[pair.first].points[pair.second].local_ccw_angle) + / SeamPlacer::sharp_angle_snapping_threshold, 3.0f)); + if (layers[pair.first].points[pair.second].type == EnforcedBlockedSeamPoint::Enforced){ + t = std::max(0.4f, t); + } + + Vec3f current_pos = layers[pair.first].points[pair.second].position; + Vec2f fitted_pos = curve.get_fitted_value(current_pos.z()); + + //interpolate between current and fitted position, prefer current pos for large weights. + Vec3f final_position = t * current_pos + (1.0f - t) * to_3d(fitted_pos, current_pos.z()); + + Perimeter &perimeter = layers[pair.first].points[pair.second].perimeter; + perimeter.seam_index = pair.second; + perimeter.final_seam_position = final_position; + perimeter.finalized = true; + } + +#ifdef DEBUG_FILES + auto randf = []() { + return float(rand()) / float(RAND_MAX); + }; + Vec3f color { randf(), randf(), randf() }; + for (size_t i = 0; i < seam_string.size(); ++i) { + auto orig_seam = layers[seam_string[i].first].points[seam_string[i].second]; + fprintf(clusters, "v %f %f %f %f %f %f \n", orig_seam.position[0], + orig_seam.position[1], + orig_seam.position[2], color[0], color[1], + color[2]); + } + + color = Vec3f { randf(), randf(), randf() }; + for (size_t i = 0; i < seam_string.size(); ++i) { + const Perimeter &perimeter = layers[seam_string[i].first].points[seam_string[i].second].perimeter; + fprintf(aligns, "v %f %f %f %f %f %f \n", perimeter.final_seam_position[0], + perimeter.final_seam_position[1], + perimeter.final_seam_position[2], color[0], color[1], + color[2]); + } +#endif + } + } + +#ifdef DEBUG_FILES + fclose(clusters); + fclose(aligns); +#endif + +} + +void SeamPlacer::init(const Print &print, std::function throw_if_canceled_func) { + using namespace SeamPlacerImpl; + m_seam_per_object.clear(); + + for (const PrintObject *po : print.objects()) { + throw_if_canceled_func(); + SeamPosition configured_seam_preference = po->config().seam_position.value; + SeamComparator comparator { configured_seam_preference }; + + { + GlobalModelInfo global_model_info { }; + gather_enforcers_blockers(global_model_info, po); + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { + compute_global_occlusion(global_model_info, po, throw_if_canceled_func); + } + throw_if_canceled_func(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather_seam_candidates: start"; + gather_seam_candidates(po, global_model_info); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: gather_seam_candidates: end"; + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spNearest) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_candidates_visibility : start"; + calculate_candidates_visibility(po, global_model_info); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_candidates_visibility : end"; + } + } // destruction of global_model_info (large structure, no longer needed) + throw_if_canceled_func(); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_overhangs and layer embdedding : start"; + calculate_overhangs_and_layer_embedding(po); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: calculate_overhangs and layer embdedding: end"; + throw_if_canceled_func(); + if (configured_seam_preference != spNearest) { // For spNearest, the seam is picked in the place_seam method with actual nozzle position information + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: pick_seam_point : start"; + //pick seam point + std::vector &layers = m_seam_per_object[po].layers; + tbb::parallel_for(tbb::blocked_range(0, layers.size()), + [&layers, configured_seam_preference, comparator](tbb::blocked_range r) { + for (size_t layer_idx = r.begin(); layer_idx < r.end(); ++layer_idx) { + std::vector &layer_perimeter_points = layers[layer_idx].points; + for (size_t current = 0; current < layer_perimeter_points.size(); + current = layer_perimeter_points[current].perimeter.end_index) + if (configured_seam_preference == spRandom) + pick_random_seam_point(layer_perimeter_points, current); + else + pick_seam_point(layer_perimeter_points, current, comparator); + } + }); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: pick_seam_point : end"; + } + throw_if_canceled_func(); + if (configured_seam_preference == spAligned || configured_seam_preference == spRear) { + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: align_seam_points : start"; + align_seam_points(po, comparator); + BOOST_LOG_TRIVIAL(debug) + << "SeamPlacer: align_seam_points : end"; } - Point seam_point = Point::new_scale(seam_position.x(), seam_position.y()); +#ifdef DEBUG_FILES + debug_export_points(m_seam_per_object[po].layers, po->bounding_box(), comparator); +#endif + } +} - if (const SeamCandidate &perimeter_point = layer_perimeters.points[seam_index]; - (po->config().seam_position == spNearest || po->config().seam_position == spAligned) && loop.role() == ExtrusionRole::erPerimeter && // Hopefully internal perimeter - (seam_position - perimeter_point.position).squaredNorm() < 4.0f && // seam is on perimeter point - perimeter_point.local_ccw_angle < -EPSILON // In concave angles +void SeamPlacer::place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, + const Point &last_pos) const { + using namespace SeamPlacerImpl; + const PrintObject *po = layer->object(); + // Must not be called with supprot layer. + assert(dynamic_cast(layer) == nullptr); + // Object layer IDs are incremented by the number of raft layers. + assert(layer->id() >= po->slicing_parameters().raft_layers()); + const size_t layer_index = layer->id() - po->slicing_parameters().raft_layers(); + const double unscaled_z = layer->slice_z; + + auto get_next_loop_point = [loop](ExtrusionLoop::ClosestPathPoint current) { + current.segment_idx += 1; + if (current.segment_idx >= loop.paths[current.path_idx].polyline.points.size()) { + current.path_idx = next_idx_modulo(current.path_idx, loop.paths.size()); + current.segment_idx = 0; + } + current.foot_pt = loop.paths[current.path_idx].polyline.points[current.segment_idx]; + return current; + }; + + const PrintObjectSeamData::LayerSeams &layer_perimeters = + m_seam_per_object.find(layer->object())->second.layers[layer_index]; + + // Find the closest perimeter in the SeamPlacer to this loop. + // Repeat search until two consecutive points of the loop are found, that result in the same closest_perimeter + // This is beacuse with arachne, T-Junctions may exist and sometimes the wrong perimeter was chosen + size_t closest_perimeter_point_index = 0; + { // local space for the closest_perimeter_point_index + Perimeter *closest_perimeter = nullptr; + ExtrusionLoop::ClosestPathPoint closest_point{0,0,loop.paths[0].polyline.points[0]}; + size_t points_count = std::accumulate(loop.paths.begin(), loop.paths.end(), 0, [](size_t acc,const ExtrusionPath& p) { + return acc + p.polyline.points.size(); + }); + for (size_t i = 0; i < points_count; ++i) { + Vec2f unscaled_p = unscaled(closest_point.foot_pt); + closest_perimeter_point_index = find_closest_point(*layer_perimeters.points_tree.get(), + to_3d(unscaled_p, float(unscaled_z))); + if (closest_perimeter != &layer_perimeters.points[closest_perimeter_point_index].perimeter) { + closest_perimeter = &layer_perimeters.points[closest_perimeter_point_index].perimeter; + closest_point = get_next_loop_point(closest_point); + } else { + break; + } + } + } + + Vec3f seam_position; + size_t seam_index; + if (const Perimeter &perimeter = layer_perimeters.points[closest_perimeter_point_index].perimeter; + perimeter.finalized) { + seam_position = perimeter.final_seam_position; + seam_index = perimeter.seam_index; + } else { + seam_index = + po->config().seam_position == spNearest ? + pick_nearest_seam_point_index(layer_perimeters.points, perimeter.start_index, + unscaled(last_pos)) : + perimeter.seam_index; + seam_position = layer_perimeters.points[seam_index].position; + } + + Point seam_point = Point::new_scale(seam_position.x(), seam_position.y()); + + if (loop.role() == ExtrusionRole::erPerimeter) { //Hopefully inner perimeter + const SeamCandidate &perimeter_point = layer_perimeters.points[seam_index]; + ExtrusionLoop::ClosestPathPoint projected_point = loop.get_closest_path_and_point(seam_point, false); + // determine depth of the seam point. + float depth = (float) unscale(Point(seam_point - projected_point.foot_pt)).norm(); + float beta_angle = cos(perimeter_point.local_ccw_angle / 2.0f); + size_t index_of_prev = + seam_index == perimeter_point.perimeter.start_index ? + perimeter_point.perimeter.end_index - 1 : + seam_index - 1; + size_t index_of_next = + seam_index == perimeter_point.perimeter.end_index - 1 ? + perimeter_point.perimeter.start_index : + seam_index + 1; + + if ((seam_position - perimeter_point.position).squaredNorm() < depth && // seam is on perimeter point + perimeter_point.local_ccw_angle < -EPSILON // In concave angles ) { // In this case, we are at internal perimeter, where the external perimeter has seam in concave angle. We want to align - // the internal seam into the concave corner, and not on the perpendicular projection on the closest edge (which is what the split_at function does) - size_t index_of_prev = seam_index == perimeter_point.perimeter.start_index ? perimeter_point.perimeter.end_index - 1 : seam_index - 1; - size_t index_of_next = seam_index == perimeter_point.perimeter.end_index - 1 ? perimeter_point.perimeter.start_index : seam_index + 1; - - Vec2f dir_to_middle = ((perimeter_point.position - layer_perimeters.points[index_of_prev].position).head<2>().normalized() + - (perimeter_point.position - layer_perimeters.points[index_of_next].position).head<2>().normalized()) * - 0.5; - - ExtrusionLoop::ClosestPathPoint projected_point = loop.get_closest_path_and_point(seam_point, true); - // get closest projected point, determine depth of the seam point. - float depth = (float) unscale(Point(seam_point - projected_point.foot_pt)).norm(); - float angle_factor = cos(-perimeter_point.local_ccw_angle / 2.0f); // There are some nice geometric identities in determination of the correct depth of new seam point. - // overshoot the target depth, in concave angles it will correctly snap to the corner; TODO: find out why such big overshoot is needed. - Vec2f final_pos = perimeter_point.position.head<2>() + (1.4142 * depth / angle_factor) * dir_to_middle; - seam_point = Point::new_scale(final_pos.x(), final_pos.y()); + // the internal seam into the concave corner, and not on the perpendicular projection on the closest edge (which is what the split_at function does) + Vec2f dir_to_middle = + ((perimeter_point.position - layer_perimeters.points[index_of_prev].position).head<2>().normalized() + + (perimeter_point.position - layer_perimeters.points[index_of_next].position).head<2>().normalized()) + * 0.5; + depth = 1.4142 * depth / beta_angle; + // There are some nice geometric identities in determination of the correct depth of new seam point. + //overshoot the target depth, in concave angles it will correctly snap to the corner; TODO: find out why such big overshoot is needed. + Vec2f final_pos = perimeter_point.position.head<2>() + depth * dir_to_middle; + projected_point = loop.get_closest_path_and_point(Point::new_scale(final_pos.x(), final_pos.y()), false); + } else { // not concave angle, in that case the nearest point is the good candidate + // but for staggering, we also need to recompute depth of the inner perimter, because in convex corners, the distance is larger than layer width + // we want the perpendicular depth, not distance to nearest point + depth = depth * beta_angle / 1.4142; } - // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, - // thus empty path segments will not be produced by G-code export. - if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { - // The point is not in the original loop. - // Insert it. - loop.split_at(seam_point, true); + seam_point = projected_point.foot_pt; + + //lastly, for internal perimeters, do the staggering if requested + if (po->config().staggered_inner_seams && loop.length() > 0.0) { + //fix depth, it is sometimes strongly underestimated + depth = std::max(loop.paths[projected_point.path_idx].width, depth); + + while (depth > 0.0f) { + auto next_point = get_next_loop_point(projected_point); + Vec2f a = unscale(projected_point.foot_pt).cast(); + Vec2f b = unscale(next_point.foot_pt).cast(); + float dist = (a - b).norm(); + if (dist > depth) { + Vec2f final_pos = a + (b - a) * depth / dist; + next_point.foot_pt = Point::new_scale(final_pos.x(), final_pos.y()); + } + depth -= dist; + projected_point = next_point; + } + seam_point = projected_point.foot_pt; } + } + + // Because the G-code export has 1um resolution, don't generate segments shorter than 1.5 microns, + // thus empty path segments will not be produced by G-code export. + if (!loop.split_at_vertex(seam_point, scaled(0.0015))) { + // The point is not in the original loop. + // Insert it. + loop.split_at(seam_point, true); + } + } } // namespace Slic3r diff --git a/src/libslic3r/GCode/SeamPlacer.hpp b/src/libslic3r/GCode/SeamPlacer.hpp index 43727f1731..a7bb12f4f4 100644 --- a/src/libslic3r/GCode/SeamPlacer.hpp +++ b/src/libslic3r/GCode/SeamPlacer.hpp @@ -27,138 +27,136 @@ class Grid; namespace SeamPlacerImpl { -// ************ FOR BACKPORT COMPATIBILITY ONLY *************** -// Angle from v1 to v2, returning double atan2(y, x) normalized to <-PI, PI>. -template inline double angle(const Eigen::MatrixBase &v1, const Eigen::MatrixBase &v2) -{ - static_assert(Derived::IsVectorAtCompileTime && int(Derived::SizeAtCompileTime) == 2, "angle(): first parameter is not a 2D vector"); - static_assert(Derived2::IsVectorAtCompileTime && int(Derived2::SizeAtCompileTime) == 2, "angle(): second parameter is not a 2D vector"); - auto v1d = v1.template cast(); - auto v2d = v2.template cast(); - return atan2(cross2(v1d, v2d), v1d.dot(v2d)); -} -// *************************** struct GlobalModelInfo; struct SeamComparator; enum class EnforcedBlockedSeamPoint { - Blocked = 0, - Neutral = 1, - Enforced = 2, + Blocked = 0, + Neutral = 1, + Enforced = 2, }; // struct representing single perimeter loop -struct Perimeter -{ - size_t start_index{}; - size_t end_index{}; // inclusive! - size_t seam_index{}; - float flow_width{}; +struct Perimeter { + size_t start_index{}; + size_t end_index{}; //inclusive! + size_t seam_index{}; + float flow_width{}; - // During alignment, a final position may be stored here. In that case, finalized is set to true. - // Note that final seam position is not limited to points of the perimeter loop. In theory it can be any position - // Random position also uses this flexibility to set final seam point position - bool finalized = false; - Vec3f final_seam_position = Vec3f::Zero(); + // During alignment, a final position may be stored here. In that case, finalized is set to true. + // Note that final seam position is not limited to points of the perimeter loop. In theory it can be any position + // Random position also uses this flexibility to set final seam point position + bool finalized = false; + Vec3f final_seam_position = Vec3f::Zero(); }; -// Struct over which all processing of perimeters is done. For each perimeter point, its respective candidate is created, +//Struct over which all processing of perimeters is done. For each perimeter point, its respective candidate is created, // then all the needed attributes are computed and finally, for each perimeter one point is chosen as seam. // This seam position can be then further aligned -struct SeamCandidate -{ - SeamCandidate(const Vec3f &pos, Perimeter &perimeter, float local_ccw_angle, EnforcedBlockedSeamPoint type) - : position(pos), perimeter(perimeter), visibility(0.0f), overhang(0.0f), embedded_distance(0.0f), local_ccw_angle(local_ccw_angle), type(type), central_enforcer(false) - {} - const Vec3f position; - // pointer to Perimeter loop of this point. It is shared across all points of the loop - Perimeter &perimeter; - float visibility; - float overhang; - // distance inside the merged layer regions, for detecting perimeter points which are hidden indside the print (e.g. multimaterial join) - // Negative sign means inside the print, comes from EdgeGrid structure - float embedded_distance; - float local_ccw_angle; - EnforcedBlockedSeamPoint type; - bool central_enforcer; // marks this candidate as central point of enforced segment on the perimeter - important for alignment +struct SeamCandidate { + SeamCandidate(const Vec3f &pos, Perimeter &perimeter, + float local_ccw_angle, + EnforcedBlockedSeamPoint type) : + position(pos), perimeter(perimeter), visibility(0.0f), overhang(0.0f), embedded_distance(0.0f), local_ccw_angle( + local_ccw_angle), type(type), central_enforcer(false) { + } + const Vec3f position; + // pointer to Perimeter loop of this point. It is shared across all points of the loop + Perimeter &perimeter; + float visibility; + float overhang; + // distance inside the merged layer regions, for detecting perimeter points which are hidden indside the print (e.g. multimaterial join) + // Negative sign means inside the print, comes from EdgeGrid structure + float embedded_distance; + float local_ccw_angle; + EnforcedBlockedSeamPoint type; + bool central_enforcer; //marks this candidate as central point of enforced segment on the perimeter - important for alignment }; -struct SeamCandidateCoordinateFunctor -{ - SeamCandidateCoordinateFunctor(const std::vector &seam_candidates) : seam_candidates(seam_candidates) {} - const std::vector &seam_candidates; - float operator()(size_t index, size_t dim) const { return seam_candidates[index].position[dim]; } +struct SeamCandidateCoordinateFunctor { + SeamCandidateCoordinateFunctor(const std::vector &seam_candidates) : + seam_candidates(seam_candidates) { + } + const std::vector &seam_candidates; + float operator()(size_t index, size_t dim) const { + return seam_candidates[index].position[dim]; + } }; } // namespace SeamPlacerImpl struct PrintObjectSeamData { - using SeamCandidatesTree = KDTreeIndirect<3, float, SeamPlacerImpl::SeamCandidateCoordinateFunctor>; + using SeamCandidatesTree = KDTreeIndirect<3, float, SeamPlacerImpl::SeamCandidateCoordinateFunctor>; - struct LayerSeams - { - Slic3r::deque perimeters; - std::vector points; - std::unique_ptr points_tree; - }; - // Map of PrintObjects (PO) -> vector of layers of PO -> vector of perimeter - std::vector layers; - // Map of PrintObjects (PO) -> vector of layers of PO -> unique_ptr to KD - // tree of all points of the given layer + struct LayerSeams + { + Slic3r::deque perimeters; + std::vector points; + std::unique_ptr points_tree; + }; + // Map of PrintObjects (PO) -> vector of layers of PO -> vector of perimeter + std::vector layers; + // Map of PrintObjects (PO) -> vector of layers of PO -> unique_ptr to KD + // tree of all points of the given layer - void clear() { layers.clear(); } + void clear() + { + layers.clear(); + } }; -class SeamPlacer -{ +class SeamPlacer { public: - // Number of samples generated on the mesh. There are sqr_rays_per_sample_point*sqr_rays_per_sample_point rays casted from each samples - static constexpr size_t raycasting_visibility_samples_count = 30000; - // square of number of rays per sample point - static constexpr size_t sqr_rays_per_sample_point = 5; + // Number of samples generated on the mesh. There are sqr_rays_per_sample_point*sqr_rays_per_sample_point rays casted from each samples + static constexpr size_t raycasting_visibility_samples_count = 30000; + static constexpr size_t fast_decimation_triangle_count_target = 16000; + //square of number of rays per sample point + static constexpr size_t sqr_rays_per_sample_point = 5; - // snapping angle - angles larger than this value will be snapped to during seam painting - static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f; - // overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction - //BBS - static constexpr float overhang_angle_threshold = 45.0f * float(PI) / 180.0f; + // snapping angle - angles larger than this value will be snapped to during seam painting + static constexpr float sharp_angle_snapping_threshold = 55.0f * float(PI) / 180.0f; + // overhang angle for seam placement that still yields good results, in degrees, measured from vertical direction + static constexpr float overhang_angle_threshold = 50.0f * float(PI) / 180.0f; - // determines angle importance compared to visibility ( neutral value is 1.0f. ) - static constexpr float angle_importance_aligned = 0.6f; - static constexpr float angle_importance_nearest = 1.0f; // use much higher angle importance for nearest mode, to combat the visibility info noise + // determines angle importance compared to visibility ( neutral value is 1.0f. ) + static constexpr float angle_importance_aligned = 0.6f; + static constexpr float angle_importance_nearest = 1.0f; // use much higher angle importance for nearest mode, to combat the visibility info noise - // For long polygon sides, if they are close to the custom seam drawings, they are oversampled with this step size - static constexpr float enforcer_oversampling_distance = 0.2f; + // For long polygon sides, if they are close to the custom seam drawings, they are oversampled with this step size + static constexpr float enforcer_oversampling_distance = 0.2f; - // When searching for seam clusters for alignment: - // following value describes, how much worse score can point have and still be picked into seam cluster instead of original seam point on the same layer - static constexpr float seam_align_score_tolerance = 0.3f; - // seam_align_tolerable_dist_factor - how far to search for seam from current position, final dist is seam_align_tolerable_dist_factor * flow_width - static constexpr float seam_align_tolerable_dist_factor = 4.0f; - // minimum number of seams needed in cluster to make alignment happen - static constexpr size_t seam_align_minimum_string_seams = 6; - // millimeters covered by spline; determines number of splines for the given string - static constexpr size_t seam_align_mm_per_segment = 4.0f; + // When searching for seam clusters for alignment: + // following value describes, how much worse score can point have and still be picked into seam cluster instead of original seam point on the same layer + static constexpr float seam_align_score_tolerance = 0.3f; + // seam_align_tolerable_dist_factor - how far to search for seam from current position, final dist is seam_align_tolerable_dist_factor * flow_width + static constexpr float seam_align_tolerable_dist_factor = 4.0f; + // minimum number of seams needed in cluster to make alignment happen + static constexpr size_t seam_align_minimum_string_seams = 6; + // millimeters covered by spline; determines number of splines for the given string + static constexpr size_t seam_align_mm_per_segment = 4.0f; - // The following data structures hold all perimeter points for all PrintObject. - std::unordered_map m_seam_per_object; + //The following data structures hold all perimeter points for all PrintObject. + std::unordered_map m_seam_per_object; - void init(const Print &print, std::function throw_if_canceled_func); + void init(const Print &print, std::function throw_if_canceled_func); - void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; + void place_seam(const Layer *layer, ExtrusionLoop &loop, bool external_first, const Point &last_pos) const; private: - void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info, const SeamPosition configured_seam_preference); - void calculate_candidates_visibility(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); - void calculate_overhangs_and_layer_embedding(const PrintObject *po); - void align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator); - std::vector> find_seam_string(const PrintObject *po, std::pair start_seam, const SeamPlacerImpl::SeamComparator &comparator) const; - std::optional> find_next_seam_in_layer(const std::vector &layers, - const Vec3f & projected_position, - const size_t layer_idx, - const float max_distance, - const SeamPlacerImpl::SeamComparator & comparator) const; + void gather_seam_candidates(const PrintObject *po, const SeamPlacerImpl::GlobalModelInfo &global_model_info); + void calculate_candidates_visibility(const PrintObject *po, + const SeamPlacerImpl::GlobalModelInfo &global_model_info); + void calculate_overhangs_and_layer_embedding(const PrintObject *po); + void align_seam_points(const PrintObject *po, const SeamPlacerImpl::SeamComparator &comparator); + std::vector> find_seam_string(const PrintObject *po, + std::pair start_seam, + const SeamPlacerImpl::SeamComparator &comparator) const; + std::optional> find_next_seam_in_layer( + const std::vector &layers, + const Vec3f& projected_position, + const size_t layer_idx, const float max_distance, + const SeamPlacerImpl::SeamComparator &comparator) const; }; } // namespace Slic3r diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 36f6633ade..15ef51b309 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -708,7 +708,7 @@ static std::vector s_Preset_print_options { "layer_height", "initial_layer_print_height", "wall_loops", "slice_closing_radius", "spiral_mode", "slicing_mode", "top_shell_layers", "top_shell_thickness", "bottom_shell_layers", "bottom_shell_thickness", "ensure_vertical_shell_thickness", "reduce_crossing_wall", "detect_thin_wall", "detect_overhang_wall", - "seam_position", "wall_infill_order", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", + "seam_position", "staggered_inner_seams", "wall_infill_order", "sparse_infill_density", "sparse_infill_pattern", "top_surface_pattern", "bottom_surface_pattern", "infill_direction", "minimum_sparse_infill_area", "reduce_infill_retraction", "ironing_type", "ironing_flow", "ironing_speed", "ironing_spacing", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 25009af8e2..e9c4c51263 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2613,6 +2613,12 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("Random")); def->mode = comSimple; def->set_default_value(new ConfigOptionEnum(spAligned)); + + def = this->add("staggered_inner_seams", coBool); + def->label = L("Staggered inner seams"); + def->tooltip = L("This option causes the inner seams to be shifted backwards based on their depth, forming a zigzag pattern."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); def = this->add("seam_gap", coFloatOrPercent); def->label = L("Seam gap"); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index db93f3b1a1..5ad5122e50 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -646,6 +646,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, raft_first_layer_expansion)) ((ConfigOptionInt, raft_layers)) ((ConfigOptionEnum, seam_position)) + ((ConfigOptionBool, staggered_inner_seams)) ((ConfigOptionFloat, slice_closing_radius)) ((ConfigOptionEnum, slicing_mode)) ((ConfigOptionBool, enable_support)) diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 70562dc0a7..fe956d04b3 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -540,7 +540,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_perimeters = config->opt_int("wall_loops") > 0; for (auto el : { "ensure_vertical_shell_thickness", "detect_thin_wall", "detect_overhang_wall", - "seam_position", "wall_infill_order", "outer_wall_line_width", + "seam_position", "staggered_inner_seams", "wall_infill_order", "outer_wall_line_width", "inner_wall_speed", "outer_wall_speed", "small_perimeter_speed", "small_perimeter_threshold" }) toggle_field(el, have_perimeters); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 2bba25ff3e..bb9f7fb350 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1845,6 +1845,7 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Seam"), L"param_seam"); optgroup->append_single_option_line("seam_position", "Seam"); + optgroup->append_single_option_line("staggered_inner_seams", "Seam"); optgroup->append_single_option_line("seam_gap","Seam"); optgroup->append_single_option_line("role_based_wipe_speed","Seam"); optgroup->append_single_option_line("wipe_speed", "Seam"); From e94fe296eeec53a08173cea8d6912c2d6002178f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 6 Jul 2023 21:11:55 +0800 Subject: [PATCH 56/62] Improve seams: 1. Turn off wipe_on_loops by default 2. Change default wipe distance to 1 mm --- src/libslic3r/PrintConfig.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index e9c4c51263..451bb09ded 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2640,7 +2640,7 @@ void PrintConfigDef::init_fff_params() def->label = L("Wipe on loops"); def->tooltip = L("To minimize the visibility of the seam in a closed loop extrusion, a small inward movement is executed before the extruder leaves the loop."); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionBool(true)); + def->set_default_value(new ConfigOptionBool(false)); def = this->add("wipe_speed", coFloatOrPercent); def->label = L("Wipe speed"); @@ -3351,7 +3351,7 @@ void PrintConfigDef::init_fff_params() def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; - def->set_default_value(new ConfigOptionFloats { 2. }); + def->set_default_value(new ConfigOptionFloats { 1. }); def = this->add("enable_prime_tower", coBool); def->label = L("Enable"); From 93b8d7aeff207fad4395b2f8089f6d51a69108b9 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Fri, 7 Jul 2023 00:07:31 +0800 Subject: [PATCH 57/62] update po/pot files --- bbl/i18n/OrcaSlicer.pot | 41 ++++++++++++----- bbl/i18n/cs/OrcaSlicer_cs.po | 59 +++++++++++++++++-------- bbl/i18n/de/OrcaSlicer_de.po | 68 ++++++++++++++++++++--------- bbl/i18n/en/OrcaSlicer_en.po | 45 +++++++++++++------ bbl/i18n/fr/OrcaSlicer_fr.po | 61 ++++++++++++++++++-------- bbl/i18n/hu/OrcaSlicer_hu.po | 41 ++++++++++++----- bbl/i18n/it/OrcaSlicer_it.po | 49 ++++++++++++++------- bbl/i18n/ja/OrcaSlicer_ja.po | 41 ++++++++++++----- bbl/i18n/nl/OrcaSlicer_nl.po | 41 ++++++++++++----- bbl/i18n/sv/OrcaSlicer_sv.po | 47 +++++++++++++------- bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po | 58 +++++++++++++++++------- resources/i18n/cs/OrcaSlicer.mo | Bin 244180 -> 243463 bytes resources/i18n/de/OrcaSlicer.mo | Bin 280055 -> 279317 bytes resources/i18n/fr/OrcaSlicer.mo | Bin 286600 -> 285803 bytes resources/i18n/zh_cn/OrcaSlicer.mo | Bin 203739 -> 203101 bytes 15 files changed, 387 insertions(+), 164 deletions(-) diff --git a/bbl/i18n/OrcaSlicer.pot b/bbl/i18n/OrcaSlicer.pot index cdebf257c8..0c5a0cbdb6 100644 --- a/bbl/i18n/OrcaSlicer.pot +++ b/bbl/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4958,8 +4958,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -6067,6 +6067,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6599,11 +6602,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7085,10 +7088,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -7720,6 +7723,14 @@ msgstr "" msgid "Random" msgstr "" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -7775,6 +7786,12 @@ msgstr "" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" diff --git a/bbl/i18n/cs/OrcaSlicer_cs.po b/bbl/i18n/cs/OrcaSlicer_cs.po index a9e6534f17..4a5298de73 100755 --- a/bbl/i18n/cs/OrcaSlicer_cs.po +++ b/bbl/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: 2023-03-31 22:48+0200\n" "Last-Translator: Momo \n" "Language-Team: \n" @@ -5254,8 +5254,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Při nahrávání timelapse bez nástrojové hlavy se doporučuje přidat " "\"Timelapse Wipe Tower\" \n" @@ -6437,6 +6437,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Žádné extruze pod aktuálním nastavením." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -7079,17 +7082,12 @@ msgid "Internal bridge support thickness" msgstr "Tloušťka vnitřní podpory mostu" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" -"Pokud je povoleno, Studio vygeneruje podpůrné smyčky pod obrysy vnitřních " -"mostů. Tyto podpůrné smyčky by mohly bránit vnitřním mostům vytlačováním " -"vzduchem a zlepšují špičkovou kvalitu povrchu, zvláště když řídká hustota " -"výplně je nízká. Tato hodnota určuje tloušťku výplně podpůrné smyčky. 0 " -"znamená vypnutí této funkce" msgid "Top surface pattern" msgstr "Vzor horního povrchu" @@ -7624,10 +7622,10 @@ msgstr "Maximální otáčky ventilátoru ve vrstvě" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8341,6 +8339,14 @@ msgstr "Zezadu" msgid "Random" msgstr "Náhodný" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "Mezera švu" @@ -8409,6 +8415,12 @@ msgstr "Obrysové Smyčky" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Počet smyček pro Obrys. Nula znamená deaktivaci sukně" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" @@ -9800,6 +9812,19 @@ msgstr "" "Did jste, že ke zlepšení pevnosti modelu můžete použít více smyček na stěně " "a vyšší hustotu výplně?" +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges. These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Pokud je povoleno, Studio vygeneruje podpůrné smyčky pod obrysy vnitřních " +#~ "mostů. Tyto podpůrné smyčky by mohly bránit vnitřním mostům vytlačováním " +#~ "vzduchem a zlepšují špičkovou kvalitu povrchu, zvláště když řídká hustota " +#~ "výplně je nízká. Tato hodnota určuje tloušťku výplně podpůrné smyčky. 0 " +#~ "znamená vypnutí této funkce" + #~ msgid "Bridge direction" #~ msgstr "Směr mostu" diff --git a/bbl/i18n/de/OrcaSlicer_de.po b/bbl/i18n/de/OrcaSlicer_de.po index 4adf81a7f7..3796cc4423 100644 --- a/bbl/i18n/de/OrcaSlicer_de.po +++ b/bbl/i18n/de/OrcaSlicer_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -5421,13 +5421,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen " "\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste " -"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"-" -">\"Timelapse Wischturm\" wählen." +"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"->" +"\"Timelapse Wischturm\" wählen." msgid "Line width" msgstr "Breite der Linie" @@ -6641,6 +6641,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Keine Extrusion unter den aktuellen Einstellungen." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -7315,17 +7318,12 @@ msgid "Internal bridge support thickness" msgstr "Dicke der internen Brückenstützen" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" -"Wenn aktiviert, generiert Studio Stützschleifen unter den Konturen interner " -"Brücken. Diese Stützschleifen könnten verhindern, dass interne Brücken über " -"die Luft extrudieren, und die höchste Oberflächenqualität verbessern, " -"insbesondere wenn die spärliche Fülldichte niedrig ist. Dieser Wert bestimmt " -"die Dicke der Stützschleifen. 0 bedeutet, diese Funktion zu deaktivieren" msgid "Top surface pattern" msgstr "Muster der Oberfläche" @@ -7917,13 +7915,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" -"Die Lüftergeschwindigkeit wird linear von Null bei der " -"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " +"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht" +"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " "\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, " "wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall " "läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal " @@ -8689,6 +8687,14 @@ msgstr "Rückseite" msgid "Random" msgstr "Zufall" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "Naht Zwischenraum" @@ -8765,6 +8771,12 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" "Anzahl der Ringe für die Umrandung. Null bedeutet Deaktivierung der Umrandung" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" @@ -10224,6 +10236,20 @@ msgstr "" "Wussten Sie, dass Sie die Festigkeit des Modells durch mehr Wandschleifen " "und eine höhere Dichte der Füllung verbessern können?" +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges. These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Wenn aktiviert, generiert Studio Stützschleifen unter den Konturen " +#~ "interner Brücken. Diese Stützschleifen könnten verhindern, dass interne " +#~ "Brücken über die Luft extrudieren, und die höchste Oberflächenqualität " +#~ "verbessern, insbesondere wenn die spärliche Fülldichte niedrig ist. " +#~ "Dieser Wert bestimmt die Dicke der Stützschleifen. 0 bedeutet, diese " +#~ "Funktion zu deaktivieren" + #, fuzzy #~ msgid "Send to print" #~ msgstr "Zum Drucker senden" diff --git a/bbl/i18n/en/OrcaSlicer_en.po b/bbl/i18n/en/OrcaSlicer_en.po index 508cfb8f57..a0f376a185 100644 --- a/bbl/i18n/en/OrcaSlicer_en.po +++ b/bbl/i18n/en/OrcaSlicer_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5087,13 +5087,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgid "Line width" msgstr "Line width" @@ -6247,6 +6247,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "No extrusions under current settings." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6849,11 +6852,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7372,10 +7375,10 @@ msgstr "Full fan speed at layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8065,6 +8068,14 @@ msgstr "Back" msgid "Random" msgstr "" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -8121,6 +8132,12 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" "This is the number of loops for the skirt. 0 means the skirt is disabled." +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" diff --git a/bbl/i18n/fr/OrcaSlicer_fr.po b/bbl/i18n/fr/OrcaSlicer_fr.po index 928d57064b..63aa1ffe04 100644 --- a/bbl/i18n/fr/OrcaSlicer_fr.po +++ b/bbl/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril\n" @@ -5404,8 +5404,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "Lors de l'enregistrement d'un Timelapse sans tête d'outil, il est recommandé " "d'ajouter une \"Tour d’essuyage Timelapse\"\n" @@ -6634,6 +6634,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Aucune extrusion dans les paramètres actuels." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -7310,18 +7313,12 @@ msgid "Internal bridge support thickness" msgstr "Épaisseur des supports de ponts internes" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" -"Si cette option est activée, Bambu Studio génère des boucles de support sous " -"les contours des ponts internes. Ces boucles de support peuvent empêcher les " -"ponts internes de s'extruder dans le vide et améliorer la qualité de la " -"surface supérieure, en particulier lorsque la densité de remplissage est " -"faible. Cette valeur détermine l'épaisseur de boucles de soutien. Une valeur " -"à 0 signifie que cette fonctionnalité est désactivée" msgid "Top surface pattern" msgstr "Motif des surfaces supérieures" @@ -7912,10 +7909,10 @@ msgstr "Vitesse maximale du ventilateur à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -8688,6 +8685,14 @@ msgstr "Arrière" msgid "Random" msgstr "Aléatoire" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "Distance de la couture" @@ -8758,6 +8763,12 @@ msgstr "Nombre de lignes de la jupe" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Nombre de ligne de la jupe. Une valeur à 0 signifie aucune jupe" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" @@ -10218,6 +10229,20 @@ msgstr "" "Saviez-vous que vous pouvez utiliser plus de parois et une densité de " "remplissage plus élevée pour améliorer la résistance du modèle ?" +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges. These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "Si cette option est activée, Bambu Studio génère des boucles de support " +#~ "sous les contours des ponts internes. Ces boucles de support peuvent " +#~ "empêcher les ponts internes de s'extruder dans le vide et améliorer la " +#~ "qualité de la surface supérieure, en particulier lorsque la densité de " +#~ "remplissage est faible. Cette valeur détermine l'épaisseur de boucles de " +#~ "soutien. Une valeur à 0 signifie que cette fonctionnalité est désactivée" + #~ msgid "Maximum speed of X axis" #~ msgstr "Vitesse maximale de l'axe X" diff --git a/bbl/i18n/hu/OrcaSlicer_hu.po b/bbl/i18n/hu/OrcaSlicer_hu.po index ac96b28857..836844e263 100644 --- a/bbl/i18n/hu/OrcaSlicer_hu.po +++ b/bbl/i18n/hu/OrcaSlicer_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5124,8 +5124,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -6300,6 +6300,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "A jelenlegi beállítások mellett nincsenek extrudálások." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6906,11 +6909,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7430,10 +7433,10 @@ msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8135,6 +8138,14 @@ msgstr "Hátul" msgid "Random" msgstr "" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -8196,6 +8207,12 @@ msgstr "" "Még a tárgyak előtt kerül nyomtatásra és a feladata a fúvóka " "anyagáramlásának stabilizálása" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" diff --git a/bbl/i18n/it/OrcaSlicer_it.po b/bbl/i18n/it/OrcaSlicer_it.po index f8a8e89836..600b07989a 100644 --- a/bbl/i18n/it/OrcaSlicer_it.po +++ b/bbl/i18n/it/OrcaSlicer_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5086,8 +5086,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -5962,8 +5962,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " -"firmware\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" +"\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -6247,6 +6247,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "No extrusions under current settings." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6849,11 +6852,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7371,10 +7374,10 @@ msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8064,6 +8067,14 @@ msgstr "Back" msgid "Random" msgstr "" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -8120,6 +8131,12 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "" "This is the number of loops for the skirt. 0 means the skirt is disabled." +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" @@ -10000,8 +10017,8 @@ msgstr "" #~ "Quando si registra un timelapse senza testa di satmpa, si consiglia di " #~ "aggiungere un \"Timelapse Torre di pulizia\"\n" #~ "facendo clic con il pulsante destro del mouse sulla posizione vuota del " -#~ "piatto e scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di " -#~ "pulizia\"».\n" +#~ "piatto e scegli \"Aggiungi primitiva\" ->\"Timelapse Torre di pulizia" +#~ "\"».\n" #~ msgid "" #~ "When sparse infill density is low, the internal solid infill or internal " diff --git a/bbl/i18n/ja/OrcaSlicer_ja.po b/bbl/i18n/ja/OrcaSlicer_ja.po index e913a823dc..3f35a19b9e 100644 --- a/bbl/i18n/ja/OrcaSlicer_ja.po +++ b/bbl/i18n/ja/OrcaSlicer_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -5097,8 +5097,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -6245,6 +6245,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "現在の設定では造形しません" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6843,11 +6846,11 @@ msgid "Internal bridge support thickness" msgstr "内部ブリッジサポート厚さ" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7354,10 +7357,10 @@ msgstr "最大回転速度の積層" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8025,6 +8028,14 @@ msgstr "背面" msgid "Random" msgstr "ランダム" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -8080,6 +8091,12 @@ msgstr "スカートのループ数" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "スカートのループ数です、値が0の場合、スカートが無効になります。" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" diff --git a/bbl/i18n/nl/OrcaSlicer_nl.po b/bbl/i18n/nl/OrcaSlicer_nl.po index e48b2bf9d2..a84b54d145 100644 --- a/bbl/i18n/nl/OrcaSlicer_nl.po +++ b/bbl/i18n/nl/OrcaSlicer_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5153,8 +5153,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -6335,6 +6335,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Geen extrusion onder de huidige instellingen" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6945,11 +6948,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7476,10 +7479,10 @@ msgstr "Volledige snelheid op laag" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8186,6 +8189,14 @@ msgstr "Achterzijde" msgid "Random" msgstr "" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -8243,6 +8254,12 @@ msgstr "" "Dit is het aantal lussen voor de skirt. 0 betekent dat de skirt is " "uitgeschakeld." +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" diff --git a/bbl/i18n/sv/OrcaSlicer_sv.po b/bbl/i18n/sv/OrcaSlicer_sv.po index 11742381b8..8e193f34da 100644 --- a/bbl/i18n/sv/OrcaSlicer_sv.po +++ b/bbl/i18n/sv/OrcaSlicer_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -5087,8 +5087,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -6250,6 +6250,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "Nuvarande inställning har ingen extrudering." +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6746,9 +6749,9 @@ msgid "" "quality for needle and small details" msgstr "" "Aktivera detta val för att sänka utskifts hastigheten för att göra den sista " -"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets " -"tröskel\", detta så att lager kan kylas under en längre tid. Detta kan " -"förbättra kylnings kvaliteten för små detaljer" +"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets tröskel" +"\", detta så att lager kan kylas under en längre tid. Detta kan förbättra " +"kylnings kvaliteten för små detaljer" msgid "Normal printing" msgstr "Normal utskrift" @@ -6841,11 +6844,11 @@ msgid "Internal bridge support thickness" msgstr "" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" msgid "Top surface pattern" @@ -7361,10 +7364,10 @@ msgstr "Full fläkthastighet vid lager" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "Support interface fan speed" @@ -8059,6 +8062,14 @@ msgstr "Tillbaka" msgid "Random" msgstr "" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "" @@ -8114,6 +8125,12 @@ msgstr "Skirt varv" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Antal skirt varv. 0 betyder att skirt är inaktiverad" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" diff --git a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po index 9ae334c214..4c4a3c486c 100644 --- a/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po +++ b/bbl/i18n/zh_cn/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"POT-Creation-Date: 2023-07-07 00:05+0800\n" "PO-Revision-Date: 2023-04-01 13:21+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -5059,8 +5059,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add Primitive" +"\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -6187,6 +6187,9 @@ msgstr "" msgid "No extrusions under current settings." msgstr "根据当前设置,不会生成任何打印。" +msgid "Bed temperatures for the used filaments differ significantly." +msgstr "" + msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " "enabled." @@ -6745,13 +6748,13 @@ msgid "Internal bridge support thickness" msgstr "内部桥接支撑厚度" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal " +"bridges.These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" msgstr "" -"如果开启,Studio会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可以防" +"如果开启,逆戟鲸切片会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可以防" "止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这个设置用" "于调整支撑轮廓的厚度,0表示关闭此特性。" @@ -7256,10 +7259,10 @@ msgstr "满速风扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" +"\". \"full_fan_speed_layer\" will be ignored if lower than " +"\"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" "第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" @@ -7917,6 +7920,14 @@ msgstr "背面" msgid "Random" msgstr "随机" +msgid "Staggered inner seams" +msgstr "" + +msgid "" +"This option causes the inner seams to be shifted backwards based on their " +"depth, forming a zigzag pattern." +msgstr "" + msgid "Seam gap" msgstr "接缝留空" @@ -7972,6 +7983,12 @@ msgstr "Skirt圈数" msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "skirt的圈数。0表示关闭skirt。" +msgid "Skirt speed" +msgstr "" + +msgid "Speed of skirt, in mm/s. Zero means use default layer extrusion speed." +msgstr "" + msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " "layer time is shorter than this value, to get better cooling for these layers" @@ -9252,6 +9269,17 @@ msgstr "" "提高强度\n" "你知道吗?你可以使用更多的墙层数和更高的疏散填充密度来提高模型的强度。" +#~ msgid "" +#~ "If enabled, support loops will be generated under the contours of " +#~ "internal bridges. These support loops could prevent internal bridges from " +#~ "extruding over the air and improve the top surface quality, especially " +#~ "when the sparse infill density is low.This value determines the thickness " +#~ "of the support loops. 0 means disable this feature" +#~ msgstr "" +#~ "如果开启,Studio会沿着内部桥接的边沿在其下方生成支撑轮廓。这些支撑轮廓可以" +#~ "防止悬空地打印内部桥接并提高顶面质量,特别是在填充密度较低的情况下。这个设" +#~ "置用于调整支撑轮廓的厚度,0表示关闭此特性。" + #~ msgid "Bridge direction" #~ msgstr "桥接方向" @@ -13103,8 +13131,8 @@ msgstr "" #~ msgstr "正在准备设置页" #~ msgid "" -#~ "You have the following presets with saved options for \"Print Host " -#~ "upload\"" +#~ "You have the following presets with saved options for \"Print Host upload" +#~ "\"" #~ msgstr "您的以下预设中包含未保存的选项“打印主机上传”" #~ msgid "" diff --git a/resources/i18n/cs/OrcaSlicer.mo b/resources/i18n/cs/OrcaSlicer.mo index c22d3ac6b63541a095ee79912fa829f72ccf6d5e..e3711d910ba10a8e4f95818391f6861f52f8cf74 100644 GIT binary patch delta 49369 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 D$4P0g diff --git a/resources/i18n/de/OrcaSlicer.mo b/resources/i18n/de/OrcaSlicer.mo index 58a06b8931454ab876c356500cd2318c842297ec..39eaee470a014ac1b42d2989a05793ccfa05ab79 100644 GIT binary patch delta 54045 zcmXurWndLY+lTSZIl&!@7YGDG2<{pzf#B}$?oyn^p}4zif#Sv8-TeWIyHiS`KzXnK z&b-oT#t2x-@K>fLahQXFW25jY=1 z@gC;DST`NVkA;vvI>j(IMqvf)hlTM7=EVOnCFb}agTiu{8f&8l&>fTE08iI(rc#K> zfz_B0H=}Mij4|*oY6MU1@lU9ZB)(-DOoP#=XSQZXJvgtem$a6(RzgLh2KMLqP7?|W z@lDi7Z`t}?OicYgCc%#wh%s-Qj>bbhI4$ad8Brt5jT&K5?1we*Cp?3?|32z@PteUp z;TZ*mKII+98HbIrCO$_^P57V8C%ULPy@)!V=&s3yny7jgRKzx-2C@T_;vQ57FQGbk z7d4>gcbR{3&H2uOL>T9uNvbs1i+VUJ0-I3{AH{5V7Byx6q8j$!cbw#y5XWLD*1|2A z8e=|ioSB#rHPGFt<3Ap_jx&)$>W7X~7uVp==zHWi(J>uru0l|`kq0$`2vi3uTkD{5 zq$z5|T~HAifg0Et)QIPz?pu$_q3tdOjo=Wf;q$17+_XN$RMh`QJs{y@b7MMGhr%!c z7DcsF5%s`&_IwA_0|%hmAA!1VB6dJ`9tHI*`V*5RsjNAzk*F!CkGifCYIzMoP03u; z1D0af0LNL2dQj?T=6oj9ec4eFDTO*;2GeT&SEZ1K16?o#$D>BH1)JbuY>XM6n;VCq zt{aQFaT97p53TR4-?0kEW4|yFsgIhPj;QvBViKP3OrcPS11nIg;ZH1q30^u*5v+>& za4asy{dgRky)qkA=xf@bUKgX`bF7JPkr6r(Z!}EDX@Odn4^Y>A!5BL6gF+mP@z#Vo z35HS+!K_#n)xiPSAOApwKIc0#l7grZM`1Z^h#7FXJ%1b(sq0u3W4$+#tdFj4Y)K&j z_QA?H8Wqy37#km0U!ywu8DnDL2XkFKR6P|Y#9%Cr`LHPV#B8_$b=_@@kB>jt_5YCr z>VWSrll_TNBM8D!jIi}is9c$Z>exDrjyo_h?#Dp9gt72Croj8Cj{l1qSoDu3Cz5<5 z{(5jG4(NjXmSzR(#9FA4&cL5= zDJo*yF%cd@J{N)19ark79DX zjw$dh>bjV|0B>FYjLPb~m=a6dn=>WHoy>}3xOM%72#`V?EA zi<@-7o>y z;xc=@YIGCwW~dwcq2_b~YUID!^BYj1KY{A#1620Ew?>a)+E0yYCwC0j%xxJCXrrl% zOK}Kl`31)`b6XbEQ*Vr3uAoLb3YGP9P^)7lDuREYl6W6x!K|?YyiZWIu>|#1SOlNC z6x2Y5*rwr}s1pTHA?}Xq=`W~IkG0OlWYpJSPCST{@jdp#VR6iqd_(OIG2@znhM=x5 zgo?P^j)Fqj4|U;mTi=XIrn9J!UPg7~HEQGm@dBK@_!G9ka+nR*T5q5_94)>XU{X|v zGoW_D!kAC%zYYcUWE?8A^HJHk4E2`#9TlNJa5Wx8b);hg(?J)tV~#{k;X161*RUdH zOK3XU7xPp99rNG=%%Sz4G*N)}14JYi;KX30XU0we|7Hq`z*AJuKBGRJX8p!6GAa^{tnKab zUr>=7X&sLW{WR26EklKT8>-#Qm|3pKL)_V_o{ z$WtW?aLQsaRHTNZmho)V6s|{gWE?FQsXy`_E>s zN1+;?i&|zIP&?aREQ%*k%PugDIUXPN;FPGyrpH&9#~x3Y)vRiyC2l z)B}21T~vc(?fI$Jb*KoPKt=8eD#R~Q?~EAf0=y5aDN!9QiR$P;)b*oW3R*VfP|33c zE8#x8iE)C=vU!Zkfp4ge#z}7?k`{G5FKT&}Mvb^WDpxw79@Gcb{yujZm�GD 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 delta 54734 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 G>i+=75Nb03 delta 55125 zcmXWkbzl|8+Q;$DIl8}p)nmN71pldIOF3u&aeN|QODVS#c_gg z2gbl%m=X_TalC`&Fx^$hiNy9;3>RZu{0C#D8+#-m>EA} zc1(BOahhRu^y5aPkIoj1z`a-zUt<9*e8X{aU~f!;%P}_Y!=LaZY5>cMMleY^Ef>mgJ`j$wbE?_8pw zkkq(kMp_G1uZIb-0Vcvu7>q+u9UX~!@C?)g=b<{Z3N^ytu^%2o4Y2fW$4QJ;Q0=rt zR}X4OAt$y+O~o7>kGHTEcDUosmGdW(9!#p4J&_g7i|3{DsmBb&43DE66!@z z9j%4xX!E z@o+b)ofD`?UbW|+q8|7a)qa#m<~lbXg$^7@h3eU8RFcfKZnPdoO~EzPbe2F0#=cyS{9&AdzG&aE{ zsD^`{nd@Sq_Jdrgk+-(~VjYZCIX)g0k!z@_d4}GpG)J#r~N0jk#|lYVNnALi{(D#~YX)GrcwE%VPxf`dAIep{r0{qmT&i zp&I&#RWSNH6VkdElX@#_7gR_4q2_!f#>NS@J{RLtUy4O>D;C0c7=}6jGxs(5kATGG zKwA#P!Ct5i47c^Es1YniMdFaHKS$+C{P(6~*)b~h0+a1yWluX zik~nQ#{XoV8}3pV%YkC3WpNa>&QGGIYyIj4%LwXs2g0=NPa~{Xa?$m%TZId0rj9gsL-FX z^?y+Jzd_yi15;wWujZwc6^Cd+ETu4*6Pdm_&QM&64Au$x&NhpIAH4bS0`|ZXyc>VP zt=JPogMyq9I1g1%=L>R%;S3y!Df~fRhZmwExDwToV}l4 z2W3G$ATR!bRZv+SC2Ei}8)KrTW+`d_>rtWJfokt4Y9l&>YVQ*2y1Tai99=c|iGt?z zJF3BG(M&x7s-Du;GunDMYR)539WIY*ryi;UjZqKmgvyD&sDX^fB)9}M1v{bzxnAJ{ z2Nb%Os2ly!%>&}0ZV2ES%x90^MTPt=>b}@9OoIW`$P1y)mqdlW5vrrTFfop>&W^$N zj~=j|18V3HYHqKfHk>E;KTH(UB+oX~++M|W_zLyFgt5#>Q=qaw47EB6pdwffmBckL z3;u~U@R3WQ7=?ndgS?kae^dioQ4Jrk$B&{y9301VGzKcvsjcCtjupWiSQ{td2<(SR z;+n`#MC}iAQ3G{%P|yv>QFHnQH8-*2nF~Wv^)jerYK{tNTU5k`pyqfQ=EfD+60c(z z7L9N0i0bex)Bsl^9d@0q6tpFtz&!XE)sZv_OayYEk~1IbEm;iJKsj86wNV}Uj_P2- zghAepnH)8R#jy^y$4a;t)zMgqf}Ffs|HUZe;y^FVjw`VMUdDWwAhGFKc~pH6Dv7qB zI(`)M;sY#ezVv3I9Yj zcn#Ii9aJP!{Ml9Rua|W>R1RHp$0P39$$=l@LE)4x8O58oYplbHU~^7 zccPZX5mXPaqDJ@(^?+#Uj0sT*k; zdi+y*b3-N!qn;Ht=k>5MHo>d78nxa>WH7lf7uDg_sL1R=-FMEOzk<5{Au0mjQMu#B z%V-{$3Uxy|)W#Evi!eJX#HUe7cN5jXGc1AMP~Qv1GMNaJ!e-Q)qOSiF^`MjX{54zu z4_Vf(;|nnj#KKT6jECtl5*3k#sD@hGdJoi83_^u|j6FXM+f!eHnwmJF=D|r&14xgG zKu*-Vp&S-g)-|UP$$|N(x70<{lsrd`EK6n+k#N+5^Poap4Ao$5Ye&>bhgm10uAhf` z$E-kYJbUc<*H}PV|D8fM%%8=KyftdQjz+D9nV1K6p_1$sYOZ5tHLD>FD%o;j7*MvP0<&VQY$kH~&{abvDX8altSwPJ?uwf0k*FdWar)F)lyFw@Qq{FV9&RLAm!v;Otq0pTXZV^DKG5%s{?s1E)QYvWctjxn>F5nMub zhtOW}P~GG)na8Z3$HsQ-)wF=-xiyawK)-UpQvb@Q5tv~VdX)ZKABjzMi0 ziSwD|m;x1vw5XiOY|W4APLc7NGa6ZcSeP&4DP;)#BwE-BA>V6HoI;KGB5Lk$p+^1yHAS!Nai_F- zKy=i*q8ygS4yfxkpdPf>*8f5!@g-EGUt$D)F3tK^a)p&K5h!S_f(m7GRD-{uzIunE zKAq;GLcbk#|7pyGH&HvEzpTlj^r#0HL0w-Lb$w@het=6s>vjePa5XCQ$5C^A2le2O zs17A8XXZ8oY9x745h{-AXhnOxA?p4%_WU4JWJjZ>dJ=l;e+dQMxEa;61E>bi*yGo% zPf#8BjA|%Wd1GQ!L{g((G6hi&?uWT>GM2*c z)|kGc>G5c+N_`F%!^hYQvs5xaz$`>{ltcb(JPxNNRAp<1Ztp#FqYPT1qzyi zI`)G0sJZHaF{|SaYWY3D4EP2$_erao^Mz3nDv5evCDc^aLEYCJ`(r2U z%JZFv6cpNe)y#u_MlHAgsN<7xG%iLxC`)y-5mm#U)PF|}Aaf1#LuO&r9Irxka5riI zcTnxV!7LcPChNa9gcJyXd;Vt(#~+vx!)u$+ z*R-}oUDq93U?0>}U#-phzewQ)2Q-31bxi25U~}p(Q4g+O*EG-&wHlh)dOuWz2BWT< zh)TZM)=j9;A4Tm47f=Jdj@sfM*Jb@HS%T}CU#SF8bH5YS@LALicTpSCE6k1`?fKC9 zX2kh1h+JucwK(6bf%#nj9W`>Np}8&!rlXn_w_s(Lg61@+kuel^Q?G(6FlJ+uOq)>+ z?ZPOy4>hvCP#rsq8u?Xw{52|4Us0h>+QhtDvY`gl9KH45#U2=h>d|=A92akDJ|=6T zve~tcu}(&HU=AwTmZ3Vb9TmBKsCLexmgT>wozZD#aw;v-LDwlpL37anHG-a~27g60 zv=G(sM%2i+qpthYdI`0~zCh(bwC1K`2~cmvRH$W_1(gGNQSBDSXj=bOyaMYJm4r=j z0{(*D+_f+dj)J-|7HV0gLcM&7qdMFQ)xqAV2Mt6&4!4d*b!0qh3T9#xt^Z{dG#CDs zX4xb}HJBcCJTI!j(x?$t!j4$q)(@f9^;uNI53T=M{jJOtCO{1+B`Tt6(fj>hs67#e z+Alsw5W|J2WkKXZM`z)qh1fy&IBxi2T=nI>a8hc{UxNJIn06@Nq$s=Rc*Zi zs^?u%p&X8S&_Yy0n@}Syz{`Ss#IlOi|Q;YGGWh|DhBjagq+;->8N! zV?lg`IWa?D6Uy4C4)sE<83)u* zv;pRVc&K`MEQDE65on9rSZ1OgcmUP#8B~K8Q4hF<+F)LzBKif_V9bFgiMOG)>H`B= z{|epT9MGIzM9uv})D*lyo%ati5r~hfXGC=*!X9so8gVz&{S#5w%|Uf!g+0CrwU6vZ z4d9?_Pn<<1%?;Fu-k@&$V9y5)HXV$O8etk#LlLO!@}nYF($*`Y+No{p4Nx6xg_@Es z7>e#-3i&B4N3Gx6xEw#A-fjzskZ#!8ZLK-)ItM8zR98`1`vBFmfkVylrKqXdgt_q`=EV>8eE2ZaU_sP%HLw7-LPcc0 zbs1{p>rlzO2a{<1pQWIYKSXup2Wl0>9&U0V9co0mP&ZaWMWh)j#2rvm&=vK-eyF4y zikhlPs0S}W-Tyo4x+54<>;E(bW#cte2kuy(V|MDFQ6CanMwkbOqc`WaUJ~`ztb%H| zI_kmoQ6cY$>QFz_z{a5NpO3DRXa$AlxE}SOcq2_H6QLrL3DvP8_&ZiaHS`_zk(p?e z8DY4!h_#Bf32M$eTSr*uj$-}m#AXgC*^Z(<7@lDUOg`GY-wR_}>g_QzjzwL+*?Q6X z(fZSvAn&D96hCuaGgJf`jy1No_8m(W>%?ddXd{|o-DEvseTeFiZ=Ct1QwS6k#!^1;ru?-6ek^TmTfB36l8GifpBXcRKtZ(Q&G#->!BXh6}1d?UlW{*nu<@T z2*v%?oX?J0julan>WW`+3hMfaznRy!yOe^G6fN-VoIKAC1bDNvM&pMk4PzTPUc3gQ(?n6t#{|p|bf7YKk7AKCwPn z{S(dWHXbTDBT)AjMO{}4bze2qzS0zR-8&4!ph=STm)$Ec0_zw|!UbDVBRq~8!2{Gj z@DeqW=#$Mz(xa{mL%lP~p{}owUPMqM?u44s-l&fD$M{(RAl_q%qLtb)bWz2`zm2qtc%*3|H3TjOlSS;f~?cc z+~mao^^&L_w?a)tXH*1+qdGVqm0Xih51xq{=|)t?c3V%Nm&_R8_!HFgV$Cq`n4~jU z{~BRY4wS<2_y|wq2;4r?JgCSlV`SU7XqGr4_)E)N5k^ zXQDd1-KC%&9zspQIaG-5p+=r&j+v`G)>^2k>5hs(FYJZ`QTIPbCFc(;j49@toT!UB z-vO1R1Fi0F6gqHV0fu6XdFF-)R1eFbLSF;5d>UBWVt{%NR3xUMu3L(ly0xfe+=hDa zF>HW0P|2QezPAirrxJyh9O#Q`=sId-Pfx-dA zTmv~aXfNoC+L~Q^d?ae* zQ*39!U9xxR(!g;6$H=*8=+fXAtg@f@nDyf^U;CK*U&v=;nxs@govsRfLS?y9#4|iJk zqaO4(sv~Dn$#fa@;D@M=eYNLft~OH^AGIn{quMKoS{)@YJ2t~GoPdhZF4S|}!xR+4 zQ`SqUq`HNg>o=&8eaH3~Z;iRJA1YUdp*lJdHAT}=Q@0nD1E+8?UPX0mz*-ZzVaR#c z8BL)$C#Il6eIC`*mzWn*tut@MnwXCIIMkQVTC9XI*PGQ*7d7I6sI7bsDk8Tq6u+R_ z%do**-vGV;{^wHA&U6+_Vz!N@fi9?!Z$^di27aZmx3BxgL=U4SO^c{1+v%KYR+HW7Ua~WdJ~Ia zoVKg&jAXk^ zwr4>_A`&xW346Q)dJje=-3ZhiPsLn#)E@teib$;8rrpe_>k95>{VVCZaX=fL5-?4}+- zb>Jo@!EdN#m1wVdKnhet=`a*?;V;+_6~Pmzj$B3E{|_psKA^r091L``r zI|U`%7*tj+!2ol<4fj&Nyx)v;<^j{e6{ux+1l7=ER3u)bIvjM+WO+2y`Pis+pV%J% z3DvOxGG(rlpMvJF9O}Ya*asV;8a#)}g)6A#^8_^|FHsNpgz7-hA@f#DfHkS-#4

zwJ#h+J?EkIEqcHI`$0jWO?ucoAQbh15Qcg{8PxeI)~5D&R}3aneNa;{@Go=SSX55U z!3?;~9>0c)@Ke+d`yHcd{U+o+MexAl}q&8Jobssr^=9c+)9 z+d-(Qn~r+mT))ax@Wa;Qo-k9A5;fHsTnZXNDO3+Dp${A5d2EIXY3`H8N~mmZ zg<1_mQ5_zI>cC`FGA>7r^mlvwpsim)wf6|MBf8EhlVqt;Jkk6 zDpDIT6t|+Tzlquxo}f0C*r&~a(xW<-8x_&=sE&_AlGAl2Qcw=evMxtGU<)cDJ5eD$ zj(X5J>ur1d87cyA?eXuZ4#YZR<~|*&{oJVQN}$eH#)LfIX-PpL>4jRizoC+7l|6nC z70TwbS+VHHr^gziJF>2sHwP(>UgyC=7H%@xs}zL3pId(=*Oz)Dhq2;&6P*8a#k{zztL`Jhr~H=l?^EJl-X<8nU7~Rvwirtx+TIh#FWARD_44reLl;zwQ$2 zUnAVg0gZSsYVJ;=mf1PXj;~N1N_*LKFbp-fWl06g7usQ5!}VR7eM5Ra}GW=x5XjgRhzojaaD2)k59Z7!P7cThDRLY~e*w z1FM7TU_(@7-4PVjqjA=ys0;r@jrbsHPS2no@X8+lfr>!v>*nu$lj8{LeX%TW#cx=L zdg+_yL32<8ScLkrT8+GAUFRQr;xnqj;9F*S#YfdEqUN$LYCmX->R4ACgahsIYM zb=zF`6E>wDhPr+{YQ(cpFSP}jP3wOv1vUH+DyiO}Hi|fR%<<%?kY~Yam=iUUA*e`= zLq%{Rs-0C>9(Q67^#5a~xDTrR8JG(NaFl!%zzqc0j!K=Q6rvekI%*$)R&_=`VrlQ6k^;nKe4RBM$|81Zp?MxWOrLE zO1(cS7j|GDyoy@qH6ECEMO#$EQ&1yaf?4rT%!`k49;SV0BD(t_>t7>3Xb&8>p2Ha& zzlzF%ZjXYT)i@9}qR_`C4VvE8HV8n?1@27Ovieol6W-!g)^SGrokpp zO^;e(8BTOSUAPgIRC`g&>@;cvxq=Gy6V%8)phg=0%;Zje)V|OPwf_5{?i+`S&^%Pm ztaB-7ZjYcEyog&_K6gvFDU=cT+jfOa|zA#VTPWcNVS z4tENb8y`{0nE8WgzZ7cy*TEE8|DEiCQK(SO#{lle5WITUNLHL$qf%>5a^vHmr(TpUogRzPKERg8)CP@!yz zn&S>w0tcZssJ$48Z&AsZ?YnvD48y_Hub?)ZdOw1kMfeUE<8+3lB#aDlecoKx3G#U_ zlioN|7h-4Z@AG;8ruz|ARo(CNrs^pEMmq}5aw#;VkRh7S+pz}YUg~Rb0(Ok<^Zp9py8spZ5=p zn_*w-r?6rWJ0gGHq!CVu?eqS$b0aEO!sGb7-vPHmtqyk#1tryXR7fw|3u49fdA~f$ ziTOC*1~cJ2Jcb8wH~tpS=l#WF#rQs_I1gTcdGK}upEHy5i4*y}Up}qH0QF>vO?&xq zfYyIk3bi@$6w6@oBtGxgaig#X^*gBJxsv+4w_0CpN&PV9$IQvh)U-e?*Ns>iFQcX) zV{)JO?*v=o9O|)C_`DxvR-pI$|Kk*twJ%WX*-7d1{k?lWvGzf#UALS@_Fz1o*1CI0yUt&@gAm3?Q>ph{r{k#o$hrSpZ9~s^0X#IcTgip z7VtTXunx}0_m~-{rSp0JS#1w08N<_?4(&oM&#$Ntm6#cP-s?Ltwx(VSm3-UL-A~~z zg(sL%V2r$4i4xDjecoP!r}8y>}9v-q5SSU0QB zxr52FnTUQw9ZwtP&S`9cFEApf z32h+4=l$ZcJL>#;)T$Vq%jfNUA5i;DwA`j1J2&gU6bDjqKuOjd6|&{1x!Q=j!I#J9 zy(OcecEmV19^<1ns(Gl5YX#QCji?RDpV#NTtQw-)?TG4FFVwrDjGNCST|>;sfnlf< zD=-XqqdM>y)xZnXmiy7xgCorY;-YrSw5Y8*6g4H;?D=x24%SC)?JZExal28_o;(uu zTAhoDaILNHLp|^;CdHff{5yY*3~BT?-YLA75Mm6WYf5$le$>pFud zsApqQ%WDc2!i%U8Cn#VV`U#^_4?}%Ab?=SJ^^+898853_xC^jDTHuhC@MKtq8k1K6}ls+*Y7`=4d0;}3KTKdWkKak0aOR8pjJ~O zTVITt^9|SnccQLORh0FwEX-L{bHRvE%dQF5!VQ=l{l$FVuhmnbw(8c_-l+S>pgKMu z)q%CB5bs1yB72jQ^q{9lL~?>f9~`^|S!0XGKvBHbCusT~RmeMveSmEP(%^ z9+0D?IUZ@PfLaZWQ0u=RD)iG)9a)5m^eR+`-Tn50GpG?=#{j;;^q8oW>1jUH0}G=X zDvg`53Pzw)nq-1pcmOwJckETh=S;;%SeB3uEbDX5P(N7CyUul{mG^o7G_qa=pZC`; z`6`-f?h5J#fB3mUB+6YWeLuFANYF627;q6e7T!YGijn+R=`@{)UB(9<&d=I_< z{g2NSwBf|AVnSUW73!|2560UhG@l=gh_Rm=P=1FgJ9?*3>tkJ~$HBG!LwSTAq#ZJa$E` zo>H|;hi9UadLF6+%TW=DQkyB$oF}B95NAOpMGn*kQxp}6GS+&iNVG@o3odGppN&ek z)u@jAg=z6BDyctVI!s*0T$c|ubv5g-{`KI79MFTBqn1y1d%fce>dlq%y zW9v%{Q2)=?lh!rur9yQmJ8EDhP#vyrZBdu?uLIrff#LSTX{Zh@!9=*#olp|0bSY*#{#;nx$qaO4O z)q$^8e|?jLF;V+PT+D)b?eS))jb-B=3$K_y$J2IliS7iz#Kkpa5S4GQHr@B%eg`5Kz6u7J9*Hfjo5 zp*q$FS^myodwd8gN2Z~!-;TQO2x=LgLUkl&BNKtDs3fj|akXW&qo5J=M%_3NwT_3Q zdOiUa^0}xFh&8AU=5JI4E@67Sjap5<#-_t5Py-4_J+L_HIdxI1r!gkb`tMCa%Vi8| zZdRfi-iW1f2daVZs5wmB#LRUv>rbc-rA1vAj_PnJ)D+gT$D7&Xy-+`*jYNL`#cQ&u zxo|h?XTiU*GCssMn5UVk&%u^Dj+&B+&CLj#;#%szpxR5*!dxG~#?(7wI3B}X_z}lq zwwA1aKZUI=P4@4=3c3(~#>B16&vt`Qb9n-_4@7TmrX~cn!Q@7bxGE|anxdv^7%Hh3 zq9U^jb^Tscgs-(`{p-emIiThB7PSo1v@zyDU0577cNI`cR?Qx7idsGG?DOuW5KMp`m=@!&|K|lMPA?VJgP=-Rv_CD{IMa{7y^^;fylXoy7ZHv{Yk3%Kt zHPqDI#Q;7)jVM}28$r}mMiBEClSHXd=Oa-gErwdgtx)X@N4?Bupa!@Gb^k$BGG3Hg|4%8X zr$OD#g_%(e6h~!oE!4=n+4H~J<4aM?a6jt$i`GY|2Yx|~I8hI?tkwO%?@sFqm2lO*@I|Eh!12v#? zsHA>}d9hf3pHm!r^=JL7u+1L$fFG#mAK-J|V$Ol)$MB4U%&+BYpq6EV!Dc5+hWZ@u zkIQij>cNd@HwN}b<;W1!yJQS1C#GXQT>Xd_G{Dxt0$iJG#Bs4e?{sASz|y?|M?{vT1u!HI+;P12RbjMO`! zmfd93Yk5AZfu;8Nc3VG$n&T^|4u3}Nknu*@)r2}<+}2y7a-lz-)%rhdPs|)`-clQo zo;f$M0Y)2RLf!%uq4TJYJ;6!%9(DcbvF0bCO{gUP7dPO4=*MN_%yp|!%kMlE)%t%+ zAslm!H_NFx)}!7Y^`QNzxjTv45ALJh5x!r|-ku0muZ((qH$f%aKvX2gqBjMoWZZ{p z_iyz6{`Ud}J>WhnDZZh0s5rlw<&*&x!qTXXs4XfI!%+9lMr~l5a2sC1JvecK`B|{a zM4$IR+Y^71&nXzhPe6Es^U0>L{^wD6H^t{H!O2s7&PvQX&4lh2-lRTZy3hMxK+KZnjCn?5Nx*flB7Om<`*^X4xsElkJK1sFCf# z40r*RoF7qhoOzD<)~kt1#$Fh}v8Xv+jY`&I*0ZSn;tFat+(J#&YfO(mcdq$WX(rU% zyu_{e0X4F9^UPH2L5=J@#=wuL2l?ikhGU>Ql**bDwRM+9z09hh?yGO>Ep6THOhFIs zgSx>*jbsce5-U;3vKRG$< z0|!tKoVw67v>KJYhcOf0LUlBFk(rv74dvGJ&ZEV1VgqT0KOx$!+- z)cVi5*ysI6BR0L$@w=a@Z^aG4o-N>s@5S}S0HdK1*^b1*KzbvOhoFE_bz5*3k~ zs17?T%%@#4REL|OlDZ!%spq4sWpI*$vh)*%;SW?O!&aK)s)%K&H^Irc6pLZLRpzDB z8`a^hs0bZJt*Tq74t>Gmm}a#(-VBwz16Q;D6_Vi`Pb8M{wONhGHfs# zLj$!n?A1X8OUi(0>@QIUCyYREZY zmT6Q>M>Qkry0WMNwZvfTfr?OH)Z1?ep2Lags=<~AO_KFNW%F-X3zwos_z^SX5A2JX z51H#0qav~$6@g>6{vMTV(GQy`On`-{r$HrqBUD6&9A^D1YsYawbNN41(yd2rC`VBp zyouxR4eGiVYeTNI|&PNUSf~`MuDU{+s zhGV9O?NG~Sv~@8CsP950%?(s&(;hd!9nXxFsZT-e>9DP)gJfx4BUJNO25c zUDR{jJ`^+;lTmXy7xjR3)@>L{eJ?7+4^cZ{w39w(Cl*0X*+={f6P+^q$2C-Y#ZH?J z)xb>D8>5~#42h)c{7Rt-2Nq+ZAd(DqW1_QWYBHggUpUUf+NcLT$Hutjoau0a^Cprh zQITkh4RHe2!N>Ru7Q0~nqxL5Be*YhS(adQve82^@u>%&mWae@?=Apg^Z{i!Qf@dz9 zTuF1q=X{}F9F-%5ubSmo4HcQ@xDE%PBAex!Syj0(4*QQ&fPyY8XKjg^n?YC_XQGnq z25Mb@LG2H*ubVA36K1Af4K+o5QLADWDw1na>;F&GYyB_O26qp=zyEzlK{qD8VS1Ja zbweRkwwAK>Mi`*p3N@D_Pz|j{UAGg}k#ndHenI6*;+tkitcdBT4?yL>{F|(QW#tME zOknQ!pmwavx6RM}HBcRyi+YPKL1ptf)H1w-Iq^T#oQK>oJ78UGLA^UF5*JX{KSC|% zZ`cac>Bnwu2qXV7Z>h7WkaxUGGSQ)psJValFTaSSp5>m;`wPjw_suun1)R$HLJv&t zoW}Xow>>m}PgMJn?J(x&_#M=Kkm9k~fNHq5P!9u~Xo8yK!KgW(h?>LosFCbLZv(MD z!*GrVKQT#}3l-5JsL0Jg{Uo#iqv9IWJ7P0>>;Du5&E+F3h;g5q8!MnLsDWC39qsWc zSeE)6)b;%!t%Hql{`_N zn?I!}go?xzR6|QqBUy*);8D~_UttmahHAIa3$wbaqPFJt)*jKfN{g_e70sJdVOmsGTzZJCn?#P*b`L`{VU@ ztbgr%b^kMa^)J|f`U%uB3VClnp$?(ef7B1=m&bWg5&0Q4(*D-TsPW>QP2#kdj@gUB{ zjo9pq=}7#qW;JEO0LM$AI@sE!u!6!M%!ir2`J9Q^828{a)G}QC-MmB&VSsw~ALhS^ zOhwJ*Y1Hxi=tYV}xSe`l`~zR0I=(!}??q$-Y6{)+6f}}xpWh2zT+|I&Q0w#`ERT;d zH|FyDy$z@>Y6OE(BcF-Aa0zM(QUv?G|0RVysH99C#qX_>TsWM1Z6x@=R`d)(pnw0!L&z>tRLz@!%!WViMoC>9>e3PNX>|52Cx?6>-+x@ z1wG&*Y6@<6C+I+QzxNYMMyy4$R7GX;|6=&P|M|UFsQVhn^n2^O6^2lsg+FjFD%chq4mEaj^E)YB4-mSlv}L(P)TgZ+W|9U z8S14`t704~67x_U+=S0@J1Sz!p!S0p@lA+QV`}PoQBzb4wcMIm zd!m-tc+7ztFamF*_JITm{N9cliQ1~0p^|w3>LoTkf#3B;yp97J=?)CwUR1+(P$Laa z==XNSw5Se-p?1dN)@rDcHbw3EZBXA4eNj8#AXJAY;3M3Ex_*8l*A$i}GRd(9i*jN= z7Dp$s8F2|z2kWDftttAkowXxsYPzELK0Q z#n%7D0QGmMDN2&m%xx%oADgJDsfHSH1N1tGYPX#|-W9dFdZJ#}lTkV4UZS9e{mEFL zWO)+QNF$S*kQG7Ac`MWi`=frA8)H3;>bNh3xh@gv<(1XeBe4wis;DHNhUsu7(oxsh zL18Zk4&Y8YFf66t``gbVsr*g}j^|13_rCLcV@vAiZ9QKazxSS>iY+*P7Mo!1w0>t4 zPnwKfXfJtsbKU3+e&-VB52N;hc^MTs*576d3fXQ{NDgBNzCmSeicBWy@>(lkb&fZ| z^tc`acoy}^_6D_T5`>rsNS4C;JidwhV7YyD5AFdkQ;-UWF=O~`Iw1S3eF*(6Qv zET%)9Q4NkoW%VM|^7{+5f4s-d=*wzW&sOUhRPsH=Y#5x4^{=GKNkMa#7qvl@#9UYt z)#H(v7MG%y;~`Y?-NtZyV~+>IOpX*nMWzB4$4;o1(mK?RcmtIa3By_cr6|-7_j`X{ zKM$3RPf-v4X6vc4n++p7Dmlwy0j!KAa1<88zfqwN&S8=)J!-_IQ4wo`8fZ_{K!)aE z{i`sK1KOGXKy968tq)K)e!(o5FsHe`FlvPLP?6}5%9Yr&9h(B3)<^+mG;wcgjGF5GQBjk&1bMMWw}Ub6vZMLj4F>UcHO zDr$`i`FK=2vrrq;8Z58%|2u_h9QcabSSsf;4<3u!VrQcE>baE+=+_FaeRt5 zZT)DZx&Aup{9V+D-=Xe{mEY7;q4)EDZVF1aGTs4tjLOd5sL1R_W%*T91JMeY4kkxM zDg?FcB2XhMg6en~)at5$>UdRDMB7?>Vl1uyVH6a)38*Amh1!q~quz3-Pz~R--bby1 z=l1+tRL6V;&4!Z*m7H0yAy!5u_X@m>`!Nz{7h?VE#P=AV ze}p~06t&DwqDKA{)xi&_J6|Y#wuzCT(v0cUk$hCKn)y=%7yEw zxyx3}tm7i62Ag479EJ-0QR@ZN9N$Jo@I7iu6BhS-KdMEb_WZi20d+z}d}?vmjBLF< zaSAm@|Di_YFJU&2Sg2)~5%r)vsO41&720O@ct6yXO+sb+Le%SdGpfDas9ZRN%CQ?R z1tm-RlIDgG)Z7<9jj$y8u!^l$M@6g=YG)gO>cBMA$kwB#7L0o0t|v---IdH~f>QEPo`ck8dHjxEO=coMafena*V z*9k3aJ`x*ZPEHKN%=kNM&Tm+MSksp?$ID;=-i|+`2JpY~#!c3J*3+nt-$I4{t2J>2 z)meXG6x6fQsO0L23hge`9A2180pmN{S4)W}|-8vKBnFu0mIo)vX{ zZqyD~(pnDnZm5iEw?#G9zm`*b4(Ns<_JWC+o%&MLx;>8y;bYXk@D??fQL6i$YnU3< z&PObY@oJcFzN*$=QSX*xsE$UfX}*BMYqI{;a03qLL@P{(V^Pa*4QdLup&oD@HS#y8 z4u7%6tYwyQ3TtXq4y8j)K|$08R}ZystU`SW?Qtn+y}rfH_ye^icdqSs+Tmc-dVhcl zUDP@zxqd=*Ae*fhL`9||7Qx1-`{tnT+ldPKY1Dpm8Aqdgor1EpRb8_RdZ4m&3F^i_ zF&myoP00_`4w=24=|EweN4*kO!ADpL^VK)!hoM%{WYkM%DeC?kNC)}f|E3U?12G$z z<&ywaPligiG^hv_K{ZqXHTR8CBkqaXFGit~aRX`}*^NE%IabA%4gLCmG30E*q12x= z(p0kkIyE*~+6&cif7HmQpyqmot#8D|)DNSsYuCgim5WWN@5V4p+0=BT9IAu0Q5|oK z#jzhMH+Et;&v(vKP|^i8Gkbjo)J775lQ0Z5C3{fGcm*rqH&jQ;H8-oI87g;rSw~?9 z>N8OroUesBp9>YyQt18rpKA6*U28kk*4r1=^SP+iupX5wJ5c+^QB-#Si$9~&(yWs9 zSdi)v?2fxo1IXUWM6?2Gf2rAu_1}s@Zw}igg}YB_&t8qY->UjhRV(&s5z>H>OgDMjYCl* zpN|^RA6NpIm?LJgU|3z&u|DkryB%RFhLYRem71Z%Qs1eUcEzcFUz6EK=b^fHF^?C-? zR4UWOQs2GXKRUCC2dj5aXjY3?WlHMqNeTxdcXfq z*u{)I40WO~s^NO5hMHnl9F9kDJ&wZOUHwj{AeJE}#ty%jDRa9UXQCds!TJYk0DDpG zpFr>5|DC6xP(DM2K6Vc?!kt|(C#b26>}jT=Jkl?xA!-U5 zqmsBSs-0oz{r+z(1#J}b?TP5U%v8ifjUWRmNwcArO&e542jagt9(7&U-o`$t{lY~p z*KwE`A7Flr*T=jg%J*UYSL47m4us-89E`F1nx9<8V+8dFsHsTa&+O$zP^;lrRLAyV zP5g|xuu6Zw_umnQU=8ZmurY=W@Oyu}G8UE0j|Q;*i&2O*(C_`BKqV|leJU2lQ`lbT z2bnFp7uKde)7GD1A?k4lnk13{aniiqH<1f;OB(m=4dO8hD2a z^>+-xBy_YE7Dh#45>~~nI1Yn{7$>6INjcQyP+?U2B~iIi9km)-V3?07nngi#cX+tp z>5V6`JeD3|8u$&>z*OsEyhwcm>Tfwmj`VwfsOmb)In)c)f$^wSH6O!q1?swsGgv+f(H#zG z3cjF5ns}z)sY|GSLghyHS?0Ao47HOjLTx-pQ4jFXHuop7W=B1+9BK=%fx53fYU-vS z+3&1%DJTN_QG4@k>lf6G$>tbyphj8_H8mZqJx~n|L=9vzYUFECNp}Dv@Ga)ROmofg zI;bgfM^R8n=Ah>8Z_JC2Pz|Sy)6Np47G{en#Ec9d+YS)Vtv~R0Ou#<5y4-x`)~yzM|Smw7|SALs4^F z8?}Kovv$Ug)CXWot^bDEI9Yu!MFKFK1pD$-aZP&rTgiPqda!S)89{C=L%lGn1H&*9XP_EBh1yWQ zU;vXZ^Lu|6SOB#@Y(`DVPSpN!*4FQ#BJ>5-(ctB*e;o)}Zq|JcYhl!!RX{aR4>iIL zs2hi40GHY0f1$3sjmnWXs8y9@g-P1n7(%@!YKQHI`Z!&-!ZjBj=YW#wF;>B#mF7pR zYN(OSMm4w*HNsP;h_TvyHbE$7L9Oo!|RscaSN15r1d<&_CDQ!iodfZ9o?+WJw{ z@_T~~G5YU*r@q#ID+=*(H>#&6Q6CytY&~*|xv?bbFC^>RdZ(?X1H({}S&Uh6C2FMS zQOop(^%Ls4q}$ADNsZp$|L3HjWN2(pbVF?z!?6c0#JQO055F^m4s5_C)XVNLQ?V4a zI@V(?Jb}uQz)q8NrL6U_6308EBEDlM>t7>2#{n&;o2YgC5|v!OT_&qnqB^+OdL9Q; ze`wFQ-EBHD2-We?sN7kCy6*<6gRfA_FYX?bGa-9e{|ZSt4*Y^uQT2VO5FSD8jAu|C z4EodW{dIgITuQw!Di>1kHLIlrmZ1JKs-4xS0dBJAcVkcL|61$2`%IRe#O$27ifu9a ze$&&gsC7FU^&v73JL6i^MwIe^d0VE(zSJX7NwymQ#(kI%#~w7l@7sq}sh2-wHY#@} z1s(VUy=*@0_x^Gz6KakwVKID(>PU{i%^xp0%M-?R0k$INfXDxjw38Y*|5;Vt}uY%tEP z<7O)EVRhHX z0X3rSsAN2W3gr!Z{3&V+{(%}m%FAZ?4n!s8R9jz#QR&FO%dCH$IC90jEN-GgU-7En z`%~*?sPjdxnO`K-LcKOOU>>}QdSJrq=Du)Ly(DS_YJzET2xiAcs1KOasQbTOcg<&U z#0`_pEl@WuMkU=LREIv;_w#V0E9qI>AZ^7iZ%uhZeQSX#^ zx6Kq}aVhA5)vVo7H%`Yg_!I*eamRci)x=EHo1wPkk*H;x?jJKH#Ze=yjvBxqtcV*? zN&5x$osjIV`CYS{or0eO5g5R{sJX3+v9YbS2Woi@K{Yhhx&gJd9!HJrF)Ang|C-1p zL?w49DtEG@&X+`%yX(}Tpykp42jU>Cf}gP&mcM6QiM^>uzwdYchc0fw^bh>bpLh;c zpZw57pu{7yI=bLgj?c#R82;FNu-w39TK~15m>(uTV{I;I^3?q4v@zwvwj zh?fBXzC}k56t`Q*Z+?ZC*>Evvj$InH6ic+od&qRzz_5G z+ky3|-$8Y_0Kb@RqdK<2vO&S#?-^I4jwkU2yIv><_=3IvxxCXjgcBkDU@r$&U^nXj zVIgcA9PIs9vHxKy>M^4P^KZC$ZR36nL=AQVco(yvKU%Q&5(`H~q%1Z@7d7A;(fIo( zC0p$1!QNZ2A(o@Q3iYM(8Y^Rw7{T7M8i$jp|AG1@EFUx2+nR@AKk5tdBc_NI?ENFO zgt3FYmr;>8!QTFmDz32+R^z%kE`=Qwp5P%|8ZX%U?|1Fv2YdgqX$5Lz6%qt{k&2Zt z*jtv(P#+eZQ0u!7j==+%6DuVOcAnrs+=lHE2Yde$EoqVjn}5iNi#hJ5NgC|L4Pr0G z>l`?pEZF-(S(DsMNg#y@Wgk>dEXJ6)I%Tkv2Dknc?0ne$0H z!QS6|9wk7HXY8MQxce!h*f`d2-ZGu_34j)wIXEqW1Pds2z10D$BQ{R>LFI zyCz|{xi2qzzyGgEA;5{Ym=;H)I;Lxm=5D`JSS=ZMNvP3 zRl=rN59{ML)CWww9IStRxg^hFZp?yeI1=^13K)(pQ5~9O&o4*4mbar`N+(exzk|B& z18Sska+(O{#1QILQ61}r>cFs^tbfh@cn+u|(@{NMj={JYHR3-|4eUW(e-Cxt3+rc8 z$D>9lsTdGu#Q>(mO7?hX)PsAWl60_3LF;t_ssnpb$#lkg9ivizfH6p}=co~U$YrJ~ zIJX&TM$~=fP#vg=x~?G>#&)QPE=7GI?ZHgwUZJ4SeaE7hB#*hVHm0E70u|B$sE|*_ z+PK`-zo4cde%@g3n=u3GrL!3Ive|TK{bwiv2CRCxQsVRwSpcX2`T~YV-LH&F%1oPu|)RetOKYm2D`xO=POa;xmrVvIkTHGB~(;%ijHg$tR`ma*1H?FSuE>w7F}&evJDV}SZW)Rf&rb^J4GS;s1Dk~kZx zBQ??c@Be)%Xx+M~jpjGh-aZfWQr}f1*!vrg*BH$42}Ogw-{Vg$7VQ07k<`V5opBt$ zh_AT5c}Y4-y+)~ECltGuHgDCLWrDrG2e^&1xUObd*1tmew5*B1TP(&6@yeNHR;|2w zc{D&pWFBf{%TPbZ??NTtc~p)(Kt<>aD*OLm)>*(snRab_5X25dMMPu}6+74NwYvjz z5e6Bhq^xzv?taX*TkP(}?(SaK*0p1;?|){_ydUrPo!{Pjo%@{YT<6@+1TYMvcSFY& zEeIB2-y4+rIiT=1HstXy4~KIESq7c>_=dE_KR)J9ADLLfFlXyZLSY5P#%_F z!Teyh7H;-GDyaY_vait6G4NVY9u1p7xi9SlCmh zw)N^92jx!q04xap0OjFUpta+RM+HzG6~Um~c?N*~;6gAEOa|pn`5cs+G)o&tV=qt+ z;19|dt9qd1LqNVb*-X7~%mikGa+~Z1<8kF0-H&_;&4a&XxEGUobJ77cbxnjA_jw@gTw~>*I3lzIl-uwMD7W=>#oM4XxDT2^Q#Z#GmOm)p zKvV@K-bCY(pj<(*58N4caJx=p?WB8ICS1Yo8Aa|i&E&6Rj1`MAdPkGYCO0&8k6;e2 z*-&C%jnj*~DxH!06n0JyfK5YY1T)IG>&QLO_(k?|$y z?k81=byd}~^!-RhK2|jbtww&V+-BGlIPY0g^+W-5HHfc3>#4DDv1hdnDE}*WU91w! zb*T7r!{yY|G$Y@PSblN~s4A^o;qNrwEDo^UOcD82!fF|rp%i`7u*Rd1MQ3UOo}wlL zv((ZqmC0wN>sIzv@tx)kM?Q*VFHlmSOFJv(omm%*;gQ;-4;)kcWO>Pr^slu(u%|cinLHofo#NSZgTlxLaY)!la2T9NB;?C3L zUl7VcjMvloDES6rV(rM+Vu>Xp(2J8rBJ#s%y3DKi8Xa>!WBkUlXmul4VxP3qj}8-! z$;&)#spWY?EmC{NP{jk&Zq=yx6V+Jyw;*zxUe#Hdh_|J~DdPU*Yl8BewIAh5)V3!d zO#VBo8~j^f5#sydUeIa!${)1l(MHmZm#$2MDLjpc3)q{Y6)EzAF5*O9%`7oV=zsYY6D&fwp)Gn>xql;+NvoA-Ou=o8E^xB?TiF3;M{{a+bF)m ztN2AyQ?*>m_*?XLb_%&O$d z6VC#Qz0gj)v9(}2I?f|j0Ucf|w%bqQ^8I&3-Aix`6BS2$73%@q@o7x%rhO2O z7_*Z6Y*PrgWjJ5j6htzF@-&RJk$pU+VPFx;=E4#4#&1CN7Fu;6KUznU+-2p6UjU6f zdV95}M{aVfsq+ETq4APc$nozk^PVsg-3XkaS#kWw6kI?&7CeGT69k*!4~63i=71yi z2b`BizmSb439*W&Vu zy(C^+<0bJs6U$8ZT5z_~XDqzN?)=;`Lywt_rXL|ylq7}6AQV@DW#p>JxsCNJ-Hdyy z(%PCMDb`o7zAv}LEGolbz68bmb(A^UVUflqXTWO+PUi?e!M&`p_}S2@to&c-o{^YX zd-@F4X`0zzSR?4g5JwO?2q`lw7Y)`Dk40cH`fy%V;n+bAPpq;M+(6sG#BFsE>jH#Y6Z_s zUOqz1Y3s>}%_5hI^_|Am!C88!ZOT1EY#@GGbSApUPeWL0CGBInbqJ3#8m{%R9VU86 z%W5(IIGE4aw;(=%b_;c^JLH^JRmV<-GY(ECO^m`1PjRFdblSoQa~a1~ugMhlVr3lQ z_>STL;#nbeA-InV#96THPq#75#z#qXvklGq+ZRw6b@i%-gli1BtD z(+*-I7>t)??7y`LCw8A$s2<3gLgzA^51?T_86L zfsf=f;LD#I{>yqm?wsnBBzKmfTf&<{{1tv)>c_JGhGu>dG8xM@WVW3qREu>0iOpI* zmwj0z#BQ?^$*n*lEA6_mzlhXOVq%@~pCReAf;dgNF79yKqEQh|{?$g)O?ZXnda17P zt#Z#vL(pkK6v=NR4}&`>^oD#K|0#qG+E5;Ak5Y(?P`{WCpOdF6GXr_C%Fy&MgXd>$ z*Sz%l70uq{@7v$%ED^Q%6eJ1p>s(VEihVWj57vS69bC-d_wkD|KstD<;O!;m4HjcR z1Y7}bW!)lvjizEnQuH{J6;f3K^5b@6PWaBKwaL?V3`t(5G##ZZh&fNfN}!zIshaBH zi;bcxhKk0-#MZ*!z^aA+np{3Gmi=us@S|+aJL@#GfN5uNH~zBQI7HPF6JXa)b1s$z}HZ zJD#RPI`AE83!yQm~v9Eh(IVPwwKs6nu*1*JlTJ>@AxqYVR==j zII-f&mzSly7^aD_aI=s90WwZorXxD{-5LL_aeK3m_jg!r*cB5UdOt!d8d`|qvBj(I zZM|;u==PFzS9QwjRCQnuBF0Nf_J6Ta^beviUye;IjQZ|IdkM^xIm}_6NBw#P+w02#K|CRV&G@|%G!A;w9*y_>eJ+bc8^ENEgH2hs? z42N@4HAMRgE4|M0jkrH`o#6+o_FVX4bC|Iou^f7)jr5#~o|qNfjmA&b5c0puNA$Hp zD8^NOq>wKIAJ`p+=8~dyb*K%A$ExH={HrXnmfH5UwkWN8$*rLEc9z(6<@ZDPKnhMC z9bY)LqH=dih>scau5Rp=_b56j+%~ zaa4Xb&hPZJZBku-SV{EyQ};5ZytPLx9F-gY=L8ZDM5zunv+#S;yPx)U!4GGqYiP|Q z*8|Q3)m;sCAb)~2KOHZenF%C`8n)Evy~{Jxb0S-iUP@$(F?m;j?KhfVWVsL&QT-rLx|sI0)ADO*K`->0B1H+^n%1gM6$DvQdrw~v)jiu z3F({2@`I=8jE>Niiq^13BR2`$M!qH$JK%_YaDb^9{EFnB!Vz1=z7kl7*a~zTfp&8u zo8xG2Qa)Q_>>dwW05P$B^zfiA48AYRQ;+INTr3aR3vLkg*T^sC$f0`oJIMY|Rt>!z zGvVG~$va5rpgA4hDQZiyrVyLSx+?S9|Ck=}GF+-U2z1e5d`b3X--*I?tN|481~Jo5 zd>4FohDb)ZDY5JD-m{<1+RPH$hR!P10diue8Dad(6SQNn+Q3>s{3x7FW;JE z2Iw#mT3Ujt{iuyHYVGr^mX2%}BIoJ#41A78A22=f$KW@Zyw%Orig*OE^URiBk2}Sf zywA(V?~hI0$&N(7E%=$9V%ez{i-GM;tQ2cAu~_z1@crm`PG@TmuQTyD_Fp(j0y;a$ z=YszV{ol3YZ14&f^f@uHPL8*T@u-5BnSu@oyHY$6(i#X0h((g)eT$|e_7Z*+MC223 zv34};MAP=f_UPqZ%&|NRY=m*0HiuzZP!K!GlD{N%T6SZ@eoxyKvj4)qL}o3$N2s=Z z5~I5gnn-Lqi{G8w-<#$}j<+6|exdh!W_!gF`H4=-&jFfPpG9i~;78OC?8gf;zyanq!S&)O+~!A zQTm{#?=DefC$<30&AD=M-%cwXjo^cxwk~)x(aQ|Bgq4K~r(Gv5?-%J!)hU(_`yZ?< z`2C6hMol$vHkZ08GyJW!!-#)m?hoWXlIyDRad4_I=MCyh664ciZKnG;y&*g8C=HzU ziGtrL_<>*|OY9BY4RGARQD9B-=j8%mQ)n1L!#~g*OzsV_QTQ40_pvm>ujwyG!^1V1BOV7h+t52bT!VsELhYn(si zX=|bEIIaGd`NaBAC6-UID+*%#9h2R71GK3UYUQc_rm>xH#!;V|4!?niIolREeA91A zi_T%VGl^HkF9&xsxQCrB~X`k^Ikz2(oD2+)xA@&>ojTAhS5p*(TP*#_2!vkQI<@u50tKVnn4Y)4pCh-V=GSWi@$zPDZY z1^ft-77`Z_xyU+4QB@IUEk`JZp~mPSPl=60;5@}va=BR#iH!jl5x25RvERu47o*xS zAKMAMOmxVH!a6cP*^BLBoHQs0p>&`9WH{$FH=YT^+QV^LPmT4WLkVhDQ+tq_8*qHI zt~Nbt;}>N;$3G=6`uVe|$+}8&SJ0K>ONd-YIgXeak!$#W5I+sB*QRf1n1h&DB7Cvh ztRvJc*8O;fu(AKjehTX`eEwFz)S6Whou_H}RYE9D#g^#_+JIk;$m2e?e<&{jwE~QK zMEl@JBQb;7ot6P-j*cO*vv8)6A4$z7S_~)m9UTj~D&TLdM`-l|53$4s!Tp{>Gt?26 zpKJL^l+8b!A>O{D7{N>I#rjaV4Y8&aZwBA6FU$bl$)^Pa^;*So4ePR@kB;W zFwURwwEd)Zmo^ddBPqo)pj4RQp1?H72e7}Vjo0YmdVtr7ZPi0aT?P14Sz_;*@f+v>`QbH?=Hvz# zYfk#4`+!MvpTbs1N(W)Gs2I1>Zo|Y2(QEW*<*Jko;=$ zJ=wccy9d%tx-2kio$|5`qQeFpYZwR*t zoxF)%#{W)iFZ-+TkAfDKSR9K_g*ROyKZFwp%7>5q0jV9qjttS7U?mm*MA1(C(d0cS z?1A5(A`${l1-^#+ zUU@yJ2_m+%4#B~YkJIEnfq3>}i4-qoFE)jN#F{J4#9yUNR^#_HywCXA%23fzD}>r z{f|+YtYQUq(sP`uxi-u#qpCeaP|Tg0ZU~EA(3*Vk3!_sQzTAms&?pUll4=XLEiti^ z)Ju4`jlgl72{arE`62!}kbhgk^b$rg`I_tv_5-9C{Du8a1_=UhAk>d$eMpJjhqIXY zXBhzQX7V{W`E2&*SlQ{*2;J;(#EL&>(|{$G6T&f8LyB_h?K(jkB5DvzZxlc8Wjnz+ zzY*yUvj9=CV(iCJF-@;ea}?!M0eaCUO0T2vUc>nf%*EPHt{C`=nu2=cur+OB!T`#}m)T{w%rmDF$ex+yL@_Yy1#eo~!^G zexdOi@K2W0vfwO&JBkCzH!r3aIICG}De6z+U&0<>S@v^jF4j@S#eYk@7mZ8l)%u0z z@~4ZNbRR|D1%I!-0WTM%sI7orUe#QNRtfpm#)Sg0zY)z3xus6)u23= zXYik>csV#LmA{+VcGap2zm_yZvpRM8;pB$9n88BmQJ2^g_O@p_4SQ2pNZknTf#9aM z;V1S>wZS88x=1hkAdP1wewlTMy0m%~MDHoJIkcuU_>7^_z?le&m6zA^M(Y4$6|bm3 zO-_;xVqF!Gf^zKZYg5_3#V<#GI(`=FZ<5bQgJIO(B({YC3J4MFhku@xjK9qu;cJ|` zpToPWO)V52QvVi0y^JoGeA4CMylo&pFa}@pEc2FKUWCLZ>doRDuqk z&CU56jwqDdQMp^se@Bi2TPzNCVY)viw-dal9l9vjn_5@8H6`c4ZPSn`Qp2gn8b*Cq zom#X`>+RDR?VVcRaxR2h6c;5pkj5(!^M@FMZ-MkSg+M!ar^uz!;rgneh&Ls6i<+E9 z(q%u}3aXM={fSf~b5qCWoAUqIJ#uMKm`eVc=1a1#t)o@b&gnQ-Hn>hZfxi^a6Y^WZ zRMfbmVRjOD9;<)F!?ra=jikP@3cwrB2^Ufm&ZV8BJu>cO6)5%rg&Fv{86z`(Ue+Z1;wXO9(S%on zF}&&6oA@AnvA@V4WuKPYbO95YH7+?fG_%krw>?h>bHxhncNW z@s`-A;0SZ~SZinxOI(RI;g-1nTN)Cb5D{vQiM1qJqT>Hwi8(B`Rdl4;(l@I?h|f_ z65@=rk6dzhjEL^TMAkTSVsJ!)#T;s3+DL1ZCC;H0ZVl=)P)8I!y+B%F&VQvY3T?-uB|)(}GFc$_TJ$`qCvO&_GnGb1oMRnA;o z(XR^j8C)qC}a&gW}InvMDb(^2J ITa()V1D@-bzyJUM diff --git a/resources/i18n/zh_cn/OrcaSlicer.mo b/resources/i18n/zh_cn/OrcaSlicer.mo index 34565e84cbb653f9712f8a5243f7ae5ec9b16bf2..a41bb40e827c2b441725d5e04c34219f9ed7f662 100644 GIT binary patch delta 47914 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 delta 48535 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 WbijFF7vj#yz3hE7cTSa^>Hh{=Ek)x1 From 809278320e3f8a854b85abb7b39893457fdc666c Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 7 Jul 2023 01:03:32 +0800 Subject: [PATCH 58/62] clear m_calib_config before each print --- src/libslic3r/GCode.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 85f08d3e2f..126112f0d1 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1435,6 +1435,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato // modifies m_silent_time_estimator_enabled DoExport::init_gcode_processor(print.config(), m_processor, m_silent_time_estimator_enabled); const bool is_bbl_printers = print.is_BBL_printer(); + m_calib_config.clear(); // resets analyzer's tracking data m_last_height = 0.f; m_last_layer_z = 0.f; From 3d7c45c6dc9feefc185116037b7a7617ed6a7b8b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 7 Jul 2023 10:38:55 +0800 Subject: [PATCH 59/62] fix wrong default support_threshold_angle value --- .../Artillery/process/0.15mm Optimal @Artillery Genius.json | 2 +- .../Artillery/process/0.16mm Optimal @Artillery Hornet.json | 2 +- .../Artillery/process/0.16mm Optimal @Artillery X1.json | 2 +- .../Artillery/process/0.20mm Standard @Artillery Genius.json | 2 +- .../Artillery/process/0.20mm Standard @Artillery Hornet.json | 2 +- .../Artillery/process/0.20mm Standard @Artillery X1.json | 2 +- .../Artillery/process/0.20mm Standard @Artillery X2.json | 2 +- .../Artillery/process/0.24mm Draft @Artillery Hornet.json | 2 +- .../profiles/Artillery/process/0.24mm Draft @Artillery X1.json | 2 +- .../Artillery/process/0.25mm Draft @Artillery Genius.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json | 2 +- resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json | 2 +- resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json | 2 +- resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json | 2 +- resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json | 2 +- .../profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json | 2 +- .../UltiMaker/process/0.18mm Standard @UltiMaker 2.json | 2 +- .../profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) diff --git a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json index c50debc45d..c8035f28e5 100644 --- a/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.15mm Optimal @Artillery Genius.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json index 1ced316a58..d94a11efe6 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery Hornet.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json index a4e98cb812..765c5cf427 100644 --- a/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.16mm Optimal @Artillery X1.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json index 9f1b4e5bd1..08a9832adf 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Genius.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json index f15a3c56ff..569cf6a84d 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery Hornet.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json index 4b58b1f744..07c8c46ddd 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X1.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json index 52f3502268..889e1ff25e 100644 --- a/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json +++ b/resources/profiles/Artillery/process/0.20mm Standard @Artillery X2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json index 90ae0bb24d..86971d70a4 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery Hornet.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json b/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json index 65d73a88c8..250c65c3cd 100644 --- a/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json +++ b/resources/profiles/Artillery/process/0.24mm Draft @Artillery X1.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "40", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json index 07442b3821..317ebc8fb0 100644 --- a/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json +++ b/resources/profiles/Artillery/process/0.25mm Draft @Artillery Genius.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json index 3f9e2616e3..d086212427 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json index 2fc9c3724f..00d8a2180a 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json index d446732d42..5fc2f55311 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json index f67d8cab4a..35144c680e 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json index bfd9861ad4..df52bffc57 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json index 9cc58846ad..c15c56d002 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json index 17fc7978bd..c1223c6976 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json index d5238371d9..f9dca860ae 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json index 8deb92f972..cd9867303b 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json index a4063bc0d3..7026072ab3 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json index 03282a5fc3..e5244fe8a6 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json index e8f53f39f0..6a5e10b572 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json index 845ee793a0..590dfb5f51 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json index 0eef925546..315d0cf1ff 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json index 5f3d0a615e..2bb340baed 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json index 6898f059b5..63f85bf97a 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json index a4a7e4c2ed..df6d637241 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json index 15e37fa011..6744c79db6 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json index 89450cde8a..0b2635ccde 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json index d0a8221950..71ccf5168e 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json index 17b8feb304..69989a2091 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json index 0fb597c3a5..3584c1b071 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json index 79ed4331c7..60e1e6da28 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json index cd81a7542a..b970184594 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json index 6ae915de0d..e804d6e1ce 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "25", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json index d66ecc7285..4c393ecddc 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json index 514998a7c9..850137322e 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json index 03d780b267..fe93d85933 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json @@ -80,7 +80,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "30", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json index 0d96aad7f0..1e18cbdfa2 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json index 9e18195b46..fe56ffe7c9 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json @@ -83,7 +83,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "2.5", "support_speed": "150", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json index 4419f1cab0..05aeb03482 100644 --- a/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.12mm Fine @UltiMaker 2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "0.2", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json index 1a915c61b0..0d70edc00f 100644 --- a/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.18mm Standard @UltiMaker 2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "0.2", "support_speed": "45", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", diff --git a/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json b/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json index abb06089c5..66163f3c3a 100644 --- a/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json +++ b/resources/profiles/UltiMaker/process/0.25mm Darft @UltiMaker 2.json @@ -79,7 +79,7 @@ "support_base_pattern": "rectilinear", "support_base_pattern_spacing": "0.2", "support_speed": "60", - "support_threshold_angle": "0", + "support_threshold_angle": "30", "support_object_xy_distance": "50%", "tree_support_branch_angle": "40", "tree_support_wall_count": "0", From e3a85e2b337df780071c9bdb8e7b3a7bfe9b7943 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sat, 8 Jul 2023 14:48:07 +0800 Subject: [PATCH 60/62] use smaller font for codes --- src/slic3r/GUI/GUI_App.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 84ada0d0e0..ac7ea22c90 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3085,7 +3085,7 @@ void GUI_App::init_fonts() // wxSYS_OEM_FIXED_FONT and wxSYS_ANSI_FIXED_FONT use the same as // DEFAULT in wxGtk. Use the TELETYPE family as a work-around m_code_font = wxFont(wxFontInfo().Family(wxFONTFAMILY_TELETYPE)); - m_code_font.SetPointSize(m_normal_font.GetPointSize()); + m_code_font.SetPointSize(m_small_font.GetPointSize()); } void GUI_App::update_fonts(const MainFrame *main_frame) @@ -3102,7 +3102,7 @@ void GUI_App::update_fonts(const MainFrame *main_frame) m_bold_font = m_normal_font.Bold(); m_link_font = m_bold_font.Underlined(); m_em_unit = main_frame->em_unit(); - m_code_font.SetPointSize(m_normal_font.GetPointSize()); + m_code_font.SetPointSize(m_small_font.GetPointSize()); } void GUI_App::set_label_clr_modified(const wxColour& clr) From 453b0cf8e664b751f2d366a08076d9a168fed906 Mon Sep 17 00:00:00 2001 From: Carlos Caruncho Date: Mon, 10 Jul 2023 16:29:19 +0200 Subject: [PATCH 61/62] OrcaSlicer_Es.po spanish translation finished (#1483) * Update OrcaSlicer_es.po * Update OrcaSlicer_es.po More strings! * Update OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po * Update Orcaslicer spanish * Merge * Corregidos duplicados * modified: bbl/i18n/es/OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po modified: bbl/i18n/es/OrcaSlicer_es.mo * modified: bbl/i18n/es/OrcaSlicer_es.mo * Update Orca es * FIX:orcaslicer_es.po some strings * modified: bbl/i18n/es/OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po * modified: bbl/i18n/es/OrcaSlicer_es.po modified: resources/i18n/es/OrcaSlicer.mo * Update text.js Added es_ES to text.js (spanish strings) --- .gitignore | 3 +- bbl/i18n/es/OrcaSlicer_es.po | 4801 ++++++++++++++++--------------- resources/i18n/es/OrcaSlicer.mo | Bin 150744 -> 278406 bytes resources/web/data/text.js | 89 + 4 files changed, 2558 insertions(+), 2335 deletions(-) diff --git a/.gitignore b/.gitignore index 656e9bc261..efe2e50257 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ install_* build_*/ SVG src/OrcaSlicer-doc/ -.idea/ \ No newline at end of file +.idea/ +bbl/i18n/es/OrcaSlicer_es.mo diff --git a/bbl/i18n/es/OrcaSlicer_es.po b/bbl/i18n/es/OrcaSlicer_es.po index 422e82332a..872a298eb1 100644 --- a/bbl/i18n/es/OrcaSlicer_es.po +++ b/bbl/i18n/es/OrcaSlicer_es.po @@ -3,12 +3,15 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-05-30 05:30+0200\n" +"PO-Revision-Date: \n" +"Last-Translator: Carlos Fco. Caruncho Serrano \n" +"Language-Team: https://t.me/orca_slicer_es\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Localazy (https://localazy.com)\n" "Plural-Forms: nplurals=2; plural=(n==1) ? 0 : 1;\n" +"X-Generator: Poedit 3.3.2\n" msgid "Supports Painting" msgstr "Pintando Soportes" @@ -103,12 +106,11 @@ msgstr "Colocar en la cara" #, boost-format msgid "" -"Filament count exceeds the maximum number that painting tool supports. only " -"the first %1% filaments will be available in painting tool." +"Filament count exceeds the maximum number that painting tool supports. only the first %1% " +"filaments will be available in painting tool." msgstr "" -"El recuento de filamentos supera el número máximo que admite la herramienta " -"de pintura. Sólo los primeros %1% de filamentos estarán disponibles en la " -"herramienta de pintura." +"El recuento de filamentos supera el número máximo que admite la herramienta de pintura. " +"Sólo los primeros %1% de filamentos estarán disponibles en la herramienta de pintura." msgid "Color Painting" msgstr "Pintura de colores" @@ -126,7 +128,7 @@ msgid "Choose filament" msgstr "Elegir filamento" msgid "Edge detection" -msgstr "Detección de bordes" +msgstr "Detección de contorno" msgid "Triangles" msgstr "Triángulos" @@ -184,8 +186,7 @@ msgid "Scale" msgstr "Escalar" msgid "Error: Please close all toolbar menus first" -msgstr "" -"Error: Por favor, cierre primero todos los menús de la barra de herramientas" +msgstr "Error: Por favor, cierre primero todos los menús de la barra de herramientas" msgid "Tool-Lay on Face" msgstr "Herramienta-colocar sobre la cara" @@ -245,7 +246,7 @@ msgid "%" msgstr "%" msgid "uniform scale" -msgstr "Escala uniforme" +msgstr "escala uniforme" msgid "Left click" msgstr "Click izquierdo" @@ -326,7 +327,7 @@ msgid "Reset" msgstr "Reiniciar" msgid "Connectors" -msgstr "conectores" +msgstr "Conectores" msgid "Type" msgstr "Tipo" @@ -386,16 +387,17 @@ msgid "" "Invalid state. \n" "No one part is selected for keep after cut" msgstr "" -"Niguna parte seleccionada para mantener después del corte +"Estado inválido. \n" +"No se ha seleccionado ninguna pieza para conservar después del corte" msgid "Plug" msgstr "Conectar" msgid "Dowel" -msgstr "" +msgstr "Filamento" msgid "Tolerance" -msgstr "" +msgstr "Toleráncia" msgid "Mesh name" msgstr "Nombre de la malla" @@ -408,11 +410,11 @@ msgstr "Relación de decimación" #, boost-format msgid "" -"Processing model '%1%' with more than 1M triangles could be slow. It is " -"highly recommended to simplify the model." +"Processing model '%1%' with more than 1M triangles could be slow. It is highly recommended " +"to simplify the model." msgstr "" -"El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser " -"lento. Se recomienda encarecidamente simplificar el modelo." +"El procesamiento del modelo '%1%' con más de 1M de triángulos podría ser lento. Se " +"recomienda encarecidamente simplificar el modelo." msgid "Simplify model" msgstr "Simplificar el modelo" @@ -421,9 +423,7 @@ msgid "Simplify" msgstr "Simplificar" msgid "Simplification is currently only allowed when a single part is selected" -msgstr "" -"La simplificación por el momento sólo se permite cuando se selecciona una " -"sola pieza" +msgstr "La simplificación por el momento sólo se permite cuando se selecciona una sola pieza" msgid "Error" msgstr "Error" @@ -467,66 +467,68 @@ msgid "Perform Recognition" msgstr "Realizar el reconocimiento" msgid "Brush size" -msgstr "" +msgstr "Tamaño del pincel" msgid "Brush shape" -msgstr "" +msgstr "Forma del pincel" msgid "Enforce seam" -msgstr "" +msgstr "Reforzar costura" msgid "Block seam" -msgstr "" +msgstr "Bloquear costura" msgid "Seam painting" -msgstr "" +msgstr "Pintar costura" msgid "Remove selection" -msgstr "" +msgstr "Borrar selección" msgid "Shift + Mouse move up or dowm" -msgstr "" +msgstr "Shift + Mover ratón arriba u abajo" msgid "Rotate text" -msgstr "" +msgstr "Rotar texto" msgid "Text shape" -msgstr "" +msgstr "Forma de texto" msgid "Font" -msgstr "" +msgstr "Fuente" msgid "Thickness" -msgstr "" +msgstr "Grosor" msgid "Input text" -msgstr "" +msgstr "Texto de entrada" msgid "Embeded" -msgstr "" +msgstr "Integrado" msgid "Text Gap" -msgstr "" +msgstr "Espacio de texto" msgid "Angle" -msgstr "" +msgstr "Ángulo" msgid "" "Embeded\n" "depth" msgstr "" +"Profundidad\n" +"Integrada" msgid "Surface" -msgstr "" +msgstr "Superficie" msgid "Horizontal text" -msgstr "" +msgstr "Texto horizontal" msgid "Ctrl+" msgstr "" msgid "Notice" -msgstr "Date cuenta" +msgstr "Aviso" msgid "Undefined" msgstr "Indefinido" @@ -536,7 +538,7 @@ msgid "%1% was replaced with %2%" msgstr "%1% fue reemplazado por %2%" msgid "The configuration may be generated by a newer version of OrcaSlicer." -msgstr "" +msgstr "La configuración puede ser generada por una versión más reciente de OrcaSlicer." msgid "Some values have been replaced. Please check them:" msgstr "Algunos valores han sido sustituidos. Por favor, compruébalos:" @@ -551,55 +553,65 @@ msgid "Machine" msgstr "Máquina" msgid "Configuration package was loaded, but some values were not recognized." -msgstr "" -"El paquete de configuración fue cargado, pero algunos valores no fueron " -"reconocidos." +msgstr "El paquete de configuración fue cargado, pero algunos valores no fueron reconocidos." #, boost-format -msgid "" -"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgid "Configuration file \"%1%\" was loaded, but some values were not recognized." msgstr "" -"Se ha cargado el archivo de configuración \"%1%\", pero no se han reconocido " -"algunos valores." +"Se ha cargado el archivo de configuración \"%1%\", pero no se han reconocido algunos " +"valores." msgid "V" msgstr "V" msgid "" -"OrcaSlicer will terminate because of running out of memory.It may be a bug. " -"It will be appreciated if you report the issue to our team." +"OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be " +"appreciated if you report the issue to our team." msgstr "" +"OrcaSlicer terminará porque se está quedando sin memoria. Le agradeceremos que comunique " +"el problema a nuestro equipo." +# msgid "OrcaSlicer will terminate because of running out of memory.It may be a bug. It will be appreciated if you report the issue to our team." +# msgstr "OrcaSlicer se cerrará porque se está quedando sin memoria. Le agradeceremos que informe de ello a nuestro equipo." msgid "Fatal error" msgstr "Error fatal" msgid "" -"OrcaSlicer will terminate because of a localization error. It will be " -"appreciated if you report the specific scenario this issue happened." +"OrcaSlicer will terminate because of a localization error. It will be appreciated if you " +"report the specific scenario this issue happened." msgstr "" +"OrcaSlicer terminará debido a un error de localización. Le agradeceremos que nos informe " +"del escenario específico en el que se ha producido este problema." +# msgid "OrcaSlicer will terminate because of a localization error. It will be appreciated if you report the specific scenario this issue happened." +# msgstr "OrcaSlicer terminará debido a un error de localización. Le agradeceríamos que nos informara del escenario específico en el que se ha producido este problema" msgid "Critical error" msgstr "Error crítico" #, boost-format msgid "OrcaSlicer got an unhandled exception: %1%" -msgstr "" +msgstr "OrcaSlicer recibió una notificación de excepción no controlada: %1%" +# msgid "OrcaSlicer got an unhandled exception: %1%" +# msgstr "OrcaSlicer obtuvo una excepción no manejada: %1%" msgid "Downloading Bambu Network Plug-in" -msgstr "" +msgstr "Descargando el complemento de Red Bambú" msgid "Incorrect password" -msgstr "" +msgstr "Contraseña incorrecta" #, c-format, boost-format msgid "Connect %s failed! [SN:%s, code=%s]" -msgstr "" +msgstr "¡Conexión %s fallida! [SN:%s, code=%s]" msgid "" -"OrcaSlicer configuration file may be corrupted and is not abled to be parsed." -"Please delete the file and try again." +"OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete " +"the file and try again." msgstr "" +"El archivo de configuración de OrcaSlicer puede estar dañado y no puede ser procesado." +# msgid "OrcaSlicer configuration file may be corrupted and is not abled to be parsed.Please delete the file and try again." +# msgstr "Es posible que el archivo de configuración de OrcaSlicer esté dañado y no pueda ser procesado. Por favor, borre el archivo e inténtelo de nuevo." #, c-format, boost-format msgid "" "%s\n" @@ -616,8 +628,7 @@ msgstr "Cargando configuración" #, c-format, boost-format msgid "Click to download new version in default browser: %s" -msgstr "" -"Haga clic para descargar la nueva versión en el navegador por defecto: %s" +msgstr "Haga clic para descargar la nueva versión en el navegador por defecto: %s" msgid "The Orca Slicer needs an upgrade" msgstr "Orca Slicer necesita una actualización" @@ -641,42 +652,43 @@ msgid "Choose one file (3mf):" msgstr "Elija un archivo (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" -msgstr "" +msgstr "Elige uno o más archivos (3mf/step/stl/svg/obj/amf):" msgid "Choose one file (gcode/3mf):" -msgstr "" +msgstr "Elegir un archivo (gcode/3mf):" msgid "Some presets are modified." msgstr "Algunos preajustes se modifican." msgid "" -"You can keep the modifield presets to the new project, discard or save " -"changes as new presets." +"You can keep the modifield presets to the new project, discard or save changes as new " +"presets." msgstr "" -"Puede mantener los preajustes de los campos de trabajo en el nuevo proyecto, " -"descartar o guardar los cambios como nuevos preajustes." +"Puede mantener los preajustes de los campos de trabajo en el nuevo proyecto, descartar o " +"guardar los cambios como nuevos preajustes." msgid "User logged out" -msgstr "" +msgstr "Usuario desconectado" msgid "new or open project file is not allowed during the slicing process!" msgstr "" +"¡crear o abrir achivo de proyecto nuevo no está permitido durante el proceso de laminado!" msgid "Open Project" -msgstr "Proyesto Abierto" +msgstr "Abrir proyecto" msgid "" -"The version of Bambu studio is too low and needs to be updated to the latest " -"version before it can be used normally" +"The version of Bambu studio is too low and needs to be updated to the latest version " +"before it can be used normally" msgstr "" -"La versión de Orca Slicer es una versión demasiado antigua y necesita ser " -"actualizada a la última versión antes de poder utilizarla con normalidad" +"La versión de Orca Slicer es una versión demasiado antigua y necesita ser actualizada a la " +"última versión antes de poder utilizarla con normalidad" msgid "Login information expired. Please login again." msgstr "Los datos de acceso han caducado. Por favor, inicie sesión de nuevo." msgid "Privacy Policy Update" -msgstr "" +msgstr "Actualización de política de privacidad" msgid "Loading" msgstr "Cargando" @@ -697,19 +709,19 @@ msgid "*" msgstr "*" msgid "The uploads are still ongoing" -msgstr "" +msgstr "Las cargas aún están cargando" msgid "Stop them and continue anyway?" -msgstr "" +msgstr "Pararlos y continuar de todas maneras?" msgid "Ongoing uploads" -msgstr "" +msgstr "Cargas en curso" msgid "Select a G-code file:" msgstr "Seleccione un archivo de código G:" msgid "Import File" -msgstr "" +msgstr "Importar Archivo" msgid "Delete" msgstr "Borra" @@ -718,7 +730,7 @@ msgid "Choose files" msgstr "Elija los archivos" msgid "New Folder" -msgstr "" +msgstr "Nueva Carpeta" msgid "Open" msgstr "Abrir" @@ -806,25 +818,25 @@ msgid "Select settings" msgstr "Seleccione los ajustes" msgid "Hide" -msgstr "" +msgstr "Ocultar" msgid "Show" -msgstr "" +msgstr "Mostrar" msgid "Del" -msgstr "" +msgstr "Borrar" msgid "Delete the selected object" msgstr "Eliminar el objeto seleccionado" msgid "Edit Text" -msgstr "" +msgstr "Editar Texto" msgid "Load..." msgstr "Cargar..." msgid "Orca Cube" -msgstr "" +msgstr "Cubo Orca" msgid "3DBenchy" msgstr "" @@ -869,16 +881,16 @@ msgid "Export as STL" msgstr "Exportar como STL" msgid "Reload from disk" -msgstr "" +msgstr "Recargar desde el disco" msgid "Reload the selected parts from disk" -msgstr "" +msgstr "Recargar las partes seleccionadas desde el disco" msgid "Replace with STL" -msgstr "" +msgstr "Reemplazar con STL" msgid "Replace the selected part with new STL" -msgstr "" +msgstr "Reemplaza la parte seleccionada con un nuevo STL" msgid "Change filament" msgstr "Cambiar el filamento" @@ -903,7 +915,7 @@ msgid "Scale an object to fit the build volume" msgstr "Escalar un objeto para que se ajuste al volumen de impresión" msgid "Flush Options" -msgstr "" +msgstr "Opciones de purga" msgid "Flush into objects' infill" msgstr "Purgar en el relleno de los objetos" @@ -915,7 +927,7 @@ msgid "Flush into objects' support" msgstr "Depositar en el soporte de los objetos" msgid "Edit in Parameter Table" -msgstr "" +msgstr "Editar en la Tabla de Parámetro" msgid "Convert from inch" msgstr "Convertir desde pulgadas" @@ -966,13 +978,13 @@ msgid "Mirror object" msgstr "Objeto reflejado" msgid "Invalidate cut info" -msgstr "" +msgstr "Invalidar información de corte" msgid "Add Primitive" msgstr "Añadir Primitivo" msgid "Show Labels" -msgstr "" +msgstr "Mostrar Etiquetas" msgid "To objects" msgstr "A los objetos" @@ -996,8 +1008,7 @@ msgid "Auto orientation" msgstr "Orientación automática" msgid "Auto orient the object to improve print quality." -msgstr "" -"Orienta automáticamente el objeto para mejorar la calidad de la impresión." +msgstr "Orienta automáticamente el objeto para mejorar la calidad de la impresión." msgid "Split the selected object into mutiple objects" msgstr "Dividir el objeto seleccionado en múltiples objetos" @@ -1009,31 +1020,31 @@ msgid "Select All" msgstr "Seleccionar Todo" msgid "select all objects on current plate" -msgstr "seleccionar todos los objetos de la placa actual" +msgstr "seleccionar todos los objetos de la cama actual" msgid "Delete All" msgstr "Borrar todo" msgid "delete all objects on current plate" -msgstr "Eliminar todos los objetos de la placa actual" +msgstr "eliminar todos los objetos de la cama actual" msgid "Arrange" msgstr "Organiza" msgid "arrange current plate" -msgstr "Posicionar la placa actual" +msgstr "posicionar la cama actual" msgid "Auto Rotate" msgstr "Rotación automática" msgid "auto rotate current plate" -msgstr "Auto rotación de la placa actual" +msgstr "auto rotación de la cama actual" msgid "Delete Plate" msgstr "Borrar Cama" msgid "Remove the selected plate" -msgstr "Retirar la placa seleccionada" +msgstr "Retirar la cama seleccionada" msgid "Clone" msgstr "Clonar" @@ -1057,7 +1068,7 @@ msgid "Set Filament for selected items" msgstr "Ajustar el filamento para los elementos seleccionados" msgid "current" -msgstr "Actual" +msgstr "actual" msgid "Set Unprintable" msgstr "Establecer No imprimible" @@ -1086,8 +1097,8 @@ msgstr[1] "%1$d errores reparados" #, c-format, boost-format msgid "Error: %1$d non-manifold edge." msgid_plural "Error: %1$d non-manifold edges." -msgstr[0] "Error: %1$d borde no moldeado." -msgstr[1] "Error: %1$d bordes no moldeados." +msgstr[0] "Error: %1$d contorno no moldeado." +msgstr[1] "Error: %1$d contornos no moldeados." msgid "Remaining errors" msgstr "Errores restantes" @@ -1095,30 +1106,27 @@ msgstr "Errores restantes" #, c-format, boost-format msgid "%1$d non-manifold edge" msgid_plural "%1$d non-manifold edges" -msgstr[0] "%1$d borde no moldeado" -msgstr[1] "%1$d bordes no moldeados" +msgstr[0] "%1$d contorno no moldeado" +msgstr[1] "%1$d contornos no moldeados" msgid "Right click the icon to fix model object" -msgstr "" -"Haga clic con el botón derecho del ratón en el icono para fijar el objeto " -"del modelo" +msgstr "Haga clic con el botón derecho del ratón en el icono para fijar el objeto del modelo" msgid "Right button click the icon to drop the object settings" msgstr "" -"Haga clic con el botón derecho del ratón en el icono para ajustar la " -"configuración del objeto" +"Haga clic con el botón derecho del ratón en el icono para ajustar la configuración del " +"objeto" msgid "Click the icon to reset all settings of the object" msgstr "Haga clic en el icono para restablecer todos los ajustes del objeto" msgid "Right button click the icon to drop the object printable property" msgstr "" -"Haga clic con el botón derecho en el icono para soltar la característica " -"imprimible del objeto" +"Haga clic con el botón derecho en el icono para soltar la característica imprimible del " +"objeto" msgid "Click the icon to toggle printable property of the object" -msgstr "" -"Haga clic en el icono para alternar la característica imprimible del objeto" +msgstr "Haga clic en el icono para alternar la característica imprimible del objeto" msgid "Click the icon to edit support painting of the object" msgstr "Haga clic en el icono para editar la pintura de apoyo del objeto" @@ -1127,7 +1135,7 @@ msgid "Click the icon to edit color painting of the object" msgstr "Haga clic en el icono para editar la pintura de color del objeto" msgid "Click the icon to shift this object to the bed" -msgstr "" +msgstr "Presionar el icono para cambiar este objeto a la cama" msgid "Loading file" msgstr "Cargando archivo" @@ -1142,39 +1150,40 @@ msgid "Add Modifier" msgstr "Añadir modificador" msgid "Switch to per-object setting mode to edit modifier settings." -msgstr "" -"Cambia al modo de ajuste por objeto para editar los ajustes de los " -"modificadores." +msgstr "Cambia al modo de ajuste por objeto para editar los ajustes de los modificadores." -msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." +msgid "Switch to per-object setting mode to edit process settings of selected objects." msgstr "" +"Cambiar al modo de ajuste por objeto para editar los ajustes de proceso de los objetos." msgid "Delete connector from object which is a part of cut" -msgstr "" +msgstr "Borrar conector del objeto el cual es parte del corte" msgid "Delete solid part from object which is a part of cut" -msgstr "" +msgstr "Borrar la parte sólida del objeto la cual es parte del corte" msgid "Delete negative volume from object which is a part of cut" -msgstr "" +msgstr "Borrar volumen negativo del objeto el cual es parte del corte" -msgid "" -"To save cut correspondence you can delete all connectors from all related " -"objects." +msgid "To save cut correspondence you can delete all connectors from all related objects." msgstr "" +"Para salvar la correspondencia cortada puedes borrar todos los conectores de los objetos." msgid "" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed .\n" "\n" -"To manipulate with solid parts or negative volumes you have to invalidate " -"cut infornation first." +"To manipulate with solid parts or negative volumes you have to invalidate cut infornation " +"first." msgstr "" +"La acción interrumpirá la correspondencia de corte.\n" +"Después de esto la correspondencia no podrá ser garantizada.\n" +"\n" +"Para manipular partes sólidas o volumenes negativos tienes que invalidar la información de " +"corte primero." msgid "Delete all connectors" -msgstr "" +msgstr "Borrar todos los conectores" msgid "Deleting the last solid part is not allowed." msgstr "No se permite borrar la última parte sólida." @@ -1186,34 +1195,34 @@ msgid "Assembly" msgstr "Montaje" msgid "Cut Connectors information" -msgstr "" +msgstr "Cortar Información de Conector" msgid "Object manipulation" -msgstr "" +msgstr "Manipulación de objeto" msgid "Group manipulation" -msgstr "" +msgstr "Manipulación de grupo" msgid "Object Settings to modify" -msgstr "" +msgstr "Ajustes de objeto modificables" msgid "Part Settings to modify" -msgstr "" +msgstr "Ajustes de parte modificables" msgid "Layer range Settings to modify" -msgstr "" +msgstr "Ajustes de capa modificables" msgid "Part manipulation" -msgstr "" +msgstr "Manipulación de partes" msgid "Instance manipulation" -msgstr "" +msgstr "Manipulación de instancias" msgid "Height ranges" -msgstr "" +msgstr "Rangos de altura" msgid "Settings for height range" -msgstr "" +msgstr "Ajustes de rango de altura" msgid "Object" msgstr "Objeto" @@ -1227,18 +1236,13 @@ msgstr "Capa" msgid "Selection conflicts" msgstr "Conflictos en la selección" -msgid "" -"If first selected item is an object, the second one should also be object." -msgstr "" -"Si el primer elemento seleccionado es un objeto, el segundo también debería " -"serlo." +msgid "If first selected item is an object, the second one should also be object." +msgstr "Si el primer elemento seleccionado es un objeto, el segundo también debería serlo." -msgid "" -"If first selected item is a part, the second one should be part in the same " -"object." +msgid "If first selected item is a part, the second one should be part in the same object." msgstr "" -"Si el primer elemento seleccionado es una pieza, el segundo debe ser una " -"pieza en el mismo objeto." +"Si el primer elemento seleccionado es una pieza, el segundo debe ser una pieza en el mismo " +"objeto." msgid "The type of the last solid object part is not to be changed." msgstr "El tipo de la última parte del objeto sólido no debe cambiarse." @@ -1296,17 +1300,16 @@ msgid "Remove height range" msgstr "Borrar rango de altura" msgid "Add height range" -msgstr "" +msgstr "Añadir rango de altura" msgid "Invalid numeric." msgstr "Numérico inválido." msgid "one cell can only be copied to one or multiple cells in the same column" -msgstr "" -"Una celda sólo puede copiarse en una o varias celdas de la misma columna" +msgstr "una celda sólo puede copiarse en una o varias celdas de la misma columna" msgid "multiple cells copy is not supported" -msgstr "No se admite la copia de múltiples celdas" +msgstr "no se admite la copia de múltiples celdas" msgid "Outside" msgstr "En el exterior" @@ -1318,10 +1321,10 @@ msgid "Manual" msgstr "Manual" msgid "No-brim" -msgstr "Sin borde" +msgstr "Sin borde de adherencia" msgid " " -msgstr "" +msgstr " " msgid "Layer height" msgstr "Altura de la capa" @@ -1333,16 +1336,16 @@ msgid "Infill density(%)" msgstr "Densidad de relleno(%)" msgid "Auto Brim" -msgstr "Borde automático" +msgstr "Borde de Adherencia Automático" msgid "Outer wall speed" -msgstr "" +msgstr "Velocidad pared exterior" msgid "Plate" -msgstr "Placa" +msgstr "Cama" msgid "Brim" -msgstr "Balsa" +msgstr "Borde de adherencia" msgid "Object/Part Setting" msgstr "Ajuste del Objeto/Parte" @@ -1360,79 +1363,79 @@ msgid "More" msgstr "Más" msgid "Open Preferences." -msgstr "" +msgstr "Abrir Preferencias." msgid "Open next tip." -msgstr "" +msgstr "Abrir siguiente consejo." msgid "Open Documentation in web browser." -msgstr "" +msgstr "Abrir la Documentación en el navegador." msgid "Pause:" -msgstr "" +msgstr "Pausa:" msgid "Custom Template:" -msgstr "" +msgstr "Plantillas Personalizadas:" msgid "Custom G-code:" -msgstr "" +msgstr "G-code personalizado:" msgid "Custom G-code" -msgstr "Código G personalizado" +msgstr "G-code personalizado" msgid "Enter Custom G-code used on current layer:" -msgstr "" +msgstr "Inserta el G-code personalizado usado en la capa actual:" msgid "OK" msgstr "OK" msgid "Jump to Layer" -msgstr "" +msgstr "Salta a la Capa" msgid "Jump to layer" -msgstr "" +msgstr "Salta a la capa" msgid "Please enter the layer number" -msgstr "" +msgstr "Por favor, introduce el número de capa" msgid "Add Pause" -msgstr "" +msgstr "Añadir Pausa" msgid "Insert a pause command at the beginning of this layer." -msgstr "" +msgstr "Inserta un comando de pausa en el principio de esta capa." msgid "Add Custom G-code" -msgstr "" +msgstr "Añadir G-code personalizado" msgid "Insert custom G-code at the beginning of this layer." -msgstr "" +msgstr "Insertar G-code personalizado en el principio de esta capa." msgid "Add Custom Template" -msgstr "" +msgstr "Añadir Plantilla Personalizada" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "" +msgstr "Insetar g-code de plantilla personalizada al principio de esta capa." msgid "Filament " -msgstr "" +msgstr "Filamento " msgid "Change filament at the beginning of this layer." -msgstr "" +msgstr "Cargar filamento al principio de esta capa." msgid "Delete Pause" -msgstr "" +msgstr "Borrar Pausa" msgid "Delete Custom Template" -msgstr "" +msgstr "Borrar Plantilla Personalizada" msgid "Edit Custom G-code" -msgstr "" +msgstr "Editar G-code Personalizado" msgid "Delete Custom G-code" -msgstr "" +msgstr "Borrar G-code Personalizado" msgid "Delete Filament Change" -msgstr "" +msgstr "Borrar Cambio de Filamento" msgid "No printer" msgstr "Sin impresión" @@ -1450,16 +1453,16 @@ msgid "AMS" msgstr "AMS" msgid "Ams filament backup" -msgstr "" +msgstr "Copia de Seguridad del Filamento AMS" msgid "AMS not connected" -msgstr "" +msgstr "AMS no conectado" msgid "Cali" msgstr "" msgid "Calibration of extrusion" -msgstr "" +msgstr "Calibración de extrusión" msgid "Load Filament" msgstr "Cargar" @@ -1468,24 +1471,22 @@ msgid "Unload Filament" msgstr "Descargar" msgid "Ext Spool" -msgstr "" +msgstr "Carrete Externo" msgid "Tips" msgstr "Consejos" msgid "Guide" -msgstr "" +msgstr "Guía" msgid "Retry" -msgstr "" +msgstr "Reintentar" msgid "Calibrating AMS..." msgstr "Calibración de AMS..." msgid "A problem occured during calibration. Click to view the solution." -msgstr "" -"Se ha producido un problema durante la calibración. Haga clic para ver la " -"solución." +msgstr "Se ha producido un problema durante la calibración. Haga clic para ver la solución." msgid "Calibrate again" msgstr "Calibrar de nuevo" @@ -1494,7 +1495,7 @@ msgid "Cancel calibration" msgstr "Cancelar calibración" msgid "Heat the nozzle" -msgstr "" +msgstr "Calentar la boquilla" msgid "Cut filament" msgstr "Cortar filamento" @@ -1503,23 +1504,23 @@ msgid "Pull back current filament" msgstr "Extraer el filamento actual" msgid "Push new filament into extruder" -msgstr "" +msgstr "Introducir nuevo filamento en el extrusor" msgid "Purge old filament" msgstr "Purgar el filamento viejo" msgid "Feed new filament from external spool" -msgstr "" +msgstr "Cargar nuevo filamento en el carrete externo" msgid "Confirm whether the filament has been extruded" -msgstr "" +msgstr "Confirmar si el filamento ha sido extruido" msgid "" -"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " -"load or unload filiament." +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically load or " +"unload filiament." msgstr "" -"Elija una ranura AMS y pulse el botón \"Cargar\" o \"Descargar\" para cargar " -"o descargar automáticamente el filamento." +"Elija una ranura AMS y pulse el botón \"Cargar\" o \"Descargar\" para cargar o descargar " +"automáticamente el filamento." msgid "Edit" msgstr "Editar" @@ -1528,7 +1529,7 @@ msgid "" "All the selected objects are on the locked plate,\n" "We can not do auto-arrange on these objects." msgstr "" -"Todos los objetos seleccionados están en la placa bloqueada,\n" +"Todos los objetos seleccionados están en la cama bloqueada,\n" "No podemos hacer un auto posicionamiento en estos objetos." msgid "No arrangable objects are selected." @@ -1538,17 +1539,16 @@ msgid "" "This plate is locked,\n" "We can not do auto-arrange on this plate." msgstr "" -"Esta placa está bloqueada,\n" -"No podemos hacer auto-posicionamiento en esta placa." +"Esta cama está bloqueada,\n" +"No podemos hacer auto-posicionamiento en esta cama." msgid "Arranging..." msgstr "Organizando..." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"El posicionamiento ha fallado. Se han encontrado algunas excepciones al " -"procesar las geometrías de los objetos." +"El posicionamiento ha fallado. Se han encontrado algunas excepciones al procesar las " +"geometrías de los objetos." msgid "Arranging" msgstr "Organizando" @@ -1556,47 +1556,44 @@ msgstr "Organizando" msgid "Arranging canceled." msgstr "Ordenamiento cancelado." -msgid "" -"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgid "Arranging is done but there are unpacked items. Reduce spacing and try again." msgstr "" -"El posicionamiento está hecho, pero hay artículos sin empaquetar. Reduzca el " -"espacio y vuelva a intentarlo." +"El posicionamiento está hecho, pero hay artículos sin empaquetar. Reduzca el espacio y " +"vuelva a intentarlo." msgid "Arranging done." msgstr "Organización terminada." #, c-format, boost-format msgid "" -"Arrangement ignored the following objects which can't fit into a single " -"bed:\n" +"Arrangement ignored the following objects which can't fit into a single bed:\n" "%s" msgstr "" -"Organizar ignoró los siguientes objetos que no pueden caber en una sola " -"base:\n" +"Organizar ignoró los siguientes objetos que no pueden caber en una sola cama:\n" "%s" msgid "" "All the selected objects are on the locked plate,\n" "We can not do auto-orient on these objects." msgstr "" -"Todos los objetos seleccionados están en la placa bloqueada,\n" +"Todos los objetos seleccionados están en la cama bloqueada,\n" "No podemos hacer auto-orientación en estos objetos." msgid "" "This plate is locked,\n" "We can not do auto-orient on this plate." msgstr "" -"Esta placa está bloqueada,\n" -"No podemos hacer auto-orientación en esta placa." +"Esta cama está bloqueada,\n" +"No podemos hacer auto-orientación en esta cama." msgid "Orienting..." msgstr "Orientando..." msgid "Orienting" -msgstr "" +msgstr "Orientando" msgid "Error! Unable to create thread!" -msgstr "¡Error! No se ha podido crear el proceso." +msgstr "¡Error! ¡No se ha podido crear el proceso!" msgid "Exception" msgstr "Excepción" @@ -1608,7 +1605,7 @@ msgid "Login failed" msgstr "Fallo en el inicio de sesión" msgid "The region parameter is incorrrect" -msgstr "El parámetro de región es incorrecto." +msgstr "El parámetro de región es incorrecto" msgid "Failure of printer login" msgstr "Fallo en el inicio de sesión de la impresora" @@ -1626,7 +1623,7 @@ msgid "Unknown Failure" msgstr "Error desconocido" msgid "Please check the printer network connection." -msgstr "" +msgstr "Por favor, comprueba la conexión de área local." msgid "Abnormal print file data. Please slice again" msgstr "Datos anormales del archivo de impresión. Por favor, procese de nuevo" @@ -1636,24 +1633,21 @@ msgstr "Tarea cancelada" msgid "Upload task timed out. Please check the network problem and try again" msgstr "" -"La tarea de carga ha terminado. Por favor, compruebe el problema de red e " -"inténtelo de nuevo" +"La tarea de carga ha terminado. Por favor, compruebe el problema de red e inténtelo de " +"nuevo" msgid "Cloud service connection failed. Please try again." -msgstr "" -"Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de " -"nuevo." +msgstr "Ha fallado la conexión con el servicio de la nube. Por favor, inténtelo de nuevo." msgid "Print file not found, please slice again" -msgstr "" -"No se ha encontrado el archivo de impresión, por favor, vuelva a procesarlo" +msgstr "No se ha encontrado el archivo de impresión, por favor, vuelva a procesarlo" msgid "" -"The print file exceeds the maximum allowable size (1GB). Please simplify the " -"model and slice again" +"The print file exceeds the maximum allowable size (1GB). Please simplify the model and " +"slice again" msgstr "" -"El archivo de impresión supera el tamaño máximo permitido (1GB). Por favor, " -"simplifique el modelo y vuelva a procesarlo" +"El archivo de impresión supera el tamaño máximo permitido (1GB). Por favor, simplifique el " +"modelo y vuelva a procesarlo" msgid "Failed uploading print file" msgstr "Fallo al cargar el archivo de impresión" @@ -1668,80 +1662,82 @@ msgid "Sending print job through cloud service" msgstr "Enviando trabajo de impresión a través del servicio en la nube" msgid "Service Unavailable" -msgstr "" +msgstr "Servicio No Disponible" msgid "Unkown Error." -msgstr "" +msgstr "Error Desconocido." msgid "Sending print configuration" msgstr "Enviando la configuración de impresión" #, c-format, boost-format msgid "Successfully sent. Will automatically jump to the device page in %ss" -msgstr "" +msgstr "Envío exitoso. Se saltará automaticamente a la página del dispositivo en %ss" msgid "An SD card needs to be inserted before printing via LAN." -msgstr "" +msgstr "Se necesita insertar una tarjeta SD antes de imprimir vía red local." msgid "Failed to send the print job. Please try again." -msgstr "" +msgstr "Fallo enviando el trabajo de impresión. Por favor inténtelo otra vez." msgid "Send to Printer failed. Please try again." -msgstr "" +msgstr "Envío a la Impresora fallido. Por favor inténtelo otra vez." msgid "No space left on Printer SD card" -msgstr "" +msgstr "Sin espacio disponible en la tarjeta SD de la impresora" msgid "Sending gcode file over LAN" -msgstr "" +msgstr "Enviando el archivo de gcode vía red local" msgid "Sending gcode file through cloud service" -msgstr "" +msgstr "Enviando el archivo de gcode a través del servicio en la nube" msgid "Sending gcode file to sdcard" -msgstr "" +msgstr "Enviando el archivo de gcode a la tarjeta SD" #, c-format, boost-format msgid "Successfully sent. Close current page in %s s" -msgstr "" +msgstr "Envío exitoso. Cierre la página actual en %s s" msgid "An SD card needs to be inserted before sending to printer." -msgstr "" +msgstr "Se necesita insertar una tarjeta SD antes de enviar a la impresora." msgid "Please log out and login to the printer again." -msgstr "" +msgstr "Por favor desconéctese y conéctese a la impresora de nuevo." msgid "Choose SLA archive:" -msgstr "" +msgstr "Elige el archivo SLA:" msgid "Import file" -msgstr "" +msgstr "Importar archivo" msgid "Import model and profile" -msgstr "" +msgstr "Importar modelo y perfil" msgid "Import profile only" -msgstr "" +msgstr "Importar perfil solo" msgid "Import model only" -msgstr "" +msgstr "Importar solo el modelo" msgid "Accurate" -msgstr "" +msgstr "Precisión" msgid "Balanced" -msgstr "" +msgstr "Balanceado" msgid "Quick" -msgstr "" +msgstr "Rápido" msgid "Importing SLA archive" msgstr "Importando archivo SLA" msgid "" -"The SLA archive doesn't contain any presets. Please activate some SLA " -"printer preset first before importing that SLA archive." +"The SLA archive doesn't contain any presets. Please activate some SLA printer preset first " +"before importing that SLA archive." msgstr "" +"El SLA importado no contiene ningún preajuste. Por favor active algunos preajustes de la " +"impresora primero antes de importar ese archivo SLA." msgid "Importing canceled." msgstr "Importación cancelada." @@ -1750,36 +1746,38 @@ msgid "Importing done." msgstr "Importación realizada." msgid "" -"The imported SLA archive did not contain any presets. The current SLA " -"presets were used as fallback." +"The imported SLA archive did not contain any presets. The current SLA presets were used as " +"fallback." msgstr "" +"El SLA importado no contiene ningún preajuste. Los preajustes de SLA actuales serán usados " +"como alternativa." msgid "You cannot load SLA project with a multi-part object on the bed" -msgstr "" +msgstr "No puedes cargar un proyecto SLA con objetos multi-parte en la cama" msgid "Please check your object list before preset changing." -msgstr "" +msgstr "Por favor comprueba tu lista de objectos antes de cambiar el preajuste." msgid "Attention!" msgstr "¡Atención!" msgid "Downloading" -msgstr "" +msgstr "Descargando" msgid "Download failed" -msgstr "" +msgstr "Descarga fallida" msgid "Cancelled" -msgstr "" +msgstr "Cancelado" msgid "Install successfully." -msgstr "" +msgstr "Instalación exitosa." msgid "Installing" -msgstr "" +msgstr "Instalando" msgid "Install failed" -msgstr "" +msgstr "Instalación fallida" msgid "Portions copyright" msgstr "Porciones del copyright" @@ -1797,20 +1795,22 @@ msgid "GNU Affero General Public License, version 3" msgstr "GNU Affero General Public License, versión 3" msgid "" -"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " -"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " -"the RepRap community" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer by Prusa " +"Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and the RepRap community" msgstr "" +"Orca Slicer está basado en BambuStudio por Bambulab, el cual está basado en PrusaSlicer " +"por Prusa Research. PrusaSlicer está basado en Slic3r de Alessandro Ranellucci y la " +"comunidad RepRap" msgid "Libraries" msgstr "Librerías" msgid "" -"This software uses open source components whose copyright and other " -"proprietary rights belong to their respective owners" +"This software uses open source components whose copyright and other proprietary rights " +"belong to their respective owners" msgstr "" -"Este software utiliza componentes de código abierto cuyos derechos de autor " -"y otros derechos de propiedad pertenecen a sus respectivos propietarios" +"Este software utiliza componentes de código abierto cuyos derechos de autor y otros " +"derechos de propiedad pertenecen a sus respectivos propietarios" #, c-format, boost-format msgid "About %s" @@ -1820,24 +1820,23 @@ msgid "Orca Slicer " msgstr "" msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." -msgstr "" +msgstr "OrcaSlicer está basado en BambuStudio, PrusaSlicer, y SuperSlicer." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." -msgstr "" +msgstr "BambuStudio está basado originalmente en PrusaSlicer por PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." -msgstr "" +msgstr "PrusaSlicer está originalmente basado en Slic3r de Alessandro Ranellucci." -msgid "" -"Slic3r was created by Alessandro Ranellucci with the help of many other " -"contributors." +msgid "Slic3r was created by Alessandro Ranellucci with the help of many other contributors." msgstr "" +"Slic3r fue creado por Alessandro Ranellucci con la ayuda de muchos otros contruyentes." msgid "Version" msgstr "Versión" msgid "AMS Materials Setting" -msgstr "" +msgstr "Ajustes de Materiales AMS" msgid "Confirm" msgstr "Confirmar" @@ -1869,10 +1868,10 @@ msgid "SN" msgstr "SN" msgid "Setting AMS slot information while printing is not supported" -msgstr "" +msgstr "Ajustes de información de ranura AMS mientras la impresión no sea soportada" msgid "Factors of dynamic flow cali" -msgstr "" +msgstr "Factores de flujo cali dinámico" msgid "Factor K" msgstr "" @@ -1881,43 +1880,46 @@ msgid "Factor N" msgstr "" msgid "Setting Virtual slot information while printing is not supported" -msgstr "" +msgstr "Ajuste de información de ranura Virtual mientras la impresión no sea soportada" msgid "Are you sure you want to clear the filament information?" -msgstr "" +msgstr "¿Estás seguro que quieres limpiar la información de filamento?" msgid "Please input a valid value (K in 0~0.5)" -msgstr "" +msgstr "Por favor, introduce un valor válido (K en 0~0.5)" msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" -msgstr "" +msgstr "Por favor, introduce un valor válido (K en 0~0.5, N en 0.6~2.0)" msgid "You need to select the material type and color first." -msgstr "" +msgstr "Necesitas seleccionar el tipo y el color del material primero." msgid "Other color" -msgstr "" +msgstr "Otro color" msgid "Dynamic flow calibration" -msgstr "" +msgstr "Calibración de flujo dinámico" msgid "" -"The nozzle temp and max volumetric speed will affect the calibration " -"results. Please fill in the same values as the actual printing. They can be " -"auto-filled by selecting a filament preset." +"The nozzle temp and max volumetric speed will affect the calibration results. Please fill " +"in the same values as the actual printing. They can be auto-filled by selecting a filament " +"preset." msgstr "" +"La temperatura y la velocidad volumétrica máxima de la boquilla afectará a los resultados " +"de los ajustes. Por favor, rellena los mismos valores de la actual impresión. Ellos pueden " +"ser auto-rellenados seleccionando un preajuste de filamento." msgid "Nozzle Diameter" -msgstr "" +msgstr "Diámetro" msgid "Bed Type" -msgstr "" +msgstr "Tipo de Cama" msgid "Nozzle temperature" msgstr "Temperatura de la boquilla" msgid "Bed Temperature" -msgstr "" +msgstr "Temperatura de Cama" msgid "Max volumetric speed" msgstr "Velocidad volumétrica máxima" @@ -1926,121 +1928,131 @@ msgid "℃" msgstr "" msgid "Bed temperature" -msgstr "Temperatura de la base" +msgstr "Temperatura de la cama" msgid "mm³" msgstr "mm³" msgid "Start calibration" -msgstr "" +msgstr "Iniciar calibración" msgid "Next" -msgstr "" +msgstr "Siguiente" msgid "" -"Calibration completed. Please find the most uniform extrusion line on your " -"hot bed like the picture below, and fill the value on its left side into the " -"factor K input box." +"Calibration completed. Please find the most uniform extrusion line on your hot bed like " +"the picture below, and fill the value on its left side into the factor K input box." msgstr "" +"Calibración completada. Por favor, encuentre la línea de extrusión más uniforme en su cama " +"caliente como la imagen de abajo, y rellene el valor en su lado izquierdo en el factor K " +"cuadro de entrada." msgid "Save" msgstr "Guardar" msgid "Last Step" -msgstr "" +msgstr "Úlrimo Paso" msgid "Example" -msgstr "" +msgstr "Ejemplo" #, c-format, boost-format msgid "Calibrating... %d%%" -msgstr "" +msgstr "Calibrando... %d%%" msgid "Calibration completed" -msgstr "" +msgstr "Calibración completada" #, c-format, boost-format msgid "%s does not support %s" -msgstr "" +msgstr "%s no soporta %s" msgid "Dynamic flow Calibration" -msgstr "" +msgstr "Calibración de flujo dinámico" msgid "Step" -msgstr "" +msgstr "Paso" msgid "AMS Slots" -msgstr "" +msgstr "Ranuras AMS" -msgid "" -"Note: Only the AMS slots loaded with the same material type can be selected." +msgid "Note: Only the AMS slots loaded with the same material type can be selected." msgstr "" +"Nota: Solo las ranuras AMS cargadas con el mismo tipo de material se pueden seleccionar." msgid "Enable AMS" -msgstr "" +msgstr "Activar AMS" msgid "Print with filaments in the AMS" -msgstr "" +msgstr "Imprimir con filamentos en el AMS" msgid "Disable AMS" -msgstr "" +msgstr "Desactivar AMS" msgid "Print with the filament mounted on the back of chassis" -msgstr "" +msgstr "Imprimir con el filamento montado en la parte posterior del chasis" msgid "Cabin humidity" -msgstr "" +msgstr "Humedad de cabina" msgid "" -"Green means that AMS humidity is normal, orange represent humidity is high, " -"red represent humidity is too high.(Hygrometer: lower the better.)" +"Green means that AMS humidity is normal, orange represent humidity is high, red represent " +"humidity is too high.(Hygrometer: lower the better.)" msgstr "" +"El verde significa que la humedad de AMS es normal, el naranja representa que la humedad " +"es alta, el rojo representa que la humedad es demasiado alta.(Hygrometro: menos que el " +"mejor.)" msgid "Desiccant status" -msgstr "" +msgstr "Estado del secante" msgid "" -"A desiccant status lower than two bars indicates that desiccant may be " -"inactive. Please change the desiccant.(The bars: higher the better.)" +"A desiccant status lower than two bars indicates that desiccant may be inactive. Please " +"change the desiccant.(The bars: higher the better.)" msgstr "" +"Si estado del secante es menor que las dos barras indica que el secante puede estar " +"inactivo. Por favor cambie el secante(Las barras: más que el mejor)" msgid "" -"Note: When the lid is open or the desiccant pack is changed, it can take " -"hours or a night to absorb the moisture. Low temperatures also slow down the " -"process. During this time, the indicator may not represent the chamber " -"accurately." +"Note: When the lid is open or the desiccant pack is changed, it can take hours or a night " +"to absorb the moisture. Low temperatures also slow down the process. During this time, the " +"indicator may not represent the chamber accurately." msgstr "" +"Nota: Cuando se abre la tapa o se cambia el paquete desecante, puede tardar horas o una " +"noche en absorber la humedad. Las bajas temperaturas también ralentizan el proceso. " +"Durante este tiempo, es posible que el indicador no represente la cámara con precisión." -msgid "" -"Config which AMS slot should be used for a filament used in the print job" +msgid "Config which AMS slot should be used for a filament used in the print job" msgstr "" +"La configuración de ranura la cual debe ser usada para el filamento es usada en el trabajo " +"de impresión" msgid "Filament used in this print job" -msgstr "" +msgstr "Filamento usado en este trabajo de impresión" msgid "AMS slot used for this filament" -msgstr "" +msgstr "Ranura AMS usada para este filamento" msgid "Click to select AMS slot manually" -msgstr "" +msgstr "Presiona para seleccionar la ranura AMS automaticamente" msgid "Do not Enable AMS" -msgstr "" +msgstr "No Activar AMS" msgid "Print using materials mounted on the back of the case" -msgstr "" +msgstr "Imprimir usando materiales montados en la parte de atras de la carcasa" msgid "Print with filaments in ams" -msgstr "" +msgstr "Imprimir usando filamentos en AMS" msgid "Print with filaments mounted on the back of the chassis" -msgstr "" +msgstr "Imprimir con filamentos montados en la parte de atrás del chasis" msgid "Filaments replace" -msgstr "" +msgstr "Reemplazar filamentos" msgid "Group" -msgstr "" +msgstr "Agrupar" msgid "AMS Settings" msgstr "Ajustes del AMS" @@ -2049,63 +2061,63 @@ msgid "Insertion update" msgstr "Actualización de la inserción" msgid "" -"The AMS will automatically read the filament information when inserting a " -"new Bambu Lab filament. This takes about 20 seconds." +"The AMS will automatically read the filament information when inserting a new Bambu Lab " +"filament. This takes about 20 seconds." msgstr "" -"El AMS leerá automáticamente la información del filamento al insertar un " -"nuevo filamento de Bambu Lab. Esto tardara unos 20 segundos." +"El AMS leerá automáticamente la información del filamento al insertar un nuevo filamento " +"de Bambu Lab. Esto tardara unos 20 segundos." msgid "" -"Note: if new filament is inserted during printing, the AMS will not " -"automatically read any information until printing is completed." +"Note: if new filament is inserted during printing, the AMS will not automatically read " +"any information until printing is completed." msgstr "" "Nota: si se inserta un nuevo filamento durante la impresión, el AMS no leerá " "automáticamente ninguna información hasta que la impresión haya finalizado." msgid "" -"When inserting a new filament, the AMS will not automatically read its " -"information, leaving it blank for you to enter manually." +"When inserting a new filament, the AMS will not automatically read its information, " +"leaving it blank for you to enter manually." msgstr "" -"Al insertar un nuevo filamento, el AMS no leerá automáticamente su " -"información, dejándola en blanco para que usted la introduzca manualmente." +"Al insertar un nuevo filamento, el AMS no leerá automáticamente su información, dejándola " +"en blanco para que usted la introduzca manualmente." msgid "Power on update" msgstr "Actualización de encendido" msgid "" -"The AMS will automatically read the information of inserted filament on " -"start-up. It will take about 1 minute.The reading process will roll filament " -"spools." +"The AMS will automatically read the information of inserted filament on start-up. It will " +"take about 1 minute.The reading process will roll filament spools." msgstr "" -"El AMS leerá automáticamente la información del filamento insertado al " -"arrancar. Tomará aproximadamente 1 minuto. El proceso de lectura hará rodar " -"las bobinas de filamento." +"El AMS leerá automáticamente la información del filamento insertado al arrancar. Tomará " +"aproximadamente 1 minuto. El proceso de lectura hará rodar las bobinas de filamento." msgid "" -"The AMS will not automatically read information from inserted filament " -"during startup and will continue to use the information recorded before the " -"last shutdown." +"The AMS will not automatically read information from inserted filament during startup and " +"will continue to use the information recorded before the last shutdown." msgstr "" -"El AMS no leerá automáticamente la información del filamento insertado " -"durante el arranque y seguirá utilizando la información registrada antes del " -"último apagado." +"El AMS no leerá automáticamente la información del filamento insertado durante el arranque " +"y seguirá utilizando la información registrada antes del último apagado." msgid "Update remaining capacity" -msgstr "" +msgstr "Actualizar capacidad restante" msgid "" -"The AMS will estimate Bambu filament's remaining capacity after the filament " -"info is updated. During printing, remaining capacity will be updated " -"automatically." +"The AMS will estimate Bambu filament's remaining capacity after the filament info is " +"updated. During printing, remaining capacity will be updated automatically." msgstr "" +"El AMS estimará la capacidad del filamento Bambú restante después de que la información " +"sea actualizada. Durante la impresión, la capacidad restante será actualizada " +"automaticamente." msgid "AMS filament backup" -msgstr "" +msgstr "Copia de Seguridad del Filamento AMS" msgid "" -"AMS will continue to another spool with the same properties of filament " -"automatically when current filament runs out" +"AMS will continue to another spool with the same properties of filament automatically when " +"current filament runs out" msgstr "" +"El AMS continuará con otra bobina con las mismas propiedades de filamento automaticamente " +"cuando el filamento se termine" msgid "File" msgstr "Archivo" @@ -2114,35 +2126,39 @@ msgid "Calibration" msgstr "Calibración" msgid "" -"Failed to download the plug-in. Please check your firewall settings and vpn " -"software, check and retry." +"Failed to download the plug-in. Please check your firewall settings and vpn software, " +"check and retry." msgstr "" +"Fallo al descargar el complemento. Por favor, compruebe el cortafuegos y la vpn, e " +"inténtelo de nuevo." msgid "" -"Failed to install the plug-in. Please check whether it is blocked or deleted " -"by anti-virus software." +"Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus " +"software." msgstr "" +"Fallo al instalar el complemento. Por favor, compruebe si ha sido bloqueado o borrado por " +"un antivirus." msgid "click here to see more info" -msgstr "" +msgstr "presiona aquí para mostrar más información" msgid "Please home all axes (click " -msgstr "" +msgstr "Por favor, mandar a inicio todos los ejes (presione " msgid "" -") to locate the toolhead's position. This prevents device moving beyond the " -"printable boundary and causing equipment wear." +") to locate the toolhead's position. This prevents device moving beyond the printable " +"boundary and causing equipment wear." msgstr "" +") para localizar la posición del cabezal. Esto previene que el dispositivo se mueva más " +"allá de los limites de impresión y cause desgaste en el equipo." msgid "Go Home" -msgstr "" +msgstr "Ir al Inicio" -msgid "" -"A error occurred. Maybe memory of system is not enough or it's a bug of the " -"program" +msgid "A error occurred. Maybe memory of system is not enough or it's a bug of the program" msgstr "" -"Se ha producido un error. Tal vez la memoria del sistema no es suficiente o " -"es un error del programa" +"Se ha producido un error. Tal vez la memoria del sistema no es suficiente o es un error " +"del programa" msgid "Please save project and restart the program. " msgstr "Guarde el proyecto y reinicie el programa. " @@ -2192,37 +2208,32 @@ msgid "Succeed to export G-code to %1%" msgstr "Exportación de código G a %1% con éxito" msgid "Running post-processing scripts" -msgstr "" +msgstr "Ejecutando scripts de post-procesado" msgid "Copying of the temporary G-code to the output G-code failed" -msgstr "" +msgstr "Copiado del G-code temporal al G-code de salida fallido" #, boost-format msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" -msgstr "" +msgstr "Programación de la carga a %1%. Mire la Ventana -> Cola de Impresión del Anfitrión" msgid "Origin" -msgstr "Origen" +msgstr "" msgid "Diameter" msgstr "Diámetro" msgid "Size in X and Y of the rectangular plate." -msgstr "Tamaño en X e Y de la placa rectangular." +msgstr "Tamaño en X e Y de la cama rectangular." -msgid "" -"Distance of the 0,0 G-code coordinate from the front left corner of the " -"rectangle." +msgid "Distance of the 0,0 G-code coordinate from the front left corner of the rectangle." msgstr "" -"Distancia de la coordenada del código G de 0,0 de la esquina frontal " -"izquierda del rectángulo." +"Distancia de la coordenada del código G de 0,0 de la esquina frontal izquierda del " +"rectángulo." -msgid "" -"Diameter of the print bed. It is assumed that origin (0,0) is located in the " -"center." +msgid "Diameter of the print bed. It is assumed that origin (0,0) is located in the center." msgstr "" -"Diámetro de la base de impresión. Se supone que el origen (0,0) está ubicado " -"en el centro." +"Diámetro de la cama de impresión. Se supone que el origen (0,0) está ubicado en el centro." msgid "Rectangular" msgstr "Rectangular" @@ -2252,7 +2263,7 @@ msgid "Model" msgstr "Modelo" msgid "Choose an STL file to import bed shape from:" -msgstr "Escoge un archivo STL para importar la forma de la base:" +msgstr "Escoge un archivo STL para importar la forma de la cama:" msgid "Invalid file format." msgstr "Formato inválido de archivo." @@ -2263,61 +2274,60 @@ msgstr "Error! Modelo inválido" msgid "The selected file contains no geometry." msgstr "El archivo seleccionado no contiene geometría." -msgid "" -"The selected file contains several disjoint areas. This is not supported." -msgstr "" -"El archivo seleccionado contiene varias áreas disjuntas. Esto no es " -"compatible." +msgid "The selected file contains several disjoint areas. This is not supported." +msgstr "El archivo seleccionado contiene varias áreas disjuntas. Esto no es compatible." msgid "Choose a file to import bed texture from (PNG/SVG):" -msgstr "" -"Escoge un archivo para importar la textura de la base de impresión (PNG/SVG):" +msgstr "Escoge un archivo para importar la textura de la cama de impresión (PNG/SVG):" msgid "Choose an STL file to import bed model from:" -msgstr "Escoge un archivo STL para importar el modelo de la base de impresión:" +msgstr "Escoge un archivo STL para importar el modelo de la cama de impresión:" msgid "Bed Shape" -msgstr "Forma de la base de impresión" +msgstr "Forma de la cama de impresión" msgid "" "Nozzle may be blocked when the temperature is out of recommended range.\n" "Please make sure whether to use the temperature to print.\n" "\n" msgstr "" -"La boquilla puede bloquearse cuando la temperatura está fuera del rango " -"recomendado.\n" +"La boquilla puede bloquearse cuando la temperatura está fuera del rango recomendado.\n" "Por favor, asegúrese de utilizar la temperatura para imprimir.\n" #, c-format, boost-format -msgid "" -"Recommended nozzle temperature of this filament type is [%d, %d] degree " -"centigrade" +msgid "Recommended nozzle temperature of this filament type is [%d, %d] degree centigrade" msgstr "" -"La temperatura recomendada de la boquilla de este tipo de filamento es de " -"[%d, %d] grados centígrados" +"La temperatura recomendada de la boquilla de este tipo de filamento es de [%d, %d] grados " +"centígrados" #, c-format, boost-format msgid "" -"Bed temperature of other layer is lower than bed temperature of initial " -"layer for more than %d degree centigrade.\n" +"Bed temperature of other layer is lower than bed temperature of initial layer for more " +"than %d degree centigrade.\n" "This may cause model broken free from build plate during printing" msgstr "" -"La temperatura del lecho de la otra capa es inferior a la temperatura del " -"lecho de la capa inicial durante más de %d grados centígrados.\n" -"Esto puede hacer que el modelo se desprenda de la placa de impresión durante " -"la impresión." +"La temperatura del lecho de la otra capa es inferior a la temperatura del lecho de la capa " +"inicial durante más de %d grados centígrados.\n" +"Esto puede hacer que el modelo se desprenda de la cama de impresión durante la impresión" msgid "" "Bed temperature is higher than vitrification temperature of this filament.\n" "This may cause nozzle blocked and printing failure\n" -"Please keep the printer open during the printing process to ensure air " -"circulation or reduce the temperature of the hot bed" +"Please keep the printer open during the printing process to ensure air circulation or " +"reduce the temperature of the hot bed" msgstr "" +"La temperatura de capa es superior que la temperatura de vitrificación de este " +"filamento. \n" +" Esto podría causar que la boquilla se bloquee y produzca un fallo de impresión. Por " +"favor, mantenga la impresora abierta durante el proceso para garantizar la circulación de " +"aire o reducir la temperatura de la cama caliente" msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" msgstr "" +"Velocidad volumétrica máxima demasiado baja.\n" +"Reajustar a 0.5" msgid "" "Too small layer height.\n" @@ -2343,19 +2353,16 @@ msgstr "" "La altura de la primera capa se restablecerá a 0,2." msgid "" -"This setting is only used for model size tunning with small value in some " -"cases.\n" +"This setting is only used for model size tunning with small value in some cases.\n" "For example, when model size has small error and hard to be assembled.\n" "For large size tuning, please use model scale function.\n" "\n" "The value will be reset to 0." msgstr "" -"Este ajuste sólo se utiliza para afinar el tamaño del modelo con un valor " -"pequeño en algunos casos.\n" -"Por ejemplo, cuando el tamaño del modelo tiene un pequeño error y es difícil " -"de montar.\n" -"Para el ajuste de tamaño grande, por favor utilice la función de escala del " -"modelo.\n" +"Este ajuste sólo se utiliza para afinar el tamaño del modelo con un valor pequeño en " +"algunos casos.\n" +"Por ejemplo, cuando el tamaño del modelo tiene un pequeño error y es difícil de montar.\n" +"Para el ajuste de tamaño grande, por favor utilice la función de escala del modelo.\n" "\n" "El valor se restablecerá a 0." @@ -2367,16 +2374,19 @@ msgid "" "The value will be reset to 0." msgstr "" "Una compensación de la pata de elefante demasiado grande no es razonable.\n" -"Si realmente tiene un efecto grave de pata de elefante, por favor, compruebe " -"otros ajustes.\n" +"Si realmente tiene un efecto grave de pata de elefante, por favor, compruebe otros " +"ajustes.\n" "Por ejemplo, si la temperatura de la cama es demasiado alta.\n" "\n" "El valor se restablecerá a 0." msgid "" -"Spiral mode only works when wall loops is 1, support is disabled, top shell " -"layers is 0, sparse infill density is 0 and timelapse type is traditional." +"Spiral mode only works when wall loops is 1, support is disabled, top shell layers is 0, " +"sparse infill density is 0 and timelapse type is traditional." msgstr "" +"El modo espiral sólo funciona cuando los bucles de pared son 1, el soporte está " +"desactivado, las capas superiores de la cáscara son 0, la densidad de relleno disperso es " +"0 y el tipo de intervalo es tradicional." msgid "" "Change these settings automatically? \n" @@ -2388,18 +2398,17 @@ msgstr "" "No - Dejar de usar el modo espiral esta vez" msgid "" -"Prime tower does not work when Adaptive Layer Height or Independent Support " -"Layer Height is on.\n" +"Prime tower does not work when Adaptive Layer Height or Independent Support Layer Height " +"is on.\n" "Which do you want to keep?\n" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height and Independent Support Layer Height" msgstr "" -"La torre principal no funciona cuando la altura de la capa adaptable o la " -"altura de la capa de soporte independiente están activadas.\n" +"La torre de purga no funciona cuando la altura de la capa adaptable o la altura de la capa " +"de soporte independiente están activadas.\n" "¿Qué desea mantener?\n" -"SÍ - Mantener la torre principal\n" -"NO - Mantener la altura de capa adaptable y la altura de capa de soporte " -"independiente" +"SÍ - Mantener la torre de purga\n" +"NO - Mantener la altura de capa adaptable y la altura de capa de soporte independiente" msgid "" "Prime tower does not work when Adaptive Layer Height is on.\n" @@ -2407,10 +2416,9 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Adaptive Layer Height" msgstr "" -"La torre principal no funciona cuando la altura de capa adaptativa está " -"activada.\n" +"La torre de purga no funciona cuando la altura de capa adaptativa está activada.\n" "¿Qué quieres mantener?\n" -"SÍ - Mantener la torre principal\n" +"SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de capa adaptable" msgid "" @@ -2419,26 +2427,36 @@ msgid "" "YES - Keep Prime Tower\n" "NO - Keep Independent Support Layer Height" msgstr "" -"La torre principal no funciona cuando la altura de la capa de soporte " -"independiente está activada.\n" +"La torre de purga no funciona cuando la altura de la capa de soporte independiente está " +"activada.\n" "¿Qué quieres mantener?\n" -"SÍ - Mantener la torre principal\n" +"SÍ - Mantener la torre de purga\n" "NO - Mantener la altura de la capa de soporte independiente" #, boost-format msgid "%1% infill pattern doesn't support 100%% density." msgstr "El patrón de relleno %1% no soporta el 100%% de densidad." +#, fuzzy +#| msgid "" +#| "Switch to rectilinear pattern?\n" +#| "Yes - switch to rectilinear pattern automatically\n" +#| "No - reset density to default non 100% value automaticlly" msgid "" "Switch to rectilinear pattern?\n" "Yes - switch to rectilinear pattern automaticlly\n" "No - reset density to default non 100% value automaticlly" msgstr "" +"¿Cambiar a patrón rectilineo?\n" +"Sí - cambiar a patrón rectilineo automaticamente\n" +"No - reiniciar a valor de densidad no 100% por defecto automaticamente" msgid "" "While printing by Object, the extruder may collide skirt.\n" "Thus, reset the skirt layer to 1 to avoid that." msgstr "" +"Mientras se imprime por objeto, el extrusor puede chocar contra la falda.\n" +"En ese caso, reinicie la capa de falda a 1 para evitarlo." msgid "Auto bed leveling" msgstr "Nivelación de cama automática" @@ -2471,7 +2489,7 @@ msgid "Inspecting first layer" msgstr "Inspeccionando la primera capa" msgid "Identifying build plate type" -msgstr "Identificando el tipo de placa de impresión" +msgstr "Identificando el tipo de cama de impresión" msgid "Calibrating Micro Lidar" msgstr "Calibrando el Micro Lidar" @@ -2498,19 +2516,17 @@ msgid "Calibrating extrusion flow" msgstr "Calibrando el flujo de extrusión" msgid "Paused due to nozzle temperature malfunction" -msgstr "" -"Pausado debido a un mal funcionamiento de la temperatura de la boquilla" +msgstr "Pausado debido a un mal funcionamiento de la temperatura de la boquilla" msgid "Paused due to heat bed temperature malfunction" msgstr "" -"Se ha interrumpido debido a un mal funcionamiento de la temperatura de la " -"cama caliente" +"Se ha interrumpido debido a un mal funcionamiento de la temperatura de la cama caliente" msgid "MC" msgstr "MC" msgid "MainBoard" -msgstr "Placa Madre" +msgstr "Placa Base" msgid "TH" msgstr "TH" @@ -2543,13 +2559,13 @@ msgid "Update failed." msgstr "Actualización fallida." msgid "Failed to start printing job" -msgstr "" +msgstr "Fallo iniciando el trabajo de impresión" msgid "default" msgstr "por defecto" msgid "parameter name" -msgstr "" +msgstr "nombre del parámetro" msgid "N/A" msgstr "N/A" @@ -2601,31 +2617,31 @@ msgid "Tool" msgstr "Herramienta" msgid "Layer Time" -msgstr "" +msgstr "Tiempo de capa" msgid "Layer Time (log)" -msgstr "" +msgstr "Tiempo de capa (log)" msgid "Height: " -msgstr "" +msgstr "Altura: " msgid "Width: " -msgstr "" +msgstr "Anchura: " msgid "Speed: " -msgstr "" +msgstr "Velocidad: " msgid "Flow: " -msgstr "" +msgstr "Flujo: " msgid "Layer Time: " -msgstr "" +msgstr "Tiempo de Capa: " msgid "Fan Speed: " -msgstr "" +msgstr "Velocidad del Ventilador: " msgid "Temperature: " -msgstr "" +msgstr "Temperatura: " msgid "Loading G-codes" msgstr "Carga de códigos G" @@ -2637,22 +2653,22 @@ msgid "Generating geometry index data" msgstr "Generación de datos de índices geométricos" msgid "Statistics of All Plates" -msgstr "" +msgstr "Estadísticas de todas las camas" msgid "Display" msgstr "Pantalla" msgid "Flushed" -msgstr "" +msgstr "Descargado" msgid "Total" msgstr "Total" msgid "Total Time Estimation" -msgstr "" +msgstr "Tiempo Total Estimado" msgid "Total time" -msgstr "" +msgstr "Tiempo total" msgid "up to" msgstr "hasta" @@ -2715,7 +2731,7 @@ msgid "Options" msgstr "Opciones" msgid "travel" -msgstr "Recorrido" +msgstr "recorrido" msgid "Extruder" msgstr "Extrusor" @@ -2745,7 +2761,7 @@ msgid "Total Estimation" msgstr "Estimación total" msgid "Time Estimation" -msgstr "" +msgstr "Estimación de Tiempo" msgid "Normal mode" msgstr "Modo normal" @@ -2763,52 +2779,52 @@ msgid "Switch to normal mode" msgstr "Cambiar al modo normal" msgid "Variable layer height" -msgstr "" +msgstr "Altura de capa variable" msgid "Adaptive" -msgstr "" +msgstr "Adaptativo" msgid "Quality / Speed" -msgstr "" +msgstr "Calidad / Velocidad" msgid "Smooth" -msgstr "" +msgstr "Suave" msgid "Radius" msgstr "Radio" msgid "Keep min" -msgstr "" +msgstr "Mantener el mínimo" msgid "Left mouse button:" -msgstr "" +msgstr "Botón izquierdo del ratón:" msgid "Add detail" -msgstr "" +msgstr "Añadir detalle" msgid "Right mouse button:" -msgstr "" +msgstr "Botón derecho del ratón:" msgid "Remove detail" -msgstr "" +msgstr "Borrar detalle" msgid "Shift + Left mouse button:" -msgstr "" +msgstr "Shift + botón izquierdo del ratón:" msgid "Reset to base" -msgstr "" +msgstr "Volver a la base" msgid "Shift + Right mouse button:" -msgstr "" +msgstr "Shift + Botón derecho del ratón:" msgid "Smoothing" -msgstr "" +msgstr "Suavidad" msgid "Mouse wheel:" -msgstr "" +msgstr "Rueda del ratón:" msgid "Increase/decrease edit area" -msgstr "" +msgstr "Incrementar/decrementar el área de edición" msgid "Sequence" msgstr "Secuencia" @@ -2820,7 +2836,7 @@ msgid "Tool Move" msgstr "Herramienta Mover" msgid "Tool Rotate" -msgstr "" +msgstr "Herramienta Rotar" msgid "Move Object" msgstr "Mover Objeto" @@ -2847,7 +2863,7 @@ msgid "Auto rotate for arrangement" msgstr "Rotación automática para el posicionamiento" msgid "Allow multiple materials on same plate" -msgstr "Permitir varios materiales en la misma placa" +msgstr "Permitir varios materiales en la misma cama" msgid "Avoid extrusion calibration region" msgstr "Evitar la zona de calibración del extrusor" @@ -2856,7 +2872,7 @@ msgid "Add" msgstr "Añadir" msgid "Add plate" -msgstr "Añadir placa" +msgstr "Añadir cama" msgid "Auto orient" msgstr "Orientar automáticamente" @@ -2865,7 +2881,7 @@ msgid "Arrange all objects" msgstr "Ordenar todos los objetos" msgid "Arrange objects on selected plates" -msgstr "Colocar los objetos en las placas seleccionadas" +msgstr "Colocar los objetos en las camas seleccionadas" msgid "Split to objects" msgstr "Partir en varias piezas" @@ -2877,7 +2893,7 @@ msgid "Assembly View" msgstr "Vista de conjunto" msgid "Select Plate" -msgstr "Seleccione la placa" +msgstr "Seleccione la cama" msgid "Assembly Return" msgstr "Volver a montar" @@ -2892,10 +2908,10 @@ msgid "Explosion Ratio" msgstr "Ratio de Explosión" msgid "Section View" -msgstr "" +msgstr "Vista de Sección" msgid "Assemble Control" -msgstr "" +msgstr "Control de Ensamblado" msgid "Total Volume:" msgstr "Volumen total:" @@ -2911,53 +2927,58 @@ msgstr "Tamaño:" #, c-format, boost-format msgid "" -"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " -"separate the conflicted objects farther (%s <-> %s)." +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please separate the " +"conflicted objects farther (%s <-> %s)." msgstr "" +"Se han encontrado conflictos de rutas gcode en la capa %d, z = %.2lf mm. Por favor, separe " +"más los objetos en conflicto (%s <-> %s)." msgid "An object is layed over the boundary of plate." -msgstr "Un objeto está sobre el límite de la placa." +msgstr "Un objeto está sobre el límite de la cama." msgid "A G-code path goes beyond the boundary of plate." -msgstr "Una ruta de código G va más allá del límite de la placa." +msgstr "Una ruta de código G va más allá del límite de la cama." msgid "Only the object being edit is visible." msgstr "Sólo es visible el objeto que se está editando." msgid "" "An object is laid over the boundary of plate or exceeds the height limit.\n" -"Please solve the problem by moving it totally on or off the plate, and " -"confirming that the height is within the build volume." +"Please solve the problem by moving it totally on or off the plate, and confirming that the " +"height is within the build volume." msgstr "" +"Un objeto está colocado en el límite de la cama o excede el límite de altura.\n" +"Por favor solucione el problema moviéndolo totalmente fuera o dentro de la cama, y " +"confirme que la altura está entre el volumen de construcción." msgid "Jump to" msgstr "Ir a" msgid "ERROR:" -msgstr "" +msgstr "ERROR:" msgid "Calibration step selection" -msgstr "" +msgstr "Seleccionar paso de calibración" msgid "Micro lidar calibration" -msgstr "" +msgstr "Calibración Micro lidar" msgid "Bed leveling" -msgstr "" +msgstr "Nivelación de la cama" msgid "Resonance frequency identification" -msgstr "" +msgstr "Identificación de frecuencia de resonancia" msgid "Calibration program" msgstr "Programa de calibración" msgid "" -"The calibration program detects the status of your device automatically to " -"minimize deviation.\n" +"The calibration program detects the status of your device automatically to minimize " +"deviation.\n" "It keeps the device performing optimally." msgstr "" -"El programa de calibración detecta el estado de su dispositivo " -"automáticamente para minimizar la desviación.\n" +"El programa de calibración detecta el estado de su dispositivo automáticamente para " +"minimizar la desviación.\n" "Mantiene el dispositivo con un rendimiento óptimo." msgid "Calibration Flow" @@ -2967,22 +2988,22 @@ msgid "Start Calibration" msgstr "Iniciar Calibración" msgid "Completed" -msgstr "" +msgstr "Completado" msgid "Calibrating" msgstr "Calibrando" msgid "Auto-record Monitoring" -msgstr "" +msgstr "Monitorización de Auto-Grabado" msgid "Go Live" -msgstr "" +msgstr "Ir A En Vivo" msgid "Resolution" msgstr "Resolución" msgid "Show \"Live Video\" guide page." -msgstr "" +msgstr "Mostrar guía de \"Video En vivo\"." msgid "720p" msgstr "" @@ -3004,13 +3025,13 @@ msgstr "" "en la impresora, como se muestra en la figura:" msgid "Invalid input." -msgstr "" +msgstr "Introducción inválida." msgid "New Window" -msgstr "" +msgstr "Nueva Ventana" msgid "Open a new window" -msgstr "" +msgstr "Abrir nueva ventana" msgid "Application is closing" msgstr "La aplicación se está cerrando" @@ -3040,34 +3061,34 @@ msgid "No" msgstr "No" msgid "will be closed before creating a new model. Do you want to continue?" -msgstr "" +msgstr "se cerrará antes de crear un nuevo modelo. ¿Quiere continuar?" msgid "Slice plate" -msgstr "Laminar placa" +msgstr "Laminar cama" msgid "Print plate" -msgstr "" +msgstr "Cama de impresión" msgid "Slice all" msgstr "Laminar todo" msgid "Export G-code file" -msgstr "" +msgstr "Exportar archivo G-code" msgid "Send" msgstr "Enviar" msgid "Export plate sliced file" -msgstr "" +msgstr "Exporar archivo de laminado de cama de impresión" msgid "Export all sliced file" -msgstr "" +msgstr "Exportar todos los archivos de laminado" msgid "Print all" msgstr "Imprimir todo" msgid "Send all" -msgstr "" +msgstr "Mandar todo" msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" @@ -3082,23 +3103,23 @@ msgid "Show Configuration Folder" msgstr "Mostrar Carpeta de Configuración" msgid "Show Tip of the Day" -msgstr "" +msgstr "Mostrar Consejo Diario" msgid "Check for Update" msgstr "Comprobar Actualicaciones" msgid "Open Network Test" -msgstr "" +msgstr "Arir Test de Red" #, c-format, boost-format msgid "&About %s" msgstr "&Acerca de %s" msgid "Upload Models" -msgstr "" +msgstr "Cargar Modelos" msgid "Download Models" -msgstr "" +msgstr "Descargar Modelos" msgid "Default View" msgstr "Vista por Defecto" @@ -3142,7 +3163,7 @@ msgid "Right View" msgstr "Vista derecha" msgid "Start a new window" -msgstr "" +msgstr "Abrir nueva ventana" msgid "New Project" msgstr "Nuevo proyecto" @@ -3172,7 +3193,7 @@ msgid "Save current project as" msgstr "Guardar el proyecto actual como" msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" -msgstr "" +msgstr "Importar 3MF/STL/STEP/SVG/OBJ/AMF" msgid "Load a model" msgstr "Cargar un modelo" @@ -3196,22 +3217,22 @@ msgid "Export 3mf file without using some 3mf-extensions" msgstr "Exporte el archivo 3mf sin usar algunas de las extensiones" msgid "Export current sliced file" -msgstr "" +msgstr "Exportar archivo de laminado actual" msgid "Export all plate sliced file" -msgstr "" +msgstr "Exportar todos los archivos de laminado de cama" msgid "Export G-code" msgstr "Exportar código G" msgid "Export current plate as G-code" -msgstr "" +msgstr "Exportar cama actual cómo G-code" msgid "Export &Configs" msgstr "Exportar & Configuración" msgid "Export current configuration to files" -msgstr "" +msgstr "Exportar configuración actual a archivos" msgid "Export" msgstr "Exportar" @@ -3277,10 +3298,10 @@ msgid "Use Orthogonal View" msgstr "Utilizar Vista Ortogonal" msgid "Show &Labels" -msgstr "" +msgstr "Mostrar &Etiquetas" msgid "Show object labels in 3D scene" -msgstr "" +msgstr "Mostrar etiquetas en escena 3D" msgid "Preferences" msgstr "Preferencias" @@ -3292,52 +3313,52 @@ msgid "Help" msgstr "Ayuda" msgid "Temperature Calibration" -msgstr "" +msgstr "Calibración de temperatura" msgid "Pass 1" -msgstr "" +msgstr "Paso 1" msgid "Flow rate test - Pass 1" -msgstr "" +msgstr "Test de caudal - Paso 1" msgid "Pass 2" -msgstr "" +msgstr "Paso 2" msgid "Flow rate test - Pass 2" -msgstr "" +msgstr "Test de Caudal - Paso 2" msgid "Flow rate" -msgstr "" +msgstr "Test de caudal" msgid "Pressure advance" -msgstr "" +msgstr "Avance de presión" msgid "Retraction test" -msgstr "" +msgstr "Test de retracción" msgid "Orca Tolerance Test" -msgstr "" +msgstr "Test de Tolerancia Orca" msgid "Max flowrate" -msgstr "" +msgstr "Máximo caudal" msgid "VFA" msgstr "" msgid "More..." -msgstr "" +msgstr "Más..." msgid "Tutorial" msgstr "" msgid "Calibration help" -msgstr "" +msgstr "Ayuda de calibración" msgid "More calibrations" -msgstr "" +msgstr "Más calibraciones" msgid "3D Models" -msgstr "" +msgstr "Modelos 3D" msgid "&Open G-code" msgstr "Abrir código G (&O)" @@ -3358,10 +3379,10 @@ msgid "Export toolpaths as OBJ" msgstr "Exportar trayectorias de herramientas como OBJ" msgid "Open &Studio" -msgstr "" +msgstr "Abrir $Studio" msgid "Open Studio" -msgstr "" +msgstr "Abrir Studio" msgid "&Quit" msgstr "Sa&lir" @@ -3381,11 +3402,11 @@ msgstr "Ayu&da" #, c-format, boost-format msgid "A file exists with the same name: %s, do you want to override it." -msgstr "" +msgstr "Existe un archivo con el mismo nombre: %s, ¿desea sobreescribirlo?." #, c-format, boost-format msgid "A config exists with the same name: %s, do you want to override it." -msgstr "" +msgstr "Existe unaconfiguración con el mismo nombre: %s, ¿desea sobreescribirla?." msgid "Overwrite file" msgstr "Sobrescribir archivo" @@ -3397,26 +3418,28 @@ msgid "No to All" msgstr "No a todo" msgid "Choose a directory" -msgstr "" +msgstr "Elegir un directorio" #, c-format, boost-format msgid "There is %d config exported. (Only non-system configs)" msgid_plural "There are %d configs exported. (Only non-system configs)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Hay %d configuración exportada. (solo configuraciones que no sean del sistema)" +msgstr[1] "Hay %d configuraciones exportadas. (solo configuraciones que no sean del sistema)" msgid "Export result" msgstr "Exportar resultado" msgid "Select profile to load:" -msgstr "" +msgstr "Seleccionar perfil a cargar:" #, c-format, boost-format msgid "There is %d config imported. (Only non-system and compatible configs)" -msgid_plural "" -"There are %d configs imported. (Only non-system and compatible configs)" +msgid_plural "There are %d configs imported. (Only non-system and compatible configs)" msgstr[0] "" +"Hay %d configuración exportada. (solo configuraciones que no sean del sistema y " +"compatibles)" msgstr[1] "" +"Hay %d configuraciones importadas. (Solo las configuraciones compatibles y no-del-sistema)" msgid "Import result" msgstr "Importar resultado" @@ -3437,6 +3460,10 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"¿Quieres sincronizar tus datos personales desde la nube Bambú? \n" +"Esta contiene la siguiente información:\n" +"1. Los Preajustes de Proceso\n" +"2. Los Preajustes de Filamento3. Los preajustes de la Impressora" msgid "Synchronization" msgstr "Sincronización" @@ -3445,7 +3472,7 @@ msgid "Initialize failed (No Device)!" msgstr "¡Inicialización fallida (No hay dispositivo)!" msgid "Initialize failed (No Camera Device)!" -msgstr "" +msgstr "¡Inicialización fallida (No hay Cámara)!" msgid "Initializing..." msgstr "Iniciando..." @@ -3454,57 +3481,62 @@ msgid "Loading..." msgstr "Cargando..." msgid "Initialize failed (Not supported with LAN-only mode)!" -msgstr "" +msgstr "Inicialización fallida (No soportada con el modo Solo Red Local)" msgid "Initialize failed (Not accessible in LAN-only mode)!" -msgstr "" +msgstr "Inicialización fallida (No accesible en el modo solo Red Local)" msgid "Printer is busy downloading, Please wait for the downloading to finish." -msgstr "" +msgstr "La impresora está ocupada descargando. Por favor, espere a que finalice." msgid "Initialize failed (Missing LAN ip of printer)!" -msgstr "" +msgstr "Inicialización fallida (Perdida la IP de red de la impresora)" msgid "Initialize failed (Not supported by printer)!" -msgstr "" +msgstr "Inicialización fallida (No soportada por la impresora)" #, c-format, boost-format msgid "Initialize failed (%s)!" -msgstr "" +msgstr "¡Fallo al inicializar (%s)!" msgid "Network unreachable" -msgstr "" +msgstr "Red inalcanzable" #, c-format, boost-format msgid "Stopped [%d]!" -msgstr "" +msgstr "Parado [%d]" msgid "Stopped." msgstr "Detenido." msgid "LAN Connection Failed (Failed to start liveview)" -msgstr "" +msgstr "Fallo de Conexión de Red Local (Fallo al iniciar vista en vivo)" msgid "" "Virtual Camera Tools is required for this task!\n" "Do you want to install them?" msgstr "" +"Virtual Camera Tools es necesario para esta tarea.\n" +"¿Desea instalarlas?" msgid "Downloading Virtual Camera Tools" -msgstr "" +msgstr "Descargando Herramientas de Cámara Virtual" msgid "" "Another virtual camera is running.\n" "Bambu Studio supports only a single virtual camera.\n" "Do you want to stop this virtual camera?" msgstr "" +"Otra cámara virtual se está ejecutando.\n" +"Bambu Studio solo soporta una cámara virtual.\n" +"¿Desea detener esta cámara virtual?" #, c-format, boost-format msgid "Virtual camera initialize failed (%s)!" -msgstr "" +msgstr "Inicialización de cámara virtual (%s)" msgid "Information" -msgstr "" +msgstr "Información" msgid "Playing..." msgstr "Reproduciendo..." @@ -3520,49 +3552,49 @@ msgid "Month" msgstr "Mes" msgid "All Files" -msgstr "" +msgstr "Todos los Archivos" msgid "Group files by year, recent first." -msgstr "" +msgstr "Agrupar archivos por año, primero los recientes." msgid "Group files by month, recent first." -msgstr "" +msgstr "Agrupar archivos por mes, primero los recientes." msgid "Show all files, recent first." -msgstr "" +msgstr "Mostrar todos los archivos, primero los recientes." msgid "Timelapse" -msgstr "Timelapse" +msgstr "Intervalo" msgid "Switch to timelapse files." -msgstr "" +msgstr "Cambiar a archivos de intervalo." msgid "Video" msgstr "Video" msgid "Switch to video files." -msgstr "" +msgstr "Cambiar a archivos de video." msgid "Delete selected files from printer." -msgstr "" +msgstr "Borrar archivos seleccionados desde la impresora." msgid "Download" msgstr "Descargar" msgid "Download selected files from printer." -msgstr "" +msgstr "Descargar achivos seleccionados desde la impresora." msgid "Select" -msgstr "" +msgstr "Seleccionar" msgid "Batch manage files." -msgstr "" +msgstr "Arhivos de proceso por lotes." msgid "No printers." msgstr "No hay impresoras." msgid "Not supported by this model of printer!" -msgstr "" +msgstr "¡No soportado por este modelo de impresora!" msgid "Connecting..." msgstr "Conectando…" @@ -3578,37 +3610,37 @@ msgid "No files" msgstr "No hay archivos" msgid "Not accessible in LAN-only mode!" -msgstr "" +msgstr "¡No accesible en modelo de solo red local!" msgid "Missing LAN ip of printer!" -msgstr "" +msgstr "¡IP de red local pérdida!" #, c-format, boost-format msgid "You are going to delete %u files. Are you sure to continue?" -msgstr "" +msgstr "Va a borrar %u archivos. ¿Está seguro de continuar?" msgid "Delete files" -msgstr "" +msgstr "Borrar archivos" #, c-format, boost-format msgid "File '%s' was lost! Please download it again." -msgstr "" +msgstr "¡El archivo '%s' se perdió!\" Por favor, vuelva a descargárselo." msgid "Download waiting..." -msgstr "" +msgstr "Descarga esperando..." msgid "Play" -msgstr "" +msgstr "Reproducir" msgid "Open Folder" -msgstr "" +msgstr "Abrir Carpeta" msgid "Download finished" -msgstr "" +msgstr "Descarga finalizada" #, c-format, boost-format msgid "Downloading %d%%..." -msgstr "" +msgstr "Descargando %d%%..." msgid "Speed:" msgstr "Velocidad:" @@ -3623,7 +3655,7 @@ msgid "Zoom" msgstr "Zoom" msgid "Translation/Zoom" -msgstr "" +msgstr "Conversión/Zoom" msgid "3Dconnexion settings" msgstr "Ajustes de conexión 3D" @@ -3632,13 +3664,13 @@ msgid "Swap Y/Z axes" msgstr "Intercambiar los ejes Y/Z" msgid "Camera" -msgstr "" +msgstr "Cámara" msgid "SD Card" -msgstr "" +msgstr "Tarjeta SD" msgid "Camera Setting" -msgstr "" +msgstr "Ajuste de Cámara" msgid "Printing Progress" msgstr "Progreso de impresión" @@ -3653,16 +3685,16 @@ msgid "0" msgstr "" msgid "Layer: N/A" -msgstr "" +msgstr "Capa: N/A" msgid "Clear" -msgstr "" +msgstr "Vaciar" msgid "Control" msgstr "Control" msgid "Print Options" -msgstr "" +msgstr "Opciones de Impresora" msgid "100%" msgstr "100%" @@ -3674,7 +3706,7 @@ msgid "Aux" msgstr "" msgid "Cham" -msgstr "" +msgstr "Costura" msgid "Bed" msgstr "Cama" @@ -3686,69 +3718,75 @@ msgid "Debug Info" msgstr "Información de Depuración" msgid "No SD Card" -msgstr "" +msgstr "Sin tarjeta SD" msgid "SD Card Abnormal" -msgstr "" +msgstr "Tarjeta SD Anormal" msgid "Printing List" msgstr "Imprimiendo Lista" msgid "Cancel print" -msgstr "" +msgstr "Cancelar Impresión" msgid "Are you sure you want to cancel this print?" -msgstr "" +msgstr "¿Está seguro que desea cancelar esta impresión?" #, c-format, boost-format msgid "" -"Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the " -"printer by logging in with your user account." +"Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the printer by " +"logging in with your user account." msgstr "" +"Desconectado de la impresora [%s] debido a modo de red deshabilitado. Por favor, " +"reconéctese la impresora ingresando con su cuenta de usuario." #, c-format, boost-format msgid "" -"Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the " -"printer by inputting Access Code which can be gotten from printer screen." +"Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the printer by " +"inputting Access Code which can be gotten from printer screen." msgstr "" +"Desconectado de la impresora [%s] debido a modo de red habilitado. Por favor, reconéctese " +"la impresora ingresando con su cuenta de usuario." msgid "Downloading..." msgstr "Descargando…" msgid "Cloud Slicing..." -msgstr "" +msgstr "Laminado en la Nube..." #, c-format, boost-format msgid "In Cloud Slicing Queue, there are %s tasks ahead." -msgstr "" +msgstr "Hay %s tareas por delante, en la Cola de Laminado en la Nube." #, c-format, boost-format msgid "Layer: %s" -msgstr "" +msgstr "Capa: %s" #, c-format, boost-format msgid "Layer: %d/%d" -msgstr "" +msgstr "Capa: %d/%d" msgid "Please heat the nozzle to above 170 degree before loading filament." -msgstr "" +msgstr "Caliente la boquilla a más de 170 grados antes de cargar el filamento." msgid "Still unload" -msgstr "" +msgstr "Aún descargado" msgid "Still load" -msgstr "" +msgstr "Aún cargado" msgid "Please select an AMS slot before calibration" -msgstr "" +msgstr "Seleccione una ranura AMS antes de la calibración" msgid "" -"Cannot read filament info: the filament is loaded to the tool head,please " -"unload the filament and try again." +"Cannot read filament info: the filament is loaded to the tool head,please unload the " +"filament and try again." msgstr "" +"No se puede leer la información del filamento: el filamento está cargado en el cabezal de " +"la herramienta, por favor, descargue el filamento y vuelva a intentarlo." msgid "This only takes effect during printing" -msgstr "" +msgstr "Esto solo tendrá efecto durante la impresión" msgid "Silent" msgstr "Silencio" @@ -3763,7 +3801,7 @@ msgid "Ludicrous" msgstr "Lúdico" msgid "Can't start this without SD card." -msgstr "" +msgstr "No puede iniciarse sin una tarjeta SD." msgid "Failed to connect to the server" msgstr "No se ha podido conectar con el servidor" @@ -3832,10 +3870,10 @@ msgid "Undo integration was successful." msgstr "La operación de deshacer se ha realizado con éxito." msgid "New network plug-in available." -msgstr "" +msgstr "Nuevo complemento de red disponible." msgid "Details" -msgstr "" +msgstr "Detalles" msgid "Undo integration failed." msgstr "La operación de deshacer ha fallado." @@ -3853,7 +3891,7 @@ msgid "Open Folder." msgstr "Abrir Carpeta." msgid "Safely remove hardware." -msgstr "" +msgstr "Quitar hardware con seguridad." #, c-format, boost-format msgid "%1$d Object has custom supports." @@ -3870,11 +3908,11 @@ msgstr[1] "%1$d Los objetos tienen pintura de color." #, c-format, boost-format msgid "%1$d object was loaded as a part of cut object." msgid_plural "%1$d objects were loaded as parts of cut object" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%1$d El objeto se ha cargado como parte del objeto de corte." +msgstr[1] "%1$d Los objetos se han cargado como partes del objeto de corte" msgid "ERROR" -msgstr "" +msgstr "ERROR" msgid "CANCELED" msgstr "CANCELADO" @@ -3883,10 +3921,10 @@ msgid "COMPLETED" msgstr "COMPLETADO" msgid "Cancel upload" -msgstr "carga cancelada" +msgstr "Carga cancelada" msgid "Slice ok." -msgstr "Rebanado correcto." +msgstr "Laminado correcto." msgid "Error:" msgstr "Error:" @@ -3895,21 +3933,20 @@ msgid "Warning:" msgstr "Advertencia:" msgid "Export successfully." -msgstr "" +msgstr "Exportación exitosa." msgid " (Repair)" msgstr " (Reparación)" msgid " Click here to install it." -msgstr "" +msgstr " Presiona aquí para instalarlo." msgid "WARNING:" msgstr "AVISO:" msgid "Your model needs support ! Please make support material enable." msgstr "" -"¡Su modelo necesita soporte! Por favor, haga que el material de apoyo esté " -"habilitado." +"¡Su modelo necesita soporte! Por favor, haga que el material de apoyo esté habilitado." msgid "Gcode path overlap" msgstr "Superposición de la ruta del Gcode" @@ -3921,7 +3958,7 @@ msgid "Color painting" msgstr "Pintura en color" msgid "Cut connectors" -msgstr "" +msgstr "Cortar Conectores" msgid "Layers" msgstr "Capas" @@ -3929,12 +3966,10 @@ msgstr "Capas" msgid "Range" msgstr "Rango" -msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" +msgid "The application cannot run normally because OpenGL version is lower than 2.0.\n" msgstr "" -"La aplicación no puede ejecutarse normalmente porque la versión de OpenGL es " -"inferior a la 2.0.\n" +"La aplicación no puede ejecutarse normalmente porque la versión de OpenGL es inferior a la " +"2.0.\n" msgid "Please upgrade your graphics card driver." msgstr "Por favor, actualice el controlador de su tarjeta gráfica." @@ -3962,24 +3997,24 @@ msgid "Bottom" msgstr "Inferior" msgid "Enable AI monitoring of printing" -msgstr "" +msgstr "Activar monitorización por IA de la impresión" msgid "Sensitivity of pausing is" -msgstr "" +msgstr "La sensibilidad de pausa es" msgid "Enable detection of build plate position" -msgstr "" +msgstr "Activar detección de posición de cama" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." -msgstr "" +"The localization tag of build plate is detected, and printing is paused if the tag is not " +"in predefined range." +msgstr "La etiqueta de localización." msgid "First Layer Inspection" -msgstr "" +msgstr "Inspección de Primera Capa" msgid "Auto-recovery from step loss" -msgstr "" +msgstr "Autorecuperar desde pérdida de paso" msgid "Global" msgstr "Global" @@ -4007,7 +4042,7 @@ msgstr "Sin título" #, boost-format msgid " plate %1%:" -msgstr " placa %1%:" +msgstr " cama %1%:" msgid "Invalid name, the following characters are not allowed:" msgstr "Nombre no válido, los siguientes caracteres no están permitidos:" @@ -4037,7 +4072,7 @@ msgid "Click to edit preset" msgstr "Clic para cambiar el ajuste inicial" msgid "Connection" -msgstr "" +msgstr "Conexión" msgid "Bed type" msgstr "Tipo de cama" @@ -4046,48 +4081,51 @@ msgid "Flushing volumes" msgstr "Volúmenes de limpieza" msgid "Add one filament" -msgstr "" +msgstr "Añadir un filamento" msgid "Remove last filament" -msgstr "" +msgstr "Borrar último filamento" msgid "Synchronize filament list from AMS" -msgstr "" +msgstr "Sicronizar filamentos de la lista AMS" msgid "Set filaments to use" -msgstr "" +msgstr "Elegir filamentos para usar" -msgid "" -"No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgid "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" +"No hay filamentos AMS. Por favor, seleccione una impresora en la página 'Dispositivos' " +"para cargar información AMS." msgid "Sync filaments with AMS" -msgstr "" +msgstr "Sincronizar filamentos con AMS" msgid "" -"Sync filaments with AMS will drop all current selected filament presets and " -"colors. Do you want to continue?" +"Sync filaments with AMS will drop all current selected filament presets and colors. Do you " +"want to continue?" msgstr "" +"Sincronizar filamentos con AMS descartará todos los preajustes de filamento y colores. " +"¿Desea continuar?" -msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +msgid "Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" +"Se realizó la sincronización, ¿Desea sincronizar solo los cambios o resincronizar todo?" msgid "Sync" -msgstr "" +msgstr "Sincronizar" msgid "Resync" -msgstr "" +msgstr "Resincronizar" msgid "There are no compatible filaments, and sync is not performed." -msgstr "" +msgstr "No hay filamentos compatible, y no se ha realizado la sincronización." msgid "" -"There are some unknown filaments mapped to generic preset. Please update " -"Orca Slicer or restart Orca Slicer to check if there is an update to system " -"presets." +"There are some unknown filaments mapped to generic preset. Please update Orca Slicer or " +"restart Orca Slicer to check if there is an update to system presets." msgstr "" +"Hay algunos filamentos desconocidos mapeados en el preajuste genérico. Por favor actualice " +"o reinicie Orca Slicer para comprobar si hay una actualización de preajustes del sistema." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -4095,53 +4133,59 @@ msgstr "¿Quieres guardar los cambios en \"%1%\"?" #, c-format, boost-format msgid "" -"Successfully unmounted. The device %s(%s) can now be safely removed from the " -"computer." +"Successfully unmounted. The device %s(%s) can now be safely removed from the computer." msgstr "" +"Desmontado correctamente. El dispositivo %s(%s) ahora puede ser eliminado de forma segura." #, c-format, boost-format msgid "Ejecting of device %s(%s) has failed." -msgstr "" +msgstr "La expulsión del dispositivo %s(%s) ha fallado." msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "" -"Se ha detectado un proyecto anterior no guardado, ¿quieres restaurarlo?" +msgstr "Se ha detectado un proyecto anterior no guardado, ¿quieres restaurarlo?" msgid "Restore" msgstr "Restaurar" msgid "" -"The bed temperature exceeds filament's vitrification temperature. Please " -"open the front door of printer before printing to avoid nozzle clog." +"The bed temperature exceeds filament's vitrification temperature. Please open the front " +"door of printer before printing to avoid nozzle clog." msgstr "" +"La temperatura de la cama excede la temperatura de vitrificación del filamento. Por favor, " +"abra la puerta frontal de la impresora antes de imprimir para evitar atascos en la " +"boquilla." msgid "" -"The nozzle hardness required by the filament is higher than the default " -"nozzle hardness of the printer. Please replace the hardened nozzle or " -"filament, otherwise, the nozzle will be attrited or damaged." +"The nozzle hardness required by the filament is higher than the default nozzle hardness of " +"the printer. Please replace the hardened nozzle or filament, otherwise, the nozzle will be " +"attrited or damaged." msgstr "" +"La dureza de la boquilla requerida por el filamento es más alta que la dureza por defecto " +"de la impresora. Por favor, reemplace la boquilla endurecida y el filamento, de otra " +"forma, la boquilla se atascará o se dañará." #, c-format, boost-format msgid "Loading file: %s" msgstr "Cargando archivo: %s" msgid "The 3mf is not from Bambu Lab, load geometry data only." -msgstr "" +msgstr "El 3mf no es de Bambu Lab, cargar datos de geometría solo." msgid "Load 3mf" -msgstr "" +msgstr "Cargar 3mf" msgid "The Config can not be loaded." -msgstr "" +msgstr "La Configuración no será cargada." msgid "The 3mf is generated by old Orca Slicer, load geometry data only." -msgstr "" +msgstr "El 3mf está generado por un Orca Slicer antiguo, cargar solo datos de geometría." #, c-format, boost-format msgid "" -"The 3mf's version %s is newer than %s's version %s, Found following keys " -"unrecognized:" +"The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:" msgstr "" +"La versión de 3mf %s es más nueva que la versión de %s %s, encontradas las siguientes " +"llaves no reconocidas:" msgid "You'd better upgrade your software.\n" msgstr "Será mejor que actualices tu software.\n" @@ -4150,27 +4194,25 @@ msgid "Newer 3mf version" msgstr "Nueva versión 3mf" #, c-format, boost-format -msgid "" -"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " -"software." +msgid "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software." msgstr "" +"La versión de 3mf %s es más nueva que la versión de %s %s, se sugiere actualizar su " +"sofware." msgid "Invalid values found in the 3mf:" -msgstr "" +msgstr "Valores inválidos encontrados en el 3mf:" msgid "Please correct them in the param tabs" -msgstr "" +msgstr "Por favor, corrijalos en las pestañas de parámetros" msgid "The 3mf is not compatible, load geometry data only!" -msgstr "" +msgstr "¡El 3mf no es compatible, cargue solamente los datos de geometría!" msgid "Incompatible 3mf" -msgstr "3mf Incompatible " +msgstr "3mf Incompatible" msgid "Name of components inside step file is not UTF8 format!" -msgstr "" -"El nombre de los componentes dentro del archivo de pasos no tiene formato " -"UTF8." +msgstr "¡El nombre de los componentes dentro del archivo de pasos no tiene formato UTF8!" msgid "The name may show garbage characters!" msgstr "¡El nombre puede mostrar caracteres no válidos!" @@ -4178,8 +4220,7 @@ msgstr "¡El nombre puede mostrar caracteres no válidos!" #, boost-format msgid "Failed loading file \"%1%\". An invalid configuration was found." msgstr "" -"Ha fallado la carga del archivo \"%1%\". Se ha encontrado una configuración " -"no válida." +"Ha fallado la carga del archivo \"%1%\". Se ha encontrado una configuración no válida." msgid "Objects with zero volume removed" msgstr "Objetos con volumen cero eliminados" @@ -4192,8 +4233,7 @@ msgid "" "The object from file %s is too small, and maybe in meters or inches.\n" " Do you want to scale to millimeters?" msgstr "" -"El objeto del archivo %s es demasiado pequeño, tal vez en metros o " -"pulgadas.\n" +"El objeto del archivo %s es demasiado pequeño, tal vez en metros o pulgadas.\n" " ¿Quiere escalar a milímetros?" msgid "Object too small" @@ -4204,9 +4244,12 @@ msgid "" "Instead of considering them as multiple objects, should \n" "the file be loaded as a single object having multiple parts?" msgstr "" +"Este archivo contiene varios objetos colocados a varias alturas.\n" +"En lugar de considerarlos como objetos múltiples, ¿debería \n" +"el archivo como un único objeto con múltiples partes?" msgid "Multi-part object detected" -msgstr "" +msgstr "Objeto multiparte detectado" msgid "Load these files as a single object with multiple parts?\n" msgstr "¿Cargar estos archivos como un objeto único con múltiples partes?\n" @@ -4218,12 +4261,14 @@ msgid "The file does not contain any geometry data." msgstr "El archivo no contiene ninguna información geométrica." msgid "" -"Your object appears to be too large, Do you want to scale it down to fit the " -"heat bed automatically?" +"Your object appears to be too large, Do you want to scale it down to fit the heat bed " +"automatically?" msgstr "" +"Tu objeto parece demasiado grande, ¿Deseas disminuirlo para que quepa en la cama caliente " +"automaticamente?" msgid "Object too large" -msgstr "" +msgstr "Objeto demasiado grande" msgid "Export STL file:" msgstr "Exportar archivo STL:" @@ -4232,13 +4277,16 @@ msgid "Save file as:" msgstr "Guardar archivo como:" msgid "Delete object which is a part of cut object" -msgstr "" +msgstr "Borrar objetos los cuales son partes del objeto cortado" msgid "" "You try to delete an object which is a part of a cut object.\n" "This action will break a cut correspondence.\n" "After that model consistency can't be guaranteed." msgstr "" +"Se intenta eliminar un objeto que forma parte de un objeto cortado.\n" +"Esta acción romperá una correspondencia de corte.\n" +"Después de eso la consistencia del modelo no puede ser garantizada." msgid "The selected object couldn't be split." msgstr "El objeto seleccionado no ha podido ser dividido." @@ -4247,13 +4295,13 @@ msgid "Another export job is running." msgstr "Otro trabajo de exportación está en marcha." msgid "Select a new file" -msgstr "" +msgstr "Seleccione un nuevo archivo" msgid "File for the replace wasn't selected" -msgstr "" +msgstr "El archivo de reemplazo no ha sido seleccionado" msgid "Error during replace" -msgstr "" +msgstr "Error durante el reemplazo" msgid "Please select a file" msgstr "Por favor, seleccione un archivo" @@ -4271,56 +4319,57 @@ msgid "Invalid data" msgstr "Datos inválidos" msgid "Slicing Canceled" -msgstr "" +msgstr "Laminado Cancelado" #, c-format, boost-format msgid "Slicing Plate %d" -msgstr "Placa de corte %d" +msgstr "Cama de corte %d" msgid "Please resolve the slicing errors and publish again." msgstr "Por favor, resuelve los errores de corte y publica de nuevo." -msgid "" -"Network Plug-in is not detected. Network related features are unavailable." -msgstr "" +msgid "Network Plug-in is not detected. Network related features are unavailable." +msgstr "Complemento de red no detectado. Características relacionadas no disponibles." msgid "" "Preview only mode:\n" "The loaded file contains gcode only, Can not enter the Prepare page" msgstr "" +"Previsualizar solo el modo:\n" +"El archivo cargado contiene solo gcode, no puedo entrar a la página de Preparación" msgid "You can keep the modified presets to the new project or discard them" -msgstr "" -"Puedes mantener los preajustes modificados en el nuevo proyecto o " -"descartarlos" +msgstr "Puedes mantener los preajustes modificados en el nuevo proyecto o descartarlos" msgid "Creating a new project" msgstr "Creando un nuevo proyecto" msgid "Load project" -msgstr "Carga de Proyecto" +msgstr "Cargar Proyecto" msgid "" "Failed to save the project.\n" -"Please check whether the folder exists online or if other programs open the " -"project file." +"Please check whether the folder exists online or if other programs open the project file." msgstr "" +"Fallo salvando el proyecto.\n" +"Por favor, comprobar si la carpeta existe en línea o si otros programas tienen abierto el " +"archivo de proyecto." msgid "Save project" -msgstr "" +msgstr "Salvar proyecto" msgid "Importing Model" -msgstr "" +msgstr "Importando modelo" msgid "prepare 3mf file..." -msgstr "" +msgstr "preparar el archivo 3mf..." msgid "downloading project ..." -msgstr "" +msgstr "descargando proyecto..." #, c-format, boost-format msgid "Project downloaded %d%%" -msgstr "" +msgstr "Proyecto descargado %d%%" msgid "The selected file" msgstr "El archivo seleccionado" @@ -4353,7 +4402,7 @@ msgid "G-code files can not be loaded with models together!" msgstr "¡Los archivos de código G no pueden cargarse con los modelos juntos!" msgid "Can not add models when in preview mode!" -msgstr "No se pueden añadir modelos en el modo de vista previa" +msgstr "No se pueden añadir modelos en el modo de vista previa!" msgid "Add Models" msgstr "Añadir Modelos" @@ -4362,11 +4411,10 @@ msgid "All objects will be removed, continue?" msgstr "Todos los objetos serán eliminados, deseas continuar?" msgid "The current project has unsaved changes, save it before continue?" -msgstr "" -"El proyecto actual tiene cambios sin guardar, ¿guardarlos antes de continuar?" +msgstr "El proyecto actual tiene cambios sin guardar, ¿guardarlos antes de continuar?" msgid "Remember my choice." -msgstr "" +msgstr "Recordar my elección." msgid "Number of copies:" msgstr "Número de copias:" @@ -4378,13 +4426,14 @@ msgid "Save G-code file as:" msgstr "Guardar archivo Código G como:" msgid "Save Sliced file as:" -msgstr "Guardar el archivo rebanado como:" +msgstr "Guardar el archivo laminado como:" #, c-format, boost-format msgid "" -"The file %s has been sent to the printer's storage space and can be viewed " -"on the printer." +"The file %s has been sent to the printer's storage space and can be viewed on the printer." msgstr "" +"El archivo %s ha sido mandado al almacenamiento de la impresora y puede ser visto en la " +"impresora." msgid "" "Print By Object: \n" @@ -4401,14 +4450,13 @@ msgstr "Enviar a la impresora" msgid "Custom supports and color painting were removed before repairing." msgstr "" -"Los soportes personalizados y la pintura de color se eliminaron antes de la " -"reparación." +"Los soportes personalizados y la pintura de color se eliminaron antes de la reparación." msgid "Invalid number" msgstr "Número inválido" msgid "Plate Settings" -msgstr "" +msgstr "Configuración de Cama" #, boost-format msgid "Part name: %1%\n" @@ -4438,22 +4486,25 @@ msgstr "Volumen: %1% mm³\n" #, boost-format msgid "Triangles: %1%\n" -msgstr " Triángulos: %1%\n" +msgstr "Triángulos: %1%\n" msgid "Tips:" -msgstr "" +msgstr "Consejos:" msgid "" -"\"Fix Model\" feature is currently only on Windows. Please repair the model " -"on Orca Slicer(windows) or CAD softwares." +"\"Fix Model\" feature is currently only on Windows. Please repair the model on Orca " +"Slicer(windows) or CAD softwares." msgstr "" +"La característica \"Arreglar Modelo\" está actualmente solo en Windows. Por favor, en Orca " +"Slicer(windows) o el software CAD." #, c-format, boost-format msgid "" -"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " -"still want to do this printing, please set this filament's bed temperature " -"to non zero." +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you still want to do " +"this printing, please set this filament's bed temperature to non zero." msgstr "" +"Cama% d: %s no está sugerido para ser usado para imprimir filamento %s(%s). Si usted aún " +"quiere imprimir, por favor, seleccione 0 en la temperatura de cama." msgid "Switching the language requires application restart.\n" msgstr "El cambio de idioma requiere el reinicio de la aplicación.\n" @@ -4465,9 +4516,7 @@ msgid "Language selection" msgstr "Selección de Iidiomas" msgid "Switching application language while some presets are modified." -msgstr "" -"Cambio de idioma de la aplicación mientras se modifican algunas " -"preselecciones." +msgstr "Cambio de idioma de la aplicación mientras se modifican algunas preselecciones." msgid "Changing application language" msgstr "Cambiar el idioma de la aplicación" @@ -4482,10 +4531,10 @@ msgid "Second" msgstr "Segundo" msgid "Browse" -msgstr "" +msgstr "Explorar" msgid "Choose Download Directory" -msgstr "" +msgstr "Elegir Directorio de Descarga" msgid "General Settings" msgstr "Configuración General" @@ -4518,102 +4567,97 @@ msgid "Units" msgstr "Unidades" msgid "Zoom to mouse position" -msgstr "" +msgstr "Hacer zoom en la posición del ratón" msgid "" -"Zoom in towards the mouse pointer's position in the 3D view, rather than the " -"2D window center." +"Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window " +"center." msgstr "" +"Hacer zoom hacia la posición del puntero de ratón en la vista 3D, en vez del centro de la " +"ventana 2D." msgid "Show \"Tip of the day\" notification after start" -msgstr "" +msgstr "Mostrar la notificación \"Consejo del Día\" después de empezar" msgid "If enabled, useful hints are displayed at startup." -msgstr "" +msgstr "Si está activado, las sugerencias útiles serán mostradas al inicio." msgid "Show g-code window" -msgstr "" +msgstr "Mostrar la ventana de g-code" msgid "If enabled, g-code window will be displayed." -msgstr "" +msgstr "Si está activado, se mostrará la ventana de gcode." msgid "Presets" -msgstr "" +msgstr "Preajustes" msgid "Auto sync user presets(Printer/Filament/Process)" msgstr "" -"Sincronización automática de los preajustes del usuario (Impresora/Filamento/" -"Proceso)" +"Sincronización automática de los preajustes del usuario (Impresora/Filamento/Proceso)" msgid "User Sync" msgstr "Sincronización de usuario" msgid "Update built-in Presets automatically." -msgstr "" +msgstr "Actualizar preajustes integrados automaticamente." msgid "System Sync" -msgstr "" +msgstr "Sincronizar sistema" msgid "Clear my choice on the unsaved presets." -msgstr "" +msgstr "Limpiar mi selección de preajustes no guardados." msgid "Associate files to OrcaSlicer" -msgstr "Asociar archivos a BambuStudio" +msgstr "Asociar archivos a OrcaSlicer" msgid "Associate .3mf files to OrcaSlicer" -msgstr "Asociar archivos .3mf a BambuStudio" +msgstr "Asociar archivos .3mf a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .3mf" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .3mf" msgid "Associate .stl files to OrcaSlicer" -msgstr "Asociar archivos .stl a BambuStudio" +msgstr "Asociar archivos .stl a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" -msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .stl" +msgstr "Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .stl" msgid "Associate .step/.stp files to OrcaSlicer" -msgstr "Asociar archivos .step/.stp a BambuStudio" +msgstr "Asociar archivos .step/.stp a OrcaSlicer" msgid "If enabled, sets OrcaSlicer as default application to open .step files" msgstr "" -"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir " -"archivos .step" +"Si se activa, ajusta OrcaSlicer como aplicación por defecto para abrir archivos .step" msgid "Maximum recent projects" -msgstr "" +msgstr "Proyectos recientes máximos" msgid "Maximum count of recent projects" -msgstr "" +msgstr "Máxima cantidad de proyectos recientes" msgid "Clear my choice on the unsaved projects." -msgstr "" +msgstr "Limpiar mi elección de proyectos no guardados." msgid "Auto-Backup" msgstr "Copia de seguridad automática" -msgid "" -"Backup your project periodically for restoring from the occasional crash." -msgstr "" +msgid "Backup your project periodically for restoring from the occasional crash." +msgstr "Haga copia de seguridad periodicamente para restaurar en caso de fallo ocasional." msgid "every" -msgstr "" +msgstr "todo" msgid "The peroid of backup in seconds." -msgstr "" +msgstr "El periodo de copia de seguridad en segundos." msgid "Downloads" -msgstr "" +msgstr "Descargas" msgid "Dark Mode" -msgstr "" +msgstr "Modo Oscuro" msgid "Enable Dark mode" -msgstr "" +msgstr "Activar Modo Oscuro" msgid "Home page and daily tips" msgstr "Página de inicio y consejos diarios" @@ -4703,7 +4747,7 @@ msgid "DEBUG settings have saved successfully!" msgstr "¡Los ajustes de depuración se han guardado con éxito!" msgid "Switch cloud environment, Please login again!" -msgstr "" +msgstr "¡Cambiado a entorno de nube, Por favor vuelva a autenticarse!" msgid "System presets" msgstr "Ajustes del sistema" @@ -4721,7 +4765,7 @@ msgid "Click to pick filament color" msgstr "Haga clic para elegir el color del filamento" msgid "Please choose the filament colour" -msgstr "" +msgstr "Por favor elija el color del filamento" msgid "Add/Remove presets" msgstr "Añadir/Quitar ajustes preestablecidos" @@ -4733,54 +4777,52 @@ msgid "Project-inside presets" msgstr "Preajustes internos del proyecto" msgid "Add/Remove filaments" -msgstr "" +msgstr "Añadir/Borrar filamentos" msgid "Add/Remove materials" -msgstr "" +msgstr "Añadir/Borrar materiales" msgid "Add/Remove printers" -msgstr "" +msgstr "Añadir/Borrar impresoras" msgid "Same as Global Print Sequence" -msgstr "" +msgstr "Lo mismo que la Secuencia Global de Impresión" msgid "Print sequence" msgstr "Secuencia de impresión" msgid "Plate name" -msgstr "" +msgstr "Nombre de cama" msgid "Same as Global Bed Type" -msgstr "" +msgstr "Lo mismo que el Tipo de Cama Global" msgid "Cool Plate" -msgstr "Placa fría" +msgstr "Cama fría" msgid "Engineering Plate" -msgstr "Placa de ingeniería" +msgstr "Cama de ingeniería" msgid "High Temp Plate" -msgstr "Placa de alta temperatura" +msgstr "Cama de alta temperatura" msgid "Textured PEI Plate" -msgstr "" +msgstr "Cama PEI texturizada" msgid "By Layer" -msgstr "" +msgstr "Por Capa" msgid "By Object" -msgstr "" +msgstr "Por Objeto" msgid "Accept" -msgstr "" +msgstr "Aceptar" msgid "Log Out" -msgstr "" +msgstr "Desconectarse" msgid "Slice all plate to obtain time and filament estimation" -msgstr "" -"Rebana todas las piezas para obtener una estimación del tiempo y del " -"filamento" +msgstr "Rebana todas las piezas para obtener una estimación del tiempo y del filamento" msgid "Packing project data into 3mf file" msgstr "Empaquetar los datos del proyecto en un archivo 3mf" @@ -4792,8 +4834,7 @@ msgid "Jump to model publish web page" msgstr "Ir a la página web de publicación de modelos" msgid "Note: The preparation may takes several minutes. Please be patiant." -msgstr "" -"Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." +msgstr "Nota: La preparación puede llevar varios minutos. Por favor, sea paciente." msgid "Publish" msgstr "Publicar" @@ -4802,7 +4843,7 @@ msgid "Publish was cancelled" msgstr "La publicación fue cancelada" msgid "Slicing Plate 1" -msgstr "Placa de corte 1" +msgstr "Cama de corte 1" msgid "Packing data to 3mf" msgstr "Empaquetando datos a 3mf" @@ -4841,8 +4882,7 @@ msgstr "El preajuste \"%1%\" ya existe." #, boost-format msgid "Preset \"%1%\" already exists and is incompatible with current printer." -msgstr "" -"El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." +msgstr "El preajuste \"%1%\" ya existe y es incompatible con la impresora actual." msgid "Please note that saving action will replace this preset" msgstr "Tenga en cuenta que la acción de guardar reemplazará este preajuste" @@ -4872,8 +4912,7 @@ msgstr "La impresora \"%1%\" está seleccionada con el preajuste \"%2%\"" #, boost-format msgid "Please choose an action with \"%1%\" preset after saving." -msgstr "" -"Por favor, elija una acción con \"%1%\" preestablecido después de guardar." +msgstr "Por favor, elija una acción con \"%1%\" preestablecido después de guardar." #, boost-format msgid "For \"%1%\", change \"%2%\" to \"%3%\" " @@ -4915,13 +4954,13 @@ msgid "Busy" msgstr "Ocupado" msgid "Bambu Cool Plate" -msgstr "Placa frío Bambu" +msgstr "Cama frío Bambu" msgid "Bamabu Engineering Plate" -msgstr "Placa de Ingenieria Bambu" +msgstr "Cama de Ingenieria Bambu" msgid "Bamabu High Temperature Plate" -msgstr "Placa de alta temperatura Bambu" +msgstr "Cama de alta temperatura Bambu" msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" @@ -4948,72 +4987,65 @@ msgid "Synchronizing device information" msgstr "Sincronizando la información del dispositivo" msgid "Synchronizing device information time out" -msgstr "" -"Finalización del tiempo de sincronización de la información del dispositivo" +msgstr "Finalización del tiempo de sincronización de la información del dispositivo" msgid "Cannot send the print job when the printer is updating firmware" msgstr "No es posible enviar el trabajo cuando la impresora está actualizando el firmware" -msgid "" -"The printer is executing instructions. Please restart printing after it ends" +msgid "The printer is executing instructions. Please restart printing after it ends" msgstr "" -"La impresora está ejecutando instrucciones. Por favor, reinicie la impresión " -"cuando termine" +"La impresora está ejecutando instrucciones. Por favor, reinicie la impresión cuando termine" msgid "The printer is busy on other print job" -msgstr "La impresora está ocupada con otro trabajo de impresión." +msgstr "La impresora está ocupada con otro trabajo de impresión" #, c-format, boost-format msgid "" -"Filament %s exceeds the number of AMS slots. Please update the printer " -"firmware to support AMS slot assignment." +"Filament %s exceeds the number of AMS slots. Please update the printer firmware to support " +"AMS slot assignment." msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" -"impresora para que soporte la asignación de ranuras AMS." - +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " +"firmwareimpresora para que soporte la asignación de ranuras AMS." msgid "" -"Filament exceeds the number of AMS slots. Please update the printer firmware " +"Filament exceeds the number of AMS slots. Please update the printer firmware to support " +"AMS slot assignment." +msgstr "" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " +"firmwareimpresora para que soporte la asignación de ranuras AMS." + +msgid "" +"Filaments to AMS slots mappings have been established. You can click a filament above to " +"change its mapping AMS slot" +msgstr "" +"Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en un filamento de " +"arriba para cambiar su asignación de ranura AMS" + +msgid "" +"Please click each filament above to specify its mapping AMS slot before sending the print " +"job" +msgstr "" +"Por favor, haga clic en cada filamento de arriba para especificar su asignación de ranura " +"AMS antes de enviar el trabajo de impresión" + +#, c-format, boost-format +msgid "" +"Filament %s does not match the filament in AMS slot %s. Please update the printer firmware " "to support AMS slot assignment." msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" -"impresora para que soporte la asignación de ranuras AMS." +"El filamento %s no coincide con el filamento la ranura AMS %s. Por favor actualice el " +"firmware de la impresora para que soporte la asignación de ranuras AMS." msgid "" -"Filaments to AMS slots mappings have been established. You can click a " -"filament above to change its mapping AMS slot" +"Filament does not match the filament in AMS slot. Please update the printer firmware to " +"support AMS slot assignment." msgstr "" -"Se han establecido mapeos de filamentos a ranuras AMS. Puede hacer clic en " -"un filamento de arriba para cambiar su asignación de ranura AMS" +"El %s del filamento excede el número de ranuras AMS. Por favor actualice el " +"firmwareimpresora para que soporte la asignación de ranuras AMS." -msgid "" -"Please click each filament above to specify its mapping AMS slot before " -"sending the print job" +msgid "The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" -"Por favor, haga clic en cada filamento de arriba para especificar su " -"asignación de ranura AMS antes de enviar el trabajo de impresión" - -#, c-format, boost-format -msgid "" -"Filament %s does not match the filament in AMS slot %s. Please update the " -"printer firmware to support AMS slot assignment." -msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" -"impresora para que soporte la asignación de ranuras AMS." - -msgid "" -"Filament does not match the filament in AMS slot. Please update the printer " -"firmware to support AMS slot assignment." -msgstr "" -"El %s del filamento excede el número de ranuras AMS. Por favor actualice el firmware" -"impresora para que soporte la asignación de ranuras AMS." - -msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." -msgstr "" -"El firmware de la impresora solo soporta el mapeo secuencial de filamento => ranura " -"AMS." +"El firmware de la impresora solo soporta el mapeo secuencial de filamento => ranura AMS." msgid "An SD card needs to be inserted before printing." msgstr "Es necesario introducir una tarjeta SD antes de imprimir." @@ -5021,17 +5053,16 @@ msgstr "Es necesario introducir una tarjeta SD antes de imprimir." msgid "An SD card needs to be inserted to record timelapse." msgstr "Es necesario insertar una tarjeta SD para guardar el intervalo de tiempo." - -msgid "" -"Cannot send the print job to a printer whose firmware is required to get " -"updated." -msgstr "No es posible enviar el trabajo de impresión a una impresora la cual necesita una actualización de firmware" +msgid "Cannot send the print job to a printer whose firmware is required to get updated." +msgstr "" +"No es posible enviar el trabajo de impresión a una impresora la cual necesita una " +"actualización de firmware." msgid "Cannot send the print job for empty plate" msgstr "No es posible enviar el trabajo de impresión a una cama vacía" msgid "This printer does not support printing all plates" -msgstr "Esta impresora no soporta la impresión en todas las camas." +msgstr "Esta impresora no soporta la impresión en todas las camas" msgid "Errors" msgstr "Errores" @@ -5040,27 +5071,26 @@ msgid "Please check the following:" msgstr "Por favor compruebe lo siguiente:" msgid "" -"The printer type selected when generating G-Code is not consistent with the " -"currently selected printer. It is recommended that you use the same printer " -"type for slicing." +"The printer type selected when generating G-Code is not consistent with the currently " +"selected printer. It is recommended that you use the same printer type for slicing." msgstr "" -"El tipo de impresora seleccionado cuando se genera el G-Code no tiene consistencia " -"con la impresora seleccionada actualmente. Es recomendable que use el mismo tipo de impresora " -"para rebanar." +"El tipo de impresora seleccionado cuando se genera el G-Code no tiene consistencia con la " +"impresora seleccionada actualmente. Es recomendable que use el mismo tipo de impresora " +"para laminar." #, c-format, boost-format msgid "%s is not supported by AMS." msgstr "%s no está soportado por el AMS." msgid "" -"There are some unknown filaments in the AMS mappings. Please check whether " -"they are the required filaments. If they are okay, press \"Confirm\" to " -"start printing." +"There are some unknown filaments in the AMS mappings. Please check whether they are the " +"required filaments. If they are okay, press \"Confirm\" to start printing." msgstr "" +"Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, compruebe si son los " +"filamentos requeriso. Si lo son, presione \"Confirmar\" para empezar a imprimir." -msgid "" -"Please click the confirm button if you still want to proceed with printing." -msgstr "" +msgid "Please click the confirm button if you still want to proceed with printing." +msgstr "Por favor, presione el botón de confirmar si aún quieres proceder con la impresión." msgid "Preparing print job" msgstr "Preparando el trabajo de impresión" @@ -5072,12 +5102,11 @@ msgid "Send to Printer SD card" msgstr "Enviar a la tarjeta SD de la impresora" msgid "Cannot send the print task when the upgrade is in progress" -msgstr "" -"No se puede enviar la tarea de impresión cuando la actualización está en " -"curso" +msgstr "No se puede enviar la tarea de impresión cuando la actualización está en curso" msgid "An SD card needs to be inserted before send to printer SD card." -msgstr "Es necesario insertar una tarjeta SD antes de enviar a la tarjeta SD de la impresora." +msgstr "" +"Es necesario insertar una tarjeta SD antes de enviar a la tarjeta SD de la impresora." msgid "The printer is required to be in the same LAN as Orca Slicer." msgstr "Es necesaria que la impresora esté en la misma red local que Orca Slicer." @@ -5104,9 +5133,7 @@ msgid "Please log in first." msgstr "Por favor, identifíquese primero." msgid "There was a problem connecting to the printer. Please try again." -msgstr "" -"Ha habido un problema de conexión con la impresora. Por favor, inténtelo de " -"nuevo." +msgstr "Ha habido un problema de conexión con la impresora. Por favor, inténtelo de nuevo." msgid "Failed to log out." msgstr "No se ha podido cerrar la sesión." @@ -5126,27 +5153,27 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Presionar para reiniciar todos los ajustes a los últimos ajustes por defecto." msgid "" -"Prime tower is required for smooth timeplase. There may be flaws on the " -"model without prime tower. Are you sure you want to disable prime tower?" +"Prime tower is required for smooth timeplase. There may be flaws on the model without " +"prime tower. Are you sure you want to disable prime tower?" msgstr "" -"Es necesario imprimir una torre de purga para un intervalo de tiempo fino. Pueden aparecer imperfecciones -"en el modelo si se desactiva la torre de purga. ¿Está seguro de desactivar la torre de purga? +"Se requiere la torre de purga para un intervalo suave. Puede haber defectos modelos sin " +"torre de purga.¿Está seguro de que quiere deshabilitar la torre principal?" msgid "" -"Prime tower is required for smooth timelapse. There may be flaws on the " -"model without prime tower. Do you want to enable prime tower?" +"Prime tower is required for smooth timelapse. There may be flaws on the model without " +"prime tower. Do you want to enable prime tower?" msgstr "" -"Es necesario imprimir una torre de purga para un intervalo de tiempo fino. Pueden aparecer imperfecciones -"en el modelo si se desactiva la torre de purga. ¿Está seguro de activar la torre de purga? +"La torre primaria es necesaria para que el timelapse sea fluido. Puede haber defectos en " +"el modelo sin torre primaria. ¿Desea activar la torre primaria?" msgid "" -"We have added an experimental style \"Tree Slim\" that features smaller " -"support volume but weaker strength.\n" +"We have added an experimental style \"Tree Slim\" that features smaller support volume but " +"weaker strength.\n" "We recommend using it with: 0 interface layers, 0 top distance, 2 walls." msgstr "" -"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta volumenes de soporte" -"más pequeños con menos fuerza.\n" -"Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 muros." +"Hemos añadido al estilo esperimental \"Árboles Delgados\" que presenta volumenes de " +"soportemás pequeños con menos fuerza.\n" +"Recomendamos usarlo con: 0 capas de interfaz, 0 distancia superior, 2 paredes." msgid "" "Change these settings automatically? \n" @@ -5158,31 +5185,35 @@ msgstr "" "No - No cambiar estos ajustes" msgid "" -"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " -"settings: at least 2 interface layers, at least 0.1mm top z distance or " -"using support materials on interface." +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following settings: at " +"least 2 interface layers, at least 0.1mm top z distance or using support materials on " +"interface." msgstr "" -"Para \"Árboles fuertes\" y \"Árboles Híbridos\", recomendamos lo siguiente " -"ajustes: al menos 2 capas de interfaz, al menos 0.1mm de distancia superior en z o " -"usar materiales de soporte en la interfaz" +"Para \"Árboles fuertes\" y \"Árboles Híbridos\", recomendamos lo siguiente ajustes: al " +"menos 2 capas de interfaz, al menos 0.1mm de distancia superior en z o usar materiales de " +"soporte en la interfaz." msgid "" -"When using support material for the support interface, We recommend the " -"following settings:\n" -"0 top z distance, 0 interface spacing, concentric pattern and disable " -"independent support layer height" +"When using support material for the support interface, We recommend the following " +"settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable independent support " +"layer height" msgstr "" -"Cuando se user material de soporte para las interfaces de soporte, recomendamos " -"los siguientes ajustes:\n" +"Cuando se use material de soporte para las interfaces de soporte, recomendamos los " +"siguientes ajustes:\n" +"distancia z0, espaciado de interfaz 0, patrón concéntrico y desactivar altura de soporte " +"independiente de altura de capa" msgid "" -"When recording timelapse without toolhead, it is recommended to add a " -"\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add " -"Primitive\"->\"Timelapse Wipe Tower\"." +"When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe " +"Tower\" \n" +"by right-click the empty position of build plate and choose \"Add Primitive\"->\"Timelapse " +"Wipe Tower\"." msgstr "" "Cuando grabamos intervalos de tiempo sin cabezal de impresión, es recomendable añadir un " -"\"Torre de Purga de Intervalo\" \n" +"\"Torre de Purga de Intervalo\" \n" +"presionando con el botón derecho la posición vacía de la cama de construcción y elegir " +"\"Añadir Primitivo\"->\"Intervalo de Torre de Purga\"." msgid "Line width" msgstr "Ancho de línea" @@ -5212,14 +5243,13 @@ msgid "Overhang speed" msgstr "Velocidad del voladizo" msgid "" -"This is the speed for various overhang degrees. Overhang degrees are " -"expressed as a percentage of line width. 0 speed means no slowing down for " -"the overhang degree range and wall speed is used" +"This is the speed for various overhang degrees. Overhang degrees are expressed as a " +"percentage of line width. 0 speed means no slowing down for the overhang degree range and " +"wall speed is used" msgstr "" -"Esta es la velocidad para varios grados de voladizo. Los grados de voladizo " -"se expresan como un porcentaje del ancho de la línea. La velocidad 0 " -"significa que no hay ralentización para el rango de grados de voladizo y se " -"utiliza la velocidad de la pared" +"Esta es la velocidad para varios grados de voladizo. Los grados de voladizo se expresan " +"como un porcentaje del ancho de la línea. La velocidad 0 significa que no hay " +"ralentización para el rango de grados de voladizo y se utiliza la velocidad de la pared" msgid "Travel speed" msgstr "Velocidad de desplazamiento" @@ -5228,7 +5258,7 @@ msgid "Acceleration" msgstr "Aceleración" msgid "Jerk(XY)" -msgstr "Sacudida(XY)" +msgstr "Jerk(XY)" msgid "Raft" msgstr "Base de impresión" @@ -5237,7 +5267,7 @@ msgid "Support filament" msgstr "Filamento de soporte" msgid "Prime tower" -msgstr "Torre Principal" +msgstr "Torre de Purga" msgid "Special mode" msgstr "Modo especial" @@ -5254,20 +5284,18 @@ msgstr "Frecuente" #, c-format, boost-format msgid "" "Following line %s contains reserved keywords.\n" -"Please remove it, or will beat G-code visualization and printing time " -"estimation." +"Please remove it, or will beat G-code visualization and printing time estimation." msgid_plural "" "Following lines %s contain reserved keywords.\n" -"Please remove them, or will beat G-code visualization and printing time " -"estimation." +"Please remove them, or will beat G-code visualization and printing time estimation." msgstr[0] "" "La siguiente línea %s contiene palabras clave reservadas.\n" -"Por favor, elimínela, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínela, o vencerá la visualización del código G y la estimación del tiempo " +"de impresión." msgstr[1] "" "Las siguientes líneas %s contienen palabras clave reservadas.\n" -"Por favor, elimínelas, o vencerá la visualización del código G y la " -"estimación del tiempo de impresión." +"Por favor, elimínelas, o vencerá la visualización del código G y la estimación del tiempo " +"de impresión." msgid "Reserved keywords found" msgstr "Palabras clave utilizadas y encontradas" @@ -5286,8 +5314,8 @@ msgstr "Temperatura recomendada de la boquilla" msgid "Recommended nozzle temperature range of this filament. 0 means no set" msgstr "" -"Rango de temperatura de boquilla recomendado para este filamento. 0 " -"significa que no se ajusta" +"Rango de temperatura de boquilla recomendado para este filamento. 0 significa que no se " +"ajusta" msgid "Recommended temperature range" msgstr "Rango de temperatura recomendado" @@ -5296,7 +5324,7 @@ msgid "Print temperature" msgstr "Temperatura de impresión" msgid "Chamber temperature" -msgstr "" +msgstr "Temperatura de cámara" msgid "Nozzle" msgstr "Boquilla" @@ -5305,39 +5333,38 @@ msgid "Nozzle temperature when printing" msgstr "Temperatura de la boquilla al imprimir" msgid "Cool plate" -msgstr "Placa fría" +msgstr "Cama fría" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does not support " +"to print on the Cool Plate" msgstr "" -"Esta es la temperatura de la cama cuando la placa fría está instalada. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa " -"fría." +"Esta es la temperatura de la cama cuando la cama fría está instalada. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama fría" msgid "Engineering plate" -msgstr "Placa de ingeniería" +msgstr "Cama de ingeniería" msgid "" -"Bed temperature when engineering plate is installed. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature when engineering plate is installed. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" -"Esta es la temperatura de la cama cuando la placa de ingeniería está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la placa de ingeniería." +"Esta es la temperatura de la cama cuando la cama de ingeniería está instalada. Un valor de " +"0 significa que el filamento no admite la impresión en la cama de ingeniería" msgid "" -"Bed temperature when high temperature plate is installed. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature when high temperature plate is installed. Value 0 means the filament does " +"not support to print on the High Temp Plate" msgstr "" -"Esta es la temperatura de la cama cuando la placa de alta temperatura está " -"instalada. Un valor de 0 significa que el filamento no admite la impresión " -"en la placa de alta temperatura." +"Esta es la temperatura de la cama cuando la cama de alta temperatura está instalada. Un " +"valor de 0 significa que el filamento no admite la impresión en la cama de alta temperatura" msgid "" -"Bed temperature when Textured PEI Plate is installed. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" +"Temperatura del lecho cuando la cama PEI texturizada está instalada. El valor 0 significa " +"que el filamento no es compatible para imprimir en la cama PEI texturizada" msgid "Volumetric speed limitation" msgstr "Limitación de la velocidad volumétrica" @@ -5355,27 +5382,26 @@ msgid "Min fan speed threshold" msgstr "Umbral de velocidad mínima del ventilador" msgid "" -"Part cooling fan speed will start to run at min speed when the estimated " -"layer time is no longer than the layer time in setting. When layer time is " -"shorter than threshold, fan speed is interpolated between the minimum and " -"maximum fan speed according to layer printing time" +"Part cooling fan speed will start to run at min speed when the estimated layer time is no " +"longer than the layer time in setting. When layer time is shorter than threshold, fan " +"speed is interpolated between the minimum and maximum fan speed according to layer " +"printing time" msgstr "" -"La velocidad del ventilador de refrigeración de la pieza comenzará a " -"funcionar a la velocidad mínima cuando el tiempo estimado de la capa no sea " -"superior al tiempo de la capa ajustado. Cuando el tiempo de la capa es " -"inferior al umbral, la velocidad del ventilador se interpola entre la " -"velocidad mínima y máxima del ventilador según el tiempo de impresión de la " -"capa." +"La velocidad del ventilador de refrigeración de la pieza comenzará a funcionar a la " +"velocidad mínima cuando el tiempo estimado de la capa no sea superior al tiempo de la capa " +"ajustado. Cuando el tiempo de la capa es inferior al umbral, la velocidad del ventilador " +"se interpola entre la velocidad mínima y máxima del ventilador según el tiempo de " +"impresión de la capa" msgid "Max fan speed threshold" msgstr "Umbral de velocidad máxima del ventilador" msgid "" -"Part cooling fan speed will be max when the estimated layer time is shorter " -"than the setting value" +"Part cooling fan speed will be max when the estimated layer time is shorter than the " +"setting value" msgstr "" -"La velocidad del ventilador de la pieza será máxima cuando el tiempo de capa " -"estimado sea inferior al valor ajustado" +"La velocidad del ventilador de la pieza será máxima cuando el tiempo de capa estimado sea " +"inferior al valor ajustado" msgid "Auxiliary part cooling fan" msgstr "Ventilador de la parte auxiliar" @@ -5384,7 +5410,7 @@ msgid "Filament start G-code" msgstr "Código G de inicio de filamento" msgid "Filament end G-code" -msgstr "Final del Código G de filamento " +msgstr "Final del Código G de filamento" msgid "Printable space" msgstr "Espacio imprimible" @@ -5423,7 +5449,7 @@ msgid "Pause G-code" msgstr "Código G de pausa" msgid "Template Custom G-code" -msgstr "" +msgstr "Plantilla de G-code personalizada" msgid "Motion ability" msgstr "Capacidad de movimiento" @@ -5451,6 +5477,9 @@ msgid "" "\n" "Shall I disable it in order to enable Firmware Retraction?" msgstr "" +"La opción Wipe no está disponible cuando se utiliza el modo Retracción de Firmware.\n" +"\n" +"Debo desactivarla para activar la retracción de firmware?" msgid "Firmware Retraction" msgstr "Retracción de firmware" @@ -5460,7 +5489,7 @@ msgstr "Separado" msgid "Following preset will be deleted too." msgid_plural "Following presets will be deleted too." -msgstr[0] "Los siguientes preajustes también se eliminarán" +msgstr[0] "El siguiente preajuste también se eliminará." msgstr[1] "Los siguientes preajustes también se eliminarán." #, boost-format @@ -5479,12 +5508,10 @@ msgid "Set" msgstr "Ajuste" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Haga clic para restablecer el valor actual y adjuntarlo al valor global." +msgstr "Haga clic para restablecer el valor actual y adjuntarlo al valor global." msgid "Click to drop current modify and reset to saved value." -msgstr "" -"Haga clic para dejar la modificación actual y restablecer el valor guardado." +msgstr "Haga clic para dejar la modificación actual y restablecer el valor guardado." msgid "Process Settings" msgstr "Ajustes del proceso" @@ -5529,8 +5556,7 @@ msgid "Keep the selected options." msgstr "Mantener las opciones seleccionadas." msgid "Transfer the selected options to the newly selected preset." -msgstr "" -"Transfiere las opciones seleccionadas a la nueva preselección seleccionada." +msgstr "Transfiere las opciones seleccionadas a la nueva preselección seleccionada." #, boost-format msgid "" @@ -5554,38 +5580,36 @@ msgstr "La preselección \"%1%\" contiene los siguientes cambios no guardados:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new printer profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new printer profile and it contains the " +"following unsaved changes:" msgstr "" -"El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y " -"contiene los siguientes cambios no guardados:" +"El preajuste \"%1%\" no es compatible con el nuevo perfil de la impresora y contiene los " +"siguientes cambios no guardados:" #, boost-format msgid "" -"Preset \"%1%\" is not compatible with the new process profile and it " -"contains the following unsaved changes:" +"Preset \"%1%\" is not compatible with the new process profile and it contains the " +"following unsaved changes:" msgstr "" -"El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y " -"contiene los siguientes cambios no guardados:" +"El preajuste \"%1%\" no es compatible con el nuevo perfil de proceso y contiene los " +"siguientes cambios no guardados:" #, boost-format msgid "" "You have changed some settings of preset \"%1%\". \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Has modificado algunos ajustes del perfil \"%1%\". \n" -"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar " -"de perfil?" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar de " +"perfil?" msgid "" "You have changed some preset settings. \n" -"Would you like to keep these changed settings (new value) after switching " -"preset?" +"Would you like to keep these changed settings (new value) after switching preset?" msgstr "" "Has cambiado algunos ajustes de perfil. \n" -"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar " -"de perfil?" +"¿Deseas mantener estas modificaciones en los ajustes (nuevo valor) después de cambiar de " +"perfil?" msgid "Extruders count" msgstr "Contador de extrusores" @@ -5693,7 +5717,7 @@ msgstr "Volumen de limpieza (mm³) para cada par de filamentos." #, c-format, boost-format msgid "Suggestion: Flushing Volume in range [%d, %d]" -msgstr "Sugerencias: " +msgstr "Sugerencias: Volumen de Flujo en rango [%d, %d]" #, c-format, boost-format msgid "The multiplier should be in range [%.2f, %.2f]." @@ -5718,8 +5742,7 @@ msgid "Login" msgstr "Inicio de sesión" msgid "The configuration package is changed in previous Config Guide" -msgstr "" -"El paquete de configuración se cambia en la Guía de configuración anterior" +msgstr "El paquete de configuración se cambia en la Guía de configuración anterior" msgid "Configuration package changed" msgstr "Paquete de configuración cambiado" @@ -5773,13 +5796,12 @@ msgid "Shift+R" msgstr "" msgid "" -"Auto orientates selected objects or all objects.If there are selected " -"objects, it just orientates the selected ones.Otherwise, it will orientates " -"all objects in the current disk." +"Auto orientates selected objects or all objects.If there are selected objects, it just " +"orientates the selected ones.Otherwise, it will orientates all objects in the current disk." msgstr "" -"Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay " -"objetos seleccionados, sólo orienta los seleccionados.En caso contrario, " -"orientará todos los objetos del disco actual." +"Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay objetos " +"seleccionados, sólo orienta los seleccionados.En caso contrario, orientará todos los " +"objetos del disco actual." msgid "Shift+Tab" msgstr "" @@ -5899,10 +5921,10 @@ msgid "Gizmo SLA support points" msgstr "Puntos de soporte SLA Gizmo" msgid "Gizmo FDM paint-on seam" -msgstr "" +msgstr "Costura de pintura Gizmo FDM" msgid "Swtich between Prepare/Prewview" -msgstr "" +msgstr "Cambiar entre Preparar/Previsualizar" msgid "Plater" msgstr "Plataforma" @@ -5917,7 +5939,7 @@ msgid "Support/Color Painting: adjust pen radius" msgstr "Soporte/Pintado en color: ajuste del radio de la pluma" msgid "⌥+Mouse wheel" -msgstr "" +msgstr "⌥+Rueda del ratón" msgid "Support/Color Painting: adjust section position" msgstr "Soporte/Pintado de color: ajuste de la posición de la sección" @@ -5941,16 +5963,13 @@ msgid "Space" msgstr "Espacio" msgid "Select the object/part and press space to change the name" -msgstr "" -"Seleccione el objeto/parte y pulse la barra espaciadora para cambiar el " -"nombre" +msgstr "Seleccione el objeto/parte y pulse la barra espaciadora para cambiar el nombre" msgid "Mouse click" msgstr "Clic del ratón" msgid "Select the object/part and mouse click to change the name" -msgstr "" -"Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" +msgstr "Seleccione el objeto/pieza y haga clic con el ratón para cambiar el nombre" msgid "Objects List" msgstr "Lista de Objetos" @@ -5962,18 +5981,16 @@ msgid "Vertical slider - Move active thumb Down" msgstr "Control deslizante vertical - Mover el pulgar activo hacia Abajo" msgid "Horizontal slider - Move active thumb Left" -msgstr "" -"Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Izquierda" msgid "Horizontal slider - Move active thumb Right" -msgstr "" -"Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" +msgstr "Control deslizante horizontal - Mover el pulgar activo hacia la Derecha" msgid "On/Off one layer mode of the vertical slider" msgstr "Activar/Desactivar el modo de una capa del control deslizante vertical" msgid "On/Off g-code window" -msgstr "" +msgstr "Activar/Desactivar ventana de g-code" msgid "Move slider 5x faster" msgstr "Mover el deslizador 5 veces más rápido" @@ -5986,14 +6003,14 @@ msgstr "Notas de lanzamiento" #, c-format, boost-format msgid "version %s update information :" -msgstr "información de actualización de la versión %s" +msgstr "información de actualización de la versión %s:" msgid "Network plug-in update" msgstr "Actualizar plug-in de red" -msgid "" -"Click OK to update the Network plug-in when Orca Slicer launches next time." -msgstr "Click en Aceptar para actualizar el plug-in de red cuando Orca Slicer vuelva a iniciarse." +msgid "Click OK to update the Network plug-in when Orca Slicer launches next time." +msgstr "" +"Click en Aceptar para actualizar el plug-in de red cuando Orca Slicer vuelva a iniciarse." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -6011,15 +6028,17 @@ msgstr "Hecho" msgid "LAN Connection Failed (Sending print file)" msgstr "Conexión de red fallida (Mandando archivo de impresión)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." -msgstr "Paso 1, por favor confirmar que Orca Slicer y tu impresora se encuentran en la misma red local." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "" +"Paso 1, por favor confirmar que Orca Slicer y tu impresora se encuentran en la misma red " +"local." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." -msgstr "Paso 2, si la IP y el Código de Acceso de abajo son diferentes de los valores actuales " -"de tu impresora, por favor corríjalos. +"Step 2, if the IP and Access Code below are different from the actual values on your " +"printer, please correct them." +msgstr "" +"Paso 2, si la IP y el Código de Acceso de abajo son diferentes de los valores actuales en " +"su impresora, por favor, corríjalos." msgid "IP" msgstr "" @@ -6040,7 +6059,7 @@ msgid "Serial:" msgstr "Número de serie:" msgid "Version:" -msgstr "Versión" +msgstr "Versión:" msgid "Update firmware" msgstr "Actualizar firmware" @@ -6064,32 +6083,31 @@ msgid "Updating successful" msgstr "Actualización exitosa" msgid "" -"Are you sure you want to update? This will take about 10 minutes. Do not " -"turn off the power while the printer is updating." +"Are you sure you want to update? This will take about 10 minutes. Do not turn off the " +"power while the printer is updating." msgstr "" -"¿Estás seguro que deseas actualizar? Esto puede llevar sobre 10 minutos. No " -"desconecte la alimentación mientras la impresora está actualizando. +"¿Estás seguro que deseas actualizar? Esto puede llevar sobre 10 minutos. No apague " +"mientras la impresora está actualizando." msgid "" -"An important update was detected and needs to be run before printing can " -"continue. Do you want to update now? You can also update later from 'Upgrade " -"firmware'." +"An important update was detected and needs to be run before printing can continue. Do you " +"want to update now? You can also update later from 'Upgrade firmware'." msgstr "" -"Una actualización importante fue detectada y necesita ejecutarse antes de que " -la impresión continue. ¿Quieres actualizar ahora? Puede actualizar despues desde " -"'Actualizar firmware'." +"Una actualización importante fue detectada y necesita ejecutarse antes de que la impresión " +"pueda continuar. ¿Quiere actualizar ahora? Puede actualizar después desde \"Actualizar " +"fimware\"." msgid "" -"The firmware version is abnormal. Repairing and updating are required before " -"printing. Do you want to update now? You can also update later on printer or " -"update next time starting the studio." +"The firmware version is abnormal. Repairing and updating are required before printing. Do " +"you want to update now? You can also update later on printer or update next time starting " +"the studio." msgstr "" -"La versión de firmware es anormal. Es necesario reparar y actualizar antes de " -"imprimir. ¿Quieres actualizar ahora? Puedes actualizar al iniciar en el siguiente " -"arranque de la impresora o cuando arranque Orca Slicer." +"La versión de firmware es anormal. Es necesario reparar y actualizar antes de imprimir. " +"¿Quieres actualizar ahora? Puedes actualizar al iniciar en el siguiente arranque de la " +"impresora o cuando arranque Orca Slicer." msgid "Extension Board" -msgstr "Placa de ampliación" +msgstr "Cama de ampliación" msgid "Saving objects into the 3mf failed." msgstr "El guardado de objetos en el 3mf no ha funcionado." @@ -6145,8 +6163,7 @@ msgstr "La copia del archivo %1% a %2% falló: %3%" msgid "Need to check the unsaved changes before configuration updates." msgstr "" -"Es necesario comprobar los cambios no guardados antes de actualizar la " -"configuración." +"Es necesario comprobar los cambios no guardados antes de actualizar la configuración." msgid "Configuration package updated to " msgstr "Paquete de configuración actualizado a " @@ -6155,11 +6172,11 @@ msgid "Open G-code file:" msgstr "Abrir archivo código G:" msgid "" -"One object has empty initial layer and can't be printed. Please Cut the " -"bottom or enable supports." +"One object has empty initial layer and can't be printed. Please Cut the bottom or enable " +"supports." msgstr "" -"Un objeto tiene la capa inicial vacía y no se puede imprimir. Por favor, " -"corte el fondo o habilite los soportes." +"Un objeto tiene la capa inicial vacía y no se puede imprimir. Por favor, corte el fondo o " +"habilite los soportes." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -6169,12 +6186,10 @@ msgstr "No se puede imprimir el objeto para la capa vacía entre %1% y %2%." msgid "Object: %1%" msgstr "Objeto: %1%" -msgid "" -"Maybe parts of the object at these height are too thin, or the object has " -"faulty mesh" +msgid "Maybe parts of the object at these height are too thin, or the object has faulty mesh" msgstr "" -"Tal vez las partes del objeto a esa altura son demasiado finas, o el objeto " -"tiene una malla defectuosa" +"Tal vez las partes del objeto a esa altura son demasiado finas, o el objeto tiene una " +"malla defectuosa" msgid "No object can be printed. Maybe too small" msgstr "No se puede imprimir ningún objeto. Tal vez sea demasiado pequeño" @@ -6183,14 +6198,13 @@ msgid "" "Failed to generate gcode for invalid custom G-code.\n" "\n" msgstr "" -"Ha fallado la generación del código G por un código G personalizado no " -"válido.\n" +"Ha fallado la generación del código G por un código G personalizado no válido.\n" "\n" msgid "Please check the custom G-code or use the default custom G-code." msgstr "" -"Por favor, compruebe el código G personalizado o utilice el código G " -"personalizado por defecto." +"Por favor, compruebe el código G personalizado o utilice el código G personalizado por " +"defecto." #, boost-format msgid "Generating G-code: layer %1%" @@ -6235,8 +6249,7 @@ msgstr "Múltiple" #, boost-format msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "" -"Ha fallado el cálculo del ancho de línea de %1%. No se puede obtener el " -"valor de \"%2%\". " +"Ha fallado el cálculo del ancho de línea de %1%. No se puede obtener el valor de \"%2%\". " msgid "undefined error" msgstr "error no definido" @@ -6329,11 +6342,10 @@ msgid "validation failed" msgstr "validación fallida" msgid "write callback failed" -msgstr "La llamada de recuperación de la escritura ha fallado" +msgstr "la llamada de recuperación de la escritura ha fallado" #, boost-format -msgid "" -"%1% is too close to exclusion area, there may be collisions when printing." +msgid "%1% is too close to exclusion area, there may be collisions when printing." msgstr "" "%1% está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." @@ -6346,90 +6358,76 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% es demasiado alto, y se producirán colisiones." msgid " is too close to others, there may be collisions when printing." -msgstr " está muy cerca de otros, puede conllevar colisiones cuando se imprime" +msgstr " está muy cerca de otros, puede conllevar colisiones cuando se imprime." msgid " is too close to exclusion area, there may be collisions when printing." msgstr " está muy cerca del área de exclusión, puede conllevar colisiones cuando se imprime." msgid "Prime Tower" -msgstr "Torre principal" +msgstr "Torre de Purga" msgid " is too close to others, and collisions may be caused.\n" -msgstr "está demasiado cerca de otros, y se pueden producir colisiones.\n" +msgstr " está demasiado cerca de otros, y se pueden producir colisiones.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" está demasiado cerca del área de exclusión, y se producirán colisiones.\n" +msgstr " está demasiado cerca del área de exclusión, y se producirán colisiones.\n" msgid "" -"Can not print multiple filaments which have large difference of temperature " -"together. Otherwise, the extruder and nozzle may be blocked or damaged " -"during printing" +"Can not print multiple filaments which have large difference of temperature together. " +"Otherwise, the extruder and nozzle may be blocked or damaged during printing" msgstr "" -"No se pueden imprimir juntos varios filamentos que tengan una gran " -"diferencia de temperatura. De lo contrario, el extrusor y la boquilla pueden " -"bloquearse o dañarse durante la impresión" +"No se pueden imprimir juntos varios filamentos que tengan una gran diferencia de " +"temperatura. De lo contrario, el extrusor y la boquilla pueden bloquearse o dañarse " +"durante la impresión" msgid "No extrusions under current settings." msgstr "No hay extrusiones con los ajustes actuales." -msgid "" -"Smooth mode of timelapse is not supported when \"by object\" sequence is " -"enabled." +msgid "Smooth mode of timelapse is not supported when \"by object\" sequence is enabled." msgstr "" +"Modo de intervalo suave no está soportado cuando la secuencia \"por objeto\" está activada." msgid "" -"Please select \"By object\" print sequence to print multiple objects in " -"spiral vase mode." +"Please select \"By object\" print sequence to print multiple objects in spiral vase mode." msgstr "" -"Seleccione la secuencia de impresión \"Por objeto\" para imprimir varios " -"objetos en el modo de jarrón espiral." +"Seleccione la secuencia de impresión \"Por objeto\" para imprimir varios objetos en el " +"modo de jarrón espiral." -msgid "" -"The spiral vase mode does not work when an object contains more than one " -"materials." +msgid "The spiral vase mode does not work when an object contains more than one materials." msgstr "" -"El modo de jarrón en espiral no funciona cuando un objeto contiene más de un " -"material." +"El modo de jarrón en espiral no funciona cuando un objeto contiene más de un material." msgid "The prime tower is not supported in \"By object\" print." -msgstr "La torre principal no es compatible con la impresión \"Por objeto\"." +msgstr "La torre de purga no es compatible con la impresión \"Por objeto\"." msgid "" -"The prime tower is not supported when adaptive layer height is on. It " -"requires that all objects have the same layer height." +"The prime tower is not supported when adaptive layer height is on. It requires that all " +"objects have the same layer height." msgstr "" -"La torre principal no es compatible cuando la altura de capa adaptativa está " -"activada. Requiere que todos los objetos tengan la misma altura de capa." +"La torre de purga no es compatible cuando la altura de capa adaptativa está activada. " +"Requiere que todos los objetos tengan la misma altura de capa." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" -"La torre principal requiere que el \"hueco de apoyo\" sea múltiplo de la " -"altura de la capa" +"La torre de purga requiere que el \"hueco de apoyo\" sea múltiplo de la altura de la capa" msgid "The prime tower requires that all objects have the same layer heights" -msgstr "" -"La torre principal requiere que todos los objetos tengan la misma altura de " -"capa" +msgstr "La torre de purga requiere que todos los objetos tengan la misma altura de capa" msgid "" -"The prime tower requires that all objects are printed over the same number " -"of raft layers" +"The prime tower requires that all objects are printed over the same number of raft layers" msgstr "" -"La torre principal requiere que todos los objetos se impriman sobre el mismo " -"número de capas de balsa" +"La torre de purga requiere que todos los objetos se impriman sobre el mismo número de " +"capas de base de impresión" -msgid "" -"The prime tower requires that all objects are sliced with the same layer " -"heights." +msgid "The prime tower requires that all objects are sliced with the same layer heights." msgstr "" -"La torre principal requiere que todos los objetos se corten con las mismas " -"alturas de capa." +"La torre de purga requiere que todos los objetos se corten con las mismas alturas de capa." -msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +msgid "The prime tower is only supported if all objects have the same variable layer height" msgstr "" +"La torre de purga sólo se admite si todos los objetos tienen la misma altura de capa " +"variable" msgid "Too small line width" msgstr "Ancho de línea demasiado pequeño" @@ -6437,27 +6435,24 @@ msgstr "Ancho de línea demasiado pequeño" msgid "Too large line width" msgstr "Ancho de línea demasiado grande" -msgid "" -"The prime tower requires that support has the same layer height with object." +msgid "The prime tower requires that support has the same layer height with object." msgstr "" -"La torre principal requiere que el soporte tenga la misma altura de capa con " -"el objeto." +"La torre de purga requiere que el soporte tenga la misma altura de capa con el objeto." -msgid "" -"Support enforcers are used but support is not enabled. Please enable support." +msgid "Support enforcers are used but support is not enabled. Please enable support." msgstr "" -"Se utilizan las herramientas de aplicación de soporte pero el soporte no " -"está habilitado. Por favor, active el soporte." +"Se utilizan las herramientas de aplicación de soporte pero el soporte no está habilitado. " +"Por favor, active el soporte." msgid "Layer height cannot exceed nozzle diameter" msgstr "La altura de la capa no puede superar el diámetro de la boquilla" #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" -msgstr "" +msgstr "Cama %d: %s no soporta filamento %s" msgid "Generating skirt & brim" -msgstr "Generando falda y ala" +msgstr "Generando falda y borde de adherencia" msgid "Exporting G-code" msgstr "Exportando código G" @@ -6475,33 +6470,34 @@ msgid "Bed exclude area" msgstr "La cama excluye el área" msgid "" -"Unprintable area in XY plane. For example, X1 Series printers use the front " -"left corner to cut filament during filament change. The area is expressed as " -"polygon by points in following format: \"XxY, XxY, ...\"" +"Unprintable area in XY plane. For example, X1 Series printers use the front left corner to " +"cut filament during filament change. The area is expressed as polygon by points in " +"following format: \"XxY, XxY, ...\"" msgstr "" +"Área no imprimible en el plano XY. Por ejemplo, las impresoras de la serie X1 utilizan la " +"esquina delantera izquierda para cortar el filamento durante el cambio de filamento. El " +"área se expresa como polígono por puntos en el siguiente formato: \"XxY, XxY, ...\"" msgid "Bed custom texture" -msgstr "" +msgstr "Textura personalizada de cama" msgid "Bed custom model" -msgstr "" +msgstr "Modelo personalizado de cama" msgid "Elephant foot compensation" msgstr "Compensación del pie de elefante" -msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +msgid "Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" -"Contraer la capa inicial en la placa de impresión para compensar el efecto " -"de la pata de elefante" +"Contraer la capa inicial en la cama de impresión para compensar el efecto de la pata de " +"elefante" msgid "" -"Slicing height for each layer. Smaller layer height means more accurate and " -"more printing time" +"Slicing height for each layer. Smaller layer height means more accurate and more printing " +"time" msgstr "" -"Altura de corte para cada capa. Una altura de capa más pequeña significa más " -"precisión y más tiempo de impresión" +"Altura de corte para cada capa. Una altura de capa más pequeña significa más precisión y " +"más tiempo de impresión" msgid "Printable height" msgstr "Altura imprimible" @@ -6513,125 +6509,135 @@ msgid "Printer preset names" msgstr "Nombres de ajustes de la impresora" msgid "Hostname, IP or URL" -msgstr "" +msgstr "Nombre de host, IP o URL" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the hostname, IP address or URL of the printer host instance. Print host " -"behind HAProxy with basic auth enabled can be accessed by putting the user " -"name and password into the URL in the following format: https://username:" -"password@your-octopi-address/" +"Slic3r can upload G-code files to a printer host. This field should contain the hostname, " +"IP address or URL of the printer host instance. Print host behind HAProxy with basic auth " +"enabled can be accessed by putting the user name and password into the URL in the " +"following format: https://username:password@your-octopi-address/" msgstr "" +"OrcaSlicer puede subir archivos G-Code a una impresora. Este campo debería contener el " +"nombre de host, la dirección IP o la URL de la instancia de la impresora. Se puede acceder " +"a la impresora detrás de un proxy con la autenticación básica activada por un nombre de " +"usuario y contraseña en la URL en el siguiente formato: https://nombredeusuario:" +"contraseña@tudirecciondeoctopi/" msgid "Device UI" -msgstr "" +msgstr "IU de dispositivo" -msgid "" -"Specify the URL of your device user interface if it's not same as print_host" -msgstr "" +msgid "Specify the URL of your device user interface if it's not same as print_host" +msgstr "Especifica la URL de tu IU de dispositivo si no es el mismo que el host de impresión" msgid "API Key / Password" -msgstr "" +msgstr "Clave API / Contraseña" msgid "" -"Slic3r can upload G-code files to a printer host. This field should contain " -"the API Key or the password required for authentication." +"Slic3r can upload G-code files to a printer host. This field should contain the API Key or " +"the password required for authentication." msgstr "" +"OrcaSlicer puede cargar archivos G-Cpde a un host de impresora. Este campo debería " +"contener una clave API o una contraseña requerida para la autenticación." msgid "Name of the printer" -msgstr "" +msgstr "Nombre de la impresora" msgid "HTTPS CA File" -msgstr "" +msgstr "Archivo CA HTTPS" msgid "" -"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " -"in crt/pem format. If left blank, the default OS CA certificate repository " -"is used." +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, in crt/pem " +"format. If left blank, the default OS CA certificate repository is used." msgstr "" +"Es posible especificar un archivo Certificado CA personalizado para conexiones, en formato " +"crt/pem. Si se deja en blanco, se usará el reposittorio de certificados CA del SO." msgid "User" -msgstr "" +msgstr "Usuario" msgid "Password" -msgstr "" +msgstr "Contraseña" msgid "Ignore HTTPS certificate revocation checks" -msgstr "" +msgstr "Ignorar comprobaciones de revocación de certificado HTTPS" msgid "" -"Ignore HTTPS certificate revocation checks in case of missing or offline " -"distribution points. One may want to enable this option for self signed " -"certificates if connection fails." +"Ignore HTTPS certificate revocation checks in case of missing or offline distribution " +"points. One may want to enable this option for self signed certificates if connection " +"fails." msgstr "" +"Ignorar comprobaciones de certificado de revocación HTTPS en caso de perder o puntos de " +"distribución sin conexión. Se debería activar esta opción de certificados autofirmados si " +"la conexión falla." msgid "Names of presets related to the physical printer" -msgstr "" +msgstr "Nombres de preajustes relacionados por la impresora física" msgid "Authorization Type" -msgstr "" +msgstr "Tipo de autorización" msgid "API key" -msgstr "" +msgstr "Clave API" msgid "HTTP digest" -msgstr "" +msgstr "Resumen HTTP" msgid "Avoid crossing wall" -msgstr "" +msgstr "Evitar cruzar pared" msgid "Detour and avoid to travel across wall which may cause blob on surface" msgstr "" -"Desvíese y evite atravesar el muro, ya que puede provocar una mancha en la " -"superficie" +"Desvíese y evite atravesar el pared, ya que puede provocar una mancha en la superficie" msgid "Avoid crossing wall - Max detour length" -msgstr "" +msgstr "Evitar cruzar pared - Longitud de desvío máximo" msgid "" -"Maximum detour distance for avoiding crossing wall. Don't detour if the " -"detour distance is large than this value. Detour length could be specified " -"either as an absolute value or as percentage (for example 50%) of a direct " -"travel path. Zero to disable" +"Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance is " +"large than this value. Detour length could be specified either as an absolute value or as " +"percentage (for example 50%) of a direct travel path. Zero to disable" msgstr "" +"Distancia de desvio máximo para evitar cruzar el pared. No lo evite si la distancia de " +"desvío es más alta que este valor. La distancia de desvío podría tanto como un valor " +"absoluto como pocentaje (por ejemplo 50%) de una trayectoria de viaje directa. Cero para " +"deshabilitar" msgid "mm or %" -msgstr "" +msgstr "mm o %" msgid "Other layers" msgstr "Otras capas" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the Cool Plate" msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa " -"fría." +"Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama fría" msgid "°C" msgstr "°C" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Engineering Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the Engineering Plate" msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa de " -"ingeniería." +"Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama de ingeniería" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the High Temp Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the High Temp Plate" msgstr "" -"Esta es la temperatura de la cama para las capas excepto la inicial. Un " -"valor de 0 significa que el filamento no admite la impresión en la placa de " -"alta temperatura." +"Esta es la temperatura de la cama para las capas excepto la inicial. Un valor de 0 " +"significa que el filamento no admite la impresión en la cama de alta temperatura" msgid "" -"Bed temperature for layers except the initial one. Value 0 means the " -"filament does not support to print on the Textured PEI Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" msgstr "" +"Temperatura de cama para las capas excepto la inicial. El valor 0 significa que el " +"filamento no es compatible para imprimir en la cama PEI texturizada" msgid "Initial layer" msgstr "Capa inicial" @@ -6640,31 +6646,32 @@ msgid "Initial layer bed temperature" msgstr "Temperatura inicial de la cama en la capa" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Cool Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the Cool Plate" msgstr "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa fría." +"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 significa que el " +"filamento no admite la impresión en la cama fría" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Engineering Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the Engineering Plate" msgstr "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa de ingeniería." +"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 significa que el " +"filamento no admite la impresión en la cama de ingeniería" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the High Temp Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the High Temp Plate" msgstr "" -"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 " -"significa que el filamento no admite la impresión en la placa de alta " -"temperatura." +"Esta es la temperatura de la cama de la capa inicial. Un valor de 0 significa que el " +"filamento no admite la impresión en la cama de alta temperatura" msgid "" -"Bed temperature of the initial layer. Value 0 means the filament does not " -"support to print on the Textured PEI Plate" +"Bed temperature of the initial layer. Value 0 means the filament does not support to print " +"on the Textured PEI Plate" msgstr "" +"Temperatura del lecho de la capa inicial. El valor 0 significa que el filamento no es " +"compatible para imprimir en la cama PEI texturizada" msgid "Bed types supported by the printer" msgstr "Tipos de cama que admite la impresora" @@ -6676,188 +6683,193 @@ msgid "Bottom shell layers" msgstr "Capas inferiores de cubierta" msgid "" -"This is the number of solid layers of bottom shell, including the bottom " -"surface layer. When the thickness calculated by this value is thinner than " -"bottom shell thickness, the bottom shell layers will be increased" +"This is the number of solid layers of bottom shell, including the bottom surface layer. " +"When the thickness calculated by this value is thinner than bottom shell thickness, the " +"bottom shell layers will be increased" msgstr "" -"Es el número de capas sólidas de la carcasa inferior, incluida la capa " -"superficial inferior. Si el grosor calculado por este valor es menor que el " -"grosor del armazón inferior, las capas del armazón inferior se incrementarán" +"Es el número de capas sólidas de la carcasa inferior, incluida la capa superficial " +"inferior. Si el grosor calculado por este valor es menor que el grosor del armazón " +"inferior, las capas del armazón inferior se incrementarán" msgid "Bottom shell thickness" msgstr "Espesor de la carcasa inferior" msgid "" -"The number of bottom solid layers is increased when slicing if the thickness " -"calculated by bottom shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of bottom shell is absolutely determained by " -"bottom shell layers" +"The number of bottom solid layers is increased when slicing if the thickness calculated by " +"bottom shell layers is thinner than this value. This can avoid having too thin shell when " +"layer height is small. 0 means that this setting is disabled and thickness of bottom shell " +"is absolutely determained by bottom shell layers" msgstr "" -"El número de capas sólidas del fondo se incrementa al cortar si el grosor " -"calculado por las capas del fondo es más fino que este valor. Esto puede " -"evitar tener una capa demasiado fina cuando la altura de la capa es pequeña. " -"0 significa que este ajuste está desactivado y el grosor de la capa inferior " -"está absolutamente determinado por las capas de la capa inferior." +"El número de capas sólidas del fondo se incrementa al cortar si el grosor calculado por " +"las capas del fondo es más fino que este valor. Esto puede evitar tener una capa demasiado " +"fina cuando la altura de la capa es pequeña. 0 significa que este ajuste está desactivado " +"y el grosor de la capa inferior está absolutamente determinado por las capas de la capa " +"inferior" msgid "Force cooling for overhang and bridge" msgstr "Refrigeración forzada para el voladizo y el puente" msgid "" -"Enable this option to optimize part cooling fan speed for overhang and " -"bridge to get better cooling" +"Enable this option to optimize part cooling fan speed for overhang and bridge to get " +"better cooling" msgstr "" -"Habilite esta opción para optimizar la velocidad del ventilador de " -"refrigeración de la pieza para el voladizo y el puente para obtener una " -"mejor refrigeración" +"Habilite esta opción para optimizar la velocidad del ventilador de refrigeración de la " +"pieza para el voladizo y el puente para obtener una mejor refrigeración" msgid "Fan speed for overhang" msgstr "Velocidad del ventilador para el voladizo" msgid "" -"Force part cooling fan to be this speed when printing bridge or overhang " -"wall which has large overhang degree. Forcing cooling for overhang and " -"bridge can get better quality for these part" +"Force part cooling fan to be this speed when printing bridge or overhang wall which has " +"large overhang degree. Forcing cooling for overhang and bridge can get better quality for " +"these part" msgstr "" -"Forzar el ventilador de la pieza a esta velocidad cuando se imprime el " -"puente o la pared del voladizo que tiene un gran grado de voladizo. Al " -"forzar la refrigeración de los voladizos y puentes se puede obtener una " -"mejor calidad para estas piezas." +"Forzar el ventilador de la pieza a esta velocidad cuando se imprime el puente o la pared " +"del voladizo que tiene un gran grado de voladizo. Al forzar la refrigeración de los " +"voladizos y puentes se puede obtener una mejor calidad para estas piezas" msgid "Cooling overhang threshold" msgstr "Umbral del voladizo de refrigeración" #, c-format msgid "" -"Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicides how much width " -"of the line without support from lower layer. 0% means forcing cooling for " -"all outer wall no matter how much overhang degree" +"Force cooling fan to be specific speed when overhang degree of printed part exceeds this " +"value. Expressed as percentage which indicides how much width of the line without support " +"from lower layer. 0% means forcing cooling for all outer wall no matter how much overhang " +"degree" msgstr "" +"Fuerza al ventilador de refrigeración a una velocidad específica cuando el grado de " +"voladizo de la pieza impresa excede este valor. Expresado como porcentaje, indica la " +"anchura de la línea sin soporte de la capa inferior. 0% m significa forzar la " +"refrigeración de toda la pared exterior sin importar el grado de voladizo" msgid "Bridge infill direction" -msgstr "" +msgstr "Dirección de relleno de puente" msgid "" -"Bridging angle override. If left to zero, the bridging angle will be " -"calculated automatically. Otherwise the provided angle will be used for " -"external bridges. Use 180°for zero angle." +"Bridging angle override. If left to zero, the bridging angle will be calculated " +"automatically. Otherwise the provided angle will be used for external bridges. Use 180°for " +"zero angle." msgstr "" +"Anulación del ángulo de puenteo. Si se deja a cero, el ángulo de puente se calculará " +"automáticamente. De lo contrario, se utilizará el ángulo proporcionado para los puentes " +"externos. Utilice 180° para el ángulo cero." msgid "Bridge density" -msgstr "" +msgstr "Densidad de puente" msgid "Density of external bridges. 100% means solid bridge. Default is 100%." -msgstr "" +msgstr "Densidad de puentes externos. 100% significa puente sólido. Por defecto es 100%." msgid "Bridge flow" msgstr "Flujo del puente" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag" +"Decrease this value slightly(for example 0.9) to reduce the amount of material for bridge, " +"to improve sag" msgstr "" -"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad " -"de material para el puente, para mejorar el hundimiento" +"Disminuya este valor ligeramente (por ejemplo 0,9) para reducir la cantidad de material " +"para el puente, para mejorar el hundimiento" msgid "Top surface flow ratio" -msgstr "" +msgstr "Ratio de flujo de superficie superior" msgid "" -"This factor affects the amount of material for top solid infill. You can " -"decrease it slightly to have smooth surface finish" +"This factor affects the amount of material for top solid infill. You can decrease it " +"slightly to have smooth surface finish" msgstr "" +"Este factor afecta a la cantidad de material de para relleno sólido superior. Puede " +"disminuirlo ligeramente para obtener un acabado suave de superficie" msgid "Bottom surface flow ratio" -msgstr "" +msgstr "Ratio de flujo de superficie inferior" msgid "This factor affects the amount of material for bottom solid infill" -msgstr "" +msgstr "Este factor afecta a la cantidad de material para el relleno sólido inferior" msgid "Precise wall(experimental)" -msgstr "" +msgstr "Muro preciso(experimental)" msgid "" -"Improve shell precision by adjusting outer wall spacing. This also improves " -"layer consistency." +"Improve shell precision by adjusting outer wall spacing. This also improves layer " +"consistency." msgstr "" +"Mejorar precisión de la carcasa ajustando el espaciado del pared exterior. Esto además " +"mejora la consistencia de capa." msgid "Only one wall on top surfaces" msgstr "Sólo una pared en las superficies superiores" -msgid "" -"Use only one wall on flat top surface, to give more space to the top infill " -"pattern" +msgid "Use only one wall on flat top surface, to give more space to the top infill pattern" msgstr "" -"Sólo una pared en la superficies superiores, para dar más espacio a la placa " -"de relleno superior" +"Sólo una pared en la superficies superiores, para dar más espacio al patrónde relleno " +"superior" msgid "Only one wall on first layer" -msgstr "" +msgstr "Solo un pared en la primera capa" -msgid "" -"Use only one wall on first layer, to give more space to the bottom infill " -"pattern" +msgid "Use only one wall on first layer, to give more space to the bottom infill pattern" msgstr "" +"Usar solo un pared en la primera capa, para dar más espacio en el patrón de relleno " +"inferior" msgid "Classic mode" -msgstr "" +msgstr "Modo clásico" msgid "Enable this option to use classic mode" -msgstr "" +msgstr "Activar esta opción para usar el modo clásico" msgid "Slow down for overhang" msgstr "Disminución de velocidad de voladizo" msgid "Enable this option to slow printing down for different overhang degree" -msgstr "" -"Habilite esta opción para ralentizar la impresión para diferentes grados de " -"voladizo" +msgstr "Habilite esta opción para ralentizar la impresión para diferentes grados de voladizo" msgid "mm/s" msgstr "mm/s" msgid "Speed of bridge and completely overhang wall" -msgstr "Velocidad del puente y muro completo en voladizo" +msgstr "Velocidad del puente y pared completo en voladizo" msgid "Brim width" -msgstr "Ancho de la balsa" +msgstr "Ancho de del borde de adherencia" msgid "Distance from model to the outermost brim line" -msgstr "Distancia del modelo a la línea más externa del borde" +msgstr "Distancia del modelo a la línea más externa del borde de adherencia" msgid "Brim type" -msgstr "Tipo de balsa" +msgstr "Tipo de borde de adherencia" msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analysed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. Auto means " +"the brim width is analysed and calculated automatically." msgstr "" +"Esto controla la generación del borde de adherencia en el lado exterior y/o interior de " +"los modelos. Auto significa que el ancho de borde de adherencia es analizado y calculado " +"automaticamente." msgid "outer_only" -msgstr "" +msgstr "exterior_solo" msgid "Inner brim only" -msgstr "" +msgstr "Solo borde de adherencia interior" msgid "Outer and inner brim" -msgstr "" +msgstr "Borde de adherencia exterior e interior" msgid "Brim-object gap" -msgstr "Espacio borde-objeto" +msgstr "Espacio borde de adherencia-objeto" -msgid "" -"A gap between innermost brim line and object can make brim be removed more " -"easily" +msgid "A gap between innermost brim line and object can make brim be removed more easily" msgstr "" -"Un hueco entre la línea más interna del borde y el objeto puede hacer que el " -"borde se retire más fácilmente" +"Un hueco entre la línea más interna del borde de adherencia y el objeto puede hacer que el " +"borde de adherencia se retire más fácilmente" msgid "Compatible machine" msgstr "Máquina compatible" msgid "upward compatible machine" -msgstr "" +msgstr "máquina compatible ascendente" msgid "Compatible machine condition" msgstr "Condición de máquina compatible" @@ -6878,30 +6890,25 @@ msgid "By object" msgstr "Por objeto" msgid "Slow printing down for better layer cooling" -msgstr "" -"Reducir la velocidad de impresión para mejorar el enfriamiento de las capas" +msgstr "Reducir la velocidad de impresión para mejorar el enfriamiento de las capas" msgid "" -"Enable this option to slow printing speed down to make the final layer time " -"not shorter than the layer time threshold in \"Max fan speed threshold\", so " -"that layer can be cooled for longer time. This can improve the cooling " -"quality for needle and small details" +"Enable this option to slow printing speed down to make the final layer time not shorter " +"than the layer time threshold in \"Max fan speed threshold\", so that layer can be cooled " +"for longer time. This can improve the cooling quality for needle and small details" msgstr "" -"Active esta opción para reducir la velocidad de impresión para que el tiempo " -"de la capa final no sea inferior al umbral de tiempo de la capa en \"Umbral " -"de velocidad máxima del ventilador\", de modo que la capa pueda enfriarse " -"durante más tiempo. Esto puede mejorar la calidad del enfriamiento para las " -"agujas y los detalles pequeños." +"Active esta opción para reducir la velocidad de impresión para que el tiempo de la capa " +"final no sea inferior al umbral de tiempo de la capa en \"Umbral de velocidad máxima del " +"ventilador\", de modo que la capa pueda enfriarse durante más tiempo. Esto puede mejorar " +"la calidad del enfriamiento para las agujas y los detalles pequeños" msgid "Normal printing" msgstr "Impresión normal" -msgid "" -"The default acceleration of both normal printing and travel except initial " -"layer" +msgid "The default acceleration of both normal printing and travel except initial layer" msgstr "" -"La aceleración por defecto tanto de la impresión normal como del " -"desplazamiento excepto la capa inicial" +"La aceleración por defecto tanto de la impresión normal como del desplazamiento excepto la " +"capa inicial" msgid "mm/s²" msgstr "mm/s²" @@ -6910,26 +6917,23 @@ msgid "Default filament profile" msgstr "Perfil de filamento por defecto" msgid "Default filament profile when switch to this machine profile" -msgstr "" -"Perfil de filamento por defecto cuando se cambia a este perfil de máquina" +msgstr "Perfil de filamento por defecto cuando se cambia a este perfil de máquina" msgid "Default process profile" msgstr "Perfil de proceso por defecto" msgid "Default process profile when switch to this machine profile" -msgstr "" -"Perfil de proceso por defecto cuando se cambia a este perfil de máquina" +msgstr "Perfil de proceso por defecto cuando se cambia a este perfil de máquina" msgid "No cooling for the first" msgstr "No hay refrigeración para la primera" msgid "" -"Close all cooling fan for the first certain layers. Cooling fan of the first " -"layer used to be closed to get better build plate adhesion" +"Close all cooling fan for the first certain layers. Cooling fan of the first layer used to " +"be closed to get better build plate adhesion" msgstr "" -"Apague todos los ventiladores de refrigeración de las primeras capas. El " -"ventilador de la primera capa debe estar cerrado para conseguir una mejor " -"adhesión de la placa de impresión." +"Apague todos los ventiladores de refrigeración de las primeras capas. El ventilador de la " +"primera capa debe estar cerrado para conseguir una mejor adhesión de la cama de impresión" msgid "layers" msgstr "capas" @@ -6938,32 +6942,33 @@ msgid "Don't support bridges" msgstr "No soportar puentes" msgid "" -"Don't support the whole bridge area which make support very large. Bridge " -"usually can be printing directly without support if not very long" +"Don't support the whole bridge area which make support very large. Bridge usually can be " +"printing directly without support if not very long" msgstr "" -"No apoye todo el área del puente que hace el apoyo muy grande. El puente " -"normalmente puede imprimirse directamente sin soporte si no es muy largo" +"No apoye todo el área del puente que hace el apoyo muy grande. El puente normalmente puede " +"imprimirse directamente sin soporte si no es muy largo" msgid "Thick bridges" -msgstr "" +msgstr "Puentes gruesos" msgid "" -"If enabled, bridges are more reliable, can bridge longer distances, but may " -"look worse. If disabled, bridges look better but are reliable just for " -"shorter bridged distances." +"If enabled, bridges are more reliable, can bridge longer distances, but may look worse. If " +"disabled, bridges look better but are reliable just for shorter bridged distances." msgstr "" +"Si están activados, los puentes son más fiables, pueden salvar distancias más largas, pero " +"pueden tener peor aspecto. Si están desactivados, los puentes se ven mejor pero son " +"fiables sólo para distancias más cortas." msgid "Max bridge length" msgstr "Distancia máxima de puentes" msgid "" -"Max length of bridges that don't need support. Set it to 0 if you want all " -"bridges to be supported, and set it to a very large value if you don't want " -"any bridges to be supported." +"Max length of bridges that don't need support. Set it to 0 if you want all bridges to be " +"supported, and set it to a very large value if you don't want any bridges to be supported." msgstr "" -"Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo " -"a 0 si quieres que todos los puentes sean soportados, y ajústalo a un valor " -"muy grande si no quieres que ningún puente sea soportado." +"Esta es la longitud máxima de los puentes que no necesitan soporte. Ajústalo a 0 si " +"quieres que todos los puentes sean soportados, y ajústalo a un valor muy grande si no " +"quieres que ningún puente sea soportado." msgid "End G-code" msgstr "Código G final" @@ -6975,23 +6980,28 @@ msgid "End G-code when finish the printing of this filament" msgstr "Terminar el código G cuando se termine de imprimir este filamento" msgid "Ensure vertical shell thickness" -msgstr "" +msgstr "Asegurar grosor de carcasa vertical" msgid "" -"Add solid infill near sloping surfaces to guarantee the vertical shell " -"thickness (top+bottom solid layers)" +"Add solid infill near sloping surfaces to guarantee the vertical shell thickness " +"(top+bottom solid layers)" msgstr "" +"Añadir relleno sólido al lado de superficies inclinadas para garantizar el grosor de " +"carcasa vertical (capas sólidas superior+inferior)" msgid "Internal bridge support thickness" -msgstr "" +msgstr "Grosor de soportes de puente interno" msgid "" -"If enabled, support loops will be generated under the contours of " -"internal bridges. These support loops could prevent internal bridges from " -"extruding over the air and improve the top surface quality, especially when " -"the sparse infill density is low.This value determines the thickness of the " -"support loops. 0 means disable this feature" +"If enabled, support loops will be generated under the contours of internal bridges. These " +"support loops could prevent internal bridges from extruding over the air and improve the " +"top surface quality, especially when the sparse infill density is low.This value " +"determines the thickness of the support loops. 0 means disable this feature" msgstr "" +"Si está activado, los bucles de soporte generarán debajo de los contornos de puentes " +"internos. Estos bucles de soporte pueden prevenir extruir puentes en el aire y mejorar la " +"calidad de la superficie superior, especialmente cuando la densidad de relleno escasa es " +"baja. 0 significa deshabilitar esta característica" msgid "Top surface pattern" msgstr "Patrón de la superficie superior" @@ -7012,62 +7022,61 @@ msgid "Monotonic line" msgstr "Linea continua" msgid "Aligned Rectilinear" -msgstr "" +msgstr "Alineación Rectilinea" msgid "Hilbert Curve" -msgstr "" +msgstr "Curva Hilbert" msgid "Archimedean Chords" -msgstr "" +msgstr "Arcodes de Arquímedes" msgid "Octagram Spiral" -msgstr "" +msgstr "Octograma en Espiral" msgid "Bottom surface pattern" msgstr "Patrón de la superficie inferior" msgid "Line pattern of bottom surface infill, not bridge infill" -msgstr "" -"Patrón de líneas del relleno de la superficie inferior, no del relleno del " -"puente" +msgstr "Patrón de líneas del relleno de la superficie inferior, no del relleno del puente" msgid "Line width of outer wall" msgstr "Ancho de línea de la pared exterior" msgid "" -"Speed of outer wall which is outermost and visible. It's used to be slower " -"than inner wall speed to get better quality." +"Speed of outer wall which is outermost and visible. It's used to be slower than inner wall " +"speed to get better quality." msgstr "" -"Velocidad de la pared exterior, que es la más externa y visible. Se utiliza " -"para ser más lento que la velocidad de la pared interior para obtener una " -"mejor calidad." +"Velocidad de la pared exterior, que es la más externa y visible. Se utiliza para ser más " +"lento que la velocidad de la pared interior para obtener una mejor calidad." msgid "Small perimeters" -msgstr "" +msgstr "Perímetros pequeños" msgid "" "This separate setting will affect the speed of perimeters having radius <= " -"small_perimeter_threshold (usually holes). If expressed as percentage (for " -"example: 80%) it will be calculated on the outer wall speed setting above. " -"Set to zero for auto." +"small_perimeter_threshold (usually holes). If expressed as percentage (for example: 80%) " +"it will be calculated on the outer wall speed setting above. Set to zero for auto." msgstr "" +"Este ajuste independiente afectará a la velocidad de los perímetros con radio <= " +"small_perimeter_threshold (normalmente agujeros). Si se expresa como porcentaje (por " +"ejemplo: 80%) se calculará sobre el ajuste de velocidad de la pared exterior anterior. " +"Póngalo a cero para auto." msgid "mm/s or %" -msgstr "" +msgstr "mm/s o %" msgid "Small perimeters threshold" -msgstr "" +msgstr "Umbral Perímetral Pequeño" -msgid "" -"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgid "This sets the threshold for small perimeter length. Default threshold is 0mm" msgstr "" +"Esto configura el umbral para longitud de perímetro pequeño. El umbral por defecto es 0mm" msgid "Order of inner wall/outer wall/infil" msgstr "Orden de la pared interior/pared exterior/relleno" msgid "Print sequence of inner wall, outer wall and infill. " -msgstr "" -"Imprimir la secuencia de la pared interior, la pared exterior y el relleno. " +msgstr "Imprimir la secuencia de la pared interior, la pared exterior y el relleno. " msgid "inner/outer/infill" msgstr "interior/exterior/relleno" @@ -7082,28 +7091,31 @@ msgid "infill/outer/inner" msgstr "relleno/exterior/interior" msgid "inner-outer-inner/infill" -msgstr "" +msgstr "interior-exterior-interior/relleno" msgid "Height to rod" msgstr "Altura a la barra" msgid "" -"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " -"by-object printing." +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in by-object " +"printing." msgstr "" +"Distancia de la punta de la boquilla hasta la varilla baja. Usado para evitar colisiones " +"en las impresiones por objeto." msgid "Height to lid" msgstr "Altura hasta la tapa" msgid "" -"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" -"object printing." +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-object printing." msgstr "" +"Distancia de la punta de la boquilla a la tapa. Usado para evitar la colisión con la " +"impresión por objeto." -msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +msgid "Clearance radius around extruder. Used for collision avoidance in by-object printing." msgstr "" +"El radio de claridad alrededor del extrusor. Se utiliza para evitar la colisión con la " +"impresión por objeto." msgid "Extruder Color" msgstr "Color del extrusor" @@ -7118,29 +7130,27 @@ msgid "Flow ratio" msgstr "Proporción de flujo" msgid "" -"The material may have volumetric change after switching between molten state " -"and crystalline state. This setting changes all extrusion flow of this " -"filament in gcode proportionally. Recommended value range is between 0.95 " -"and 1.05. Maybe you can tune this value to get nice flat surface when there " -"has slight overflow or underflow" +"The material may have volumetric change after switching between molten state and " +"crystalline state. This setting changes all extrusion flow of this filament in gcode " +"proportionally. Recommended value range is between 0.95 and 1.05. Maybe you can tune this " +"value to get nice flat surface when there has slight overflow or underflow" msgstr "" -"El material puede tener un cambio volumétrico después de cambiar entre el " -"estado fundido y el estado cristalino. Este ajuste cambia proporcionalmente " -"todo el flujo de extrusión de este filamento en gcode. El rango de valores " -"recomendado es entre 0.95 y 1.05. Tal vez usted puede ajustar este valor " -"para obtener una superficie plana agradable cuando hay un ligero " -"desbordamiento o sub-desbordamiento" +"El material puede tener un cambio volumétrico después de cambiar entre el estado fundido y " +"el estado cristalino. Este ajuste cambia proporcionalmente todo el flujo de extrusión de " +"este filamento en gcode. El rango de valores recomendado es entre 0.95 y 1.05. Tal vez " +"usted puede ajustar este valor para obtener una superficie plana agradable cuando hay un " +"ligero desbordamiento o sub-desbordamiento" msgid "Enable pressure advance" -msgstr "" +msgstr "Activar avance de presión" -msgid "" -"Enable pressure advance, auto calibration result will be overwriten once " -"enabled." +msgid "Enable pressure advance, auto calibration result will be overwriten once enabled." msgstr "" +"Activar avance de presión, resultado de auto calibración se sobreescribirá una vez " +"activado." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" -msgstr "" +msgstr "El avance de presión(Klipper) AKA Factor de avance lineal(Marlin)" msgid "Default line width if some line width is set to be zero" msgstr "Ancho de línea por defecto si se ajusta algún ancho de línea es cero" @@ -7149,99 +7159,112 @@ msgid "Keep fan always on" msgstr "Mantener el ventilador siempre encendido" msgid "" -"If enable this setting, part cooling fan will never be stoped and will run " -"at least at minimum speed to reduce the frequency of starting and stoping" +"If enable this setting, part cooling fan will never be stoped and will run at least at " +"minimum speed to reduce the frequency of starting and stoping" msgstr "" -"Si se activa este ajuste, el ventilador nunca se detendrá y funcionará al " -"menos a la velocidad mínima para reducir la frecuencia de arranque y parada." +"Si se activa este ajuste, el ventilador nunca se detendrá y funcionará al menos a la " +"velocidad mínima para reducir la frecuencia de arranque y parada" msgid "Layer time" msgstr "Tiempo de capa" msgid "" -"Part cooling fan will be enabled for layers of which estimated time is " -"shorter than this value. Fan speed is interpolated between the minimum and " -"maximum fan speeds according to layer printing time" +"Part cooling fan will be enabled for layers of which estimated time is shorter than this " +"value. Fan speed is interpolated between the minimum and maximum fan speeds according to " +"layer printing time" msgstr "" -"El ventilador de refrigeración de la pieza se activará para las capas cuyo " -"tiempo estimado sea inferior a este valor. La velocidad del ventilador se " -"interpola entre las velocidades mínima y máxima del ventilador según el " -"tiempo de impresión de las capas" +"El ventilador de refrigeración de la pieza se activará para las capas cuyo tiempo estimado " +"sea inferior a este valor. La velocidad del ventilador se interpola entre las velocidades " +"mínima y máxima del ventilador según el tiempo de impresión de las capas" msgid "s" msgstr "s" msgid "Default color" -msgstr "" +msgstr "Color por defecto" msgid "Default filament color" -msgstr "" +msgstr "Color de filamento por defecto" msgid "Color" msgstr "Color" msgid "Required nozzle HRC" -msgstr "" +msgstr "HRC de boquilla requerido" msgid "" -"Minimum HRC of nozzle required to print the filament. Zero means no checking " -"of nozzle's HRC." +"Minimum HRC of nozzle required to print the filament. Zero means no checking of nozzle's " +"HRC." msgstr "" +"HRC mínimo de boquilla requerido para imprimir el filamento. Cero significa no comprobar " +"el HRC de la boquilla." msgid "" -"This setting stands for how much volume of filament can be melted and " -"extruded per second. Printing speed is limited by max volumetric speed, in " -"case of too high and unreasonable speed setting. Can't be zero" +"This setting stands for how much volume of filament can be melted and extruded per second. " +"Printing speed is limited by max volumetric speed, in case of too high and unreasonable " +"speed setting. Can't be zero" msgstr "" +"Este ajuste representa la cantidad de volumen de filamento puede ser derretido extruido " +"por segundo. La velocidad de impresión está limitado por cuanta velocidad, en caso de " +"velocidad demasiado alta o no razonable. No puede ser cero" msgid "mm³/s" msgstr "mm³/s" msgid "Minimal purge on wipe tower" -msgstr "Purga mínima en la torre de limpieza" +msgstr "Purga mínima en la torre de purga" msgid "" -"After a tool change, the exact position of the newly loaded filament inside " -"the nozzle may not be known, and the filament pressure is likely not yet " -"stable. Before purging the print head into an infill or a sacrificial " -"object, Slic3r will always prime this amount of material into the wipe tower " -"to produce successive infill or sacrificial object extrusions reliably." +"After a tool change, the exact position of the newly loaded filament inside the nozzle may " +"not be known, and the filament pressure is likely not yet stable. Before purging the print " +"head into an infill or a sacrificial object, Slic3r will always prime this amount of " +"material into the wipe tower to produce successive infill or sacrificial object extrusions " +"reliably." msgstr "" +"Tras un cambio de herramienta, es posible que no se conozca la posición exacta del " +"filamento recién cargado dentro de la boquilla y que la presión del filamento aún no sea " +"estable. Antes de purgar el cabezal de impresión en un relleno o un objeto de sacrificio, " +"OrcaSlicer siempre cebará esta cantidad de material en la torre de purga para producir " +"sucesivas extrusiones de relleno u objetos de sacrificio de forma fiable." msgid "Filament load time" msgstr "Tiempo de carga de filamento" msgid "Time to load new filament when switch filament. For statistics only" msgstr "" -"Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo " -"para estadísticas" +"Tiempo para cargar un nuevo filamento cuando se cambia de filamento. Sólo para estadísticas" msgid "Filament unload time" msgstr "Tiempo de descarga del filamento" msgid "Time to unload old filament when switch filament. For statistics only" msgstr "" -"Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo " -"para las estadísticas" +"Tiempo para descargar el filamento viejo cuando se cambia de filamento. Sólo para las " +"estadísticas" msgid "" -"Filament diameter is used to calculate extrusion in gcode, so it's important " -"and should be accurate" +"Filament diameter is used to calculate extrusion in gcode, so it's important and should be " +"accurate" msgstr "" -"El diámetro del filamento se utiliza para calcular la extrusión en el gcode, " -"por lo que es importante y debe ser preciso" +"El diámetro del filamento se utiliza para calcular la extrusión en el gcode, por lo que es " +"importante y debe ser preciso" msgid "Shrinkage" -msgstr "" +msgstr "Retracción" #, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling " -"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " -"compensate. Only the filament used for the perimeter is taken into account.\n" -"Be sure to allow enough space between objects, as this compensation is done " -"after the checks." +"Enter the shrinkage percentage that the filament will get after cooling (94% if you " +"measure 94mm instead of 100mm). The part will be scaled in xy to compensate. Only the " +"filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done after the " +"checks." msgstr "" +"Introduzca el porcentaje de encogimiento que tendrá el filamento después de enfriarse " +"('94% i' si mide 94mm en lugar de 100mm). La pieza se escalará en xy para compensar. Sólo " +"se tiene en cuenta el filamento utilizado para el perímetro.\n" +"Asegúrese de dejar suficiente espacio entre los objetos, ya que esta compensación se " +"realiza después de las comprobaciones." msgid "Density" msgstr "Densidad" @@ -7258,30 +7281,28 @@ msgstr "El tipo de material del filamento" msgid "Soluble material" msgstr "Material soluble" -msgid "" -"Soluble material is commonly used to print support and support interface" +msgid "Soluble material is commonly used to print support and support interface" msgstr "" -"El material soluble se utiliza habitualmente para imprimir el soporte y la " -"interfaz de soporte" +"El material soluble se utiliza habitualmente para imprimir el soporte y la interfaz de " +"soporte" msgid "Support material" msgstr "Material de soporte" -msgid "" -"Support material is commonly used to print support and support interface" +msgid "Support material is commonly used to print support and support interface" msgstr "" -"El material de soporte se utiliza habitualmente para imprimir el soporte y " -"interficies de soporte" +"El material de soporte se utiliza habitualmente para imprimir el soporte y interficies de " +"soporte" msgid "Temperature of vitrificaiton" msgstr "Temperatura de vitrificación" msgid "" -"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " -"than this tempature" +"Material becomes soft at this temperature. Thus the heatbed cannot be hotter than this " +"tempature" msgstr "" -"El material se ablanda a esta temperatura. Por lo tanto, el lecho térmico no " -"puede estar más caliente que esta temperatura" +"El material se ablanda a esta temperatura. Por lo tanto, el lecho térmico no puede estar " +"más caliente que esta temperatura" msgid "Price" msgstr "Precio" @@ -7298,12 +7319,10 @@ msgstr "(No definido)" msgid "Infill direction" msgstr "Dirección del relleno" -msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" +msgid "Angle for sparse infill pattern, which controls the start or main direction of line" msgstr "" -"Ángulo para el patrón de relleno disperso, que controla el inicio o la " -"dirección principal de la línea" +"Ángulo para el patrón de relleno disperso, que controla el inicio o la dirección principal " +"de la línea" msgid "Sparse infill density" msgstr "Densidad de relleno" @@ -7311,8 +7330,7 @@ msgstr "Densidad de relleno" #, c-format msgid "Density of internal sparse infill, 100% means solid throughout" msgstr "" -"Densidad del relleno interno disperso, el 100%% significa sólido en todo el " -"territorio" +"Densidad del relleno interno disperso, el 100%% significa sólido en todo el territorio" msgid "Sparse infill pattern" msgstr "Patrón de relleno disperso" @@ -7342,128 +7360,146 @@ msgid "Adaptive Cubic" msgstr "Cúbico Adaptativo" msgid "3D Honeycomb" -msgstr "" +msgstr "Panal 3D" msgid "Support Cubic" -msgstr "" +msgstr "Soporte Cúbico" msgid "Lightning" -msgstr "" +msgstr "Rayo" msgid "Sparse infill anchor length" -msgstr "" +msgstr "Longitud de anclaje de relleno" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than infill_anchor_max is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to this parameter, but no longer than anchor_length_max. \n" -"Set this parameter to zero to disable anchoring perimeters connected to a " -"single infill line." +"Connect an infill line to an internal perimeter with a short segment of an additional " +"perimeter. If expressed as percentage (example: 15%) it is calculated over infill " +"extrusion width. Slic3r tries to connect two close infill lines to a short perimeter " +"segment. If no such perimeter segment shorter than infill_anchor_max is found, the infill " +"line is connected to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a single infill " +"line." msgstr "" +"Conectar una línea de relleno a un perímetro interno con un segmento corto de un perímetro " +"adicional. Si se expresa como porcentaje (ejemplo: 15%) este es calculado sobre el ancho " +"de extrusión de relleno. OrcaSlicer intenta conectar dos líneas de relleno cercanas a un " +"segmento de perímetro corto. Si no se encuentra ningún segmento más corto que " +"relleno_anclaje_max, la línea de relleno se conecta a un semento de perímetro en un solo " +"lado y la longitud del ancho de segmento de perímetro escogido se limita a este parámetro, " +"pero no más largo que anclage_longitud_max. \n" +"Configue este parámetro a cero para deshabilitar los perímetros de anclaje conectados a " +"una sola línea de relleno." msgid "0 (no open anchors)" -msgstr "" +msgstr "0 (no abrir anclajes)" msgid "1000 (unlimited)" -msgstr "" +msgstr "1000 (ilimitada)" msgid "Maximum length of the infill anchor" -msgstr "" +msgstr "Máxima longitud de relleno de anclaje" msgid "" -"Connect an infill line to an internal perimeter with a short segment of an " -"additional perimeter. If expressed as percentage (example: 15%) it is " -"calculated over infill extrusion width. Slic3r tries to connect two close " -"infill lines to a short perimeter segment. If no such perimeter segment " -"shorter than this parameter is found, the infill line is connected to a " -"perimeter segment at just one side and the length of the perimeter segment " -"taken is limited to infill_anchor, but no longer than this parameter. \n" -"If set to 0, the old algorithm for infill connection will be used, it should " -"create the same result as with 1000 & 0." +"Connect an infill line to an internal perimeter with a short segment of an additional " +"perimeter. If expressed as percentage (example: 15%) it is calculated over infill " +"extrusion width. Slic3r tries to connect two close infill lines to a short perimeter " +"segment. If no such perimeter segment shorter than this parameter is found, the infill " +"line is connected to a perimeter segment at just one side and the length of the perimeter " +"segment taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should create the " +"same result as with 1000 & 0." msgstr "" +"Conectar la línea de relleno a un perímetro interno con un segmento corto de un perímetro " +"adicional. Si se expresa como porcentaje (por ejemplo: 15%) este se calcula sobre el ancho " +"de relleno de extrusión. OrcaSlicer intenta conectar dos líneas de relleno cercanas a un " +"segmento de perímetro corto. Si no hay ningún segmento más corto que este parámetro, esta " +"líena de relleno se conecta a un segmento de perímetro solamente a un lado y la longitud " +"del segmento de perìmetro escogida se limita a relleno_anclaje, pero no más alto que este " +"parámetro. \n" +"Si se deja a 0, el algoritmo antiguo para conexión de relleno se usará, esto debería drear " +"el mismo resultado que con 1000 y 0." msgid "0 (Simple connect)" -msgstr "" +msgstr "0 (Conexión simple)" msgid "Acceleration of outer walls" -msgstr "" +msgstr "Aceleración de las paredes externos" msgid "Acceleration of inner walls" -msgstr "" +msgstr "Aceleración de las paredes internos" msgid "Acceleration of travel moves" -msgstr "" +msgstr "Aceleración de movimiento de viaje" msgid "" -"Acceleration of top surface infill. Using a lower value may improve top " -"surface quality" +"Acceleration of top surface infill. Using a lower value may improve top surface quality" msgstr "" -"Aceleración del relleno de la superficie superior. El uso de un valor más " -"bajo puede mejorar la calidad de la superficie superior" +"Aceleración del relleno de la superficie superior. El uso de un valor más bajo puede " +"mejorar la calidad de la superficie superior" msgid "Acceleration of outer wall. Using a lower value can improve quality" -msgstr "" +msgstr "Aceleración del pared externo. Usando un valor menor puede mejorar la calidad" msgid "" -"Acceleration of bridges. If the value is expressed as a percentage (e.g. " -"50%), it will be calculated based on the outer wall acceleration." +"Acceleration of bridges. If the value is expressed as a percentage (e.g. 50%), it will be " +"calculated based on the outer wall acceleration." msgstr "" +"Aceleración de los puentes. Si el valor es expresado como un porcentaje (por ejemplo 50%), " +"se calculará basándose en la aceleración del pared externo." msgid "mm/s² or %" -msgstr "" +msgstr "mm/s² o %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage (e.g. 100%), it " +"will be calculated based on the default acceleration." msgstr "" +"Aceleración de dispersión de relleno. Si el valor se expresa en porcentaje (por ejemplo " +"100%), se calculará basándose en la aceleración por defecto." msgid "" -"Acceleration of internal solid infill. If the value is expressed as a " -"percentage (e.g. 100%), it will be calculated based on the default " -"acceleration." +"Acceleration of internal solid infill. If the value is expressed as a percentage (e.g. " +"100%), it will be calculated based on the default acceleration." msgstr "" +"Aceleración de relleno sólido interno. Si el valor se expresa como porcentaje (por ejemplo " +"100%), este se calculará basándose en la aceleración por defecto." -msgid "" -"Acceleration of initial layer. Using a lower value can improve build plate " -"adhensive" +msgid "Acceleration of initial layer. Using a lower value can improve build plate adhensive" msgstr "" -"Aceleración de la capa inicial. El uso de un valor más bajo puede mejorar la " -"adherencia de la placa de impresión" +"Aceleración de la capa inicial. El uso de un valor más bajo puede mejorar la adherencia de " +"la cama de impresión" msgid "Enable accel_to_decel" -msgstr "" +msgstr "Activar acel_a_decel" msgid "Klipper's max_accel_to_decel will be adjusted automatically" -msgstr "" +msgstr "El max_accel_a_decel de Klipper será ajustado automaticamente" msgid "accel_to_decel" -msgstr "" +msgstr "accel_to_decel" #, c-format, boost-format msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" -msgstr "" +msgstr "El max_accel_to_decel de Klipper se ajustará a este % o de aceleración" msgid "Jerk of outer walls" -msgstr "" +msgstr "Jerk de las paredes externas" msgid "Jerk of inner walls" -msgstr "" +msgstr "Jerk de las paredes internass" msgid "Jerk for top surface" -msgstr "" +msgstr "Jerk de la superficie superior" msgid "Jerk for infill" -msgstr "" +msgstr "Jerk de relleno" msgid "Jerk for initial layer" -msgstr "" +msgstr "Jerk de la capa inicial" msgid "Jerk for travel" -msgstr "" +msgstr "Jerk de viaje" msgid "Line width of initial layer" msgstr "Ancho de línea de la capa inicial" @@ -7472,11 +7508,11 @@ msgid "Initial layer height" msgstr "Altura de la capa inicial" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhension" +"Height of initial layer. Making initial layer height to be thick slightly can improve " +"build plate adhension" msgstr "" -"Altura de la capa inicial. Hacer que la altura de la capa inicial sea " -"ligeramente gruesa puede mejorar la adherencia de la placa de impresión" +"Altura de la capa inicial. Hacer que la altura de la capa inicial sea ligeramente gruesa " +"puede mejorar la adherencia de la cama de impresión" msgid "Speed of initial layer except the solid infill part" msgstr "Velocidad de la capa inicial excepto la parte sólida de relleno" @@ -7488,63 +7524,71 @@ msgid "Speed of solid infill part of initial layer" msgstr "Velocidad de la parte de relleno sólido de la capa inicial" msgid "Initial layer travel speed" -msgstr "" +msgstr "Velocidad de viaje de la capa inicial" msgid "Travel speed of initial layer" -msgstr "" +msgstr "Velocidad de viaje de capa inicial" msgid "Number of slow layers" -msgstr "" +msgstr "Número de capas lentas" msgid "" -"The first few layers are printed slower than normal. The speed is gradually " -"increased in a linear fashion over the specified number of layers." +"The first few layers are printed slower than normal. The speed is gradually increased in a " +"linear fashion over the specified number of layers." msgstr "" +"Las primeras capas se imprimen más lentamente de lo normal. La velocidad se incrementa " +"gradualmente de una forma lineal sobre un número específico de capas." msgid "Initial layer nozzle temperature" msgstr "Temperatura de la boquilla de la capa inicial" msgid "Nozzle temperature to print initial layer when using this filament" msgstr "" -"Temperatura de la boquilla para imprimir la capa inicial cuando se utiliza " -"este filamento" +"Temperatura de la boquilla para imprimir la capa inicial cuando se utiliza este filamento" msgid "Full fan speed at layer" msgstr "Velocidad máxima del ventilador en la capa" msgid "" -"Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer " -"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " -"than \"close_fan_the_first_x_layers\", in which case the fan will be running " -"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"Fan speed will be ramped up linearly from zero at layer \"close_fan_the_first_x_layers\" " +"to maximum at layer \"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if " +"lower than \"close_fan_the_first_x_layers\", in which case the fan will be running at " +"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" +"La velocidad de ventilador se incrementará linealmente de cero a " +"\"close_fan_the_first_x_layers\" al máximo de capa \"full_fan_speed_layer\". " +"\"full_fan_speed_layer\" se ignorará si es menor que \"close_fan_the_first_x_layers\", en " +"cuyo caso el ventilador funcionará al máximo permitido de capa " +"\"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" -msgstr "" +msgstr "Velocidad de ventilador de interfaz de soporte" msgid "" -"This fan speed is enforced during all support interfaces, to be able to " -"weaken their bonding with a high fan speed.\n" +"This fan speed is enforced during all support interfaces, to be able to weaken their " +"bonding with a high fan speed.\n" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" +"La velocidad de ventilador se fuerza durante todas interfaces de soporte, será capaz de " +"debilitar sus uniones con una velocidad de ventilador más alta.Solo puede ser sobreescrita " +"deshabilitando disable_fan_first_layers." msgid "" -"Randomly jitter while printing the wall, so that the surface has a rough " -"look. This setting controls the fuzzy position" +"Randomly jitter while printing the wall, so that the surface has a rough look. This " +"setting controls the fuzzy position" msgstr "" -"Se puede imprimir la pared de forma aleatoria, de modo que la superficie " -"tenga un aspecto rugoso. Este ajuste controla la posición difusa" +"Se puede imprimir la pared de forma aleatoria, de modo que la superficie tenga un aspecto " +"rugoso. Este ajuste controla la posición difusa" msgid "None" msgstr "Ninguno" msgid "Contour" -msgstr "" +msgstr "Contorno" msgid "Contour and hole" -msgstr "" +msgstr "Contorno y agujero" msgid "All walls" msgstr "Todas las paredes" @@ -7552,81 +7596,74 @@ msgstr "Todas las paredes" msgid "Fuzzy skin thickness" msgstr "Distancia del punto de piel difusa" -msgid "" -"The width within which to jitter. It's adversed to be below outer wall line " -"width" +msgid "The width within which to jitter. It's adversed to be below outer wall line width" msgstr "" -"La anchura dentro de la cual se va a jitear. Se aconseja que esté por debajo " -"de la anchura de la línea de la pared exterior" +"La anchura dentro de la cual se va a jitear. Se aconseja que esté por debajo de la anchura " +"de la línea de la pared exterior" msgid "Fuzzy skin point distance" msgstr "Distancia al punto de superficie irregular" -msgid "" -"The average diatance between the random points introducded on each line " -"segment" +msgid "The average diatance between the random points introducded on each line segment" msgstr "" -"La diatancia media entre los puntos aleatorios introducidos en cada segmento " -"de línea" +"La diatancia media entre los puntos aleatorios introducidos en cada segmento de línea" msgid "Filter out tiny gaps" -msgstr "" +msgstr "Filtrar pequeños huecos" msgid "Layers and Perimeters" -msgstr "" +msgstr "Capas y Perímetros" msgid "" -"Filter out gaps smaller than the threshold specified. This setting won't " -"affact top/bottom layers" +"Filter out gaps smaller than the threshold specified. This setting won't affact top/bottom " +"layers" msgstr "" +"Filtrar espacions menores que el umbral especificado. Esta configuración no afectará en " +"las capas superior/inferior" msgid "" -"Speed of gap infill. Gap usually has irregular line width and should be " -"printed more slowly" +"Speed of gap infill. Gap usually has irregular line width and should be printed more slowly" msgstr "" -"Velocidad de relleno del hueco. El hueco suele tener una anchura de línea " -"irregular y debe imprimirse más lentamente" +"Velocidad de relleno del hueco. El hueco suele tener una anchura de línea irregular y debe " +"imprimirse más lentamente" msgid "Arc fitting" msgstr "Ajuste del arco" msgid "" -"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " -"tolerance is same with resolution" +"Enable this to get a G-code file which has G2 and G3 moves. And the fitting tolerance is " +"same with resolution" msgstr "" -"Habilite esto para obtener un archivo de código G que tiene movimientos G2 y " -"G3. Y la tolerancia de ajuste es la misma con la resolución" +"Habilite esto para obtener un archivo de código G que tiene movimientos G2 y G3. Y la " +"tolerancia de ajuste es la misma con la resolución" msgid "Add line number" msgstr "Añadir número de línea" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Active esta opción para añadir el número de línea (Nx) al principio de cada " -"línea de G-Code" +"Active esta opción para añadir el número de línea (Nx) al principio de cada línea de G-Code" msgid "Scan first layer" msgstr "Escanear la primera capa" -msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" +msgid "Enable this to enable the camera on printer to check the quality of first layer" msgstr "" -"Active esta opción para que la cámara de la impresora pueda comprobar la " -"calidad de la primera capa" +"Active esta opción para que la cámara de la impresora pueda comprobar la calidad de la " +"primera capa" msgid "Nozzle type" msgstr "Tipo de boquilla" msgid "" -"The metallic material of nozzle. This determines the abrasive resistance of " -"nozzle, and what kind of filament can be printed" +"The metallic material of nozzle. This determines the abrasive resistance of nozzle, and " +"what kind of filament can be printed" msgstr "" -"El material metálico de la boquilla. Esto determina la resistencia a la " -"abrasión de la boquilla, y qué tipo de filamento se puede imprimir" +"El material metálico de la boquilla. Esto determina la resistencia a la abrasión de la " +"boquilla, y qué tipo de filamento se puede imprimir" msgid "Undefine" -msgstr "" +msgstr "Indefinido" msgid "Hardened steel" msgstr "Acero endurecido" @@ -7638,49 +7675,60 @@ msgid "Brass" msgstr "Latón" msgid "Nozzle HRC" -msgstr "" +msgstr "HRC Boquilla" -msgid "" -"The nozzle's hardness. Zero means no checking for nozzle's hardness during " -"slicing." +msgid "The nozzle's hardness. Zero means no checking for nozzle's hardness during slicing." msgstr "" +"La dureza de la boquilla. Cero significa no comprobará la dureza de la boquilla durante el " +"laminado." msgid "HRC" msgstr "" msgid "Enable this option if machine has auxiliary part cooling fan" msgstr "" -"Habilite esta opción si la máquina tiene un ventilador auxiliar de " -"refrigeración de piezas" +"Habilite esta opción si la máquina tiene un ventilador auxiliar de refrigeración de piezas" msgid "" -"Start the fan this number of seconds earlier than its target start time (you " -"can use fractional seconds). It assumes infinite acceleration for this time " -"estimation, and will only take into account G1 and G0 moves (arc fitting is " -"unsupported).\n" -"It won't move fan comands from custom gcodes (they act as a sort of " -"'barrier').\n" -"It won't move fan comands into the start gcode if the 'only custom start " -"gcode' is activated.\n" +"Start the fan this number of seconds earlier than its target start time (you can use " +"fractional seconds). It assumes infinite acceleration for this time estimation, and will " +"only take into account G1 and G0 moves (arc fitting is unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of 'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start gcode' is " +"activated.\n" "Use 0 to deactivate." msgstr "" +"Inicia el ventilador este numero de segundos antes que el tiempo de inicio objetivo " +"(puedes usar segundos fraccionales). Esto asume aceleración para esta estimación de " +"tiempo, y esto solo se tendrá en cuenta los movimientos G1 y g0 (no soporta el montaje de " +"arco).\n" +"Esto no moverá comandos de ventilador desde gcodes personalizados (ellos actúan como un " +"tipo de 'barrera').\n" +"Usar 0 para desactivar." msgid "Only overhangs" -msgstr "" +msgstr "Solo voladizos" msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "" +msgstr "Solo se tomará dentro de la cuenta el retraso para enfriar los voladizos." msgid "Fan kick-start time" -msgstr "" +msgstr "Tiempo de arranque de ventilador" msgid "" -"Emit a max fan speed command for this amount of seconds before reducing to " -"target speed to kick-start the cooling fan.\n" -"This is useful for fans where a low PWM/power may be insufficient to get the " -"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Emit a max fan speed command for this amount of seconds before reducing to target speed to " +"kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the fan started " +"spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" +"Emite un comando de velocidad máxima del ventilador durante esta cantidad de segundos " +"antes de reducir a la velocidad objetivo para poner en marcha el ventilador de " +"refrigeración.\n" +"Esto es útil para ventiladores donde un PWM/potencia baja puede ser insuficiente para que " +"el ventilador comience a girar desde una parada, o para que el ventilador alcance la " +"velocidad más rápido.\n" +"Ajústelo a 0 para desactivarlo." msgid "G-code flavor" msgstr "Tipo de código G" @@ -7692,40 +7740,46 @@ msgid "Klipper" msgstr "" msgid "Label objects" -msgstr "" +msgstr "Objetos de etiqueta" msgid "" -"Enable this to add comments into the G-Code labeling print moves with what " -"object they belong to, which is useful for the Octoprint CancelObject " -"plugin. This settings is NOT compatible with Single Extruder Multi Material " -"setup and Wipe into Object / Wipe into Infill." +"Enable this to add comments into the G-Code labeling print moves with what object they " +"belong to, which is useful for the Octoprint CancelObject plugin. This settings is NOT " +"compatible with Single Extruder Multi Material setup and Wipe into Object / Wipe into " +"Infill." msgstr "" +"Habilite esta opción para añadir comentarios en el G-Code etiquetando los movimientos de " +"impresión con el objeto al que pertenecen, lo cual es útil para el plugin Octoprint " +"CancelObject. Esta configuración NO es compatible con la configuración de Extrusor Único " +"Multi Material y Limpiar en Objeto / Limpiar en Relleno." msgid "Exclude objects" -msgstr "" +msgstr "Excluir objetos" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" +msgstr "Activar esta opción para añadir el comando EXCLUDE OBJECT en el gcode" msgid "Verbose G-code" -msgstr "" +msgstr "Detallar G-code" msgid "" -"Enable this to get a commented G-code file, with each line explained by a " -"descriptive text. If you print from SD card, the additional weight of the " -"file could make your firmware slow down." +"Enable this to get a commented G-code file, with each line explained by a descriptive " +"text. If you print from SD card, the additional weight of the file could make your " +"firmware slow down." msgstr "" +"Activar esto para escoger un archivo de G-code comentado, con cada línea explicado por un " +"texto descriptivo. Si imprime desde la tarjeta SD, el peso adicional del archivo podría " +"hacer que tu firmware se ralentice." msgid "Infill combination" msgstr "Combinación de relleno" msgid "" -"Automatically Combine sparse infill of several layers to print together to " -"reduce time. Wall is still printed with original layer height." +"Automatically Combine sparse infill of several layers to print together to reduce time. " +"Wall is still printed with original layer height." msgstr "" -"Combine automáticamente el relleno disperso de varias capas para imprimirlas " -"juntas y reducir el tiempo. La pared se sigue imprimiendo con la altura " -"original de la capa." +"Combine automáticamente el relleno disperso de varias capas para imprimirlas juntas y " +"reducir el tiempo. La pared se sigue imprimiendo con la altura original de la capa." msgid "Filament to print internal sparse infill." msgstr "Filamento para imprimir el relleno interno disperso." @@ -7737,38 +7791,39 @@ msgid "Infill/Wall overlap" msgstr "Superposición de relleno/pared" msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill" +"Infill area is enlarged slightly to overlap with wall for better bonding. The percentage " +"value is relative to line width of sparse infill" msgstr "" -"El área de relleno se amplía ligeramente para que se solape con el muro y " -"así mejorar la adherencia. El valor porcentual es relativo a la anchura de " -"la línea del relleno disperso" +"El área de relleno se amplía ligeramente para que se solape con el pared y así mejorar la " +"adherencia. El valor porcentual es relativo a la anchura de la línea del relleno disperso" msgid "Speed of internal sparse infill" msgstr "Velocidad del relleno interno disperso" msgid "Interface shells" -msgstr "" +msgstr "Carcasas de interfaz" msgid "" -"Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Force the generation of solid shells between adjacent materials/volumes. Useful for multi-" +"extruder prints with translucent materials or manual soluble support material" msgstr "" +"Fuerza la generación de carcasas sólidas entre materiales/volúmenes adyacentes. Útil para " +"impresiones multiextrusoras con materiales translúcidos o material de soporte soluble " +"manualmente" msgid "Ironing Type" msgstr "Tipo de alisado" msgid "" -"Ironing is using small flow to print on same height of surface again to make " -"flat surface more smooth. This setting controls which layer being ironed" +"Ironing is using small flow to print on same height of surface again to make flat surface " +"more smooth. This setting controls which layer being ironed" msgstr "" -"El planchado es el uso de un pequeño flujo para imprimir en la misma altura " -"de la superficie de nuevo para hacer la superficie plana más suave. Este " -"ajuste controla la capa que se plancha" +"El alisado es el uso de un pequeño flujo para imprimir en la misma altura de la superficie " +"de nuevo para hacer la superficie plana más suave. Este ajuste controla la capa que se " +"alisa" msgid "No ironing" -msgstr "Sin planchado" +msgstr "Sin alisado" msgid "Top surfaces" msgstr "Superficies superiores" @@ -7780,49 +7835,48 @@ msgid "All solid layer" msgstr "Toda la capa sólida" msgid "Ironing flow" -msgstr "Flujo de planchado" +msgstr "Flujo de alisado" msgid "" -"The amount of material to extrude during ironing. Relative to flow of normal " -"layer height. Too high value results in overextrusion on the surface" +"The amount of material to extrude during ironing. Relative to flow of normal layer height. " +"Too high value results in overextrusion on the surface" msgstr "" -"La cantidad de material a extruir durante el planchado. Relativo al flujo de " -"la altura de la capa normal. Un valor demasiado alto provoca una " -"sobreextrusión en la superficie" +"La cantidad de material a extruir durante el alisado. Relativo al flujo de la altura de la " +"capa normal. Un valor demasiado alto provoca una sobreextrusión en la superficie" msgid "Ironing line spacing" -msgstr "Espacio entre líneas de planchado" +msgstr "Espacio entre líneas de alisado" msgid "The distance between the lines of ironing" -msgstr "La distancia entre las líneas de planchado" +msgstr "La distancia entre las líneas de alisado" msgid "Ironing speed" -msgstr "Velocidad de planchado" +msgstr "Velocidad de alisado" msgid "Print speed of ironing lines" -msgstr "Velocidad de impresión de las líneas de planchado" +msgstr "Velocidad de impresión de las líneas de alisado" msgid "This gcode part is inserted at every layer change after lift z" -msgstr "" -"Esta parte de gcode se inserta en cada cambio de capa después de levantar z" +msgstr "Esta parte de gcode se inserta en cada cambio de capa después de levantar z" msgid "Supports silent mode" msgstr "Admite el modo silencioso" msgid "" -"Whether the machine supports silent mode in which machine use lower " -"acceleration to print" +"Whether the machine supports silent mode in which machine use lower acceleration to print" msgstr "" -"Si la máquina admite el modo silencioso en el que la máquina utiliza una " -"menor aceleración para imprimir" +"Si la máquina admite el modo silencioso en el que la máquina utiliza una menor aceleración " +"para imprimir" msgid "" -"This G-code will be used as a code for the pause print. User can insert " -"pause G-code in gcode viewer" +"This G-code will be used as a code for the pause print. User can insert pause G-code in " +"gcode viewer" msgstr "" +"Este G-code se usará como cídugo para la pausa de impresión. El usuario puede insertar una " +"pausa en el visor de gcode" msgid "This G-code will be used as a custom code" -msgstr "" +msgstr "Este G-code se usará para el código personalizado" msgid "Maximum speed X" msgstr "Velocidad máxima X" @@ -7933,51 +7987,49 @@ msgid "Fan speed" msgstr "Velocidad del ventilador" msgid "" -"Part cooling fan speed may be increased when auto cooling is enabled. This " -"is the maximum speed limitation of part cooling fan" +"Part cooling fan speed may be increased when auto cooling is enabled. This is the maximum " +"speed limitation of part cooling fan" msgstr "" -"La velocidad del ventilador de enfriamiento de la pieza puede aumentarse " -"cuando la refrigeración automática está activada. Esta es la limitación de " -"velocidad máxima del ventilador de refrigeración parcial" +"La velocidad del ventilador de enfriamiento de la pieza puede aumentarse cuando la " +"refrigeración automática está activada. Esta es la limitación de velocidad máxima del " +"ventilador de refrigeración parcial" msgid "Max" msgstr "Max" msgid "" -"The largest printable layer height for extruder. Used tp limits the maximum " -"layer hight when enable adaptive layer height" +"The largest printable layer height for extruder. Used tp limits the maximum layer hight " +"when enable adaptive layer height" msgstr "" -"La mayor altura de capa imprimible para el extrusor. Se utiliza para limitar " -"la altura máxima de la capa cuando se habilita la altura de capa adaptativa." +"La mayor altura de capa imprimible para el extrusor. Se utiliza para limitar la altura " +"máxima de la capa cuando se habilita la altura de capa adaptativa" msgid "Minimum speed for part cooling fan" msgstr "Velocidad mínima del ventilador de refrigeración de la pieza" msgid "" -"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " -"during printing except the first several layers which is defined by no " -"cooling layers" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed during printing " +"except the first several layers which is defined by no cooling layers" msgstr "" -"Velocidad del ventilador de la parte auxiliar. El ventilador auxiliar " -"funcionará a esta velocidad durante la impresión, excepto en las primeras " -"capas, que se define por la ausencia de capas de refrigeración" +"Velocidad del ventilador de la parte auxiliar. El ventilador auxiliar funcionará a esta " +"velocidad durante la impresión, excepto en las primeras capas, que se define por la " +"ausencia de capas de refrigeración" msgid "Min" msgstr "Min" msgid "" -"The lowest printable layer height for extruder. Used tp limits the minimum " -"layer hight when enable adaptive layer height" +"The lowest printable layer height for extruder. Used tp limits the minimum layer hight " +"when enable adaptive layer height" msgstr "" -"La menor altura de capa imprimible para el extrusor. Se utiliza para limitar " -"la altura mínima de la capa cuando se activa la altura de capa adaptable." +"La menor altura de capa imprimible para el extrusor. Se utiliza para limitar la altura " +"mínima de la capa cuando se activa la altura de capa adaptable" msgid "Min print speed" msgstr "Velocidad de impresión mínima" msgid "The minimum printing speed when slow down for cooling" -msgstr "" -"La velocidad mínima de impresión cuando se ralentiza para el enfriamiento" +msgstr "La velocidad mínima de impresión cuando se ralentiza para el enfriamiento" msgid "Nozzle diameter" msgstr "Diámetro de la boquilla" @@ -7986,12 +8038,14 @@ msgid "Diameter of nozzle" msgstr "Diámetro de la boquilla" msgid "Host Type" -msgstr "" +msgstr "Tipo de host" msgid "" -"Slic3r can upload G-code files to a printer host. This field must contain " -"the kind of the host." +"Slic3r can upload G-code files to a printer host. This field must contain the kind of the " +"host." msgstr "" +"Orca Slicer puede cargar archivos G-code a un host de impresora. Este campo puede contener " +"el tipo de host." msgid "Nozzle volume" msgstr "Tamaño de la boquilla" @@ -8000,19 +8054,23 @@ msgid "Volume of nozzle between the cutter and the end of nozzle" msgstr "Espacio de la boquilla entre el cortador y el extremo de la boquilla" msgid "Start end points" -msgstr "" +msgstr "Puntos de inicio fin" msgid "The start and end points which is from cutter area to garbage can." -msgstr "" +msgstr "Los puntos de inicio y fin, desde la zona de corte al cubo de basura." msgid "Reduce infill retraction" msgstr "Reducir la retracción del relleno" msgid "" -"Don't retract when the travel is in infill area absolutely. That means the " -"oozing can't been seen. This can reduce times of retraction for complex " -"model and save printing time, but make slicing and G-code generating slower" +"Don't retract when the travel is in infill area absolutely. That means the oozing can't " +"been seen. This can reduce times of retraction for complex model and save printing time, " +"but make slicing and G-code generating slower" msgstr "" +"No retraiga cuando el viaje está totalmente en el área de relleno. Eso significa que el " +"rezume no se puede ver. Esto puede reducir los tiempos de retracción para el modelo " +"complejo y ahorrar tiempo de impresión, pero hacer que el corte y la generación de código " +"G más lento" msgid "Enable" msgstr "Habilitar" @@ -8022,20 +8080,19 @@ msgstr "Formato de los archivos" msgid "User can self-define the project file name when export" msgstr "" -"El usuario puede definir por sí mismo el nombre del archivo del proyecto al " -"exportarlo" +"El usuario puede definir por sí mismo el nombre del archivo del proyecto al exportarlo" msgid "Detect overhang wall" msgstr "Detectar el voladizo de la pared" #, c-format, boost-format msgid "" -"Detect the overhang percentage relative to line width and use different " -"speed to print. For 100%% overhang, bridge speed is used." +"Detect the overhang percentage relative to line width and use different speed to print. " +"For 100%% overhang, bridge speed is used." msgstr "" -"Detecta el porcentaje de voladizo en relación con el ancho de la línea y " -"utiliza diferentes velocidades para imprimir. Para el 100%% de voladizo, se " -"utiliza la velocidad de puente." +"Detecta el porcentaje de voladizo en relación con el ancho de la línea y utiliza " +"diferentes velocidades para imprimir. Para el 100%% de voladizo, se utiliza la velocidad " +"de puente." msgid "Line width of inner wall" msgstr "Ancho de línea de la pared interior" @@ -8047,78 +8104,74 @@ msgid "Number of walls of every layer" msgstr "Número de paredes de cada capa" msgid "" -"If you want to process the output G-code through custom scripts, just list " -"their absolute paths here. Separate multiple scripts with a semicolon. " -"Scripts will be passed the absolute path to the G-code file as the first " -"argument, and they can access the Slic3r config settings by reading " -"environment variables." +"If you want to process the output G-code through custom scripts, just list their absolute " +"paths here. Separate multiple scripts with a semicolon. Scripts will be passed the " +"absolute path to the G-code file as the first argument, and they can access the Slic3r " +"config settings by reading environment variables." msgstr "" +"Si desea procesar el G-code de salida a través de scripts personalizados, simplemente " +"enumere sus rutas absolutas aquí. Separe varios scripts con punto y coma. A los scripts se " +"les pasará la ruta absoluta al archivo G-code como primer argumento, y pueden acceder a " +"los ajustes de configuración de OrcaSlicer leyendo variables de entorno." msgid "Raft contact Z distance" -msgstr "Distancia Z de contacto de la balsa" +msgstr "Distancia Z de contacto de la base de impresión" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Espacio Z entre el objeto y la balsa. Se ignora para la interfaz soluble" +msgstr "Espacio Z entre el objeto y la base de impresión. Se ignora para la interfaz soluble" msgid "Raft expansion" -msgstr "Expansión de la balsa" +msgstr "Expansión de la base de impresión" msgid "Expand all raft layers in XY plane" -msgstr "Expandir todas las capas de la balsa en el plano XY" +msgstr "Expandir todas las capas de la base de impresión en el plano XY" msgid "Initial layer density" msgstr "Densidad de la capa inicial" msgid "Density of the first raft or support layer" -msgstr "Densidad de la primera balsa o capa de soporte" +msgstr "Densidad de la primera base de impresión o capa de soporte" msgid "Initial layer expansion" msgstr "Expansión de la capa inicial" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" -"Expandir la primera balsa o capa de soporte para mejorar la adherencia de la " -"placa de la cama" +"Expandir la primera base de impresión o capa de soporte para mejorar la adherencia de la " +"cama de la cama" msgid "Raft layers" -msgstr "Capas de balsa" +msgstr "Capas de base de impresión" msgid "" -"Object will be raised by this number of support layers. Use this function to " -"avoid wrapping when print ABS" +"Object will be raised by this number of support layers. Use this function to avoid " +"wrapping when print ABS" msgstr "" -"El objeto será elevado por este número de capas de soporte. Utilice esta " -"función para evitar la envoltura al imprimir ABS" +"El objeto será elevado por este número de capas de soporte. Utilice esta función para " +"evitar la envoltura al imprimir ABS" msgid "" -"G-code path is genereated after simplifing the contour of model to avoid too " -"much points and gcode lines in gcode file. Smaller value means higher " -"resolution and more time to slice" +"G-code path is genereated after simplifing the contour of model to avoid too much points " +"and gcode lines in gcode file. Smaller value means higher resolution and more time to slice" msgstr "" -"La ruta del código G se genera después de simplificar el contorno del modelo " -"para evitar demasiados puntos y líneas de código G en el archivo de código " -"G. Un valor más pequeño significa una mayor resolución y más tiempo para " -"cortar." +"La ruta del código G se genera después de simplificar el contorno del modelo para evitar " +"demasiados puntos y líneas de código G en el archivo de código G. Un valor más pequeño " +"significa una mayor resolución y más tiempo para cortar" msgid "Travel distance threshold" msgstr "Umbral de distancia de desplazamiento" -msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +msgid "Only trigger retraction when the travel distance is longer than this threshold" msgstr "" -"Sólo se activa la retracción cuando la distancia de recorrido es superior a " -"este umbral" +"Sólo se activa la retracción cuando la distancia de recorrido es superior a este umbral" msgid "Retract amount before wipe" msgstr "Retracta cantidad antes de limpiar" -msgid "" -"The length of fast retraction before wipe, relative to retraction length" +msgid "The length of fast retraction before wipe, relative to retraction length" msgstr "" -"La longitud de la retracción rápida antes de la limpieza, en relación con la " -"longitud de la retracción" +"La longitud de la retracción rápida antes de la limpieza, en relación con la longitud de " +"la retracción" msgid "Retract when change layer" msgstr "Retirada al cambiar de capa" @@ -8133,47 +8186,50 @@ msgid "Retraction Length" msgstr "Longitud de retracción" msgid "" -"Some amount of material in extruder is pulled back to avoid ooze during long " -"travel. Set zero to disable retraction" +"Some amount of material in extruder is pulled back to avoid ooze during long travel. Set " +"zero to disable retraction" msgstr "" -"Una cierta cantidad de material en el extrusor se extrae para evitar el " -"rezumado durante el recorrido largo. Ajustar el cero para desactivar la " -"retracción" +"Una cierta cantidad de material en el extrusor se extrae para evitar el rezumado durante " +"el recorrido largo. Ajustar el cero para desactivar la retracción" msgid "Z hop when retract" -msgstr "Salto en Z al replegarse" +msgstr "Salto en Z al retraerse" msgid "" -"Whenever the retraction is done, the nozzle is lifted a little to create " -"clearance between nozzle and the print. It prevents nozzle from hitting the " -"print when travel move. Using spiral line to lift z can prevent stringing" +"Whenever the retraction is done, the nozzle is lifted a little to create clearance between " +"nozzle and the print. It prevents nozzle from hitting the print when travel move. Using " +"spiral line to lift z can prevent stringing" msgstr "" -"Cada vez que se realiza la retracción, la boquilla se levanta un poco para " -"crear un espacio libre entre la boquilla y la impresión. Esto evita que la " -"boquilla golpee la impresión cuando se desplaza. El uso de la línea espiral " -"para levantar z puede evitar el encordado" +"Cada vez que se realiza la retracción, la boquilla se levanta un poco para crear un " +"espacio libre entre la boquilla y la impresión. Esto evita que la boquilla golpee la " +"impresión cuando se desplaza. El uso de la línea espiral para levantar z puede evitar el " +"encordado" msgid "Z hop type" -msgstr "" +msgstr "Tipo de salto Z" msgid "Slope" -msgstr "" +msgstr "Pendiente" msgid "Spiral" -msgstr "" +msgstr "Espiral" msgid "Extra length on restart" -msgstr "" +msgstr "Longitud extra de reinicio" msgid "" -"When the retraction is compensated after the travel move, the extruder will " -"push this additional amount of filament. This setting is rarely needed." +"When the retraction is compensated after the travel move, the extruder will push this " +"additional amount of filament. This setting is rarely needed." msgstr "" +"Cuando la retracción se compensa después de un movimiento de viaje, el extrusor expulsará " +"esa cantidad de filamento adicional. Este ajuste raramente se necesitará." msgid "" -"When the retraction is compensated after changing tool, the extruder will " -"push this additional amount of filament." +"When the retraction is compensated after changing tool, the extruder will push this " +"additional amount of filament." msgstr "" +"Cuando se compensa la retracción después de cambiar de herramienta, el extrusor empujará " +"esta cantidad adicional de filamento." msgid "Retraction Speed" msgstr "Velocidad de retracción" @@ -8184,23 +8240,23 @@ msgstr "Velocidad de las retracciones" msgid "Deretraction Speed" msgstr "Velocidad de deretracción" -msgid "" -"Speed for reloading filament into extruder. Zero means same speed with " -"retraction" +msgid "Speed for reloading filament into extruder. Zero means same speed with retraction" msgstr "" -"Velocidad de recarga del filamento en el extrusor. Cero significa la misma " -"velocidad con la retracción" +"Velocidad de recarga del filamento en el extrusor. Cero significa la misma velocidad con " +"la retracción" msgid "Use firmware retraction" -msgstr "" +msgstr "Usar retracción de firmware" msgid "" -"This experimental setting uses G10 and G11 commands to have the firmware " -"handle the retraction. This is only supported in recent Marlin." +"This experimental setting uses G10 and G11 commands to have the firmware handle the " +"retraction. This is only supported in recent Marlin." msgstr "" +"Esta configuración experimental utiliza los comandos G10 y G11 para que el firmware se " +"encargue de la retracción. Sólo se admite en variables de entorno recientes de Marlin.ding." msgid "Show auto-calibration marks" -msgstr "" +msgstr "Muestra marcas de autocalibración" msgid "Seam position" msgstr "Posición de la costura" @@ -8218,56 +8274,69 @@ msgid "Back" msgstr "Volver" msgid "Random" -msgstr "" +msgstr "Aleatorio" msgid "Seam gap" -msgstr "" +msgstr "Separación entre costuras" msgid "" -"In order to reduce the visibility of the seam in a closed loop extrusion, " -"the loop is interrupted and shortened by a specified amount.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current extruder diameter. The default value for this parameter is 15%." +"In order to reduce the visibility of the seam in a closed loop extrusion, the loop is " +"interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the current extruder " +"diameter. The default value for this parameter is 15%." msgstr "" +"Para reducir la visibilidad de la costura en una extrusión de bucle cerrado, el bucle se " +"interrumpe y se acorta en una cantidad especificada.\n" +"Esta cantidad puede especificarse en milímetros o como porcentaje del diámetro actual del " +"extrusor. El valor por defecto de este parámetro es 15%." msgid "Role base wipe speed" -msgstr "" +msgstr "Velocidad de limpieza de la base de roles" msgid "" -"The wipe speed is determined by the speed of the current extrusion role.e.g. " -"if a wipe action is executed immediately following an outer wall extrusion, " -"the speed of the outer wall extrusion will be utilized for the wipe action." +"The wipe speed is determined by the speed of the current extrusion role.e.g. if a wipe " +"action is executed immediately following an outer wall extrusion, the speed of the outer " +"wall extrusion will be utilized for the wipe action." msgstr "" +"La velocidad de limpieza viene determinada por la velocidad de la función de extrusión " +"actual. Por ejemplo, si se ejecuta una acción de limpieza inmediatamente después de una " +"extrusión de la pared exterior, se utilizará la velocidad de la extrusión de la pared " +"exterior para la acción de limpieza." msgid "Wipe on loops" -msgstr "" +msgstr "Barrido en bucles" msgid "" -"To minimize the visibility of the seam in a closed loop extrusion, a small " -"inward movement is executed before the extruder leaves the loop." +"To minimize the visibility of the seam in a closed loop extrusion, a small inward movement " +"is executed before the extruder leaves the loop." msgstr "" +"Para minimizar la visibilidad de la costura en una extrusión de bucle cerrado, se ejecuta " +"un pequeño movimiento hacia dentro antes de que el extrusor abandone el bucle." msgid "Wipe speed" -msgstr "" +msgstr "Velocidad de limpieza" msgid "" -"The wipe speed is determined by the speed setting specified in this " -"configuration.If the value is expressed as a percentage (e.g. 80%), it will " -"be calculated based on the travel speed setting above.The default value for " -"this parameter is 80%" +"The wipe speed is determined by the speed setting specified in this configuration.If the " +"value is expressed as a percentage (e.g. 80%), it will be calculated based on the travel " +"speed setting above.The default value for this parameter is 80%" msgstr "" +"La velocidad de barrido viene determinada por el ajuste de velocidad especificado en esta " +"configuración. Si el valor se expresa en porcentaje (por ejemplo, 80%), se calculará en " +"función del ajuste de velocidad de desplazamiento anterior. El valor por defecto de este " +"parámetro es 80%" msgid "Skirt distance" msgstr "Distancia de la falda" msgid "Distance from skirt to brim or object" -msgstr "Distancia de la falda al borde o al objeto" +msgstr "Distancia de la falda al borde de adherencia o al objeto" msgid "Skirt height" -msgstr "" +msgstr "Altura de falda" msgid "How many layers of skirt. Usually only one layer" -msgstr "" +msgstr "C capas de falda. Normalmente sólo una capa" msgid "Skirt loops" msgstr "Contorno de la falda" @@ -8276,22 +8345,21 @@ msgid "Number of loops for the skirt. Zero means disabling skirt" msgstr "Número de bucles de la falda. Cero significa desactivar el faldón" msgid "" -"The printing speed in exported gcode will be slowed down, when the estimated " -"layer time is shorter than this value, to get better cooling for these layers" +"The printing speed in exported gcode will be slowed down, when the estimated layer time is " +"shorter than this value, to get better cooling for these layers" msgstr "" -"La velocidad de impresión en el gcode exportado se ralentizará, cuando el " -"tiempo estimado de la capa sea inferior a este valor, para conseguir una " -"mejor refrigeración de estas capas" +"La velocidad de impresión en el gcode exportado se ralentizará, cuando el tiempo estimado " +"de la capa sea inferior a este valor, para conseguir una mejor refrigeración de estas capas" msgid "Minimum sparse infill threshold" msgstr "Umbral mínimo de relleno disperso" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " -"internal solid infill" +"Sparse infill area which is smaller than threshold value is replaced by internal solid " +"infill" msgstr "" -"El área de relleno disperso que es menor que el valor del umbral se " -"sustituye por un relleno sólido interno" +"El área de relleno disperso que es menor que el valor del umbral se sustituye por un " +"relleno sólido interno" msgid "mm²" msgstr "mm²" @@ -8300,34 +8368,37 @@ msgid "Line width of internal solid infill" msgstr "Ancho de línea del relleno sólido interno" msgid "Speed of internal solid infill, not the top and bottom surface" -msgstr "" -"Velocidad del relleno sólido interno, no la superficie superior e inferior" +msgstr "Velocidad del relleno sólido interno, no la superficie superior e inferior" msgid "Spiral vase" -msgstr "" +msgstr "Vaso en espiral" msgid "" -"Spiralize smooths out the z moves of the outer contour. And turns a solid " -"model into a single walled print with solid bottom layers. The final " -"generated model has no seam" +"Spiralize smooths out the z moves of the outer contour. And turns a solid model into a " +"single walled print with solid bottom layers. The final generated model has no seam" msgstr "" -"Spiralize suaviza los movimientos z del contorno exterior. Y convierte un " -"modelo sólido en una impresión de una sola pared con capas inferiores " -"sólidas. El modelo final generado no tiene costura" +"Spiralize suaviza los movimientos z del contorno exterior. Y convierte un modelo sólido en " +"una impresión de una sola pared con capas inferiores sólidas. El modelo final generado no " +"tiene costura" msgid "" -"If smooth or traditional mode is selected, a timelapse video will be " -"generated for each print. After each layer is printed, a snapshot is taken " -"with the chamber camera. All of these snapshots are composed into a " -"timelapse video when printing completes. If smooth mode is selected, the " -"toolhead will move to the excess chute after each layer is printed and then " -"take a snapshot. Since the melt filament may leak from the nozzle during the " -"process of taking a snapshot, prime tower is required for smooth mode to " -"wipe nozzle." +"If smooth or traditional mode is selected, a timelapse video will be generated for each " +"print. After each layer is printed, a snapshot is taken with the chamber camera. All of " +"these snapshots are composed into a timelapse video when printing completes. If smooth " +"mode is selected, the toolhead will move to the excess chute after each layer is printed " +"and then take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to wipe nozzle." msgstr "" +"Sí se selecciona el modo suave o tradicional, se generará un vídeo time-lapse para cada " +"impresión. Después de imprimir cada capa, se toma una instantánea con la cámara. Todas " +"estas instantáneas se componen en un vídeo time-lapse cuando finaliza la impresión. Si se " +"selecciona el modo suave, el cabezal de la herramienta se moverá a la rampa de exceso " +"después de cada capa se imprime y luego tomar una instantánea. Dado que el filamento " +"fundido puede gotear de la boquilla durante el proceso de tomar una instantánea, la torre " +"de purga es necesaria para el modo suave de limpiar la boquilla." msgid "Traditional" -msgstr "" +msgstr "Tradicional" msgid "Temperature variation" msgstr "Variación de temperatura" @@ -8342,30 +8413,35 @@ msgid "Start G-code when start the printing of this filament" msgstr "Inicie el código G al comenzar la impresión de este filamento" msgid "Slice gap closing radius" -msgstr "" +msgstr "Radio de cierre de laminado" msgid "" -"Cracks smaller than 2x gap closing radius are being filled during the " -"triangle mesh slicing. The gap closing operation may reduce the final print " -"resolution, therefore it is advisable to keep the value reasonably low." +"Cracks smaller than 2x gap closing radius are being filled during the triangle mesh " +"slicing. The gap closing operation may reduce the final print resolution, therefore it is " +"advisable to keep the value reasonably low." msgstr "" +"Las grietas más pequeñas que el radio de cierre 2x se rellenan durante el corte de la " +"malla triangular. La operación de cierre de huecos puede reducir la resolución de " +"impresión final, por lo que es aconsejable mantener el valor razonablemente bajo." msgid "Slicing Mode" -msgstr "" +msgstr "Modo de laminado" msgid "" -"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " -"close all holes in the model." +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to close all holes in " +"the model." msgstr "" +"Utilice \"Par-impar\" para los modelos de avión de 3DLabPrint. Utilice \"Cerrar agujeros\" " +"para cerrar todos los agujeros del modelo." msgid "Regular" msgstr "" msgid "Even-odd" -msgstr "" +msgstr "Par-impar" msgid "Close holes" -msgstr "" +msgstr "Cerrar agujeros" msgid "Enable support" msgstr "Habilitar el soporte" @@ -8374,10 +8450,11 @@ msgid "Enable support generation." msgstr "Habilitar la generación de soporte." msgid "" -"normal(auto) and tree(auto) is used to generate support automatically. If " -"normal(manual) or tree(manual) is selected, only support enforcers are " -"generated" +"normal(auto) and tree(auto) is used to generate support automatically. If normal(manual) " +"or tree(manual) is selected, only support enforcers are generated" msgstr "" +"normal(auto) y tree(auto) se utiliza para generar soporte automáticamente. Si se " +"selecciona normal(manual) o árbol(manual), sólo se generan los refuerzos de apoyo" msgid "normal(auto)" msgstr "normal(auto)" @@ -8389,7 +8466,7 @@ msgid "normal(manual)" msgstr "" msgid "tree(manual)" -msgstr "" +msgstr "árbol(manual)" msgid "Support/object xy distance" msgstr "Distancia soporte/objeto xy" @@ -8401,23 +8478,20 @@ msgid "Pattern angle" msgstr "Ángulo del patrón" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Utilice este ajuste para girar el patrón de soporte en el plano horizontal." +msgstr "Utilice este ajuste para girar el patrón de soporte en el plano horizontal." msgid "On build plate only" -msgstr "Sólo en la placa de impresión" +msgstr "Sólo en la cama de impresión" msgid "Don't create support on model surface, only on build plate" -msgstr "" -"No crear soporte en la superficie del modelo, sólo en la placa de impresión" +msgstr "No crear soporte en la superficie del modelo, sólo en la cama de impresión" msgid "Support critical regions only" -msgstr "" +msgstr "Añadir soportes en regiones críticas solo" -msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." +msgid "Only create support for critical regions including sharp tail, cantilever, etc." msgstr "" +"Cree soportes sólo para las regiones críticas, como la cola afilada, el voladizo, etc." msgid "Top Z distance" msgstr "Distancia Z superior" @@ -8426,18 +8500,20 @@ msgid "The z gap between the top support interface and object" msgstr "La distancia z entre la interfaz de soporte superior y el objeto" msgid "Bottom Z distance" -msgstr "" +msgstr "Distancia Z inferior" msgid "The z gap between the bottom support interface and object" -msgstr "" +msgstr "La distancia z entre la interfaz de apoyo inferior y el objeto" msgid "Support/raft base" -msgstr "" +msgstr "Soporte/plataforma base" msgid "" -"Filament to print support base and raft. \"Default\" means no specific " -"filament for support and current filament is used" +"Filament to print support base and raft. \"Default\" means no specific filament for " +"support and current filament is used" msgstr "" +"Filamento para imprimir la base de soporte y la base de impresión. \"Por defecto\" " +"significa que no hay filamento específico para el soporte y se utiliza el filamento actual" msgid "Line width of support" msgstr "Ancho de línea del soporte" @@ -8445,19 +8521,19 @@ msgstr "Ancho de línea del soporte" msgid "Interface use loop pattern" msgstr "Uso de la interfaz en forma de bucle" -msgid "" -"Cover the top contact layer of the supports with loops. Disabled by default." +msgid "Cover the top contact layer of the supports with loops. Disabled by default." msgstr "" -"Cubrir la capa de contacto superior de los soportes con bucles. Desactivado " -"por defecto." +"Cubrir la capa de contacto superior de los soportes con bucles. Desactivado por defecto." msgid "Support/raft interface" -msgstr "" +msgstr "Interfaz de soporte/base de impresión" msgid "" -"Filament to print support interface. \"Default\" means no specific filament " -"for support interface and current filament is used" +"Filament to print support interface. \"Default\" means no specific filament for support " +"interface and current filament is used" msgstr "" +"Filamento para imprimir interfaz de soporte. \"Por defecto\" significa que no hay " +"filamento específico para la interfaz de soporte y se utiliza el filamento actual" msgid "Top interface layers" msgstr "Capas de la interfaz superior" @@ -8472,16 +8548,13 @@ msgid "Top interface spacing" msgstr "Distancia de la interfaz superior" msgid "Spacing of interface lines. Zero means solid interface" -msgstr "" -"Espacio de las líneas de interfaz. Cero significa que la interfaz es sólida" +msgstr "Espacio de las líneas de interfaz. Cero significa que la interfaz es sólida" msgid "Bottom interface spacing" msgstr "Distancia de la interfaz inferior" msgid "Spacing of bottom interface lines. Zero means solid interface" -msgstr "" -"Espacio entre las líneas de la interfaz inferior. Cero significa interfaz " -"sólida" +msgstr "Espacio entre las líneas de la interfaz inferior. Cero significa interfaz sólida" msgid "Speed of support interface" msgstr "Velocidad de la interfaz de soporte" @@ -8496,22 +8569,21 @@ msgid "Rectilinear grid" msgstr "Rejilla rectilínea" msgid "Hollow" -msgstr "" +msgstr "Hueco" msgid "Interface pattern" msgstr "Patrón de interfaz" msgid "" -"Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"Line pattern of support interface. Default pattern for non-soluble support interface is " +"Rectilinear, while default pattern for soluble support interface is Concentric" msgstr "" -"Patrón de líneas de la interfaz de soporte. El patrón por defecto para la " -"interfaz de soporte no soluble es Rectilíneo, mientras que el patrón por " -"defecto para la interfaz de soporte soluble es Concéntrico" +"Patrón de líneas de la interfaz de soporte. El patrón por defecto para la interfaz de " +"soporte no soluble es Rectilíneo, mientras que el patrón por defecto para la interfaz de " +"soporte soluble es Concéntrico" msgid "Rectilinear Interlaced" -msgstr "" +msgstr "Entrelazado rectilíneo" msgid "Base pattern spacing" msgstr "Espaciamiento del patrón base" @@ -8520,96 +8592,103 @@ msgid "Spacing between support lines" msgstr "Espacio entre las líneas de apoyo" msgid "Normal Support expansion" -msgstr "" +msgstr "Expasión de Soporte Normal" msgid "Expand (+) or shrink (-) the horizontal span of normal support" -msgstr "" +msgstr "Ampliar (+) o reducir (-) la expansión horizontal del soporte normal" msgid "Speed of support" msgstr "Velocidad de la asistencia" msgid "" -"Style and shape of the support. For normal support, projecting the supports " -"into a regular grid will create more stable supports (default), while snug " -"support towers will save material and reduce object scarring.\n" -"For tree support, slim style will merge branches more aggressively and save " -"a lot of material (default), while hybrid style will create similar " -"structure to normal support under large flat overhangs." +"Style and shape of the support. For normal support, projecting the supports into a regular " +"grid will create more stable supports (default), while snug support towers will save " +"material and reduce object scarring.\n" +"For tree support, slim style will merge branches more aggressively and save a lot of " +"material (default), while hybrid style will create similar structure to normal support " +"under large flat overhangs." msgstr "" +"Estilo y forma del soporte. Para el soporte normal, proyectar los soportes en una " +"cuadrícula regular creará soportes más estables (por defecto), mientras que las torres de " +"soporte ajustadas ahorrarán material y reducirán las cicatrices del objeto.\n" +"Para el soporte arbóreo, el estilo esbelto fusionará las ramas de forma más agresiva y " +"ahorrará mucho material (por defecto), mientras que el estilo híbrido creará una " +"estructura similar a la del soporte normal bajo grandes voladizos planos." msgid "Snug" msgstr "Ajustado" msgid "Tree Slim" -msgstr "" +msgstr "Árbol Delgado" msgid "Tree Strong" -msgstr "" +msgstr "Árbol Fuerte" msgid "Tree Hybrid" -msgstr "" +msgstr "Árbol Híbrido" msgid "Independent support layer height" msgstr "Altura de la capa de soporte independiente" msgid "" -"Support layer uses layer height independent with object layer. This is to " -"support customizing z-gap and save print time.This option will be invalid " -"when the prime tower is enabled." +"Support layer uses layer height independent with object layer. This is to support " +"customizing z-gap and save print time.This option will be invalid when the prime tower is " +"enabled." msgstr "" +"La capa de soporte utiliza una altura de capa independiente de la capa del objeto. Esta " +"opción no será válida si la torre de purga está activada." msgid "Threshold angle" msgstr "Ángulo de umbral" -msgid "" -"Support will be generated for overhangs whose slope angle is below the " -"threshold." +msgid "Support will be generated for overhangs whose slope angle is below the threshold." msgstr "" -"Se generará un soporte para los voladizos cuyo ángulo de inclinación sea " -"inferior al umbral." +"Se generará un soporte para los voladizos cuyo ángulo de inclinación sea inferior al " +"umbral." msgid "Tree support branch angle" msgstr "Ángulo de la rama de soporte del árbol" msgid "" -"This setting determines the maximum overhang angle that t he branches of " -"tree support allowed to make.If the angle is increased, the branches can be " -"printed more horizontally, allowing them to reach farther." +"This setting determines the maximum overhang angle that t he branches of tree support " +"allowed to make.If the angle is increased, the branches can be printed more horizontally, " +"allowing them to reach farther." msgstr "" -"Este ajuste determina el ángulo máximo de voladizo que pueden hacer las " -"ramas del soporte del árbol. Si se aumenta el ángulo, las ramas pueden " -"imprimirse más horizontalmente, permitiendo que lleguen más lejos." +"Este ajuste determina el ángulo máximo de voladizo que pueden hacer las ramas del soporte " +"del árbol. Si se aumenta el ángulo, las ramas pueden imprimirse más horizontalmente, " +"permitiendo que lleguen más lejos." msgid "Tree support branch distance" msgstr "Distancia de la rama de soporte del árbol" -msgid "" -"This setting determines the distance between neighboring tree support nodes." -msgstr "" -"Este ajuste determina la distancia entre los nodos de soporte del árbol " -"vecinos." +msgid "This setting determines the distance between neighboring tree support nodes." +msgstr "Este ajuste determina la distancia entre los nodos de soporte del árbol vecinos." msgid "Adaptive layer height" msgstr "Altura de capa adaptable" msgid "" -"Enabling this option means the height of tree support layer except the " -"first will be automatically calculated " +"Enabling this option means the height of tree support layer except the first will be " +"automatically calculated " msgstr "" +"Si se activa esta opción, se calculará automáticamente la altura de todas las capas de " +"soporte de los árboles excepto la primera. " msgid "Auto brim width" -msgstr "" +msgstr "Ancho de borde de adherencia automático" msgid "" -"Enabling this option means the width of the brim for tree support will be " -"automatically calculated" +"Enabling this option means the width of the brim for tree support will be automatically " +"calculated" msgstr "" +"Si activa esta opción, se calculará automáticamente la anchura del borde de adherencia " +"para el soporte del árbol" msgid "Tree support brim width" -msgstr "" +msgstr "Anchura del borde de adherencia" msgid "Distance from tree branch to the outermost brim line" -msgstr "" +msgstr "Distancia desde la rama del árbol hasta la línea más externa del borde de adherencia" msgid "Tree support branch diameter" msgstr "Diámetro de la rama de soporte del árbol" @@ -8621,21 +8700,18 @@ msgid "Tree support wall loops" msgstr "Lazos de pared de soporte para arboles" msgid "This setting specify the count of walls around tree support" -msgstr "" -"Este ajuste especifica el número de muros alrededor del soporte del árbol" +msgstr "Este ajuste especifica el número de paredes alrededor del soporte del árbol" msgid "Tree support with infill" msgstr "Soporte para árboles con relleno" -msgid "" -"This setting specifies whether to add infill inside large hollows of tree " -"support" +msgid "This setting specifies whether to add infill inside large hollows of tree support" msgstr "" -"Este ajuste especifica si se añade relleno dentro de los grandes huecos del " -"soporte del árbol" +"Este ajuste especifica si se añade relleno dentro de los grandes huecos del soporte del " +"árbol" msgid "Target chamber temperature" -msgstr "" +msgstr "Temperatura objetivo de la cámara" msgid "Nozzle temperature for layers after the initial one" msgstr "Temperatura de la boquilla después de la primera capa" @@ -8644,28 +8720,29 @@ msgid "Bed temperature difference" msgstr "Diferencia de temperatura de la cama" msgid "" -"Do not recommend bed temperature of other layer to be lower than initial " -"layer for more than this threshold. Too low bed temperature of other layer " -"may cause the model broken free from build plate" +"Do not recommend bed temperature of other layer to be lower than initial layer for more " +"than this threshold. Too low bed temperature of other layer may cause the model broken " +"free from build plate" msgstr "" +"No se recomienda que la temperatura de la otra capa sea inferior a la de la capa inicial " +"por encima de este umbral. Una temperatura demasiado baja de la otra capa puede hacer que " +"el modelo se desprenda de la cama de impresión" msgid "Detect thin wall" msgstr "Detectar la pared delgada" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop" +"Detect thin wall which can't contain two line width. And use single line to print. Maybe " +"printed not very well, because it's not closed loop" msgstr "" -"Detectar la pared delgada que no puede contener dos líneas de ancho. Y " -"utilizar una sola línea para imprimir. Tal vez no se imprime muy bien, " -"porque no es de bucle cerrado" +"Detectar la pared delgada que no puede contener dos líneas de ancho. Y utilizar una sola " +"línea para imprimir. Tal vez no se imprime muy bien, porque no es de bucle cerrado" msgid "" -"This gcode is inserted when change filament, including T command to trigger " -"tool change" +"This gcode is inserted when change filament, including T command to trigger tool change" msgstr "" -"Este gcode se inserta cuando se cambia de filamento, incluyendo el comando T " -"para activar el cambio de herramienta" +"Este gcode se inserta cuando se cambia de filamento, incluyendo el comando T para activar " +"el cambio de herramienta" msgid "Line width for top surfaces" msgstr "Ancho de línea para las superficies superiores" @@ -8677,14 +8754,13 @@ msgid "Top shell layers" msgstr "Capas superiores de la cubierta" msgid "" -"This is the number of solid layers of top shell, including the top surface " -"layer. When the thickness calculated by this value is thinner than top shell " -"thickness, the top shell layers will be increased" +"This is the number of solid layers of top shell, including the top surface layer. When the " +"thickness calculated by this value is thinner than top shell thickness, the top shell " +"layers will be increased" msgstr "" -"Es el número de capas sólidas de la cubierta superior, incluida la capa " -"superficial superior. Si el grosor calculado por este valor es menor que el " -"grosor de la cubierta superior, las capas de la cubierta superior se " -"incrementarán" +"Es el número de capas sólidas de la cubierta superior, incluida la capa superficial " +"superior. Si el grosor calculado por este valor es menor que el grosor de la cubierta " +"superior, las capas de la cubierta superior se incrementarán" msgid "Top solid layers" msgstr "Capas solidas superiores" @@ -8693,18 +8769,16 @@ msgid "Top shell thickness" msgstr "Espesor de la cubierta superior" msgid "" -"The number of top solid layers is increased when slicing if the thickness " -"calculated by top shell layers is thinner than this value. This can avoid " -"having too thin shell when layer height is small. 0 means that this setting " -"is disabled and thickness of top shell is absolutely determained by top " -"shell layers" +"The number of top solid layers is increased when slicing if the thickness calculated by " +"top shell layers is thinner than this value. This can avoid having too thin shell when " +"layer height is small. 0 means that this setting is disabled and thickness of top shell is " +"absolutely determained by top shell layers" msgstr "" -"El número de capas sólidas superiores se incrementa al rebanar si el espesor " -"calculado por las capas superiores de la cáscara es más delgado que este " -"valor. Esto puede evitar tener una capa demasiado fina cuando la altura de " -"la capa es pequeña. 0 significa que este ajuste está desactivado y el grosor " -"de la capa superior está absolutamente determinado por las capas de la capa " -"superior." +"El número de capas sólidas superiores se incrementa al laminar si el espesor calculado por " +"las capas superiores de la cáscara es más delgado que este valor. Esto puede evitar tener " +"una capa demasiado fina cuando la altura de la capa es pequeña. 0 significa que este " +"ajuste está desactivado y el grosor de la capa superior está absolutamente determinado por " +"las capas de la capa superior" msgid "Speed of travel which is faster and without extrusion" msgstr "Velocidad de desplazamiento más rápida y sin extrusión" @@ -8713,27 +8787,29 @@ msgid "Wipe while retracting" msgstr "Limpiar mientras se retrae" msgid "" -"Move nozzle along the last extrusion path when retracting to clean leaked " -"material on nozzle. This can minimize blob when print new part after travel" +"Move nozzle along the last extrusion path when retracting to clean leaked material on " +"nozzle. This can minimize blob when print new part after travel" msgstr "" -"Mueva la boquilla a lo largo de la última trayectoria de extrusión cuando se " -"retraiga para limpiar el material filtrado en la boquilla. Esto puede " -"minimizar las manchas cuando se imprime una nueva pieza después del recorrido" +"Mueva la boquilla a lo largo de la última trayectoria de extrusión cuando se retraiga para " +"limpiar el material filtrado en la boquilla. Esto puede minimizar las manchas cuando se " +"imprime una nueva pieza después del recorrido" msgid "Wipe Distance" msgstr "Distancia de limpieza" -msgid "" -"Discribe how long the nozzle will move along the last path when retracting" +msgid "Discribe how long the nozzle will move along the last path when retracting" msgstr "" -"Describa cuánto tiempo se moverá la boquilla a lo largo de la última " -"trayectoria al retraerse" +"Describa cuánto tiempo se moverá la boquilla a lo largo de la última trayectoria al " +"retraerse" msgid "" -"The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects." +"The wiping tower can be used to clean up the residue on the nozzle and stabilize the " +"chamber pressure inside the nozzle, in order to avoid appearance defects when printing " +"objects." msgstr "" +"La torre de purga puede utilizarse para limpiar los residuos de la boquilla y estabilizar " +"la presión de la cámara en el interior de la boquilla, con el fin de evitar defectos de " +"aspecto al imprimir objetos." msgid "Purging volumes" msgstr "Volúmenes de purga" @@ -8742,9 +8818,11 @@ msgid "Flush multiplier" msgstr "Multiplicador de flujo" msgid "" -"The actual flushing volumes is equal to the flush multiplier multiplied by " -"the flushing volumes in the table." +"The actual flushing volumes is equal to the flush multiplier multiplied by the flushing " +"volumes in the table." msgstr "" +"El volumen de descarga real es igual al multiplicador de descarga multiplicado por los " +"volúmenes de descarga de la tabla." msgid "Prime volume" msgstr "Volumen principal" @@ -8756,174 +8834,209 @@ msgid "Width" msgstr "Ancho" msgid "Width of prime tower" -msgstr "Anchura de la torre principal" +msgstr "Anchura de la torre de purga" msgid "" -"Purging after filament change will be done inside objects' infills. This may " -"lower the amount of waste and decrease the print time. If the walls are " -"printed with transparent filament, the mixed color infill will be seen " -"outside. It will not take effect, unless the prime tower is enabled." +"Purging after filament change will be done inside objects' infills. This may lower the " +"amount of waste and decrease the print time. If the walls are printed with transparent " +"filament, the mixed color infill will be seen outside. It will not take effect, unless the " +"prime tower is enabled." msgstr "" +"La purga tras el cambio de filamento se realizará dentro de los rellenos de los objetos. " +"Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. Si las " +"paredes se imprimen con filamento transparente, el relleno de color mixto se verá en el " +"exterior. No tendrá efecto, a menos que la torre de purga esté activada." msgid "" -"Purging after filament change will be done inside objects' support. This may " -"lower the amount of waste and decrease the print time. It will not take " -"effect, unless the prime tower is enabled." +"Purging after filament change will be done inside objects' support. This may lower the " +"amount of waste and decrease the print time. It will not take effect, unless the prime " +"tower is enabled." msgstr "" +"La purga tras el cambio de filamento se realizará dentro del soporte de los objetos. Esto " +"puede reducir la cantidad de residuos y disminuir el tiempo de impresión. No tendrá " +"efecto, a menos que la torre de purga esté activada." msgid "" -"This object will be used to purge the nozzle after a filament change to save " -"filament and decrease the print time. Colours of the objects will be mixed " -"as a result. It will not take effect, unless the prime tower is enabled." +"This object will be used to purge the nozzle after a filament change to save filament and " +"decrease the print time. Colours of the objects will be mixed as a result. It will not " +"take effect, unless the prime tower is enabled." msgstr "" +"Este objeto se utilizará para purgar la boquilla después de un cambio de filamento para " +"ahorrar filamento y disminuir el tiempo de impresión. Los colores de los objetos se " +"mezclarán como resultado. No tendrá efecto, a menos que la torre de purga esté activada." msgid "X-Y hole compensation" msgstr "Compensación de huecos X-Y" msgid "" -"Holes of object will be grown or shrunk in XY plane by the configured value. " -"Positive value makes holes bigger. Negative value makes holes smaller. This " -"function is used to adjust size slightly when the object has assembling issue" +"Holes of object will be grown or shrunk in XY plane by the configured value. Positive " +"value makes holes bigger. Negative value makes holes smaller. This function is used to " +"adjust size slightly when the object has assembling issue" msgstr "" -"Los huecos del objeto crecerán o se reducirán en el plano XY según el valor " -"configurado. Un valor positivo hace que los huecos sean más grandes. Un " -"valor negativo hace que los huecos sean más pequeños. Esta función se " -"utiliza para ajustar el tamaño ligeramente cuando el objeto tiene problemas " -"de ensamblaje" +"Los huecos del objeto crecerán o se reducirán en el plano XY según el valor configurado. " +"Un valor positivo hace que los huecos sean más grandes. Un valor negativo hace que los " +"huecos sean más pequeños. Esta función se utiliza para ajustar el tamaño ligeramente " +"cuando el objeto tiene problemas de ensamblaje" msgid "X-Y contour compensation" msgstr "Compensación de contornos X-Y" msgid "" -"Contour of object will be grown or shrunk in XY plane by the configured " -"value. Positive value makes contour bigger. Negative value makes contour " -"smaller. This function is used to adjust size slightly when the object has " -"assembling issue" +"Contour of object will be grown or shrunk in XY plane by the configured value. Positive " +"value makes contour bigger. Negative value makes contour smaller. This function is used to " +"adjust size slightly when the object has assembling issue" msgstr "" -"El contorno del objeto crecerá o se reducirá en el plano XY según el valor " -"configurado. Un valor positivo hace que el contorno sea más grande. Un valor " -"negativo hace que el contorno sea más pequeño. Esta función se utiliza para " -"ajustar el tamaño ligeramente cuando el objeto tiene problemas de ensamblaje" +"El contorno del objeto crecerá o se reducirá en el plano XY según el valor configurado. Un " +"valor positivo hace que el contorno sea más grande. Un valor negativo hace que el contorno " +"sea más pequeño. Esta función se utiliza para ajustar el tamaño ligeramente cuando el " +"objeto tiene problemas de ensamblaje" msgid "G-code thumbnails" -msgstr "" +msgstr "Miniaturas de G-code" msgid "" -"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " -"following format: \"XxY, XxY, ...\"" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the following format: " +"\"XxY, XxY, ...\"" msgstr "" +"Los tamaños de las imágenes deben almacenarse en archivos .gcode y .sl1 / .sl1s, en el " +"siguiente formato: \"XxY, XxY, ...\"" msgid "Use relative E distances" -msgstr "" +msgstr "Usar distancias relativas E" msgid "" -"Relative extrusion is recommended when using \"label_objects\" option.Some " -"extruders work better with this option unckecked (absolute extrusion mode). " -"Wipe tower is only compatible with relative mode. It is always enabled on " -"BambuLab printers. Default is checked" +"Relative extrusion is recommended when using \"label_objects\" option.Some extruders work " +"better with this option unckecked (absolute extrusion mode). Wipe tower is only compatible " +"with relative mode. It is always enabled on BambuLab printers. Default is checked" msgstr "" +"Se recomienda la extrusión relativa cuando se utiliza la opción \"label_objects\". Algunos " +"extrusores funcionan mejor con esta opción desactivada (modo de extrusión absoluta). La " +"torre de borrado sólo es compatible con el modo relativo. Siempre está activada en las " +"impresoras BambuLab. Por defecto está marcada" msgid "" -"Classic wall generator produces walls with constant extrusion width and for " -"very thin areas is used gap-fill. Arachne engine produces walls with " -"variable extrusion width" +"Classic wall generator produces walls with constant extrusion width and for very thin " +"areas is used gap-fill. Arachne engine produces walls with variable extrusion width" msgstr "" +"El generador de pareds clásico produce pareds con anchura de extrusión constante y para " +"zonas muy finas se utiliza rellenar-espacio. El motor Arachne produce paredes con anchura " +"de extrusión variable." msgid "Classic" -msgstr "" +msgstr "Clásico" msgid "Arachne" msgstr "" msgid "Wall transition length" -msgstr "" +msgstr "Anchura de transición de pared" msgid "" -"When transitioning between different numbers of walls as the part becomes " -"thinner, a certain amount of space is allotted to split or join the wall " -"segments. It's expressed as a percentage over nozzle diameter" +"When transitioning between different numbers of walls as the part becomes thinner, a " +"certain amount of space is allotted to split or join the wall segments. It's expressed as " +"a percentage over nozzle diameter" msgstr "" +"Cuando se pasa de un número de paredes a otro a medida que la pieza se vuelve más fina, se " +"asigna una determinada cantidad de espacio para dividir o unir los segmentos de pared. Se " +"expresa como un porcentaje sobre el diámetro de la boquilla" msgid "Wall transitioning filter margin" -msgstr "" +msgstr "Margen del filtro de transición a la pared" msgid "" -"Prevent transitioning back and forth between one extra wall and one less. " -"This margin extends the range of extrusion widths which follow to [Minimum " -"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " -"margin reduces the number of transitions, which reduces the number of " -"extrusion starts/stops and travel time. However, large extrusion width " -"variation can lead to under- or overextrusion problems. It's expressed as a " -"percentage over nozzle diameter" +"Prevent transitioning back and forth between one extra wall and one less. This margin " +"extends the range of extrusion widths which follow to [Minimum wall width - margin, 2 * " +"Minimum wall width + margin]. Increasing this margin reduces the number of transitions, " +"which reduces the number of extrusion starts/stops and travel time. However, large " +"extrusion width variation can lead to under- or overextrusion problems. It's expressed as " +"a percentage over nozzle diameter" msgstr "" +"Evita la transición entre una pared de más y una de menos. Este margen amplía el rango de " +"anchos de extrusión que siguen a [Ancho mínimo de pared - margen, 2 * Ancho mínimo de " +"pared + margen]. Aumentando este margen se reduce el número de transiciones, lo que reduce " +"el número de arranques/paradas de extrusión y el tiempo de recorrido. Sin embargo, una " +"gran variación de la anchura de extrusión puede provocar problemas de infra o " +"sobreextrusión. Se expresa en porcentaje sobre el diámetro de la boquilla" msgid "Wall transitioning threshold angle" -msgstr "" +msgstr "Ángulo del umbral de transición de la pared" msgid "" -"When to create transitions between even and odd numbers of walls. A wedge " -"shape with an angle greater than this setting will not have transitions and " -"no walls will be printed in the center to fill the remaining space. Reducing " -"this setting reduces the number and length of these center walls, but may " -"leave gaps or overextrude" +"When to create transitions between even and odd numbers of walls. A wedge shape with an " +"angle greater than this setting will not have transitions and no walls will be printed in " +"the center to fill the remaining space. Reducing this setting reduces the number and " +"length of these center walls, but may leave gaps or overextrude" msgstr "" +"Cuándo crear transiciones entre números pares e impares de paredes. Una forma de cuña con " +"un ángulo mayor que este ajuste no tendrá transiciones y no se imprimirán paredes en el " +"centro para rellenar el espacio restante. La reducción de este ajuste reduce el número y " +"la longitud de estas paredes centrales, pero puede dejar huecos o sobresalir" msgid "Wall distribution count" -msgstr "" +msgstr "Recuento de distribución de paredes" msgid "" -"The number of walls, counted from the center, over which the variation needs " -"to be spread. Lower values mean that the outer walls don't change in width" +"The number of walls, counted from the center, over which the variation needs to be spread. " +"Lower values mean that the outer walls don't change in width" msgstr "" +"El número de paredes, contadas desde el centro, sobre las que debe repartirse la " +"variación. Los valores más bajos significan que las paredes exteriores no cambian de " +"anchura" msgid "Minimum feature size" -msgstr "" +msgstr "Tamaño mínimo del elemento" msgid "" -"Minimum thickness of thin features. Model features that are thinner than " -"this value will not be printed, while features thicker than the Minimum " -"feature size will be widened to the Minimum wall width. It's expressed as a " -"percentage over nozzle diameter" +"Minimum thickness of thin features. Model features that are thinner than this value will " +"not be printed, while features thicker than the Minimum feature size will be widened to " +"the Minimum wall width. It's expressed as a percentage over nozzle diameter" msgstr "" +"Espesor mínimo de los elementos finos. Las características del modelo que sean más finas " +"que este valor no se imprimirán, mientras que las características más gruesas que el " +"Tamaño mínimo del Elemento se ensancharán hasta el Ancho mínimo de pared. Se expresa en " +"porcentaje sobre el diámetro de la boquilla" msgid "Minimum wall width" -msgstr "" +msgstr "Ancho mínimo de pared" msgid "" -"Width of the wall that will replace thin features (according to the Minimum " -"feature size) of the model. If the Minimum wall width is thinner than the " -"thickness of the feature, the wall will become as thick as the feature " -"itself. It's expressed as a percentage over nozzle diameter" +"Width of the wall that will replace thin features (according to the Minimum feature size) " +"of the model. If the Minimum wall width is thinner than the thickness of the feature, the " +"wall will become as thick as the feature itself. It's expressed as a percentage over " +"nozzle diameter" msgstr "" +"Anchura del pared que sustituirá a los elementos finos (según el tamaño mínimo del " +"elemento) del modelo. Si la anchura Mínima de la pared es menor que el grosor de la " +"característica, la pared será tan gruesa como la propia característica. Se expresa en " +"porcentaje sobre el diámetro de la boquilla" msgid "Detect narrow internal solid infill" msgstr "Detectar el relleno sólido interno estrecho" msgid "" -"This option will auto detect narrow internal solid infill area. If enabled, " -"concentric pattern will be used for the area to speed printing up. " -"Otherwise, rectilinear pattern is used defaultly." +"This option will auto detect narrow internal solid infill area. If enabled, concentric " +"pattern will be used for the area to speed printing up. Otherwise, rectilinear pattern is " +"used defaultly." msgstr "" -"Esta opción detectará automáticamente el área de relleno sólido interno " -"estrecho. Si se activa, se utilizará un patrón concéntrico para el área para " -"acelerar la impresión. De lo contrario, se utilizará por defecto un patrón " -"rectilíneo." +"Esta opción detectará automáticamente el área de relleno sólido interno estrecho. Si se " +"activa, se utilizará un patrón concéntrico para el área para acelerar la impresión. De lo " +"contrario, se utilizará por defecto un patrón rectilíneo." msgid "invalid value " -msgstr "" +msgstr "valor inválido " #, c-format, boost-format msgid " doesn't work at 100%% density " -msgstr "" +msgstr " no funciona con una densidad del 100%% " msgid "Invalid value when spiral vase mode is enabled: " -msgstr "" +msgstr "Valor no válido cuando está activado el modo jarrón espiral: " msgid "too large line width " -msgstr "" +msgstr "demasiada anchura de línea " msgid " not in range " -msgstr "" +msgstr " fuera de rango " msgid "Export 3MF" msgstr "Exportar 3MF" @@ -8932,55 +9045,57 @@ msgid "Export project as 3MF." msgstr "Exportar el proyecto como 3MF." msgid "Export slicing data" -msgstr "" +msgstr "Exportar datos de laminado" msgid "Export slicing data to a folder." -msgstr "" +msgstr "Exportar datos de laminado a una carpeta." msgid "Load slicing data" -msgstr "" +msgstr "Cargar datos de laminado" msgid "Load cached slicing data from directory" -msgstr "" +msgstr "Cargar datos de laminado en caché desde el directorio" msgid "Slice" msgstr "Laminar" msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" -msgstr "Cortar las placas: 0-todas las placas, i-placa i, otras-inválidas" +msgstr "Cortar las camas: 0-todas las camas, i-cama i, otras-inválidas" msgid "Show command help." msgstr "Mostrar la ayuda del comando." msgid "UpToDate" -msgstr "" +msgstr "Actualizado" msgid "Update the configs values of 3mf to latest." -msgstr "" +msgstr "Actualice los valores de configuración de 3mf a la última versión." msgid "mtcpp" msgstr "" msgid "max triangle count per plate for slicing." -msgstr "" +msgstr "número máximo de triángulos por plato para laminar." msgid "mstpp" msgstr "" msgid "max slicing time per plate in seconds." -msgstr "" +msgstr "tiempo máximo de corte por cama en segundos." msgid "No check" -msgstr "" +msgstr "No comprobado" msgid "Do not run any validity checks, such as gcode path conflicts check." msgstr "" +"No ejecute ninguna comprobación de validez, como la comprobación de conflictos de ruta de " +"gcode." msgid "Normative check" -msgstr "" +msgstr "Comprobación de normativa" msgid "Check the normative items." -msgstr "" +msgstr "Comprueba los elementos normativos." msgid "Output Model Info" msgstr "Información del modelo de salida" @@ -8995,10 +9110,10 @@ msgid "Export settings to a file." msgstr "Exporta los ajustes a un archivo." msgid "Send progress to pipe" -msgstr "" +msgstr "Enviar el progreso a la tubería" msgid "Send progress to pipe." -msgstr "" +msgstr "Enviar el progreso a la tubería." msgid "Arrange Options" msgstr "Opciones de posicionamiento" @@ -9028,23 +9143,23 @@ msgid "Load Filament Settings" msgstr "Cargar los ajustes del filamento" msgid "Load filament settings from the specified file list" -msgstr "" -"Cargar los ajustes del filamento desde la lista de archivos especificada" +msgstr "Cargar los ajustes del filamento desde la lista de archivos especificada" msgid "Skip Objects" -msgstr "" +msgstr "Omitir objetos" msgid "Skip some objects in this print" -msgstr "" +msgstr "Omitir algunos objetos en esta impresión" msgid "Data directory" -msgstr "" +msgstr "Directorio de datos" msgid "" -"Load and store settings at the given directory. This is useful for " -"maintaining different profiles or including configurations from a network " -"storage." +"Load and store settings at the given directory. This is useful for maintaining different " +"profiles or including configurations from a network storage." msgstr "" +"Carga y almacena configuraciones en el directorio dado. Esto es útil para mantener " +"diferentes perfiles o incluir configuraciones desde un almacenamiento en red." msgid "Output directory" msgstr "Directorio de salida" @@ -9055,18 +9170,16 @@ msgstr "Directorio de salida para los archivos exportados." msgid "Debug level" msgstr "Nivel de depuración" -msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +msgid "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:trace\n" msgstr "" -"Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, " -"3:información, 4:depuración, 5:rastreo\n" +"Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, 3:información, " +"4:depuración, 5:rastreo\n" msgid "Error in zip archive" msgstr "Error en el archivo zip" msgid "Generating walls" -msgstr "Generación de muros" +msgstr "Generación de paredes" msgid "Generating infill regions" msgstr "Generación de zonas de relleno" @@ -9075,7 +9188,7 @@ msgid "Generating infill toolpath" msgstr "Generación de la trayectoria de la herramienta de relleno" msgid "Detect overhangs for auto-lift" -msgstr "" +msgstr "Detección de voladizos para autoelevación" msgid "Generating support" msgstr "Generar soporte" @@ -9084,43 +9197,45 @@ msgid "Checking support necessity" msgstr "Comprobación de la necesidad de soporte" msgid "floating regions" -msgstr "" +msgstr "regiones flotantes" msgid "floating cantilever" -msgstr "" +msgstr "voladizo flotante" msgid "large overhangs" -msgstr "" +msgstr "voladizos grandes" #, c-format, boost-format -msgid "" -"It seems object %s has %s. Please re-orient the object or enable support " -"generation." +msgid "It seems object %s has %s. Please re-orient the object or enable support generation." msgstr "" +"Parece que el objeto %s tiene %s. Por favor, reoriente el objeto o active la generación de " +"soporte." msgid "Optimizing toolpath" msgstr "Optimización de la trayectoria de la herramienta" msgid "Empty layers around bottom are replaced by nearest normal layers." -msgstr "" -"Las capas vacías del fondo se sustituyen por las capas normales más cercanas." +msgstr "Las capas vacías del fondo se sustituyen por las capas normales más cercanas." msgid "The model has too many empty layers." -msgstr "" +msgstr "El modelo tiene demasiadas capas vacías." msgid "Slicing mesh" msgstr "Malla de corte" msgid "" -"No layers were detected. You might want to repair your STL file(s) or check " -"their size or thickness and retry.\n" +"No layers were detected. You might want to repair your STL file(s) or check their size or " +"thickness and retry.\n" msgstr "" +"No se han detectado capas. Es posible que desee reparar su(s) archivo(s) STL o comprobar " +"su tamaño o grosor y volver a intentarlo.\n" msgid "" -"An object's XY size compensation will not be used because it is also color-" -"painted.\n" +"An object's XY size compensation will not be used because it is also color-painted.\n" "XY Size compensation can not be combined with color-painting." msgstr "" +"An object's XY size compensation will not be used because it is also color-painted.\n" +"XY Size compensation can not be combined with color-painting." #, c-format, boost-format msgid "Support: generate toolpath at layer %d" @@ -9154,7 +9269,7 @@ msgid "Support: propagate branches at layer %d" msgstr "Soporte: propagar ramas en la capa %d" msgid "PA Calibration" -msgstr "" +msgstr "Calibración PA" msgid "DDE" msgstr "" @@ -9163,28 +9278,28 @@ msgid "Bowden" msgstr "" msgid "Extruder type" -msgstr "" +msgstr "Tipo de extrusor" msgid "PA Tower" -msgstr "" +msgstr "Torre PA" msgid "PA Line" -msgstr "" +msgstr "Línea PA" msgid "Method" -msgstr "" +msgstr "Método" msgid "Start PA: " -msgstr "" +msgstr "Iniciar PA: " msgid "End PA: " -msgstr "" +msgstr "Finalizar PA: " msgid "PA step: " msgstr "" msgid "Print numbers" -msgstr "" +msgstr "Imprimir números" msgid "" "Please input valid values:\n" @@ -9192,9 +9307,13 @@ msgid "" "End PA: > Start PA\n" "PA step: >= 0.001)" msgstr "" +"Por favor, introduzca valores válidos:\n" +"Iniciar PA: >=0.0\n" +"Finalizar PA:> Iniciar PA\n" +"Paso PA:>=0.001)" msgid "Temperature calibration" -msgstr "" +msgstr "Calibración de temperatura" msgid "PLA" msgstr "" @@ -9215,16 +9334,16 @@ msgid "PET-CF" msgstr "" msgid "Filament type" -msgstr "" +msgstr "Tipo de filamento" msgid "Start temp: " -msgstr "" +msgstr "Temperatura inicial: " msgid "End end: " -msgstr "" +msgstr "Temperatura final: " msgid "Temp step: " -msgstr "" +msgstr "Paso temperatura: " msgid "" "Please input valid values:\n" @@ -9232,276 +9351,364 @@ msgid "" "End temp: >= 180\n" "Start temp > End temp + 5)" msgstr "" +"Por favor introduzca valores válidos:\n" +"Temperatura inicial: <= 350\n" +"Temperatura final: >= 180\n" +"Temperatura inicial > Temperatura final + 5)" msgid "Max volumetric speed test" -msgstr "" +msgstr "Test de velocidad volumétrica máxima" msgid "Start volumetric speed: " -msgstr "" +msgstr "Velocidad volumétrica inicial: " msgid "End volumetric speed: " -msgstr "" +msgstr "Velocidad volumétrica final: " msgid "step: " -msgstr "" +msgstr "paso: " msgid "" "Please input valid values:\n" "start > 0 step >= 0\n" "end > start + step)" msgstr "" +"Por favor, introduzca valores válidos:\n" +"inicio>paso 0 >= 0\n" +"fin > inicio + paso)" msgid "VFA test" -msgstr "" +msgstr "Test VFA" msgid "Start speed: " -msgstr "" +msgstr "Velocidad inicial: " msgid "End speed: " -msgstr "" +msgstr "Velocidad final: " msgid "" "Please input valid values:\n" "start > 10 step >= 0\n" "end > start + step)" msgstr "" +"Por favor, introduzca valores válidos:\n" +"inicio > paso 10 >= 0\n" +"final > inicio + paso)" msgid "Start retraction length: " -msgstr "" +msgstr "Iniciar anchura de retracción: " msgid "End retraction length: " -msgstr "" +msgstr "Finalizar " msgid "mm/mm" msgstr "" msgid "Physical Printer" -msgstr "" +msgstr "Impresora física" msgid "Print Host upload" -msgstr "" +msgstr "Carga de Host de Impresión" msgid "Test" msgstr "" msgid "Could not get a valid Printer Host reference" -msgstr "" +msgstr "No se ha podido obtener una referencia de host de impresora válida" msgid "Success!" -msgstr "" +msgstr "¡Exitoso!" msgid "Refresh Printers" -msgstr "" +msgstr "Refrescar Impresoras" msgid "" -"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" -"signed certificate." +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-signed " +"certificate." msgstr "" +"El archivo HTTPS CA es opcional. Solo es necesario si utiliza HTTPS con un certificado " +"autofirmado." msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" -msgstr "" +msgstr "Archivos de certificado (*.crt, *.pem)|*.crt;*.pem|Todos los archivos|*.*" msgid "Open CA certificate file" -msgstr "" +msgstr "Abrir archivo de certificado CA" #, c-format, boost-format msgid "" -"On this system, %s uses HTTPS certificates from the system Certificate Store " -"or Keychain." +"On this system, %s uses HTTPS certificates from the system Certificate Store or Keychain." msgstr "" +"En este sistema, %s utiliza certificados HTTPS del almacén de certificados o llavero del " +"sistema." msgid "" -"To use a custom CA file, please import your CA file into Certificate Store / " -"Keychain." +"To use a custom CA file, please import your CA file into Certificate Store / Keychain." msgstr "" +"Para utilizar un archivo de CA personalizado, importe su archivo de CA a Almacén de " +"certificados / Llavero." msgid "Connection to printers connected via the print host failed." -msgstr "" +msgstr "Ha fallado la conexión a impresoras conectadas a través del host de impresión." #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" "3D Scene Operations\n" -"Did you know how to control view and object/part selection with mouse and " -"touchpanel in the 3D scene?" +"Did you know how to control view and object/part selection with mouse and touchpanel in " +"the 3D scene?" msgstr "" +"Operaciones de la escena 3D\n" +"¿Sabías cómo controlar la vista y la selección de objetos/partes con el ratón y el panel " +"táctil en la escena 3D?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" "Cut Tool\n" -"Did you know that you can cut a model at any angle and position with the " -"cutting tool?" +"Did you know that you can cut a model at any angle and position with the cutting tool?" msgstr "" +"Herramienta de corte\n" +"¿Sabías que puedes cortar un modelo en cualquier ángulo y posición con la herramienta de " +"corte?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" "Fix Model\n" -"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " -"problems?" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing problems?" msgstr "" +"Fijar modelo\n" +"¿Sabías que puedes arreglar un modelo 3D dañado para evitar muchos problemas de corte?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" "Timelapse\n" "Did you know that you can generate a timelapse video during each print?" msgstr "" +"Timelapse\n" +"¿Sabías que puedes generar un vídeo timelapse durante cada impresión?" #: resources/data/hints.ini: [hint:Auto-Arrange] msgid "" "Auto-Arrange\n" "Did you know that you can auto-arrange all objects in your project?" msgstr "" +"Auto-organizar\n" +"¿Sabías que puedes ordenar automáticamente todos los objetos de tu proyecto?" #: resources/data/hints.ini: [hint:Auto-Orient] msgid "" "Auto-Orient\n" -"Did you know that you can rotate objects to an optimal orientation for " -"printing by a simple click?" +"Did you know that you can rotate objects to an optimal orientation for printing by a " +"simple click?" msgstr "" +"Orientación automática\n" +"¿Sabía que puede girar los objetos a una orientación óptima para la impresión con un " +"simple clic?" #: resources/data/hints.ini: [hint:Lay on Face] msgid "" "Lay on Face\n" -"Did you know that you can quickly orient a model so that one of its faces " -"sits on the print bed? Select the \"Place on face\" function or press the " -"F key." +"Did you know that you can quickly orient a model so that one of its faces sits on the " +"print bed? Select the \"Place on face\" function or press the F key." msgstr "" +"Colocar en la cara\n" +"¿Sabías que puedes orientar rápidamente un modelo para que una de sus caras quede sobre el " +"lecho de impresión? Seleccione la función \"Colocar en la cara\" o pulse la tecla F." #: resources/data/hints.ini: [hint:Object List] msgid "" "Object List\n" -"Did you know that you can view all objects/parts in a list and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts in a list and change settings for each " +"object/part?" msgstr "" +"Lista de objetos\n" +"¿Sabías que puedes ver todos los objetos/piezas en una lista y cambiar los ajustes de cada " +"objeto/pieza?" #: resources/data/hints.ini: [hint:Simplify Model] msgid "" "Simplify Model\n" -"Did you know that you can reduce the number of triangles in a mesh using the " -"Simplify mesh feature? Right-click the model and select Simplify model. Read " -"more in the documentation." +"Did you know that you can reduce the number of triangles in a mesh using the Simplify mesh " +"feature? Right-click the model and select Simplify model. Read more in the documentation." msgstr "" +"Simplificar modelo\n" +"¿Sabías que puedes reducir el número de triángulos de una malla utilizando la función " +"Simplificar malla? Haga clic con el botón derecho del ratón en el modelo y seleccione " +"Simplificar modelo. Más información en la documentación." #: resources/data/hints.ini: [hint:Slicing Parameter Table] msgid "" "Slicing Parameter Table\n" -"Did you know that you can view all objects/parts on a table and change " -"settings for each object/part?" +"Did you know that you can view all objects/parts on a table and change settings for each " +"object/part?" msgstr "" +"Tabla de parámetros de laminado\n" +"¿Sabía que puede ver todos los objetos/partes de una tabla y cambiar los parámetros de " +"cada objeto/parte?" #: resources/data/hints.ini: [hint:Split to Objects/Parts] msgid "" "Split to Objects/Parts\n" -"Did you know that you can split a big object into small ones for easy " -"colorizing or printing?" +"Did you know that you can split a big object into small ones for easy colorizing or " +"printing?" msgstr "" +"Dividir en Objetos/Partes\n" +"¿Sabías que puedes dividir un objeto grande en pequeños para colorearlo o imprimirlo " +"fácilmente?" #: resources/data/hints.ini: [hint:Subtract a Part] msgid "" "Subtract a Part\n" -"Did you know that you can subtract one mesh from another using the Negative " -"part modifier? That way you can, for example, create easily resizable holes " -"directly in Orca Slicer. Read more in the documentation." +"Did you know that you can subtract one mesh from another using the Negative part modifier? " +"That way you can, for example, create easily resizable holes directly in Orca Slicer. Read " +"more in the documentation." msgstr "" +"Restar una parte\n" +"¿Sabías que puedes sustraer una malla de otra utilizando el modificador de pieza Negativa? " +"De esta forma puedes, por ejemplo, crear agujeros fácilmente redimensionables directamente " +"en Orca Slicer. Más información en la documentación." #: resources/data/hints.ini: [hint:STEP] msgid "" "STEP\n" -"Did you know that you can improve your print quality by slicing a STEP file " -"instead of an STL?\n" -"Orca Slicer supports slicing STEP files, providing smoother results than a " -"lower resolution STL. Give it a try!" +"Did you know that you can improve your print quality by slicing a STEP file instead of an " +"STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a lower " +"resolution STL. Give it a try!" msgstr "" +"STEP\n" +"¿Sabías que puedes mejorar la calidad de impresión cortando un archivo STEP en lugar de un " +"STL?\n" +"Orca Slicer soporta el corte de archivos STEP, proporcionando resultados más suaves que un " +"STL de menor resolución. ¡Pruébalo!" #: resources/data/hints.ini: [hint:Z seam location] msgid "" "Z seam location\n" -"Did you know that you can customize the location of the Z seam, and even " -"paint it on your print, to have it in a less visible location? This improves " -"the overall look of your model. Check it out!" +"Did you know that you can customize the location of the Z seam, and even paint it on your " +"print, to have it in a less visible location? This improves the overall look of your " +"model. Check it out!" msgstr "" +"Ubicación de la costura Z\n" +"¿Sabías que puedes personalizar la ubicación de la costura Z, e incluso pintarla en tu " +"impresión, para tenerla en un lugar menos visible? Esto mejora el aspecto general de tu " +"modelo. ¡Compruébalo!" #: resources/data/hints.ini: [hint:Fine-tuning for flow rate] msgid "" "Fine-tuning for flow rate\n" -"Did you know that flow rate can be fine-tuned for even better-looking " -"prints? Depending on the material, you can improve the overall finish of the " -"printed model by doing some fine-tuning." +"Did you know that flow rate can be fine-tuned for even better-looking prints? Depending on " +"the material, you can improve the overall finish of the printed model by doing some fine-" +"tuning." msgstr "" +"Ajuste fino del caudal\n" +"¿Sabías que el caudal puede ajustarse para obtener impresiones aún más atractivas? " +"Dependiendo del material, puede mejorar el acabado general del modelo impreso realizando " +"algunos ajustes." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" "Split your prints into plates\n" -"Did you know that you can split a model that has a lot of parts into " -"individual plates ready to print? This will simplify the process of keeping " -"track of all the parts." +"Did you know that you can split a model that has a lot of parts into individual plates " +"ready to print? This will simplify the process of keeping track of all the parts." msgstr "" +"Divide tus impresiones en planchas\n" +"¿Sabías que puedes dividir un modelo con muchas piezas en camas individuales listas para " +"imprimir? Esto simplificará el proceso de seguimiento de todas las piezas." -#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer -#: Height] +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer Height] msgid "" "Speed up your print with Adaptive Layer Height\n" -"Did you know that you can print a model even faster, by using the Adaptive " -"Layer Height option? Check it out!" +"Did you know that you can print a model even faster, by using the Adaptive Layer Height " +"option? Check it out!" msgstr "" +"Acelere su impresión con la altura de capa adaptable\n" +"¿Sabías que puedes imprimir un modelo aún más rápido utilizando la opción Altura de capa " +"adaptable? ¡Compruébalo!" #: resources/data/hints.ini: [hint:Support painting] msgid "" "Support painting\n" -"Did you know that you can paint the location of your supports? This feature " -"makes it easy to place the support material only on the sections of the " -"model that actually need it." +"Did you know that you can paint the location of your supports? This feature makes it easy " +"to place the support material only on the sections of the model that actually need it." msgstr "" +"Pintura de soportes\n" +"¿Sabías que puedes pintar la ubicación de los soportes? Esta función facilita la " +"colocación del material de soporte sólo en las secciones del modelo que realmente lo " +"necesitan." #: resources/data/hints.ini: [hint:Different types of supports] msgid "" "Different types of supports\n" -"Did you know that you can choose from multiple types of supports? Tree " -"supports work great for organic models, while saving filament and improving " -"print speed. Check them out!" +"Did you know that you can choose from multiple types of supports? Tree supports work great " +"for organic models, while saving filament and improving print speed. Check them out!" msgstr "" +"Diferentes tipos de soportes\n" +"¿Sabías que puedes elegir entre varios tipos de soportes? Los soportes en forma de árbol " +"son ideales para modelos orgánicos, ahorran filamento y mejoran la velocidad de impresión. " +"¡Compruébalos!" #: resources/data/hints.ini: [hint:Printing Silk Filament] msgid "" "Printing Silk Filament\n" -"Did you know that Silk filament needs special consideration to print it " -"successfully? Higher temperature and lower speed are always recommended for " -"the best results." +"Did you know that Silk filament needs special consideration to print it successfully? " +"Higher temperature and lower speed are always recommended for the best results." msgstr "" +"Impresión de filamento de seda\n" +"¿Sabías que el filamento de seda necesita una consideración especial para imprimirlo con " +"éxito? Se recomienda siempre una temperatura más alta y una velocidad más baja para " +"obtener los mejores resultados." #: resources/data/hints.ini: [hint:Brim for better adhesion] msgid "" "Brim for better adhesion\n" -"Did you know that when printing models have a small contact interface with " -"the printing surface, it's recommended to use a brim?" +"Did you know that when printing models have a small contact interface with the printing " +"surface, it's recommended to use a brim?" msgstr "" +"Borde de adherencia para una mejor adherencia\n" +"¿Sabía que cuando los modelos de impresión tienen una pequeña interfaz de contacto con la " +"superficie de impresión, se recomienda utilizar un borde de adherencia?" #: resources/data/hints.ini: [hint:Set parameters for multiple objects] msgid "" "Set parameters for multiple objects\n" -"Did you know that you can set slicing parameters for all selected objects at " -"one time?" +"Did you know that you can set slicing parameters for all selected objects at one time?" msgstr "" +"Establecer parámetros para varios objetos\n" +"¿Sabías que puedes establecer parámetros de corte para todos los objetos seleccionados a " +"la vez?" #: resources/data/hints.ini: [hint:Stack objects] msgid "" "Stack objects\n" "Did you know that you can stack objects as a whole one?" msgstr "" +"Apilar objetos\n" +"¿Sabías que puedes apilar objetos como un todo?" #: resources/data/hints.ini: [hint:Flush into support/objects/infill] msgid "" "Flush into support/objects/infill\n" -"Did you know that you can save the wasted filament by flushing them into " -"support/objects/infill during filament change?" +"Did you know that you can save the wasted filament by flushing them into support/objects/" +"infill during filament change?" msgstr "" +"Descarga en soporte/objetos/relleno\n" +"¿Sabías que puedes ahorrarte el filamento desperdiciado vertiéndolo en soporte/objetos/" +"relleno durante el cambio de filamento?" #: resources/data/hints.ini: [hint:Improve strength] msgid "" "Improve strength\n" -"Did you know that you can use more wall loops and higher sparse infill " -"density to improve the strength of the model?" +"Did you know that you can use more wall loops and higher sparse infill density to improve " +"the strength of the model?" msgstr "" +"Mejorar la resistencia\n" +"¿Sabías que puedes utilizar más bucles de pared y mayor densidad de relleno disperso para " +"mejorar la resistencia del modelo?" +# msgid "Improve strength\n" +# "Did you know that you can use more wall loops and higher sparse infill density to improve the strength of the model?" +# msgstr "Mejorar la fuerza\n" +# "¿Sabías que puedes utilizar más bucles de pared y mayor densidad de relleno disperso para mejorar la resistencia del modelo?" #~ msgid "Keep upper part" #~ msgstr "Mantener la parte superior" @@ -9514,55 +9721,20 @@ msgstr "" #~ msgid "Backup interval" #~ msgstr "Intervalo de copia de seguridad" -#~ msgid "" -#~ "Print a tower to prime material in nozzle after switching to a new " +#~ msgid "Print a tower to prime material in nozzle after switching to a new material." +#~ msgstr "" +#~ "Imprimir una torre para cebar el material en la boquilla después de cambiar a un nuevo " #~ "material." -#~ msgstr "" -#~ "Imprimir una torre para cebar el material en la boquilla después de " -#~ "cambiar a un nuevo material." - -#~ msgid "" -#~ "The configuration may be generated by a newer version of BambuStudio." -#~ msgstr "" -#~ "La configuración puede ser generada por una versión más reciente de " -#~ "BambuStudio." - -#~ msgid "" -#~ "BambuStudio will terminate because of running out of memory.It may be a " -#~ "bug. It will be appreciated if you report the issue to our team." -#~ msgstr "" -#~ "BambuStudio terminará porque se está quedando sin memoria. Le " -#~ "agradeceremos que comunique el problema a nuestro equipo." - -#~ msgid "" -#~ "BambuStudio will terminate because of a localization error. It will be " -#~ "appreciated if you report the specific scenario this issue happened." -#~ msgstr "" -#~ "BambuStudio terminará debido a un error de localización. Le agradeceremos " -#~ "que nos informe del escenario específico en el que se ha producido este " -#~ "problema." - -#, boost-format -#~ msgid "BambuStudio got an unhandled exception: %1%" -#~ msgstr "" -#~ "BambuStudio recibió una notificación de excepción no controlada: %1%." - -#~ msgid "" -#~ "BambuStudio configuration file may be corrupted and is not abled to be " -#~ "parsed.Please delete the file and try again." -#~ msgstr "" -#~ "El archivo de configuración de OrcaSlicer puede estar dañado y no puede " -#~ "ser procesado." #~ msgid "Loading user presets..." #~ msgstr "Cargando los preajustes del usuario..." #~ msgid "" -#~ "Orca Slicer is based on PrusaSlicer by Prusa Research, which is from " -#~ "Slic3r by Alessandro Ranellucci and the RepRap community" +#~ "Orca Slicer is based on PrusaSlicer by Prusa Research, which is from Slic3r by " +#~ "Alessandro Ranellucci and the RepRap community" #~ msgstr "" -#~ "Orca Slicer se basa en PrusaSlicer de Prusa Research, que proviene de " -#~ "Slic3r de Alessandro Ranellucci y la comunidad RepRap" +#~ "Orca Slicer se basa en PrusaSlicer de Prusa Research, que proviene de Slic3r de " +#~ "Alessandro Ranellucci y la comunidad RepRap" #~ msgid "Export G-Code." #~ msgstr "Exportar Código G." @@ -9571,22 +9743,20 @@ msgstr "" #~ msgstr "Exportar." #~ msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files." -#~ msgstr "" -#~ "Importación de datos geométricos desde archivos STL/STEP/3MF/OBJ/AMF." +#~ msgstr "Importación de datos geométricos desde archivos STL/STEP/3MF/OBJ/AMF." #, boost-format #~ msgid "Copying directory %1% to %2% failed: %3%" #~ msgstr "La copia del directorio %1% a %2% ha fallado: %3%" #~ msgid "" -#~ "This controls brim position including outer side of models, inner side of " -#~ "holes or both. Auto means both the brim position and brim width is " -#~ "analysed and calculated automatically" +#~ "This controls brim position including outer side of models, inner side of holes or " +#~ "both. Auto means both the brim position and brim width is analysed and calculated " +#~ "automatically" #~ msgstr "" -#~ "Esto controla la posición del borde, incluyendo el lado exterior de los " -#~ "modelos, el lado interior de los huecos o ambos. Auto significa que tanto " -#~ "la posición como la anchura del borde se analizan y calculan " -#~ "automáticamente" +#~ "Esto controla la posición del borde de adherencia, incluyendo el lado exterior de los " +#~ "modelos, el lado interior de los huecos o ambos. Auto significa que tanto la posición " +#~ "como la anchura del borde de adherencia se analizan y calculan automáticamente" #~ msgid "Choose one file (gcode/.gco/.g/.ngc/ngc):" #~ msgstr "Elija un archivo (gcode/.gco/.g/.ngc/ngc):" @@ -9600,19 +9770,13 @@ msgstr "" #~ msgid "" #~ "\n" -#~ "%1% is too close to exclusion area, there will be collisions when " -#~ "printing." +#~ "%1% is too close to exclusion area, there will be collisions when printing." #~ msgstr "" #~ "\n" -#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir." +#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al imprimir." -#~ msgid "" -#~ "%1% is too close to exclusion area, there will be collisions when " -#~ "printing." -#~ msgstr "" -#~ "%1% está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir." +#~ msgid "%1% is too close to exclusion area, there will be collisions when printing." +#~ msgstr "%1% está demasiado cerca del área de exclusión, habrá colisiones al imprimir." #~ msgid "0%" #~ msgstr "0%" @@ -9621,27 +9785,24 @@ msgstr "" #~ "An object is layed over the boundary of plate.\n" #~ "Please solve the problem by moving it totally inside or outside plate." #~ msgstr "" -#~ "Un objeto está colocado sobre el límite de la placa.\n" -#~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de " -#~ "la placa." +#~ "Un objeto está colocado sobre el límite de la cama.\n" +#~ "Por favor, resuelva el problema moviéndolo totalmente dentro o fuera de la cama." #~ msgid "" #~ "Arachne engine only works when overhang slowing down is disabled.\n" -#~ "This may cause decline in the quality of overhang surface when print " -#~ "fastly\n" +#~ "This may cause decline in the quality of overhang surface when print fastly\n" #~ msgstr "\n" #~ msgid "Auto arrange" #~ msgstr "Auto posicionamiento" #~ msgid "" -#~ "Auto orientates selected objects or all objects.If there are selected " -#~ "objects, it just orientates the selected ones.Otherwise, it will " -#~ "orientates all objects in the project." +#~ "Auto orientates selected objects or all objects.If there are selected objects, it just " +#~ "orientates the selected ones.Otherwise, it will orientates all objects in the project." #~ msgstr "" -#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si " -#~ "hay objetos seleccionados, sólo orienta los seleccionados.En caso " -#~ "contrario, orienta todos los objetos del proyecto." +#~ "Orienta automáticamente los objetos seleccionados o todos los objetos.Si hay objetos " +#~ "seleccionados, sólo orienta los seleccionados.En caso contrario, orienta todos los " +#~ "objetos del proyecto." #~ msgid "Aux Cooling" #~ msgstr "Enfriamiento Auxiliar" @@ -9650,12 +9811,11 @@ msgstr "" #~ msgstr "Evitar cruzar el muro en los desplazamientos" #~ msgid "" -#~ "Bed temperature is higher than vitrification temperature of this " -#~ "filament.\n" +#~ "Bed temperature is higher than vitrification temperature of this filament.\n" #~ "This may cause nozzle blocked and printing failure" #~ msgstr "" -#~ "La temperatura del lecho es superior a la temperatura de vitrificación de " -#~ "este filamento.\n" +#~ "La temperatura del lecho es superior a la temperatura de vitrificación de este " +#~ "filamento.\n" #~ "Esto puede causar el bloqueo de la boquilla y el fracaso de la impresión" #~ msgid "Choose one or more files (3mf/step/stl/obj/amf):" @@ -9665,12 +9825,11 @@ msgstr "" #~ msgstr "Borrar todo" #~ msgid "" -#~ "Clearance radius around extruder. Used as input of auto-arrange to avoid " -#~ "collision when print object by object" +#~ "Clearance radius around extruder. Used as input of auto-arrange to avoid collision when " +#~ "print object by object" #~ msgstr "" -#~ "Radio de separación alrededor del extrusor. Se utiliza como entrada de " -#~ "auto-organización para evitar la colisión cuando se imprime objeto por " -#~ "objeto" +#~ "Radio de separación alrededor del extrusor. Se utiliza como entrada de auto-" +#~ "organización para evitar la colisión cuando se imprime objeto por objeto" #~ msgid "Click the pencil icon to edit the filament." #~ msgstr "Haga clic en el icono del lápiz para editar el filamento." @@ -9709,14 +9868,13 @@ msgstr "" #~ msgstr "Mostrar los triángulos de los modelos" #~ msgid "" -#~ "Do not recommand bed temperature of other layer to be lower than initial " -#~ "layer for more than this threshold. Too low bed temperature of other " -#~ "layer may cause the model broken free from build plate" +#~ "Do not recommand bed temperature of other layer to be lower than initial layer for more " +#~ "than this threshold. Too low bed temperature of other layer may cause the model broken " +#~ "free from build plate" #~ msgstr "" -#~ "No se recomienda que la temperatura de la cama de la otra capa sea " -#~ "inferior a la de la capa inicial por más de este umbral. Una temperatura " -#~ "demasiado baja de la otra capa puede hacer que el modelo se desprenda de " -#~ "la placa de impresión." +#~ "No se recomienda que la temperatura de la cama de la otra capa sea inferior a la de la " +#~ "capa inicial por más de este umbral. Una temperatura demasiado baja de la otra capa " +#~ "puede hacer que el modelo se desprenda de la cama de impresión." #~ msgid "" #~ "Do you want to synchronize your personal data from Bambu Cloud? \n" @@ -9740,24 +9898,22 @@ msgstr "" #~ msgstr "\n" #~ msgid "" -#~ "Don't retract when the travel is in infill area absolutely. That means " -#~ "the oozing can't been seen" +#~ "Don't retract when the travel is in infill area absolutely. That means the oozing can't " +#~ "been seen" #~ msgstr "" -#~ "No se repliegue cuando el recorrido esté en zona de relleno " -#~ "absolutamente. Eso significa que el rezago no puede ser visto" +#~ "No se repliegue cuando el recorrido esté en zona de relleno absolutamente. Eso " +#~ "significa que el rezago no puede ser visto" #~ msgid "" -#~ "Enabling this option means the height of every layer except the first " -#~ "will be automatically calculated during slicing according to the slope of " -#~ "the model’s surface.\n" -#~ "Note that this option only takes effect if no prime tower is generated in " -#~ "current plate." +#~ "Enabling this option means the height of every layer except the first will be " +#~ "automatically calculated during slicing according to the slope of the model’s surface.\n" +#~ "Note that this option only takes effect if no prime tower is generated in current plate." #~ msgstr "" -#~ "Si se activa esta opción, la altura de cada capa, excepto la primera, se " -#~ "calculará automáticamente durante el corte en función de la pendiente de " -#~ "la superficie del modelo.\n" -#~ "Tenga en cuenta que esta opción sólo surte efecto si no se genera ninguna " -#~ "torre principal en la placa actual." +#~ "Si se activa esta opción, la altura de cada capa, excepto la primera, se calculará " +#~ "automáticamente durante el corte en función de la pendiente de la superficie del " +#~ "modelo.\n" +#~ "Tenga en cuenta que esta opción sólo surte efecto si no se genera ninguna torre de " +#~ "purga en la cama actual." #~ msgid "Enter a search term" #~ msgstr "Teclea un término de búsqueda" @@ -9769,16 +9925,16 @@ msgstr "" #~ msgstr "Error en la línea %1%:\n" #~ msgid "Export Sliced File" -#~ msgstr "Exportar Archivo Rebanado" +#~ msgstr "Exportar Archivo laminado" #~ msgid "Export current Sliced file" -#~ msgstr "Exportar el archivo rebanado actual" +#~ msgstr "Exportar el archivo laminado actual" #~ msgid "Export ok." #~ msgstr "Exportación correcta." #~ msgid "Export sliced file" -#~ msgstr "Exportar archivo rebanado" +#~ msgstr "Exportar archivo laminado" #~ msgid "Extruder position" #~ msgstr "Posición del extrusor" @@ -9793,19 +9949,18 @@ msgstr "" #~ msgstr "Filamento N XX" #~ msgid "" -#~ "Filament to print support and skirt. 0 means no specific filament for " -#~ "support and current filament is used" +#~ "Filament to print support and skirt. 0 means no specific filament for support and " +#~ "current filament is used" #~ msgstr "" -#~ "Filamento para imprimir el soporte y el faldón. 0 significa que no hay " -#~ "filamento específico para el soporte y se utiliza el filamento actual" +#~ "Filamento para imprimir el soporte y el faldón. 0 significa que no hay filamento " +#~ "específico para el soporte y se utiliza el filamento actual" #~ msgid "" -#~ "Filament to print support interface. 0 means no specific filament for " -#~ "support interface and current filament is used" +#~ "Filament to print support interface. 0 means no specific filament for support interface " +#~ "and current filament is used" #~ msgstr "" -#~ "Filamento para imprimir la interfaz de soporte. 0 significa que no hay " -#~ "filamento específico para la interfaz de soporte y se utiliza el " -#~ "filamento actual" +#~ "Filamento para imprimir la interfaz de soporte. 0 significa que no hay filamento " +#~ "específico para la interfaz de soporte y se utiliza el filamento actual" #~ msgid "Filaments Selection" #~ msgstr "Selección de filamentos" @@ -9826,13 +9981,13 @@ msgstr "" #~ msgstr "Filamento limpiado" #~ msgid "" -#~ "Force cooling fan to be specific speed when overhang degree of printed " -#~ "part exceeds this value. Expressed as percentage which indicides how much " -#~ "width of the line without support from lower layer" +#~ "Force cooling fan to be specific speed when overhang degree of printed part exceeds " +#~ "this value. Expressed as percentage which indicides how much width of the line without " +#~ "support from lower layer" #~ msgstr "" -#~ "Fuerza al ventilador de refrigeración a una velocidad específica cuando " -#~ "el grado de voladizo de la pieza impresa supera este valor. Expresado en " -#~ "porcentaje, indica la anchura de la línea sin apoyo de la capa inferior." +#~ "Fuerza al ventilador de refrigeración a una velocidad específica cuando el grado de " +#~ "voladizo de la pieza impresa supera este valor. Expresado en porcentaje, indica la " +#~ "anchura de la línea sin apoyo de la capa inferior." #~ msgid "Fragment Filter" #~ msgstr "Filtro de fragmentos" @@ -9854,12 +10009,11 @@ msgstr "" #~ msgstr "Altura:" #~ msgid "" -#~ "Height of the clearance cylinder around extruder. Used as input of auto-" -#~ "arrange to avoid collision when print object by object" +#~ "Height of the clearance cylinder around extruder. Used as input of auto-arrange to " +#~ "avoid collision when print object by object" #~ msgstr "" -#~ "Altura del cilindro de separación alrededor del extrusor. Se utiliza como " -#~ "entrada de auto-organización para evitar la colisión cuando se imprime " -#~ "objeto por objeto." +#~ "Altura del cilindro de separación alrededor del extrusor. Se utiliza como entrada de " +#~ "auto-organización para evitar la colisión cuando se imprime objeto por objeto." #~ msgid "Import 3MF/STL/STEP/OBJ/AMF" #~ msgstr "Importar 3MF/STL/STEP/OBJ/AMF" @@ -9876,12 +10030,10 @@ msgstr "" #~ msgid "Inner wall speed" #~ msgstr "Velocidad de la pared interior" -#~ msgid "" -#~ "It seems object %s needs support to print. Please enable support " -#~ "generation." +#~ msgid "It seems object %s needs support to print. Please enable support generation." #~ msgstr "" -#~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active " -#~ "la generación de soporte." +#~ "Parece que el objeto %s necesita soporte para imprimir. Por favor, active la generación " +#~ "de soporte." #~ msgid "Line type" #~ msgstr "Tipo de línea" @@ -9893,11 +10045,11 @@ msgstr "" #~ msgstr "Distancia máxima de desvío de viaje" #~ msgid "" -#~ "Maximum detour distance for avoiding crossing wall. Don't detour if the " -#~ "detour distance is large than this value" +#~ "Maximum detour distance for avoiding crossing wall. Don't detour if the detour distance " +#~ "is large than this value" #~ msgstr "" -#~ "Distancia máxima de desvío para evitar cruzar el muro. No se desvía si la " -#~ "distancia de desvío es mayor que este valor" +#~ "Distancia máxima de desvío para evitar cruzar el muro. No se desvía si la distancia de " +#~ "desvío es mayor que este valor" #~ msgid "Module" #~ msgstr "Módulo" @@ -9936,14 +10088,13 @@ msgstr "" #~ msgstr "\n" #~ msgid "Plate %d: %s does not support filament %s.\n" -#~ msgstr "La placa %d: %s no admite el filamento %s.\n" +#~ msgstr "La cama %d: %s no admite el filamento %s.\n" #~ msgid "Plate %d: %s does not support filament %s (%s).\n" #~ msgstr "\n" #~ msgid "" -#~ "Please check the following infomation and click Confirm to continue " -#~ "sending print:\n" +#~ "Please check the following infomation and click Confirm to continue sending print:\n" #~ msgstr "\n" #~ msgid "Please fill report first." @@ -9969,23 +10120,20 @@ msgstr "" #~ msgstr "Selección de la impresora" #~ msgid "" -#~ "Purging after filament change will be done inside objects' infills. This " -#~ "may lower the amount of waste and decrease the print time. If the walls " -#~ "are printed with transparent filament, the mixed color infill will be " -#~ "seen outside" +#~ "Purging after filament change will be done inside objects' infills. This may lower the " +#~ "amount of waste and decrease the print time. If the walls are printed with transparent " +#~ "filament, the mixed color infill will be seen outside" #~ msgstr "" -#~ "La purga tras el cambio de filamento se realizará dentro del relleno de " -#~ "los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -#~ "tiempo de impresión. Si las paredes se imprimen con filamento " -#~ "transparente, el mezclado se podrá ver en el exterior." +#~ "La purga tras el cambio de filamento se realizará dentro del relleno de los objetos. " +#~ "Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión. Si las " +#~ "paredes se imprimen con filamento transparente, el mezclado se podrá ver en el exterior." #~ msgid "" -#~ "Purging after filament change will be done inside objects' support. This " -#~ "may lower the amount of waste and decrease the print time" +#~ "Purging after filament change will be done inside objects' support. This may lower the " +#~ "amount of waste and decrease the print time" #~ msgstr "" -#~ "La purga después del cambio de filamento se hará dentro del soporte de " -#~ "los objetos. Esto puede reducir la cantidad de residuos y disminuir el " -#~ "tiempo de impresión." +#~ "La purga después del cambio de filamento se hará dentro del soporte de los objetos. " +#~ "Esto puede reducir la cantidad de residuos y disminuir el tiempo de impresión." #~ msgid "" #~ "Push new filament \n" @@ -9995,15 +10143,15 @@ msgstr "" #~ "en el extrusor" #~ msgid "" -#~ "Record timelapse video of printing without showing toolhead. In this mode " -#~ "the toolhead docks near the excess chute at each layer change, and then a " -#~ "snapshot is taken with the chamber camera. When printing finishes a " -#~ "timelapse video is composed of all the snapshots." +#~ "Record timelapse video of printing without showing toolhead. In this mode the toolhead " +#~ "docks near the excess chute at each layer change, and then a snapshot is taken with the " +#~ "chamber camera. When printing finishes a timelapse video is composed of all the " +#~ "snapshots." #~ msgstr "" -#~ "Record timelapse video of printing without showing the toolhead. In this " -#~ "mode the toolhead docks near the excess chute at each layer change, and " -#~ "then a snapshot is taken with the chamber camera. When printing finishes, " -#~ "a timelapse video is created from all the snapshots." +#~ "Record timelapse video of printing without showing the toolhead. In this mode the " +#~ "toolhead docks near the excess chute at each layer change, and then a snapshot is taken " +#~ "with the chamber camera. When printing finishes, a timelapse video is created from all " +#~ "the snapshots." #~ msgid "Reduce Triangles" #~ msgstr "Reducir los triángulos" @@ -10055,27 +10203,24 @@ msgstr "" #~ msgid "" #~ "Spiral mode only works when wall loops is 1, \n" -#~ "support is disabled, top shell layers is 0 and sparse infill density is " -#~ "0\n" +#~ "support is disabled, top shell layers is 0 and sparse infill density is 0\n" #~ msgstr "" #~ "El modo espiral sólo funciona cuando los bucles de pared son 1, \n" -#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la " -#~ "densidad de relleno dispersa es 0\n" +#~ "el soporte está desactivado, las capas superiores de la cáscara es 0 y la densidad de " +#~ "relleno dispersa es 0\n" #~ msgid "Successfully sent.Will automatically jump to the device page in %s s" -#~ msgstr "" -#~ "Enviado con éxito. Saltará automáticamente a la página del dispositivo en " -#~ "%s s" +#~ msgstr "Enviado con éxito. Saltará automáticamente a la página del dispositivo en %s s" #~ msgid "" -#~ "Support layer uses layer height independent with object layer. This is to " -#~ "support custom support gap,but may cause extra filament switches if " -#~ "support is specified as different extruder with object" +#~ "Support layer uses layer height independent with object layer. This is to support " +#~ "custom support gap,but may cause extra filament switches if support is specified as " +#~ "different extruder with object" #~ msgstr "" -#~ "La capa de soporte utiliza la altura de la capa independientemente de la " -#~ "capa del objeto. Esto es para soportar la brecha de soporte " -#~ "personalizada, pero puede causar cambios de filamento adicionales si el " -#~ "soporte se especifica como un extrusor diferente con el objeto" +#~ "La capa de soporte utiliza la altura de la capa independientemente de la capa del " +#~ "objeto. Esto es para soportar la brecha de soporte personalizada, pero puede causar " +#~ "cambios de filamento adicionales si el soporte se especifica como un extrusor diferente " +#~ "con el objeto" #~ msgid "" #~ "Switch to rectilinear pattern?\n" @@ -10090,71 +10235,64 @@ msgstr "" #~ msgstr "" #~ "¿Cambiar al patrón en zig-zag?\n" #~ "Sí - cambia automáticamente al patrón en zig-zag\n" -#~ "No - restablecer automáticamente la densidad al valor por defecto que no " -#~ "es del 100%.\n" +#~ "No - restablecer automáticamente la densidad al valor por defecto que no es del 100%.\n" #~ msgid "Swith cloud environment, Please login again!" #~ msgstr "Cambiar el entorno de la nube, ¡Por favor, inicie sesión de nuevo!" #~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Found following keys " -#~ "unrecognized:\n" +#~ "The 3mf's version %s is newer than %s's version %s, Found following keys unrecognized:\n" #~ msgstr "" -#~ "La versión %s de 3mf es más reciente que la versión %s de %s, se han " -#~ "encontrado las siguientes claves no reconocidas:\n" +#~ "La versión %s de 3mf es más reciente que la versión %s de %s, se han encontrado las " +#~ "siguientes claves no reconocidas:\n" #~ msgid "" -#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade " -#~ "your software.\n" +#~ "The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your software.\n" #~ msgstr "\n" #~ msgid "The Config is not compatible and can not be loaded." #~ msgstr "La configuración no es compatible y no se puede cargar." #~ msgid "" -#~ "The firmware versions of printer and AMS are too low.Please update to the " -#~ "latest version before sending the print job" +#~ "The firmware versions of printer and AMS are too low.Please update to the latest " +#~ "version before sending the print job" #~ msgstr "" -#~ "Las versiones del firmware de la impresora y del AMS son demasiado " -#~ "antiguas, por favor, actualice a la última versión antes de enviar el " -#~ "trabajo de impresión." +#~ "Las versiones del firmware de la impresora y del AMS son demasiado antiguas, por favor, " +#~ "actualice a la última versión antes de enviar el trabajo de impresión." #~ msgid "" -#~ "The model has overlapping or self-intersecting facets. I tried to repair " -#~ "it, however you might want to check the results or repair the input file " -#~ "and retry." +#~ "The model has overlapping or self-intersecting facets. I tried to repair it, however " +#~ "you might want to check the results or repair the input file and retry." #~ msgstr "" -#~ "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado " -#~ "repararlo, sin embargo, es posible que desee comprobar los resultados o " -#~ "reparar el archivo de entrada y volver a intentarlo." +#~ "El modelo tiene facetas superpuestas o auto-intersecadas. He intentado repararlo, sin " +#~ "embargo, es posible que desee comprobar los resultados o reparar el archivo de entrada " +#~ "y volver a intentarlo." #~ msgid "" -#~ "The printer type used to generate G-code is not the same type as the " -#~ "currently selected physical printer. It is recommend to re-slice by " -#~ "selecting the same printer type.\n" +#~ "The printer type used to generate G-code is not the same type as the currently selected " +#~ "physical printer. It is recommend to re-slice by selecting the same printer type.\n" #~ msgstr "\n" #~ msgid "" -#~ "This object will be used to purge the nozzle after a filament change to " -#~ "save filament and decrease the print time. Colours of the objects will be " -#~ "mixed as a result" +#~ "This object will be used to purge the nozzle after a filament change to save filament " +#~ "and decrease the print time. Colours of the objects will be mixed as a result" #~ msgstr "" -#~ "Este objeto se utilizará para purgar la boquilla después de un cambio de " -#~ "filamento para ahorrar filamento y disminuir el tiempo de impresión. Los " -#~ "colores de los objetos se mezclarán como resultado" +#~ "Este objeto se utilizará para purgar la boquilla después de un cambio de filamento para " +#~ "ahorrar filamento y disminuir el tiempo de impresión. Los colores de los objetos se " +#~ "mezclarán como resultado" #~ msgid "" -#~ "This setting stands for how much volume of filament can be melted and " -#~ "extruded per second. Printing speed is limited by max volumetric speed, " -#~ "in case of too high and unreasonable speed setting. Zero means no limit" +#~ "This setting stands for how much volume of filament can be melted and extruded per " +#~ "second. Printing speed is limited by max volumetric speed, in case of too high and " +#~ "unreasonable speed setting. Zero means no limit" #~ msgstr "" -#~ "Este ajuste representa la cantidad de volumen de filamento que se puede " -#~ "fundir y extruir por segundo. La velocidad de impresión está limitada por " -#~ "la velocidad volumétrica máxima, en caso de ajustar una velocidad " -#~ "demasiado alta y poco razonable. Cero significa que no hay límite" +#~ "Este ajuste representa la cantidad de volumen de filamento que se puede fundir y " +#~ "extruir por segundo. La velocidad de impresión está limitada por la velocidad " +#~ "volumétrica máxima, en caso de ajustar una velocidad demasiado alta y poco razonable. " +#~ "Cero significa que no hay límite" #~ msgid "Timelapse Wipe Tower" -#~ msgstr "Timelapse Torre de limpieza" +#~ msgstr "Timelapse torre de purga" #~ msgid "Translation" #~ msgstr "Translación" @@ -10172,10 +10310,10 @@ msgstr "" #~ msgstr "Esperando" #~ msgid "" -#~ "When recording timelapse without toolhead, it is recommended to add a " -#~ "\"Timelapse Wipe Tower\" \n" -#~ "by right-click the empty position of build plate and choose \"Add " -#~ "Primitive\"->\"Timelapse Wipe Tower\".\n" +#~ "When recording timelapse without toolhead, it is recommended to add a \"Timelapse Wipe " +#~ "Tower\" \n" +#~ "by right-click the empty position of build plate and choose \"Add Primitive\"-" +#~ ">\"Timelapse Wipe Tower\".\n" #~ msgstr "\n" #~ msgid "" @@ -10191,15 +10329,11 @@ msgstr "" #~ msgid " Object:" #~ msgstr "Objeto" -#~ msgid "" -#~ " is too close to exclusion area, there may be collisions when printing.\n" +#~ msgid " is too close to exclusion area, there may be collisions when printing.\n" #~ msgstr "\n" -#~ msgid "" -#~ " is too close to exclusion area, there will be collisions when printing.\n" -#~ msgstr "" -#~ " está demasiado cerca del área de exclusión, habrá colisiones al " -#~ "imprimir.\n" +#~ msgid " is too close to exclusion area, there will be collisions when printing.\n" +#~ msgstr " está demasiado cerca del área de exclusión, habrá colisiones al imprimir.\n" #~ msgid " is too close to others, there may be collisions when printing.\n" #~ msgstr "\n" @@ -10214,12 +10348,11 @@ msgstr "" #~ msgstr "normal" #~ msgid "" -#~ "normal(auto) and tree(auto) is used to generate support automatically. If " -#~ "normal or tree is selected, only support enforcers are generated" +#~ "normal(auto) and tree(auto) is used to generate support automatically. If normal or " +#~ "tree is selected, only support enforcers are generated" #~ msgstr "" -#~ "normal(auto) y tree(auto) se utiliza para generar soporte " -#~ "automáticamente. Si se selecciona normal o árbol, sólo se generan los " -#~ "soportes" +#~ "normal(auto) y tree(auto) se utiliza para generar soporte automáticamente. Si se " +#~ "selecciona normal o árbol, sólo se generan los soportes" #~ msgid "the 3mf is not compatible, load geometry data only!" #~ msgstr "el 3mf no es compatible, ¡cargue sólo los datos geométricos!" diff --git a/resources/i18n/es/OrcaSlicer.mo b/resources/i18n/es/OrcaSlicer.mo index 1bb8e90306296ad8ea0081b6ed67ce4f2a54c176..c78460c57394926e3661a94e2d01e957a1090f63 100644 GIT binary patch literal 278406 zcmXWj2i%X<|M>CGJ#31slyTd8?~%Qey)rT~q9jxrgowxgo@9XtBr^o;Ie}2z(o$HMEd7pEA?vI<}SEWCi@W1SdL}4i0Ig#j*3s-tEk+|b< zB9Ve)FdL4;Yj7eK!^f~GZoxKq3F~6BPZNnIcrRXoZ(t7GiR17P+HTt;)W!DL0_R{k z+=o^05)Qy}pCuA$_%Jfm#2l=SOR+tEg!M7s=ZQpB?1+W%0nCYy;kCFLoyS%zfV-mK zU{=bPFgKz(l$$_rz81G)}pF+ZM1$CK@=FrEVFxHFJ6O4PzU*c^*tcf1qt zMCbVv8sE!U3DZx6b*PTE+W-q<8=Qp$usfc@Yq81K%o+Ql^E-!Luk%eJF%P?9FZ>z{ zWBqRviOkp&jembMt|QQR-iPMFwCG%P-It*AU5#n@7CNv0q4V93K6et$i(k<3Uqai> z{9TAg?r2dou9eXC+n~?&M8`7-uf(xvI}f7$JreJ)Li>9aZT~H_-VPjz2hed{cQWKd zm*}wQ{b>B>qxGJ_Lijqm9{bVuKgZD|<~L|RU4IDo`=QSb!8E)Fy*~kq;&d#6tFa7j zN9S`2Z^FN@Ki>Fbc^=4>1=A-NKG}`_abX+^J9)5}D zfBsV;uUlgS%G0qHZpD>&5kJJGr^C53;O9hQ0p)p^2{X=w{Za;<-+edNou5a~ zk$2I4zrdMz2Hnr&FUEDivXq}g=l=;hpWm<@UPR;9^p7yFc4#~XqvM>6O>qG_&jXkb zze3}60qy@k%!_&c4EwM&TE9G+7j@9MG)4RCjIPs-Xg|Zzc;6Gtv(e|5qtC5H=k*5q zemR7bvEwCj8TaB8%YSj!;XZr~KmI$BxD6k;9Nzb*aSY`F|Ag~@KTf0E`rlCAg%470 z`d=dP5N=1u+m5%Q@#~6?<1TdG^U*jwjaT3XG=JVk*L6D@mv7MZyof%Rnv#-ypX9@< zDOW=4wZZ~;Bih~_SO_P@>yM-7z{_Yqo6&mjpzZI*g7_J}j=!Soy(Tp!@i=Zk*P~5Z z7OcLQ4gU0jcc;`PayLVOpX&#gn-dl#MW z=kfjtG|rdM@#W2&lFaiG(Yk2+9nf|Lqw9D#mcxhfX?z9ElkQou7#|jP8RYXdF+X`Fa-1W528^$NPa3m2;#d&w={rJbR(_N1*Y39F5~T^t{*+%ip5;^Di3D z^qgTFMbUZJz?#?!2jjh13BQbH%N5332aQi_biCcr^KK;8!Wrl|-bUxY2hGPr=zHuK z`us^;i|5dIEWaY|AM{+@jIQ5t?15RXOi5gi{n2r*#oBlbYhd2oDaoG)T4R06cVQiT z2_4t>v3zZwkUw3~aSun^nTCzDsu0g&X#O=oueZY)*a=;iBWOS0qVvBx zZx~m3^z&vv^tpS`b{;_EFgN-{y#72Ix6RRa&^&n`U8h6nxPL&~P0yE-D2*9tp0-BM zh0bWc^~H8L5Y2~mvAh$_ldJNF>y^=YUyrSE6#72di0-eC(DnNY9mfw?1^+@n=aesy zk|>F5aZoDjj$^TEq0r9L*M@a|9c_0Py1!1KmF#Y21D(B}qYGaQG0{@#Sn^9>w;htNE%RU*W%1$w`8EZ>Um+k3DqPC?Jl zwdj0zqtAaD%O}w|pGD*PSG=FOWJ+QL<@{*eC!u*i10DBbbiPlc@7p)feRu%t;+3Vs zd#4Q=?*Zt1mZ5QY3hnnfG_PJk+xsAT4DIhiG^KQ?e+8P?h0yb)Dq8Pm^!&I3E8;qI z-k+lT@DiHm*~*0dUKx$sV00ZPqUYIsG>@LeO1KT3|5(0LU_ z+pmR=zcIQ_9no{hyK_Ea8Okrz zXFik z9rrmjZrK}$bEg2he=4K%ZGf)d_0j%VjPhu#fRCW-^(ONF5+CvZ8PBXu!@6C8mW!kN zxNNi$8pkf^e21fPpBL{xiuSWEUjG<9Z}y{c&)qDXZ}rjVhN9!REtc;`=ldYK?z7Q( zFGAPn$#{JO+U_RwoVYM%?Klj-#oE}uO_=9oEKB)O9D?tl z<15iNCHZ|?ZEQk$8s3HPV^wU>E{tO&`Z;L^I*(`2c)y0uV>ddlPtpDI9UAXn+&o5+~0T~X6X?2`-5m4 z&!PRK-4OOue)M`poPmwde%?pVn^SlvcI+6&za4L*d<2bG%T8f@z0h{=NB8MmERWCN z-M9xQV9U-SE?d!j+l#K#cj!FQyM%VGK>N)=&-F*KGCqN&a3>n~Gtqz0dbzstc^t1o z+rJYJ<4iRE1GpF(K83TWQdigrNbJ_OzOqtSK0 z8{KEq&^&nxAIG=Q{n(>NX!ka>{zOckJ6MJCqIiEBI^TnsLZ1AI-6;RnGknhO*ei^C z8Cq{87RMd95r06}b9ry(&-2^R@~1b3_rYa+p7I-gLOu=Z8`>L*nYcb0o!?#P_$H(C ze>h%WiN*hax})P5 zj^^!Xw4KT5`LGZ@2VX+->JxN)zo6@p^`028JY**q3xbV+r1o39}w~|C(h$~2AX#-q5W<|pL-MC_q)*d%vp52 zR}BpHN~8T$#5Amd_Fo5$b93yEoze65MRdQsgSN9LUO$1ha~7S)MZ6W$28HrybU#l( z+g%u48GR8whu%i#u>+m&$FY1MdIatNOLV<|M&ns%aA>y%eowh6I-asOhx=8~=h~og z?}Zg`5LU!F@%|Qc{5#Qlhtd816;{LZXnvF$62{pK7gKJH8}JKsTr-EJBwFESY>k&= zxy3L(PqBYyVhyf;K0NHhoVSF}_X9CUD*FIyQ}6YWVVq}fO-X*=e)Vl(JiE|%eTB~R zM>J2*qUXYuqr!TXLD#c(v>CduZoqu_AR51=X#T&9&UYKSPM@N2`wm^d3-NyT+r#yu zcoWyF;6peUt7G2Lw9oikp?TQnj?mw&Xx>al&$C6CfiI!+*oQOm2wHE@m@uw8(RQYz z<6Da6$$E5tFQemq8~yq5V|2VfqWkY(biM_~1}kC)<)&zRgV23_7g~QldVa3K(s%?t z5B@>pS9n}_k95J>lqaEa+7#V^?(4&7Tu;REIjlqZAGDoXccvt+!x8BGo=4Yj3%cL- zqVqV8ws#?x|3k-}|E>_n@@PM;&~|#E^SK3!<5aYr)o9$`Li79x8kg^|GG0RaEqizP z9-$6ez8!6MA~wKzSPehI4Ezfn&$Z*jzO9P3UpLwkAEn#{?e7P4y)L8qlKr0Wb8#ay zjtkH@tU~K=iP!f;kD>jYiKg5e_CtR3+$f5+UnW`$UBBjN`-9N@8H488-RORriNhFjqCAOG=G=hAI{@7 zXxv^z*YhoO-S?pJ|194B37!ANSk68njH4iWy*WDHp6K&;q3upa$1yivUyAO#r_u4R zjn`jC^JN=4pU=?ej>Y>wpyNA-&M$ppXr~}ruP7S7a9z)+>(;f)VJ&)$`tI(Dix- z9pCHdy!W8vIEm)}IduKAJQ(J4HTqn2G>)y%_;yC)-vjM$0Ge;ZF`4IRzcbP2A4ltL zK-<}betvil?f--5L99ag1o}DQ%Bi7#UQDicESE!GUx}J%yLHfh8>8{=f{teZIHqxBz)z7;(lO_`CBJReKpU({=b&cEry!A{Ye zqNC9BXF_yo^wsDdbUZ&|Gt4FuA^zFWa^C1Q zXuOM~>rg+IuS5Ikf$qPd=;y;J=sJ9beh#@1@8_Ex_F*+NPCf84-hc+$7o`1xPLVouQKSonxT2z2F>rTXnVuZeLo7#le^Kpn~$!?6X^46 z(S7t1ns*z~JpKT!_X&DlAB+BkzF&Vw_e;Tf;rUW%z4GXDwbApWC0g$&nomDO^F0#E z&7!xX=fN^`ey^b8-;JJUhcWr{2s)3f^FzI>&~u_PTE8(SG=wtF`EJ@1gx3LgVli+W+Zz{de^Jlvo(X zT?~zP19V&+&~u~1uT!> z$NRY#hjqCYGq_$39dA2y9lD|OAAyc<44PMWqy0`q=eYzO*VEBgF`37h!S#LUcz(mO zcp05vsYk>2@MG{t%A0T+u2>TKDY-OQ0o^Cn(SBN@?RAgk0XUWNXtdsWtcjT)3*T!s zzzoV0(ebW8$F~lR{}wbpAEWb5e>|+yHPQO$y7Wfp-xu$|!RYe`(Y!o~jqpD-9~wOo z?srD>ZE$oPj-)&djmKHEe!*p7d==5S*G2bDlV}IbpnM}5hx^cav(R;0h_Tza$~U3yY(?j_AN@JvGwg&Hu@<&|GW`5^KYIT$bboKgGPnaf;?J0Y z4OfJG>4%Pg5SlNyqvzoabRE{k`u> zU#x>8(Rr^z&*#l({ZG-jokI7~IW&HMqx&e+%J4b0BD!CXpwC^zv6y{T{QQf}D6hd; zcnW9WT~CMe{~t82C7ucEUmoqJ0UDQ<==s|vmV2S|91_cSp!qxzZD&3@pQUL2zkue| z>u5Z7#_~}tNBJ~5?|jdO`PM?`+X#(QD|8=p$MQHhUY`?PhQ?_f`rNDN`n`q5<9IBe zL+6oyb!hKe^gUS~eXbQc?vCg=ax?mVy9FKpWPAV@pm~}5Ij*Ph=h3)>^0eo}{MxSx z>)a2G$8FJZXg~L%o^FJGUbzXc$G5RGX5A3xTLoKC?tsQ)K9u4hm3S+hD~-|hy$L;Um!SRbLEArq z#^-x&~Y6=<9Q0r!%Jwr zOxsct<1r`N-ZV5$v(R>zqwBE>?SDPm|7+-bZ98_wZ?F~C-X6|_`_X!axYT!YT@?RbAX zy6%V2d0s&CBl8ELem*ph%0;h3$J;e}Gx|C0PPE;5Xr4Wa#$^Q>=NDu79jr=uPxK%3 z{Hpw6urC^yndm%L#`61EhVmC^|EW8}`0}FbSr%QdCTM@HqTSJP+#DT;&TlGu?k_;! zzsu2h{|~MIA==LobY4G3&!Y7%qIvr-I{!i+h4yNqacqn}-x+Oh5ZccebexN$PoU#i ziOq05*2ObuzLfqroHy0cb?k$#<0y1prl8|ng4TZ$o&VZc-h!^j`{+9FLC1dv9pCSm zikWw%Bo1OWG@i$zzoYN(T)RVlRz$~J4eh@nnundydG?RjN5%4kXnPCM^KTs*{}0je z9!8)48Y|*2Xk4$^6V|^r8m}9%EDk{H&p^+C#prpn8J*8=bX>>Kc%DP|Rjp4#9O|R} zH;;Bk+rJ5Yeh3=RyU>0nL}$k9OVIg08LzKF``?7F`!2NoV`#n8@%}}0{c`RN@hFDw z*Scu_bc@$Vp>cc&UFS!!KCX>^8?P7H7w%U_=hq62XM1$Ld!pkRfR1kry02!S>#+jM z<7TwK6Xqu1in!xxQEh z??wAtgZ94(UAMhxyuLu|pGDUv*QcSsx@i7%iw;AdzZczCi_rJa%jo*-MbCjh(0FA& z5`Lbng~oX*n&)$|4K7CG@+JD*N!*SXVtLDFA%8wZ=XD$%-?wPoa(y1glQ&u!t=9&f zZwGX}ZbaL^H(q}jo&Tda09WBOOgYM*ck-T_jy)*v`6BdF^2;#(@>qxKHPQFw$asA! z+TL8OkB`UlK{P+VLihO(=(zsGiJ0kFxIPtK*Tu2?EZ#(U6Iwst@i30!=zc1T6|phe z?npFW?nn3kl6ZX;8t+%J6TX42L$ghjK1uu-_GuM#KK=1d zoQ00-KQw=H|CEyW0E?mV`5x{6XKaP%(R%eyg?ws@?yuhHIWY*0^Eh-~lhJu@M)T%t zG;Tkm`#y0xJeL<8M`?8YbXuX4nZ?X!Le;{^M~u{Z7Oal&|?Utn=S!{cC><@hycdDR;%5xHMk> z1u-+|8e(^xKcAtkYu zay2x*=g_>)^m{nhdZBqS1>MiDp#ASg_x*7+{=dial@~*t%3uc9TVWX-hCV+xme-); z+lyuKG}><7Kf*pJjmDt?I{)VA{_KpEaab%bM&EDi(DUSnc)jkQp}!l@ao&Qi-z02; zE6{v9j-JQ)E`@cjg?=umkGEkLwEuVUO5BZpe*F?N@IUnY&-g3sul8uZ_e4KW4n^mE z3);?9bRRB=K8enIE!yu}(Szvw>@+&>tbd2+i=y+XgyvHVG+#TQ@#=-H;{a@iW6|?x zBi6+q(R|Ce9Ns76@d3(v(DS6jKPico_!F+eS^tJStMp%(Z+o1`^;_{F>)|LI&1@Io zG3;nLB{jJo@8Vp_SEQyU9>(REfu++@llk8oJ)dWz&wqrDyKj1G^81G;(fIy?eemi` zsmb$b9R82;N}PuSGp8nhU-T@R58bn*CjY+L0yN)qWKB)}{n+k!59RIHK85cqv!y2Y z(Twb=$=`!qjpjuOerc!__D1u6BAP!N(0J~S_Y*l&lixp;#yVW@gQal+evGf<+xTFv z)a366Hn}1-(Ug7{VJ$p#Wolw6_p{|mO@1%53Nt9@yehO;8Ske&1iRx2Y=yP+rY659 zyC1tyK8#*3n=du_z8ZytDZh#Jut@%}E$Qyuk zOJs!cyo~P0-_Xw=|6yayRy^cUTQu)B;8r|>3-R$1A&)DS4D;NCuFs$7df!&vAkPGHXRA)aT@>-j3ACeN$GXgm2U zrY3*Cr#oJxJRM!fiIsvMqxA|_PEG8^p7;xvsS@IvziMjo`^4es{b$hqFs@o^@_hRl zecxS<<&^5F$?vQ3p!wAUjn^`ComQju|G-Rm8B;N}Mr!i!tz<&arv>PFwH&+RYV;iX z6Me6Bsu|iHh>mL{=EDZHLcVoE_v3i<`f{vw%-EH#~aaj4M*D@i;n97bYIQDhWIf$-^_JGJGn74<>Ki3xE$Jlb9BFT zLfadKK6h^{PetoLf`xHy^aJ#L^lkKSyqa>}dZC?4=(y^k?KQ(I@p^PU`l9n3h`#@Z z#qt#Nxf$ql^P^9o&pnIwvlcUO8`{pd==<#_w4dLwIHuGOaVv?=zdCxqUM#mo^QjZs zU$F+^etC3U_0jQkkM>8~8HQzW6q*l<(RQCfq~T=c^ilPDT&srhAG$poo6HTd&yR4-j6`@crx1W5_BA^ z(RF(heQq0;!(C{6FQDstZIdv*;^=tFpzSq7&$nJ^{b$krv;b(@qt1{%zWabGj3{&WkX)?$PJa^I#(yhplLQccbzA20d3UpmDBteYoBW z&9@O~{Rh$ZAH%BnWGwGN&(#BH`=6rieT{>#NQdxwZxY@_`F-?rc*z^W=d_#gLCVLl zHV*8VnplQQuoTwl6zccFA(WS*pC>M({nhUr_G3#tNVylfUn+J9dJYUn&+#c}o-IVrg%{DEE4HHf{52NG%V@o# z-NL#xK>KZu_R|*KH+|y$(da%KkLL3-G;iNPpW7cjf*F*L#qz&sd+FW7cnY9-ULGB9 zy=c2=pXjYuKzYPJ|D*WpP=W)H<*g&&^Y`a&DtY8cP*Mv8R-4` zXn!5harH&xa~s&?T4_$b={esq5MZw&c)HCn$4nkUzx&$U4N zZ;y_*2O7`8==*;xdTu;|&htqufzP4)V1YEmy*k1gsGnx99tXd9TF`%3H7; zevUU_YX9)LyfZeZyawCiX*B<8-4x=}3MW$TjJEp;cE)|^`B8j8$j8a(d9@xV;MeH* zZyFflGZ-6Cz6<-{%jkOL7!-a!>V)R|RCK+bLihKJ==?uG_x&MseCN>kr40`8&5718 zipIAN8kfdc96O@*??BtTHQ$jOOz!ydFQm$MCA5;k;ju=1cBj;pd7T z*o^Ym==GAr!+dYS9+YRH>u>_i$M4X%{EN=(id(||y#|eY6Lj1iU!}Lq9L#D#{13Bi?muxc)vqPWdOCic@b3`#sC3 zu$~pseN+=&r&j1V`k-+g5*>~1$NSLpbuO9@&!PMJMRXtTLgR2c`Zv0tbKD-*xft4C zWi%d5FatZI?Tu^N5}g%x(^Pc z?fn+baYs1MOQY92UsF=z4U&zlZjJ?Oh>1YM}MIU@07i zt#CHh$Ngyj=D0hY6N9iF<<#-Vc!y0%Vn_-#z!}GVG@%{l_r(e$4CZp%qBk1|F1l^Y} zpy%s(tc7(ah56ow=JTECdHN7K|7Xy3eGPrj?Z9&QV=U*H9O~CX_j_0LeL4W`cPM(E z+>h?B8R)t`AMfu*$Nx>d{|DNB!6_k5O|b*zKKOypp>etW!LWWaup;G6*bBc#-#_)I zhJ1PqJr7>TNw^gqN3&^R9D~rfO~-Zk1bV;KL*e>RtWNn}w4e28T#umZb{suts!b2$ zYKWe5-O+fC!?rjLjpv?t{}?*&%h5bDLLAGW`>-XtzU|QV2BPDfgvNPMEU!fO=SFnh z_M`DRi$0(A;b1W|?saep_Qj|096pN+XNK!_XYq3c=fo#?lIvH@NlpGjg)m*RqNI0ht;(E%X=BFk$VW9s{Zr_A|BlIXXKBcTGU&XUpw|bXF>h>F7AtqwBT@ zU9Zzv53@dzns^JFVO{(OZLjvS(0(5@UQ^KV&O+B^6}qoBq4C;*=JQ@`f_E+tf3C3+ zyHYOsWZ1WNqvz62bRLJ$_sEyATxLb+rwW>Ht)hL<^&X9$2Mh5@d>6-Hzo$Z6KSA^N z3v|5yq33^rm0=xPq4x)%`(Y}U!}XX6520~7imt<-=s2!e6+R!8#5*aE#Wwf@8poVax5*pXs&jbraOQ4@iD&j7zkB%eLvtj>Si`6NYz^d3C zZ^vnPBc8{mc*E-8JoLS@7wtdqbKzWXhs`N3!S?t$-hic^5Ahj`mAsD~aXYrftJZ`( z>5J~?MQA=ff#%=q@%l%&nesj~PiCwQ@9m}N{6EKT_$wNpmg_?NZ${%cB02$m{tNRx^9f+L+Co5Lg#xH-9LZeift2k)VLADYkS(Y(v_c39^E==Fx^_;0{^*b~i@N6_=_RWu*pMaOdh zeSe)m^W!pJjd|V)KVMZqpL-E)|IO%bG~UP2dH;j$u?R`z`Ev_;UcHQM@e_1D1^*Y~ zT@-D%6xx3^w7m{!9BxJT!*sOXB6Pe@q4hVQ=f+3qKKu`_!zw5#1r~D8)-RbeyNryuXC@ zlXH70S3=usg05fNSiUhj7(L%^#SDB5E8-jIxpflF!{zU%CjY&U&FFZB>2V(Tu<360~U z@%}0-M|l&v9>>vq$-Y0#rv%zhbu`Z#qWRn$&4)o~9*mAYf{yPcwEiaaoO(N!52AT^ zGBI2Jzl%s|h9%h()q z9uI%s(Fx7(Ip{o=q3@NK&^&k(U8mh>KAetTM(gMLDp(v#Qm&2W`;F*6T!?ot-WSk# z7Wq1?V<~if8=`S)hUQDZ=$+{KH3!{K+v4?ISc&qtXnVQ83Hz)d)}q`WZ@`6^1y7*! z{t>PJC%TUR#rxU54fD-|)+>zmR|#8TZETA7;|P2kop+hW}8(1Z;pa z(R1#7bbd$BJU)x&TjrDDdSNtvwXiDoM)T-lbRAyC^0*C)Xa4i3d#_eyk zUiyz=99N^|ifH~cL7(r8#-VS#KNcO=bj-lz*c0DD&xL$Hh5cI#`%u0Wjn4<@x$_GS z$AYKA?=?+A<8uhjqd)N$ta3WM@0a2z%5S3iQts#QJ@DPwhH~ne&~E$aIQ0Fn94q6d zSpGJ88I4E&U&8pSq4m37OBQ?m+W$3c8OU$GdPP8s`F+!ns!!t(WDm@O~(U!zedI^Z02ruCK=XTVnYT znvX}(^YAycoy6b4tI_>Y4IO7IbYI?p=Gg#r{ifn-T!%j2`EqFY7PS5(bR8F9U0fdT zAHtfHPh)rTq}V^Ysse9NDnmi+mkIF_K?0bAo}bY7d$ zeZCXj=U?Klcm|Ez@l0vS^*@icUp#ZLTC@q;PDgZJ1JQ9!L)T>v+U_%01UI7jbO6oE zM3%Jhc@-N_?1rUr9=h%u(RSWP_tO{AlW2aQ#p0MVYg+PiMHO`3?a_XFqU{Vv_uY7O zJ*LI$v*Yz;(KYBeH{t7e5S`ELY{5lnT$W)qd>O0b*XTI&W)JIA0e!9-reQs_|3>Jz z+TqRECzjtu+ue(PzW5GZmuxx0c#EL(D1~#eRxEEr&xr$QyT76Bq~;9kQV>1g%cJ|J z1{%kD==hqWKhL#C_hTn?KDVIf_Y-J-y@?IU&z)#H=~sktW=G#!Rnh!tj_t4uw!vlS zxV}Zle*uj{`jw%-JXncx1vGDaq2ry3kKr6VhNW|-CC{t0JZZ`A1L|QHz*wXA5bLhmpjmQmZ0(6fR6Vly3U!3hJ4P2_Ok=6e=K?dUGE&l!unK< z){C}6&#A8H=l2QdK6woN9JLvJkM2YF_i1#07Rm_YtAm#NVPm`(UGFVe6~Du#n6G$R z@_g-q#&a&3FMH8-_!7;tf6?*gDiPvP8S7JSj1BP~Y>6AudY90BQmABDhkEFH><08) zzZsp^?a^6i{pZlU*nzI!=ji_YC7QQXh-W>_;Cg2?FUFwpc@S&iN;Gc{V{`lkUH|H( zL%S`oH|5^g6kkE(eGVOe;WA+z8=?ECCE8DSd;^DK1{NzD+G~pL;~qE!XQ0phjIRG> zbbk5Dh5cOrojeU@deXy@IaGCai!5(ERxaKgFDN!};(nmZ6+lFSJ`e zdL6oMU81){CqmZvef?qt6^IG@OiNoR-)V+&98^h^YRtU!0)438iaDWXgjpM zkys#w?+wuLuWcCI68$jxDSFvblsjs*J}g14j-WL{}|1u-_d=Szj0df_bKY3<5-Jc{{XG` z6PCklO~UzE0~-;CF<6r8FE$NvJ%Fy$e`x;&nuYijL-$*iX#40ebbmY;%Zt!?y@clR zX0-pE=)8VJ^ZZw|-^;O_(LD5137uy{G{2jmacPM@-wVy#0cbvtkIq0pM=VAA-GRpS z2zuTgL)ZHhev6mTc^+#Key+F>E!#4b`$XrWaeEJa|NVsSx2&zg`sYRWe*<)01JO9$ zhUU-1=y|gOJqOmH!#Mk3L&{^&`E0wB5OA|I4v1zJ$i_2Q*)PL;K5r zeaMH(X#8rUac_k7(;Ll$A?P`MH`?w3tccH|{p~}?`4#rYoE_4VzehL}GqXQl!6&)C z<%WW*Uv?>cMatdXudQ+&-?CZ zeD=rt|Df^A-z~(uI6B_)(FW+cT#v?MG`il?(0o{o=JV5Nytm?D+=u2}&FA&Zd3uDn7DwB!h^|j3ybjl327Zr~F-yEyxg{FsyRi}OL(hX;y~4QiqH!#a z?(b&t`bcz~_n_-I1D)?m^jv=>-rs?)_aStBzmE4Wqvvn#-l2YFw4G*HAN!!|uo%s| z7try3j-IzUZVdCz7cGh{xn2(chodk9EB6WQbVTDa3|r&>(DlyTH{@-5yod6SXg`Dc zg?<)ca-X5+*-Pkpy@~0#6P@>-c>g$>2S1_n`5let75&3|H6I$cM(F+Pu{aJv^I|&I zz-4G2e}dM(fVP`?!5n?t{A(EheY zccSy!i?;s-8t<>sbLs+`Pq~ML`=!wP70|d{hqgBW&HrK83uj>){05Cjg`wfO2IxB8 zfX1aaI^RKPoF}03o{gRpPom>0G%UoY7`pCF(f(SY@5d47^OJD}K7#gBWq7bYnkOxB z5cWXF|2mp)pQGc=aZ6hA&&9i;@m+y4a0mJxyJ19H^85Q|u`K1I=yRzf!{@v9X#PyX zruZs0!1Fi+tK6EF{JpzH*oktH+rsxaqtN`=hMpTIu@#ma70!hbSdsE`csm}z3~Y9L z=x;C@hexp?zJSK}M|2K$W3o;-r~vjokfRoEOidOwx#^U;3(9Tz?)=Dsuh z+%yHvvyahr-XA@In<$^fd@1aQyV4S$QGWC8wB+xdFB+eg{C%>@_k?y2p!4|-2jdwu z4xR4}pM!2g&zA?W1I|asa||8tSu~!h_l5h{U_Hvi(erdAnosYb@2j)e8nfLW@~v}p zEH>l%Vs!qWqH!rSA>?T(wBOojzirU<>w~^0hG08fg(dJbI<6}whIY!J&sRtDq6MDA zK3EQKcp!Wab2l2-m6!#eNB8?nSQWS93_Op1PP~6oh~ENqU7tYDvo|mU4`6#dkH)$2 z_4ggno}a7{+xPi*r5y)G)5P=(w81ayN9`ebKlKM$d`c z(0GkS&*g_OnXhR7N74EhaTX?~h396Y^H_k!VI7(WucGJUduac=u?(KTVVLEiwB+wA z-;NoS_n`HEiT;JIOXlg}`J!n1HPCfyfUbLg^!;%Q8s~}V&pnIc^?fr!J15a`{)5i1 zz{6pk+n~?gh_3f&H2%}k^Y;cn{r22hjRoqwW3~%Xwyo@s>mDH$wBfBO1S3 zqj#bGPQna)G?q7G4a&Q*CjJ-8HD`tLF!X$R0;}VjX!}2-^U5|mtYZT-Uv9v%I2`T& z5wzdOF`2Ju{I;X>`3ybp&!X#*m=n&=oapoQ(E82MeCdV8Yb3hvPNU;UpBw65jjn4$biG@n?RLb0*f07{yk2x(c)wIa=Q|ZWm!HJ)xCPDc zZ_xgKM8|z0ma{w(=9L#qalHuIe{;0n4Va1p@f6;S?%$5{!~PhBRVXh&$NL_dH#^aF z`V5WdpJ?2(EeQLw7&`A}XuTfj`EnOpZw0y@8`1W5q3^>l(0y58VaSsPXuqS-_upM; zf3KmRKi|jF_!}DUf{ViQ)vyQU?&$OD(73&d=Jy_SoxViZ_W~Bjf6)5H7Ki*Ui{?Xp zG`=0t{`;WuyA>Vp185#Rjn3~~wB8}iz?10vF!Q5f9Hr3bnxJ`fGn(hq(YQQ=_WLGY zk9)BrUb`gpGZJlYI+~BqqW!H$$N4ropPiV2r(!wB(r`{yM&sEX9q&S{h-fw7v1@I5yxs{0Q&H-pkUGzb~;DjZ=~3Y01CG*brUcIcPpC zMxTEP-AB97@$N_W%V*Jl(Df?uWLU4(=z5Jn^KUvjpBK>aZ$8q^^#8!KVSN9s4*m9gE_@EX2|H2mR&@Q|Ligj5 zc>fd{??2Eu)O|kWX&1C!Uv$6Rj&pHREazGi##I!pR|UI= z>v0HO*Duk0_z}Beju*l{xCx!l3+QI8|qw(m1hw(-<&#G=rOa8m}P0;(9HidEJ!fKQ& zVO8vpwQw%h#BKNhUc}_NwK?q9x%d&+pF-m^;`OkO1V!U7QjgWs8aRK|L8G8TVo52fceDc2) zeoiio11J~A$v6e=H}&lhuPf0w6+_pnESg^((RuVi+Zz(S6)({5SoGW&{%-i5f5iX7 zIxR-y{1m!x_hBE*crRSPAMNi2bRTU**X?6;-bc|mp2doo*qWC7d&-s2`_G|qdJC)I zUVIe)jn@}%3+LY&wB796!|y>{gRav_G#;0+4)%LLtji+wd^w1&|5-F1S$2f$Rif?D z>%-8zor~r16|8|@USgvD_# zng=hT=ka@J-t0y5;0Su|{fsTK$?kBjOvBNX-$U2A+McxJzsoltU!h#+leFZ&SGNn- zQhs=ESjQUs!p|2yaURznz=fD=e_HbQ5m(|1l&?JyzBky3JtqBRC^tM5 zK2LmwjxYUiIG20jV#=$rBR2RnE&2PqGtvAxkAtzuk??)OWc-}+8~7A1`Ye3!Q}gq1 zemsqjbNv{)j^mGpcz%ORC?~!M=fhGop5>2)_uut+J>}2QeoG$@=WQo64`yO(d=|Zb z8a*HLe-*y3XouA)&&K2U4*rhIPoyP(?|b3bX^C;13xDEFyzSex#LL{j_+1$P^Cv@I z75F}U@6i(7zccVAEb>G6o_GR|rFDVA{5!BW<^N*2_o=kx z@3Ak$_FVrJ-^GTf!+QON?%&sb4*U5Cy6^wRs#xGm*hj6=`7TA<{|H-QiC@C_Z$a~K zJvPH%u^84k8`hyKHl+L$n(w85O-uf}8!fOp@!5*S@ceIS$$u{?@AbB|^!)w<9p}Gz54QL-tn1tOHRWG% z8y>h6zE6AfuaLLb{~dl`?QuND{Ti3U?_1^mC#=s-^m9?ef5SQOFn&jQJ^qCA|4U2! zhxhTVZFc5)UrKuN+5f_Ye%dc(4$C-?h`tm(<02mZxV*2|Wj+;?@erzg*$-Do_Hqwk-S*dPDK zA$Vhs^yGW*UF=4AC;IuVaL#bOG}2w7Dz3xo=(+VJ`d&SSH{u_78+OT+o;=6iMbE>% zm_`F%U(PFOpznoy(E2N|0KSKw>qpRf z=P?szxhjk|7dozDX#cg*IJHFQ)djO-f4l*2LGx)dI*+uxA$~bA8|5PCILe~^-hjqy z1p5A&gZ8r=U6=J(4&T5E_)RodzA(>vXq zKSASk2JJ6XkuZ+@X#GlPe%8jO*aVy5WHe8mAC5`1C86p8Ou*Nt{Z(Y~@3o=AwDA2z@`kjK=kw3hBxB_|ND%*R2@Nl_qE&^g!o1 zJYJuG#%p0LZ@?y$x1;AkTBXoW6?A>CN7rK{y1%ER@tGaVuVWhJx6%Fc9=d;b;TTM* z9NuH&a2n-p*aF*BNl*TLlG(VJa>1(MTz>)IrhFR9;hJjc$KS%TA2Q&|J)e3o%7tNCr=>95??$7Jc z_eD?4z&m1j0h%Z4(fXgq@)`8}y|#A9kH+YEdI#G6QgppmUz z3f2kptbvZVJvzV6SQdN4>l4xXQ_=He1^S+O8(qf((O=Mf%3e40UlyHbTlBd>X#Pw> z_tgTl-)GVBuS4VU3YuTLFcnY4>)%HILHA3+dLbUA(C6Bq?~_63xJIMjOV z_v8JK(EYX#-6uz}FJ@{G<~ImeQ@$M?f4+w4$v=lIkIr`-I^VhIdMrcN=@oQbyOC|3 zIEd!WVXTUOqIq7fQK(lB-LFls4NgLz`w(5vkI+2)9$l}$&~YcOi|-%wJS>RDvkaEP zdT2lW(Kw7k^Y0#XeO9A+u@xQvSLnX`9qlJq<8WT&Mf8{**-H*&K~yuUH;~&U+S%c*q9$Zx;)Dn51}_0o5`o`0t+N>sI5rigp(N`;0!$@r>Pe<+-EWzmK|K zQ+AD~aQ{Q@`{$JY=Q=i_p6iu^Yq#^iKjr^A^Gu&OcI!>2oqk+*{$DYMrnFOy|83lB zGf#f>NdEVK_TD-^uIuRk-?k~a%-r6%RbnTWYzNxJq1rMgrdW0oCr#azb|r1R+Eo@T z%T3dinVFfnDRWb1W@cvQ-}^H&=kDFL?4*7AJg@H`zx&ea9+)$S=giERbFS9klleU! z*y|JiS<*e0{18z}Rq#IwoKGd~8eq;2{7>TjlqipoyaGQ*F-xcNJ4*pPu$HB5;Mqjl zr{dQ07V_XIa_I?#J&=6fiTe@cb3Ndek@pq&TfFr=8vJMTMieYPlJuL2yA|o4Li`21 z^;F~ibJ9N-_(y~DhlJgcpVl=!_mB6NqQ3VA=62wC3-4Ef_sP8V+?6z!@cUwv^?AH6 z!+#6j8gn1v_cU-_L^<@FNB9#0_dR&ugx|d)?m1BhheZED-X8?lKGL9qu;(nwoSqLw z8O{ghG}3;YxCipC622zl9-n}D*8&IPi9JhzJy3|3^V{Ikb6;Rz%=Ha?|d&#idB z1em8sS?7V!nR=}!{f)tMvuFoJ z*TL}w!oJQ=&%-I#X9%0({Z;(0u~7P!{6>@~&*#YJiTpkU+!+z}jwm~9S!r36>jl96 z82^2!!=;huLkPPcxOH~_7=Bj^*n1K`Lm3_m-e=-|8R1)TUkvQi2>&Bt`&7ngk8e|# zhmrSph+oX_2gKi+__veawRt~|-}ea9b3Sg4$Ce%u?FZ{(YdS}MOUudQ6;TF`B9Im`%WJBmT{V|AaDp0yiq9(hnl7622nJc4>r(K3`55|H6;!DU99cA#oRz_D%Soh2R(&kbmU%cxg+o`zq~ zoq4YY{`-_+6L_vg`X#vae30-rfm5I#A?%*SW#sb$l_{QU5U=MiycZG9G3xw5Wuj%T z@A*yOz5+Zmz+Xfee*{EXc?YiBlHtq3eI9Us1m<(VJ_ES#?q~=Nx)8ms~zQ=0`Bpoy9aSUh%oWh;u+HO zF>qFZ`%>UM7uZh)uDcW0jJmHOpUvPt6+Cz2-5~B!z-9dI9p!yIb$Bpwp9T4+_;CzB ze|{Y}zY=dnyo+>?k8=GQ|2x8cuXz89u>FDibA(OvyMM%u6L$n<*hu+M3zn|Sdk622 z5q}bOX%qhq+_3beQ^@nTggpWHUs66jH^O~)a6cCRi-CC@Ft-Hex%gj=dz_zitXB|r z0kHRta(tdVV5dv3ChR`^^xU1WU-8~dII8Q?@lo%ak#;>{x5xiA@ID=wH<9LZ;MVg@ zf0h1@|4zW7HZ8S*eGo890|zSJ((OpQ9+>Y@p9{cuXWoc>rN0wie8z#jJ>j1w{F%Ie z1)iS)`zO*~h+ogkiTjE>`Oc0z-az~l$^ZGhKTN*Y#{Ig0zZ+ragCji++;1n{gCqXd z!2b%EZxOZv+`q*AR^De4{xlM0l79i6098y>Y*g zbeq92}x=xhg>cD@)qe?dihn`o1Zx`ix40-5zK!nSEci>+^dOe#WehKam zMwmqu{#^>5Z$X#FIUb zi1%fLr{`+{|Ezc)LAp2M{wDz6kMf<1`=6wF6=l2;?(0#GIm)z!{Em!vc@yuqllD=O zM)*G(?jOp-vzYwf6JbXe%AmN7_`s(;~|H58kigcQ$Em#``V66raBmrsr(J-$c1yiTfYGK9ulZ z;{Pb_cTuKA{3h}50q3JBtDa}^J}>I>G5qi1_XB<(1J|#juE&z@mEdB_r1Xr)3lMuU z;U|1OzsFGSdy{4wcbVTaf!!PVERHtWN!}0Vw~pUNFrfA+&GUOT@K3~lGs2%mdApIf zGI=FwcN70$!hb>d`QUvr`M#032Z8^4xHl93Qu05QxYdN8%llr0zn!#IV17%w-xF4R zzCrxgqI{3S{aSu)e!rm%!@z%=_Zz^gXO_J0Li#6yZ!`Wo5WgUj@o z?nl@N@PFWUr+|A7ILhGsSNH|{C)^hT|1|LJAby6h`{6z^aD5;D`+!+P*nNo~e0C82 zRnp%C__c+|zta|r3D@4xclbSv_!Ydb3wzX<;;fcZ1=e||$ zr5(UN&(YZbW|ZgI;QJ~+Jr{sS&rNv0I>O|CChj+a>j}6IfRAfg_?DSs;4#QEJ>MeT zpZHxyUTcA0%1_T$(m##-_VN2UVds$M=aK(2fxS_kPxcHq z<9#;aCjg`8&BQ+@V6H)!bVGL`{tvj1#C=op=|;TZ&!TJ}Anv;0;S-{z+Y)yhep`WK zi>!2ysPnIhdkpaBg6p127|(RPzYOdy;(i zalJ{mk1~B4_v=afCGfTkk}~1GEx&2Xwm9&=4cG_pJBgq6K~5n4G}7LU_Yd)ZmwZm- z{Sm_WRAgy6ezuhDIfeHRfqNUjGb4{V%JXURy%xWdh)4ZZx*l#lPXkWREx@DalBmx$ z17A1%&nL}iDc`T~-=6nk+UYrjeH`~ENc-Txb3Wl`6Sgw&J67f=>DB_T=bONO8~pd8 z&d(t2Tll?_-;03R5HPm`&(#Vzen*=319LUr7ZUeuVA+l>U5EFH_=g;I={CSfmv%Se z9t!?XQkDy%E;IP`yp8uY!Lu&>Pv-q@{AWder{TUa>COUIdRCLqyNExXI6V&`&Ce+7 z5x^Z!{%wAGo=*53_htp7=)tKMtB1Z=cA~v?g1NoRuli62)}}Kuca(+!2bo(uOZ*3g5%MV=p1m|hj2Yj z@_8Hn?NQ!iai{05xOegUKEG>&^Gwp5Og_8up9cH{_;-UhJukt3N8+!``z?WAaqp)r zI|68)_us(veBS#>dpWRr8o)f5vK&R&YruabKRpiv-BR=g8*_%5r|BIfuBlf&az0 zpR6>%J|Fjm6YL+ zH{w=;|I7TiKCbji@cfkUTLJU&XrDXselPydN10aO9s}Ryyf2Ti%L4X9!tMjEad7=K z^1L@NFXi_P^86}rFCmUCE_-eYY=(agaeu^pD&a=~+XByC%n6kaeC@e4&AePfV7tqz6^Zpf%zBt{ULCF8rVjZRq3X1SAp3A%uVoLg8yN> zpMrl$ltFNxC;W!|&gGY$KalRe!0Guz!2UMs^=aaU3ExOLZUv0K|D)#%l=IzDR{4Jp zoSv^2@cs$^YW(-)_fpbcEpT2Ib@+Ou|3dhcejK>3fa^Q_v}bX0;N1tzm%!7c9KQ$V z%cPwn{@2m&_vHOh{1;LF`;gCO;NM8tcS(N}-eZKX#eJ>ks4pW7Pjb-ml?z*YFF^Zz$tusoOF9j>G*CaK0TJGr+uw^xp*L zEc}lQ{LkTiT)0y?UV(oI*a~oO0nZyL({u3u8XWHkpdSG97u@Uk%}4s%P_|nFe>~~* zycu_TUPah$JTKz?Ny2YZsQWg;?m^g@l(k%F$FC9oxWFwux5j^)sOwXKKa2df5~k<6 z;M>ppMwD|4^`0fJ#ZS-20>?7kuPorV$oPlJMrk`ZP6zgL;C>-+PYK-5i9Eka{E6XK zvJc|^6X~u?o-d0$UW5AsxG^Cqy@K>LaBqJ=}&-(@7_#1II zB=V<){BBA3U%^=i=1nOf@7ICr!v)-%qmDNx?CHR+Bi*ej`}@Fo3Gm+_tb+U1lA-g zzB%x#DAOnKpG*9Y!2J(?4+HK^;Q0qQ|B1i&d{=ddfR&{A3GPo4c7O0*&hH(8`+3ys ztx@hz6R+pn;QB1_N0RP$;D0yo#{u*Efcq(N@8x$2aL*f3|qTEMEI@zY~0{SKRZ$$oIBL4Of_a#SDdK+OElKugtJD%TK;vYg- zdhQhPHzS{8iN6^Ck;GpIx1KWLPa=IM%H^TZ3miKOc#b0fDzGml>>9w=DBDkX--C1y z)FOze}Oa*CYKSqmRBx9yj3kabWKN%x%c)&is}Gb8YaxfjqX7{-gLG zid)Z}cw-h;dcS*1&n8~acSxtF>95kefO#!pyU6RIk>7{OOV5pXFCu<7?=y+(@cS0O zqrm-F;@?X66Nvv-;CvNfOYpY|e;zPTC;XYX|3Th==C_^rXAu4^-ao|OA^sBTQ=<+K zqU?_b_cNoMfY@_={y&KDX~JKR`#RuTsxtG_BYTePgXe*y*K=FKZ%ZCG;CC^&9}{i* zHqyTsxSQiY75CpG{psX=b;9**jQ8JgzZ95XkZ*c+0;dO4k)Q)Jt&h zrtaSZ&wB{_3b1=fzlFShM!25G5cUH67li*L$}-yG3VuiM z+X3Fs@cuO6e~2=C7hKx{m#5-Cai@c0AHR1*+{%olE@Z zaX*zZoIxAtIgT(r58%C*@C$ffJIZ&AX7x^y* z*KNt;yWsmFaK9t{FZnISeJ(IR2LArQd`S5P?(dL(17S1K-j@MGP-zwa-cOn*f$xdH z{|o<5!1MlqYvEq#xgD^l5>cVd6Tqw|pS?oJ^EQ5;!haF(i3n5pHOS+4z}_V4(d2zn zq0XNm&-WAmUdlPb?-JbiBi(JmwL0LwM%YIJ=XFWHlHcw5-4XaX;_A37K>R-f*XId;GX5V?mlyEUb7TB__8#C@4u+S8Nj@b@LyU==qF)I!~JB^0baTsnEm8EOggUp zF5MFN>qdQNfltp%0RB4pj1spT{CC8E4w3svlac;aQRY>^T%WL~@p~t@({nND9!Q$+ z6LubP!-4ya`0q>FTM%}n3dFO7xYMJ}?rJ-8l99nQwRhV-j>FD2g(0ka?f zBScap0dD>F+?E*COw)^V4$!^7#?&_XR!=_5TmxRVMA5qu%dR z8W!Ud$?uxDM+twl$_bw=qSD$Z&x^tTaQqj8 zL(d#(PH<=Gb;L~)cQonV&F^!>T@rQtB>s2t>jJw2{D0v6SKgE4{|w$+iTgRQNAO!s zULV1)=jBnpml5_X+!qpd9`B9h^Gw3FP>xgaUjh8bqTEXNXTrCG>k8mrEVx3P;`Q8= z@Rt*Q7v4_+ZW=rXaNnP}Y4H7!-^-((eNXkpb`ka@r6>H|ykCO<0I*+-yjM`hzY({Cup99n1>aEMeIl?Q zC+v-+dof}6DAe<(l=)cVeh_7PD)_!g8PoGj(msH=7m@CTxNkz-3&C?;(tIrNKPd2B z9RBwa_f^844(yM>_b=S1llI!+xf}VV=bMDR0RKyQe~&aT2k-U4aWQZkct4)skHK+u zaCG@ypWjY!-HP9@Nb?)u9uBhO34b>J*8#f|_Xoi9SKNOf>^$OcNZ5yPKbO2lN%JIr zpTfTj{NLhz1N^*7j{;85+wki-7Cd@hivRhfeK9~^An&{5e`mn{3LJXgO!9I57Xh|6%ewj<9P6&IEsB!j9tixCj^reh=_Z zqb%FV_XoW7>?CXx@9*=zbA%m@ThFDWSp{r*9zytc$>(#tmr~vr(q4Mz<1P2gi93e4 zQ^55?1@L@;G%oLe3umR>Eiwx<$Dh> zx8awbS@6FSJRj!$f3H9u;U6OWR#C6jzq@>l-F(s9rTdb12fQ0e^BUk@&ri?4$YYYEj1Fk9XegXeUxc5hS0V&mheFAwrj`-ITemTE4@OwSs z={YspQT`hEPvQL{VBSQUJAm`8_}>ToBLePZ@)!f|y5OD0{W9WzOZ+3FE*0YLAF%Hv zZexVshp>A9cRDz~NZ9kh{|MrbCj2bg=^BKm=j}M^(T2|^j}!Ubi87_gLeh*eUaxU0chf{ zk?*~L|3rk}hddq=xPDA|mhk&0zx3RUa(#o}ENN~^UQZ+L%S676u&3j{A9&t_{~N?V z3HM37+vIUq@_Kr-%_G788RFg^dHyZ(dlBi=bAQs@5Zo`~_kk1`?~n8T5#f6N&ie?` zzY6?%zQemAeB`^E_a5+c@UG*1>&X8U+($;9N|T;h9NoaHunpj7MVa1Bnl1cx5vJ!x zl>H09W`w;8m=W;ZmAE0^C-FO8^(a$fBxG`|8q7I)W{qMjx zP55UE?Q%}w`#fQfA$~J(=S02k%6kQQKOk`a4%lU+UrLysGVrJIdndow6>xg2|Nm#S zql&kV^q&Ck`GjrY_ebzvLHHXY?f1bm_&kJ!?+5Mx@8?Ik?f~4Y!1d)wH%0tAqyBd- zw8^DWZsB}0X@5bwVo@JeaaP1(?0ycp~Y~3S568T+f5}T@-k~OZp!~_+tq> zG1}r3@SI5=uK@Oiy#K(jP8n|>`3TSR@!u)(zZPj15qCFmox$&+YFI zM$Z}epGRIFjB+UKS5XeRXK~*%(mWRb)g#|aNPjlrzmB+%0{1iGZ$|lw&l@S%OA5HR zML849v+#ePwC{@YDEw&3`;zeAg8aTh{GGx33F1D-@1fv(6#m!Yel4&!h%($A|Fij} z=Zg{kK z)AL>&+X>fmH-D9$4$f2gy%e~QQSL8-<3j54UfiXulr7m&oh{c|OH0{ky*9Boo36I1 zS*MxR8tqQGUe9Wsky2J^R@;rEJK0>bwKpqwvXv`V3=L(KYNK82%!8!XCP_1!s5je| zxVnF$-fh>KjjY_NmX~GaMkSkQ*6THewX?Yzh{vnhM7i6pRz?0v#j;kpF;%5KX6xlnH5*zvw5qgt zeQkfXrCF)g7iW{za;Ho4Qp$;Lt5t1u>hoE%VgIsoYmG{Cu04`%uUE@7W6Sy_qXgNE zk^`7+YfY51G5V?6S~BPGOS5Jx8(qCNYd0r5b2N8*q%>3-T6vdBwr%{P>O?1-E|Xoe z4j3IB4ONJ51F(<2I5dP~=(an}nXKKNoo%){%A}V?La`u7wbdePuT8b$$t2=>-1hLM*KUs5)tlu?wUXf~Q^!^(YfjR@ybL6Y>K+E426!)p z;M@HPz^@h@%C^&*)s8u9jY$pK*>a~-Z8h=<5zWy*A(Y|JK|^tHPF%&IwGgT_ItQjz z|EMk&LNocGNiZ-A4PLEDSJlfCwC7x{Go1|`M_W{~POHY)u2*UN_M)}TY`)pe=E{wZ zNX0}`qpDjygSc$hY=yBe*F;$)gK0inZA~!N%j(g#HC?9plG<)aI5Qg(a%i}g!QE;w zrBgt)G12TcXnJ*XqX$g4GzFt~Yo^?RyqLFL%z-rH^V#YxV{{DtADE9?J>F!Dko!^V zYxQdBsEyV7Z0V?Nvrv=`!xK!o(otu3Yn{?j=hUimr6rqJZ(Ukiva3<4PSzUL%F@zO z)xF-F&{Wqfg#y;6tL4hk?QFIQVWcc0+0JPu`)sSaj|QOb)qTue=JP)4M$^nUA&g3E zB&+DxsZk{`b|+t_SW=O>yo&B%7OP9e1-*r=LmDj$vCPP02P zJzH)-;2@xC3-W6#zca|$im_kGn24hBZH#kPNB?LxPG?iBO~t0n8xSI3ba;dW;F+w^ zj{9qEy1|N|tlH(7YS!T2D#pPwhGyTmZti1H)+*3z*1*+tUb{BIpl0NDpyMJt&=QKw zfb7gQv+;6E1F=%mh+sjSW})n*iOE@Olxc>2)tt;vkeoF`rOAOumh8kUe5BHLZoB)?sv( zv+?efpp@xst2xyw&wvvGSN)&0&{TPrp6JX~8Gd1l`f3P6jiI&#yz)@V5*oM zHY;q*HS1lY4J9a&esmt)S}WJv*_aP<3k`SMJ@sbCUGx&;l|eX8MY^*Vo5CDIJ)Tcr zi*J)U6RVX$CFynQk&;-vtpp@7Dz2$q28Tvndls5DFkPrMbf8mXh%3YK;_7@*vZ9pp z3DXw)la;67WdIHmzItK;0^^NdDtZ`r5ItWQ`obwYLk}(kj%$-og?;6E*O;^FekgWZ z?d2>*zJ6s(sv}b)*@-KLmM&v1(K3mVtxt5t^Rd#vyH&)isjn#=tvDw>x?CtB)TH23 zGu9fc7gV}lo@a(ZG-IInEoKSxw+4^oTxPjKTel%83m|0*TJ8*tgEFLK z4RUNZ>(Fv%Z~pz3(E4)Knu2As+^u)6q#b$*6!2-UhSGIhv{6&PK)9gnM7D$)FX_ zZz2SoM}II#=qWhV>zAySR_xa?ABE4iA|RBwptKG5Th!CcbN7 z>{{ck>5zqHSm$aI%~BV`^dP`U)(8?&M|5CVggS;;R{?1qKs?DCVSIj7wipG#V%n$4 zh&(SVBfx}bchPfx@}O?3%p<_Tx*!A~2DX}w+5sc-2gx^z_qn&#c$S zLZcMUN;=1Gu12Gqxld8+|-T*cNd@)8#$P zgpSqLxbTrhq1t5TL(QDNx(J1SCX^y@)t#pFRnm+KTXQl5Rh2R+v5@9lGft$DvV|!! zqJ)y}LzUos@;)T48E@!fJ?2Gb4q1^xwGo-m+nu#*2c&G7LBGafjpX}ZBPb`YLK$CwV%$Vj_nl_(~rt|}24IR9^wTpu?pZ3x}iSjJSX zO-z%x(Lo&}MFe!UV`|YBB#EY})EI@PjA0$p8URig_>g=Uh}lKWan*ow{ z<#4s(F4ut%YvE6sm|6rb2PV$7s_Z1N(Dq6OZSbjKnrX(2^IrM*9IsYZEgDKCvJqx& zB@9ebsTjln`S*HofAbu`8q=f?x;FnN2m~+5>)zLX*3Gh zMn=p7Kd}~$R=MKT+8fRtE_Ye*F7!a{T6uUoC}BtOw5v1lw7CPZ&!|B!pl=GK-f<2$ zh@>lO6E7nvhn5M%{WIv$$z$TXh_ql@!>f6j_d*ev+3l(3vkhIC{+@S}H2-cXcE7W-MYnZmbUX=?vcct_P%|(dh0GI^b%9e&BY^d~Kt@Jfu@>_n zpZ5W58nlbh7Zfq}4@*Sek!_kubG0^Wf6}-WN>Ip+$!xVqYDb91-hm>UszY^XS=-qn zT6S{SYrZ5fcc$Tmr?nYrJ723ZufDOzEca}ux=g%eyR(1G5uZ#oyL`KoL}YUE8V(ZJ zzh`2*16pK^7ZX^Nqu73`5irWBsjXa=4?(U8&9B^}~HMN z*00@??X0$asP+`bqt5uCaV{w6Bqp~R$Sn%!Y7P+!ACsNtR8=EGA<%nC%HpXg zpu}y&+t4C2AB>n$P9*z;ELcVjk^M-*+H(`>fpJ2wLd_@35R`pQ*xiX1RZx(myoJKD zVU+m$#j&fm>ea@SW}2nV#d3N&-xr|7QyPovN&DBG?dxc5nbuH4xiVc!dxn}fvp1}! z3EK{AlQdPIiB`EiJp!h>R;db(nKInix(3y)f{LPVH|1MIY-H`A7vN=4^@%UaV@WkC z-Ao}McsiOiwI95BuIAp3(jlm+#)^4&periFiK#?LiNTomdDPKb{uEf7$c&o1v%oG9 z*@2VAC_pooVnB!fqCqUk zcI**_Sj5W~kP}s5U@=e4XORUz4EE$C%fD1#1E4m!Vk|o+Wi%`4|HV*b=h!|3EFWB~ zv+q>hH+^J?W9(l}q|$s~-fB=3JFmZx|Jyk)FxdWY3y=@$Gr;=@7x9Jci zU<&2ixzOHyHJD`BHDB9{;|IEDa!~5`kwrTt7D>(N5@zT`+$Ez^wY%ls?I1R!u7LbJd zKk3(lksmaed_!C-t4Y28#mo;w@hwxBk(>$mZ|8mGW6X*mqSr?){@dkPaNMPZzk>sI z&{a~98n~34>{VOzl;vamk&-6LAPizIvQ}x1g zhAK7(E$4pVfz8B(JGLPQyxAlqnr%{K*1?#Zp@Z$DBxXhtFG#Z)1t+hNBsZL$8Z_5F zdbm~|6R=DfD|;(5L#S()ftBb$wbk@3LNnLsK`&r?QAWtfMT(IummH(NvAQ!eQPV}H zkp{77><@G;O=!U00s8;)>TQTIKL^!h%XT*FWQ_+$_uZOR?h%NMJSz(mKOR zhBa@P%pzJLeZjz^p3w$quRC)awLD#Plf+;&(h{_05L#6unu%&4r&08oGrVLP_3m=H zU&S2`0UtXpqS%5GM7KTd|JiFcCR!n;?Jlk9qPH>|oI39Id}+;mW`kCaZMH)vmklyG z9DQkY_14jKo7b%^jc(hree=4Va_typPqE6}agAbWw2YoRo9@ok*gKxb>#`A*FvFhY zmxNGoXENeMFIEiNQbRn;HrFtk>@k6m2rura1$wX=$M)2$b1b47pj$d z={Hi4wM+7JXJyC{J~ZiaX(vNl))MYr!j<^H%13A(Bx%7c{A28z^@xlzmNChsVZgQ- zfc{hidiBW6cYTvIWE)*Z{AXr4$YN|sD%Jv!WX}Nu*Y>fMpu;X{n^X*4OJ>@(_kcMM zbknzV*fBVC-ZrcX+=$Sm9h)5YA<}ossMB%;-PpG^uGZ%yyD}u5h0>TCU=HXC0laL$V98NEIVdowmP%)67!v6o=aA`R#yGCr)Ok~cEj%t zXNQ1=;QAgCDyW(?i<-*)C>CvPW+2!gn;SH9Zi8Qhw&@^sATtWCcAh{aa(W76L#o=^I4<5bd&Ke zKi=U1N^RDTMnzT*lHoVRiJXc*rdSX?1FX=#REXhS$3zJnpfKMvN^rh_Nrx> z7%^j;SEG?*n|EJzRSGKyQ&|8j+o%<53Tnyvqu;I1FEey^rTKIwim$NHloO$eKp3)r*y7Z0F{M%4Q3V zm8@8vLjW7A)(>3hT+0c+ro3kxMvK*K2|HoE3ipDibl_$AL6I72vWYWfmUy}CleIhb z}c7ts5xQV4$MqHbck>dDU~fY-0m>tua9J_Tjhyq_Geur zUNDz^WduETP6uY5s^gv8&N6Ai zt&CL6fzuVfpcKv-LV3HGk+J@sy#{?qr2`s5FTV^o-%$ z+$YHrR_bC-)||FWmec=GD;+XPd%7lJQtODrsKmkvO<15@aALAnv8J=Jz;M)&2Rm7# zWCvx$zS4BRO`LK-hKHkYZNp@jbyVahb%f#*jngR=Mz5bS!8|8S<);>55`V(z7OpQ<;kKK2D9;lwGjt_MlpYcl;}UjoQ<<5xqPAKQB>Mt zmKWL9{@X|?Z0VWEu1*9#>; zQNOGWCv|C*gPmm2V>eyOiWW_7w`0aNK`hK}#5%VoixU!c+2dj=K!8mCwE)J39VcW8 z>I9$^^vPZ)4DC8SyOL3CVPtQ(eBFLd+c~c+35!!^CE~D0u>Ty$K|~~*@QyL{#cbHj zc77y0X~LSftK>5?sw|SPtX`rf?(ft@QfC+eGBz`iz912Iw;?Y^N>Y){JMUP`gxeDi z#tmQy*}Dl5#qLF`jtw9`1?WaV`AW|of0s>ux-{1X8S~)sh=nmgG-Qk-NM;Z^&J(6H zWfQFG&g`=~NTBMARoUH)*UUOylv!p*Le}Rt3s~f2FXZyjL~{zGUF-QiOf^oyrWP2; zWR{&|ZIXHyLDl*arr3~3Gz|{{(K}B4AC=HE7{Kj;jD3}X8CvC|@p74n~R9TiC$WF_KMvkjvdq0zF zVA>qB*LfG~U`jM8yv%E-@z^nA5}*=s>@YiZ_;hITQtM!q98b)+BeM&}wyx3{Qt?rz z4Ye;+l?;Zl5sFV)TB_+SB$SQX=*L)&3{2sNJ`mF&sH@xasCq!7hsY0DBzRMj_8n9M zl}5Wp!4i&BNCCAfTY2KpQrXS0^dX<8LuzLB8l|#EwWY_{sgZPm!3_9R+~_7d<7z~& zSRXT}N~P{qCdzMxfHS>>nl zN5LJt%0H4VLT%-2N1jy3OqI+#tQskpsx00zFU&#p3q!g>BlJdL-gvGq{QpN7=VN02 z^o=lM0DC?0|IqOAZjG_O;OOcvJ3|Z8I{04=rxiXw%uua9#X#yz`^H2JmY6AG4~m-} zW=_Io=QFYkhAJ1L1@)=8-4$bgQ9^`iP*X&4 zDpj!v&Zq7Zkn8s8Us^YPh^UvNHfV2$0G(T z4}h?SD3ID@3U1ph9NN>^z3+v{$?6{l9{MrvO#DPFst_G#U9;_W(F1BC=X7 z0P8WH%Xw*p^Y(1jOp|>%&ZD#tNy$a$GUjA#NmSzRm3d<6bD66-i#Wi)h|#E~jV9`~ z+3_Zai#+b25EY3oH&)CJ0B{cAxS<$B2w2AtS;7EQ#!^}}TQUmt&0ytX?cMEYza#?F zZWaYH84xU(HjWxYDPB&ZL0N+XE5eu`T)n~QZB>(j*r?ioB>cAwbO?fhX4`?zyHIdz zigc*LIE8w%IjhqEZW(X8+95YGOVM-eWy@Pzi)nc}Zod>E>F7jHvmhZ@)uw6C$*1iD zYk|1(1!bc)1Vj2@oL2iVNi=o~CYdKCQ%r!^P(a3Wo|(>#YY&WAQG02XoG&R?_IV}L z#JRPS&lTuW8w*FyGRj~`HG@#8xMkE4bCL{X7fUew5&TVD3^Uqk)dvo)Dd^bM4P<2* z%$Lk-`%irb*(|ttl8qzJOd~t@>?fP?*a7EJ?i3kNqr+h7Tvi(DG^Vst8+Y#9K9+5R z&9(kdG>vf!vj~kr@4g(RyI|S6?rnXKLwNQ&Wl#EmZDZL$wp`UC0;Eenf?&`@eJ8N{ zd?*$@a%UXI&I3XVgQ^KaInl4iF~KBV&k@J;{5mH(Liy4D%m|1~aP#61^V@h7wG-m7 zz_xfYf97~9{ptEoxVEx-$@b_~m~@qn^T!&OfZGtzE)cs^Bxbtgf&^ZMvdL~1mn#Vd z$OLc#HH^-~nxm;MtzEZf*9NVt${?f(S9HWFT&Z#9j|A=k5k0Q_qMea*Ye5l|M*$;+~2v;+9f)95%1CWJfU_7NTc! zZkgsgn~-AjvQ&_?*bn+`-G({R0o7m*M{*c5r4r76qujQfrekPcu!PSUZBt`LkWO;; zPR4m{+$=k(IddB0DYQN*2iKGK%1392CjcAA^-$}r4O6Lji$OscA234F4J%;@?g!?5 z^0M-WmKdyp$SZLUSI(|jUw-a4vw?ip;-{)@E$ld{+_>DmrI%w(ap zy6UMwjb5FP=K3x>0@tguHMrL}!Q^bF9pH$BDNtGlj4O18rp`V=N~0c3AQH@zZiUMg zU_o?#8Tnrto!%}K9D8oyfeuHFVT+6eBb}jaSqBW|Xp!`c5(g+fDW2bIsG2bp5!t-m ztg3kcB+HKYn&E~qi_%bX2U)K`>~^twszjkWuqZ8gUYad-W0=n-j+ZkoVL&kv!CsMK z>eRRr2i?eMysfuyo4A)_BQpU<0MeLcZW2-W*y|H9%xK`&k;B~d` zgHxL9cxAgbmDXzCRK^O)p>gS3Z+$`PC94Ew#)@~7pS(u;;Sewl2s`12Rs?I*2TA1jWXreJ{*LAQ@yf4Px$;ARV>&k zorYesHO1EAgmXX;$k-1k+a-bdN~`wvV|k)4US}I(Y+Bg%JWat}WZe$zN$}ICxaHQR z3+b)Ne3niGxT2U@RJiM}kHR9{w=YB{3K)(IoG>f+ce8e@jVsUD4BCuC^jnSKOws=3Ge#`>6gFaZE}*xdaOWU> z!~tA2NUH{rt~Hc`&uSLCzNReDwMvk)6lG*y>Syu*X(ESgp@2#ofO?xTueYx=x|%ei zFuEbE|C+o3@b+E~-D{3PE9hT_iyL0{BkgE_aqArNyv@feL(TA3_DqT-%1$&nE|16t z<7vZL(Ky&}H|s%et!^A!#Ym7WKbfUvtJ_^4`rfb~ghCAMk;8l2KRv`S|k-C2Z>xlP(B* ztaEW9EdRO~0f%Zj2cwOh*)uwqS_AyVetk7&BeqH@Ct z>Ax9#wn=hn6a)SA3yOdh`O?VlDu;q#Kag2?Dj1~CHudsv<_tiMlWJ<5hC!SrPjZ!U#_;GG_%=R zGaZcs>HwCzf*aAEvcWTvwx?~oY^SVwJlv;xax?vVyL%xIB)&P8+jXkB+KU-ojAz=>(mHHrIjoW1iz*VL@KH~cUu<`B-aG^W(qZ~i zxUIFP$7ze-;`Xdu4~LzcN+ote2Id8^V=vY{!^wObqU;)aWfP|*ArLTRsI-g_5Dw?g zRyVwjEkoPS-LibvRx+(PENh&W>rU#nJ6L9AsN6JFt>C&~h_w+bSvTA@9)gWw)Y;3# zwG6;xR!fMBNR!wT!Gim4Df?N9;RYX?dmr4$2yKLMw*Pkl6!Fn5;^HDi*_-6Ima~}a zQajGeGq3F?S<|9pSLf?`yt37spn2)?0`+Pl6*&Owf3O0k%rikH0^nh*^*x>Do(krx z^#qoWVWBIm3b_(90c!NIjL_0?L1LgC4ChP-Vkxw&cyoYl&81x{NvLyZzoGjwb_vsF zWXQm1mp<66a;7GzUW!gcFwtaLA0)SlJZV~66CFhTFO+U%E zZnHs|49skkZ4A;%?bpfTSeEQtbQ@BB98`K|=$P8(TwUF1^@(hj7lJm~xySyAMa?xS zOey1c&o0@zpL@-nqV}DCfD%sUO(grdV$*}C>NDGV5TyzCvccL}%{7Fe9!WcprH+L< z6^t4O@%f%*+TfJ&nm4g#{)Xe6^E=*q$CXUVIWAx$KV8EuN<@>IErB&8Lpb*T7S1ik z1VgouFMSKI#%1u--x>;Yr#j||Ktbf$Q%QP8DdXS(Z1YT;O5W|Z0>xP+-$*OiQO()4 z#m=6q^wg5W4ootesHUutt(tB?bn>8y99?MZtr-)WjnYD-#QlL)Um1!Iz0!z?ok zDrBS6K5OFCoAr`SJio9vc(o-bpD?7wSA!an&sc_&PnhAu4xEM1u{pXP<^RmgQW3OR zBU6u~_Y>`B)!2{uitPA;8-@OF(~YxzC4h1#h7&xwH61-2_HcInaXJySMorDs5E;{U z2Hk0&n9w0~Mq+#e!dYiD3{VbR0rDbfvjEf;S#7h$AVNj)T_M3N<6Jq7sQ*IG(hq56 z77)a@g#3T9R0zH=0;%kQ8YJ1z2SuPPZZ(HEGy@SwFc231YJ)gl&HV&Ypgs zbt?|j0i?iPL3(LiX>(~07VB~)5-}{46XqrQRMJ7;F;YDb6D@|-<2P*=16@>RiYl2} zzS)u{E&+y4){QjPaM~irz?-qt;24P!9fze6xF1Wq%&4>A2uka^I^$4U$9HOmn-!!K zHz4I5w>`>LXAunbBM9~*xeV!T_T)>BwJ%Zmc+Zv$vlUH`%C3>kZtins-Xh;HUV|ym z8BtHJ(%NQ|O(;`xp|6(B0|$Zg=ht^GT2Wko}Fc5@1T`CDfPIG9^XhL_K&$Yu5Jx2bckT_L$%G+rukPAQnih5%XdYj#(Psvya&rS;Z0IfXS= z%e2B`9$B57toDyEokB3v?~%de(U5s~*mzhQI~$}7vha2ai@`OpPpZz5z8l#!~uX7=vZe z7+c}Y1{>83kz#Qyy&5Xirup^f-dm{+Y*{lxg!PAgo{W73*%h$n!}|H|5-4=X22)I* zcPk(bve&EK!Pge#gQ{>EtN?E}gC`!{4mU-l-`Aj-WwDl%HIEoSrUVzbREqwX0?c#- zY$B35Nbcec&C*^tEWBchT1qh@3Ny~X=dwYYR4|3$#OTs6v#f52;%c{Y3)a?TKfkgk zX+#zqTeN4g+}K0=?J;I(&;C8mZ!Fe=fD+a&ZOWA>i?tM33M-MrE*{Ai4u=n5O_iQB zuArv(Y(IqlqEd&?-)uo$&gNE6pI{U<#~D|#OF@tq)9r{t57sO6;p=&9wo-#M8hKcH zSZ{WCG{VKHRmFA|-OCu6!3IJ)G1=puYz_a?dRe$g>S6pta;5i{jaD^TG1>RSO6!Rv z&t#RE9Q1!mb?2UQh%uFdha@4O0}?fclxu67=`@+5VfOPwd_&km2m2c*@qCgXI3Qf) zqCCBvWb!t^!=L zIdv}G%w+FQCfAK>{%@FZOJVJfs>Tmom!6P}8tvTpWrtofk}}Mbg-_B_O3&eFWy#wrT~E~488+IPKc*P*rqs#el&Ckwb+HhF66SGv zoK~xx5J4Je^*OQP=~syf<9u!#Nq;6^=+16>?il;3|0G#3`1Jz zghJ3us5;Wf=%&eKrt%ZQq|#8Vcp%B`p_gSfQmFG?aZ{NzIBx?_8owA1z;?!cs=6WRt*@k%L;T?yU4k$FH?5A8DP!FjV`Jx8}nT%gASL8%dNbyg6~COSwax?<++A97i~3+e$nw%v0f z=uwkl`=V&J@(|(2<>9D+gj!rEpQ@kcn1c%M4 zKD+2}zTq3qfKJ0gm4BQKSTZwn#pO$VU~69{&ki;KP09dx;OV88STA-gxJ55xX?c%cP`&J1d z8`V~^?he)C@&>?A1g)p#o-vai#ca0C5q6PMf4b7 zsA^0twnf!LHqLARelh&XJQ_xJ0A15$H=P=_L%I*~K5;4>!jg@uE~Pn6GoG;nK6gaDtC2h`AM@Xr@&%Vd)U-YlJm<92sCm=Bz=#}>lhc*1ytHd zmjFk#Src-G#so=EnIu~FG3_>U=wu@0X6w-77Fo?q5jB#bVq`{WtA=JT>?p-1xIR9P zMHa(>Etwgab@uHL+Uy#%e=~{Az~}TDrYPKpkY{;mv1+tI%}$R1Ra0B2Lql^>(cN+RZ#iZ)@X$52{)Y)GL-P zbOk$-w1ZB|Xf(pds>D%vEyg`V8e8}5EQ(#bER!w&GCJqEVdjuq(qi9U?!*=GYgf-6 z%Sf{}5#02^svPDJjKD^_&IM^jB+?i8g-I;^^{y`5Nepw!sI*>JRFVoub4LH%2^u@= zw;o}u(z;Rg=PXJfE1;lwr_0T6bBFWtwCD#p-laqo2yWe7imQ_O=z zdgg_M6b7^H^BX~9qcA?~a%3qbs&mYwm3&IUd`(_BLylu7pIPBETdWtfA;&zi-9`I= z4ad!VAvNl*Gb~IwC!-9rbe4qyZMT)ER**JEsOtbVd2C;*pc2f+;)u2DiQOt!ihJe* z^E6Bz42he4Yvmy?+wn++?r;n8c*BfpHf-IMt=6YQn%M@s437`7(39*4ZANnAQ<=+h zL*nC08#vCrUQDta>_w3`6eCl)z$j1XF5V{Ud_?#DE{;_Q^D@Y~X`d=yWPMT(VmV zr+;!OJhmTS+F)0o#mjH|At_jzTnvEzllNv$m+@wtQ?1C7zDCbo8=No z6HWX(a2w`Z+;>>oh>fOB*h7A%;ONY4r{tL!)t*mzsC}HfEprv*Cfj*1ZI?{kXpAtk zKrGMv%)SvNELf}c$zf>-fhipMA1Q6*SQV2Ln^(TtT`z6aaV{+ZaY{{o+lOvdxvE%` z%0NVdxX2r^53ersh!@+^bXoF1nEFnRj9_$Tl4DMeThD z$@6D7y^ygFoGs}S=tYorDjeByq^IEH{7v`}r#9;1@QoZwpTd@VBiso8*vZttOoyR0 zwUFE7x1!o4gV17HqVq>)%3N59?Tk?mxEBM#qeQhjHxbKH9HFta5#uvD`G4_h7adAq zB|qH7E)Md)d94f8WHwS;784N$TVEE>Wi%_fkyLN0Q3`SL_ zlAK*Prb!3h#0vRA4x6L06EcX>CgvQsSI=vt6o<9#VQ<1#wX}(2)X5~0IUizzpF3ye zhb1FvzPHjqKf{4Vm?b0wCbJfN6DIYQ~aL7Up{kn=>$fpoBjDbELn#8*w&4WXtl zRUSemthjrH;vPC@T4ltp<6HcT@3qq~nzX^whP`g$tB{5CSy7qdON*p4qbinH|JD`C6>VhpzRTH{<-dys0vzke{}7E-YfSKdEa~XGF5JoM zKjn87Ghp~IE(1t}UpfQ0N~1s~he|6Roh_xL#D&B==p?n-SJdr>V045mNRnL(Y4Xi9 zBmj*k(LT#apXJivD(VI$*T%`TWarDa9fOrGpz34VX3(ipVu#hc5`f;Z&$VcAgr`iM?iI=0i!- z%_dKG)<%`F30i+qqtVd1UtHz%3oYED*N?-%qEWAW2grm-)2tIJjk2q}4vQ1hG*j0d z3ax$2n{i)2)t=#u&$PrY;4m@RLDbA{@~i$Sc#R#D{9B3$v`pEX>dWn#55X&5X}~>qz!Kp zpg*y%VCN+t;rr>bE*CON%Z78(B^qU{mbuVaThNM+lgNFay7L=h)F94J_1cmJLRWDj zp6T!|4V!%KZWUL7NzxXZ49QlIPd<*6ag#y=9joXK;raj}>!N=_L~vse_2YGnR2G71v4us_ zRbXy*TWw&))3gnC)L4GKy4D!8k_cYAz*v)RpRQ=ouCH0jK#s36C^VD;GScbc*jUm8 z#o*0!Us~cg+ut?hF22bYTKg_g$mqW!^WXx5DXk?3a3*k24nQR^soLuTDiwKBf;_e3 zHnl0pzigpeUEfsMqz{HdjY~LWd+IM4I4;L(li#}S`X0e@%uScC#?CawCp%N2Mi7nQ z(XdzzuL(Ti)*_a`a>=}RvO3R9IY(w`;j@yVKatqSbs)A`A6PZ^>oyJ;;l(UGq6iuQ zeaVqTWxMIfw47}bzJgz(bu!%UK{4DoykmTZl}#ySHck`IkPW=6f7J|0cA{pc0t`LB zGSSw|o~klFkQUp6M$l`HBDA;a#x^5Fj9dXd$0_tZ-@|O+NM`dC!M2I?8wTwUnd9Ku-m^g~xzjg5=q{-n(Tdn2fa3o~uEVy@>HsIdAD4 ziz{WdQsyUq@o)pO8b!+&L`7;*>~{MDV&}sG&7d9(?Y6d?6eK~jx}1Za=I}2a(C}sA zIKzt|FWxQZ>uk05b3gzvO&H?#QfHO5u2dVQlSVd3qB=b#-j21`X}Jv})h6-qx*eSz zTtDN{Yb38WC=YQb5slb4_EJeC3+kp1=v4{|K2R2VQQY2V`aEFyxu*K}atf$v|Fl={ zc(4VA;DwYX%i!db`mA_q2I-2ik@Y}mRp$aUp9jM8rY)kVrG_pBri)0>IY=#Kd}v?B zCdmz;hn3@6A`MkhS_hZGtJ7XA7~4yaTqt~tTQOw1D2D?mw7j!xt%bq2HrdX$vwD8> z(IKG@AB|{dE3pl0CKb7($AsG#^*9vHe6afDy^?Ykp^ecvWF8u!Tu-oxrO>Vz zdbwXi8mF#K4dy|5=?F2U0oDi7%Q?gIrxe2Kd z+uxkIu%)mNCR_O)N+E=%n&KLICxNmM;yY1=0JXG{_&(U444TumT>SIIX75$JXe}L& z3QkC;0sJ()O(O^u7vS2iKmrs4A-)Rop)xx}__fXHGT%O4&_NGh<(tnrv|aSnOYEv8 z<6ZMTVx%GM)@qT_TB%(p8XFG3vMNX8W|2j&&fxU$(kYxC$nEV1a=)TdG|B|Bvm=}LM8Gv^W?VTWQTnJRgdu{$mVYFQ$K z(6fn&Vpm^ZZL&M+Y$~tia^By^?Gf#rf-aH~3u`csRwTGa)4VGn*kt>B^AVS100&a85Y zs}|x|U<&@iO49=?C}9eLwxqbo)++#MYy+dr9=BnciTXq*xGy&$iZ<4o>>ea(%8mPXjhQ2;Gl6 z)LcoO5nCuU_*uw;D=$4+Z@YP$Zym!D+FsUKm~^q`a(5u6$9qKYdv|5HP5@1c^XTFj ziyy!%{d;K{o3_sdGg5ef_D+$4}=@Zp5J|tFn;0+VcOI?-2EQGK|F3NV>veCp><^nJwXTNHGrD z=YU}=TShvm)9KK^P<_ z8!F3(Djtp}5Uk3!E?@0|5z;=wzs((iN9^QoOvAuhgYdVVRmA0+k}evze{N=B_l}z} zt_SvAL4MGsf5+IC@w7l2Sud5De_u_h!advu|I&Qx1bC}BkoiW)_e-O%a`ub$326GFg_)}k!q$)NAnZw(7TH#bW5f+ zKo!iHbj8DU^iC*438e#;St6I>vV^k>$0cUyjI7`j7_PGJ$Oy+!W31u{^5O(sXxJ=K z2!Q^@6Aww6=e%yY=2_x^F1Pk0*DNxaCRiE@F9rDWbeqzZCCyXWXATTS@6(?;>n(}P zgA29s5SDFtO|4iEB&kwrmbNgQAvNg@KU<0J z%7e^gE%(K`80mr$iiLLz^UY78Z?TUrk_hr5RStJTqZEd{;MB2p>WuG_1Rcs1O<~UJ zidmGsi*!D*R>SPER|Og(VKeiDu9MkP-cKg`^KEZm>=e?oK+I2h7^K7(v;7xPIvdXl zWfwrI1e6XHF{eIc+LJ_B?VunyQE*)`htfXZvyo7qCw6mP-`mulx{VS*E!l2V z8tOO4%-ye!34q`he7B{zC&ji zNA7m(fE^$#izOAcKf47sz>64zl~oLC)_7v8x%BLm14lve2ei$#CEs=t$p;8Z~XKnUj-P@A_mn9aLz-xi|=`m`7|(3i!ifj;cfE;YFG&oq&~2AJ2yRw=28 zlCfWy`qLZnc|w_2RwX{w+NfM}#dD6~Py@s?Ern)sf3Ka~-)kuMtEJ}YU1J#12oILR zc{`YnkkzDelQk(6zhP%&RLy|(TT|H)RO#E(r7cyqcI-a}=v(x~De3cYb*8Z{ApC}>>giEf)Us!ebHiU zmtsjs&GUGzWqqXcaB)TjPt3+3UI!si*TFF7hHyCu{p9xg-mhvf%`e3HkNXRXJqWlppxxmCus&$$tonN3=*Ecou7pQqe-6Te zy;}NIK%yE3TnJAjV=z3?3lI0116DgQn;o>(bY#go$^U0tZTeWRS^H~9nwGm5iZ-HY)#9T|KW<(<#VMwXk&YsZ_(8i#B*2IeIq`^K*rwQh} z0g2U6At4ARFInkbp{h-!m6*=iMtuGqrt?BDmH=_3z`L&kuzy62B3u>BIq<=l-Ddbi zvF4abut-s@RVLZNcB4|oyiE20oU^kik;mL2k;{$JAjHxlDzP9CKrr7#5*CV;v_&36 zZ|lOJ!cbReWkw=L zPix!tjIf|&v(xk3m#Za7^`O*S{r+m+4rEJ;5xp+AiR*NOc|UTF7-S6DFxb{e#qaiQ#}zNdqe4^N@> zH{Q$#C;Tlfm9|O@-0tsAN;cA1S1NJ7{z`3V>;wn#6_HaZjY!$?BpaBdD>A$qfNglJ2WPExi7SvS zEP^>dvdHptWrg1f3V$cVgJ?`mFI%8ywAHCr$*p{qGUjsF1$i2jAkJBeW3=NFg3PBx z?$o#jz%ClKFVjFmxBJ9V=h(-N0HE_$V{(8iK0lA}!yb@&O9+M$&}VqFm~GY66{KF- zSeP~U>`x*>HAz5LDsOeuN%UWm%172NN0}%fO)xG@up$*gbcv%o*c^`3(^@ zHHk7c``u^D>aNp-Rf!5ZElA^EFJzBWN4DprSZHJ0RO>w93s(wIInD zQf9Z>(`7o*D6Dqa(e>tz@&6e3=*lGO0FHCbRu@Ft=!deHd4CLT4kXtm$Xnl7;Di#f zPQG9WQOBrIX5@?gcG!Yt4I8g?p@hZOxYcx~i6n~=&q#(&tY}WetgEvbW|z3@z??yc zq7~t^%h=HM31lnw$IaTHH#&6qN|a6CW+$0KUZgH6>IAvIiErMeA!f}Lrq@{a(c1b@+ScZQ z10t^WTBKuD$;8Qnvh>-s0FeNaoXLbP`PBk+Xu5^Zcp0@pLAPf;ivAO-i!^EXw`;7~ zo?3n(gBc0ft-zoFfwn_*r<3(Z5gEZ&J6$;##VtfH5M*LcP`6;KC?6b{*_inpR(tdn zIpvbW83O0}+!(^fMC!1jls2Hf)`d`QG4=Mp4vLmYV!VcCZk(zrZ9A(J%(B0-%}k}k>^O@{ zWm4r^+{<0qhop0(3rQKWi3RCx?3ie(D?yyNTbeT>-{Q&8C<4k@oryHQ5h}-tt^^A~ zuumBU?GK?>-vIFyj=|~&>2*1oN@Dje2HKh8QPBu%!139Ab&FCKT4GF@RSfVoC(@*= z&RXS~B*{dN;|eu;I%st)x^{BkiA??pcag7s98%3tR@((lKK5+rXRFtYrMwr|h+(NN z*iU(pmWzo?n{AQSY8CEwdRy=29@~3z46p_|DPY$k#&s_7S?3ZTODOAtNp7UALGVl4 z++e=6tzHQ>Z5vBRw}#g(=FGH@FnDe4U9j?x zEjpVM2AhrQ8g{-eBNL}F+cRX&U|a$z=6elbUQVIN<_qy+qfPWemTQ93IP<}*a@d}{gy*8CfgcQcK4EBok@?_O`dwq2al_d zwThbNOT7{iJMghFO(xE8c=_X4JY`M0o$LX&umysju_J@57n<&z_v&D`X86=3VGJo& zF)jUCmKn~jsB^O~EsBLirqh54C>k>67*k~5KDWoFap2jjotmZuVYZ66q2067N@j*G z7R*wi)SH@uawaL9e0$4}TjJ*WYZ@(%MD|ooJvEu3W3i!b+UoS%f6znLvBhm?uaNf{3-`c zlF?2bQnv)#TUG9P;HUv?RSNNs*;{n6jOAiaI;`Kg<7YBcNbCR@J0D>>G*&>`K(>Gh z;&dH(gh^?+E+)i|^81yzcbm)A~KJF59qcQ<|aaCa2g+EkZFebfqA7hBf?y zXx?}t+V*`kn0`||vNi!~oAlec>7=ZqOAJ21%$w~%I@bY|k<0@kKBbYDlTLuIM)qn$ zE6_#nC^u*|E)K8RQlxReqdL0-J&4#OZjj^4RRd*Ju5gU$qV1Rcf6Tqzj$GH3=NT7s#is}nO`9w+gQQfRsbZDQPLY(%E>cR9 zlw`SJsDsQTnNns(Rz@Zz5{<^peLuip?sU-u7#IW9?K|HTAihaG$^8ERwbnlSL`IU7 zY*!aRW<;E`zxUefd#&BCU>H#!oB(st0f02LU`mVD0~tf8zpfqzi7S1awEQpQ3_2~X zbiBb$Ge5{G?C37ln0}aHVdD|OJW1>oa>C%o5Z0TxGut8H*135L3k7wB3g2=lm3~)F z0E}#ZXMced%utefocs*w;8D?9=$*5PF5~cqXhHS>z}r2iE-X zEG;4C1CH46O)A(=fXAcwTY4}*0(ADUF~#@fA^RU`D)A!@sYhWLv#Q^sb3D}0^1W$; zZA5w?NB?^kUhl|NIiCy;HmeWJ;_LJvcPp|eJZFS*qAk7hR8jDE!jj)hEjRfD0wl)( ze*tdcryawg=l&T(<(IEZ1Gs`m5r*_}sPhx<;cg~MnkH;*j`9!kQ(jmTJ|D_MW3qMs zHck%9W0H{_qOe3veS`#gvH|XyfeEfWzc$%I_!Sa#ARb#UZ>xG%xZCf*pMD#dd`n(X z6y&dNh}C@_@ryOG9CN+7YdI(L7AN;Jx#hqw!uSe+u(V<_v!%?Mz@C%r8E`*uimCa5 zniyG%VoeL^;YYyl!el1eR&`ZvRx`LG)H)9(d-KnGn0E3oCJye<0{p|3-p=a2c=LVS zKN`D``TQ76uySH+)G1apz)8}V^b9~zs?j2&+H1QA4`KEqQ$c{Casl4h>w#2jl0xx&gO|7Ri#fOVMBfpY}yuxXm(s^ZtY|nhc++)R2Xbfpq zqT8lv(2|{AkXr5B&R!O0&%zo#EdCkG&VbWd;KMeQA3X^eytkUgNES3Gcaq>15q_iz z^~ZbuaJ(PCNlxRxSc7&C?b@Ed%{lZB9bN;a#H)@Xa>w%D^1g~6ED{wtypJU-v567v zDA{^G?g z-$5L~c7ib~?v$QljW4*eq|I_`jfw)2Xyd{(+5l3;S}jiyRsfG;uPkn`Ya!8h?J7zT zW*|5c@{Gzrox$bX$%WLRBkO=tR~jvWp6IFCfzYk)HGSa@Z2^83BZL%ii2X;LJ0w4O z_om2SiETr!ER|e&Nsofx)-=#I189x04vl*nKy_Jd(hdtxztWJ64Ji>?g_M@7Fo}gi zSTh*9Sdf}RTxccRlC}l6+7DjG-{_JWwZK-tykXeQR{kTzWr!lS$nXd7k@g22FSkd7zn*g zfyA%|al4nOmhHptP(&Tc|B-;#^8sC$%#;cw!`bq!afT`uHjqwTlfCwTT*XM_#G^Sc z84$#u)T*>`JX4}6sRQTVa+WT}0#^49!jr@;9wU(a^x{8o+^1Ln>($xMF1=;B%TwZJ zsWbcE|Lc3Rt1GoU@ig&-J%!cX-f8d{W9UY(yngP1!+Uhy;4gkovscgE2IcrC+9fd> zTbt+L-ek?KB3G}i^t-M_X{xVJ|NiIG_kR{`#sfOJ_BU6vS3R2kVyYhf_1)>}I*eNm zM&lQ_rD`}H@Hu(${(|2c>brja+QC&5XqVoq4IGWN-q!N8jn+fRjwRXfMCM407XPVr zaS2=CM2V9SC5+O7oOV=!6$CM-P&7`96I-Cb@m=icyaAR=q+wOHa0g*$))lqp=)*QP zC&?~0S;c6@ixcDX^*FO>b&f<}5kwWYjjePBu3AMEy^mThTA7^-u~j1{hv;9il^Rj<^$=eyrAj@5{2vi4fzoM< zt7|7)u(MK`Z~_irpgtpk;1>7V1#^!8g6!cC11)N%fuVq$$U#CGue>FxnW;%6x`@E# zNF`m;2Z;F<9q3yrsQT}SO$U$l0B#*J8K2=;6hG8)hZX}@2jVVWQ{Ho=T{IIYCkwJ1nWlPaDhdmT&OZeeiLAhzEaZn)nTX!+4^!Ae1@dxaf_e( zOLP?pivF~&YKx$f@^<;(ZUQPfW5@ZC5^z6kd(`ky zFiSsr6q^hjwgLGxzcgVpGK2PGt^uXz0?;hwqW(_dl|C`AbbWg6L5R9Ss}dKb+S>?s zH*-#5*G8^FlruBp)5W}fO|wX{8gv@iFooumH235$>5ikMafw81J3|dJu}mcq4VMK2 z0gH&K0~Sr1w8CI@_JoB9@ z!(LPT&a|hOP`0qA4(UL zE5O54+U5hAj&8*<+{G*uCl7Y_zHWN@HLf>)-6w%lXm?FZN<^x8*IdTalYEd3RXhm)Dy2kY4 z_1EO&jdCdcW;(*)4U83B@1M`fdAvm=2_K&xVq-9fzC?8xQb>JH2OZlWo_w@%6WOW^ zvdI*%296%c2Go5Z;Gg2|!}ViQ17UoV^az`A?H(pf{1DN=N+LSJKSe4>rfg#z(4ZWA z_*e9^Wd-v-i149w`Agps0Jhfw6u9D5O6D^ zYwf5WiC2dkWvnS4FvGSVz$OTF@a}#KO`~sz&`%f8vP#R%K(f zz#z~3Uu{l1>*YVqPa7|PrOUMNWynwT_77}c{gsl_@O1asf0QoeK59gQ)b9gb{u6>S z2kSR-0(UTKJRe-FRW>NC>JbaDpC25NuXY_ej*Nx8VIa}Y6zupuQ0t)dq_UGJxR9%w zoNN~d%&&7d5`TL@PEn;gPkgCO1ihg4pnDP}-QW3%UH@(JxwX6enkU#@^(Tz0_jl|K z#}fsYF)pJEM&Du8Qn_|i|MjnRbVfFSsol0g8Kj-SnQr^HrLtA0yH*&zp~uX7v)b^G zuNzCHFj_ybo`6{V)?4=NDOYf44O+gH{yP{FS}m2|_UQ3bT@rGCXM3SPTv-H0;Xq42 z$Qh5kxc7I+pHB#AeonW7?rSlXLm|mN-*^DWC;4pBvih#EQimv*(adi21}qnSP#C?w&IQ>A#wclCamKK0 znU_hey9Y`{*VPV3nkDP5WHRhKth{rTtICT>-1FkUN&g(7leW#U2P+J}4zJFq}j*_SP-1Esht+dhW9S?%t|doAV&J=?NAG1qd)TT;36o0?fkBJ zc0C@Z1ULH8YDny&L!;+bqeLipSvOn1lgVq9SDyp-YA7m=n+$bAyvb(b$B6C(*I~z* z)IXfF?n8^jOxKn5s{te1FDz`fCOgi0Nf`{0j7xtZ3Uw$w-td);(2m6ZQO@cHR=}0i zbsQ)F4C^O627;MwK~(~j>G+VLk#P_K4aI?wS4%SL)Fl(!iM-CSO$Ot#nEq!Z{r@~; zuXmEVOgDZJOkt=LKaG;kgg<$J^Q`~q=I;1n7Jw%6S5X3$WIlHBmXWvi1nv>y@jz@X z$jh#i^~0z8fyosGoIi6DrDcBIvidQ9jGXiVy(k@i`T-U7L{zW6A6i2Y?zy09fTw{& zHFS?))nHxEvzSl-9I^Oy?RnIRxf-%;<%CMLH(}HS7_|Ovhw_5Hp`8la)?x&GR8#UI}o>njaQ#1Ls(kJ&c(h;dJHh5 z`Yq58CUiYqDAL9!lis4$*2!mX1x3Q^*n6(ye_o)I}#V=IFVMR`LKD;`! zZ?Rd=(F}+fN=K;PP#O=2+H8ct3J-kL0(^>3oPIiFTi}@v#BtM)%5FSxiMsbm^^T|E z{a&N*m^{7QlFVd%vwj(ExzeWxo<(~DsSycf<)Lb5HS&15tTZD#lUL<23ET zr9Q0_D8-jfd6Z^fA#qY`X?3J1)FpZ2#JMhkXxbm9*{)6N=PZ0j*1XGV(iWu-WG7<9aha|CVF zYKX6R|CS?;1T{)jAiAlTX{+FNluUc2ttj^mQtlIJDg5(_E>5K-Fg8JZB6^XRNpg0` zLCCPAH-g7`2HyMH-Hc;dsnZASilVY+M4lnc7^i>;4x!G%OB|xmj%RbG@oWmV;Rjq& zv^Ri(^iYw|6<*%DF185vzhXeJtT@T6(4Ul6g>I@Hc0C$=5#d2AKVO5_Py$GOsP*jK zaLV|@!jqF$dEyB|C=vJK^=B-X(n$#+Zw&L7C@)Ctwi!EZ||CC9t8HA=L-q+XO&bPPC=F%_M-`4hf z7hwEUl+BH8AP!e7O+0+GgIZ>L`pZqk*>Ab4PG(S4R75vw_!VpAol#(Fq!sr$cn$>HdL6L6CI6qJx>hCu;y_<}Q zUzd;>k6UGD0@7g8wiA9l8J;-tsHWlgjG~i$*D$*W;0w;FGjQ?>% z*-Tk}R{$v*H@QtWb?xc{H7oYVq?(g!3D%2Le6|-pd2S9rtASpJMRw2!94QzG)}=ZS zdT8R0=m(AmI@$90Z%VbEA`_j1_00v|eryrpx)W)!RG#CQir&%6386&4L zWo<8O$<^F3q~Zqkj`fB!Q4qIla^g;QbnOpJ?j!jE9ECN35Y+SlYJp4pP*y1#{MYNu zFTq^-D%XObn%V(6@+}LI*+1Gs!Q4?|l+p(^sFGj}OF7hT58tlZa8a{{F#KZAlq5Kl zpRc|H+onr08??;xXH{(j>I~H3eXWs@vqyL8YOit6bz9%~Y2LKKNWx`FCn0_iOeMUT z#LgP)OfhO=G%N@K{JTou>hl75LCqT6$(N#vYD^$tFDCAnxw3@s_Ya+M?5iumOPb5z z;4t1EHNJFR)14jw{d9;*&Mw&Y`N_9jGBPKnk~!N7b0)BsE0)_k#o5~FBqN4x%#W_} zI5hkeDHXgnk!q!Ktr=03cRL$Im>v*j;)$)kI*wAq_#)rD&vIdAG3bdK?PfC+7TpUo zJX(6bpDdB3DK57OQqAtz&~FH3Hu%~HiWu(Kwskr=V) zRw$Y<8Mx!iLPvujx3=AM(zr3bsnmLH%>4C;O4v{4=Il2y zs8yxrTbCCK*6}%`-)eoNF@4+OqqY|%K|A@{@->jW^k7H>!zJjc5%R*D{7S(Zibf)K z@uE@kmED(OH=tcb5m3IygepC1n;~Y2ZoJ$B=azhTb9;Cz=%;(7aOTLh0JJf(g1(02jZ+tk7%Fy`X;<*cM#5zk^iWzec+zAwZ>qWl`E!!ke%qHZ}q3D_3_$Iu7i zS%Lo2MpP;0ZB=y|1js1?hsbY$n7pIp8QkBJA_mR_5R&YK^hg_JP_y)6C*Htjk#czY z(KRF2k4T_y#CVbHU7)SdcYu3|`V17lvwdlH?hd|2zURbBcugBl3BcfF%0n*GAlMd1 zlsij<;vKJ5!x~v=eN=u*_8n3%9sTsR?Rk(|+gPYD@4?^d(NDuc5M3C3cJFbm2B=xS z=Teo-&V9;yUe&qVMo5pR935|ASlD$TMlc<*)5mD<6f(?#+vLDmfH!a)ORb^XC-p~k z4Y_?z>rf6j&wZ?FEswUBb3ia+01&fMBjkj_m?kw08hQ`4M@;F?mg{X=>BOa*2*K#W zk*50uWtHD?T`WAxpXbx`DW1jdj#u6M|+KHFOyvb|!#3 zpo*b}+pn?RP&V;04#>$#%Lg{(f=u&hJqMdF(LEajjg#y=?1vdT-_F_s=kqQzeM>KRYPaVC2 zu?V3+&AUVS`HXb|r$+qjh2)UF`O0fa+Cb^Hm&ZqhSSU^n$R4jIr&S5iD8+bu*KkQM zq8TTTL{8*Pv;`G;9kHvDGHQn2-**8bR!W;V@RTh%zQ~`L8>teGMBs330d5>pho+mn zODy8fx7_l&hYmL<#0lDEanKQAC)75I7>Q4mCZ89aneJS@g$aQaf|3SUmdJosIUjj| z_MZjt=>mM?%MAGo&!#u`lq#ipBPn$~-CscVUsw8bL68FaqzZ+w(9BnHv#{Yk zg>&1%+{#KLCkNIEfuhVLX7LM4<-9Q=IN;z*O6uLc(m`40Nz$oe@U*8+r-L4g3}$;o zDCih{hC&M}K+ksdZI17hb{K4ZPCpK-{g+uo{}s@>J2uH{dE- zmkdHzaOpDJ)V0E`?O@T97pkSS;yhhQ`@=B#2M8sSNg@}#=gST00ow5nkw7$f=8EY8 zZzREfrb0Uy9Bm}!*{J6CUQ5viUHIwL0}biNsU&l$2LG;=2d_a3u44dKPDy)uf#6Me za&4B$+t%GfN@vdUvB~1uSwk4&v_IBr))YgOgpiqFgdks@2pK7bUt&G;X2Hn*#nyRmLa^E-ixQo8Jq1~htvBu(JmM}4#tIczOOgQRg4bu0TWGrImXcysHT+{`8Dmd?6qwK zwKsrAB(`1O0&D{KRQ8jiv%@4#zgySFvTa+{1iRZnZ?T+*skQ%xBmKn{-5a&TN_~@} z*ss5U6q5c{u*g$6dCTy1LT1;4=ej{e{z)xPHd6mM{SNddN(28%uKPB0Dt0jaMQC)I zmfVXDjB`F0VTD$O;{x#5ntW4b7ROR$)fIEQqGS+r(Apa(t91#Bn0 zcH3i7A?yv9PovILm2mFzR3eC1|DxxDUAtB`ZjOW4m*+*Zpd2tSHWveA{yh17% z8a$x278p8Kavl`74V$e&)K2-=GsVD1_TKKdG)w6bXU7=J1vT2JqD4;5qVpH)+E`z} z7DMU9D2e31Kh==xd(LI@@RyT^A;w}6bzoB$@5Za;*J5MBF#Ax6yl9DxUlV<=;Qj9V z^y2sbeDhNOc9bZ#FWF1+{d0gC56UAu+3b=lZq!&y{L(+o;n*a5GepT$VLZe*C!Ic} z`4agZ^%a)ekNDi4Zr#2U^5NtmkSIrSNJrr^TN=2qspntGhk&p}5sZTJXLXud@k_J5 z1#v`T?>IMb#AnudXSI$2z_D-SWg%7foBF~?lm<{SxeT4?A($d7e{ z%S%a6ga4Hj1F-3frvRr^#kmNhif?MRPms}P?$YhZ5!awr<@IPfKIXTjQ!}s74nhaz z!C~P9qU#HUiyXMymZu$_D8T?TX}P$R&B@PifucSa_epL`6fq7up2H4(i$!^GZlx^1n%p*{tXAP}WWbkyC9i zF-I>-vL$$K)|k-_D^(p3Y>ji*Sq#r%vngcg3~Q0=hORgRgRK4`dMZ0W+;7eT<}$cJ z2nSst>`qx|#IQ4btsWQw9^}B%`I-i9c#(o7N8gb0XXw_9RiMl0dT7JYrUK=LEuCl@ zFYrE)sj3yxd|MkK5LnFZFO4#=K%LALAY21%vT@pECs!AEx+ z-etoWP$6A1cEYK+Ir@|S0q0b^5>h|z>d^ur;}F@OY&fGkcESyTIRmpRl6)yZVNb=z zxIM)R9S?+;rIMBejcsxe!r4VSEt+(N8{8rx#ZGWak(9R=lB0ARqlJ)y*FqOs?Qmns zkW(0C^3rN{9Ra7dQ%Q~lXQRDbS7V* z%xS=^-~)&~S{{<(+rj!QhlGVVXZ0n z7yh*IL!)%7jd3W0XKc|Dit7%k#deCzq5*qUFjEoF@Rb3IVR+l=`iWnMmc*~x*f z5u>UGSF4J(qz4GkBZ()L0=eHIY`^hpHz&sT?-}!wCVa6+nN; za_lRGwidtcAjnz{#I|iUN%OpNGWN|z&oaM78X>|-O?*t#z@jE)7HVkDCxVL36FwS{26hU61+j_E^|`#AJt0(od!9SGO2!R;4_}2u)nlW^)MBY? zc!JG~P5H+Qv-h5mhKRqv4M@`SO* z4lQC=sqW#vwve16tosV;2gJ)}SnP}kd%9&)iZ@l$fnr6zA;|pbk+`7N_A=BN$txLdU~n`}N>(N;q{F~+7?fgnMkQl;jIjpR$KI2Fmeq4h|K68w802f$Z78;O(VQa@ z&jZC`u+Y{u>EI|@R=0kd*$mHJJ#HG~)cOSWTyje0D97$vY|j&@I2@n{!lR1eP#PH- zN&YBpkOe)RUHgH1Gt=1PQE)IVlrTF{6~kFjGY}@Hmx|7KgiL&-Q-X)d?A)pa0dEyr zVU)Otz&DC;E<@Zx0M`AvfW1T2`>i&l~(66oL6SS5o z)lnkoMz{Pmqm36&EKn>%D* z=InLzxN7ahEUs-Jh8P>wb{2`;N21hJs#)@nnHkGZxD4SqdF`VQNFJCpedJ3U9s`oy zy&9PS`yp*HYaMxOYaw0@+Bp?@CsF$8Qs%)en8%}}=~YnEibG0~Tg>l4O-q@_UT6dLE0|kP)}hmLQc5ino)@ z#Bf7~DhAHV3Nq|s4v@!S>Nv}q@`ig5nWAX`tl=nPrQ(Y;EEW}=+UOXE;>_!VRP756 zo6<3(KI4WYO2_?Gy89BZKId>hZNHks@ zsu6)k>1w4g6!=3fyb>iBlq9UP7RD$ua@nA(=UT_H4CWybP^1e8ZCl)d2K2C3Pd&EM zB{J$TbcV)G>mj~ELajy?Y0;zg(Dm^8J>o8 zS^Jag2qjC4jJ1q$)x$~^twBzlF)F0h1tMBb$O4>{9N8i>7z;ljX>gGa{0)PNX@tYp zuvJ~uUA9qP_i2r~p6=< zW)PFXP+hdEux(1{M+dX06kn8oB8rrpifQ2<88#nUqe^oZ}=N?+2y-O|%!E@>i`MW6!zkFH%~iJksTyj0Ga2{cI%E_GY_7oH8) zv(z@yMK36_+TcwD9En8td<9?*BvQeGB!Y;ju{FLfqKQQ^ygw{8OhU}%?VB*|=<3g! znYi6H0yPI!Vd4P+)vP0&8U<01s7TaaeWO?^8*hew=-TbDWW&akI-pTF$PeuTiREVS z4ImvN7&+n}0nWkz2E}>!<|yFMeay~1fDfnk#x?y-#VZ@2)#h|7)8XvgO>tkspY%~r zF?`y?UVVN^dtVwnzYGbjc0wvSfht;A3HCGyY$P2=+K4Cvb`nr++MtLhK{t12$P?{z zhe^zs%&~RIH7jW-ahC`)(K+q7#5oOD{+sGR+*YQ8OI|s3)~y+zPwD!YdPYfh*v_m- z;<%!>;$j}}Va{iD9~NY588K!MP6WBe!!Y%heY+)|yaAO4l@lhNCK_dAnwwlq2l*n` zy52SWK*Z9=epqd};O=L_?WCvfN3Is@AS5`t5|>Go91l3GwHg>q8gI+5!B|i&S}We_ z2fIFcmjf))(99RHU~imNQ&+D}DVVxAUVn!9w0?9pVliSe!;80?Nt|pUA8Am@!|4Mh z)iwf^Zomd5f5JKGpP1tVy+WJTNe&=$8^(>bWm$V=MC5)JBV75Du^?^t?hd?ySSF3gdDvXE{`Ah`~49gF)C z9kd`!M9+aUqkZpSbJjbJVVoDL4n0kHaVDS%%9Y0GM|?=WHw73*1N=x)KCz~ zfD;zYzGhBWD#`XhcLG&&oE^86vS9e@@zBW>#CAJsar^SQ&q2~)cr6?^j@rt}TmZ=w z^{P%{nzyM>P6^RvONy)2&(a&Wxygj#PRxdia7b>2BPy;U)_ySf#@YZX!GW-twtWcb zBbA=+NVh@g%U0sc7L+!<*m4djZWcv2Qq<_UQAvAcFBCCv=K4N znnTFy(I@!+-~q;CORVneDz5%YuU|Vts{baMboi+L0E} zjXr^w=j^R42kUJvsh!^t8f;?0ImkC~gg_w8UwR3_#9A%z80`*B&xZqer6Rp+#NI-# z>$KO#pz?{YoPjX<{JD+g3l=N^CUs&g$ z=!I&*ufZZ-U70TMY~7djG+GV~gOr;RTBL4+y^+=@hCxU=dldM*+qyAuMvLLWZVR(^ zI&8pmE>MFw^&q)YS9w(;v5kCV_D|TR5U|upBRaX|WI&P;L-a27t7yL^9oeFbcq}BP zGZ2TCowXMsRp5HpIiZOC0G?P_dXt`5jx}yy@jde;PG+)}j&K0c@+Cv2)|P%MXh*o4 z<&wMj5=w|3OW{l?#~oDXc-zNZr4FZw@0jLMMz00nj7u1Tx!*+`u1>R+(+C6-aitYN z0!0r6u4Ey3ru>pLq)d_z5##)4dV5Gys)uUC5mCA$sjaDbPYwY1t7HvcoFF zP6o@}2t7z4g8%mZ^ya3v2)8XVP6)h1H5EYx`HuM?FQzvYBj)?3i01K~Q&*Jl818RZ zmLf9v1OK15%;FEBwbu6X3ZQbP4Tg#&nMuF}?#>XN27>+^Asi}wop5w$5eQH-Grca4 zcpG{s9^;%OJzRrvjmcJHJ=m=})Ne+TZ9W5A?nx#fz3Uq~LY=?_D<(Zf3YG-}~zY5`S;#M65KWPHoJrTkR(H9y_Bi?<=X%!g>w{eYxH zd=k?MnBPn9PhUweg^3Qq$nPFlDMD={7z%%e)4$(zS8uA3rp5pWTH)bgE|Y79TUl2u z9yEz83c2IHP=y%LSyQ;kjOV*YqD~6F$vXGXzy^!ME4|3-Cr-_ntx*DYA^wgqrXEj? zH+wwlr=Qv4CnTdXLQIo~Ll!=LKUhB5VX5N&QI&UrXSw~ z$5!1-li9v;8n66j!KJ9YBAg^YhTxILe%2e4ywMMl$l?{fPrM~9&@Y{^C%!*`+~zm* zoU+VzOhaZaC}OqdO>v-Ws};|?`Vy6Co}|7-i^Gv|el!L%a-}mo+TD1DP(Vru8jV{3 z+84m3ZiRM=e1g+_xcGB@!p$>c3qYSHtHem7+VsOZSYL#6|Ge_Ne;gr0?!2LOY+w)th083#&*f;Z^@@8M1D3 zBM7YUr;!9JKHBv;e$1`B-OV=^h8gjcOc0292RQSOxZYo1Ln?xY$&|Yi=0uSM=n*sr zm9VZ}>TFg{#IJD?Nz&WzP(Db7oT9YpZl_Agd>i8H(*1#v4R&WFuKoG(_38OvfBVJd zssGGov-8X+71Vqa3En32rzB>rXLIkEjw2O$b-a5Fe?Iy2@ZsW?PSvMzPkDSe4&-=) z{eWoFmKTP&003 zkRopu>#q@6?qcrr@Cnl1g2N4_HWkyeE#R`)==QJ~G6w5~8?aa?#};D~$f=d(LGX}C zv8#$3k4$V1mgAAekYpzXs-jNn{&b6M7A-Xr_qt|PY)zXjcZL6n(=?UnF?cyfGQz2mOs}ys_Y? zhZA4g#9#P1{qfNW`2nAzVyxqpriq=he;Su%-9$xnG@pvu#LCjesDN+--h?vVIk%GG z1)YL4Guo{E8*~wkJ&wkbr;x%U)?%teaPLfl*Ag-g3c0K&Y)3k=^o}IZ6M)S!wO~Sy zajjt1WKDyA^PM-l2jBnU+~~wFHry(bc%DM;;wXLwzv3Fl;^3Ukt1|SjJQh|3-Zf=z zlz6&(5KRpARG@Kn$#kiWB?aw}QJ;)a5p7^Hv_PB@4j3l~5G|vyGd-R+8zlx0>??Qw zOmYV3NKj@Ng;Sn~SDbR)*`mpt<4BV^lg_$1x56H1jP{y3e#U($W`{b{4+c`DFFkB% zjSJ&KuQZ!{-iNw{-7heKMG%3e1W~p{XHiTaHPFd~?M~fBPLyIeK)b+9OLiii`iO{2 zYDGhaW)}o(-h!PZ%?#3h&fyU((buMA@(X|vpe^v;95~olBc^{%{>YX`A+=CyXmmm% z#~i9>bc0UHdWN=8>QBP2EXj*5ZvPO>AJ$8$JxL&T}` z&|AI7(ne5&Ikazd0P)`7WZ6rNt&m46#N_qI{3G{ZLP9QMn}xb9d_H9SU0pl51Zb;mj3=`Q*`)NqCT#Tn4C2UF zHw~~9ft+k8OOGu*4pZb>XFziHc7qx=^v-!h*daUGj;u)|w@(>6iU>8S)o>9=t#Bby zfEl3XELAU>rsVQ;gcCKlL5wM?eEnP?!j~N??9pXvTh^KRH(r5duk&GA>O+o%1 zUXt-CC!A{>1h&)MwAVU{7{g80y%kM>IkqZAnFV^AshE{dO8R7 z4OL(Su^juDki>E3!hs=RH&J^^;?N-rXYDF=!ikW13y!4ER8HSMm$WQq)!z;IFY=y% z6~v_@MA|%YfYYU}*qdSNIe{`-)buv_aq^oqZ;zn)b49(0PJ^y=|4RJTVWrCocpDyS znSBCG+KoYm7-8nti2X%oQxq(Oozf;&(oQDOp;tg;YEaE37dQY4&l#I z|8;6NarFCwY0B%@kso@PmXZr6qHFTQ+2pMj12u18q$abeuH;9belb~ucRr}gP=7J~ z7`Jrpa+&@DHwp_7_1(Yh{-QN4iRXO0;fi- zmSl-5u@y1|f>xxRUhSXR2-|*kE0QOG! zk(1trX>4vyE&v7=56>J(DCr0>)ID!8vL-RkrsqzBR;`Md1rLt8wfq+~Mw_rNm7_R= z5ysWk;~M&nGkR`K7`fRhLBrD1@9T z-JrSPc0{M|R4jo!IO^cS_$AvDepBuQ<}Y&mM#P8@G~N$LJgJf*1CFKR zS`IHZLXteV;X8Ug>y628M!_Z38+)NxV(7qAg14w8Y>k(tFFkB*7?qzPY1)7mU%v@? z4UXgSF>h@#uEgK3v0I1z)!rK%^QuskEZPBoFe=LkkyM23>?j$aWF2-|-#mow0=@BL( zoGhR-E9MBGsbTHcE~IWT`~*yEsdD;#fco$XbOGsmU1clpvOv|22~M_m9&ul&{{|gF zl2b-uR_^p@(@Bw+&0QgyW9(?UMr+pMUd1-xT_9`^lWOJ7Y@$OhauoPJs1YWciCv~9 zl1W}nQavd0tzve>1a{-bjD-uxqANZi{5s0u5l=vyX!3HM{YW(Mi9D2|j@@?p_tyIK z57<7GJT~M+6}ifc9t@D<9==h6oK}Dd+C2#-1iw#BYJ!R}o<-F2aw73(^7P7M^oSYD?kW3pvX50Pr}Qjan$^_!-1fMo^YGc{}xv!#hRVM(&1I+0w8W1PF%&11w+pg zo@zEp=|~4zsGL3ftSUa3`}>;J1wOAV{b%_3{r~iX@Be2#@&ooP6vY#+%iVc#BEM2}U#sv3$b!Tmdv2u;2y z)O2a|!_)>9>`uH>o1kDT6`Pk;X#++i6`EP;VlR^J3q>Y^9k@+R)o&Ur4+hf6$QQes z8sC3XJuz2iKA-+Z;&x;Xp2)klW(i5cj`fytpxlHC(=Jrl<%i3TH&d#$%8 znfG1Wb#qHd%@VY+;9s&?$cQXw2;Y9{ zJZ@Tmnj1a=Tjq7Lffh)ghqZtlX+UQq5&V!IfWo^{mxseDzw*p> zx2m1S;#ISq4pixnk6ze+pC*RKDd>-$;lccDu|0kyVFm%~>xlxQ7yPwLU$^S1vzZv3 zdCdxAgP~2FFK}eS@-8eY-vUXn*C(_j7v1_?PKqr`x59K0v{FnYE36L5j;$EUL>41Y zY!D56e4T)^#`66?Pq-&w@~{8x|9*Fq)O(Iw@UOdatO&LzX|>ASGoJ+)%U=HLfBWz6 zt}FH5N2RtRsqMy{?TydU2-#;r!Q)NQwHx=APj|OBJ~(;0+<3USK0UYf$;N#$_-dUt z7IyCmD(cqr8_sC9949go=~{4A#*K3>Rsmh{k=9^@`Uk;U}y4^Ljc#DcW=k5AD@ z@6FhmU(mz>5t>hTHXh=td42lq_!#HTD_4$Z`#VHMKAwLm{I_%T<<7Ddz0S>l=kDFP zcY7E<2_MgK@|1vOL;gG0G4OtSdJ>Ldm0W{PRyAez@^BLphBb9&Y0{CsT|D z0RxYAkI!x4Uo+p^_>k>iUY{Nu`secJ@BJONa=rQa#e<*!{Mx1I4Xjqzr`P`O+^;u2 zLYoR3s}A7sg z*C%(8#kEUtLa%z7nOhRrfm607KS}T+m?!e&y%!c$e`q98Aqe947-2oXiemRzW^uspi_;IH9yw z=T;-Skl^!YKVn1Er*T0Y6ujrgM~nsO&VLS%@fI?f?;S7daIVK0uEU99r?Eiq%>_w_ z`>@eugT4SmceD$Z;ePl9o4Gvq{lEO`gv$_s3~e~{Z;rYda=Yo%1RNge7wZ^jTHZli zEVH7Ds@;QFn44-D#Xn9|952cV22e_IJ>h?P?JjyA}n)3~Vuc^dFo7 zQ(OP8!|bB8ieL5qd|1g8HVqg*WC<56;im`FXD7%uY(G+whQ+24v>UUs4%y5Ys(EEc z(pJv5rSUs>%+Se_-6%;c;xojoSb5&8tHOyx6eZ{;dUyi#?FMI|v2d3JXBnpRshp1K z46U~BP7Orm1AidLrx{>z%V05Zk^;+jDRDT?MTY9Ed*; z)ZZO#BC)JvGNc&zCL?0U4+VvJhbDK8*#leAAiD>!53l>O>QJPILjg*HNfxSdfGv25 zv4#6he$#zJJW8{`;W7z&>OS~JmF83$bpwaXlYJcyPP z>T+sm!p4V^!oV{ouX}8|(5M&(bOj8+bo9~ut71=#+JfeE7$DZcLIq!kHD1#ttD#Xb z`#>v;<*7pWqM5&3zWM|D^9Ul*1V+oJSv&QFU=3Pv*2;+}le*3j{6p4Hs}GODu{gbQ zt1FA6j^)2$)l7K;7j`Sg=IL0Tny?N^txE3J=~WTRlG4IhNGQ>ZbmpQ!$ltIef4|_NAuf@eOOBbrmn)-SoPqa4i23AZ zGA9hr4jzliXS*;??Fh?u2Jam2814k==P?=rR(i6jn^#bVJzvnwAGtmoG&(%m+-qX0 z4ifm1!cc(8CP)dZO?_5=u#xoHUT)!83-84V-s+@Ncf1=|azu>&w` zt5G1clRlDjEbgM@mP^2>Pf^_%F@QNyIxS7XBR1ipa4B4yk(RzB?7xfP-2y=WapKyjq%M2}=P{m9Bh%=?TQ!)}U=ey(yoBp}i|ep5kV6DI__Gy-lh9R0Dyx zxf^TA36RZ2KG~dO2N;d(PBx#<4>Z)_3))b0$Wk@HCVQ`85MfbuDCa`J7V7BRd^b#o z@XrF5NH}pIZjks0SVSB$0c(>5-2sii8x$ER7?6GvK|EqPeSTgfx38HNrtCS1`Kv!F zpA20~#_>wbrkkS8YDp=BSS_|W1x`I2h?!&~=2viJ={mGgDz}^?k_hXeJ&^Y6fwi}= z^bl~^+{Zh}9uRHyO7lQe@MpaziIxFf5v6M|!F|D;gm#cN>8}0H96>-DD7T0u_G~>!zg_z%@OD?kSQe! zgE8osiOF-fwk_i_pjcyP1Ed2EIadf{8mEyHfBD?U;v>)nQ7%Ln_S>Ei0i86FG=}Ol zM6n$3?9beMO1gmQk+p6&kR)Sbl6mI7yn`}S59--zD@W7!?f4%PE7waDWMp6?xdi1Za{vdeA z!}+li54?bZ;?gtAiJa%7N z)U&D}l^}k7s?J-d5Ar0NExDnK|0Gb!ZLj~VYVa#-Tl2*~JjGt!J z9YSb1Llcl7cWF5i%2M4@s@T9R7YbY??8Q;n>&jD5I$hWj8-;M+708fPigq5HYDa$1 z*$nNYl;FtO`?sr%?Q=GH^?zAeU!Os9wWg;n9w~!C;ss11Mbf}(s+OVgQy~qr6J?_Y?6hC@(BnYpV{27AIr#)uR8$d@z+ewp;X)|H zd8SK|KiVAF5gY7mLK#>V>_WQn6y$@>K$>YWK?Y&rqxs%bKtzlsLUZ;A)P`Qni$(U? z9sJ<20?GyP>ov8cnt;5p3pQDMYSjAm6+^)8Iwtjw1PT7u$Xv=PVW*qN_w zw69Vl#e$Ul+9xQu<%M>Go zhRvq;iCUDH#KD5-fF>4T?dK;uduXP`ddT}DoG7}X%H8WjcsTYQUKY);vCa5V@k8_R zW1JmTZ~PF`$?hY>YkV#?w&sst{T^Xwfl*6cv;9Ve0*l+^9UaN+5%kjQix_)xKC^L-rD1wsaX%fHak*eeD3U_dbf(NE^XVWst|@{J z{_x6d$<4uUEC>RAZCj(a-+#9W0C_I&Og1?}WOu^&slC*JB4I`lCci@;jJjhnK^wt) z{%sC+Al0q+J=z+{F={dj%_qw26>Hc(#e5;A1w~scx|n>7JA0?H)7cE$fyV<_+Tn`v ztg|)^t?K|=sABC~>-g_-gzC+y7uwon;>@z1R_GcV7Dg8V68?5KryJ`LT3J zYqxG-oyHiiu~zDUtRBj?&Q_(0t6L+y?IsV#5@Gk&M^LkDj6&!ylqOfg)5SYB?!c~J z`LJwNS5lLO@{RpQqz35{^>p^C2`EGQgUi|^jQI3OwvoRJHaD-1$VT9X)&5k#O zv3I*u?K7;U`AF=jxH*1+{-wR7Z|E&Mb@=Lc1Y=sPrWTlZK2 zbJ_idh48_qmx8JoX!QyW*R{r>Hud1e5=lmu9zuwc53)WuWZ!DJ6bh$sq?CuBhZhxL z4=tVb|FANeG|P}u3`<31bYsBP8%b<9@IVL(a}9*TG>14jKlv7A*ZgR5`?>X|kB?5| zkK(@8JtJeyUBX6p;kVTeD}iv2FW0N@zTMr2{6#A?PvTw!uk0FS3#K^a{9Eq%L!+#$ zE6|Kdn1@e;5}UD$mLIeyRHYF~hXA{dn%!KB&pBfdiw8>Jr`5Kz$p`pX!X;~GZwhHr z<__UL2Z*`w1Qrqavnmp`Qhc{Z%MlJnA^e|MfIcL9a>+Q&9IZ}S;Jo$U(M>)E;fkp)}Y^hi}_iFZcF@= zfHVezp+vx)PG=li3kwixDl{ANr)4>&8Y%zb!EKu|Qe!`xgeBH{zHP@KRX64~&VnJ# z0g+Y@z6+rEcQ!0$hT_0S=-=!3R!{OO+zRsEW;bt_x5AsY60ngL2TQ3eJjPFj%|i|} zuur#c-?4)_{wY|G4BjiiXk|XFmHEtoa~dK+t&w6Z=qOtPBI*QqVxv#iToqJiuq&W#fMy^8u|$5b`Wet zO=Yygtux*Z>;4uPAg0@oo9rq73oy}NdK_AcETyr*P*()U6jQ&FCWlRlg zB!QfQZp5c}so-0rG zPVji7X6Jg=N_9dDC}drUyLPXiU^0|m=@zD~^7cTi*P{=!eYk@x1LY5YEA`r>Wh*9B zVe_El6ZVL6v&l+jqk(XaG>!cVE<~YhD0|qjQzb=+VIRbIND0*GC@i$irnjWomk?bl zBPzu8#Nog)vI1Wg;p^x<^b=Emg!GIVz2A-ng$JEjx(H`<52J{%QV32jy0-yzJ z>V$5ec{?Q>11$k-oI(CnzJzZ7g z(|=H~>vq^}H8LBy2m%YP{&B4P+V$v0E&oD?ulS_(bsjVYw)Af3t_6{Oftz6m?^McK znlf#pkQu&M3qprek>$Nv1gJ=0hB! z@Z4DY)?^Eh>Ip_=5D(ZN6Y!MdEO+CE>UaeBf%v?B&&>!Rdf@={&bXrRn7xv0mr|;I z^o%%xmHK>XDb9j!SVq}3Kh&o&s0yn36zttDKMpv99-V0LXxl)51~=uW47W?C8QHh2kpyr z1wixt^iES8P!ziZ#az=zKfYnt8nzM19jRFp?yZZ)BefkQ0O(a{s5~Iyur`kEjZK#w zn^;Mm8=4xq;7S3TA=-%IsumJ@+if;ztyP&p!d%IWE#*%7d@&MEe|fMBn*{eEqG}xU zTz2BQCi#QwM}yL-Fb(!tdD+s}PR)mbs!Wrbtz4MMR)KTto4OkyX6PiAvb8G0;iZl? zN86P1XINOi@j{{RZuUdtt+60m(F2=Aa4r@U5mjQV6%hrcHnSy%nWnaeD~fBY7|F%I znms-`zC8V_+2PLqrT^kzf9D_nRt z)e^Qc?A|L@UAgpbz|(%kY}qL50GYK>W7YBa2*(^&;Plv#41j1c?{65I2QZY5{uu&U|w`ox)&bKFQk2U5ypE1G;bJ8r#N^ zi9?*MU&@@5n4f z%GI-`!QkJb9kwN+1BPbW%C;fpG6*UP)3lYTC)10#v3SM2lidbfbP~KP^;%nbav*m} zYn7`(*S}&vm*w%^mF4rNR}e3*%(GE#19R3{(Tu}K=jN;5ONq|u31vELIzj(f2IZRs z?tEOoZWF!ZY&B{1Wn*^8*jVpF`HzrV&#@vyub(B9bR0Jvgmf8L8vp_sVrAV$%p`*h zDGm4rSfmt~4EFqJ16-pcW@Y03LX7k#0j1BB>%@wUh2-hBw3QDTY?${gknPh5Aw~d^p3ac*m~|9^Vj!0zdG(ysg>K0V9Ki zaeJ{M73ijskGW(?I<8+fw{4FECM{CYh)e)qgw{M)&|yybK((e@oQD+jP-zkla-2+p z6>E6)K`>c}E2s(~B23+RQD~oYj^07O+((lwswVL>5VMK5mnceuRjNlf2b;sF7L#z1 zYz&r>&`WcK;1g~oaZ;Jdy;t91hnKVn8h~jAt58PSS?mhJUc(=pDzT;T^1Xl#s3%fk z;E`xRJZ#^BRnl*)ky<&}h{eHUt=N$`2!1T=f-_E1!?^M|uu+yx4PESo1PnA`hAeic zoq5T>@hWiFTFH4$Pu7tP!mi_)6p!REEj+u;Sca@xye@-#JRYv&_AZB~IphsUl=HuI z)(5yDQ@g;?=)ewA;|7rBhW*((GpS0TM=6cZEYgU!dY!^RvQ)qnywvGoE4VA?mxEs! zr(B2>*u+T~CIdUOS@9VSipC4l7m(1CXJ@6*&4`KuMYV5QSj#3tX!RN;(TI0vae1UY zk#8Sg6j8SlZ9zLv;5sB&36_XdBf3JtGU7u7Qy?`I%$KJxr$3)wn7z06WV*jUI@i8t zBD3cR!h^iqoxU|bC1=j`?>Bw{NxX#U{T)M2J#|dFmbEfu3|{pfEV@+-WAP)mmdNGYUMzJRPbxD1uM zwt7Gzo(_yZF~FLRr}1>>%j!|{!2t_EQfe=g-M$@KW_^?X!sk810>u4F;?YDC8)$h) za*1jcv|k~NJGkT2f=N4(Tf25W|IMIREZQ0f)_w*AuYun>VrPXle@gfYx%2L;Ulkihp0$Xx~4|1Z!EiWC7XxV8h>m2?ccsL0Q4Oj6r>Wrcz5&TOZ7r( z0C;(Gf=EN%|6l)dYiDwjC3n-XwGTp!N`HcWn?%`_B;py8n?^Ut=ylXumxK+N zE~4FlZQ>mI3$sfuS>&F{#nVA})QxK311uTFKI!kz&tR3vunBtg%}U0puvH z)MD$8ksf4jmjY9F1qk5NO2AxFE{{B(vX(21+n5ix5twVy2d^cO#`+{mKp7smBON7b z_W(Sq({-|kNIds8WXX8pL(@N&5QW*;1_<`G{4}LtW?FWKaV6!<(h zNvfcVSPyf+#mS)j+KGU{`Q+0I|6v(COJLvT98gDB5ntz zl}ry(jvjLDBoacESbcm~8~}Aa@nW16g$&pA-UahUul|54;e9OpD#r=a626OVdHhAZcPnwSV^H<-g z?Fkp}+Pzp`lzOz*H;_iStJqHk1F_Dk$Z7d?8QVNM;o3r^{HMII|NF8QbBc{IaLugf4Z zsh&!aFDz5vI29#~fTOAt9cZqgm&%i<3Iisx-j!=uH5FJO;Z``sIj4RJMwhB8ytP?w z#ueD(XfCy_PMZ&;?3f@l(6!Jh)X1VT0(xjb6FWcVTsZvk=JClILbLh_w%|Pg*Xt<+PvjoO@yJ_Ru_POJQQb$0MGC)ZP%BV_Y zOlG0{AUeuR(PT$(u4TT-FQwvfdf^%6120U&_Xv?12J0jlcrv%A~f+@WawHtCCpxt)i;&f31=RJL#=M9 z7dc$pJ7mL(1=5~Nel3ltG0CgneM=PKJCj?tKjU7pV2^tY-s3epm)Iw zw{}7L*0&9=h$&)qqm;&jCW6J0@<^g?6EL&9M0JEbA+8*9sp`6xUjO!o4EFc^Vh{gIX))k@y95OutZzL=yeLjM!Mz zHp{H(LjXd#+;rRsBD5k6U#`c1muk#4heBC43yAX-BMT-A`VRkN=U{1#h2!mFm&xAx zq4DmlHEUxSR(QlsdMDx_1O|)|cIKFzW{rFW&05`9E<#Sh<}?I3;xOKo+e zN-!%L&p?oZMd3#y)mDTFMtO*>zU}xi*a&GbnNhiTjIcDA0KrKC<=aRNWW>@pm6q8M zp))g&!ljZ^k!&>BudmbluxWX`PCr`7f`f?0EOZt!Wjnf9p=&_c2_>S>NMd>mrWfU( zmd{_7`VvY)>en*X3e|FgK9OFZX>o?ay|od~eQ4oJB}QD{5KKY&QL( zW)osluK`?{$3sLjCD;$eY|IZS02d7;C>*0$RY?iFW(}Bu1*0+yGFk=l18?w^a#w)X zNfn|Teclpzj^I8WHweVY0qN&N-N(R?Hk5XUJz^n-z=7a|=xtjqA=M%nWapQs-x!riJN}^oP`DVgDlz)uD9x}t&_anq%=Y^v$kX03-T7XK(wUpwtn0y4NFb2Ihy2i z{AokbvP|+Zxuv?}&QBmx2QOo|L>e^Zajp-Z4Ds|*Bv+tEEKn?<`JM`$hsrQENu*j* zOInfrNP6eh_R;!U(Wv?64h-D|k@?Ya^^JwOYo8BuAzIRMVy^Fb;nk?k(_&P-ODESy&rD} zubtedI|e*rWgY6EyD*golHHdgbcG3^N+BqCDw4%pI|OWS9*2*Tp+xTM6gO(zRjf%w#n6}ULdZH@Mp(whOOO+Q%qAv(E3*ctp~)Lor3&M| zBw#POsenbgw+*CNx282Qz31fc>2@1GpJ=0IZvfomrX(4NOvvHtcU4jK267FvCS&mk z_ALvC(l2~^8(%%3L}PsJ5kU*X!X)_VYxyA3O9UG7EOv`+V{%aWrOM6m)g)I=%0abK zaO5sx##Mtd=WVx6v6p36y4}jfO*Elpj-}Jw#BPIh!fQQ^LW(vjutCLgVCGbf+R~2x zQF2BD#^g=NC^CGT-m|_j*b>JarJF}95~}h@z7ouhQr_c<>~u+kge3+XCWSQuG-ER? ziB}x}ifs`yA}6(a%Fq70VeIJHMDWzWhaa6g}w;Gf(HgEb_WWbfT z6eF~U5YS=63&d$O7#TooY|F`mg}mPK!`l||HZ;R-m8So*#h&$Saj9iX9L*6KSkSzN+k zZfI!O6PCT%Op$~v(frKaEFkN96Q1q8Su<-69lZJ@vURjER8YtGGJ18lKEHS6ko09{ z*32UWGLh3Exk`q+;yjMT+e1@Y6(}R*h1;fOR zUxA22q?_5f&97el5i=(cfd53aLkB5TiPI!Ffdp~@2K)i6q(V&<8>pqlPm)=h30vY9 zN;qWshQbPIX1sNvZ~yw{-A`}bo__Mdf4Y71 zp-veu&3)EXRz~TD7RrtZ!L#mZ0N+(aux^k{(LqK5&ve$*Z@%&{8G-1fGv|jB`FPH+ z8zHU)!bmy94zIf9PH|`SXJk|Zi3MCY?Z%I-=;~IRPfRgzUQF6TjAEGxy4A7lMV&r@ z>*-4D$@%8t0W_3ucRl(&e_5bly-12&?pcUU+B3P9m`O^X0w4Y8bHsYCO~|{K4cK6t zm`&(JzDRt)RGGsGRWB?i1Heh=br31Lw;;~rt+27z?Q4NB@XP*2WPJebM;kZo?0dXR zw+P^19Svu=#LS!AZIu*0bRE=HiU+M1444#B=<0AD1yv|WdQ3{FqQEHl%1>}MhU+{y zp57Ej+WQ1L{rK3+$bOe6RUGb*KT$J`y3+ZncY(#Y7+ZHc)0a+P{XbI4P4D5|wmZG2 zI07ydWRWYfjA^S!5Zaag8CC(^^p{9$9T?XdGLuuch)pkk{Ou(zh9<@>3+aRaE$bX< zW2w(RCk1%0Hqw1FDP|fgFQr?+qSivPvT=w|a@s3|AkqpV$Q=Pg!rb8J(|j}NV-Qo+ zf1uBP_dj}%#rp_(^9v2Z+Twf5@m16LB=Ckx#Ib)n+Xj080!o@K?Z}|NvdsR!xoD4t(7z3sQ_D63lGo? zX+f+53k>`PD^a4CK!C#-dOKFR%W|5VJyVwIA3cT^RJvZTXr#~L48yUQj#3@uz|xJ7QAEphmA5v@ z+}$S|@Bn!>wBK3!>g8vRK0wb-_Fw%@Q8!3(8WVNz@1VC4Rjg!XcTf(9zs{w>f2E8a zT~5Sx&o;%*%N~37{e8$6u+o4N>#)vW$>BSLu12>#+U_fl6-*__24>U4Z7eRXt~Ysg z1B_^A$%7Zie>tg>kpStV1h@2$!$kO0>M+$MLmff9_|w1r>kHG}pUM$qAD!LwZ~uCK zU;Gfbo=Nfm``!NjCDc{L!2k`CmC+=qi-YO68M`dZCb1U6QoQ7G*TqYZ#l(49xasBYVLpe@SlJ-> zlM^cn1+n#Q>oJsrABR$1BkV{!TliYtR>^mw*>_TBgAf;Po^r;D0@LrmlWI!dS4czl z8V%hdEz_^!-m($G_0=REtJnU+wh(yuSi`*SFZQsaNiJAd!hzjYgvhBZ!*Rc}g*Zq* zg>sld+>dIGP!s~w8yo~2Q&!qy@@d0LSI)qe{j~=0L5PV0P`ZeqL%w%jZ`s<;a`G@# zfxrV|yR;m*k0}iqvGky#Ir|t_Ba`pUH`d5(&euIfawbqs9so5*3JBh0gXJlF@!d;I zt61ZU8<#W==-V7$3@Iv5L*kEYqlxHKq2Lfcm01l|jTYAs56>r{zQdFOO69>mG(hR% z8{WoyBIJ*b%^kAd&g%9 zp6+RdpALG0{-oOJ>Wa?gd)AC0uP#q5TR+sO@c&cyc1u!SS)Qj~^Aw)U(1|7?0A=M& z6;mZ95)h&bq$ogYNn>R)hX_z)#RnZ8p%Pq_SwBF(K;P*yFJv}jd6ze3CSGiQ|NmNR z?|s}o0HvzRddxCK_&NLR&-MMaqZb`WvvvaY)75BI9c=r!L1^rIjh*5Ypb~X_&0JBB zEI5^0#YsIm=$1pDYdWKhQhFw*Qlb5JTt&`vjL@z^r`cv?-`-u&ABVmd8 z3yL2Y<%I#!&nSrsg1cF=W+we?4OHvnMs0FiXiP{k@g10m<|s%?j%B}M>V%mqaXyW?7&nj|sc=Xxx=gU1M?F`SJWbu^t zo%&Y?pe4jWe9{6$z31_Er4B|@(~?J-Je=|iwE@xhW*-A_j{D;XqqL%QC7c{(E&rsM z=|yB3)`={~XX@U~2gSj&;O`tM$1P=Fw8DjhIA!Ku-3R3P9mQWYE4NJ<09L2F?7mt-KuXg4*N&;jzE)P=Y_#_p*7+HpItE$ne<;kihq$ zgs9p_Qk<}7vlaA(0BXK4TuFLGG?wSGldyvv2#_ek4V5C!gi+8?oNLWi(g4Rb%isg- znnXW@-a#a}lbk$AO_&+B@$yVvg)ipC zkJx6WrGJM>s%kd(7i^pd^js4%H0=q}cePlgrkm6U4f+cij1Nq#FJJm#c%d))ODW~e zr4CD497)q;yp5fnJKFTcnl)S;wVQe;y^G4R5hu>FvhL~2#q(BLnkpU#qIdBb5Dn#B z9DQ^8E&t*iKmF$WZw`q2I$2(nQWX|t@0*Rp7oVRU9QXqq(R;hm6w-3)VB{0F_bP$;U?d*G&z&V09E}PnVkAGA$Pip8(h&Mu?@a!iNBfO*cuOu zcnd|$c{j_7K0ODZ3hQ;KU(m*tznOGXjOfL|$-4__h~zW|g9uwiH#UT}0+3sDK?1Po zqJRUCrA!k2FBx~rPVv7Ce_z^FqHpi^lC{id$Fk9CGlFyV_rN}YDZ88s>s=z~eWz5( zlzCMn%Yk~4?NCY)HtMH$KLl;PV=9kOT?cF}Z0Rcj3+@m+7@ z(hJ$Nr~L|oL7diHGu^HXM`B5-@h=5sljWfQVX6g3kXjW8aHLW{JhWfooPG(HXod5K z#n*VYlgbFBo_F8;h@k-V)Y`LyIaJ-XE8-SiltWu8jbJ2Ii4h!VBF}N;zZc z4PuM0=p6Y;?sr_f&-Rzd=l^qol})eSg4@k*JOQ!)$>!TRmHF%heh}f=V*&2_LqZRh z8NL~8=LS`TlT8H6W_!HG(kc?gOMxZRQb|8;|{Ouzks|-9vn=E42!yp<0 zJ2;ofUM2!wlyo=ToQAxt0v&CZ0DYy@mv^U|t6quQ6{L?FmgMx@C3;U+RzfNolBCX!(qV7C#Lo~0V8qrooQ=D#+5~mU zU?_rmUhYBVMkK(?Bv9SspW5D09}L zl{rO)4pohVYZZarMs0rlc@z<-(*C%Vf_QKZ-0tFFC3S^a#q&%8aZ_BrD^^!F^)64{0zx;qVcIMVW9Ja6zGVL20Pa%IS4v0cTX| zKZj$lhdQguXK7p80%kRA$p(N|7AnV!1z~8DcDbTmF9 zsqUdi&VPF+it;lFZ$^gwAD$76YUNEO6vE8wsN7pQOk2+Ep2E$z*FC~TS(S_yTKaRY z;}kEA>u``thfpUIdfk$PS1}6D#0jnZq_+2tZi%?jp5OKX*Ygi$`+;Y-4Y64&21Gd; zZ>c8V{RRF7{TJx9b*1P%h$2ugw*sfE1g+MrDEnHo3{Iu9Y@%|;1VJpXWzXlFLPSGL zVIDXa5F&1)@@d*U;;&ElDO9+tsLS(5=n;;B@ikHLRtt}9b0|kT{%sMAom=0r zJ85vjM?>hW)E1FA(taa!>hj^?Pk+kHdPfxiMQYFpBE}QGd-G>L1h0lq&v~3+xN$j9 zA(?G39ock|#)eCBVW2N7G2kUGQ2Fkt`@Hy0^e=#s5~3HH)`9B8^kt|xa8xA9GHNRN z9n6e7CJ3{^VO|i$JeqW6)(*H<2?ACl`_+0(yQ+Oo3^*}URTl z_Ob1;VS57fSXAHRBomxl0*)IiJ5}U@*20|DydjadCQVg$$NmtegUFF_1h@j>;&D0< zMLN9sfvuZ%*gn93wDF50#50?+iqx%z;Jvg+Vra1JJxG`jS(ad|>RU4jrLrb{;u2v$%>g3Y%X84USnWE)?ih)QT2^aK;`*tc6VN z<-B!f3H_W34P1+D*bTG>>jZ(ln+Kj|fH)oLbh4F0x`6Z0RYEY1G#h(x|_gSWu5( zxl+$UJC{6XV>%+k_nf>1J@ymk)S@e{AaUxdZ1o~LeMbE7E9t?QXAy(hKvTlR)|{04 zL!CuBM4Q0^=-nCUKxMeJB>@nyncq}_xwXuds z(>fyXZ@TeqyVxiofw#5iJr+nisqid5hS^Jlb&eO~MKX3DQF2-kOE7|o`#&J^a7J76 zZ8%c^%*JgI($^B?Rfr)W1W;g0LM2lPL?T{Rt|Eoi#SX9xq>Bg=PIzOWslNfhBn*5h zN=oPoAIqSiz>*H|*O)}Hmc{NXV!2s47N$43 zHB=9@CQ!=9KspTGi&t<9XjR2#GLqY;WZ+rZ33oDkh(%(d7)5V&I{EK?`uTkOIVIw7 z`y<1s^4tzE#;pYpu#6J6hPqeDfWL*X$Vh>ZWeuqRbOKxdIleW7q{8%A#=uEJgAlw9 z;hw4l&vF*4Hp+S&|4MDC1$fqa(6;raIh(D~(Y)lT9t3~@1{sHGz1X9AxMKs4mpS%& zYYJ5&5UV*yWKsc_J#`(!l>y?q4qBxUzS<=pgXk^cJi1%4QBFVA%APw{oca>$sp2_6 zi(6bB5CFjR?4@OR%Qj0<+%|y&)YeJ{R^`p^?Z1ZKeSGI3L8x5bLwKab8mIw$+W!LW zY`t1VZ7pv}(I>9W$#=IgWfK4Ec0JrDA3Unmk^Ftv!GrnZo-YiTZJ*+F<9Pgw`QLZ+ z+kLrakM(1Fe)ouMz3==Zxa6B32u635H48S?P}G_D*$MmHS*~~x=kRU6CQ`lu4mU!v zB%#lN@x>9j(ny*TDUH;@1(W0)Kc{9bav|yND zZG8YP{Xu~Pv+WlrT$Y(CZiFHV2=$b^1>LcSe5I4DI_Ex6AAk(wrWVUIa&)fAZwXPF*%Or%s=KKOQYZ zexNt(pi+MDZ>e6lRZY%-lmjBXFvsFZD?4L+BKnWifV$MG4=N5@<_Sox;`~L$kbciJ ze^f@4ew~~>4T-^!t~1;PG8eu*WV8<>|;hN2W#XZJ8~CCSJefO;}{ zH#Z7TSJMh5s4_z>(OBld%6x*6!{Y^(AR;4N!jz|* zf%+uMh%0dW1b*10Nfn+XMuuQ)2Q}#Dm55ya{LzEiZHpMj95ZJ{XF-NC_8>|xNItU! zeV=PogJg-IFpz2%X_HKJ_;*0y`}mc$2k>73X;^=ydGWUsw9Rk^743*B(W=Zze+SVl%(sMWQ_UD4iVS%);!iK&F35y4KAv%-d=b6Sj* z^=(8LZ|;$aC%ti@lVUd{BCY%#^DSaU{~dY-ieCP^bbGLA-vkp;6k32(GU5x%>*1~6 ztH>%fg}hj)GEx;Rr8hKa;Ku$EU=Y(l3PtrP=9GV{hoJ2XE`F411pSf&2{12{08``F zpu(1!3q%v-!O5*?msyF%z%t=`QB^R7b=t~Wz&}}2==vaV0&* zi#TYnlP$*W0>MMye~7f$PKIbE)OLjdi;>?@*Rg_SeWD_g)-*7PV@W5?19PuLf4GYg zvO$p~!YHQ!RXyCJHt$zR;ZY479eou8Xs&>FJodl`=aD;RQ zXc}Z9k8^AO#0h>nNeV;7g^g~g)1k35$t+cDoLt(?oQVcgRL|oqgYciX7v9iw?_t*X zq4TAUDdnU*&<)E7~2O!aKtU{?c>}U;Zh-KBB zVvNdbfNRwngh3e)%L^&yk$ehA8{>-MP&NZ)QTM$g)E(wWRf)W0Y4KE67{LVBPQCdN zokng7*_0(MwN3?0VGff>bx8fOZL`lBl*5p%pE4G9PO}zUNUC?4#*ct?#33he5SJNO0*7 zS}u&NUt!2Hwz7>)1Znfsq-&mS@Zm#%9wSWoBS1)n8322(&D~$9S(0@c^ykqI@nC$2 z%_Z)#sdfUy=z4roc!1rh9>>|cqzoa<1efN_;(10r==sAG1rQtvup`DLT+8OoX5}Hq zrNj=|1f)g#q$mijyFA{{*3{}9; z;g<`CW5+_VSgEp46Nz{hL9(KiI2YHz+-d3wLeB@M_?uHu{Eh(=?%U$BB;aA-E7@ekpo@xlGuG*lyw`#e7l|kKqVq_bqm(S`8lJi;?aeX|Dv3|BS`lE~~-SE*kv3Ok) zQ=8u~ME4hN=xXvZDnf2(_0tb6YbdAZ$`C5n_A7SN+tor}u&Ic4%rEaKC@H+)WR26U z2ygVhj|7iMd$Ra|(8Y5*_%woBv%Vigy}PX-DT`#kZEEx^!76XcF|>y?Dn|E+X+A&< zI{4uHwb4Ofpz5KB;BxH4qTaTo{$1jkM}E9LqB2NFOQaRs8`%)0%&FVkI= zr31~%xyIgm)ry^yC5_*pEZUg}66zevt!(tYOy0`{j$@HqQG>CTPAbA;iTUM83AE;1 zsCvKy9QWPd$}s%ms_!^uK0WJl?8h-B=S^UH?N(Qvh1L_~lLBE*!oK5Lvw&q%4zzDT*sF@A|<8hEC!e`a5{TvT8wc#C6LE7`UHHU;$ zf<{xC@mUfbEr)mnGq64F;pf%|4RrzmMNzZWCTluYbKu!M(&%igDsC~DXQC^t{zYdZ zRH9wmD)X;Qcc3XvBcs-mdL#@TQ%clH+5KG$0B(;olN9qDMnw39`p?d`<{yg+2ONIq zvEa6%xVy(UBN~fy2sn<7tWSZuH16WY&)&j}*L*8llG!Q<4j9^Q%E~A!uLDpB z0uELRA4>e_D<~tCrwXFNKaD|YO(8_rpg~8(&8iHJJD461;;O9neCHe*#zJmUB^qQM zNUEy{p(u?m{`1fPHCs>%!wV|2^b#J-z}kd{#esEeuA& z>-Q-{Z8JWNz^O?Rn?nAmE5eMR!>xv!I1@*2IU_7(CEyemZ_WPm-pM~{+f%G*zgfIj zo=kdtK5V1^zk-Ki zyimmzxQow5GS>JzsIV;@kmmGV{qx>aE%2qoS(1+OI~1OXC@>}O%|(*!d1!xVQwL|u zavymPlMXn7ZA3oi`a%uEqcS|xlEcN#ng>KDA{h2bl<@qlF&qjiRKwNCkd+ZB1qjp6PmiO#==A&i*xiV*k%|p?GK4CU zLOz4-ee4W(o{EsiwXytYvd#Q*G(a&5XrZ#P+$v%t-{HfGTV&gJk}i@t&M&iXyXK{( z!_#pHKhjq|n0*$(?3&VERx+GDID0+2zq^lYF?$>~?c{U!DZ$UvIDl9j&lR_? zABvW4@k_8HLKkKK3u`VUVzbsA2t`A-hYGZ@tD;WCgG)gX0%t8}$vpxUDE?ZDE%P?`aFp9ZROI3ANT>;#i@S zn~p?(UD=NQN*|d$KuhPI919+6T{Rt=kK8q9Q#45q2Mb;hQ*U3>U4O-@T&B=HGLl{U9SoGm~Zz zx9ihEqM2+Ol4cve85HIOf`LUKCV2O*=(MLT(F7`JK4jHM+*cnej8FJMmtkvu0Td;? zs%e@pY(RLKAFMf60n82GXi69=983#fJwkGnG3aOyv$?~96q6zhXG4B&*F(RM&1WPT zsPf=BYwG(Q>l^mZe+v3qjhu5%)MAoYP5(Im=4+5(<@-FTXTWrlZAwqCmz-ha%&lYl zHq2vkrmK?wdWU_bYml|x*nC;CLW_FeFvWv{0Pxd^RdSlgpY=q3ZjCncAnkX=!(y*xQTnI3BTqU6{|nEBP|9ubEKnpvGr`OLq=; z%S~ZXR%zK+)oDXFL|7+oW`SJvXUzM0Bn#Wazq)>X_VD)XVO_F&yX8_i(x4S5P{5w{ zsqkweUyaXu2Ye7q))m@BoBbYdgft&4^`UH_ui^1z&cywpU}MijmJsp}QJ-5*A;&hV zyj=J!gec_WQw%1$@1#qG`ZRrB6_Oj=c%@6`@cocz!iw@9j+8H!v-htTuZ`nt@XtxU zw%Leuvm*ypL2nqq*q8xt5)=?99G!sr+cI+T?EB^lj5O?rB7#^2FiEfaq!)J#X-Fz! z`xvMo-~f&@^Z?BWe^b8Eyc*9!CvC@DD& z&dB#|hXVWI^}m|$e6aZgmNVozzE7L%@Xk= zgh0&<(`o)>IW!mS>f}E7-(A1-fo3850hZP=9Vq>0ge&6X-I~MXa-qz)1rg>E9?$ zP+5&i!^TdIm;p0nVu#dPJlbEfyL>)j>?Q0CkWx^w+(2C3mo{x8OkdBQz}R#PPTDWS z5YbGn;&aWyp;+Ud=_9ra4F||t>#*SJ*ohTqNf85lMx|NeQLtexiosjBnXi0T*P>EcjXOT(bR zamKsW+S3}VZyOkvEo0t;U}9##TcKvQc*Ob2n}Q>2#nK`0UK_&Q zMLtrqhiuyWyFJzz2;m-KQY|zFQm#ZcPBC=+;Y^ZFKSm>sWP5=Ym|q058Bx!*3vN85 z6$bepZSpW-jGO0(;QySfB++MdTB>prw(0mO$qq)N90tLDkkc>U^6sm*y!$%M-T;kiQ=&1U4R38>t$&QxT?N*KA6-`d%L&AI|FQYN}-t5gq@nvx~%|&_yw^ zJv`eZeGGzJBxZW5db8=iXi#~GW9#)0Ec@xEREuI2m8|_=q^1P&0UBoMk;VLs#|FNW}P8LNJV5g)ihuy2R|`#1Oa3ARJ9GKg;r!=O>PT62hIM* z^?BU+VS`rq4!=add4ZGZJ6M&ow%+~8S3m!gFChVxKl*v2tbD>gvjq`6ax(uNypAXx zNGxJrICNm5TER_Jqyyb1;8O~3+R2=#6E0a zb~}ztGxHnl=+N)Y!gN=KU;=<~6;gF@EJ~uS4SxR&Uk^Z9MyF~0B>26J^ck`=lOrQS z8>E{jCc{+OgN$?dKUZJq%3tHTOJ{CDbo!TCCzdC%WRMy6q8N|7q7EU_E+;7U#$RAihKO$kl?j zN~>uOPf5Q0Bta-nw%qldlGTtD!Y%_D{Mr02bd-SL6k|Y4F>Qu zYo?$R^e{{X&rw=Pv(pUMd3il0e!_lpbt|=bf~+%j=UfPky$8t)>=2NpQqZ?*u4TKU zaaox?5um`qGJPElsNkhwmKcNAAVo>i9u#g*5U8nOK|Q;?+`D4#`f3cj@dDsVtkY>)CLc zh!@B62iu?Kc?26%6N#J-ZjxatY|La)rD7!uRo9v-2FTNh?nMY|+xmcUgpC|G#7dUh zp+iVDQV?~8-YsRS&Z3BbAVhSbb>@uFqm6|(KJ{Jq>O+aYj?rxh^f)hQ&v(dHvTnNF zeealQdp;3Wi4>YNFZ;Q9;C2L)X@3spbVhK8?``s-SZR)3SIPye#P#SKh=4pKuwQ9; zJ(}xgd|IKS&=0BEGIwxn*+JV~eS3<--%+DFXbzl+DDm-wj?7LZHpHMnio)8+31>-hAIQ=1vu}~@bYB3#P1cYA zC<}&!HYN)^5m`OFd#DiC?p)2FS0}q|&F`>*3>$k6lZ2sO5my#zDzs*vQD9638;*ve zB3@QX8{T(zFY{Jv8!&T8D(q3X_8atKh%E!JA%mchDWIKE0EN*G_9C!|T}NDM0Yxn= zaYBbfwG%Cx^e0M4u&TJ1!*^kG2%3t5z(}o%CiTaKAp{*eUnWb~mQYRlmND-N74dqkF;P=?*N#;h@o)^6&9yw7l|Ib~gft>> zkj`OAt1~|Tl_0VLJGGa|RZRHb(qnMQ8eAWaF8$gBwxg=37}uNKWh5>gBmaUnVs zO_8fApii=w?p}GgTHYrFheno2)-?Z2WGUP(&>v3_2#cai8Hz zgg9X~sfG4@PFxN_PeNYcMpZ4uBfYe=`~y#1*K!;I!2{sVw}1bbFhR%>_>}?Yil4~c z(LOt~75Xdfi!hl80T!qI%)y7(cJv~b7MEMZ3k70nK1_7&L3F>&uYyI|g$6Sry;R0v zXoXc9ishWf^)%u%cOxd-1u)%pM*CQ-$9#55<=JC0<^KeWr@7JH#@v*_EF_s-Gu&dA zs|LBR00txm?<~VZGTbkb{jVLxN-)WFjqF-0bc%3MVN`)?ue2n_2=NB~L+{HTt;3+K zpIp1su~)X`s*mBM4BS+bW+si;WlM_;Bcw5qYJAQ`5!j-Mnx^R=}MEm{hjATk}XdX)*L@36X zMZ~}bQ``-;d;HHN{9Wg3()wCwWAPCSRD=_Rra)|;)`zPARwPp*|MH)ONcCb@GV(9kUxrt0Nbem`0SeZADoC14k2>zwWLH^1NREBGAvDaPIRwh8Je6MUbX^r zZDZj2A)z(`5LW7B#JD?v61k+?YJ&W00|w`5F*2Samh%ZABU)fHY|&ptz7eB_TyKDn zI`F;c2K3tC#Vg9R%lhR+LodH^4uNBav}~&+%gq0s|F4fv&v4J=uW_3@icr!l-!s)a z$IqOGkEAMs#U=x6N8k^F^D#njbX)rTrZZ z`nnkhqVLK42S{n1XIEiIObpIvLvw~*>DVB<@~mah2qRQ7YO7eB_5$e;@f&wMz&$}q zq#zYkI8$-rtV#k3e#R}}VFjIMT(-A#c+SqYL{+waJj=x7);LasRnTt5@ye5-4kKR# zLvDZEq{i4&t}4Ye@?Q7FwQ0P-=%|P{o!Mwu8U9X`cuL6!s1d;Odt`^RI5Vqh{!PJd z3+srt2WwyKa8q1WZV+qrZ(sy{39A76JiG^hkc9havh@7c^*Xi>_Lg{WcA@f*7L+JI zP;CQb1vZC+K0C7U{?XpcM~j!UasEkLisTp71ikvfkREgnX*$yBiTi{S$WK)_QuL!Bb&Tk!-F*41Hko*l|1CKrS%GP*$q zmGKtU6iS5hCH+;WuP9W-nF?v1z4;LUGvM$psVs62Tci9AlsnR@Jdz2_*0Ii&lGE@|AZyS4uyOWrgYxH)-7&M{olI5uU@Ew zCF-iGhw{IkvfgGH7g>73Gla!4T)8_QlZWQQ2rQgr&(&fy0`<{AFqB@P7Z1Clh~N4! zLUGDZobr%T59+I1A)>QkBa3B*(+{e(@pbtt0$(1s-_9QhC zCq_!*p$k>Bc?!3ZoZ;wZ=0SiU92^LYQL0HYI)tqupkZfQafvFv#9vQb35Y*-9^J)G zvpl7Y{mcEUm_W9kic(Vb>FE|Qco9lER-WOICsEc?E1t83Ep`1&O zxe+7aBW)i``oV!W>V3Qfb0=z_Z2OW7A@ZETie;K7p^eHy@*P&a^0$s5ANp?Zh@gZF zBTEno?_r9RA-znkDJx?+?JUeh$&NyR6I;J4{RqJf#t~sXZMl6?n3ytLb9Hhn1F;DR zeFyJa5@W>@LeZ@5(;5Wyg#fJ8THSy&5e~zt$)*T?7?0&l&PXno@q@O!V<%T8OYdzW zfaKm04qQloYOkuv$ltUW_aQ=1)+X8}7=3!uR&6q))dKIhEV^~0@MXdh=eOHk2z~L@ zisKnq9Wt{kZ}qtu@jJkwRheMFl!C(Ju(tN*6$IlVT4g0fpwD50!o|cBaBHvmG>#llZSBN*TysVv2#}=mj{DxgnEx zZ~og6#r#9#&on6d)6rOOnv>K=FdyP37d<&Sck|-VpVA_kZ|MJe7wew>+b4)jtBKmqT ziW1cxk9LkLmTC4VF55b3e@KXt0*jvk<%XH5h5~a`ut%iR-?y6xmqhb-KY(ea56`?u zAkIxfKPYWU51zulDmf@C93^L6&bM5s6d`qMd2nNX&HrF;;0q?w)wT55Q#s+w@4vb- z_kWP5E>e~OKg>$XX?Rqn(Xr7nX|h8B4gN!lB@k(kclw+9**f23P3ZTh9j-B+Mo*XK zttYS-Lh72Bf(PTdGyveSewNjGGMY-vY|S52P8{K5H*Qypfca+S#uWrOHWyR#S6|l_ zt%H?jM{of3i5A{64liYG9dZ7t;&~EAfrIK9elT2(-Yhf-NW=Bz*k;P;IVRao8)>>( zKz0~`W2gbZ+IFs>-1;2Mgn+=F*Bwf<)sanof?Q{5+~&Y#=R`;yA}QFEN)1LZ3%~c! zk5pIgh_gb5`_kl|;iE_gI>T52i=}msNZv6%bd@~;x|Zf?J(7-Lt=}$)!K#ZART*r6 z3)V1Rm1sT6TB4oh3;89wj27NcyUApdH2(RLaQiACvetO%vh%WW&sp74#y(-&)5r!k z&Y<~1Mi_8^gi0*Z(rH!QP#XmJ^zg`wjj2YU zmFOurQJE*H?d>R_%M+x^>FQHYmUZQHmp3om&osB4?VIzD{_gtL^$Q=TcN8oBkOyia4<{ z#NwEN7VGX;by6WeLiyvDuedku+f$w^S`67{_82?HOWWIdc8bX%t&Q?&MettJY=@#S zXPBNiZQa~`8Iuf}r7E+i8r+Vbx@-PyW_v|Dk->3Pc0fTK9rX7!mcYZ54{+Jao{T5j zF(m3zuMjtMHk+BzT>(o%U$R{6@bG@YCD*`76_oHWc(OQ$01*kHvBkbl=iGj_q$%@u z2qgA>h~i>Q74|1i)ua+BIYwGhckWd3{%_|bkibo%(La)G z8#XKBfxtQ^1!>1JdluATkaudaa>8Quh^porTgv)(BrYN&HB#j2YJ81iniyE86g!99 zOX+}K9+JrPf>19JJcUa{+(9E7>^p~AH%Shg6qYz(OZBwv=&7db41mfI$8sIFPqD6!RdF=^Os{F=uAnJefg5WN!&fu})0mG4EJau&P5acwfPO2AFuZyXc=5Rv_vvu4AGiPMLIIe@yc zh@Km;59u+59Sk*rW1Zk?E|d$6bESw-drD^fw_hj3bTY@cPVg6O%G=l6mfTkSZ+o_N zH0RBtFHG_)9zVfcR2uLPp^iO%;HB=rIPmosIul$tXiGSLK|W!Xf>_gHV0AGNS#iH| z?*&BF7+av#9iMERxXpRfCby8wpmb?RVHqnh>4~Acp|z-brG|-eiyP+?&L{~7H5KM; zl-yGJMB9D1r$i3D2!GFU0l$_M-I0oA5GBG5*SFfO;q8&?!8=;B{bAEj$hSA=7ansn zqN5NZOv?Jb935A~+=cx6L9!@O2t? z3vF_v8+P(sYmq*OYcT#q<^e_=6N=zLNT;kt>j2dY`t%c^)siTSm1yJ1A!U;w`V!O~ zFR7~~un?w+GOU--9#bVPLC_1))jmeSBo&^tXe#=}epM+`^)`A9V2X|X_C{Zx;fpX=v?X(`ey{1XyUW}MX?ILR-uv3vo zY%ZB5__9pYh{kINCzVlz?l|9-GF(PH)u`-rvm{Ab=b2^F$mU0?*ogVB@!$X2TiEQM z4>cp|`H|Z$&zO=oxN`4D5k;6JA}+u;-DgNQ^ilJd2|#KOR-shjnNx5+EGLNhdx*() z>N6u07MwynwSk8}3K6`K$f;To?do+Jf(i?O$4k4HF7@xE;Dgr+BwG0r+7wYsDa{gi zqI-1n*0cAH5@QKrsX7ssPKxfTKzR%KBT))U$!;?hEiT}X?T71)X=v-Sto2R@Y{B$(3xK=uAE zMLNI;LQs{JL>s2iRX$-{ptp2B^Bc23P=YxHK0;(CL_V}_HRE999bp`ENDUc|jl+GF z*rx|Vpji+-(5krV*8Ee9>ENC6TB6 z7yoLLMP`p&Lil+04`+~WD#=FCx=YL1BVzQ)idt~GY+wfh->nav-foZ8#@KR6xffv#Hpasi zfDUhO?%-al{ffTk*21cW9+_I zO;WXPFxO~YGAnUye!oP)CBSD_MFte8WTfry6QKnJ=*BMf9A=n|oMP=2=ugAC*X<&~ zfs|1fd3tubyojCffEzC%SkaSjrzoS3;#|2Q)P$PN?w!C_Lls7Hx@@4=(RYJp-Ofj# zfuN^sJKVP-Z)xU!zzx=I*zPP>BH=+cedJY<>TX#I30?6X;xj0U%LoyFK-{B+-MUOR zKEqHTZ#P1&ZX;x-_zYUjIF4F!@_HBjnyJZ0ySM#xmC7wv-sI)fU>|2+!p8lhE| z)dzP^PQ0s36#%2Tx*&{}F%P*sxQ=;vDg{w@lyc${$q-(NlT+xeEQa7TCkG{7`5gg+i)Z-}ef(ft!INMZ`AHPI~;yC+bcBArEbENM4V0ow9 zvXRmRn)bM7ymVy_RyqDfe<{&-c?ozLOr&y_AWj#+qU_K?{|ph&*<}j}wq++Ek~O;k z6h(Dyq%D~iDxK=}&-sMdUzyv_9foPPk*Xr)JBHcxNewfu5qNHMPWgGV2O>H#l&uN; zf;oKW*aJSz1TD!v@tZVDeg*KLZeLjlYwXhnMw&lTFrThoA!fdxpMdCLLGRCc?H(F}i0JC1 z6bOL}WRZ)M&}!F@a9-^=*665TTJGN(czQFq2ocvIxg5Rvm+3u5(qFPYopGl-tC~EF z`}TN5Jpl-U-ZjssoSP0)1arUx$ZwOvO-79HkU%-b0=b~ZD7_VV#1v&i(mOtnWjv_b zt=_o)yh&)Wqy5Db*0TC+=x}AcG7K@M^ef222}O?Knp`y>vI$DMe|^$okpw&dWeWt- zd$~vSkTed^K=>?o3%v;dq1Wt&?f@WSnNWa~&Sc2%uuf7^1v_mXz`WSE4y=zAB0~(e zYGW&8a+xk&8RPl>qT!wswPXz{(Nt3lMHo`-%Mx-FuWx!)!up$=(-aPu+lo3^mg)d( zpC?&JfFg(j@aVsDpO61;5RSKt@;dSQ6!s2|HO#t;{J`zLGWFC|y}*>rWmnO|BL|5% z&{mVC|B3H1YJWWbbf&9cSFAl2xzmPH2X2Kz(+-X=#t2~{Y*)ieu1?pRy0dU_793sg zAU?M)C>JVA_@ttS=me^$hKTyj4wkgOyK_aB1o;ZFVS5B{JMB1O^|9?fQjuZ+bsznO;v!_%C^nCE?JGujJQJw3Xja^t<7c!9`780Ezhf1$T*F0)_;0=PbUHE*dMyu#la&k*cKo6@NRXbqod(BE zUKIvt|6rIXb2b=H+C<`?oT6edRGKkny0J#9J zDMy0sx9|U5s(y-U_@53MGh!>GVCul?B`Azsw;r0!U2^$((ByE~L z{>2R#Hpc?%XAK2T+%u@3FKHJF>q=NTLLn zFp#Dq`RVZ-Lu8h6Oh;7w0}QgLW3`_!@N-h574(ZQAZjhl`JC;IW` zVplbAFb(Wub^qbRHuj}YDv z%@M^Rv4~t4IWax=1@%vw+;th#)4|y*hi~XBi(szhwB(wUsB@|?VuE=zX~luTQhRDb z&4#^-qC(mlIuUQ~1M@Zu>Zp^rr@SqMmqReDwYRbbRoHQx31LgIdk}~}FkO198)IuG zbysSrUak@{|LvV|wAP8m$MZXq8x0i}L4;utC#sKYp8>W~EJVkMgW#S}t9+#}&{{p? zI>0odO5XhV?H#aFnTE>u@UgLs$`Csj;RUh%L_}hOlEw6e1+jv2GUdxa391si>hO zVaBGwRG-UCI5Gb{=2|_-rsD^C z_>wv+U*%~VKBQ2k=W?qW-fVxkzTx+(Z#d__zr92kROXCsohPry?d9Pi6^|9~M2Q*Q z>t4Zzl<nG(7{{adEyzD60w-4z4@Wy)_})>%Wy>qN zHoxZ@dh8DhuWFy@^S}-iiS($mD=#aE1yn;+*fXM(Us~Ty%Kn@;)a{q_{vJaq-Q00c zZ8Sk=_%pV5?h|0{-^O(pAb^B~`y*9Cpcrxr;$hGZ$%h&~&nglrrnjVkz+@wCgH@hg z?f&WxtWQfA)v6_E8yuh7eIs+O*Rb{G^G6TzV5p!AbRlciZyOjr)Z+?}5P!uI&16_e zI}JYIK3fojX>wYa^S*aVkQz-_JAXgd4jt;X_80+8bsUmP zYO;bu)Eu&C%;_RLiu0>b7d)d*=p_~6p*+iKy*e;itvyPHNoi2t8y(pmV0=H69fAo5gp>AOjvx?4EO;d({ktLzoDW(+IuQv z7fg8}$+L8U5Ya2NP%s3p5%?YyTkJK1t_a2AM-%?B0}@W7eTVO7O2>i6Mf{6_Sq{Rx zNC&*R<|1+eOTw@&>mD=b_wwfa`qe%$KO#r-hLqiw+Ns=aRykf;Gp38+}RTbS5IRrIbXYVBG?5*-N+PpEDb1 zZAuk-7XF2-7K^$;+P#A#^SR`>NEvfU87g2n=TR#Qtg|)rp}8W@JSrtkP-q2wBFw;E zcr^7*4`$U5WrB5dth78~0*xStqB?lWVw-jG!~wt}>rb_5ZWl+4A|@FNh=!>KRad~5T&NDhl5!?&9e++M zv6o4Z1D}dN2JlpBl z+Sg|_fk0;TX$YRIw*JFqLs@^yCe&ZK|G8E)C|7KF;JYR~@uyB@MbpU^^e}kLFCQLW zL)&eyV#h3m^5?)}Q{X66T01M|sqx2*ffN!(oOl3cXRL}wYV>w8fz{GqbZw4?5cNG} znil}u-AS8z-r}N=!jR1@r?(-_z5n3*XL~PE03j6?M3mg&=p51WE9HnJ!fu}wcAYxY zp$L}Eaax1ver(%#(cj97VAmomI7{$_@4~5cCr^yp7}3fh1l`vme0xR!ofqxDfI_rg zMcKmrMTLR(N+1qQp6?^+IJA=yB^8@pimC#`j{I^ReN)}ZM722c<))VB?zA&V1dIg- zTu|EY{$+b>OJ&gm3gT?i8FG2QC?h~gSIXXSc1RvgN@`8&*d^;jkP}p>PzKmepg_-r zm;=9bbUl>cbV+6zIg@;S65hAv$sAyuySIfL@jOu{p%6nmzVE`>%C+ zNRM1HAWfrRiMO0fbd!ZN4Izb(TbOrvnAbV><0|-O3{km39%o*95|+3ms6Vz~~0TFlP3nPIb{}o>iA-S8xq`kfUwYFvIXnM~N zm_G-P^7bC>59>m}mVEQ`K3W~Hp~KijM*(7(a?Q ze|&I;HwuD^Sk5)V-$QS$kV!REtOPkwpfY3L9(@`;HZCQAXl8-91>!ggHjCSeZcZ^1 zv1`c6+xUIzqpW~kqBP62j}(qbpdL!6serRQOj>aS{#3Z!#=8sZ(}}}o=ZqsUY4qY0 z>VMP*8HA`}!-S(i%sV&BE#cXiJKmqhpw=BY{H$H;?KmP@o^wdxfZbH(#MCtgyN1@B zzIh;o0(nZw;^G!LKLlC+nDQ^S-U&=eIx$EtmJEVL5!o;`y+A`Iuxdw3JBsSo^A>1U zZ5KpCM9Rn~1RW%>u9NV4H~8ko_4#E8XWAF6dO*`t-@bgSMvDGg;YKX=*NpbLcISGmxA8_U+URHJ z_(3jF=kj!^uL6B4;lZg%>Bz`x&#hyt2|_d=6&Ggb|A-w+3vjhiv8^oPsDm7>`L9$j zGY~@&KWr|Lu04fXirfJ5p)W}tsH&Uds2^UDQpamd)8@p5lI+uVlp^G>h-(s8$5cQ} zHp)ftd^W6X1#DcXG<73dk(Y-xn8Z3z9GJOoiCC^^o| zp!(oSk5JHwO0>dsBijut%nmZePNwSx*9Nj1P}FYbQZ+tX6!p}y86YRPb0;NEY*FlS zy1>QB(>H%2a>L@@o;L{WBzX-4B`H!;msVjtL3V1*DE7_k;o1n2DX_-9>az;Fe4pCe zmdaM=px?gvk;`v5yV^KyEbq!A4DU0uviD;+vpk}>|0ARVfHBRiU^iS^7ZW_9D^5?H zzLc!9nQP0wWk<2vh2N9)Iy7$Ze=_MZmR0h+82bEE5=rD)xi!B7;)wvpP6aUy1fc#X zJe=+JGO0#=_6KP6auiQ=lB)IK%{Q<_NJS>|gI5E}Z@sryl$2fh9Li(R!x%AI=yo>A zCsDRx#$C+c@58hRsLxPB{OJ0P0VZ4>0D6TG1j38DTmm!JK0v4CjtTZ&))8Iu$QD85 zL_5NhRsHBpM5&cscwX?@z8J_+AfV5pXt4x9tLF?`O_M1OH)ot};oRWO? z+6*|qT((A~3qbJx-v#GeXl|OKKrM@z&!8&4r;FE6F7~p(&=|RTHN*nxFkPD?<$%MX zGc_s~wmaGCtB%o1`4U^?EqvwDprDnWIP{AUgK1;MHr{z3h%;fi@W1uu57P2O;~cA2 zXjENMzNZDk_y#bv;YhF(ih;$Fu2f54uq2RJ{3%#UaQ=jb3}B1U=tzE>*4%IR%Hz$b2ydQLu!I9pEEU; z%G5uDxRpO;T&E*dKnZaIhua%KwehLnh;za7(yM}KhXVrMfLj|DFZ+I=yF`&z=oBH$ zI|9bsq!{fwicX{a+KIIMieaI2pQ@)T>-s42f&62hHUO(7R_EtS^qU$wsBOIgU> zsn45m>00JQ51LMWev_H|eo5{vE><_Z+kbkdWH*zxlT&+8r8 z>?L`Ktv{6^9#)*MNr|xhVh|3h!4wS{GQ{PoaE|TbEHLo{uAv?o%!MHSSeI?#9@*cE z(}IgN*S5=we|7Ea+3yvY8KCy%S3(Vx5iZO60onf;zIxl=@DSN14N`1~qTadNs|on6 zlv)emz=ZxQIm1055blmM!!I5S?){Yh61pW~Cgd5TeEnfau+gFk?|f+A9~@2Li>m|u z+%DPjGE0aC#T+*DJ8W(nvIikCswt&3i(yWa2AIwE>ZOr5(oh6tfc3x+V@+>u(uHt{ zdhG~lkBY^D=&1@q1<`Ah?qXEbfsB2&;)J3rkttoIWta<>HrH|m1-L_ZA}##n8h_vo zK!MV=9E7Y@f#%8IJp{#JFN&xhn{If`en_JVDNLpt%uM`$Z~(JmEwIHp7G#oDwxWzp z>B`9RWL<57#=c<|^*akpPh#fda3UylI(K0r=QfG)TagP9MX;q-xmXs~!gJ`h=XEz~ z@UHHLJ?3+)NH75V+*5I?XHPzv*k26OGL^()@|JW${$PQ?Mcy?T%KK1jWopHl^mzHF z|L67x07j4XRo}z6Z+$n~hWL!?$|uI?IEOD(xU+4^*yr#ab5o&jbY%97J~9Y!w2w?2 z>XEGMp!b-ma+jZAUq@&WfG_4dckib0LjX%(>Xi|;f_ay<_umSTQlp1`CzIqrf zDFPF1DyrMl_!2W9L2o}I!=tK1r$~C7n5=jx7-&uLEi#Gh^`UMEi?*_F02<6mD<;cBIHzk6TPtI3V$YWhPrl-eGp+aE{Db1+O81PovTs{DgBn$QX z@cLE=#NPZFCV`nisxSolC0Xq5GQnj+1tsFP6Vq*XcQR&3^v%Jda%I}r)`x7phYmD+ zzp9G2$%96J+0pkMAEKGO^IDE#yYWw0&WFGNb(=`N^j;ZYRAPfo(Pj`o^XCKhlY^9y zCu<%UcYBh`A%!+p7*<2b!bnU?4+)LZ=E-6o!u-b%wzY$@jQ}omWmbn;LgLiX3z;Ju zo5ViYWHdIDysD56)>vsf6j@;_N2HciqhXr>9W&-y)9}*D9sFPRU+NClB$hUG9L0^_ z5mq-So@|mOzeha|Or+>zF8VP}U$}5*k86YhF;5yhDw7h@fi(PRWQMjC_-O54^AKZb;3YYl9FP8De)I zwb60nhe-2QA{0$001QnH-%J$NlTSL!4NBaT>MOhg4K;y~TYTB6x*a5f+$}^~ZL=cI zeIiP=B3nD{5mWJkPllMS0ZFdlF#yb10DA#`)vbIvMt4+2{2HzNg{08_KrBJ&0?N&U9uv~_`W z?{M4G>DUhhL)HsSiP&w!1N-Jrxd04q^Bp^EdXo;oz+>@! zmca>ZiiZtirhPB|z}8WNjqpwk3NX(gQqU=K0JxUBJN_B0vfl0Y2B@y1@asgbqJjZ%JNdjP4fY_U z>6!;gsCL4pDja70TXD0%^o2xD1BBMbA@uB&CVdE&#%*b_>8-^eFKA^_jmL;gHZUj1 z7#8e%C}TouE&0J1pr_AJ;hlBni&&KK9t?mvX@A2*6qn;5gzF+~NJ%B+0Z;9wbv_Uj zh2`OA2`vwR_$I?x!qn$+2<);&Cn%WMr!^?EKLU#F%rb;jRI;H}Y{cQ6f~v#CEAT|D zOgM~;ezz`Jyo&NB;%+v zXHT!Pr^7>?NTpV`lbHx!lQY9WqExYG#kHE$q;1wiI6IP#fdEn~!VTfR5P9%DaM5n0lM>G;KXJ&f;|` zxEHx`>?Y4zVq<5YEZ$6(fhw_dy;izeMsheI{0}U&YJ4YO%oW8kyT|6(jxVa}cS(^+ z$2Y892QukFWV9qp28casdp?BmgA>zDk7KJ{msI+;Z6A8dbyPw?9RmmB+xtud#j^i@ zaT2vIv3}0(FF1+nVdW&?c?!41+aM>qxEjCMIv`xt`%efL3)MiNtv$2&ZGDO`c20|v zR^)%mlyeFECFGdasz#9X;Y@TsO1cZI#>kSsD}O;)ZAY^ODwI@Zd1=DwN)}R;#(2q| zj*cD`i+=?ZUPw+5qfAT|ibZketqV=ZV=F;k@L7SWgb_qrTOHw(`x5p9sk)R@e>idr z0>3Lh-dzO`l+;gPgPOEU6@j(x4bskPmj>bE;tsST)ec+;$euBM8Mh*N+LZs-C82AKuWgkvt~q1{9PTd&sY@43J<#xpbnIUaJ5FUn9PRA zn0KsYS4@!h3b90~q;O;x3$UJi-YHDBX}#;WAM3kzhm~jCP{7Bz=cswpIDp9< zweXTH8X((uKRsf1Bf1r0*y?}pb^+r#+S&o=B0Mt8*1ObN|xvRs)OUj0| zVgjM-ewRB1l4u)HltZ*s1Pzjj;F7#XKh46|68L3taA9 zbx9jesdCVW$1C-3LM9`Hz?WnY298)AVy7h!NlnP%sX)t0AvhsJSwjTkmXg@#X5B7j z37=3Grl%0g2GC8^7UgQ;^v%(E(-RRmVV6OXX_~1loU^>TMVL&Tr@?`P+D<^WoM0?D ze3Q1vMY1fnpmQTx%V=S8^bBcGhlDs|xGuvpS|U3c@YS7khHHAyDv$zH`8H*wfGx>d z4!2S;9bFa9jt6(%bB)D(N6-iDpO#j?6r{WtoD#kgS#9!xOJn%Z=<)K3q*bMFq(r+LA1+&;hT?#sQol zy7V|i8+%2E5ap%VNlpS;UIU@pW|MSCIIv-tr&t9v!O+$NHq#Ox03i63<(bo!zN+j1 z^+c!qO`c52Mp|J`nAePq=YUNxLvAaOO*guDWkOhHk<4K9HWgwpLO8eU6Ny%}>n>nn zw}*wjG^#C$(0E`#q+l1UO73X`UuMuip+vt%!~8%p1bmv{@VYrX0V*6M>}zwE>v#j> zvC9biwIwy-)`F!bIu&|;l8 zt$*A0h}9_3Pzz2ml~a+poW}=wfR#$QVD5h)s#75#j}c{<*>aCNCC%Dwc!9+5QI&0G z^1VZ?Itv_ZgbGHVkg>88<8V3=Y1#@+{uX=x+Kd!n)7RQ6#i zCoip^ZRq_YyN5GXf;n{Stj>QJWYd!1{mlfQiv4tj@9ZH?Rol2eIiupFKc&=(o^0MQ za3WP^=GwoL68bEIR&CXTKnvssS1X5YD?u1(wQU=3sds)-+u*;xeu;c68mCb~8vrb} zf`?XrDtdgF50le2>khND;tDgON{v9DAXY_WPYhgOF7%_bm1ly6k)Oy4_XhMrQuYmRsgS5y<=UotwTfLoU0(N zX0-$Lz2?~_7@}6U1tKWE`6GFQOkf9Sjf~S|0~lQ8#x?hxCY~A|y*3#GwYG3@hytX) zzfq|+mH-C=E#dPJ4jtR8I1#<*6swF+-dAfOgh8tDC6%-p5nc#xS&{g-%hn!-_s&-l z#rJ8WXAXmZu%SP5uC%z}?Ox~2IhZX8ep4hi;T{yI9zXk~g( z(mF(&MItP}`Ei$PKpQ`b()&y+rmn>x0{2^^(}&e#SS6a#VbVupC``daH92Qs;{t$P z%R~6 zb@2$-g?3cw#v^eO!m2PK+5$V5@(YivoIgzoK#L*+ z_im_+&Al5p0^D*+&Ab6V z=l;>wE|IF9H3ks~F54B3r;yn<22mE2hKDHh7zts;fdjbTw>PHZ4p)0Cb_{`VAQEDL zBCUN-ynWvpn(vRh2OX|KtpR4EqCN%{cNEE24^{;3AyTm5&*T7r~o--Y)al> zFJ$;{R!eGNK$`1jHohlf3_FHPCzv8u7iGki+u^5wm5!-|iunZyS05b;3J*ZZR3Jfo zDa>vbVD>Xe2^M?JJ1jN>74HV9jObwRnzSQU(Q4s~U7kV>c_ zyXL$;_BkA6B3ewC2vlBK7#wa?77agj;hT;|GVq!`x=~Tq#@AptwfkX?Daz(5<(Bqa z0*@OoOIprmrL1gpY3^xrLxo_9&>%28$xCw>>f8<&uf?9L&#_9E^_JBJ5_`L+4`euc z-$jyX?1Q74U(9=cTu5+(<#;j6ofs2-bPYJ^2>ys!OtZ`HDP)`srj1U&) zwqZ8Pw&*Ns93w!KKK3xk2&fXNdwWqtk6}le`F*K@B4RB`1-j6&vY~WhZWJi#m=0TP zlwUZM=2~Vm%3%-8Or3b>V;l$`^E=#oO?g$pXzVbOXWSRLHUAV_b`=rwH4Rswi^7r+ zUfA#zeHwfs+9n7L$u!yuXscYq5gIuI!!x=Ld zNX)mP@UhOA)v66fqIgzvg#bU3fGs60_PY(^gM-bf7*mL9me51Yy(0-qPVi-+!>b#}h`y>LV)BwA{pJpM9#gz-3fh>ST3<0&6)Os*cHK*w&TiJm1jF2WCiAQ0c+JR@hz&-`ixNuuQk<#G;F<4nx)r7iPme_5^ zpx3??6#%1<&fb22E@=d$$#F*qPpPl`A^8{1w8TjeCyeADYI*oG#g5i^U(3zf4mG>;SgdH&TJSU3N!n_=V7k0 zb{5frgWZ;%6>H*ih;^YD-!0QD`vHo&Iu}SFVm`k<-8YzDTAXFyqP^k-frHX{2Hyja z6|>^FR7P1s1eUHfK$zgb&_9g_F_ZIAco3Vde{?N{5w9Sgl!ty&`Os0TY8jUAE6A%F5&2I1Lc|i+1(x399IieI6YQNXX zLQXxjBs2IvLHm5}N_c5^1C%|>zC&1=7OSwQCb zH2w(|F1rBe2SP-h$u3d7RfU3*7@Lj40^e3vFo%xbfu0-y$m(6=aQTCF#Sx(Z^adSm zGJxpXbddXEA|eY6cSuge%jG$h)xrkk1#(%au7AT*A0IR!%l5twPAV@dKOGxef83mH z&vxYcm?Y`Bem0uB4vSM4xD&UmNDz)}-QVSM$KrGn?=1y&cUmV$y@arcx{YzNXd%WY zaHakgzBGUcg9Q{A8$Da>At-xflT~Wm`o;cbU0JV!!e~-(Jz8r5ZEtkc;l!FH zfv!gyL68+cz&BnofS99TY1RIet4IJ<>O5O>dt1=lt&wPLHW-6S+$5OyyGJ|1Xp~!q zplM732h!QLoL`$iP;CO)`nC@^fANi^ZL=p_c`q5A9gBN1z(`8jrN|bivwC|P0~GcL z)s*zc$~pnKfOOPrOEun+(kdT?k!ZE!fhWj?Ri2kX_FyEdObg1+ag0&l2~i>R4pX(s z=ba2>yJ>w+wjI8Yr9v7UeeX@SRi{x2=7Bqr@5QoegNj{lU3e6CrnC2Osw+2i6ax90 zE@pw682{$FIzVXh z{8T#O6GTFY;yk^`1;Ag*ADxVfVe71~|O-^9VkmbljG4m1DrKzT@ z6I3mc385Ku>iHgZ@#Vh^!;Sj8)7+U~_lNOy96(weU-!5Dlk-~S=qfYC7>U}PiMZwUK`djsr-RWti9DvzdeNg+SKB4tBN%lGS=dk zUdy%nY3E`u`zL*%C!D>mAW{5QV8E%LB#-p#dAugX<%_IH;5OXCXD$nQR3A^Ighk4j z{ytJwd`hdwpRRl&GORKS&`{=FHJu>060ws1HYerS;COz)xj|d++nc~MO2Akcb10n* zbmO4z%%xk!=F0YX?d#*?!`UNbN5@9gWlo$|*N*f9rqM$V22_2=JCfStqMBzwd?`i9 zFV?3%$x^KK`%Xmb*UyiY%Rjj;id9Nw5j1U(aql$ci}&wp3YL}Y>+MZNxPsnobSU9x zd!2%ugSdvNSyrO%Eu0EiOqtvdL!SgFV6P?CbJY7+zuo)(%?~PZr(db64Sz1jzkS^! zmp?+r{GXed_oYjeGH@jX*T^y4er2L6-KqTDUaeY zB%`xffFkrzI0rXA%BkiUjB{Ec_|dS3K4|e#2zCn=E~$!rVldcaJT0$%T$F?2_)GeXNf-^&%gXC z{LfAE)W(J!iElb2B#0MeU~m5AjgpP*!QNXEpYO;)dP0-|7hXGJKOzAoNjlwVA~u(A ziH93ZptgF1)sLNBG3dZ$1xD7WGNv(Bg6VhlPQ{B~e*e{#x&O1ZwRKTj!u3692`a8d z-MOXgo>9~QGc~xMUJF1y>xeK=;3KqcMxnF$Ddl9(5Z1RVC_@#u>+h4{Peq)hfCP0o z-9uQhw+VHL$h|7yi~Ls~2hA3=0WiaJ6@H6SGQF)LEhY3wUWd)8xWZn48$CtA;og(9 zc~)!-L~urcZ;160?NRM5J6TqP6o>gJK=NZ|c|31Z*Q54hGCCV=t?Xe$oe0yAP=G}S zGY$)J(#)jNGctc<^n8~#1*W9PRS<?&a0 zVt=$DVaNzw_B+{m-N7Adm+hP|2*qvc>)VpU5EirIbjA-^4H`9zdQU%P{(%fc&8Cxi zh(VvBOasO++x7w-OolAkb52q_X67o8KRCHHw+0S=X`8#OKqk_B4$+T50!e2tRW)Af zjOuRL_yr08IA{lf{tK$W#gfYiQ?9RB=*80h#=g4*GfFGxjRFxvrO*&eyhd;rk^#Md z#*GyXe*kKH2f?}9&J5^o_C&Ab1$Xh7B4)?hlH!@UDATlV+h)VG6Z|e>B$sb~%p?MUu%%UZ&$M8(h2RgY z2GW*mVSKSClw@{nDCk&&Zdg{E(CiD!7;@?H7awmsYT2Qimu&jLE~o$lFV7x0InNoV zipa34a?>hBaM~6!)O0kl4sTJ#AFc>NR#pzSUBb?}1mb?! z_y@2f7V8IMCb2{25GoZvgG)+kvKj!mrd@Q@$bsPI{0v_ND+${Sq&^B+P`3oHSHgR> zE)9hnx`o{+%ZuU4K_;=?JOP3R zjGRQ;T&RpNp(uo-IpU6FV1f0ksE9nFkXKzq1%PwEvl*KED&xQv9ySKjbm1%W4`Y!o z#f&gMDY=nJQ4TwUhqyotyVAs6XpFFd%>dum&B@r`50oG$6We)(9(8TYkxL~Q#ICUX zKcMvNDx8ng~>Rs{jMJBx& z$vIT4i=Z!pneFz8^+=#$#w(d-aj;(9#U~1a)cNe3A*$(*`;z0;`^EVMY2Dzr?b{rJ zO|!?RAu`z1Z-8ob+@p$!I$<@4_U@1GGUHF*3Fpb=I+H@2DrQ>r6`6eb3!uMuUPWku<d_Q5YCjl_A*(=4sM2{bn^bb|hxyDwv*lG>S#37_&^cv12{0NJB?bZ>4IX_fMqytU>x z4NjrM-bC^w8YD-gdQ~FJtPycuLg5OLS*w4Oq4dHF-)!w|i2I3nR7a({XkSDf)kOwPek%5t_Ow|3>(EtCX(0M8FAQPx}l zpHaKPr*=0)V!yV1Y=0JNvoS$Zf&_5KW(CrFAw^4O4;9)Za}@^{50RqyBn0Ov(GB#* zbAuH^B#rMhFyQRVyjeb$D;3gSERIxSfIOv30s+!QP-zs^cRRxZto3 z2pnEYIfhULu;s<@;zUdZyk(tr)O{yl>@wa+5*8_QE9q=+vt5xth% zf9=Z&@j(RoS#&2Y)s)wFfH)^3Bbs(cz}ZjKNfl(yqKXh9VbNa3W|wK3-c zA}WG>35U1Ei<4hq9>D4b=i*+f~j_ zEJtXTN?6q4TxNzL8zn9^;F-9u&Lx)0*&rm|YTu_ViU!p~oV2jPX+}f@q#cv?7484#~}d)l|z2k#~r;yz(ZJ% zg8@|f%e1-phF7pGrREbMya=g8O_PBkgvKbs39ly4W$xTi^u)8ZiC)8Ll;6G&%d5M_PYm>*_q+g_lQyA7zYwA{HbZnk64aS1cr{^by)H-CJJb;89nr}8^9i{NA! zp(7w6(%-3ytAx4>4}klo5iqUMO%lRByp~zWpL;8GtPR*TE!q`R8`A6Fg%F5 zC&JDI>fGc~Ndz(PvBA@`=R}MQ$W_+9Sy_|j3oLR!2AEfcRNDndtJw@r6z1iDZ2R6>kTC+!>#eJ$+MYt$7b^5L^vg06cv)w(Ue#FeD zWi{(eS#r2u`b21myJdaBQeZNvgykg7?_rF^kk?NELTnic0VOm00u!KvAtF#W558C| z9tZgh|K{<@%#s*a>)_bmLmQ^&tUV_Gfq@lLQ|IxV(ys?I@@YfG=?o=1v`3*6U(hvACpo5HEE$R!|3J`9-V?vmoQdsd zNNqQbJ!Yz5fCjGGL&Q)C7H2QfFW?G2jif#bcVBNm*ygm|DwR4rTzo%EQ#rJT^7p3CCKNUkn1ua*m7P0I13?Ui=O}3+ zC5lAO08~g65hV@UA`k=tiG^F_0JIb-kx-5hZjzJm{kG?^JPM>J$?oi9);qR;|Kpj# zv?|6xGYAngo!1;rS5GjXpl4JQwgqb#{@MW9QQ{{tI%mD+(Z~GEd;2O|`<-p?cd^H| zX&2r-l^BYS@0j1+AZod#;7o81Wfspm^caPNu^@tcbGnJX8WsT;O|pu$^|FFTTAnn` z>}F|qC3_r!a&TF9l9W^8RNSnOx0=ZAPX`+WbU>S>m#C_lt}%J!g!Rn58ANJULId#F zAdrfLM{y_b`ITO`A{5?5Tt zajFSbV}p40I)a%Td_1^IR;B{c`&5Ep^OyBQm$DWWZL7KxgTt)&x+k!>Dp=dyM~f2+Sk-`7UK-R?4L*WB&-HVs*pR z17dkpTt=G{gb+m!Q8|tv>xNoC@@sN=fm`OA_xS{Vw0WAdsqoH7$2ZmNxWVNIko@hr= zJs+Ivvval{l3P{5$ud6OvUG;K!eLqV2SKu_lFgY~FGgJHx4l{{j2MM(L<(HRWaL&I zZY~wRwO(h$3Q%;aDp*NaToCaP2)6D5dBp2&GXM|+ZPTZ|8sn_G+F{)O?-RP@M3hi8 z_cPL>u;CuV7f2sV)u?4& z61+k^pJwYb6Ed81gery1Uq0l9E&}1CicMls17v!*pv%JjbOBOnsq*^ z<1111Y{N2m5Va(aQ4KemYnCv4F7vO=FqVW=I0=j4Y}5!6P!)ZH8u5?V1aDyhEH%&M zx5o0s-^bQC7uDe#sORpZ>UoPTFc~&14&O&LkYbVPP)^KDyeMiQHBlXGjM{u%P#y1qDQMprNI+8+hpK22YRckK z=XEuX!u>b_t1Wh%@%S}vQ+$czMB)RC#V$)7XDFV;IIOdbI&nKr!K%y6QtiV6I{!xq zsG)nPo+kdptYKE|EP&462Jy;G^z6z>*J=7*`j9R)js2S{vdTtP^{20uL(@-5= zf?4pZ70kazev|}x3-!PoR7EL2H6zZ28ev(~3#JKbjeA>1peme+nxR#wncRum)ihKyLzPuoPDM%ov91z-&~9K0$S01FGT!s5Lx`T7q9uBfo{J z_!(Bll4~5N0)}CAoR3xT6js7OlFv;-4b+qlMSTyLiZyXHCc*2d5&VYQRPI`no*t(W z&x)$>6I6p|Q6I-i*O_t!P|p=Z4XCOy;54uqZ80esy{!FFGcW|TdB&qUHWyX#CM=A{ zQJeK|OpLEkQ|_$i^8)gsIz9lEJ{j}lN^GR_e~^Gip7IN`iSl7G;+0Y9wNO*r&c^$p z-WOx=0ZvDiAHKniY&>c&%s_Q~IjRF&FeUzAy@1JR-??E6+_NVB()2VRYDBeABd&+4 zxF;6DXiR|~s@zJ{Qhkms@JrO5d4Zbx^cziw@}c4tFrdv8LO>O?LsifTwG=%t4fe$l zjKM^>9aG~j)W{Co_;pN9{2>;_r&s{cC%^4l`~s9WH=cnp#_!f30mB60|w` zVkw-2>d0oSjR{x+pQ0YjztwcGk~IYN0&0btfxb3SP&%KEow$KV>A5Trf1x4z5(S#otCE94x=zF z1`ZI=6rZsL{=gc<)9=5*P>P*q1~Z~6EP@%ZGHNLr+w^v*Jr;&q z`+iuQ_MI34+CY95sM8sQgZt4p}%uF`ao+yLb)s;}^ysk~}iyHAj)QrTU%8f@2?4tkyP1#b^=Gka74&pT8=TPUi z`vJ4dCt)VyzoAC*64hXugQlMHsCw$7Hgy-&3`|B1WD&;UD%5cdWIJR=oZDIol~EJ* zKnQA$o7?noRL=*ZMl=SsC#Iria3yNb>_e41hnl%NSO)*G=>-n+GltH8MFOttIGr(+ z0$q=oPp?f#0p}IwNB{R`ChA!SARF45jhf=-M@`4uV-n(BP#t_9wPyy}_$1VTW?^R9 zch(Z9M8aNFPamOn=Ud#4X^)xDgoCIG|3*#yD@>;R<7T8;QA=4Ab7OVPiybi^4nsA( z05xNqF&phW#|fyyo2V&!f~q*_4`w83QRh1|DnA!$50t{hSl6aEM3w7^iLeK1AYrKb zqiuXL>a%4Y1_lvWVG~lFFf)+dS_IWVC2Mum>8OpRuodc*jKSY<{=4`|Q*J({ApJ8e zft#=-Uc}Ux5*-(-Z#`)$mr-%p68ld>r%O zFR0`96t(G6|71E)$XXr!q_;xV6BQt!O)?qN;VMjtUttE^hidpo)X1)*9(;y6ZmG`N zO^4c4)lnU2kDB6vs2Lc6rEw-!#oeeG3OpvD2HbOI(`7_GnA2Jm7Z9(6nejMk#MiJq zK16jq-+A+VS=4~4qS8BJM(l^`;3(AQo^R3v&N2d;%FUP@x0?)SAEqLH8g-s8qdImI zH8X!=4#$Ex2Mggg zoBj)CA^r$8l4KXnp2&hqFNK<+de+vc0d>cUI0P%>Dx3cc2C|ZHhd_0FjT&i{UyZd< zBWr}3(vGNx24XgxfNF3NYHzGT?WNtA9e+SQcN;ZR&rvg&=#rW7L#?ZS*CXp`he zHCPGtU;|W#I-@G+h1v^)Pz?{Yj>j^@XQ1AEyHQKJANAZ(^x;`leHT#eUA@HoYbqa+ zppLvnjU?@5Q$a!0UMP*duo9|)1*oZAjGBoJxD5}Yo*!|=3}mKtne|KSUewH=2-v_a z>q~2ft7fwlL%lMaqxQrIEQL!kA0EYG_&aKIWw>UnWbI@fjT+!`>zCHR9ve80IVo__ z`mZ(Jb(3BKL&$H4TB2!I&$`x{fE^ru06{HPo*QNc3!;{!gpF51W-{QsM?h0p2UT$= z%!U0iA5OOM)u_|(4QiyfQB$4lrg`<|MlDqh)RKmv>TPZ9Zw=Ud50mKpuOXmKvH`W} zcA{QH$1w+*+M;HzHwLN_ z7(qbCVl&pk1k@BhLyaiOZ>FIPsE*`9?fxq0!zNe|o1>O63f0j77RE)Wj_pUy^!KRu z%}>8E|HTQUzH2h7pr$4SHRY{PGte26;SkhFhGSA3gX-WURKv4T9sdN?(3e;r6Yv9k zg?etn@5X7rGyi%K%qBqn_%+lFK0r167B$0}{$$@^L1YsKoUR1&kr0I{I0rSd)tDSNpf=HV%!|KbA$)=A zc;3Ivj1@+8qzWp%J|@9tHoc9t2dZNOF{#e~I07k2_y9G6IjALAiN)|MR0l7iI`#_H zu|$8HbDtX15YL6hvA9hS#R9~8qXss`#uuYHwinaTzH@+p-gu``=kft+YTZYsBS~>Q z@ocCyTc~uG8NkEDQ~qP7_B5*E>o)!ys=lYF4yO9oGYKC)TT`Y=v?+kdt{P!U6DG7z~ z4Q9qdPfda9Sc&*hERCOICp?ELSL&I0$A_S%z6)w?C!;#D5Yyob)Ic_)I{G!H$HUK< z|KNy7(3D(7jp#l$#J8v!YWUoAq&MnVdRE^HQ{iA#L!(gjO~+a|7quimq8dJLy@9id zKMWA~nZVeW{FsF8Uzv`)Ks}iBHNQZ@)Tj~kz+%`R)8fZi8CPHhJa5yJ|Ic(h8)hKA z66*OzsOQ?CW+3oB0rfl@)$<8h5bab6Ot}JBlz2rP zirr8%dlFUdSImMpF{{r1bDNRwt;xuS`j9D&TFWM=4tB%*I0#kIEYvAkVBMYzqh_|f<1&x{U%LsYqDa&f4MjCD2G#In%!~2Z4!=U}jU@cmA`do4 zH4tGPhMKX7sCwt2J`Fuoy<2SlE)0JEKV}o|pho-@HIfwk8dFP<9#vss%z;%<`E5|U zyc4RUy-*{Lw($U#B|gXc4eAvAWzCbwHQ)c66VT^(Z)8oJsi-Mjj+&|+sEYSkkE0sA zh&tEzP$T=-roTpYICWyv(LAX9La3!Jg&IiX#BLy1K^O_zRFS9$$D>}Ib5I@l3f0gq z48em~6_X@!gQuYuYUcW(W@Z$s!xK<5GzWdS2(=_jQT2VABw(g^0}0xt-=ao#5;gT# zZ2U25Mtn)#;QJsa>NHeEt$jn(scDNE;W*TcEP|wbp9g< zsDkOJ5iLfI_;b{8+-~#tqZ&Ac!6`&-qGzaGogrngLZ=S4A^tw9gIiD?IDmTY2h>dd z5|s0Qm4GU`jq1o7R0qTdQ&`2un__O_eNbyU0kzrIVJl2PEm6|cZtyQ4(x5uf z0adOi>XZ$}#I)~xK%h8INA+wQszYB}&!VROA*zDMs3maInDS{*GnEOeU>+N9k1E#_ zwX_3m{4>;2Y{B5~|9274$d93p-$m?+f1swUXfjDk$9LQG zbJ&FV9gM{?>CE0(g%ybJOUL=wi2o)*J$j0IrM|&hn47OT8c|o&lFY>(xB|7y|7XpV z!F04Zs=g{VUK86AZ;I;ZQe1&wVkvBqk@Me;z^IIF@K+?~QJ?=QGP%LOaL9w~Ql~qP zz_F;~`7dfFQe-w2S4QpnMpy#Furkg>?S%u@WB3K})2NP)31l%-HWAB`uoShMf50;M z0@c%ESxrM7Pe%|or# z8q{fchMJN5In30yMQyG~41P$VK9-lGANOJrynf|@C%!#NT|Ag9fuTe8lynq}07f}6BYj+(-D!riVG;{gN zg*vtm3%Sl%OjX#-%!jBY+K(0S3Kqf)Mcm-m`YJ^@|2p4;NGOb}ur3uIRRK&<%ng3s zu3g-`2iD^l%3a5X*u8}7bkTFz7GI;%Ta|Q!{{mt@_9lJthnc4=Jg6K!6 z{Q0O|y%_bGund#qT2zBuP;bl$HO!1IK<$BjNP57zNkA1nLsk6Rn)E&M!bp!g1^H25 z9Ezi6q_oX%ifXVc>dn{()nE+j6iq|Dc$TByc$;ke0H)IS|FbsZ8tPT~4{8rMHO)+9 zM7;qEpeibcI=|IX4L8Pm*aqLjc+^0C#H4r;_2RmYs{f^pC#%JA*ZI${0M~dDD^W|d0X1`bP#ydh_2xTb<2O*{?^++B%D+O@@6_h}`!NRrRZs&p z)pbz~G{OAX88wp8HhrRv&qXz`$fmDCb>J&hhfkuOyMS7nE2vlf1Jp5nTbuK*sccxs ztW79t?fPRVj>X1!8nqhi>9k>|Niy5knf7=a!;o zY9*?pJ5e*W2Q?FcV+7RW3#cAHK<(l;sFBuaXwt(lxG7QPXQC=xg=KNAjsJ`~rk7Cz zxQ=0X9~)rHM&`TaJS?R1|A>IzTv;2NS7=AnCW%MwfzMG5y+rl+Eow$mH!+(lBdX&$ ztR+z$tc5yup{Qd!7*+3h)J)FB;P3wz6Ho;!P*b(l7C3_16Q@v1^cdA}`lfF1ot_mH zuZnuU7OH{Ps7=`$)$ma3Bx}6&GfbsAr8oYpN;3BHrRU5x! z{lljJh1$GNu@JsREm@)Frs49~n0S5E0A@7j{HwxGNYF7{gBtN#)YR`mjpQ0?Q~rtd zu|x~gu_37Zp{S*pfU0jQYV*xP&D5?v0IbC~8yg z3d;FAOdu}_KVd9B!pRuk!HnP@>civ>YKoJ0G;hLOs2Qn*nvt5Qz0(3UbG=Y6pctDz z6Sc=aMa@8h)cHS5Koy)ty<%^n&g*L|g4sKn7fv12l=remSYuFAI|d8m1k`T-9QCPp z5VaI9aU`be>^d>{AqLdbR|HC7nl7eb4Qp#_UsTUW+4#p;n)n(Vh-YoQc30EUNYu>C zLJe#ImQ#7u04|^gc&#hvUsLpoglNpt&Ft!_sPvs!7f)kb%+TGOjy|Zp5`~(vX*d`^ zMXhz(9%iZXpgLX-H3N-NOVk}zF1iQjUoVUR3ECV}QOD*aR>BND%}5%dUZt&2r{sOq z$i|^&a26KC6<8b(+W14%-pcU4*>vSlUr=hHo@*K)pjTx#)C*(+s;3JvA8tU+#1Gg4 z@8A)v(94Yc1!^fWhM8YT)WuH3BT)?>LT%n#_ys;h)w`&-DIeHHKr?U~)zE!Zfh2uQ z4-2D4S`}4cV^jzGS;wF@-^Zw_UVtk1C2FdFKrPWVoBtd&;BL5pNUWI=k>K2G8|Ca|#Y)QPS_DI+AIS z8BkHwCajJH_1&o+0gb#LYEw)=t??Yxi)AC~IQ@tk*#lICsUl5&KGY0`Seu~sN^8_- zMlaNP?}u9RIMfVI#o)jHUrIm^tX2YUNA++o>Qn46s)MId75rh-U!$fx*LHGYeII398&y3=|=7oPgHk5o+zT4l(g6sEWFwW@H>{CYEAV+=YAaZyWzI z%5?lTs-cJ2786ICUEdKk^4``F(VTyM{LUm{Ic`SvwB=B9oVuba8jodg0cs`=q1N^) z7Q>`5W~$3#E8>+g4nM%g_yVh8NUWLZ(WqDXjM#vAk$gge8rq4P`jgfRsAG8z>*5n@ zl{oXB7=b#Ld$1lRAI5J)usOEGg{b$!Z7iky;pR6el~H?Ue1L$abP8&1SJ{m1s9n7W zLojZH`8K>0wFy&>G$SsK8cA7eJ=AgSfZ9{xs7*K=)!qo%9|YEQh6>cCK}hNDqaz71931=Ld9MjbC_f|;o- zs4p^QP&4!us=ocGr9O=T?bg2u=$O1W(VX+i*o62>)C~NAs^D)_gRikTrkrFpQ6*G` zO;8OCK#g!Ts$=s|$9EHIAXl&x{x*s8uZ-H0&5zH6Q4M^E+SLnD6|YA+HlDs3m%Y8!^=s*Xf8~qv}mR)eNZMRHjU8U6urGuIktW+o968pdWW* zFT8~6NX=>H4cHL1XU3uO*P%L?;zP3(Ik715ve*(kVM<(sI(}OMHgE{%k?;$u;X%{Q z6b{3*#Al(-{W8=H?Ln>eG1T6n9WlbyAtn*+P&XlF}#QEG2=orqW-8Q znSpvCeTRebHfrkIdFHuKQK#z|md2Ylo_-PMUm3+0nF95&IPq?%Jun6J;+cU((6j0L zQM>q%%|C@&l3!6Xb{BOTUZbWu$6}LS4Yv|+iIwo}V$T0)0+p7SCD@F5@C;VKKT%Va zf2ny7R7E}5*~Vv~mSPjmz^_s7`i9HQu5XE2x}K=bHym|J#-ZMfvjPM(()Fk{+Kd{( z5!9x+gc|u#Q(8J%57bh$s5g)E}rs zKvUis_249YhC5MHylJKB;4ak2_G216f+g`BYKfdxX49rd?S-n?2)m*>x)QZ1x8WoF z9@z^4=j+v`z+KdcU!WSw^O+fGVblwxCg#DGs7*8owM2_ioA(6jI6govS}x)-eP&ovDS>JIljjl4nj4wcAYujCs3aW*RU!6iH)(^ zdeeaks87X@aWU@04%q1n^D5tniYMN{`R`4jD}nYZh#E=8FUDtZ zqFy))P$OH1g>g5k{B_h!rrKyemNTI?@p05DC2H-%Q5_kMm2f`R!(*tKNWImpd0x~ER7CBu_fRv|9QR?*00AAB++Ud~ zse{@B9Z?PgO1_QS8)>$g-CY6Iftskz+6wjJX@{EWE~pMfqv{Pz zCZGpCv;~%+rf928KZ7B}Z=pt9c)R`9i`vEQP#->>tzoERHV`%9IMmF3fGYnf>W%q1 z@?5~#NV|5uacv7T;l(VjP|&z5uIX#7^_vDlALv5-FhClgQ)*P%Lc2>tj2YBN1Rt$B)FW(sqn%9qC`*b*D!LexxNMs3bN zZF=&r&5X3d;7p;GHVlLR`@dldkT47VxCYhW5!96bjGBojsNJ4&w>f5oQLohI683y2xJ6|5yU0NziWn0yX8EP%n@l@B%(X9m|vZ zOhpf@&VI8bnXM(Q^{id2(bj2LlzKkFa(HAv=U*Q>&q&aw$n}lcBu!A~Iu8A~-g?}6 z-3F|b$e0A=^*Mn zA44s{Wz*uIVdjQqJv#34wE2^Ofs7;spkf}dA5)be{G&U7CLG`>7YO{4iZJu7JO*Inr zj{guf@|~!6`(C_-$53y$jfc(mfL3PfeY~z>ID{l!u*^u z;RNTu3keA%XbCc$G@GazYAu_h8t#P}Q7mc(5>T7!3TmeQhw8X<%FI+URQY^1-Uszc z9)o({EWnbO@yCF9p!Sbu1RYT`(Hpg!2U^FVrfeo^%D14V{99BtXY~ys3mWW4KUD!fSL51$y+o|umna6Ph=0p~IS74)4q6=guJeIC^2tAypS5vqa_ zs5jV5RD+wbA|6HUf!FBAL>J6V6|&Yrb*w9Dul2&8bpEFi7_N+;(dB19OoUA?ng&|@ zY90(n&B!3s8*n^o>X+F3O*Vf!YQ*28*8U!L!Zer6*Yt4I9@>b(pa1s}(8uX%)YM-> zt?_Nt%)CYQJndy;W>oo{s3jw`PVKSPQnP>gE3g~hIy5Kj#|^hsESTt6TE8Ei{3O-S;kr$6Uc9cSy{rQw_N8} z;(2bH=bxiGmhz7IcY&Gi1kCOpPC^SZK0uB1jE&#JYQ(GjW{z7FYO~Emy->bI&A_jy zrMQFY=u^~QNq*PNST59*7e;N~-l%q_1PJJX<)|s&jK%N>>P7SyYLh*~vY6_3v$pS{ zzE~VYjp!ok!{;XY(YoIsNQS}`~y+2N)-V;|*4gY~0!+`UKKtB=+-#5Rhn2CPk z_fZd|eqhXwdaw|x;%ca=tczNLKByTPg6hBr7@S#~z8N)BhfxDKg_(5z?-0-wy+DmP z+e2f1RD~tck0CbR8}$Yoi4}2!jbF3zjDMO_&K7e|3o#I{~z@jGq4vx=)T{c4&A)-_ zc#gw0RmdXq)$zQX;4#?7c~=gu^4v5${4`9xC6BWPf-JK zo|$@5pvt93t$icZfO?|pi$$G^>8P0rEG3{9$97xbEUE+dP;abM&rO9*a5(YtsGdJT z%~+-vW<IpdC5hzK*HPr4*_0s&#rwnTIb;jNp zgBt01)aJa3+U1pBnURH{mZB4?V=-79N28wm4Aqg1*5erb{oh>znwmdRQxrynI+ARdagKX25X|;oZGOl&i?@d`tbQ3 zwb?4aF-y`E)$;+U-8>YvDLw3o>u@P1d+R!WT#a?`5NZYzb2v3asZleV9oyl1*b--B zKs~!mU@-oL>Oc?I7u=;oQ6rs&8rf1*2i9PJ+=*J#ygr|E2CHH@Op(YJ9BB=#OMEM8 zk3B}6h75^)!LMLF68i$dfAjGH3EEU8llX%F&aWwIEvKN4-KSU^4`Fpol++h|=hs4Q zwkCKOTcbvvC7Ee352`~oQJDVk|y^B*DNn;q~%cOxCUy(ZEbpQ z)ED5x2rD|yn!!YuPp9RmIGr!}Dy@LptP|0P3sB`2p?3W`)Dmq+?X4rIj@?Gh^c(z8pZ`hI z`+|QdGzZs{5t6|d{G7gzn}}!1=yQ7G0qlr{Gx?m=I2QGW^Jg~4sUglM9*=t07t7)c z{zolGU`gUPuo|YxYW7MaTtfTKL;?dbcQ#+}UpP&}xh_BRW%mVNm0NT8oLS_bMIE28 zoMvV=Vk6>5QA?CAm)X_TF@*SFERUNpj{0ukN7ylsFZgx;MqbW;eG0V6=L`OPJ|DXf zFX{IMzmiSCZp0s;mZnL5U+^cH#WsEZ__N&FNa)MLbDCvv>AmQQ|jIA4Vw) znPXT0RbRV8oPYIjH3^;ZJl4Z9g?+)F3x=XbvJ)5Lb9@iy6ftZ11CAqp59?z8qQ2ng z|2k|>{5+&M>(@p`%rr#MR~IsKS8~)wqOrT2oUH?AWH@F zf*6f@=YN3I=gdOAg6E(SJ*P>ihguY>9JGYjzFQ(Na~-OjSm`cV9V&{N(WaPE=f4vHO;vByr{NGxj1!R_I#W@*cqXdcc2ozywecTN z9s3#8q3funNLt;b*F-(n5H--YSQ7gvU*~@gffTq1RdAJ!Z$eG|F4R^xr=%w zzeXLyY&FgMAQUxo8&FHJA6@(v%iv|yXGN-7rv4JB84Ib!`L9c$83`dc12yF*t!L3s z{35F2m#7YAt!>VAX;eiqsE&<6bz~uGDb}O*#E+Fj5ViJ?a45b;eb@}C?+gAHj`pEOT(5z7qYlC*#1EnN zLYjuY;D0T*2&$dHM+AZ|7}V4+M@`jg)SmbP_27QghjQ5{>4YIr9$ z#UD^3%hJr$R~Fg3P8BSG)vz3PL!E+|7|^aOfso!_83d zhfY`sBTyC2Ms3bduoSLG&C~_dQana2Vfq&4g;k^l=U)xfCPAC60cw+UMm5wIHKjvQ zQ??E@l^amyH=}0YAgbdfmC2P$5w41=oa++yW@^V^7VZI5mY6bClLj2e&)jDuu@kN% zBaDnz7)n|ftqa#z+?`2ZKqZ^BMqKUG2=|}r8CSHysbM?Ombf0DL;N;n@=@PS?gFIM zr;cuTIzUD)3f#xu+|_wv6`4b+coz379?+DXB<*v2ccmnLmhwx~39cdr=L+%i+`Y)l zfnQVi1M&uNPar;%=NfVkBmXFQfhhjCNP@0b6wpU-Eca5wy9X*DT-jc{%T*T=TimT*n|_c!%zh9l3)wgC6$NYifBtArxt*llq0D&7?jf9w#%@xluH)Q?xs#Bmi|;nU>oL#$OZbx{ ztiP@{JY<8xkJJ|?+1XCIzB=prlZR@VVDL{JwQQt~Cw~U_5t|o6nyxN9tLva0zzM=B z81=g=LIE|}k^=3>n9T!Q>D6e`h7snwqf?)X8*p!>(rLu6QT6~va9^O@QS4$HI6#?W zr2R^HU1^Zd8|QQGch_|4Eks)*Nyv+V2ok1IK|S<%AP=|CRU0ErstGl%Y`Rln0l9nIeU7ryCiD!;-Kj(f+9ji&3Mu8Z@ z8@2v=^XaN*2>vLCyP!M&J=o?#{`oI=>Kez9RiA%Ilhh-&3|8 zdAd3f|A+7v%FME5rUgi7$|!o`OYX@O+)qU_dGHGg#UsDY30^-FPf6JaRIrJ3U0>V0 ztEBBE?F4rj!n!`dq135sKIyl3{x0DIJd=}q40j+Vm~H+@PNCu?R_AWbot)&$R8Wj` zUE2)K1Jdr0)}Jzsu?#lEf;2dsGKFoU3$49L*O!ua*Vn|en>qu*|EfV*MwObv?~|b` zJK@5ZiS)A+JjR`qytKr3)7VDxLQDlJ9{e&Y`!m9;Jll(KVe*Uf%wW=V{Y^N7?NA5m z&{ZW7>wlKWd)#YmW>s5pcjDK%XLG+#S|`ekvz6)LXj@L&?fS?C{8sV>_Wk`wgSG`IQ8Qvevv7#j+CPRna~B~+_O)r$_|9T$9dfR1(I`- ze0>`{O*k!iSM9U<3VMUQv#9G|@@mtQd6<`5*Y`Mt@{@VCvhw-s5~mD>QgI(5BOB_< zL8iX%gyBmneU0y~Zglt(k$V_QMJot*ql~U9l$%676Ua-({XgQDDU+4Fhr}P-a*r@8 zceGwtxyfk8L;9&fS1-c)Ws0tI+^LB#;I2hwHRxa)%1@)x8MZQ&d%|6UGKp>43CigD zjWk__NWaQ6@2;-4+>-#6&Z5wVHZvo3;^9=J@1yh!^7fKe{oRw+g_xDR4gaZh0cj7Z zcogXuxD#>fdc@6lc4r3h9+aO)IK<9$pp>m3jzoR6e0NQ;BX}2={Oy&~!&Vynx=JT? z^~KL9e-{34Y7%7#mko{VziZJkS14;@IOk1Ji*DbSWXJrDehKT~iLh29YV5}#?xfXa0Le-FkY`pCFH7DT!b!0rx2}v>nDRR*H=Q!EdR_G* za)U@i3iRXwT{|gQoC?20{lNVxVO@RkQ_2iA(cqVJ1yhlBlRFQ0UFr+vxxL&4DE}k3 zzRZ8g-Jbm0r0Z&>CD8cW@_?>_6nsNCJ?ffB!7+sSQQ7%{2X$Ss5C4y}3N|hHji0<* zJe!a7^bBSjG!Km(QiB0-ZtKX!um`;#{GyotJw7W#DC$(C1<5gP^EJzke8bu{G3zV zwQSxXT*w_o11U(q#lwlXKenB832*0~NSR!e*-uzk56bq%1j^mu9%s{6k*;fyeq8L& z1MP^EAoDKa(cHRf@jx@uI&&|y4ZS42pM5wfY2|3J5%(*~MDW~M)V18!(T_5bvKA_)&=%+!?j*6gjh)VwA8NImH zll}?u-rSYB|9jOSl7zHNl)Xrue#)OB?Ppu4qbVP7J|nP;#EldhY%^Q)P#b1qEDi7% zz)mIG0e(f|OrYF1l*@txNv}q^f9!MOxh?xHsfB6CnM6WK@-ovAKhNswsQur}u19GS zQ&Kn)@sc=}g1Kn$IR#siwu$gmZe2f7(R%Vd?*Co|Y~%V3(RT9Y62E4j*+!i+NIytB zqq(;bE~KNOs~LsIllT<-Qm_qoBynB4Z3S;ATa)yTl+j~#=+rCXew(kvN5tPY*|FG=__R&ZS5<8PwmkNKR^1XyFqJB}Q>s!LQ_P=Y$M4ex42kVpHnrFYK z(vh~z6DGeu(ev5Dq?gYv`vI8ouUsq%z;RgzIwuzroC?^k< zB`pUHBqQA={2MkSZy@DM+J>VDA0RCijlH}6q}*}J>pD-kn=QMCvKvgY)7It(^y`W* zDO83EHWMyQ_$lG3+(m7rAM>ED(>8vPa!&}~v6W0T+0HZK^XT|tKP*cPSC%#JS-;|M*=B`KuKj0!BZpNLK0zcyt9{7PqPTGe1*~)*X>?v+t`$(Hi z_$RDjl7fH!O&v*j_K+>7-?_~v`~l?}(5bt6|97Y2MnpUc&!=!0@rm4dNK3{&g7i&1 z5Y2<-xua|YBPn}>^peC65ME1OHsU9V^H(due#r*}kzy2FL7`=Y z|3}&x?%mvdiO2EKS}NU5_&r-eN83P7+mU0Wzg3trckwa4Z_Dfro`zl$|HY>DA$=fs zG5f5_b*0RE>&R#ZkT!=q ziaPU?7Ekzp)cq}Y6YkR79VxF%f5T8t|GBWO1i~n&t2qy@rO@w$D{FfGbLFueI7bEH zwvw^dcg61Vtgg2PCj@s;XFgkQFX5ToD{Q$x`R8)Ms~`y}=)^ZPGKB)V^4UTPpS0l* z2v?;{4a#OG?GTv*+lrDAKSN%;tzbFnlW4pajv_8hYylgh4?JY zX4AIm=fB!SLg_$$GLCY;Poqz%tT^GS_yKoU!n#tB_u7u2EUw@#LjFqboz%0#=53n4*H7Gw`RkJ4)t-!RxOK%*Z~>KF!tc00C47hU!c?g1W8(k4 zDiQh6rfE4-+j_QJRkkPj-MB|n-@9uO@qz&oexu;uHe)Kef2lIk>aiS^xZhoIjG_yX z>f{$Ay`62~Lt9`M@tHO}nX=6((~z>Qsk@P_|2@*aw$G_(aQt2E$WBpsC=b3MzQCs0 z`hwKt&)1|EQ3tvBClby@?2OU2{4g4dCv6sGZc*2}YqEXjv;U;^()rKI1Bpr8X*1UH zM0f72w!+ptINXLq>3t>Ql_~3DOP*~=S`6`%#0zojN@O)LHXdbkjo=Qkbt&%G`F}&< zu|z&4V?O@DUBq^VVDSHluPN~zH1@9&xbhR$wFL+9{4iVTRniI&-^(3IcnIkyxW6Tw zhO*bF=OQVVI+qmLU zRGOaAuCi%Q&}T<~o%|1My;pfYmOC(tir&k+gX;9Y|TYoDW%tW1kkkeH zM}Z^u;Yc2C$%B1trS*B}JL0!(d^zEA_F2_8mpcuOgp>XybsWJ5xQ}|e**dQgHs?=I zaLu96f3I^C_=Wot50tfey9igZ6{zg(|Af2R4kRP3m_|nj^4jN0Q1&D0T1MJw!n@Qs zSD+yU`jFV3gpBy^I&UBBL}krv`Ut|0N&k-cLt8L4jm8jn$@|-;RkF|iOP#9;C$_UR zfbb>mW0e2L)ERI#lW?2+e^gML2a4Llsw)HO!%2U4W&h6MI}Rs>uOBl0;D}6P1i?;|Lf1s zDSMM=b8}~;>_wjG!+oA-#t_d>xIASt(($dtt8=d-t>U|ZX#a&%U5?*G@q_Z8(iD5jOjz&(?;6Tc(q3ma*)#tuV_(#(Fa|fpJ z#|08~P3OVyDEtSvt|nB_n*1fU;%&BE67o}$uB(kryF-~Aq+PM;<0!M4@Jw6RMq5Wx z%AcacJ-LtT_y4b{(gbGm$sMb|53EN9{}uRtNu6 z{udj5Mw#!---nxp=b8N3f7%e+K2{<*~Z^JGmMJXapxg@DemT;%`>HKCvsqO zI|F*A0yEf)vXu!Rrd(Z2W!reIXSDvGlQ4pNG6}^g{62m~d>s`{C;w~PiS>m4p}{HK zskzrsCOHjMB>mmhg|c6e*POh2B-ST?1NE&Z-hg;v^0pGzm7nzB+q55%4~gWp4Xq_mrouGnq-23TVS&Sg>2xZ!nSD9yY)ge82`HQs+j}D87DelCd_$7b* z#q;Iki(M?7CZ*$#jtq+n_ZKc-xJG>ApKrx~^h+o?`{G|;Y#AT^Yqbm=hV%{Z7cnHf zZ*l%Yt9-d~h2zIx${C;Wa+CNHSK7yad!=K1$Ez!|hK9$*MGWa5>x8rn_4kX23>zFi zBrY~S(e=pqm)ARZ^T)dx;}hMg5kL4=_IU4BsrbjYawLn17#tB7F+4u{cIEh;xAVu> zyHhrP>77*ZyYCcF85z-^Ci(9UMsAyOH{6ZSeXnTzynC5bwTv1T8}1)5AUr%WzUPAq z@x>m-#OM68M0}?|i*M`o*DE)E!=s|!t0ivQZ7Ux&b>kEN(_vf0KZD))qEE8KKYFq@ z{@l|-i3f-E9u~jlZRYqs&&tK0dsaKX$n(58!}<;g9}*i8HN>eG-q#;KvQOl&zTy6` znDDS|>z?m)xBdDmnJ>Q0+a%krzd7bE*zR`la=C7-x6XBQr|1_MHNvUKaJ)u|++vA_ z#SZZ1ByzL(Bg008$2j#y`J;Ld4DS=?)Nfbc-)BI0pF#e9VG)txeZ3cn+~wXEiCurP z=$NSfF=2zfYf0Sq5{f5v+q&MiWNuC`R|>b0w>O1b%iEpOt?7lQbUS*LQ@NwP^-1%n4gEyER;IO)j@ZLciQ@xa<9#$NeH@Oho?y^f@Xv&igkn z%@*>z&Aq99w{X(NrTawn4fkU5lhC+;JJtKGfV8&c{W=#|p8R?xb z?7rtk6mb`OO^do=-p-!mK?#&{h|x&^%HrQD6)pwe!O zG{Ym9``)Acqr+pO9Pi7nz8v26vTiZ&qjGK??^JnrchV6uJC3zb-Q}Wn=v`#n!AV@jqE}4{%Y>#Pk7bB?e3-w zAJW%v7odJ?H{ScDjhmS|^0jp*c#qq<1(J>Q4`y{Dy%(Wwbzel3H@Q8t-m8OKE@4pz zH;K<%)rp?1=Kzv8 zG!EjA9S{{0*JoHsxjnp)-tO;SxjybkOugT} zSDdCi7#GoRl=gVw5c#y8FG(v2I!~W2~FW+aK$u@h-)>IlT38?6qve z+-6?PFwWrg8)W=E%_-`lGy$N3jiej&=)rpNw%Ud#}g1y%K9Pc`L`d1=57~i*s7=hreS)_z3UO zST{@7A^qb9I4vT2$Ara1gvS!cJgq53$tvCo?xVEN`ua5pBjn&@V6y+M=Q^$GbV zyUAUz(g*I*gsfBCtUhnWhi($D<%dj6=IL%dZ^(3aU80zXK3=tt+_v89kC>eCGu=|& zzL^|>db8Z3Ui2(pG^b~|g%-|sbEF*}?zD^=9`0`)d~qezpY6_dy(@Fv8eWBu-K<{d z$L>%s#ay?OcVjM-U2vXT!j1Aa%yX-I59hg|-j;ZGjMrj5!(Kk0{KNCzbV>U~4I9$8 zh8Mknm&Ruc-L(n*Ja?Vz6Kj5npaxH5UZG_4|@7oN<#|Bz0s|e}BXf zJ`7`G;}SmK?B;U4KexCQN^pd9F#LU@qDPr`Y@4W9J_vbhwTT+Rn~2jlEV?hXCrsMv zUUd@>XJaJX+2Ka{yg^^PeZ9ZFb}M={ce^{hpZ2g0GxqYn+P&A!?=9NL=HM3Z{&Aw=?oEZPTOI@_m$HwtZ&4ySntetZjFSD2iy&=ckZBD z+RJ#z&6t)qt3Pf)xH)1m-l)TFg+%NIujUcAOv0EWZg1Bse$=h&jXLV4NkskL?xT$S z`B68{8+(i{Eael@t9jh5;E&>Tggfnm_@nyyH53!oa6?;pB~G||*ZyDT&{ zn=M11s3CowQ1c!SKHx1ozysJ9Jq1kUrr& z6cfSs1Mk@x_l-B@EK8F8oST7{hK%9^J%-QfQ2QS9HxD1>_qLyR{b~9{ z4IUiEt93wlWONyC{o>Bf78B?18xb297Hn=%1kuQ- zsOVU)z-5X}zwGw&W?bRpuEbThes(hXCKTy}4i2+Hf7p=zk>Os(YwkY@g|55FT(9vB zcSb_Ko9^sH$!a*E(F4L`5)$2YKX$$3_uL$b*eYJNKitjb!-5}Ad`Sp?j|gQ}hs8Rf zaZ%C1Kcd6?mLU)m9(-|x#*Lzlmw)rV$@`d(oMw*+&3MdCIr)z}$b0#(dokhl6St1* z)qm!e@c19ec1#t^*O4J{!4D3P{}rs~ee;5ISK=kdFyBkJLiT8Od^oTD_D!7jVX=e! zeKZ032D9uXuh?fV-Qr0`>R2S4c+IQ8htaL$|UwBOZY62 zZ=CDZ`JT7&+$6qC37wPqd~U+APSbMlV?G)3?? zcfw?84sDR+T*{QSxin8&4WtKU(?AT=ZxAI&QXUobP;P1~v%Ix|)MYgm{lSU~r{7-{ zbZ5z^!8BFE@+m{M<5+bX&b#VL-|x@Wt}`qd`GHP7Gh3qu8j>-Fod}N9z1Q z!0XTJ-P_$zlLb6TlbN%rZ+lxPb;5$U>R0NPC^S$&opf)CTEOg>I!!wiI#9 zqfT;mE*(iPH^6m3$Kg}%N~d0F*iy2SD;-v~|HgX1%=s^xBhfm2B`wQoocPOWRIdqO zS1RptRT_ds9$V(n7 z>gaVjYjs;;{qu++J{2V@B+;NadCQ;ylIcaSDlheGTj)mGsJ?uPQ3;Rp(Sgt#O8pdU zx=WB$O^cCV{Z!P#`Ubf>K*OXX4CVGdhHSM0LsUP_b4 z?xW-K!u^z?m8xYbcz`;E?vhqebWCV$MIvBARlfRXj8Kid_W;e5kq=U;9KM$$<;e$O z`rkhY?_XcSk&N$@0n6!y2HR5|^(^^eIjxGemJs#<=27kRxSY+8LJOr{YtNFlE9v!6 z#nF|Nf(mr*F1=UNtly0ps{Z!_ho1jtbZf9j)=+qOXgX?wGJ7q}yvg9IS*Y`tHRSqF zuW4?nK0@ZKr5V3@>(RBeSf;N7P`|g1*2q2U;RJ`)Q^d^Sy4$bYrntPyryNLUP%89P z%(seey`iSa?}djOArH+|8GFF6jc|Gq!42CaryBv%>QE6ZH~hAeil7(y=dz8|S)SR5 zjrnvVJtdC{#oJ3|=ttaHvNj_|q->_%Qni^*$gs!gAF}Lma>&9bFvVG0;U&(k2raK~ zrJeHEZM0gJKS`4%xen9DrgxO8Ism(ITD!X@JdG6dn8|A<%4wn-UEH@oBmr0ro|jX6}E9{%G&eY^b_rwBmUgpI-Me9dFY>WtCjul&dCH z$edS!{wH3g45XiXF8~*>yhih-&3=6D@%{8q^OpmZXpd2zgFFW@3qVn%5-N{Xl6&5u z!my?ax%e_xdh(m}kWd!K$(Vyw9FC227~mpaU4DI@W90LLgvGC?9^$E|Qu9JRZMJJQ z$k=81AuR28hp1m@LHoW9&fq*uS@PUF^n}cMmmIAPBy5&YgCy?Tcd1ea9HI8|ypFYe z_B}Y_w)ZJ7@+QkB{XU?>VIzUay02RIN!T$o9)656yNpz7goPEB-6@3dTfzidO*~Fz z^2u=okykzf4M_Vd?T|GmsEe8X31tx+vfZZ?XMX<~4YJF%|D`o~V{5!Xe4oQ_c)jaapz^6|D0bejt7|1}Eutn&MhmaZ1LY z#-eXNO{3GNxSW`P!)d7@YNwPAqK9-4>l1C05sH0E38_6p-56UVd(Kb~>*n+s>K}5| z*uT+X`T1}7;#bd7N2&Q5WT@*oS`k*X2#f2nqPJnt$^liAm3fVt%w<&w~K1R48v>M!}% zsqE1ioNm5j=X5)^=SAk8$S<-!ghPjGd|bZM_>w(q;~YpDU0QM*b4p7twl4*{u!Z)xAFF+uwwj>yA{8&UM<@DbAI%Kn! z2`E0Gtk0hXq*|bmz-Fb?82~ho)32SOIm-0XYf0y#hQ#&V+NG zB)8^=V{c;SU>}}pLoT=Ge(e?qD}kVH;G+Tr0UURd`E7WT`A!?ow@Y|CK9OIzAP6MD zo868vz=TEt$A!!Rn1xzMlop=e?uy75q1(Va`=Vs}pI+=%=B`WHbo4MbH)g&sq^$?TMi$qfCl z2PY|5Ks-@XDRL`5go3zx@H2|HsQdVy+$Fxb(NrgBCU|S5+L(qW6MJ%w6sB?%V}E6T zD!#H~8mG&dwLrTCX`CS2(jigo>BWW8ErZv|u?!FcEt8`pBNI)0ncPKI<6=IW$sJf~ z`T`L1`*N6E=)?WxayB1iyiQ*0%gN^DzP!M08vVJyU7j7lwc2>S(kH!gV8?B8`6n}N zAVX=|JD68XWj>D-l=I|zKG(IfOmsX%lw&!FabFGLNv(j{79o^F1-wU&5997q9I3UI z&(&S0LcUY>7IHoWQl2RDhI6XOaL($e9Lgrpp2`Fk|Vs9 zezee#^Rqd_UTRLA!>M+un+u<*p2rU0)S7ZmG!M<=w~2xLviC!9lk2;vrFcG}TjZ5; z{xoKSQB&?y4r^hHV)zZx*Jl;H!n~~#<8&GY)z?zKDy;Y)(5qC!CL^k`$+PG4I5|3> zSIB_{e2WabjWr3ojkD#bn>(A`Yp{*-M-PnY2M_Fc;ay-j1qO$k6$a-}tA#Fq5CNoC zY6Cnc18FQswim+l6tDxQqqM19tb-}2s-`9zgX{}yDoJgS`!^TyFiGA&hxvRFe}4)dXN((C&>BD4^@Y*p^@-3R*o&=rEtmT>y!^>sCn3KT!~LkF~Cn&hs8w=Y}C_e#tveE+Cb{HY?M`7(bs4@gm3pwE&3n<60g zKA<;ODOvE(YuK;(oaMUYtmQ||lWTdg9W?Ue^_+UkWG5UO;cDOp?5%SHM}?@xk`3Hj zDmHM0T-?BIC1DA*lH^BujJfAg?qIhUNtTNf$f3(x!7hy5#L^KWqY@5XSWb__uf#($ zcQY@v%k;;2ktA&4?$8dO-2$9(J;Cwv<`d{RcPqYW;5NK^;WjRoQ`erD8DJi>0?@idRL%NKiikNMRze1C{v zn+x`GEJrlOHPA|b6+{-Z;3a;=F2R?%S1YIDtw^b5zsVoV)>k;LM-lcNF;nqmP}|T? zL|L4B1)V-940!Hx8#4dToFRMOKnVQo4KRR=H~GJ1!$E$)JX_BZc5}cX#xdf)w>ejO z9p=Sy?J#$cns=~azitD<;qD=M;a$#@58mZg()KUx?-3#=%2C`7KdjGLgZxlQn>g-m z&^Gl-T`v8F6LD^MWd)L|$|D?aX`H(G$op6bdE^63W9t6^X^Ta_ieT99I7c@CfmwW< zbL=wsBYqc#H!NT4Y6d>$I{OWwYUw8ksoPKRM+j~UKVw7qB(I0OzVRflBXi{!oULqj z@2{L-c0SEh>>=F#6(F>wgBC99&u~Y}LCoD}Kr}JP&a>?8_ z=Crb<7Grj3sYP;#DW-*KsgfVA?Ut+IT7A?MsH$$=>vt-@^gBVvZH02O4Yu`UTkWu2 zPPNw(%!m$JwOzJGXv^9G-f`&SL8uDo?mU^@QF~6}Bei0AHBwtD)1x#GGLyHXw7Jqd zT05A~m^{J*8nQ@rSMEku??kSc)>$i)6`et;4tLgK+J$h_iF0SeuV=~AF`8R;#A>-R zJx(i%Zv-66pM4Fog+GY%SQoU}kK?qxva*ZzmN>g=*|M#xHbJ7}HHS=W2R6ArUQ3fZ z;tU7kqAt5>CIaW|MzPA@I7 zRf#vmn9TcoX`}3>Jrh^i)knKWHfC!{R!(?0TT6*S&Is;WE`G@P$ITy}#BF5tjGYx<{+50GWan zDS@I&E=HqG1GGsktdO@6&KW}Eb~##dNWwO!LXR&urFQZi7xU5*XZa+4LZ`)yX9 z17>m)sfXt_X!xkI#l(zig1!f&pCNn5I la experiencia de impresión de todos", + "t7":"Permitir enviar datos anónimos", + "t8":"Volver", + "t9":"Siguiente", + "t10":"Seleccionar impresora", + "t11":"Todo", + "t12":"Limpiar todo", + "t13":"mm de boquilla", + "t14":"Seleccionar filamento", + "t15":"Impresora", + "t16":"Tipo de filamento", + "t17":"Fabricante", + "t18":"error", + "t19":"Al menos se debe seleccionar un filamento.", + "t20":"¿Desea usar el filamento por defecto?", + "t21":"sí", + "t22":"no", + "t23":"Notas de lanzamiento", + "t24":"Comencemos", + "t25":"Finalizar", + "t26":"Ingresar", + "t27":"Registro", + "t28":"Reciente", + "t29":"Tienda", + "t30":"Manual", + "t31":"Nuevo proyecto", + "t32":"Crear nuevo proyecto", + "t33":"Abrir proyecto", + "t34":"punto de acceso", + "t35":"Abiertos recientemente", + "t36":"ok", + "t37":"Al menos se debe seleccionar una impresora.", + "t38":"Cancelar", + "t39":"Confirmar", + "t40":"Desconectado, por favor compruebe la conexión de red e inténtelo de nuevo.", + "t47":"Por favor, seleccione su región:", + "t48":"Asia-Pacífico", + "t49":"China", + "t50":"Desconectarse", + "t52":"Saltar", + "t53":"Ingresar", + "t54":"En la comunidad de impresión 3D, pordemos aprender de los logros y los fallos de otros para obtener nuestros propios parametros y configuraciones de Orca Slicer follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training Orca Slicer to be smarter by feeding them the real-world data. If you are willing, this service will access information from your error logs and usage logs, which may include information described in ", + "t55":"Política de privacidad", + "t56":". No recolectaremos ningún tipo de dato personal con el que se le pueda identificar directa o indirectamente, incluyendo nombre, direcciones, información de pago, o números de teléfono. Activando este servicio, si está de acuerdo en estos términos y los acuerdos sobre Política y Privacidad.", + "t57":"", + "t58":"", + "t59":".", + "t60":"Europa", + "t61":"Norte América", + "t62":"Otras", + "t63":"Después de cambiar de región, su cuenta será desconectada. por favor, vuelva a ingresar.", + "t64":"Complemento de red Bambú", + "t65":"", + "t66":"Control remoto total", + "t67":"Retransmisión en vivo", + "t68":"Sincronización de datos de usuario", + "t69":"Instalar complemento de red Bambú", + "t70":"", + "t71":"Descargando", + "t72":"Descarga fallida", + "t73":"Instalación exitosa.", + "t74":"Reiniciar", + "t75":"El complemento de red Bambú proporciona las siguientes carácteristicas:", + "t76":"Complemento de red Bambú no encontrado. Presione ", + "t77":"aquí", + "t78":" para instalarlo.", + "t79":"Fallo al instalar el complemento. ", + "t80":"Intente los siguientes pasos:", + "t81":"1, Presionar ", + "t82":" para abrir el directorio de complementos", + "t83":"2, Cerrar todos los Orca Slicer abiertos", + "t84":"3, Borrar todos los archivos en el directorio de complementos", + "t85":"4, Reabrir Orca Slicer e instalar el complemento de nuevo", + "t86":"Cerrar", + "t87":"Manual de usuario", + "t88":"Borrar", + "t89":"Abrir carpeta contenedora", + "t90":"Modelo 3D", + "t91":"Descargar modelos 3D", + "t92":"Cabina Bambú de Navidad", + "t93":"Conexión de Impresora", + "t94":"Por favor, configure la conexión de red de la impresora para encontrarla." + }, "de_DE":{ "t1":"Willkommen im Orca Slicer", "t2":"Das Orca Slicer wird in mehreren Schritten eingerichtet. Lass uns anfangen!", From 053bb37ece0a4647012ffdc01b94c4941acbe8d2 Mon Sep 17 00:00:00 2001 From: stasyan68 <67683363+stasyan68@users.noreply.github.com> Date: Mon, 10 Jul 2023 19:06:44 +0300 Subject: [PATCH 62/62] added Russian translation (#1509) --- bbl/i18n/ru/OrcaSlicer_ru.po | 10067 ++++++++++++++++++++++++++++++ resources/i18n/ru/OrcaSlicer.mo | Bin 0 -> 364252 bytes 2 files changed, 10067 insertions(+) create mode 100644 bbl/i18n/ru/OrcaSlicer_ru.po create mode 100644 resources/i18n/ru/OrcaSlicer.mo diff --git a/bbl/i18n/ru/OrcaSlicer_ru.po b/bbl/i18n/ru/OrcaSlicer_ru.po new file mode 100644 index 0000000000..b349a22b10 --- /dev/null +++ b/bbl/i18n/ru/OrcaSlicer_ru.po @@ -0,0 +1,10067 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-30 05:30+0200\n" +"PO-Revision-Date: 2023-07-08 15:56+0300\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ru_RU\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"X-Generator: Poedit 3.3.2\n" + +msgid "Supports Painting" +msgstr "Рисование поддержек" + +msgid "Alt + Mouse wheel" +msgstr "ALT + колёсико мыши" + +msgid "Section view" +msgstr "Вид в разре" + +msgid "Reset direction" +msgstr "Направление сброса" + +msgid "Ctrl + Mouse wheel" +msgstr "Ctrl +Колёсико мыши" + +msgid "Pen size" +msgstr "Размер пера" + +msgid "Left mouse button" +msgstr "Левая кнопка мыши" + +msgid "Enforce supports" +msgstr "Принудительная поддержка" + +msgid "Right mouse button" +msgstr "Правая кнопка мыши" + +msgid "Block supports" +msgstr "Блокировка поддержек" + +msgid "Shift + Left mouse button" +msgstr "SHIFT + Левая кнопка мыши" + +msgid "Erase" +msgstr "Ластик" + +msgid "Erase all painting" +msgstr "Стереть все рисунки" + +msgid "Highlight overhang areas" +msgstr "Выделить выступающие области" + +msgid "Gap fill" +msgstr "Заполнение пробелов" + +msgid "Perform" +msgstr "Выполнить" + +msgid "Gap area" +msgstr "Площадь зазора" + +msgid "Tool type" +msgstr "Тип инструмента" + +msgid "Smart fill angle" +msgstr "Умный угол заливки" + +msgid "On overhangs only" +msgstr "Только на свесах" + +msgid "Auto support threshold angle: " +msgstr "Угол порога автоматической поддержки: " + +msgid "Circle" +msgstr "Круг" + +msgid "Sphere" +msgstr "Сфера" + +msgid "Fill" +msgstr "Заполнить" + +msgid "Gap Fill" +msgstr "Заполнение пробелов" + +#, boost-format +msgid "Allows painting only on facets selected by: \"%1%\"" +msgstr "Рисование только на выбраных гранях: \"%1%\"" + +msgid "Highlight faces according to overhang angle." +msgstr "Выделить грани с соответствующим углом выступа." + +msgid "No auto support" +msgstr "Нет автоматической поддержки" + +msgid "Support Generated" +msgstr "Генерация поддержки" + +msgid "Lay on face" +msgstr "Положить на лицо" + +#, boost-format +msgid "" +"Filament count exceeds the maximum number that painting tool supports. only " +"the first %1% filaments will be available in painting tool." +msgstr "" +"Количество филамента превышает максимальное количество, которое поддерживает " +"инструмент для окраски. только первые %1% нитей будут доступны в средстве " +"окраски." + +msgid "Color Painting" +msgstr "Цветное рисование" + +msgid "Pen shape" +msgstr "Форма пера" + +msgid "Paint" +msgstr "Рисования" + +msgid "Key 1~9" +msgstr "Клпвиша 1~9" + +msgid "Choose filament" +msgstr "Выбор филамента" + +msgid "Edge detection" +msgstr "Обнаружение границ" + +msgid "Triangles" +msgstr "Треугольники" + +msgid "Filaments" +msgstr "Филамент" + +msgid "Brush" +msgstr "Кисть" + +msgid "Smart fill" +msgstr "Интеллектуальная заливка" + +msgid "Bucket fill" +msgstr "Заливка ведра" + +msgid "Height range" +msgstr "Диапазон высот" + +msgid "Ctrl + Shift + Enter" +msgstr "Ctrl + Shift + Enter" + +msgid "Toggle Wireframe" +msgstr "Переключение каркаса" + +msgid "Shortcut Key " +msgstr "Сочетание клавиш " + +msgid "Triangle" +msgstr "Треугольник" + +msgid "Height Range" +msgstr "Переключить каркас" + +msgid "Remove painted color" +msgstr "Удалить закрашенный цвет" + +#, boost-format +msgid "Painted using: Filament %1%" +msgstr "Окрашен с использованием: Филамент %1%" + +msgid "Move" +msgstr "Переместить" + +msgid "Rotate" +msgstr "Повернуть" + +msgid "Optimize orientation" +msgstr "Оптимизировать ориентацию" + +msgid "Apply" +msgstr "Готово" + +msgid "Scale" +msgstr "Масштаб" + +msgid "Error: Please close all toolbar menus first" +msgstr "Ошибка: пожалуйста, сначала закройте все меню панели инструментов" + +msgid "Tool-Lay on Face" +msgstr "Инструмент-укладка на лицо" + +msgid "in" +msgstr "in" + +msgid "mm" +msgstr "мм" + +msgid "Position" +msgstr "Позиция" + +msgid "Rotation" +msgstr "Вращение" + +msgid "Scale ratios" +msgstr "Коэффициенты масштабирования" + +msgid "Object Operations" +msgstr "Операции с объектами" + +msgid "Volume Operations" +msgstr "Операции с объемами" + +msgid "Translate" +msgstr "Перевести" + +msgid "Group Operations" +msgstr "Групповая ориентация" + +msgid "Set Position" +msgstr "Установить позицию" + +msgid "Set Orientation" +msgstr "Установить ориентацию" + +msgid "Set Scale" +msgstr "Установить масштаб" + +msgid "Reset Position" +msgstr "Сбросить позициюб" + +msgid "Reset Rotation" +msgstr "Сбросить ориентацию" + +msgid "World coordinates" +msgstr "Мировые координаты" + +msgid "°" +msgstr "°" + +msgid "Size" +msgstr "Размер" + +msgid "%" +msgstr "%" + +msgid "uniform scale" +msgstr "единая шкала" + +msgid "Left click" +msgstr "Щелкните левой кнопкой мыши" + +msgid "Add connector" +msgstr "Добавить соединитель" + +msgid "Right click" +msgstr "Щелкните правой кнопкой мыши" + +msgid "Remove connector" +msgstr "Извлеките разъем" + +msgid "Drag" +msgstr "Перетащите" + +msgid "Move connector" +msgstr "Переместить соединитель" + +msgid "Add connector to selection" +msgstr "Добавить соединитель к выделенному" + +msgid "Remove connector from selection" +msgstr "Удалить соединитель из списка выбора" + +msgid "Select all connectors" +msgstr "Выберите все соединители" + +msgid "Cut" +msgstr "Вырезать" + +msgid "Connector" +msgstr "Соединитель" + +msgid "Movement:" +msgstr "Движение:" + +msgid "Movement" +msgstr "Движение" + +msgid "Height" +msgstr "Рост" + +msgid "Edit connectors" +msgstr "Редактировать соединители" + +msgid "Add connectors" +msgstr "Добавить соединители" + +msgid "Upper part" +msgstr "Верхняя часть" + +msgid "Lower part" +msgstr "Нижняя часть" + +msgid "Keep" +msgstr "Держать" + +msgid "Place on cut" +msgstr "Поместить на срез" + +msgid "Flip" +msgstr "Переверните" + +msgid "After cut" +msgstr "После вырезания" + +msgid "Cut to parts" +msgstr "Разрезать на части" + +msgid "Auto Segment" +msgstr "Авто сегмент" + +msgid "Perform cut" +msgstr "Выполнить вырезание" + +msgid "Reset" +msgstr "Сброс" + +msgid "Connectors" +msgstr "Соединители" + +msgid "Type" +msgstr "Тип" + +msgid "Style" +msgstr "Стиль" + +msgid "Shape" +msgstr "Форма" + +msgid "Depth ratio" +msgstr "Коэффициент глубины" + +msgid "Remove connectors" +msgstr "Извлеките разъемы" + +msgid "Prizm" +msgstr "Призма" + +msgid "Frustum" +msgstr "Усечённый" + +msgid "Square" +msgstr "Квадрат" + +msgid "Hexagon" +msgstr "Шестиугольник" + +msgid "Confirm connectors" +msgstr "Подтвердить соединители" + +msgid "Cancel" +msgstr "Отмена" + +msgid "Warning" +msgstr "Предупреждение" + +msgid "Invalid connectors detected" +msgstr "Обнаружены недопустимые соединители" + +msgid "connector is out of cut contour" +msgstr "разъем выходит за контур выреза" + +msgid "connectors are out of cut contour" +msgstr "разъемы выходят за контур выреза" + +msgid "connector is out of object" +msgstr "разъем вне объекта" + +msgid "connectors is out of object" +msgstr "коннекторы отсутствуют в объекте" + +msgid "Some connectors are overlapped" +msgstr "Некоторые разъемы перекрываются" + +msgid "" +"Invalid state. \n" +"No one part is selected for keep after cut" +msgstr "" +"Недопустимое состояние. Ни одна деталь не выбрана для сохранения после " +"вырезания" + +msgid "Plug" +msgstr "Подключи" + +msgid "Dowel" +msgstr "Дюбель" + +msgid "Tolerance" +msgstr "Допуск" + +msgid "Mesh name" +msgstr "Название сетки" + +msgid "Detail level" +msgstr "Уровень детализации" + +msgid "Decimate ratio" +msgstr "Коффициет уменьшения" + +#, boost-format +msgid "" +"Processing model '%1%' with more than 1M triangles could be slow. It is " +"highly recommended to simplify the model." +msgstr "" +"Обработка модели '%1%' с более чем 1 миллиметровыми треугольниками может " +"быть медленной. Настоятельно рекомендуется упростить модель." + +msgid "Simplify model" +msgstr "Упрощённая модель" + +msgid "Simplify" +msgstr "Упростить" + +msgid "Simplification is currently only allowed when a single part is selected" +msgstr "" +"Упрощение в настоящее время разрешено только при выборе отдельной детали" + +msgid "Error" +msgstr "Ошибка" + +msgid "Extra high" +msgstr "Сверхвысокий" + +msgid "High" +msgstr "Выоский" + +msgid "Medium" +msgstr "Средний" + +msgid "Low" +msgstr "Низкий" + +msgid "Extra low" +msgstr "Сверхнизкий" + +#, c-format, boost-format +msgid "%d triangles" +msgstr "%d треугольники" + +msgid "Show wireframe" +msgstr "Показать каркас" + +#, boost-format +msgid "%1%" +msgstr "%1%" + +msgid "Can't apply when proccess preview." +msgstr "Не может применяться при предварительном просмотре процесса." + +msgid "Operation already cancelling. Please wait few seconds." +msgstr "Операция уже отменяется. Пожалуйста, подождите несколько секунд." + +msgid "Face recognition" +msgstr "Распознавание лиц" + +msgid "Perform Recognition" +msgstr "Выполните распознавание" + +msgid "Brush size" +msgstr "Размер кисти" + +msgid "Brush shape" +msgstr "Форма кисти" + +msgid "Enforce seam" +msgstr "Принудительное расположение шва" + +msgid "Block seam" +msgstr "Блокировка шва" + +msgid "Seam painting" +msgstr "Рисование шва" + +msgid "Remove selection" +msgstr "Удалить выделение" + +msgid "Shift + Mouse move up or dowm" +msgstr "Shift + перемещение мыши вверх или вниз" + +msgid "Rotate text" +msgstr "Повернуть текст" + +msgid "Text shape" +msgstr "Форма текста" + +msgid "Font" +msgstr "Шрифт" + +msgid "Thickness" +msgstr "Толщина" + +msgid "Input text" +msgstr "Ввод текста" + +msgid "Embeded" +msgstr "Встроено" + +msgid "Text Gap" +msgstr "Пробел в тексте" + +msgid "Angle" +msgstr "Угол" + +msgid "" +"Embeded\n" +"depth" +msgstr "Встроенная глубина" + +msgid "Surface" +msgstr "Поверхность" + +msgid "Horizontal text" +msgstr "Горизонтальный текст" + +msgid "Ctrl+" +msgstr "Ctrl+" + +msgid "Notice" +msgstr "Уведомление" + +msgid "Undefined" +msgstr "Не определено" + +#, boost-format +msgid "%1% was replaced with %2%" +msgstr "%1% был заменен на %2%" + +msgid "The configuration may be generated by a newer version of OrcaSlicer." +msgstr "Конфигурация может быть создана более новой версией OrcaSlicer." + +msgid "Some values have been replaced. Please check them:" +msgstr "Некоторые значения были заменены. Пожалуйста, проверьте их:" + +msgid "Process" +msgstr "Процесс" + +msgid "Filament" +msgstr "Филамент" + +msgid "Machine" +msgstr "Машина" + +msgid "Configuration package was loaded, but some values were not recognized." +msgstr "" +"Пакет конфигурации был загружен, но некоторые значения не были распознаны." + +#, boost-format +msgid "" +"Configuration file \"%1%\" was loaded, but some values were not recognized." +msgstr "" +"Файл конфигурации \\%1%\\ был загружен, но некоторые значения не были " +"распознаны." + +msgid "V" +msgstr "V" + +msgid "" +"OrcaSlicer will terminate because of running out of memory.It may be a bug. " +"It will be appreciated if you report the issue to our team." +msgstr "" +"BambuStudio завершит работу из-за нехватки памяти.Возможно, это ошибка. Мы " +"будем признательны, если вы сообщите о проблеме нашей команде." + +msgid "Fatal error" +msgstr "Фатальная ошибка" + +msgid "" +"OrcaSlicer will terminate because of a localization error. It will be " +"appreciated if you report the specific scenario this issue happened." +msgstr "" +"Программа OrcaSlicer завершит работу из-за ошибки локализации. Будет " +"признателен, если вы сообщите о конкретном сценарии возникновения этой " +"проблемы." + +msgid "Critical error" +msgstr "Критическая ошибка" + +#, boost-format +msgid "OrcaSlicer got an unhandled exception: %1%" +msgstr "OrcaSlicer получил необработанное исключение: %1%" + +msgid "Downloading Bambu Network Plug-in" +msgstr "Загрузка сетевого подключаемого модуля Bambu" + +msgid "Incorrect password" +msgstr "Неверный пароль" + +#, c-format, boost-format +msgid "Connect %s failed! [SN:%s, code=%s]" +msgstr "Подключение %s не удалось! [Серийный номер:%s, код=%s]" + +msgid "" +"OrcaSlicer configuration file may be corrupted and is not abled to be parsed." +"Please delete the file and try again." +msgstr "" +"Возможно, файл конфигурации OrcaSlicer поврежден и не подлежит разбору. " +"Удалите файл и повторите попытку." + +#, c-format, boost-format +msgid "" +"%s\n" +"Do you want to continue?" +msgstr "%s Вы хотите продолжать?" + +msgid "Remember my choice" +msgstr "Запомнить мой выбор" + +msgid "Loading configuration" +msgstr "Загрузка конфигурации" + +#, c-format, boost-format +msgid "Click to download new version in default browser: %s" +msgstr "Нажмите, чтобы загрузить новую версию в браузере по умолчанию: %s" + +msgid "The Orca Slicer needs an upgrade" +msgstr "Orca Slicer нуждается в обновлении" + +msgid "This is the newest version." +msgstr "Это самая новая версия." + +msgid "Info" +msgstr "Информация" + +msgid "Rebuild" +msgstr "Восстановить" + +msgid "Loading current presets" +msgstr "Загрузка текущих пресетов" + +msgid "Loading a mode view" +msgstr "Загрузка режима просмотра" + +msgid "Choose one file (3mf):" +msgstr "Выберите один файл (3mf):" + +msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" +msgstr "Выберите один или несколько файлов (3mf/step/stl/svg/obj/amf):" + +msgid "Choose one file (gcode/3mf):" +msgstr "Выберите один файл (gcode/3mf):" + +msgid "Some presets are modified." +msgstr "Некоторые пресеты изменены." + +msgid "" +"You can keep the modifield presets to the new project, discard or save " +"changes as new presets." +msgstr "" +"Вы можете сохранить модифицированные пресеты в новом проекте, удалить или " +"сохранить меняется как новые пресеты." + +msgid "User logged out" +msgstr "Пользователь вышел из системы" + +msgid "new or open project file is not allowed during the slicing process!" +msgstr "новый или открытый файл проекта не допускается в процессе нарезки!" + +msgid "Open Project" +msgstr "Открыть проект" + +msgid "" +"The version of Bambu studio is too low and needs to be updated to the latest " +"version before it can be used normally" +msgstr "" +"Версия студии Bambu слишком низкая, ее необходимо обновить до последней " +"версии, прежде чем ее можно будет использовать в обычном режиме" + +msgid "Login information expired. Please login again." +msgstr "Срок действия данных для входа истек. Пожалуйста, войдите снова." + +msgid "Privacy Policy Update" +msgstr "Обновление политики конфиденциальности" + +msgid "Loading" +msgstr "Загрузка" + +msgid "Loading user preset" +msgstr "Загрузка пользовательского пресета" + +msgid "Switching application language" +msgstr "Переключение языка приложения" + +msgid "Select the language" +msgstr "Выберите язык" + +msgid "Language" +msgstr "Язык" + +msgid "*" +msgstr "*" + +msgid "The uploads are still ongoing" +msgstr "Загрузка все еще продолжается" + +msgid "Stop them and continue anyway?" +msgstr "Остановить их и продолжать в любом случае?" + +msgid "Ongoing uploads" +msgstr "Текущие загрузки" + +msgid "Select a G-code file:" +msgstr "Выберите файл G-кода:" + +msgid "Import File" +msgstr "Импортировать файл" + +msgid "Delete" +msgstr "Удалить" + +msgid "Choose files" +msgstr "Выбрать файлы" + +msgid "New Folder" +msgstr "Новая папка" + +msgid "Open" +msgstr "Открыть" + +msgid "Rename" +msgstr "Переименовать" + +msgid "Orca Slicer GUI initialization failed" +msgstr "Ошибка инициализации графического интерфейса Orca Slicer" + +#, boost-format +msgid "Fatal error, exception catched: %1%" +msgstr "Неустранимая ошибка, обнаружено исключение: %1%" + +msgid "Quality" +msgstr "Качество" + +msgid "Shell" +msgstr "Оболочка" + +msgid "Infill" +msgstr "Заполнение" + +msgid "Support" +msgstr "Поддержки" + +msgid "Flush options" +msgstr "Варианты сброса" + +msgid "Speed" +msgstr "Скорость" + +msgid "Strength" +msgstr "Прочность" + +msgid "Top Solid Layers" +msgstr "Сплошных слоёв сверху" + +msgid "Top Minimum Shell Thickness" +msgstr "Минимальная толщина верхней оболочки" + +msgid "Bottom Solid Layers" +msgstr "Нижний сплошной слой" + +msgid "Bottom Minimum Shell Thickness" +msgstr "Минимальная толщина нижней оболочки" + +msgid "Ironing" +msgstr "Разглаживание" + +msgid "Fuzzy Skin" +msgstr "Нечеткая оболочка" + +msgid "Extruders" +msgstr "Экструдеры" + +msgid "Extrusion Width" +msgstr "Ширина экструзии" + +msgid "Wipe options" +msgstr "Параметры очистки" + +msgid "Bed adhension" +msgstr "Прилегание к кровати" + +msgid "Advanced" +msgstr "Дополнительно" + +msgid "Add part" +msgstr "Добавить часть" + +msgid "Add negative part" +msgstr "Добавить отрицательную часть" + +msgid "Add modifier" +msgstr "Добавить модификатор" + +msgid "Add support blocker" +msgstr "Добавить блокировщик поддержек" + +msgid "Add support enforcer" +msgstr "Добавить средство принудительной поддержки" + +msgid "Select settings" +msgstr "Выберете настройки" + +msgid "Hide" +msgstr "Скрыть" + +msgid "Show" +msgstr "Показать" + +msgid "Del" +msgstr "Удалить" + +msgid "Delete the selected object" +msgstr "Удалить выбранный объект" + +msgid "Edit Text" +msgstr "Редактировать текст" + +msgid "Load..." +msgstr "Загрузить..." + +msgid "Orca Cube" +msgstr "Orca Куб" + +msgid "3DBenchy" +msgstr "3DBenchy" + +msgid "Autodesk FDM Test" +msgstr "Autodesk FDM Test" + +msgid "Voron Cube" +msgstr "Voron Куб" + +msgid "Cube" +msgstr "Куб" + +msgid "Cylinder" +msgstr "Цилиндр" + +msgid "Cone" +msgstr "Конус" + +msgid "Height range Modifier" +msgstr "Модификатор диапазона высот" + +msgid "Add settings" +msgstr "Добавить настройки" + +msgid "Change type" +msgstr "Изменить тип" + +msgid "Set as an individual object" +msgstr "Установить как отдельный объект" + +msgid "Set as individual objects" +msgstr "Установить как отдельные объекты" + +msgid "Printable" +msgstr "Доступно для печати" + +msgid "Fix model" +msgstr "Исправить модель" + +msgid "Export as STL" +msgstr "Экспортировать как STL" + +msgid "Reload from disk" +msgstr "Перезагрузить с диска" + +msgid "Reload the selected parts from disk" +msgstr "Перезагрузите выбранные части с диска" + +msgid "Replace with STL" +msgstr "Заменить на STL" + +msgid "Replace the selected part with new STL" +msgstr "Замените выбранную часть новым STL" + +msgid "Change filament" +msgstr "Смена филамента" + +msgid "Set filament for selected items" +msgstr "Установить филамент для выбранных элементов" + +msgid "Default" +msgstr "По умолчанию" + +#, c-format, boost-format +msgid "Filament %d" +msgstr "Филамент %d" + +msgid "active" +msgstr "активно" + +msgid "Scale to build volume" +msgstr "Масштабирование для увеличение объёма" + +msgid "Scale an object to fit the build volume" +msgstr "Отмасштабировать под область печати" + +msgid "Flush Options" +msgstr "Варианты сброса" + +msgid "Flush into objects' infill" +msgstr "Вровень с заполнением объектов" + +msgid "Flush into this object" +msgstr "Слить в этот объект" + +msgid "Flush into objects' support" +msgstr "Заподлицо с поддержкой объектов" + +msgid "Edit in Parameter Table" +msgstr "Изменить в таблице параметров" + +msgid "Convert from inch" +msgstr "Конвертировать из имерской" + +msgid "Restore to inch" +msgstr "Восстановить в имперскую" + +msgid "Convert from meter" +msgstr "Преобразовать из метрической" + +msgid "Restore to meter" +msgstr "Восстановить в метрическую" + +msgid "Assemble" +msgstr "Собрать" + +msgid "Assemble the selected objects to an object with multiple parts" +msgstr "Соберите выбранные объекты в объект с несколькими частями" + +msgid "Assemble the selected objects to an object with single part" +msgstr "Соберите выбранные объекты в объект с одной частью" + +msgid "Assemble the selected parts to a single part" +msgstr "Соберите выбранные детали в одну деталь" + +msgid "Along X axis" +msgstr "Вдоль оси X" + +msgid "Mirror along the X axis" +msgstr "Отразить по оси X" + +msgid "Along Y axis" +msgstr "По оси Y" + +msgid "Mirror along the Y axis" +msgstr "Отразить по оси Y" + +msgid "Along Z axis" +msgstr "По оси Z" + +msgid "Mirror along the Z axis" +msgstr "Отразить по оси Z" + +msgid "Mirror" +msgstr "Зеркально" + +msgid "Mirror object" +msgstr "Зеркальный объект" + +msgid "Invalidate cut info" +msgstr "Недействительная информация о вырезании" + +msgid "Add Primitive" +msgstr "Добавить примитив" + +msgid "Show Labels" +msgstr "Показать ярлыки" + +msgid "To objects" +msgstr "К объектам" + +msgid "Split the selected object into multiple objects" +msgstr "Разделить выбранный объект на несколько объектов" + +msgid "To parts" +msgstr "На части" + +msgid "Split the selected object into multiple parts" +msgstr "Разделить выбранный объект на несколько частей" + +msgid "Split" +msgstr "Разделить" + +msgid "Split the selected object" +msgstr "Разделить выбранный объект" + +msgid "Auto orientation" +msgstr "Автоматическая ориентация" + +msgid "Auto orient the object to improve print quality." +msgstr "Автоматически ориентируйте объект для улучшения качества печати." + +msgid "Split the selected object into mutiple objects" +msgstr "Разделить выбранный объект на несколько объектов" + +msgid "Split the selected object into mutiple parts" +msgstr "Разделить выбранный объект на несколько частей" + +msgid "Select All" +msgstr "Выбрать всё" + +msgid "select all objects on current plate" +msgstr "выбрать все объекты на текущей пластине" + +msgid "Delete All" +msgstr "Удалить всё" + +msgid "delete all objects on current plate" +msgstr "удалить все объекты на текущей пластине" + +msgid "Arrange" +msgstr "Организовать" + +msgid "arrange current plate" +msgstr "упорядочить текущую табличку" + +msgid "Auto Rotate" +msgstr "Авто-поворот" + +msgid "auto rotate current plate" +msgstr "автоповорот текущей пластины" + +msgid "Delete Plate" +msgstr "Удалить пластину" + +msgid "Remove the selected plate" +msgstr "Удалить выбранную пластину" + +msgid "Clone" +msgstr "Клонирование" + +msgid "Simplify Model" +msgstr "Упростить модель" + +msgid "Center" +msgstr "Центр" + +msgid "Edit Process Settings" +msgstr "Изменить параметры процесса" + +msgid "Edit print parameters for a single object" +msgstr "Редактировать параметры печати для одного объекта" + +msgid "Change Filament" +msgstr "Сменить филамент" + +msgid "Set Filament for selected items" +msgstr "Установить филамент для выбранных элементов" + +msgid "current" +msgstr "текущий" + +msgid "Set Unprintable" +msgstr "Установить непечатаемый" + +msgid "Set Printable" +msgstr "Установить для печати" + +msgid "Unlock" +msgstr "Разблокировать" + +msgid "Lock" +msgstr "Заблокировать" + +msgid "Name" +msgstr "Имя" + +msgid "Fila." +msgstr "Фила." + +#, c-format, boost-format +msgid "%1$d error repaired" +msgid_plural "%1$d errors repaired" +msgstr[0] "%1$d ошибка исправлена" +msgstr[1] "%1$d ошибки исправлены" +msgstr[2] "%1$d ошибки исправлены" + +#, c-format, boost-format +msgid "Error: %1$d non-manifold edge." +msgid_plural "Error: %1$d non-manifold edges." +msgstr[0] "Ошибка: %1$d кромка без коллектора." +msgstr[1] "Ошибка: %1$d кромки без коллектора." +msgstr[2] "Ошибка: %1$d кромки без коллектора." + +msgid "Remaining errors" +msgstr "Оставшиеся ошибки" + +#, c-format, boost-format +msgid "%1$d non-manifold edge" +msgid_plural "%1$d non-manifold edges" +msgstr[0] "%1$d кромка без коллектора" +msgstr[1] "%1$d кромки без коллектора" +msgstr[2] "%1$d кромки без коллектора" + +msgid "Right click the icon to fix model object" +msgstr "Щелкните правой кнопкой мыши значок, чтобы исправить объект модели" + +msgid "Right button click the icon to drop the object settings" +msgstr "Щелкните правой кнопкой мыши значок, чтобы удалить настройки объекта" + +msgid "Click the icon to reset all settings of the object" +msgstr "Нажмите на иконку, чтобы сбросить все настройки объекта" + +msgid "Right button click the icon to drop the object printable property" +msgstr "" +"Щелкните правой кнопкой мыши значок, чтобы удалить свойство объекта для " +"печати" + +msgid "Click the icon to toggle printable property of the object" +msgstr "Щелкните значок, чтобы переключить печатаемое свойство объекта" + +msgid "Click the icon to edit support painting of the object" +msgstr "Щелкните значок, чтобы изменить вспомогательную окраску объекта" + +msgid "Click the icon to edit color painting of the object" +msgstr "Щелкните значок, чтобы отредактировать цветовую окраску объекта" + +msgid "Click the icon to shift this object to the bed" +msgstr "Щелкните значок, чтобы переместить этот объект на кровать" + +msgid "Loading file" +msgstr "Загрузка файла" + +msgid "Error!" +msgstr "Ошибка!" + +msgid "Generic" +msgstr "Общий" + +msgid "Add Modifier" +msgstr "Добавить модификатор" + +msgid "Switch to per-object setting mode to edit modifier settings." +msgstr "" +"Переключитесь в режим настройки для каждого объекта, чтобы изменить " +"настройки модификатора." + +msgid "" +"Switch to per-object setting mode to edit process settings of selected " +"objects." +msgstr "" +"Переключитесь в режим настройки для каждого объекта, чтобы изменить " +"настройки процесса для выбранных объектов." + +msgid "Delete connector from object which is a part of cut" +msgstr "Удалить коннектор из объекта, который является частью разреза" + +msgid "Delete solid part from object which is a part of cut" +msgstr "Удалить твердотельную часть из объекта, который является частью выреза" + +msgid "Delete negative volume from object which is a part of cut" +msgstr "Удалить отрицательный объем с объекта, который является частью разреза" + +msgid "" +"To save cut correspondence you can delete all connectors from all related " +"objects." +msgstr "" +"Для сохранения вырезанной корреспонденции вы можете удалить все коннекторы " +"из всех связанных\n" +"объекты." + +msgid "" +"This action will break a cut correspondence.\n" +"After that model consistency can't be guaranteed .\n" +"\n" +"To manipulate with solid parts or negative volumes you have to invalidate " +"cut infornation first." +msgstr "" +"Это действие разорвет обрезанную корреспонденцию.\n" +"После этого согласованность модели не может быть гарантирована.\n" +"\n" +"Чтобы манипулировать твердыми частями или отрицательными объемами, вы должны " +"аннулировать\n" +"сокращайте информацию сначала." + +msgid "Delete all connectors" +msgstr "Удалить все соединители" + +msgid "Deleting the last solid part is not allowed." +msgstr "Удаление последней сплошной части не допускается." + +msgid "The target object contains only one part and can not be splited." +msgstr "Целевой объект содержит только одну часть и не может быть разделен." + +msgid "Assembly" +msgstr "Сборка" + +msgid "Cut Connectors information" +msgstr "Информация об отрезанных соединителях" + +msgid "Object manipulation" +msgstr "Манипуляции с объектами" + +msgid "Group manipulation" +msgstr "Групповая манипуляция" + +msgid "Object Settings to modify" +msgstr "Параметры объекта для изменения" + +msgid "Part Settings to modify" +msgstr "Настройки детали для изменения" + +msgid "Layer range Settings to modify" +msgstr "Диапазон слоев Параметры для изменения" + +msgid "Part manipulation" +msgstr "Манипуляции с деталями" + +msgid "Instance manipulation" +msgstr "Управление экземпляром" + +msgid "Height ranges" +msgstr "Диапазоны высоты" + +msgid "Settings for height range" +msgstr "Настройки диапазона роста" + +msgid "Object" +msgstr "Объект" + +msgid "Part" +msgstr "Часть" + +msgid "Layer" +msgstr "Слой" + +msgid "Selection conflicts" +msgstr "Конфликты выбора" + +msgid "" +"If first selected item is an object, the second one should also be object." +msgstr "" +"Если первый выбранный элемент является объектом, второй также должен быть " +"объектом." + +msgid "" +"If first selected item is a part, the second one should be part in the same " +"object." +msgstr "" +"Если первый выбранный элемент является частью, второй должен быть частью " +"того же\n" +"объект." + +msgid "The type of the last solid object part is not to be changed." +msgstr "Тип последней твердотельной части объекта изменять нельзя." + +msgid "Negative Part" +msgstr "Отрицательная часть" + +msgid "Modifier" +msgstr "Модификатор" + +msgid "Support Blocker" +msgstr "Блокировщик поддержки" + +msgid "Support Enforcer" +msgstr "Инфорсер поддержки" + +msgid "Type:" +msgstr "Тип:" + +msgid "Choose part type" +msgstr "Выберите тип детали" + +msgid "Enter new name" +msgstr "Введите новое имя" + +msgid "Renaming" +msgstr "Переименование" + +msgid "Repairing model object" +msgstr "Восстановление объекта модели" + +msgid "Following model object has been repaired" +msgid_plural "Following model objects have been repaired" +msgstr[0] "Следующий объект модели был восстановлен" +msgstr[1] "Следующие объекты модели были восстановлены" +msgstr[2] "Следующие объекты модели были восстановлены" + +msgid "Failed to repair folowing model object" +msgid_plural "Failed to repair folowing model objects" +msgstr[0] "Не удалось восстановить следующий объект модели" +msgstr[1] "Не удалось восстановить следующие объекты модели" +msgstr[2] "Не удалось восстановить следующие объекты модели" + +msgid "Repairing was canceled" +msgstr "Ремонт был отменен" + +msgid "Additional process preset" +msgstr "Дополнительная предустановка процесса" + +msgid "Remove parameter" +msgstr "Удалить параметр" + +msgid "to" +msgstr "в" + +msgid "Remove height range" +msgstr "Удалить диапазон роста" + +msgid "Add height range" +msgstr "Добавить диапазон роста" + +msgid "Invalid numeric." +msgstr "Недопустимое числовое значение." + +msgid "one cell can only be copied to one or multiple cells in the same column" +msgstr "" +"одна ячейка может быть скопирована только в одну или несколько ячеек в том " +"же столбце" + +msgid "multiple cells copy is not supported" +msgstr "копирование нескольких ячеек не поддерживается" + +msgid "Outside" +msgstr "Внешний" + +msgid "Auto" +msgstr "Авто" + +msgid "Manual" +msgstr "Руководство" + +msgid "No-brim" +msgstr "Без юбки" + +msgid " " +msgstr "" + +msgid "Layer height" +msgstr "Высота слоя" + +msgid "Wall loops" +msgstr "Количество периметров" + +msgid "Infill density(%)" +msgstr "Плотность заполнения (%)" + +msgid "Auto Brim" +msgstr "Авто юбка" + +msgid "Outer wall speed" +msgstr "Скорость внешнего периметра" + +msgid "Plate" +msgstr "Стол" + +msgid "Brim" +msgstr "Юбка" + +msgid "Object/Part Setting" +msgstr "Настройка объекта/детали" + +msgid "Reset parameter" +msgstr "Сбросить параметр" + +msgid "Multicolor Print" +msgstr "Многоцветная печать" + +msgid "Line Type" +msgstr "Тип линии" + +msgid "More" +msgstr "Больше" + +msgid "Open Preferences." +msgstr "Откройте настройки." + +msgid "Open next tip." +msgstr "Откройте следующий совет." + +msgid "Open Documentation in web browser." +msgstr "Откройте документацию в веб-браузере." + +msgid "Pause:" +msgstr "Пауза:" + +msgid "Custom Template:" +msgstr "Пользовательский шаблон:" + +msgid "Custom G-code:" +msgstr "Пользовательский G-код:" + +msgid "Custom G-code" +msgstr "Пользовательский G-код" + +msgid "Enter Custom G-code used on current layer:" +msgstr "Введите пользовательский G-код, используемый в текущем слое:" + +msgid "OK" +msgstr "ОК" + +msgid "Jump to Layer" +msgstr "Перейти к слою" + +msgid "Jump to layer" +msgstr "Перейти к слою" + +msgid "Please enter the layer number" +msgstr "Пожалуйста, введите номер слоя" + +msgid "Add Pause" +msgstr "Добавить паузу" + +msgid "Insert a pause command at the beginning of this layer." +msgstr "Вставьте команду паузы в начале этого слоя." + +msgid "Add Custom G-code" +msgstr "Добавить пользовательский G-код" + +msgid "Insert custom G-code at the beginning of this layer." +msgstr "Вставьте пользовательский G-код в начале этого слоя." + +msgid "Add Custom Template" +msgstr "Добавить пользовательский шаблон" + +msgid "Insert template custom G-code at the beginning of this layer." +msgstr "Вставьте пользовательский G-код шаблона в начале этого слоя." + +msgid "Filament " +msgstr "Филамент " + +msgid "Change filament at the beginning of this layer." +msgstr "Замена филамента в начале этого слоя." + +msgid "Delete Pause" +msgstr "Удалить паузу" + +msgid "Delete Custom Template" +msgstr "Удалить пользовательский шаблон" + +msgid "Edit Custom G-code" +msgstr "Редактировать пользовательский G-код" + +msgid "Delete Custom G-code" +msgstr "Удалить пользовательский G-код" + +msgid "Delete Filament Change" +msgstr "Удалить замену нити" + +msgid "No printer" +msgstr "Нет принтера" + +msgid "..." +msgstr "..." + +msgid "?" +msgstr "?" + +msgid "Empty" +msgstr "Пустой" + +msgid "AMS" +msgstr "AMS" + +msgid "Ams filament backup" +msgstr "Резервный филамент AMS" + +msgid "AMS not connected" +msgstr "АМС не подключен" + +msgid "Cali" +msgstr "Кали" + +msgid "Calibration of extrusion" +msgstr "АМС не подключен" + +msgid "Load Filament" +msgstr "Загрузите филамент" + +msgid "Unload Filament" +msgstr "Выгрузите филамент" + +msgid "Ext Spool" +msgstr "Внешняя катушка" + +msgid "Tips" +msgstr "Советы" + +msgid "Guide" +msgstr "Гид" + +msgid "Retry" +msgstr "Повторить попытку" + +msgid "Calibrating AMS..." +msgstr "Калибровка АМС..." + +msgid "A problem occured during calibration. Click to view the solution." +msgstr "" +"Во время калибровки возникла проблема. Нажмите, чтобы просмотреть решение." + +msgid "Calibrate again" +msgstr "Повторить калибровку" + +msgid "Cancel calibration" +msgstr "Отменить калибровку" + +msgid "Heat the nozzle" +msgstr "Нагрейте сопло" + +msgid "Cut filament" +msgstr "Отрезать филамент" + +msgid "Pull back current filament" +msgstr "Оттяните текущий филамент" + +msgid "Push new filament into extruder" +msgstr "Вставьте новый филамент в экструдер" + +msgid "Purge old filament" +msgstr "Очистите старый филамент" + +msgid "Feed new filament from external spool" +msgstr "Подача новой нити с внешней катушки" + +msgid "Confirm whether the filament has been extruded" +msgstr "Подтвердите, был ли экструдирован филамент" + +msgid "" +"Choose an AMS slot then press \"Load\" or \"Unload\" button to automatically " +"load or unload filiament." +msgstr "" +"Выберите слот AMS, затем нажмите кнопку \\Load\\ или \\Unload\\, чтобы " +"автоматически\n" +"загрузить или выгрузить филамент." + +msgid "Edit" +msgstr "Редактировать" + +msgid "" +"All the selected objects are on the locked plate,\n" +"We can not do auto-arrange on these objects." +msgstr "" +"Все выбранные объекты находятся на заблокированной пластине,\n" +"Мы не можем делать авто-расстановку на этих объектах." + +msgid "No arrangable objects are selected." +msgstr "" +"Все выбранные объекты находятся на заблокированной пластине,\\n\n" +"Мы не можем делать авто-расстановку на этих объектах." + +msgid "" +"This plate is locked,\n" +"We can not do auto-arrange on this plate." +msgstr "" +"Эта пластина заблокирована,\n" +"Мы не можем сделать автоаранжировку на этой пластине." + +msgid "Arranging..." +msgstr "Организация..." + +msgid "" +"Arrange failed. Found some exceptions when processing object geometries." +msgstr "" +"Устроить не удалось. Найдены некоторые исключения при обработке геометрии " +"объектов." + +msgid "Arranging" +msgstr "Организация" + +msgid "Arranging canceled." +msgstr "Организация отменена." + +msgid "" +"Arranging is done but there are unpacked items. Reduce spacing and try again." +msgstr "" +"Сборка завершена, но есть неупакованные вещи. Уменьшите интервал и повторите " +"попытку." + +msgid "Arranging done." +msgstr "Организация сделана." + +#, c-format, boost-format +msgid "" +"Arrangement ignored the following objects which can't fit into a single " +"bed:\n" +"%s" +msgstr "" +"Аранжировка игнорировала следующие объекты, которые не могут поместиться в " +"один\n" +"кровать:\n" +"%s" + +msgid "" +"All the selected objects are on the locked plate,\n" +"We can not do auto-orient on these objects." +msgstr "" +"Все выбранные объекты находятся на заблокированной пластине,\n" +"Мы не можем делать автоориентацию на этих объектах." + +msgid "" +"This plate is locked,\n" +"We can not do auto-orient on this plate." +msgstr "" +"Эта пластина заблокирована,\n" +"Мы не можем сделать автоориентацию на этой пластине." + +msgid "Orienting..." +msgstr "Ориентирование..." + +msgid "Orienting" +msgstr "Ориентация" + +msgid "Error! Unable to create thread!" +msgstr "Ошибка! Невозможно создать тему!" + +msgid "Exception" +msgstr "Исключение" + +msgid "Logging in" +msgstr "Вход в систему" + +msgid "Login failed" +msgstr "Ошибка входа" + +msgid "The region parameter is incorrrect" +msgstr "Неверный параметр региона" + +msgid "Failure of printer login" +msgstr "Ошибка входа в принтер" + +msgid "Failed to get ticket" +msgstr "Не удалось получить билет" + +msgid "User authorization timeout" +msgstr "Тайм-аут авторизации пользователя" + +msgid "Failure of bind" +msgstr "Ошибка привязки" + +msgid "Unknown Failure" +msgstr "Неизвестный сбой" + +msgid "Please check the printer network connection." +msgstr "Пожалуйста, проверьте сетевое подключение принтера." + +msgid "Abnormal print file data. Please slice again" +msgstr "Неправильные данные файла печати. Пожалуйста, нарежьте снова" + +msgid "Task canceled" +msgstr "Задача отменена" + +msgid "Upload task timed out. Please check the network problem and try again" +msgstr "" +"Время ожидания задачи загрузки истекло. Проверьте проблему с сетью и " +"повторите попытку" + +msgid "Cloud service connection failed. Please try again." +msgstr "" +"Не удалось подключиться к облачному сервису. Пожалуйста, попробуйте еще раз." + +msgid "Print file not found, please slice again" +msgstr "Файл для печати не найден, повторите нарезку" + +msgid "" +"The print file exceeds the maximum allowable size (1GB). Please simplify the " +"model and slice again" +msgstr "" +"Файл печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, " +"упростите\n" +"смоделируйте и снова нарежьте" + +msgid "Failed uploading print file" +msgstr "Не удалось загрузить файл для печати" + +msgid "Wrong Access code" +msgstr "Неверный код доступа" + +msgid "Sending print job over LAN" +msgstr "Отправка задания на печать по локальной сети" + +msgid "Sending print job through cloud service" +msgstr "Отправка задания на печать через облачный сервис" + +msgid "Service Unavailable" +msgstr "Сервис недоступен" + +msgid "Unkown Error." +msgstr "Неизвестная ошибка." + +msgid "Sending print configuration" +msgstr "Отправка конфигурации печати" + +#, c-format, boost-format +msgid "Successfully sent. Will automatically jump to the device page in %ss" +msgstr "" +"Успешно отправлено. Автоматически перейдет на страницу устройства в %ss" + +msgid "An SD card needs to be inserted before printing via LAN." +msgstr "Перед печатью через локальную сеть необходимо вставить SD-карту." + +msgid "Failed to send the print job. Please try again." +msgstr "" +"Не удалось отправить задание на печать. Пожалуйста, попробуйте еще раз." + +msgid "Send to Printer failed. Please try again." +msgstr "Отправить на принтер не удалось. Пожалуйста, попробуйте еще раз." + +msgid "No space left on Printer SD card" +msgstr "На SD-карте принтера не осталось места" + +msgid "Sending gcode file over LAN" +msgstr "Отправка файла gcode по локальной сети" + +msgid "Sending gcode file through cloud service" +msgstr "Отправка файла gcode через облачный сервис" + +msgid "Sending gcode file to sdcard" +msgstr "Отправка файла gcode на SD-карту" + +#, c-format, boost-format +msgid "Successfully sent. Close current page in %s s" +msgstr "Успешно отправлено. Закрыть текущую страницу в %s s" + +msgid "An SD card needs to be inserted before sending to printer." +msgstr "Перед отправкой на принтер необходимо вставить SD-карту." + +msgid "Please log out and login to the printer again." +msgstr "Выйдите из системы и снова войдите в принтер." + +msgid "Choose SLA archive:" +msgstr "Выберите архив SLA:" + +msgid "Import file" +msgstr "Импортировать файл" + +msgid "Import model and profile" +msgstr "Импорт модели и профиля" + +msgid "Import profile only" +msgstr "Импортировать только профиль" + +msgid "Import model only" +msgstr "Только модель импорта" + +msgid "Accurate" +msgstr "Точный" + +msgid "Balanced" +msgstr "Сбалансированный" + +msgid "Quick" +msgstr "Быстрый" + +msgid "Importing SLA archive" +msgstr "Импорт архива SLA" + +msgid "" +"The SLA archive doesn't contain any presets. Please activate some SLA " +"printer preset first before importing that SLA archive." +msgstr "" +"Архив SLA не содержит пресетов. Пожалуйста, активируйте SLA\n" +"предустановку принтера, прежде чем импортировать этот архив SLA." + +msgid "Importing canceled." +msgstr "Импорт отменен." + +msgid "Importing done." +msgstr "Импорт выполнен." + +msgid "" +"The imported SLA archive did not contain any presets. The current SLA " +"presets were used as fallback." +msgstr "" +"Импортированный SLA-архив не содержал пресетов. Текущее соглашение об уровне " +"обслуживания\n" +"пресеты использовались как запасной вариант." + +msgid "You cannot load SLA project with a multi-part object on the bed" +msgstr "Вы не можете загрузить проект SLA с составным объектом на кровати" + +msgid "Please check your object list before preset changing." +msgstr "Пожалуйста, проверьте список объектов перед изменением предустановки." + +msgid "Attention!" +msgstr "Внимание!" + +msgid "Downloading" +msgstr "Загрузка" + +msgid "Download failed" +msgstr "Загрузка не далась" + +msgid "Cancelled" +msgstr "Отменено" + +msgid "Install successfully." +msgstr "Успешная установка." + +msgid "Installing" +msgstr "Установка" + +msgid "Install failed" +msgstr "Установка не удалась" + +msgid "Portions copyright" +msgstr "Авторские права на части" + +msgid "Copyright" +msgstr "Авторские права" + +msgid "License" +msgstr "Лицензия" + +msgid "Orca Slicer is licensed under " +msgstr "Orca Slicer находится под лицензией " + +msgid "GNU Affero General Public License, version 3" +msgstr "Стандартная общественная лицензия GNU Affero, версия 3" + +msgid "" +"Orca Slicer is based on BambuStudio by Bambulab, which is from PrusaSlicer " +"by Prusa Research. PrusaSlicer is from Slic3r by Alessandro Ranellucci and " +"the RepRap community" +msgstr "" +"Orca Slicer основан на BambuStudio от Bambulab, который принадлежит " +"PrusaSlicer.\n" +"Prusa Research. PrusaSlicer от Slic3r Алессандро Ранеллуччи и\n" +"сообщество RepRap" + +msgid "Libraries" +msgstr "Библиотеки" + +msgid "" +"This software uses open source components whose copyright and other " +"proprietary rights belong to their respective owners" +msgstr "" +"Это программное обеспечение использует компоненты с открытым исходным кодом, " +"авторские права и другие\n" +"права собственности принадлежат их соответствующим владельцам" + +#, c-format, boost-format +msgid "About %s" +msgstr "О %s" + +msgid "Orca Slicer " +msgstr "Orca Slicer " + +msgid "OrcaSlicer is based on BambuStudio, PrusaSlicer, and SuperSlicer." +msgstr "OrcaSlicer основан на BambuStudio, PrusaSlicer и SuperSlicer." + +msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." +msgstr "BambuStudio изначально основан на PrusaSlicer от PrusaResearch." + +msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." +msgstr "PrusaSlicer изначально основан на Slic3r от Алессандро Ранеллуччи." + +msgid "" +"Slic3r was created by Alessandro Ranellucci with the help of many other " +"contributors." +msgstr "" +"Slic3r был создан Алессандро Ранеллуччи с помощью многих других\n" +"участники." + +msgid "Version" +msgstr "Версия" + +msgid "AMS Materials Setting" +msgstr "Настройка материалов AMS" + +msgid "Confirm" +msgstr "Принято" + +msgid "Close" +msgstr "" +"Закрыто\n" +"Цвет" + +msgid "Colour" +msgstr "Цвет" + +msgid "" +"Nozzle\n" +"Temperature" +msgstr "" +"Температура\n" +" сопла" + +msgid "max" +msgstr "max" + +msgid "min" +msgstr "min" + +#, boost-format +msgid "The input value should be greater than %1% and less than %2%" +msgstr "Входное значение должно быть больше %1% и меньше %2%" + +msgid "SN" +msgstr "SN" + +msgid "Setting AMS slot information while printing is not supported" +msgstr "Установка информации о слоте AMS во время печати не поддерживается" + +msgid "Factors of dynamic flow cali" +msgstr "Факторы динамического течения, калибровка" + +msgid "Factor K" +msgstr "Фактор К" + +msgid "Factor N" +msgstr "Фактор N" + +msgid "Setting Virtual slot information while printing is not supported" +msgstr "" +"Установка информации о виртуальном слоте во время печати не поддерживается" + +msgid "Are you sure you want to clear the filament information?" +msgstr "Вы уверены, что хотите удалить информацию о нити?" + +msgid "Please input a valid value (K in 0~0.5)" +msgstr "Пожалуйста, введите допустимое значение (K в диапазоне 0~0,5)" + +msgid "Please input a valid value (K in 0~0.5, N in 0.6~2.0)" +msgstr "" +"Введите допустимое значение (K в диапазоне 0~0,5, N в диапазоне 0,6~2,0)" + +msgid "You need to select the material type and color first." +msgstr "Сначала необходимо выбрать тип материала и цвет." + +msgid "Other color" +msgstr "Другой цвет" + +msgid "Dynamic flow calibration" +msgstr "Динамическая калибровка потока" + +msgid "" +"The nozzle temp and max volumetric speed will affect the calibration " +"results. Please fill in the same values as the actual printing. They can be " +"auto-filled by selecting a filament preset." +msgstr "" +"Температура сопла и максимальная объемная скорость влияют на калибровку.\n" +"Результаты. Пожалуйста, заполните те же значения, что и фактическая печать. " +"Они могут быть\n" +"заполняется автоматически, выбирая предустановку нити." + +msgid "Nozzle Diameter" +msgstr "Диаметр сопла" + +msgid "Bed Type" +msgstr "Тип кровати" + +msgid "Nozzle temperature" +msgstr "Температура сопла" + +msgid "Bed Temperature" +msgstr "Температура кровати" + +msgid "Max volumetric speed" +msgstr "Максимальная объемная скорость" + +msgid "℃" +msgstr "℃" + +msgid "Bed temperature" +msgstr "Температура кровати" + +msgid "mm³" +msgstr "mm³" + +msgid "Start calibration" +msgstr "Начать калибровку" + +msgid "Next" +msgstr "Следующий" + +msgid "" +"Calibration completed. Please find the most uniform extrusion line on your " +"hot bed like the picture below, and fill the value on its left side into the " +"factor K input box." +msgstr "" +"Калибровка завершена. Пожалуйста, найдите наиболее равномерную экструзионную " +"линию на вашем\n" +"горячая кровать, как на картинке ниже, и вставьте значение слева в поле\n" +"поле ввода коэффициента K." + +msgid "Save" +msgstr "Сохранить" + +msgid "Last Step" +msgstr "Последний шаг" + +msgid "Example" +msgstr "Пример" + +#, c-format, boost-format +msgid "Calibrating... %d%%" +msgstr "Калибровка... %d%%" + +msgid "Calibration completed" +msgstr "Калибровка завершена" + +#, c-format, boost-format +msgid "%s does not support %s" +msgstr "%s не поддерживает %s" + +msgid "Dynamic flow Calibration" +msgstr "Калибровка динамического потока" + +msgid "Step" +msgstr "Шаг" + +msgid "AMS Slots" +msgstr "Слоты AMS" + +msgid "" +"Note: Only the AMS slots loaded with the same material type can be selected." +msgstr "" +"Примечание. Можно выбрать только слоты AMS, загруженные одним и тем же типом " +"материала." + +msgid "Enable AMS" +msgstr "Включить AMS" + +msgid "Print with filaments in the AMS" +msgstr "Печать филаментами в AMS" + +msgid "Disable AMS" +msgstr "Отключить AMS" + +msgid "Print with the filament mounted on the back of chassis" +msgstr "Печать с нитью, установленной на задней части корпуса" + +msgid "Cabin humidity" +msgstr "Влажность салона" + +msgid "" +"Green means that AMS humidity is normal, orange represent humidity is high, " +"red represent humidity is too high.(Hygrometer: lower the better.)" +msgstr "" +"Зеленый означает, что влажность AMS нормальная, оранжевый означает, что " +"влажность высокая,\n" +"красный означает, что влажность слишком высока. (Гигрометр: чем ниже, тем " +"лучше.)" + +msgid "Desiccant status" +msgstr "Статус влагопоглотителя" + +msgid "" +"A desiccant status lower than two bars indicates that desiccant may be " +"inactive. Please change the desiccant.(The bars: higher the better.)" +msgstr "" +"Состояние влагопоглотителя ниже двух делений указывает на то, что " +"влагопоглотитель может быть\n" +"неактивный. Пожалуйста, замените осушитель. (Полосы: чем выше, тем лучше.)" + +msgid "" +"Note: When the lid is open or the desiccant pack is changed, it can take " +"hours or a night to absorb the moisture. Low temperatures also slow down the " +"process. During this time, the indicator may not represent the chamber " +"accurately." +msgstr "" +"Примечание. Когда крышка открыта или пакет с влагопоглотителем заменен, это " +"может занять некоторое время.\n" +"часов или ночи, чтобы впитать влагу. Низкие температуры также замедляют\n" +"процесс. В это время индикатор может не отображать патронник.\n" +"точно." + +msgid "" +"Config which AMS slot should be used for a filament used in the print job" +msgstr "" +"Настройте, какой слот AMS следует использовать для нити, используемой в " +"задании на печать" + +msgid "Filament used in this print job" +msgstr "Филамент, используемый в этом задании на печать" + +msgid "AMS slot used for this filament" +msgstr "Слот AMS, используемый для этой нити" + +msgid "Click to select AMS slot manually" +msgstr "Нажмите, чтобы выбрать слот AMS вручную" + +msgid "Do not Enable AMS" +msgstr "Не включать АМS" + +msgid "Print using materials mounted on the back of the case" +msgstr "" +"Печать с использованием материалов, закрепленных на задней части корпуса" + +msgid "Print with filaments in ams" +msgstr "Печать филаментами в ams" + +msgid "Print with filaments mounted on the back of the chassis" +msgstr "Печать с нитями, установленными на задней части корпуса" + +msgid "Filaments replace" +msgstr "Нити заменить" + +msgid "Group" +msgstr "Группа" + +msgid "AMS Settings" +msgstr "Настройки AMS" + +msgid "Insertion update" +msgstr "Обновление вставки" + +msgid "" +"The AMS will automatically read the filament information when inserting a " +"new Bambu Lab filament. This takes about 20 seconds." +msgstr "" +"AMS автоматически считывает информацию о филаментае при вставке нового " +"филамента Bambu Lab. Это занимает около 20 секунд." + +msgid "" +"Note: if new filament is inserted during printing, the AMS will not " +"automatically read any information until printing is completed." +msgstr "" +"Примечание: если во время печати будет вставлен новый филамент, AMS не будет " +"автоматически считывать любую информацию до завершения печати." + +msgid "" +"When inserting a new filament, the AMS will not automatically read its " +"information, leaving it blank for you to enter manually." +msgstr "" +"При вставке новой нити AMS не будет автоматически считывать ее\n" +"информацию, оставив поле пустым для ввода вручную." + +msgid "Power on update" +msgstr "Обновление при включении" + +msgid "" +"The AMS will automatically read the information of inserted filament on " +"start-up. It will take about 1 minute.The reading process will roll filament " +"spools." +msgstr "" +"AMS автоматически считывает информацию о вставленном филаменте. Это займет " +"около 1 минуты. В процессе считывания будет крутиться катушка." + +msgid "" +"The AMS will not automatically read information from inserted filament " +"during startup and will continue to use the information recorded before the " +"last shutdown." +msgstr "" +"AMS не будет автоматически считывать информацию с вставленной нити.\n" +"во время запуска и будет продолжать использовать информацию, записанную до\n" +"последнее отключение." + +msgid "Update remaining capacity" +msgstr "Обновить оставшуюся емкость" + +msgid "" +"The AMS will estimate Bambu filament's remaining capacity after the filament " +"info is updated. During printing, remaining capacity will be updated " +"automatically." +msgstr "" +"AMS оценит оставшуюся емкость филамента Bambu после того, как информация " +"обновляется. Во время печати оставшаяся емкость будет обновляться " +"автоматически." + +msgid "AMS filament backup" +msgstr "Резервное копирование нити AMS" + +msgid "" +"AMS will continue to another spool with the same properties of filament " +"automatically when current filament runs out" +msgstr "" +"AMS перейдет на другую катушку с теми же свойствами автоматически, когда " +"текущий филамент заканчивается" + +msgid "File" +msgstr "Файл" + +msgid "Calibration" +msgstr "Калибровка" + +msgid "" +"Failed to download the plug-in. Please check your firewall settings and vpn " +"software, check and retry." +msgstr "" +"Не удалось загрузить плагин. Пожалуйста, проверьте настройки брандмауэра и " +"vpn\n" +"программное обеспечение, проверьте и повторите попытку." + +msgid "" +"Failed to install the plug-in. Please check whether it is blocked or deleted " +"by anti-virus software." +msgstr "" +"Не удалось установить плагин. Пожалуйста, проверьте, не заблокирован ли он " +"или удален\n" +"с помощью антивирусного программного обеспечения." + +msgid "click here to see more info" +msgstr "нажмите здесь, чтобы увидеть больше информации" + +msgid "Please home all axes (click " +msgstr "Верните все оси в исходное положение (нажмите " + +msgid "" +") to locate the toolhead's position. This prevents device moving beyond the " +"printable boundary and causing equipment wear." +msgstr "" +"), чтобы определить положение инструментальной головки. Это предотвращает " +"перемещение устройства за пределы\n" +"печатаемая граница и вызывающая износ оборудования." + +msgid "Go Home" +msgstr "Иди домой" + +msgid "" +"A error occurred. Maybe memory of system is not enough or it's a bug of the " +"program" +msgstr "" +"Произошла ошибка. Возможно памяти системы не хватает или это баг самой " +"программы\n" +"программа" + +msgid "Please save project and restart the program. " +msgstr "Сохраните проект и перезапустите программу. " + +msgid "Processing G-Code from Previous file..." +msgstr "Обработка G-кода из предыдущего файла..." + +msgid "Slicing complete" +msgstr "Нарезка завершена" + +msgid "Access violation" +msgstr "Нарушение доступа" + +msgid "Illegal instruction" +msgstr "Незаконная инструкция" + +msgid "Divide by zero" +msgstr "Разделить на ноль" + +msgid "Overflow" +msgstr "Переэкструзия" + +msgid "Underflow" +msgstr "Недоэкструзия" + +msgid "Floating reserved operand" +msgstr "Плавающий зарезервированный операнд" + +msgid "Stack overflow" +msgstr "Переполнение стека" + +msgid "Unknown error when export G-code." +msgstr "Неизвестная ошибка при экспорте G-кода." + +#, boost-format +msgid "" +"Failed to save gcode file.\n" +"Error message: %1%.\n" +"Source file %2%." +msgstr "" +"Не удалось сохранить файл gcode.\n" +"Сообщение об ошибке: %1%.\n" +"Исходный файл %2%." + +#, boost-format +msgid "Succeed to export G-code to %1%" +msgstr "Успешно экспортировать G-код в %1%" + +msgid "Running post-processing scripts" +msgstr "Запуск скриптов постобработки" + +msgid "Copying of the temporary G-code to the output G-code failed" +msgstr "Не удалось скопировать временный G-код в выходной G-код" + +#, boost-format +msgid "Scheduling upload to `%1%`. See Window -> Print Host Upload Queue" +msgstr "" +"Планирование загрузки в `%1%`. См. Окно -> Очередь загрузки узла печати" + +msgid "Origin" +msgstr "Источник" + +msgid "Diameter" +msgstr "Диаметр" + +msgid "Size in X and Y of the rectangular plate." +msgstr "Размер по осям X и Y прямоуголько кровати." + +msgid "" +"Distance of the 0,0 G-code coordinate from the front left corner of the " +"rectangle." +msgstr "Расстояние координаты G-кода 0,0 от переднего левого угла." + +msgid "" +"Diameter of the print bed. It is assumed that origin (0,0) is located in the " +"center." +msgstr "" +"Диаметр печатной платформы. Предполагается, что начало координат (0,0) " +"находится в центре." + +msgid "Rectangular" +msgstr "Прямоугольный" + +msgid "Circular" +msgstr "Округлый" + +msgid "Custom" +msgstr "Стандартный" + +msgid "Load shape from STL..." +msgstr "Загрузить форму из STL..." + +msgid "Settings" +msgstr "Настройка" + +msgid "Texture" +msgstr "Текстура" + +msgid "Remove" +msgstr "Удалить" + +msgid "Not found:" +msgstr "Не найдено:" + +msgid "Model" +msgstr "Модель" + +msgid "Choose an STL file to import bed shape from:" +msgstr "Выберите файл STL для импорта формы кровати:" + +msgid "Invalid file format." +msgstr "Недопустимый формат файла." + +msgid "Error! Invalid model" +msgstr "Ошибка! Недопустимая модель" + +msgid "The selected file contains no geometry." +msgstr "Выбранный файл не содержит геометрии." + +msgid "" +"The selected file contains several disjoint areas. This is not supported." +msgstr "" +"Выбранный файл содержит несколько непересекающихся областей. Это не " +"поддерживается." + +msgid "Choose a file to import bed texture from (PNG/SVG):" +msgstr "Выберите файл для импорта текстуры кровати (PNG/SVG)" + +msgid "Choose an STL file to import bed model from:" +msgstr "Выберите файл STL для импорта модели кровати:" + +msgid "Bed Shape" +msgstr "Форма кровати" + +msgid "" +"Nozzle may be blocked when the temperature is out of recommended range.\n" +"Please make sure whether to use the temperature to print.\n" +"\n" +msgstr "" +"Форсунка может быть заблокирована, когда температура выходит за пределы " +"рекомендуемого диапазона.\n" +"Убедитесь, что для печати используется температура.\n" + +#, c-format, boost-format +msgid "" +"Recommended nozzle temperature of this filament type is [%d, %d] degree " +"centigrade" +msgstr "" +"Рекомендуемая температура сопла для этого типа нити составляет [%d, %d] " +"градусов Цельсия" + +#, c-format, boost-format +msgid "" +"Bed temperature of other layer is lower than bed temperature of initial " +"layer for more than %d degree centigrade.\n" +"This may cause model broken free from build plate during printing" +msgstr "" +"Температура слоя другого слоя ниже температуры слоя исходного слоя более чем " +"на %d градусов по Цельсию.\n" +"Это может привести к отрыву модели от рабочей пластины во время печати" + +msgid "" +"Bed temperature is higher than vitrification temperature of this filament.\n" +"This may cause nozzle blocked and printing failure\n" +"Please keep the printer open during the printing process to ensure air " +"circulation or reduce the temperature of the hot bed" +msgstr "" +"Температура слоя выше температуры стеклования этой нити.\n" +"Это может привести к блокировке сопла и сбою печати\n" +"Пожалуйста, держите принтер открытым во время процесса печати, чтобы " +"обеспечить доступ воздуха циркуляция или снизить температуру кровати" + +msgid "" +"Too small max volumetric speed.\n" +"Reset to 0.5" +msgstr "" +"Слишком маленькая максимальная объемная скорость.\n" +"Сбросить до 0,5" + +msgid "" +"Too small layer height.\n" +"Reset to 0.2" +msgstr "" +"Слишком маленькая высота слоя.\n" +"Сбросить на 0,2" + +msgid "" +"Too small ironing spacing.\n" +"Reset to 0.1" +msgstr "" +"Слишком маленькое расстояние между глажками.\n" +"Сбросить на 0,1" + +msgid "" +"Zero initial layer height is invalid.\n" +"\n" +"The first layer height will be reset to 0.2." +msgstr "" +"Нулевая начальная высота слоя недействительна.\n" +"\n" +"Высота первого слоя будет сброшена до 0,2." + +msgid "" +"This setting is only used for model size tunning with small value in some " +"cases.\n" +"For example, when model size has small error and hard to be assembled.\n" +"For large size tuning, please use model scale function.\n" +"\n" +"The value will be reset to 0." +msgstr "" +"Этот параметр используется только для настройки размера модели с небольшим " +"значением в некоторых случаях\n" +"Например, когда размер модели имеет небольшую погрешность и ее трудно " +"собрать.\n" +"Для настройки большого размера используйте функцию масштабирования модели.\n" +"\n" +"Значение будет сброшено на 0." + +msgid "" +"Too large elefant foot compensation is unreasonable.\n" +"If really have serious elephant foot effect, please check other settings.\n" +"For example, whether bed temperature is too high.\n" +"\n" +"The value will be reset to 0." +msgstr "" +"Слишком большая компенсация слоновой стопы нецелесообразна.\n" +"Если действительно есть серьезный эффект слоновьей лапы, проверьте другие " +"настройки.\n" +"Например, слишком высокая ли температура кровати.\n" +"\n" +"Значение будет сброшено на 0." + +msgid "" +"Spiral mode only works when wall loops is 1, support is disabled, top shell " +"layers is 0, sparse infill density is 0 and timelapse type is traditional." +msgstr "" +"Спиральный режим работает только тогда, когда периметры равны 1, поддержка " +"отключена, верхняя оболочка равны 0, плотность заполнения равна 0, а тип " +"замедленной съемки — традиционный." + +msgid "" +"Change these settings automatically? \n" +"Yes - Change these settings and enable spiral mode automatically\n" +"No - Give up using spiral mode this time" +msgstr "" +"Изменить эти настройки автоматически? \n" +"Да – изменить эти настройки и автоматически включить режим спирали\n" +"Нет — на этот раз отказаться от использования режима спирали" + +msgid "" +"Prime tower does not work when Adaptive Layer Height or Independent Support " +"Layer Height is on.\n" +"Which do you want to keep?\n" +"YES - Keep Prime Tower\n" +"NO - Keep Adaptive Layer Height and Independent Support Layer Height" +msgstr "" +"Prime Tower не работает, когда Adaptive Layer Height \n" +"или Independent Support высота слоя включена\n" +"Что вы хотите сохранить?\n" +"ДА - Сохранить Башню Очистки\n" +"НЕТ — Сохранить высоту адаптивного слоя и высоту независимого " +"поддерживающего слоя" + +msgid "" +"Prime tower does not work when Adaptive Layer Height is on.\n" +"Which do you want to keep?\n" +"YES - Keep Prime Tower\n" +"NO - Keep Adaptive Layer Height" +msgstr "" +"Башня Prime не работает, если включена адаптивная высота слоя.\n" +"Что вы хотите сохранить?\n" +"ДА - Сохранить Башню Очистки\n" +"НЕТ — Сохранить высоту адаптивного слоя" + +msgid "" +"Prime tower does not work when Independent Support Layer Height is on.\n" +"Which do you want to keep?\n" +"YES - Keep Prime Tower\n" +"NO - Keep Independent Support Layer Height" +msgstr "" +"Основная башня не работает, когда включена Независимая высота опорного " +"слоя.\n" +"Что вы хотите сохранить?\n" +"ДА - Сохранить Башню Очистки\n" +"НЕТ - Сохранить независимую высоту опорного слоя" + +#, boost-format +msgid "%1% infill pattern doesn't support 100%% density." +msgstr "Шаблон заполнения %1% не поддерживает плотность 100%%." + +msgid "" +"Switch to rectilinear pattern?\n" +"Yes - switch to rectilinear pattern automaticlly\n" +"No - reset density to default non 100% value automaticlly" +msgstr "" +"Переключиться на прямолинейный шаблон?\n" +"Да - автоматически переключаться на прямолинейный шаблон\n" +"Нет - автоматически сбросить плотность до значения по умолчанию, отличного " +"от 100%" + +msgid "" +"While printing by Object, the extruder may collide skirt.\n" +"Thus, reset the skirt layer to 1 to avoid that." +msgstr "" +"При печати объектом экструдер может столкнуться с юбкой.\n" +"Таким образом, сбросьте слой юбки до 1, чтобы избежать этого." + +msgid "Auto bed leveling" +msgstr "Автоматическое выравнивание кровати" + +msgid "Heatbed preheating" +msgstr "Предварительный нагрев" + +msgid "Sweeping XY mech mode" +msgstr "Режим Sweeping XY mech" + +msgid "Changing filament" +msgstr "Смена филамента" + +msgid "M400 pause" +msgstr "M400 пауза" + +msgid "Paused due to filament runout" +msgstr "Пуаза из-за датчика филамента" + +msgid "Heating hotend" +msgstr "Нагрев хотенда" + +msgid "Calibrating extrusion" +msgstr "Калибровка экструзии" + +msgid "Scanning bed surface" +msgstr "Сканирование поверхности кровати" + +msgid "Inspecting first layer" +msgstr "Проверка первого слоя" + +msgid "Identifying build plate type" +msgstr "Определение типа рабочей пластины" + +msgid "Calibrating Micro Lidar" +msgstr "Калибровка микролидара" + +msgid "Homing toolhead" +msgstr "Самонаводящаяся головка" + +msgid "Cleaning nozzle tip" +msgstr "Очистка сопла" + +msgid "Checking extruder temperature" +msgstr "Проверка температуры сопла" + +msgid "Printing was paused by the user" +msgstr "Печать приостановлена ​​пользователем" + +msgid "Pause of front cover falling" +msgstr "Пауза падения передней крышки" + +msgid "Calibrating the micro lida" +msgstr "Калибровка микролидар" + +msgid "Calibrating extrusion flow" +msgstr "Калибровка экструзионного потока" + +msgid "Paused due to nozzle temperature malfunction" +msgstr "Приостановлено из-за сбоя температуры сопла" + +msgid "Paused due to heat bed temperature malfunction" +msgstr "Приостановлено из-за неисправности температуры нагревательного слоя" + +msgid "MC" +msgstr "MC" + +msgid "MainBoard" +msgstr "Основная плата" + +msgid "TH" +msgstr "TH" + +msgid "XCam" +msgstr "XCam" + +msgid "Unknown" +msgstr "Неизвестный" + +msgid "Fatal" +msgstr "Фатальный" + +msgid "Serious" +msgstr "Серьезный" + +msgid "Common" +msgstr "Общий" + +msgid "Update successful." +msgstr "Обновление успешно." + +msgid "Downloading failed." +msgstr "Загрузка не удалась." + +msgid "Verification failed." +msgstr "Проверка не удалась." + +msgid "Update failed." +msgstr "Не удалось обновить." + +msgid "Failed to start printing job" +msgstr "Не удалось запустить задание на печать" + +msgid "default" +msgstr "по умолчанию" + +msgid "parameter name" +msgstr "имя параметра" + +msgid "N/A" +msgstr "Н/Д" + +#, c-format, boost-format +msgid "%s can't be percentage" +msgstr "%s не может быть процентом" + +#, c-format, boost-format +msgid "Value %s is out of range, continue?" +msgstr "Значение %s вне допустимого диапазона, продолжить?" + +msgid "Parameter validation" +msgstr "Проверка параметров" + +msgid "Value is out of range." +msgstr "Значение вне допустимого диапазона." + +#, c-format, boost-format +msgid "" +"Is it %s%% or %s %s?\n" +"YES for %s%%, \n" +"NO for %s %s." +msgstr "" +"Это %s%% или %s %s?\n" +"ДА для %s%%, \n" +"НЕТ для %s %s." + +#, boost-format +msgid "Invalid format. Expected vector format: \"%1%\"" +msgstr "Неверный формат. Ожидаемый векторный формат: \"%1%\"" + +msgid "Layer Height" +msgstr "Высота слоя" + +msgid "Line Width" +msgstr "Ширина линии" + +msgid "Fan Speed" +msgstr "Скорость вентилятора" + +msgid "Temperature" +msgstr "Температура" + +msgid "Flow" +msgstr "Поток" + +msgid "Tool" +msgstr "Инструмент" + +msgid "Layer Time" +msgstr "Время слоя" + +msgid "Layer Time (log)" +msgstr "Время слоя (журнал)" + +msgid "Height: " +msgstr "Высота: " + +msgid "Width: " +msgstr "Ширина: " + +msgid "Speed: " +msgstr "Скорость: " + +msgid "Flow: " +msgstr "Поток: " + +msgid "Layer Time: " +msgstr "Время слоя: " + +msgid "Fan Speed: " +msgstr "Скорость вентилятора: " + +msgid "Temperature: " +msgstr "Температура: " + +msgid "Loading G-codes" +msgstr "Загрузка G-кодов" + +msgid "Generating geometry vertex data" +msgstr "Генерация данных вершин геометрии" + +msgid "Generating geometry index data" +msgstr "Генерация данных индекса геометрии" + +msgid "Statistics of All Plates" +msgstr "Статистика" + +msgid "Display" +msgstr "Отображать" + +msgid "Flushed" +msgstr "Очистка" + +msgid "Total" +msgstr "Общий" + +msgid "Total Time Estimation" +msgstr "Оценка общего времени" + +msgid "Total time" +msgstr "Общее время" + +msgid "up to" +msgstr "вплоть до" + +msgid "above" +msgstr "выше" + +msgid "from" +msgstr "от" + +msgid "Color Scheme" +msgstr "Цветовая схема" + +msgid "Time" +msgstr "Время" + +msgid "Percent" +msgstr "Процент" + +msgid "Layer Height (mm)" +msgstr "Высота слоя (мм)" + +msgid "Line Width (mm)" +msgstr "Ширина линии (мм)" + +msgid "Speed (mm/s)" +msgstr "Скорость (мм/с)" + +msgid "Fan Speed (%)" +msgstr "Скорость вентилятора (%)" + +msgid "Temperature (°C)" +msgstr "Температура (°С)" + +msgid "Volumetric flow rate (mm³/s)" +msgstr "Объемный расход (мм³/с)" + +msgid "Used filament" +msgstr "Используемый филамент" + +msgid "Travel" +msgstr "Перемещение" + +msgid "Seams" +msgstr "Швы" + +msgid "Retract" +msgstr "Ретракт" + +msgid "Unretract" +msgstr "Втягивание" + +msgid "Filament Changes" +msgstr "Смена филамента" + +msgid "Wipe" +msgstr "Протирание" + +msgid "Options" +msgstr "Параметры" + +msgid "travel" +msgstr "перемещение" + +msgid "Extruder" +msgstr "Экструдер" + +msgid "Filament change times" +msgstr "Время смены филамента" + +msgid "Cost" +msgstr "Раход" + +msgid "Color change" +msgstr "Изменение цвета" + +msgid "Print" +msgstr "Печать" + +msgid "Pause" +msgstr "Пауза" + +msgid "Printer" +msgstr "Принтер" + +msgid "Print settings" +msgstr "Настройки печати" + +msgid "Total Estimation" +msgstr "Общая оценка" + +msgid "Time Estimation" +msgstr "Оценка времени" + +msgid "Normal mode" +msgstr "Нормальный режим" + +msgid "Prepare time" +msgstr "Время подготовки" + +msgid "Model printing time" +msgstr "Время печати модели" + +msgid "Switch to silent mode" +msgstr "Переключиться в тихий режим" + +msgid "Switch to normal mode" +msgstr "Переключиться в обычный режим" + +msgid "Variable layer height" +msgstr "Переменная высота слоя" + +msgid "Adaptive" +msgstr "Адаптивный" + +msgid "Quality / Speed" +msgstr "Качество/Скорость" + +msgid "Smooth" +msgstr "Гладкий" + +msgid "Radius" +msgstr "Радиус" + +msgid "Keep min" +msgstr "Мимальное удержание" + +msgid "Left mouse button:" +msgstr "Левая кнопка мыши:" + +msgid "Add detail" +msgstr "Добавить детали" + +msgid "Right mouse button:" +msgstr "Правая кнопка мыши:" + +msgid "Remove detail" +msgstr "Удалить детали" + +msgid "Shift + Left mouse button:" +msgstr "SHIFT + Левая кнопка мыши:" + +msgid "Reset to base" +msgstr "Сбросить на базу" + +msgid "Shift + Right mouse button:" +msgstr "Shift + правая кнопка мыши:" + +msgid "Smoothing" +msgstr "Сглаживание" + +msgid "Mouse wheel:" +msgstr "Колёсико мыши:" + +msgid "Increase/decrease edit area" +msgstr "Увеличение/уменьшение области редактирования" + +msgid "Sequence" +msgstr "Последовательность" + +msgid "Mirror Object" +msgstr "Зеркальный объект" + +msgid "Tool Move" +msgstr "Инструмент Перемещение" + +msgid "Tool Rotate" +msgstr "Инструмент Вращение" + +msgid "Move Object" +msgstr "Переместить объект" + +msgid "Auto Orientation options" +msgstr "Параметры Автоориентации" + +msgid "Enable rotation" +msgstr "Включить вращение" + +msgid "Optimize support interface area" +msgstr "Оптимизация области поддержки" + +msgid "Orient" +msgstr "Ориентация" + +msgid "Arrange options" +msgstr "Упорядочить варианты" + +msgid "Spacing" +msgstr "Расстояние" + +msgid "Auto rotate for arrangement" +msgstr "Автоповорот для расположени" + +msgid "Allow multiple materials on same plate" +msgstr "Разрешить использование нескольких материалов на одной пластине" + +msgid "Avoid extrusion calibration region" +msgstr "Избегайте области калибровки экструзии" + +msgid "Add" +msgstr "Добавить" + +msgid "Add plate" +msgstr "Добавить плату" + +msgid "Auto orient" +msgstr "Автоориентация" + +msgid "Arrange all objects" +msgstr "Упорядочить все объекты" + +msgid "Arrange objects on selected plates" +msgstr "Расставить объекты на столе" + +msgid "Split to objects" +msgstr "Разделить на объекты" + +msgid "Split to parts" +msgstr "Разделить на части" + +msgid "Assembly View" +msgstr "Вид сборки" + +msgid "Select Plate" +msgstr "Выбор кровати" + +msgid "Assembly Return" +msgstr "Возврат сборки" + +msgid "return" +msgstr "возврат" + +msgid "Paint Toolbar" +msgstr "Панель инструментов рисования" + +msgid "Explosion Ratio" +msgstr "Коэффициент взрыва" + +msgid "Section View" +msgstr "Разрез" + +msgid "Assemble Control" +msgstr "Сборка управления" + +msgid "Total Volume:" +msgstr "Общий объем:" + +msgid "Assembly Info" +msgstr "Информация о сборке" + +msgid "Volume:" +msgstr "Объем:" + +msgid "Size:" +msgstr "Размер:" + +#, c-format, boost-format +msgid "" +"Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " +"separate the conflicted objects farther (%s <-> %s)." +msgstr "" +"Обнаружены конфликты путей gcode на уровне %d, z = %.2lf мм. Пожалуйста \n" +"разделить конфликтующие объекты дальше (%s <-> %s)." + +msgid "An object is layed over the boundary of plate." +msgstr "Объект наложен на границу стола." + +msgid "A G-code path goes beyond the boundary of plate." +msgstr "Путь G-кода выходит за пределы зоны печати." + +msgid "Only the object being edit is visible." +msgstr "Виден только редактируемый объект." + +msgid "" +"An object is laid over the boundary of plate or exceeds the height limit.\n" +"Please solve the problem by moving it totally on or off the plate, and " +"confirming that the height is within the build volume." +msgstr "" +"Объект находится за границей пластины или превышает ограничение по высоте.\n" +"Пожалуйста, решите проблему, переместив его полностью на тарелку или с нее, " +"и подтверждение того, что высота находится в пределах объема сборки." + +msgid "Jump to" +msgstr "Перейти к" + +msgid "ERROR:" +msgstr "ОШИБКА:" + +msgid "Calibration step selection" +msgstr "Выбор шага калибровки" + +msgid "Micro lidar calibration" +msgstr "Калибровка микролидара" + +msgid "Bed leveling" +msgstr "Выравнивание кровати" + +msgid "Resonance frequency identification" +msgstr "Идентификация резонансной частоты" + +msgid "Calibration program" +msgstr "Программа калибровки" + +msgid "" +"The calibration program detects the status of your device automatically to " +"minimize deviation.\n" +"It keeps the device performing optimally." +msgstr "" +"Программа калибровки автоматически определяет состояние вашего устройства, " +"чтобы\n" +"свести к минимуму отклонение.\n" +"Это обеспечивает оптимальную работу устройства." + +msgid "Calibration Flow" +msgstr "Калибровочный поток" + +msgid "Start Calibration" +msgstr "Начать калибровку" + +msgid "Completed" +msgstr "Завершенный" + +msgid "Calibrating" +msgstr "Калибровка" + +msgid "Auto-record Monitoring" +msgstr "Автозапись Мониторинга" + +msgid "Go Live" +msgstr "В прямом эфире" + +msgid "Resolution" +msgstr "Разрешение нарезки" + +msgid "Show \"Live Video\" guide page." +msgstr "Показать \\Прямое видео\\ страницу руководства." + +msgid "720p" +msgstr "720p" + +msgid "1080p" +msgstr "1080p" + +msgid "ConnectPrinter(LAN)" +msgstr "Подключить принтер (локальная сеть)" + +msgid "Please input the printer access code:" +msgstr "Введите код доступа к принтеру:" + +msgid "" +"You can find it in \"Settings > Network > Connection code\"\n" +"on the printer, as shown in the figure:" +msgstr "" +"Вы можете найти его в \\Настройки > Сеть > Код подключения\"\n" +"на принтере, как показано на рисунке:" + +msgid "Invalid input." +msgstr "Ошибка ввода." + +msgid "New Window" +msgstr "Новое окно" + +msgid "Open a new window" +msgstr "Открыть новое окно" + +msgid "Application is closing" +msgstr "Приложение закрывается" + +msgid "Closing Application while some presets are modified." +msgstr "Закрытие приложения при изменении некоторых пресетов." + +msgid "Logging" +msgstr "Ведение журнала" + +msgid "Prepare" +msgstr "Подготовить" + +msgid "Preview" +msgstr "Предварительный просмотр" + +msgid "Device" +msgstr "Устройство" + +msgid "Project" +msgstr "Проект" + +msgid "Yes" +msgstr "Да" + +msgid "No" +msgstr "Нет" + +msgid "will be closed before creating a new model. Do you want to continue?" +msgstr "будет закрыт перед созданием новой модели. Вы хотите продолжать?" + +msgid "Slice plate" +msgstr "Слайс пластина" + +msgid "Print plate" +msgstr "Печатная пластина" + +msgid "Slice all" +msgstr "Нарезать всё" + +msgid "Export G-code file" +msgstr "Экспорт файла G-кода" + +msgid "Send" +msgstr "Отправить" + +msgid "Export plate sliced file" +msgstr "Экспорт файла срезов планшета" + +msgid "Export all sliced file" +msgstr "Экспортировать весь нарезанный файл" + +msgid "Print all" +msgstr "Распечатать все" + +msgid "Send all" +msgstr "Отправить всё" + +msgid "Keyboard Shortcuts" +msgstr "Горячие клавиши" + +msgid "Show the list of the keyboard shortcuts" +msgstr "Показать список горячих клавиш" + +msgid "Setup Wizard" +msgstr "Мастер настройки" + +msgid "Show Configuration Folder" +msgstr "Показать папку конфигурации" + +msgid "Show Tip of the Day" +msgstr "Показать Совет дня" + +msgid "Check for Update" +msgstr "Проверить обновления" + +msgid "Open Network Test" +msgstr "Открытый сетевой тест" + +#, c-format, boost-format +msgid "&About %s" +msgstr "&О %s" + +msgid "Upload Models" +msgstr "Загрузить модели" + +msgid "Download Models" +msgstr "Скачать модели" + +msgid "Default View" +msgstr "Вид по умолчанию" + +#. TRN To be shown in the main menu View->Top +msgid "Top" +msgstr "Верх" + +msgid "Top View" +msgstr "Вид сверху" + +#. TRN To be shown in the main menu View->Bottom +msgid "Bottom" +msgstr "Низ" + +msgid "Bottom View" +msgstr "Вид снизу" + +msgid "Front" +msgstr "Перед" + +msgid "Front View" +msgstr "Вид спереди" + +msgid "Rear" +msgstr "Зад" + +msgid "Rear View" +msgstr "Вид сзади" + +msgid "Left" +msgstr "Лево" + +msgid "Left View" +msgstr "Вид слева" + +msgid "Right" +msgstr "Право" + +msgid "Right View" +msgstr "Вид справа" + +msgid "Start a new window" +msgstr "Начать новое окно" + +msgid "New Project" +msgstr "Новый проект" + +msgid "Start a new project" +msgstr "Начать новый проект" + +msgid "Open a project file" +msgstr "Откройте файл проекта" + +msgid "Recent projects" +msgstr "Недавние Проекты" + +msgid "Save Project" +msgstr "Сохранить проект" + +msgid "Save current project to file" +msgstr "Сохранить текущий проект в файл" + +msgid "Save Project as" +msgstr "Сохранить проект как" + +msgid "Shift+" +msgstr "Shift+" + +msgid "Save current project as" +msgstr "Сохранить текущий проект как" + +msgid "Import 3MF/STL/STEP/SVG/OBJ/AMF" +msgstr "Импорт 3MF/STL/STEP/SVG/OBJ/AMF" + +msgid "Load a model" +msgstr "Загрузите модель" + +msgid "Import Configs" +msgstr "Импорт конфигураций" + +msgid "Load configs" +msgstr "Загрузить конфигурацию" + +msgid "Import" +msgstr "Импорт" + +msgid "Export all objects as STL" +msgstr "Экспортировать все объекты в формате STL" + +msgid "Export Generic 3MF" +msgstr "Экспорт общего 3MF" + +msgid "Export 3mf file without using some 3mf-extensions" +msgstr "Экспорт файла 3mf без использования каких-либо 3mf-расширений" + +msgid "Export current sliced file" +msgstr "Экспорт текущего нарезанного файла" + +msgid "Export all plate sliced file" +msgstr "Экспортировать весь файл нарезки" + +msgid "Export G-code" +msgstr "Экспорт G-кода" + +msgid "Export current plate as G-code" +msgstr "Экспортировать текущую пластину как G-код" + +msgid "Export &Configs" +msgstr "Экспорт &конфигураци" + +msgid "Export current configuration to files" +msgstr "Экспорт текущей конфигурации в файлы" + +msgid "Export" +msgstr "Экспорт" + +msgid "Quit" +msgstr "Выход" + +msgid "Undo" +msgstr "Отмена" + +msgid "Redo" +msgstr "Повторить" + +msgid "Cut selection to clipboard" +msgstr "Вырезать выделение в буфер обмена" + +msgid "Copy" +msgstr "Копировать" + +msgid "Copy selection to clipboard" +msgstr "Скопировать выделение в буфер обмена" + +msgid "Paste" +msgstr "Вставить" + +msgid "Paste clipboard" +msgstr "Вставить буфер обмена" + +msgid "Delete selected" +msgstr "Удалить выбранное" + +msgid "Deletes the current selection" +msgstr "Удаляет текущий выбор" + +msgid "Delete all" +msgstr "Удаляет всё" + +msgid "Deletes all objects" +msgstr "Удаляет все объекты" + +msgid "Clone selected" +msgstr "Клонировать выбранное" + +msgid "Clone copies of selections" +msgstr "Клонировать копии выбранных объектов" + +msgid "Select all" +msgstr "Выбрать всё" + +msgid "Selects all objects" +msgstr "Выбрать все объекты" + +msgid "Deselect all" +msgstr "Убрать выделение со всего" + +msgid "Deselects all objects" +msgstr "Отменяет выбор всех объектов" + +msgid "Use Perspective View" +msgstr "Используйте вид в перспективе" + +msgid "Use Orthogonal View" +msgstr "Использовать ортогональный вид" + +msgid "Show &Labels" +msgstr "Показать &Ярлыки" + +msgid "Show object labels in 3D scene" +msgstr "Показать метки объектов в 3D-сцене" + +msgid "Preferences" +msgstr "Настройки" + +msgid "View" +msgstr "Вид" + +msgid "Help" +msgstr "Помощь" + +msgid "Temperature Calibration" +msgstr "Калибровка температуры" + +msgid "Pass 1" +msgstr "Пройти 1" + +msgid "Flow rate test - Pass 1" +msgstr "Тест расхода - Пройдено 1" + +msgid "Pass 2" +msgstr "Проход 2" + +msgid "Flow rate test - Pass 2" +msgstr "Тест расхода - Пройдено 2" + +msgid "Flow rate" +msgstr "Скорость потока" + +msgid "Pressure advance" +msgstr "Повышение давления" + +msgid "Retraction test" +msgstr "Тест на втягивание" + +msgid "Orca Tolerance Test" +msgstr "Тест на переносимость ORCA" + +msgid "Max flowrate" +msgstr "Max расход" + +msgid "VFA" +msgstr "VFA" + +msgid "More..." +msgstr "Больше..." + +msgid "Tutorial" +msgstr "Руководство" + +msgid "Calibration help" +msgstr "Справка по калибровке" + +msgid "More calibrations" +msgstr "Больше калибровок" + +msgid "3D Models" +msgstr "3D модели" + +msgid "&Open G-code" +msgstr "&Открыть G-код" + +msgid "Open a G-code file" +msgstr "Откройте файл G-кода" + +msgid "Re&load from Disk" +msgstr "Перезагрузить с диска" + +msgid "Reload the plater from disk" +msgstr "Перезагрузить планшет с диска" + +msgid "Export &Toolpaths as OBJ" +msgstr "Экспорт &траекторий как OBJ" + +msgid "Export toolpaths as OBJ" +msgstr "Экспортировать траектории как OBJ" + +msgid "Open &Studio" +msgstr "Открыть &студию" + +msgid "Open Studio" +msgstr "Открытая студия" + +msgid "&Quit" +msgstr "&Выход" + +#, c-format, boost-format +msgid "Quit %s" +msgstr "Выйти %s" + +msgid "&File" +msgstr "&Файл" + +msgid "&View" +msgstr "&Вид" + +msgid "&Help" +msgstr "&Помощь" + +#, c-format, boost-format +msgid "A file exists with the same name: %s, do you want to override it." +msgstr "Существует файл с таким же именем: %s, вы хотите переопределить его." + +#, c-format, boost-format +msgid "A config exists with the same name: %s, do you want to override it." +msgstr "" +"Существует конфигурация с таким же именем: %s, вы хотите переопределить ее." + +msgid "Overwrite file" +msgstr "Перезаписать файл" + +msgid "Yes to All" +msgstr "Да для всех" + +msgid "No to All" +msgstr "Нет для всех" + +msgid "Choose a directory" +msgstr "Выберите каталог" + +#, c-format, boost-format +msgid "There is %d config exported. (Only non-system configs)" +msgid_plural "There are %d configs exported. (Only non-system configs)" +msgstr[0] "" +"Экспортировано конфигурационных элементов: %d. (Только несистемные " +"конфигурационные элементы)" +msgstr[1] "" +"Экспортировано конфигурационных элементов: %d. (Только несистемные " +"конфигурационные элементы)" +msgstr[2] "" +"Экспортировано конфигурационных элементов: %d. (Только несистемные " +"конфигурационные элементы)" + +msgid "Export result" +msgstr "Экспорт результата" + +msgid "Select profile to load:" +msgstr "Выберите профиль для загрузки:" + +#, c-format, boost-format +msgid "There is %d config imported. (Only non-system and compatible configs)" +msgid_plural "" +"There are %d configs imported. (Only non-system and compatible configs)" +msgstr[0] "" +"Импортировано конфигурационных элементов: %d. (Только несистемные и " +"совместимые конфигурационные элементы)" +msgstr[1] "" +"Импортировано конфигурационных элементов: %d. (Только несистемные и " +"совместимые конфигурационные элементы)" +msgstr[2] "" +"Импортировано конфигурационных элементов: %d. (Только несистемные и " +"совместимые конфигурационные элементы)" + +msgid "Import result" +msgstr "Импортировать результат" + +msgid "File is missing" +msgstr "Файл отсутствует" + +msgid "The project is no longer available." +msgstr "Проект более недоступен." + +msgid "Filament Settings" +msgstr "Настройки филамента" + +msgid "" +"Do you want to synchronize your personal data from Bambu Cloud? \n" +"It contains the following information:\n" +"1. The Process presets\n" +"2. The Filament presets\n" +"3. The Printer presets" +msgstr "" +"Вы хотите синхронизировать свои личные данные с Bambu Cloud? \n" +"Он содержит следующую информацию:\n" +"1. Предустановки процесса\n" +"2. Предустановки филамента\n" +"3. Предустановки принтера" + +msgid "Synchronization" +msgstr "Синхронизация" + +msgid "Initialize failed (No Device)!" +msgstr "Ошибка инициализации (нет устройства)!" + +msgid "Initialize failed (No Camera Device)!" +msgstr "Ошибка инициализации (нет камеры)!" + +msgid "Initializing..." +msgstr "Инициализация..." + +msgid "Loading..." +msgstr "Загрузка..." + +msgid "Initialize failed (Not supported with LAN-only mode)!" +msgstr "" +"Ошибка инициализации (не поддерживается в режиме только для локальной сети)!" + +msgid "Initialize failed (Not accessible in LAN-only mode)!" +msgstr "Инициализация не удалась (недоступно только в режиме LAN)!" + +msgid "Printer is busy downloading, Please wait for the downloading to finish." +msgstr "Принтер занят загрузкой. Дождитесь завершения загрузки." + +msgid "Initialize failed (Missing LAN ip of printer)!" +msgstr "Ошибка инициализации (отсутствует IP-адрес принтера в локальной сети)!" + +msgid "Initialize failed (Not supported by printer)!" +msgstr "Ошибка инициализации (не поддерживается принтером)!" + +#, c-format, boost-format +msgid "Initialize failed (%s)!" +msgstr "Ошибка инициализации (%s)!" + +msgid "Network unreachable" +msgstr "Сеть недоступна" + +#, c-format, boost-format +msgid "Stopped [%d]!" +msgstr "Остановлен [%d]!" + +msgid "Stopped." +msgstr "Остановлено." + +msgid "LAN Connection Failed (Failed to start liveview)" +msgstr "" +"Ошибка подключения к локальной сети (не удалось запустить просмотр в " +"реальном времени)" + +msgid "" +"Virtual Camera Tools is required for this task!\n" +"Do you want to install them?" +msgstr "" +"Для этой задачи требуются инструменты виртуальной камеры!\\n\n" +"Вы хотите их установить?" + +msgid "Downloading Virtual Camera Tools" +msgstr "Загрузка инструментов виртуальной камеры" + +msgid "" +"Another virtual camera is running.\n" +"Bambu Studio supports only a single virtual camera.\n" +"Do you want to stop this virtual camera?" +msgstr "" +"Запущена другая виртуальная камера.\n" +"Bambu Studio поддерживает только одну виртуальную камеру.\n" +"Вы хотите остановить эту виртуальную камеру?" + +#, c-format, boost-format +msgid "Virtual camera initialize failed (%s)!" +msgstr "Ошибка инициализации виртуальной камеры (%s)!" + +msgid "Information" +msgstr "Информация" + +msgid "Playing..." +msgstr "Игра..." + +#, c-format, boost-format +msgid "Load failed [%d]!" +msgstr "Загрузка не удалась [%d]!" + +msgid "Year" +msgstr "Год" + +msgid "Month" +msgstr "Месяц" + +msgid "All Files" +msgstr "Все файлы" + +msgid "Group files by year, recent first." +msgstr "Сгруппируйте файлы по годам, сначала недавние." + +msgid "Group files by month, recent first." +msgstr "Сгруппируйте файлы по месяцам, сначала недавние." + +msgid "Show all files, recent first." +msgstr "Показать все файлы, сначала последние." + +msgid "Timelapse" +msgstr "Таймлапс" + +msgid "Switch to timelapse files." +msgstr "Переключитесь на файлы замедленной съемки." + +msgid "Video" +msgstr "Видео" + +msgid "Switch to video files." +msgstr "Переключиться на видеофайлы." + +msgid "Delete selected files from printer." +msgstr "Удалить выбранные файлы из принтера." + +msgid "Download" +msgstr "Скачать" + +msgid "Download selected files from printer." +msgstr "Загрузите выбранные файлы с принтера." + +msgid "Select" +msgstr "Выбор" + +msgid "Batch manage files." +msgstr "Пакетное управление файлами." + +msgid "No printers." +msgstr "Никаких принтеров." + +msgid "Not supported by this model of printer!" +msgstr "Не поддерживается данной моделью принтера!" + +msgid "Connecting..." +msgstr "Подключение..." + +#, c-format, boost-format +msgid "Connect failed [%d]!" +msgstr "Ошибка подключения [%d]!" + +msgid "Loading file list..." +msgstr "Загрузка списка файлов..." + +msgid "No files" +msgstr "Файлов нет" + +msgid "Not accessible in LAN-only mode!" +msgstr "Недоступно в режиме только LAN!Отсутствует LAN ip принтера!" + +msgid "Missing LAN ip of printer!" +msgstr "Отсутствует LAN ip принтера!" + +#, c-format, boost-format +msgid "You are going to delete %u files. Are you sure to continue?" +msgstr "Вы собираетесь удалить %u файлов. Вы уверены, что хотите продолжить?" + +msgid "Delete files" +msgstr "Удалить файлы" + +#, c-format, boost-format +msgid "File '%s' was lost! Please download it again." +msgstr "Файл '%s' потерян! Пожалуйста, загрузите его снова." + +msgid "Download waiting..." +msgstr "Ожидание загрузки..." + +msgid "Play" +msgstr "Воспроизвести" + +msgid "Open Folder" +msgstr "Открыть папку" + +msgid "Download finished" +msgstr "Загрузка завершена" + +#, c-format, boost-format +msgid "Downloading %d%%..." +msgstr "Загрузка %d%%..." + +msgid "Speed:" +msgstr "Скорость:" + +msgid "Deadzone:" +msgstr "Мертвая зона:" + +msgid "Options:" +msgstr "Параметры:" + +msgid "Zoom" +msgstr "Увеличить" + +msgid "Translation/Zoom" +msgstr "Перевод/Увеличение" + +msgid "3Dconnexion settings" +msgstr "Настройки 3D-соединения" + +msgid "Swap Y/Z axes" +msgstr "Поменять местами оси Y/Z" + +msgid "Camera" +msgstr "Камера" + +msgid "SD Card" +msgstr "SD карта" + +msgid "Camera Setting" +msgstr "Настройка камеры" + +msgid "Printing Progress" +msgstr "Ход печати" + +msgid "Resume" +msgstr "Продолжить" + +msgid "Stop" +msgstr "Стоп" + +msgid "0" +msgstr "0" + +msgid "Layer: N/A" +msgstr "Слой: нет данных" + +msgid "Clear" +msgstr "Очистка" + +msgid "Control" +msgstr "Контроль" + +msgid "Print Options" +msgstr "Параметры печати" + +msgid "100%" +msgstr "100%" + +msgid "Lamp" +msgstr "Лампа" + +msgid "Aux" +msgstr "Aux" + +msgid "Cham" +msgstr "Камера" + +msgid "Bed" +msgstr "Кровать" + +msgid "Unload" +msgstr "Выгрузка" + +msgid "Debug Info" +msgstr "Отладочная информация" + +msgid "No SD Card" +msgstr "Нет SD-карты" + +msgid "SD Card Abnormal" +msgstr "SD-карта не в порядке" + +msgid "Printing List" +msgstr "Список печати" + +msgid "Cancel print" +msgstr "Отменить печать" + +msgid "Are you sure you want to cancel this print?" +msgstr "Вы уверены, что хотите отменить эту печать?" + +#, c-format, boost-format +msgid "" +"Disconnected from printer [%s] due to LAN mode disabled.Please reconnect the " +"printer by logging in with your user account." +msgstr "" +"Отключено от принтера [%s] из-за отключения режима локальной сети. " +"Пожалуйста, переподключите принтер, войдя в свою учетную запись пользователя." + +#, c-format, boost-format +msgid "" +"Disconnected from printer [%s] due to LAN mode enabled.Please reconnect the " +"printer by inputting Access Code which can be gotten from printer screen." +msgstr "" +"Отключено от принтера [%s] из-за включения режима локальной сети. " +"Пожалуйста, переподключите\n" +"принтера, введя код доступа, который можно получить на экране принтера." + +msgid "Downloading..." +msgstr "Загрузка..." + +msgid "Cloud Slicing..." +msgstr "Разделение облака..." + +#, c-format, boost-format +msgid "In Cloud Slicing Queue, there are %s tasks ahead." +msgstr "В очереди Cloud Slicing Queue впереди %s задач." + +#, c-format, boost-format +msgid "Layer: %s" +msgstr "Слой: %s" + +#, c-format, boost-format +msgid "Layer: %d/%d" +msgstr "Слой: %d/%d" + +msgid "Please heat the nozzle to above 170 degree before loading filament." +msgstr "" +"Пожалуйста, нагрейте сопло до температуры выше 170 градусов перед загрузкой " +"нити." + +msgid "Still unload" +msgstr "Еще разгрузить" + +msgid "Still load" +msgstr "Еще загрузить" + +msgid "Please select an AMS slot before calibration" +msgstr "Пожалуйста, выберите слот AMS перед калибровкой" + +msgid "" +"Cannot read filament info: the filament is loaded to the tool head,please " +"unload the filament and try again." +msgstr "" +"Невозможно прочитать информацию о филаменте: филамент загружен в головку " +"инструмента, пожалуйста выгрузите филамент и повторите попытку." + +msgid "This only takes effect during printing" +msgstr "Это действует только во время печати" + +msgid "Silent" +msgstr "Тихий" + +msgid "Standard" +msgstr "Стандартный" + +msgid "Sport" +msgstr "Спортивный" + +msgid "Ludicrous" +msgstr "Нелепый" + +msgid "Can't start this without SD card." +msgstr "Не могу запустить это без SD-карты." + +msgid "Failed to connect to the server" +msgstr "Не удалось подключиться к серверу" + +msgid "Status" +msgstr "Статус" + +msgid "Media" +msgstr "Медиа" + +msgid "Update" +msgstr "Обновление" + +msgid "HMS" +msgstr "HMS" + +msgid "Failed to connect to the printer" +msgstr "Не удалось подключиться к принтеру" + +msgid "Don't show again" +msgstr "Больше не показывать" + +#, c-format, boost-format +msgid "%s error" +msgstr "%s ошибка" + +#, c-format, boost-format +msgid "%s has encountered an error" +msgstr "%s обнаружил ошибку" + +#, c-format, boost-format +msgid "%s warning" +msgstr "%s предупреждение" + +#, c-format, boost-format +msgid "%s has a warning" +msgstr "%s имеет предупреждение" + +#, c-format, boost-format +msgid "%s info" +msgstr "%s инфо" + +#, c-format, boost-format +msgid "%s information" +msgstr "%s информация" + +msgid "Skip" +msgstr "Пропустить" + +msgid "3D Mouse disconnected." +msgstr "3D-мышь отключена." + +msgid "Configuration can update now." +msgstr "Конфигурацию можно обновить сейчас." + +msgid "Detail." +msgstr "Деталь." + +msgid "Integration was successful." +msgstr "Интеграция прошла успешно." + +msgid "Integration failed." +msgstr "Интеграция не удалась." + +msgid "Undo integration was successful." +msgstr "Отменить интеграцию удалось." + +msgid "New network plug-in available." +msgstr "Доступен новый сетевой плагин." + +msgid "Details" +msgstr "Подробности" + +msgid "Undo integration failed." +msgstr "Отменить интеграцию не удалось." + +msgid "Exporting." +msgstr "Экспорт." + +msgid "Software has New version." +msgstr "Программное обеспечение имеет новую версию." + +msgid "Goto download page." +msgstr "Перейти на страницу загрузки." + +msgid "Open Folder." +msgstr "Открыть папку." + +msgid "Safely remove hardware." +msgstr "Безопасное извлечение устройства." + +#, c-format, boost-format +msgid "%1$d Object has custom supports." +msgid_plural "%1$d Objects have custom supports." +msgstr[0] "%1$d Объект имеет пользовательские опоры." +msgstr[1] "%1$d Объекты имеют пользовательские опоры." +msgstr[2] "%1$d Объекты имеют пользовательские опоры." + +#, c-format, boost-format +msgid "%1$d Object has color painting." +msgid_plural "%1$d Objects have color painting." +msgstr[0] "%1$d Объект имеет цветную окраску." +msgstr[1] "%1$d Объекты имею цветную окраску." +msgstr[2] "%1$d Объекты имею цветную окраску." + +#, c-format, boost-format +msgid "%1$d object was loaded as a part of cut object." +msgid_plural "%1$d objects were loaded as parts of cut object" +msgstr[0] "%1$d загружен как часть вырезанного объекта." +msgstr[1] "%1$d загружены как части вырезанных объектов" +msgstr[2] "%1$d загружены как части вырезанных объектов" + +msgid "ERROR" +msgstr "ОШИБКА" + +msgid "CANCELED" +msgstr "ОТМЕНЕНО" + +msgid "COMPLETED" +msgstr "ВЫПОЛНЕНО" + +msgid "Cancel upload" +msgstr "Отменить загрузку" + +msgid "Slice ok." +msgstr "Нарезка ок." + +msgid "Error:" +msgstr "Ошибка:" + +msgid "Warning:" +msgstr "Предупреждение:" + +msgid "Export successfully." +msgstr "Экспорт успешно." + +msgid " (Repair)" +msgstr " (Ремонт)" + +msgid " Click here to install it." +msgstr " Нажмите здесь, чтобы установить его." + +msgid "WARNING:" +msgstr "ПРЕДУПРЕЖДЕНИЕ:" + +msgid "Your model needs support ! Please make support material enable." +msgstr "Вашей модели нужна поддержка! Включите вспомогательный материал." + +msgid "Gcode path overlap" +msgstr "Перекрытие пути Gcode" + +msgid "Support painting" +msgstr "Поддержка рисования" + +msgid "Color painting" +msgstr "Цветное рисование" + +msgid "Cut connectors" +msgstr "Вырезать соединители" + +msgid "Layers" +msgstr "Слои" + +msgid "Range" +msgstr "Диапазон" + +msgid "" +"The application cannot run normally because OpenGL version is lower than " +"2.0.\n" +msgstr "" +"Приложение не может работать нормально, так как версия OpenGL ниже, чем " +"2.0.\n" + +msgid "Please upgrade your graphics card driver." +msgstr "Пожалуйста, обновите драйвер видеокарты." + +msgid "Unsupported OpenGL version" +msgstr "Неподдерживаемая версия OpenGL" + +#, c-format, boost-format +msgid "" +"Unable to load shaders:\n" +"%s" +msgstr "" +"Не удалось загрузить шейдеры:\n" +"%s" + +msgid "Error loading shaders" +msgstr "Ошибка загрузки шейдеров" + +msgctxt "Layers" +msgid "Top" +msgstr "Верх" + +msgctxt "Layers" +msgid "Bottom" +msgstr "Низ" + +msgid "Enable AI monitoring of printing" +msgstr "Включить ИИ-мониторинг печати" + +msgid "Sensitivity of pausing is" +msgstr "Чувствительность паузы" + +msgid "Enable detection of build plate position" +msgstr "Включить определение положения рабочего стола" + +msgid "" +"The localization tag of build plate is detected, and printing is paused if " +"the tag is not in predefined range." +msgstr "" +"Обнаружен тег локализации рабочей пластины, и печать приостанавливается, " +"если\n" +"тег не находится в заранее определенном диапазоне." + +msgid "First Layer Inspection" +msgstr "Проверка первого слоя" + +msgid "Auto-recovery from step loss" +msgstr "Автоматическое восстановление после потери шага" + +msgid "Global" +msgstr "Глобальный" + +msgid "Objects" +msgstr "Объекты" + +msgid "Advance" +msgstr "Профи" + +msgid "Compare presets" +msgstr "Сравнить пресеты" + +msgid "View all object's settings" +msgstr "Посмотреть все настройки объекта" + +msgid "Filament settings" +msgstr "Настнойки филамента" + +msgid "Printer settings" +msgstr "Настройки принтера" + +msgid "Untitled" +msgstr "Без имени" + +#, boost-format +msgid " plate %1%:" +msgstr " пластина %1%:" + +msgid "Invalid name, the following characters are not allowed:" +msgstr "Недопустимое имя, следующие символы не допускаются:" + +msgid "Sliced Info" +msgstr "Нарезанная информация" + +msgid "Used Filament (m)" +msgstr "Использовано филамента (м)" + +msgid "Used Filament (mm³)" +msgstr "Использовано филамента (мм³)" + +msgid "Used Filament (g)" +msgstr "Использовано филамента (g)" + +msgid "Used Materials" +msgstr "Используемые материалы" + +msgid "Estimated time" +msgstr "Расчетное время" + +msgid "Filament changes" +msgstr "Изменения нити" + +msgid "Click to edit preset" +msgstr "Нажмите, чтобы изменить предустановку" + +msgid "Connection" +msgstr "Связь" + +msgid "Bed type" +msgstr "Тип кровати" + +msgid "Flushing volumes" +msgstr "Промывочные объемы" + +msgid "Add one filament" +msgstr "Добавьте один филамент" + +msgid "Remove last filament" +msgstr "Удалить последний филамент" + +msgid "Synchronize filament list from AMS" +msgstr "Синхронизировать список нитей из AMS" + +msgid "Set filaments to use" +msgstr "Установите нити для использования" + +msgid "" +"No AMS filaments. Please select a printer in 'Device' page to load AMS info." +msgstr "" +"Нет нитей AMS. Выберите принтер на странице «Устройство», чтобы загрузить " +"информацию AMS." + +msgid "Sync filaments with AMS" +msgstr "Синхронизация нитей с AMS" + +msgid "" +"Sync filaments with AMS will drop all current selected filament presets and " +"colors. Do you want to continue?" +msgstr "" +"Синхронизация нитей с AMS удалит все текущие выбранные пресеты нитей и\n" +"цвета. Вы хотите продолжать?" + +msgid "" +"Already did a synchronization, do you want to sync only changes or resync " +"all?" +msgstr "" +"Синхронизацию уже делал, синхронизировать только изменения или " +"пересинхронизировать\n" +"все?" + +msgid "Sync" +msgstr "Синхронизировать" + +msgid "Resync" +msgstr "Повторная синхронизация" + +msgid "There are no compatible filaments, and sync is not performed." +msgstr "Нет совместимых филаментов, и синхронизация не выполняется." + +msgid "" +"There are some unknown filaments mapped to generic preset. Please update " +"Orca Slicer or restart Orca Slicer to check if there is an update to system " +"presets." +msgstr "" +"Есть несколько неизвестных нитей, сопоставленных с общей предустановкой. " +"Пожалуйста обновите Orca Slicer или перезапустите Orca Slicer, чтобы " +"проверить, есть ли обновление для системы пресеты." + +#, boost-format +msgid "Do you want to save changes to \"%1%\"?" +msgstr "Вы хотите сохранить изменения в \\%1%\\?" + +#, c-format, boost-format +msgid "" +"Successfully unmounted. The device %s(%s) can now be safely removed from the " +"computer." +msgstr "" +"Успешно размонтирован. Теперь устройство %s(%s) можно безопасно удалить из " +"компьютер." + +#, c-format, boost-format +msgid "Ejecting of device %s(%s) has failed." +msgstr "Ошибка извлечения устройства %s(%s)." + +msgid "Previous unsaved project detected, do you want to restore it?" +msgstr "Обнаружен предыдущий несохраненный проект, восстановить его?" + +msgid "Restore" +msgstr "Восстановить" + +msgid "" +"The bed temperature exceeds filament's vitrification temperature. Please " +"open the front door of printer before printing to avoid nozzle clog." +msgstr "" +"Температура слоя превышает температуру стеклования нити. Пожалуйста\n" +"открывайте переднюю дверцу принтера перед печатью, чтобы избежать засорения " +"сопла." + +msgid "" +"The nozzle hardness required by the filament is higher than the default " +"nozzle hardness of the printer. Please replace the hardened nozzle or " +"filament, otherwise, the nozzle will be attrited or damaged." +msgstr "" +"Твердость сопла, необходимая для нити накала, выше, чем по умолчанию.\n" +"жесткость сопла принтера. Пожалуйста, замените закаленное сопло или\n" +"нити накаливания, в противном случае сопло будет изношено или повреждено." + +#, c-format, boost-format +msgid "Loading file: %s" +msgstr "Загрузка файла: %s" + +msgid "The 3mf is not from Bambu Lab, load geometry data only." +msgstr "3mf не от Bambu Lab, загружайте только данные геометрии." + +msgid "Load 3mf" +msgstr "Загрузить 3mf" + +msgid "The Config can not be loaded." +msgstr "Конфиг не загружается." + +msgid "The 3mf is generated by old Orca Slicer, load geometry data only." +msgstr "" +"3mf генерируется старым слайсером Orca, загружать только данные геометрии." + +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Found following keys " +"unrecognized:" +msgstr "" +"Версия 3mf %s новее, чем версия %s %s, найдены следующие ключи непризнанный:" + +msgid "You'd better upgrade your software.\n" +msgstr "Вам лучше обновить программное обеспечение.\n" + +msgid "Newer 3mf version" +msgstr "Новая версия 3mf" + +#, c-format, boost-format +msgid "" +"The 3mf's version %s is newer than %s's version %s, Suggest to upgrade your " +"software." +msgstr "" +"Версия 3mf %s новее, чем версия %s %s, предложите обновить программное " +"обеспечение." + +msgid "Invalid values found in the 3mf:" +msgstr "В 3mf найдены недопустимые значения:" + +msgid "Please correct them in the param tabs" +msgstr "Пожалуйста, исправьте их во вкладках параметров" + +msgid "The 3mf is not compatible, load geometry data only!" +msgstr "3mf не совместим, загружайте только данные геометрии!" + +msgid "Incompatible 3mf" +msgstr "Несовместимый 3mf" + +msgid "Name of components inside step file is not UTF8 format!" +msgstr "Имя компонентов внутри шагового файла не в формате UTF8!" + +msgid "The name may show garbage characters!" +msgstr "Имя может содержать мусорные символы!" + +#, boost-format +msgid "Failed loading file \"%1%\". An invalid configuration was found." +msgstr "" +"Не удалось загрузить файл \\%1%\\. Обнаружена недопустимая конфигурация." + +msgid "Objects with zero volume removed" +msgstr "Объекты с нулевым объемом удалены" + +msgid "The volume of the object is zero" +msgstr "Объем объекта равен нулю" + +#, c-format, boost-format +msgid "" +"The object from file %s is too small, and maybe in meters or inches.\n" +" Do you want to scale to millimeters?" +msgstr "" +"Объект из файла %s слишком мал, возможно, в метрах или дюймах.\n" +"Вы хотите масштабировать до миллиметров?" + +msgid "Object too small" +msgstr "Объект слишком мал" + +msgid "" +"This file contains several objects positioned at multiple heights.\n" +"Instead of considering them as multiple objects, should \n" +"the file be loaded as a single object having multiple parts?" +msgstr "" +"Этот файл содержит несколько объектов, расположенных на разных высотах.\n" +"Вместо того, чтобы рассматривать их как несколько объектов, следует \n" +"файл загружается как единый объект, состоящий из нескольких частей?" + +msgid "Multi-part object detected" +msgstr "Обнаружен объект, состоящий из нескольких частей" + +msgid "Load these files as a single object with multiple parts?\n" +msgstr "Загрузить эти файлы как единый объект с несколькими частями?\n" + +msgid "Object with multiple parts was detected" +msgstr "Обнаружен объект, состоящий из нескольких частей" + +msgid "The file does not contain any geometry data." +msgstr "Файл не содержит геометрических данных." + +msgid "" +"Your object appears to be too large, Do you want to scale it down to fit the " +"heat bed automatically?" +msgstr "" +"Ваш объект кажется слишком большим. Вы хотите уменьшить его, чтобы он " +"соответствовал размеру?\n" +"подогрев кровати автоматически?" + +msgid "Object too large" +msgstr "Объект слишком большой" + +msgid "Export STL file:" +msgstr "Экспорт файла STL:" + +msgid "Save file as:" +msgstr "Сохранить файл как:" + +msgid "Delete object which is a part of cut object" +msgstr "Удалить объект, являющийся частью вырезанного объекта" + +msgid "" +"You try to delete an object which is a part of a cut object.\n" +"This action will break a cut correspondence.\n" +"After that model consistency can't be guaranteed." +msgstr "" +"Вы пытаетесь удалить объект, являющийся частью вырезанного объекта.\n" +"Это действие разорвет обрезанную корреспонденцию.\n" +"После этого согласованность модели не может быть гарантирована." + +msgid "The selected object couldn't be split." +msgstr "Выбранный объект не может быть разделен." + +msgid "Another export job is running." +msgstr "Выполняется другое задание экспорта." + +msgid "Select a new file" +msgstr "Выберите новый файл" + +msgid "File for the replace wasn't selected" +msgstr "Не выбран файл для замены" + +msgid "Error during replace" +msgstr "Ошибка при замене" + +msgid "Please select a file" +msgstr "Пожалуйста, выберите файл" + +msgid "Slicing" +msgstr "Нарезка" + +msgid "There are warnings after slicing models:" +msgstr "Есть предупреждения после нарезки моделей:" + +msgid "warnings" +msgstr "предупреждения" + +msgid "Invalid data" +msgstr "Неверные данные" + +msgid "Slicing Canceled" +msgstr "Нарезка отменена" + +#, c-format, boost-format +msgid "Slicing Plate %d" +msgstr "Пластина для нарезки %d" + +msgid "Please resolve the slicing errors and publish again." +msgstr "Исправьте ошибки нарезки и опубликуйте снова." + +msgid "" +"Network Plug-in is not detected. Network related features are unavailable." +msgstr "Сетевой плагин не обнаружен. Функции, связанные с сетью, недоступны." + +msgid "" +"Preview only mode:\n" +"The loaded file contains gcode only, Can not enter the Prepare page" +msgstr "" +"Режим только предварительного просмотра:\n" +"Загруженный файл содержит только gcode, не удается войти на страницу " +"подготовки" + +msgid "You can keep the modified presets to the new project or discard them" +msgstr "" +"Вы можете сохранить измененные пресеты в новом проекте или отказаться от них" + +msgid "Creating a new project" +msgstr "Создание нового проекта" + +msgid "Load project" +msgstr "Загрузить проект" + +msgid "" +"Failed to save the project.\n" +"Please check whether the folder exists online or if other programs open the " +"project file." +msgstr "" +"Не удалось сохранить проект.\n" +"Пожалуйста, проверьте, существует ли папка в сети или другие программы " +"открывают ее файл проекта." + +msgid "Save project" +msgstr "Сохранить проект" + +msgid "Importing Model" +msgstr "Импорт модели" + +msgid "prepare 3mf file..." +msgstr "подготовить файл 3mf..." + +msgid "downloading project ..." +msgstr "скачиваю проект..." + +#, c-format, boost-format +msgid "Project downloaded %d%%" +msgstr "Проект загружен %d%%" + +msgid "The selected file" +msgstr "Выбранный файл" + +msgid "does not contain valid gcode." +msgstr "не содержит действительный gcode." + +msgid "Error occurs while loading G-code file" +msgstr "Ошибка при загрузке файла G-кода" + +msgid "Drop project file" +msgstr "Удалить файл проекта" + +msgid "Please select an action" +msgstr "Выберите действие" + +msgid "Open as project" +msgstr "Открыть как проект" + +msgid "Import geometry only" +msgstr "Импортировать только геометрию" + +msgid "Only one G-code file can be opened at the same time." +msgstr "Одновременно можно открыть только один файл G-кода." + +msgid "G-code loading" +msgstr "Загрузка G-кода" + +msgid "G-code files can not be loaded with models together!" +msgstr "Файлы G-кода нельзя загружать вместе с моделями!" + +msgid "Can not add models when in preview mode!" +msgstr "Невозможно добавить модели в режиме предварительного просмотра!" + +msgid "Add Models" +msgstr "Добавить модели" + +msgid "All objects will be removed, continue?" +msgstr "Все объекты будут удалены, продолжить?" + +msgid "The current project has unsaved changes, save it before continue?" +msgstr "" +"В текущем проекте есть несохраненные изменения, сохранить их, прежде чем " +"продолжить?" + +msgid "Remember my choice." +msgstr "Запомни мой выбор." + +msgid "Number of copies:" +msgstr "Количество копий:" + +msgid "Copies of the selected object" +msgstr "Копии выбранного объекта" + +msgid "Save G-code file as:" +msgstr "Сохраните файл G-кода как:" + +msgid "Save Sliced file as:" +msgstr "Сохранить нарезанный файл как:" + +#, c-format, boost-format +msgid "" +"The file %s has been sent to the printer's storage space and can be viewed " +"on the printer." +msgstr "" +"Файл %s отправлен в память принтера и доступен для просмотра на принтере." + +msgid "" +"Print By Object: \n" +"Suggest to use auto-arrange to avoid collisions when printing." +msgstr "" +"Печать по объекту: \n" +"Предложите использовать автоматическое расположение, чтобы избежать коллизий " +"при печати." + +msgid "Send G-code" +msgstr "Отправить G-код" + +msgid "Send to printer" +msgstr "Отправить на принтер" + +msgid "Custom supports and color painting were removed before repairing." +msgstr "Нестандартные опоры и цветная окраска были удалены перед ремонтом." + +msgid "Invalid number" +msgstr "Неправильный номер" + +msgid "Plate Settings" +msgstr "Параметры планшета" + +#, boost-format +msgid "Part name: %1%\n" +msgstr "Название части: %1%\n" + +#, boost-format +msgid "Object name: %1%\n" +msgstr "Имя объекта: %1%\n" + +#, boost-format +msgid "Size: %1% x %2% x %3% in\n" +msgstr "Размер: %1% x %2% x %3% in\n" + +#, boost-format +msgid "Size: %1% x %2% x %3% mm\n" +msgstr "Размер: %1% x %2% x %3% мм\n" + +#, boost-format +msgid "Volume: %1% in³\n" +msgstr "Объем: %1% in³\n" + +#, boost-format +msgid "Volume: %1% mm³\n" +msgstr "Объем: %1% мм³\n" + +#, boost-format +msgid "Triangles: %1%\n" +msgstr "Треугольники: %1%\n" + +msgid "Tips:" +msgstr "Советы:" + +msgid "" +"\"Fix Model\" feature is currently only on Windows. Please repair the model " +"on Orca Slicer(windows) or CAD softwares." +msgstr "" +"Функция \\Fix Model\\ в настоящее время доступна только в Windows. " +"Пожалуйста, отремонтируйте модель \n" +"на Orca Slicer (Windows) или в программах САПР." + +#, c-format, boost-format +msgid "" +"Plate% d: %s is not suggested to be used to print filament %s(%s). If you " +"still want to do this printing, please set this filament's bed temperature " +"to non zero." +msgstr "" +"Пластина% d: %s не рекомендуется использовать для печати на нити %s(%s). " +"Если вы все еще хотите сделать эту печать, пожалуйста, установите " +"температуру слоя этой нити к ненулевому." + +msgid "Switching the language requires application restart.\n" +msgstr "Для переключения языка требуется перезапуск приложения.\n" + +msgid "Do you want to continue?" +msgstr "Вы хотите продолжать?" + +msgid "Language selection" +msgstr "Выбор языка" + +msgid "Switching application language while some presets are modified." +msgstr "Переключение языка приложения при изменении некоторых пресетов." + +msgid "Changing application language" +msgstr "Изменение языка приложения" + +msgid "Changing the region will log out your account.\n" +msgstr "Изменение региона приведет к выходу из вашей учетной записи.\n" + +msgid "Region selection" +msgstr "Выбор региона" + +msgid "Second" +msgstr "Секунд" + +msgid "Browse" +msgstr "Просматривать" + +msgid "Choose Download Directory" +msgstr "Выберите каталог загрузки" + +msgid "General Settings" +msgstr "Общие настройки" + +msgid "Asia-Pacific" +msgstr "Азиатско-Тихоокеанский регион" + +msgid "China" +msgstr "Китай" + +msgid "Europe" +msgstr "Европа" + +msgid "North America" +msgstr "Северная Америка" + +msgid "Others" +msgstr "Другие" + +msgid "Login Region" +msgstr "Регион входа" + +msgid "Metric" +msgstr "Метрика" + +msgid "Imperial" +msgstr "Имперский" + +msgid "Units" +msgstr "Единицы" + +msgid "Zoom to mouse position" +msgstr "Приблизить к положению мыши" + +msgid "" +"Zoom in towards the mouse pointer's position in the 3D view, rather than the " +"2D window center." +msgstr "" +"Приблизьтесь к положению указателя мыши в 3D-виде, а не к центру 2D окна." + +msgid "Show \"Tip of the day\" notification after start" +msgstr "Показывать уведомление \"Совет дня\" после запуска" + +msgid "If enabled, useful hints are displayed at startup." +msgstr "Если включено, при запуске отображаются полезные подсказки." + +msgid "Show g-code window" +msgstr "Показать окно g-кода" + +msgid "If enabled, g-code window will be displayed." +msgstr "Если включено, будет отображаться окно g-кода." + +msgid "Presets" +msgstr "Пресеты" + +msgid "Auto sync user presets(Printer/Filament/Process)" +msgstr "" +"Автоматическая синхронизация пользовательских пресетов (принтер/филамент/" +"процесс)" + +msgid "User Sync" +msgstr "Синхронизация пользователей" + +msgid "Update built-in Presets automatically." +msgstr "Обновляйте встроенные пресеты автоматически." + +msgid "System Sync" +msgstr "Синхронизация системы" + +msgid "Clear my choice on the unsaved presets." +msgstr "Очистите мой выбор от несохраненных пресетов." + +msgid "Associate files to OrcaSlicer" +msgstr "Асоциировать файлы с OrcaSlicer" + +msgid "Associate .3mf files to OrcaSlicer" +msgstr "Асоциировать файлы .3mf с OrcaSlicer" + +msgid "If enabled, sets OrcaSlicer as default application to open .3mf files" +msgstr "" +"Если включено, устанавливает OrcaSlicer в качестве приложения по умолчанию " +"для открытия файлов .3mf" + +msgid "Associate .stl files to OrcaSlicer" +msgstr "Асоциировать файлы .stl с OrcaSlicer" + +msgid "If enabled, sets OrcaSlicer as default application to open .stl files" +msgstr "" +"Если включено, устанавливает OrcaSlicer в качестве приложения по умолчанию " +"для открытия файлов .stl" + +msgid "Associate .step/.stp files to OrcaSlicer" +msgstr "Асоциировать файлы .step/.stp с OrcaSlicer" + +msgid "If enabled, sets OrcaSlicer as default application to open .step files" +msgstr "" +"Если включено, устанавливает OrcaSlicer в качестве приложения по умолчанию " +"для открытия файлов .step" + +msgid "Maximum recent projects" +msgstr "Максимум последних проектов" + +msgid "Maximum count of recent projects" +msgstr "Максимальное количество последних проектов" + +msgid "Clear my choice on the unsaved projects." +msgstr "Очистить мой выбор для несохраненных проектов." + +msgid "Auto-Backup" +msgstr "Автобэкап" + +msgid "" +"Backup your project periodically for restoring from the occasional crash." +msgstr "" +"Периодически делайте резервную копию вашего проекта для восстановления после " +"случайного сбоя." + +msgid "every" +msgstr "каждые" + +msgid "The peroid of backup in seconds." +msgstr "Период резервного копирования в секундах." + +msgid "Downloads" +msgstr "Загрузки" + +msgid "Dark Mode" +msgstr "Тёмный режим" + +msgid "Enable Dark mode" +msgstr "Включить тёмный режим" + +msgid "Home page and daily tips" +msgstr "Главная страница и ежедневные советы" + +msgid "Show home page on startup" +msgstr "Показывать домашнюю страницу при запуске" + +msgid "Sync settings" +msgstr "Настройки синхронизации" + +msgid "User sync" +msgstr "Пользовательская синхронизация" + +msgid "Preset sync" +msgstr "Синхронизация пресетов" + +msgid "Preferences sync" +msgstr "Синхронизация настроек" + +msgid "View control settings" +msgstr "Просмотр настроек управления" + +msgid "Rotate of view" +msgstr "Повернуть вид" + +msgid "Move of view" +msgstr "Перемещение вида" + +msgid "Zoom of view" +msgstr "Масштаб вида" + +msgid "Other" +msgstr "Другой" + +msgid "Mouse wheel reverses when zooming" +msgstr "Колесико мыши реверсирует при масштабировании" + +msgid "Develop mode" +msgstr "Режим разработки" + +msgid "Dump video" +msgstr "Дамп видео" + +msgid "Log Level" +msgstr "Журнал уровня" + +msgid "fatal" +msgstr "фатальный" + +msgid "error" +msgstr "ошибка" + +msgid "warning" +msgstr "предупреждение" + +msgid "info" +msgstr "инфо" + +msgid "debug" +msgstr "отладка" + +msgid "trace" +msgstr "след" + +msgid "Host Setting" +msgstr "Настройка хоста" + +msgid "DEV host: api-dev.bambu-lab.com/v1" +msgstr "Хост разработчика: api-dev.bambu-lab.com/v1" + +msgid "QA host: api-qa.bambu-lab.com/v1" +msgstr "Хост QA: api-qa.bambu-lab.com/v1" + +msgid "PRE host: api-pre.bambu-lab.com/v1" +msgstr "Хост PRE: api-pre.bambu-lab.com/v1" + +msgid "Product host" +msgstr "Хост продукта" + +msgid "debug save button" +msgstr "кнопка сохранения отладки" + +msgid "save debug settings" +msgstr "сохранить настройки отладки" + +msgid "DEBUG settings have saved successfully!" +msgstr "Настройки Отладки успешно сохранены!" + +msgid "Switch cloud environment, Please login again!" +msgstr "Переключите облачную среду, пожалуйста, войдите снова!" + +msgid "System presets" +msgstr "Системные пресеты" + +msgid "User presets" +msgstr "Пользовательские пресеты" + +msgid "Incompatible presets" +msgstr "Несовместимые пресеты" + +msgid "AMS filaments" +msgstr "AMS филамент" + +msgid "Click to pick filament color" +msgstr "Нажмите, чтобы выбрать цвет филамента" + +msgid "Please choose the filament colour" +msgstr "Пожалуйста, выберите цвет филамента" + +msgid "Add/Remove presets" +msgstr "Добавить/удалить пресеты" + +msgid "Edit preset" +msgstr "Изменить предустановку" + +msgid "Project-inside presets" +msgstr "Внутренние пресеты проекта" + +msgid "Add/Remove filaments" +msgstr "Добавить/удалить филаменты" + +msgid "Add/Remove materials" +msgstr "Добавить/удалить материалы" + +msgid "Add/Remove printers" +msgstr "Добавить/удалить принтеры" + +msgid "Same as Global Print Sequence" +msgstr "То же, что и глобальная последовательность печати" + +msgid "Print sequence" +msgstr "Последовательность печати" + +msgid "Plate name" +msgstr "Название пластины" + +msgid "Same as Global Bed Type" +msgstr "То же, что и глобальный тип кровати" + +msgid "Cool Plate" +msgstr "Холодная пластина" + +msgid "Engineering Plate" +msgstr "Инженерная пластина" + +msgid "High Temp Plate" +msgstr "Высокотемпературная пластина" + +msgid "Textured PEI Plate" +msgstr "Текстурированная пластина PEI" + +msgid "By Layer" +msgstr "По слою" + +msgid "By Object" +msgstr "По объекту" + +msgid "Accept" +msgstr "Принимать" + +msgid "Log Out" +msgstr "Выйти" + +msgid "Slice all plate to obtain time and filament estimation" +msgstr "Разрежьте всю пластину, чтобы получить оценку времени и филамента" + +msgid "Packing project data into 3mf file" +msgstr "Упаковка данных проекта в файл 3mf" + +msgid "Uploading 3mf" +msgstr "Загрузка 3mf" + +msgid "Jump to model publish web page" +msgstr "Перейти на веб-страницу публикации модели" + +msgid "Note: The preparation may takes several minutes. Please be patiant." +msgstr "" +"Примечание. Подготовка может занять несколько минут. Пожалуйста, будьте " +"терпеливы." + +msgid "Publish" +msgstr "Публиковать" + +msgid "Publish was cancelled" +msgstr "Публикация отменена" + +msgid "Slicing Plate 1" +msgstr "Пластина для нарезки 1" + +msgid "Packing data to 3mf" +msgstr "Упаковка данных в 3mf" + +msgid "Jump to webpage" +msgstr "Перейти на веб-страницу" + +#, c-format, boost-format +msgid "Save %s as" +msgstr "Сохранить %s как" + +msgid "User Preset" +msgstr "Пользовательская предустановка" + +msgid "Project Inside Preset" +msgstr "Предустановка проекта внутри" + +msgid "Name is invalid;" +msgstr "Имя недействительно;" + +msgid "illegal characters:" +msgstr "недопустимые символы:" + +msgid "illegal suffix:" +msgstr "недопустимый суффикс:" + +msgid "Name is unavailable." +msgstr "Имя недоступно." + +msgid "Overwrite a system profile is not allowed" +msgstr "Перезапись системного профиля запрещена" + +#, boost-format +msgid "Preset \"%1%\" already exists." +msgstr "Предустановка \\%1%\\ уже существует." + +#, boost-format +msgid "Preset \"%1%\" already exists and is incompatible with current printer." +msgstr "" +"Предустановка \\%1%\\ уже существует и несовместима с текущим принтером." + +msgid "Please note that saving action will replace this preset" +msgstr "Обратите внимание, что действие сохранения заменит этот пресет" + +msgid "The name is not allowed to be empty." +msgstr "Имя не может быть пустым." + +msgid "The name is not allowed to start with space character." +msgstr "Имя не может начинаться с пробела." + +msgid "The name is not allowed to end with space character." +msgstr "Имя не может заканчиваться пробелом." + +msgid "The name cannot be the same as a preset alias name." +msgstr "Имя не может совпадать с предустановленным псевдонимом." + +msgid "Save preset" +msgstr "Сохранить пресет" + +msgctxt "PresetName" +msgid "Copy" +msgstr "Копировать" + +#, boost-format +msgid "Printer \"%1%\" is selected with preset \"%2%\"" +msgstr "Принтер \"%1%\" выбран с предустановкой \"%2%\"" + +#, boost-format +msgid "Please choose an action with \"%1%\" preset after saving." +msgstr "После сохранения выберите действие с предустановкой \"%1%\"." + +#, boost-format +msgid "For \"%1%\", change \"%2%\" to \"%3%\" " +msgstr "Для \"%1%\" измените \"%2%\" на \"%3%\" " + +#, boost-format +msgid "For \"%1%\", add \"%2%\" as a new preset" +msgstr "Для \"%1%\" добавьте \"%2%\" в качестве нового пресета" + +#, boost-format +msgid "Simply switch to \"%1%\"" +msgstr "Просто переключитесь на \"%1%\"" + +msgid "Online" +msgstr "В сети" + +msgid "Offline" +msgstr "Не в сети" + +msgid "(LAN)" +msgstr "(LAN)" + +msgid "My Device" +msgstr "Моё устройство" + +msgid "Other Device" +msgstr "Другие устройства" + +msgid "Input access code" +msgstr "Введите код доступа" + +msgid "Can't find my devices?" +msgstr "Не могу найти свои устройства?" + +msgid "Log out successful." +msgstr "Выйти, успешно." + +msgid "Busy" +msgstr "Занятый" + +msgid "Bambu Cool Plate" +msgstr "Холодный стол" + +msgid "Bamabu Engineering Plate" +msgstr "Инженерный стол" + +msgid "Bamabu High Temperature Plate" +msgstr "Высокотемпературная пластина" + +msgid "Send print job to" +msgstr "Отправить задание на печать на" + +msgid "Refresh" +msgstr "Обновить" + +msgid "Bed Leveling" +msgstr "Выравнивание кровати" + +msgid "Flow Calibration" +msgstr "Калибровка потока" + +msgid "send completed" +msgstr "отправка завершена" + +msgid "No login account, only printers in LAN mode are displayed" +msgstr "" +"Нет учетной записи для входа, отображаются только принтеры в режиме LAN" + +msgid "Connecting to server" +msgstr "Подключение к серверу" + +msgid "Synchronizing device information" +msgstr "Синхронизация информации об устройстве" + +msgid "Synchronizing device information time out" +msgstr "Тайм-аут синхронизации информации об устройстве" + +msgid "Cannot send the print job when the printer is updating firmware" +msgstr "" +"Невозможно отправить задание на печать, когда принтер обновляет " +"микропрограмму" + +msgid "" +"The printer is executing instructions. Please restart printing after it ends" +msgstr "" +"Принтер выполняет инструкции. Пожалуйста, перезапустите печать после ее " +"окончания" + +msgid "The printer is busy on other print job" +msgstr "Принтер занят другим заданием на печать" + +#, c-format, boost-format +msgid "" +"Filament %s exceeds the number of AMS slots. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Филамент %s превышает количество слотов AMS. Пожалуйста, обновите прошивку " +"принтера для поддержки назначения слотов AMS." + +msgid "" +"Filament exceeds the number of AMS slots. Please update the printer firmware " +"to support AMS slot assignment." +msgstr "" +"Филамент превышает количество слотов AMS. Пожалуйста, обновите прошивку " +"принтера\n" +"для поддержки назначения слотов AMS." + +msgid "" +"Filaments to AMS slots mappings have been established. You can click a " +"filament above to change its mapping AMS slot" +msgstr "" +"Были установлены сопоставления нитей с слотами AMS. Вы можете щелкнуть\n" +"филамент выше, чтобы изменить ее слот сопоставления AMS" + +msgid "" +"Please click each filament above to specify its mapping AMS slot before " +"sending the print job" +msgstr "" +"Щелкните каждый филамент выше, чтобы указать его слот сопоставления AMS, " +"прежде чем отправить задания на печать" + +#, c-format, boost-format +msgid "" +"Filament %s does not match the filament in AMS slot %s. Please update the " +"printer firmware to support AMS slot assignment." +msgstr "" +"Филамент %s не соответствует филаменту в слоте AMS %s. Пожалуйста, обновите " +"прошивку принтера для поддержки назначения слотов AMS." + +msgid "" +"Filament does not match the filament in AMS slot. Please update the printer " +"firmware to support AMS slot assignment." +msgstr "" +"Филамент не соответствует филаменту в слоте AMS. Пожалуйста, обновите " +"прошивку принтера для поддержки назначения слотов AMS." + +msgid "" +"The printer firmware only supports sequential mapping of filament => AMS " +"slot." +msgstr "" +"Прошивка принтера поддерживает только последовательное сопоставление " +"филамента => AMS слот." + +msgid "An SD card needs to be inserted before printing." +msgstr "Перед печатью необходимо вставить SD-карту." + +msgid "An SD card needs to be inserted to record timelapse." +msgstr "SD-карта должна быть вставлена ​​для записи таймлапса." + +msgid "" +"Cannot send the print job to a printer whose firmware is required to get " +"updated." +msgstr "" +"Невозможно отправить задание печати на принтер, прошивка которого должна " +"быть обновлена." + +msgid "Cannot send the print job for empty plate" +msgstr "Не удается отправить задание на печать для пустой формы" + +msgid "This printer does not support printing all plates" +msgstr "Этот принтер не поддерживает печать всех форм" + +msgid "Errors" +msgstr "Ошибки" + +msgid "Please check the following:" +msgstr "Пожалуйста, проверьте следующее:" + +msgid "" +"The printer type selected when generating G-Code is not consistent with the " +"currently selected printer. It is recommended that you use the same printer " +"type for slicing." +msgstr "" +"Тип принтера, выбранный при создании G-кода, не соответствует текущему " +"выбранному принтеру. Рекомендуется использовать тот же тип принтера для " +"нарезки." + +#, c-format, boost-format +msgid "%s is not supported by AMS." +msgstr "%s не поддерживается AMS." + +msgid "" +"There are some unknown filaments in the AMS mappings. Please check whether " +"they are the required filaments. If they are okay, press \"Confirm\" to " +"start printing." +msgstr "" +"В сопоставлении AMS есть несколько неизвестных филаментов. Пожалуйста, " +"проверьте, они являются необходимыми нитями. Если они в порядке, нажмите " +"\"Подтвердить\", чтобы начать печать." + +msgid "" +"Please click the confirm button if you still want to proceed with printing." +msgstr "" +"Нажмите кнопку подтверждения, если вы все еще хотите продолжить печать." + +msgid "Preparing print job" +msgstr "Подготовка задания на печать" + +msgid "Modifying the device name" +msgstr "Изменение имени устройства" + +msgid "Send to Printer SD card" +msgstr "Отправить на SD-карту принтера" + +msgid "Cannot send the print task when the upgrade is in progress" +msgstr "Не удается отправить задание на печать во время обновления" + +msgid "An SD card needs to be inserted before send to printer SD card." +msgstr "Перед отправкой на SD-карту принтера необходимо вставить SD-карту." + +msgid "The printer is required to be in the same LAN as Orca Slicer." +msgstr "Принтер должен находиться в той же локальной сети, что и Orca Slicer." + +msgid "The printer does not support sending to printer SD card." +msgstr "Принтер не поддерживает отправку на SD-карту принтера." + +msgid "Log in printer" +msgstr "Вход в принтер" + +msgid "Would you like to log in this printer with current account?" +msgstr "Вы хотите войти в этот принтер с текущей учетной записью?" + +msgid "Log in successful." +msgstr "Авторизация успешна." + +msgid "Log out printer" +msgstr "Выйти из принтера" + +msgid "Would you like to log out the printer?" +msgstr "Хотите выйти из принтера?" + +msgid "Please log in first." +msgstr "Пожалуйста, войдите сначала." + +msgid "There was a problem connecting to the printer. Please try again." +msgstr "" +"Возникла проблема с подключением к принтеру. Пожалуйста, попробуйте еще раз." + +msgid "Failed to log out." +msgstr "Не удалось выйти." + +#. TRN "Save current Settings" +#, c-format, boost-format +msgid "Save current %s" +msgstr "Сохранить текущий %s" + +msgid "Delete this preset" +msgstr "Удалить этот пресет" + +msgid "Search in preset" +msgstr "Поиск в пресете" + +msgid "Click to reset all settings to the last saved preset." +msgstr "" +"Нажмите, чтобы сбросить все настройки до последней сохраненной предустановки." + +msgid "" +"Prime tower is required for smooth timeplase. There may be flaws on the " +"model without prime tower. Are you sure you want to disable prime tower?" +msgstr "" +"Prime Tower требуется для плавного таймлапса. Могут быть недостатки в модели " +"без главной башни. Вы уверены, что хотите отключить основную башню?" + +msgid "" +"Prime tower is required for smooth timelapse. There may be flaws on the " +"model without prime tower. Do you want to enable prime tower?" +msgstr "" +"Для плавного таймлапса требуется Prime Tower. Могут быть недостатки в модели " +"без главной башни. Вы хотите включить главную башню?" + +msgid "" +"We have added an experimental style \"Tree Slim\" that features smaller " +"support volume but weaker strength.\n" +"We recommend using it with: 0 interface layers, 0 top distance, 2 walls." +msgstr "" +"Мы добавили экспериментальный стиль \"Tree Slim\", который отличается " +"меньшим размером, но слабым.\n" +"Мы рекомендуем использовать его с: 0 интерфейсных слоев, 0 верхнего " +"расстояния, 2 периметра." + +msgid "" +"Change these settings automatically? \n" +"Yes - Change these settings automatically\n" +"No - Do not change these settings for me" +msgstr "" +"Изменить эти настройки автоматически? \n" +"Да - Изменить эти настройки автоматически\n" +"Нет - Не изменять эти настройки для меня" + +msgid "" +"For \"Tree Strong\" and \"Tree Hybrid\" styles, we recommend the following " +"settings: at least 2 interface layers, at least 0.1mm top z distance or " +"using support materials on interface." +msgstr "" +"Для стилей \"Tree Strong\" и \"Tree Hybrid\" мы рекомендуем следующее " +"параметры: не менее 2 интерфейсных слоев, не менее 0,1 мм расстояние между " +"вершинами z или использование вспомогательных материалов по интерфейсу." + +msgid "" +"When using support material for the support interface, We recommend the " +"following settings:\n" +"0 top z distance, 0 interface spacing, concentric pattern and disable " +"independent support layer height" +msgstr "" +"При использовании вспомогательного материала для печати поддержки " +"рекомендуется \n" +"следующие настройки:\n" +"0 расстояние между вершинами z, 0 расстояние между поддержкой, " +"концентрический рисунок и отключение высота независимого опорного слоя" + +msgid "" +"When recording timelapse without toolhead, it is recommended to add a " +"\"Timelapse Wipe Tower\" \n" +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." +msgstr "" +"При записи таймлапса без инструментальной головки рекомендуется добавить " +"\"Timelapse Wipe Tower\"\n" +"щелкните правой кнопкой мыши на пустой позиции монтажной плиты и выберите " +"\"Добавить Примитив\"->\"Timelapse Wipe Tower\"." + +msgid "Line width" +msgstr "Ширина линии" + +msgid "Seam" +msgstr "Шов" + +msgid "Precision" +msgstr "Точность" + +msgid "Wall generator" +msgstr "Генерация периметров" + +msgid "Walls" +msgstr "Периметр" + +msgid "Top/bottom shells" +msgstr "Верхняя/нижняя оболочки" + +msgid "Initial layer speed" +msgstr "Скорость первого слоя" + +msgid "Other layers speed" +msgstr "Скорость других слоев" + +msgid "Overhang speed" +msgstr "Скорость свеса" + +msgid "" +"This is the speed for various overhang degrees. Overhang degrees are " +"expressed as a percentage of line width. 0 speed means no slowing down for " +"the overhang degree range and wall speed is used" +msgstr "" +"Это скорость для различных градусов свеса. Степени свеса выражаются в " +"процентах от ширины линии. 0 скорость означает отсутствие замедления для " +"диапазона степеней свеса и используется скорость печати периметров" + +msgid "Travel speed" +msgstr "Скорость перемещения" + +msgid "Acceleration" +msgstr "Ускорение" + +msgid "Jerk(XY)" +msgstr "Рывок (XY)" + +msgid "Raft" +msgstr "Подложка" + +msgid "Support filament" +msgstr "Филамент для поддержек" + +msgid "Prime tower" +msgstr "Башня Очистки" + +msgid "Special mode" +msgstr "Специальный режим" + +msgid "G-code output" +msgstr "Выходной G-code" + +msgid "Post-processing Scripts" +msgstr "Сценарии постобработки" + +msgid "Frequent" +msgstr "Частый" + +#, c-format, boost-format +msgid "" +"Following line %s contains reserved keywords.\n" +"Please remove it, or will beat G-code visualization and printing time " +"estimation." +msgid_plural "" +"Following lines %s contain reserved keywords.\n" +"Please remove them, or will beat G-code visualization and printing time " +"estimation." +msgstr[0] "" +"Следующая строка %s содержит зарезервированные ключевые слова.\n" +"Удалите его или выполните визуализацию G-кода и оценку времени печати." +msgstr[1] "" +"Следующие строки %s содержат зарезервированные ключевые слова.\n" +"Удалите их или выполните визуализацию G-кода и оценку времени печати." +msgstr[2] "" +"Следующие строки %s содержат зарезервированные ключевые слова.\n" +"Удалите их или выполните визуализацию G-кода и оценку времени печати." + +msgid "Reserved keywords found" +msgstr "Найдены зарезервированные ключевые слова" + +msgid "Setting Overrides" +msgstr "Настройка переопределений" + +msgid "Retraction" +msgstr "Втягивание" + +msgid "Basic information" +msgstr "Базовая информация" + +msgid "Recommended nozzle temperature" +msgstr "Рекомендуемая температура сопла" + +msgid "Recommended nozzle temperature range of this filament. 0 means no set" +msgstr "" +"Рекомендуемый диапазон температур сопла для данного филамента. 0 означает " +"отсутствие установки" + +msgid "Recommended temperature range" +msgstr "Рекомендуемый диапазон температур" + +msgid "Print temperature" +msgstr "Температура печати" + +msgid "Chamber temperature" +msgstr "Температура в камере" + +msgid "Nozzle" +msgstr "Сопло" + +msgid "Nozzle temperature when printing" +msgstr "Температура сопла при печати" + +msgid "Cool plate" +msgstr "Холодный стол" + +msgid "" +"Bed temperature when cool plate is installed. Value 0 means the filament " +"does not support to print on the Cool Plate" +msgstr "" +"Температура слоя при установленной охлаждающей пластине. Значение 0 " +"означает, что филамент\n" +"не поддерживает печать на Холодном столе" + +msgid "Engineering plate" +msgstr "Инженерный стол" + +msgid "" +"Bed temperature when engineering plate is installed. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Температура стола при установленной инженерной плите. Значение 0 означает \n" +"филамент не поддерживает печать на инженерной пластине" + +msgid "" +"Bed temperature when high temperature plate is installed. Value 0 means the " +"filament does not support to print on the High Temp Plate" +msgstr "" +"Температура стола, когда установлен высокотемпературный стол. Значение 0 " +"означает филамент не поддерживает печать на высокотемпературном столе" + +msgid "" +"Bed temperature when Textured PEI Plate is installed. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура слоя при установке плиты Textured PEI Plate. Значение 0 означает " +"филамент не поддерживает печать на текстурированной пластине PEI" + +msgid "Volumetric speed limitation" +msgstr "Объемное ограничение скорости" + +msgid "Cooling" +msgstr "Охлаждение" + +msgid "Cooling for specific layer" +msgstr "Охлаждение для конкретного слоя" + +msgid "Part cooling fan" +msgstr "Вентилятор охлаждения деталей" + +msgid "Min fan speed threshold" +msgstr "Порог минимальной скорости вентилятора" + +msgid "" +"Part cooling fan speed will start to run at min speed when the estimated " +"layer time is no longer than the layer time in setting. When layer time is " +"shorter than threshold, fan speed is interpolated between the minimum and " +"maximum fan speed according to layer printing time" +msgstr "" +"Скорость вентилятора охлаждения деталей начнет работать на минимальной " +"скорости, когда расчетное время слоя не больше, чем время слоя при " +"настройке. Когда время слоя меньше порогового значения, скорость вентилятора " +"интерполируется между минимальным и максимальная скорость вращения " +"вентилятора в зависимости от времени печати слоя" + +msgid "Max fan speed threshold" +msgstr "Порог максимальной скорости вентилятора" + +msgid "" +"Part cooling fan speed will be max when the estimated layer time is shorter " +"than the setting value" +msgstr "" +"Скорость вентилятора охлаждения детали будет максимальной, если расчетное " +"время слоя меньше чем заданное значение" + +msgid "Auxiliary part cooling fan" +msgstr "Вентилятор охлаждения вспомогательных деталей" + +msgid "Filament start G-code" +msgstr "G-код начала Филамента" + +msgid "Filament end G-code" +msgstr "G-код конца Филамента" + +msgid "Printable space" +msgstr "Место для печати" + +msgid "Cooling Fan" +msgstr "Охлаждающий вентилятор" + +msgid "Fan speed-up time" +msgstr "Время разгона вентилятора" + +msgid "Extruder Clearance" +msgstr "Очистка экструдера" + +msgid "Accessory" +msgstr "Аксессуары" + +msgid "Machine gcode" +msgstr "G-code машины" + +msgid "Machine start G-code" +msgstr "Стартовый G-code" + +msgid "Machine end G-code" +msgstr "Конечный G-code" + +msgid "Before layer change G-code" +msgstr "G-code перед сменой слоя" + +msgid "Layer change G-code" +msgstr "G-code Смены слоя" + +msgid "Change filament G-code" +msgstr "G-code Смены филамента" + +msgid "Pause G-code" +msgstr "G-code Паузы" + +msgid "Template Custom G-code" +msgstr "Шаблон Пользовательский G-code" + +msgid "Motion ability" +msgstr "Способность движения" + +msgid "Normal" +msgstr "Нормальный" + +msgid "Speed limitation" +msgstr "Ограничение скорости" + +msgid "Acceleration limitation" +msgstr "Ограничение ускорения" + +msgid "Jerk limitation" +msgstr "Ограничение рывка" + +msgid "Layer height limits" +msgstr "Ограничения высоты слоя" + +msgid "Retraction when switching material" +msgstr "Втягивание при переключении материала" + +msgid "" +"The Wipe option is not available when using the Firmware Retraction mode.\n" +"\n" +"Shall I disable it in order to enable Firmware Retraction?" +msgstr "" +"Опция Wipe недоступна при использовании режима Firmware Retraction.\n" +"\n" +"Должен ли я отключить его, чтобы включить Firmware Retraction?" + +msgid "Firmware Retraction" +msgstr "Firmware Retraction" + +msgid "Detached" +msgstr "Отдельный" + +msgid "Following preset will be deleted too." +msgid_plural "Following presets will be deleted too." +msgstr[0] "Следующая предустановка также будет удалена." +msgstr[1] "Следующие стили также будут удалены." +msgstr[2] "Следующие стили также будут удалены." + +#, boost-format +msgid "Are you sure to %1% the selected preset?" +msgstr "Вы уверены, что %1% выбранной предустановки?" + +#. TRN Remove/Delete +#, boost-format +msgid "%1% Preset" +msgstr "%1% Предустановка" + +msgid "All" +msgstr "Всё" + +msgid "Set" +msgstr "Выбор" + +msgid "Click to reset current value and attach to the global value." +msgstr "" +"Нажмите, чтобы сбросить текущее значение и присоединить его к глобальному " +"значению." + +msgid "Click to drop current modify and reset to saved value." +msgstr "" +"Нажмите, чтобы отменить текущее изменение и вернуться к сохраненному " +"значению." + +msgid "Process Settings" +msgstr "Настройки процесса" + +msgid "Undef" +msgstr "Undef" + +msgid "Unsaved Changes" +msgstr "Несохраненные изменения" + +msgid "Discard or Keep changes" +msgstr "Отбросить или сохранить изменения" + +msgid "Old Value" +msgstr "Старое значение" + +msgid "New Value" +msgstr "Новое значение" + +msgid "Transfer" +msgstr "Передача" + +msgid "Don't save" +msgstr "Не сохранять" + +msgid "Discard" +msgstr "Не сохранять" + +msgid "Click the right mouse button to display the full text." +msgstr "Нажмите правую кнопку мыши, чтобы отобразить полный текст." + +msgid "All changes will not be saved" +msgstr "Все изменения не будут сохранены" + +msgid "All changes will be discarded." +msgstr "Все изменения будут отброшены." + +msgid "Save the selected options." +msgstr "Сохранить выбранные параметры." + +msgid "Keep the selected options." +msgstr "Сохраните выбранные параметры." + +msgid "Transfer the selected options to the newly selected preset." +msgstr "Перенесите выбранные параметры в новый выбранный пресет." + +#, boost-format +msgid "" +"Save the selected options to preset \n" +"\"%1%\"." +msgstr "" +"Сохраните выбранные параметры в предустановке \n" +"\"%1%\"." + +#, boost-format +msgid "" +"Transfer the selected options to the newly selected preset \n" +"\"%1%\"." +msgstr "" +"Перенесите выбранные опции в новую предустановку\n" +"\"%1%\"." + +#, boost-format +msgid "Preset \"%1%\" contains the following unsaved changes:" +msgstr "Предустановка \"%1%\" содержит следующие несохраненные изменения:" + +#, boost-format +msgid "" +"Preset \"%1%\" is not compatible with the new printer profile and it " +"contains the following unsaved changes:" +msgstr "" +"Предустановка \"%1%\" не совместима с новым профилем принтера, и она " +"содержит следующие несохраненные изменения:" + +#, boost-format +msgid "" +"Preset \"%1%\" is not compatible with the new process profile and it " +"contains the following unsaved changes:" +msgstr "" +"Предустановка \"%1%\" не совместима с новым профилем процесса, и она " +"содержит следующие несохраненные изменения:" + +#, boost-format +msgid "" +"You have changed some settings of preset \"%1%\". \n" +"Would you like to keep these changed settings (new value) after switching " +"preset?" +msgstr "" +"Вы изменили некоторые настройки предустановки \"%1%\". \n" +"Сохранить эти измененные настройки (новое значение) после переключения " +"набора параметров?" + +msgid "" +"You have changed some preset settings. \n" +"Would you like to keep these changed settings (new value) after switching " +"preset?" +msgstr "" +"Вы изменили некоторые настройки предустановки. \n" +"Сохранить эти измененные настройки (новое значение) после переключения " +"набора параметров?" + +msgid "Extruders count" +msgstr "Количество экструдеров" + +msgid "General" +msgstr "Общие" + +msgid "Capabilities" +msgstr "Возможности" + +msgid "Select presets to compare" +msgstr "Выберите предустановки для сравнения" + +msgid "Show all presets (including incompatible)" +msgstr "Показать все предустановки (включая несовместимые)" + +msgid "Add File" +msgstr "Добавить файл" + +msgid "Set as cover" +msgstr "Установить в качестве обложки" + +msgid "Cover" +msgstr "Обложка" + +#, boost-format +msgid "The name \"%1%\" already exists." +msgstr "Имя \"%1%\" уже существует." + +msgid "Basic Info" +msgstr "Основная информация" + +msgid "Pictures" +msgstr "Картинки" + +msgid "Bill of Materials" +msgstr "Ведомость материалов" + +msgid "Assembly Guide" +msgstr "Руководство по сборке" + +msgid "Author" +msgstr "Автор" + +msgid "Model Name" +msgstr "Название модели" + +#, c-format, boost-format +msgid "%s Update" +msgstr "%s Обновление" + +msgid "A new version is available" +msgstr "Доступна новая версия" + +msgid "Configuration update" +msgstr "Обновление конфигурации" + +msgid "A new configuration package available, Do you want to install it?" +msgstr "Доступен новый пакет конфигурации, хотите ли вы установить его?" + +msgid "Description:" +msgstr "Описание:" + +msgid "Configuration incompatible" +msgstr "Несовместимость конфигурации" + +msgid "the configuration package is incompatible with current application." +msgstr "пакет конфигурации несовместим с текущим приложением." + +#, c-format, boost-format +msgid "" +"The configuration package is incompatible with current application.\n" +"%s will update the configuration package, Otherwise it won't be able to start" +msgstr "" +"Пакет конфигурации несовместим с текущим приложением.\n" +"%s обновит пакет конфигурации, иначе он не сможет запуститься" + +#, c-format, boost-format +msgid "Exit %s" +msgstr "Выход %s" + +msgid "the Configuration package is incompatible with current APP." +msgstr "пакет конфигурации несовместим с текущим APP." + +msgid "Configuration updates" +msgstr "Обновления конфигурации" + +msgid "No updates available." +msgstr "Обновления отсутствуют." + +msgid "The configuration is up to date." +msgstr "Конфигурация актуальна." + +msgid "Auto-Calc" +msgstr "Автокалькулятор" + +msgid "Flushing volumes for filament change" +msgstr "Объемы промывки для смены Филамента" + +msgid "Multiplier" +msgstr "Множитель" + +msgid "Flushing volume (mm³) for each filament pair." +msgstr "Объем промывки (мм³) для каждой пары Филамента." + +#, c-format, boost-format +msgid "Suggestion: Flushing Volume in range [%d, %d]" +msgstr "Предложение: Объем промывки в диапазоне [%d, %d]" + +#, c-format, boost-format +msgid "The multiplier should be in range [%.2f, %.2f]." +msgstr "Множитель должен находиться в диапазоне [%.2f, %.2f]" + +msgid "unloaded" +msgstr "выгружено" + +msgid "loaded" +msgstr "загружено" + +msgid "Filament #" +msgstr "Филамент #" + +msgid "From" +msgstr "От" + +msgid "To" +msgstr "В" + +msgid "Login" +msgstr "Логин" + +msgid "The configuration package is changed in previous Config Guide" +msgstr "Пакет конфигурации изменен в предыдущем руководстве по конфигурации" + +msgid "Configuration package changed" +msgstr "Изменен пакет конфигурации" + +msgid "Toolbar" +msgstr "Панель инструментов" + +msgid "Objects list" +msgstr "Список объектов" + +msgid "Import geometry data from STL/STEP/3MF/OBJ/AMF files" +msgstr "Импорт геометрических данных из файлов STL/STEP/3MF/OBJ/AMF" + +msgid "⌘+Shift+G" +msgstr "⌘+Shift+G" + +msgid "Ctrl+Shift+G" +msgstr "Ctrl+Shift+G" + +msgid "Copy to clipboard" +msgstr "Копировать в буфер обмена" + +msgid "Paste from clipboard" +msgstr "Вставить из буфера обмена" + +msgid "Show/Hide 3Dconnexion devices settings dialog" +msgstr "Показать/скрыть диалог настроек устройств 3Dconnexion" + +msgid "Show keyboard shortcuts list" +msgstr "Показать список сочетаний клавиш" + +msgid "Global shortcuts" +msgstr "Глобальные ярлыки" + +msgid "Rotate View" +msgstr "Повернуть вид" + +msgid "Pan View" +msgstr "Панорамный вид" + +msgid "Mouse wheel" +msgstr "Колесико мыши" + +msgid "Zoom View" +msgstr "Просмотр масштаба" + +msgid "Shift+A" +msgstr "Shift+A" + +msgid "Shift+R" +msgstr "Shift+R" + +msgid "" +"Auto orientates selected objects or all objects.If there are selected " +"objects, it just orientates the selected ones.Otherwise, it will orientates " +"all objects in the current disk." +msgstr "" +"Автоматически ориентирует выбранные объекты или все объекты. Если выбраны " +"объекты, он просто ориентирует выбранные. В противном случае он будет " +"ориентировать все объекты на текущем диске." + +msgid "Shift+Tab" +msgstr "Shift+Tab" + +msgid "Collapse/Expand the sidebar" +msgstr "Свернуть/развернуть боковую панель" + +msgid "⌘+Any arrow" +msgstr "⌘+любая стрелка" + +msgid "Movement in camera space" +msgstr "Движение в пространстве камеры" + +msgid "⌥+Left mouse button" +msgstr "⌥+Левая кнопка мыши" + +msgid "Select a part" +msgstr "Выберите часть" + +msgid "⌘+Left mouse button" +msgstr "⌘+Левая кнопка мыши" + +msgid "Select multiple objects" +msgstr "Выбрать несколько объектов" + +msgid "Ctrl+Any arrow" +msgstr "Ctrl+любая стрелка" + +msgid "Alt+Left mouse button" +msgstr "Alt+Левая кнопка мыши" + +msgid "Ctrl+Left mouse button" +msgstr "Ctrl+Левая кнопка мыши" + +msgid "Shift+Left mouse button" +msgstr "Shift+Левая кнопка мыши" + +msgid "Select objects by rectangle" +msgstr "Выделить объекты по прямоугольнику" + +msgid "Arrow Up" +msgstr "Стрелка вверх" + +msgid "Move selection 10 mm in positive Y direction" +msgstr "Переместить выделение на 10 мм в положительном направлении Y" + +msgid "Arrow Down" +msgstr "Стрелка вниз" + +msgid "Move selection 10 mm in negative Y direction" +msgstr "Переместить выделение на 10 мм в отрицательном направлении Y" + +msgid "Arrow Left" +msgstr "Стрелка влево" + +msgid "Move selection 10 mm in negative X direction" +msgstr "Переместить выделение на 10 мм в отрицательном направлении по оси X" + +msgid "Arrow Right" +msgstr "Стрелка вправо" + +msgid "Move selection 10 mm in positive X direction" +msgstr "Переместить выделение на 10 мм в положительном направлении X" + +msgid "Shift+Any arrow" +msgstr "Shift+любая стрелка" + +msgid "Movement step set to 1 mm" +msgstr "Шаг перемещения установлен на 1 мм" + +msgid "Esc" +msgstr "Esc" + +msgid "keyboard 1-9: set filament for object/part" +msgstr "клавиатура 1-9: установить филамент для объекта/детали" + +msgid "Camera view - Default" +msgstr "Вид камеры — по умолчанию" + +msgid "Camera view - Top" +msgstr "Вид камеры — сверху" + +msgid "Camera view - Bottom" +msgstr "Вид камеры — снизу" + +msgid "Camera view - Front" +msgstr "Вид камеры — спереди" + +msgid "Camera view - Behind" +msgstr "Вид камеры - сзади" + +msgid "Camera Angle - Left side" +msgstr "Угол камеры — левая сторона" + +msgid "Camera Angle - Right side" +msgstr "Угол камеры - правая сторона" + +msgid "Select all objects" +msgstr "Выделить все объекты" + +msgid "Gizmo move" +msgstr "Движение Gizmo" + +msgid "Gizmo scale" +msgstr "Шкала Gizmo" + +msgid "Gizmo rotate" +msgstr "Поворот Gizmo" + +msgid "Gizmo cut" +msgstr "Вырез Gizmo" + +msgid "Gizmo Place face on bed" +msgstr "Gizmo Положите лицо на кровать" + +msgid "Gizmo SLA support points" +msgstr "Точки поддержки Gizmo SL" + +msgid "Gizmo FDM paint-on seam" +msgstr "Окрашиваемый шов Gizmo FDM" + +msgid "Swtich between Prepare/Prewview" +msgstr "Переключение между Подготовка/Предварительный просмотр" + +msgid "Plater" +msgstr "Тарелка" + +msgid "Move: press to snap by 1mm" +msgstr "Перемещение: нажмите для перемещения на 1 мм" + +msgid "⌘+Mouse wheel" +msgstr "⌘+Колесо мыши" + +msgid "Support/Color Painting: adjust pen radius" +msgstr "Поддержка/Цветовое рисование: регулировка радиуса пера" + +msgid "⌥+Mouse wheel" +msgstr "⌥+Колесо мыши" + +msgid "Support/Color Painting: adjust section position" +msgstr "Поддержка/цветная покраска: регулировка положения секций" + +msgid "Ctrl+Mouse wheel" +msgstr "Ctrl+Колесо мыши" + +msgid "Alt+Mouse wheel" +msgstr "Alt+колесо мыши" + +msgid "Gizmo" +msgstr "Gizmo" + +msgid "Set extruder number for the objects and parts" +msgstr "Установите номер экструдера для объектов и деталей" + +msgid "Delete objects, parts, modifiers " +msgstr "Удаление объектов, частей, модификаторов " + +msgid "Space" +msgstr "Пробел" + +msgid "Select the object/part and press space to change the name" +msgstr "Выберите объект/деталь и нажмите пробел, чтобы изменить название" + +msgid "Mouse click" +msgstr "Щелчок мыши" + +msgid "Select the object/part and mouse click to change the name" +msgstr "Выберите объект/деталь и щелкните мышью, чтобы изменить имя" + +msgid "Objects List" +msgstr "Список объектов" + +msgid "Vertical slider - Move active thumb Up" +msgstr "Вертикальный ползунок - перемещение активного большого пальца вверх" + +msgid "Vertical slider - Move active thumb Down" +msgstr "Вертикальный ползунок - Переместить активный палец вниз" + +msgid "Horizontal slider - Move active thumb Left" +msgstr "Горизонтальный ползунок - Переместить активный палец влево" + +msgid "Horizontal slider - Move active thumb Right" +msgstr "Горизонтальный ползунок - Переместить активный палец вправо" + +msgid "On/Off one layer mode of the vertical slider" +msgstr "Включение/выключение однослойного режима вертикального ползунка" + +msgid "On/Off g-code window" +msgstr "Включение/выключение окна g-кода" + +msgid "Move slider 5x faster" +msgstr "Перемещение ползунка в 5 раз быстрее" + +msgid "Shift+Mouse wheel" +msgstr "Shift+колесо мыши" + +msgid "Release Note" +msgstr "Примечание к выпуску" + +#, c-format, boost-format +msgid "version %s update information :" +msgstr "версия %s информация об обновлении :" + +msgid "Network plug-in update" +msgstr "Обновление сетевого плагина" + +msgid "" +"Click OK to update the Network plug-in when Orca Slicer launches next time." +msgstr "" +"Нажмите OK, чтобы обновить плагин Network при следующем запуске Orca Slicer." + +#, c-format, boost-format +msgid "A new Network plug-in(%s) available, Do you want to install it?" +msgstr "Доступен новый сетевой плагин (%s), хотите ли вы установить его?" + +msgid "New version of Orca Slicer" +msgstr "Новая версия программы Orca Slicer" + +msgid "Don't remind me of this version again" +msgstr "Не напоминайте мне больше об этой версии" + +msgid "Done" +msgstr "Выполнено" + +msgid "LAN Connection Failed (Sending print file)" +msgstr "LAN Connection Failed (Отправка файла печати)" + +msgid "" +"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgstr "" +"Шаг 1. Убедитесь, что Orca Slicer и ваш принтер находятся в одной локальной " +"сети." + +msgid "" +"Step 2, if the IP and Access Code below are different from the actual values " +"on your printer, please correct them." +msgstr "" +"Шаг 2, если указанные ниже IP и код доступа отличаются от фактических " +"значений \n" +"на вашем принтере, пожалуйста, исправьте их." + +msgid "IP" +msgstr "IP" + +msgid "Access Code" +msgstr "Код доступа" + +msgid "Where to find your printer's IP and Access Code?" +msgstr "Где найти IP-адрес и код доступа вашего принтера?" + +msgid "Error: IP or Access Code are not correct" +msgstr "Ошибка: IP или код доступа не верны" + +msgid "Model:" +msgstr "Модель:" + +msgid "Serial:" +msgstr "Серийный номер:" + +msgid "Version:" +msgstr "Версия:" + +msgid "Update firmware" +msgstr "Обновление микропрограммы" + +msgid "Printing" +msgstr "Печать" + +msgid "Idle" +msgstr "Холостой ход" + +msgid "Latest version" +msgstr "Последняя версия" + +msgid "Updating" +msgstr "Обновление" + +msgid "Updating failed" +msgstr "Обновление не удалось" + +msgid "Updating successful" +msgstr "Успешное обновление" + +msgid "" +"Are you sure you want to update? This will take about 10 minutes. Do not " +"turn off the power while the printer is updating." +msgstr "" +"Вы уверены, что хотите обновиться? Это займет около 10 минут. Не выключите " +"питание во время обновления принтера." + +msgid "" +"An important update was detected and needs to be run before printing can " +"continue. Do you want to update now? You can also update later from 'Upgrade " +"firmware'." +msgstr "" +"Было обнаружено важное обновление, которое необходимо запустить перед " +"печатью. Вы хотите обновить сейчас? Вы также можете обновить позже из " +"раздела \"Обновление прошивки\"." + +msgid "" +"The firmware version is abnormal. Repairing and updating are required before " +"printing. Do you want to update now? You can also update later on printer or " +"update next time starting the studio." +msgstr "" +"Версия микропрограммы не соответствует норме. Требуется ремонт и обновление, " +"прежде чем начать печатать. Вы хотите обновить сейчас? Вы также можете " +"обновить позже на принтере или обновление при следующем запуске студии." + +msgid "Extension Board" +msgstr "Плата расширения" + +msgid "Saving objects into the 3mf failed." +msgstr "Сохранение объектов в 3mf не удалось." + +msgid "Only Windows 10 is supported." +msgstr "Поддерживается только Windows 10." + +msgid "Failed to initialize the WinRT library." +msgstr "Не удалось инициализировать библиотеку WinRT." + +msgid "Exporting objects" +msgstr "Экспорт объектов" + +msgid "Failed loading objects." +msgstr "Не удалось загрузить объекты." + +msgid "Repairing object by Windows service" +msgstr "Восстановление объекта службой Windows" + +msgid "Repair failed." +msgstr "Ремонт не удался." + +msgid "Loading repaired objects" +msgstr "Загрузка отремонтированных объектов" + +msgid "Exporting 3mf file failed" +msgstr "Экспорт файла 3mf не удался" + +msgid "Import 3mf file failed" +msgstr "Импорт файла 3mf не удался" + +msgid "Repaired 3mf file does not contain any object" +msgstr "Отремонтированный файл 3mf не содержит ни одного объекта" + +msgid "Repaired 3mf file contains more than one object" +msgstr "Отремонтированный файл 3mf содержит более одного объекта" + +msgid "Repaired 3mf file does not contain any volume" +msgstr "Отремонтированный файл 3mf не содержит ни одного тома" + +msgid "Repaired 3mf file contains more than one volume" +msgstr "Отремонтированный файл 3mf содержит более одного тома" + +msgid "Repair finished" +msgstr "Ремонт завершен" + +msgid "Repair canceled" +msgstr "Ремонт отменен" + +#, boost-format +msgid "Copying of file %1% to %2% failed: %3%" +msgstr "Копирование файла %1% в %2% не удалось: %3%" + +msgid "Need to check the unsaved changes before configuration updates." +msgstr "" +"Необходимость проверки несохраненных изменений перед обновлением " +"конфигурации." + +msgid "Configuration package updated to " +msgstr "Пакет конфигурации обновлен до " + +msgid "Open G-code file:" +msgstr "Откройте файл G-кода:" + +msgid "" +"One object has empty initial layer and can't be printed. Please Cut the " +"bottom or enable supports." +msgstr "" +"Один объект имеет пустой начальный слой и не может быть напечатан. " +"Пожалуйста, обрежьте нижние или включающие опоры." + +#, boost-format +msgid "Object can't be printed for empty layer between %1% and %2%." +msgstr "Объект не может быть напечатан для пустого слоя между %1% и %2%." + +#, boost-format +msgid "Object: %1%" +msgstr "Объект: %1%" + +msgid "" +"Maybe parts of the object at these height are too thin, or the object has " +"faulty mesh" +msgstr "" +"Возможно, части объекта на этой высоте слишком тонкие, или объект имеет \n" +"неисправная сетка" + +msgid "No object can be printed. Maybe too small" +msgstr "Ни один объект не может быть напечатан. Возможно, слишком маленький" + +msgid "" +"Failed to generate gcode for invalid custom G-code.\n" +"\n" +msgstr "" +"Не удалось сгенерировать g-код для недопустимого пользовательского G-кода. \n" +"\n" + +msgid "Please check the custom G-code or use the default custom G-code." +msgstr "" +"Пожалуйста, проверьте пользовательский G-код или используйте " +"пользовательский G-код по умолчанию." + +#, boost-format +msgid "Generating G-code: layer %1%" +msgstr "Генерация G-кода: слой %1%" + +msgid "Inner wall" +msgstr "Периметры" + +msgid "Outer wall" +msgstr "Внешние периметры" + +msgid "Overhang wall" +msgstr "Наклонные периметры" + +msgid "Sparse infill" +msgstr "Заполнение" + +msgid "Internal solid infill" +msgstr "Внутреннее сплошное заполнение" + +msgid "Top surface" +msgstr "Верхний слой" + +msgid "Bottom surface" +msgstr "Нижняя поверхность" + +msgid "Bridge" +msgstr "Мост" + +msgid "Gap infill" +msgstr "Заполнение пробелов" + +msgid "Support interface" +msgstr "Интерфейс поддержки" + +msgid "Support transition" +msgstr "Gоддержка перехода" + +msgid "Multiple" +msgstr "Несколько" + +#, boost-format +msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " +msgstr "" +"Не удалось вычислить ширину линии %1%. Не удается получить значение \"%2%\" " + +msgid "undefined error" +msgstr "неопределенная ошибка" + +msgid "too many files" +msgstr "слишком много файлов" + +msgid "file too large" +msgstr "слишком большой файл" + +msgid "unsupported method" +msgstr "неподдерживаемый метод" + +msgid "unsupported encryption" +msgstr "неподдерживаемое шифрование" + +msgid "unsupported feature" +msgstr "неподдерживаемая функция" + +msgid "failed finding central directory" +msgstr "не удалось найти центральный каталог" + +msgid "not a ZIP archive" +msgstr "не ZIP-архив" + +msgid "invalid header or corrupted" +msgstr "недействительный или поврежденный заголовок" + +msgid "unsupported multidisk" +msgstr "неподдерживаемый мультидиск" + +msgid "decompression failed" +msgstr "декомпрессия не удалась" + +msgid "compression failed" +msgstr "сбой сжатия" + +msgid "unexpected decompressed size" +msgstr "неожиданный размер распакованного файла" + +msgid "CRC check failed" +msgstr "Проверка CRC не удалась" + +msgid "unsupported central directory size" +msgstr "неподдерживаемый размер центрального каталога" + +msgid "allocation failed" +msgstr "не удалось выделить" + +msgid "file open failed" +msgstr "не удалось открыть файл" + +msgid "file create failed" +msgstr "не удалось создать файл" + +msgid "file write failed" +msgstr "ошибка записи файла" + +msgid "file read failed" +msgstr "чтение файла не удалось" + +msgid "file close failed" +msgstr "закрытие файла не удалось" + +msgid "file seek failed" +msgstr "поиск файла не удался" + +msgid "file stat failed" +msgstr "сбой состояния файла" + +msgid "invalid parameter" +msgstr "недопустимый параметр" + +msgid "invalid filename" +msgstr "недопустимое имя файла" + +msgid "buffer too small" +msgstr "слишком маленький буфер" + +msgid "internal error" +msgstr "внутренняя ошибка" + +msgid "file not found" +msgstr "файл не найден" + +msgid "archive too large" +msgstr "слишком большой архив" + +msgid "validation failed" +msgstr "валидация не прошла" + +msgid "write callback failed" +msgstr "сбой обратного вызова записи" + +#, boost-format +msgid "" +"%1% is too close to exclusion area, there may be collisions when printing." +msgstr "" +"%1% находится слишком близко к запретной зоне, возможны столкновения при " +"печати." + +#, boost-format +msgid "%1% is too close to others, and collisions may be caused." +msgstr "" +"%1% находится слишком близко к другим, что может привести к столкновениям." + +#, boost-format +msgid "%1% is too tall, and collisions will be caused." +msgstr "%1% слишком высок, и могут возникнуть столкновения." + +msgid " is too close to others, there may be collisions when printing." +msgstr " находится слишком близко к другим, при печати возможны столкновения." + +msgid " is too close to exclusion area, there may be collisions when printing." +msgstr "" +" находится слишком близко к зоне отчуждения, при печати могут возникать " +"коллизии." + +msgid "Prime Tower" +msgstr "Prime Tower" + +msgid " is too close to others, and collisions may be caused.\n" +msgstr "" +" находится слишком близко к другим, что может привести к столкновению.\n" + +msgid " is too close to exclusion area, and collisions will be caused.\n" +msgstr "" +" находится слишком близко к зоне отчуждения, что приведет к столкновениям.\n" + +msgid "" +"Can not print multiple filaments which have large difference of temperature " +"together. Otherwise, the extruder and nozzle may be blocked or damaged " +"during printing" +msgstr "" +"Невозможно печатать несколькими филаментами с большой разницей температур " +"вместе. В противном случае экструдер и сопло могут быть заблокированы или " +"повреждены во время печати" + +msgid "No extrusions under current settings." +msgstr "Нет экструзий при текущих настройках." + +msgid "" +"Smooth mode of timelapse is not supported when \"by object\" sequence is " +"enabled." +msgstr "" +"Плавный режим таймлапса не поддерживается, когда последовательность \"по " +"объекту\" является включено." + +msgid "" +"Please select \"By object\" print sequence to print multiple objects in " +"spiral vase mode." +msgstr "" +"Пожалуйста, выберите последовательность печати \"По объекту\" для печати " +"нескольких объектов в режим спиральной вазы." + +msgid "" +"The spiral vase mode does not work when an object contains more than one " +"materials." +msgstr "" +"Режим спиральной вазы не работает, если объект содержит более одного " +"материала." + +msgid "The prime tower is not supported in \"By object\" print." +msgstr "При печати \"По объекту\" праймер не поддерживается." + +msgid "" +"The prime tower is not supported when adaptive layer height is on. It " +"requires that all objects have the same layer height." +msgstr "" +"Основная башня не поддерживается при включенной адаптивной высоте слоя. Для " +"этого требуется, чтобы все объекты имели одинаковую высоту слоя." + +msgid "The prime tower requires \"support gap\" to be multiple of layer height" +msgstr "Основная башня требует, чтобы «опорный зазор» был кратен высоте слоя" + +msgid "The prime tower requires that all objects have the same layer heights" +msgstr "Основная башня требует, чтобы все объекты имели одинаковую высоту слоя" + +msgid "" +"The prime tower requires that all objects are printed over the same number " +"of raft layers" +msgstr "" +"Основная башня требует, чтобы все объекты печатались на одинаковом " +"количестве слоев плота" + +msgid "" +"The prime tower requires that all objects are sliced with the same layer " +"heights." +msgstr "" +"Основная башня требует, чтобы все объекты были разрезаны с одинаковой " +"высотой слоя." + +msgid "" +"The prime tower is only supported if all objects have the same variable " +"layer height" +msgstr "" +"Основная башня поддерживается только в том случае, если все объекты имеют " +"одинаковую переменную высоту слоя" + +msgid "Too small line width" +msgstr "Слишком маленькая ширина линии" + +msgid "Too large line width" +msgstr "Слишком большая ширина линии" + +msgid "" +"The prime tower requires that support has the same layer height with object." +msgstr "" +"Прайм-тауэр требует, чтобы поддержка имела одинаковую высоту слоя с объектом." + +msgid "" +"Support enforcers are used but support is not enabled. Please enable support." +msgstr "" +"Средства обеспечения поддержки используются, но поддержка не включена. " +"Включите поддержку." + +msgid "Layer height cannot exceed nozzle diameter" +msgstr "Высота слоя не может превышать диаметр сопла" + +#, c-format, boost-format +msgid "Plate %d: %s does not support filament %s" +msgstr "Плита %d: %s не поддерживает филамент %s" + +msgid "Generating skirt & brim" +msgstr "Создание юбки и каймы" + +msgid "Exporting G-code" +msgstr "Экспорт G-code" + +msgid "Generating G-code" +msgstr "Генерация G-code" + +msgid "Failed processing of the filename_format template." +msgstr "Не удалось обработать шаблон filename_format." + +msgid "Printable area" +msgstr "Печатная область" + +msgid "Bed exclude area" +msgstr "Площадь исключения кровати" + +msgid "" +"Unprintable area in XY plane. For example, X1 Series printers use the front " +"left corner to cut filament during filament change. The area is expressed as " +"polygon by points in following format: \"XxY, XxY, ...\"" +msgstr "" +"Непечатаемая область в плоскости XY. Например, в принтерах серии X1 " +"используется передняя панель левый угол для обрезания нити во время смены " +"нити. Площадь выражается как многоугольник по точкам в следующем формате: " +"\"XxY, XxY, ...\"." + +msgid "Bed custom texture" +msgstr "Пользовательская текстура стола" + +msgid "Bed custom model" +msgstr "Стол индивидуальной модели" + +msgid "Elephant foot compensation" +msgstr "Компенсация слоновьей ноги" + +msgid "" +"Shrink the initial layer on build plate to compensate for elephant foot " +"effect" +msgstr "Усадка начального слоя на столе для компенсации эфекта слоновьей ноги" + +msgid "" +"Slicing height for each layer. Smaller layer height means more accurate and " +"more printing time" +msgstr "" +"Высота нарезки для каждого слоя. Меньшая высота слоя означает более точную " +"печать, но больше времени на печать" + +msgid "Printable height" +msgstr "Высота печати" + +msgid "Maximum printable height which is limited by mechanism of printer" +msgstr "Максимальная высота печати, которая ограничена механизмом принтера" + +msgid "Printer preset names" +msgstr "Имена предустановок принтера" + +msgid "Hostname, IP or URL" +msgstr "Имя хоста, IP или URL" + +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the hostname, IP address or URL of the printer host instance. Print host " +"behind HAProxy with basic auth enabled can be accessed by putting the user " +"name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" +msgstr "" +"Slic3r может загружать файлы G-кода на хост принтера. Это поле должно " +"содержать имя хоста, IP-адрес или URL-адрес экземпляра узла принтера. Узел " +"печати за HAProxy с включенной базовой авторизацией можно получить доступ, " +"введя пользователя имя и пароль в URL в следующем формате: https://" +"username:\n" +"password@your-octopi-address/" + +msgid "Device UI" +msgstr "Пользовательский интерфейс устройства" + +msgid "" +"Specify the URL of your device user interface if it's not same as print_host" +msgstr "" +"Укажите URL пользовательского интерфейса вашего устройства, если он не " +"совпадает с print_host" + +msgid "API Key / Password" +msgstr "Ключ API / Пароль" + +msgid "" +"Slic3r can upload G-code files to a printer host. This field should contain " +"the API Key or the password required for authentication." +msgstr "" +"Slic3r может загружать файлы G-кода на хост принтера. Это поле должно " +"содержать \n" +"API-ключ или пароль, необходимый для аутентификации." + +msgid "Name of the printer" +msgstr "Название принтера" + +msgid "HTTPS CA File" +msgstr "Файл HTTPS CA" + +msgid "" +"Custom CA certificate file can be specified for HTTPS OctoPrint connections, " +"in crt/pem format. If left blank, the default OS CA certificate repository " +"is used." +msgstr "" +"Для HTTPS-соединений OctoPrint можно указать файл сертификата " +"пользовательского ЦС, в формате crt/pem. Если оставить пустым, по умолчанию " +"будет использоваться хранилище сертификатов ЦС ОС." + +msgid "User" +msgstr "Пользователь" + +msgid "Password" +msgstr "Пароль" + +msgid "Ignore HTTPS certificate revocation checks" +msgstr "Игнорирование проверок отзыва сертификатов HTTPS" + +msgid "" +"Ignore HTTPS certificate revocation checks in case of missing or offline " +"distribution points. One may want to enable this option for self signed " +"certificates if connection fails." +msgstr "" +"Игнорирование проверок отзыва сертификатов HTTPS в случае отсутствия или " +"отключения от сети точки распространения. Можно включить эту опцию для " +"самоподписания сертификатов при неудачном подключении." + +msgid "Names of presets related to the physical printer" +msgstr "Названия предустановок, связанных с физическим принтером" + +msgid "Authorization Type" +msgstr "Тип авторизации" + +msgid "API key" +msgstr "Ключ API" + +msgid "HTTP digest" +msgstr "HTTP-дайджест" + +msgid "Avoid crossing wall" +msgstr "Избегайте пересечения периметров" + +msgid "Detour and avoid to travel across wall which may cause blob on surface" +msgstr "" +"Объезжать и избегать проезда через периметр, что может привести к " +"образованию пятен на поверхности" + +msgid "Avoid crossing wall - Max detour length" +msgstr "Избегать пересечения периметров - Максимальная длина объезда" + +msgid "" +"Maximum detour distance for avoiding crossing wall. Don't detour if the " +"detour distance is large than this value. Detour length could be specified " +"either as an absolute value or as percentage (for example 50%) of a direct " +"travel path. Zero to disable" +msgstr "" +"Максимальное расстояние объезда для избежания пересечения периметров. Не " +"объезжайте, если расстояние объезда больше, чем это значение. Длина объезда " +"может быть задана либо как абсолютное значение, либо как процент (например, " +"50%) от прямого путь движения. Ноль для отключения" + +msgid "mm or %" +msgstr "мм или %" + +msgid "Other layers" +msgstr "Другие слои" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Cool Plate" +msgstr "" +"Температура слоя для всех слоев, кроме первого. Значение 0 означает филамент " +"не поддерживает печать на холодном столе" + +msgid "°C" +msgstr "°C" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Engineering Plate" +msgstr "" +"Температура слоя для всех слоев, кроме начального. Значение 0 означает \n" +"филамент не поддерживает печать на инженерной пластине" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the High Temp Plate" +msgstr "" +"Температура слоя для всех слоев, кроме начального. Значение 0 означает \n" +"филамент не поддерживает печать на высокотемпературной пластине" + +msgid "" +"Bed temperature for layers except the initial one. Value 0 means the " +"filament does not support to print on the Textured PEI Plate" +msgstr "" +"Температура слоя для всех слоев, кроме начального. Значение 0 означает \n" +"филамент не поддерживает печать на текстурированной пластине PEI" + +msgid "Initial layer" +msgstr "Первый слой" + +msgid "Initial layer bed temperature" +msgstr "Температура первого слоя" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Cool Plate" +msgstr "" +"Температура первого слоя. Значение 0 означает, что филамент не поддерживает " +"печать на холодном столе" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Engineering Plate" +msgstr "" +"Температура первого слоя. Значение 0 означает, что филамент не поддерживает " +"печать на инженерном столе" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the High Temp Plate" +msgstr "" +"Температура первого слоя. Значение 0 означает, что филамент не поддерживает " +"печать на высокотемпературном столе" + +msgid "" +"Bed temperature of the initial layer. Value 0 means the filament does not " +"support to print on the Textured PEI Plate" +msgstr "" +"Температура первого слоя. Значение 0 означает, что филамент не поддерживает " +"печать на текстурированной пластине PEI" + +msgid "Bed types supported by the printer" +msgstr "Типы кроватей, поддерживаемые принтером" + +msgid "This G-code is inserted at every layer change before lifting z" +msgstr "Типы кроватей, поддерживаемые принтером" + +msgid "Bottom shell layers" +msgstr "Сплошных слоёв снизу" + +msgid "" +"This is the number of solid layers of bottom shell, including the bottom " +"surface layer. When the thickness calculated by this value is thinner than " +"bottom shell thickness, the bottom shell layers will be increased" +msgstr "" +"Это количество сплошных слоев нижней оболочки, включая нижний поверхностный " +"слой. Если толщина, рассчитанная по этому значению, меньше толщины нижней " +"оболочки, то слои нижней оболочки будут увеличены" + +msgid "Bottom shell thickness" +msgstr "Толщина нижней части оболочки" + +msgid "" +"The number of bottom solid layers is increased when slicing if the thickness " +"calculated by bottom shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of bottom shell is absolutely determained by " +"bottom shell layers" +msgstr "" +"Количество нижних сплошных слоев увеличивается при разрезании, если толщина, " +"вычисленная слоями нижней оболочки, тоньше, чем это значение. Это позволяет " +"избежать слишком тонкой оболочки при небольшой высоте слоя. 0 означает, что " +"эта настройка отключена и толщина нижней оболочки полностью ограничена " +"слоями нижней оболочки" + +msgid "Force cooling for overhang and bridge" +msgstr "Силовое охлаждение для свеса и моста" + +msgid "" +"Enable this option to optimize part cooling fan speed for overhang and " +"bridge to get better cooling" +msgstr "" +"Включите эту опцию, чтобы оптимизировать скорость вентилятора охлаждения " +"детали для свеса и моста, чтобы улучшить охлаждение" + +msgid "Fan speed for overhang" +msgstr "Скорость вентилятора для свеса" + +msgid "" +"Force part cooling fan to be this speed when printing bridge or overhang " +"wall which has large overhang degree. Forcing cooling for overhang and " +"bridge can get better quality for these part" +msgstr "" +"При печати перемычки или навесного периметра, имеющей большую степень свеса, " +"вентилятор охлаждения детали должен иметь такую скорость. Принудительное " +"охлаждение для свеса и моста может получить лучшее качество для этой части" + +msgid "Cooling overhang threshold" +msgstr "Порог охлаждающего свеса" + +#, c-format +msgid "" +"Force cooling fan to be specific speed when overhang degree of printed part " +"exceeds this value. Expressed as percentage which indicides how much width " +"of the line without support from lower layer. 0% means forcing cooling for " +"all outer wall no matter how much overhang degree" +msgstr "" +"Когда степень свеса печатной детали превышает это значение, принудительно " +"установите вентилятор охлаждения на определенную скорость. Выражается в " +"процентах, указывающих на ширину линии без опоры от нижнего слоя. 0% " +"означает принудительное охлаждение всего внешнего периметра независимо от " +"степени свеса" + +msgid "Bridge infill direction" +msgstr "Направление заполнения моста" + +msgid "" +"Bridging angle override. If left to zero, the bridging angle will be " +"calculated automatically. Otherwise the provided angle will be used for " +"external bridges. Use 180°for zero angle." +msgstr "" +"Переопределение угла моста. Если оставить значение равным нулю, угол моста " +"будет вычисляться автоматически. В противном случае предоставленный угол " +"будет использоваться для внешних мостов. Используйте 180 ° для нулевого угла." + +msgid "Bridge density" +msgstr "Плотность моста" + +msgid "Density of external bridges. 100% means solid bridge. Default is 100%." +msgstr "" +"Плотность наружных мостов. 100% означает сплошной мост. Значение по " +"умолчанию - 100%." + +msgid "Bridge flow" +msgstr "Поток моста" + +msgid "" +"Decrease this value slightly(for example 0.9) to reduce the amount of " +"material for bridge, to improve sag" +msgstr "" +"Немного уменьшите это значение (например, 0.9), чтобы уменьшить количество " +"материала для моста, чтобы улучшить провисание" + +msgid "Top surface flow ratio" +msgstr "Коэффициент обтекания верхней поверхности" + +msgid "" +"This factor affects the amount of material for top solid infill. You can " +"decrease it slightly to have smooth surface finish" +msgstr "" +"Этот фактор влияет на количество материала для заполнения верхнего твердого " +"тела. Можно немного уменьшить его, чтобы получить гладкую шероховатость " +"поверхности" + +msgid "Bottom surface flow ratio" +msgstr "Коэффициент расхода нижней поверхности" + +msgid "This factor affects the amount of material for bottom solid infill" +msgstr "" +"Этот фактор влияет на количество материала для заполнения нижнего твердого " +"тела" + +msgid "Precise wall(experimental)" +msgstr "Точные периметры (экспериментальная)" + +msgid "" +"Improve shell precision by adjusting outer wall spacing. This also improves " +"layer consistency." +msgstr "" +"Повышение точности оболочки за счет регулировки расстояния между наружными " +"периметрами. Это также улучшает согласованность слоев." + +msgid "Only one wall on top surfaces" +msgstr "Только одна периметр на верхних поверхностях" + +msgid "" +"Use only one wall on flat top surface, to give more space to the top infill " +"pattern" +msgstr "" +"Используйте только один периметр на плоской верхней поверхности, чтобы " +"предоставить больше места для верхнего массива заполнения" + +msgid "Only one wall on first layer" +msgstr "Только один периметр на первом слое" + +msgid "" +"Use only one wall on first layer, to give more space to the bottom infill " +"pattern" +msgstr "" +"Используйте только один периметр на первом слое, чтобы предоставить больше " +"места для нижнего образца заполнения" + +msgid "Classic mode" +msgstr "Классический режим" + +msgid "Enable this option to use classic mode" +msgstr "Включить этот параметр для использования классического режима" + +msgid "Slow down for overhang" +msgstr "Замедление для свеса" + +msgid "Enable this option to slow printing down for different overhang degree" +msgstr "" +"Включить этот параметр для замедления печати при различных степенях свеса" + +msgid "mm/s" +msgstr "mm/с" + +msgid "Speed of bridge and completely overhang wall" +msgstr "Скорость моста и полностью свисающий периметр" + +msgid "Brim width" +msgstr "Ширина каймы" + +msgid "Distance from model to the outermost brim line" +msgstr "Расстояние от модели до крайней линии каймы" + +msgid "Brim type" +msgstr "Тип каймы" + +msgid "" +"This controls the generation of the brim at outer and/or inner side of " +"models. Auto means the brim width is analysed and calculated automatically." +msgstr "" +"Это управляет формированием поля на внешней и/или внутренней стороне " +"моделей. Auto означает, что ширина поля анализируется и вычисляется " +"автоматически." + +msgid "outer_only" +msgstr "кайма снаружи" + +msgid "Inner brim only" +msgstr "Кайма внутри" + +msgid "Outer and inner brim" +msgstr "Снаружи и внутри" + +msgid "Brim-object gap" +msgstr "Зазор между каймой и объектом" + +msgid "" +"A gap between innermost brim line and object can make brim be removed more " +"easily" +msgstr "" +"Зазор между внутренней линией каймы и предметом может способствовать более " +"легкому снятию каймы" + +msgid "Compatible machine" +msgstr "Совместимая машина" + +msgid "upward compatible machine" +msgstr "восходящая совместимая машина" + +msgid "Compatible machine condition" +msgstr "Совместимое состояние машины" + +msgid "Compatible process profiles" +msgstr "Совместимые профили процессов" + +msgid "Compatible process profiles condition" +msgstr "Состояние совместимых профилей процессов" + +msgid "Print sequence, layer by layer or object by object" +msgstr "Последовательность печати, слой за слоем или объект за объектом" + +msgid "By layer" +msgstr "По слою" + +msgid "By object" +msgstr "По объекту" + +msgid "Slow printing down for better layer cooling" +msgstr "Медленная печать для лучшего охлаждения слоя" + +msgid "" +"Enable this option to slow printing speed down to make the final layer time " +"not shorter than the layer time threshold in \"Max fan speed threshold\", so " +"that layer can be cooled for longer time. This can improve the cooling " +"quality for needle and small details" +msgstr "" +"Включите эту опцию, чтобы замедлить скорость печати и сделать конечное время " +"слоя не короче порога времени слоя в «Max fan speed threshold», чтобы слой " +"мог охлаждаться дольше. Это может улучшить качество охлаждения игл и мелких " +"деталей" + +msgid "Normal printing" +msgstr "Обычная печать" + +msgid "" +"The default acceleration of both normal printing and travel except initial " +"layer" +msgstr "" +"Ускорение по умолчанию как для обычной печати, так и для перемещения, за " +"исключением начального слоя" + +msgid "mm/s²" +msgstr "мм/с²" + +msgid "Default filament profile" +msgstr "Профиль филамента по умолчанию" + +msgid "Default filament profile when switch to this machine profile" +msgstr "Профиль филамента по умолчанию при переключении на этот профиль машины" + +msgid "Default process profile" +msgstr "Профиль процесса по умолчанию" + +msgid "Default process profile when switch to this machine profile" +msgstr "Профиль процесса по умолчанию при переключении на этот профиль машины" + +msgid "No cooling for the first" +msgstr "Нет охлаждения для первого слоя" + +msgid "" +"Close all cooling fan for the first certain layers. Cooling fan of the first " +"layer used to be closed to get better build plate adhesion" +msgstr "" +"Закройте все охлаждающие вентиляторы для первых определенных слоев. " +"Вентилятор охлаждения первого слоя был закрыт, чтобы улучшить адгезию " +"рабочей пластины" + +msgid "layers" +msgstr "слои" + +msgid "Don't support bridges" +msgstr "Не поддерживать мосты" + +msgid "" +"Don't support the whole bridge area which make support very large. Bridge " +"usually can be printing directly without support if not very long" +msgstr "" +"Не поддерживайте всю площадь моста, так как поддержка будет очень большой. " +"Мост\n" +"обычно можно печатать напрямую без поддержки, если не очень долго" + +msgid "Thick bridges" +msgstr "Толстые мосты" + +msgid "" +"If enabled, bridges are more reliable, can bridge longer distances, but may " +"look worse. If disabled, bridges look better but are reliable just for " +"shorter bridged distances." +msgstr "" +"Если эта функция включена, мосты более надежны, могут соединять большие " +"расстояния, но могут выглядеть хуже. Если отключить, мосты выглядят лучше, " +"но надежны только для более коротких мостовых расстояний." + +msgid "Max bridge length" +msgstr "Максимальная длина моста" + +msgid "" +"Max length of bridges that don't need support. Set it to 0 if you want all " +"bridges to be supported, and set it to a very large value if you don't want " +"any bridges to be supported." +msgstr "" +"Макс. длина мостов, которые не нуждаются в поддержке. Установите значение 0, " +"если требуется поддержка всех мостов, и очень большое значение, если " +"поддержка мостов не требуется." + +msgid "End G-code" +msgstr "Завершающий G-code" + +msgid "End G-code when finish the whole printing" +msgstr "Завершающий G-code, когда закончить всю печать" + +msgid "End G-code when finish the printing of this filament" +msgstr "Завершающий G-code, когда закончите печать этой нити" + +msgid "Ensure vertical shell thickness" +msgstr "Обеспечение вертикальной толщины оболочки" + +msgid "" +"Add solid infill near sloping surfaces to guarantee the vertical shell " +"thickness (top+bottom solid layers)" +msgstr "" +"Добавление заполнения твердого тела вблизи наклонных поверхностей для " +"гарантии толщины вертикальной оболочки (верхний + нижний слои твердого тела)" + +msgid "Internal bridge support thickness" +msgstr "Толщина внутренней опоры моста" + +msgid "" +"If enabled, support loops will be generated under the contours of internal " +"bridges. These support loops could prevent internal bridges from extruding " +"over the air and improve the top surface quality, especially when the sparse " +"infill density is low.This value determines the thickness of the support " +"loops. 0 means disable this feature" +msgstr "" +"Если этот параметр включен, под контурами внутренних мостов создаются " +"контуры поддержки. Эти опорные петли могут препятствовать экструзии " +"внутренних мостиков через воздух и улучшать качество верхней поверхности, " +"особенно когда разреженная плотность заполнения является низкой. Это " +"значение определяет толщину контуров опоры. 0 означает отключение этой " +"функции" + +msgid "Top surface pattern" +msgstr "Рисунок верхней поверхности" + +msgid "Line pattern of top surface infill" +msgstr "Рисунок заполнения верхней поверхности" + +msgid "Concentric" +msgstr "Концентрический" + +msgid "Rectilinear" +msgstr "Прямолинейный" + +msgid "Monotonic" +msgstr "Монотонный" + +msgid "Monotonic line" +msgstr "Монотонный прямолинейный" + +msgid "Aligned Rectilinear" +msgstr "Выровненный прямолинейный" + +msgid "Hilbert Curve" +msgstr "Кривая Гильберта" + +msgid "Archimedean Chords" +msgstr "Хорды архимеда" + +msgid "Octagram Spiral" +msgstr "Спиральная октограмма" + +msgid "Bottom surface pattern" +msgstr "Рисунок нижней поверхности" + +msgid "Line pattern of bottom surface infill, not bridge infill" +msgstr "Рисунок заполнения нижней поверхности, а не заполнения моста" + +msgid "Line width of outer wall" +msgstr "Ширина линии наружного периметра" + +msgid "" +"Speed of outer wall which is outermost and visible. It's used to be slower " +"than inner wall speed to get better quality." +msgstr "" +"Скорость внешнего периметра, которая является наиболее удаленной и видимой. " +"Это раньше было медленнее, чем скорость внутреннего периметра, чтобы " +"получить лучшее качество." + +msgid "Small perimeters" +msgstr "Маленькие периметры" + +msgid "" +"This separate setting will affect the speed of perimeters having radius <= " +"small_perimeter_threshold (usually holes). If expressed as percentage (for " +"example: 80%) it will be calculated on the outer wall speed setting above. " +"Set to zero for auto." +msgstr "" +"Эта отдельная настройка влияет на скорость периметров, имеющих радиус < = " +"small_perimeter_threshold (обычно отверстий). Если он выражен в процентах " +"(например, 80%), то он будет рассчитываться на указанной выше скорости " +"внешнего периметра. Установите нулевое значение для автоматической настройки." + +msgid "mm/s or %" +msgstr "мм/с или %" + +msgid "Small perimeters threshold" +msgstr "Порог малых периметров" + +msgid "" +"This sets the threshold for small perimeter length. Default threshold is 0mm" +msgstr "" +"При этом устанавливается порог для небольшой длины периметра. Пороговое " +"значение по умолчанию - 0 мм" + +msgid "Order of inner wall/outer wall/infil" +msgstr "Порядок внутренние периметры/внешние периметры/заполнение" + +msgid "Print sequence of inner wall, outer wall and infill. " +msgstr "" +"Распечатайте последовательность внутреннего периметра, внешнего периметра и " +"заполнения " + +msgid "inner/outer/infill" +msgstr "внутренний/внешний/заполнение" + +msgid "outer/inner/infill" +msgstr "внешний/внутренний/заполнение" + +msgid "infill/inner/outer" +msgstr "заполнение/внутренний/внешний" + +msgid "infill/outer/inner" +msgstr "заполнение/внешний/внутренний" + +msgid "inner-outer-inner/infill" +msgstr "внутренний-внешний-внутренний/заполнение" + +msgid "Height to rod" +msgstr "Высота до стержня" + +msgid "" +"Distance of the nozzle tip to the lower rod. Used for collision avoidance in " +"by-object printing." +msgstr "" +"Расстояние наконечника сопла до нижнего штока. Используется для " +"предотвращения конфликтов при печати по объекту." + +msgid "Height to lid" +msgstr "Высота до крышки" + +msgid "" +"Distance of the nozzle tip to the lid. Used for collision avoidance in by-" +"object printing." +msgstr "" +"Расстояние наконечника насадки до крышки. Используется для предотвращения " +"конфликтов при печати по объекту." + +msgid "" +"Clearance radius around extruder. Used for collision avoidance in by-object " +"printing." +msgstr "" +"Радиус зазора вокруг экструдера. Используется для предотвращения конфликтов " +"при печати по объекту." + +msgid "Extruder Color" +msgstr "Цвет экструдера" + +msgid "Only used as a visual help on UI" +msgstr "" +"Используется только как визуальная помощь в пользовательском интерфейсе" + +msgid "Extruder offset" +msgstr "Смещение экструдера" + +msgid "Flow ratio" +msgstr "Коэффициент расход" + +msgid "" +"The material may have volumetric change after switching between molten state " +"and crystalline state. This setting changes all extrusion flow of this " +"filament in gcode proportionally. Recommended value range is between 0.95 " +"and 1.05. Maybe you can tune this value to get nice flat surface when there " +"has slight overflow or underflow" +msgstr "" +"Материал может иметь объемное изменение после переключения между " +"расплавленным состоянием и кристаллическим состоянием. Эта настройка " +"пропорционально изменяет весь экструзионный поток этой нити накала в gcode. " +"Рекомендуемый диапазон значений - от 0,95 до 1,05. Возможно, вы можете " +"настроить это значение, чтобы получить хорошую плоскую поверхность, когда " +"есть небольшое переполнение или недолив" + +msgid "Enable pressure advance" +msgstr "Включить опережение давления" + +msgid "" +"Enable pressure advance, auto calibration result will be overwriten once " +"enabled." +msgstr "" +"Включить опережение давления, результат автоматической калибровки будет " +"перезаписан после включения." + +msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" +msgstr "" +"Повышение давления (Klipper) AKA Коэффициент линейного продвижения (Marlin)" + +msgid "Default line width if some line width is set to be zero" +msgstr "" +"Ширина линии по умолчанию, если некоторая ширина линии установлена ​​равной " +"нулю" + +msgid "Keep fan always on" +msgstr "Держите вентилятор всегда включенным" + +msgid "" +"If enable this setting, part cooling fan will never be stoped and will run " +"at least at minimum speed to reduce the frequency of starting and stoping" +msgstr "" +"Если включить этот параметр, вентилятор охлаждения детали никогда не будет " +"останавливаться и будет работать\n" +"хотя бы на минимальной скорости для уменьшения частоты пусков и остановок" + +msgid "Layer time" +msgstr "Время слоя" + +msgid "" +"Part cooling fan will be enabled for layers of which estimated time is " +"shorter than this value. Fan speed is interpolated between the minimum and " +"maximum fan speeds according to layer printing time" +msgstr "" +"Вентилятор охлаждения детали будет включен для слоев, расчетное время " +"которых меньше этого значения. Скорость вентилятора интерполируется между " +"минимальной и максимальной скоростями вентилятора в соответствии со временем " +"печати слоя" + +msgid "s" +msgstr "c" + +msgid "Default color" +msgstr "Цвет по умолчанию" + +msgid "Default filament color" +msgstr "Цвет филамента по умолчанию" + +msgid "Color" +msgstr "Цвет" + +msgid "Required nozzle HRC" +msgstr "Требуемое сопло HRC" + +msgid "" +"Minimum HRC of nozzle required to print the filament. Zero means no checking " +"of nozzle's HRC." +msgstr "" +"Минимальный HRC сопла, необходимый для печати филамента. Ноль означает " +"отсутствие проверкиHRC сопла." + +msgid "" +"This setting stands for how much volume of filament can be melted and " +"extruded per second. Printing speed is limited by max volumetric speed, in " +"case of too high and unreasonable speed setting. Can't be zero" +msgstr "" +"Эта настройка определяет, сколько объема нити может быть расплавлено и " +"экструдировано в секунду. Скорость печати ограничена максимальной объемной " +"скоростью, в случае слишком высокой и необоснованной настройки скорости. Не " +"может быть нулем" + +msgid "mm³/s" +msgstr "mm³/с" + +msgid "Minimal purge on wipe tower" +msgstr "Минимальная продувка на очистительной башне" + +msgid "" +"After a tool change, the exact position of the newly loaded filament inside " +"the nozzle may not be known, and the filament pressure is likely not yet " +"stable. Before purging the print head into an infill or a sacrificial " +"object, Slic3r will always prime this amount of material into the wipe tower " +"to produce successive infill or sacrificial object extrusions reliably." +msgstr "" +"После замены инструмента точное положение вновь нагруженной нити накала " +"внутри сопла может быть неизвестно, и давление нити накала, вероятно, еще не " +"является стабильным. Перед продувкой печатающей головки в наполнитель или " +"расходуемый объект Slic3r всегда будет дозировать это количество материала в " +"башню для протирания, чтобы обеспечить надежное последовательное заполнение " +"или расходуемое выдавливание объекта." + +msgid "Filament load time" +msgstr "Время загрузки филамента" + +msgid "Time to load new filament when switch filament. For statistics only" +msgstr "" +"Время загрузки нового филамента при переключении филамента. Только для " +"статистики" + +msgid "Filament unload time" +msgstr "Время выгрузки филамента" + +msgid "Time to unload old filament when switch filament. For statistics only" +msgstr "" +"Время выгрузки нового филамента при переключении филамента. Только для " +"статистики" + +msgid "" +"Filament diameter is used to calculate extrusion in gcode, so it's important " +"and should be accurate" +msgstr "" +"Диаметр нити используется для расчета экструзии в gcode, поэтому он важен и " +"должен быть точным" + +msgid "Shrinkage" +msgstr "Усадка" + +#, c-format, boost-format +msgid "" +"Enter the shrinkage percentage that the filament will get after cooling " +"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"compensate. Only the filament used for the perimeter is taken into account.\n" +"Be sure to allow enough space between objects, as this compensation is done " +"after the checks." +msgstr "" +"Введите процент усадки нити накала после охлаждения (94%, если измерить 94 " +"мм вместо 100 мм). Деталь будет масштабирована в xy для компенсации. " +"Учитывается только филамент, используемый для периметра.\n" +"Убедитесь, что между объектами достаточно места, так как эта компенсация " +"выполняется после проверок." + +msgid "Density" +msgstr "Плотность" + +msgid "Filament density. For statistics only" +msgstr "Плотность нити. Только для статистики" + +msgid "g/cm³" +msgstr "г/см³" + +msgid "The material type of filament" +msgstr "Тип материала филамента" + +msgid "Soluble material" +msgstr "Растворимый филамент" + +msgid "" +"Soluble material is commonly used to print support and support interface" +msgstr "Растворимый материал обычно используется для печати поддержки" + +msgid "Support material" +msgstr "Материал поддержки" + +msgid "" +"Support material is commonly used to print support and support interface" +msgstr "Вспомогательный материал обычно используется для печати поддержки" + +msgid "Temperature of vitrificaiton" +msgstr "Температура витрификайтона" + +msgid "" +"Material becomes soft at this temperature. Thus the heatbed cannot be hotter " +"than this tempature" +msgstr "" +"При этой температуре материал становится мягким. Таким образом, нагреваемый " +"слой не может быть более горячим, чем эта температура" + +msgid "Price" +msgstr "Цена" + +msgid "Filament price. For statistics only" +msgstr "Цена филамента. Только для статистики" + +msgid "money/kg" +msgstr "р/кг" + +msgid "(Undefined)" +msgstr "(Неопределенный)" + +msgid "Infill direction" +msgstr "Направление заполнения" + +msgid "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" +msgstr "" +"Angle for sparse infill pattern, which controls the start or main direction " +"of line" + +msgid "Sparse infill density" +msgstr "Плотность заполнения" + +#, c-format +msgid "Density of internal sparse infill, 100% means solid throughout" +msgstr "" +"Плотность внутреннего разреженного заполнения, 100% означает сплошное " +"заполнение по всей площади" + +msgid "Sparse infill pattern" +msgstr "Рисунок заполнения" + +msgid "Line pattern for internal sparse infill" +msgstr "Шаблон линии для внутреннего заполнения" + +msgid "Grid" +msgstr "Сетка" + +msgid "Line" +msgstr "Линия" + +msgid "Cubic" +msgstr "Кибический" + +msgid "Tri-hexagon" +msgstr "Звезды" + +msgid "Gyroid" +msgstr "Гироид" + +msgid "Honeycomb" +msgstr "Медовые соты" + +msgid "Adaptive Cubic" +msgstr "Адаптивный кубический" + +msgid "3D Honeycomb" +msgstr "3D медовые соты" + +msgid "Support Cubic" +msgstr "Поддерживающий кубический" + +msgid "Lightning" +msgstr "Молния" + +msgid "Sparse infill anchor length" +msgstr "Длина привязки заполнения" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than infill_anchor_max is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to this parameter, but no longer than anchor_length_max. \n" +"Set this parameter to zero to disable anchoring perimeters connected to a " +"single infill line." +msgstr "" +"Соедините линию заполнения с внутренним периметром с коротким сегментом " +"дополнительного периметра. Если оно выражено в процентах (например, 15%), " +"оно рассчитывается по ширине экструзии заполнения. Slic3r пытается соединить " +"две близкие линии заполнения с коротким сегментом периметра. Если такой " +"сегмент периметра короче infill_anchor_max не найден, линия заполнения " +"соединяется с сегментом периметра только с одной стороны, и длина взятого " +"сегмента периметра ограничена этим параметром, но не более " +"anchor_length_max.\n" +"Установите этот параметр равным нулю, чтобы отключить периметры привязки, " +"связанные с одной линией заполнения." + +msgid "0 (no open anchors)" +msgstr "0 (нет открытых привязок)" + +msgid "1000 (unlimited)" +msgstr "1000 (неограниченно)" + +msgid "Maximum length of the infill anchor" +msgstr "Максимальная длина заполняющей привязки" + +msgid "" +"Connect an infill line to an internal perimeter with a short segment of an " +"additional perimeter. If expressed as percentage (example: 15%) it is " +"calculated over infill extrusion width. Slic3r tries to connect two close " +"infill lines to a short perimeter segment. If no such perimeter segment " +"shorter than this parameter is found, the infill line is connected to a " +"perimeter segment at just one side and the length of the perimeter segment " +"taken is limited to infill_anchor, but no longer than this parameter. \n" +"If set to 0, the old algorithm for infill connection will be used, it should " +"create the same result as with 1000 & 0." +msgstr "" +"Соедините линию заполнения с внутренним периметром с коротким сегментом " +"дополнительного периметра. Если оно выражено в процентах (например, 15%), " +"оно рассчитывается по ширине экструзии заполнения. Slic3r пытается соединить " +"две близкие линии заполнения с коротким сегментом периметра. Если такой " +"сегмент периметра короче этого параметра не найден, линия заполнения " +"соединяется с сегментом периметра только на одной стороне, и длина взятого " +"сегмента периметра ограничена infill_anchor, но не длиннее этого параметра.\n" +"Если установлено значение 0, будет использован старый алгоритм для " +"подключения заполнения, он должен создать тот же результат, что и для 1000 & " +"0." + +msgid "0 (Simple connect)" +msgstr "0 (простое подключение)" + +msgid "Acceleration of outer walls" +msgstr "Ускорение наружных периметров" + +msgid "Acceleration of inner walls" +msgstr "Ускорение внутренних периметров" + +msgid "Acceleration of travel moves" +msgstr "Ускорение холостого перемещения" + +msgid "" +"Acceleration of top surface infill. Using a lower value may improve top " +"surface quality" +msgstr "" +"Ускорение заполнения верхней поверхности. Использование меньшего значения " +"может улучшить качество верхней поверхности" + +msgid "Acceleration of outer wall. Using a lower value can improve quality" +msgstr "" +"Ускорение наружнего периметра. Использование меньшего значения может " +"улучшить качество" + +msgid "" +"Acceleration of bridges. If the value is expressed as a percentage (e.g. " +"50%), it will be calculated based on the outer wall acceleration." +msgstr "" +"Ускорение мостов. Если значение выражено в процентах (например, 50%), оно " +"будет рассчитано на основе ускорения внешнего периметра." + +msgid "mm/s² or %" +msgstr "мм/с² или %" + +msgid "" +"Acceleration of sparse infill. If the value is expressed as a percentage (e." +"g. 100%), it will be calculated based on the default acceleration." +msgstr "" +"Ускорение заполнения. Если значение выражено в процентах (например, 100%), " +"оно будет рассчитано на основе ускорения по умолчанию." + +msgid "" +"Acceleration of internal solid infill. If the value is expressed as a " +"percentage (e.g. 100%), it will be calculated based on the default " +"acceleration." +msgstr "" +"Ускорение заполнения внутреннего твердого тела. Если значение выражено в " +"процентах (например, 100%), оно будет рассчитано на основе ускорения по " +"умолчанию." + +msgid "" +"Acceleration of initial layer. Using a lower value can improve build plate " +"adhensive" +msgstr "" +"Ускорение исходного слоя. Использование меньшего значения может улучшить " +"прилипание строительной плиты" + +msgid "Enable accel_to_decel" +msgstr "Включить ускорение до замедления" + +msgid "Klipper's max_accel_to_decel will be adjusted automatically" +msgstr "" +"Max \"ускорение до замедления\" для Klipper будет скорректирован " +"автоматически" + +msgid "accel_to_decel" +msgstr "ускорение до замедления" + +#, c-format, boost-format +msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" +msgstr "" +"Max \"ускорение до замедления\" для Klipper будет скорректирован на % o " +"автоматически" + +msgid "Jerk of outer walls" +msgstr "Рывок наружных периметров" + +msgid "Jerk of inner walls" +msgstr "Рывок внутренних периметров" + +msgid "Jerk for top surface" +msgstr "Рывок для верхней поверхности" + +msgid "Jerk for infill" +msgstr "Рывок для заполнения" + +msgid "Jerk for initial layer" +msgstr "Рывок для начального слоя" + +msgid "Jerk for travel" +msgstr "Рывок для перемещения" + +msgid "Line width of initial layer" +msgstr "Ширина линии первого слоя" + +msgid "Initial layer height" +msgstr "Начальная высота слоя" + +msgid "" +"Height of initial layer. Making initial layer height to be thick slightly " +"can improve build plate adhension" +msgstr "" +"Высота исходного слоя. Незначительная толщина начальной высоты слоя может " +"улучшить прилипание к столу" + +msgid "Speed of initial layer except the solid infill part" +msgstr "Скорость первого слоя, за исключением сплошной заполняющей части" + +msgid "Initial layer infill" +msgstr "Начальное заполнение слоя" + +msgid "Speed of solid infill part of initial layer" +msgstr "Скорость сплошной заполняющей части исходного слоя" + +msgid "Initial layer travel speed" +msgstr "Начальная скорость перемещения слоя" + +msgid "Travel speed of initial layer" +msgstr "Скорость перемещения исходного слоя" + +msgid "Number of slow layers" +msgstr "Количество медленных слоев" + +msgid "" +"The first few layers are printed slower than normal. The speed is gradually " +"increased in a linear fashion over the specified number of layers." +msgstr "" +"Первые несколько слоев печатаются медленнее, чем обычно. Скорость постепенно " +"увеличивается линейным образом по заданному числу слоев." + +msgid "Initial layer nozzle temperature" +msgstr "Температура сопла первого слоя" + +msgid "Nozzle temperature to print initial layer when using this filament" +msgstr "" +"Температура сопла для печати первого слоя при использовании этого филамента" + +msgid "Full fan speed at layer" +msgstr "Полная скорость вентилятора на слое" + +msgid "" +"Fan speed will be ramped up linearly from zero at layer " +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +msgstr "" +"Скорость вентилятора линейно увеличивается от нуля на уровне " +"«close_fan_the_first_x_layers» до максимума на уровне " +"«full_fan_speed_layer.». «full_fan_speed_layer» будет игнорироваться, если " +"ниже «close_fan_the_first_x_layers,», в этом случае вентилятор будет " +"работать с максимально допустимой скоростью на уровне " +"«close_fan_the_first_x_layers» + 1." + +msgid "Support interface fan speed" +msgstr "Скорость вентилятора при печати поддержек" + +msgid "" +"This fan speed is enforced during all support interfaces, to be able to " +"weaken their bonding with a high fan speed.\n" +"Set to -1 to disable this override.\n" +"Can only be overriden by disable_fan_first_layers." +msgstr "" +"Эта скорость вентилятора обеспечивается во время всех интерфейсов поддержки, " +"чтобы иметь возможность ослабить их соединение с высокой скоростью " +"вентилятора.\n" +"Установите значение -1, чтобы отключить это переопределение.\n" +"Может быть переопределен только disable_fan_first_layers." + +msgid "" +"Randomly jitter while printing the wall, so that the surface has a rough " +"look. This setting controls the fuzzy position" +msgstr "" +"Случайное дрожание при печати внешнего периметра, так что поверхность была " +"шероховатой. Этот параметр управляет нечеткой оболочкой" + +msgid "None" +msgstr "Нет" + +msgid "Contour" +msgstr "Контур" + +msgid "Contour and hole" +msgstr "Контур и отверстие" + +msgid "All walls" +msgstr "Все периметры" + +msgid "Fuzzy skin thickness" +msgstr "Нечеткая толщина кожи" + +msgid "" +"The width within which to jitter. It's adversed to be below outer wall line " +"width" +msgstr "" +"Ширина, в пределах которой происходит дрожание. Нежелательно быть ниже " +"ширины линии внешнего периметра" + +msgid "Fuzzy skin point distance" +msgstr "Нечеткое расстояние от точки кожи" + +msgid "" +"The average diatance between the random points introducded on each line " +"segment" +msgstr "" +"Среднее расстояние между случайными точками, введенными на каждом отрезке " +"линии" + +msgid "Filter out tiny gaps" +msgstr "Заплнение площади, меньше указанной" + +msgid "Layers and Perimeters" +msgstr "Слои и периметры" + +msgid "" +"Filter out gaps smaller than the threshold specified. This setting won't " +"affact top/bottom layers" +msgstr "" +"Фильтрация промежутков меньше указанного порога. Этот параметр не влияет на " +"верхние и нижние слои" + +msgid "" +"Speed of gap infill. Gap usually has irregular line width and should be " +"printed more slowly" +msgstr "" +"Скорость заполнения зазора. Зазор обычно имеет неправильную ширину линии и " +"должен печататься медленнее" + +msgid "Arc fitting" +msgstr "Дуговой фитинг" + +msgid "" +"Enable this to get a G-code file which has G2 and G3 moves. And the fitting " +"tolerance is same with resolution" +msgstr "" +"Включите этот параметр, чтобы получить файл G-кода с перемещениями G2 и G3. " +"А допуск подгонки одинаковым разрешением" + +msgid "Add line number" +msgstr "Добавить номер строки" + +msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" +msgstr "" +"Эта опция используется для добавления номера строки (Nx) в начале каждой " +"строки G-Code" + +msgid "Scan first layer" +msgstr "Сканировать первый слой" + +msgid "" +"Enable this to enable the camera on printer to check the quality of first " +"layer" +msgstr "" +"Включение этого параметра позволяет камере на принтере проверять качество " +"первого слоя" + +msgid "Nozzle type" +msgstr "Тип сопла" + +msgid "" +"The metallic material of nozzle. This determines the abrasive resistance of " +"nozzle, and what kind of filament can be printed" +msgstr "" +"Металлический материал сопла. Это определяет абразивную стойкость\n" +"сопло и какой нитью можно печатать" + +msgid "Undefine" +msgstr "Отменить определение" + +msgid "Hardened steel" +msgstr "Закаленная сталь" + +msgid "Stainless steel" +msgstr "Нержавеющая сталь" + +msgid "Brass" +msgstr "Латунь" + +msgid "Nozzle HRC" +msgstr "Сопло HRC" + +msgid "" +"The nozzle's hardness. Zero means no checking for nozzle's hardness during " +"slicing." +msgstr "" +"Твердость сопла. Ноль означает отсутствие проверки жесткости сопла во время " +"нарезка." + +msgid "HRC" +msgstr "HRC" + +msgid "Enable this option if machine has auxiliary part cooling fan" +msgstr "" +"Включите эту опцию, если машина оснащена вентилятором охлаждения " +"вспомогательной части" + +msgid "" +"Start the fan this number of seconds earlier than its target start time (you " +"can use fractional seconds). It assumes infinite acceleration for this time " +"estimation, and will only take into account G1 and G0 moves (arc fitting is " +"unsupported).\n" +"It won't move fan comands from custom gcodes (they act as a sort of " +"'barrier').\n" +"It won't move fan comands into the start gcode if the 'only custom start " +"gcode' is activated.\n" +"Use 0 to deactivate." +msgstr "" +"Запустите вентилятор на такое количество секунд раньше целевого времени " +"начала (можно использовать дробные секунды). Он предполагает бесконечное " +"ускорение для этой оценки времени и будет учитывать только перемещения G1 и " +"G0 (дуговой фитинг не поддерживается).\n" +"Он не будет перемещать команды вентиляторов из пользовательских кодов (они " +"действуют как своего рода «барьер»).\n" +"Он не перемещает команды вентиляторов в начальный gcode, если активирован " +"«единственный пользовательский начальный gcode».\n" +"Используйте 0 для деактивации." + +msgid "Only overhangs" +msgstr "Только свесы" + +msgid "Will only take into account the delay for the cooling of overhangs." +msgstr "Учтет только задержку охлаждения свесов." + +msgid "Fan kick-start time" +msgstr "Время запуска вентилятора" + +msgid "" +"Emit a max fan speed command for this amount of seconds before reducing to " +"target speed to kick-start the cooling fan.\n" +"This is useful for fans where a low PWM/power may be insufficient to get the " +"fan started spinning from a stop, or to get the fan up to speed faster.\n" +"Set to 0 to deactivate." +msgstr "" +"Выдайте команду max fan speed (максимальная скорость вентилятора) за это " +"количество секунд до снижения до целевой скорости, чтобы запустить " +"вентилятор охлаждения.\n" +"Это полезно для вентиляторов, в которых низкий уровень PWM/мощности может " +"быть недостаточным для того, чтобы вентилятор начал вращаться с упора, или " +"для ускорения работы вентилятора.\n" +"Для деактивации установите значение 0." + +msgid "G-code flavor" +msgstr "Ароматизатор G-кода" + +msgid "What kind of gcode the printer is compatible with" +msgstr "С каким gcode совместим принтер" + +msgid "Klipper" +msgstr "Klipper" + +msgid "Label objects" +msgstr "Маркировать объекты" + +msgid "" +"Enable this to add comments into the G-Code labeling print moves with what " +"object they belong to, which is useful for the Octoprint CancelObject " +"plugin. This settings is NOT compatible with Single Extruder Multi Material " +"setup and Wipe into Object / Wipe into Infill." +msgstr "" +"Включите этот параметр, чтобы добавить комментарии в перемещение печати " +"метки G-Code с указанием объекта, которому они принадлежат, что полезно для " +"подключаемого модуля Octoprint CancelObject. Эти настройки НЕ совместимы с " +"настройками «Один экструдер» (Single Extruder Multi Material) и «Протирать в " +"объект/протирать в заполнение» (Wipe into Object/Wipe into Infill)." + +msgid "Exclude objects" +msgstr "Исключить объект" + +msgid "Enable this option to add EXCLUDE OBJECT command in g-code" +msgstr "" +"Включить этот параметр для добавления команды ИСКЛЮЧИТЬ ОБЪЕКТ в g-code" + +msgid "Verbose G-code" +msgstr "Подробный G-код" + +msgid "" +"Enable this to get a commented G-code file, with each line explained by a " +"descriptive text. If you print from SD card, the additional weight of the " +"file could make your firmware slow down." +msgstr "" +"Включите этот параметр, чтобы получить прокомментированный файл G-кода, " +"каждая строка которого объясняется описательным текстом. При печати с SD-" +"карты дополнительный вес файла может замедлить работу встроенного ПО." + +msgid "Infill combination" +msgstr "Объединение заполнения" + +msgid "" +"Automatically Combine sparse infill of several layers to print together to " +"reduce time. Wall is still printed with original layer height." +msgstr "" +"Автоматическое объединение заполнения нескольких слоев для печати для " +"сокращения времени. Периметр по-прежнему печатается с исходной высотой слоя." + +msgid "Filament to print internal sparse infill." +msgstr "Филамент для печати внутреннего заполнения." + +msgid "Line width of internal sparse infill" +msgstr "Ширина линии внутреннего заполнения" + +msgid "Infill/Wall overlap" +msgstr "Заполнение/перекрытие периметров" + +msgid "" +"Infill area is enlarged slightly to overlap with wall for better bonding. " +"The percentage value is relative to line width of sparse infill" +msgstr "" +"Область заполнения слегка увеличена для перекрытия периметром для лучшего " +"скрепления. Процентное значение относительно ширины линии заполнения" + +msgid "Speed of internal sparse infill" +msgstr "Скорость внутреннего заполнения" + +msgid "Interface shells" +msgstr "Интерфейсные оболочки" + +msgid "" +"Force the generation of solid shells between adjacent materials/volumes. " +"Useful for multi-extruder prints with translucent materials or manual " +"soluble support material" +msgstr "" +"Принудительное создание твердых оболочек между соседними материалами/" +"объемами. Используется для печати в нескольких экструдерах с полупрозрачными " +"материалами или растворимым в ручном режиме материалом подложки" + +msgid "Ironing Type" +msgstr "Тип глажки" + +msgid "" +"Ironing is using small flow to print on same height of surface again to make " +"flat surface more smooth. This setting controls which layer being ironed" +msgstr "" +"При глажке используется небольшой поток для повторной печати на той же " +"высоте поверхности, чтобы сделать плоскую поверхность более гладкой. Этот " +"параметр определяет, какой слой гладить" + +msgid "No ironing" +msgstr "Нет глажки" + +msgid "Top surfaces" +msgstr "Верхние поверхности" + +msgid "Topmost surface" +msgstr "Самая верхняя поверхность" + +msgid "All solid layer" +msgstr "Весь сплошной слой" + +msgid "Ironing flow" +msgstr "Гладильный поток" + +msgid "" +"The amount of material to extrude during ironing. Relative to flow of normal " +"layer height. Too high value results in overextrusion on the surface" +msgstr "" +"Количество материала, выдавливаемого во время глажки. Относительно потока " +"нормальной высоты слоя. Слишком высокое значение приводит к избыточной " +"экструзии на поверхность" + +msgid "Ironing line spacing" +msgstr "Шаг линии глажки" + +msgid "The distance between the lines of ironing" +msgstr "Расстояние между линиями глажки" + +msgid "Ironing speed" +msgstr "Скорость глажки" + +msgid "Print speed of ironing lines" +msgstr "Скорость печати гладильных линий" + +msgid "This gcode part is inserted at every layer change after lift z" +msgstr "Эта часть gcode вставляется при каждом изменении слоя после подъема z" + +msgid "Supports silent mode" +msgstr "Поддерживает бесшумный режим" + +msgid "" +"Whether the machine supports silent mode in which machine use lower " +"acceleration to print" +msgstr "" +"Поддерживает ли машина бесшумный режим, в котором машина использует меньшее " +"ускорение для печати" + +msgid "" +"This G-code will be used as a code for the pause print. User can insert " +"pause G-code in gcode viewer" +msgstr "" +"Этот G-код будет использоваться в качестве кода для печати паузы. " +"Пользователь может вставить паузу G-кода в gcode viewer" + +msgid "This G-code will be used as a custom code" +msgstr "Этот G-код будет использоваться в качестве пользовательского кода" + +msgid "Maximum speed X" +msgstr "Максимальная скорость X" + +msgid "Maximum speed Y" +msgstr "Максимальная скорость Y" + +msgid "Maximum speed Z" +msgstr "Максимальная скорость Z" + +msgid "Maximum speed E" +msgstr "Максимальная скорость E" + +msgid "Machine limits" +msgstr "Ограничения машины" + +msgid "Maximum X speed" +msgstr "Максимальная скорость X" + +msgid "Maximum Y speed" +msgstr "Максимальная скорость Y" + +msgid "Maximum Z speed" +msgstr "Максимальная скорость Z" + +msgid "Maximum E speed" +msgstr "Максимальная скорость E" + +msgid "Maximum acceleration X" +msgstr "Максимальное ускорение X" + +msgid "Maximum acceleration Y" +msgstr "Максимальное ускорение Y" + +msgid "Maximum acceleration Z" +msgstr "Максимальное ускорение Z" + +msgid "Maximum acceleration E" +msgstr "Максимальное ускорение E" + +msgid "Maximum acceleration of the X axis" +msgstr "Максимальное ускорение оси X" + +msgid "Maximum acceleration of the Y axis" +msgstr "Максимальное ускорение оси Y" + +msgid "Maximum acceleration of the Z axis" +msgstr "Максимальное ускорение оси Z" + +msgid "Maximum acceleration of the E axis" +msgstr "Максимальное ускорение оси E" + +msgid "Maximum jerk X" +msgstr "Максимальный рывок X" + +msgid "Maximum jerk Y" +msgstr "Максимальный рывок Y" + +msgid "Maximum jerk Z" +msgstr "Максимальный рывок Z" + +msgid "Maximum jerk E" +msgstr "Максимальный рывок E" + +msgid "Maximum jerk of the X axis" +msgstr "Максимальный рывок оси X" + +msgid "Maximum jerk of the Y axis" +msgstr "Максимальный рывок оси Y" + +msgid "Maximum jerk of the Z axis" +msgstr "Максимальный рывок оси Z" + +msgid "Maximum jerk of the E axis" +msgstr "Максимальный рывок оси E" + +msgid "Minimum speed for extruding" +msgstr "Минимальная скорость экструзии" + +msgid "Minimum speed for extruding (M205 S)" +msgstr "Минимальная скорость для выдавливания (M205 S)" + +msgid "Minimum travel speed" +msgstr "Минимальная скорость движения" + +msgid "Minimum travel speed (M205 T)" +msgstr "Минимальная скорость движения (M205 T)" + +msgid "Maximum acceleration for extruding" +msgstr "Максимальное ускорение для экструдировани" + +msgid "Maximum acceleration for extruding (M204 P)" +msgstr "Максимальное ускорение для выдавливания (M204 P)" + +msgid "Maximum acceleration for retracting" +msgstr "Максимальное ускорение для отката" + +msgid "Maximum acceleration for retracting (M204 R)" +msgstr "Максимальное ускорение для отката (M204 R)" + +msgid "Maximum acceleration for travel" +msgstr "Максимальное ускорение для движения" + +msgid "Maximum acceleration for travel (M204 T)" +msgstr "Максимальное ускорение для движения (M204 T)" + +msgid "Fan speed" +msgstr "Скорость вентилятора" + +msgid "" +"Part cooling fan speed may be increased when auto cooling is enabled. This " +"is the maximum speed limitation of part cooling fan" +msgstr "" +"Скорость вентилятора охлаждения детали может быть увеличена, если включено " +"автоматическое охлаждение. Это максимальное ограничение скорости вентилятора " +"охлаждения детали" + +msgid "Max" +msgstr "Max" + +msgid "" +"The largest printable layer height for extruder. Used tp limits the maximum " +"layer hight when enable adaptive layer height" +msgstr "" +"Наибольшая высота печатаемого слоя для экструдера. Используемый tp " +"ограничивает максимальную высоту слоя при включении адаптивной высоты слоя" + +msgid "Minimum speed for part cooling fan" +msgstr "Минимальная скорость вентилятора охлаждения детали" + +msgid "" +"Speed of auxiliary part cooling fan. Auxiliary fan will run at this speed " +"during printing except the first several layers which is defined by no " +"cooling layers" +msgstr "" +"Скорость вентилятора охлаждения вспомогательной части. Вспомогательный " +"вентилятор будет работать с такой скоростью во время печати, за исключением " +"первых нескольких слоев, которые не определяются слоями охлаждения" + +msgid "Min" +msgstr "Min" + +msgid "" +"The lowest printable layer height for extruder. Used tp limits the minimum " +"layer hight when enable adaptive layer height" +msgstr "" +"Самая низкая высота печатаемого слоя для экструдера. Используемый tp " +"ограничивает минимальную высоту слоя при включении адаптивной высоты слоя" + +msgid "Min print speed" +msgstr "Мин. скорость печати" + +msgid "The minimum printing speed when slow down for cooling" +msgstr "Минимальная скорость печати при замедлении для охлаждения" + +msgid "Nozzle diameter" +msgstr "Диаметр сопла" + +msgid "Diameter of nozzle" +msgstr "Диаметр сопла" + +msgid "Host Type" +msgstr "Тип хоста" + +msgid "" +"Slic3r can upload G-code files to a printer host. This field must contain " +"the kind of the host." +msgstr "" +"Slic3r может загружать файлы G-кода на хост принтера. Это поле должно " +"содержать тип хоста." + +msgid "Nozzle volume" +msgstr "Объем сопла" + +msgid "Volume of nozzle between the cutter and the end of nozzle" +msgstr "Объем сопла между резцом и концом сопла" + +msgid "Start end points" +msgstr "Начальные конечные точки" + +msgid "The start and end points which is from cutter area to garbage can." +msgstr "Начальная и конечная точки от зоны резки до мусорного бака." + +msgid "Reduce infill retraction" +msgstr "Уменьшите ретракт заполнения" + +msgid "" +"Don't retract when the travel is in infill area absolutely. That means the " +"oozing can't been seen. This can reduce times of retraction for complex " +"model and save printing time, but make slicing and G-code generating slower" +msgstr "" +"Отключает ретракт, когда сопло находится в зоне заполнения. Это может " +"сократить время втягивания сложной модели и сэкономить время печати, но " +"замедлит нарезку и генерацию G-кода" + +msgid "Enable" +msgstr "Включение" + +msgid "Filename format" +msgstr "Формат имени файла" + +msgid "User can self-define the project file name when export" +msgstr "" +"Пользователь может самостоятельно определить имя файла проекта при экспорте" + +msgid "Detect overhang wall" +msgstr "Обнаружение нависающих периметров" + +#, c-format, boost-format +msgid "" +"Detect the overhang percentage relative to line width and use different " +"speed to print. For 100%% overhang, bridge speed is used." +msgstr "" +"Определите процент свеса относительно ширины линии и используйте для печати " +"другую скорость. Для 100%% -ного свеса используется скорость моста." + +msgid "Line width of inner wall" +msgstr "Ширина линии внутреннего периметра" + +msgid "Speed of inner wall" +msgstr "Скорость внутреннего периметра" + +msgid "Number of walls of every layer" +msgstr "Количество периметров каждого слоя" + +msgid "" +"If you want to process the output G-code through custom scripts, just list " +"their absolute paths here. Separate multiple scripts with a semicolon. " +"Scripts will be passed the absolute path to the G-code file as the first " +"argument, and they can access the Slic3r config settings by reading " +"environment variables." +msgstr "" +"Если вы хотите обработать выходной G-код через пользовательские сценарии, " +"просто перечислите их абсолютные пути здесь. Разделите несколько сценариев " +"точкой с запятой. Сценариям передается абсолютный путь к файлу G-кода в " +"качестве первого аргумента, и они могут получить доступ к настройкам " +"конфигурации Slic3r путем чтения переменных среды." + +msgid "Raft contact Z distance" +msgstr "Расстояние контакта плота Z" + +msgid "Z gap between object and raft. Ignored for soluble interface" +msgstr "" +"Z зазор между объектом и подложкой. Игнорируется для растворимого материала" + +msgid "Raft expansion" +msgstr "Расширение плота" + +msgid "Expand all raft layers in XY plane" +msgstr "Развернуть все слои плота в плоскости XY" + +msgid "Initial layer density" +msgstr "Начальная плотность слоя" + +msgid "Density of the first raft or support layer" +msgstr "Плотность первого слоя или опорного слоя" + +msgid "Initial layer expansion" +msgstr "Расширение начального слоя" + +msgid "Expand the first raft or support layer to improve bed plate adhesion" +msgstr "" +"Расширьте первый рафт или опорный слой, чтобы улучшить адгезию опорной плиты" + +msgid "Raft layers" +msgstr "Количество слоёв подложки" + +msgid "" +"Object will be raised by this number of support layers. Use this function to " +"avoid wrapping when print ABS" +msgstr "" +"Объект будет поднят таким количеством опорных слоев. Используйте эту " +"функцию, чтобы избежать обтекания при печати ABS" + +msgid "" +"G-code path is genereated after simplifing the contour of model to avoid too " +"much points and gcode lines in gcode file. Smaller value means higher " +"resolution and more time to slice" +msgstr "" +"Путь G-кода генерируется после упрощения контура модели, чтобы избежать " +"слишком большого количества точек и линий gcode в файле gcode. Меньшее " +"значение означает более высокое разрешение и больше времени для среза" + +msgid "Travel distance threshold" +msgstr "Порог расстояния в пути" + +msgid "" +"Only trigger retraction when the travel distance is longer than this " +"threshold" +msgstr "" +"Срабатывание только в том случае, если расстояние перемещения превышает этот " +"порог" + +msgid "Retract amount before wipe" +msgstr "Ретракт при разглаживании" + +msgid "" +"The length of fast retraction before wipe, relative to retraction length" +msgstr "Длина быстрого втягивания перед очисткой относительно длины втягивания" + +msgid "Retract when change layer" +msgstr "Ретракт при смене слоя" + +msgid "Force a retraction when changes layer" +msgstr "Принудительный откат при смене слоя" + +msgid "Length" +msgstr "Длинна" + +msgid "Retraction Length" +msgstr "Длинна отката" + +msgid "" +"Some amount of material in extruder is pulled back to avoid ooze during long " +"travel. Set zero to disable retraction" +msgstr "" +"Некоторое количество материала в экструдере вытягивается обратно, чтобы " +"избежать зудения во время длительного перемещения. Установите нуль, чтобы " +"отключить ретракт" + +msgid "Z hop when retract" +msgstr "Z-прыжок при откате" + +msgid "" +"Whenever the retraction is done, the nozzle is lifted a little to create " +"clearance between nozzle and the print. It prevents nozzle from hitting the " +"print when travel move. Using spiral line to lift z can prevent stringing" +msgstr "" +"Каждый раз, когда выполняется откат, насадка немного поднимается для " +"создания зазора между насадкой и печатью. Это предотвращает попадание " +"насадки на печать при движении. Использование спиральной линии для подъема z " +"может предотвратить стяжку" + +msgid "Z hop type" +msgstr "Тип Z-прыжка" + +msgid "Slope" +msgstr "Склон" + +msgid "Spiral" +msgstr "Спираль" + +msgid "Extra length on restart" +msgstr "Дополнительная длина при перезагрузке" + +msgid "" +"When the retraction is compensated after the travel move, the extruder will " +"push this additional amount of filament. This setting is rarely needed." +msgstr "" +"Когда втягивание компенсируется после перемещения, экструдер проталкивает " +"это дополнительное количество нити. Эта настройка редко требуется." + +msgid "" +"When the retraction is compensated after changing tool, the extruder will " +"push this additional amount of filament." +msgstr "" +"Когда втягивание компенсируется после замены инструмента, экструдер " +"проталкивает это дополнительное количество нити." + +msgid "Retraction Speed" +msgstr "Скорость ретракта" + +msgid "Speed of retractions" +msgstr "Скорость ретракта" + +msgid "Deretraction Speed" +msgstr "Скорость компенсирующего ретракта" + +msgid "" +"Speed for reloading filament into extruder. Zero means same speed with " +"retraction" +msgstr "" +"Скорость перезарядки филпмента в экструдер. Ноль означает ту же скорость при " +"ретракте" + +msgid "Use firmware retraction" +msgstr "Использовать ретракт из прошивки" + +msgid "" +"This experimental setting uses G10 and G11 commands to have the firmware " +"handle the retraction. This is only supported in recent Marlin." +msgstr "" +"Эта экспериментальная настройка использует команды G10 и G11 для того, чтобы " +"микропрограммное обеспечение обрабатывало ретракт. Это поддерживается только " +"в недавнем Марлине." + +msgid "Show auto-calibration marks" +msgstr "Показать метки автоматической калибровки" + +msgid "Seam position" +msgstr "Положение шва" + +msgid "The start position to print each part of outer wall" +msgstr "Начальное положение для печати каждой части наружнго периметра" + +msgid "Nearest" +msgstr "Ближайший" + +msgid "Aligned" +msgstr "Выровненный" + +msgid "Back" +msgstr "Сзади" + +msgid "Random" +msgstr "Случайный" + +msgid "Seam gap" +msgstr "Зазор шва" + +msgid "" +"In order to reduce the visibility of the seam in a closed loop extrusion, " +"the loop is interrupted and shortened by a specified amount.\n" +"This amount can be specified in millimeters or as a percentage of the " +"current extruder diameter. The default value for this parameter is 15%." +msgstr "" +"Чтобы уменьшить видимость шва при экструзии с замкнутым контуром, контур " +"прерывается и укорачивается на заданную величину.\n" +"Это количество может быть указано в миллиметрах или в процентах от текущего " +"диаметра экструдера. Значение по умолчанию для этого параметра - 15%." + +msgid "Role base wipe speed" +msgstr "Базовая скорость очистки ролей" + +msgid "" +"The wipe speed is determined by the speed of the current extrusion role.e.g. " +"if a wipe action is executed immediately following an outer wall extrusion, " +"the speed of the outer wall extrusion will be utilized for the wipe action." +msgstr "" +"Скорость очистки определяется скоростью текущей роли экструзии. Например " +"если действие очистки выполняется сразу после экструзии внешнего периметра, " +"скорость экструзии внешнего периметра будет использоваться для действия " +"очистки." + +msgid "Wipe on loops" +msgstr "Разглаживание шва" + +msgid "" +"To minimize the visibility of the seam in a closed loop extrusion, a small " +"inward movement is executed before the extruder leaves the loop." +msgstr "" +"Чтобы свести к минимуму видимость шва при экструзии с замкнутым контуром, " +"небольшое движение внутрь выполняется до выхода экструдера из контура." + +msgid "Wipe speed" +msgstr "Скорость очистки" + +msgid "" +"The wipe speed is determined by the speed setting specified in this " +"configuration.If the value is expressed as a percentage (e.g. 80%), it will " +"be calculated based on the travel speed setting above.The default value for " +"this parameter is 80%" +msgstr "" +"Скорость очистки определяется настройкой скорости, указанной в данной " +"конфигурации. Если это значение выражено в процентах (например, 80%), то оно " +"будет рассчитано на основе приведенной выше установки скорости движения. " +"Значение по умолчанию для этого параметра - 80%" + +msgid "Skirt distance" +msgstr "Растояние между юбкой/каймой" + +msgid "Distance from skirt to brim or object" +msgstr "Растояние между юбкой/каймой или моделью" + +msgid "Skirt height" +msgstr "Слоёв юбки" + +msgid "How many layers of skirt. Usually only one layer" +msgstr "Сколько слоев юбки. Обычно только один слой" + +msgid "Skirt loops" +msgstr "Юбок вокруг модели" + +msgid "Number of loops for the skirt. Zero means disabling skirt" +msgstr "Количество петель для юбки. Ноль означает отключение юбки" + +msgid "" +"The printing speed in exported gcode will be slowed down, when the estimated " +"layer time is shorter than this value, to get better cooling for these layers" +msgstr "" +"Скорость печати в экспортируемом gcode будет замедлена, когда расчетное " +"время слоя меньше этого значения, чтобы получить лучшее охлаждение для этих " +"слоев" + +msgid "Minimum sparse infill threshold" +msgstr "Минимальный порог заполнения" + +msgid "" +"Sparse infill area which is smaller than threshold value is replaced by " +"internal solid infill" +msgstr "" +"Площадь заполнения, которая меньше порогового значения, заменяется " +"внутренним сплошным заполнением" + +msgid "mm²" +msgstr "mm²" + +msgid "Line width of internal solid infill" +msgstr "Ширина линии внутреннего сплошного заполнения" + +msgid "Speed of internal solid infill, not the top and bottom surface" +msgstr "" +"Скорость внутреннего твердого заполнения, а не верхней и нижней поверхности" + +msgid "Spiral vase" +msgstr "Спиральная ваза" + +msgid "" +"Spiralize smooths out the z moves of the outer contour. And turns a solid " +"model into a single walled print with solid bottom layers. The final " +"generated model has no seam" +msgstr "" +"Переход по спирали сглаживает движение z внешнего контура. И превращает " +"твердотельную модель в одностенную печать со сплошными нижними слоями. " +"Конечная сгенерированная модель не имеет шва" + +msgid "" +"If smooth or traditional mode is selected, a timelapse video will be " +"generated for each print. After each layer is printed, a snapshot is taken " +"with the chamber camera. All of these snapshots are composed into a " +"timelapse video when printing completes. If smooth mode is selected, the " +"toolhead will move to the excess chute after each layer is printed and then " +"take a snapshot. Since the melt filament may leak from the nozzle during the " +"process of taking a snapshot, prime tower is required for smooth mode to " +"wipe nozzle." +msgstr "" +"Если выбран плавный или традиционный режим, для каждой печати будет " +"сгенерировано видео с временным интервалом. После печати каждого слоя " +"производится снимок камеры. Все эти снимки создаются в виде видео с " +"временным интервалом по завершении печати. Если выбран режим сглаживания, то " +"после печати каждого слоя головка инструментов перемещается к избыточному " +"лотку, а затем снимается снимок. Поскольку филамент может просачиваться из " +"сопла во время процесса получения снимка, для гладкого режима очистки сопла " +"требуется башня очистки." + +msgid "Traditional" +msgstr "Традиционный" + +msgid "Temperature variation" +msgstr "Изменение температуры" + +msgid "Start G-code" +msgstr "Стартовый G-code" + +msgid "Start G-code when start the whole printing" +msgstr "Стартовый G-code при запуске всей печати" + +msgid "Start G-code when start the printing of this filament" +msgstr "Стартовый G-code при запуске печати этим филаментом" + +msgid "Slice gap closing radius" +msgstr "Радиус закрытия пробелов при нарезке" + +msgid "" +"Cracks smaller than 2x gap closing radius are being filled during the " +"triangle mesh slicing. The gap closing operation may reduce the final print " +"resolution, therefore it is advisable to keep the value reasonably low." +msgstr "" +"Во время разрезания трещины на треугольную сетку заполняются трещины, " +"меньшие чем 2 радиуса замыкания зазора. Операция закрытия промежутка может " +"уменьшить конечное разрешение печати, поэтому желательно поддерживать " +"значение на достаточно низком уровне." + +msgid "Slicing Mode" +msgstr "Режим нарезки" + +msgid "" +"Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " +"close all holes in the model." +msgstr "" +"Используйте «Четный-нечетный» для 3DLabPrint моделей самолетов. Для закрытия " +"всех отверстий в модели используется команда «Закрыть отверстия»." + +msgid "Regular" +msgstr "Обычный" + +msgid "Even-odd" +msgstr "Чётный-нечетный" + +msgid "Close holes" +msgstr "Закрыть отверстия" + +msgid "Enable support" +msgstr "Включить поддержку" + +msgid "Enable support generation." +msgstr "Включить генерацию поддержки." + +msgid "" +"normal(auto) and tree(auto) is used to generate support automatically. If " +"normal(manual) or tree(manual) is selected, only support enforcers are " +"generated" +msgstr "" +"обычная (auto) и древовидная (auto) используется для автоматического " +"создания поддержки. Если выбрана обычная (ручная) или древовидная (ручная), " +"создаются только средства обеспечения поддержки" + +msgid "normal(auto)" +msgstr "обычная (авто)" + +msgid "tree(auto)" +msgstr "древовидная (авто)" + +msgid "normal(manual)" +msgstr "обычная (ручная)" + +msgid "tree(manual)" +msgstr "древовидная (ручная)" + +msgid "Support/object xy distance" +msgstr "Поддержка/объект XY расстояние" + +msgid "XY separation between an object and its support" +msgstr "Разделение XY между объектом и поддержкой" + +msgid "Pattern angle" +msgstr "Угол шаблона" + +msgid "Use this setting to rotate the support pattern on the horizontal plane." +msgstr "" +"Используйте эту настройку, чтобы повернуть шаблон поддержки в горизонтальной " +"плоскости." + +msgid "On build plate only" +msgstr "Только от стола" + +msgid "Don't create support on model surface, only on build plate" +msgstr "Не создавайте опору на поверхности модели, только от стола" + +msgid "Support critical regions only" +msgstr "Поддерживать только критические области" + +msgid "" +"Only create support for critical regions including sharp tail, cantilever, " +"etc." +msgstr "" +"Создавать поддержку только для критических областей, включая острый хвост, " +"консоль и т.д." + +msgid "Top Z distance" +msgstr "Верхнее расстояние Z" + +msgid "The z gap between the top support interface and object" +msgstr "Зазор по оси z между верхом поддержки и объектом" + +msgid "Bottom Z distance" +msgstr "Нижнее расстояние Z" + +msgid "The z gap between the bottom support interface and object" +msgstr "Зазор по оси z между низом поддержки и объектом" + +msgid "Support/raft base" +msgstr "Поддержка/основание плота" + +msgid "" +"Filament to print support base and raft. \"Default\" means no specific " +"filament for support and current filament is used" +msgstr "" +"Филамент для печати опорного основания и плота. «По умолчанию» означает " +"отсутствие конкретного филамента для опоры и использование текущего филамента" + +msgid "Line width of support" +msgstr "Ширина линии поддержки" + +msgid "Interface use loop pattern" +msgstr "Интерфейс использует шаблон шлейфа" + +msgid "" +"Cover the top contact layer of the supports with loops. Disabled by default." +msgstr "Накройте петлями верхний контактный слой опор. Отключено по умолчанию." + +msgid "Support/raft interface" +msgstr "Интерфейс поддержки/плота" + +msgid "" +"Filament to print support interface. \"Default\" means no specific filament " +"for support interface and current filament is used" +msgstr "" +"Филамент для печати поддержки. «По умолчанию» означает отсутствие " +"конкретного филамента для печати поддержки, и используется текущий филамент" + +msgid "Top interface layers" +msgstr "Верхний слой поддержки" + +msgid "Number of top interface layers" +msgstr "Количество верхних слоев поддержки" + +msgid "Bottom interface layers" +msgstr "Нижние слои поддержки" + +msgid "Top interface spacing" +msgstr "Расстояние между верхними интерфейсами" + +msgid "Spacing of interface lines. Zero means solid interface" +msgstr "Расстояние между линиями поддержки. Ноль означает сплошноую поддержку" + +msgid "Bottom interface spacing" +msgstr "Интервал нижнего слоя поддержки" + +msgid "Spacing of bottom interface lines. Zero means solid interface" +msgstr "" +"Расстояние между нижними интерфейсными линиями. Ноль означает сплошной " +"интерфейс" + +msgid "Speed of support interface" +msgstr "Скорость печати поддержки" + +msgid "Base pattern" +msgstr "Базовый шаблон" + +msgid "Line pattern of support" +msgstr "Линия поддержки" + +msgid "Rectilinear grid" +msgstr "Прямолинейная сетка" + +msgid "Hollow" +msgstr "Пустой" + +msgid "Interface pattern" +msgstr "Шаблон интефейса" + +msgid "" +"Line pattern of support interface. Default pattern for non-soluble support " +"interface is Rectilinear, while default pattern for soluble support " +"interface is Concentric" +msgstr "" +"Шаблон линии поддержки. Шаблон по умолчанию для нерастворимой поддержки - " +"прямолинейный, в то время как шаблон по умолчанию для растворимой поддержки " +"- концентрический" + +msgid "Rectilinear Interlaced" +msgstr "Прямолинейный Чересстрочный" + +msgid "Base pattern spacing" +msgstr "Базовый интервал шаблона" + +msgid "Spacing between support lines" +msgstr "Расстояние между линиями поддержки" + +msgid "Normal Support expansion" +msgstr "Нормальное расширение поддержки" + +msgid "Expand (+) or shrink (-) the horizontal span of normal support" +msgstr "Расширить (+) или уменьшить (-) горизонтальный пролет поддержки" + +msgid "Speed of support" +msgstr "Скорость поддержки" + +msgid "" +"Style and shape of the support. For normal support, projecting the supports " +"into a regular grid will create more stable supports (default), while snug " +"support towers will save material and reduce object scarring.\n" +"For tree support, slim style will merge branches more aggressively and save " +"a lot of material (default), while hybrid style will create similar " +"structure to normal support under large flat overhangs." +msgstr "" +"Стиль и форма опоры. Для обычной поддержки проецирование опор в обычную " +"сетку создаст более устойчивые опоры (по умолчанию), в то время как упорные " +"опоры сэкономят материал и уменьшат образование рубцов на объектах.\n" +"Для поддержки дерева тонкий стиль будет объединять ветви более агрессивно и " +"экономить много материала (по умолчанию), в то время как гибридный стиль " +"создаст структуру, аналогичную обычной поддержке при больших плоских свесах." + +msgid "Snug" +msgstr "Аккуратный" + +msgid "Tree Slim" +msgstr "Древовидная тонкая" + +msgid "Tree Strong" +msgstr "Древовидная сильная" + +msgid "Tree Hybrid" +msgstr "Древовидная гибридная" + +msgid "Independent support layer height" +msgstr "Независимая высота опорного слоя" + +msgid "" +"Support layer uses layer height independent with object layer. This is to " +"support customizing z-gap and save print time.This option will be invalid " +"when the prime tower is enabled." +msgstr "" +"Опорный слой использует высоту слоя, не зависящую от слоя объекта. Это " +"необходимо для поддержки настройки z-gap и экономии времени печати. Этот " +"параметр будет недопустимым, если включена основная башня." + +msgid "Threshold angle" +msgstr "Угол порога" + +msgid "" +"Support will be generated for overhangs whose slope angle is below the " +"threshold." +msgstr "Будет создана опора для свесов с углом наклона ниже порога." + +msgid "Tree support branch angle" +msgstr "Угол ветви опоры дерева" + +msgid "" +"This setting determines the maximum overhang angle that t he branches of " +"tree support allowed to make.If the angle is increased, the branches can be " +"printed more horizontally, allowing them to reach farther." +msgstr "" +"Этот параметр определяет максимальный угол свеса, который допускается для " +"ветвей поддержки дерева. Если угол увеличен, ветви могут печататься более " +"горизонтально, позволяя им достигать большего расстояния." + +msgid "Tree support branch distance" +msgstr "Адаптивная высота слоя" + +msgid "" +"This setting determines the distance between neighboring tree support nodes." +msgstr "" +"Этот параметр определяет расстояние между соседними узлами поддержки дерева." + +msgid "Adaptive layer height" +msgstr "Адаптивная ширина слоя" + +msgid "" +"Enabling this option means the height of tree support layer except the " +"first will be automatically calculated " +msgstr "" +"Включение этой опции означает, что высота слоя поддержки дерева, за " +"исключением первого, будет рассчитана автоматически " + +msgid "Auto brim width" +msgstr "Ширина каймы опоры дерева" + +msgid "" +"Enabling this option means the width of the brim for tree support will be " +"automatically calculated" +msgstr "" +"Включение этой опции означает, что ширина поля для поддержки дерева будет " +"рассчитана автоматически" + +msgid "Tree support brim width" +msgstr "Ширина границы каймы дерева" + +msgid "Distance from tree branch to the outermost brim line" +msgstr "Расстояние от ветви дерева до самой внешней линии границы каймы" + +msgid "Tree support branch diameter" +msgstr "Диаметр ветви древовидной поддержки" + +msgid "This setting determines the initial diameter of support nodes." +msgstr "Этот параметр определяет начальный диаметр опорных узлов." + +msgid "Tree support wall loops" +msgstr "Контуры опорной стенки дерева" + +msgid "This setting specify the count of walls around tree support" +msgstr "Этот параметр задает количество периметров вокруг опоры дерева" + +msgid "Tree support with infill" +msgstr "Поддержка дерева с заполнением" + +msgid "" +"This setting specifies whether to add infill inside large hollows of tree " +"support" +msgstr "" +"Этот параметр определяет, следует ли добавлять заполнение внутри больших " +"полостей поддержки дерева" + +msgid "Target chamber temperature" +msgstr "Температура целевой камеры" + +msgid "Nozzle temperature for layers after the initial one" +msgstr "Температура сопла для слоев после начального" + +msgid "Bed temperature difference" +msgstr "Разность температур слоя" + +msgid "" +"Do not recommend bed temperature of other layer to be lower than initial " +"layer for more than this threshold. Too low bed temperature of other layer " +"may cause the model broken free from build plate" +msgstr "" +"Не рекомендуется, чтобы температура слоя другого слоя была ниже, чем " +"температура исходного слоя, при превышении этого порога. Слишком низкая " +"температура слоя другого слоя может привести к тому, что модель будет " +"разорвана без конструкционной пластины" + +msgid "Detect thin wall" +msgstr "Обнаружение тонкой стенки" + +msgid "" +"Detect thin wall which can't contain two line width. And use single line to " +"print. Maybe printed not very well, because it's not closed loop" +msgstr "" +"Определите тонкую стенку, которая не может содержать две линии. И " +"использовать одну строку для печати. Может быть напечатан не очень хорошо, " +"потому что это не замкнутый контур" + +msgid "" +"This gcode is inserted when change filament, including T command to trigger " +"tool change" +msgstr "" +"Этот gcode вставляется при изменении филамента, включая команду T для " +"запуска смены инструмента" + +msgid "Line width for top surfaces" +msgstr "Ширина линии для верхнего слоя" + +msgid "Speed of top surface infill which is solid" +msgstr "Скорость сплошного заполнения верхней поверхности" + +msgid "Top shell layers" +msgstr "Сплошных слоёв сверху" + +msgid "" +"This is the number of solid layers of top shell, including the top surface " +"layer. When the thickness calculated by this value is thinner than top shell " +"thickness, the top shell layers will be increased" +msgstr "" +"Это количество сплошных слоев верхней оболочки, включая верхний " +"поверхностный слой. Если толщина, рассчитанная по этому значению, меньше " +"толщины верхней оболочки, то верхние слои оболочки будут увеличены" + +msgid "Top solid layers" +msgstr "Верхние сплошные слои" + +msgid "Top shell thickness" +msgstr "Толщина верхней оболочки" + +msgid "" +"The number of top solid layers is increased when slicing if the thickness " +"calculated by top shell layers is thinner than this value. This can avoid " +"having too thin shell when layer height is small. 0 means that this setting " +"is disabled and thickness of top shell is absolutely determained by top " +"shell layers" +msgstr "" +"Количество верхних сплошных слоев увеличивается при разрезании, если " +"толщина, вычисленная слоями верхней оболочки, тоньше этого значения. Это " +"позволяет избежать слишком тонкой оболочки при небольшой высоте слоя. 0 " +"означает, что эта настройка отключена и толщина верхней оболочки полностью " +"ограничена верхними слоями оболочки" + +msgid "Speed of travel which is faster and without extrusion" +msgstr "Скорость перемещения, которая является более быстрой и без экструзии" + +msgid "Wipe while retracting" +msgstr "Ретракт при очистке" + +msgid "" +"Move nozzle along the last extrusion path when retracting to clean leaked " +"material on nozzle. This can minimize blob when print new part after travel" +msgstr "" +"Перемещайте насадку по последнему пути выдавливания при уборке для очистки " +"вытекшего материала на насадке. Это может минимизировать большой двоичный " +"объект при печати новой детали после перемещения" + +msgid "Wipe Distance" +msgstr "Расстояние очистки" + +msgid "" +"Discribe how long the nozzle will move along the last path when retracting" +msgstr "" +"Укажите, как долго насадка будет двигаться по последнему пути при уборке" + +msgid "" +"The wiping tower can be used to clean up the residue on the nozzle and " +"stabilize the chamber pressure inside the nozzle, in order to avoid " +"appearance defects when printing objects." +msgstr "" +"Очистительная колонна может использоваться для очистки остатка на сопле и " +"стабилизации давления в камере внутри сопла, чтобы избежать дефектов " +"внешнего вида при печати предметов." + +msgid "Purging volumes" +msgstr "Объём очистки" + +msgid "Flush multiplier" +msgstr "Множитель очистки" + +msgid "" +"The actual flushing volumes is equal to the flush multiplier multiplied by " +"the flushing volumes in the table." +msgstr "" +"Фактические объемы промывки равны множителю промывки, умноженному на объемы " +"промывки в таблице." + +msgid "Prime volume" +msgstr "Основной объём" + +msgid "The volume of material to prime extruder on tower." +msgstr "Объем материала для первичного экструдера на башне." + +msgid "Width" +msgstr "Ширина" + +msgid "Width of prime tower" +msgstr "Ширина основной башни" + +msgid "" +"Purging after filament change will be done inside objects' infills. This may " +"lower the amount of waste and decrease the print time. If the walls are " +"printed with transparent filament, the mixed color infill will be seen " +"outside. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Продувка после изменения нити будет производиться внутри заполнений " +"объектов. Это может уменьшить количество отходов и время печати. Если " +"периметры напечатаны прозрачной нитью, смешанное цветовое наполнение будет " +"видно снаружи. Он не вступит в силу, если не включена первичная башня." + +msgid "" +"Purging after filament change will be done inside objects' support. This may " +"lower the amount of waste and decrease the print time. It will not take " +"effect, unless the prime tower is enabled." +msgstr "" +"Продувка после замены нити будет производиться внутри опоры объектов. Это " +"может уменьшить количество отходов и время печати. Он не вступит в силу, " +"если не включена первичная башня." + +msgid "" +"This object will be used to purge the nozzle after a filament change to save " +"filament and decrease the print time. Colours of the objects will be mixed " +"as a result. It will not take effect, unless the prime tower is enabled." +msgstr "" +"Этот объект будет использоваться для продувки сопла после смены нити накала " +"для экономии нити накала и уменьшения времени печати. В результате цвета " +"объектов будут смешаны. Он не вступит в силу, если не включена первичная " +"башня." + +msgid "X-Y hole compensation" +msgstr "Компенсация отверстия XY" + +msgid "" +"Holes of object will be grown or shrunk in XY plane by the configured value. " +"Positive value makes holes bigger. Negative value makes holes smaller. This " +"function is used to adjust size slightly when the object has assembling issue" +msgstr "" +"Отверстия объекта будут выращены или сжаты в плоскости XY на заданное " +"значение. Положительное значение делает отверстия больше. Отрицательное " +"значение делает отверстия меньше. Эта функция используется для небольшой " +"корректировки размера, когда объект имеет проблему сборки" + +msgid "X-Y contour compensation" +msgstr "Компенсация контура XY" + +msgid "" +"Contour of object will be grown or shrunk in XY plane by the configured " +"value. Positive value makes contour bigger. Negative value makes contour " +"smaller. This function is used to adjust size slightly when the object has " +"assembling issue" +msgstr "" +"Контур объекта будет увеличен или уменьшен в плоскости XY на заданное " +"значение. Положительное значение делает контур больше. Отрицательное " +"значение уменьшает контур. Эта функция используется для небольшой " +"корректировки размера, когда объект имеет проблему сборки" + +msgid "G-code thumbnails" +msgstr "Миниатюры G-code" + +msgid "" +"Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " +"following format: \"XxY, XxY, ...\"" +msgstr "" +"Размеры рисунков должны храниться в файлах .gcode и .sl1/.sl1s, в следующем " +"формате: «XxY, XxY»,..." + +msgid "Use relative E distances" +msgstr "Используйте относительные расстояния E" + +msgid "" +"Relative extrusion is recommended when using \"label_objects\" option.Some " +"extruders work better with this option unckecked (absolute extrusion mode). " +"Wipe tower is only compatible with relative mode. It is always enabled on " +"BambuLab printers. Default is checked" +msgstr "" +"При использовании опции «label_objects» рекомендуется относительное " +"выдавливание. Некоторые экструдеры работают лучше с этой опцией без проверки " +"(абсолютный режим экструзии). Обтирочная башня совместима только с " +"относительным режимом. Она всегда включена на принтерах BambuLab. По " +"умолчанию установлен флажок" + +msgid "" +"Classic wall generator produces walls with constant extrusion width and for " +"very thin areas is used gap-fill. Arachne engine produces walls with " +"variable extrusion width" +msgstr "" +"Классический генератор периметров производит периметры с постоянной шириной " +"выдавливания и для очень тонких областей используется заполнение промежутка. " +"Двигатель Arachne производит периметры с переменной шириной экструзии" + +msgid "Classic" +msgstr "Класический" + +msgid "Arachne" +msgstr "Arachne" + +msgid "Wall transition length" +msgstr "Длина перехода к периметру" + +msgid "" +"When transitioning between different numbers of walls as the part becomes " +"thinner, a certain amount of space is allotted to split or join the wall " +"segments. It's expressed as a percentage over nozzle diameter" +msgstr "" +"При переходе между различными числами периметров, когда деталь становится " +"тоньше, для разделения или соединения сегментов периметров выделяется " +"определенное количество пространства. Он выражается в процентах от диаметра " +"сопла" + +msgid "Wall transitioning filter margin" +msgstr "Поле фильтра при переходе между периметрами" + +msgid "" +"Prevent transitioning back and forth between one extra wall and one less. " +"This margin extends the range of extrusion widths which follow to [Minimum " +"wall width - margin, 2 * Minimum wall width + margin]. Increasing this " +"margin reduces the number of transitions, which reduces the number of " +"extrusion starts/stops and travel time. However, large extrusion width " +"variation can lead to under- or overextrusion problems. It's expressed as a " +"percentage over nozzle diameter" +msgstr "" +"Предотвращение перехода назад и вперед между одной дополнительной стенкой и " +"одной меньше. Это поле расширяет диапазон ширины выдавливания до " +"[Минимальная ширина стенки - поле, 2 * Минимальная ширина стенки + поле]. " +"Увеличение этого запаса уменьшает количество переходов, что уменьшает " +"количество запусков/остановок экструзии и время перемещения. Однако большое " +"изменение ширины экструзии может привести к проблемам недостаточной или " +"избыточной экструзии. Он выражается в процентах от диаметра сопла" + +msgid "Wall transitioning threshold angle" +msgstr "Пороговый угол перехода между периметрами" + +msgid "" +"When to create transitions between even and odd numbers of walls. A wedge " +"shape with an angle greater than this setting will not have transitions and " +"no walls will be printed in the center to fill the remaining space. Reducing " +"this setting reduces the number and length of these center walls, but may " +"leave gaps or overextrude" +msgstr "" +"Когда создавать переходы между четным и нечетным числом периметров. Форма " +"клина с углом больше этого параметра не будет иметь переходов, и периметры " +"не будут печататься в центре для заполнения оставшегося пространства. " +"Уменьшение этого параметра уменьшает количество и длину этих центральных " +"периметров, но может оставлять промежутки или чрезмерное вытягивание" + +msgid "Wall distribution count" +msgstr "Счетчик распределения по периметрам" + +msgid "" +"The number of walls, counted from the center, over which the variation needs " +"to be spread. Lower values mean that the outer walls don't change in width" +msgstr "" +"Количество периметров, отсчитываемое от центра, по которому нужно разбросать " +"вариацию. Более низкие значения означают, что наружные периметры не " +"изменяются по ширине" + +msgid "Minimum feature size" +msgstr "Минимальный размер объекта" + +msgid "" +"Minimum thickness of thin features. Model features that are thinner than " +"this value will not be printed, while features thicker than the Minimum " +"feature size will be widened to the Minimum wall width. It's expressed as a " +"percentage over nozzle diameter" +msgstr "" +"Минимальная толщина тонких элементов. Элементы модели, размер которых меньше " +"этого значения, печататься не будут, а элементы, толщина которых больше " +"минимального размера элемента, будут расширены до минимальной ширины " +"периметра. Он выражается в процентах от диаметра сопла" + +msgid "Minimum wall width" +msgstr "Минимальная ширина периметра" + +msgid "" +"Width of the wall that will replace thin features (according to the Minimum " +"feature size) of the model. If the Minimum wall width is thinner than the " +"thickness of the feature, the wall will become as thick as the feature " +"itself. It's expressed as a percentage over nozzle diameter" +msgstr "" +"Ширина периметра, которая заменит тонкие элементы (в соответствии с " +"минимальным размером элемента) модели. Если минимальная ширина периметра " +"меньше толщины элемента, то толщина периметра будет равна толщине самого " +"элемента. Он выражается в процентах от диаметра сопла" + +msgid "Detect narrow internal solid infill" +msgstr "Обнаружение узкого внутреннего заполнения твердым телом" + +msgid "" +"This option will auto detect narrow internal solid infill area. If enabled, " +"concentric pattern will be used for the area to speed printing up. " +"Otherwise, rectilinear pattern is used defaultly." +msgstr "" +"Эта опция автоматически определяет узкую внутреннюю область заполнения " +"твердого тела. Если этот параметр включен, для ускорения печати области " +"будет использоваться концентрический узор. В противном случае по умолчанию " +"используется прямолинейный рисунок." + +msgid "invalid value " +msgstr "неверное значение " + +#, c-format, boost-format +msgid " doesn't work at 100%% density " +msgstr " не работает на 100%% плотности " + +msgid "Invalid value when spiral vase mode is enabled: " +msgstr "Недопустимое значение при включенном режиме спиральной вазы: " + +msgid "too large line width " +msgstr "слишком большая ширина линии " + +msgid " not in range " +msgstr " не в зоне " + +msgid "Export 3MF" +msgstr "Экспорт 3MF" + +msgid "Export project as 3MF." +msgstr "Экспортируйте проект как 3MF." + +msgid "Export slicing data" +msgstr "Экспорт данных нарезки" + +msgid "Export slicing data to a folder." +msgstr "Экспорт данных нарезки в папку." + +msgid "Load slicing data" +msgstr "Загрузить данные о нарезке" + +msgid "Load cached slicing data from directory" +msgstr "Загрузить кэшированные данные нарезки из каталога" + +msgid "Slice" +msgstr "Нарезка" + +msgid "Slice the plates: 0-all plates, i-plate i, others-invalid" +msgstr "Нарезать пластины: 0-все пластины, i-пластина i, другие-недопустимые" + +msgid "Show command help." +msgstr "Показать справку по команде." + +msgid "UpToDate" +msgstr "До настоящего времени" + +msgid "Update the configs values of 3mf to latest." +msgstr "Обновите значения конфигурации 3mf до последних." + +msgid "mtcpp" +msgstr "mtcpp" + +msgid "max triangle count per plate for slicing." +msgstr "максимальное количество треугольников на стол для нарезки." + +msgid "mstpp" +msgstr "mstpp" + +msgid "max slicing time per plate in seconds." +msgstr "максимальное время нарезки на стол в секундах." + +msgid "No check" +msgstr "Без проверки" + +msgid "Do not run any validity checks, such as gcode path conflicts check." +msgstr "" +"Не выполняйте проверки действительности, например проверку конфликтов пути " +"gcode." + +msgid "Normative check" +msgstr "Нормативная проверка" + +msgid "Check the normative items." +msgstr "Проверьте нормативные позиции." + +msgid "Output Model Info" +msgstr "Выходная информация о модели" + +msgid "Output the model's information." +msgstr "Выведите информацию о модели." + +msgid "Export Settings" +msgstr "Экспорт настроек" + +msgid "Export settings to a file." +msgstr "Экспорт настроек в файл." + +msgid "Send progress to pipe" +msgstr "Отправить прогресс в канал" + +msgid "Send progress to pipe." +msgstr "Отправить прогресс в канал." + +msgid "Arrange Options" +msgstr "Упорядочить параметры" + +msgid "Arrange options: 0-disable, 1-enable, others-auto" +msgstr "Параметры упорядочивания: 0-disable, 1-enable, другие-auto" + +msgid "Convert Unit" +msgstr "Преобразовать единицу измерения" + +msgid "Convert the units of model" +msgstr "Преобразование единиц модели" + +msgid "Orient the model" +msgstr "Ориентировать модель" + +msgid "Scale the model by a float factor" +msgstr "Масштабируйте модель с помощью плавающего коэффициента" + +msgid "Load General Settings" +msgstr "Загрузить общие настройки" + +msgid "Load process/machine settings from the specified file" +msgstr "Загрузить настройки процесса/машины из указанного файла" + +msgid "Load Filament Settings" +msgstr "Загрузить настройки филамента" + +msgid "Load filament settings from the specified file list" +msgstr "Загрузить настройки филамента из указанного списка файлов" + +msgid "Skip Objects" +msgstr "Пропустить объекты" + +msgid "Skip some objects in this print" +msgstr "Пропустить некоторые объекты в этом принте" + +msgid "Data directory" +msgstr "Каталог данных" + +msgid "" +"Load and store settings at the given directory. This is useful for " +"maintaining different profiles or including configurations from a network " +"storage." +msgstr "" +"Загрузить и сохранить настройки в данном каталоге. Это полезно для поддержки " +"различных профилей или для включения конфигураций из сетевого хранилища." + +msgid "Output directory" +msgstr "Выходной каталог" + +msgid "Output directory for the exported files." +msgstr "Выходной каталог для экспортируемых файлов." + +msgid "Debug level" +msgstr "Уровень отладки" + +msgid "" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" +"trace\n" +msgstr "" +"Устанавливает уровень регистрации отладки. 0: неустранимый, 1: ошибка, 2: " +"предупреждение, 3: информация, 4: отладка, 5: трассировка\n" + +msgid "Error in zip archive" +msgstr "Ошибка в zip архиве" + +msgid "Generating walls" +msgstr "Создание периметров" + +msgid "Generating infill regions" +msgstr "Создание областей заполнения" + +msgid "Generating infill toolpath" +msgstr "Создание траектории заполнения" + +msgid "Detect overhangs for auto-lift" +msgstr "Обнаружение выступов для автоматического подъема" + +msgid "Generating support" +msgstr "Генерация поддержки" + +msgid "Checking support necessity" +msgstr "Проверка необходимости поддержки" + +msgid "floating regions" +msgstr "плавающие области" + +msgid "floating cantilever" +msgstr "плавающая консоль" + +msgid "large overhangs" +msgstr "большие свесы" + +#, c-format, boost-format +msgid "" +"It seems object %s has %s. Please re-orient the object or enable support " +"generation." +msgstr "" +"Похоже, объект %s имеет %s. Измените ориентацию объекта или включите " +"создание поддержки." + +msgid "Optimizing toolpath" +msgstr "Оптимизация траектории инструмента" + +msgid "Empty layers around bottom are replaced by nearest normal layers." +msgstr "Пустые слои вокруг дна заменяются ближайшими нормальными слоями." + +msgid "The model has too many empty layers." +msgstr "В модели слишком много пустых слоев." + +msgid "Slicing mesh" +msgstr "Нарезка сетки" + +msgid "" +"No layers were detected. You might want to repair your STL file(s) or check " +"their size or thickness and retry.\n" +msgstr "" +"Слои не обнаружены. Возможно, потребуется восстановить файлы STL или " +"проверить их размер или толщину и повторить попытку.\n" + +msgid "" +"An object's XY size compensation will not be used because it is also color-" +"painted.\n" +"XY Size compensation can not be combined with color-painting." +msgstr "" +"Компенсация размера XY объекта не будет использоваться, поскольку он также " +"окрашен цветом.\n" +"Компенсация размера XY не может сочетаться с цветовой окраской." + +#, c-format, boost-format +msgid "Support: generate toolpath at layer %d" +msgstr "Поддержка: создание траектории инструмента на слое %d" + +msgid "Support: detect overhangs" +msgstr "Поддержка: обнаружение свесов" + +msgid "Support: generate contact points" +msgstr "Поддержка: создание точек контакта" + +msgid "Support: propagate branches" +msgstr "Поддержка: распространение ветвей" + +msgid "Support: draw polygons" +msgstr "Поддержка: рисование полигонов" + +msgid "Support: generate toolpath" +msgstr "Поддержка: создание траектории инструмента" + +#, c-format, boost-format +msgid "Support: generate polygons at layer %d" +msgstr "Поддержка: создание полигонов на слое %d" + +#, c-format, boost-format +msgid "Support: fix holes at layer %d" +msgstr "Поддержка: фиксация отверстий на слое %d" + +#, c-format, boost-format +msgid "Support: propagate branches at layer %d" +msgstr "Поддержка: распространение ветвей на слое %d" + +msgid "PA Calibration" +msgstr "РА Калибровка" + +msgid "DDE" +msgstr "Директ" + +msgid "Bowden" +msgstr "Боуден" + +msgid "Extruder type" +msgstr "Тип экструдера" + +msgid "PA Tower" +msgstr "РА башня" + +msgid "PA Line" +msgstr "РА линия" + +msgid "Method" +msgstr "Метод" + +msgid "Start PA: " +msgstr "Стартовый PA: " + +msgid "End PA: " +msgstr "Конечный РА: " + +msgid "PA step: " +msgstr "Шаг РА: " + +msgid "Print numbers" +msgstr "Печать значений" + +msgid "" +"Please input valid values:\n" +"Start PA: >= 0.0\n" +"End PA: > Start PA\n" +"PA step: >= 0.001)" +msgstr "" +"Введите допустимые значения:\n" +"Начальный PA: > = 0,0\n" +"Конец PA: > Начало PA\n" +"Шаг PA: > = 0,001)" + +msgid "Temperature calibration" +msgstr "Калибровка температуры" + +msgid "PLA" +msgstr "PLA" + +msgid "ABS/ASA" +msgstr "ABS/ASA" + +msgid "PETG" +msgstr "PETG" + +msgid "TPU" +msgstr "TPU" + +msgid "PA-CF" +msgstr "PA-CF" + +msgid "PET-CF" +msgstr "PET-CF" + +msgid "Filament type" +msgstr "Тип филамента" + +msgid "Start temp: " +msgstr "Стартовая температура: " + +msgid "End end: " +msgstr "Конечная температура: " + +msgid "Temp step: " +msgstr "Шаг температуры: " + +msgid "" +"Please input valid values:\n" +"Start temp: <= 350\n" +"End temp: >= 180\n" +"Start temp > End temp + 5)" +msgstr "" +"Введите допустимые значения:\n" +"Начальная температура: < = 350\n" +"Конечная температура: > = 180\n" +"Начальная температура > Конечная температура + 5)" + +msgid "Max volumetric speed test" +msgstr "Тест максимальной объемной скорости" + +msgid "Start volumetric speed: " +msgstr "Начальная объемная скорость: " + +msgid "End volumetric speed: " +msgstr "Конечная объемная скорость: " + +msgid "step: " +msgstr "шаг: " + +msgid "" +"Please input valid values:\n" +"start > 0 step >= 0\n" +"end > start + step)" +msgstr "" +"Введите допустимые значения:\n" +"начало > 0 шаг > = 0\n" +"конец > начало + шаг)" + +msgid "VFA test" +msgstr "VFA тест" + +msgid "Start speed: " +msgstr "Стартовая скорость: " + +msgid "End speed: " +msgstr "Конечная скорость: " + +msgid "" +"Please input valid values:\n" +"start > 10 step >= 0\n" +"end > start + step)" +msgstr "" +"Введите допустимые значения:\n" +"старт > 10 шагов >= 0\n" +"конец > начало + шаг)" + +msgid "Start retraction length: " +msgstr "Начальная длина ретракта: " + +msgid "End retraction length: " +msgstr "Конечная длина ретракта: " + +msgid "mm/mm" +msgstr "mm/mm" + +msgid "Physical Printer" +msgstr "Физический принтер" + +msgid "Print Host upload" +msgstr "Загрузка хоста печати" + +msgid "Test" +msgstr "Тест" + +msgid "Could not get a valid Printer Host reference" +msgstr "Не удалось получить действительную ссылку на хост принтера" + +msgid "Success!" +msgstr "Успех!" + +msgid "Refresh Printers" +msgstr "Обновить принтеры" + +msgid "" +"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" +"signed certificate." +msgstr "" +"Файл HTTPS CA является необязательным. Он необходим только при использовании " +"HTTPS с самозаверяющим сертификатом." + +msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" +msgstr "Файлы сертификатов (*.crt, *.pem)|*.crt;*.pem|Все файлы|*.*" + +msgid "Open CA certificate file" +msgstr "Открыть файл сертификата ЦС" + +#, c-format, boost-format +msgid "" +"On this system, %s uses HTTPS certificates from the system Certificate Store " +"or Keychain." +msgstr "" +"В этой системе, %s использует HTTPS-сертификаты из системного хранилища " +"сертификатов или Keychain." + +msgid "" +"To use a custom CA file, please import your CA file into Certificate Store / " +"Keychain." +msgstr "" +"Чтобы использовать пользовательский файл ЦС, импортируйте файл ЦС в " +"хранилище сертификатов/Keychain." + +msgid "Connection to printers connected via the print host failed." +msgstr "Не удалось подключиться к принтерам, подключенным через узел печати." + +#: resources/data/hints.ini: [hint:3D Scene Operations] +msgid "" +"3D Scene Operations\n" +"Did you know how to control view and object/part selection with mouse and " +"touchpanel in the 3D scene?" +msgstr "" +"Операции с 3D сценами\n" +"Знаете ли вы, как управлять видом и выбором объекта/детали с помощью мыши и " +"сенсорной панели в 3D сцене?" + +#: resources/data/hints.ini: [hint:Cut Tool] +msgid "" +"Cut Tool\n" +"Did you know that you can cut a model at any angle and position with the " +"cutting tool?" +msgstr "" +"Инструмент вырезания\n" +"Знаете ли вы, что можно вырезать модель под любым углом и в любом положении " +"с помощью режущего инструмента?" + +#: resources/data/hints.ini: [hint:Fix Model] +msgid "" +"Fix Model\n" +"Did you know that you can fix a corrupted 3D model to avoid a lot of slicing " +"problems?" +msgstr "" +"Исправить модель\n" +"Знаете ли вы, что вы можете исправить поврежденную 3D-модель, чтобы избежать " +"большого количества проблем с нарезкой?" + +#: resources/data/hints.ini: [hint:Timelapse] +msgid "" +"Timelapse\n" +"Did you know that you can generate a timelapse video during each print?" +msgstr "" +"Таймлапс\n" +"Знаете ли вы, что вы можете генерировать видео во время каждой печати?" + +#: resources/data/hints.ini: [hint:Auto-Arrange] +msgid "" +"Auto-Arrange\n" +"Did you know that you can auto-arrange all objects in your project?" +msgstr "" +"Авторасстановка\n" +"Знаете ли вы, что можно автоматически упорядочить все объекты в проекте?" + +#: resources/data/hints.ini: [hint:Auto-Orient] +msgid "" +"Auto-Orient\n" +"Did you know that you can rotate objects to an optimal orientation for " +"printing by a simple click?" +msgstr "" +"Автоориентация\n" +"Знаете ли вы, что можно поворачивать объекты в оптимальную ориентацию для " +"печати простым щелчком?" + +#: resources/data/hints.ini: [hint:Lay on Face] +msgid "" +"Lay on Face\n" +"Did you know that you can quickly orient a model so that one of its faces " +"sits on the print bed? Select the \"Place on face\" function or press the " +"F key." +msgstr "" +"Положить на лицо\n" +"Знаете ли вы, что вы можете быстро сориентировать модель так, чтобы одна из " +"ее граней лежала на столе? Выберите функцию «Разместить на грани» или " +"нажмите клавишу < b > F ." + +#: resources/data/hints.ini: [hint:Object List] +msgid "" +"Object List\n" +"Did you know that you can view all objects/parts in a list and change " +"settings for each object/part?" +msgstr "" +"Список объектов\n" +"Знаете ли вы, что можно просматривать все объекты/детали в списке и изменять " +"настройки для каждого объекта/детали?" + +#: resources/data/hints.ini: [hint:Simplify Model] +msgid "" +"Simplify Model\n" +"Did you know that you can reduce the number of triangles in a mesh using the " +"Simplify mesh feature? Right-click the model and select Simplify model. Read " +"more in the documentation." +msgstr "" +"Упрощение модели\n" +"Знаете ли вы, что можно уменьшить количество треугольников в сети с помощью " +"элемента Упростить сеть (Simplify mesh)? Щелкните модель правой кнопкой мыши " +"и выберите «Упростить модель». Дополнительная информация приведена в " +"документации." + +#: resources/data/hints.ini: [hint:Slicing Parameter Table] +msgid "" +"Slicing Parameter Table\n" +"Did you know that you can view all objects/parts on a table and change " +"settings for each object/part?" +msgstr "" +"Таблица параметров среза\n" +"Знаете ли вы, что можно просматривать все объекты/детали в таблице и " +"изменять настройки для каждого объекта/детали?" + +#: resources/data/hints.ini: [hint:Split to Objects/Parts] +msgid "" +"Split to Objects/Parts\n" +"Did you know that you can split a big object into small ones for easy " +"colorizing or printing?" +msgstr "" +"Разделить на объекты/детали\n" +"Знаете ли вы, что вы можете разделить большой объект на маленькие для легкой " +"окраски или печати?" + +#: resources/data/hints.ini: [hint:Subtract a Part] +msgid "" +"Subtract a Part\n" +"Did you know that you can subtract one mesh from another using the Negative " +"part modifier? That way you can, for example, create easily resizable holes " +"directly in Orca Slicer. Read more in the documentation." +msgstr "" +"Вычесть деталь\n" +"Знаете ли вы, что можно вычитать одну сеть из другой с помощью модификатора " +"отрицательной детали? Таким образом можно, например, создать легко " +"изменяемые отверстия непосредственно в Orca Slicer. Дополнительная " +"информация приведена в документации." + +#: resources/data/hints.ini: [hint:STEP] +msgid "" +"STEP\n" +"Did you know that you can improve your print quality by slicing a STEP file " +"instead of an STL?\n" +"Orca Slicer supports slicing STEP files, providing smoother results than a " +"lower resolution STL. Give it a try!" +msgstr "" +"STEP\n" +"Знаете ли вы, что вы можете улучшить качество печати, нарезав файл STEP " +"вместо STL?\n" +"Orca Slicer поддерживает нарезание файлов STEP, обеспечивая более плавные " +"результаты по сравнению с более низким разрешением STL. Попробуй!" + +#: resources/data/hints.ini: [hint:Z seam location] +msgid "" +"Z seam location\n" +"Did you know that you can customize the location of the Z seam, and even " +"paint it on your print, to have it in a less visible location? This improves " +"the overall look of your model. Check it out!" +msgstr "" +"Расположение шва Z\n" +"Знаете ли вы, что вы можете настроить расположение Z-шва и даже нарисовать " +"его на отпечатке, чтобы он был в менее видимом месте? Это улучшает общий вид " +"модели. Посмотри!" + +#: resources/data/hints.ini: [hint:Fine-tuning for flow rate] +msgid "" +"Fine-tuning for flow rate\n" +"Did you know that flow rate can be fine-tuned for even better-looking " +"prints? Depending on the material, you can improve the overall finish of the " +"printed model by doing some fine-tuning." +msgstr "" +"Тонкая настройка расхода\n" +"Знаете ли вы, что скорость потока может быть точно настроена для даже более " +"красивых отпечатков? В зависимости от материала можно улучшить общую отделку " +"печатной модели, выполнив некоторую тонкую настройку." + +#: resources/data/hints.ini: [hint:Split your prints into plates] +msgid "" +"Split your prints into plates\n" +"Did you know that you can split a model that has a lot of parts into " +"individual plates ready to print? This will simplify the process of keeping " +"track of all the parts." +msgstr "" +"Разбейте отпечатки на пластины\n" +"Знаете ли вы, что можно разделить модель с большим количеством деталей на " +"отдельные столы, готовые к печати? Это упростит процесс отслеживания всех " +"деталей." + +#: resources/data/hints.ini: [hint:Speed up your print with Adaptive Layer +#: Height] +msgid "" +"Speed up your print with Adaptive Layer Height\n" +"Did you know that you can print a model even faster, by using the Adaptive " +"Layer Height option? Check it out!" +msgstr "" +"Ускорение печати с помощью функции «Адаптивная высота слоя»\n" +"Знаете ли вы, что можно печатать модель еще быстрее с помощью параметра " +"«Адаптивная высота слоя»? Посмотри!" + +#: resources/data/hints.ini: [hint:Support painting] +msgid "" +"Support painting\n" +"Did you know that you can paint the location of your supports? This feature " +"makes it easy to place the support material only on the sections of the " +"model that actually need it." +msgstr "" +"Опорная окраска\n" +"Ты знал, что можешь нарисовать расположение своих опор? Эта функция упрощает " +"размещение материала опоры только на тех сечениях модели, которые в этом " +"нуждаются." + +#: resources/data/hints.ini: [hint:Different types of supports] +msgid "" +"Different types of supports\n" +"Did you know that you can choose from multiple types of supports? Tree " +"supports work great for organic models, while saving filament and improving " +"print speed. Check them out!" +msgstr "" +"Различные типы опор\n" +"Знаете ли вы, что можно выбрать один из нескольких типов опор? Поддержка " +"Tree отлично работает для органических моделей, сохраняя при этом нити " +"накала и повышая скорость печати. Проверьте их!" + +#: resources/data/hints.ini: [hint:Printing Silk Filament] +msgid "" +"Printing Silk Filament\n" +"Did you know that Silk filament needs special consideration to print it " +"successfully? Higher temperature and lower speed are always recommended for " +"the best results." +msgstr "" +"Печать шелковым филаментом\n" +"Знаете ли вы, что шелковый иламент нуждается в особом внимании, чтобы ее " +"успешно напечатать? Для достижения наилучших результатов всегда " +"рекомендуется более высокая температура и более низкая скорость." + +#: resources/data/hints.ini: [hint:Brim for better adhesion] +msgid "" +"Brim for better adhesion\n" +"Did you know that when printing models have a small contact interface with " +"the printing surface, it's recommended to use a brim?" +msgstr "" +"Кайма для лучшей адгезии\n" +"Знаете ли вы, что когда модели печати имеют небольшой контактный интерфейс с " +"поверхностью печати, рекомендуется использовать Кайму?" + +#: resources/data/hints.ini: [hint:Set parameters for multiple objects] +msgid "" +"Set parameters for multiple objects\n" +"Did you know that you can set slicing parameters for all selected objects at " +"one time?" +msgstr "" +"Установка параметров для нескольких объектов\n" +"Знаете ли вы, что можно установить параметры нарезки для всех выбранных " +"объектов одновременно?" + +#: resources/data/hints.ini: [hint:Stack objects] +msgid "" +"Stack objects\n" +"Did you know that you can stack objects as a whole one?" +msgstr "" +"Объекты стека\n" +"Вы знали, что можете складывать объекты целиком?" + +#: resources/data/hints.ini: [hint:Flush into support/objects/infill] +msgid "" +"Flush into support/objects/infill\n" +"Did you know that you can save the wasted filament by flushing them into " +"support/objects/infill during filament change?" +msgstr "" +"Заподлицо с опорой/объектами/заполнением\n" +"Знаете ли вы, что вы можете сохранить потерянные нити, промывая их в опору/" +"объекты/заполнение во время изменения нити?" + +#: resources/data/hints.ini: [hint:Improve strength] +msgid "" +"Improve strength\n" +"Did you know that you can use more wall loops and higher sparse infill " +"density to improve the strength of the model?" +msgstr "" +"Повышение прочности\n" +"Знаете ли вы, что для повышения прочности модели можно использовать больше " +"периметров и более высокую плотность заполнения?" diff --git a/resources/i18n/ru/OrcaSlicer.mo b/resources/i18n/ru/OrcaSlicer.mo new file mode 100644 index 0000000000000000000000000000000000000000..650cb3f448a909a4da5b5f1950a71f384bbc6822 GIT binary patch literal 364252 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

)a8Au#V;ulva`n&Sd&Nxb3w5Q)H-XPYmo7}O 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 diff --git a/resources/i18n/zh_cn/OrcaSlicer.mo b/resources/i18n/zh_cn/OrcaSlicer.mo index bb7010b2dcf9b62d3e9d34964d0bb89726ea7dc8..b2fa253bad13fdcee697b7af162578e2ea368250 100644 GIT binary patch delta 51251 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 delta 48752 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 zmcz`6C9UzwS@eset_default_value(new ConfigOptionEnum(ipCubic)); auto def_infill_anchor_min = def = this->add("infill_anchor", coFloatOrPercent); - def->label = L("Length of the infill anchor"); + def->label = L("Sparse infill anchor length"); def->category = L("Strength"); def->tooltip = L("Connect an infill line to an internal perimeter with a short segment of an additional perimeter. " "If expressed as percentage (example: 15%) it is calculated over infill extrusion width. Slic3r tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment " From da73688e768c66eb5f811f13b6d4a584094a0e32 Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Sat, 27 May 2023 19:38:14 +0800 Subject: [PATCH 25/62] Add more PrusaSlicer compatible placeholder #1142 #1148 --- src/libslic3r/GCode.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index d7321c92f7..2d65ec76b5 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1776,6 +1776,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_placeholder_parser.set("max_print_height",new ConfigOptionInt(m_config.printable_height)); m_placeholder_parser.set("z_offset", new ConfigOptionFloat(0.0f)); m_placeholder_parser.set("plate_name", new ConfigOptionString(print.get_plate_name())); + m_placeholder_parser.set("first_layer_height", new ConfigOptionFloat(m_config.initial_layer_print_height.value)); //BBS: calculate the volumetric speed of outer wall. Ignore pre-object setting and multi-filament, and just use the default setting { From c942447f7fd966392fe9ad204409eb3f0b3c610c Mon Sep 17 00:00:00 2001 From: SoftFever <103989404+SoftFever@users.noreply.github.com> Date: Sat, 27 May 2023 19:43:44 +0800 Subject: [PATCH 26/62] Add back missing printer cover photos --- resources/profiles/BIQU/BIQU B1_cover.png | Bin 0 -> 23623 bytes resources/profiles/BIQU/BIQU BX_cover.png | Bin 0 -> 27841 bytes resources/profiles/BIQU/BIQU Hurakan_cover.png | Bin 0 -> 24999 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/profiles/BIQU/BIQU B1_cover.png create mode 100644 resources/profiles/BIQU/BIQU BX_cover.png create mode 100644 resources/profiles/BIQU/BIQU Hurakan_cover.png diff --git a/resources/profiles/BIQU/BIQU B1_cover.png b/resources/profiles/BIQU/BIQU B1_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5a896fe6d86b5bf0bcc027f3f8d0697f091fce5c GIT binary patch literal 23623 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®eF%fS7(HJa&Gj`Q{BkioESGUVp3c$xPxl74KH zu$(^vwyc4Yj5R;}3F)fhNihgZ!L7i&OOgIu53S#JCtnH`2tF!vXm@!IoC7BLJ6|4e zMxV~|zPS>E{!FV`3^0Pfx~J!=re@QfLj&o1tOYsql=K=phHj@OmC5i!PrQ&tdbO_y z#9dlBIH7B@t$ulRd{7bYH+aqE@G#q*+_`eWVGbI!;i1G}fO?zMGr81gzvKn-Kr6!% z@o+qu!@Wuk9t)3@I{`@C4W{}K#rkRPpkx3*Hk%3fcgQ|bEQtt!0P=r?T#@J zQB#z~ZvK8QOxjB)QLuIfSf}OH`%QlAI;wZ7+6+%fZ$2s$vNk4DRJKB^6;1V zr^?yU=G{yU3L!DeP#i-O2m6AUhem6uIS(jPHlLvckJgW>u`=qT*>t^Or>-1{SQnRJ#>1b{_{f{;-4 z4Y=B*U%*%!B>;;&BrKfDFsr$VX=pn*0MaxoJ^q7;R?UZ}R^_he0pbx4@DUKR^|P}f z*rt}03V!W=M~PI)FeAl6%zcbot2Bk*{R#ie$Xi~7O(yPuJ8RgkwBD=(DH8S~NJ&dR zCR6eNnb<{%3PsB*vbTROFPRJh?NyM3$OU3WSL5IQzQ!a zjqP_G26>FUy}c6`72v78$gr+RcZJy4Q=ud3B#8<4Zjlp7AdX-nBQc{WG6Tw!Nwt$D z<=tb<2sZKnX)XkikdW|Wsdnk3c%P#>z`rkPv!$+rK2GJc-e{b@^}X|De@hZlI8p5TNsBYmABHy zgJYcVzrHIH{HATVdCA;sXo3qmj?}-G@&Q6RtOQb`3806L z;Mg-KrU}_%xE4OV;&_fB6!C!OaF|@AtNmpIVMbKh^`%(|E`Zl^$|=do?|0|s=5(y= zMc>uJxO1N3)wOT3vCR&FeCfls8|*AA0KqfP54m&)>bq&t;%6oPFZNpc>fuLlz{%7$pLzAd zRyf^T6P<*&{0DGq_R^wHd^C+qmo=EtDm;(WfB3GU=+leeh>N>`4x~-5@p(Yj&Q1GUg$1D)+~+!dq7%*!V%>3j0QZ3z2`Pb! z$EVE%W7+M_{K=Ook7A7x)&OIafzmz-7NOM681|w|f5tXLhF(iVj*WjW^XjI{xkh=I z!&h12uz&2TEaqBvLOi6U$Jh_d5LXD5OK)KBbd`nR?>3w9-S z7B{<`m~`hae#$mi;(s!+4iE7ayohNu^6e}9P{0&ROgNPhR#G!pihY~O@7Xy^buTy5F*_swTYweVsO1s37cbH(MVLa!k_&t?M%|84!BP4%9*u1Lm-)yJ7> z_S*q|*o{UVWFt6S%Fxo#+xz#g?Fu+qM&>Oqs=+`)WY=gS)e`mJE!pz$ee^baX;3C< zUEQ|rB3L_{y48zLUZS$Ba*5%qrLUFup;T7rQtK1%*h=Nbi0_&$NZ-;V%D3!5f6ALp z6hi4gD4I`1>#$Ak|8nEw-bu<)Hg65M3A)>-r$T(IXQQ!Coiy?NGCSKA15lFWE1xH- z8@E+j_Ai4l9{B&4(XmXDevH7W-ZPX6#f9 z>2*(sCP}7VaqPFf{v?nvJpM=b?znm%ABbouxm9o>$kv$D7{oYn6Nu^b5{UZNYP&Au z-}r?>c-9acBpvGD!~T4%zzavjnDoa%TvYBzBJA=kGN5C$3{L(#jwxgK`GX`C8mfOC zJrX9KKMtM^@tBM%1U?WX6^KTWK~e!RNbQ6lBe)KElSQQfA4m*N%BA{^+sPX|PaxGO z6}C&n_5?{!ACyrukoqW<6t3#uvAuj%?p{JgVm|o>sXIO?rax+~>KUtm;%Uo+D$eV1 z47x$wxtfw6s(!Ur5_AO1Fd>z{#Hl#mz3YURMhvt}`#oWU7FKnYX-GT<#yLX_j6*J< z4w?onz{kXwlZ3>&=x9oWRmW-J@PtgnN$K+4s?=tKv*b}&>EX~9U2xNfOgx7yCrB5r zf*y9&TgA5@hHwxuXQXxrWfv#m7nJoZu(&ud+sL^?$GXW}$6{=SC;Ys(^LpE_SM^~- zr9yaP45{xdnw8=#d+bUK7+rfP`0HkHh78Kr0Oc$%%VePKVihY{Xq+K_cNH`;aEOPI zwtyP<%2x)*WKu|zjxT$HSL$s8D(sWCC_*`^NI;2c87E4=nj{vtRJgKXpzq@C@4WWt zZ*M#!k!!`k*1& zC;O=wD+_x^1fe7RccG!7$Si2Y@EIS|qJlX%OMEEya-9$muVE-=9cQiXXvUU^k>im9 zN7Uap!_+~jJx)_X?;LYq0cUp>RxTA^RuG3JM`R<6bK+CLc2QX1tMV%&2d_@0L2H^Y ziBNx#YDE%|T)8)yn4?8pt^fP2yK?p8$_2I>Yb)~5*sh?X%ZzP9SB1fkI; zY?dFPpuauN4x7T*%yn$S0r3nZqm}8mzY20jo+WoVpLkL#h@y0Xy4X~e2Rkn=H{?t% zFsg{3+>sv#(w_s=G;A9M(3+vBeQ0ax-cCz>XNIBQq;{eU0gr_ub$lAz1761$YKx7LYi(BD$N4sgt76Th%=z@8LvPjL=@J6LY_5d>}e~KLMJrWiJ#1) z_sqnhj-xU^j+5W9J?vZ57T4%skaD0fp?|)jlTB2y);w6*0W@#=eHCdTTGEDx2;$RD0g!zVNm!i#oOyuxy#M$VXA$9 z2|T^QlSQ8~Os`WM4iJm8)>1bZC3N0>pAA7pgj9Tn3E{Q1@tk;aWPFN-9ket_-}0Iz zeRE5tYOk>nCkO+kqCBr}4_rJ!I2VZH0n%RtF-{%UE+lFh7(jV&o#Y&mAdAr9&S=f@ zS=EY^_@iB^Cke{^f)GG+0_2n1De6sg68p_apYkh+<_S9w4mmk%j4WVLGI`GnN(fc4?b=p}Y zD~m3Ev_FuhyG#Pz6p9~o0jCaka?nPNaX^>p0dgjy7ad4+4is{suj4bk4D3Dd8AZ4g zE8sDpx1rsqh3xR`o8U1DqX`>!^Wk$~a-Z{o#F*U|f{4s+B@q;?-C-!==bk;c6;yG! z71m&rW9?vO2q%>Y)oT_gF+WEf%BU=qD}i%?`5&?!f2gM$h@Z; zoX^1-W5RUv%w^qw4f0qn{)5DtxA?>R=5#F7&#ZN4_=ua*+dZpn`fcu#BhY(xoBATC0y zMxD2rQKrSa%#Rh#a3eRbs%*j5=JwtQQZsOt*~@jdV6ZA*yAxAW&EmEuc*W9s;$puI zppatQl^+-6H8mQ<`(RT9M9S=047Tj8uj-|_93x|yLGwIT3#cHjsUL-=U%7K+=`#Zi zGvtaVM4~NY>3~BXd)VgXj z{Po(c9nL8yYLTLZHK3IS`cB>_S*{*5LzVsf8;~-rKsju=>T%h7gx*$+pI~dJd#jjt1uEjNrBl)6dW*~LYmkl)XlCGs z_RvB43FL4{FOa#KSiaXW0nZ7ct>leEb>$e>S0+LYCBmqTEEf3yuFNvSQTw|g9S9kq zI8C*HiTG8(wY~l8E6r@U2~$W+HhHL%bk#m04}x+&T*IbBqu7_`pwLB`H@taBlJT*o z?1H$V)IWBy{W@s)m;H5VT2w2ir9xi$gIETo0I5cu_8XxrWNwt25JM_JFHu~KQYb~T zp+I+z%t?%%L6=LSUD6mK%RG&4tISPa9W1u>#aZvv{^`>GX}9_Cy^82faqA*9kH?$6;9@Z zV?pIdgBJkT(57kGfzi)mqN!6#45Upnc+v6K9g<%#V*ITZY+e82w#Lu@MEDjQsmS!% z1_I7e%5P{OD^WxbuZ{LPx)D`>IEno>wW|sXJZkQYmXDW(bX40wU0kH&I@ZQ;00O|j z1EB|$R0#-8Sg{q=>`MY)(MeJx=4$qZ^Z?I8`2(jZpBsR_-jNAD%+{Ow{&9*FtJbQ^ zdd5Hjj#Y`nQnMaz^ej%HP_;xYHz|;Z765`)(L%5E&k#W!7p(?cGA%Dh-kQF{jbHru za@OV3B4@V?+O#$^I#C^x#8@=_+l6{mlrpG zEq)aXneSxC1bS`?wqV$;{G2Pi3_Jot5a9i=Vya-&rDO~aeD6YSEmxuAbZHbAQEz9B zSzr;BYC&4DuJAIDjD;Q9L&=Lbo9%?+<#K-ua1{8%cRP~HF~%#>t~Ij(Mnsgr8-Zw5 zZv22}!7LB|C*oN2qR?VBG@ZK8W>CkvZ51|piGDUS(G8NA;}wCA3zq?ht5qO`C{$&X zo(7%Z3F!Qu_BS(67_+fnzyetaDU;(OAx-Z)Hu@vxGvd09QcYf!;O) z&lp5k?7;@A%L-+nY3l;7;pOUyelZooKh^C0BpSJTNSgv5Hsu+giY_WLo2qg!7e@KL z?keblul-(1qX_0l45p5&#ymHBDdLBM_Z3Y8G!ZveMim^q<>8=o!Hn)h7^_#sS(LYN+am3+MIO#4 z@6$)U&8Ds%4q!(_c;UgO8JmCgV6&#K2JUj1PJmC z#kl9(hw%1dvb={Y#mQh(trKf%ByV=&Oj^uAHHK6KarbjwYFgldxzPCt5eV}K)wr-p zmE==|%7~*7{s1zujDU=WOuuab%q;O+jz!I)=uqH50d*@;Yj)Pxt?>zv zhDiB6-L0zJ-_Ew{J+1>P=4FMF$+{V5pVd*Wn%{R~EQ1+;`JRP24wi2w$mX*AKZIi- zt{`-CxF&WT+*$b5+E2pt%|Z={0g;j_6OOlnrF++B0zAxOIQ=Hc(*ztqd2=kn-Uvq( z?_hb+S0KgPL7=Z^nfp;K- zO0}+n%0oJQO}ud714dVS5iUTH%pm8dWX`pHxEsiU7=e#Ofd1zE;v!Fnt^2H%3KgGT z|6}P#T0AsBp`^wX9UcyERj2(dmpRe|NJJ%+KSJU}tp;@GIWwYf0H(!_J67y+JK^qUFey9(;U!fTxfF zCimFKFF_bf!W&;kFLqlH>}XKc@4o2z(PS3`7(Afgi{9Ji5@vEcb) zZX+>bc>0+DIia86^u~L;+1Nch(yAPJ*5#S_u;C*c)fsmK*d{=`ZJuD{2p_XfOVKBY z*TItags0=WBR>3`>3+VRFuy~bGZ^Ufi z*h^l*DO=i@BF)?le7n~lXve`_h=j0k6D|^!Rj?Hivqi$mUk_H}@4CI)ySsr~9>9a) zl0sR4aRX}j6B~|cUZQAj&+PA+vR0~bkrX?V=qbslPBrU2zKCy7-)HR7BFjD=cLY7_ z!ff~!UG=mVsYGG{QF@G1MiEIYKj}N3pO@?XTW9}IA7}m7m$m9@PES7uDvcmd3U?F!sbY*=F9n$aS^2%@a zVnQ>0BF_6l{@FdoM{gNCew>B+k8b*>sUrBz%aC=ZV@4doBa_fp|1SEa? z@f1VTa+(^Z@kosRK$>by#le9LAc?6Q+O@%_K2N?rY6@k8Kxo)6_X5;&OxC4;!7_3g z%b=a+pX9>qiv}NF`BaQ3!RItOtdw#C# z(3d)WNVSAt4$aL4qhn*qkMpk0G!vzVs{}QuN!ZoS&no{l#7K+{9LQ9`&p?Z#7qs8= zykpiYXFJUxJ1Rct9c?ky9~N}5B=0d9BsnGv@q-D%&aUAUYW7?kVI#pa>t&wCX9O64 z`@C0_>8I=MDf9k2S-+!6ci&SzwbOzohDyKW24*COeHOf%pUfn}B)Z+>3aS((i*$^n z4q0*eP-KQ_mHXH_xPaf`v2B?*!r~w280hyetCnQpOuyRi26AhIMd>8 zbsVJjzEi{%eg?oCtAEQ}a(~(SJm$!|#z(P6nK_8`$>S`ok`qFSQFPa?4v4jwE}~IQe>N zbJSE>3#QblG_)H}O`?1lA)EZp;!*P)WwFbhoJiN1!r@QJ_1@tsw)>b%o-+NZy+Koe z%(sMYhv#uW_x`3Z$@pNF?~qZCMUBpPoXlub_AZqXcZ=&>hr!OcGkUxT{a0TZH)pI8 zQ`c7o2nnzCOhNzRHOw<ARnUFEu(wQIhb5Z?u1J2fgeR{{)l1s zxUv3x|5yc$WJnB?83FBrQhSCJ&SKO!1a&*g|EK3T`eyVU>*S9aI-J(ok0q-W^4-N5 zy?nf$6=yQef*(QkLq-PFpt<3-KFL{AqQ_{VPkH-65vw8@pRUNyyR^%T2*A%mF4n~+ z^+V1ZI>~m;d*j7MBw^dZBlE23T8kI%+orZZq(ANL1+Pj^<$nEC*}kbe`Ouw_j7yKA z4k@^RE>Ka`3{QK5K(m_~okjD~WNER|X%tkgslv;Rpd2ZPd&u5>d)dip%w$^t;}F(u4WZKX)*AJcv6AT0P4<^3OjSEyN#Z zgq%tE<<+zmN|_-(LKZoBsOn3r&}52Qp||e7Sci5UEzd~1o0eZ03tbHWcd#tWl_`={ z#;{~oxG*<~`3DLWF7vU*>9Si(?G+Qw=E=gklsG3g%Ii*Swb%@Jl2^I)LyDo?wd_&= zn01Q}NlwIWDS4NXmTj@lyo`-@P=n6C94c58U-&B*@93#bZHedtlFGGFbGx>GyTYUC zFL!7Nw~?bGzvs>r5nJ}7erAFR*WAB8105!jH5HKUXaOB>A+gX}y-@(KyE~`)p2*j? zrsumk^1q@mZB8emm^(&K*kBH#dPtOmwM`t9|9h#FB!&$^V!wYuQAiJw zN4DE@8FdG@%u?Ll`*wDOFLjOCcfPg<8xsKWlMFf*1{LjQ+qB;)8FsZ)*YEuAY~~db z%yuI!JS1W5feqFrAZSk=6@v+)w&ic^r%0CCxF z3)|R-Tg~94`RMCoixO+_kr8p8v}C4Y`m>CV&93+Z%ue#d6s4$ggUnSjBE2HyNNP%f zaHQcifRav3G_ilG^V%B5=#Is0|E}zmZ{2{NjpD7o?OY0~DUxGwY5-^mZRo*{=6&UL z#(K=S^p?U#g0JF47#ZlG$imJ}mP>N&a5riBcgs8h7!@fatGfgS_k|VNz`M8{)%Tlb z=uGHAMPz0DU#aKXt{+vXO?4hAFxy@tD~VEk7}6ZxPvm8=4B6=Ix7*XGz`cme;*+g zBn>$$)1p*4`#czh3H)e-H&2>dZNhk*u^lxv+cIs{*Uqk%T^uD=(2rgV+0~8>cYnW| zL_Cm6-2C5YNY!D2i#z<5ERcnebo<>Y|# z54ujg8T4}u?H6Bb3sb#$w_o0{(Ue+|6sl72h4Gnrag_;$2UeZuDwLR9jUGZXjq@BF z87cbgSWs1^+myn?q&52avj}g*@kaoAgjn*X?>jerGpd-7j^VD@3?M^#Yx2yLq>)c~ zuSx?fy%|^_;g|GvHIMGTk>SkmKyUfefd}VXBV~`v@`00#2dVQ-=!{*o+8BIE7WeJF5j@W zZGKkn!WdaCXjkuqB>-qgYmY<2fG4z+N5(=_95w6j<>RfyCx!67Db|a&l;7v9JmklH ze8`HhzFSdMNCyHfoxp6v%t+e@_P65B6tm@f3^2P(l$lHKBgKM0cd9c<-&;xcv>fw3 z`>2B6wE`tYG&2}fbJXA-SOupK4G;fma2Tm~Zqfoa=2UgLLLzp8=%gXPy~gFo+HM~a z&pE$bT|}~>v1%x=bQu5$D(UkJ1?ovEW#w}5njpc7W2JPFS@_YaZ;A7OTw+tLdmhMZr`TKP>HDa4?e^wX~C@bg?(D+F5kb);D%Pmt0UvX&#K>4;D(gy2#X87|#F7p8rRPet*0)=4^+K!Km;G%b zU!ZKu_Wu6!nLo-uo9>gF^aC_q4G&?dec=u9zVbEMK|m9+@MrK{u#x}X&_F2+1j#I^ zyM9u-lhX@4#{ve@(lV}l+&7jWmBxICXTtJUO6ZiX{c%u4gu9_ey_wRV(j`P~G}!8@ zM(~k{J8bmu-e?=0wFq_1$;`<~nmI4BRGz7al4ic7>5N{MM9BpaJCt!PdXmoSby1+G zs@bx1tRJ7Czcok!Jl)Y8w)}>YJsEAMJg)g!5&^ebX?s#<=lu}M^r-yCpm01r@~pnS zJ@}I8_dE`qKb`Yt=|@&;U7eko%8$tJ{pJ@A)VS2zAc;ZbUL<5r$@aD z)!qC;qa<~0gV(yl1oWlT*wf$K8J_@A4;+ZqkzD-rw8{HeQ|ELuXZu?kb`Ac;2AW`e z-gn}N2B$(5R2T>%P{Ar9SaXJyR_Px!`pV$&1sqF*>#6*^ckeD%vmElWzQ6O` zPPg>5SOk9w;5~P4{)c$tG7J;+iC8Bs1ACE?)+2nZg1Ofy}s^LJmv%(fmUz66pe-Nk$d39;^+|Sa@(3i zbb4Ri4C}eA`})DB%&fc*(`%Y`)S5V{5W(;J(6NTG>7Wr>T(;zuQoa^LP0$k~|8!GU z5(2;eic%E1t$V7fuHM%IM3N-n4$F6NdM?b<@KvXsd=kQp2X2g)=ZDq4W)To15%TB} z45ZG{+dKwgf>@4pa(^+%gY>1n zQfeq-psUWHTw&_wYPa^{(-kK|CPX+-uZ$&lrQBkb$$e^#)&?Qix|? z%TWHs(rO4_iAf1nOi162b5X8iE&ml6D~QU3G;lsQNmFCRH}nK>DN40Z%(D2iFMGvV zN!bxR&?viaUrB|(P4p=ib4AIBg}vxg^Z4@v-6Z?K2PO93m%^K_mwrV?y5z2!__Dr#v<;ph!Jw+{WR@MA zr!f{U@a?P(RBkuEU<@TG-3V4_;NP1iZrYgGOVKLEp7;E%_0GpPSB*aEifg)l&r(iK z?kdRNbjs=uUqW$GGGTc2#G;xINXVbh`dwVl7{rAG_JtRCH|y?;#wN|}Dvn1!_lCh* zCB-5q&LnIC{=0f}I6u64^R%}0bQBF$HTej*gE7 ze#6bfnKJ!baH0trZejv~Fp7o29Zed1Anh%c;R}p;^Ie|{mDiqZ65Wb=;n0VT^0;B_ zT@+1TNoPVibtEh%6}cPh0YX0|jn=#hf@Q>(_JeacF(K0yMffB!AG9X{guVk#$Ypr7 zebnMRWZg@2viA8FY07boeO8n+G(KCJuK30q;^(i&ikv!?bUA(;J)2LJw>kl#2=GAF z)b$JR^LIB6-Yu>PxccIw-C#<_C;RbSX)lXt*2EdIDZaNZ2IkeLc7a8q45Srpc5w)Y;sCYE$y37#Ihpb5%39D zn@t*l)IICE`m4@@6sN!Wf;^L-vnsT2vA+1&BPvk*!U?27s?h2U!u~irV;Qus-1g~H z(Pp_A_8d@DBEmx1q4-fOcAjqo%}%bX#V*eDMZ8dC0(Y0sc&A)HnBu^c3AjZ}OiYv= z0gDGEjRHnf__)c10g2GrdniHZ*FiD7^Dvyt* zQ^55k+V}Dw*GW^cI+{m2JrovzMODM@D&=<_EygN5T#Oo!VAfvEDXZ4{;G?8#a^D0B zd{T7;9M_3O(%bG^#2ZV-fI6lc7$}p-EK7kT245sA+r9$}`}@`(0dJXa zhQ>aj=-BKjpA$(=AuD2ZVy)C2u*LTMDyps4;V$xlnxcj0^ zo&)S05iANyMyN9du$e`OR^*Nk>1Q|NWz3<0F>RCF)7;#(tt~>c{uBIW4NF(uEp-T? z=OLdn3Na=jVmn?T+l|k`E544%Flz{9%o#6eoN_q zyJyJjHo01@wI1l`7_&Wl`sVOw&78Q9UYMJ;mseH-!RQzCLcq?%)Df;mR-{n^Vo$;xdd(sbsRrC zpZxgwM;MIkWEe;H&eqMRIw@w$%fiL zCfkdmL^Wy~=K%V>y**)Zrj|+z%J~NaZ3h0#Z_VA14Rmf)45d!zPtQ&cLN0)RpKG%2 z=^?w2eQm9z)?tMCj;yRJqa>E~4A>%VW#)oMetA>Nr{_Z|<7^QoLsHwEuW*Q03M!hA zJIM823Vliz+2%5vfnCcn|6iJAKguZGwCIzF7$DgdFQ{$|AHBRMLxCh>OOsF=qo+4g zm7P}yI>Z+}g{j;3dF|7*fRVAXhh$+%5vN*~h_d;Ioo(~h2b!$s#@WTo8h!H&Xt30K zuwf%;Bu|zAZ2L?vMy}ufmZI=yLDIRylx!zK^PMzZ0*Z)AUyByj2n}RPBzDSA%2~fo zgb^1V{^Kq03(r!;F)zn9>fd6+_^^W%b)s_8uRpIijyF;?kJ<}NaK~tsM}Q*MX=CVW zNuK?~k;e^RL(T`mMvn@Rs+fCL|DB?CdmU;isF#Ov0@CzjtAO>Axv?_+8liNp7NB*` zfaL>KU?zAA{*2LYfu*EZY`I=~fP&Cl&zfO0Cgamkb zHM%@{^l0eczaT|;-J}Q3NGV2d_%E-$HsPsC8t`GryNC;{h8sDCm$T@J?NFulDhqKX zHdMm8OknoRuB!11DQ;0VH+Osfe9O1QJ%T-G*E}=@x$R64q<6=I8Ul*u zul@Zocf`f*@}<3bWkf_$KuBD)8ITwAO==ZZy$Rr8OP&?i>P;VVHfo&bb>2JpMkNs* zIdeb3NMp7*Stl14*z1pM>BOl%^>vSRx3#OR|MPVu*{8v-=K4~HLKJQXnbYju(sTYpQ zc1y`OQ0MQeDe)DABu&@aD8ssXcXk8zPcJpOU9baUGFm_N z8=Y;b>r9DOZmx8QEmZNJ91s+1o)l_D)vE-g`SqR)y@%A$yZ!6@|!A_6Q+PHre}s z`F!vD{@(Zh{{McDzelQbuJ^pI*L*&o*DLKODntZy1P};>NKI7{2L5fh{>8fm{+1fN zB?y7sybsqi@-ouYkg#@j=C!hMeP+w+=j;Z?ArMI!KQ}9DM_VuEXSVim7b({5)=pMt zxQ!I6p@=5GrkjH8bGT}NhpleF6FutyM{98#RvBpmNk0j20cTq;D`r1uCl^l%KPlFK zt}6llfBiKdEAu~xcsWY38fj`XE4X^tGK=tv@ba@t6EI79*w{(H6qWzuWbjFf^|_aq zn*<-9udgq!uMn@RhdrNwxVShUzaXEWAP+c#$J5`%%gT?(#q-|vCH{2{MO#m654f8b z+|`Bo`kGeHT)n-dSXse1^M5{>v)g}N+{N=h-X6>YpP!W*p8zjE-+w>Y?YXO$tLJmq z|HCQ&HT=I$wDp7k`yKwrZLUZD*Wq4pyZ^)C*CYSya4^@Jn*aB=aCZJ5FXHK?x2K-Jn=K#A*3;G7!`fEK$JWK`-am5z?k1t&VQb}Os|bFjSOxh7g?RWy zcm(+M1RhBU3rYx!KI9kV=l`#RHC=7scK-jL2a8JZi-ChB{`=9uJZ!AItp5KT|6da> zaeef^9txP||MiLfeU5^wldA`KIPeZa|2*u!htw1lv^`wy;7(vnS5sS0i5aHNEG#6z zBgg~Z>=Cn~f*Lc2wh-q(r(G|hgf`sI*2zc_?riJg3CvB3RY2@tGw|KM$e{ z{0!VpR76Bb796`M47yJJ;a=m0u-q$v-?*a#lEcoxM z8U1@qiuI8opTNI|jQ`irwHGl<{$pDbs&G#)R}cSxzWSGI>Ds#g>(jqJI>G<(DQ4z> zEK9=5`uhG-tZp8zHs02@HvilQT<%|^p00LYzE&Q#a`wQeq*&$b?BL)@{h76|-HTa} zS&)~XSNMOP;``hdT<-t1u>Z|^`2OS3_^#djKc7vK?|(hL>(`#0fh&Zh$+s*15JEUo%uMG^QV(Hg!`c*B5*BISY8Nw_c#caBRo17rg9-7g z*X$3b^|o~D9phhr+RNzB;1L$w}5GY;2#0?|%_;?1YC!d?UqEV`lM$mHMNW(ud|cW!AQmbd|!`inutFj{LWD z^^bB;n5^~*GG-?x9tmX*c6jx%yreumJM)H?K6iEXH8n9QfFk8-tob!{w>ASO^%+S2bn5=} zoe%bYXi#zdVM&bX&(_wQBtQSo2hxHZ(&1wGG?{!fZFhG!eFXD+u>|WsC|*34NFE-Z zOuL~RbM&%DwvgR7zs368i;bPRj#TqcSm8OJ|E#ZDcWl!uC@7qM{1|rdcYtpKpXGRE zFw?QgY3lFWgoK282S-QKf#tdqxQPX{)DvCF5hrLx=>U1gg0m>bu0#2$u7XtdmFHa# z^z9T|sfnLI&ttnuWX@{`cw4{C&K$K0{R%w8KD7Vrt^p43*w!7|1J54h=Jx$(le1}6 zeZA0QVPP9@Z|^ZLU*G1>?pfaE%~MUAX41K?<>loR_SxPBNyTvS`6C_{1euZ!J05lq z%~I96=<|#eMg|5%)jA5}FOpHr62tnL^%g`?=Q9T~x&Uv=iOPzGPKS~f(zdd)QZ+q2 z?ZKNG={ytYo9BatixWUnV8mSqMLr`WA+nF)|K8+0V=yu{rk^x~*<4sy=()VSH0X7w zTM`p3^u3LlyL**%V*5Ff*kgJDVfny1Ibk~!FQ6igEp&WtC^`68KIhcetV zfg>glP8aiqRbvE^OdeO;p~3E12+#2KK;J<7H#GP9*bA&`CfE+~-J^YMeN*l`LzLC( z3u+4v$&3Awzvp{Hp+g@(eq8k5TbXV1SnhvTYosWe`GOStg*?`c8#n%JuRoBZ$ty3v z-C{<(?2-Nlm7qW(mE6$KP$TZS@&{FA8W|aR@IpSnxVgExSewHJ7Z=wQ*r7efL%h<6 zyNN=6Et0v9HtH=8RqR3Xu*v*U`u2$^UeP*AZ$$XGgQSN>48yNUA&+O2^5XI`L|8;5 z--x@QxcF8MCOnK8PX&iRhLykP7mC-x!9kmwO2^WYq}Tna@p$xjyfuf_xHscT&|R?n z9Pgm-OH1V_mA-p3vQkAW5%$nTFo)S1b5IgIfBrmd9TmMqldfTRvhb2A zIrHXUiYWewIF5hMbU~F)2@gt)2n&H1g7qyymxrf1wtdAD_B?8hY|=GWMmb`NMMOj{ zN^FhGi;^W+K4US1*Ah?AHRUwS=;ruFL_{=ZBbZ*XB<3wgDhz|hKdYU@`Ws~T&nsv*3tfqL;*4?soI%1WdHf9h|IJwQeEX`M`ns?c)EY%4y8d8z-QQAa%Wm$RcL`5hWk(+Uw3;KgGSsk&>)Ku0%#AFFWBa z5>7)y6GqDV!|Y?9%{nT9pD-Uj9sTsnz23kM+-`n;V8#rd-vs__Z>y-Q-yW|rk1Z}{ z7fXmlp(OOU?f|2Xr+?ISbfNftN$eI24&sgC2&(G#K;5r1X*`xU9-keldhgMV9bNqP zoM}pW$(FG6+voryo)CF@8lb3ybN!tL9v0;5Hi8sKE(~1rLsh0E142W>9QSD=z89rZ z`n!jQmribOZYcp;P<-6mmO`z~Qk%2*}gM~|#8P7i=Btxr_rT62?) z?w@cE$dlsq*$BS+uJR*#s!X^PCF70eC$!37Ulfa~T4zSc;<4}yB+8NEp~ZPp2ZU1x zK7kkeq<6%O2rGtvy|@#r^x2(oL|AH|PC{dZTdS{V%SwYQoE@P$w8t&70FN(&(=CcU znTsvJgY_#?=s?Mo@5z@n&>|^;MVJuF3QoldKp+^&lN^4+PvTlQcOjBP3cql{)c1n8 z#4jw21LgdCB1!ysgP+^7g8>*SUIZjgKpU#kF06Tj1!v01z`&546Y(aaSjnB?CFGgB z>PK-Bh+;8324sPmriTej$=>E9_$*|YpZ0Mluzp!6EtHeQq~30@HS8^}ocW_L8}BzT z_M;Lw9k>rPtNO*{X)~~j?*>#?0Kp1uk7ES#*uN_7A%hzy+=|`R*j9qDpP*! z!?ZXxJ9OboWhKnw7Wj?B4r>p>6lFmqv+&!!>E-3smykeA7L^ZS7RT(4Xvr|Tqc8IF zS&s4|iT{dY-WJ0nJnw2lAHwrpDs2+~>4S7g(W>()l4g zIAB+g#iD3aKlNRBkQ^z@huGm6AP`KCvo|()nql{TJ;3Yg;)tmkK2rSn1u3m}_1fK$ zm8gKpvHs6Ax4q1_LuY2@sGj^9-4f7{04wtuPLxTd0eSVS6lsd@F_v>HOtFvF`s;R< zr#AFvnCiqqv;fuf3@X8%AZTd`JcB|>=lP5eX_VCq0fU9C+w##fGc%@%FatYu)~a9+ z_K5I3PUL_%2~oEjt@YY5N9JIR20H~!)Pe`v+Sv(H;UFYrc&P}H2Ft+n_YS&m%^gy>J(ns_ij(1a z*Bw0o9pD6D7cFM!5n&!MAV{d- zhE@{IjORoq3b4~y1IMv49!I#}L(5#9FRqs4&M`$T1es4z#8>1YjGbl2(w_Keh=w29 zqq9zy^7Hezu~nVEH`vQ-Ca$AEh`Je;L!l+Pi#>m2K2T?)sj2CdVfR`5H7C+tpZVU1 zur<1+#`$rb^W!Gx$D)J^FzB)(!D5agL$C7mp&>~dxy7C5I-lNgu`joC0iUWWFHbVG z3_j>D$qk`PvAw?n(j^F`3D&>?yZNp7bQIeyRe4;w9{cKoC}GihUgUc#)*Z zPV?N@G|O01xw3ff1Ir%dSaC} zql=63G^2#Ez$(tP@Sv)*T^JeBroTnOi?P3D8e|ZgP|81`{IKRGh=4>{u~n(dtCAz? zoavW6XhAXrIoF|$y>Z567++X9f(qoCSGTb5xo|XQaZ!)ij0?No0XD^nbeZuX$JfBs zP1d#-r1i_e^){3EBTOr>TJ=+SkfSoZoR%8G&y|QP>x_s__UKI7V8)9shQs`W^_bPt zpL2DU8ToJ}lRyw})LK{5yjnw9aC9Qd8+In2FVGBX9H}G~_B*n`iE+bhDw5kPy3R_i z*{nChW?TwB(j-Bn_5Wme=6qNkJzLeZqEtG|meqygDMW?78S#-nuJ7pLbAvVs%48wAH2-}K0j}^q zPC7wHH=K8$(wTYFNd%hs8t;-Ld*Ah&9cc^nY&ZSBdm9!;2 z&sD&|3JOKqnI@f5J@P&IUGZUCLbD0Y*6rU|L{i~T;EUsQ;2NF3e%=yT>DN))OK zMPmFv^T$otAUWn@|N6YYv$c(tw8fh&Re@u;e20KVxjmWrHcQ{-pO;kf+THv`Wg~CV zHd-ns`W~O>Z;TM9A+Vikl>5YAck_>qvb|R|lGxAAsk!(upfhNnoaN4s9-iVTWG#g# z<9mq2_&wDX(*Xrpk(%h3)22@7Lk{}squ{0qUOzth-JCnNl#_Q)pVX7}rrrA+Cac9P ztO>G>l|-B)O%KO>J=YvI1P8~e=E`3jLHb!(lN|BsJ%Kub!vT!lH0Cp#=7{9Sm@LP$tB3MQ7Gj*b9?$`g>z;vHEX zD3uzTno_)deG8kKsFq>=2r6x!ALVAb{UHYQ3Xo@lj(^l1e3vKaqFE{<_K^5kz)^&R z!AFbj3*2YDC*Fc?OmeU9-s_;>{ST|pHKcPbf1|3*gD0U;Ruxi5KRvfIWkN5ri{UOE z`@`zJg?VDMpfYrx>BH=ST=il}?5kgCS$PfyOBU7xkzFK8k4y8y9u%jxqEY6GD;MO| z7*V8DQWMcy9={RxDvmPbY-V0m;_>78gX5*wS1MXsLsnJm#8XY}!*vxM4vc@IKyQ_< zLup=TH<-Z(P_WtHA4=4-(-RZTrxCY#IhcHZx(EJN+YipQ6{Pj_^Ajsw$*t-u6K?pc zUVh%i#lBhWHjMAZ(2IaUDXHbiCiNG&k(4=@__E3k|2YKSzEbAd| zuu?X9diu`Labx?7zlHW8Ub79WBiIn5W|!>C=FSV}wHqXoZs+5brZSU1e(cWWQ*~AB~Rh-<< z5u=DQjP{sN<4jW1eFID6CwyQ-6nwIrN?mQyemVduFk+eWodFlrYB8?nNHVp#myXA` zHvc_rNG6t3$mwcHsPAUuL{5Y4KuYM^#)f3J=OxJt`GsO3wAfO|P|%8ysmx9|$wm|B z;+gb>u%_0Y*l2eyT2DvD+uZPQAFFv*v4D;rkMam2D^IVFbkpZBYmZ>2@eL38lm9Z# zdwo2(Z?A2QLj2*`@ZMq=B6Q(^U=}%zS+;Ish0g7 zdRNKaa?1+`7vJia+N{Cz)X=B;JWl$&Je&B?Jxe{Sud`Cyb3H{A&(SSU<4*bybt5W` zY*zJHU%cuwGH&r$PJUMVVY05`Ag;Fa;<#644$jvjj>*y$JDju*Jv;^5USn$#CZFP;iRnM7!P(1XIg zb&J;sl)Sd{=PQp$+7HG}ec|s)rT^$%mK86VhiTb<3gsD`HL;zD>yn!+z`~Jf$GR%&T_-* zjup_QO0SfaS52=}?jOp0rQmzSG4G?e~d%zuYmz$vyjtG0@Bu-E4Jsc9y}5c#4j>^RQ~B&UOHQ{r8hfg}2em6nuKI5~B1ta)0+>nWbntS>+dLkYaq|tOq#>E?m&jd7 zzEbJ3ehS0V57&$Ek%ppUTLn}tSa*78G)8dvpFIN&dM)C>o%*>vUa3pRb5fkZ{UDjk z-PcQ|E-lMHbis35N)8Eab)0R@RH4?&{6XRQc|E7Mt|FQg2HQe;O_+@3YLC4%aDJ;F z{O7C2lMF9x9wb|wKtVxx|EM-xxopWn;->oMVejqNGM68g{Vf7%qKqfJF*2ur3RnEH zFsJL)R|BnJ%|k2oxQIeeM{=uL&$e1;EVhj%yv41#3;RrTXyT{EGK3Gmb|M>UE2?Q zJu&DD7Z9q?M|HJ=Plna`DrbJUXSpw&g}guClaFD0U$6#{oSez;)=3Eu9VKuDv&y{kEI z025O4n)!J;J8!mMTwE}j)js<|J7E#H>1cppCZu6eG|Y+hdRE~vRXYAXru0~1%=Ez> z_H5a86z>aCL38Ki@0-#F%)9y}6t=yC1GONkmu6>YUoD`IbJhj_N>`m#?=y$O&591aKyeNNSd+8t0wWo`Th~$}#K2xb3nx16)1p z!@Z24$}UH`BV&S)1cKN!mF9X+7X0w{fBj;f0^Kq9{Lwr+(njBeo#!1CH!!E!PZEs} zxpo_yz`(Op;QLHu@^v#3O~ETNmrF8s+rP9kcylvD`bM@(C}OapZ_ou`*Z6FjY=V`| z4FuVekt!;m=;Am%3dXOyB}= z_4QQKg=4RK!W2ONj4e-xQ|U%AYgV_E?LU>oets=5pe<#fu>yN~#umI^fAx2&DTpOB z00~Q1;EboWz62oNWbzP(TAeeV8E>V`0s$c>D2*Xca26D|5Zwp%z{B!64zwYwCIN8* zVhNrAbo*9U;qDo39<=-A#IdSn1q7SZH8}wKUNr<9ti@l4qwVWF9tbY-sY~Q%|`O;5t;^iC$=XAjG(&GX=^JPnO^N~8FPCt_O4GbWrwo78{4&=!O zI;E#pG^`2MZs?J==j2iOm$yoOI^)R6B9k+c6N^lx^lmleDC#c7KDv>3ap@m(ofGUwNgxW<8*fdRtWS#a$zUIV}JL>73A&bo+7J z`l+s;EuOi4;3}=frKP39zFR+oExsRdCM|(9GzP$-rk+^VAp^15XZS z3?LFg7vrX`*`H{VU{G9Hc}ZxAl@(+TMsD1W|DqtkA)B}MZd)FA1@tzUB!nrIhdUs*^*pZ7MofUGB+T2?c&xe*UBf_ zz;e&W6}*3PGgI%6=?U^3|AWmr4lH|081!x|#{Y&SQO29LLl!_c9Z=?g|YQ4;3zP}BqX`psI8wJ9UV90 zYVWAr_5Yn>ogm%=LI4Zg(Q!mVLLvdg&}}w^Hbm_pUxR(*0PWkc*96d^&6;lFk=Kv6 z!~#J56#IC)%~LXpqe zrKLJS8x^m;r)UEmwOq9Zd_tvJ0L=0ZozLw%euzcS2D}T!nalCA=uivXU zJw44e4?Y-^>9ebMH#Id4+HODU==Pp1d_nq(ksGPOYOep6OjwitowZok-cCNf#GsKu zk_%1H+)sZgAv=v`5~+=vZ#pWBcPfo)S;=+d?le*K-sX=AIQlC=UF-P{ zx=hK5Oqug5h02sQG1jz~6+;EMQq^mmZWup)0P=qGWbwuOHy$4wzFj(rp1lOA&6^Qo z7ILyoG?2=7^{iA+B7&5)D47oO7%xIxhjQ@SvIjS4pL2)0o17c*y}1VhB4Bko6N~9h zJXGs(D+T<+U6TQGBnO5PtrAyXkAfd2ePvD^02UT_4L`-txU_D*+hxFjoXiKPx(SQ1 zi3wj8M!CdCX+C460=fW&A1TpN@b!JvzYMKggJ%GDgo4`FQf9R%Da7OJ{Zz3f{|ncf z6m|-hp%(`|g|DRpobt8BUXa3YnQ@sF@B|*d>t{u`;D>?N58$-cz+(|iSV{xri85Y3 zC%V4wO3zEZ1v&aR?NGtg;1(&R6%E4dwgl%;RoU0^D!79K9caVpAz_cVKa8N3(2u1% zL2VuyyELilx|8hq5TFL`3}OjMPSW1yL!|O^w^d1%v6LZSKg!A3E@UUHcj%I{wQJB= zOIU9pKvmejz1z!V2^yx}c+=$~-6!J60{AouFX~Uh5R|h%#tZ^Is7=$%7$G z&V>xq@vo`wgrzrwnU6A=&L(>|UNQyvg%}!6q;epmplW44R+@K7Z5N9ixgU(`HSQ)s z7~Pk!AsmI#y0py6Fg>n!66O;m04nRprkNYD4*GPHy1{k2VRZ-O6mebPp}Li98BTcb zd<=3}?vNWE6-w*AuL{YpT0a7vX00|yP#JLRnMbo;x;q>7LzgR{{yF=QA~eIOktTcA zF+^j1nkDY3+G5sIteGi`_sPAN@g)=)p+GE-)BMxpHXcijGrc?>;0pk%rx8^k#Z_4$ z*5NQx7{LYKl*c1g>T{YJ_WjA|J9mKwNaShl!TQ7iy=&VpMb$d*esE_tZ2ArFX*RlA z*Gtd#WpQlOjj-sOHo~k8tl7P3P!0Wk15Votc!mn+?9!){y&;*FA9F}cB#mfl5(PXT;P=?3n*qg2mS)DA%I30$A|4TbTg$!U5WnPgSSK&h z;^|dTfv9rK^7OF*Ytvl)VKHVIG)X48Ll~Lg{&R~SEgF%`Py4BFw>33olCrANX@@?v z0+R!S{@(LH;HNS*H3<}ToeFxh=!+u<>2-fIupHoJZs`r$B*VkslNO+ZcIIo_>AC`# z!f{-3T`dSY6P_#ITI@lsV2{TlJhVsJE5JPf)wul*FP|I&iQ`fr1V|;JCpr-Dknelh4|Kor6wNBjv#dV(H#Bg*x1b}C(&??*J32{GYP-aj0fy zJiwPFdfdU0BNx!fWYZr~Zt3W_G#IEGZ>b6l3Jtwd;XuYCNY}*Bi-4aCIf%79e}?~Y zBoO*!j*I=YVxv@$Wl3 zLw!I=f-5!T$f)MXCct8&ji+-D!5{wPp)o4k3-w4dKp&dUY$ci*T-MllPz9jZtUx))D|nl|Tye%)X?o*qW3w;ra|wB6K5i+XY-s}s43a!JHarlK4X{xLd< z$N5aSSy*AhyTYg=C@@fvG_6>qiD`k@NiH0)?F)?Cez+C^tM?@jCzootAO0|K@bESd z9jvmv>8Mv0ielBBZouy*l_M?EyvvGU?w?6y9ZKRSbY$o))ydUYzk+^IDoqhj8mmo& z*u*Syaw1^@3uTx@1gRZOR56^cw4)c&@P1uwrq6n?Zh!t`-;FF{m_Sd1N6UHDvsyn& zh|UG?L;Z%H{ov3A01FUz952R_0D@9QGhJ{wM`%dW^PoT}_Atg-DqmDsnXYg^DVFMO zrD^jbg5t?XAOS#lqNQ;su6~{BjP@)9-L?7!c>AY4akPL^_!JeN`F(hpKyyNllOB1$ z_X)ah`&v$r<(UjcdR=Y*rjf@BnrA|0_htyeEqzbVMyfT~BROKo&-64=OJW>Uv1&HD z>YF#pj-YyP6h;~lzl(ZUvOnbYox(fMjB@G&WG>t~E$~7%f>WT#qH(nYUMx~&yst&C z=>>Wd2PF!Vn_MSr7MK8LBMl&FK~PX0g<|z>BaAlOK>(+ZV!>y5_9@~f5PASfi!5(y zcQU8$&f2u$Zc}qR(X|}|P}1C-5kW(y+ui3JNu{6`Dk>%xmwR=N z!N#d;X-U_+O6Bi~mOy)(VMbr8k+*SmT%5y#`!2KaI0lW zr|*JD;4K|plvN)fuoJ;=fgaZa05`fp_Y3*ewukO6(=XTNpsWF1hK&%?kG>er-WK05 zpw==Ds|-&11#L7?v6*Qxy#HI2lMOeTs<&1RFa2iTD;RX_D4|iLm;H9pi+e;pG`DbZ zM{uqbjR?DGcHihl3PYdMF6AY+D`yrDHQw`tlEwH?(oFprs#P^qfyw|-7|?`7pw=|v z55;;SxvMDox3Al%*5eL`Env}0E8MY11aI31Zxl8kdL7l;=lE}dI`K=@tt@#+2 zv}I&uv@iB&@`qcr`PF&?Hd@A{R4*iB2xD5nv52bjgk-@S2uVozb|kAglfF8!Big>v zJk*6glp|%hqx8cn%af<_9i_gPlT@qMuRIBSP*>J8Hje3Dwb~8R4ed#?BcArF3mD{y z^nBvHfkjFoF7FajImMzm;>Ce{yM5M(AO&)gloTq^;zA%ne98XCeV96t0Xn+1+yOgJ z(=HBSBq^P&uzWP}N8;}9>TsVK#d(&3`bg(ufP|`CkIN)qyUz*Kb-w|P zT@BD07ctPsbT<0!E@}eA^OF()%6E5mb~eNk)`#Uy0XvoJmeJ4_ zby=4T1L}Zpb=)^T#&Hme-)nGq?83K(l)MY|d>C&#a|pN$Bmnm5AP7(5nIQGL}kyp;;+MV*`)xE&ROgS+cbf-ZqpZ_teQh#Gw&I<$A$AtDT6 zaQ{q37AAinLSSg-{-yX?typDs^>!qQLzOxnsh4KHsGs5|tyML!dzU^5rja;zgs6 zuWq(+JQ+?c3nK63kE`206LENHOf)qBTbOiXby@8IC4z+zJKz@~ zc!$5m&T_Q2P-j&ys4atbU%;R#F0it1MYWmokgqvPQVq$&c~wU`ScCsxH*6& zwA*e@H&!d^c#VRh&Vnc+?7DYm8C&FpZ&t9wRk#J?j$f$Y@BdI?V#M}ixtJ@drBq2)B$f^0JKyC>`_b&KhAk3P2AIN zIn6rZWHz;9ABo%JKk0+lE&RJW^um!vrN0>KBZrA|fIj_g`KD&I;$#URDAU5^1a2|v zP%0r|uWqya*=(K<3A(1;geyx*OII&JeQ@CpDo5O2_n+(t8jBBZ3y8o+l!xgIwE(wM zZfa<#aCLGz54WQE0qWX`R36jA`Ht;eVaM@`xtn{``yk0BJ4+hOsEQ}zlm($UNjDT( zZ!CWkWUG|w60NCe!P+C1BD_sU&z~#Qu*x7oyW443Z~Tr^lY7A78)i?%A;X|tRO!nz z9c7(;FPf-_J zUtd#P4*=a3s>taKe7pCoW4^&<7IlC9QAKE=_g-Ypnm5pw>`HTNM@(~U$-bW_rF2g| zfIgRv6Rj$I>)7{P)}Z8j%Pkg_jpx1Y%*bS59kW0gSPqn^bpW;o)|4>_zSA1a5LwUY z>FK#$$g#$lDmSfm96nT(tVfnGj78fxq1r0zyT6#_2>1)8CYRZODZ`Gx?+!hOq>jEl z$njh3L?%z4pX_z|ewV|&I2sB$tPclmpCUu(`EKaV8V^6eV+CNWx`*Sz+d}LwyF@0; zbWcESet0%kZipdx(WSB^R^`o5GQQWAvDU-w#qg3Q>eIWOGFup&M(Idn>bon~_jsHY zcg?1THuATOj#jQSVJ?rtdTAZ@H9q8p^fNig?O9QdjZaLFF!}#}D|7em-9x}A!$I8@ zYTOxe(UfWtzzI;0AK%i23W0>ysao*+^G5q-(g=5S5|v9oj*i_I;=3V`nMY$y&g($* zXAh|1x@%KB7E8!X;Wqxexdgb2&W__ReC#=efctH`;tM?)Pyj?jFSZ}%j-gpCe03N} zfli&nI7$-{6aSUZe`*Q95~gXuN8)e$4+Vz&1wC`lR+CaSHRbgfKbB_$KjH@EnzoQNrSKQyllw_pK^PRH z1JEGhVS;k=wXr|)H2iMM#D)ClQ_>^sVS0DC5VYbJ}*fge!9E(W#aOY{Wb^I-aoWqbd00*}yyZbM$Y8w$D-^nR zSk#?id*5Qgoayon$*+aA+sDo2hx?Tp0HRr5MNE2?z4P!d(<~(42R2F5%M^-jVSGVw zH|Q4@X%`kLe^2)6NXa}uz`wV1g8qK3c2sU?Z2WRPL09wF_5L_OGoWE@ZSmGXqla7v)dh|`0jwHmT{%&Ih~uEBjE)-ZS&)WEnfC` zS*>h|M#?WbRV~PLH?+d9#{IAR^Kj`KrBvZlxy*<>>qt)PUV_OvxB)b;x|)eZX1@mT z7t3{JW9=x^H1&1B_c&g7>AU^SUuHj_WEsdGE+xUw9zZ!I9nQDhdeem2d*f(@2$ErE zfDl^-&is?O&|;O6^~D-_>pc9qUeb*)Mh|U>6Q&(uWuz%aCFkkc9SbplauRh5H$8F8 zJv{!|f-7~>SRFhVI7r<_Of3HUO<*eu)v*t_$WX$M_X5|Vd~PKv=V8#D1LPuaWet z{SujrGXT!E9}R^9ZUEbl=ap?1Kb$>aZM5{+>Hg{vH>k>(XszFp$`{k)AjNN6ch4{B zKk>B$qSo5Q=C}g~jv|gGxWuQsrL-Q4uO3Lh0r~#1gaq2S)o1fVL(2>qSlJsN)gEN; zBi2z5fE3KjJT-=b$O)q|;-H^Ld8nS$?QPDBMA*h_7mVGgGT^=6$Hnmu{cMUtY%%(t z#PzZQV9M(oKn-FaZ3eZL@Rzcm0#;~Fmh+%)YU5MKw)%)L1*WrVT}=e`E~h$Z^lYj4 zd($RI(pS}|MRY~hUjS%YBoEq^4x_nRL2YmI&JRVxHW75l{yNJK@c2woJX z@>zCti=qRs#fF|OS{Z|joRMRCTE#$@#e>mA5(9A-JT<3Usj}#TELpQant&y_~1#U z!`cPbqbtpz;KI^_igSHTWUnqX$-Ea+pyuD%8o97w6)T{ucMx)abQKC+ z%^f>x_LZ8BWJbIx3%(0h%Dr+*fb&6`0F?(?;hp+(8f92=mfre6JW|adb@GD!1I*Nv z9yGnB>k`BA*~Arbnx;4SdD&HHqG&Zo?2J-GuBlUZp+{kAT;Dy44zP8*%7cag1e#HN z-+7j@Yz1%j-OsMC2|?1Xz?p#-A)u=$@CzPG;*p++E+j8`OGjoOl(A^1nH&n7Py4{5 z41t7x4J=zT=7>?_ zgg@&C_G&#d#ckNqf>6aWGcESx!*P=4h#>@N=L7V*tYAjvU? zL5urTA>>blkux*NNS{3{WCL#X2z!2cd93qf%_oy4C*y9=TurA~G&V@%Vc%7H8#w2W z5l2;>rP%rd;ZKOJu5Jrx)Y3$qO(utj$?fW={6G*4tW23%|FkDrZ14~;ub$lIJ7&%W zy~lr!(h|?cszYqgfeu2<+RbfeR<~HAWnqcw>Ua$#gzmo_uC&1ATw6DrtN~rEu8dM} zAG6T>p*k|S9{#p3m9(HFKYt;isi}z?E6<2K5tNo)*E%lKy_55Oq_U)2ys0aO+d|=3vI_vrc?jg<19e)h)<^`^;A#~@#JK0dctviBpQ{~e3aAT^I?(SU+8YMDZWy5b8sW){q zO3ZlIUjq~;4s2>+_zR{*#1~Lu48PAVgNF82zPPtB<3*%f(X2!;KXu@|1%bjZCgW{m zqBv=-rL8MqcY;*##gJal$IA49<{WYZ@n#WZrqx7SW7`qoy^P{_8JU@}Kq>L=@X)8E zy?qum>pGyh=Qr4S@(6S(d`InL+q1M9bo9G(f!mEhGc(R7*z+6glBqho7Uo=PLX8V! zzP+!wt@N4m9h4(=0FZxRTUe8GAehc|%@J-T9pQU;5i9(J2aJv0+I~Wrk1s;4``I}v zA8;b?T64cYr1rvNxe2)=ubNJ}=!Q1e9Qli?N)^LIW)$l?&7kcC)2#;TZsmqvo+tp_ zms5|?D^H8BHiGxfCt`s;UT?fp0Abb}=v|gT%Ss1mHy?&xw%nl!(93R^`_6i|dpH-L z|1AtD=8BJit?`tO1k*jeS9sm+K3wKF zQMGJ&(r<{K23j>k&=VRm0!+iu0=zZ-+%WSd>!E*=HR$W7A9d`;hYAu}KM~DrU#_S} zuXO_Mb{(0FJ!w%tRmTnX$#KL0E@A=Yf^zdMcsqRlVz}q7j*GPTxpA9!~`$o6FD+P?@=zu@O*?mZl|qxG8EY{T3a&>pZ--$ zL0dP)Ejgs#HR%;N!BcQ)fYFkn{CHSrS<3$i!e%U8ES{KV&Or(EAm9NnueMO@RbTA0 z+Wa}RUY8KoR6jjye=>O_;&+dy<6b^v=4oT3UQM>L$>Z`fAR|gx0^7&30@g|) zVW9IN2B2V*bN8MkppA9JBUgDptZG&Q0Nl&ew)l%XHz!gakEJZ(7$&1169^dQG;aef7zJv0CP`!B%y=>hJSz2eEfG|P7o4U3wa zQwfQP+@bI&fpJku$)KI-Mn{<+^Yb$0B_+KZ>+6{S{&hO*&>GFdmD{14;U{Wjfywlm z<{eQczse8l?byDTIuKtW%Zfeb)wUhH-7P0%pUC=U z{Nt^GGfo~29DhK!B?=a;$W_Fk^q20PTJ@Z+#eMHtD;lW0>U(%bx43Wplv8fi`bCPZ zH+|F(=L|bv;N$kdeq=!|lCkE#>blMM`;p5}8pjNFTI+)8JbiSAh&tGK*;hX#9aw@J zSe?c&Yd$NChu!2qU}ydGDf1a102>Ur-lgYY+C9Z&f;ND}ZN+(gavW^)&GXMmJ>+~a z|5lXVC)q+owBA@#Q9^0G^7(g0xnRT7Kwp)ek<6(Ef6`c*2&e|xT@=%Y+v_dFsTprj zubK`^-+$nZIy=h?XD+~j3HCY6(v@ZMJ zV~2%j=R}&{-JJahdeJ_hEiMAwXPaokQWV&S%Nb=QY?|WzoKmS5l+(}mRtA9;x{U6f z1i=bjoW@RsN#q#o3vDSTEziE1^Y`|qM@R2fwz(-mIHXIwm&oEYm ztn4#{VuY-0glt5ZtUUP`pDz0yi89``-vJ}|P4_}6NCi=KtLyPIMq06gv}0Gr7@&2i z0E)C0KxZ=r?P%iG#<)*>@4UL$7HXagSnt}}+Ij&=X=rX{x`Xp6B0N0YWWrknEe_5I zuUb!&4we90r^%wM7F7-<`S5LDk9}U1)9vCPr*6Ba*#AQRjXY>t?uW z8ymBlm<&6m5Hgk`K@6LyB$xqIb#lbSveIr3qBn3#;YyMi=jaz7d5)wLY}W&J$53C= z;A8o!H~Xt%+qR!YN7016Ug%Rv|4c*9VxXw-%i#8#Qe1glynbeP2(3z397|Cc0_TMy zVHg1x7YELrXltxKu>G%q>nF2zw^}q#K6GZ}bCqGd#>i1_!c!0QW6*>6lzv}QOk*fc z_6Q-x>GecwCBm9|+?~V{fIeqNIhh@{0=7T`_8V+1Mpc1s&@U(TIS-3soiR2)SEe}6 zo7Ei`6QdE6AQj%m+Af*Hc1D)=jVWoOUwyZE8bc;ai7OZ26-`tf zv7gXjm68t`Jjzq#mYfobGp@L$Ubk5@lgV5>7I~QZNt95&X%t&`os63C7`CYOF!%GG z&fV!n-M5*(!Yc<=bqxQh1=y23jr#lNYbr~-;IsLg*wlFac_H`(zBfoyn7Q$puoM|0 z5R_(a+Wgv_AK6|&aErq71QfX;iiI%{WV_g7nxr?L9S#7IG7SYg8n*V05?W`$NOoYi(@Ko6pp= zADFkfDho9vq>|2hQrOH==6MRK{y%k{Ra{ix*N2B5I)$NY2ysM8y1NCGt|0}bJCqt2 zIt2ug77PRdrKMx=N4J1{mTV#!H0`|&e^lqTF>)6u2j(^&~~y~|NGge z8sE1=E=ukb<>ub)hzclDB0^Bi8bkaD%^#zj$-RVRuiW@bbV=t@<;eGaH<#Hh;cR;} z{B*)4`Q22$qBvAi+gR3~?D;B1UQ6|}b&JXEI)2mtfD;zSO1w$aLCiUTTg=W?r71*I zWZZfZ!iwLgJn@CITgXNV4AM#e$DfA)&EcWs(`f__5)5bl?2nG7O)o8Zf`xI^E;Dk6 zp-)rRCW$$BqpAG8Swv^N5z0qw-Cq{TmG8a}II6-M@is)zQ{&@U&8Wf9r9XFm4O`B- zK-6c~T}@%t4)cMgLIFkrXQAT*70v2(tNdpi@5TQnmG#)gvL*aJkfW~^fvjdzWf3Wf zQDl6JioT_Ye+ch%kPH4k-f@&`jwGP8*CT@7Qsj@|$K7GUXXJ-OBlA8YgN2}>*m%j{ zBeE~9xVdJlMTkz`*bp8DG9hdOC{uFfh>|~V;Vtlt7Ko@);nd(q z<5SZd;wjR|8kxu7mi4n9$$w-WujWY_bu?(KiDuS@^nl9ElkpjdM2_po2i^8rF?1&Tt;mnb8B3TUBR@PJ@`sTdiOY7u; zdcq<#fc7wth&x&zcn;$w)W81m7|HTSyd#;znzH0)M5a|V0YmL}Bw5zV>91AK2RFCi zGZ8?d&Zk>X!vc-l z-)>!X^%c}%S`r+R7&WSERBAcL)R{TB48_yU?iOiAT65A7;4@Pr^*YkCtKpm^K6E@q zF={orHOz#m?4tYFqhGRf6QXhx2UWXOm{$L#t@TvPw|~y^pFB7Za>JW1e6)-GuQm83ZJT8X#rYZi{=~< z0qUWIh)C`JpFUeg<&nWbs^Q?je|uCn-@m<{patEi-)km`WM5b)X2yz*D5!|AysY67 zr)Baq@rs6Yjv|ck7g}^A1iya$Dr#t8h^1s#mt`X=qsw+Go^>m+0j-cqU_)*^W&rg#qpa(c0|qJmDpLC;2@PdPnVNc2RCW0%(kHKbOu@wbW?iqIF(_v zT58%YMGb{qgnY=3eMLTr=%^Uy+jv7&iDp=c;4 z%Q!xDKW2Q|a>7sWbg6X6wanCB6$H;5U zblG9B9Qlx6+q(h3f2Gj=0TX-<&YdBp;>(n34&>cgd~oot;jA3?~%WQ+f;z zB7em&063?JpTueeRlfJmwrQN$J@H8flB+G}5k6g-B-e6WGlk=DrxyMlYT{e3`mQkS ziq7Y3Uyu5j`8P>m1%*WRhJPDK@2wt-F2&F!bA0GYOT-8l@z(I=W3X2D%mh)14y9?n z-S6I93fs7HvSv}Ei1>xQaK$VLMLytW8GH}HGqsgV_Br6V-f#$yGeZ#0*NwT{UykgI zAfP2ATU4HSikvdZabxGu4@CJ@E$1A8mw22Q&dSF z6v*CgKkOo{0aW`N9xVaUKI~I5rqs%+D)~t_@mL-$qiAEwi#Mk4 zd!XEZ_z*yo8g0nqXFE_UF1Z`CPG;&6O&x&6+gpU1XQ%7(rVlwA3S^~?Y>iD!pn_y6 zAoXS~#gxF4Itz^jDq7TDFL7hKBWo#l|4{@6I+ZW~ZDRRab@kYAICX`9oV8X9wD%{J`ZkLw+wY~lBU!zJa5Zrj<{~9577;o%^|5d|%y_N?PUqm40 zk6wr|B~t|Bb4KYkNBSGZxK zDICgjK{Q_9nv=rMQQ@g=y7w|_;2H1fM2_fckKiSm$g&zV%RsS6Yf_%XmLl=oJ>00| zV1c}jB=u6#KxOA;L7EUJreEg(-lm%SN|E~x&y3N?5-jbtX(1kW;Ea)=&$66pN_eZNMQ&gDe0 zO2up``-w%b-*S|-lS?%-n?Gm#Ht0X9N|RxY=W4A|=CQKV9>pX%g$ug8YGUXUeg)?l!87e8!pj%9(>Lab<3hOm?$q@g2&5M2I365=s>6g$!pG zv?=H*=0523Gtx*Xr_R%}$Nogv{m z68#zFTBvkPl8PD)?Ulc+^d1of|I#{O>{TB7e1Q49dJ*=Uv?2MHfVw30lh5!xj&u~U z{_2kz+I&Z$?_RC+ZUYfjbx1GLM;XuJ)t)z$elOEbs{A0lWD}9pCf5DDTTyxePvmcE z^*&NXHgk$CT>?t_nwAg+|M zGM-5$a#%L;M165C#g9#+7VA#zU)5Un(gV5b@sLvdCo=4h~M@>orf4XDDhK*Q><*#*!XlVo|aEA{A$m( zom<}{Z?w)rF9i5$f7CTJD4(BwE`0u=)keV$)+Y}MmE3C09DgS?sT!XO&cFhZ5f|2o zS)~$UVwTCb-M^VSvzu3bxG3ogYjv6XcapWGd}@?S@7Y@23UQw8(-rk*vu82SzS^b4 zrCKdEw#9GI;}=n+!s+O2BuZ^E$n3w1Db4J1Aj4-%p-`)SOP03H@ncHBWq)f~!WN%B z1om+=a#Emrh){6B(acF}l7;!LEi=)PqgA1`@_REyI1}oPI(4f0*pdWfel3DYh2@Z3 zpUZ>=o#fE%KX*RiT_i);xK(7AnK8XkM@i4Nl&{Qn}p6-BGkU+>VQbzFa+d(QmJp+Jesp`Gg->XPbgD;`}cPCf6MVRekvJD9R3}kjo2V^ zeAP!Hxxzu0b~{pFpjvL^K`^>M@X3ujKUV^oIkDfX6*gIHiJ`U9kAyX)ovSnxC&>)* z{HH;l$DW;=yl#t86y&dF6kpVPO*O|c*&Y+?Lrcc^L5YhoJJ{P(sj~nO7%}tCTz`N6 zy^xR)Y-8-VdZ-?>7;X2L+j=I|YnZrBzJ72$a){QGy*W>#-U#>0} z(4B95Ylb`1R%8ZsK0LA?z7&aw(?HLk*I+)7xIAjJq!gv-zf%r3Gb2lpc;7y522T z&sK`F{VXXY6w%wOb~Bf=6ks0|)cB%mwC$6X@lv^j#BwK*xXqItxct&Ze^#{;aJ*N{BhkksmJ|QeD&u4eBe6Vc$ z?ALj^cA1?F1=&2hoZ0NDn8Eu`#m&v=C;sHGoQs@ts#%Bx`6VG;Gv;^G1MI`MIH_Gu z?`slb+IsAQXu7YL_PP%h29>lm4=n`U{MigBH1d&GzB?LRcQwE0+}&US*Fr*QVL(h$f}mj=bdELfiE=}ANDiee-4UZ2X8 zx)9b^i&3t@hhGCyVz!EHDvGvGxsnl&J|M4mSoP(+k%W!bLtTz+Cqr}6+5s`EH+^+21a_1LWv zwo)jWnm1+}h>20M@yRyzNGgMalrKu~AlQZvMvGvA?tSa@g@R#5m^ZaIT_k&r@#pV+ z-rWML_4Bhngi^Kgx1W!o=L~}-i7W&$5BMxEcJ}C3Kj0dm&7zB5o7CJ}v-ce9GhocI z;BK59T(z0+y4Yhd7-UErcuZ}am9lHKhf&+rCR%Q70{sMIvbRjFt4IZ4b_={2Ldhp5jBBhle0mmHM&(;czT7;q{n@AAze6 zLws-autl#)Atxn5$h$j${pAH(=EHKp+ljG*<%{8U3wbSfL>B%7;DWLLraA%q!KBz8 zcT6**7j8bHM$byL^T3~w> zYOs$M?PQQl+DRbe}4o-=&W1-56~38$MSCd#*0uswUs+_MOen^W-9POXdFt>>8~$8gLq= zim89anX1gXqsX@uHn~5j=a*-dTY^70vC*U0{r+ZasERIPKZ>J-IDx;3WK)cYPd{xt zLO}@>a)^Q5#_O*5E2YwVESfmtCMJHD9@Vy15(^6NlnMCU5cGSxRGj%SyR?FeqxZ@0 z$%d1F-Ty<$@*+3UQS(-D+0HTqwzZtp;cMmfmO|rGX`5v1?>im%o}sy!{O_1lWYbjz zvy?dtRf^3bXp-$``UQ1|7F7lF)#UTkxXP6c9aZTFs`i#oNf|gyANKbRAW0%|Sm9bq zB6O-p%SMDWFGmk`zmSniymtN4NYRC(JhSlO?%aVJrhn0X55t~q_2HJ59Z@* zN$=H-PhqDOp1C^nykhR20<^q_RP*ouK=<;y815#uR~JuLzLtkUs6QxHnzWP=>x~|; z4DUeEt&!NgAVTAm!~1UaPw)>O!fAHiRN=Nw4m*l81UW{X8%&6aF_8;xuKfK?93jk~ zfKNz~>Mf){XFSgmjhFf7+E!okZ>8g1FO2F#OEm|aMhaX55>2`^_`8GzRoQq)u1GiD zL^t77`z9h0PRa9Q$&h|3xcaEY)0Md!SI*oA92tBDxu4C5&zdWCZWXDkwYN;xk$xg1Kn<3#%Rv zL>8U>W=+acW%@S9SU-n0O%6Mf`YS&!3fhR=@DF_Teg${m1=Z>ZgIW9Ma?cu8UQafnD zTj5-KePQoR4fyF zA|91t2FqJLADVn$G*Hbw# zFBj;J8&k!U@w!iNP9?ojE|~>7rN;MDgynV5A(SZ6_KA9b$ZED30ZPk(E6NN(KQcTx zi12$J7Z~AA`$~Az9fLY@rutLc*k7choAHJMCn`^!(3s*V@cUhuszjlG^_F#-n38fV zhD7H_(GzNM@$SA-!~n3Hn4e8744)1?+v|KvzFFsY9a|r-@1j`y&|vObHs{Y`7$w(_ z1Ik5tbWU~H$28v*?Yb!KI$Y}s!^)~Cqo~ZPN>ai0hL-jxR0(ki6*mgL{yQXm7M1i& z$>{3jAP|-HdCX<9ZNvEoC%BQpes$G*adDwi?z-6`msuSaD&v#5A*BgXGi)}oO{|G2 zhE2zIuaQ{mX=*90Bl|6rS{S>=Yv%7KoJXlrmRFH5*hor#&Uf&?EEF1(3tU@eG%@eW zXg!frjz}?RoZ5EZ*()ac>^`&o3fm&a{U2IO_jU}Tavshlr-)yq`bT+Q|H=BvZ_$JB zo6Ab_gj%n0UzQN9Xa zna~E@(SAXnx9u-l=Zohhm6k&J)&wEm?yMzIoe%s&PeN(rJsL8ni=LwVU4uEL2HcSgGBKU%nqVqPFJmEvTcT!&;g~6=fwT0p!`o^2h0^Kkh3WR!$s= zUtj~<_rS%q!u7h%mMTHaIq1It1}N0SQq=U7aXp6G$PvGWq7EcZKJnE_S+CU+7`z zpnJ!8jDvYv#~y3=$qlO?h-Tf9*`PJbwK6KveI9O>aUSF(3e3g=ng*%PTbZYu{X9^)87~ zAu`bQ-@z1r*hLfFQg1kiIe>UY*7xwFoWla%Ji9xzofy#hp`IBcZL~> z%4h&^ls@1jjjQS?~1|%;{<&QB~%2mLgc^}+WD^%jdy3i z(DRx}bmUHl#xCvd)w=}hj6-fo6P>mQGXAxfdLch+cknFZ}Y3_g{7h-3%bw2qstJg3xm;Ot6J@$PO zegaG9(#_$LigZ>Furm)ozj&)yRzJTlSVd!bR2{b@A*zdlGHuzr8RmbP?V(<~o#4a! za=^X97;AD^CGm>5)PUa$A|0`FwkOps)DKvQRRE6cfR=S9KnUbsmG8UPS%BFHrBGi2 z#0OGaum#w%WZ}MTXGiGXcO~n4FpKs)N3LjOS#4C!OdoLXtE;P_!>UV;3E5RjCHR?N zT16gp?cYk3={7N`^oVZD7Zz9~O=x z!9hTR2q1t)qmq&c5IhIm@af3N5M_f!Wv5BS{cTBoK(>s)_BLKKSj`N9unNF7(0swh z9MOJRMCrWaXKS>q)~%TMj{d@oLeb`A$JoA>Pma6})3t6|Z5dm1iuV8IG5%aMbzq+= zvDX9Ac>E6tzwcnMJQFpVx3WD}N)fSfws#+rQ&3>S%gbv7E>)AxOTp8bCv|`*P{y(3_f z+0^@V*H~yXQZvx~=As2XBx_{(+ruEnwSxK6OYO4RvnS6?kDlsndwl==IF-C;F02&? z0$h)Ok7_CSngzf)gTM8Gw{?R?_6E+#NeH7usMQQ>t$Pc|v+bS#4IwWlmtSd8!PsYJlJTZ?D;RtLVC&pN+ui56-HF-p6cUs+m%-Ezp6YkY1*NF-BVYu&blQ4KMK>bha3yG-F1rRse5BW0pi3Bn@Je&d8 zbajwdSE{S43m3@JmZeYRA&pVa^_4fOn4$xv~L?f7{LSZZLI<2s(;kFRZDwZ(otXlS|R?zh(%u2K#e5nzCvZ(vhp5@aBz2 zet4X3CI&SO={{Kr-mH%nt1QJ~*8BivI&*w{9BNrPeQi=vX9}>h`TDg?BQ778#T3Xm z{cvu>LQ5d4O!Oiy$S0z%X;B;%unpRM|F)03`=Y|6BIaKRb~*@UZvsMU{{YAgvaz0F z9~aw~I}HH=mFDInCvRe62xQMcZvl70%VCocMr(MV0gN^i63oP=#r0bbP8skyqjfS= zVGh8kybBn%s}0a3n)pZCel2&E48N8I!y`sU#$xa^8h{%t_x0-^zJNLj71Imt5F6?q za`x@1{fL-zrHWb(T;e!Wy1kKU)Ue;wyccwSrP9748G7b+4P3F7;e46%j>*YM1zYP% zc~#BO-+cHWjlV7UM!);0~Wf+HuZ(Nwuc0<_BT;ifNB znbAWW13n1yYnXm{iD^LtGTwtk-TmrV3O@oWQZX9~Ib`B&Uji~65SStVi%y$$v^n&-7v!X-B4;#STn=1 z*S;q4o1@R<$yc%nF-~|dOed(|t#k^vR{H7JbR;Rha-2GJ4Cl~A?9VQd!bNBJNeoDD zI-d6~0Iy2uY+x6Ih(h%76hF_tnW?hYkpp(J3fPfQ$?9tncCb*3%4zV!Y2*a7Jj)<( z*^$K10)|uB2OdPWIfwz$S+}!GObYAe8Sn?|m_0E~crrA9SW)G!jsXECO@2E@9&Tp3dB3(m+L-&AyBRPbmbPU}kNH~B&>L5xZ3s=c+ zC&o#c`?)u5UR}m zk9HNn|9{^W=jQxJl|T<=ZgV|DP7NP_XHID`X)y_I6>?4`eVX)S|E2ohlK)X1%(b50|2+yXum3iXfWYg)U?Tow zQvX|r{&U;`CSktL;%MgppCErn=j*}F-hn*-m<#Y}3L5^-_JPit;76HTNeCd2HV5QKG6REPyK&QxWeDs z|Lhdln*V2y{{4)GkEf46=o}cswSRQ>-$gexGz|THTri%X%vjIRq)%h02DbVfTE&jVe*V)_kf0X=PGS8sDd*0L=0~T58->sSd zyG)r|R!Us*-$fSxqv-D`;#B&_-cr!P1O)o{hyCNNe;zGkXTN{G`sYhe%s|3~kY{!!t-*ah(1Ki>oP1{f~! ze_1Z@;$ODU*&FOCe_+`VALIuh5Q1n7*dPDbzJNdk(}L0lQG`bHU8;P?1|~Ib!w$g= ziAIH~jc?&dLFO*9YDUT1dPKGMF1*-TPB&ZOJJ@{2mY5-_hm5g`m|L*M$KJ~W=0d}b zYy&AN0d04FQo?W)uU9A`f={ij<}5Sz(I;OF=?D~VKl@zuJ+n^quw-9*ZE`D;lC0vF z>)w>frtw>kq?C@Gtj@NxNXg7zg+%wPFLqBi2nmwR6@x@OOuw^a#dEhZWbZWc%WVYA ztVsr@ALfKUUh1cW(VzP_X%FuCRvEhFuzc8Eoc!Yb*d6CjePdniUW}g3&;wpgSQk0c zu-Ur!E$SDE3GYiWLj&eV7ol281`Gm~hA~NwKT;EJ9(*q{7v#K|twu(9Gxfno3Ud12 z;tGm)f32Huy1P1a%6yiOT5&%X_B|j>)C;OTB99dF(|fBseL54d{pXWBx$t?-h@Rb# zq@AzC5;TPe?%DNJ18qIxzL3!?a|4y`FYcZCm;(<*=Br~70D(}@{rw?;WM(r%Ae@jJ zn(8K@+3S&E+14L}HgB1RthJQ54!fmdVNkAAO06!bE{g35LSFtV(JQB(0&*#G6Ov?p zY;@gZT@<$+*uEtZJT&iOX;x`>R91F2VGq}JQP-MjUcvmEt4uS!Z>5wu_2 zrk)$LeGQzua}qpbY@4I7JX$JbM;-92lkKNOg8XOu|NY+!rPM;3X!*~S1Ih>A9HCq# z5?x<1i}8UrK14%e_(Z}=C|9x9wBnc5-L~`7Wz{XksU>BT&osv&mkgACUt(clc|b`` zZF%qBy{dwOf;wxlaU-F0Mp`7J5lZz1&XO0)iG&K`@55pR@tj!Br_LP+z32TddHQ&C zRQRCsfv4isV4&bLo?XiMg#?abM@Pq+wzj<8gM+sV3-*ytP9J)fcZ#=8NE|<3%9rd4 zyfpPiijt=c_Yg9K$I(DUbC;d5up1CKQs*IzRsdU+j(&qG#lg5=;G`f!+x28*WpX+C z_t4~cdPp>y9I3PC(`ZfNNC}y5+KdlXx;sXyvK^Bl)^_SIUHCry3FwCU_vfy;1w1@F z;RXgNU#F*EQC+^=t);DPT<0Z#g^_V-BH;{poEC&P9W4rZ3=zTO%5hR~Jb(0k7y%IjYjLcHsgC9F}PDnDz`qg3c}2_0Oc})U#IE83E`m-6daF6A@{GPjnaxn z#6hJ6VX4*o0cS_YTXDINYjWmi|%K#kW4_85p&55lxryHDjH>o8tid-J0_+OVT4l0j5TA6iBl?yVq?kM zC7A>SS&m$$R2RqZOcupJt*_yjko8deSpAuoE?bv z#V&_!D_xF5+FMkaH+!7yZ}<>NjBb;>h3aXnh~NGFXn1dJJgW2H>XwTlZBI$b|eA#IO?eLINU z49lI*7KY!xpx*92C3tu7-gyT`D(rVn76irM`S-N|82-nrtrZb6IuZUUJ z+^?^#?d=n9vu4wIDv%f9FT8vzH4s)a%UhamDo8ZAGv6c@Xv37exQ#KLFzR~Ezsr|l z{hqD+=;d-42ch8@a}tbwIop6UQfDF+yYMK0dhTGMNlb3p)IU781c#1=eHX&Bp)k*3 zkBw1D1U)Et9}b-*X_k*mmg>{DKK4*Gz;=thGa}!kKNorImiR3FXQT%8+dYKmaqM$2>Jb5v{q(lI5BLY7PS^j2< z3PY7j;SmN<7E=_J|G-;psuW}n(a+U2VSe*w-*zl91JuW?q3Wjti2Y0W8ElK@6<~R#{N;fW%mow zWB!?+ZxEJiSF3JUX9OW~eAC}rlFv0v3W{y{M?@ zv>;x#!scCF)W%e;Hh%pr0}5V|hBkya#eKfCC>`?g$dmlDJMyG;@M`zudef$&wB8k0 z=JBqF1a?kNyfszn&KB>kcC%!y{*fUn!d3g>bT%&NT4yTou4mDx`xbgDwr9U?&0c4+ z2}~)*Y(3KC-l$!M>eSw$yvjVdqXz9QL6>rP&NKzhzoZX;szLlx)$GLny*vZuqAanC zbOC`Hsy7|&faJ?BnD4B#FqV_hzCuS5S}Zp%0!~F&gMOv|Jfw5DmWVar8H7w%|4V87 zd=`Om3i>nQXh_%yP2jc32yFs7r)y)C5lcJSy?zZtf}Nga&515w#jZWj@^|O$L}@xD z4<%5H@VV;o>F$RAH2fIDdd}MoEWtBLKJ_am@7W4U+5;c3vESn zRgOBmD zb?-Ikb*@|Z_+#amy@nGrm)z#n$aMMzyInYUFC{6CrFs=w%mz%PtQJ8L_w{6x)UslR z7A0~-s^pOd$)#+~y**-hPgc6}Rj4w9JFR2Z9WwWq}o4P=R2TH;lh`>pT%f-=1-HB!Bvq$}kvH)bjLmO-zez(dm2tXUrM z(En6SJ^{R5i7f;Z%lJJJWo{ik78%2S!6G4I6q5 z#%&k-8b=6aVQTe|K@b&O=9h$@PAJ{}OzBw7A~=RP=jZdkU+ha>@=7$*^wnns>(o#i zPxVO-XW-lZJBpbvsbA~z^wzQPT-CGphXkw^CQ#tezFaV^7gsPfF1-GKKl>ho=i4{C z*G67GmJWRJ>O$|VmdC2BGXa!@BfhXF1zYE6IAWcOsrY-&#U{qy<_-ls&`!8Y$_Dq8 zNF75c&%PEw41JTC@$7VxJSqJ#txJ9IT3|QuXH$RLSw8GpKk2hrQwr1?6>joTG3Tzj zyW1CCn;*l-mSC0W$zjAF&v?0-_lV~8De~u8vC@3M_)B#+D9wUdvPQs;PGGLf>ZE@r zbbwEzo7I)d0p|rFy~|ddQp(>WqnP=3$@?F=v8PLQzRY{$&lx5&{j2cpY`hr(^)JP1 zGuLN#D-Q0?A6J~sD_=V97{MfRec%y%7cY+OWTK?t{JEtcD;8Oe-=){^Jb^k((;=I&w3)$}qZurNcE>uW-Gn}hEc zVtzY69D+|S8qaTz+kO^wW_5JyuTdeMPkt`ct#0?N8a8qa4&Y^RYR#X=&){56TDqle z=ijeVz`o6OuN;voAx$Os|{E)~Dh^5#*f`up})S zgAXBLxd(kb7V#R_3yntA;*)~ZK8j;9ZJq)1dxJP>AP!4CqAmP>+{(%-<=xU#D_X^n z&Ft-#im0=-9S|x18Tndn(?^Y08ozx}$d{tL^Zs6)?GUZe@g9Rf-bZzv&vuk%A7V|& z>%3I$ruSPl8ZRi-#uV_~{CUT#m9RdUC z>%1I8Lz%t2ydDPJPV8QcEMM~;MR<)KL|Va}fpgD!gR>0%YT+7rcX=S^g9IfKI!wmZ zn=X9ocuQ%`rseD`GFag%%goz5z7skkgQ^XiAI;0H*ArR3ZtY!8w3&GPCn{`sQs8W^ z?evGh`U%Hf{Kiv`Gk4!{;RD#5`1|E%*aOY-@U!$=TM7!aS*$)`eO8;>krxJncv8ed zpbaUWzSQKGde_8S>sDSTbAYtoog^4Hiz5wc^~!4CaX0WEMswP#$HRsCr-hsJ=hJOx zR?Q_PC3;YGEUeNiYklV3!346P@{=DM2`3jmQJ2SzT#tfXAWa7*ruo8LkUw5q%K#BX zWJpU+4yM4o(vBcEa(`0MdOS&!n+6H(c+A&b_~wmGZCyRpJ8za;*C#=3Gj&0qH)a+n z)QlXK*?dM~lY0cBes@;1{GPXI|N6$N$H$iKxi%SJB3h>l((ZAiq{a61JCo#qd;v~q zy6%Pu--TlJG)C1(qGqR4L!OS{WJ@QeF=^p3F4U~yYg`$_H~UPr$btg z2N{I_NYg%NY@h$E(yPg4ii|p4gq}vL2_cjif2q`o{&y&St9WH-FRh40GxK!4Pl{BR-L#BDm0a-V zx40*_UiY{L98nplo@CXt)rYFHDya?)Pu;z(kbyQGPZ_k6h=x0S?O98Z$BPB-Sxy{cZldX!lVubzBuE0n(3a&dmr=D&*1 zVD}=u2^Z{{8fetdtulZ8^z+L4`UiZ*?T0~YUkl#7d$;NGX*crXA&AY~!Lp{D?>cgv zOc;69XeSMMe0}}A&2=!hLKr`5_29}iJg!D$tseK~WAdUC4$VvZU}e&iv8AO2w0H^s zBU-1uOn(2{WH;`8-_?IuwA2w3M{JV=G8M4aE1R3~Uej{thl>Sj+mCEd-&?oY zcTyuKMpgs=#5^%ro!Co>ikdMGz3ASeK6iO*@py3AK#=j#7Vpy=iyIW`(3lQ{+c5JE zTL{fE8y-!T9RNDeJzilO)d@xuUi48x8SC;EP35I;Gu|ya`VvQorzavJs`R>&S*#8x z?lL!m*QTIZpP=s^lByoYG<|<4e15EYzNi}SvT5J7_);z|?`+-G5hTUqC#_Kg(Talj zIRXhyXm9SF%|;Gh?5Uc`zUx%y!>3 zH!NOhcSz$V3jbwVX^;nvI?M(+mLD&)pJTdi;iOgR;&f-v*g!dG>>-2j*X*#L&zY>l zSMfWWEeEqK2lhDhB~*-{sYR#vcj-Nq!})nmV7nfjpWih^ErhX$-?>A)d}>9(C=%+! zopwls?6Jw-xxBl#7rF6JxO^qMp!<0=%lJ_J+}(FaPx4NGyvp855yEexcxlIjf`g}k zS!AO{S|9ZAq@0e;&(BXjb;dk(j^l}%&+hbNsQRFbw$h70KS#oA|r^)Jc0s{k_Cc6rjm(TKhDTe=Ya$i}V4W%e&KGc(6a;!#H< z5S8yI=Y%j+m%n^v5fks3AYljb;|G@zHVJD@%q%SGAg;HXnwn}A!XD;3TVTe6THaXI z2Vab+o{gwN4)-V@Mnz4OyQCMbhWaZjD@*9nVPOsB6p*zdT>Wg&xD65Hcu;Yx*#n2Z z&h??2gp{=Z-B#;KnY71O-PFajF0Qz8YKFYy(UR9Cx#7Po2X|EZNy z>U7PE{F+;;u(Gmpr~zNX7$>=CbJJk|Ts9(`BY+6v zm3vM8RH*oW)V>`xA43X(Ce{|%J0+dM zlirBYpqaJ|^yUpb`qpg3PQPOLvFfd1gS&s81Ok6mwYj+oOx#b&t}e2ngUH0>WbWs> z$pL0aEVf+pMyf7C<{nc2EqT3cIt&nWy?z@Tz~JtFATwn*V=-e}PJ4PM$cWV5s6>kou(T7=DrL?jnQ zw7L$-xUn58!Lo|d;JxxS^J=Hw`l;#ZfH>rWCY;Yi;kezI!*Vyjt``hMX&z2HC8dH&|bByCrSMGPIK&*9+-cM{;~=3wU6dZT)@XY7F6rr0 zMiASS;w%Xh=VS<=>nqNEPr0)C9l+k%*w|Qva&V7+J&Is2UjxY72Q(SMGFx`QL~y>u zi($d)Ns;5@W4lcL7sGBZ)3Gq_-%}nHHbb+s`YLCo1}z4(*?V2(_pduXs&ud*=}TE_ z-^^9_oHkagTXCp#r6502!DTDaljcLZgXd4wS**vei!k14si+V)5~Rl!V}^p1BkJmS zEJ&#F0VBv+b}ouuT|6;n?9IYZ0@>G^$K&yM$WQIjFlUiFc82XmDL!gCMOT3b~% zk`*@_etr_J_{{OVyHt2Ct?4(wh$zDQMC(r1Jh5O-dZ%2KLTgN{3-DWq5xNx39n^MK$DLke*ftc zFEkh7rhPC!;g~{Id*Q2)(^`$kFOBD&WVOj(AE~LGYunk}H#(84G^ZGdnC7nO5?!IW zYM@e2!Bfay*K&Nxzr~=?oH-uGhJzWFsY9v9gX}Z;Bj%W}up%_vg_#6}r^TW7Pe8Ob z(z^G?$4eQ#XPCkuY<3Eus1!7+oA1OJH9R}3;!IBl4Zk^E7pXTAo{m=G`T#?&pi%A? zj1Y-|MlHCWduA6~cSlc8kGa(IQ(a!#qt%^3)hNw`;go0b>{qThqDqa~x=Y46HVPV*S z+mUhi&=8#ox*KrdLBfD>cwtrNX_1e~w5+u2XkV*nW2ai<;;ksg=RgX+N-8W>STZu7Q}<3=T*1-@*=`dAtxTj4egXP8(Uv!K|0VO%YH0ocZyAeKqz~MGFte(Rz9Sm z^%2tha+7QY>A@en)aXBH10o4o8`|Yj;!fR4ZVJRqDlfF?u`7bd-$zMlwEH79??C9e+&a%%}d@hh2g#3NE%d>pc9 z8tP-WOp@^+8ZZ+}g}C=YHlewsC^*=oIfMB>wcn2=c<3-pTyp92XnuZ~7gFDArvBxS4%j|O1AIQ zT8`cDRhX(dpQ`*42b0iyTlSIF)VHP1t0=P5G3W_lm(8u4f_jeky9@7sa5(AJfx)g` z!eLg{vlGmfVj^2wfbmbjkuNCC3?03xl^1@IhC{D30k`SAgh%KZzF&4tgm*pr5@h3+DbvIJ z?(MKfD+?Ru$vpzP+RcvGfaD03%X%Yatm26dqqA+TH!l|o*VYAvHt)|SO7cGGbq~}W z4?4Un0cHH~S~PL#&wUy~Y63w5K8PSOA;Ez1#1gvp<{PRD)mS^8?MI z^0kL(Au_I3^e4K%BttK=adrTUQpP1iOyDI{@6e^#GRRBKSMR%GQLKPM`yMtcgdcV1 z`T&Q#SO}n_)zve4jKDeGH+)5SLU-;VK#HXj=Z$o`mViBoZ=^-;75m`x&J+Zm4xDBwpW$=M5~_9t&fRAKqp!qa6eD+CAHH=auHGAT4*{ zd=nuCCQ-{>aSaU(*OjKbQ}gq7uVArKU1hz}wMH49GLLk4xu5j%%IZB~iSJ->l*;Hc zv%}sQ>gSc}&L(>SNfLZE9Jl>#Tn$eOBk8PEYlqQFc;6q z{GRB!!~J)y><|+kjU?T&ho=Y2_-paW$<(hcYf*B^I|hJml?@3FZfYujb zZMp0eig_sQan{_a%kKWPk7~gz20AycKxwZ+?C6<&kN$BEntZyhTi(lF-+Kat%G%o6 zq#%MCbdp*VZ{B_{?vd%TG25cZg&)nmd%Rk)v~zShVadGKee8{mjm=!Gmz6}9lQw_` zle7vjnb!5*Gh+~y65JO;MMLddx0oyyGdO4bDLLf?oqIC+o{h6=3su9ETOxJ%jUiMA z}KVIs~$XjXJT*Ac{ zn>iX6u-n@(Ji2a(s=v;ic13AW*sP}7E)l~(wMjJOIenh#HQfjC+*jHP=;nwzy?1ds zcoFeIV47VLnN_^{tT^lu?vD`MITQBY-6~k8=TndI7(LV~;^mCeAn+&MAR1{f_hQ~8 ze}VzAN9|Y-h#2%p)mhybA%J^3HWAA>*=`Qok&uyzZ*6T&2ZV_TKug-%@U82vIYD0s z(4{{B@EpgQgCc*2xMUPcTDi98;*#Ti}%QA=`vs2lRJ1*ZH3O!oN zxX?s34oM_3$uEz83mnlKWUC@A>!i84-S#un!^z5OI^){&&lWj3Ij-FfRlk&7$etj`xfbf^$XujOe|)bBU0MW!IxQ_N2?d3R!^1|2NlB)Fk_Fffh|P!i-(=D< zOk4O32)M;wf5g}#h)o6f#NTMNz|g!F03MIp4nKp)feUw_ zTp;o`vvXsOdssO9>dRZ^>>aY(YY8g5TuqpfV(G-HD}gqHV58qHe*1Pu_S#W|_GtXw z?+*k#Ayz^aB?c--KU%VPwo;OkL~l2T{%!%V%w+i9*sWKKAOiR1`mhSl$y^~W7|Rn` z@bkV_;esGLqnNe%)w?;omzcuQi|z7rTJV05_dGRyWd<^p+Y;bVsH(`w>}x;@YsYDk zH6}vW!ER|yP1rgSWW2ee`_wMA-Ne6$;-(*cpL0WQLbX?+XU6dGFaZh<5)$q-=$F+% zLqUAe)`-40z~L-vdd;y)hkEJtkv@?Y^(>kolMp>ZXn`0Y~@5Z`k#KB}d@e0gqvB=0v}rRHmZozFFxPp5Jn1OYCxagEdPt0LWbVEr#d>^tBeyr! z)--r&J8lT%{76YoE(d|kEx^m&Ty*yV@`6nCLy0amvbge9*ca`vK&FVn1Ux2{jd^XF zknhah0PvwN%nW~qDkW=j$2ca-lK||b9qa^(z6|k;+0GQD)3-eE#Z|lN7=BKPB}gL0 zSllp0zR+T5qxJbZ$h8#-=C9=)CDz$@#vk0t4M`|pD+CV1AerQO3=98m#oayOklE%i zRc{RDNXc=11H`4To_|feEy6e$%(g6?S=?_`5V1_qV|@h2d^RJ{Y}%B!|_Hhzu0dKU*Hg4kJ@!On>cKW)Tr zDGnis&<%pgo&=7x#m?^$dc5C%qwEPCKo0RsS$=s^m;ajMgHzJ?PWMD>KXFkG1Hk41qZl4&x_ovi?@ly$9J$>=ngj5i zebng{d+X(@T=kg!)QiS~&tcLD0Tsq&pLm&ARsKk0|Ls_%<6 z1+j+t*fKa0PIYI%6!#@74i;66qXnrq$8BKa7gJP@SB$I_)?bPecQKzZjUb}(ap4Jz za?8()$@;3dR|-@9X6o_wAgJ{nNb6e~0yc%O$EmZy_&FQIj=77mYhreG_BQ>akIn)) zfnOB#M#z0Y*FU}s-mtX1^JY10jtP0n6b-~L>1cKKw_ek*SW;H`wCKSwJ~G#+m&1N+ zI`HASxfCFLksJ@=7zsMF9Z)%0w`kMK#?gLs@XLPOv*h2fQ8!)okWUlOPS5pYOo#VR zS^|6c%4DJGCQRGQCK;Ttq}%?ze73ACEUS22E^SX-s(+&=3T{x06H5asgaS?=gL#uP zEXAVZyt>%?-r#12*vvUdueSniLNK($aF*T;!>6#v|nocv#X#_*3zk?yKGQ zOa7A~Y$YG$Lx91l$D>QTl?T^UKr<(s4UYS-%dLFM$Ika6Ie;EY2alGZB*LN7`(19l z%n=^u6~ogfR_QgBUodd}C@uWM86;OGEbs>K;~ed`ex+Oh9fn3A=x!fdw>=;%imb&B zyt>RueSMEO_d@q4UEe;}b!l0YV_KiC7jFvv{rw<2U_josWoJN9{0ck!-HT$qtW8Y` z2+eI(!g<;BTMQv{k@b7P7m1vGy4CvU*H}hg5wa$j;n{OwTGen%Q-D>Xm>oeS!iZSlJ#&_KZUxLnTsn~?Y2Y4w$3JPL5++J0juR!6yhT`X5XU{+jbtE1ZavRtAowp)l9JAW@fZvq&rnelKk2JD*NaBI^afIeD^KKOleEY$*BoDltTdgI zJFZjB9aMRYm-8;4egS;lxj726G5L1+TLQ;jxv=&u1Q&m8K{{bkX8xnKW%YsJ&*4ae zbWfGuTB-o~Uw%`Vl8s`V%5`}9o&EI~uW2SR+tzQ-Rin;({<@U6lb+)Xf){|EuFfJK zF@n7%e%o4vD!swPq=frK=C{>y5Dsiv2nAO&i0D0Kve;Qzj=pT2&2E9ktU3ZNCbn~r z@-5}qgSwG)j-2O_x|bdiMZe+2zLuxPby7w_JV9chgdL zgclsnyu;rqQKzccred02E6S{4&>vrmW1K&fHL32IWa1sR(pES3&N8BoGMZaj&R(J5 zt#=N*4_i~fyv`Rr(SHwCAp`i`v#SY5ewnn_8bgk=J_5eIxKY#}kV1AscEGzBWELM~ zdrgl8E&uG#N=Qqi@ft6;;h1X<3m7r^S@0cFh}EugB297O3}i_1T$z&oMjbcwm#%8S zWL{9WPggrr0CoZP=p$e^E5mkvhA1D--_!OY%I3jhdVluw#$44yP!tHr#qTv<9it$V zcdN*T{Sk5We6n@&mzDy*fBkyj-mcdDs-pE+(K#4l$$_W&%6j7BMp<8slVdnaO_)dFEFU^ z{D#%64Q}zqACKqUGV5Xjl7Vy4fv5F4rS>hE0aTqmWQ8v;@|pXGS~JOJ7Cyh4Ap|y; zvbOg|x-~Tlo)f{adBgW)qh9fEPD99<5FZaP*fbqpLqYn-c=YOP9>ZOi_u0LYbZ+#w zfr!**yzoh+tI#(9=ckxItpy)9ZX0!VHITK=>xrk#$w`XpdFal|(o)Hd<(C#2j(=r3 z45StIxI)H-@FCuIE-%4wfa?kNRi7upzEe?Bwg=e&P>Pb0GW-13tBPD-x!h&9MLV{i zhFt-Z!PgQkttzC@p*@NqvDhyv##9ihg@njTJ*SM1kLL!naZ=c6^35Ve_6biw%`hdF zx*m}g9WGG(J*f?jv<;qgzLSo=d=q|MChN^++?SD&o%0OayGQw6JCpIg3RZ=D$!j#3 zYyqst5GhqbO@q_Wty^uSaR$I6bG@sr-BVPnd}Hl=BJBYX^AccA?|$v`6w)0Rcukcs zKyxhdLgr{ijfgP)y3xwS%EV*g@&<>c{f+6%7RFJ>BYAhTF;n44L1;lL8gmqJ_sB6t z`RTKPgQ(zf<@G_;qtYIWt%#75KT9QS?*dn=@dA0xe?EjXpXE@Lx1E!$8TJJ+`>H)h z7_tJ{rbVMannzb4vZi`2B+$-xJ|MB`@=Wlw7spwTw#xUg-1?1W)r+vkbH%mXh-_3e zjp4ImxZ_j2S#EIVrDy}tnbRM}`i+rpZlR_yxq@w_s7b&AlFb3ITxMgU>fRf3zlZg9 z9mwZ>NmYAmvPE;Di+gcPFX}^m8=`ud&d+yjGK=d!ycn+2E#`A(4#%MZChOmJw&5cK zD7BBOYwPO~zd#lvC)DSrw{TBa?OGB&&`@<^%#$u%5wlcdn8$sJ#tAM_d`*?9Sx=Ik zZJ0ZVl+Dq%Imnt*IE$4ar2s zMv2MPK@~dAG zrwG)23Z!zE8w)C(Zyt?`KtV~{$qHJ#o{6UW=i?|)sB8*Bcs0(Q7;>FZj`LF-_qRmN zW=-x=?zH;{ALtBj=M6H=60hgc8yU=RS70*TFqn=>KrjC4mz_KPlvc4Jo5DXdgeA;J z2?=ty3*IZ21j()zi{T{tBZ7>XMzwH{9Z>U)rrT=>J`sW17k$cB7zt_~7y@@NyXMF7N|fE&H=yr`@4-Q&tw?Tl-hatb`ytfeA&l?^?De*-(VB?42t%T&4)bR0E8ZeQ z-?-OG6vRC0_tJR3)yWMV4hc3;?z<;G<9A4tL(D`kH})`5ROWCqkFAh(=S2hHV)CMD zON=L@Z{(Q4`m&wC;Bl_fhu56D0O1LG5j{FT-%i$Oy(dw!16Xr@DXS zX7b^Eh~dYpvGyyRsP}%>Fl1#wH}#Kdd5N-^SoINb&yb?#YC$w%pdL{^=XJHi$dhm` zZ1nOGELKB@3>h2Q0w2rwSeO-Kr7SjOC82Opy|vlPdG8L2<{1sIc}ZN)r!CrO+USDn zoB+2B6GUz?2BhDH=}F&+xi_nk6^9^V`nTeT%x$+Kp6_}K!{G1 znw7N|!3b5BA-qK2^-FPo!tvq+XRLoa591Rl`CP~Q-R>9Fo`l%jHEu?muosNL zdD(3@4o2Q?29SmLQou*ylt)?yhO}3aJ&Cw);_07!2ATeB3E-rlwc zZQl83={T+GV%%}<{vVT@kz++Ezzf>>S;8(N-~1^9Hj-f(@TxM=$!8BvDbX~C+`hC| z>l1bPlb$+}qi?J<8I8H2;6TnXz6U|7o6ireHj(H#j`cr4=p|rShk}TTF`TqXq?bl1 znd7Oo;DRIhYaLzdmmqjbR-&?DCSr-Cm;h=+axUVA!I*~@3kuXqBu=X)w-<- zF0t0b$5bXG{GLfPKs9e5AW1gS)-#xG9LlT?{SC)QG;52gLy7nRN>yO~*%8n&tD3aa zb>5vXu0H~#B;f0SvgePIPX;bl(OaGv`8{`8Q+QQBW`;s~Ala0G)Gx}0)P-0m32Rm; z4B>f={!O2VfichtR6eoj=P&4ZBuU;S2(=$F-@b|zr0hd-vryDX2*tpFu#e3V$HXrE}Jr3R2lZC)6#WDtC&<8{l(hqbn8*Ck=P#d~0S#Jw2 zGYR$HaCb0=?+&o!yV>b)N9)!(0(|X7Z7oA~!0hB?SjM8<;O_2zHb3_CtV*(VDqyBv zg?h{6K{Hv0{R)Y`@`efJWvW7;)8}k5$xmz_)nkq)==Kw`|LL10PrxPjX-NvT#C@Oe z#W0jRO%R~7oauy)F~KR__k8VSvf{cB(9(9k>)g3&;T+`9aCbz zRo$fp`BEU;-vL%umh!cARjl{7%7yQ?s(;+vC##)7ruX|pWb$Gn19@By&{X{lm;+eF zF~LgAw=VH4naMvS3{MI%UtC<33toAaYcz<-62#cAREk{H=pOGxZM%wAhbnWbNdol)Ht+3R z-6Br>2cYEfJzjma4TMye5{VV7-80Q*UVZapgK`me(*ntk9S%7{1xs~DXh370K1GQ1 zA#H6rnm=jfA@Be4uE-AXoTvm4YagQj!r6kc&U=QHl2xAi)6$UQQ=v-KuI9TJq_ zrW`;SeFqxtnVlhqs0XDz-&PKt=tNw20B9iEhaPq_iAy&Z%jgJ`u=cW`sc}K~xFpO6 za2Q_7EG9m|u93XHA7>&I2Z$gTaz2b5h!y~c6QMdm+ATr(tk{CD3HMj6i?wI26rm_z zGb6L?{rPIZmQq@9nJsxyZ3OXQ(GOrU1qC#6breafIwfCvnEZXSxdUwyoQZpb7q*CL zDCizuQYNKW2S|2Fl>OFh3-C~Y+<>rSdoZ1Y|c*E`Z+v14b4=26u+0rpWuMC4daz zu+{c4TBX5jy6%Lka{>avp|728^nOmRwEwCp{}Zvh5R1tKO#6~Q3%I`HaIZ_4x4HnQ zDU=3TW)GZED=@^`KNHOOG!#gcSsHY(w6ri=ic3&2X|A{08X|S@?I<$fQ_Ju z+D(itp_zk7yCL` z=<1s{UO*=T1e?V9W#jS14~sEio$q%qf~CI87pTLT{(4i?J2R%!^3FwNNR`(W6nuTQ zCqJ$h0&n`snCOWb4lRZ+pT`#zZcgs602U@GylCOx(@_G)=`T|vfe7JN~IrP ze;H~!T@vq&r@Aurc5>Ycp{E$>>$`mj!n7Pqp>#_+pkx#kEH7UJG6NJGY*8RvkzjOl z#M3`6<^2mz|N7HlzXU@9WEtFy1LlhbENn;JhF_ida&uXvhXA!9YvTO#Vhb-#GzvV6 z>s!j_GOck0c5_hHPvYzeT;Rx$!8%{vq46tD*@a&n7a;@mt=gz0zu&ErS+Zw zKEG2U_ENTv;X;PBKN&b}GG0?yU49}s-|es^h7S&s;CrI(uQ;xzzWx^JEg*18M@`gv z+%g@BpAsK!EqFRsqc$x-OIA}?m&{|g^75#aV?g$Grbr^tsR0>Rr(Eb*%&W2W_J%aM z&|KMp?9!xsER`_r15WmoTT4t6bA*6e0E!cjF)VpriP?zRV*=rB-sn%MN?a2cm!S@u zF+VR?wlyQ6a>+?_21+zQ$4d!>%}>ajq~3r{^41|>fJcAjWUDPNFeJnZz=2-4FES&D z<&)Mn+V*LVJL^>psM1B{cPK{RiGaF`hJ?+O!*RdkaR&PN=6R5|+|E{Mfrx z;ao3*A!$25G7@CYAHLsnJR%alhTR^1H`FctVFKoc52T$hFA0 zX(()VmK}S)FWPB|nx{dhrl;($i$KK~p7Uh|u+v;Q1^`#m=C{TGxZ^H;w1_E6lnX0T zjAIwZXKTZ2-K`>D{{C|mF(yX6p*>wUJU)Ia35C7xk_hB9abU~6l!--`V)e3Qh;Ny$ zzaRSgRC+a+OTE)D$DSEbmSYkYI#ZU$yfu=Y@igv(hBv=vO4oVa>NB}QLzV|$7e!{t zg6RWs2*APxGx`>3H#%2tx*dZfLTnM9?jLtRZ5!jce_Vr9kGk{MC^Pl* z>0`Qf`SRVT|4?cyinrCIw;q4`np~G$6ZzG`M>M-BqBqfPyA!#h%^rqT28_ld zZ7r<<8OlYau8Gpbs<1@Kn?lT~Xh%xeLp79|@8u&TJ5ZJj())ArZhy17<^?1%c31*V z7}CMb38q-Lr8Zng6PVEPl9MyvN$sl}!V=6K6?foid_n?2e%aZ}E>3*xJlnT}zv8Bu zcjarQqE=brZ2OFLUPNkqbYernTz;ML#wRuwy$jGN4mD=!mog1*h=;oT_sYx5%c#UO z)yg=16rQEd@7P5|MOd|i6Qm(E>v z>Z_-|^=&=#I$CpYKmGW_8XbAlgkJN(HCHOAFC-F)g_%r74}<)KkU-Oc0>pqXb(mTd zoD0~tjY7VFNYp}0CI(&CAS+4g04h_RB!uuVIx>n~yY^O`J5edI1f&ZniT3t(aGzsn zcnAPcDwW_>(k(SjLpGb;@Awb`N_7xQAbbzL?^SJH#u(D+6od$7hsa9L5o+Vwcy&nN zTJ0Y?e$i+!0VOmCbX~8GHtM=w?FmAyYnmqF@i^k~`2NwzN{BGDou!nO(M?gwwsWe# z4+JJgm}4D}$E#*aIC>e3fCl;4qoXd){{7EDG80m27#$hLeLwjJlyZ9mlcR|rFs0K( zI|?FWo@K@R4U@bUwe+8+6Y&Rr_{u3r5~PwTIIfR@ z;Q=Up0p=aM3Jbd0p_>dk6e1}g-C3EQ1PQJr5N53@K%qiz$)Uy4(35cxRS4p^N`eUv zlwX18*x0>$_c(K+)()=?MX7KK6D3fJ1`RE!B>+J_i01{_Z>}FS97YLZ@g$h0L00A- zdY(V7@o9|06C8s3Fs=XJ-nqosm0jogTl;a&eb<95l1+BA^@1L)j+9s}$x0_`13{93 zGO!a50s}#Y0hEb>j55hU8D!+ZgFpiV$xKEN$bmBm5*Uae#IVwO*+SG3t$vfuCaYM* zs$2JY9((VV!9KTGY_$`}Yyn143t(4uJ?_1A&%gKn*INJjPmiK-9pD3l;edW`@JPdb zCT_|=Yuj*k0xXw{v)3L&>;@0?EIG@wlaUY}?aF5tv8!ZkI-PCXp7Ce}Ob8fjAqAop zR;|Mu3kH^L&2Vys#q2KL^|C%&4UiBu-DBkIlsB3dO@Y*|I1|8-b>k|E#t5e1xi9@w zNDX!zIDX@gaSttF*ym{ffO7I-QqrQFPyt%5{Uwe3Z{NH~2U;fT-|L(u}7k8fo zj!z8e2M->k&8`q*l1yI$^pOmtrD>MBQf1Gb$v>W9>ph)ShwV^EL5Jl6XF`wASJzYsalP8d|I! zQh0}u0l%J2SuKw+BKV?&B%n60b4-4lQp`IwN71eT|^cK^e=yuwuRHhjQ+^5oZn|qUc=cD3WL?^f{1Z}AoiR1luS+7>i9=y$>s&GYth!UD5Rw8B5!y3bQG~nvqB?{*-Mld*x zDJjbV*ROAJ-6)tW_pojg!$i;|rI3}cI!EC)?7A_lzX zi5iiJh~f;?RRu9nq)3VlDK?-1lPY5M08JI%`Lh#ZLpwIHIjJ@r+IdG3%PJ&RYvIz> zk72xr0BwxS=0~iThgokT!sru!55IMTqaS>O@l($e6x!)ssE<)eSQY%_8X>f>JVE^s zbtTfypsh$r*}3!#DG0HRG_zx#dG3o`y|hgT4eS0TZr|SL@aYz43bN^5h7gGB zHLiaH5yN~j=OZ8ALE8qATxXx2+#@zM-W8Ax?cr-whkuSO`}pxLsflQPEAJi2f^!rf z{W9|K9op&#Fu20##&gWy{4O;6h#DrlA0eeB#=(O-KV>oBVgKO-XAKAU_Bp)$Q|cyg zeE$~xD`Sdsz|JtSx4ZSkj#3{)9olYyv(Xyl!#!YK$=3FjZWhi{H%kT@NNOqj+c;BV zHDYX@_d7aSu)S46N@r#M?kPY)q$R2$B*D8LF-4L--X@+-r|)}_H4gyh$!{a{`aRlq zf=Ztz7@|0=Ef74BT;a~06UttX>(}>a>V~RmX_`cT zFd&A=^rY&TXQp3AC&y${ROtp340MD^MOZAB96WfJltO1$K-O5d3!0N#42l-(gwWOOEKO?q+v0iF&T|W?HXJ3SgdADAH13E8%%-vUHUgZ&HVn)aF;*A z%Jd1#`?N+d$s#D_-t!E$t`OpidHNd+Mmwl0v071UM4V?ZzD7!cYB47^E%W0COz*xy z+eSnS`okf0d(w4gYrHiK2A=K7;LekR@yP+Lr1RQYRYgtSx$0`pgLnToTaz8u)f%%J zF`PU_={?r>Da$d5fGtLdf%#&=VmV~ofA3w?6j9}${Kn_l+wJr2yNCSy2hVfs){j}P zmO$o@>-Cym*<-O>oK-K*xU`XO(xgCiOxv#T<$z^OAO+48IPdU zbdK$v9S(;}2E&plj%5|W#IA{=T)i?OB@k6_C_GEoX!Z%Lz?Oon=;+X^N!(cg8Z>l=p3+Nv!I2lTGF;_ z6wiFVV(apn6k)lXaeVOhnY}}A_i0Yv_z{I$qp_yH`yuq|hghct);Pp?#Pm4$;U6*> zZIf10s(L|6Eh*M$4ES67#5Lo2wIoB(UXxohu*1JBJ@cmaCSgZtz7P;|g4FOtrj6YAXqsLmsu5A&2v|;S+8-%u}TX@!#;{)jc2{C5Zh<#(hXd1 z8)Qf#(ySXK2_;>f7%08P7X_m5aQ{t0TycWpyvN+Ooj-@gmY&|=8MZHfn3unIgfW_@ zzI_j4J%iCDirxqjr3owc_wN%@ONuQi)Yzy5XK``~0ot~v4GR_z-y~M2h$#?jX+xsi z)OkfnK-BaYkk9YPoB!W@%%w_bLyc;r=#6>saK^P84M|{ma-VuN&9j$cD0cQx>qyNC z>2DG1C84eeZAC~8m_8;wq#R60#-XOb4z|$s64jQNT1Mk*VEceD*t*Kq4}F1?yMKnp zie8cMu3@P#+W9csd(Wfvu#y-J`|Ru$cJ*mk$a%q!(fpMQ?$Kk+Qz`QA@C zo=<5PbC!z(X7iIyQP-zeZXw2j8KHK->2k$#xumL=lx|530UKk-`5T-wxxR{F`_eN+ ztx2f{iKGxAW_}*pin>0b4Of^R{gkF!b~GZPcy_OUk@2OQK%%bZgcuMbILX7grB!Ty zC(|m;e7{-Gm`~ru*gn=YNDGL^8b`>-AZMvmY0kW_(Knl?}^j!@?jH$-|Pnul*vAHNMYFLJdrQnMm0h0NcCYIZlb1yX}*Vlcdd zH3bj}B22FRb$b1)ET?ZVUmjArl76`jZj#?KUtnC#*4F6g=CjxDJt-bP2tXT6Ki}*T z5-|l15BKR81yK{z!z0E!`#kfhzeQmRdV?K~qG25u478-F7LIlt21XFBaHcj)|; zunHkU*`J`sGMz6ei-LoLJ0MC(5yF(?SHE?3^)~9Ntw0KtgGI~WdzU71htbwN|t zINK6JOIh^uvApt=w>V2T0d z;4)SUW{ZYuc8Al4w@I68wgKVh_kgk}`P+Z^(8vfDZuB&bhQ{?e@xZ zRTnjAg4KGBFA5585EX2SXjr4J1cdRYfD(kUzomF%;X7ffK0Yv~~m7=he zg{40z8I%RRBKvn_pA5lRmwmrXZZ_;6PPzABL7NgA@B8eDmrxO$8KMagrL9})`joag z!8%B`tALnB zalB~w^z&arQ(`!ImV?``WbRug>h^%q_OmQzHOpD8qswfRD)2ix9dEM4x z&S?aph+$2XhSv8fMm+>bB-ZOCCbkqsiSs?IDe-3jehU>Pg+z!A%h@q)2rL&%Lc8X4e!_Y^ zqi$CmoCczOiqYBDyzjd$r4 zj&f&*;b@zXplT|d^Pq;w&Ly;7(C-(B7obMyb8vXf-lYLXwX^wx&1E&6Uz|v;E8DE1 zIio(=C}yK@(@y_jv96%VHZB-rX>5hF4(~&*Yj+|b0D~f;cyIAu@h;PiT+7anozU*W z2q_A0+}USQHIISMSP<*!nG!$TMJ0Arr6r~{)p|y|4z%kAF$v=m)-5Ufo{+NWNzNCZ ze}QOIAQ;EupS|9JFH@brmb;eQAt$wn$q{W z`A8+S4I$J>QWlF-o_qcUdgC#YAZg4!1wOv49CM?Un~~Cd})+v{S6oMw|6ft;QicGei zW;xr(T1QH4UiA!UsuS+tKY%D5zl9CMGqy`yjC6*H9nibP&2$N(5reT7YitH$2m0(i zmk{G{KDUXJ=0sLCf(oY7FF0p#HYbS2=Es+=#=GI0s>MUmk&v;scvl`S!QJef^zx-ucbxbo!61wa;&DZ50C#&EcO? zb-Pzmo6Bf!i#Q%o>|O^e6r)|F+(E?U`Z0p0il8-`A|XaX?k&>|RREoihE0-`!If0I zT~k5hqn*v1^Kmu;x?$bA{(z;BUocOoh`Vx z|KMErt|L1skYdDYL$H0EfYF#=e7k0K@__YfhV>;zBi4I*MW4}VOiW5_V}4Qkcq{)e z0{8inor*vbG*qnW1+$}984XHAc9^y;r}In^H#TLPQ!GDr*PQ8Ow;TFq&8E{SSX+`3 zSW)@|i!mjuRfRE$L9fqvJYsieoAGGKXgr|omEARp#E^L9m7j2M|2~&@-A``bxcXNI z(4YCtXUwfzw>~+W&At*s`1oWp8Kjg#3W27rCB5SHf>)kmCT1KjsERL*~Hj3E+H8bp<9cAMj)KHGd0@g*W2y1RTC zlig2kXC>S{N%#In5Xae5bPXGo28%%r%v-R!K*-YE<*MfJWXhXwzk`zS&Qlfz{Xw7c zXvFc!A^9ft1B(}5eDU&IZ@u+`sy;m!49cpiB!t?B5VzYV z?0^{~Y^mxM)%a|TaW90nOlMB@U423~=HFSOc{T%Q9s$=Fi?P|DT*P2(aV9<&>kx5> z%_o8wi&%pgk1=I7MK>O?9xFv|=~|bMU6TzIt#sz*k|mTzHv|K6zdvoZ;f{9X5}_g; zJ;*MF@>7Uc{`EPHV_H5#1 z6Yp(#pZ{J=G1uBr`emQtaDwk`A$G`UxJ@u-(S)#Qs(M&A&A>Tljp-w%z=#FwFxKLW z{{CRH^@bQTDsBI{#bV_*gSIN>u_|J=Hr7q?^sxn&YwrdtL7k~?m8Ja;Q2+ja|4;w+ z{s)1<4;0YnJz*TGQWf8ed zw$9y4DP2h^?MU8A6lji0{H?QEaM59d|ve_HP_L4Z6`ti#bau=`Mi5V7$jz zhxig_`xraG+7jbRY%#>z0`EN5d5rUjw-nxEZHcp+g_iyDFedA%$(rhF-O{vkVtoR* zt{!X=fx=p>&*qcO^d76zA5(b2U#=%`n{@Z z{%ANH9`Eh#Egn96`1Im*`J40k;VGA=1Q*|{qvKDCr>5KK75ny zOLss2tH1WU*Pr>=?dkORg_r-=_x{&E0TpoPH z1Wdl`p?Iv#x(;ItjO$^%$NLiJJkIwJ<7h*RHZ`$rX_^&ns1aRb0ApO%yO@%;J!QQ< zK5LYun9dAy;Qi^wd%t#m=5Tj+muH`Smj0lxG3obbv)Lcd=clXHYPr9?vpqA&Cs&L0 zjfY1^S6A!xR*Y#+jM)(*Th2M}eGlh^OP4S4iI0E$IHmMEZ@u-_anj4f4IH9{U2}r?2YgLGVt+!@mCtqzes%U3!gWO#lkLTbH7|H2kZ4})HKaNRePPE zTTfLBps%VupdjZE9>D<)#dlxdd@Rp>EJdWRssj=FK&i?Qm;hs--~C>9S489sZQK5}^?H4!s;Z(Wic}QE+*AHk=i*|8)KHvxtXfYopZIdwv92y#bS{{2&o%@u+BN-y_e4JK)d1M z=)G?w-xpE4pRv7OuRoj3ZY~y!r>d$dRCP5Tj}Q0u_U>H1e7SnN(0i@1o3xQL6mh>N(0i@1o3xQL6mh>N(0i@1o3_@%}F0U27t UmiP&%bN~PV07*qoM6N<$g0{3IH~;_u literal 0 HcmV?d00001 From fb6d5e55474cd51c91eebbd44066ca1c4b1822ed Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 28 May 2023 09:55:05 +0800 Subject: [PATCH 27/62] add run_gettext.bat for Windows --- run_gettext.bat | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 run_gettext.bat diff --git a/run_gettext.bat b/run_gettext.bat new file mode 100644 index 0000000000..2d15878c8f --- /dev/null +++ b/run_gettext.bat @@ -0,0 +1,24 @@ +@echo off +REM OrcaSlicer gettext +REM Created by SoftFever on 27/5/23. +xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost -f ./bbl/i18n/list.txt -o ./bbl/i18n/OrcaSlicer.pot +./build/src/hints/Release/hintsToPot.exe ./resources ./bbl/i18n + +REM Print the current directory +echo %cd% +set pot_file="./bbl/i18n/OrcaSlicer.pot" + +REM Run the script for each .po file +for /r "./bbl/i18n/" %%f in (*.po) do ( + call :processFile "%%f" +) +goto :eof + +:processFile + set "file=%~1" + set "dir=%~dp1" + set "name=%~n1" + set "lang=%name:OrcaSlicer_=%" + msgmerge -N -o "%file%" "%file%" "%pot_file%" + msgfmt --check-format -o "./resources/i18n/%lang%/OrcaSlicer.mo" "%file%" +goto :eof From 35e75b9824925b09bb177942527bdbdf6f695062 Mon Sep 17 00:00:00 2001 From: Cyril Guislain Date: Sun, 28 May 2023 04:46:42 +0200 Subject: [PATCH 28/62] Update French Translation / Add missing translation strings (#1153) Update French Translation / Add missing strings --- bbl/i18n/OrcaSlicer.pot | 12 +++ bbl/i18n/fr/OrcaSlicer_fr.po | 167 +++++++++++++++++++------------- resources/i18n/fr/OrcaSlicer.mo | Bin 278493 -> 288616 bytes 3 files changed, 112 insertions(+), 67 deletions(-) diff --git a/bbl/i18n/OrcaSlicer.pot b/bbl/i18n/OrcaSlicer.pot index 489081e0ea..ec6f677ae0 100644 --- a/bbl/i18n/OrcaSlicer.pot +++ b/bbl/i18n/OrcaSlicer.pot @@ -18,6 +18,18 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +msgid "Maximum speed of X axis" +msgstr "" + +msgid "Maximum speed of Y axis" +msgstr "" + +msgid "Maximum speed of Z axis" +msgstr "" + +msgid "Maximum speed of E axis" +msgstr "" + msgid "Supports Painting" msgstr "" diff --git a/bbl/i18n/fr/OrcaSlicer_fr.po b/bbl/i18n/fr/OrcaSlicer_fr.po index d6907b02c0..c607a82eb9 100644 --- a/bbl/i18n/fr/OrcaSlicer_fr.po +++ b/bbl/i18n/fr/OrcaSlicer_fr.po @@ -15,7 +15,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n==0 || n==1) ? 0 : 1;\n" -"X-Generator: Poedit 3.2.2\n" +"X-Generator: Poedit 3.3.1\n" + +msgid "Maximum speed of X axis" +msgstr "Vitesse maximale de l'axe X" + +msgid "Maximum speed of Y axis" +msgstr "Vitesse maximale de l'axe Y" + +msgid "Maximum speed of Z axis" +msgstr "Vitesse maximale de l'axe Z" + +msgid "Maximum speed of E axis" +msgstr "Vitesse maximale de l'extrudeur" msgid "Supports Painting" msgstr "Peindre les supports" @@ -3419,10 +3431,10 @@ msgid "Pressure advance" msgstr "Pressure Advance" msgid "Retraction test" -msgstr "" +msgstr "Test de rétraction" msgid "Orca Tolerance Test" -msgstr "" +msgstr "Test de tolérance Orca" msgid "Max flowrate" msgstr "Débit maximal" @@ -5404,8 +5416,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Lors de l'enregistrement d'un Timelapse sans tête d'outil, il est recommandé " "d'ajouter une \"Tour d’essuyage Timelapse\"\n" @@ -5620,10 +5632,10 @@ msgid "Printable space" msgstr "Espace imprimable" msgid "Cooling Fan" -msgstr "" +msgstr "Ventilateur de refroidissement" msgid "Fan speed-up time" -msgstr "" +msgstr "Durée d’accélération du ventilateur" msgid "Extruder Clearance" msgstr "Tête d’impression" @@ -7026,7 +7038,6 @@ msgstr "" msgid "Cooling overhang threshold" msgstr "Seuil de surplomb" -#, fuzzy, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " "exceeds this value. Expressed as percentage which indicides how much width " @@ -7591,10 +7602,9 @@ msgstr "" msgid "Shrinkage" msgstr "Rétrécissement" -#, fuzzy, c-format, boost-format msgid "" -"Enter the shrinkage percentage that the filament will get after cooling " -"(94% if you measure 94mm instead of 100mm). The part will be scaled in xy to " +"Enter the shrinkage percentage that the filament will get after cooling (94% " +"if you measure 94mm instead of 100mm). The part will be scaled in xy to " "compensate. Only the filament used for the perimeter is taken into account.\n" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." @@ -7713,7 +7723,7 @@ msgid "Lightning" msgstr "Éclair" msgid "Sparse infill anchor length" -msgstr "" +msgstr "Longueur de l’ancrage de remplissage interne" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " @@ -7726,15 +7736,24 @@ msgid "" "Set this parameter to zero to disable anchoring perimeters connected to a " "single infill line." msgstr "" +"Connecter une ligne de remplissage à un périmètre interne avec un court " +"segment de périmètre supplémentaire. S’il est exprimé en pourcentage " +"(exemple : 15%), il est calculé sur la largeur de l’extrusion de " +"remplissage. Si aucun segment de périmètre plus court que infill_anchor_max " +"n’est trouvé, la ligne de remplissage est connectée à un segment de " +"périmètre d’un seul côté et la longueur du segment de périmètre pris est " +"limitée à ce paramètre, mais pas plus long que anchor_length_max.\n" +"Une valeur à 0 désactive les périmètres d’ancrage connectés à une seule " +"ligne de remplissage." msgid "0 (no open anchors)" -msgstr "" +msgstr "0 (pas d’ancres ouvertes)" msgid "1000 (unlimited)" -msgstr "" +msgstr "1000 (illimité)" msgid "Maximum length of the infill anchor" -msgstr "" +msgstr "Longueur maximale de l’ancrage de remplissage" msgid "" "Connect an infill line to an internal perimeter with a short segment of an " @@ -7747,9 +7766,19 @@ msgid "" "If set to 0, the old algorithm for infill connection will be used, it should " "create the same result as with 1000 & 0." msgstr "" +"Connecter une ligne de remplissage à un périmètre interne avec un court " +"segment de périmètre supplémentaire. S’il est exprimé en pourcentage " +"(exemple : 15 %), il est calculé sur la largeur de l’extrusion de " +"remplissage. Slic3r essaie de connecter deux lignes de remplissage proches à " +"un court segment de périmètre. Si aucun segment de périmètre plus court que " +"ce paramètre n’est trouvé, la ligne de remplissage est connectée à un " +"segment de périmètre sur un seul côté et la longueur du segment de périmètre " +"pris est limitée à infill_anchor, mais pas plus longue que ce paramètre.\n" +"S’il est défini sur 0, l’ancien algorithme de connexion de remplissage sera " +"utilisé, il devrait créer le même résultat qu’avec 1000 et 0." msgid "0 (Simple connect)" -msgstr "" +msgstr "0 (connexions simples)" msgid "Acceleration of outer walls" msgstr "Accélération des parois extérieures" @@ -7816,7 +7845,6 @@ msgstr "Le paramètre max_accel_to_decel de Klipper sera ajusté automatiquement msgid "accel_to_decel" msgstr "Ajuster l’accélération à la décélération" -#, fuzzy, c-format, boost-format msgid "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" msgstr "" "Le paramètre max_accel_to_decel de Klipper sera ajusté à ce pourcentage " @@ -7870,12 +7898,15 @@ msgid "Travel speed of initial layer" msgstr "Vitesse de déplacement de la couche initiale" msgid "Number of slow layers" -msgstr "" +msgstr "Nombre de couches lentes" msgid "" "The first few layers are printed slower than normal. The speed is gradually " "increased in a linear fashion over the specified number of layers." msgstr "" +"Les premières couches sont imprimées plus lentement que la normale. La " +"vitesse augmente progressivement de manière linéaire sur le nombre de " +"couches spécifié." msgid "Initial layer nozzle temperature" msgstr "Température de la buse de la couche initiale" @@ -7890,14 +7921,20 @@ msgstr "Vitesse maximale du ventilateur à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" +"La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " +"la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" sera ignoré s’il est " +"inférieur à \"close_fan_the_first_x_layers\", auquel cas le ventilateur " +"fonctionnera à la vitesse maximale autorisée à la couche " +"\"close_fan_the_first_x_layers\" + 1." msgid "Support interface fan speed" -msgstr "" +msgstr "Vitesse du ventilateur" msgid "" "This fan speed is enforced during all support interfaces, to be able to " @@ -7905,6 +7942,11 @@ msgid "" "Set to -1 to disable this override.\n" "Can only be overriden by disable_fan_first_layers." msgstr "" +"Cette vitesse de ventilateur est appliquée pendant toutes les interfaces de " +"support, pour pouvoir affaiblir leur liaison avec une vitesse de ventilateur " +"élevée.\n" +"Réglez sur -1 pour désactiver ce remplacement.\n" +"Ne peut être remplacé que par disable_fan_first_layers." msgid "" "Randomly jitter while printing the wall, so that the surface has a rough " @@ -8044,15 +8086,25 @@ msgid "" "gcode' is activated.\n" "Use 0 to deactivate." msgstr "" +"Démarrer le ventilateur plus tôt de ce nombre de secondes par rapport au " +"démarrage cible (vous pouvez utiliser des fractions de secondes). Cela " +"suppose une accélération infinie pour cette estimation de durée et ne prend " +"en compte que les mouvements G1 et G0 (l’ajustement arc n’est pas pris en " +"charge).\n" +"Cela ne déplacera pas les commandes de ventilateur des G-codes personnalisés " +"(ils agissent comme une sorte de \"barrière\").\n" +"Cela ne déplacera pas les commandes de ventilateur dans le G-code de " +"démarrage si seul le ‘G-code de démarrage personnalisé’ est activé.\n" +"Utiliser 0 pour désactiver." msgid "Only overhangs" -msgstr "" +msgstr "Sur les surplombs uniquement" msgid "Will only take into account the delay for the cooling of overhangs." -msgstr "" +msgstr "Ne prend en compte que le délai de refroidissement des surplombs." msgid "Fan kick-start time" -msgstr "" +msgstr "Durée de démarrage du ventilateur" msgid "" "Emit a max fan speed command for this amount of seconds before reducing to " @@ -8061,6 +8113,13 @@ msgid "" "fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." msgstr "" +"Émettre une commande de vitesse maximale du ventilateur pendant ce nombre de " +"secondes avant de réduire à la vitesse cible pour démarrer le ventilateur de " +"refroidissement.\n" +"Ceci est utile pour les ventilateurs où un faible PWM/puissance peut être " +"insuffisant pour redémarrer le ventilateur après un arrêt, ou pour faire " +"démarrer le ventilateur plus rapidement.\n" +"Mettre à 0 pour désactiver." msgid "G-code flavor" msgstr "Version de G-code" @@ -8647,10 +8706,10 @@ msgid "" "This amount can be specified in millimeters or as a percentage of the " "current extruder diameter. The default value for this parameter is 15%." msgstr "" -"Lors de l’extrusion d’une boucle fermée, la boucle est interrompue et " -"raccourcie un peu pour réduire la couture.\n" -"Peut être en mm ou en % du diamètre actuel de la buse. La valeur par défaut " -"est de 15%." +"Afin de réduire la visibilité de la couture dans une extrusion en boucle " +"fermée, la boucle est interrompue et raccourcie d’une valeur spécifiée.\n" +"Cette quantité peut être spécifiée en millimètres ou en pourcentage du " +"diamètre actuel de la buse. La valeur par défaut de ce paramètre est 15 %." msgid "Role base wipe speed" msgstr "Vitesse d’essuyage basée sur la vitesse d’extrusion" @@ -9453,7 +9512,6 @@ msgstr "" msgid "invalid value " msgstr "valeur invalide " -#, fuzzy, c-format, boost-format msgid " doesn't work at 100%% density " msgstr " ne fonctionne pas à 100% de densité " @@ -9837,31 +9895,31 @@ msgstr "" "Fin > Début + Intervalle)" msgid "Start retraction length: " -msgstr "" +msgstr "Longueur de rétraction de début: " msgid "End retraction length: " -msgstr "" +msgstr "Longueur de rétraction de fin: " msgid "mm/mm" -msgstr "" +msgstr "mm/mm" msgid "Physical Printer" msgstr "Imprimante Physique" msgid "Print Host upload" -msgstr "" +msgstr "Envoi vers l’imprimante hôte" msgid "Test" -msgstr "" +msgstr "Tester" msgid "Could not get a valid Printer Host reference" -msgstr "" +msgstr "Impossible d’obtenir une référence d’imprimante hôte valide" msgid "Success!" -msgstr "" +msgstr "Succès !" msgid "Refresh Printers" -msgstr "" +msgstr "Actualiser les imprimantes" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -9872,9 +9930,10 @@ msgstr "" msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*" msgstr "" +"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*" msgid "Open CA certificate file" -msgstr "" +msgstr "Ouvrir le fichier de certificat CA" #, c-format, boost-format msgid "" @@ -9893,6 +9952,7 @@ msgstr "" msgid "Connection to printers connected via the print host failed." msgstr "" +"La connexion aux imprimantes connectées via l’hôte d’impression a échoué." #: resources/data/hints.ini: [hint:3D Scene Operations] msgid "" @@ -10165,30 +10225,3 @@ msgstr "" "Améliorer la résistance\n" "Saviez-vous que vous pouvez utiliser plus de parois et une densité de " "remplissage plus élevée pour améliorer la résistance du modèle ?" - -#~ msgid "Send to print" -#~ msgstr "Envoi vers l'imprimante" - -#~ msgid "Upload" -#~ msgstr "Envoyer" - -#~ msgid "Upload and Print" -#~ msgstr "Imprimer" - -#~ msgid "Use forward slashes ( / ) as a directory separator if needed." -#~ msgstr "" -#~ "Utilisez des barres obliques ( / ) comme séparateur de répertoire si " -#~ "nécessaire." - -#~ msgid "Post-processing scripts" -#~ msgstr "Scripts de post-traitement" - -#~ msgid "Bridge direction" -#~ msgstr "Direction des ponts" - -#~ msgid "" -#~ "Angle for bridge infill pattern, which controls the start or main " -#~ "direction of line" -#~ msgstr "" -#~ "Angle pour le motif de remplissage des ponts, qui contrôle le début ou la " -#~ "direction principale de la ligne" diff --git a/resources/i18n/fr/OrcaSlicer.mo b/resources/i18n/fr/OrcaSlicer.mo index 5e7512bf7d114f2807edc2a69d6777a57ac44fb6..759dae319b29e53140e21e8d2bea64b6e4ec15b7 100644 GIT binary patch delta 64987 zcmXWkbzm09+J^DXo8a!ng9Z{b1PLB2xCJXtaCazBSlrzy?(XiCq6G@Y-QnO+q-fz> z_s)EOe7~L9-PxIEo|)YQ=(+VH@sq!jxVMuA%y9U>ym1{T9Zs+1I7<^aPW+{+b)4DP z9LEpmU>ux_X>d7a#6wsb?_wloy6!lIu|1Z;#h4K9VLW_;J@FgTuIqHW;W!ag^uV&X z4Rhcp%!8S3I!-gJiT=0=>8rC1^W#CRjQ?Ob7Qe+{un(rj6&N26VOl(c8pu;j$@86e z-T{r?cAVIp$b^Y87RJlGT#h)=5cESK0jOyqJ)PrZD9ykxxq1BiYw_-p16E(nccO54= zRzp_}MRTABwZ(kc9yJxe;W)gFQP|<0nW_UwnmEpVGsm?tg5p$6gBNZ2H7auXAD97! zV+zV8P#ukWK>XFy=2U289gy5}24NB$j~Q_R_QC_GNECQz8m@r3C|5^~Yyhg^;g|}i z;8lD zb!aUn!hNWAPNO1u&7Oabu_=E;weQAwYA#HK9jHi$>e(n%lFYSkvK~cE!FAMiFHy_P z@0ppBw5SJU!LB4#E{sEY-g9$)1?s*HNJL!cFbBHe7-qn8m>yqac1-ZXj3^A7QZ9#0 za4G6OznA8^c&Pm#6yswnYj^7)tWNznR79?03a$Sa94KVISEgr4u?XetsMXL6OW|ZJ zisvv4)7!OBd zQk;%Ca3zM|IaCL~q4te}@63IhPy^Y83h@c7h&M4aW_xeWSH%338=zZ*gRvYal-E%= zK14P239Di34<@AbFfQem)-I@y_CwA22vq1N+VWgfQZB=ixE+h(d(4IT{v{B)vB|$C zo7-Rl%Dqt?7-q}UP$O83io_9Heu>JJ#2-z^@}QP!I3~r?7=Tfz0XD#&FdEhI0UwFK zdOV7XBsd-Q;1%|Q9jF{Qj9c&>YD6nOnf+oXYECbpu6v6$G0SK3fL^Ev55_Jy7E|J9 zOoxfxFXq9yaSRouP#eWbOoL}oQ}P6Z@Ea-;S-+Z*MPen&RZ)?gi9g{&RAhFcI(!*R z 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