From 058dde29bc4c1dbaa401aef62dfbb79b18a17624 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 8 May 2024 13:02:24 +0800 Subject: [PATCH 01/64] update snapmaker profiles - add BracingKit for Snapmaker 2 - add Artisan profiles --- resources/profiles/Snapmaker.json | 524 +++++++++++++++++- .../Snapmaker/Snapmaker A250 BKit_cover.png | Bin 0 -> 211754 bytes .../Snapmaker A250 Dual BKit_cover.png | Bin 0 -> 218790 bytes .../Snapmaker A250 Dual QS+B Kit_cover.png | Bin 0 -> 224143 bytes .../Snapmaker A250 Dual QSKit_cover.png | Bin 66406 -> 220088 bytes .../Snapmaker/Snapmaker A250 Dual_cover.png | Bin 57264 -> 214200 bytes .../Snapmaker/Snapmaker A250 Dual_texture.svg | 11 + .../Snapmaker A250 QS+B Kit_cover.png | Bin 0 -> 217344 bytes .../Snapmaker/Snapmaker A250 QSKit_cover.png | Bin 66406 -> 213096 bytes .../Snapmaker A250 QSKit_texture.svg | 6 - .../Snapmaker/Snapmaker A250_cover.png | Bin 57264 -> 212962 bytes .../Snapmaker/Snapmaker A250_texture.svg | 11 +- .../Snapmaker/Snapmaker A350 BKit_cover.png | Bin 0 -> 212102 bytes .../Snapmaker A350 Dual BKit_cover.png | Bin 0 -> 217426 bytes .../Snapmaker A350 Dual QS+B Kit_cover.png | Bin 0 -> 222847 bytes .../Snapmaker A350 Dual QSKit_cover.png | Bin 65597 -> 218736 bytes .../Snapmaker/Snapmaker A350 Dual_cover.png | Bin 59158 -> 240339 bytes .../Snapmaker/Snapmaker A350 Dual_texture.svg | 11 + .../Snapmaker A350 QS+B Kit_cover.png | Bin 0 -> 217420 bytes .../Snapmaker/Snapmaker A350 QSKit_cover.png | Bin 65597 -> 213326 bytes .../Snapmaker A350 QSKit_texture.svg | 6 - .../Snapmaker/Snapmaker A350_cover.png | Bin 59158 -> 207557 bytes .../Snapmaker/Snapmaker A350_texture.svg | 12 +- .../Snapmaker/Snapmaker Artisan_bed.stl | Bin 0 -> 7884 bytes .../Snapmaker/Snapmaker Artisan_cover.png | Bin 0 -> 241679 bytes .../Snapmaker/Snapmaker Artisan_texture.svg | 9 + .../profiles/Snapmaker/Snapmaker J1_cover.png | Bin 45686 -> 402570 bytes .../Snapmaker/Snapmaker J1_texture.svg | 51 +- .../PolyLite Dual PLA @0.2 nozzle.json | 19 + .../Snapmaker/filament/PolyLite Dual PLA.json | 37 ++ .../filament/PolyLite PLA @0.2 nozzle.json | 12 +- .../Snapmaker/filament/PolyLite PLA.json | 30 +- .../PolyTerra Dual PLA @0.2 nozzle.json | 19 + .../filament/PolyTerra Dual PLA.json | 37 ++ .../filament/PolyTerra PLA @0.2 nozzle.json | 12 +- .../filament/PolyTerra PLA @base.json | 2 +- .../Snapmaker/filament/PolyTerra PLA.json | 30 +- .../filament/Snapmaker ABS @0.2 nozzle.json | 12 +- .../Snapmaker/filament/Snapmaker ABS.json | 32 +- .../filament/Snapmaker ASA @0.2 nozzle.json | 14 +- .../Snapmaker/filament/Snapmaker ASA.json | 32 +- .../Snapmaker Dual ABS @0.2 nozzle.json | 70 +++ .../Snapmaker Dual ABS @0.8 nozzle.json | 25 + .../filament/Snapmaker Dual ABS @base.json | 59 ++ .../filament/Snapmaker Dual ABS Benchy.json | 62 +++ .../filament/Snapmaker Dual ABS.json | 28 + .../Snapmaker Dual ASA @0.2 nozzle.json | 67 +++ .../filament/Snapmaker Dual ASA @base.json | 56 ++ .../filament/Snapmaker Dual ASA.json | 37 ++ .../filament/Snapmaker Dual PA-CF @base.json | 56 ++ .../filament/Snapmaker Dual PA-CF.json | 37 ++ .../filament/Snapmaker Dual PET @base.json | 53 ++ .../filament/Snapmaker Dual PET.json | 37 ++ .../Snapmaker Dual PETG @0.2 nozzle.json | 22 + .../Snapmaker Dual PETG @0.8 nozzle.json | 25 + .../filament/Snapmaker Dual PETG @base.json | 65 +++ .../Snapmaker Dual PETG-CF @base.json | 95 ++++ .../filament/Snapmaker Dual PETG-CF.json | 37 ++ .../filament/Snapmaker Dual PETG.json | 28 + .../filament/Snapmaker Dual PLA @base.json | 44 ++ .../Snapmaker Dual PLA Eco @0.2 nozzle.json | 22 + .../Snapmaker Dual PLA Eco @0.8 nozzle.json | 22 + .../Snapmaker Dual PLA Eco @base.json | 44 ++ .../filament/Snapmaker Dual PLA Eco.json | 28 + .../Snapmaker Dual PLA Matte @0.2 nozzle.json | 22 + .../Snapmaker Dual PLA Matte @0.8 nozzle.json | 22 + .../Snapmaker Dual PLA Matte @base.json | 50 ++ .../filament/Snapmaker Dual PLA Matte.json | 28 + .../Snapmaker Dual PLA Metal @0.2 nozzle.json | 22 + .../Snapmaker Dual PLA Metal @base.json | 53 ++ .../filament/Snapmaker Dual PLA Metal.json | 37 ++ .../Snapmaker Dual PLA Silk @0.2 nozzle.json | 22 + .../Snapmaker Dual PLA Silk @base.json | 62 +++ .../filament/Snapmaker Dual PLA Silk.json | 37 ++ .../Snapmaker Dual PLA-CF @0.8 nozzle.json | 22 + .../filament/Snapmaker Dual PLA-CF @base.json | 77 +++ .../filament/Snapmaker Dual PLA-CF.json | 28 + .../filament/Snapmaker Dual PLA.json | 46 ++ .../Snapmaker Dual PVA @0.2 nozzle.json | 28 + .../filament/Snapmaker Dual PVA @base.json | 41 ++ .../filament/Snapmaker Dual PVA.json | 37 ++ .../filament/Snapmaker Dual TPE.json | 67 +++ .../filament/Snapmaker Dual TPU @base.json | 38 ++ .../Snapmaker Dual TPU High-Flow.json | 55 ++ .../filament/Snapmaker Dual TPU.json | 37 ++ .../Snapmaker J1 ABS @0.2 nozzle.json | 27 + .../Snapmaker J1 ABS @0.8 nozzle.json | 2 +- .../filament/Snapmaker J1 ABS @base.json | 18 +- .../filament/Snapmaker J1 ABS Benchy.json | 89 +++ .../Snapmaker J1 ASA @0.2 nozzle.json | 18 + .../filament/Snapmaker J1 ASA @base.json | 9 + .../filament/Snapmaker J1 PA-CF @base.json | 3 + .../filament/Snapmaker J1 PET @base.json | 3 + .../Snapmaker J1 PETG @0.2 nozzle.json | 2 +- .../Snapmaker J1 PETG @0.8 nozzle.json | 3 - .../filament/Snapmaker J1 PETG @base.json | 27 +- .../filament/Snapmaker J1 PETG-CF @base.json | 44 +- .../filament/Snapmaker J1 PLA @base.json | 3 + .../filament/Snapmaker J1 PLA Eco @base.json | 3 + .../Snapmaker J1 PLA Matte @0.8 nozzle.json | 3 - .../Snapmaker J1 PLA Matte @base.json | 5 +- .../Snapmaker J1 PLA Metal @base.json | 3 + .../filament/Snapmaker J1 PLA Silk @base.json | 3 + .../Snapmaker J1 PLA-CF @0.8 nozzle.json | 2 +- .../filament/Snapmaker J1 PLA-CF @base.json | 21 +- .../filament/Snapmaker J1 PVA @base.json | 3 + .../filament/Snapmaker J1 TPU @base.json | 5 +- .../Snapmaker/filament/Snapmaker PA-CF.json | 32 +- .../filament/Snapmaker PET @Dual.json | 31 -- .../Snapmaker/filament/Snapmaker PET.json | 27 +- .../filament/Snapmaker PETG @0.2 nozzle.json | 14 +- .../filament/Snapmaker PETG-CF @base.json | 41 +- .../Snapmaker/filament/Snapmaker PETG-CF.json | 32 +- .../Snapmaker/filament/Snapmaker PETG.json | 32 +- .../Snapmaker/filament/Snapmaker PLA Eco.json | 40 +- .../Snapmaker PLA Silk @0.2 nozzle.json | 10 +- .../filament/Snapmaker PLA Silk.json | 30 +- .../Snapmaker/filament/Snapmaker PLA-CF.json | 30 +- .../Snapmaker/filament/Snapmaker PLA.json | 42 +- .../filament/Snapmaker PVA @0.2 nozzle.json | 21 - .../Snapmaker/filament/Snapmaker PVA.json | 34 -- .../Snapmaker/filament/Snapmaker TPE.json | 30 +- .../Snapmaker/filament/Snapmaker TPU.json | 30 +- .../filament/fdm_filament_common.json | 14 +- .../Snapmaker/filament/fdm_filament_pa.json | 22 +- .../Snapmaker/filament/fdm_filament_pva.json | 18 - .../Snapmaker/filament/fdm_filament_tpu.json | 6 +- .../Snapmaker A250 BKit (0.2 nozzle).json | 20 + .../Snapmaker A250 BKit (0.4 nozzle).json | 20 + .../Snapmaker A250 BKit (0.6 nozzle).json | 20 + .../Snapmaker A250 BKit (0.8 nozzle).json | 20 + .../machine/Snapmaker A250 BKit.json | 11 + ...Snapmaker A250 Dual BKit (0.2 nozzle).json | 21 + ...Snapmaker A250 Dual BKit (0.4 nozzle).json | 21 + ...Snapmaker A250 Dual BKit (0.6 nozzle).json | 21 + ...Snapmaker A250 Dual BKit (0.8 nozzle).json | 21 + .../machine/Snapmaker A250 Dual BKit.json | 11 + ...maker A250 Dual QS+B Kit (0.2 nozzle).json | 21 + ...maker A250 Dual QS+B Kit (0.4 nozzle).json | 21 + ...maker A250 Dual QS+B Kit (0.6 nozzle).json | 21 + ...maker A250 Dual QS+B Kit (0.8 nozzle).json | 21 + .../machine/Snapmaker A250 Dual QS+B Kit.json | 11 + .../machine/Snapmaker A250 Dual QSKit.json | 2 +- .../machine/Snapmaker A250 Dual.json | 2 +- .../Snapmaker A250 QS+B Kit (0.2 nozzle).json | 20 + .../Snapmaker A250 QS+B Kit (0.4 nozzle).json | 20 + .../Snapmaker A250 QS+B Kit (0.6 nozzle).json | 20 + .../Snapmaker A250 QS+B Kit (0.8 nozzle).json | 20 + .../machine/Snapmaker A250 QS+B Kit.json | 11 + .../machine/Snapmaker A250 QSKit.json | 2 +- .../Snapmaker A350 BKit (0.2 nozzle).json | 20 + .../Snapmaker A350 BKit (0.4 nozzle).json | 20 + .../Snapmaker A350 BKit (0.6 nozzle).json | 20 + .../Snapmaker A350 BKit (0.8 nozzle).json | 20 + .../machine/Snapmaker A350 BKit.json | 11 + ...Snapmaker A350 Dual BKit (0.2 nozzle).json | 21 + ...Snapmaker A350 Dual BKit (0.4 nozzle).json | 21 + ...Snapmaker A350 Dual BKit (0.6 nozzle).json | 21 + ...Snapmaker A350 Dual BKit (0.8 nozzle).json | 21 + .../machine/Snapmaker A350 Dual BKit.json | 11 + ...maker A350 Dual QS+B Kit (0.2 nozzle).json | 21 + ...maker A350 Dual QS+B Kit (0.4 nozzle).json | 21 + ...maker A350 Dual QS+B Kit (0.6 nozzle).json | 21 + ...maker A350 Dual QS+B Kit (0.8 nozzle).json | 21 + .../machine/Snapmaker A350 Dual QS+B Kit.json | 11 + .../machine/Snapmaker A350 Dual QSKit.json | 2 +- .../machine/Snapmaker A350 Dual.json | 2 +- .../Snapmaker A350 QS+B Kit (0.2 nozzle).json | 20 + .../Snapmaker A350 QS+B Kit (0.4 nozzle).json | 20 + .../Snapmaker A350 QS+B Kit (0.6 nozzle).json | 20 + .../Snapmaker A350 QS+B Kit (0.8 nozzle).json | 20 + .../machine/Snapmaker A350 QS+B Kit.json | 11 + .../machine/Snapmaker A350 QSKit.json | 2 +- .../Snapmaker Artisan (0.2 nozzle).json | 21 + .../Snapmaker Artisan (0.4 nozzle).json | 21 + .../Snapmaker Artisan (0.6 nozzle).json | 21 + .../Snapmaker Artisan (0.8 nozzle).json | 21 + .../Snapmaker/machine/Snapmaker Artisan.json | 11 + .../profiles/Snapmaker/machine/fdm_a250.json | 6 +- .../Snapmaker/machine/fdm_a250_bk.json | 39 ++ .../Snapmaker/machine/fdm_a250_dual.json | 16 +- .../Snapmaker/machine/fdm_a250_dual_bk.json | 39 ++ .../Snapmaker/machine/fdm_a250_dual_qs.json | 6 +- .../machine/fdm_a250_dual_qs_bk.json | 39 ++ .../Snapmaker/machine/fdm_a250_qs.json | 3 +- .../Snapmaker/machine/fdm_a250_qs_bk.json | 39 ++ .../profiles/Snapmaker/machine/fdm_a350.json | 6 +- .../Snapmaker/machine/fdm_a350_bk.json | 39 ++ .../Snapmaker/machine/fdm_a350_dual.json | 16 +- .../Snapmaker/machine/fdm_a350_dual_bk.json | 39 ++ .../Snapmaker/machine/fdm_a350_dual_qs.json | 7 +- .../machine/fdm_a350_dual_qs_bk.json | 39 ++ .../Snapmaker/machine/fdm_a350_qs.json | 3 +- .../Snapmaker/machine/fdm_a350_qs_bk.json | 39 ++ .../profiles/Snapmaker/machine/fdm_a400.json | 59 ++ .../Snapmaker/machine/fdm_common.json | 2 +- .../profiles/Snapmaker/machine/fdm_idex.json | 38 +- .../Snapmaker/machine/fdm_linear2.json | 14 +- .../Snapmaker/machine/fdm_linear2_dual.json | 15 +- ...0.06 Standard @Snapmaker (0.2 nozzle).json | 10 +- ...ndard @Snapmaker Artisan (0.2 nozzle).json | 27 + ...6 Standard @Snapmaker J1 (0.2 nozzle).json | 17 +- ...08 Extra Fine @Snapmaker (0.4 nozzle).json | 10 +- ... Fine @Snapmaker Artisan (0.4 nozzle).json | 22 + ...Extra Fine @Snapmaker J1 (0.4 nozzle).json | 15 +- ...0.10 Standard @Snapmaker (0.2 nozzle).json | 10 +- ...ndard @Snapmaker Artisan (0.2 nozzle).json | 25 + ...0 Standard @Snapmaker J1 (0.2 nozzle).json | 13 +- .../0.12 Fine @Snapmaker (0.4 nozzle).json | 10 +- ... Fine @Snapmaker Artisan (0.4 nozzle).json | 21 + .../0.12 Fine @Snapmaker J1 (0.4 nozzle).json | 12 +- ...0.14 Standard @Snapmaker (0.2 nozzle).json | 10 +- ...ndard @Snapmaker Artisan (0.2 nozzle).json | 25 + ...4 Standard @Snapmaker J1 (0.2 nozzle).json | 16 +- .../0.16 Optimal @Snapmaker (0.4 nozzle).json | 10 +- ...timal @Snapmaker Artisan (0.4 nozzle).json | 20 + ...16 Optimal @Snapmaker J1 (0.4 nozzle).json | 13 +- ...0.18 Standard @Snapmaker (0.6 nozzle).json | 10 +- ...ndard @Snapmaker Artisan (0.6 nozzle).json | 22 + ...8 Standard @Snapmaker J1 (0.6 nozzle).json | 13 +- ...0.20 Standard @Snapmaker (0.4 nozzle).json | 10 +- ...ndard @Snapmaker Artisan (0.4 nozzle).json | 12 + ...0 Standard @Snapmaker J1 (0.4 nozzle).json | 11 +- ...0.20 Strength @Snapmaker (0.4 nozzle).json | 10 +- ...ength @Snapmaker Artisan (0.4 nozzle).json | 15 + ...0 Strength @Snapmaker J1 (0.4 nozzle).json | 13 +- .../0.24 Draft @Snapmaker (0.4 nozzle).json | 10 +- ...Draft @Snapmaker Artisan (0.4 nozzle).json | 18 + ...0.24 Draft @Snapmaker J1 (0.4 nozzle).json | 10 +- ...0.24 Standard @Snapmaker (0.6 nozzle).json | 10 +- ...0.24 Standard @Snapmaker (0.8 nozzle).json | 11 +- ...ndard @Snapmaker Artisan (0.6 nozzle).json | 22 + ...ndard @Snapmaker Artisan (0.8 nozzle).json | 23 + ...4 Standard @Snapmaker J1 (0.6 nozzle).json | 13 +- ...4 Standard @Snapmaker J1 (0.8 nozzle).json | 16 +- ...enchy @Snapmaker Artisan (0.4 nozzle).json | 60 ++ ....25 Benchy @Snapmaker J1 (0.4 nozzle).json | 27 +- ...8 Extra Draft @Snapmaker (0.4 nozzle).json | 11 +- ...Draft @Snapmaker Artisan (0.4 nozzle).json | 19 + ...xtra Draft @Snapmaker J1 (0.4 nozzle).json | 10 +- ...0.30 Standard @Snapmaker (0.6 nozzle).json | 11 +- ...ndard @Snapmaker Artisan (0.6 nozzle).json | 25 + ...0 Standard @Snapmaker J1 (0.6 nozzle).json | 12 +- ...0.30 Strength @Snapmaker (0.6 nozzle).json | 10 +- ...ength @Snapmaker Artisan (0.6 nozzle).json | 26 + ...0 Strength @Snapmaker J1 (0.6 nozzle).json | 13 +- ...0.32 Standard @Snapmaker (0.8 nozzle).json | 11 +- ...ndard @Snapmaker Artisan (0.8 nozzle).json | 25 + ...2 Standard @Snapmaker J1 (0.8 nozzle).json | 14 +- ...0.34 Standard @Snapmaker (0.6 nozzle).json | 11 +- ...ndard @Snapmaker Artisan (0.6 nozzle).json | 25 + ...4 Standard @Snapmaker J1 (0.6 nozzle).json | 12 +- ...0.36 Standard @Snapmaker (0.8 nozzle).json | 11 +- ...ndard @Snapmaker Artisan (0.8 nozzle).json | 25 + ...6 Standard @Snapmaker J1 (0.8 nozzle).json | 14 +- ...0.38 Standard @Snapmaker (0.6 nozzle).json | 11 +- ...ndard @Snapmaker Artisan (0.6 nozzle).json | 25 + ...8 Standard @Snapmaker J1 (0.6 nozzle).json | 12 +- ...0.40 Standard @Snapmaker (0.8 nozzle).json | 12 +- ...ndard @Snapmaker Artisan (0.8 nozzle).json | 25 + ...0 Standard @Snapmaker J1 (0.8 nozzle).json | 15 +- .../0.42 Draft @Snapmaker (0.6 nozzle).json | 10 +- ...Draft @Snapmaker Artisan (0.6 nozzle).json | 25 + ...0.42 Draft @Snapmaker J1 (0.6 nozzle).json | 11 +- .../0.48 Draft @Snapmaker (0.8 nozzle).json | 11 +- ...Draft @Snapmaker Artisan (0.8 nozzle).json | 26 + ...0.48 Draft @Snapmaker J1 (0.8 nozzle).json | 14 +- .../Snapmaker/process/fdm_process_a400.json | 37 ++ .../Snapmaker/process/fdm_process_common.json | 31 +- .../Snapmaker/process/fdm_process_idex.json | 28 +- 270 files changed, 5211 insertions(+), 954 deletions(-) create mode 100644 resources/profiles/Snapmaker/Snapmaker A250 BKit_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker A250 Dual BKit_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker A250 Dual QS+B Kit_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker A250 Dual_texture.svg create mode 100644 resources/profiles/Snapmaker/Snapmaker A250 QS+B Kit_cover.png delete mode 100644 resources/profiles/Snapmaker/Snapmaker A250 QSKit_texture.svg create mode 100644 resources/profiles/Snapmaker/Snapmaker A350 BKit_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker A350 Dual BKit_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker A350 Dual QS+B Kit_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker A350 Dual_texture.svg create mode 100644 resources/profiles/Snapmaker/Snapmaker A350 QS+B Kit_cover.png delete mode 100644 resources/profiles/Snapmaker/Snapmaker A350 QSKit_texture.svg create mode 100644 resources/profiles/Snapmaker/Snapmaker Artisan_bed.stl create mode 100644 resources/profiles/Snapmaker/Snapmaker Artisan_cover.png create mode 100644 resources/profiles/Snapmaker/Snapmaker Artisan_texture.svg create mode 100644 resources/profiles/Snapmaker/filament/PolyLite Dual PLA @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/PolyLite Dual PLA.json create mode 100644 resources/profiles/Snapmaker/filament/PolyTerra Dual PLA @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/PolyTerra Dual PLA.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.8 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ABS.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual ASA.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PET.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PETG.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.8 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.8 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @0.8 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PLA.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual PVA.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual TPU.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json delete mode 100644 resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json delete mode 100644 resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json delete mode 100644 resources/profiles/Snapmaker/filament/Snapmaker PVA.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/machine/Snapmaker Artisan.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a250_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a250_dual_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a250_dual_qs_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a250_qs_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a350_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a350_dual_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a350_dual_qs_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a350_qs_bk.json create mode 100644 resources/profiles/Snapmaker/machine/fdm_a400.json create mode 100644 resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker Artisan (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker Artisan (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker Artisan (0.2 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker Artisan (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker Artisan (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker Artisan (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker Artisan (0.6 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker Artisan (0.8 nozzle).json create mode 100644 resources/profiles/Snapmaker/process/fdm_process_a400.json diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 022452783d3..5aa74f1458b 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.00.02.00", + "version": "01.06.03", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ @@ -32,6 +32,22 @@ "name": "Snapmaker A350 QSKit", "sub_path": "machine/Snapmaker A350 QSKit.json" }, + { + "name": "Snapmaker A250 BKit", + "sub_path": "machine/Snapmaker A250 BKit.json" + }, + { + "name": "Snapmaker A350 BKit", + "sub_path": "machine/Snapmaker A350 BKit.json" + }, + { + "name": "Snapmaker A250 QS+B Kit", + "sub_path": "machine/Snapmaker A250 QS+B Kit.json" + }, + { + "name": "Snapmaker A350 QS+B Kit", + "sub_path": "machine/Snapmaker A350 QS+B Kit.json" + }, { "name": "Snapmaker A250 Dual QSKit", "sub_path": "machine/Snapmaker A250 Dual QSKit.json" @@ -39,6 +55,26 @@ { "name": "Snapmaker A350 Dual QSKit", "sub_path": "machine/Snapmaker A350 Dual QSKit.json" + }, + { + "name": "Snapmaker A250 Dual BKit", + "sub_path": "machine/Snapmaker A250 Dual BKit.json" + }, + { + "name": "Snapmaker A350 Dual BKit", + "sub_path": "machine/Snapmaker A350 Dual BKit.json" + }, + { + "name": "Snapmaker A250 Dual QS+B Kit", + "sub_path": "machine/Snapmaker A250 Dual QS+B Kit.json" + }, + { + "name": "Snapmaker A350 Dual QS+B Kit", + "sub_path": "machine/Snapmaker A350 Dual QS+B Kit.json" + }, + { + "name": "Snapmaker Artisan", + "sub_path": "machine/Snapmaker Artisan.json" } ], "process_list": [ @@ -50,6 +86,10 @@ "name": "fdm_process_idex", "sub_path": "process/fdm_process_idex.json" }, + { + "name": "fdm_process_a400", + "sub_path": "process/fdm_process_a400.json" + }, { "name": "0.06 Standard @Snapmaker (0.2 nozzle)", "sub_path": "process/0.06 Standard @Snapmaker (0.2 nozzle).json" @@ -58,6 +98,10 @@ "name": "0.06 Standard @Snapmaker J1 (0.2 nozzle)", "sub_path": "process/0.06 Standard @Snapmaker J1 (0.2 nozzle).json" }, + { + "name": "0.06 Standard @Snapmaker Artisan (0.2 nozzle)", + "sub_path": "process/0.06 Standard @Snapmaker Artisan (0.2 nozzle).json" + }, { "name": "0.08 Extra Fine @Snapmaker (0.4 nozzle)", "sub_path": "process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json" @@ -66,6 +110,10 @@ "name": "0.08 Extra Fine @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.10 Standard @Snapmaker (0.2 nozzle)", "sub_path": "process/0.10 Standard @Snapmaker (0.2 nozzle).json" @@ -74,6 +122,10 @@ "name": "0.10 Standard @Snapmaker J1 (0.2 nozzle)", "sub_path": "process/0.10 Standard @Snapmaker J1 (0.2 nozzle).json" }, + { + "name": "0.10 Standard @Snapmaker Artisan (0.2 nozzle)", + "sub_path": "process/0.10 Standard @Snapmaker Artisan (0.2 nozzle).json" + }, { "name": "0.12 Fine @Snapmaker (0.4 nozzle)", "sub_path": "process/0.12 Fine @Snapmaker (0.4 nozzle).json" @@ -82,6 +134,10 @@ "name": "0.12 Fine @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.12 Fine @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.14 Standard @Snapmaker (0.2 nozzle)", "sub_path": "process/0.14 Standard @Snapmaker (0.2 nozzle).json" @@ -90,6 +146,10 @@ "name": "0.14 Standard @Snapmaker J1 (0.2 nozzle)", "sub_path": "process/0.14 Standard @Snapmaker J1 (0.2 nozzle).json" }, + { + "name": "0.14 Standard @Snapmaker Artisan (0.2 nozzle)", + "sub_path": "process/0.14 Standard @Snapmaker Artisan (0.2 nozzle).json" + }, { "name": "0.16 Optimal @Snapmaker (0.4 nozzle)", "sub_path": "process/0.16 Optimal @Snapmaker (0.4 nozzle).json" @@ -98,6 +158,10 @@ "name": "0.16 Optimal @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.16 Optimal @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.18 Standard @Snapmaker (0.6 nozzle)", "sub_path": "process/0.18 Standard @Snapmaker (0.6 nozzle).json" @@ -106,6 +170,10 @@ "name": "0.18 Standard @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.18 Standard @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.18 Standard @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.18 Standard @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.20 Standard @Snapmaker (0.4 nozzle)", "sub_path": "process/0.20 Standard @Snapmaker (0.4 nozzle).json" @@ -114,6 +182,10 @@ "name": "0.20 Standard @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.20 Standard @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.20 Standard @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.20 Standard @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.20 Strength @Snapmaker (0.4 nozzle)", "sub_path": "process/0.20 Strength @Snapmaker (0.4 nozzle).json" @@ -122,6 +194,10 @@ "name": "0.20 Strength @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.20 Strength @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.20 Strength @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.20 Strength @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.24 Draft @Snapmaker (0.4 nozzle)", "sub_path": "process/0.24 Draft @Snapmaker (0.4 nozzle).json" @@ -130,10 +206,18 @@ "name": "0.24 Draft @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.24 Draft @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.25 Benchy @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.25 Benchy @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.24 Standard @Snapmaker (0.6 nozzle)", "sub_path": "process/0.24 Standard @Snapmaker (0.6 nozzle).json" @@ -142,6 +226,10 @@ "name": "0.24 Standard @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.24 Standard @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.24 Standard @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.24 Standard @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.24 Standard @Snapmaker (0.8 nozzle)", "sub_path": "process/0.24 Standard @Snapmaker (0.8 nozzle).json" @@ -150,6 +238,10 @@ "name": "0.24 Standard @Snapmaker J1 (0.8 nozzle)", "sub_path": "process/0.24 Standard @Snapmaker J1 (0.8 nozzle).json" }, + { + "name": "0.24 Standard @Snapmaker Artisan (0.8 nozzle)", + "sub_path": "process/0.24 Standard @Snapmaker Artisan (0.8 nozzle).json" + }, { "name": "0.28 Extra Draft @Snapmaker (0.4 nozzle)", "sub_path": "process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json" @@ -158,6 +250,10 @@ "name": "0.28 Extra Draft @Snapmaker J1 (0.4 nozzle)", "sub_path": "process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json" }, + { + "name": "0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle)", + "sub_path": "process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json" + }, { "name": "0.30 Standard @Snapmaker (0.6 nozzle)", "sub_path": "process/0.30 Standard @Snapmaker (0.6 nozzle).json" @@ -166,6 +262,10 @@ "name": "0.30 Standard @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.30 Standard @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.30 Standard @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.30 Standard @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.30 Strength @Snapmaker (0.6 nozzle)", "sub_path": "process/0.30 Strength @Snapmaker (0.6 nozzle).json" @@ -174,6 +274,10 @@ "name": "0.30 Strength @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.30 Strength @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.30 Strength @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.30 Strength @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.32 Standard @Snapmaker (0.8 nozzle)", "sub_path": "process/0.32 Standard @Snapmaker (0.8 nozzle).json" @@ -182,6 +286,10 @@ "name": "0.32 Standard @Snapmaker J1 (0.8 nozzle)", "sub_path": "process/0.32 Standard @Snapmaker J1 (0.8 nozzle).json" }, + { + "name": "0.32 Standard @Snapmaker Artisan (0.8 nozzle)", + "sub_path": "process/0.32 Standard @Snapmaker Artisan (0.8 nozzle).json" + }, { "name": "0.34 Standard @Snapmaker (0.6 nozzle)", "sub_path": "process/0.34 Standard @Snapmaker (0.6 nozzle).json" @@ -190,6 +298,10 @@ "name": "0.34 Standard @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.34 Standard @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.34 Standard @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.34 Standard @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.36 Standard @Snapmaker (0.8 nozzle)", "sub_path": "process/0.36 Standard @Snapmaker (0.8 nozzle).json" @@ -198,6 +310,10 @@ "name": "0.36 Standard @Snapmaker J1 (0.8 nozzle)", "sub_path": "process/0.36 Standard @Snapmaker J1 (0.8 nozzle).json" }, + { + "name": "0.36 Standard @Snapmaker Artisan (0.8 nozzle)", + "sub_path": "process/0.36 Standard @Snapmaker Artisan (0.8 nozzle).json" + }, { "name": "0.38 Standard @Snapmaker (0.6 nozzle)", "sub_path": "process/0.38 Standard @Snapmaker (0.6 nozzle).json" @@ -206,6 +322,10 @@ "name": "0.38 Standard @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.38 Standard @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.38 Standard @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.38 Standard @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.40 Standard @Snapmaker (0.8 nozzle)", "sub_path": "process/0.40 Standard @Snapmaker (0.8 nozzle).json" @@ -214,6 +334,10 @@ "name": "0.40 Standard @Snapmaker J1 (0.8 nozzle)", "sub_path": "process/0.40 Standard @Snapmaker J1 (0.8 nozzle).json" }, + { + "name": "0.40 Standard @Snapmaker Artisan (0.8 nozzle)", + "sub_path": "process/0.40 Standard @Snapmaker Artisan (0.8 nozzle).json" + }, { "name": "0.42 Draft @Snapmaker (0.6 nozzle)", "sub_path": "process/0.42 Draft @Snapmaker (0.6 nozzle).json" @@ -222,6 +346,10 @@ "name": "0.42 Draft @Snapmaker J1 (0.6 nozzle)", "sub_path": "process/0.42 Draft @Snapmaker J1 (0.6 nozzle).json" }, + { + "name": "0.42 Draft @Snapmaker Artisan (0.6 nozzle)", + "sub_path": "process/0.42 Draft @Snapmaker Artisan (0.6 nozzle).json" + }, { "name": "0.48 Draft @Snapmaker (0.8 nozzle)", "sub_path": "process/0.48 Draft @Snapmaker (0.8 nozzle).json" @@ -229,6 +357,10 @@ { "name": "0.48 Draft @Snapmaker J1 (0.8 nozzle)", "sub_path": "process/0.48 Draft @Snapmaker J1 (0.8 nozzle).json" + }, + { + "name": "0.48 Draft @Snapmaker Artisan (0.8 nozzle)", + "sub_path": "process/0.48 Draft @Snapmaker Artisan (0.8 nozzle).json" } ], "filament_list": [ @@ -324,10 +456,6 @@ "name": "Snapmaker PET", "sub_path": "filament/Snapmaker PET.json" }, - { - "name": "Snapmaker PET @Dual", - "sub_path": "filament/Snapmaker PET @Dual.json" - }, { "name": "Snapmaker PETG-CF @base", "sub_path": "filament/Snapmaker PETG-CF @base.json" @@ -400,14 +528,6 @@ "name": "Snapmaker PVA @base", "sub_path": "filament/Snapmaker PVA @base.json" }, - { - "name": "Snapmaker PVA", - "sub_path": "filament/Snapmaker PVA.json" - }, - { - "name": "Snapmaker PVA @0.2 nozzle", - "sub_path": "filament/Snapmaker PVA @0.2 nozzle.json" - }, { "name": "Snapmaker TPU @base", "sub_path": "filament/Snapmaker TPU @base.json" @@ -436,6 +556,10 @@ "name": "Snapmaker J1 ABS @0.8 nozzle", "sub_path": "filament/Snapmaker J1 ABS @0.8 nozzle.json" }, + { + "name": "Snapmaker J1 ABS Benchy", + "sub_path": "filament/Snapmaker J1 ABS Benchy.json" + }, { "name": "Snapmaker J1 ASA @base", "sub_path": "filament/Snapmaker J1 ASA @base.json" @@ -607,6 +731,198 @@ { "name": "Snapmaker J1 TPE", "sub_path": "filament/Snapmaker J1 TPE.json" + }, + { + "name": "Snapmaker Dual ABS @base", + "sub_path": "filament/Snapmaker Dual ABS @base.json" + }, + { + "name": "Snapmaker Dual ABS", + "sub_path": "filament/Snapmaker Dual ABS.json" + }, + { + "name": "Snapmaker Dual ABS @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual ABS @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual ABS @0.8 nozzle", + "sub_path": "filament/Snapmaker Dual ABS @0.8 nozzle.json" + }, + { + "name": "Snapmaker Dual ABS Benchy", + "sub_path": "filament/Snapmaker Dual ABS Benchy.json" + }, + { + "name": "Snapmaker Dual ASA @base", + "sub_path": "filament/Snapmaker Dual ASA @base.json" + }, + { + "name": "Snapmaker Dual ASA", + "sub_path": "filament/Snapmaker Dual ASA.json" + }, + { + "name": "Snapmaker Dual ASA @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual ASA @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual PA-CF @base", + "sub_path": "filament/Snapmaker Dual PA-CF @base.json" + }, + { + "name": "Snapmaker Dual PA-CF", + "sub_path": "filament/Snapmaker Dual PA-CF.json" + }, + { + "name": "Snapmaker Dual PETG @base", + "sub_path": "filament/Snapmaker Dual PETG @base.json" + }, + { + "name": "Snapmaker Dual PETG", + "sub_path": "filament/Snapmaker Dual PETG.json" + }, + { + "name": "Snapmaker Dual PETG @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual PETG @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual PETG @0.8 nozzle", + "sub_path": "filament/Snapmaker Dual PETG @0.8 nozzle.json" + }, + { + "name": "Snapmaker Dual PET @base", + "sub_path": "filament/Snapmaker Dual PET @base.json" + }, + { + "name": "Snapmaker Dual PET", + "sub_path": "filament/Snapmaker Dual PET.json" + }, + { + "name": "Snapmaker Dual PETG-CF @base", + "sub_path": "filament/Snapmaker Dual PETG-CF @base.json" + }, + { + "name": "Snapmaker Dual PETG-CF", + "sub_path": "filament/Snapmaker Dual PETG-CF.json" + }, + { + "name": "Snapmaker Dual PLA Eco @base", + "sub_path": "filament/Snapmaker Dual PLA Eco @base.json" + }, + { + "name": "Snapmaker Dual PLA Eco", + "sub_path": "filament/Snapmaker Dual PLA Eco.json" + }, + { + "name": "Snapmaker Dual PLA Eco @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual PLA Eco @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual PLA Eco @0.8 nozzle", + "sub_path": "filament/Snapmaker Dual PLA Eco @0.8 nozzle.json" + }, + { + "name": "Snapmaker Dual PLA @base", + "sub_path": "filament/Snapmaker Dual PLA @base.json" + }, + { + "name": "Snapmaker Dual PLA", + "sub_path": "filament/Snapmaker Dual PLA.json" + }, + { + "name": "Snapmaker Dual PLA Matte @base", + "sub_path": "filament/Snapmaker Dual PLA Matte @base.json" + }, + { + "name": "Snapmaker Dual PLA Matte", + "sub_path": "filament/Snapmaker Dual PLA Matte.json" + }, + { + "name": "Snapmaker Dual PLA Matte @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual PLA Matte @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual PLA Matte @0.8 nozzle", + "sub_path": "filament/Snapmaker Dual PLA Matte @0.8 nozzle.json" + }, + { + "name": "Snapmaker Dual PLA Metal @base", + "sub_path": "filament/Snapmaker Dual PLA Metal @base.json" + }, + { + "name": "Snapmaker Dual PLA Metal", + "sub_path": "filament/Snapmaker Dual PLA Metal.json" + }, + { + "name": "Snapmaker Dual PLA Metal @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual PLA Metal @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual PLA-CF @base", + "sub_path": "filament/Snapmaker Dual PLA-CF @base.json" + }, + { + "name": "Snapmaker Dual PLA-CF", + "sub_path": "filament/Snapmaker Dual PLA-CF.json" + }, + { + "name": "Snapmaker Dual PLA-CF @0.8 nozzle", + "sub_path": "filament/Snapmaker Dual PLA-CF @0.8 nozzle.json" + }, + { + "name": "Snapmaker Dual PLA Silk @base", + "sub_path": "filament/Snapmaker Dual PLA Silk @base.json" + }, + { + "name": "Snapmaker Dual PLA Silk", + "sub_path": "filament/Snapmaker Dual PLA Silk.json" + }, + { + "name": "Snapmaker Dual PLA Silk @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual PLA Silk @0.2 nozzle.json" + }, + { + "name": "PolyLite Dual PLA", + "sub_path": "filament/PolyLite Dual PLA.json" + }, + { + "name": "PolyLite Dual PLA @0.2 nozzle", + "sub_path": "filament/PolyLite Dual PLA @0.2 nozzle.json" + }, + { + "name": "PolyTerra Dual PLA", + "sub_path": "filament/PolyTerra Dual PLA.json" + }, + { + "name": "PolyTerra Dual PLA @0.2 nozzle", + "sub_path": "filament/PolyTerra Dual PLA @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual PVA @base", + "sub_path": "filament/Snapmaker Dual PVA @base.json" + }, + { + "name": "Snapmaker Dual PVA", + "sub_path": "filament/Snapmaker Dual PVA.json" + }, + { + "name": "Snapmaker Dual PVA @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual PVA @0.2 nozzle.json" + }, + { + "name": "Snapmaker Dual TPU @base", + "sub_path": "filament/Snapmaker Dual TPU @base.json" + }, + { + "name": "Snapmaker Dual TPU", + "sub_path": "filament/Snapmaker Dual TPU.json" + }, + { + "name": "Snapmaker Dual TPU High-Flow", + "sub_path": "filament/Snapmaker Dual TPU High-Flow.json" + }, + { + "name": "Snapmaker Dual TPE", + "sub_path": "filament/Snapmaker Dual TPE.json" } ], "machine_list": [ @@ -650,6 +966,22 @@ "name": "fdm_a350_qs", "sub_path": "machine/fdm_a350_qs.json" }, + { + "name": "fdm_a250_bk", + "sub_path": "machine/fdm_a250_bk.json" + }, + { + "name": "fdm_a350_bk", + "sub_path": "machine/fdm_a350_bk.json" + }, + { + "name": "fdm_a250_qs_bk", + "sub_path": "machine/fdm_a250_qs_bk.json" + }, + { + "name": "fdm_a350_qs_bk", + "sub_path": "machine/fdm_a350_qs_bk.json" + }, { "name": "fdm_a250_dual_qs", "sub_path": "machine/fdm_a250_dual_qs.json" @@ -658,6 +990,26 @@ "name": "fdm_a350_dual_qs", "sub_path": "machine/fdm_a350_dual_qs.json" }, + { + "name": "fdm_a250_dual_bk", + "sub_path": "machine/fdm_a250_dual_bk.json" + }, + { + "name": "fdm_a350_dual_bk", + "sub_path": "machine/fdm_a350_dual_bk.json" + }, + { + "name": "fdm_a250_dual_qs_bk", + "sub_path": "machine/fdm_a250_dual_qs_bk.json" + }, + { + "name": "fdm_a350_dual_qs_bk", + "sub_path": "machine/fdm_a350_dual_qs_bk.json" + }, + { + "name": "fdm_a400", + "sub_path": "machine/fdm_a400.json" + }, { "name": "Snapmaker J1 (0.2 nozzle)", "sub_path": "machine/Snapmaker J1 (0.2 nozzle).json" @@ -770,6 +1122,70 @@ "name": "Snapmaker A350 QSKit (0.8 nozzle)", "sub_path": "machine/Snapmaker A350 QSKit (0.8 nozzle).json" }, + { + "name": "Snapmaker A250 BKit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A250 BKit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A250 BKit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A250 BKit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A250 BKit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A250 BKit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A250 BKit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A250 BKit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A350 BKit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A350 BKit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A350 BKit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A350 BKit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A350 BKit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A350 BKit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A350 BKit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A350 BKit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A250 QS+B Kit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A250 QS+B Kit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A250 QS+B Kit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A250 QS+B Kit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A350 QS+B Kit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A350 QS+B Kit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A350 QS+B Kit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A350 QS+B Kit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A350 QS+B Kit (0.8 nozzle).json" + }, { "name": "Snapmaker A250 Dual QSKit (0.2 nozzle)", "sub_path": "machine/Snapmaker A250 Dual QSKit (0.2 nozzle).json" @@ -801,6 +1217,86 @@ { "name": "Snapmaker A350 Dual QSKit (0.8 nozzle)", "sub_path": "machine/Snapmaker A350 Dual QSKit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual BKit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual BKit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual BKit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual BKit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual BKit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual BKit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual BKit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual BKit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual BKit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual BKit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual BKit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual BKit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual BKit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual BKit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual BKit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual BKit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual QS+B Kit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual QS+B Kit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual QS+B Kit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A250 Dual QS+B Kit (0.8 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual QS+B Kit (0.2 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual QS+B Kit (0.4 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual QS+B Kit (0.6 nozzle).json" + }, + { + "name": "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "sub_path": "machine/Snapmaker A350 Dual QS+B Kit (0.8 nozzle).json" + }, + { + "name": "Snapmaker Artisan (0.2 nozzle)", + "sub_path": "machine/Snapmaker Artisan (0.2 nozzle).json" + }, + { + "name": "Snapmaker Artisan (0.4 nozzle)", + "sub_path": "machine/Snapmaker Artisan (0.4 nozzle).json" + }, + { + "name": "Snapmaker Artisan (0.6 nozzle)", + "sub_path": "machine/Snapmaker Artisan (0.6 nozzle).json" + }, + { + "name": "Snapmaker Artisan (0.8 nozzle)", + "sub_path": "machine/Snapmaker Artisan (0.8 nozzle).json" } ] -} \ No newline at end of file +} diff --git a/resources/profiles/Snapmaker/Snapmaker A250 BKit_cover.png b/resources/profiles/Snapmaker/Snapmaker A250 BKit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..498cf295a9d802e9621b519434aee4fd8fe914ea GIT binary patch literal 211754 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≈J` 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Snapmaker/Snapmaker A250 Dual BKit_cover.png b/resources/profiles/Snapmaker/Snapmaker A250 Dual BKit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..ff597361d2e6f9e0aead3037cb5362faa5c40b67 GIT binary patch literal 218790 zcmeFXWl)@5&^9R?(PJK5C{Yr+zIXw7&N%MJ2SYu?eIMB z)>eJB-@n}-TeYWZsHx%H=bXE{PxsYVccikS6gny~DgXdLmys4%1pwZRzkZMrVZStM zN@W1vYS_t$e^K{bJZwYxWvb~0@jCXYh8Xz#lr8;u8`_?!Vsv{`rR$eZCZ96DGS3 z)iBbW(wTj!Dmp+@lQw&-dV~GSz5Ue|c;h>453NCDiUtGc0h&Z4j1TjXZEzhD_d-?T zJs0Mp`+sxUKY#w`>FLShYFR8C!w89GlFj>JX-yF(`n=RsqWfitaJXMU=9t%N<pu2N*9{mvkTe5fy}F@*eLF5qbn^7y>o^|2sBS@fQNTkNf)(+^$Br8DdZNbgRZ zz;QP4c?T$b06AH0OUED+l*SZ11^B@>`G%|oSbcfEnIc)cm3%qTb!hu}{O3aP@ZiF8 zG~m#LJdZWtZph*(4gB%|UUQH60KO0a=T$~4!o8Fz`IRa-0^Mf5UXp;%NO*aLB5=mK zWyJ$jpY90`(E%*NES?ybFf(l|AwT(>17-GH2Ol*o)dk)TTL_DRFXh0YAZIe8>KTS% zEzcGIhogBuIe3Dtm7WWIj}^CIPxFe_;}+c9nK@v9-yAYGlnDFDT;LlVfQ3C-6#jmS z_gx!08i0fVB}kEV25AwW zqVBsNA_6{U6Qb+#HW7szS#^}aWu$n0s`jk`pW$##z8fXY46XWS6WPquw?%@xbF+(Y z_#)C`)G8BG(PPu3zYJ}|Y1g$_?JNh=ulQ)q*B)j8L=8@O-mvR{HSuZ>7@`q3atuy* z$;f{$efjUQGuk_O;=0^Wt)FjvRxilzYegP74#!=#F<(wG>$SH0MnushLJ7$fb?-Zn zgdMw{fcKLrik~u9;3Mc#Dn2KLT|h)$ybh;#;Bv?RU0%?{LPX(1@M;K>e|z=3Ia_D& z$8FLRPo$@jwMX>aaR_p>S>|+L0i2Sl|H+Mi<-wI>3$EmcDKj+K^LnOw{ghn-)ek=8 z1aDW8vsDfelX3sloJT78<}yEZp%}X_cbH-$Q>=!z!LI&gFjavshx^NUU`nOHh9xOr zNJ7wKag6UQCRcl1dg^k;@(jJBw;MrbqiL@&ef2jyXS-!GO1$vBrRIc_u;U2pXv2oY zyr4;SsN(HHN==jVl9zB=BvaUpHgby>562_l$ILIt52AC{T#9nbacyv~J7)KAB)24E zTTn&KpU3$*i8Wb{MiPvc?Q(usZgR|D652Hl4$m5@98o#7mpdL4yohlZhZ69KkjyiL zq-UI#FZBee>CLlk$VUU3r4yq^T8{GU9fOvb8<*Knw!DC+!aGNY%RIjC^bH=Gk5f+H zhq6!}`*{Lgj{`KBh!h7$=g#;DTOuuXZF@N$3OzDOKn)(C_&vmvveCY?c8RlN1i}f2 z;6Oyc8*hq*Z~9J3i!@dvI7fyf3 zDY99axVg?k=5YZ`0R%!w-Y^f6jkrmWx?UEo+@ zG-WiQ|Ck!=>WrncmNqLpQm2bR_Kr1EE_@2T4iEdg8acekSHp{_-V>(ZwY= zY*_KV7)h@p0R#pLpCD5h>NgHU>#9wT!7tAo{-o}FylPsUV}#Z2dv87rY-e3WdK1X4 z2zL*NpZW$*7l@udj1U&Mb~&+$b1Gr9C}4R4Gi-l!XC2AM^_5)b_<%=U$^FUWVpt1u zrxM+W1b@zP0IbsNyA1$_cePN452}MHCXKA*TDGoHg+PsUp|a@e{RU!b{i0OjvxZ&9!?m zxWy;lbFBoIx1lQPjX?g!i2^%U$tf?NySpOUg7rRE+>A%E59K@N6dMm`2hM|tX!g%f zwyJ>y&g}C?wHby0uf0K zbeC|qxX4sgcHWn4TGPsAsS6ZdnSLwm{zs|%NZ_kA0@`uym6UtDE-IyWJ4=W?2^?<- z8-`UB%r%*~`?GZ#Lv7JocxC$--dP+du7|GfMM3Q4UOr3+>gy@GT8Q78x<)r#SP1Li zKJkJmV&)C}u4eB2#>~K=7!DaB$GfEs>Yy98lf1hgM+o&_(!ME>cr%JL#MGQEwQ?wX zDFDijJPLmu^49I3Eh(7*A8;e9)HfoU^*d31sE6x&Q>X#n7G-Kh>f5IL8 zulG=&m76>Y1({&4GUYc(WM;v-Z{OFjB)rk*G&q==DMF|!=&@TAe!6!1N3VG6Z8Eu* z8N&MJx@eQ*`jA;_=jK+X&+(p4h6k-<^}4Y$Z9=d8#2yFsV@{xZ9NzIRKMf1Qs9V-4 z2j}pqhHN@88SpyuvU8aqGc*Jdhm351WAnp-c%o#$gpP0^URGYOFYn6@v?7R+fWgZ+3qE#i`9y7tr0`#In&~ z9fBE)#2XA27SEV}ubvBqbN1Oz&G7AQpNN0(FW)|a)oM$xJSNxn(=b-ot1!f9xyr)h zQ&UzZyo|B9GcodetWmZ=HVlB{7vd86?1aJd;9i#^A(GnnWPKO)`tD1;*eY?v?jb2V z6yE?#P`8$!r_J4?>=|)*itu;78+A0>Vj+oDNUbn|KriBO##*N_-;c0zv_wvG46q54 z?AlQH)o83ztni-%xonwcPRL;kEA7_aZ$)tWSb7YF?_Stf>-dDMzG3(P(EA`xxGuyd z0Q}~9F`y5H+Vh+ZPl(51WS$7l-1&b0;^6YBdW?~NMMK4NCoi1?4Imn!KachrZ{dBa zmpYp#%fl`Qaw8$KJRT_apMz!81aup0wcWE4sYd$45sRYr%@AOdvpgDLeo2HtfOv^n zXj@)j9fU$iDPdMJrJ!Epw(i``=juu@*y3vm5DmqOH)4H7;;ReIE)X(N;=Y=^^j~_? z>5cX$jo+IaS5!s$bq%su^nMYndUIhu_#P)3{9BAS0k`*yPD~YI%`uWgas=}vSj6G(?7^V9>#r?L)b4e^S(FKix$qrvGVOZYteHobbX0-~D{K(ePfO;c5H6@1f{P zQP{VOQGuJtS}%c>NO{%*Ki&Z7=-4m>JsKM3yM`5UMZ=IuN9KF_1wQ=s%)AW_Yr@zP z6D#viZAfScWPh~ZIX}OuIM^{q$hj5&owEU_!<6r4a2WB+lj&xKuFt-5kL!b;p0s<- z+_vA}hY}ay$c=Yfk8f5`7~4t8T^zz%K&eT!`o=~25l$;801aQ^#5Q5{0h4T34lSSd zjiXaStFnXb6t8fgSe2`xE=xP8EPE4qMO5nRogXjduxPtl&$7#ykaz0SdS?j#Oo#+q zG-N7LF-!g*j>pVLGSFri0@Yeyf|I|)s<6L^|DkX50A6@~cN6!x@ zH&&STS(o0`6h#%T0xzBt!D`N<9?v3KnxL>+!7m$&Z&w?AS8IwT!+X#^WuN@#6gyuH z>KcZ*?KQ#n-9}nuRqsvDmYJnoDGcETMSrJLA+33^r}M395YT``e`UFp9(hdkjY2YI z)K6h>Tj!J;5{+__c$fRqxZGDb&P9GScvEkxmLvWC%U0<;jClIKfnoo-#yCECNv+o!071ZFkct( z93M?4Cu?}jecvsbgRo0q;hz!aY(q<(LlC-X{tFW=sK8vby&{}CM9 z)idkNMC9de3|Qq?uSJw-`S)VacpP}ehn?N5M; zcvHUN31rNW2jG~XkimM1NDnu%d8f;Zx9;1~mCNB5B7uQcA2!Nkjy-bJCgxPDb<&2n zVX__VDIyRVB^ZG3FBTEBZ z(VYXA&9m;iqma(Mx2BJ`$Op=h74$d|zumwL`1SYi-zt+%RWqd$^?TsW;euLs1z?>r zQ<}9NeX+&uz?{9}L%NeEKx@(Q@{S|xZWu+ybguZ@3MVgVce8zydb~XdE!E&A3~>l3 zSO&|;Ti^g#a!z?4bK#(*T6kk~VW;xzw1TgQtV#^7hXY_ZfXmt&y9f?=>G>N=@*?vz zIP2ccD-U4OZ=yhNOmlA^vv@0&xp31wVQCotCc*;H@k5GfCsvG_IB+$%b=!$zW3NH{ z;djY&eV=L`Z$U7cQ3JQ}F8LC`(8I#8qx&%v4j@FA zooct#fIfF{6<^F+gSq}4Mu2F+pZRK5Ydu1*kCrC3(E#J=Zx*ZF4rV>d$jK?h^I$WW z01b@CBApzfDY0a_g=R&iZ2LPZG zyWIb_<~pU&Si;)ciZWpdi{OyI?lc)MhA{ozm}mk3$@PKmjymD@n?7KisR(Hpp%Lha z_!@RtxGA6P-F#~AMMFJc_#qH?{R4zP>R1E3iUea`nxF`-{UbbUkA<8H%_u|MqEScy zfZpLDw&-$SZnGAXFro$etD!I$lJC(+8C1YuG4hVUNFJWDwQ%ebL_pvUoK*6RM@xIj znn!|FV2zaDi^I#Y2e_5+l}!5o)Cfci?O=f=5vMTfVjus`_c@WyCnm{x&S&jm71P)O zraFLy6b!co?ug+@bjyBp5C{wW8~4g(j+*`HW%-|XeFLM5UI+54j$q?s_UnT%xx*m$ zzvKU!aQHtw=>IxpT{J{v6>tg2dcG_QPaoNBD>_p?7Qc;B6Eqh^u0Bv_%{PD?-?ZPf zWp%E?v;|oF!sr0-4%8{<{va{YaB=BeWP4+`5GMpPBtQnTD(`>${@)znzkmF%+XFiO zVg!<9tAA49B#sr~o!JV-N-sz{5$^4V5o9Yx-sPMMCw-Z(8@I$X&LaSr$e+(yUz~OE zB-Z#BOp-cQpKZX`HkIA0|B419-|@d~U?kdqU*KO+ENo!GsOi`7&p$9@eI5Vjg#YbH zS$HjX&^y>E6&kY+*>i6{u_k;Im>HnKzck$ zR1)srLug-m7Z&!|RVqZ2Fp_0^gE~8Nf}V3apPh52>B5rOtqSgZt8pY$Xk>K!_AQLu z-5dOGPodS3k$ZbHWtwwCJ2*SeVR}GdNj!b7Nnae9fGc$ULIx+E05vyfwdHKyM4%|s zYd5vIDAT*Nq(Nfy)l^>1f+_VRSK#EaKE1N-dQr0y2!1Z&w$}ryus111G~x9bn|gb< zaPqPJjNjyKbYDs11=9B9^Fqh1heodWJFHj{@nz}4jJq!OqEu>R9havKG84rG$R%?y( zJ&Oj;^Kf%>hl#;F-K#NIWeZ-#lGM~b&$8xBqh zV@n)^%#=%SZT0*uzvQ}_&<%@Hkw&wcTZ>L(~%oL8|%6XD~=PkpL*%E zy8G?GICD)Npx@O`*ONA&vZ&wv&OXJzN{)%FLIVJzpV}@?yVsuQz_-z@293@;pZNVB z>HQwT{xLc_;&dMt>M6h0Nn{h{+0nR}8|$^-p)R&R>DHO_c|e6u?j-K-=fJYydq%MR z6n`jA7h7ryTQIMW0#)2mnTO2TN9(actj?{_Rf9Ndf$EWo6PU1p-UqP`O{lMhm}J%n zn9C#prKS!HLZLAg>t!>$uKB+tN}5%4?Q03ja`pStkgJ-14*B8rCMb5U>;CqKfa$DC zvxX+j30hL63mc#fxH}ZNa&8e`7+y|ejT&;3)6?)P=ZooXgGdmWvevZ=2TVVkHt+c( z-bvWadv(kZ6hi$%T*_g^41OBMH)m;!(7I^6+HsbjQFShT7=t^`{LEV(&ldrO_>7w4 z6@6qgH)mpWbbT`?UaWs==Nzv|ul;QXH&$8kMrP+imb*YplB1FKoFw-SOshnR|3=Z* zz&M%}NTB$+u}GnxJ1Aqt#Q&S|($lEQnvQ~$|IfgRsVNcfDB{=_jqZ$=PR{faLZ~*c zu4k`p@bV;BlfF)=N3f9t*m8ue+Ta)ii@I;Twd1#aTQ|OuY;N_%_jxQkL81;S1Mc>N zf;LpE-+y&(){}{7%D{Ch&>BeD;?-1n>%o^bmhwY9d8$rZLrL>Sf>L3MI!b&veqhJ= zYQ9OeYzEcm=D1QpL4n+$*}3=d8@dhg2asyz0F@70RIYK^Px(fj*e4g4`X`wm)A{nH zd3jq%jSerf(14ed);JuyKErp(Dc;F=W02dweB&QxcG9D_iL05GGB?k^gNk?h(p$yD zFGtDD#T`lu*rlSIKTb&G*3O}m+qhKmt>hh@Ogd=N=ksMUUp7R*|7!@1o_~sOw?v+& zTgob0_7_LedC;e=IYhwzPm7E*9cAL|KO-hZ%U7Z4@3V-d)rjI_-u-=g@>8kGQgjHA z*~>H2dp~2zS&v1ZjJl{O2QgXVURN7PiLbI5Hua&#IB(RL7+{DmO zd98GYI5w6PZIWABB;KV0Ell)dX_y~)S7@K(=>rBA3`Q%lL?K_|DhWQ3&sONyUfte` zzr5TmfZNWLUM|Uju0za?6UofFmiG2>k{a)();j=SKbaBt6Iy121IYB5mi!@RCZo-! z0gJ}f>qv8-E0WbhxG~Q+VrUM&OFo~Kc(fyR57PMSS(%%g`?=ZMx8b}MaoUEm z!751i0nm;h!tLqlX(p93#N2xh-movMipy@+wWk*&aUzmICWv00Y1+%6TVo?9!|Svf z=75DA%~s9X_E9JC6g}rug0Y#>dzSawUmk8wX5vZ7$c&`WKNX*ZY8=p)>o*2r#FN!k zQanDGrB8E%|CVCEqNE!Z@Y7Pjq{o`y&C{OW%}VQTxq~0cOuE}*+k+G*8=Im`8dPOj zA{#L&Vsyut-~BKmF1T%*hP5D;gl9kKCzUCaJ(2ySA!Tp%vyV2)32#)=`>d~xrOyJ5 z=(~_A&sh!4EB+Z9^t9Bk@u?s-bkcn;>uD0<@WedrM*}yvm+kG)Rm7z%Ewpfdn!|wI zSO*-nDGoo8mj;376XP6ZzwHF6eV7~fTO#+ndiI`mPD^TwPqDM1UvxU5|cMJ@c9>)MLvtC^8hO< z`eQRA#X=G^T&Uz;Vb!w{G_k2MA^5o@7i6KWXSEFo0 z%#e>JGrc?+r-6f$i%SMKaf^Sj=WzMXL8s@u=Cn{Dy`G+o%%DV|fK;$)?E!oa7@qh< z0LCDLHeYB91IOk56jADyYKS>fFCzNUeQJt5y?%K4X>gfq)9Y60xp43;90_{yaw-Bn z>+^8hLPWM4XM}QY3~y;?Ix@q1UsCt_PSZx*rCn^c>WidHSC8aeGfH@?@@IntZx`7U zw~`H1oN>*PPnRV#=vtOtY4G+`9PL`B%N*kZyJ2N!tZ|_MlGW2%k|>1xM(g_a-AOr~ zDIV~h+ozvH{B|(52s2y3YVk_4Yn!Ie4x0t{uI>3736zUxP4waVsA$RIg~)rRtfC01 z{fYE`-Qih^CatVNMGP-u#eGB0yHD>U$w?WLB-ingJ=r!3pbB z$3NugnCN9Ug}gFQahf+BI1>C1P4!-%@~xdQLB)3&FPbSraF*7d8c!zGM0|r+ z&yyP`lbO@q>iDAgRKH$@2q3U8JOFO@AC(1{QV8f$-n$FV$}K#OsS^reAFVtH`d#L| zAYEPEOo06_NYqO%?G8`KeP8eGYCc&Tc@dY^;Ii8s5O~&@_2inWYr~Vqm6nz^StdHg zk(e~Lb7`tB;H3OO&H3;o{=mzy6yWgS;%PT{S|4iQ217)9u(Xh6#=2IWDcQ=`R~}+? zaed~dX*2Ccc6oW34`%N^&~=yhJo5WD%Yj?Td()y}BO%Ll5kB0j^3l)^7qOl7Yd7bM zAt8X$dZ<9%#5K=os|teMMuLuJg#v~ z=)ApXqAoyE8ozVf+u>jU=a=Hfx+^;AfW{j7!EA-viT+#(1#8Rw&U7W2CKEx4YQ^{s zx&QZyrcG<&5AX9;bHtlPg9Zyw=T!bcGhgnsf1|>pGQ8`_M22M{Kk-l5eb;Q41Vhr; zUCR`=LC09a49}ep(9}Kcw9L#2iO{UaZStwC$AN&E00_j{h#ZVUh;Ei;)cJ(Y}8RIT`1xqMtE4yr99OW@{5{pQ|r;K$Z^PwhrH zt2HUr)=L6VS9;9NoCNd$-P_Tav7lwxd1HY@58ZU=BtP@Eu&3k$Hn4MBv@5~jiVcI` z&rgg~ux_yKRzqpkb;0cN*yD*kmNbi#Z|eFv;BHW4stkBXEFzGDc*DxCee@8hu-&5FyHO!-2$EH3|uL(o?RK{bu{{9|Z1K((j!+TnM(-2)|Uh}yWdM+F3j+dZ7A zmaf)zM}MI4uZ)f%QSEO8%>q@0M@Q?oqKXdAm#M!!e#=P_RP!1sEW{injC}9!r&L!- zhq}KJklXmqe{#;n1CB#P3a`hXO=g}Or%BN(MKXGR;F{Abb7A#LH}Ev7ynl!;(K{Y% z&{WmM6O3`TI3Zew>%gIv!SzFxYR>~&t1|bOS0Iy6C>}-0Svuupom8Tw5EdLA-g0#X z>(_LpUX;x+k4k87zKZz0y{1 zTBP{AFN=w%rpHSduM5b7RyuyQ>}Xl(^J^(b&qq%WqlnclSkxEU^yA`tWSiYpr*rF9 zgq~frEG_)hG>{0#I4a_@nceH6_D3fedpvm#g43zD#uvI-=Fl;GII`p!wSHjQ6$<@1 z5%Et*fl|3nEPG$f^!EKlfPGjPUF-FtWhKRDz6r_CMcb2Xdi&o}S{nc$&)he&iQ~D=3bP+qIA|i_i;f9OMo>YIXL8Opn~PJayUer5ETqet z?`f2x$okBp)=$~7nF<5@7Ob9rU#gOXA=*XCmMRLgPhvt9W-htfeJk+M}Z1AU%mu+{LaoM z28&rPUFp@jrsHGDpduMq6Sf3laz?|&`By6){?x6Qu%gnVwu}PlsDILQb-{b)`~10h zO3>WGA~&?l9H zb%dFqv4 zt+xISK{uqx-Z7mm3KbLxs{GTs`uQ~mOL3}F*in#Wt;!fzN(e-{HIEf`a2F=&yV~Yt zHj7k?YQW(vWW?pMWFaW%o|BsB*Q`(U8!K_}X078X<6ACGBlN900pUZ+dwR--%^w08& zv3s0R=3UrE3$(IRoN7a>_KLRxmw}&htGbEmQ5^k0Km=<&fwg}*b>F{#pAE@evO{ne zZ}kvSIG6>Bc8gKn^Tmst75guj;@eo6n&MyGV3vZ>C($0RC(pK|_Gnn!;t(H@T(^*p ze`zp%ZPFIMJf&I#?+UCv-QPIsgcJlL5u=S9`mc>+CUoT?Xe|Z9|(0THCa(MczW4g2ti8 zTeN+8XVE{AR4`Hk29;4Nms|9PIIZr2DaevE%k|30s%G(!OR=jKtX1<23iA3er_z3s zK>H`eTHH=cf7%qU7Vk;d$@MwjO$d5AUzR8{snky79~eAagXV_q{F|2+V5M0pP5b5y zjo%+sZU~DjD}gJ(Nr@1et6Jbwt7?fBh2HE@S2!Y4i8B3o2ttcr zFL7JQae{dTZv#EsY^)A_@BiFTQ*Y-&D{+S*2v2M0v>Vn`i1pAT6F#HtG{(drz5;22 zJq^D16?)}Vh*!Br9-+Qp(({zV6CF*m8uJgdFu@(?gzL!X^0jAx-zNAe3vWlB00FZO z_&mu2z0UF?)puU7-k;rwDXw)f`Yzm++rE&m!8maT`n|@-lh&BGAfJS+R8Ieqk%_u~ z(i@|QQ)|BtULtbDLDBZuW!59~DGk@Bt+3N{{%LebwD74>NyL4RT#x;Ogm$UaxNk(5 zyPVW_iDWbo;uU7<4n|mS;9rD3$qF?qHE@l&d^>zsl#M~B?9B8>8JgD$0xVe5x>@H> zN@lv&gOB{pKUApNQT2rw=Oe9zsxlU<+31=@y~txz@F+v)tlpQwa`-qsst9qZ{PcT^ zw$Ck*_RSqDk9y#H|7e^xtsjxrtO)>049(F&=~@B5&p zQJU)i)v=O0iK4fSz*&&4FE533iOmJc!@sR$rKUFOt<$A+XCaFuk6A*+3bVu=0VPrLhnbB;emyh~-?yz3mc038aa$on79uv51n5DGli9+UC5VPC&DDbIQrgPm`hA zTTASa38`_7Hgsl+$#LCfJTj}AzL5~sa=2Od=|Hn~678lWG};X(Qu0z$pSR`mJF6%rnVYZz;eL5f(@8{j-#7k0bSZ@Rg(s7qy*Dln!o`ORkc z%R`p$BMqzHz`$;40Ic=R(eI-fh* zm>Plz%k3Gshn(!=*;7Mh_gq*Dj)G?`HI7VFQGLrFi-$tI@X(kWKp2X4!e$l>3DL%C zDSAVSF-mS9F(@C%R*N*ut*A4GKw?z*Rn+5yb2|jJXd_BbtPa^o9{ySGN8TAa<%nMo zxO9a61pO_Fo4V|2y0(BE*jDhDQ?)pa@-ABj4XXhCX6Eg4RF-E)SNV*Z9^_5ue{cR$ z$Hwj49r#^07bTbTgI#&l_sPSc^7@27Z0JrdTK+RyI!0IJ(Rrm^9q}uFoXj@lJpi6b zlc&O#nfj&+um6;JdE?8G-O#vs z?e$aN8mTsy7RF3EAo^yVWZ(-BdAv#BL#=As-7Mf0MMcs=<%H$Jw?(je{>gFKW&9QT z<;0efa8BsuXRdjiA8Mu4jdS+AnR^N-$sgN3WMjJ)f7#?=5G2Q3yyxtSq_a# zf+aZq27@|t1fKH*>jh!F#wR)VI=Gv=;p_VJ*dA2V0|~=59=Ax)^I2iUXF6qZA#q4ViDDMp)F`|KtA2bsm1olp0hgkbrpL^bYU60ad5h(8tX zRvHD4TeN<8&gXh0D~(eK%jC2olZkHDcZpx18I%1mS7PzJtFrmXdRrTao!?nM9!a6b zx;jk^~Yx4Q}??{}vh3yU5Pyvh+Dvx5ZjARofPY zL^cr{mORQN;2|RZFp-MiedQ+AS$@uNd8x1bE!M8|F5|~#Zt$L8O`+x9x4noPar>2K zBWp^`qnnWPo3v@TLcwMj8*hntzV&Ha4N&`qmQDxOOGter&RvgtLT|I9Fxsjk;QTQR zR>6ju9{(HAkiwp4Im5>qY~~b3E9Q#fbI1AiIVNnW*>TYpSb9dO-2OE!vBMq9;%Fby zna*yD9`&-Of4cgq@ld1F^aXoCI+Y=}CJxU3;RiP}S-<18GUKDptXk|f3y{e3HKU$iPOVrmynF#3%*5YH_;R?th@#D zesm=>){!zmMOy>o_d>FdeT0-{#VH2dOV+-rJBBTIanl~0b=+DdPB)*)swX{ET;4j; z9gPsP2Vt%5HBxguk5#Z%S1LHGxTP42=7cZ<2$LS?+UvJ$$~6vpZvr4?t}BcN4EBG{ z>M!dn{Zg+FpAra~f2x8mc#I)Y9*ykfvjTME5x?+Wh8yuvcRgXaT*D4RB+P)7T>A3DrNZM#1!&V^)el!% z<9}$#!id-c9lto)UiR|$+Ii*V`g32FG^PZmp%tNBN@hoElxq!3&9?6uTc!!mo%Rzw z3J2uL{rqcARwze&LiN$FOzZ7>rEddyfG&~v{i7!+vU`jzmuGi#Q$xmfOmCJ z{Y3iJq)=4zq*Y_Fix6v{VAcL3Iwg=+8owTWm{v*6JAt{&oPJrJVsP)+%Kq>wR$Y7^ zi#Ou4&(6y6DE70y&zfY{;zBdGjp@;~e2x(wN)|3@FCWa}3f@$XSZcIWojJVo$pCd(Q@P%}bK(xu`?>$!{{_tosm77F&Br6#P zzi0ZUcmkKyyH(oLs1*OML)uMw>q<8wt$i*twawQCWEgvIYH3M7bDoM+->;>g`UjF7 z6giv*YJ%1{)U24N%-D-S^!a~h?i6fIvy!HN;Yk^K2o^`(_DWt%hzuJo*zV^JAAd6V zJ!flrgq-nSI%G85H(CYe#Q^0Rj2scT+v(BB?Cw7V7nlf!+R@vbdXN{*)jS!H!Kg{9 z=8SYp)|aNUk;>n*98onxu-CEZy7 zR=VON@0N3g7MBT*290h1+OrNM=Yq)V#)!~&8t{=zV9PeG7az#h?cnIbm9=`JLa+$+ zfZOm+1Uq)R>p8!@Jgh7AJw^{G!Rq%1qVtizFDz3I^QU%iSnTT3eZxDIreM`(tE5tTc;uD_x}*`^*G zwq+IPdj7k)jQ+|dX>fxH6Y)|71|iU$Z+t&O=V&&2zH7P> z-F(a{xU%D-mMcSmz)M!hQfZL}h{_C#q zK4)?Fb9(X5j6U>5LQd3llfBT;@4|y-zb|Scn!aO=uXjOrvYr-hF2PRKxF+4Xj6aiH1tQ-W8nPctd6x%l#a_1Xs^hYiw8``9jTw5M|$-`ec8%#s}jNZv`JuD}ef~=1<{CO?qFI^JOTX z&&W>-P`EaHM{HLANlff>J6%;04lsoL&w90 zHF&`o-+jnJ>fWV*K)Vc&-IEMSbyQ8)Kj~e?t(hfo!kZCJRl|ppZUlV^r1EW;wIgos zvE=eR?CB~4I(lu2ELnMR)D{9-9=4{0jIGo4*cgXr#uh~>E!F|$nQol1bb#uZgtzDf zKVK`Ko_^KiFC~3si=-)xG@p{AlE(Vf%Vrp4(l`Y;N}lzHd#ci<_s!`_6jnZF74~#- zPT-2GUCLE7{A0SQE`HoHm|=yZt7T)2tp}Otu@V$V{HQ^DC zR|EQx!iyY&iG2%3iT^Rg&pXBiGjlxax(EVBrEPqs^B&^~UuTBacawen9#$LdEfTEK zaCm_diyADm=hfppi8v6D)W^#S;)_SP+dk?dt}C_w92F!of!?B!X^ z@8O0l+q+z*KvjF?zPNHyDn;L$rd+!=Xm{5fIu3QCYkVtF=hI)GQ{Lo`3j;TBNP)6(i~Zt8ovzzY&ELA>@oSYh zhXs3+VWoOUP*-C+T;0{-Dw_VLGnu-^!u}8T-{f+T+S+rbHEG}BK0+I>-9O{`N8P+n{kplX+#Vyda#pgxMR%7RasYiq(st{r# z^}8_cah9@4V8Gbv?y?Ac&I49jYFJ7CcA-ciWn3engs}BXS5h18h&Z=1Bi9E8dzyuVMPwciX}m6lm=dayyu44H z2hd;3oU_vub&of15H|Isns7xi{v&Qqk<_=e@tPb=wYyjXV7Y6uzHl7|vy{K3dj*{N zcwN`*422F&Sv2w#6W!#FT#+Ii+Bs-aPraGLiF#QWB67sMf9v3sJi5^vz9RfggaU&s zy=D*Btv2EDF=X$F$?B{mw0XvU+tHbMjVCRLT4RF-ZO`{<3q%)XDi{}B_LQbG)tEEv zKvf|4k@~+}Z%XV%@$OiHoLH{sJP-G=`ggwyh+MB5U(Wq>gRYC3*tHd@DaNe1Fv^ra z#EmEF#HqUINR>`?ufP45fozMxV$N|19~sdG7Qh;D<1)j}3<U5UhM z4%A=qJ{8>tCPY{c1MkWj&_Qos|G**u)|!h|wifurYFn_Uu^Z}SO@82;Gu3gUEp2UM zy@_ahqeaL}5JY<_N{Q@I--==y(hz{YA`>fbAqM$E8i7L|nT#VmZa7ggHWPO6cg|gL ziT0moU-V%Xc?)pz*Rmi5Pz4#*QE!lY*M2WYm_+#BwG}QwHpVZ7TuuI%%%dZ%O-UFx z_d2%WMiy(@oEM1%L9zO2p>z8CF0HW-in4`w*_^n0=D7cJJsu*=e#5&arWNWKya$@i zbyMKb=5C`R6?pv_3rTYSSZ~wzWy#hm{42+H`YtA0{iMb&n_b=@3wSabFenc1cDCyH z)(dY}COo8>(HT~n^|{(E`s=Q8cTBi(LvG)EjOH4Fx_x?=z7;UrhwnbMc!go$TLDmu(Y z);QGC7|G#$NA%H?%=ZYV*56h>_2nB;pgugm&5Ye@bo9@N#VPIMQDQxJ9&cQpAJ~Z zu)$^fk)1;{ncwBaveILZ5}rn-0SJ7*ubG61_^Ck0u0kooHy}ru7<#~nss3pP?kdUO zjRk%8qPbI)LL@tMJ+K84amMd$GcQ^H4w_#=b`*ajqY8D>Bz_og+_}ltmaJAK0j!G` zG2E439oB{GU7j{Cy?^pn9aJ`Xc*ry|JggcJKz@apTvAB3X31$;!7mo; zE%s!f8Qi+pwy5S4?aM}ax2Z=}%mH_JUZr4?s1gJDEE73y~$Dl37TvIU$At7 zMDEdC;6<6D9b2_cHl?2mH88wnwNRrh?v);b)ftUwup^V}D&8kdrPz<-(iZX7baB=z zyf@u<&O8DfAyh_c^qMZ+-2d&!zhJ;k{Xd9$=f6zj?Rz-et~=XylWomp+qNg$wryjw zC)b^A+cnjHiJ|!;Y~6v5o6pOkSM2VlwJEBjrrxsTd8qJk9sP6Z12YjDtz4?GR>cHSX;V0gvU}63HT^UT594ipK~yTx7l=r z3jEs@e4qgcl<6lvSukQm{-jNt5=*73J@cZ$$kGaKN(xbkkdY^;iz20Stoz!us8Q*~ zu1@P}(MhdvJ!HNfeoE=oU`|+4n_t^GO^!}=1x0VC?WtRGAzqxgPNISUyk1T+}i9eCAM0nc(=3l9l`>lS)?IHQbtyF$!w}aD1Ew zFAt~8tEDnzd*#Iu4-aqN=sCpq-9qJ~X4PhPW1|}D4}HM#(UFubIwB(SLQ0zc_YknI zghPfH84+a4 zDikweJQNu(C2I3BsS_3(=S}ZAQD+Nr2J$$gIiPmY=dFqj1pCIKo*NePPT0HYDzWa$ zi4oM!PM0chGihbK%49w5kZKF0j+BV%A+!c#YY_WCHTnBrenaFfT+8`#g+DUy+`0{? z>))XH>7ZAijXFZD-DU&V++<(@tpw?wHA7jfHTmVFg2#j?Y1`iJnuM&hU&ufNHud3$sp1nvq3lo#{Z;6InmKREU=iZ%-$3IgF%KtfhUn6QA)pwVN;ozGiiYvsaDt!qN64LKtj5~E9V3H z>C`%9nDM$wq&8pByh5jVjtu(YIF9VR#xM(wCriqI3cA%zlT4-QY*6_Y|Imh{(326~ z$Cg35G>OLEpUqbIe}yWsv<53`TIyX(qXZ>mEOlHrwg%h91V9e6@QZnh7pZa2vO%L^ z#(C~c>8_F3g44#U*->Rab4o2KvAVfU;1TXp&O82;=zd#1@%ys{$M50liITtst7 zHJtNZG>bVwzLoktD}U#Y^J~xi^S`;{shb<-?z3NYOI!;(RFdD`K|V{Lf9ccEZaFOS zwGL{=(@SQ(>7@|ewyC8$1LrR?)$;OS>mtns z$fyc0yA)MvD-Hr%`||Z?!Zn2^XH}Vc>=VSc51pmz;V6?+Dn{0Io;T<+iyO|{1C9g+ z0#CbDyG_R7kY3s1$B4M%|5~G9PV{1NM{2lPQO%rU2>+ojXdm9DU3x)1QI$aNE}&8vx_ z%)*bw<@%lFiV$ z^^LUjMn{BLZhNMt;a7bFeoE&1e;$8shf zQ97|dB&DrX87DcNv+NZp=1$3-*?!h7R;bl|&-m2~+iD>^RIxD{LF`)a-aaP9@(b=0 zQ$Y3JNgUSzIUK_L^<)_KH4x_}e-N<*%AtFG!3H&AV7mZD*@Q z>2tHp?$)I;|BpNqr?gC5Y3&(MU(p6|FMlqFKDyvRA3JLGTHvmXIi}CFJn)m0PGUKA z;J28W`}~C-9LN!u)=p!C^C!3_O6C`gJVFzDPc%$~diDGA~);Bz^pF6a`6paF?tq;&k};*SA71jrMn^Fzh)8 zFQ$=)N%-HANYth2Z)y%pYxj&-KC$JO36qJo&lwSVF>Vg^Yz#{Ea+b?GU|ViR@GE=T z)lK=NVPEp`cn1?f!GEQGS0yt$`)5)>3TLPM?{M;U>7*ztd8-jwy*sqbjEvG!w6PX1 z`LbAiK|eWIONzjA#LC4=b^*U^fiGnLvTb)SFNw`k;67!FM($kT`pS3-aH{9ey@0v# zaw>vpm#3LUvEWGwb24naVRveo5B1{hLK3+}n)Ady9X?pqPMYXnx zmF^F@GO^Y}6kY~#c`wtUh>h>|?^_$3!i`PA`^@U3Ov@%!sumT_PUo|CcvbHaE^^Mx zhtUPP3~NZG*Zf82&Tp+cGQb4i#c^AEre+qRmVvTIZ9s?fPq)W;xAZ|KmuXI1XHT0+M){Vzc18osbJE8z^V1uj|vR zmH+&ilx~#qMhotxvarl01%9?9IICD=RvFjNP}iN}=65ZeH+u17aY{h8@mZEt9qAGw zky7ANwC&z*tr_i|-@vKwm94@Tt>k~|}r6RJQ~Q9`Tu&?LHi ze=;gjr@`3TSjZG0S~To3*-Vu$x+In0l%{dXlhpb;XI14rTUMBqPV0^aU$dubI!9hh zzAuJ zMX_`3XeF#DOB)u!_hqZ8F*O_9w0{TeEgZtts&xuBnYa;6gkS}GZhPTdSt8Iq@DXbk zb>PH)NqSK64Dd~yqByVVdwO|gQc{k%uoO6Mq%V@Dcc*s2Z_^)=$Zet&>SA;O6Vu5q z`-_>fZ(5@Eo)oeb#O?*Cv8HN@1q9269WZ+Po-sXo(_x{%bQJ}h#A(y$y!2CKOz(YK z^o_cmOw@d(x}4iVx;Lk}OIchIGHal|&3S8bKe*#oOY>ch3T5-!Y+HNgEKZY=6-dUh zgZ&8hVP{V9<*zpe>C|=hv)JPYzGVd{v)u^T_fq={)zBa1-H@#qn!!;EKRk$^Z2f7h z`Lfr*2HCBVPc}JqOgc(b6F~g7I`S@&wl~t za&CW4PvPvOc`8w_{GZ_sc*IEQ(Ra`B>m_p&`}vHdY_+>Pe$wOT`${nIPwJA zbPH^ZHXMDLH8On(A=epgL5t3RrtbrzhUCPIv+Q=&9CUEY>?o$e*4}utMvIs5nAhv< zAS1<{&LW9RP|tWZCl*Cc!0mK}o8!EJ1DM|g#rM;r_tN5JJqQ)gD@-u+gLYF=;3Ksd zh%j-Z39kWw9NR)M!q*B1VRZ@6+T_)3Egwia-KSKySIN`6_rtO;&jv~d8kMEmu^MIx zy&Pd{MGr!I2`f?xK&TMG>!w>RJzWYX`Gxeg6q&R^DbVd$oSvlsn){qAq47a$)yi7> zax?LYa4D)^-KVjS0C^Cu6wM3lw&=t7AxADKS9_yXX!x2(C+=!LR%jyEqYxfPrAp*M zBT`_FvUd_=&z!{CbgtAz+6w)i=63qRvF=S>1to(tUs5B*bJlIeoQ2^nrr#H<7_N%S zR%sOyanAWsBb^dbW?M6341SF)5w2)~f6P)hTH?{m+y2qfMd%7+E=&cOB|>bnz%-WQ&n(3d`aOo^nx7S# zF3ZOgU102gqf>Pai3AnO$PS{|f3!y~)vekn@)vZy5D44_Vga)YSp*!D&tzYTAUS~X*6p^x!=!lGI?JEt6T)4Z<2~Xpt zlaWWs^_ag`T-e8C!gbh_FA`S6*0%SdMG5a&uHh9o4F}T&Mb6mvz}39v7FNzH<-{MajtM zLX$0sRM6i@9(h86PsnQLj}~r5Pp?MOKfY4zH`@3jCH|`Gx{mjqEuM$UlnfXoiVgbu zrtFH4Z0lD|#k6VF5M8f74J4RLi`oj+`C!hc5b2MrdhUpAe zf86M1tqdktoPgPl*=b?|iAdA%Z?Z|T0jFpxtF|CZ?}K;kDXFdmyW64(tsm0&ihz$( z82QpC@aV{@r%TVM`)>|Gq5ZgR4u!_n8EgrE*(>jC#}g-$h*rb7(}ixE=sPJTt<7*_ zPg<9|Q&`W6p1vBebG-QV;>eyp8a>Ae<9(5McY{glO@d`@Ugx@u-goFvp6lRTuWZu$ zMV>u?GUI^qU88WU$IV0?M)mi!3`o-~TKQ0~vTWTnU7ZANxW!p*@R8{v*5?CBxZcua9?cg}Id3!%jlovR2 zik?cGOz(28eV+NaY&*T&EXwWMH5ieP_C1t*btoo{AN^vmOUp*x)vKmN^N@Nj@p-C+1fR8(utrH+I-xNkncUKc z+3KN`EF>lGs9wfahID)02);VQRZ zLD$AJ2f@Axi#+LyMoC7qGJ&NG6^eXlPk&sFD=mMBjF<+Jbqa8Zy^RP>4@|jFG>6o$ z#RpDWcL8CJlX9V+A`Qv;5^JMM>n(9w-}Om-T~ z2kPnK335sog~e9R*vzYWl;o$=DU;RC0Ux+iXnn1+jB;WZY!*)^^w;!1&(y!lu=?mz zJ;^$D5^9j3-`*?cmnBnV#3OF~K9cN3gTUuHTh1*E3<4r4l1K-|Q?exni4ycD0`uOh0H?~Fzy$?FR{UH6vz|@ z>ko{(?%HDMigDU#*Ic7Mt<^JJ@B2(2eVsoMV|)iIr7j*lFmX}+i6k{&dPSYF;Fb+bfX6>X)T+Ul76}e6N(T)Et^c`){RLsW{`8jjHJ<15 zfepMO%*xL8e7e~k^roV;TG0PE+y1)Q4I{GKqx~N2!&taMTXc>^GyS-$z#l>8g%hzD zc*1i_b+(+{2~O)y8Y*=npLhQjRFK4av}j3ZDb}>6$tDupcMh&qG0^5<;>fI{#1XpZ@_(yOz|Y!+1V+o!^=Aa4ou~5}zaHk!7_AB_FL=na99T-r}0i`?SHE z4e7dtrG^y+S^1D=X;H3dzuizYdNP(UC=)$XdAyX&U3Yqnr`>Pq>K|ife&j;vt*Q-A z`NmhGL0e^uTio**$+&k=INkFpuumk=82QE>I5l_fB)<9AOaHVvsZ*M7jsWmjDPDPr z5Qon%35%{?=2YRY=o1O;PQkBOJ|4p$zy)AQ_ z-|`hKWKh?sidx8hy)|~(l(jF7h%k1sxnSP>cgCgEA|M&}F;SL(CkAxdz3c&A$;v&@O(dBUj-X`VSToG?!|RlT zG8ZNM!rl&B+>3O*aEv4VmeJ{o6t$ zV?{7DYv^Z{D@8!u?8^|jJZ%9_f#0;;O!^TIeeR+$w|i#_yQ{V1mRfH90noZ(hky{T zaCg@b4+npCz}>(>$=y+>&92)`#n9hAR_p%hq`YaW!i+?>ipv$?%xHEnlNEJWs+j0y zQ^jb(XshgMmN+uhoHILoVBV?NIwXDlY2)4n;bv}QZBA^Ihl;ruV9E&Ct zBu(df7dbWLDWus%?Woj}B+!9CI>7?D4rX;%N)AzZ+_We*Fa*t3{zc#AW|G^2L_O-U zvyW>BNqUE8)Ko+at?Rc0MXj4@29ltph=b-&0shejlka@aF4|Q~ zqZAs)q$dD*%$OUzIKkCF&K9Q0 z29iIGO8IyWH?$(Lm~uOT;-Iw2N2g}jzok^?C_0aN<}RnvYr+b!dESVd z(dFKMGEQMX#H6+cZ6a-P$V-aEr&ZU4qh7H2Fm~;wkt!=TRNu}_CeDPbjBdt)UV?j> zE&*NUXL|lgo3G=IJB!?%C_<7c6@^60dw6AGZR!5r9;#uGZ13XgiZVD6fVs(X_7GBw zZ{f_j4w2$AOeE8Er^^X@? zLw|h05s9N{apM=~zso}B3>m{j^!j5#0MC$sAkJIRXpEm|rs(U8qDRbgqx-tk=!0q7Qr5vGWHL3G2U6b^Xwx@VWvW40`Bg9*ni;iunn zY`4Z!^z4`tTb-Rif^)6z-@3p9DcP;QnBc$c+Kz$-YMG`a59_#J3V&%LDLg*4@gKc5 zt-uMuI3QTYkft5_+I#J>@Oj=~|GahB4;Dhw?fiQ!s&_ht(%1!gEE^U4oiInD(O?7a zQ-AK-z60{~XEjP%-~05hmRTV(By{JEbOw$gzStIky44sQCMc@UBdI3)rl-&*=}!GLAMjC zqB}TYsRX=G^UKQ8nop?<`qn9DHoQ67$E4)Dz*lT%w-TjDk`}t<@8}=mrt#tpi2}X- ztSUkGjX9nxNfH`%NbH<$RLCu1yN1_spttKy^Ds`-ya7&b2o1_X6}^;l2ON1Gb=J0j zic80%Gi-TVn|alAjvMD_!F#S}X9-?{w!gMF*4f=t-M#+vpE)Ii;AySV#_Uresi4n9 z9-a@H)JbXDG)h&Hr0Os-t{mYv_pJoDB$gXbnhvPuTPTb@Qk?{?^S;&y#v&hBzRAY6aIM|hYCg-=r$NDQem?B6JHI6bq} zXgYIra=fWF#!xAQOld1rMWOZ!Tf30i8bRN8xO}5X=W=Js?sZ5EIJ_&d-pxVQD?7g# zAI%HV|MSJ`!gmvXaemWH($4RKZiY1N_&f^n@c1;C)755RVuCY5HFA=u-)w=q(e4-` zVEo>S{lc5uiWo21p0^Mp5@?X=K?6FG6%7G#`0Zsenvg%xzT}uPh%{u+XXMFPk+}Ob zFU(OBDsQB_i5bA6^-`1+xv8j#CS7_Im>6!tvprL~DwxMWG*liBU;0Cvc2i2VCnbW0 zc3A*&K0_tu<(#Ve@{n#YNainj;;O<`aSl(oUOELs+;mAv1h`vFjmHxp%xG&~D5OMk zZXEtc)YGcF=)XS_Bj}R%lys-S^gp~5-Ll|R=Hljc+ivRVp^;u;%{fU7-z)&Z5X_R* zfNL~6C^z)UhwE?*2Z&HIA`+wX1)a&^SOB6q={=sKxi{9$NX}Lwk1~vlRB!Xl;(xyf z>Gf4Cdlk;O>WO_GzElfKnQnHvrhI4HsPiOOi&DeaAA|Oq= z&Jcwh$}aT}ywdGVzA73X-c3DRZ@&BQ23$cxcXAC3)0OQGjr-OQ|F#C3X-u9$Ff%af zwi$$uI&oGx>9~CB7JSJw*nguMyWIWTa(__kaQ48W(Pf5?&(pL0`#5jlex?VGN`c^a z(I`?sSMM93{%ePErFj?jJJ;#M{U*-uK5uZbDsAT@M=*#j-!G0GKsh6TZ8Rpu)qe|W@%+v5_<6_R(5$Pzjv8kZUNhGf;CU%3s#_v zjr56Nn#~~>BGfEJeB*Z%ZZDvB;+J5KwuFYeOfId&O#a}lQ>~)onfbCmMc=4_CX-m` zrR1%6RGz@XU41~JrURCF!}h_EQk)rrM-Ettw#30uO)AO$f&=}KF-wjjz{oS`poz*Fvm*b3uVd7uiUMu-i%+l4;&Pr zZZ;0(crPQ&L7$Q5iek|B*V(e0u4>|1ljZiskC_1aSmoD%Vk;)k2(u%@J3NRxK|ly4 zz;|-S&Z@a-esTdh6dnM*;k-8y?f&O3yV!j=sD*pE+D|UK?1cu${lA}OxgKUCm9AB0 z)A%RX?qz1g@=2emsja!GsaAD-q1{)+Ze=Ml`k6mF@n24})3dF5o!|Ae!JxIMC@JY; zl#^m}d62`9@L7wDi%fVpd08cB98M7b9Wwc{%?~yvm|ALr4X*YVD!JjU^V6bADLcT+! z5{6f&6}KGYt~+P+D6eO*mj+&CcY~0(0!wZC_8=z=7ymvwn4fS)D@M0p>dUTe>CoQ+ z3u7Z;s}RG9Ax)F&cF5ToEB^@*m?z8sqSWT+|G^fcWr85k@Q+7E+L<5qT~1QIHxb4P zxX-Ij7McAp4|Bm0DRnK+kn6l1jYH&)Bq0*xYKAxeLLHz!AZM|CXdi)DN2D!PDfiFU zE?9b`t=~99E!v%5`4}1Mc%+Qwu7iVgeC(vXC?&r(nd3Krn4#fRz7Z%o!3)$eo|Ub^ zBGh+<#Dwe&&MfV__;!Ahf8V0tFn@Jd9hy*D5&j|dXc1EW=FnO?3p0Ap%d36=sxy`E zL#v{F(gyCVHqLhnnWd-BTrQC|HK@S zHsoBDR1=6|_KpVk$AAlztQy^tu*!-*^;6d{-x9D~qphC9Wv}<%XbRwMwe_yFKb;Tp zWnf4lbeHqyTj%wXkfie7{@U5!8jebJnbBu%Ghc0d?WW}L)ht@&W6`|M$xc6U+R5)) zt>y#ykrEplo#||@kVS^U`CAwR{lJ@#Ce_$Ll}5&i_D4M|g6&9WCvQPZ4Q8cnI@&TK zJl15;(-Wt~^+~?}^V6e^>M>G(#{H--Jn_5_q*AnH)VjS#+Mm!!JrWCchkANBB&`|MkJi${<)z z+cdMb+rW+@_^U?#va*^CtaIJ#&K1oA8x6KjhXYqiu{}9U+Pcm}$f&dqFJ;;DO`~l5 z3w&5Ji9h0Z+uw!aubNSf?y9CACyEuT26MiSOz9pxHa!lUUXQ zjMA2OmgN?y$jy8rH$*d4fcxeSUWNb;b~QT8yCgzDFS2`>{cB)|=qf)naT&32&%bcXzJqaH0O@~ z?G?}?QM7veR63dhLvZDxcHSbvy4QF8v1^C}ASj8C;A;yrusC5Hhf&CWN&exPAiWPp zK^8w7^x3(&IlDTC#NX}9%*_lA1@&$?wc{QXl*$o$b9jSIu z>Kf|&50_0IgWX|j#&2Fj?$bQp+gq$T(b`ERk)S15{tfCUCH%^LY>mOEiW3<1Aj((c zTLAWn_;7{$si*4>HpYq(a6M$Ed6SG`u{yFz`#yB6$r=qZf@#`*?%$C1*ndPK1iGOo z!Y&NGP#R?6J}I^-OQEe;mgT{#DKI7%k0k5b8kys#njCB`@XkTW8!jb$l!!?+4@>~i zy0;AKEL?US4AKUEmQrTmx`DK-<&lGAS1JC$Ni^MQ=sSlS)V$%fuV@v~rt9)~c$x}O zi-s6IJ~Uq;j+tp-3mcn5i_mtT(f#9s$EeQ(u*yFf!n6l}^IoAZ8~)Enc1R7%&T1Q@ zlUlit(X2BYrXQ;IwV`8^<6z0IC9&)fuJaII8WBJh1xDzhQdeB^X-4vXD%{-i z$&V=%hQWQlO8f6eG77?WuVes3h6No9H{a>?wf*}D zmtWW6EoPL~kw9zprrau$J3{CBnpPLzy4PFfV)L^6GCz{b1Mx#T9udFi`_)awk{Wc3 z*7|oat+yBNx|Vn2kwQzPZ}i)~6@4)V5M6 zEvk_b?NX~2my;*vjb1^c5iv03Ixg7oJ!1$%?#f?Ww{1TOK+5Oc<@^SL91xuru$iq$oP;|z=>F4J0b+fI6dcN99@;HFSA;hI%{=qUW z?et7TzAq51XrO|>9<#e&T21+Lp4Qh-+ncUh`_bgaf-?fc81}pR=B6LXs!#V-9s+hQ zLdYC0fO;NY>(~Y(eLB$P&w~>){_v>`dXmImhj;Szj+bsL&Nl?@j_0g4TD^l^bQWT8 zGDy`_P-G>4Y7K_Gytb3^RM`0^&h>QMM+ttP9mOcBIPcutpy-Oi9HAUIz9{O7_}`6@ z%C|IQ8eNzpOow_pV}TrnjB>_v&Rb%;bW4~hQC7dr@|%e=M_;jxbC^Jmtn-ZEQ5DIj zs1QrZkc8C;6<{kyEs`HX@wpV_rvMs5CyP*&V2uh!be5#dUFyt`HWX0dH_BN6(VccO zucBrv9|&2j|f7)K$zYH$Uy8|pG8%q zeG5rS7)!^S&CD5aSg-$}E>BRCk(8k{Kas`RFhVJ{&yStyxfSm!Z;8x)^|ab6U_0w)OW8 zT`*UeGj|9VP1)j-*Y^5)_J7{Yo66+xYAfn)F(0Y!XN2a~UI6|iSRtlPjR=AU``Zbg zHs&@hCwBx=n}Gw6x6|u|Dzei~xD*%S;S|{Y*QARg30#RB70V^}x1a*M62@AdI4+rmU zx7|0!5Bm|VJd}ifu*k>B2}*{95XTcAZo|@Yiu=j(hG1-A*+!deV*Rpx^727f_@4=KLNw6##$C6eND1Hkk3<2Oc&e z)*FpOaXT4tMMonJMwS2!mV3B%-=?DKJ^E?q#q=GByIz5)IFD*PZGHf$(CM*ulo z|G4nljE#X}4Qd)x{T9Gu`*++%3wghw-acI~g93ub^ah162@ww0mcXpAA+tt0v4^UA z+HC_W^dEr9qucwmJh%5J_ro*d{G*I~uvHw@u|l5eGOT!CF)~(6Yuq(dK)Y{hr0Q*o z8iVtmsagTcj0`#!47FFIErzYYxlanej%Wa@_kNCB!uTSvJt6% zIDzx?YYO5&TU1<^{peiWo&u`G2$bv!j3pomS^8};@&m=euzWbSeYe-n$xVbNJ zu0!PMP{;{D-DpueWGsZ(3qQ;R?Gqi-spob5h=vr{Sax+Ry-I*qpAFT$CjWowrbKi} zOs5_b>sBmUF+{WkA-nCv|6>GNNNr%2pCB)uAG#A$a(uYGQEzNA@Bi6uD!znTe>xu{o=C=^`}Y>*|IUuia$@ z4_f@$g9`x`;Ylj=12(CpVR|qu&gS}zmnpgmJblpJ5NJ#H`%yw-h9qDZmT*5r`EzHB z@6zFVdvO!82|r(_*&+eFn*hnc3E$D(oeEUOWZY;JY%yq1^u@rHPzWVhs8?;!m{r;d z=7*Zb&u=glvAGTgKNS@nbU1#pRd+!^Ur^7gTsU9(TDD~ZbBz?eqO6bA2mknBwtk{N zaa|8b9d8$W!NIkPQ66Q28%#HF^MunB`@y--5owy6o*p<+E0uxMyVv(xzCO~06pY+; z*?!#jiV|OKviA+Fu>)y(uN>|d_zr(F`bCL-uLhLC6ekEQdR!h6I3O6a+rSiZ-hsal z(d#`okxniNgBQMA&!`!nO-vE^-HT!4dbdaPdYf^r@6!sS70}xH+(aD{{hz03K56k9#fP>KM%eZK*2Ox0!C1u+!4te08r>wzKwI`TikYdYXv4R&C7vrM> z=@1wo)r>j!=p57sG`^`;&`=#8(gRDxxbAkEK&CrvZ&}L5T?6#)Y6Kxr^~O;AU>v;Ew&LBVlo-(q_4?*S^An`*#m-Gxph&D!A0fP2?No;!4pP!z#F=_ zOgPEdW0%Gpu^q!ijeUOSqe>GkiQEyk?>*j`s+c<{V3|dA&}uaR_^76gO- zGIMI9ZUrVikL+G#TeU-oco=z=Ik?6X=6efVoquZLs^L?7K$LXNc5iox z>0Ey3{r&xd`)zqGY^L0>{!dRNj94C_U%z{D{lIL_)dZnh6GRk`iN`UICUJw8o+`mp za2Y-nV6~Z=B&!FD|dqFWNF8XvYvWE<$YQV*iG4axayQBKEs8vo7HcCVEm7 zC9;XQb>3fD#L}ZHFF4}1WDbP5j>KLEJ>EWPeQa1%Ffz)ifd&(l(WNN(rARIX;+yx1 z{)@l&A%Sx3F1NfI2SV&JJZcQspV%gf8iWeP+gxIs+@uZ<1*fw%kG%erU8C;Og`^ZRtvaZ@i?E3uF=kFjxjU>+C^_ zvx|*oKL@ucBwlqB)GbsQA(jC(jbj&-(!-vj&7+0ukR8Y|&)N!+T-8`Oq-BMqX|-vQ z8{4>`o@esq4k{#9e0gj=Pjhr#-6csK&Y%q@zUC@KahLp#Vxuua8d=_}1ByCM|J)8B zG`hbUyN+lv%m#?LUnT*LIMOSFTCoMZ{st^H{@xDSw|EPfu#f}fY!&jT@6p4*-LFsr zytz=8{5^1@Z9dGPl+Ete8*%jI9`M8^rx zdu7nBVpu{#65%oyy0gYx0 z5|$O1YouU{DsjA<+ib zEjg*9NyTu#7QiwLnQZ=5E;_l};6cPXa)7j@>2h(OK+PnLa66-y7f^UN;=1(49a}|C z|BBfpt-jqwuOvG%V}Xc_0AZPjNciTV``dP(a;oax4$*I>B?XDw5D_GWJ4Q~O^9Dv9 z`F0L6f*xL83G^M8$I;py4#}%EdJ<8lnR)&4iUotfn=CoN)IpF4RuO%X5Q=nu2XSY*5PloH zVA#wj3z)Hh*ZVWiL|c$W#$*s@61u5Q=|6^^cy z3sBTwd0muAZlPP)HEs-A6yXO*7+5EBfEw{g=8~kH*o&7yFh?NF4Ec+Eq~435T1GRx z@ZFbEZRyS6JX5hNBU{sLP0W9r!I^R;O~(S9bJ*e2w7qd*KMYrGG6Mf*F_5>D_Aex?eMbx&vPU z`>L=p;QMs#Ff{+Ark#E?f_PQ4C`&#;|Ni+E?Z<4XKws`wwm-zd=?5Kp9oKic&Shxi zGzr?HY*w;K-)gkVYm}lvv>Fg3>DFI1`kaW>It#Mf8ML@g@SJ_5$yi=y@9p0k-bGg|vJ#0hB4}aS zZFT)IS@N1#?&uAcvk;RkgNR10H?GAEZtJmmK|AgS1|VjWIOHRErpPC1EY?pp&?9`} zgBNhYTZC)SvCMY!$E4>`J8z%NY%}tP-I-|q8|kdf^Vxy#Sb(al_5orNU+ShUTlUp5 zq<^h#AkDv=@}|Q(Zz${k1YdmOO9}m0E)HdC76ebvEFTQ_)`#HEpbxq~ZW4tEbcC3S z*ETf9bzqjInOmfp0E>?pnlY%Mo;6qXasF#V&2>$al;#am1#2I{(sLuS0`{3>l{=tue%@Yk)BhPup~G=WwS3MKo)nsPTtN_EqeL>*bRIu_>jKT>|FKIu)Q#Dyrtj0s7?MMq+AEgPyD)a@*{&>xYJ+tJF0>f1 z7Xxacm@hC1N4k7G0DrQ5t5-qAT{bLa&DpNs5{Q*JZMsGi_K4}A{=KebOEa>lB)^s# zCS%A72S3xuvbOK^dxJ+20hQX?+R$#qXQLpgu}5l#yxJ1=x>MlBQkTBRAI)t|pS)vy z(bpUgA(8DN8&1Oner9!achFE~N}xWkcaS*v*|6V)q;VHNz^9zRqc%NTGLw~}ZzF^9D#R{Yoe4EN_H~~1jd9B@mZdvZE{@eAYHFIuQBhHz z9*;2=sd+dB0`^eKjhaZb*BoKMz}!q4$GQt^a`5`Syu9-3>agFSH=g~n$=}0MB;2xU zMk`GwhHG(LiCzM2m=&HPvbd>6GMNPe5u*p~>}$tv%U_P9ApkTSQU&Txe41guE%-Z7 z6Kj^KdFC8!bc#}wl8ue38Q+!)kLg*hDv(!|%%LW*jO5VoxGWhbhLF=QplCc9NGS7M zN|829%V{vBL2{WkxMCC~B4SEh>q;?Gs|U|s8$Q1^BgS;q|L?;?P{ZAT!G(&*u}DVBxX!4ue+ZzI|@th1$`I)aCg{piXkMi<_HpmG=fM0`pcC!Ij@o zVCULE2-j9#dtpf3=zFsk;&UdA3ox`-S*>suJ_lN5qu~dchSA%Q({rx8BUXQ}{&&1} z5P+-JYc=v26Ipk`W1Zt~MZ-72CCNkR2-5Ai{-(K@3Y5p6*y-}WdneV!37YzkW^-OV z7NY!)xT{hkhXNEwOUb@Il-UrGBv1|5>(=a!BK61T5iOhh+hK8K&du}qgcLss&Qbp2 zZQ>~|41?IvFcB_nWp7Op8exL{ve~WgZO+G{&}2SC0t=x~k8zkyfs}jv&DX&{FF*kc;d&oVi}rA?{a2iY8G; zH49FeZbQX`>>Lfb*?Fe)E_{Vt9uTS-!r;reUa$|}rm^GKd!`ROdd+sc>1;ufC0Ceo zWc*K%E5z+!MC-OeZ$5vRw7MLUP+s;9))!;u6e**;5b7dU1G?8*Lpt~)1`@S~nv$5v z=mKx|lWx214)K@@QPH-s2FN-?nCW%$aE@atUx_k)(xHgY+hmk8{Zm-v&=fOp3&G27_i234*ndD);L`Vaq0(yj> z-4D4}WJ*vjhWImFg8xDd{FkNj0D?YzFUR~A%*FYe98F~@(leGe872W5nCJ6D-i(1H zZC$Wzd1E_kAyGi?6_jnGMA(DumlAq>)({}Z_a+5(b>vC>Z1{=PYDyaDK=EXT$t=GA z?3FohHN+BsPJBWoAQ@{hR!McKfsp-K5U7F*4U$#9&EX0*&n-N2N#H{43F@mx+N#qL z@F$zS=a21BI;!@R6HKg>0yVJYC|9(L%X;(&%(QQE(=9rmteQMbJSy`}kN^a|X0IMS zqW_3TjveX54c@gJ{P^89{REk8EsA=r>|yb*SO*cQSPTNIRPWU&Xy;7Nu!JetuuXC! z9*c2MQl^(rJW#wpvW43z$YQY26YP5y=6<+@y=Ic4HW%F8SA7Y{JGU`ReVHk7gTl`q zHveEXdf%j943-sl*1k!lwckhI8isg6uh%_ShdZF36}!(o=q2t|CXeG8$THw+9tu|GJ#3 zCB>KCqLUwhgo-oW?K1R*Z!^1!(N}jX#}v%VTpRq)_we!BpcK?GTt&60Sq5I&$uyio zvI2cLvCI1X<(BM$Z!8ngU3Th`$?e*b?C@V^{=ZYj1Er5)rmbMi3H8AozBc@T_VJ`f z*oOZ9$J9Hp#~F5O!@jELA?>VeT&RM3Zxps$I*1IRON+6X z&3${ux^agzX7XF++96d88x36uRLq7j~eLBYcui@KY#1*Jzx0+d5jM|x-5go{} z>-8SX446!`g9T`s(j=Ip&>!(i%YH8DFP4uSrr*sZr_9n0rsIo-w_kjnIcdkZ#ethg z$&(*%Y!fo%#?WFmXsF!i$%N3H*btYizF#8W3D>$&Zqxj)1-9=^~hWr215uK%@zur0^A6xX?C7n5jF72JO0GRs>&sZyG&l044r8`X+L&S zn0ph62*Jl=*M%NeJ`Lp{ND~$XA^Ua199;byzCCI-j^1p>R=qgLJxv}wlB|(s?)AKP z2hr->dPCFgX60w z@5eZ#k+!)U_CibkYwwAgjgROW3@OfDAuNmyKcs}@&haQU`mWlh{#a+A#xA&I-WwL| zvF@2dL8*+Jv4!p(&0KH5@WfOkwWwVHkA$CBP+TCe4jg5R7c6!e0glkluIPzXPBms9 zL~4Sv4Zl4_;(|#8G-$><1{=pN5QG&f6PNDFSg9J210(ZD)G=w5&3~R!z5vsE7DVv0 zmFV5!1Alz7=-#URyyXtjHs3fs`)2sXv_cp-j?+Y6Ie45Ywl;C^=EnG+`$8IDWZmx3 zU0L{pP?i{(aN;-rx5IR*3`UH5iSgXA`g$jw9t%9lGx7<1V&aPR_sigqZlKGd*~?Av zv-jadYM{&E5gr_~ED6|lpSdv@?KdoCCDU<1_EL-BjP00K`1JBZ9V!(vg`_d&cnTRA zj5c)kJylA$$=D<4kgFeIW}M=;gE;8rwTiw$-Il*JTrSW26jEy{@~)`2Z75s7@f4Sm z07t4;-kUI{rw=bW|8k&(fjExWq7iJ_LLaR20V5uBF|lQ=$Jg&gKL#ncek&@W-;NGs z!O4b5Y))G^Y8XgSPohB)sk6+cs{h`wODs)Sf0`M+Uv>au#0WPySVm31T|G~q5m|Em zG!*(1@;C1E2S}v2iYyWgPoO0%oA5yMw(kM8jil56BRIqai_JE#Ao83a13JZoDc51Q`QvD_2yAbuL9}p8|1VjBzL?W~JuNy;C zUXgTC?mT*?;l{c5Z<(Kgc@yRkzVrmPA`aIHS&J5l6$XW*H-ile)B;E_vhT>EWI3$Q ztl{XD`M4+xtB&G1mL%k9xbrIJteUDSOd+hP{E0hf|QP|Bcr$>+l@1NSs^c|AY#%e$-Hk-4W)l?ZT8Yj#$N!Q8e7f|gmie<&y?3kc{Spjoo{5($~?%+-by$Gja{}H5^;okos&T~KTIo_(A2t7Wp z+64vbWgTu*3A#LtIK8~b_ru@+Vx+?MTm3t3GTM~r@@vO*1L(wGYutn+e zn$5c*OBtUz($!Asmom{l-e3L8oJA=H5+lkjzH-cFyRM2Lm%71XgB(_v8Y9CyE6@xf9IPBV25E^{wij z`CMuY7GdQ*tGuJ&fu?jadEHG;aLmo09rpcCfhxq&2##4XR*2<2?L(gvT(inv7H|yC zr%3`?Q&f*7RvYffJ}?5;Q;!DgPT@4#?ZE~foF(oM{9sJ`)0O`U6OwsC`aCUd{+={8 zKTRwSqcUrc?bWX}IpT-X!?d7&2k9Et#3B4)f^YoyBO8K0wt;@DaxZl^@6d#TUNhk5 zg+75Lea=+P&y>V`>e#O^FDn50PIW%}`>RZ(G; z6jMxP*o}xA=H>YE&_oo}8ybl_L|aIt+H~tC@h!5(!Lpa2FFBk3R-5x6@+F{R2>c$n z<>`%5gSm5cR7*p<1YFUblh>&oAVdupNkD6Zt&k9iy2J}4p8?Xpmh7Kb|Y$2Vz8imOiIdjN7%hU}SD5qcBf~_Muqy zw}bac44~~WGQ6&+b#`Yn4pb(WBDoN&0R^i#em%vYC;1_`uH`MF)nLIU_BEv80}Hxz zVeFSPvF^XSu+T(G(WYE7xKLg8Wbz)(<-!YWoTKXB*;e36_5qxQ{Ci%O9p;Aa-)>}| z)pB3Tg#C#4EK->A2{Gu_7$Y!M(?Udmy$l+ZpLB<{y&=Y@%D!kP(r_`X3&?b=s7rv4 zDcS4f?y)IK6~+$pSPinnW|i#d3ORcTQp>KqOh3#Qnng6i(zTcHm3H)aw~?%4YdeoAEa2K(D2xJ zLT%MgZVMf1v#OxyN-h#YAwM=@dn`oz7kwfQWqrjkKenWatOFJ@IR!>$n=&|*#76LZc@M3Pff?=2?v~#bQ6p9g56PT zBN`4gY7Ri?`8a$&9IKl~mJkN7oFlHN7;I%A4yPFR8k}5)IrvQ@jKU6mHdt)Vf5>3` zA`JwIqjc&PF{; zSQo)3RQmp}92M_|GHQ(J90End6G~7OF|n zFEN!w?-YrX+!N{AAoib>35gpLLCEAUSMkk-9eo9z8`WAa_qKuhU&Jrlv^G#Jl}g&O2~8t2sBb=hh8{=G zdeJ#Y#4r_(do2>MGsvrBY`109uMCYGI-2X~n<=ojFM`Ie@l#vOy3(Z_9xH2L*S5rF zxJJl0n|4`Mkj>~r4(v+Z5^nM3SX!<^n$5?XZwFy+;*$E&gXXJ866TaA|5r#!F()D) z(Y#fPhhl>Ez`4vO-Qjm zXqsuZhc!6&#TcS=2@|)%qC)a~?mZk};+i1isVNo8#y=VB(4G7E(YOA>&$Y-YAzw>M zm}BtW%ftn8ifBO}zt>K6dv|#mDSo?~uB4~5IUUSZ8b;d191~ap)1<}oSR@l_NM2ja zcHQXRAVB)05nM3Nr>E<;PR)QZiLx-K9JI?k|3=NXnnW){)+sec=WNy+T}*%VJR|>a zErldvc&UCswz|xp+Q0jI&N4?82CB3!w4bj(>7s?9H>W6^ay;ZTr&Z6c(BqRws`rZo z{*L5c(EZ!(Mf`pk$i*KGYK>Gr_}l6Z$W+c31c3NKFB5zWSm7}9%BSJwZKKH0KHcj( zp_jjB!5G*x#>nGJSHr|k2nGUccPgb!DL(xGt;z=-%QU=;Iz*J z!6?YcLmL}`8?Be(JRUYA4|A&+vjL`N(FqMh_w?24-fo#s7NywmQp#u% z-3gw?0Z+3OcGI{QK{q!on{tzAWQYOW^N@npd_zMP`!xeI@$PQ_i8GwKyK~NK1aJh1 zCQ3zt@XWKJmblhz2xJIeJZ5k4w5c}zeHBdqKT9`qcIH=XMTy}Y4e{bo`V&yU(l@@5 zBvW4_R(H;c*4~yiGP3R=E4D*Y4OUFKVHdpU|L#bQmmYia;B|4})y<(2k&UO77xl`@ zd7=iF&UDjB^EKH(GQv2Y2`x^v$}^B(9P90#!O=XEw0moJ?nkY)S|@Vmlz z*}2~j84TUDuzW@l`qBrQ?5Tkk470;t3uGpX{OzE&DC?;8^#s5z9Cacp;I#NdeG*xfelC`g%&tiJ=$*G>O}fL8)b)(lou#|FSlKk`hb&iK=xH1vV*$(=*)QmZ5WHy*cv)6 zh!^mP<*y9H|9zK$7LZ<@mD5l&9nc<(tGT$xbgh;*1wx*g4I+V!cM1?Sy;-65Na}lc zbn0@mXJ}TEGkHj5+7cE9DEc5_|Lxqalv~&UH5)C=dRQG4Zft+*< z*93&KBr~*(;0I*I2epoc)8sw@Iz&bS=<>fyw;6ST)rC@Xp*UnOmbKA7khh&Q;V0%< z8wu+HA=JU3=v#rr@2=TUU-}rQK$)EEZ1P`3=5v>=(DpTrvdSK%Wu9}o^9hWC*9cR} z5ccEWNPLXwHIw9=?466}YaX;;{9DBotRk0ickT63a~f1U_?;MxFxs6_Iw3B(5D(XP z`H>IyBD=-Ccif@J#%`8{Q0C6PVXDJ(9AxvhfnEdw50eBy^X=&}_s_}sK7@6rg7CA# zPqz2M;7{knjo9AX6%6L#9CvAxuj1$5|CE#eL>c-ABOCjja+}@_X}X-eIO+6R2-ac0 z42}K?mMo(Z#j5es^C2z%h9>On>3*kWQ!U6!ziD^%H=awGahd}I78{JK%GdlIVq&l$p9s&+-rud9Zr@88T><`9LD#Q$KDlRj( zQDijxI5}W~!oUl)WU0tzggKr*Cqd);@>^`fZz4Ve<|}H$IEGp_U%y%5YW$>^4IFtYjn%|Nu(rMSaV8%O z0^>=%oLm=MpgJS^LB7A+IWJG*e&I7NocFzqti!3WX zZyA-{t;faQHAAGZ!l)T&MRB3 zchTFipfHH{=Lb!obnZ{w`u(nx`i#}RO|kgg7#EKV{ zPch*!A9J6uZFP}zcO7f_Om0D*T_Sn!IBWj62%XQ zyP$A7Fm>p={D#w5Fd0g=w!eGC9SiB-S)p_{2$#p1lHB=t=bLg9P9PBln5W3(O@ehO3=zx z&9r9+a7DcbXGZCa`nI#UXykIS07q!vN}+0dVx+=SgzmNQLfxLtxgvUip{oZ+t;*Df zhGNXnrMen`{-Vh7%6Csv^CmI9ifnMX=P}f!i@w>7%^DC z(67)XZKGkWZB;lykO@qJ#8#j{(u_e38C!GOs{y%Uv?O$<<6fAS;SLu-rdmA?u01R{ zsqzxP;YTgrWMC^Q)c(6{q4MYN+!)*eu0pxSDDfTx+4l=L%pt$Dp-+8RoML~;Ye^1u`uCMyp=gpqX>cgjZt+xe+M| zsA7D8*n!+b36cQz(41zOE9&DKEG7&LOw8jbw75mMCUK~Paij=KxG|s)Hg|hl|959Z zE~?^SE<-&h{J8o+-6PDLAE`z234=T7;E z%Ga>-SLMl6qyHB_&}!8RVv8jBFSdix7iPfSsWDZueHR%6;+4kmWhleOgqHH=IVIzM zbpG92E{*~5UohxZlM&z=VcI~n8$=m4^Aarlo*hLB!}-1 zX6E9}nW@vU=6Hh!bv zM&`C9r`TCrmnWn833YvOL3$7m$_qA&5miKc*FuMg{)sjQQibNZ6e&dFIXvYBu@rQ4 z97_TbiB)nSFwU}u1-~(dS;rV8n&R`HqcpzeRT&aUWcr}6M5z@;Bxg7-Q;)A)+K1zK zh8kE;EK!%seBb%swM9sHfr}pD8aV~ zb#@rNM+?*9@)AfS(L-+Y$ zENEz}p+0evA@07vpxoU^29uk?XQJ#qrPMv?q?>Re<)8vBAq}}=MsnWK4Munh4xyZG zm7M{=cfv2{p2O@1D{G&<7;YZdw zwOHg<<`m4H%XD9{$#hO;!(4LGnZ4hb91%*)9e&3clDi)l@Q!hD-uqR**C{Ej zLEYye*Y((26?WxRX)Q4d@;}&?M`%K;6=vA4QVYGDcu^qaQ9qk{pa94_4y9o@&gf{hs5G2d@6xisT!}buJiS}dWkVCIV1z)D3uhx*@w1*ntKNuv;Ue56d@2V`oZ}LMAY3*xN_q znLG#BBk)U^m=j$@XgV8M_*8Op2Vy@U&3drL{Bt;PAW_53Ca2Q3iCA)+>TPe!X%j@z zM}H=6NyT34PSklzacqqING`|il=>!Jq-bnDLcnvy4N32ayPQIhDH%cCAwU|Gl(9xW z@Ier6_3Cdu;7`&A{&nR2iB+rH3MaJrMhuz-ycq%`{x*X_k|a{C^eV z5IG%ZIj?T=U6$x26?LG}-!2&^3vpQ3=&7<9yQR{Ra9gANsuzw4v+NkY9))i7p1n>n zHoD8wM?@@|*fOOk3-V(O?!g8Vi%)BMVL6E}g@ooqYJNsW+h8c2YQ@v!&%fgUH_yjt z8*Sge88q{l9ky z%z{&ijZGGBn6Y8~=r~p)alIQP8C%NLe993rLQLkdE@NJ9=`A=qb=h~ByENwSuGOjw8HQ>*A{aF`+63vy@UC=5v>`3megp< zfz@wl?8&U@fk}i{M%ZmFD?C>vLTp06M^@d2I@6U|@C*NakK`lS<@$>5WoUXo;_F}V zN5kPlW%og3rE$3OQx9bKb1&rl^$U4G&l}T*`+?xgR#rbGh(inQh1mybFTZ#@-Sha| zaf$aI7+c!CV-Z{l$tezT{XjIT!dYs;j>`~5^Y9Qc#&|Zoj$)Xh-Zut@F~AcS%2_yA zEsYb!k4}SGrWJZ+j-?zVp~KF^8OpRU#a!!`QE1ke`ZGxp8!^T}WL1OK#SOPqub2Db z(MUA!WDUkg^v?17^N*aWHWu?Sf%A*=Ul}AGXLnvHWb``{&mKy}{8¥p#5eiH${> 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

Gj@*&wfC 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

J1)lrhB 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

IDi?y);_f#mSPfkUCfGD9gZf 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 literal 66406 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 A&;S4c literal 0 HcmV?d00001 diff --git a/resources/profiles/Snapmaker/Snapmaker A250 QSKit_cover.png b/resources/profiles/Snapmaker/Snapmaker A250 QSKit_cover.png index 1ffb146361bfda34f322f38fd5679e60f4e1aebf..67a74821a41e88572889d1ad83b41a28a1b135f4 100644 GIT binary patch literal 213096 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

x5d@tu|W%9KA#^M+s3T!;I?P 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

    qOsWRuW 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 g%fI;l+u!(t!7wfm@06LX{ChG - - - - - diff --git a/resources/profiles/Snapmaker/Snapmaker A250_cover.png b/resources/profiles/Snapmaker/Snapmaker A250_cover.png index 9668553d64a7f60cc1353f87b5ff9b21bf114d72..49b33905fff0d6f70c1f4a63f66f7fd84d10b02e 100644 GIT binary patch literal 212962 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%0AGDKZOAH=kb0GUkVH84iw(z7B+WO6!^v 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 K#VbV(ga04KwjE0V literal 57264 zcmeFYWmjBH7dD6{NN{&|3+~W(aEIW*-Q6L$yIbSI-7UC7<8Ddt;2m71xu1FG!+e-u zFs#L**WuK)rMA_s-BBt^GAKxdNKjBvD6(H9)u5nYK<~c@A0SUUv}JOkpmscECB-zn z*8lbgL!Lne0beTcDq!9}{{KJ!UmCEu2oSGk9i)$^d%@AemLyljOX8JeZ; zXKaj9>yMB}nWML*n*Y*DbgAj=jAZ2BUm}*h_)@v>M^hKFwLgD0`S+F}%Kj65n7c(H zgnfU~D6F9=L%pPC;v2aPdH=JDol$yLPUQ)#ti5c@qS=8oAsiGGVCSs}1EWpWr?pZf zJvI5{(*jTx@-moYW5wdYRP$eL$qtQXL}Q2tG!zu*#;$H+%9kciR)DsmGqt7}1!7$J ziwpul-2{b@rYIlroZwhcJlA?N-_Dp9UR~DkBsFJ^zR{3dQ3kwmm zCpo2eUz^M?DW?f55kP*Zsw|_9Yt^mEu_k+GiiUF8)0azoX(ib(KGN5&uEhOa=;}(J zI^^O9ZP_P|8`TZ%IS$CfNAadLeIkre!Oxk>T1(9(24@~mTGOf z_8)rM-oB7fj}R7oYNGLuDt^c;X_)Gsy=5f)?@e1$KJdfL*6cISCjM20ov+JcU7T|J zlFb8G@q_b*trZ%C5Uh1OyMT+0(CqA~@AlWfv;y`R*O?4NvUZM$lPOWQTj~EjRATlCQ>M}Z@GLD4) zIiQAHyr4LtJOOR`V%8yI!^!lI_lq5qYo!K2;ceN~(4)R!QxcdUz^5c%KVE<+RuIIJ zxhQ7QNR#dMgeNEWXd&d7K_a!ZcveO=YqQeDj=||@3ds093bd|_1+#d_VFUlj5gd+Q z&O*Qsx;!}sW^zza3Q6>p1w>%{(bJZ;mo|`z#bFlyIZLY$zz=qQ-=_WMnsey#|l2JU`q=h6R}La`U^A&f;ZFiM7ae_Zfc;&n0VG z6sVtn@T|xlSHmG%$Xvsq{qU?;p&`&4C||u@WngYvTV=?9$jadl1w~t;Uz>;G-<_ck zWI{U$6h_`U{pY~J{%zOZRkcU8FO5W8_;6Df9qxIb8VV`}{lUu>!~%}VsPb4 zyvSy*zAoMHRsUBrWCK&=N*moS@nssPXZ6O(utY3PGG)TV_rBvUXfCPpz`l&_yLc<1 zLItrS`ajF+G_o1>(cm4WXOWniWKto|bXe+sxl5h?dPa^=>kLxG_@6+e2@aaZe-b!li(~6olpDYxV^ptNO{$qPN^Yh^LRtOJHm@#o1yc7d!*mu3- z2t9K7@C86Pz8Y7B#aw%|yq3EP^&(IDHEGQ18&M6<(UR z))gY1h1!6J`bm+c!1HjW-mAefYdMqW*qP;IZQaoTaEuy*ru~T3v2`wjh1{$ZbOr;p zs~;RcyVYS-fpai2L|3l2rG#(k@;Pbt@RYX!z*MT#WB_rJWTo z>#0%bC5fL8KP2m;)H+Fh$e4T?EYPKo9d?OIW(cf=@6ZZxszS4GnYU8kS1%vB3X^{?NnzK>N{(@2}ZNK@Si<*yvTR0tzRw-uLJ%hUEEdo?ums7 zFDYSm|4Uas>08w~B1nDr&>papq0Lt@b}M9VW)|uOC@(1iBU5Nyvl`=v8)uULa$6BL z#|BNa)I8paze!2jdhKU^8@X6-sZw32K9&QKzZD>a`$sN^q#*rGzWpL91ASO-avz>L z^|jr$ZGFde-mo>Hv9UGO3_wR)OGSZ6=v~hKY4EdxlMW-5@hUxet$s&kL72myx#=@B zbLc7pVX9)70~*q)FFA0Qjna=7r(5k=*6=u>>!yRUr44r8@FbDqWvV;s_vWU)i&oc< zijJ`OX0qb=T3%XvQIFh{6C!#Rmbl~;vT_`zUl)?nBl}kl=I@dKf?>ekn*@{aH8C@lPt{Ph)Nt><2OJ+2sdclUVZzp9$vMBq&%fwZ zpQYsHaVoyH3adDcO>m5MWZl>D_18%TOHBN}!OUlf?r0gTZG65+_n$$L(FzSRwUK|V zJV>C)BL5j|WuLa99(l=)grAWt`<9BTSk<3F4pcsjps$y)%pioHtFkC^x2W>A?h}u6 zU+z*VrjfTWK3(oE`D?#1voDn6>vMuaY`o;KgW56rmY7TsBY!)8FnuhRV39K|O+rGl zxUwRXx8+z#j=H*{?Dhcb!!ufHBq=%Mwa?(rv4aHR?GqOHO!hijEal!(tH%reC?5vR zyJJKk^kzY$FaiNy=Xs&lc!v?y5Z!K>Iy)I4A zXQD~lJ)=rFJf&Hv77>GDJv}{KpFabNi;GVTb8e^BniwM$qwX`K_dC26Orko_Nl90j zWQ1*sicFI4E~u+U`kJvQ-PNpC+uj%r9{GlXa@B>rcjRCgJtysPddhM~R*p$6JcF~VsnEsI$^bjqEXGLYh*6>CLXP|P;B3Q|a)@?qUEIn!_1l{NK za6(7_lKXw%p4Nrg#7?9>hkp>wug~OAsM@Wfjdg+bD=88myZf6(CIQ?PV0gm|YS76{ zySO&nEG5&xRAJ~TQd@`$!GsGY`j1NS58~5}I-Szi65k^W;33LupynH+jrnRxm(kj${8Ab&H2QIdiqi``1sS>Z zHbm6X%VXyzS2Ki$UsHPZU(=5aJ2iR$JDu+G4FJJBYYDC;&=1w(aOyGk)E#|Ux54n) zwqYbl?G7c0z`HTij`=;W>o&6ID6icm*ABac)FLVRruSev=S}t|h-$1c)e5QnZmpwNULjbsT`hdQ4=7JF@uRJ4Sdk(^R zZvuQF&z(B3A?y!=4q2Vf;jQZa8&%xylaFh4_W9VFXuU=wDu6)qh^w6GI9D*xxMsX* zSU{)s@4^1QHXA54m$M_<2Z)8KhC(GBo5($yrOVZs$n04786)^S>Oc5)Qp+}7zt)uuk$(8ucU%_5r2d`K>fBXp!^#?_Z>xIrafy;*WE# zM7A6oYV<_Mr@t3}>l1T(BgubJz{QyvS1()21}NvS%l86|66rt?k5!`v(Kh7?KiM^L zB=5RXPdN*%k7l4eRtPgJ*i*Anv=2;`(zED9*WOe_7Lj-;;PAG?Ku%lQ9B zTZ-}8ENWB;8QHGZkAJQvh5!Q^B3J36WrG7VSaD$Nd2&kE`IIE!{!@LH?mfn27KvYFsP= zm4vYp#FL{~iR7Qp9)6PUIrsA$NRdY8HQ|S(dfK|xqQ{(*Li@Nt9;~;PTWnk6-(1c{ zI3M{DEh!jbrT`HlKBprKq4jq?L}yO5npGfiA-YM4x`~MeA5HdkcXyN30=46NP8A3I z(gq}5Vjhd0oHqwBCPRdBsEV zMMcH3tElPezf|J+pw<@MnQ##rVJk7DX3jW=P7dPd+iE1rildB6hax*85Fs$-t2xmZ!;Naj+3JDmhE_dH5GFg`nreNI4 z1p)#BP065jL5uS8^0vVx@W}%54!LnJEydi1R~DTe#~SSwIVh#LoB?wyMKre(0;^P@ zWf<&HX5YVn41x7RPyTa5`Aff)%x9@m^E-mZ!Ovh=yZ-O+hidBT1wS>xCvt9N6&Ri$ zLL3P3gh3WhUZijWJ`-+IMZUlOpt;Wv?0u1a!c}I4K##RSr>)vu97 z1M_;>yk}ChxiUqfD)Ro8T=9vB8ojo2b1p)%Va;2lR{&;@fp`%bV&M56Zag}xE}uym zBj%RrsImqV$lTnVnft|24xTXL2LuF))Mo3l7+d`-$pO-^EXNCNE#Hn6;&^~nPe5~o z9^dyKRbT?CpkWO_eYKC*L5&`CZ1g+ozq}Iqm_?+%@68%@W{;%K{_*(D(<+12fONoM z7wg0uH7$E$u0%G4PKbA8Mqr+Z7lV}FM$sJv6|gtbR21UY^~1tB%tZ``^kuewdJ zAl-aZO8L?kA~-;U0`}Poh+=eWK2)M?j@y+0mNQ}9To+0G7~IN)eKfd3mP7+uaoki{ zhwZ^oW`wL(nFMjgmTBzg$tC;55AZ2P)hA(i#2((E| zD&DrI5vdGf>bv*N4PZ2W)=gusgrK)6*F5`DfyP_Tr`0w^&eT_oB z#LqhzSz`_2FSw|BWQK6-dkSeRojYfuNM=kOd%*J&f47-COMweu{UiEGlwpM6 zgd)zPZ4x8+!p4y{wtm(3ni3>C&d@03x#Rg{jtoBAXiHPryC+trgDl+b1&|fj`%usI zw^s>i6t=()t@F7_8w9%R@l^}AV^~F~w;r9Z-R0Q@m(?r3KIr5jx*fGUHy9fmJ4T-6 z0j>FTpAR4{_@5#4pe$^yglpF-t(w6y%W zK+lVNDHKTg&oiBykI#pqG^m$1 ziG_U3@I2pqfUBuXNmWa7_e@*wZ=}yTVr$@J*g7Wg!eoLd0pO2wq>ogkT$pihx2ZE* zykeUXsZkgcI#FsP48rXah2$qU?;^Y4?G~9}fVzw8ETh%$FFP`g-Qm3=atvuVS^PJ+ z^`yevYMr=~3j_x$^rt zIP}3}DGRhtA19YN%_C|E=d<^VrqSGewALV6mv83J0aAfF4X4G7i9wfp)o~|tsUJO9 z$LWtA+=&(c_E8!(qimgd-IG??QA83nnkNYf=J7_Yj@HvQ4%JH~t5&H^z}S zGVWyhqP?KU1df%KzW&r}gG0|H|59>d>Qp!i+4-_;QR>4Y-3z|fdu8Q_ee`QReI>ug zM>{EEk7`?84~VvR?lL#RE@?)!$7b_SOa_v=A*gGv2a|Y5_JWl-N7vUb>8=N#^d9DH z_Bct${~X~jSGZbwE?c9PVrjish>loCjSx^snyMNbEOClihcSrlI`#JR^D|83ORMh? zU?INM>P7&A+t(V0!BvVm21sr?Is{J#8=v-kg-MNF|NInlcu7A-rD>3g!AT5S>nSh{k~=!XQ0yT7}Q?C@7{E@bC=~JI5gq zu;VM97Iuh%)GAx6Lr(Ige4#nj)s8y>l@m=yPq)lmcErW7jHBt3 z*oGLNFuY(MoxcP0d^F;6X-8>)L3@LLCzh(dOKKlH{ySwBJp80tq}&8aHI3Z1E3P#2 z;0$fgR}MpIg5b1wiRIrDUZM}QQuJr<{rk@It*)jAX2^!Zs{zj2q@*D*PHc_yhxL#fUmKO(zq+@5p22YlQtYRAGV8d3S zaeH=y77Lb1fxKxsIXOnD&iYG^3>Fed3}dFZ(ojS*dVr~d#GIfNL~vuMWFbz7p0$Ir z|4h#l*x2|t9fGU%#fz&1kYA#FL70seM7{iGe(~2Z1?e}Rq4ts#oEW;<);Zhi{;CIW zX_>(yefso)FHysUn+7J+$9^P_a9`O)hRnEsKH71ii)nh*+$LLVQft%tKw1I>|C=lE zYZP|{&-iDN%bujenVa03t9##ozT3wPC;S9<=9$Ao{C>r=_K(vj$J} zJz1C@UzxgbpI|n>&#GjV$M1fkVnLXD3-*T$ml!%+zhJJ?;r2vCFl&)^?O5r>cO>2^ z3$2Z>ZLmSaqZGubRC!8=OWu#L{n@0eT2;U4{U^J>c}i!#rDuNO>#3SKLJ1#yKKjZ2 z$-#ufca<$oF75Q{6Rrn+y$(&bRL#S}8fP@bFp<;R8YS<(2{ubjX%b z&^@7jm1wOt0BdKBjx-r>Ca}{>}4s(pVxHRWDew$rEU) zvCm^fL`W@E15i@JqN-u{6JUht8d41d$w}cQV@nIqXP>9|z zFgWNb=yJeoC2Vn+U^sCwIA7C~z9VN-@toF|cV~9$4($tVldtD2e}V8**Wn#7(HswE zYp0kSWNeI<$uPC2Ydvzp&CtF3rEryhImyEEzQgs9Vv-e8#J)4pwAh?@i#-|=4!lqp z7#Qvr+d%MPu^o!Q5CwxT3!WB)xJT80?GT#bF}kMQ5x`t%8BUukU#;U~vuE2Jo^lHW z{72S?hBPHnZieU8dJkiIiZoywtI6gV7JmR@I7>o4ze9hO2ZrRqoW*7#AJ0rN55nXn zAqKZnLPG~0Q=93C)@VI>qvuR}C`**+BnL82w>w?^I!pd5-19soa)2IEm3^ZL#w~YP#I&+(6U9o-$}{~6^t3R8oXR5m-hNAjGI#MI zKZX`W?B>3ic$od6ry3BV@eBW}5LhVh${-~~&wuK7nwcgIiDL1}RtLH0sNcfaL>djoUWJ(#>ya3n%2n*TMuu zyZ8TWv(7wQTC=h;U|c9ttfCvD(R}_4`T-yt{ZA(h!K4*bAo=v+?AFNh?VB*;;O$p$ z0l4*SnN^Z1bs((n+A|?^X>&|9eN*I=2i8O{@AdY*$%WyeVjvCpr~b@#x9=%B=TGAw#R`lB$;I6E4l0U<>wVy9L~U z=X=C}S3h<(mYyMbx!!%L(S)1oTw>CKL^$tPhMt1JZIa*ssA5Rb6l4zPb3e8YBOGWP z3t{&)knA%v$Xc(h!?RdT|C#KHk+%&Xnq&t6dIJDKeLE~eqobnqlXmEZQ?>imX+tW_ zH@!Y*+1vbcMee+R9?H8f#f=7Gwkp)iWj;f0-l4oE**!d$*+9j%h;EDD;mcTxj7a&c zz5;p6?ZW_i2v;p#w4*x&7)QM?k7>%8Lf*86c9rQ0EK6GH5<05hT3S4!&cEP9{SQ8| zF$&CZHV1BCVN%SBN;f}603hlAQZpE}k_B`#g>?iQ(aXUK(wip-;fgmOU7l(vU zq_Hr=en9172IUEQ1|U!&{ZHQ2NL?6~nFVfp3}Nt+@gU60+5ro?74qKBdSISvFzMw4 z;EOr(WL3xq0vs#VU#@J@??*ewis0Vjd?_Ua*P7J>$*k5$(pQ1mAAqhccqP?T8Hk>Q z--t!J??Aje-Grd^H{W8It&Yi^cMcps5twKI*-SMczEj@~kXfZv)RVlqzD7X?hsU8? zIff_R(;=D{HaJr&Zdx%8t>*dR(}^+bsXz)`2Mu6?vD^E)SO6QHhBnYrdQ}0k7&#sv z??{(j;SlFLBgVXi=n#Op;y;K&9o^BOw)rA=4B)_Sqs%^a7oj`O`{dyh|ckr zl6Q4(DsDfXOEQ&`dafEY5**E2LnI`z(*Q28zxRv0P;zgK7Ih?;$2(z!O)Wwp7Lha{ z4)MGISh!C9D9t6&Ne&|EAISjvr?TGDw-wa0EzBd&a)sbkAMz?uoyn%gCX$`oTz=np zqh7zPop#k4*Qxy1b}ZT1F|HTqu<$SfoTIO?A`nXHct^*a77#V!k_y{M=1Xy5dzRNU5>6e}t;daI>KEv`MrQwBM+~aM|Toc9=aWW&wlXe zo8di|1Plp2{wiuQ7KDnn>IzI7vqwiQAVN83ZZS^deq6nL=t2UhDCzb@6+K^|(weEV z56p6*wgKw3Av(zeH(DG&ve#1GhEnJEa;D&szM!%7xJB)Bd#lT2PA8z>{3HDl5)h~r ziV-Z5kOZ;TpK35YTs%tJK)OEOt!61VMLEX0ii$n=@tdV8ZSU&|P4pw_BKnD!g4~ml2vms`k4?3?5(S);Yjyrqk2aVS*>`J+fo05Bwev9Aqx<-Of zAAgdnG+g$#Kagxup9)~pA*^BorO+yKyHjlSy~!Ustk+ajR=O;@(9#4_2cW^6(Ka+R z+)XsD$Efh=$;YP?DbfTY zH-V*t-?aMW#Z`G~9}mY*z!kA=v=sJ#B{ILXYt`7>i5RQ{o%vY>@|(3Oe}3U>*#WnB{l*@{0ODeyXdkwxKol zkoHT&8C^LJwBml#i++TA{A^+MZfsabnZuKA@IC`2wEPaAVC;8^9itj*ldD6qDjjH2 zHN7TV0xbthJ|Kd3SB&nwt+(5)IcM4EcOku_d4@@=^vErT2);V~mQL9^sWyi#{qd&z zwa-(K=}ahQIuNpH`Uw*F9`QmPn1d+37%!g|dHM|)v|c@SmgycCK~oU$4v#n%|f(50{XvQd2zev!3#OQiW>x@q7b14JCOgf5{{~rFrUCz z{hGwK{4}FiU$6Qe+}6u$Blre4y_Y)<2c=lk(xPakW)`@*xnCZ8ysCr_Js=&IfT@Z1 zEn)$w&OO2iADlIyTZOEi-A0&ap-^h*DA6;42KPlz92hBc{6b>+Iu^!^w!)j58~BDpzAeF^0klcGiiH?^<(6BI)u>FK{AZt z!UW%=!_O!p2x2uYh}VF{A<6Y0ynxr#M*7!WQ!Gr1b$nqSNnYQ1g~!k`M2-!W;00Ba}qrKp@a)3m6F* z+4mDCJA_ife|?q{BsZ1%S)}FwUpuK|3Z@BWah>pV#>fWWB(vcwLqZbFsgKwY08NAWoAK%q?fGPhOx&xygoA6T^so% zR;L!uC-pey?snGm5>gSw;|^(R#{cehqYCioZO^ncH<$22FS&A`>S!zqAb&~d;S99- z75n?L0Awm~=A}@M6q&wWsbQxIJ;#{Jm~YinQ~VE#;_%=*y$tyt5^WM(Gvn^uf={e~ zW_f;1>+1n~P0fl%MU4hVJr&jM#(BJ=Yzht0TFDytW=g0Jux)%Zz>Fryc5&(w*DqiJ z;SvxV#Dl-~?Y8vmD2prIkCv7e(Qyhax4-v@lIWq(dVxRBt7nJ)dy^aix@PI{2EO_0 zN27YWN_fKAq4oKBag?|XbO}lU4vHwbN#@KLgw|!9JN|Q@cWAcb<8SD3Ge3zy+&o=Y zwt2I;58(kl{y74If)D8qPI>`b4%US+czwlNzPFU&lC48#h2{At5)2I1nF$E3t*s8I z|HDCt&7Qmd=$5vGn`(5a*UIDb{ChVZO;q|m^d}CJYkN?@UKsS>@!-sqF_a_O_S5%` z68mJ;B0Wk3nI>66NJijrwZSC<)pZ&G?yO99$zd*Lo(dsmTu0BI__~ znz`~}yyvJO4OrdMxZp(dPU8Inupr@eTSu)TkM*v<%Dn&Hq*kQi!92Ib3o)bQ9 zGKKT}XyFLybB2(BjX{Zu^A+<~+c=W{kz@hx%W*pbPCrGKA|!1rJRO%m`M`mz>Sz!M znY67p`^!12hyAXtSnEs<>B*~Vc;L7o)W}aquWPEz+{@?RW6?e7fLMQ zPXZDwDbti>dhId*wd_~!V$0$+`BR^+orc(vUDV!d8>WMl(eEu%(8Em%g%+a}!1wK~ zfOo6?TM(3gmqGRG_nOn~F=!=RZMnb zzem67KwM)KH_%GTM&8WT|E#MA?Z_h#TG&~QkZ2TI&~L~|x88}O3mXc9ravgZZCAL@ zG%jpd|B`*(Z>qFlP%ZQ$S6e>u|Ji0&mwhhJS4u)`qCu?jfmjluNZQiUq(Z2V_Fou) zma{s4Jni;=mmFF%?{t6E%M-WE=MyQG2~BMpcCb$Ap& z_n1hb4rohi#u};sn3e?oXMamUN~9SB(hg&O4{3ba?4}>GSa2{1R1`Nn=PT5W=9X+% ze)QzgWroSiB#_~qt>^o<_Gtq+39D^!)unUT=z%RhRR5U(!c9;wBtneK7JjlyfYlu- zEt3-|A{E zPZ;r^3!)DNDaj!!0&W~bcoozp1$Z2-ck_`T$FnfHOsS0c0wIQpmeCQ^8-%0RmyZ-a zZ^d+=(gURbID&d%jeo8OrMCKY4C#hEsD)}s`4#*u*v2W5_) z{3CUDckc+{*Vt}%R!_a-V6cyt0gR3&NQ0xRbxqN+LCb_h|3@^3eH1H<3?~Hzc}q0& zE2s4-WP&;4cLiu!@d#@rmm#1kU}i{*-#=MF64 z98;rQ+JylhHY3VD5pu_t0)9=uYwo=*P~B+-Qj|hbW4_llc3i&vrptEG(NRbnLE8^= zbl|hKrp3)og}l5x(thF(^NWN13SM+h&2n>WYq=x!ed-{u&jCq^0(}PU5}A z0Hua{)G%&3thYccoY-hF`;TDGG$qA*v}VQ-Ykq94*_){i?&9;<%I&iUrm*HPlK`5L`GQ0)bPoRcK8u7@lobH$^Vy&{4#&vYOZMZu%fh4SNaBHrWvkdMaC zscS54+mGx2PQk~uTL`;9|A?=td@G@mPgj#35!{^B6Bmc^3`$UPL>T6-*IV$0=PI6- z`A-)JR(m5uBPyFr&H+XlH*~(1cnewtBUd9{rm<0XhM9bwaMXr;tsKF7B2pbc*+`xll;xhI&b}r@0)Zf>cr2WxzT)H zok4sQ;@##$t~aA=G(>%3m+J%Y3f-)Ce(vV9JS>}vwkKO$d+oy1-)f}Ltgs=kgM*`| zDy7cFM^>}1CWP6{Z#`aoSw+RgS)c3DLqiW?n?|0dI-cMj^^Ki(FJh)~6UyHcQ@wZa ztNeGsMta7Me!$A1Qn_34#=Z;kc3wH!guJE?&+n3ZvP@>VpJsOp(j0WxX%v6pPqW-H`BNyy6qqr)GJfH&vXd*9gR zP~N=aHqUXeI5p<8onH=(ew4Qrc=e->r}5fJ>aSn9%^$nH{?YL(RQa2hZh0-;GS1uS z(2`0Ri~b&Qp&}a*MHf4;Wol?DssHP^nvMb0BsU{t)p3m< zkF)7Cew7VOAQ`hbasGeRTO_hufEY9jGjpPN)s&syUfh-QqszCTe`ZYjlyA*W1HKkB zw@9PT2{ryaUZgeT0WyD7wQf&Sld@=#IQ62FeHja)u6)!rO~3zV)f9A~hJL)G_!%YI zN;!;!hX?OYZ`bc1`X16nocv1M=Jdb^jl7mMTDGYc@aR_75dEvJUvaI!OgYTk46Z(W zNaV;e0hYv0 z%pepC*2@%GFA-ej_i7TL6daG-3&==K{oIjeD>niLbG>l=DtdjLG;{QpK}o(#;Dz1B z)?*fLHmnN-{Ex|HUNtQb9ugt9#QfOU)k}VV0h9#xYq-;gq1 zx7Tw~YT0P{zm3qoIIpV+qPwznWHq?#a|?%a)UD2cMErS!i%VPbw=o%u)ZV0y>)rh0 zH_trNNaUb-lghgC*y@z#x1Z3_i7Mvl__8p0o&uuucjCEMasP9ZVt{Cury~en*9!L; zk&9*Ll9!)fN;^-9hx4(>F*n!dx{gl5+Q>coOr7fDdYfB~gw&s3lnynX`SLB|4D+BYHM*X$JheR#aGa+*xYGBolarXER zIQEC_54;EXLe?gV2C|lz;QqZ#xOG8((wDM?+N^V4wfHOaua;lWS z5w&r^92t4e-MDj(12d)WEZG`n)ET}tRSdIma3mZVy7J^`t~Q+&)z_*dpPUCOtk zZJZk_0$UaZPTld2+6WCQ$frHcCU!Ece@^53E`y;4@qN`Sav4+K3Va zH=rEL;?V4ra++gb6mvowd!{PHKubeP0TMN{cPL4ul;|_Cxcboan9~VkhMyaBsq`9_ zHIyJzrKgJ?)1SFwGSZ7Hr-w@?*Bf?{Mp6(%{&V6-M6N!PR@g196F|iL>K|P12l!4| z@W3y%9Z_#Of znbMq7$kOjPkMZmLRf+x2iz!*O@(o_pH0;OwJr#Kt%vLcXSZNO8L|2H$qS?4`?j_WiT;wx1<=g2Ob7dH8iUrCICE`aSRQ0GxP?yg zqWP9rhdOp`|FcJc4T75yU-0(wRd!cB`8Bdf;Lpo;#_3wxyVflp)`|}HFKIDp}av+hw_O~?}N@KbjPo8^_zr)Z_E&97_>8squ)m z9R9t~5>J$~5xqT0W;Gso_Fnma?f&@aH5cT;jFk_#yG2RG!QtI@Q>Vxbe2dtz=H0or ztSKv#PBClqSP4g2Uw1!6w8B5o^3(J{vQqXB*~UUZ{#Zxw&gq?h zeHMweJ=5XdwPim20qB}X!pZ1pPo)A@IJYQyB7>gvpm2xAQM`I}z!NOX`x&xeJ*XB7 z%_^a-u=)p|?=3Sliu#vm!e({A$823hNP&ZJWL(ob6_lUJ$A%8FbsL7EL#0%{{jueN zbab%1tBHIB`69Hd7NlosPB?WCPl$BX|2KEm$3M8S=+{8l9immHxSF4{AiSHco*<-& z@w1#8Saq8F%NO{fXf8E8HT4NXZ!9{y1wwCQ@SUHx-;R5HYHlzFdVVl@`MklmA9W|Z znZ!i$>+nH?#Z?e}t-#MW(p7FM_K|fI%*Y z;jTF)Xp-aj6Vx5ZXqvUM(7)8%zfH3^wUB8=n~o&ScXGGLR^^v)ofX6PzQC?dUkJba z!2v%Z@CzGtwj_Pcj(t4B!Z!_rVP$1y%`%=B?=7VI?eyZNf|)f|HaZ( z21MC4?OnP%q&uX$V<|-m2|*fZq+xVcx zf(Ys4c!(w=)ckLE?ZW>^iir5}0zwEAlK7-%ei)1Y1PA%r)&DRJsV0}^);H5u*gmWUG8#Zk>ygtb9HRw zTY+oCJR#Nr|L=U@Lp_>^xg#JT4oAIx%KlFY$q^IxvQu4!t4M!eGe4QpY z&_u?5^_`@fq8K^bQ+6pHL?KN)B&ZDN+E<3mkrN`{lOn70 zu>i6OVra6I&Tv-7F^zBvD0Q5yH z9X_Pwu7H;*aByo@NjX+12$0L|SO1a-1_cwle$6bu3@!g(Hz*N-?!dyq0zhxn*X`}E zV{%cX$o`NJB3mL*rGh_+|0gk|$j*X<-=uW|Y#fL%Pq`&ZVOm7tqXAd2i69u?)Y|Z& zJQt;{ft#x%=vAJ~Q-Ih5zt;y{VJz|%dVrK-M2%iRjcbblW>OF$&ws%Z21p`{es2!z z0^h9rwSV6RtmdF5B}D3$hNJooO_=`2mR#j)YhwXx9=PxsiXY=U39gAxl1h+%vigI^ zYJf-zHLRLd-J=c`TEvo%jN(5TokH__rRG@6Op1IELb?6b>W)HP;x;$;_yf@3SGM7E zN7ALQa52xD52YjiWQ}YEjg zVH0>;z|!5BBOJ{0{-tKpe{3X0RGaeha;vGs9b+(|kK!#u zS2XS48V*i&jk=GzxakpuvK{gN$@AR&p_7x#Q+k9R8;VqJ77gMgZT(ATZZ7$9p8`aQ z@NhBJZ^VK;$=c^*b6tN!2K91of?v$OG?*Hy>zAw%&RfSIbgQ6<8T_q`@o$x`$~#ewA9r1#1(+kF7yOs6Pd=7D?z(t-P9}^k^0ZQ5xb^Ey4thps2^aPerDnu@+Y6HD6DuCr> zXEVdK#kyA?ZC+?E$#+Z`(;=J-YP(?c|CILb&+7k}^CCQ_!)#Uy!lAPpqYj^24NTO6 zFi1bJgX3eg$+jF_5~X;a?#1bW>2RJyt5#2Z=g3~3Yj28$r zk^^ylEpwsLy}-xSgejGkM~QG}(bo2DIlI2T=1^%&?`G%VXu@ovSaAn9B2s^F-(;+v zFDMKznhMGV^U8&+NO<%AM@&uK660u00W4vX5Sdwr4dqJZJqQc>)4J2tAC+kTJdtjO zfI+hGa48tFROdOjH3QuJ27Oh&lrLlaCgNZT_^e)4t7khA9Eh9z&HohsoVxwO#jsin zGK3F|l~TrHhrJPa@>k{+mEY5tTeTP3{Q6Sx)Lo`Pu&gAYxIU{5+JF@t`+oJl?|-M_ z#m(CKjUMT+4*PRRg9sMN=}v}4@($CBY7hIS%gQb9`{+D}ta@Ex{LA~svLhVRYuspX zkRdnV<+Kk`bhS3+6!W&fH zo1U(}k|@;az`35hL~q=46%vKdRhs@wfWDo25iXhGXjlfL$b&pDLIFFk8U4{0nGQ+%@NdI41M7>|34tTjTQ@{9QFTpZcR#ujm z7O}9d{oetaSy9%MRS8RkXl4^3niRpyi_aka=l7GrW!8|WK4M{1qwBog_4T7;pk3`B zx9?}0nt+?@ITsPahv%s}T+NgL9f}FYpZQ*Ym6%d!R&EXPdFBVjJRcj2(}GM+OpyFD zpV!pwU2Lm( zd`b`up93MQr&f-S4&}*f!vS}0o(AclP?J;QVRUo8|AA`Tkx(a2F-M1J2n7m0!v8Y+ zZ`XlYU-#J*91VEU7AAC-95owTM4e@H?~whQ=X%TlX$kuI`FZ29Y{SAq%X^?{DUA}5 z>+`E_ejd%w4C3Q$NP>v)QNdKoMHAuD)aiK9fYK(P^^*>vtE;OBmKAi*`)4h=yfp2G zn8U!!^73#NS#m7oA~$BENe%iEw*Bk8$}eHI=ujEaFMzc8ZfMEDYsjV+9cvzA|E=u9 zh8|xoQ37KBO%L0?WphgLkQms|PI_P!~apy|LjT=v* zqXU%9yZB5WF0QY?dLNaH-%S1&uMF&(EY`nWKa50?5=;8}5?p0}2<#Z}us#@qbE!tC zu#tVDX*5&x3m0FST_3@RTVXZ!m;|(Ak5~VhAfT;f(~ZZu&AGQP1`Qge0`7E*D2(V| zMiX&rk5H0z2u1M9%o#Nv_({2YQ#-hEt@|)gZE8i0uYAiuJqNtye0JC zAzV}@8#+728|(v9@iP%Tu zL)JgPOBg?-hPfm#$G|7sRaDisJX)psFYiM54HYA=g2E^7ub2IM&y#;jEY!QKT#A8RtZ52Qj`T5!+%0g$9A6-+5RTqr&YJ_^K; zPgV(&8WtV#-nM7nFqe8ifph7mb>EkSl)=lEm3MS83Yb?>*TrmWOj7mThd6?va8v9? zX2*C6H0o>30s}vqG{}_~HFgO5<`njU$T5wnxTekodEdA6Tz;#`ZQ+xNT^%bnFlc5v z#4OKT)i*oD#WAM{#T5TJyy3mdPx04pf=AMA4u|+q#fxWlsoF8RF}>sH(5U}D*Ls<# z#Z|4tuHN^JgTe8f{PUn>r2vR=Z)l!(VB<^<8!Ag1GV#=-Xdx1UYW|es%_~XKC$Iei zu|zV>L^Pzocn0MOtT3y05VUD}vF8y=$j5)g1SzMev+EwK!RN}Gw9uqd-&hwdg#260 zv#cLVhIDaVGi3J*G!eP-IVgcEu)aRLa!NR(LAo z{_4Bi=*fL~O_vOiy}I^^q3E>dlt4ABTUqUQRGHMsp@?#ICI|e~2ZJl6+bEli8r$USp=X?4IL3 zRbFG-adBR(_yx9hYP!}5Av>$j)k^2L&zdd?F-18ETwiw?fB#-{h}!8?D(uB;-TYHL ze1*Eogtmg;z1kb)bM&gx;#Y28UYQ^^lb!a(iZU(vbJauUsdCAW^>cm%=f_H!M>tc{ z5=zvddX$b8ydHdb30k-0mk%SR%FIG^sP@pA9}O@ggER?@Cmd{O??5 zd>Dyhj<5ato`@%_#~RvWiP*=C%}Ykq>nSdHeynHk^QGL1Eq|9BAQz1G5d$PKlENAh zD3{NMlIy7o&xn9fsu9`0#dc}g=|pnppc@?!3-Dr<9jbR8xlZt&-VD6GZ@D&VXwDzrB^4XkcW8tJAvh71x~aM-yw$`& z^+D~ch{!nr@$=I=q$_nvlox|0nzv}j&UWXfrw2ydGIVEWdam>1e7@d9I;`A>aLeQ7 zi-fo#)2u&ERTsJFp9P}JXC>!2Z786(((491YZnPE;;8pu-03`AhO(%TU-%G-vE*1H z$jq*;u8p>|hjZV+W?U$HjxaA;#fe7IPK_DO`u+X=Mch}D;N`K_Ufm@_ET}6TzmHjg zliKHlfundY+IK{|Z+>IRL2*DmV$3O0qkBQEG zffwO5ESicO$(}k33ky^HL?g6!`Q%Y0-6}vhD-z-(7@jm!UV{F*Tvm_s4&#N(jZnIs zCBB3d7U=Depf|1+y(^|LVgk1@DMqKYN$u&k9gWuuMv4W9Vf60DtpEYv0$jA)TzWZ~ zfCcXmO&1$=T$udVZ#C`DA_N{u>pod|ctm0<5qBl4D!|)6MBUvDaaJXejJ)KsVPNd1 z+k$+~)-RKhjF>;L zIZkW-Yc@<#76!IiQR}1P1n9R9&pz9sm{t)JA?XDrWjn>PpEOZ;v{s$}{w-*pPeKqi zn;utQm${G9+2OH#xgG4y%%);E;XWA`_vLpEV(Z#D@hSf(Oz(g$lohe!jfUmv z-0xP@-%BS>vAQT{bvfC$9uE}py@LK*mP4~_kRt97KlT-^bQgrqohcqWwek#C_&wioQj+Y zfST^|gp@FFm(qzX=D#j$NBpMGXC&nJoK__W}F^n+7k|8@GidYhL-ongMQcMDVs@wpLzaRI*D!y#P#P#4DSIndKHAt^P?q8VkM4DErmqlQoj%Ycg@zW52lDJR}k~PI^rKHSsU1@VW_0+A8sTmT5Hi z3v0QNu7z4lAh|X0sk)RTI=q1tNsl8^K#R7>4h9oo;BwG z9HoZ`f*4zG?@UUPBd6PN*=Ri(5quxc+$+~e^bv%_6}nV%&$flJsABAmhMK@C?F zYtE(%w?2PzAICa9cUDf*QkpGn?Mam41cg(1hSgJ?)NE501RHpzooyF2B_p1CmS*;; zmnK=_%xIQMIO_mLv#ax5C4p^U^|>|fPrtk?cgua+7tePN?q{Tq%pA|#$i348FA@DNK=hpv7FCLg78MBzP?Ujs zpSdsu;_S~Ys>$kOd=f{7Xz@_mdBXU3D@5K2CB`Q1pd-HY77z!`ecRkbp}rZzHSrY_ z6C?hfU`5%$-Kkl-JEn6u)NT*`349-kuWf7lwF%T#kPPyxwgl#3jWb&$8SY2%ycz7I zM$mrhXlUTm`tGuQJt@iI%}Uc0M1Bof-Zm3+O$ZfbZT--@Ef@&e+u4z)`6%Igccl%C z!FGV#Dk?HSi(<`jRR&EVbnP6O3B(3%X`1ya`EygIG&ndoff|B+C@3i7C`bZhP$Op; zCWMk0@(R}k??aL!F0XkV-k;#LAc?@+Mx#>A+|XAKCxq8CRV{`hPX+JYt*wuyC2L*D zJi%W|cldHpMatVt^RMb&zR=jfM`-XmqapOMoJ9I5KH6B?P}xpir!%H}g9cbT)%ydG zB$jQ8oSd9Lm`I`(@xYA`dq&jd1!r7X30@<1UBFG~O}0wN&-9iW$^bVcD!xp97Q4jz zQ`U~F2h8Ir8kc&k;)TB4K(3Dt!#s=PE88eq>A892Fc$~soxr&1X*6Kt&DD8xa&^2S z@c}!(+xDyPy4O#JRlWHVYB$d4dzpt}1j4hHrK)WnoSazjFz+J*0e;lwclUUWu&4+Y z@%&&6ztyh5$HRl4_{Ke+E@phRasdXY6DFag9GX2ju5{s@bC12#`t5U8R?+Xp;+&V7 z4}~xaNZv({gWKAgd&BXdT&^&nzCd#c~(;IT;V@w zmIxKy2@arVArZK5dLtF!J&qBrZwDCJN?%Bl!)RJ}Q2EdEr=yg@Z$h zU!e8mEgz)C$9obRva?AHakN~Yj*!L+aeM2Ah`_ksndZr zR~$`K?*-;B)$bTHb3M!CtYcs5g4g6fuyb;n@S}Fpi_#*Jt>0sg z1L|x~;7p&3v26PXd)q(zyoTbr!X`#{-mJLWBip!lS|MrNA90^Rf|q~%aL71juU8U79yI*&~!hpYzF@Y9>M-gw&BEq9&!0=LRizmFCO| zVi6Fm<0CBH*};vPuiwnwMGMszw79xWFyRgjWzJjA*IG!M`0a{f^-^$)@Il8wcHwx0Kix zX&*29toDWx$~)~ALqnIj^env4aLZjg`Y{!i6oH@U+G44xeQkt0!vJISm!W;AetX*9Bwq0xiG`MygcpX?@{l@g zkSBW!3ISV&}WX7VcvV%JB{kEhhBQ?5t;DzX~ zz{yUEFp)D=;WT|y=ik2-_`8Vqx}{-{ts@EV-o6#^eeWNZn8^P?(_Q<;nK5f2vh#-u z$wtuDL+`pU-rx7AP$v`GnvL%XtK@tb2)j&pNBLk0;)l2Z-hyOA?Wm(T-(RJkT=I_} z-w@X>mTFop`!^O6zXK??D8`Ct4+sn#M?+S(g6vJ4lt6)esC1TCd2av^KmWf(#qLZc zhWV4L(4sIKk z^(C8gviwts1OX6Y-Y;ig!cuIpa`H=kTL`Z}z;LCL$Q~=|Zlc`n6Bp|Thggo1x?ydl zc!g%C1rO}7(GB&0khwK~{xmYHe)51yJu-UYf(em*|6ni}%znr%An*a?#}0XX=6JxF zVhEkko8x3+76SjQUc#U>_aH|(Fu`qDMk`AwV9262bPYZGAj8S|i4lN(SndQE+AN7` zKLU9*3K@EW0?Z2wgbfLqreQ~@4A=(h%LaxW-|U!YI`3a^0W&eVKC2Od!C!lS^I42} zO2lm~oX?AImMA*6N$4KkjdLf#P5VjSZvTOC&NM@daU)9pU^e{zD^$wDlF?2CdDOr9 z8%s3(_Sd><(%|w9Bu$Bq)2RxYqQZJla$4GEq*jl6 z0nGv4{7(y1*!EO(E&PKJVnzso9SM?Rmm^N3%KwvK8)(LM`qFlIo^U9UK^(JC+wJc+ zY~TBMaSO|%i~nSm@EyhQ*5;;@?c1BYGR8KmAp$HctWZSlhXx!>`QYHcvJcC)r^m-I z08r#ujC2|pfm8v>qQY?>=F(KY--odK3qI~t1a(2Tr6h40B> z%jyF+GcgX%&=}CG4FnUQ;nY2d3ez-fTcFPLMQ7MT4%zB%glH$ReKJxqPS9~L`#rGhQzJ~21QLmSd zAdy=wZ1|)N9Npx&!(;a4gw=QF-S2%HjtcLa*?qSccE+2$;A=w+!J&5f{=J1S%9=V+ zYr9&x!6JO>w6yf1eojDgo!^rRHZj(ry851vTYF4`FP5U}*%L2SQ{VLfApgtp#LJ29 ziFR4QhnJk3w5%kgq%Bl{Yxdp44!$JaL~mSLit~K7(YvAZUg_sC#7e_zB}~WF^~g0> z29#qn|c#EgZJv5A)X88dA?T%TX9 z3|;a8^G-<*mrKF@omb0t=MB|m6_`B39~gHF`=))+5HpIbB&HJ_U`8Tq2^om%Vq@ys z%=>R#XJ1_C@-huH(-ajfx~Y)kdF^;05pl$C2X8A-d^3L4(D#=kynmEAKMwzQDrb^v z^Y0JqvEbT$aZa2mBfJ>9mhaK=@Dh5|_`5^p-lbYlx3q3GFWCij^%reunHpm%^!8#U z@zs3)&WU1w_)Pn(b;9}mLMsL)shNgWO zsJYe@BEyRO52NwObs-=$loQoB!Muvv4vpSg` zU^4-AjxNz8W_YoV!A#=$7h|~W1Z2hJu=(kIse;Sl0^2+>V zWS+E@e-6BzM8~{(aa7n1B&f4(K{~kvkT?2sh6ISuHfV?)83Ya=%-iRxmKsuorYLB= zL$mEZPI;&;k(_svp!nW724eF9cn53n)M?wq(PN9I-Sa%x!B7DaP@4- zwCZ$*_>MpyKE%y%5odkk3U{o|x@((yV^SB+IKw7#Gm!c6<0RyEPFWD3iLCNQ5rt1o z7!z(Bhbr=*c_o;R+Sm~ay8VRNmVyg!aaxKQ8r>tY+k`1c=4TwT^4IkJ{DIa_k=8gm zGBM?^foB$cf3(x8${MT8jsI!X=%WM*DvLxfw14oBh$dsKH6I3d<6-j|q_0QVY|Wx& zRu?H1ap~cJ{$ftyp%3t2=GY&7GyZLBD6x1Af;MP6{vwD4w}pfJ+A!PFap4&?1{h^x zAbT>uSzIp< z27=Yglw9kyAk}`Va0gtI25or{a#DiC>dHzAg8s)m2)C|brmwb@7P#5s3PF-RR=LZy_I2Z2i%^46Py7jkw*2-_qB zZ*G$tqD@FT-61n2PQ{lXzUmvlf5Y3F%>r|G)L18hfo)#5WR>v!6I!vxBqGYs-cWBP z#grhJx93&J@pp+2F`BR>1n2zL7NO&uvyC1<#r&3HUqq}vu~u7&o9wXp;NWE&>9UsA zJm-9PTb9C^oLFm~13eVv;t&zTIW71`Nf$cV#8kl%Ql=rdc2e zy7wbCH<_6kaB%kL#bPcrzRZeV&{7aQP$B(fK~+xK$sx}W&77#F`n?SBx?hQ@cJOwh zH2kL$B5`L1krn2)tm%6qz1U_ zKqB_!`#vnUeOIcv(<{&{-zimGBIz?3Y+M3Lk+6-cj{ws+w3N#Wur!oGib zV)SFj&oBL5=^3c;`wST@Awk29n&!Dfb|yTz_<8DTLfk7(00R6m*8W3ipUj5|OO$v^ zORMqkkQN$DWV%@AT~(E%5H4Jh#mG?aIVez!g5OZa7B6qE%KZ6TRiUPY^9KMqvf9lT zMiJei!8`ResJ}@QjK~pdC+11Pdwr03?ezNdhz{4s$HWi72f}*>l$;7>JKPh7m$wl(7D%g5Nb$c?gsJ}KnEh6b$~` z%8^E`a-Qsop#hKpgtBd8Ye;2%3MBQ7s5BhEgF1Ox=;FLihc+g-ljt!G0E zW_8@-)~_pqEqC5FDS@CKr?=m~%O^usYGY0ge+bj?YuR20Rdcm) zWrben^{+-gp*);CLfCMibI}Xb=8OSpY4oD*FsN{#2J~|A_Ss69f=1OT{`QGS439`U z_1$9y&Iju0Y2iFI(wJ96gB&Oo-+I9aHSAl}X2hNPWzguAy!XxZxA5oB=mgN={&$$A zg9Q9X5a7b+t~O8vPD8i+o`of~;zK$oCp6S1rMQjMO5giZ9ryV&ibOmSaY&1UgNi4X zuq@jt&I*Wkr;cPj4%tTsg?*S9N!k+1g3th!9_S9(o)$Uwju1d*3c1DS*-@H zi}P}If@9~0nz+*gE$qNOwzKfQxTGX6BRh{cmy0aEZVo_*|CY~1r1%=jgN6|WORSOS zG46VeKZWOpb*|d{GtjAE-9fsw!Fw10Gxu>?Y#dH(;!VUQzztp`gSj}%Uq#4^zuF@M z9d=8{L6WS?5`>ffSTP1-PmxAcEQwbm<|d4*IpftcsdxpOd=2IE7K7N?12OLH9bj!WMy!x@jT^3CLP7E6Jj^A-k zE|^bf0xz@X2dv@Q!DC1WQ$eET3}e@vhQ(BCq|W=B64di@y_|x&GW<*Eg@TF=FB*nQ zy~C3?<4+;{CXF$mBx~OLo?8jdn)W|!k1Q#LZnFoT#H7gb)~0b*n2VE(C=TLK2234+ zOE9DIE1meYt+yO!&QjcU`F^}cTDO2kNwKw=Rem$xC^=mQ$N^SDjVNB2)h^M$WV`=s zsEYR2Z(}eXmx|M$Szv$WPY--4Wo9}tGc|&u*e)BVLgEs6ugK5Mhw8e@_>(JO-2@_% zPRe%8VyL?+ki=JD%R^R;g?J?#QjHPyOdZ93S!_9;7qEo=Xs~Dai3wo{kh0wl86?&A zggFYKJMLL8(_7!g@`8%$&0+>`zlX}Rp`^etk&N5O1*w?1O2f09_xc3sTMvf-Uf~-7 z-^*vJVyvq$SXcPB%|wk>@8dro8x06fu*=xP9DG(`QzunTowzSwax-$bg9@!uOIXQl zDir+p#a>mQLanV)6c~mnZZY?rIJ@ov_g%$WWgRCLlV9GyoxEhUzn_#JgB0ARhY6Rq z1)b+j(5Lc!&szb19~s^WnE3QdG3@h+)Z5^x&P}OLfh#Sbnn}%GaXUsIjk&OB2LL=(>oArl;_^{(+RV+Lluz7Is@#!VTt4Y%X&jq;+ zPY<7~o^HYS>sGUR;)?w&j55sB0r!8gf2v+qM`blx$>v9djFr^E7DRp#g^z!Xih7=; ztnYC!aqrW+J5xF<<+VrFak;q4)U7qLFXeT0yn$OjA3v)D>h)p~J5eYtiN-!wZ78aX z9vU1PY9Vpgme8oJ*UZ>!aD@X9+ZSe7mb!q4DJ+aIH4SXL+eGjFTBY?#v}n9qS%1Xe z!m_iTO5iMfDGPI&YV|YDfdBNgavoj@WeHA1(DtH`&P+Jb&|As0ka~vE%Oj{KOD1z` zxu)zOpxM zroB$UgC<~umIX=S{u-Fbl6SK*^`5v2X<7KcD@`~#xdcbwjO*j}_aLzF662I~)wr## zwa(3AUUi#hq>S6Bb_{rmR^{;uoa zM12hy#ey{V=jM5Ww`~4r>A4+@O{&Z-IKC!cvqBZ9=WH1!@$nT{2dWKKsVwEu`_Gi9gLzZ!joKxI`3t%9P5I! zQ&u#nW^vvF_*2yEnaw*xwsS&)1ux-r!C7T~QL6&CuRReGPW4j5qS0I1+nxpz9(X|P z^V7ekqj;h#Np!X9jC)d?eZ-=JD znqqSs(tFO02S2iAHdv*pfeGi zA@IOG6;4I@7acvSN7KhAl#XQB`!?IAINyrs{yD}Bv!jy8($$~aTfeO;V4(ThXEpF@ z@?AQ?MaCcIchM{R!57)%&%j>0(_UDT9jRyrq(<8M_$U?>XlUX6F&}B17qzxxxGDP+ z=%g7%c<@e7&kEXG@_T+v%r41?%Tfvyh*F) z+MY|Yb5Dq^aJo})KsL}TF6MtW%eGO9oBjRy6#=g(W#FpVw+rak*D%BMS@z`r<#p95 zAXoQh-}NZi?E@)%>Zi7G%_jPUpgXp~O=wS~a<=JxSnr=1yuzsYNeRa==(A_fZhLxq z0O-)S&D9K|ME5s4kD+4+9aI~zD2{FiS__N1uiJ`*oNp|BlrTn!Ydy9~BpnYs-=C$I zS;hHGprE2Mad1$!0Ye7{hmd|NE+C5$xo325X#3jzo#aH6!_wy3@e@Fj;I#!;H#yu8YGDzwMzjYKD#zl6t=lk!n5tMA`by^^~@OQ4kuWyCvZ zPW&m>^2-~O)*>!%Xy^Q$T=O}~gTWgp7J|6!?kc$|h@t@t0sH#8IYo>hej4~F%uxveDmEo{YF+}}D{ z+~9aUTc~byTHva-!dFn}O?spC;cy7sc877)#H>tyG)^b&jgqO7Fx2ZxTbKeT#t;q3 zV@0Z`7r%06REgV9zMSQ1eb3|oZ+93T38efx%GOw7^w4E>B}&;OSvf5(@HyY{2b z(yOEVpj)cyHgN+FJ_(Ue0pqMG_poz8jHzI|w!{!jgv)RL*DJRy&#>;^IPMMz~N+XzcBww2N17(+#oNaH@Gc zslGIfIRnoYd3~my=GO%%_D4ZR#cODZdR^RtrE+NC`)L}3;Ox0j^6=#={9a+4OS5j* zTd_>{pY7vyRzqupIWCdGk9VsAf&M>$^k-pEO&N+PXTGCD-veEK5(<;W`r0$m>=&%< z=JwwqZD^F#Ml{7AU)sz75KW{l%Rxg~yXK8WmLx=wTtymjm*0V7Q(ftNWD0L64P|(= z%^w*>G~Z{D`*n_;)|c@J(+U5Kv$3|cWFe*<_%tw)E6r~iw#Gk*F}&z^56aE@Xs3wL z<~Rr!c&h^Ia#>|)YL)~b8+XJG^m**zRL)FEMuGHxaVt~Wi0(gDkdn` zR)2FTS;#4`Wgbrs+bo)bG?q~w?x#^PY zJBwUluhLsdcAg((s~tO{TQC!-&FlaCvHHsTxu9`VzDfWlB%<&WP`Z-@O5z3X`rzAb zW0#pljL{V;zrR+AvKZ~&+V{2qCD73LKujuC`94TnZV2>i8R&3(_bE>72S2mbuRGn+ zY35JcM=6A0>HDZW<8s@tDa|{2_J-&WJy1eCLqu$|q}%)^Y_quI?XobRWBKu7+8%t5 z_Npy4IcUL9^n2cBGGoU%tFRh4P6*=5|5QfAz&xV}L!K_XJhWwHS?c z&IEziO#YQPr>CdbJgTg7(|}QM6_5qAYbuR;+9@Zg2aXuhK`#`(9qg)FlJQk2Z;xUi zd-1Yy5Wpy8a>SKe<#VFlpL1;-uJiG^f>l;J#YapQ=;>Dcz#ac=^HIxq6)QJ))24Ya zBQ5=sASvUGqNW+so2&(SqFL>+m$k#cQMv#N9i))FLMkm?3X?`PtwBYY%8H>QmyW*b zI_C685z_qHJ`28AtB|%(bCd?6Z4!edRX*1A_=o6S(UQ9-s&n;mP@?V>?~ve^FJIg} zTb<8HV}45%z&2UJg*%%bzm~)~U+Z3K%FAxj;TxfmD7ykqBd3%W`L!-nTAit_Q!*hW z-qfgFMCIr^R3~lso_uqgMZk{Q*(sfi44-sCdrbdQavAnUtH-6uv_Gh;_$F6ESWOba2%W!_KXl*7h#Y=2AKda&?D64`w9--!Fv3!K)k>WfPeewm{!cy969A{_SwX4kn8T@KBu;!=OYS3Mk z0_@=|@XAw;!LOn2uCS(tKLkB`(}-&KC`)C7O+%QX1V9Z9Xdl3cij>VuVV5g&{d;yn zSWosgcXqIMflEeC4t$FdiN$FO$u;fN(l*6KkI*5CX*dR)ghB^qX`CF)(aKMg7?m5e zVFm@;?v(-$T;oSTZui0rO)?VHrpbZ2Y_o)SzIa*tNq&UqKxM6N@kfsYdFH{+|yZCA~KoG6` zGHKU(@6T>jdA1*C5}EMZi9yG2asIn9@11|8PPMoTT`u`2uca`Ha~KdQ!-?czjl z`rT&7XYtp^oja=!%qV2{nmMTYeoHO$t4FL83u3`F-)@5w$ z30$+^;7Lh`ak606U@yJoq##|^9*Ydzphq>N+-+p%*2rGHJ6fq)?Mr^sgOBi%0xege zB0m2_N6N20!hVY72S4ynI8#&85apFNdM{I7`tAGT;V31g=0rI={->8Cs=?#+Q~W~9 zgRC~7!(cJoWd^zo-y{}P4KV`TM$b|jG71XfBq`N*k~X@y-(QkvV>mXH|A4yFPSHhZ zumIzTACvcJ7=)Z{PHk?@&isEuRe~|3Y7iiZxIHS=wc9&Cm>U(CYmzB$8V4%$sh&A) zky2=Oyu8L;WFDty?>qDIx`K$JzoAjErtF8DzftF}RX^v&D`q?JnNnb4x@s7q87fH( z4tnUt%D3LA4eje=ftO}b>@6()9tPY;t@6zB0hv+~tZyO8zGPyt$ocEMS|A|B##YJt zy|3abavO31f)ejwn*wZE4n&m#nOa~#&T7g}hUFi6TQ!_b@fFYTcn#ZtYoo|_?(pDX zF9fhZ|E&7OIe8dzhqzc)#(SB9nxa7T!L&UvV+M4NPB}I=FR}eH^ILDiSF{?>F9{Pa zoL2b?E+NXgMiVY+Tx4yeTiWwHmX^QKD?Qihc8R#jYfdP12&zqWWkVT1-EoIf!&)#mQ0qtq$_{WpJjm<|PU%uFf;s68*O`E$c zHQ&p+y1G`KxSphldjGcQB56LFN7tS@N#Y_>P_*RYF{u5ud0%PV(o4TsrrP5~*7Ab16k z$80gjgl_?Y^qfA>#4(4EfbRFNlKOHIg$1~nlL=wG1~2>aw1d4vBv42H$1ZeoAVjiQ z*IwJ*MSo+~YCW<3{&2A>DU&BtPz*?LEp7&ydX5XVOHTCmG9hN3rxQ3jzO`3gRxn`Z z2D_K|t>^cvGJZEwPJ3?Aq{T_rol3^7_<7*e;_?hNT%Yge=15G+KKff01sJ;8Q|n!! z`~I^Y__l5+AF;SCi@KDSk-@}Dqvzp3{hjRd6g#bIy6utAObM^|g<-*cttuDG6EOukQ&}xD!y=dDT)vT>v%aUSB+(B! zSV?`woII6n20A>iY~8LfOM(SMsQT3Fr+T@VnLP#vGF^eAgo6F-zmMqEm4)#;2 z3ow_tx9LyHFo%d1zbKYW@9vg|`uOyRpkl5?F$DDpD*9Byl9P!mWadgVa@MES?8HeA zTSplR3rQJym@%rC>u_@l3~ah9-qbXVP6|I|!$<4GqIZMp`r$x8{3k>9DSb^Bj z_7yTY+}NcRoq$dXt^4n3Y*!sv%RKmAROTF^w6?L~IcPLF{&KmO{0)!CwTCyier4V0 zq?j0=g~Lj(6SOn-eUY@3Km4GQS4r1wf}Az^qh_E*dA07!t43A9n&RTk7M@Ys?*U_h zI$6Kz!W$QofF7~vxI1jEEX1JvorQ;(lzZ&>DOS^Q z%f$gvvmtR=ij)}LwBq1?8dh!gKoq~Xw;Pd`_Bxb?WEi7Q>Ixqp|M-XQtKRO%d)Gii zTe43Q?xDOAL4+<}*D(l=8fF=@Z3=6=k0ZIb4^A5fA28a^2)&1wXBG}WIoD%G{;;vc zWgTGrF)w8D%IKrPe$#DCq`;k7+&iw1r;$qL-oX=0Q)xr3j zERNfkQRv7~zV<;rc^~;l(EaD}@I9V?IVb55-Xi>$jf>Xp%|i7ajU>)iR-`D*FDRpd z$FFcR*;qo}@rTt+X1-1MESd~|B`&~;RquKF*3CC8l8)CuA`H}?X(%yZV#MD|tn3lZzF!`{ql9QdDgZt@2PVsi27sh^0*PX^^#qWGuGEqFL4YXi>$FXQe- zxZ>pjMXn#@!azyGfD+E_(D;yGh|;LIwweZ952)vA{GF9e$*qY2Q z*K5h*)qPb-^Ay1Pn~!grntSWLO+dLh8Nd#J&KcnZ4Gq(cIDS-FSyTg3>WBxsit2~K zK)u)c>x%55>?xz%{QQJ}+V=Uzn61RJX0k&Jkw6^FK!$VSYuj>U_waXs02h&AQV;4z zn_m`;f2Fz|d?znWnJVI4dtE~_GE#x4(a>@#blCgYHgpzPsEJ9CtaG!PLK4wksXR3d zzu`sWf3BVUngINNOnrk}VC@%eo@~1&+pfuzZQGb^+qP}nw(XjxnvBWrp6_>`=RWuR z1@C#e_gZVO9T1>JX<}|(x3IbeiFyv|tShqAar-N!1(&N2>BHaqr;@~CjyNwbFG5~kU7Kaz&o_p0)=;n6d!Fa?E!P<-&(7&j zZB{E!b==!|t!oHw~O1)~Ra=qzYZ|6-fp zWH*=PJk3k7r~`pf!zHC)C_Q+A8PlDShAWr_lKHY^fO?Sy)G|LrOse&64!6S2cK$WUB9I{wY<0~MV>ANy2tNdf_vcrZkRB$@^y1V{OuV#t zc>uQ;+IR68ynI@k2h;qiGM9f#peJWM^cn=YtwygAlzAMm^L~CG2sIx&UVA>-AoQqs z5EeSa10LO#mFE`*A+A4)VIUxk$imQo7CT2N>c7_;jDb56knWXtLAbiO6yyvQ?CNW1 zaG3yB*rqNB&d#m{2-155qO?`#ExFQ9J>GzIN+>a|p5K9N&DfsH zTo3SH=%sjI7Wm-^gkiN;0&gdRBLaKv&k$g&i9_X;l~PZg!OCTF4d-vl?EuUwM4G^r ztj?=T71($S`#^e9V5o-)qT_yn4&rlO<5r2~5*rh<@sr@@a9IJ%!7FKQL_NaHLuY?@%25TM*okZzmLNcwH#_|Pk_ETO2!MAMdyw%@ zl?T0dj`}vp`#Rj5TV*>p&7ibitF7EAg%!EyeV)H+Y~OdsAm@(>y$BBmRQhxl9OQR| zm~dLz*#_N&LxZs;iU?A=Lh*UtQvv*$H4_gHY(heU>sKf95DozWc!(IP0tbf>pkjht zJ16Xd_|tOU%B=4JLZ{cAxpwgF+fSi8$djwC>)g9JDjtg5{H1}El%%Nhvi0}9k)5DG zZF`iG&9w@i43GnGBTNeT z`1pv)*%8o9G1lpqGfin0Pz|v9yUi{!!=)vHZX>l$@UWM0r5zokqV4kX7?*H^7F=1= z;CKPOJhU)@%zxra)npN6>o9g6@mz)fWG@ygh$2c_odbmX9VNC%dqP`EQQ=nt3r`~m z^Q`>ynRKi~I6C!iLot4tU>34ahXY}RtDe&_ew`s``AN!22w={_O0a9^i@G3|X~ep! zy5Im81OZ4wqzN^G=t0swxY*%Iwv;mRhb)GYAaynsAH` zaG286ja{IX^(iS}qXovc?E83)qs6ia7#OmHR<9r`T+6-hnb&Aryr)|i*Vjea7Ags# ztVb?w&{QU%#)~8(k%lVqER3UuL73Bu$pm<`lRx2-ug4{gYz~XeRT4NKr)TsIqOg7Qt`I*5!z!|%vAMWN9b6vK({=pW>E+M5vI#V0p@IvY<4G_a zGK!MGv^35D+zGp2xOGud=H=CurU>ux)JLkQr~OMb6BZ^${RR|3R3SKEP|{`JpLzfh z+tb}euII7>%jJG!TOIG5?UK+P71Mwq6J!pU2KgH^wCePomS&lifU0P?qYKree=|rMV`ToUguLaVdNaXka53zOqW*SHop(`pXIQWTxU=;Om zQ!rhnvPxZ8-K~y)dxm@V9s>O7wxOZNIzonk%#ns>)_nd(9t*-^nqy7}-2x;Z!}JxT zb5s16K9Y!Mw;CN@Ay$5o5h)OSg>_{$94~E`I>NRzw~CmUpyy3U+J}vnr)z+5FIIbI zBq=K`7)O+>RU=LB@Iz0-4}%%(K(RA9S&d8{DeM`f=D?kA--0P8aBZ3O>rDA`%f`cK zw|NXgV(C~mloXeWceoJ#drUxk-1aN&c|Gs>aIyUepfC!^XEge`kP6@O0^1X>Sww z`!{kCnu@|NDl)Rt@}o8{P9XwIHK}P+vtvPH<*1b=eT_zjtV=I91CZ)t2s1kmPmj#E z?e+Fy;`qXlLO+9bseZoF+D$TvxnSEZKK4iWs@6;av4u>{oNiJPk`tNmxl6EP8Qt$-ItPZT7FTDd z%0xr{`GNpBz^`|QX?b*}YSxEYA!7%hzo2jB8ro6Y3j;Ao=gQ}1>Az9hc~UsFHhq8s z@(UFF^lbw-h4s3gr8pxaW7YOFC*6j2et2`lT>5>5%bnkhSwgxVTd1n%IbHEvMyEI> z#rwDaM57W*5h4^-?OICJ?(3SMJlv`V^OP3{*6kKO-PJ}Eg6hlDlh$LIE4n*A{dPEK zwr>QOgq2S|{~@rE#U;vb73!5(aGlwqKSu>?seZbD56}5tQd}%#t{yiK%54kJAofQ_ z))XTQYZo+OGP0nkY03(XXVrbyv>zWEf7ssxT<=(IC6m31UMsqN{MVLEvu8TQ^y#3@ zdc#oGzy;X0FGmPRe7Oe&1YTa<2Ox_P7&W6~?0auqd0$XmVCDdy+ihwsKo#p45^@qs zP}!+zZ7Q47t6ap#!OLqm24t(aI31rfg;Hq{mL9}GHRjpy`Ty`L7bc8X&Qg%kQ71v? z0hNy_u7581<>^@nKm|bT`aJRLkkkfPLc_qVzWH{0dp8s7u#UG^-n7<<(hOdV00b1X!EQ53opsjakN&;FHEo(YCWsP^8t}Og z*4N)%y#+YIq)^iUqvR3m;<3Sp1`hHWM9(s9p2FihEVef%@J2U0s?}Oc%0xA+h8*d} z*+QeR(bVV&J3kiPiY9xM-m$hmJau8tT9v*pY1>A+|bYEo&)B`q2A;aQ)!?o8Ip3nfCft`YLO@exEPDXWN3A(WFUu9+t1=yk{<; z>;pTotgNjFTW@y{)Y*dT>GSqEH~)i%dhy!xn*jdaVQqP}A!4TyQtEj`xRxp?Ki&X8 z>sR&2xtm<`(#{O-8ip1lvOtcIzLue{?gSly{Chga|*}dVPK4DbTsmMa@nA{yyiVrad@1faC6XX@^Fl zbuqyERiz5K(d!f@OEGh@-i|Y;uDmAk+gt90_QxA!DYUS#FpRS;<$K}a@hnIxakDm_ zl$ja_8&wtx51rj-5FG5nRY3!q?PfDf-4=IBS6Np}Eq!YryBz4k*IQp&U9NeELBt7F zDN>mm+r{bWevdl`HTMkWd}Rk~@I22?0W%y9%%PF`$Hp6^^tcz+M<>QRma(Q0zhe}7 zB^k&myWBR@snkoG{>LP#k`Q_Rhh?YfDwkm0?YSm6FCuL*Zyz`NCq*b1bN9M!y^g>Q z=xt&K0imRaW@|vUn90*&0EI36Tl12An4HXLM>R_(xN5CBP*}2}chQ|o0)>WzIT65q(Cn3=?M{2s($UKxHq|Zdg8SFL2rARt-0R$3e|NE5z%`vND9M& z+xXmRslX8^7(eSW%?1Z{tYR~5F8IA+(ggz}=LE>xc0JP8H2>LM+pptm4>)UpFHQrB z$RD5orL8!8SjK<;*n-t7KMZ=knw1ec>4B=OEDMKij@fWpJI2Pv$O{NmX3`ngG^wMJ zE1e*ieS0PVH)o{yp<-!Sac_#*S+amgBw*7VO6A7*U(s6w*3u)KcXNDRM})DiN~D6G7^yzyL&8hy9xC0OBt z`0Dni*}@xRVlq%$q5o?D1s>( zSKFggIIB~ARNdy-wmqYOS+dn1@V};nghYApiWMqfBF++qY#fb(zgEY`#wY=i%O8Q( z^?hD~@X!yp%Qg#QGeRp_81}AYQLRYb*J)qB6X{X0)XWgiQS`iV5aY2Hjwdd=%|;wD zma79jRo$Pzr|S}7eOuk5R#whA?q+(8B<8&!ZEG#ULONRR>t6^K!IyH0fLTj)&2y?ILTlsB%93D?JHLiR!x7R{PSWEBCnYLh^1#J>R<)dam~O_j z_V0ANz`1*RRN22lg#`->8X&u~Xsmae!mS$Trbr^~Nz3UKBw+qEbw7{({Zc(iYaOFz zKQY7jYXf(2e;&x&8?OVHF5!wmJx;jbB)IqPe%eMVjpSPQ<5|>N#j+ahZ zkLf#RX%mIIf6QCz70YcJsU1lr86V{dFd-#TP>jL`t7V&;o1I>OGa|KG*X`RW7Lza9 z)!7wG6@H>9MF8*9by#DhRaYp`wwVv%H&3-1^PCeEc+McH?-3NBo`lJjEk6Qk41)_6 z9N1;rySlp21%HZ(-GNE!j1XaCbGg+$d>LQU_7`$1)qQO>o)a^fn ziGqB{pMog{_p^|T4tu}|)u3?Hl8 zRZrhj?pyBDCGk8N6BBe-A@{vNWNQW-AVUWF(*v5V_!TEIq*vEC2gehMxoI2RR(yMI zA(G=%p=ZA;h+R)2HjCjq!ThhFgk2wu-=PnE?SI7$cKSU@OMU~riw>d4X~AUQ9I7;f z#UW@?Lr?7 zJGCxOB7X@2T7oO_n|EGb9vr|?pW?)1S}Th2*se|3-Mby7B(4|8n(BBr5mVldsIG_f zWrcO+Uz%ATZ!b;U)p3bpR~u+=s5|V?jl4?YCip(zkWAQg}QaM9^R!dGQFLS;(x zcYBkhI#0jI0=*$sx~$4($17{9mb5yZPrsO!jK>kItgOBSQEN6ZBUu2ZY7`2-% z7E0l;81O|%Kc<>Qaa$JuQvjFO)uk;zUT*CVN1*xtE0GQEsHr;Ub-NmD#K@zikKn+w zFSt0&u-oHs%^1OSNl6!!#v@JEYj$sLCjD*>TSC@@7%PWb2G3}(pQxf>p3ZYz$kPs# zVcc^%2)Tgs$x~q&axlNdFqM@~kWB|KZh(OWl6l$zHHLyOm^&@j*XwDXD8>dRPx|j!A&BgL2=@NGF9|a8!jUJPU#5xAuPUk=B z5CrWkRPCQbNbZmy4N4RkRu-1j>;bO7oKrW>Wv9l?z+x~6veqYReHxed<`}8Kw7tAa zNRsTX2rti+q~o8LMg+Ayp`?_J#^cf%AgG4R#+*k^1N+zJ@_43apqn%nFOJT^zyC@N z7`MsuB~pw}DAZH_+4*;L{K%}NsH&#i328#Vvs-qG)_Q*A4?zj}M373@!E_{~l*4`Q z$Lj{b%;f}g?s=mPjdT)~2M`7Xh2oXel*AG82d-Fu%0~DELOYwxNtAs+TGJ*zn>456 zP29&6*tp{y5%`Jyc?V6jsxgmfMk{P@cLxA}S`Pgl&j<8>7MduhcUTOdp)hP}!b)0YZJLIPTO#He8y!rB!fkG56IGh?OgdJcrQLa1Cy4G^ zo@Q{8q3(+p=f`lHotuX|Brf50%jJrWem+U~**r254-Ze)C}1k3cVfS@+D3Hcwz8E}7~2;&54Dd*3e*`{^L*4=VBeR_LQfJ^fg`zS<3tPxY3P^wlMv zmp$#A)Hp7c$zcX>nSN|Cn|Z}kW)qJC5pzc(67c>t728}@RV6JcDM^5UtJmlI(OezQ z_DR6ydclQ`o=i2TP~fLv+#j*He3LLlLdDidTNe}t!>fKMzj=Bo#`Bqp7&z>?DfK<1cq&@Hl5DD)D4fJ>Gh^kScIC zCIt&8-gC0)lLPtUu(?sOW`A{b&yJ_NlLgyYQtm{Ec#@NqxKhqHZyf()qbB}5Q*TL}@itIG;y49cBlGq~?%nHsY& zP@LZub+8P%bimsJpS^% z)}Z^+9l1jApdqqTc^WI4+Z*-E>ACp4=ItR1fWg&s2h$A_VTq`~iD}p+Q1djCGmpUg z^ezVJV%^6;!`quqg*`%=Jf^p`luTG4^BS-vBf_KGe6+jD#nxjJPu32}%&aV5v$7HZ zt-idNXgQLcy7qX3V7pRwe$zb-OE3BpJkcv2vzSWDOvs}GUR^^O5NEHT%+1{u6dMZz zw6zcO75^h?Ys!!E{vI^2#R;;_=j~g}TibU&0OJ2+zY{0OrG_5q^y3?%u%bhT3Rq5d zYQgy3h0nc-UWo4Berjbizj64ef7{?;2>Jtd&End%1OWj70!K$jcdNC!Z!?!$ZHye9 zzryL<{nhxt^x6nrI{!&6Bp|}Wqz&`(a&_c?RkFJ_-Wvja*Jd!WTo7C)m@=kJ)azRt zpxCJuPd?tBzU}${ruedyw${e3Dv-lelP&fDZ0DIkc^!QNNFv>BMR6_bqaWrqmJO#S zXhr#dak!X||B=J3D6Mmu_-byf3}x$%tnV!vX*~T(O-`YWAR7YX?H}lKNw+Q?KkA{S zt`QW*g?NQ3EjLvy*=MKeHr<2UJ$(?k|5Ud(oX8yth4q{vJ8*E!*cMfztG3DX=^GJb zBDj{4&(G1-4e91Q#3yrFeE)p=`1gT0?9<)2^CgRwkg?%`jFu%q#Hq=&IPdQ0m^pHt z3l7q+@314&|5{MPj&Y4G4TU&FT9oxT;mpk`Un-a7i%bMpDwkvEkLl!RAU@)*=(6Cm zc_yw52?_ZE^xS0t_Ms2I)~0SMMgkypNA&J|XFZAmM~V|SLf*7+SgowSw8^3ul!#9G z=c1qhO;00JSOR6PB6-JzMdm|IUzZPU?SZ1|xMcD8waC)cX@7EE5vr-z+pxh6`TNfq z%-PxN&A>Ns9%rxo>%M=ZT@uAz$j~dtMGSq9%*M+Dt9C|Ba(PKjc-S~`Z}#e&%iTwx zqHdYVxq?|4Sumb;7DUg-KfI=7Lihiik-vJYhK{*dY5i62^NIxl@f&hsg*-R&a-3K) zpB-G3PaBHPXfpND*&SuLqf{=Pxd9YFR*Yuy@T1E2r%T6i>oHd`i?Iuf5^Qo+cp)Jn zkj5r|3+c66ZTkGaK2ZYY%gs$nH|Om-mldRc4_N!r&fVS4 zO${WXPiRj2-DLRtI?b+D+N~RyRk`Zv&C?}zAdAp5D;+j)_6GzaUyu>bKgeb~7sH)J zMMbGlPssspcP9255}^)ow+Og>f_X&IK<-D&UvSOD-H%)m?xN~%FrS^>`sw`%gSC8P zu~bV3mjFFuu{B|dR@>AH6+y(iC7u>tr4ESC=A+6`WWb^`L|HHp*o9J25jT3e^~sP1 z(G#I<^7C02FdXi(%h{z6AElt$yR{&lovpnxFfoA#T0uQG1gjhzQ&92V*xx){&t}N?2wnpBM&-XMP2^$oa1i4BL!(xM!ZM44qc* zH+P47!n0|11xkC$hHhyox$k`sS6pA)m@6@ApN2!o)kV4_i|g-!^xAy^FGP&*4x`oF zFYGQZLm3ZD*ep;`4ey|mcf^*9h&sbDfEu|lL4t9s#d@s``FK z2`8g1(N~y!&{&v+5q?cdrFAKfv}qH1`L%}gI(^m8!rbFti}=5Ic6>PO7Cc-uXR zAVWjNXLD*ju*$J_ex`+S(q1oF{H+8wZGDTz*E zXjRbK+GWjQVCTecFqhx!6YJb%7ZpAviLjm_ zOp+y}iliks`9ndento~V2H=p;@&Y)rX^@`1ke3z5?_!D23IzIvuQ1Z~j(_hoJ<|)@ znw{M(z>zF9R8YSA_w2xWE0dQbrfVLUrkx#AHYKNvboHA}`h{HqZMo&`x$fx)YwVWG- zhXOu9g$!(r7EK4E-TVv|$-ae0#*#0}=-LhR_6ik{JmW`GpJk3?SVpAe(MdmrrAlG` zW6;XlQq=z0_A;Lzg;x^F;kzq?M1YF9Qy@yiK~nJ(`DFNT8S8OfT1IjwJ2|0XvWh2Y zKmq#~39f`_M-gy!;>M{zYXX6`7Eo993ptFyH#y>Ar^Bgu&$O|Mn1ui>4cZcCqdG%P zFhyNWNZbrlilVT8Xeq0^Bx`bF1Je8BgM^I^jQt`bF`xz)Wgo2r67qMT5dB#uZZV3T zSnaO2bOv;@J7uiz$7}1Q7k_QX`6w3vWwka0Ng^^(bvS^)!O@;wwVgi6VBiqIz0Bzh z1Gpm%yT{d!`Y*W4X*2??wkf+sGD=v?1J#@X11ea?qM00ugu~fn7*7JgQ08bhgVp>p z0*w-pB*B*qXj*!WhfBpAA5m+>z9fp8e(^X@D%)I=LO!~RWGh*oiwE{0SNF8(Eh`cV zpL+FTV{#k4*Oav^Btz7f-^zc8rbOLbzR`+^fTV5(W@};dE=&Zs(9pn3Pf!0bZX22A z3>8$sluy3=Q#7_q=|tEdB_~Ih$?a;}VAARx?xzc8ZNeIxRoKN!FJ@%fJPYl0@ z_MMDPp!NCt$MEp*q{^?A_}y0ix9`RB^~=!W(i?$i0uX`z4|50wFbB4Lx&!kD(N~}| zbG_$`R%@^FuZ4L-O;Zds4MXx>GX@seQF&}6tDqGVxz=6pyB#xXr$;nhV%{1^G*yXEc%U8h_<_c5Fr4lF$-nQvoSf2Lz2OmNx^_GcfcfYB z@Pw*>w<>X1UE?GM+ff=_s67{Vw4&(wBoxaZvx@fFkIPG5ZvH@IVBnrBKJOj;-`PVC z_+-s-H_=42VE-RDVYAU#SF6+EsDvr{dbVQC(RU|N1g$q z&+Ee}=50zUNe+{i)}|Y+hwszQQ`f6jrb_{RjSV@jMUsP=td>Qh-TYIx5BTQh+QesF z%~ND&x75$vH^X{qSG(P)%K<$_kD;|W`AApsl5C>U#rV|K@z4*0PZllWK|W`0aXJrF-k!~B;3j7W|x+(6#o%Q3Q1{= z;p+-#ya3;~95=`w%oOv^dC%8Z^mx)24QXjSQ~cQ97iY0Nw+-vMoT2kKC##Jm#mTOF zRr&GACEx!mVPxd+V4&{8L`H8$x%LcYujOY*Af;(DzsbzFe4I* zLA(7I*Fw=UX&}M8cX~VnnWxM*Ep6@dj#QPSLoA6zHUfMCU+H^%-p+~E2K&C=uZ8*L zc1vS>qM+*|E*)j(39-nl!dn{P0CrY^^ZP^B7SeEWan)B=S}g$fQLTGG27sGj*s$uR z-TMh;wEikrAeyO!P*o;lth7C{xVWk`TEMnQM4QgnC*ta2)Y4xg(O9!X=4r!NQ@_!x zqolTR^@f36jSrETNKs|w`58jn0~Ja5^!Na7t&JCvZFy2pLNE*Ny?k60Rar@+jJt+H zI@j&ViXCk?5>F!HNgXT5dAbr^SXek1FTq$*SGV_avpyu#`;s^4PEcb8GYRV6VwrKy-Q_4S2uTl7fsdFDLxM+DCK zL0um`3oA<@nS`zlS}IDgip+M2_!elfJtePiI6{TXJHV>o=0u?63 z4HXY%au3fOjM%KI>-lb8hJcTWzTr|@XmFv&wzkuKFYv=1Qd88ZXJfyXsaMq zxyp(PF^*b-pl?XNLF)EUK?^(XmVncO=Z;um1yi7#4!|rL>FVxG0vZ1G2cXBkiXvZB zuhj|ZJZ(zU4geQPcQ<-^v z4IsPdx1_Hwh&VhDMh9pZy?(2OBSvz1C>{d`U-F><+7uogo3ySK8vGN0OF&#-+5dsr z*ZT*{?3>!zJq~YeRkb?I^!o@VIl{ZY{I?MF2iT!Z7gvibEA0P4dN~3x!ul%uQ0JKseU#-@i}b0S+aHbp9_IT{s_SN?9AxhOw*1o3`ebu$_=~)K9b} zhd})U;*@~(h1}|sgRoB`f;MLox`%c|#264-Jnc?@MH`)$n*t`UM;pGlJm0{$H(&(< zb9GrI0>^2&f(A}F48C=8=0qo#L`O%DnwyxI%w)1#&-^-4ABmEQwLN zW^$y^(KC70RdBVmByx2Jyx$>SyOm37YD9)RG(Fs33v++;t-N92Vlq6ulvh?r4QjEl zIB9*v=JezcTMON~)mp*3C>o@ssta437mL4Zp}V`k4RAI612e(-GqpI0TC3Z&%7*6z z9^lxA;XHPW16DKme}5}K_kz)xMX43{hi|v3tE=n4c8Aki9=Frq6F??%t5N;1Q)}-g z;wS}`q$74#6s1YDqY*kfN`PE}Vqj<);A#`gWOO)ghfnkF|DIv_yACqL_b2Iu`(=yX z%^c@$Ni4h656^?SHnH>(X^tBm;vL1I`Q6Pa>)25gPo7C>H=kxm+XUhiMN*ZqcvD$)+fZ2X**0M3@fBnKm7 zo%8-+2p)q@`@BEFk^V69DUqKyL{^&(x#Jj_y3p%Ma539*)N1buMCQ9~1o5vHMbS+O zZE1oz5)mkA@;=cU3LY-B01VOG2LyQP2IQ$G)|JXP9`9l3iM1X6o)RhgTi8g6p?9_u z)BNF5SrHL}>Cvp9tT5hTN(#5CJSQ0)K5SfE4y`e2-ICH0LG4RGS|DzR#Pv{L>b*t*t5P^t`s0|Evwi17g zs*a=Zxqy?2{UN;gh;o0vh9zm~hs|a|TwZ_jpCS!xkzZ*^;91;)JgwVx5Pp zWAUlPs?f#x{>DwFf7v_m@X5x8GVp`!=ev*k>kh+;J6zS*q%G8=-=E(nq%WRQR-SPi z*Nu+1{j0N>P)G#T%Wo3i!uZYRmYzs}+x+bY+xsjn2as||*<0w$!zZUm@RCGEMwa?M zZkTJ=0(y~9_hxKTpYv5)jrtojiVoPy@e}v)8Cq`?7&ebTy&yXWpG-H@+@o^UDn`|{ z1p#F0Sn%~|R)I><|In%x?yTrxgd1A&f)~Nee>ppXnqxh2M9^EtUsCdLd~_$>nY`lq z$p00aC4hnwf6fl~_YyKvs$9Ib4iO`7m(4aT&Mp>2Hz_Kqk(>x{*9jBy_QoF`7Uis( zNYWh`Gy*$0u>v>SZ8cUdgH2JzuuVAD){w4$2kP!#CJIEtN`J?{5V@BC7a4v%Y5n%j z&d%iIq*<+A&+B;>r+qHg`MSf)Ek?Q;XAtndMJ|4qmZH_C1LOC7cM?gDphFUDlo9m+ z$~D` zAZ#Np*Bed8bKN|w*zhIa5|@QELMMUh8G+sZhdS?cxiLn_vh%r|v7zv0P&}5H|5Z9p ziD*LC{HY|xqoOA7K>~gM41?y$VR^L{hR-bFNTMoGP*nEKj4CTXwk9Qp0L6TnmUqIx z+cO}njnVxDD$rh#33WpO8Xhq$KmHdqVvJ2wpz!w-^PA(Ldg1=HAK2aA?}~jFOBG+| zN0*EZzodmb#Kl@}EuSaCfLK2Her0_m#pikU24!eqXbK$gl!N>6ej~CKtm#cKRyoiW zkqUCdspo?OFD^ee#Z|=|DPbjF4qW^Fz(Rxo*yl#*!tUB|_K79f`^|n)d`1doCfQ%U z6x#XU3Z80+qM{9dJJ}OrgQBbP6NXeL^)b~_`CGQOBiWK3a8J`Dr}(Uzhx0n#4~8h&F!zMHC$xJd7^csi$X%qOvBZ+WApdX$C7g zG8!0@LvMGNz=Fhz!&Lu6LrV)}Hd7%?BRBX3AXL*5>A*oe@06wtm~we#vbp~GjaxUB z#aqB@F-3-lL)TPRYANaK_ucIeg>j0~f!sX*o2z$PvpY+K)h)L4FMA;k-&rMVT};wS z_D)?p346y+O=(e`Tj6^8P+$QmFDw<_G;2(=mVr#x%FN6(FyV`Bp14FcJA-_P?}6`?0F}1j7o6j>OXa#0R@E zh?eTP3*;K%^>lIIN8v#4A$^)CU5XqGIb$OtA}VWZ^&aWLT-@45H1|HBvwAnd6q#WH zG0)qBO{f^^EcS=A5P-J!GT9~QBhYCoe15MM*4kNw-1uAuzd_Cf+a!}Mk>>%R_<|ri zo~g@499O6j_6)>r>r=HvG%>nyQi>0YEU+t#GCeb+@aMe+{$i56dqia>EEf-tpsX!I z_76Y3-NtCGWK)d>x}X7r?i&R~#TVL*9TLe85c|DPxUQv-n>*%7sbY3EHW^e@)IaBE zXKGhlZT5_)r(Q8n0q38%0SXrJKw)b5OmXrAQcT~Y)TN<-a6$+F`HLiju%=oR zx68zgnwq*|sZ9P0jI#gfhwuAy0dP^?{iT0)A21q-;*#W|(Sn~n`imu`;tZB#PTjW2 z%IcK&&4;aI`2ldaWy!MO}%_D6gf-2ucZ`i0R}{eSDtWD*TTkMAh#*yysI4{m+(=H=$c$B~T= zj0}LV?-u{FD@gaR>GKH^2+{4?r~wl;?4mSUg4$md5n5W>tnKaX#1J?vyY^rE!r+Pf z`okJ~1boieEwLS7Xs>_98;WoeYO5;?wq}7d;(U#kxCpdn==_Od0VL$6t(D(p?a(|{ z#dDg9mJa1m%!&F02Uud#pG_o>x#$o2cK)2Ki&`oX-tw!RJ#lg{2r(ogkRBeUqTph} z<}tjX+wJwz*D>5N&W*FMX`}+vg}nof&+!h2h>NITW*OGg^C5aKQ1hRFgkl*!7Zn8w zvAiynfY%LW0L?v$2hbotl$q4?2=Pc1KW|gv#~IV z#?^Y7b-&MeP+{P&O$oUYU7tDD;xog{CH(+Y9}Tc-hR z$O3P7oQbm^2{KjGv>8B!o6CPEMZ3jn1vC2F56ab7yMxl1z?y5Ih9bYdym@0#Peo}o zmO#mriT``JX=7FvOQN}Bpat37;m$URLn&KdyuyYgd!rLgcRfRz(1zfbZ|0vA6|_EYM67p@DytCWsB}d=1-rh?03M zI2UsD`h+JMD>k^GMYu;VxSM{@?~6FwB~ThtXo`O*Ylc!xv0%eP9dM_38T14M$q*ZI6H02 zgOZ}M00~E2pUt?FGarz)QVSf_b))k2bPKA>r(NtGa`;PXS*}em#OLIYCm8B-z*jU`bK9%20bdmt^HW;8pPWr~bDO^Qs%ATsGNG zi6AKfICX`lg0AwLjGHYi!t(x8I#(Or;!0|=n;%5opXV^*-iXBlSWv$DXmIBW}p zl|V%`o9T@41kCd3MBqSt=c>T|yWt=}d6)b~?KZVgEU8lj70)ns%zciru=CjtJ*qo-q*w#1B#Rq)Pyr{!t&7M zCaltu((kAh{dja~bWKbFX@@6{P6vFEwEPT^8#jRiAi#tY(G!XEQ&3g)Nire2oma|A zPuDQOmcCkIN-aVkB^`aWdyCZ-6@)+$X?&TSo=7tCNgEW^l1hLt?N-{)9TdF`Bh!M#j!-y|c_hV2?iQHwzT zt*Gl?YSkMIgdR<$%?Y^Qo>H-)3yeYn!q@%M$$!qooPKG(e1QY zC`9-V4Su8*rb_S)Uv&eFnn>Rm40)E)-7i2mp5hr8XelX?C}x$$iCoTTtE@1@Ujv1O zJGJkki^>8|Hboqo9RL!$o4-wILXJb*S6?6kvMugCT)7Lxl&4>3q@)Nt9)zIMum@;pxX$ z@KOcCf*HuilU5@q835nkKRTOg^Edor(qvtJPY~&0!?6BviF}7-48(Kz>h=-{H1fV4 zx9pJ$j=ets=w(e6&`*p{Oi;%HUvpDamgsSE0d(ihaTEK0yD{07D&dfDIR}$B{$zij z8D~httopyy=RXk-ma&i9!6-s=pB8cY&G0CtPy#yA=?ONXaRSGEYI-7r`iGr{iAh_$ zxw4ZJtN_YJ&0M@!TQ0uxIJ3x{VBVmv$?fJ?G{N^%og#SQg<};Zs1pvTFt!qOGd>+7OVP%!c?}aD?H`jp9Gh%M`-^sow>kf{|`x+9fMq)5J z6OLdLfA=(2xBLXKfO7|_uSy`C+W$koY$Asy<1YcHtEIRxEy6?Dhg?{=A)*DVNj3pz zn>V^Ilc8#&(kvXoy7?mzfVFxU1`_j|qwyPMla153ajI>r4WGjeSx#B15Y!+kDSwvN z)&i}}>aY_~f+HJVQK<^m?VXF&ezv9YlsMl}*H)_74`RAjun z$_;)U8dEA{!Sn5(W%_>)H2>}nI93}{yn;0x37|&aCs}uRE$;309Rp0#?B|VWmtU`* z|Dh>p=ujBBGsNidWTK=`XM2YqGGSI=px{W)5+vJEp=}5|>v(q^+V}T=vMf9y60%_9 z=jcM}@`;X72wHh!0+G--{WKXHTQ)wc$*op|^ZDsH*sbzgKaZ&Uytx=H2W2{b>KqJD*=ZF;>8i z#TgxrF}5^1L*ta&cS3$oXZ7fZ9e@O?V5Mpw%FN!>8Iv-k!vRD;C?ke+m$saVz4N~f z)#L=wQ<6ngW!IdSCa5iyB#9xtgT+KSK6HEynb$Wrg!(>xy2_mhLx(p)@Hu#V0+7-2 z=r)LMZ=>?1b4pR-Sl#Pcx+RIVv~ zfEx5Pb+pzI(9}5qm|k~XT^$zBt<1?qhrh{;M0(f({Ak~a9F|+we`oSvw_D*?><%e7 z^Q(o6%Y#F)*DzD6Y8W6%LCn%b3TC+a@o|scYP%=NVHC(;Og&KF>8izQ`RzsOr)a~2 zuKIhNC0A1CTk~bPwyuVXR3gqCy9z^7|F!raFdR7qy3|+nTw-Kgw0K@`8Io^g<_B4@_l4{RCxW`&&1}DMv7_C zR3ab=`uvZkN2~(~-Q#R-Cl3BC)lv;VFR!-Pj&qLDSOW@vahm7wvrXOHrcC)i(4Y| znjw4T+OAPnR1{rGMn;5d#Z8&lN@Qdw8Q14UeZIeazkk8^{&*kn$GxxjYn^kR&*wSE zwk;OLa46tAt8GmIN>?!!-)16VY6bd`fx8Re^g1N3rhjXL57(Dzs#Gf8-`?@iq5(kN z;I2o7k6wIu!7D8H&9t_mzDhf9dp@Qr<1m+?=Bei9LaoyJCjmHpTvAjANo$_G^iS#Z zYXh_-4V_%t6Yo41KRr2S^{-KdV)E0{(l{6xW+rZ0)>GpbOag`ukN5hpVAM37VVg|; z88-!`4eH?0V%243Wm$?2W*eJbJXKeMcUMj9M#IkOmI7-)-K%`RLr&bCirJ|30{^Awsak$#x(B~q<8n-+p zC^J;;*h$fEIYVD(o1TJmCXYuOHSH8gWgY2jwO z%z_a>&ZwwZuV#Kg2bo{O`*)4unL`fGV&T!gt5nc_&DHh~(AL($@STa`SR#W?_G?~V zjQLlQ78X(LYkZ*muYUr-WFAFC1vh0TLCpo064(ZGTdoPQp675+WJgLy@!mX*I$Rb+{2OiF!S@zUR@fUd0Cf2#%j>P@klRAYz#CztKnBwZ4na@5ph4<+sxYH?G+d*bX4;mQY-LLt-J}o51Xms zJ+Urq{Kf59JsX%*VtILau(kD=JC##?=)tZQ@Wr|wah02C%yQ!>g^g{dLS~XUmE&OA zQmN-kl09}7ES7r)`T;d%yJKm=Y>?Z9&SgMcUrb88ts_%EbQtu#C-W|-uZ&O46t(lqLD{&E4Gl1IGP3zgw zaIrrel8yv*RD(i(j=yOX8mek)3h^L&h&vqA9@Bgrg)U_mUtPSpP;>rt0;pPl43*qE zpYWsSLvoOANnBixNDI`^Tgt#OUp)yNY{3& z?h60?ouyk3j*otmqkNT_JVKG=D)t0)oZ%f#P-~r$@vc^%bd67Hp-id=*e`*2-CV3X zR9Tvd#vn;k$!&0b+^9CTp#gD!`>R1wDL61392|zPfVVQzhn5*h-+i*{Nl%}G_5H0y zY_nhzN57;vU&DC15?ARZ)2n19mLo4S<22Oig^v3Q{tGK;71TJ;FRhG(g^&3x#BZX? zNK~E|aqax-W{W8B5SYO}XE#`S5J>uQ&r5|>$rMGfVS34xjndc+*1bB+#+63|unqiI z1YJtf8B-ZkHbu8^2b?kt&TxXpJS3%#+oR&^ABGc1V~-`kb+*mh01q)hgt^UHae!jD z8W(Y40>$vU0SqF=J=GnJqO7Ff^e zUGNGd)pAZA$@JA!pX$ssm&^E|O=8Pr&&686JI%H}s_8Alr+1lu$4ql0Po%E!neC)} zkBDg7#7N3Kd-3Id;C!4tCJM8v-}1o?QuFm|zFjXC+>S4A4_ndI({pt!4NXW)OqBWA zP9@|gFcA7>c$m;e=sVd}4oyUb66{RjCmxO8hieTUUtXBodQ3G18fx}kl9lBw@u;Gp zU(ys3N}akV{-Fx``a;^|9ktZk&uTE+aBfw5P?S_DP)pN$^SG0myD&)|n20ROKcp8j zaL;_#*ym|~uFjn)>3YN{NAaw@oO&~UGu-~RIwE`+-kjvN;|yf8TTM;M*o`N^o1JXz z^BvN8#BR0jbcFuI|95on0(4H)BAnhFc<#WB&CN~C;Hp5Nf2isjm^LpOH^VefG_GIa zILD%2s$*kvw+_&$&v9_x0Lci5sBw0hS}~%SlP6FXPkJQK8;x}Uu*X>x9VC< zlw*5r0>>Fn)izGu9^ILFY`O+aW>O3Fky8s^k`>5x2km-0TPa>*m1P+I^<$fz`LIlj z7Pc^?;pD;w959W*df{yOE(NLILHGWv=H{EVzwipbCQz_4il38dim59xNK}}%0Lwe z1jwPVO3rd5|7bOBQs=!?F501KWg2VgfVBKmQCZA!@@dZb=0?+_AGfGQT$HWVZLdh+?aLsFvtMwu zdJpcIZEcmw(^KWp?K_HEt-oB|T+tH znUPCTlhY8ZW^g2tfe-Ap7;9}ZFd^cceklSaDJs~aoxV6Xw`KTLGA2elGP{n)%4*C3X`M+S$#~1;sk{|y z{%fbJe&fRy_AalZF$J-}RZ>d27I7CiT4_2=0$ro-29<;WzCDqZzxRoQ5a+zcpov0m z4+vFA{VG2X?XR6icY+{f+FuKMhGtry@tQ6(y+$a#U?!@*%v z?2l1K));_C8}aegek&swfj+Yh1}~6_Cv#rjeb0Zq7IABaE71kdkz)kMAGVfCkc z-Cx{TvjKVx`WP9t-@sI3_>|}+TVp^@TLi3ASY*(Wc>uCl1nAn*CS{#px^gG9^0gv2`PYp?qE67X6Cx93 zt6pNN9UNVtc50Sun{69_S+;izMcTSSwuefdIIJkRg+j6gK3u!Z4tnG?da_kxsF>1m zrHI_8NVGk^wR@C=jAm6bS1SG7_^>bMoemkI_?LZ+eMkl%7f_19hF`hFj#AEZ{fv4Z z8{6ePPVc;$TNDvhud0(M^y+a6?BqHH5#kxyxacMKvrju8>eV$Tf+K7j?+*_idb=87 zT(QTNK$CyNjLd37_ZV?J&rbruA!#c^R&e%jdUtT6?m#y)?kJF9MJ zU$k~IH)ZpK=4xlGpyqwJZVnG0P&N9T`V8G#krHWxHT7Ur0B-GfzDg7a>ezet&q&Ce zjwOkk9zzUWciS5J*v0n~dnL{al!SWE~!PQ(z7(z8Yyl#}9Mu9|$&GakMs2qoo! zJ!1`#s^WvL!xTu5{Bq-qn4J-UA-9@uoGeVl0}`Wf`BZ~!G$H2AOI8*LgxEh4J`V5v zy{rld@A{ajX>E&2E0YvVk|Z!Vcd^WqAYaz7lgs6O5k*3ttN6cRLDZo~E%PCR-0ISR z6X;OKeE74y=&6WYvpY*iL*UPVffPAfm%e;xoTgEp3bmWnX5GMUXpYRf6EXh#b7Qj` zWFRXA1;pEzymVkW6aJqzc4^hp?vj^$>0(-9y?3d+q#_x=2Wx$IS2rL7k&Wh*k%~F! z1573I6VRnXJL^9^rRK#HwErHp>Wo4Up8x%%rN-&+@+CpO?$dqe8vn^CXlrX5%pq~Y zSS|o@aKSmJP;Kv|t%O&$)3cT5Wsj157AFLH=Ed!ASP%mnD7&hye$hF5WOlk-qK5ho zI@v(~Qj~L{8&27|duCc}q0BH^FI%FgwpV|GN1UQ6>^B}c4ENw9Q~(VW6|}|En$cxk zvYHHP{QzVw{`2_&2}yaI&stkMs^`m>FF;A{+`0UvqOSNC{>0_hPLWqL^l&Vv+*!j1 z=TQh95$24tR1A(Q9@Zwg#~JBIKg)@dNcHB?$sXg5)E|aRAG%5pumOkP0XXZ@JcRbP z0c`*;l}T)KuS$Eqc=l{h@$Br<(vo3&7zUFCeXp$a&fy51^3T>J(S`5-Q0P`Ff)=x~ zvHghriljbi;&V@k=bZ#V4u3y>KPzl)1q553xap$4@;cu*9qVPf!spGj@s=U>`A-*64U=sInbaa%n?nCG0*i`4hX%*!tJ%0?td7OLlmvd;gKZSvfhmCu`$xR%~U1-$6eJpJ|@jr|qZ(H}G5s z)@6QY?xUWuvDr8uVt1FCBW#aNb9?!J;it`eSRPfsr-`s8GvL?63I*xRX+obPm%>!*Arc7F{B z=MDz<*NX11G#+exUzRf%8fE6ncX;>|D2vH&=-!km2GYoTLgH0-@NhaU@oi^%sY`Ov z5h5beUVT6v5k*Q3X$2%d91o8KF%^g>LW@c_a zEdUC4Wh)THf^sfAp>*vUuZ&x@En%*He&(VNSH7(z+x%d@4{%Sbqjfo;g5qPIb9cW@ zvJL4gFS<_Ym6fR=6Em1^Q|Ezy1+IoyqT=EO>Ng+&BbYGkmg>AwJZ;+YeMIR?%HMbW zMyg?Al6rPI$h9PPXCw!O%YnILwH8ccS1I<@NU0t1JB8eK;Bpno1p&yAJeqJsBo4Rsp2ElLQ z_}f+Q2&649FMk6^{d4!dxz>oY(xUuNyV4(b4lr5xswH&BY$Vo;3)doDe*_5 zH%jsM`ZPUoR)qTLqv(hq1FUP#G;G1(NB$*dxbW<#`3P@?;;_gu4>IGg=LRx_NEr>b zgdSwU4)*o}Ov#Z)`@b63_-uNh3t`GU`@1X91m*MW>>rBSV;jc(F5(XNz?D}%$-&HIo)m~9{!a&d?*ii|tgV?g+@&i(IoOKiil+*`T~ zchnGsp?RCvfQaa4aXr%SVl)0u{3_jEXr|PZPw0^$UAUvfPyYf&^3B&2l)H*VZr4$% zvd6@U|8q8Jz7zXDzEu>_n5D_luB9v@Dhe^K{bk=#gLf173ZyTT7V;KS-oq5j`UI*xh7%5wu#B!Hm5v~(AuZ9(>*#1ordenKCy{cpc~VOW zDG{e%zr$ge|Bpg4HC~E`4jWN4X0s$R-K``oz5NnAc6R1CG7cguQ>3TQ02G@!uX7{J z(;TleaH(^Rh3Nl3|K|*Z{A?qp1W$w)9# - - + + + + + + + + diff --git a/resources/profiles/Snapmaker/Snapmaker A350 BKit_cover.png b/resources/profiles/Snapmaker/Snapmaker A350 BKit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4da5e16250c80aa6a1016bbc3397d933fe751a GIT binary patch literal 212102 zcmeFZWlUUc6fQaxFYXj~9iX_odvW(tthhTxibL_@#jUv8;9eLUio3fzXZXJFW zXabvtJW}1qx2Q6qRi!R$r~(qn^pVzxVU=z8U`8I|6l$$tw4au zFXk)mCfCDR#hU>x@79GCF8TsP>!=UA>Ce7IMo<8N_RGA@LvVYc^1PAz{VHj7qxA7< z?9qI+8D0!JD`vCyZrz0Ft29-w}J z!B~7+EA{|IgaWybK8`*Hxq%yQaC37QCIby%)`l9D{MP?d_>){a1}P~35Fokb=lw_* zfeHmEqA*b6f4oTPczV7WcyY!EX5h^>K4`lM*tzszenz+xCqJ#u(w(r%QeZ4uE#f z+&5~9EN%={?lJl@&GOvp>S|a)x7U|vo`Bsw_JeCK4`Md9(g11ZJmHy9%n;oZZmr5;< zC#{aZ@y_{Qt7CnmKsWW3On1Egx9;aKM|I60hH$uN8R+0KWysyiu=aAxG#h>1n5Qb=%sv*NWB?OsMltXtZ(rr+)jj zUqA|A!$Zgiq{_MW6IUJ{c^KTypx#U0+hzAak1vKdH7S|s<)Gt+ML4Odt{RL9`ztei zfN@AQHpO^$*FaU92^4xSjP%rxFAg_Aj&`^V{&NA#$-5%|hoX3EXPWH&eV^H9tRiT5 z)bSoP;V3jyt4_w^MMr$dh6`ETb$2P=;U~jo5OjK`7GaLiJ`%F1P>!x0t;-@HQN?^p z7S0xpQ*^LfC)&C1W#8oh!x!I_$%Q3-GDH&X>=?n z5)(E?mOqc}{`0B-E8?yHb(xW1i3chcS(g6y?oYU5+0RE7j-ObN(L>-M;=9zz?shZP zD_!-p_AT2U*r20OMMiho(AXaRas+-sR@ti!?qgH7?wkyuW$U=)?_fXk;aNtc6q-W9 zmB@k8Hpu`}bhkR*r3eGz;Fv`7=27%z&W49+h0epXt|H08{yIV@Nd8Lnf{u9yIp5*~ z_?J>dFG$dapp(!%SAag?ybkJ2n(RAfe26nyLy}WaU*#>x0y_rr!s9yWVkzoa@iz30g=QHD9kP01<%wh zd_AqU5%!VJ34}gRAC#VPW;@>dO-+BEbzLD6&@7V>ISNOdC+hHR5e!+Ju~tD+B%#8# z?B{{+!aYCc{2B%do<1ZRNOT{bRqqME9S(bVB}LGYWiK??z#DCc=a*q!1GK z6Eh4?HV=N#x!YIC{xL)(9P1|mpy`9;23d6vH*R=W`MOK*92t}s8&tdbNHSK8l?M|j zI~MGdjk5}_?Bf<<&Y1J&yRm+TiEK=0MXzkoX zzatvj%DxQu!j%tN=^2tZ^9kh07dtx~#VbJWKGzSk%pyWgBRi|+`AZeLx|r%iQpERt z{rX|b_s*4v4U`z6q&#bWrfvuZSe7@g(*YdToyXL8qF5U@s*HH5=J)V~fr&f=*9!DV z!{e^8mr2ccQLnQsGU5wT!azfvBV-1%lv?l6uZa$LMdhZ`oKOB(fGN6hTg^!ZnKw=q`1Omio{XFqbEQZaE{k|mT1Vaac+V2GxkRg1_MjkEAm z91|p_0^JMY?f`cl)wsnBubO2Ld33Hg>OyvIXR{kRB}0oa$1f$Db{XrC3~)RHT`Hz@ zl=>kXM>v8D+N{cm~GiXO%`2mKy$SyIK5NX;3X>UqVa19(2YvuW>l%(4g=$-R2 zXwq6hmb-h%hJS+*z>dH9qYwcA!|`R85fN7$iD_?xj=1O}a5|F=p?wMm9F+XRo9o#U zoU!*3b~c2MZM%Ex({gs`$S2Ng>iv8@H*%OY>d61WBHj!AqH!bvMyTH>Y6q+5IpOCS zZ`KJFgM!EdE&Fc#eGBsU%~0l`H3ef~OCngv{6bmzNgMI-iSCiY#>eiyrpsl719s*J z5*fV;b324tJcY!z+L3oHvMbhDkZxZRLm^XP7o>Ssal6SSx%!LBN7F`J^gCn!cGo9j z_vPt|?TP!v5cTj93XeqF9M;&}K}es+!Lhm1`20MC#mB_haV530FK{=WJsgM{p_CmC zX?1T+2E#5#Z9{eKYb;_%$9C^fud^{|j{|_e3D9mn@+5EI zIXO-9;4(cQwfDP(byR>u+zXkBf${g=%cuQax0#Fs z*pODx$7vympc8X01WMYNH*I*L*$GbsSM$_ommh4UXA(nD(`lj=X~M&Y>@}8TsLw@r zz18^*dPG;ixq^Mw!)eCo(@3rtx#y{|d6yXx#3Vpe3MD)NUJ6pw>SOyVzo-J}*w&uk z!ZQ!(BJ_F>M!O1u+fCk1Yw1a7cgk7waf`ZL@n!*;0nCU1Yi%5=sUnm~NJzNg=bNv8 zn$LK$DvzD!Sz^MRrXA4RfM~2R^HPXX9>R7mC62{(j#%3H_y0--&qW67dS`O3J80(x-G@(w{53Ta+{Ys^PrZ-sa#qkJqK zTJAJ7Ascs8Ukr4G3zus^Z5u~GC4LU6AtxmWV3RA6 zcEpCD5knU@2ttqi(eK#BDx-ipwPQPeh{AsB_DN30f8=l~1ZirxaXT%v{pY}EUIkpZ zzibze?Ymjt4p4w^27Xb{5Y&NY{{4lT=m81IZE4Sfyu1SZojp1*JAB>@Y9_nJVK>t~ z>)ggEIN7MtN3WuSLqPQ4w14n)SHU?bMV^_r2p(lP^vj6UmN+!njp*H*V136yHtL6% zw>3DLpx(WYgi6T6vO)<@dd%%@qtb_M&dyLd=;=P5+fWOsdxl(lB z3yZ}0@;KDH{Oe}g9D{w&*OC11P*y_h2hyS!GtSjZCfXfuG+@+y)1O$c%YvHW76<30?$CM;sTB}i zUw{^BcxpFSiAD|I)eu>Y&3ik9<9{Je+RdB)*4Sa!GvHv-Y5Jq@@)yyBN$0!7ka;p` zRM6>XF6XvNpxi^qN8ugyN7CHb=UBmn;x!2T=DyCa&Qyr10T|hx zS@7&V4s_p~w4NGH4`Gnz`Bjevi>W*KnVeei7Yc?^LUj(4^MWg1ReWGZNMjnDu&{7Z zcI5;@=eENZQ@NB)*8jv3CQAFZm8u%8n=d}I# zemruYxqASoyeEZOuH?}H8=$SDKDHZ4`M%w!53@+>?AI8#VGT*)?q!JtN2JaQnxT-e z&U9*{Ne-z#3mmU!hAb6_i_n&UA?^w-GXWV-Y9f;`3xa`!F<4Zl9}obdXFEsuRWvN9JO&cU~h zR?V9%!=csMOQA4^`eO({5PNt7ySrHsUw7N64ljp$V-upCBD!7>n5FgNY5>Vlx2N;f zn{yC&rR_;2Z$kUq;|1UY!SAWa2OGE3YRc=K0R>~sV#H`~&0z5dttL?+GD`q}YCI@r zIZ6aU8S-u?OW{H9lle&3tC2#XASmQ=SR75zg_I!`O53k$5vItv>asVL>lR=A>mX=i za2r?UX6}YId07egr_GvfEH|ROo?DVyJ0J?MXdmb1~;H(o- zWox|n`!WX)F=dlouzIX$CQ|D52@(pk&-qvTO0fetfCy7xW?&ec@qK5m2Z%Y?;vM(8 zCxlpvfqqYx1qG1La-lz&UTOEH<+5A4Gk;{%Ta4Z`duP1gjbha_<8tO}h(P4|Wp!7n zDCoZjNa_>aQR6HD$#_fDu}Fx@jnrQL?lOS4#vt^>1mL#}59a90SjOQW&&lmU4sU^4 z2MBY3U{RG1FH=Cm+TVt_@c~eE1jA8lyV!8<*7|JXP3|o$#P-H1hzP7|Rn7^w_&&OE z+`j_=m7$2|TU-zMk7CiVawi})z6YE}JjR{+-L_`;LVo{|ZpmpKWCyRvAPc+} zh&v9YbXbK4^8Wo(O5zPL1hc=fJ1*xK`|k6LgvYQLD{uWP1vqCUP&Kc z8S85_rG{wMojCW7$7RyaiFc5>;7Y-U0s@disbu@hMONJ2Lq$WwLM~^FdPIuin(H4=zcY{pub zSFRonRy~MQ6O8lCdVDi-!U1_`kQT23HCF&YXx;Kzk9ev@-2Hu}zbA{e#L^^?dpsEV z4sX3e%Kv=;|6c!Jy9WeB69Yy9r1DrN_FaUWN{@l||epHfp}zyG69mbrWERy1X$ ztgO5kI@SqT>pZo+8Ndznwt`!-^#T=Q*R-ap9LuVbD=w zx}EHa|C%!Q^KHlLgFHjh`wwOj(TNe(7!dVA#dM!zTYr`AZueN83ilZJ{#I{@lxM z>wZ68`(32)^OSJ=qJa*^FDaP3-{qe=yoM` zfn6=q!ENJj)fTm_KbmQ>zxChm#f!)Dk8FQ$k}8*^Ab|*=?c$BK*XrYnckAsl>Tq_^(sTpic|iE3 z17!V*@Fqm)hf?j5^0bNaRS^?D8Z35I@s+bNaST+)Zvy1Lcc>*-3$U@qq7tqtpT zL**J^*~LYfueLS(?_N~565_phFJG$a^vh2v3!=&&5(xQ!GB7O`hPSh<)2VTfwDN&D zVw<9f)stq^UX_mRil)+@@0$g79n`Yw7c+T5uC*tB&hrK=I-WC+%OPG{4m3;KS@%h5 zYRTjI4D8xc6~rVBR}byq3ZD1IGH?68j;{KI+#LO7iZijr!~kPccDHama|$}I^)f8l zHOdSBZBF2_UlF6Ebk+5rki77~*x2d4cWN7f+5QSQw%gN_#8!hS-I49F5n49|n#~gQ zK8h@JEz_!8VdLd(#>%FH$hergIW=gXnEz#8BUboj`f-w@{He#Cr0tyW_4%}Nvp`#j zNb^44H2mvpt^Xhc$wcSn2xnAw-l=8mtM$NIEcY{f-$|_}ju_Yq`BYEVfQ-wBMQ%sF*QAYrt>-3KM zm017F^i{6ayZ+S^qxP12yv0U)@R% zdAmm|yA~ZE;E^nq2oCP={N<{c(KKA5kPx{n%s?2{qWiK~! zPIV+=MI)&+O0u8!!v&@_euf8PvNM+F{q?Tj$?pDmj@ea(`!nBmi#%z|ZO>Js|0B)^ z4$rgAt{+qgpH1!Zk*nnHE!d&q7SD7GseYH-rL$daB`9k{35&kotonJ(*cdwR(rQ+c z6hP!$S&7aZ^o3h6qLK~JW3t>5<8{I-ghZd!W72&%$*3-1?@c>gm`G}CX=gVk+>dDe z(kMSA^TgF6O*V4<&2nw)QG&HxZl9>HKHr{Sp$-aQ94Di>K={J_y7QcV9N@YM0W|yJ zq=FF9YSfGHmJqo7lt9OgiK?x%z0_anvn_vx_IjqsUmP~+;@ozUZPagM)V1;bCABBUAJ%t=%y0-O*|ueBO*oo zU*TWx2qD-gvvJ!q1ww6w9v_ohe*KD5{cDG{pUIP95`-!AQ3y1E$aGl2gkP~h;VCm+T)~$BkZoH)Y zW&|O$z(+TcVIHIAsi6(Bfd*xhPjc}QMw+fkXWQFT(2ut&SH1g5>26(zGL4^o!zt7!u65zk%V6+&V;m8 zd*+$_e3gou$Zi_nadML%_J+ZAx!sVTCxc~>KK*MVKUou%V;Oi+uL|mu)YP$r1F&J>_AG^K<$CnL#>dC_8Tv`qYh6o;Rb8P zN_DMiZ;bOxd!IB&;Em@u&$@Yt^=)s485TTqj1+CPN6}N$#mz#I``z}e(+R~jYOX%w zDNGHi`lCK~#GF>apu6tUT*9o1*TzQDv|I)PltaZ}4Tkwv&3O73&f+E(rEK{UVu|*U zuI)03SVaS{Qv!>KlA2YGSmCXol4yEHM!s&lVVe{726TnwOZnOq1ok29!K#$gEGy}$ z7{1^AUZ6}r%nDsLx4CMNUlK-vgF&q!Aa*VE{d7%cvOjuGThyQ+HTA4&=8hKCD@bb8rg2Fok23G#E>9Y5s(x-oMEHIv zLA`8tzqG6($Mul8VdK7u_+#u;l9r(@>`lc+QjiEK$6!lfAGVP>;Cqio3M7bhA6Ze{ zxaeGcd~*eu0C5Uu)AyBSPTDn2PvnK3eS-jZn5$H^@02#RNbL#y1det($II-_Og#KrQu)b(n!h%_fc zFqGS_ZFYtU-*9NS+<4nYf|*grN*BjH$|Bo4z5;Zii!r}+mOo`R#qzRoSZrvknsk|V ze5pS9{`t}@cAW8~DUv}pq{TDk%aK{*QqwnvB>gUU*mHH*%~@I~>*5N}ZzD}qbk zvH7>d`Jw+wB}k^@#^yEtOX04>C+9ZfNAA~`S>d}Lw9PmF1YwU|x}>gblkY2e+C7NO zgSUI@&qpuVI(ZhL@Qnod^5OQu%a~YOdUJ+kL(gJ|f2B>6>SS+5OV=`LEDL<%ogmHKM`!3n2Lodj8&&QPMWqtCHc5QjH*FSB{A_GA zA^r+QQ@JVaS4DgA*IF$|0Y=k&UY`T)TF(2PK5G_(C#J7BmfaSkd%KrEt!A`raj#~L z?EP5w`}{e$bmqNlO@p4|rlm{T!y&Fa#UB(QMM#{TNHYs5RQ6)+bcsc-o<3RAybAc7 zxoA~e#Z{=)oAq;eB3rzC?{3SHfKX3S_+i4#i8SnZoneuJv7#<~33Xe;ln)WCq_(nEi#X~6GQ{#Le{08w|5cWcVB6%09kmiYpqK)IE*cVQGNoe{}T+28(ZF-GfP-rmJ7>(G&m$mlKtpxNJ*GJt=T-n7ji|^>x^VA1VMQZY zr9QS~D%*DlZ0U2X`>_4GpJGnv8HM1V`??8wJ-e_MxSOfmJVfr?$Yaw&RmqYe+}E~_ zn6Air#Z9m@xCo13)XX3q-37S_F#T13ARS}OD*lO=jvtPS;b5^ik#5=#8&nwYfsvIQ zCF)}wzyVR35dXOSBiq!z+@US=^roCUDPgG=p@c?beyQjF^vk4mh$ zQOQXq_mSkXJ)_q$f2KGpQnC2#TfaNQhtX9J(sHAYezcnJSx*z}SHsyIGZAZDqwhxI z4$dB9{hLDlE)on}E=O77eK)&qE=IUioxdhlbiD9AwoF5rpMQ&{I*)skFpPv)S+8#6^q zpU!LU1vDq;a^957;$;zfSjn6Ii4CRJ&8K|csKln-A!Th|rd;VRsQeR;GS1Aqett4o!dOR@0w@-$x=Mw zvWX+%1rl{czB9yuasFV?g&t|WNtiRp#pb}L@>_1X%^))-9viu#guz`15mu_b`A<9V z?DlthlM?Mvs7ZII-9c=YiI$HE`*9o52M9jDpztwEWZO7gX^ZFe8QhN%G*c>i=$eZi zs=5>=CqLMke*2a0Kvg0T`~IDFb6CB{=%TzD4QwzCF6DO{MIR=H1I7&-wYcH+mXhQO z-U~hh?Q6*Cfw}5l1H|V#v69HjNep5kt599!YEwUl%Cv^nAbXH!ZIP&zshh7ca+_eB z&WRq6?2sdPlzZ!47EVrb$L3iQMI~uH00PJj*lVZ?wLi=?*JU&SWwG?H@SGE#x45y- zKDc+ZGE-f6G}``E8PMBG;=@md^~hiv@Kts6rz((7I%coG4J*uw_|l5=-)R=9vudTG z@k_i&I*?OQ*hhds+QBaNmW;`+z9SP66f*+pgeJPGMcc=3<0xU8LU^+i(|UL8G6Dmp z)CSnZADn{d@!&)D8c=aH;`eim&EPwK46;$v6R~Pg>Z8fw1$@kj&Yj6VXy!3(!pS!l zADY7x%I2m1V`Qzr{;Pu~M1wI2I|PH(HL|#}HV0h9B{{~vnlf*rlC@7E82pO=XBR?Y zLQ-SslXUCzqQOaLo>Cs^$&tI$jgg1pr`y>;Q!%R&m;8SbBGZ%UCPg6 z^`oOOSeEZK>rSlW$9vq|5s0ab7$BHweZZDO5}$CEVPE&JRa1^*Kc-n~7Hy>d2WyjA z)yKn=|2DnquV2MMDOViY)VL>-Cdp^3)Y3RopQrpaq%*bcNxQ?&V6Q_B_KY8N*3laH zLf=(5EF6`s_sAec0*nMPMI2vzl0fLJqFElk6*&*o;!C-}R2kwOuw3;C2P=hhrDwT( zZ2sQ+Sf~Bzf|EjFGHBbIjsw_IkTxGBnVS1e)$#`gI7dEOFM~B}`Me5v1= z&E2bP4Ro{#{f!#alaeElc2NsBRCxgSnC#`6a)tr}6h_Ac`Bd8k;dHv3_e8+dpNym- zF(D&TeH-Eof~4Ww1{9@feQs$qwEFN7N6~9XDs66I#_3J*g_+KEmFHx4|3SwR&O-y7 z6shGwY)XM@&WcMnE<=F)p`j6=H%OJa1e@XgwlPlMNR7@(Yk*{4G)08%pORY^mk07Jvs4Wp9mL{{r+P$*$$ z69)e^CCDj85*~j0W61 zyo~%BH3jUt(sM}s3!h5k>5Tg*7q}G>g{oASv^e&Y#!On&_h?zO^;5hOGsQ%`$-ys` z8{MK6KjN}0;tQEu3?e*2Prl5^y~9HVe3$sLq|W#IC3uEzqNVRB-Nj@`lpKpuTe-y_ zF9u(UCxPW7Gf>cU(bn4^=%%^NC_RC~Do~JbbN7qeD7&|x*;Ua{jFk=Pxk3~J64!=g zkfAdsw@z>VD2?dOZYn)EIkZYDYbR%S+)S#t45W_moM;1%U{J-t_3f#YIEoP=?v8{o zTOED^X_OW>R9 zyBw%oE;BgCQT)k0XJa^t{=PS~4rQA-P~orG$|oZRJW1{x3be(7U!IPr|59H_R2r!= zCbk=sr7oC>1%FM?;#+cx-IGoQ_M(5w?SD}E)AFq<{()!@lUdI7;++_KasQ_aa-_}Q zb-IqDhCab%N8>8xn&{u)jI~pcKS9WHVK-X#7I{9O=a)r9fjD3+=QxfcTCwI-B6w56(14{QViR= zj9A_q5%2CEX;$ff%PA`#_hYM&<8m*ZwodQfnk%yCfc|20&C$h)0^*A_7vHH^xSlcY*Bnp(%fNq%~O6P zAatg*Cf0>#J0VN9$$mH<+lsnPEP1}&EzW9FRdT5h_AOLE_6v{hmus2Y9e2OA&GMl&983xAy`6Y?tB568)%J1^MID;ZRG?Jx`6!qA+m~eV5$$V~w24A7t#v001Ykn1>0`Yt1 z?^{##PD}|-^c) zO2ee?g^=xPbK5`zpiw5F% zrwfl9ms@;b53v)?JRVpDRhGbyb7}9nQL!d7y^9vAnRA=y&V`z7^w*EpNphV3BT1SN zT=Gn6mcc@&ZP{2Fx_;NN{zC7Fb9wp~g!n9^C*^O_JrQ17rDQDTo7_>(&{ZCwN3opR=6UZlwye0h)j_DDTpxf zLcYW>K&xQctuc%!Arj8fur3n2#8l)^ev|I8HLZ!X4{*R2eSZ~`OBzJ#fk;mTKt4?C zvR20_6K)3ED+Qu_$ri3X;8jLyj0$e!ByQfJC8r+I0h>>>{%tjX*wv!O$`-ve+eKsH z90N7WllQy2WbKCg7pO`?4A`4Ok1DOO*xWqKO!#iJGcBZ~e$siou#U^r;aXgS7LEFO zQdJkWi3*!IS~Z<@1e6Lf)W92_RtdB&NT{>y64`{p~n z+z8d4c@lk$w>TtZSZ64)>K7@?H5#ke5py>ZZgq&6uTjWCj%`Sa@=nAlU(KXDKZ;S? zIczFKL=p4(d}hFfN)7h1Jyfs+_s;;C%4QrlYl_P0LDfOvvg8?9iB&Os^ zpznqRwdH2LvI#aco8U0lRnD%t&sUWSyxb_nw6p7DpMKK4TjGZa z*|0>6f0Xq-xg7{UB*OTYkX2KkN#fc z0y|e;NGpzV9P>FGny7h$+}11D>4OHp|^Kcq)dV@X#3;j`k958ZcYK z_u~n;LeizEUElHD%9lu9CUzg^4G6``Ef2^+=SI9#mQK^?_d)63$fpR2q(GxUp>(1b zb6ZK{NWt)ncuJwaQqgyAd`+EvM^6$bR3o0T+8=W zqC|5yHM8(}`DNr3ecY79m!l%)fr$!ZvHV9mStD*!dvAs0oM>R_LO3i!b6MSm=(8g; zbotnlv5wrM$eT;hCZm~uTAYZ+Xtacv@lpNH=ml-F;Hm39jC*v<1}7y8?_HDn$6GvE z@CK5a;fc(=9-~T_JJ$1hkS(#N7HZbnuFj4P`}?@D4p$eg&HpHQ$D?^{Eu+Tx24u?_X@2dRF zt$THw&e`_}tDZ`w?zV93YYJw{i4W^|ibh5v++(7fu8!qSNf=qKXst+XzlWHmf0(MB z9k)aEg62q`+OQj>f-c@3B=wS4*^IPgQX%O$Io>Hd2L{z*#-s>@y`QSY3r9Ca_Mc3A zanj2ZUv%dUVXej#apIe%4{zq~4B`-Y|A`rx^T4ev)m2@C z7rXPZi^kW$?rx6Hdcpm$z$yc+Zi-2&yyVjhoCSY);XS$fon+;3Q*|AJU-$;Yfl+_S zCpPbUXWM9Y%u^_p7k=U+rgW(%uuud;@={b|qy z0bvlKe)qT4y;6nV;(ap1ez=?xQ9r-&ry;jt6uD}Z!1Ga+VZ~4LG^MIJz{3X_^=cPA z4opTQb54;USHdu|*Ac~>#Ve}6rVgwk;AmS3-q#SKNx3CW3# z*vDcu;>BfdIyPtzPN&*U-Pv!+{y~dPSPe&bHv=A%X|D`&=eZxA{y($ zR0O#@8NL%ZlK1Q8FKK~{D&41})v^`G(O~sxRl?ODc5KC+bh3;P{@hqbyDOuGuI6U9 z<9r{RPbpYKKzZ3!Tr*OEgdYvp7W6zL(fah6$#CMtXZL$<+eN-<5H;2@8|3v4hgIZJ z-MTxW-3{SWr$QXpnwVDRq^Aw@Y(|6s9In81>=*$L`Q``yMk2=hF@`AhmNPBaJe4S} z0!@7jp*{*PF&oNqk6QF^T$0RY$>s%gNtek&afXL2O}Io(zk1@oR+v$SqA$x~LWqu! zZAfq>8GTj1C6Zc_OHEf8ct^TuSCj)wrg1(sT*hu6!pIxpj)p6@uZ1^yw1?()IAwiT zMxkd$l)@c~>PW6qa=V|>rMb;(aH^6|9W4g~0%#(fv@_~90Cl9XIp6gPwXOe8cFZ1|qmg@JYwKWd=7_ksmW+t@RSY?g z;Zs$&q#c2T{kv00Pno$3t6Grbjx57=iMf0t&w#fHUf$7b0*5v3f{R<*vj3B>7(mrb zttM!}|BKBn|3j3qKO^tlriAb(Uat>Yt8H*`y!Rw}$rw_ZCdLMcr?~RjF8gy~7DC-A z11>T5U6AP^WA=!QAA*L^yQETe&XRB`|5F?C6HjrcZ-A|M&!y%Fj5J`@Fy_o4)Ap?(IptXMUXC+x)79`AiL4+Zr; zi4-e_}#FShxzWHjg-AY zLObU%?v_Ll#v$?2H5G@-dU)OCPc;9z3Bokrt;?l5AB$TUA45jDO;$>eV;DiTLuC)|Dkl|Gf>!DB#DC1xj#tp0WL zz1OCoAw4#HxS8|;g|w!~h={c07b%C~u%Ym385P)a#dh-FP{|tW_jKn@LuKu!7tdQ{Y$Ed>)jfU1N@8Rc@W$uUvLn9W9a(a1^@tRC##h9dw#hJQ|3Kkj! z)8p(=(*?;BB&cXsK_wCujj-9ZK5l$iUd?Gr{p zY?ZU|18(5o7IUM+!e$nZ<<01v?UoOUU(#Tir;l8^@95kQNzkj1>118wz}I;&0E zWrKEs+4@McTqeUSqr=A%mPB8OPO4zDz63j*COd&ROZw|MPd1-y9|oPaffK5Wg zzXmi$PGLY|d0(tg6hCx!DO@5gliMbYF8o-1I2s-E!S3v6|MZSlO(Q%V1Tpr|y zO3u-AI z+H+%{QX$^@7Z>XwhsjRH_0w8mM%p`-d&3u0aS)odzO3e(_O&wC@1snVEaAb1h$h4L zjq4XE_hW_7IVqfftRB%W(2bT1UU0|W^gYJmv@RCkWNsL4X=BuE1W6oNRvKVBm+R~B zUgjuqfFa;=10YL^9wy3_2?6b%+ZK7Zg0E0D^wpL+Mi7bo3L^B&gR#*cVuFES*JNIJ zl;iiWe8(}7j_KVuYz;86uUxF!?w z-;W}&&}_4{ah4w$7T2+g@{3`I%!|=-xV8c;>mtTIC+RX+zvmhvki=0?!Q++~;%p__ zFzpD$T`bFO)v@eHPl+u-f6UQcMcH!L9;cd=PY^KerIx2HY_wH0lme->Q78gtwjD=mhD;N5!$4zF$9O9;k#}6>AHWl%U zDOzs^p-SfWAc9M)V1go%u-uedf)G<)7*}Y7S2$+hMtirI91$xIQ(pSOH@T8=-fKk$h(@1m-XAbf>X;jW>v_`XV03u1uWz-pV z3rr7lJ6>ehAS*{x}zFAffKlUw=)1ohp^RPwBZs{vL+jjXrCPtwg zAM%c`pkiQjW@AC__%$P=kD+-lQnH7vGNTdhMy+!>$zh2a>U@bjG-5P14=%IS*sv=w zVSB+6!zMrIZ>g@L;>IH~Zs`&yZZ#^0AjNUQYKEkN;GjMVOsse3L3&tE1(jc4Mk< zDSzcOokgy$veLo=k@+77!dLU)*QI>rJ&xDS-y*Bm7eSEJxMV^gbyDO8oxRp}NCV3S zQpmTQIMJ_&#ce5dH#2vj%b&Hys^7WQ1s+Rjnqdh^BsQw zsytKVURGajyH83&A)M8O{3*f4K{C^v`r);;tDRlL#Ic+8Um{Mv<=?zq4K1u}x}@dN z98wB}gj4Lbc{==rnO5~uGG!`{&qUR$*D7TVQZ1e?}yr9ShuV;2FH8jB<`bfb!1X-CbIC?P_28(XC(fa=BL;O}!GWJSvGm#zF@q z=)hX8DX*-kXu;0TUXJEhCHVMFve`wy#YgP7HOuoqBsi7HHn;on z5b{&cArEOO6>t3yp1y&*4ruE(cG}o#Y};*Y+qP{rcGB3kZJQ@fPHfwJxp&;}{f52A z!dw&Gd$`Oe#4Va{&D%_F>Ei3W;vMT|9cBr#{kvMtMa0nDDdf}*|07%V*9EqEZTIp^ z&PmcjQ0KGrk53k)Q8P>>x5KZ2#@(d{sbs}WDJkFk(RnqwwqDC&D(wBCdV;Fb=7y5U zW>b5WvNdV!R`eZPdg+9ksLW+5U!=A^r%!#!s$c`wn@Cxf>9}p!Je<|6^VaXI(M_ps z`c7P^X*b>YWu>R$eC-GbC;|AHlKxRYCTj+d(BN2ijS2|S zSbW9=FOb|O{=o=ZXU@KRe5uQW^toYUQClNqXzJ;VzA9g|x=+mNI2XRxNYBV92;W0> zKAuJP+zG}kG8dCQZt%PUa0vsy8f>!70bXdcvH(|T(h-!i#jq_!36*>AE~ z9m=-QK?XS@!qnh8yDUlh0fD;vNECowc_ghqS!ex32w+>u$_ z*EYZVGo$>tP_2`GC}90Sj0CI;Z>9MHKYGUdaPO;n6>ru2YqgP3X8>*_-nE1$-Q}V5 zV>3!U4JckAu@SL~({^me%*R*Z`@XLf(L?zCgBKQc)>>cucf3E|J&hL^_@5A(saZdxt^+VnZ=>V^4@z(^Z7yu z<(2A!9r2-raP60MdE(biVia-h;!8;Dg^PHHZy%M%P3S{A8__!lb9T+Wtf({CKw4F||>?-Hbz=a0>Ua7YRk z_H&| z22+$a^M$+js0eT)`FnrrVt4Rw!OL#%PG@El6*+00O(GhG+x``A+aXTKadkZBRMtT| z+J{XKXOrowuS%He;+WlmS?D+m&`vItDAGFs8Vq61s` zl{#_p{@?V}HdkhS^0Y5ft`xLZzzRY+y@ov0v=@#t9KkAZX=`s}hiaUBFiJO8#g4n-$D$5@fQRv)C>BuCoM4oh}M4xz`NrCFPw>L$P&+D-hE-eCF zmb%rSC_6%)-3f0)QvPO$=g>GRA8ug`h5ZLQPI_r}QR7vWNJ-Xqkv`eZS^J7EnCfen z^pZ2RC?yv0wXJoYQeGDv2iMb$ARybMXwSS{Z=mSD6n{bdhAyxA^IVYI6N>a`qB#5U ziDxon``dugv&{&!7VR3@Q8l_kGp8G9-0~O^gJ^nC2b#SNl>C-tvoxK#W z6_FUS650WrllQgd`14%3lhA;8r`3UN$T+sAbuPzL+PaWkkjKxjE$f?aVeoSLnv(%r zI&8Rk9a3?H6v&(z*~(&DxKWF9kNCUeeO@N^M$Goj(flF zX-KnVQ3|`Mm4#dqv>(4PoaY}NU&@(5 zzvX^ujdy1^q(>`t1-GxfCnt>^Pm|J9hZnLF{GADfNio{b>!-hM4-bnEt6L4N+vm#& zzKy#44(wZi{O;e>(w8;4j|I7_ab~_3H@~N7@UM#=pU2TWp-@wz>i-Cwr9NcT5~LsY zktl+Z5Q7SCd)`2Se@An}qW;x)o;m#zG7`)wFmK7Sax2v+d!CG(bF9M2EVlO4^iVqI z9|liW*LIl4xNt28-kcDjwIfkevCg%Ff_5RKX7bu-+f#3hFRJ131i= zXnd2+h-&-d;8n%h53o4nPvG|UeI!0ZC+>@u0z06oFts;}zg6NI8{aeWNBv@k z7{`Y5#<7Z;4VF&J91Yei)|cjAOLW$kKBzd|@!+=;O`8wEaM}-Z(!~sY|n{ERBjrlIPKbM!5ks ze1y;|b4jl;d03UL3}8N+&Q{>s5t3!RAiRG2BEYwrZ^cefJhnGaTw79HLi!QnRLS)! zCn+VVneBEQ90Xk{pA(1Yh%xK9p7axI)TIiAho;>s$LVg=Cnj1e2_~n+harMwKS{ES zUDIMALs>$nkw@KnEu(#B%|+(T-?T}w>ps%&Bd12dHg;#Z=W~(6_eCnFWqC}49$~S8 zWq!3N#rFAdef_>hR#ui^NaedofOaWwIcrXlG7nEI@z)c#$kHYG@%Fa_7{!v2x zgcb`y&Jm$bpzQe#U8m*M+-luqu@?SN5N6LjiD>DyY6;a5VQ32_BE-UNi?PI zPL+81U5hgQ(w8vY0rhr;wxtMnT8C7z20s@^L8u6sa6Q%7Z;||{30S`{{`A`C*?-Ar zIp`6K@UE|WMD4?JDNgmmkJ#=vnm`Qv_oTYe4Ul*DQCmJFuBrb5bvuxO`7RSYn8u`=R8saV4 zY?g3IR5N0fEguP0X~{LR%TD%`Sh<*}RGl7~c0u~%Z^pI%7)_}-%IF7-w~&bG#W`gv z(FKAW7)=GIQDF)!>BzFcTVkviM3aB3NRmaxM)vWJ0w-L(V%G3#79XFgi)D*T=VdNt zG-%eUwyT22TIb)_v=&{~Y`i8``vyOqhw?lo0j|hb?dVTarisJDs`Ke8R_9h6BI*sZ zbl&?L{C9Q9M*!@!!J@du^0Ju`SC0!x$9+_Z5m;2JBRE6jg!wd<1iz^)v?d=Es^otm zOc4aW&x99snRkhUSkl`+>s=@47~X;rajU(T!GFGweEC;=OP9br!xgKR)-Kz1TJ`_N z7>*w)?RS?&&>Dm;0f!^83i1gX&_G{c8YUhpBFV2@LpV_Q936=S@mjbl*)v@hi}d`^ErK`;fuV;e{gUB?HECt76ke% zrlecql>N6cun@?#&m+C-3KCzc?1)BqxITRb#~@tI6>jemV+KhKS6auSd9oK(KxfmB zXu-~Fj&kj%V~Uh%F`Y6)mqD3V_mcAlQj1JdXC6A5;Zx%2e6L{ky4;lcf;rOgU^hqI zmlM&Nz3B2%(vQ83jz{qy9PnB(2pm^MvFGuFUW>?6&?< zxpA{=Dj7;$4+!d*<@N3Jxek&f&*>;rG>g%!xcg|Vfcvp&H3+fvO`@YWiuiQ{Ny<`>@L!&h1 zrAp!4G8}-_2r1;ohvEJ7-My#`WN@M+xRpWV){*Gg2Gx0+HaRau|yyS}d z$w9N#H{0}seR?T^WYd=j;Zk)CK9*JF$9;YH@08tfCXoTTP2s3|c(L`1^nNcM3043C%U8~ii!GmM-KX|1g~!Ahe6ynE{E}>6Ol>yvZ8bPU4aId$$ltGLhvA5BUkR=9m}k@~~m{)!j_jQ)35zdrbnK(?$0x@7RR1Xx{k3 zbFQ$(I68&x``Ws(*?C)+QtP*42vKedW0Pc)lmRxM@+_`^y!>uT_lKj~u9ipqmFlR6 zzsGKVZ(Bv<@@E}0krrT5XE4gnQ&B>@QJl6)nobm6h*b0Jk1V#*elGduXUqtmuWgE7 z>T4i@S;NRB3_Y08TB!8Wg)CevcC{prw3i?fIzI|7%&TY&yDLgb~$k5F_O(T|~Yf5~e zALmw%vG94{!EDy;*)BF(q{ywmm9WK9OM0Rmy6#JGiyE2@p4x*t^R^wn8$-m0nVxDQ zKYB1P+tDE1P(haU!)(qs--}yj3k2Tzn@pYBzdq%746J4{EQcZ%7b}j7F}wc8;Bg<$ zgGZD$bP|p|+S3!gUjc?Kad53(O-1NaGGiG^^qje|$=WZ0niTblB=}X~8{+AXws$X7 z@h7CMv4x-O4PYHR#XM=QR2sIo<1-sBI#6ASA?iSr5KVl3IgMji&$&i*XEkHystFCl zdb#&Zi`@u%9W$jIa*V2*bvEL{^tQ9O$RR0b&VL+IlEGFNQ^;<&fFohD&EXi*a)$hl zT?&hCHh1+Dd(7V{j)vmsH5WZr3Y`;fGH+HzJcsp$m>*>qPZ^juZLTzJ<7R%4XJ zvu5PBiQiy$8R6ISNRw4fSF`WOgIm=5WK~9nn)N1YyX^*9K@%&XmDy?-(_$U+bb8ft zx++rCie0~X#XP}A$5HQb_R%AI$A-7Hx3@Ft{6?K^2T8MjmTQTDK((o2Uc9GGA^Tiu zNpuLBNBL0=S7EmI?FpszA6=`kK?l;tXM*;BKMtG<3#_8PbcZH?GV}MW+VCu=7k%BX zehHIAlW#Z=RNX(=d8g^V+~yP<{XEaZ)LoIPP>q)Iy*xj6SgU_AZ9h+-F&`1&6BqD$ zt2p@resVZ}xNt<40`J~gSowT1(~T-l>ZNLs0;Y&h$F(>_1dMzEw9mwEFM7LLlDIkE zef@xNX1ADi@4G4Iy=V@}SK%;o3VyXfCHiL`-~DR`UL{xlOH!nKEoT_}L!sO~C zBGx@AR;K*_SUx=iOz)Jcmd*usZXy2D3C6+Jj%n#NB%c^BQgWy?m#I*1vsI`tS)Lg> z9@nWwt9AB+eY7|HFDfto4201i(MfUq;n4qk;WNLPYKIewhQ8+X_FD}~`zcfVAIXvj z^F0MW^U%c91w0uT9bpuD%gJ;WPeqEZr_n`u1%1ty@xsF7@&5h!%EHaqaID|^LMnP>!Gk8ZqMdTahU})b z8_&5Hu(VL3OP8>Wy|TATnR;B-d*SowC*aQOXP6e47iovl*?EUBf=anDBpaKU*vaV> z?zh#+IP>SRd7^4`G~if$9zC@i3|ZOnI@3<5(m8$q+IC)&-G7J?7+r~{j8qQU8^c;C!oAm4J-8*5orictJ+k3 zY+b9_`BN<{ss!O5A>k# zUL6}r%?nENED4ckgZ{}!dzp``tJq^r2f*{mO!aWK6)&}yD-<$C7}ctUeW&yW;(s66 zJQrM7UBBGG#Df%F7y*Bcj851cn(2jQ~}`Sb!7(!@ANaM98d!_DadTdrRkZY3`9qP?4GzqyJw198_EJOb;c! zYmD_Yaavs8)rlWIk-DaR33%Co8LzrzhkhKbKj}W5**roLLG}8Bz{H_phM{395K+aW zkV%qOjYeF+p;N17Dr%RFO13GMi$|D@NG46h&_s|F{js7Nt1n6*TV*bbTM+$2`a2?@ zl$Nv(k&z`ejbKt*?#XMzuIDK;(~sw9eVGp&>2HF;4MA>6hhEP?cSq;l$JWc|70Cn- z$ygj@)*04N%#cP&li=raA^6X&n>%>EGKZnPJTU==D=~lm!h2C!4N{6Y-~dmbWQle0 zp($$tHllwws8}ki>8THnhJgeY>uCs)R3&*xX{l03iZT=EN{9(sX~({ax-FKWtIYb3 zD9oM>;y|ZF$X3b*QzB5Y35P=$WT#x2`uH z-xoE0@7ZP<4(W5Lq?+XZGdk$&*7}tb2#C|<;vy|kJXDaq;Hs)B_y&z8BwbSv_6(OS zn)tMf7_o+=)kbX`x#5Y1lSW+szJ6nFt(DF-Ef~4^OPj~Fpe$dYzO+z zqtOHs79ucc+r`2oTpNmLo+o5PsdnHS+G0*_76C!0FmNWSrCXB8mmwNAt`+>IUOn~E zf~@}rX$|Tl@}CF2Z#K&u#>ghDY6uxX4giH9JpNXx$PfO5?d`1%zw9SI89|PcHZcK7 zI~W3~kC&0%T*IRWz~#0cW7IZ##uMm z`QJz@^>}f6?=kTB9Ettcj9~Rw(e(e!ROk~2@}L$$;Q1akB*D|j(ysj*@<)dcUhX=a zx}JXP2~Bw#@bcJtdZ)W38-{t!lK1DmEfNTN>v`b2NpHQ2QJXzmcLk1JXHo8rr}nhFcs4n>e%J@X_oa zXl%dLRfncY34?f63tdHRe47!L62hPfHEXzvNmbx3_1_zl0e+4G>?w1QdqiHSJ%=*d z#CQ{(1mG zyZ9j~qLz!pZIGi4SZgC~iDJ5Z03YM7`et5&iD$0QzV=@-j0Dj7t`CyV2z>`i(vUzm z^A|$j)5IJjuS&=t)`CCPWtfc3;;=y(jqOsB+liUBm&v56K+s|d1wf=WAmN-S2g%_n zq!H{WN6(UvBp|q8tR4C(Jo+n11sPYc6)kbd3#UpQ6axjoh=vV8u7WrcyaJ>LTR&is z5G?e0Ant3gdq>oEJRC9{a4|4Fct&??gnzq7lH08>4S|56ZI|Ol5Xl*qRiqWJhC?Nz zknyNn7Ls?VDirq6Vf@j?u|3RmC>0L3us@DMis9;3Gp<5Llc8WSe3<>T=3EQ#^@Fdr z)%h!hJJVkzb!LBX>iPVJ^mxUCadD#FpC^JlXv(k|Laa%R6CZ$;F&hG1Xbtz2dbv-8~X zq@9u$*b)KCz=@I}0BNFlcJ~lX3DsfQXr&)5aQeSZa9^cWXhl2!X4j6eBHiJw`YbAF z`BsgeyzLz7LDW&I2!cdK(Q%#pBf~U;(TClag&D1H+K);Fj#*C%oY^dV$wwqw>?EJ{Zup7AZGO?i321bH;104~WW<_Mag}d{%O=QVkL&1;_ z9^xP|>X?@CsJJp+vCB{dC4Y9e%M4Zvp;TPnX4M@TK4)}Ux2fkPWI{!E$94YQ_3Cb? z$)#w3=Vkz+Oj$u*p$O(r+;Ko8QyHiWTy@JiIzO6GuWxze`UigUL6yw#3K1TK{=kFJ zb%Z1b;Id28PlRrtCRN!3|2F!<$a{6ssq65=oMFx+KGqO3;@NIp4lwvUFN1UPK}AZH z=3N*gC`e(IQrY0v85rEAMIj5zZQl-ywA=8e_tRW;$C9@UgxUrch{g2ZI%2jYk$^v0aHO z*j#^1X(lM>|7Pak0IQmu0&9(%WBp*CLnKb(e>OXAg{`?H7S$4ndb;)ttUl@Q5+xCB zhwL9CJeHW=xfEFnG|-C3eYZ#=>=ues@(zS`m_i;G4@xrU0r;SEL!@W`Ytv-!O1xGI z@&qHaksjb9ZR$?pEP^NvSF}x@NM5DB3Ts@{p3P8H>Hs}}#@TPX7J2bDnF>s^YR_6K zec$?)J*HQ^sfS9I|JIefuB*wFmZ}sBi`*hGF&7>rjLPX)=G!_sfbv5g;)1ya-qZ^b z+))8q1DP6AU77O{#?%Z4HN&*aJpb42@uc?NO%wSqvI1HYa=q)-txWa1yzc}PX7q{N zcJc0uuFb{kgYYaex@w5b$*{7lgs6b~)&>h>Ta{*(#GbN$c?tJ?8$TXZO;dhARN?>o znr&OjQ^AmaAL#!9|67{myzcF^XuGWs{B;l zu){cOL^Xq+t1`?PVN1_i8r`O0T`J1LRkZWLXkZ7=JjSB-zNH*=cFJ6o1qZ|jJoc^UBKnEZFY^7bdL9G?^ zqWulBt<~vWwb=`Eir*HRi?V>M#7l==I*jhPuF*{tr<1_iH$aI7N)8>@v_#`7QmcSY zv!)E|7gis({?Usz{xacB@7s|d@BoO-*b=9bMNWFY-Q6;^CBFsR;XTj>T_yLCHL*ml z-1&4K?+;%9o2dxxzD>JcW9cn5U--4>$URK#hM8QZ-iJuxtDQ11RK@6d99Un0Ln z!ma9)B_k%bBGWSX7dg6Ny#EmnRQ3C%m>*fSdF{S`8t{)Xj5AMm3H*+y#+sNuyCj-$ z{p?UrxNSuwD|qHs$0C9@sh>Da%mcbIMwy~fYtjNIK5bQB`212KopeV zmj0fa--BEC*J6#&;+M2g(1*7p(Py0n-4*EG|3|Nw$*| zu@q~Yj<%LJucP)S#*fNAYcl`0J@Qk{wu#N#vlcDqEmf(xG2x#PlSnrrrDJq-T|XDl zTRQMPttb92Ga!~MV&C`LFf~LZKrqn5z+}hQm0NquJ{BZHFwYY~ZS5aN`}vhHjXQ%=Zhd_pBd|#5OXZSeCr$%KZyz$xSzB)^ zV04s=&-Z5h$Pumd@1uS%d$n~A*uI~bUn%m!_(97(hgv&{ey=&(kEjfxMkBUC4M#bJ zi%{A&eS0?{%RO{xwt4|?x^L{Q&K~&L9gaAkyE`-eQyd#V)HoOhQV74Ko@b%IKr^`? z$Si7uDq)aw!`>FSEu!vLnUE*g;n^^7gkyFFQRu{~ETctdf+V~_5&VwrzT8*DbecUQ zCre1uH8T*t zt#;c)U7c?&&yx)VU%`e9<@U)TjA@$Jt&4zdfCL2wG6=ZHN?^$l4%>tw%tT}URb43! zekgF%GBVH3)E##^&dPt-XaN3H}G;84M>v1B;Nsdr|a|c^Q zL5iqlKA>dw2{*07IfRnmh$m&r~o{XS7ngC#)wfh49rpGribZ1pEA$ zFr}cXk9HazhQB5g?twEGo*$wgA+$dS&a`{mV%t6goo~ZKF=27k0y#r58#e<%J38oU z`zHpo|G@TqL`Vv22@#NzVbHfOdw?XWl~i0(7Y_Oc5Hbl5@@FeV63pbDy`2yZVAALD zFyGYQ$_>DdJO_c*^mw%~+n?5^A zN>vAvTL@2Vx;dy%^KYJmv#!fQP z34(I#w%DzY;`7+8?E39+xd(E(Dkp%&Eayi}3mV8XQ|sNMmjUMrxmyVKD=0mkSd9sS z{BOD|00~EEzdialtrsDMeaXUa%VVVL8uO>Zz0ea#5V{%3W zJU{Sxt=8LT=P7>(F<27KC>Cs0*|U3^PtTuJi0QViP}Am7vwAS2E#WM>kLe_Zsec`f z*avRNl>+T#2!(6Jxzv2yc9C4$&v~-d@76jFm-UvUhg#qcOuP#nQEC&SG;?8^ONM(0L-A9o2vBN$OY`wub{U=ZTUdb_Y5Pmpfw zm+)@+NTHh<4G%bloe$f(%gEW^ll|h!8)K|)C`POYiCq>rfmk7?kT*13K?(Nl)g7>u z6Aee&IV58kE&M=h^-l` z$?b7;y#sI{QgTUT8YsK^&tTMYxQ}&(D%4?YHB1A$z-+YpEHUfU{L`&&y!wX34P+qN z;xt^AV&r_M1gWD~>~S}g3J+tJPu?%QFHEYyeQ8KX!4;km{uHM8|QTj{U&D_&-55*VKmI zH(2uXSllKMvytt(x1K+GV#!G~9eP7%Z~nQQ6x^it(poM$xPbOC@k7@Q9#`hZpl=U$ zETf3;h##wJ6EHxk-?5hzjBn4tMXJdwrPH<7b~ehXJB8Uo!C|eksDH%UNQbfTL%wcv zx!QivdfyxMNPr;Oy)7Jl`QsQ|wSEw^IzAAudo7=BXKg+5L5yB??x|d#s`;{<6y0g!3L#pg zOqeg2JIa%LuCFkLRyLjH2j{7XW4Ztohvf4#YLy2gg9*CX>q}@k9Gxr2_`q#;8IjQh zABEC7o4Uej9l>G|Ja72&znHM16*(#+ZCk{_qZA>XYc({q@}0aL>VyQFf~D!|J643P zgcCP@t3?x6^BXvXK1PoYCPb6ecLmF^2lF#sw%-l~{{c&515Q+`#}?^U1Ev#X_I^z6 zv%QXXaq0EExg`dw?pCC?hir_UnIl&}4Sh%svHB9omY|R(g18yxO;x5P|KDzo7u5GC z=DQ8;doASm+M9#6CcMYF>fe_?Myr>UN88HtQAW}8$HJ*)^Oc#?^&ZB1o}&wg|FJGs zv>4m9ZpMPS;6P31(uJShgQ|2fZB+6oS_!!bU}EH25_Su2@{i3J^tb8Qb|)oDgJ`;> z#a~Big?I^cG6IN0NCX_%kgzLgX=kJBavcmexJ9Nj2yv_g!@pT*Nc`-rJ1iDaj{F>I zVApYDS+Xnmpk$24Q&EC20Tf`Yoza1^Naw`4MQ_r_kpYb0S_?%prj~T%h_OF*see}# zE$KxT4he5?wNZ#a!)k{9qFn2_Lc-%8^lcq|Yz_m^nU8hkLN#D8%nQ+Y5*dO1O*fLh z$3^g*1#bFBS72`6Cf(Jxxo}zIfdXkCLdMQg_>bPp;>^L~XR zN;y=rv@ifgf1fbDQyID|d2Mlhr$2&& zKQ#WfZFO0YbG%$-A>EK)j%(z`Ae?9Xzpa}j=BMBD*L$MZmCwc1%=qe)2y9@AtgDS< zJwJP0nK&2)$wD|iLydycR9VSPZ!kQj75+i|c|dw&YHv++s-B$I zgf>gbikd_qGN;1%OAFR79wCZSDF#P-6m>75IRoeL?{8A_hTRa7$HH$^Ye2e~1*&~; zP_`gBrQ<9ySWBWs?xcHk9|dW6|66*z2|I>$?GYB70>uEqXX7Ymt^htyOm^f#`THkZ z*9t;-zz_FMq-R5Uc+H?+Z=tG&FsZeGANc5uNRR#>&Xe? zqco7`3I6&7Pi)ZY*J|jf80aYWDLDKG|Q4oaR{YTM(B z64aXe4ls==fFu&{D!5$V)teM(eeb^!v0wqMAlyg4=4WwRU!JQBW0TvG!;D1{gxtyc zQ)#jO;u0kmk_{Qr=qu}MhiziV>QLR{FYpEhNgEb4o6jA?wdrUX<|<)@`*R#6p24bU zmR`6i{gawc26$k+m6U=>xBB{<=P2D?Aqnyb68qXfJe}E~hu%l9NaI z?;MX57+is`HGyOPL9OtNR+%z$^>mx0u+W>(-!kRwV#ZJqQwdJay<=TtBZYLqwRMnv z`D8|g)qZzD|DRtWpDhD7lpw%g0;b%_gWcF%QszP#iG@N70mQW;P?%LcanVBu))0X( z+SsM8l%0?%l}yZDE-ume-rr`9`d+oND=AWuQV`C__qhn*0gPmy$UvZEH464Y^8I$@ z!{Uc^(FB>TbMgqC{84TRok6v?Q_6%(@g|va8Puk zydm9rJ_0d~DlW%vDlr%jCk-Q?b<;FdJ`5LSOYbreJRCdr3nvHEy_D&sl0t0ja>_cGMk}wO4!ObL|A1mq z+-aMh^ZpknH%LKC#eI829}7qO-J`>~P=R4NI|zHXo&JXFx1KMc{mU&`vooBZkm{Oo zqM}VcdMyV5;#fUwN@jQfS%|B20yvyMQCokMbL)!WFiHrBIqbcxIEKI9_nCzWEnhl) zJ*vvc!XHAwc@5>UcPqY6m>si^ZcPqfSJ(6rBN57>%`095m<;hdHw(MIYxLNq)JQLF zw;4nQum{I^D_Y2y??HZURDYeAZmI-^Rlg1Q&?ob%ERo=ZBDu?@9Vi%J(xU};Olf`Z z<9fSc+Q3`GTDWgLHbErXpqLUHrfpx=y=!i9qoiu57wFC}l;oWsw+GI=YY%1MZRH>(G`L8aeL<=Au$?ofWNYk2(&8 zZw@W15vBSE_(R>F(p4T?+Zh@S$rtM-*0-KJkY~T9Wu)cYjsFt0I1b|C_k6{j<%EW$+q@q}{hh z#^IJ8!`LbOCioQ$1m3W=+fH|F7NyT^h^O0JDW{?j2_YEv*cD{jc8%#Ed%B zpCidxjNegtDT~M}^^0gh+CSVu5_sJWsuHr1EfZfeww`65^Lp+IP@aGiy-1C9wdF5+ z?X<^21%)n##3RtfE@hzdptjX%(jaWm3jLcVmE1DdB5;nm-?W`%Aua6)c&O%-y(0I- zbp&S_4IGr{znsUnT!Ee?$lc{+Z2ckQ%pK@eQIGLuthsTrqxthO+Zl$<$d&o;#;oL4 zOtg}C>{uZT5RLmPhzQa$&SX?4ZZ@XGAW`8KzM?X=r1-x%5R3=OQo+&;jmNKf&08X| z((_OfM=ibT1R;c`;Z{mR5~ASG&aOvEeg+7z1p=HY{I@_a29g%pR^0Uc)@QzM3ck|e z{F{8B!QJ_Vw>{A_U{jvvE&bPM=^Ii%Y^C$jc~;c2X80xPh&Od{Mj zPq_*#LXhoodF0@i@f;4@4l}V2I}Xyf@FJHl7V9}NORZdw*!seSmiozVM-6e)wxAFF z>*bIWJM7!iCT!*M1m$UXyJ`kb(_sb+Z7R@Fh8KJ{5hM5twMhZiX3WVDoAVu!G^p;M z!Dmh`F6g!b9?;g-+B>9bY`r1rsA7Bl|2Z1|7cMM~uw3e2l!3L%1s2W|){m)gL(nnh z-|sGI*_A9XesrKR7@mG|9OBdr6QOMU2i>AX$U{v|PU)_ob`p^P$lpUW_F_d9;)&y< zlWKNrAYiUB3X4hwBXnFQisaIldtsEz5ISQt z{85KIBVo+da3||e!**&=$RXmPw%}bl{R0Op$kU+!)*d}h6&QX%7^r#QCt|nGUUyyD zc6q5)2n0|CG%lF`#Mm7EBUah3NqZug2H8&C2o#Za6vBl1r{m0REn*ry1rp~ez+-{8 zuPkbtTDi||F^bki#jYO%);cnh!+(dMk*i^$J?Ik*>~8PRBQtWqYU^}B&eri`mNOyTh$Or^&&YZuOd=bv3zFs&R;>uRq2Hck$>s@gZx`= zTL0FLv;lPSoQEr21EL}O6T1V}QJPCS7?qqXCl=eZE>c*ua|P1er=6VgdF0Yi*9g_N z)Ar2Y9<#$ohMt2BJDE|ojYi(nC(*|>J?bH()Ma^*AsNPl`^X`9 zQcsIy6Xf{&-T%YA0f=g75@&=1;Cs)$qu27TbnmN=Bal|fX8K@S|JJNKE{vTDH&VD) zv#7yIFX_AY7uRUUmsm-19Dt$pxv`GR5VOLG}_` zMQ#C&DVha0+x}ULjzvMPUb={<_m>p>x}MNa!$qVEw%LYnGDJy_#(!TfH<%Y)F})H^U%7A;%2J3D5_ zw$rg~t7F@?JGO0G9VZ>zwr$($BroUQbKiTvVXZlG;|B}>11ZnGPVXuEt3A`BAFQ=ExRnev8jT^K)f)<|Yfqbx3i&yQ?J0Vk;2F`m< zZhpM&g6W6 z$o-;@KHO*wX#M=&&d1$vL_Ya<iy{wgM2b_fzV}nAJ^}< zO7z)NIvqo7&L(KnqK`8&-QF1L>;zIDos=kQi%29Fw6K2!2;!iKv@(n4NxlniFcP8u zANO@iK)^^hmboXo|Mz4a*`^F>xo&lW33HHK7_0+R%71|xt$Q&{Guk3aR+lW zQXmziy;zyWSS7w!MPC|!GCRANQJ5m0oSoZh=i-U@squx+>;7m!ZLY@maSw&H*Kw`OBFz;2o``*Q(&O2 zpwvLpYVf-Eto=g_d#lkBrm!5=Dm9MnWYZkZi*tB(g;w6OqN7O-_?1r=N5vVX88WfB z%jYzfW|o!cDgKd>PEQGVVyInr;hmD6jbd{eOKg|fN?kLItv%16XF)u2}}%CBi~6_VCy5+)-qcTm-sb6Dt4WR56;H97HBM-<6EKOV@|O8z(}qe4cTV2hQ0o-HN` z5RzC5nj(YHi{#e~E`Qm8H0U(4Y`ss1XhyI;*2W_q$!!iEUnV?j)8kKlP&2bIQrf56 zNyjkp%<4zNe1D_L;B+jrUEv30opItTIe(Zl1Z4NJJrdbhek2JviI&FzI(1{G z9xK$?pGa|wO5WKGJb$tOzcXol5*enX2YuS}*l^Ls;`s?5X`I3WcB&Pb?vv3J+vOPR z#wUFbI370-ysM6LV?Y(|x^#Sx4Z?EIF$JM4jU7=>YT}Iiou9QGK3sf9+&9LxHWjBQ zXQFyln1qwyqL!Qdp+-W@@~lr zf7$8pL<(l(7*fv`XYE2w>G-vF9+&!?WRK0->G%pR^`*v{^bZ}~vWD!u(IOIvIh3*? zzE1w*6*Z3#I!2VJg4~sOxxaufg~mu{Z2Rm4)-?yZ~ z=kEVJu*5*~>~I0R6}9(TC^yIq%<+$hrZt$Qs?uP>DJi@%ZcI-wOq(QesCzMqZi%dT zzZ6U5_@N*I z8ax@7+M$lDfG$Qdn~@k3ksO~IvvKq;!zFZjiRS~U4$#IF<&eOkpCM+HGi(gvILHEx ztLwK8+;QdWSP#2nLtH#gZ*`={j5L=TXVnTQL;D2Iwdg( z&wVBMrsbXTV+{4np$LtV{MEJp@?=GsJp?1uIKHME)W+8~?L)J#hU_z9$w9vmV-Drc zVmq*8#3hq64xWJUXDX;8hiMP_v3Zw}E_RqV8E20Wyq-|Rd|p$Jzqj0?8_k^72~Znl z=w?`6EZkT#QH8JVzHZQK?q3?6{b{YH)%&@mGcU06->SLCP@>}K+)P*Zp5ZE|nWE?y zwDy-u09~3cJIIjFaS8KK z$D9S!wp}^CacZayZTZpvj0f?_lVS6|xxJI%yaw_OeCN9N^Kwq8+mEU5y8g#FE+yge z)7gjOe8#rX*YDJe4Q&xSx_kPkxK-w1qtMBq=Z-y>n}u@phu>=YJXlDuBUc1$e&_fX z7uLOPoS=kluiUntXd7Qg&t{VvZ;rqKGCYQoA!W;S^%6Z3@n|68>X;q#2L|LG&uIY4`%#nOn}jd0-%3|l%3df z5Q`!Z87gPaL6ls5n;vL!GkTq#Eyh6@mJwXno5HifSsP}JK07(6pQnJ4f}U#Oy8{E> zT9;?WKI%W#G8TV;^IQ9z&Ew~-emKGasw|Eli*2qZ0b|0`lXz9pOH!Vc`XXR#CV6<3r`pVQq zO-oJ`QUfyNh) z09R&KjndB!`SQ`mSNDeVp_<>@*e%r@>&NREAUz&6dbR-R%EH*yol(g3$Yib0xnziX zD8!GL_w8?Z)48XlG#BQRL4zAwwXJRedEaD}^ud(BMbODid{24gX(A~V17BO+L58hy z$m31|f0H_@A(7BGaZiiPGK!~EQfi)%cK3LCR5qwhI;v70QGZ%ZU&Hs%H~GyJM8{` zS`=_=j(WvhygmkSuggyauso55i9neAq+7cMkwpJ_he6Llw{t00T+<17`H#zA;w+v#U0aHbqQAb5q~Mtd4|pyr`w}&^_~gpTS{ermbH@|*PJYo zbT;8VIW{rql9q8Hrr~i38#Yj{%|2FCuTqG{8Cp>+hYc@08bM2sjhd^$o-n4R$i3Q- zRg9;5NYUY6+qxRK{jaoJ^n!jXSCF&R!STK%wkZmZ(rhA031lN;nd#ic!vwnDQl3lr zDN?i-ImJFp>mlo+?$;cO3_3gjCl^vr*yz+r&gEm;ojN6n{CBpN>Hw9{3zat^QHd;DuQE=UNXB z-LKoyF+^m*1@1JZTPn3RX znW+oTUs5!KVvMgK-1QkwtF4Gi4AElQYK&bv&?Xq0xIv;*G{~(`E@0&Q-aX=(Yy^?v zG9g66F`n?RkE|TS>eN1SLR{n5XQ?sQ-gOP=PwPy>OU>5gGVIAl#7l2fp-Qj~vfa#&Bs&_H_r zhW(|9LB|8jzU>vD2q%}-f|moM&sEaot+L^iW1r$LtCxy$0nAwjn~u9JBhTEa5jO6w z?c^H%X;HtXtG~L8i{&~l&*Ep;g*if!{Jgf~LBG?PE#}y;@#gIY`ihyD^|4CX@leoA0-shUz7j=10X zqo)^i7?eRnV#2}L&x12(inXy}+?aAL@5K8E?~*Kv!YNR`ipM6h2+xqQyd5bK&Y!pm z>!r@FbxhyeIq~M3?faZCZ!Vi%%szVBZ|2i4CXlK|+dK;)o?5po@T{SsK~y{Bb4th5 z+rlM31Ect|$psTk1o(MH8ayvHBy<3+2r%5>DCTM+EmqDFIS|R422ydEe~lamu7Pr; zR)Zo$Qc?a3?P=oqQLPw%F3MU+Dh1XD<$P;q?1ofZxXi7IK|CKxh#|;8ruK^h6)iSa zg}NWLa^N%r%4ZR;KLg<2KV9`J^l5T#?k9*&2VP(_*QF>GALhS3pOWEKV$1BtvK^%n za#+!kz8q~+Xe?+z*mBT%!)m&3*Kv+o?+@>r>(ArwUTfI*=-U}nRq_9uJx~GzOylCU z0a5NV*fxkt1o{#VgKLO~ANQU(cDA+x-QA)nm}hzE$rW8vHys$1U0vOGTW^NG@U`b| zrB7Xiulm+}_Fz(`RM132{aLeet(Ww@IArn$L6S2os&<#fP8*a>_&X=8tc@ERcKSXTr72ES!P1t$p7;MP_tP>@s%c{56_bLcr0%(_Y~ zzEcZS8ru0K$6=yW-4Iffx>Jlf*i$JFN!)}-*Hej$mgo46?%CRA4;1yO7EY-Y^l)jJ z7IWqe-hTFcTqQb#unuq4x^~Qve?yY9BXXhmWNB-II%3NOr)MmYL075#b*$m&sG9KR zN&0P|%&F@F3OQT|GNH>s9JpWvIA1$R5+k?c4@IBSaUelg;0KXb)zR@_So#bt91PL{ zbfXd@{9Us8n4obdJSdznK$EA>5c39!<6K#4&`*zvY8ym)WyDYe?>h!F4puj<)NU@pYGrD( zWECwRc6B;euY*NYmbaUGN)8`*C*X1!riDpYKyD1A*~-P>!(=7Okcf)GLdAX#IkxZ5 zix(p$OQ*PxIj&b?^n^JB#Y0yV4csjT%ZzQfJh0Vp<%4W7i#D@I9x-E3fSO=^Dx*Zi zyLKZlQ>NdP5~O=AF^0Hitf#x`be|^#_C~R}MLQs5(q*pym#jkqwFI;+<u(oxj`xqtXt7MJUXx5 zM?Exp8P&|gxkn!x3WUV>87dvE{E6amFHL3<%-2aLSq_;+TorxV#fvQg`4`h?Ljse9 z86!48er0_f$GV!tQiL|j;LhnIR=Mwv{Km~*8-$U7@1ciij11%w4$oT(n>pb>?%<+4j)u@t#d)w zFVr%Lei6Q*qfN{SsyRY*a;P)#Ofh52G?Zmba-a-f-11yoy)kR0M1qgLq(G5PRz>NK z&IzWmseoilf)n-IWrLlRv-ciL4d*9Fg>D4VMku&6edTBjH|i{KE`pzVYYX{ZkUH1u z4AF?v{7=%#3u&nVwIBsGs;;FeJ%pFWt(B~4-Id8;Va`&zubv)1d&gg&-P|7({RYfr z|Cem!=o8UqqBbpr^|xe5c6l;ngrJj+I6x*u8E^C_U*GE7yHcC|_?5*0?fXqN==;Vj z3(=%?BT#EYmXpIeN#HMf*b3hT`Vj5Bt`T-XWbM8lQ2AisT-Ce-eBsf#mPv&tC4mA; zOSqyyBYUs_4X|b??D$b}SSGM4j{H;*RFs!&eIp%7IL3f22X|a4GJ6laY%q@K=xk8T zG}QRZ{`I|22x)z^$MT5*O>+#`Ir%|bXxMBrbPCKvK`|E``Q1KLu!ILOSI?JYw2 zz&6#UJmx*tD1CSAE=U0r(;JM~e@GzI3tTnT_&X3nv%E^6>A1LH%ogo9qwbCD^H5HW<Ibjpkraq~ypbm$N`~Q43Iwo@jAp zi5*W-t(H-^#x`M?Gxy1gZA2a61$r${I71N*oxs&{l4W&+PV7L$u%Z=LPSuxd*#9yR591VwL{Dm_?diX@X_86rR=}xG4G|GRi2}hD6^RFvaz(^A0 za%D+Hk!cHS*}!XKEkkz{QZx7mzoB}6fo4>-2hKghR&PwITw##Iq8s~PiAw1nVy#g>o@}fDhZXRxcg7>f>{p}`X z(?6onPD;o$>NTm;Cq?OXfUV3Bowy|0$n&CX8qA+KA&N=NF$7{71Ns~RyZQp-Czb59 zqraqeAV#cG{#H`0Vd3OsO0=DfcltqF!A910bjYY0S6GDtF?Hbc{!B_AgL6|;a>Mt* z-CYYz{C!&?MiiI{5C{YOa~`@5&*+(9tJ)i4br!J)sZ3Vg8*1#Gxu{P!+To2%fHY=r zZmQ`qz2;B0wzTjfCl{$8 z)9yg`^Ug<0!r~;5%k_rgdp(V{XJk4gC+mC zv;rQMrU$!V6=<1|tr8kZEq(X9oG*_29mBchx+2J6t5Fe83Vox=1sr8sP_Ervj{UwD zL{Ujs6RsYtSs_pv(3{I0gPvD;C;5s#qf-f~uj!L*49xxn0jjL2z2y^)Ms84O3U2p-3$I0@@K>nqHz>>fJz5W@dF1}6&75Gx6PG(uSr(V!QfnU=p zkEpWSXqGRJ-8T1Vw&+aFbNyt^bs6lG$Bz4>?|IkN-P+fT<0Lilc8T;KE}xQT)lwyf zZZ|vRDe6Z`PbncjZ;+dXhYIwZs;jpI#1Ry+9(l!3S3PV0>tPjG+B#Z)pn?cd`D zUC;toHL(2b0L_Kan zLj$sQ+46plGt~9(DmR9=5#D*g>eHXRcRD&({p~frxfs`W*gN$jf@n!m2-d*SUy;%S zcW#!%^8;LotS|l{5>QH7m>^8p$O$Z0xJ*d+*Q6@&y^!@YKxagj=6+voiLfWk^s|J_ za`V=8ipfe_$W{tMN_K0`=6Ywph{|1e?u+YihB&XZ(85c3`HP;#s>oaSEywxno3Zxo zqzq}+6EG?Rr9mNqXa7d*#Ys5xLvL?hp-j_4vdGvB`vIM=tL-nKcAKNmHTJ|s=T!VR zl#ADk1r;#x&P0QwB#Il;QU=YuP5o5z%oEk5<+VT`e4b8vy z8TzUsm1R_k^dpJG;3sYb=4VhNeofItnK>TZV5mm5%EIr&(56E}AnRI7)wdSKH&b6V z+}F5GAQSR2TeeLA`M`~h09klCWzI%N!K{W*^%&R`YNM3?nY^1UxMB|0t->?|3xXoM0xXxdkcqRFKEUMIrKWI6NJ$j9nos+i&w_Y(D-{4Dw4bTeGWRvMRm_W!MM>1c$R!XErb&w ztV!vSs*T2um~iM>tfv@lD-~8isfQX7N@xlBT5s-s$a`_<9oD?i^iP04&lSHHtFd{7 zY9z|3jNtpAWntPFacxgoi5GtGC5O*}Ys>43B-eJ_ES{_@6iX}xs3qw@t^$m|D0G(` zm^3Olt(h{+ianKsHtYKygHbURLv>aQD(%$mtf3QyGFz@En3XV6|BhNQ;zVWBiMJb< zj;0P#?harg#Hc$?IHe3&~bX|5d8VQekXbak*&3o?6q~DnY!_f1;XJ z;h3Dp9=1-c=N)Q43jIB=9LzU&wd!8+6rwo%5Le`yLNduMA*d3N6Z`EG5zAaVSUaeG;Ozs#6yeR!u82y3B_#clT;y&S%e zSlt(mb`KLS?VseDgOd#D4zCNg>a*7o$&|;WyAyZon#qS55 z0W5%pZO~K;WNJd<9+}7Av^8=qJ-L|0WY_1B3@;M8)iOv(_;06rTpr{%Izhmd19z^D zgcB6FaT>H@)G^Hf(6@dOzPyLCqhI}`$)VX=Rz*$Q1&d(m-EaA}y7)}TE1@w&Jy{eg zMvMxbD32Fp0vcL~jDJC-kTLQ9)B6Xi-t8XK!+;(bx%+LW zk9uzlmibeAy8x9AE}@x7JgIVogvVW3u5rwn+aZ8???@CpU6KEjZ=R@PAdn3GMN{%D zZ)<%vc7^)>yeMC`rxL}A-6D=;vu+Jx?hPe3(fvwMxZr*PF2WDvkeck3P0n4^bZ9si zC@cRIsJU}Ize=t zuY%mY^0Zs;U&kw`#`O=%!k9dRyIW)3=y6k znzNA>QEp2ywH%zng56tLc?w$g7>`E=b&;u-L4m!z$#`!GQ5a=p6yvT$$m(1C#%K*1 zXXz6l22N_iNv(;77U4>7A_OZEo@)fH zr?Hx`)gzn5L|3`A)I0F`6`C3BpE)7#YReyRkGwu65A#cpUq$Y&(7P>{r6YDD)*{O% z&m;st5i`bZoT!s=2GRu9N(V;Qt+dS>)$7B(G87!k)lkl zxiVs>OIJf9IQx?CJM2n5yN;PCI<4oP;e5i5*RA4}#OwyWnp~ze{88WP0&UxM>Pm@@ zZur$_rF;Lo#r{f>$F)Vy^Fvl$SJ&V*l-h)~v~2auV65ntY>93_$(zOXFIb+3ZOPf+k~HJF35-5iTddUfis+L_TbeN`Q${hY*!oxZ%b z+&>D7HnYRjCSsw9wzd0M5_zCFytSu#XtuYD*8B5)hv*W}g&&9MKGMV@K06!4O>PP-&yv|IOgfeg?#b1Kx_ zE@4e@Hiw4lhSC1*!=r;i=@zI5CDt2+k?G8J@GMbkN-PYK)O39w5aW`GuaKHeZ6L$9 z%s@(VFw~zDbRra$-k@{mH>mr|yFz*#6D@NVaE#gYq5S4`Gxi@g&rN!)0Po1~^3*G-$=&Qvxtidr ztzV+bYEOoF1-6YQqfq#q{nIM{d*C#9Tn8&w^n2j! zFFPjuC-KByR}Qg{v1rfv`nA7PcJBp^Dk@$4_|I)7 z)JE9sthI?lAYHPvicFz{PUkGA;4Yh5?q|8+$?(Jg5I`o&tDia#*Wls8s`56;;L|Dg zu;H>H=DouV5vg^8*fGZKL1@osgFj{6|4`5^bT%@~8lmGrMxqDWS;GvNSkxD1I7Bf3 zg{^h}i0DOJkVrx@IM|Fag<>&22y3nl*~ib?3rrNV!C4}TNoPQ;+oYt>K;%Uxq)rKC z;^aaJ(DiEq=r{CN$iEkI>=9p%(*=x+HqrNY)9zdbhtq*!t5>^z|EWAaYE}NRS3h(w zV9L{xk<}~V(7|@?n61w&MFHY;Fa@w;7VtjwMR$bn4B-(mYX(R!Vu)CuT^pN_iHEhh zL+hl_`iJxcBn$kpL!c``&1EzuM{5&H2}pnlG`J=ZqO3u_IN1NoCT! z`}w`Y2D7x9tc2~Tcp65de-xSS{-4{H_!-vm$=ku=pC$?Mo44@g7cpyFzJwneV_=p(ZTaJXIqO&P10>KhW;7c+T6yNa}TT>}T;Q_VJ z$N~otYBewD5KWr2&l6qiblBJ=H>M5z34W(@0mq%+*PIcO=5#P7>;X^>{(=Q1k->id zB)7+~nex*xV{p<49~lY{W#q%}b!DYq6%-bB6v$Xy_!TWF?^;$1Clu{wC?4|W@PmvM zT@yyH+@coT<1NK#oLfz@upDD%f{=o2%Hzo{MJ0A$TrQ+${d9wf{`3?v1Z6?>2W2o~ zCbR;df3(R9qVZMhZB2rAFcFbh7O7X&sbcCQi7*Tyn_ne8f}MJd|A03r1%o4^_)2L0 z%y*Wu8wLMk3}e-b6IVDXg(lcA!B`B>SxN(1w8xQBzir?GrGg+LGk6euZj(N^+o8b{ z=vSVH0`HE%!zoPmT5TpMzP9m)8gc6t!z9x6Y9n}b{rdYo>+uF>ZEIT+z*3^>=#Yq! zb&Ji$)=pa$zhXOTmJ}Tx*tkQ&yS#6O6~D(Y zVC$lJ+CmZ;J&51k#h(1%`TBogPJ^-Rou}|$FL#H!Uk|6HU*cKuE`7K4sMvuj4CNI% zJ-vaUlGh`o2^i#MQR7=Kwc4?Ksyjjg75bO;g=!G`tBK zo*A`_*8>?jEz1xE&WW@29b{?QlX0P`EYss>5;(JkflkJ_DZgT)(+R^!#zO~w`}lU3x($voRb^JUgrsE_!-eR=#1|PFE1;FF z$3l}cRY;7l*XdI`)9)R#T!^QYAP`?Ea>%0aY)xj$=b^ptfdXn&6s~U6*GR;rZPsAg zX7%5pNcYLDRrixsD&Ji^Ki`}0zl|?bxo?G|z}LR1V;Wmbmrqo>tdpc=v8rD*<H+s)0GJ89b{E%3mhG-s!3F66aMBbl2KW{T>Np;{^+jL;~1ZY`(3<#kh zEOA$S!vyFo-4wd~#*e`L8&w}vj#wBW(k4_hlg3hLhq<9+?de|chynCb(RV3u@UXDg zhW?0nn1mMH*}&|+uu~9EwD~#5LFsW+$!u<4Obbe7PQiFgLq&X4QER%$IjCEE)6JHm zQ-2OSOx~2XBbx$}V9SovW1z%*rNdH7H>Gwzux_d>m=;E^2Z{DNizS8Fo)KuAotbci z(+uDH1E1Rx;({)*3Hy+uxTT0Ng@^%Kl%^}HHWNE2f&0^8f#p1(Q%BzVd?iaZ%^5?D z`YuGkUt1wz?`PN?DEz;j?<6KZYOv7IA$e&`~Z=nJTtPyRF;N)Y_{q-r_DT#h(oCUSj- z(!2$Ov79TddlOe9aqFVr5ia9#<&!YH?rC4AqNe6_!xKR*@BTUTcl^RdxkL~{*sw{b zlG_*@IPIdHU4J3IY1>?w2%SxjIcZZ7;{QJui0>&__si{f@G^Vc;O@1jZlAq(ewv5u zO|Ef1APxB_c#MTBA4DRHMO@f3xAK}8Y7En&akbA*j^~lGV}HFXRPhexVUl)@#zJ6J z7@&Cq6Ci8D5l$>{B)K(osi4JxU}-Qjhb*Q=;Y0A@gR-W=aL^fx_j=}+{|iS$UI)l_ z@R28LI)`cc*J4&_B?1j%O=91`(g%fH)sJh)9z`D!5b$hrl+IgLHMznGw5DQP8~)2d z_|Za)r&G_iBz9>5(<>2xK>V6znU^@>UnjZb9gZO+tqK7X7C)cFh1ulGgfsuA$G#S& zE2Nfp<+gtpfy+-hanzkH2M)4u)R+Mu-qS?o(arU(bJlt0I~=Z+c$-IX)r>cll4JAw z*{AsY9_>KTLmUnRv8s0QE5B=q>LPHOM6Cg1fr&y>d;B#3-BLB}Kq`j5{$WRH7V>V3 zI=X4fMO;_aV4+4s{dgqF$ccbMvMq6lo2v%S*oy8O0?uvo3(PWU{&?|kxBFK5zy>ze zR*w)^wO9;f8mVYqhv6+T)`@6)VgABRv zQ=@Wk+0ZoIUm;x6$}Vv#K;2EFD2*@^qIPQPigjzSnnVkOsDPajN`56+*uY2%yx;$Q zZD06(T04*DyW_8m-YJq;9@O3jjAvLKSJmZ!79gI_*49=3;rMiXG@5)7J&L}u&62I2 zS^bm!%}y^MuRFUj({hq5%FZ!mUW5(2DTJn}Y+uiAI?b`MTxmHH>`#l)HnkSqMRSxu z4-}xvunbD%8I)qSZ!LDHCoA>bNT#9a57z08TrV11Njc~6x-@*WVJoCOB!DpnQ@NAy zCXoCC><{Az*)op!gvsDze~H9Mf{+O=E9ah7{$%!jvN#}oF6Gb9ic^|@dJr7kSl>@f zg%=MtydR;3v+gYTa(&D8^~{);7uJuSoxAq!dXwbqg`>3u0#Y^3Cj5YHTE8jRibi)A zE<9Uq_LbJ(k3WB7M}R!v$4-p~t1&m-?G@>hP^zYa(+>{^%K6O-$wmmq-cvz_fhr+O zL<^|&&&VcVyRI}g45>{%+t zX>%KlU)>R`gvfSxwK{l!`!?PA&zpT540=JJZmnjh6pyhVw0x6_`F*cwXx!8iL%&HA ztfCC5VibCuGwkOJWE9QNa5a&dhXoR+v41lRtJDwC8v7E|Jehbs6;DL$tCwl2{a$En z=0(!O?wLs#lmEAk|Id+5yA7B7H}w?zc@k^0(Z&TAN@z z85&LPEXS+!8qm}b>s6qKE+rnhJTzdvvbUcaE60>_h$RAY zh7w1eInv>p#S0a>v!krkKJ=@1 zaXgJ$gJyaYjNbzztjD+nP!j1%YQD2j*ckl8(-la0 zGjsLX~Q3ap4%mNrnMZI5N_`NU3(VXDDnO5cqdb1Sx&g;)g0CR%UkyiJ&PK6{d`O; zW^C{sRt-J9T$7&X3P3l`Z7H={wO4kocS4E8U}Ry40&Uw$Gdpc}g$}kS-A$`tbVxj> z*m4Nl!#nrE1e4MXw+XD!UuF?W*noXUHk8;aha|x=7b3PgVkj|vEo4BB1kafFH$aj*|>o{X4bJra~ELMRhw(L(NVDl2F?%ah&HorbL$c^ zLh}gBM!bkwJ+G^=BYrr*?{iU*lfHG4#moaC3=dBiX2~{(;9Rjx5)x1vjI#1l$E6jc zx@;w)=tX@r5^x&bT;%G2glM6`*}O{DQUx*Cp$W4LbyHXkP!^FVO;GKYMT0d7j&B9> ze+aK@S9)LXzSpInFFjpGc300sGnbWdIy&9m(4AGfBCb%RYX)=t?l(|bd>^Q- zR2`31*M5b=wgHg%FEsw4X1ToWI9%di>LzJNI5A$9%0^mX=@Q_Ck-oJh%NhnW)KZ-l zBXbBgSN5$q{n8ALc3fER0NXznobc)vY;XW$ihthJ9idysOsiX4tE;#%uD|C`%dSlu zF4L*sRXDFwi&r(z=pOP-JSiXX;YvCqF>m{9@SIB2pV~r!tE^eD-m+AqYMPe<(%l>$4aGWa<``Ohe+S#7Z%e_~K+t(GQuR zx_%}c8@E}+;RF0FgH3KCXefrIn@2Xmy}J~elx8lo3YK9A(^u`m$FgdlyPi7<5b(GJ z>K-a8(vU}qI5vyX)OF7kfAkK*X5PepjZTMrhh8)|ui)Ok4Hrep1S!z6C!QR`zPqdU za-SbHhaC@FYZ*^#WhJ^Mbcn)|P%`apAv}(=8g2S(o{0X<7_moSV?=MMS}qJA5WNs< z0|U+6Iw{tJ0UDjHiM&P6XZ3rDGy@B)b3ae@DKc-u#6bUtd-xq_^`R1*wU}HWMMJsI z@wCPJwc(1~b(qAodV=72n8DcDd*jmXat^m1kgs_^V)v%5oB4X!{$~Y4cKTSI z!1kL@WYEmQ7Bv6~A|z$U2odl@95lQUA8MbSY^S5v@5zO>ui8vbk1&$UO4BdMnI7=3 z+v^4PrrOPi{yPK}2b5Y`TH0Bu%iO*9{XC8SdYRR0ZC^fz?+-KsOeS1LL+6gZz$I+0 zk{?4PR6xuGQ^TkdR{oX^WP2g&Hd%nH5++`@h7A|HvpnfK7zr>V zuc%>x6Uxq`-)#=;_uE7w2&G-mp!D%>`0%gUxtEIT4|H|i)1Kde71&FJ)j5~c6pMt9 zJ`8@)?GGIS!W0BM&$ordo73qJXs_w#PL!o5Jm}{`C@Zk>w6hY%4o1@q@=L0J>w0gP z8&1P6&?el|cJamKgu=$XjT26Kd2U zQo=Ft^po6vPHt=nfwv2z0~DWo+2%x%zKA20{c@Fg=@eH0P%#_qc|s&aL9`W!9T!))=f0MWJl zL*Ki3lG9{ol1tXulHcn9IliaG91u$y^$;~oR&CbP!p2eH#w0zyPydwcuQ#6;2gIR^ zgk-QM`V*DwvmVZMz3P|ny zr;bU3_;$bt*!jM@4TfKx^cu-S>^N+*cawMh&X`UZL^DR(Wjh~g?vpTJsS(k?A=M_8 zX4Fb62vN*%2+VO)!0VZG@Z1zX6SDgMUk(^SqFO4{=_Swmf-UKz@;<=Sd(zD zdPqom>-A_i2wr}SFDF~7ek|i?oqz2Xb3t_J2Z|agvbfWz7CA68egdee-xJBQ8sp24 zHphS#kAllX!ZXSO65$crwatdidEpfZIqF866u%U?4d_-`AoshTZsW7OUYrKRa70#Z z*|DRsp~e4WSNTunCrcCQ%>3;jC?Cl{e~})WG8hs_LYxNz{lma7?@6~TSam5hyH9;v zUELHI=?XG`Ym8u=wwWiSEnq)a_|Wr<$QG~ufLf-J4&3Pmk|eDUwdq?Kf&{E-+C|HD zZE6%Xk499C7>dQRK$vNLRM_9Pn(61af3vRb5&TN}XiCgX@pr*0v%i5yRLUblY8$8$ z@Ls#`eTI-Jd70L;)xK!qJ{*cw^1}n8OvJD^C_e0v6E1!>idoP4Oqm}&Q&Y)uoqw14 zV2p#L*d&P)Z_IUfusK@35IbJsw*`5T$=kCJPLpe-`4$?|b7;Q7kAb_><(wl!*EQr_; zuP%ojjGumW&DElF&vX4q&t5`DZ^ zK{;q2c+d|Q25pU3;o%>BhtjEoIS5QOW&|YpiHU*X$I!r*M?j83HxE91fs(lElEgkv zSd`EOw0A_ta5A#%ygY2H)J<|tXUSs7U+1Qu_;Ob$9ti{&rumO-1UT!8S-(H{(hs$G zSMR+5)44w7vHp+M5^cwoRJE$(87Du5;doe za2N&EzgI=PE03Cm5?)gL>*!MfEdcpujJ={NTE+q2;T)DMBu`G=%+d4hMMwN$@ z`J1WnVq}TojOlf@>2?SEua8VuUB_sjjnAD3OHVc5k}{sJQ6X|FF822j>fmXLT)X83 zZqz-_<7iz9M= zqAKXSe5yVrgPNpxr+mlMy=2gq-gszEGb22AG970CdJn8c<|^cgLfPPVu7}IQ)OB zH2wd>(^arV`956{B&55$rKLNi8>G9tyL*wA?r!OlMq0XAVCnAed{=*e-w&{R-TUk_ zXU;h@_sqflz?_gb?+&HBZBH!%6@^AfMm`3tMR`ui0Ie?LTmae+DgRB5uW@uRRAY_Y zxD|5|=oLv)Qxi;AkB=epa;o{mlMWvegJ@DEax56$F_*X0REqapxH1nf+PG}=a9h2C z4v_cnoz=p&Xigo_IxeE^1EQl5xvoaj&H?WqLFyaRJ6EbvasyiwoafvXm#(-X*DNvT zit%*Z6;KmftFr#KgxtEn zkUp27BcobLd|H{!@93DIAh>tXpK|uJkN*LH0>x1~Hy8gHj)Z9_0`PpKvvMXUeT)gu z>@|^?KdvP|znRMGi?DB?2}~WsYRZU!V4Jr~hyB~?v{giD+-VqyfVb&tQkv@jOqz{Ji%5+t=nL&a4cg}yUe>JtMnQrX0DBtrC^WJHE+ zc&e)8SR`Y-aV6GEEqFNgJ$MM7g3oEkneW*|`y1ri-R+F|_$unhpW01LkNu0R6Us&; zM9+}c00S-}#kk*UXVOu_9JuQt={H)?_u!FW+6{42RS`Y17l|MD4nK?AOq5&ND6)C8 zk$lRnI7&Z~y=4r~v`oEg^<@$oU02wlOzI0~Rf=#zfA(ZsdayQ>uQb|LI`R6LUIM&%eYj!y1v#K2_y;hMrOIO+V9bmvVy+2EPnmpOSdl z!E|eli=bC3kp(o7w3%kz%Xn9-Ey%B5g&j>B_P(%^jl4kYTxN$|N>&~bn874WvZx;WagJ6pzjXM6Wlof$piP2{z`(U>JX0m!#o zvU7*tAXq}!Go4saW6IQ3hg<+5>@BLbtt>TF8jYx*T6yQyH`diP;Tq^w1KZjgTUr*i z{ZHRa&rXc!$EuEMIwsuhT_@rQUc>Vxl?p8^ONr5xC?;z$xjxg32s&;5f(3I&wC!&2 zNXv0iguVV48&L?GLFD&A??mFbY6AJ7kPIjs)>9~&WF^0aXcVu9Pc5K*`4%sQWFD4D zT<6`|cIrMp?tc5GzQWG_-X2%VjHzsK?(5xZ>k9kcvFoj-cV!BZz|Ab^^}1E>728dx z9%5FuFSQxTX~mW+2nTomjq0XLleAq|3ZzKZ{+L5~3hGe`bL-?C!Q`STx?AyoQV@LM z;HMyB+i*x5obU3*hw^&zrYCi)&2?#vn(3Cg{*_oP=Bj;G`Z>d}K95)CGEHg>)man1^4`}NAMLECY7qKR!XR3uLk>QUDJ z!Zg$9Qs1UPqtkF3voG@NVg7gH>mEVt+2ivC*8>8MZPXg7ki`x?!=(wr7VTp%$+kMe zhPLV3&C=C6k#iV9`LKxXBPzP@sb>e)ZJ3jgZ#0oYZ~jrTZ)05#>iX$jO|kw10uQyZ zzQ>!3=3QqU`o1@jcbsU?22Zn((I~lKx03e_6zj9?t?#k+)cFv5S*HT(09+8Od5gtfXT`v<-e3;Nv5T-?QL@`}$&RJ94(? z9cX>6_szB1dMFyw6_FUSJSRv{E6NF`?J*Z}`w{NfG!E z%Pkoug5Ip#-&q?!pG*s3e+(5t-FIFeUx}QdXkYQkbwyE3|3WrXGvq@N{$3^zm>G{e zuUMb01k2+6nF+OtIfuQVh1dPS44XUR)YwaLA#K3vb0(KB+ld&{s_AFl2G>%KpdkC5 zoV~Z4^FQjtuB+3f3iwo{|5)?{s_ts^z5n_8obxt9e6QkvDEQnNP4L!v(v|Ih6N;Vv zb_!lWd2k;ZE&EoWfB)hBA?J;o$~ivK^Zac-^gJJJmx^%awps0Q6{sKfRPBfRy503; z-^=NH_4KoMwd15~z6<3o`pjiu%yoI6Xn$R~Wc8^st`m|dSt@LABd=&OT@pUZP*~6e zvKaJ9x;F=_{Ika64#cNJTx6AU7UGeWedxg!i2VvE_g4Hzl3GNZ35W^VsZ# zQ*M5LEK%gkV`Bwc#V?%UjDB8Ua^b;mBkVP2Oi7GF4jDy%A;F3$ovg!e*V51d=XtWu zpe%vO3g0Hu9$LORh^}az(Ln~R(z;wI#&<7GhYN<5WdT9RAEt6U3PVhsh@~NQn<4yn zs-H_HCiFpow~^bUiI;7K*KHWV*9+qN4dVMi;`=e=gLrV%46m)rA~ z>5Nu(k8Me|9S{2LQ>TPXUDw2Z#Eb-dNXP?~gabQ(EIpZ^1 zpiCR{wUBDt))M*wse6B7^bGD=GJjjVeey5qI#+l*5WLGKe$4ZK;PnGeI0*?oNP4hpJc+!6!0mu34 zmf(ecZ`ll!|F-Db196VH|Ls(Pgy8x9)Xv?z(O9N6a6d33zNHv-nKaT^nEkUG)~G#X zv;)f}{YavdYSe3Wzwys3hTM-lRRk0v#~j3+6u6Sb+k%_IGQD>MASS%<1SE@L+B`&b zaak|5s0HUVA!O1$m|{L;mnW8)n#{>C5cOMk4r_Q^2ToU%0iaVpga#&gZP zP-xzi_gT~C*fA%LDQed%e)6UO6EAbsll_GF{?C@H-cLla*fmww7_ZTa6Zu^1WooUO zZ(QutHjuhdt>=h=eupKmhwA=^CF?&xgI#f5=id~3Ht*Z~@2I=BO8g(eiv@1i4(@IQ zI^P^LI)66qkPmKM&{EB->w7(JZf=r;{DEt&^dkW6w)^O}b!xwz{bSmB{fLx{{s`8RJ zBK1jah?w@8k0U5(bY^1qcL(Y@D<-&RM!!CW6!dtbO#k+1#mop4l$# zcwqQ?;HeaA1u|{%9N3HW@1Va`yuY&7yLFb9)x)`}4~zr~2{oJozyFH2MKn zaLR+dkoY`r+gs*giQa!G76jDypAR$E;qAK zUQ)av?{(2Pvo9&jT)T*|EuWvlNr!&vLkX8-W)D?92gv3^Vs5-4NlDm34r1kg)^#0q zG&f%k&d=iLxZ=~X-XFR4+ci-Rkz{E&fi5NB0%OU>sKK-K zp8eGC>%$aA9&nJl;%5Du{WO#2kX(|(qc&df&d!bqUs#ZFIrJkP?}8=e-43=0%nD6a zv=m!vq_{_;W~t_sln-}#^)27*S^ktICthBkZUQt6cUela<2CFB7r83T{~{R9 zxZSDM-{0XQj&i(K)CRC2`)++lwGhWiS2|s+^gD>*&P~k00Umjvm*&VY8`TyYP4O2o*_0RIHDjc^9sVGDk>RY@m`w?%tl5W0I)IobM;@ z4?bc68O0x+33x)Ut*kQI;?1PR@Yru0rX7*przYCCvt3(lJ-(YU&*bZqe-9{akJ`ci zgt{nDJFn0I#+q>*nbmUtixho7Q+7e^1o6}ul(E4@=rFBAkrI>7NJ18=g}6%==}oQ$ zbS;f>uwL|HWKpK5ZX)2RcWuUHt1V^oTCE16_>-k>>N2SNA{%n=_Kb#LG@izy^BngU z$Mvw~Y)%Hg!doa(Bg@v&lM!MNbP^-Do~A-AeZc%Q$V|rH+D;8`b$O<+A)h6Gg_n*e z2C^Ge{CRW0zz;*t8&y|J_dkp{s@Biu*c>f5LQG)vgf5KA%c4fW=LHfjg`UaYA9BFq z%wm6u^+@lmmXmx~m!BeClq)Ki^R)6;-=z%u>3$OMZ9I*9@axZLKSDm+V=N7eGH}#x zKr5CcBbT`;Qik`^r|S|B>)==4N%^6}V+YxAid*b$;C#GY!1T-PRMS4@^}uKaQG4VFZ zfXs+D3nY2mItZtaTDgIUFQa75*2fJd-t6p?FWY^Y4IS)0g|Cip(JRPbKnnE>TGmn2 zPZ^q>^gfjlW$3ms1XA;Pmy!EK-;p2>;ETtnd^%Ruse5SSRelS8Te}R3?z?-%)dr4cP?0`x{K5w_J4KS{%HZikzue4LF@K*OUsI9nCI1}( zD{So~bqut=x9k6Cv!{cjqwoNrL%J+7%u{rb!bjz#&L>M%pNo%r~t{K(^lPVjp9JUTW_$$&+apN1wo%f}Z; z;^V%&;m9ub>6{9g9I2OTSdj$kXdN+R|0Ji!Y0KWgKz7>~`;6o`oAnZRLm-}?!J`?x zWZI5Y80^$mn=OsyM)PXz5rJb#S%y8E-bAXqzlaG+{N&xsXZfS_Fo6Py9Sg2a>A;s?FB(@CqF#d}=$ zfOPp;YF#qR-1mwusbti`?K8HqjFA_U1_(Trmlh2W=bcpYaxm@WviUXQT8V2V( zWJGDsP(5oLD7bOUvu@mkO1{4epi~L^{y)+qhtxRbWxBcYNU~LbZ7J1^h$xB7Lqc_9 zGI=nbksHqwlZR*XW&6UO*wac(M&Um>SJeZW^mUaVvbchmB;{9X`4=g%F+}}aeB}%=5UCzgS9Uzn`+LJwT3K?Adc%J= zCHbfn$z9^uvH7~9Y}fK9hY}$!d$*P~7I{eh=pc;3BcuO|q2?6@Z1Rh><+Y7g>RDHc zmk|eA*d42nlcZ%S^d{bPv#It=h>(^1cFK+tsi@f%-{v`Y$39=A?z)JSmFAu)SNXb& zH-dBV5WK%G->1p(E~<_9ZQtvjkFf|1lf+?(_1?t`wtKVfA=Sj&=oio&`f0&U_qvA$yB?YE7rd}(8MTp?^y$GBoYfMPTPrM^pn zC2-FuJA1;+Xei|;K938#fa>|}boDm1iC71rMM7h((#%31%$LAC)%=$#pT0DUwu=VL zS0KSO;$}WjL?EwMKuF7C2D8eV<|i3<0xSd4m*YCJ)4TNY&NsqDdeQv~&G}k_Totkn zKUZGg+*(+dJcpScd%~*=S9csN-9)zB6R(c|e0>eBh!0E`IdZ2(Wg#j~%cK3|?WZ0b z@39?!r%r&7+7D}3RR!Mj&`q7#3f=k?i#?tsxS?|p`x}W64gpTdpw3JE4*xTed~j-p zh2$+TrF1#Xuq`decvZ&2;3~J4Lu?}FnJL2qn}=>#`09W>IvsoBlLFn$73|7)KLXu* zozl-zw=+ecr)S?EO`c+axw#$LB!%#&!a%8j-DFf4qm5~XO65iLVk*2bv+>&y2-+lv zs<+_7*ratT8D2Nwd8s{j_#Wh~kH8t>0-E|QX{1Z){3P|yHAo__Ok9>thDz@QNv`sL z68b*H{v;j%X~DGSSm&zif5_;w z@Ns%5Bvg)04#Ip9Q|^GhP(QeGG=d}zkJdP)CKeHBxR7EapSjld|a7BHVMa|e1DwuR4J z=+dH?i1p*DqqzIfyT)O1%3Zf$c9&*Fi>q*Bj!?CX_zGjU%)QkfC@-E6i|Gxctecak z%9lEwKg1Xei@0!Xn^M+A!I9}^2TfS5`%?ZxJd-xIlxj*H2@1z;h7uVY@caj9Qq``` zBE1=&!8OQoi>ts5hwUNX*}Q_9=5#eTQ)6|SWyxIpMrKXBwkaqd8;GS`#)oe3wJA3X zqNSUDwg*lh+kD-ovujLfEd3Lx$UC_3^$&82h($*d(BlV z&UhNc+>sQzp6iV~7D+a;89(OTvZrR2s_y1^HOQF0+ga%^Mx_;ePG3^X#gXt+fZ-0K;pGxnH9vz?S4U{Q%@<$6c4+*;71 zF?fznHbzu!TL{-AQ*?fN4~j|9z)Ae~JgEaue_-MhUCz88K#M^Q{ax*-UDpD6@Tqpb zr5};L_SM1AwgFS+%@tAUR&ZlZ(tb|psYHn^gtQ^a?JFOg7ajO}&Wmvx`V3U0;iGyh zpW3N$!z#v_$V;IP`|@=6xn@sA6_$w<7+7KAI1^uzWxCcJ_}NZjaAsl*^{M69pgLC4 z3p+Lf1?{iUZ5$Uzz*Oq5S8>G@dy@F=#OAt&LX;T37YqFzB8&C9@t^%EhS=DCE z#X=G#!S0gqw4qmKk3Q-3^?iylcm|v#k|r}8K=zfBscA%6DkQXL48~k5eT4K^uY!;% zwrCL{$32Xn4m1j*RWCsF+ikcImh+k9_w@~QIllsv)iIG@{kKk~*bRv9(|Z+Gv1ok7 z3PZ9@h>Q^uGW-45^xtNmOkZaIGcy+_zcB&;;N`qsUB#$Y6Y>paoIN=8p z{rJr{DcFyOl&q;k+PjGuZU6Y<=`Y(h)~DuC?#-rRagsmw*5LJ7K{@(|;c zZ)8iNwdo_MYgXEg1#{{{Y^MUr0f`=~vpRKpyrDmu-x?@rlS2v=o4*UGIOFpsXy-~c zkD4!v#3@3mZWmMYjNE?p_VEyhhej~(#_|fWoLU-7lw>loKLG8S0YEkfw`bfoNDzQ&x`X84dBe zl*HpX?5V=V#|7wYZA&jM2^fxo1~j_N5ivM$WyuD$G;wNuOpK>$;7|_0PrI8hzd**dd<* zY*mpD&a-zRn{2gh7)2b)k^YA?)QqRA9X^i-?obd^t}E{*4T+>E*^WNV%k{jI?uL=g z9Yd3WK`aUTo|C}E0-<{#piem(Yb>2E(HcSM70qWO^t)|Y;7Ik4;R0t-9Oo!>3n8?M z@qMU-8Y&(|Hx&)uH;%5t=HjzhM(gmJ|AGYBohh5=Wr6s0>wJ`VmElWO*-PR_+=s(t_*pW? zu1eZ&q_Z7vdK?!GpTaw(Rgr-fvsaE09IZWV_-$Ei{yQV8Hma7s&qb&zEDQAeF-OsoWA|QR8;LnL zWyFBy$1MFLwR#_t(jo)B_KPezf>;Se_wYVD9jtj>ZRtFh9~DoHe_6vXw_MxKs?BRU zfXOVWaNQa$v_EaweU!u5F3L1Tt#{{HRh}5^E|2xxSLz8_?o_5Rg-Nj?sq{^y;=o(; z17I;^Tz@FY$K|ZU=YNul`|Z|)+gH=vyd@7atESj!&HT#h!#OFrYCb>j3}eB&#stWl zNFv@hZqE}U;x3j3W)5&m_f4vqCX5#~Jy2igFH2y0n!l93N`r~m7UX6g>G8VW4@7=R zgI=Q0VxgZPx(kytdwQqs#?nqn~gL@ZB0L>$A*l4?qg)@GY}cNOO- zfg#6U+3~Mr=fg!1lcKDMU9B3=M-!R=bFUm8;gTup-9BZ9EL$7&sVta_;j-b9bm8td zp2aBnQ?vWpxy&*auq)Z5iC)6>H9X+Mj5;w=<=h_|3UN>+pYpfMK0u`~XD7RcZlK!l zl=XbcTK}s*xNv+GhY@afIbPHoqBBB?lGX zb$A!E&J6Te2S?EuBd16fW^!SE#OcO~ERP&O=M}h|;8_|Ib zSY*g2CyR|fdcc?deqE0}-c`g{M&b*D?CRO;Ku__JD=~N3*wD8;x6mp4X}*1l??BLu0JS`mgvN4v{^8|HmX1%3`@_PQN(|0T^7#{Pmi0&Sbj6CJ+3Hgn{a1$OW{*!~%{MJi%jDOj#<=txV|7nn z=fGWoNwf`)lGulr@Et=s>L1~;Y$rXb`_fO|I~@{mp4KR67>d}aC*kBt@c*d8c^}l* zHesj6Pog0VuCd$@C?G}w>^ZvmAXT@mKrO%vyHF-Kk?};s6-4uJIr}%ou9En(#T6~; zp~3xB{NAd+XH?@i&+6+&Xa5M|`OUWsVEJv``Mqv_z}R}uC$kbn53`mRE0m&zI`oKn zay?-}|mSnLlOwSS=s zELRtgzU_CJTM`3}vWDrlj)8#kCEJj;YRZ6Mm)y!>wL1JKmBZ|*tm#DDX+v+SqI)iPT<_x)g*a)a% zq~w{Y<{#;^9CA{4knDPFg8D6(DiCaoWWj3Q0kU?v37k{Uov3k?j%^E|-+B zbBj$fffwBhTLLeWMtiX4vJt@P^^|!de`dkQDe-@X)5E#JwTu*o%__rYOx$B_L^f)B zM7r5@!;s4S)YBm$$r*=rX0;{NSpCB`XPG+hl(&el>wMgFp#U;X*>PX%^e)MJu0J$n z`FD^mT}ozHl_YzOH6$@71iA!>=^<&!*Relm&0N^S-1wTxbbQFD2w z5z@=3rNiQi#`0%FzUGJNU$JcoExxVIXV4Ph#fi1~3a@H4 zboWZn*qn#)IK)YKi8j^Fbd(EL(476}eTpM!FtsQZ5{*?FHru7L6GT+kV~ASPfBT|( zwUGz04rjoD0Y$qBWE*XPlv9Wk;@yCL5N|9CuJ|*2FNc9RzamU{)H*VlLxIK#l6p+>9nV~p%bIlo zmZ@HCE$0%Fwu3r*(kC=;<(Y_o)pt$Dbk{Gf1BrR1pCEk4Cp^nWre&aDRCcM2%VeObdUxxonD&$iwPH~`H z(_=^tc@Uji61OGub57;VXkYpzGjR<*bP=~?H?axWJIFQ#FM}$P}Wy_s@Lt(QqI$yxV z0`kbS2cKTX9T9SE{@8|$ydB!8K5J5&XHl<&Yx?8r+w~1NaMvRDQlYs4fIhkXi5b%+ zOF^~_#0dsvgxN)jmnfvrC&{cFWf=;kMK6wp9A0Cs6Xci8FBCb{R5q`M`y04FMVmAn z+_HMt8LyWP`pV@0$T_g9%}DQIg_kturbyBo2y4Vked{a-aLP}u+$szXoJnZ0-c+CE z#b;xa;iJu#tG2e!A18fsIN~KA|Abm=>F3*bI>b%Gk>WC3EtPs^vCA=)0}d(QC4!Q(>n24j3h{V?tnS>K?L;X>Fhbo&GDXJ zzxTN4w^Y4b2|yqY24fH%*7-NvX8wFweAC@bqf8M+jxLwvV9F?u4BSoNOZ7)^0gG5g z>al%62P=?w;%;Boxb9n&ras0Z-~|7;8;R@#xhifdzuT(ecNxL-7I&dY=0u;X#tjF) z;aB6agZn1Nxzv4fr2X8oU@A;>e+vNw6r+C?0`XgPZXwIPKj<{@aQCg-?v8IoWM)q5hDd4Y?}kEGlKtBLPqzUz&?c z)5_2qFYToHxat*z?bTZ*ht4_;F8;O^MOI&c?BK;bFlCYC(hv5+P@3WpR}6mmEp6`g z$IorXg-MpI9jr%F9$qnb8R44tu#v7<+-iJCpgQ;+!~4t2L^X?@%W+;+6yspvShl+3 zDt)*2GVYwRejzyT62;p8sq{--Z$s6MFf_C+^1-%cal?z}Y;5~~aELhA>zE|6=*g@o zKx8ERA&&)XF#5h^7)$*MuW`|sxj5ELX-pVS5jh8Uu?79$^T-nn#k#>%^9XzF1TgCO(_~{ATqI>PS z2l2@3Z#oPO`gPs?6|Zw?feg6UOMTu~Z-S)l>Nnv;oA0 zkSJ{aseOUH8ghmK=P|>*Z=d1th&+tk5{<#xa^%K|Px%&Pc{|G{q2N$D)xNH%KF0>q(&IW6* z!*1I}YPIT-Jz2wr8KTg=O15BOF2^+hB(0>nFEp=~UIJ}-FRkw`<~YlPl0pEsqq2-2wYB zLJIKRxQ4XwON5L16CYyNH*{7#9t>ojF!!C9$)#(0E? zj!Z5NsSU?96t$V8`BByWj`nUd&}7B?nfXLmR=kPSE^|3eV(9S};M%bb{3$AAUVU$< zZutkyxyVd5{r^ zl7kl+N5}BwbD4Dxzf7Auy*u76X%%M^{Zyp0vW68+V z0`Tpl`(p{ga!xMMi5{|z&qHAVtUyoAkp3)QSFUdPDgrOx5R@t+H-?=ikEYFUd~yzR ziOOy(7cCLs5ew!@)56F}aT-B}z~yt6cyCyzyB4s;503Xh0b)Im4Z0Hh*JAsdkRY=a zQwHfV`jXumWQ7J5E|)k(J*uJ84Ia0U)SKve+V|UZYH3Xqg_`gjmfP+~@)nnn!@%Yd z!ztk5K)0y)v=!J#Xog$6e6_bc^V#FQkzIPGi5y}O4U!a5u;CySH?Ylym_f-|5h{D= zKjpGPW0WUkYm+7BgHcKEA z@lA>p5fU?$i>`2SkpZ6#rjEEON@Y^#e zKP=otF9o{63y_{6O7|$yEZ3as>k;w!u$>$eUAgCQ=`9DkcOI=Ar(QIbtRYpmKceyZ zT>qNaxbz;R0Fk5wp2x9F3B2Nm$Yw|uQgUlJ}GQwx`+bdD)m1n|DgtTZ*@rot1IJV+sROSsap{6kPR#(u;QjRm9vutp?!vT9@PMT zjkKN}@@;TO0Lpw%f)Kuon{&WC<+GHG6a>J#SpGq{0Gkqs&jEWm!uo+n2T=ZR{!dTf z%QHS7vb_#Z&M(d$`oxQ4{YJ#NA4^SB5MAyF@TC*kRHTPO*Zp_LFP81G77l(e*v_gT zoVW|+m=k?^NQVJ$C5by*Tr8qy1Lg|_|7-Ab-h6#|Iuid5m{FAOx7DBqT&I7P#vwf} zUN?tGfKD8Mpv%ktV0%K&J8KKo+9p2DXVQUk_WF+3o!1$}+!8MPjO@RXmvws5M)cRB zIq}+0P80~|eMf@$+HpCoet!ppeA@lfZ@t%HZ<@_0sgMXd|#m4!0N~82r1tsI;v7 z7$O=zQ{SJyLQrj3+~m0CIWX+fdVGgGK6j0@L?*d2z~YQl*Z0LGn%JY#Uz2oOCwy$r zn`YD`JfQ5L|xL1m@a>C>k7x00==C3j&&<`C(U99|+U4FyNSiX!dn#UNVBi~pQFPs2bTR-JNi1 z?G^(U#THo}*V|9FCBF=5jaRwTVrrjI6u1R|Cq3ez?pi*TnKoE27n(NpSoL`^0c*%` z{RN0(p1KF1hu|n2ov3C2e}0}lLg7i_5X2`O6C5<9v7chQom+M|?|A*qr63y6nfjv> z0GVu5Ez6bjY)UMdK!^=eBtbW>z0>P)Jmhz7XM>qRF3^x9&}n-Ip4?VF`5hAf?^W}f z8EVSq8}=(4A62l*W?z3;S|P1(%uvYIn?THh%6N64Ld|AWAo?|_#n`v~<^0o1|E$s` z@uUy2y zpIP}Ndw?+-PZzIEw|l6|KHOoQo=dnS#Tm+_yVvn+#f^=Hy@;(WS?i9jMojcI`=9(| zVBQx{BPLNDY5ox(B~YOuY=PTIVH%ouMD2Kp6MJq!-nqL$AJTRb++NM)#f5!)%^JWv zSYXA}Yn?8%EEr~;yHg8jGI)`N59QpQz+co6BDB5K>0v|}x`n}H#~;FC+S|P><32L* zn_yg%RF@GG-6N1p_$aLF7sm7GB0vG@UXFcAqhP<+j@@^hkA#v?nCZmYmWJH0EZIoe zK}>p9^7#FKG78;-k$H)7enKh*?w40P2YsJ&=X$ddCoQEh>z~MuwKr8X`3)M%mN;aw}L*7DS z-)4`}(CiO9>@v*#YX3vVHF0iR>iXC^eOA&a81J~z+;Q77p8#YrTN<>8)YPA}4_g;B zofSM>6dWE{9%zL7*54YebNf5Tsh^}Gid-`D118Q`+vf0*{vhMIIF5xi)|IRzmyBSBnl%#-2i+d`3j3 zw4(21)&x?_Mepb`sAUj0%$3IwvSW3Gis;Aghp5jWk&0*?uQRMzT?VeVRN)JSFfUr~ zcN+9Y)}7IxO05hIZ~J!_+fVJXl>XBy9Obl^adIJK0eS%O1>qS8Ax0y)R=!=-mAt2S zN;)u+(5-DR1RgXpY9ZUzx|HLuugSYAFBR1~Vn54hjfKmnf{6d5L*SO?wxOXecd#3h zn_UHI^zI~k#&yK(5%)o(Y%}S^)t3rdKw;pgxaH5IFQWNPd6aZSdO$>7tR@Kr)`U~x znIgMWspD1%)Ym?WtThMiBlG{de(eK=W_B`7046f*kpv1u+Mm-tW>%hm=h3f;{ecK! ziHY?Fqyjdpv{i)KV>Ou;qb~&*eTr$bLqF!7$v2InGnpl`qy^Ze^-qugc^~bgEL%mF zT;wnOtv-0(AkbO=I9Ng-;g*fWOb`t#N|sK+_1qO^tlPdxDQfWv&dN#a00m~MJ_-xa zwEMq^&3~UgYH4BeJ)@JwmKi=+W4j}u2X_(vHF4+=9@)Hrvn;H+c%L@njJVN2w&87d zNvJkQ8k*FP4k&dML#=r64n{p$ZR4?BIWK2&fb`L`MIMz~?zc_@2;@IVc69zd_MDk% zz-#ViIjAAbU#FE+*~n(Z*|JtpL!#AGxiVz&7FIcE)%7J|SQI=^YJDN>^_{phS@hb; zw6rAOV@-XhVcJM4jDJmUGoNSCKiZ@H>oWkhz`3A4~|B6DV^1TyQ4oNmBvSB)%dKUdZlMSZVd4u~3xp%%gPG$#MrwE!$Cv_`PPI ze;s@-C+$-uq<4F?h+D@<@QiZ755*f0K~+`xTd$3+lRHBMgKptR0xIClkF6OeIv0o>LS52601 zcINT0YALfSC9Q}&Em8_r0MoHUos|5IWd(x{xIQUTf-4)sl85jQl#-@VH66pK>uo;`E;ew!=m=nz8LywkC|igg${(Rj*ZxsL zHzQfA!2(Q~_R-78ttUJ)@3;eNEZ3!X`^W5yv0gpCyOyER-E?j1k4f?@g)u*y4TnY3 zf>sZVb;rN2CasvT*H>=w8}_{l9qVy6p867si$}b1pDdz#@Y=FoQirlo)b2M zNJGc)R7HJr`@6WS>`_7N+nSMk;cTo|#aXqTD`Z{(1Wv7wWR7>z#sSJj>7zzBF3i(GQb4nyPzYNjQ_D{;sb8{9Nv^0lvbYB%P3K%@|5OB5Vb8pP zLXv(%ZU#-g^ysssg>DNb*%B6DjS@)lTANhFphajw64lYG%QYJo-;n{J#LY+7z0P2e zgdCeL8m~jcciM(MpEodX2fF-D+cp@3x%{UI*4}sCE{&vgokt47m&_C?S)HPFhug&t zG5OH^u2R51e77Nx?JaQYz-0sVIQ{LeFOOm4I4~Bbgya(Glj-8n~!*NLvMpSn1zDl3}t4S%w77`P*ID6p78t zbmD`s-;Jos#xS(h_-Rm8nKTfbv}{6BzlO@_@_b9}(JU#p05@CkrGaa5?Z<;9RBEa^4E z@%5DV2Z!4n*dMGCURYQhQ&f2vaOfGX;(g{0*>Xd94Hmq#w~5tsQ3XD4W+Z6d*|-OR zp4ntEuu`trzr?UVQ^DypO_}}F&~umO%Z^jCn%Ig3#MvhJp}7CX@5($AJ;v;ac`O6- z;U0$b!Jp4?`3xywQ{roF^7J9?yaUcWcqhz~DxD>dNqq$wp5;5mk6W`sIr9m6V^*!X z{lURIm8FD4`G>@$o(phTh%U@0I~7kV*!+p>8FJZ_RE#72x5Y$r{)?eK39#3o)iBhJ zN>SfQpAAE4{7n6)#}4&(rv);f!Mo`FU8!fyzH);2 zx9l95q}ddg`47@mV7rTkc|1yvD$0Cy+pIXHF1gz-YDevgSDdI~PT3{zQhn^Y3-N!a zgYWp(Q=vs*6ojfssN@`MACr!BakFN7%Mk18ifq>&@sKTf$9u03&nuz*kDtIda}mfF z>SlzYh4Nlc&wVUIxR4@kK!D2d%E`)|8fqM!CVfxZQg8+hsrk$jhPd~%E>I-(GWdT? zeS>44!P0e{#%!El8mD1n+eza#wr$(CZ8o-T+qP|gN$>4_zyILbeRgKgnK^S7)BP$t z|J!vnPqf`o-4<&jhXy;%sp7j5I zC3z2)n19L;hcx?Oi}`#Uo&~d%JsBPwDX;+7vge~ij71`G{+Xz~4kL=p{?q>U>$iDz z1f8pYH>@oVMVI>UK(A!EXzzJ#5i@0CfGUT(i)w-4RpN2qX2lP$F)!$A<@$S45yoh9 zD+3+KNE+`}mT_Rg`YHa}UgaID(%MfMc^NS0Eo$;KMB|AV+Ypbo(SG!IF}K|sY87Z@ z+UQg`=BjF8W-~^FZ^bmW=%NWOef2H)IS8=Hh`wK1P|{NAHZ$uSGa;QCzY^BZr!3Dr z9aR0Rm2!vohlmr_EIA;nRie|vI>1wf^0U|>D0wVf9w7Xq)kb8?>V+Hae-Ok#U1*-nQ)HOX=U;J*0C;5lAVS&xyPl&*k@7Xeop*a;4m~tSXMfXcU33Z>l&9>mULfkwuGFEkznVN+ETy~kpDY^;$qF;lO zEph3f>QvK^K7YRnCtG)^pSX~sn)X1&xAs^!1h+NA=597+q6TV}IpKn3(pR2)(6m7y zOLTzFYiq`fwB{JVb%QzP>GMYTsE(5YxNr)9yUp^mmsh5407pIUs7x_-BUp7+x2TOm zPWGuw@+~8)V-OycL9l^q4acyw%V5sLCY=Z;HI;>uC9;2P7$N$>}_)el^oyk*V6IefW`QtaK*EAlU{Pyd+qL`pTpm&>RlJOXyU%O_>+n z+(3wn#h}mi9Lhn(VQuZI%J(ehyuyF8Baj!KwJ#z8k21SX{;M>Zc@zcO}50q(wHj{>%~$ExlpJd z_jLw5R!d6Q;?W)ysFgfE=q1hB-}IgLzbmLmWK7EixIh%+B*RiiFDxh}4!@+MJJx^B zPMmr^J%6ycZHPvDe7a@1`2p&BJ2TVU$@TTLPTTd zt;Gx@_<{rU4Ki>W@wRSDT;k!rGQ|hNx`A2pYr6gV=uH1*oY?O`aFPvQv66xl%q3a$ zq!)x_Y*TZl1~Z-~xlFoAI?#dFT)*3TiDxnSS(zCILl@Qc+t_q1@*;B3_O`3wU%OoN8DmP zrr*WHOi0#;?uZ+e6UxVK_=J4HK(mkZBhU{kN;Af#gfD<6-cV~=O!$TMe;?{t$wVW5 z0LrOv(2MrVn3%a-St4Ak))Z}Q(daH(WJj%7DXEO+c)y6QN||4sDt zUoOn?x`dD)k7ya^gRku6D2M@q zU8Tw5UN7QgO*|w($lIT5B6kkt8dCXF;D8mnZFvNfxR2x8F(iR<1`+TYO!n%8S8f*M zyV334qM!0e7m{$3Ma97qxb(VLfzo<=#Lu=cYM!9_?%IohHDZ#^;WY!Qgcj$Wi{Ep4 zZSqgPPK9WwEWO|#|PX+b5vXS^tM~{F75b@hseJf^e8%65RG0g^uX6tD;t5Z}Do>tuP+bgZB^HK-B%?^!uXuH!OeTNoA;&=*oW!rgVp`!R z&VHnE9`=G49$HqPfM)uH(p#tI87}Kc+5W4=w}FFj3I=_5Q3&4p;ZK>Y&!FT-?7nGk zXqfMjbSI{*Z zVz=?*jOqBw8%a0vhTCCf0}*8r^yFTkLnrYZ%AB(?gwlEsxNoSSdz=k2yx_#7q-y>G zjS_deF~2}ikFGGjJPB7lI&Q?x7h#+2go85+JD)YU>IJeRT(sFFr-1 zdMMUCQe)&@H`jS^@lYus-yg{#CoJ$<8u_$b$A(QSJ`i!o(E_9$xDJGK>$oiMS2S*u z#7dj}Cp=K~;mu*JPQAwGK70x;Y5Z;$$G~^?Z5*{DNm^`Glu8Dyd;u=bX;4KGnv7MS z6c1JEe$uYs8@sRE*3iM79q$m~O)muQD(RA{0K>%~{QK4vzp>5#&4S=LPCm_Gif`^% z@k+s03-Dd*r>B<}c7pSlo+aDI_+BhcL{4em#@3q8ziiklw+@3NA|sV%@RqS=;Qx&PVosHb#T= z8zp#!C099h`f5>Mj%0jm1yh!x2G!q!7CO8ea3B@!_)7KNgXiBSa~Tc0pZ zv8Q6k*zw@vFM6N1g%#3>y$`Op##*X9IOBkQSR8lr4?3>* zILINt_jJZYFmr7u_d0oQ;u19HbaK1o%mTVb96$B zy>0V4?$(j3>KX_+Df0|3fC~u!Z1(tdmCnS}zqEJsroCNsx;ffDO8dxp$5zD@OAdte z=uH0N342b5?i1{iA!=ercqtUNMZi;><1yh63~YJOCMr|}!pg0n`yRUFg%)wRhg;%5 z$nM$hSeRk-QL!*&*UJ7O@goSFD8g<+g{Zpzc>~hDzfPZ~n^+j#U=38nB6}rTmOH|5 zQ|Lfo(KSo3{U=u-2D1#C>PflZAQ;v!2Z=ZJ$Ma0c>u*H)c>z-T7^06K7fR*p)5EkD@dzyheVp#zRv=7f3igxr^u zE0608A&!O&#*4LzuHB-)qjj517xCxvYi@f*?)zi7j<20=c1=H0nsmGVXbYUNKXy!P zoK-&vAxI&nfLmQ=wGoxim^0q?$Bf#S;j$x_o&(ov`6I{vU|jA|sPD!bmub7kHz!y5 z0Mpu8ldck=xhp)U--_`*$mRi!`{OlREMz*gG1o+g`>@)<@eel!5@uXWwc5P2rR##5 zF70}L=PaZZRNR9fJKxT=hqK)5n7>VU3Am4hLTN}5TrR!ABT!R__xw011Bo30NEUTO8W7v;Dgc(@I6@RYpXQ`Qj;K`$PNdf}tqV*}dR3`L@PVV^k zu=pt9nqBs(UG}M(&?{9-xc_{M`v74L;4QoC6XU8K4G!-nH#2Dkzt;-A$o4w27^8?R zI^8m<5WyFhA9EE7GSdtnF_LD6dR|>gR2Vd(j4^()yWO&3)^?w6t~~+RgZ3%~e^k1M zewNr(>o+Uo;2U81Tpgl^!_u|49j?ZzBbDRyJ6nwSG#W+;>+`Tjh_JDDDDvuXIEGRn z-IF54`(4Tm+64LV$M-I@#459%46#*FQ+_r&Ri%7~ml5TsAyn5Py2KZC;-TdekL{h+sbMuAu1fWfKLLj7B7 zOzoET*xWmb0*%{Z`om|9AN4Ow=PQ2O=_?j#GSKem< zdfxVYlQ_+{wF&ziPcJ}Ae`RX5)_qb4^xMJ^X=8`BWt1T}nS{jSOo448F_>BHF>h5L z7bCW-H0Jr6+TkRX{(>xwO5;bt%@X(BbTn-3$BGFVo}SxdaRQyMKc@7G9p%_E*f{9c zw-7A%9;=O-`qCPp_^d2(w7DJZtLy;NSpgrF-vLx4!GX#Uac*}Y3tMA1bDI}(A0yj; z2@To>5WuV!_QURV=t+1QSLJ??L%Gz2v6-vkr%6-HF`-1vL6BB5Die1z4g#H8yUxT8 zZZWCWUN$V%Rw1a6sz@`kOUQ#f-s0)=UlpQxH}-OHFPf?o@`|}6Gr@QyO+S{sl%v?> zD#r0b_`Jk4Pq#2Y&AAuXxV9t(cVBd5|4nOW0Yz+In!rB=Qf2cIlU+$WI{JgyT;c~f z<7vlwl18%helmp*?n<+ESEr|U%~}IbT?o-+a8A?`mg%t`)H__1q-J+T z{&rcl>*^et;uW+nY4rnb@yc-XX!dbM=VnRQM&PM^WG#nohT^X=B!swSs_MMh6cUl3 zLVY*pm11{AVHYtL_<)^0S}3;3L$Lq+`FhWK*ZQls*Sc8-thqQoZaIO3K{oDEL5C!} zkU1-?D2M^wIp`f;h6!C1G3-M%m-VRK3y(2?{lU5mJU|jRug8Db#UwsH5&FS(FV@*~ zz3QXO*~O@+Sge=kL)>V<1HCP8RlW2(+I_64r^J4)Hi9Qz^NS|!^1&FE=ANBly`Tg_ z`;Lj?ouAn$Q}tAcCHi{E7yOh?sdpnDX0N?k3ooi`qm@+s@x!aX`pM-El{Qc}r$=Zr z!BU%0>in$ESXlk}l32lT`(Bu%P7cWD8!IN)_KI}c0p@1Q1G`cuj%mr~)IbKm+u2>` z!BtZj^+Y_-gPzwfAZtDSpU#S1j2QjhTLMV~kWlzkX4jr;ZX5w2GQ`-WerA%+TqMFc zEzaLa4p|Ux&FcDxpCdapVf*(*IDL1BrIhrA&S*I`_G;2O1f$;5t3g|>uN(h0d0!ka zdlT43e<4%2h@;98{^6=Qulp_fUWjrr$C5lA)$a|D9WH_+_ss6FH_%q8P}O{Ti_kAP zSOpImm5ZyKS^+08dd}=?`KkG7Fz-&`_f=wJjJD7v$jx*%oG7CeCmBd`@TE9xVpL%z zDPLo)1Li)|&fyZGq_tYFCfTt>Z8P)!Vv^0^qqXca*lWtOSaQDS-rZ#U?Y=rgMfe|Y zSe$&O;HT!4VA6_O#-H8*FMmtw<^P$nZD}%Y7DY$K-)rBk zo6Cd@y&5eERki|0_2hQ5X9!EYpXnlTGQbpg@C=*;8Q_MeTV-}`u;v~0J?A#FEf`q% zf3i2L_qSI&ib7nQp$(jo<6?B?kh@zWXMuCrQSNa*zqPN~6-E4M9U1&V`pl4sb-#U^ zi;XYb1}3HqhDSa-4wX>SVhtEwu}UK7$6Y&#RW&?Y-Nf#-=^bOJoHk4j&A+|Jc~1h z+IS|?4z=OE2F>aHp*4+i`84~@;Zh(L7a6mH$)wfj2L|aKGG~R=T{9HE-Fl75tcaT& zq6JUg&vBDR7)mnz!h~#ohP9UEZ0M%iTSWn+;jh7f0ea-D`~~hGA;q-08cKVD)^zeThh`QR zH?m7`l-P^)lRC?Irmi|at;>5f^cnLRd{f5%*Tua2cp}51SgAp~`dFT#1SwW~6Uz0t z_^p(`V0E8V2|Ee;VgjCCWf=~NTMKI7s-Z2a#Rc~AwH3&xASnq|*ZtjJOUEGjlvVo6 z7Pi_)6=xF*F}#;ZDxU1XoN1?Ql&;#-g`L&+q_<>+Q4I;dPa@_~prEMR_F#5~FLr&g zNO-#|fum5wigcGgjEGsL;8qqHZq(TZHnO_faWvwhpYq>?XM~j7k=%5zc~`+DF&Qy5 zeh3Q-?N3EpIjWpp3`<`o!5*5USsIh{#zZg3?}}MWgAnLFv@hxpf95I3lkmvDW9kUl zGK*TNu~KwywI%%Rtsxyqu3_Ar*{BfRfKB5o|HSX*?N(#InHz*(Mk~?n!8`>@1C`$5 zKU8M+7}?M-NVXRm-UAY-CmB=XRxa%dKj}HCKF_HvQsgqJC=o8s1)YWk{C8@xJtauaxxZ}d zqtm)vT(tb2G4aOQ;JsVC5IDX!R^4^mZ)#C1b`T6n=}CeFXqcXn*TC{LZ+O8;GlP8S_8D7_jacK*`9HCJxh)Ybe8CM5%#g%+(mvV z*`sfX3e~H!M)xcOG*9YY)(vsp4W%xvr^eCEr=$nGizr_RpuSqO;WwI^M(;0rsn2gh z1zGDCz%L#Ze87=ULsHR9VLUaGokr(J9(5v+Y^hG{qPj7;J0FSPQQXXoL0bc~uEt#G z@+tZ22`oRsRiIC+M9^U^4TV()7)-ti8!`*Z(tS4JRDHrms1xUylKmC+&}lPC16HOF z=}Lzxa=T4sgrkYbsK-~ke^&TixE>C-*RI1WSEbz0U;u06cEfIl#`Q~err*~m^f zJ9^_Ks+Y@EJ}L52m+D?q_=n|BwN5RqwM}t%kP-@~P3(}hFvP_y&P=tCOmbZz5<0z<4+z|FQkJ^se_#)mFZ^Mh zJaGyQ4Be^;^|yBWV``4`?CUW18t+Z)8=231;_vfwEwsl)$%p}fiN=7$gv96J12)^j zblZ}Yxs<}TvSuF!GT!xGXMUV?x4iLJ!vpsYNV~@;+XY+wf4)S0C85Qrd^rsgA({43 zhChr1L&hM|Jo_2EESQUYI!L_WhofL>SPg+xCgGxVq_M`OaA}9yYLw{{!gw^)(>wGN zACl(@JS42?as%t2Wxu1A31%SquwYZ%4HZt;;(XF1-yf~UVyH{Yb_!j#~L92 z@P{|Myh_yOj}W^8ShBei_HM5DL#n~=@%IsaVd*f>*zDvde%9AA8snjh4YYAl&iaR( z>MS_`tdI_9^xM_lw^6jfQevhmgzesOmyzI4)10 zPuympA6Qn2GkIiEZLZx?7#?fDZ^8gpFQd8*aTX z68C%>B~h2XoNwhFKcRjw&pOE2di#f|uErBJ&cRU?e%_J~1Q}3gxNi1XGB)<7n z+c+GkwLE{uYtOIZhic#9uW;3<#r$mS+xy9TmI1>{!lWRw6#>6bKf9ALkMy^_^M7Jw z7uLUADudT|e!KOIU|hV3>ek?gpW$z0ZTw1NOr9y)Jz|l*Pefu=$Geq3g(zV67HP+2 z?;;ILlfL&8EJ)#YLd4P>NOO(xL6M9p{@6vbX`$Y!RGF4uHrzMe+Z2Ju^( zEohw*^wjyGD_7H)&<-cJt}AIY(%W{e zB-w~+$0SyfLyBo{duP)vZH$;#uuPFz_*Rx@SoQ3(^^4GZ=K0d>BlfkfEi9G}s;z2y zj>R~-b%ljd`5BdP@{gZYp^a0i_Uki)F(~Td2m-YwkznYu!<>R~61V&PvpN~_I zNdGIGgbQHrzlHoT8s7YnmZFi4=K77TGRDr12~;|*vJF7ITB5Hm+w!FkK!o@%T`ucL){x;vfE9}00 z{u-0}HIeXWB|Aa-Gf_r~P7mp0Dgls1M%ea#d63WPuQC*E`*U|CSX+#S{r zJRcq=of;23s6Wxn(w~dWuj=6G4oYaoOFs;L{jCKDEu%ltBY~^%g9?3=JyljJ-=J6u zcWz#;+vB!e{ZMVdXzb=muo}~~^qU`Xu65>?4DiOa9}jG0t8iAS-Z5+nlJ1V+f=yJh z6_F49#l*iTNwI1~1l_v+%D{)OndvN)cEo9a2x-3}M9}cK$(sMjYs%d9mctW=tsgJT zTrV1I9u{PHYrGa@%rZuNN3Iy`RD`_kqVM*9hZrW`LJe_tg@+1wZf;f;K(7B@`pmmo zrR4&B#GEvKSS;Xuo#oCR+mGY-f@}M&>hA(RI-hqF@w>9d%G1TGf}&>^TP!fiL{LLN zG7pjrdQVhWOj*9nIE%d~qGKT7^#LIU3&u+=lM$f z6k$A#PI??ftu{1A(HRYFWbO9iay+Fz@{4nhmgBC^+fB@^_8sc1r*Z6u<<9@ty|PV$ z(vn5#(Fp61YQ9K9mC2Nj`%?M4E`M~7?L&WHm0fs50HMR5efs@#IXtSjvd(DQ#U5Gm z9(L#wg(`yeNP>~HVlLYSQ8gZ4ZRWyHGX@Oz8{zl3_u6uY_cdXzhZDR{KDzNp!;L`G zcBA+3q08CqJicdC#@@Wnc!zU*xUg$**)LMeLFMl(5Djkyb$6sT`}5k>%{d_)*}3R*aLEj}pWZX-WAQd} zK7bp3y5#GzSkjs>-}wxh9ft!NcKVX|I`7)C6YBHcbfJzDIC9bFSY#)8O5mzh5P^HF3P>g^9FZAVU_qZicjvO+iO#+2WE5;Q{=08JWpM zs&cWsO;Wq}WOp!aTaE@3H6nX#w)RZ~X!LVYb}8*CNO?QYzI#U`>x2 zdo%$0yJ#a(*bLh=Nm6<>64MPcw-Byaot;G|MP0#zycW9Lb*WQnk{K)ek|J!tV!CFH3iw zFSqsFkAqTcui_qu-0x}2SkLG68hF|S%Ok<&m%sRI_BMTNqxpwlz^>ep4RntshdU}) zRkQ4CN3{&1H89c4*PMiA!%s@6_tPs%-|ekpC7H-*14IN%|EdjF0Dt6IP1g7lJm*C3J)U@V)SdPtN2dPe&^c|K?C2KS46VtYN^kT z;S0QFF+#~^HPFuC_dl{yeww|(ZOCOj&3rt$v5EJ>4d8OVu!B*>B-C!UYczUcdQ8^@ zTbv`@b-b8KQcwPP7^$zYk;n&OnWP`YX2o-6c1{Vl6%(Z>sZe|cz-D#w2@F3AAoU@W zG+sGQ2I>zj>4?1d zy;b`VJ*X-BepAi#Ivw(qJH5nqZDz-bh?c@Tt}Q|QcFi~U#4?`($&|z- zDT<@Lm?s&}R~O{^hU0x@GS?i<<5a3@$gki-6CjrPf@F6jKk9voE%QP!UH?P8bhb8CZX+RBwL;_BP*Viua zVb6jTN7z38pL4G3EN*+-zdaYZ?VA$0r zke=s2J4pG30f%E#5!2-Ln#bg_29hGT_y!tJi;lgqDv^O!r-s2!Ja z2=$M&o3!We&FIhP_hZ!+B>I}^6UbycAdvW)iO>`Q>u~NV&;zWsU(#ukPBi!f{KfD`;4bslqB+b&-7LPt;Z!-oe3p0NEPh-L*;dPZYDD|^lL10jb+pYPUtmU2 z`~{c}66R`zoWxO-9a)~~V@8xb+3p9V@q@xvBeAJOo_#3VrrLfW9BU#Y{@@EUEnp^F z>o5FgX_KOunYI9$%&Ev5JQ=tH5~CV;$Knk)QsXqoA8%|JV2H+K4(5XCU3WdZdd<)8`+a{S3m@SO!O3xMwMnLBZlOE zGR(2)_6p&*$Jlg~NjuDBtC3VMPKii6j~nBb$U%u)a_Zq!&dZu9Rn?YGt%sM=DZ$k- zqV~T>d6v6bYRvu0iv(vk5NSfr`)2UXx0-m9`3ju}Y8_&ju5vjdzIhoZ#O;W&fK=%x z8A|1bakw-Gb*X{Q$~i|{8~MY*OW=#@Yk5=M{pNTGT(;Y97V?N_?X^VU5jqj8sG@G!_utrItB5BHl=I)1u|Jv-V{O z#KRPd=)oG|>;ro>v}Lv_5;zhfM)83QCUwuA1ja`g4d*4UC-w@rHdLr>ye;=BYZ2(^ z4jU#K9=)7NNdhVhQEZkNhk~=j$Ixh9rWA=nj>E^mZbQwchKMmtO9NFc?pFZ{!jX*; zKcx=GAg}S2kMzX>oU^veD*r)Z^}fMZYZn(c2gp;5-yMSO94m}u6|beid|k7Qqv0jL zR{QeB?sP2r(K!j3uo1WCBITw%`d98gBzs^A>KK*bp}ZrwoCE7G%BY8Yyh1owU~_-7 zv%;B!3C@t?OXMxm2Ld|)<`aelp%V&s*A21$j8g_|lhI9ouO8r#mTuJntl~L{Y2pjy zLl@11WyBCIL}hwq*k}yU;bz*@ub0H8Lva&VOM+dASsd}q@ z2uncMZ{iPmmf+abIugsdO_|N+;jcgkG`YovBg>Mz45b8JTbi zlc|MhgJnXsQ=?^KpI!}btIU)0C3Px;%<7n=JN{TOYz<_c-lInGtlkAdZgMIegxao< z)_CeGp$@_%3t&JN-Kfm(c3^`1n0v5L)tsb5z($&U3-;Fd`91h;R)Gc`s0pLjF||84 zPoaKEJU5KZY`Lr=Nk7PMa2<9c0`v{j=AaYfcz3$-*%6Fv0z&d9O8Hc=@4y*GT?{pKs#acaLy&JAb`oE@;_ zv~M!fp_&*pfr9NcU)RTuaClWdpRCThoV9}9t-E0}V1*r|-&}jON2rlNWkvr?&Lvi? zHYT)fI=#S=?@st;kk0E_7WW3F9W_ZZZAFF*=3#KK%+o*GdjwwUJ_TKC1z$mc9)rG< z%com+DfqeN9|s8Blk0c)jd5C1l1@bhi};BIh$(h|MZ8_Ww>c}PNN<=BJf)#VN`@QE z+D@IBG}8D-i$LBw%$r`P=7l!+uIrQuR72}wHg_@d$00T>0@vBb?)NgFiC(h4Z5%mv z5_h-LrdfxDm{MXd>|35_s4$%*zth`|hoJ5(Zr)0V+x9I#I-xd8g0b7+V-&dca)m#xxdd57t+JPwm%N)8i_PhzU!)n|ZYC zIgd$g?8=d<2^606pyGgI`+p~YX}<05f|UDpQehr@l-(LG4vG$DiIOzi!~P_6`p~v8 z=m*%JLUAdgVY;owpFitHQy@xzpWE9{W@fOXC&%GO+bQW~dhKF%YSNFRN9dCPZ~RRS z|Jm%g93`gJ&Q7Fx^Lmzc<_DhUip=ldW5Eu=zh|fG4)F*1gmKxTo`Q5{5eQZmGrShNSBN6P7cf)Me$=x1`Q4h%b- z3bc!90yAzvnCl+jSMrc#wAW+Q&(I+gqJ;)>I}-YCb~ncHigRBRl1^c2GnBcwB;7Y^ zb{yTZDNI=$+IKY6E*i~@yo88guGqAxSdEj;Y`vc8VU{jA;68ow_=mQGDM3$8M>d%x z+h2DtgsQ}Jv+N^!I65oMPnUlG;k7p=G*AU>Q{CfzOg?bCvm8V~or&3zC74};Wl3`8 z`qe1`%|SPX^|%$kyJ}1s)ijfwJ05qv2&{)7w8S+E?y9@XX*5{=O^8CknNq7580B~R z`VozJyJ&?!eH3+mxD{z;IsIU`U)b0VhP5RyWvK2U*hZ9K;8fSeUrlcjLgn}}*)JxvHdey9_DXW^tz0%Z*jZ6I2aJ;eO;;DR$v@st%T*A z0X)03FJff6(AhNJ@KMMuEo<($8%RA0q}t?a5CpI1OQSXRV+t>eKt~7C@xPBj@T7qS zK`B%ZWTg8pe{S(dFv`(FXZke{^!;d^SwO~)p01bT|62^&P8Cg9E zYluV{LxP3g_)ELJ8TSiY@4zJCJQshPSn~!1h1vrTgDpXx`U^7(BqI2$Q8Ma&?MLzh z*}eb`sJD-om}af?kI`>W#TfI6gh=6^zyt*J<~bG4r)&ahWl%Da%&KB?d4%0ih>c(5 zfZ(RYJHM8SSV(w8K?l}(olnd`85_@ixnLOeV*7z|wx9DiMSbje0W>>WK*u>ja@+_F zmn5jPq7)gq!KFH)I zZC0%RE`S$os^o4)?s~8|P>Ecn6L0-#c{x$Q-w1i0vIr*v>`c%}O)v|zMqm7lFpi6> z@c$iZ z#!s0G6MhqDF*GZtcoHj)?ps8=kqRfiG4Lo5i=uh53`l67AN(?j*J|+o)_ndVX1Gb1 zl{I}+`|8!w?E+--zB+H`Uv0FLIioo?3NTN$uIkDlJ7Ez+-4fjA-`q2%R z`Z~F7Lot#W35V3obyI;YX+6mop9s)%d9m#a#mFbMHBG5CQ3d`iVr*{BvO8>hKW4MQQ&4t7hhYdT$JXdK%K+T>Q zhgSNxec|Rhe0_IN@PY7&pp0!0nIWuXwFoF>;InkX>?%sEhdeKvjP&qHi-h#~H@un9 z4r37IPNCsG^8KYi-@`+^%`0c?6o$mtxE}6kSw~OuDVUco7fV;$ydHBEqcicVqu9}} z(?M2K0%X5QqtymE5cA;sylM5*uKTofav=%%1Mox{Zr;68ZUmAn{0`qLPu1}^{~Lac z(3!jaBO|GTHzg%8LXOx}t;Uu?bo@ZFbED1sm7(I_60Ol-ovM+Ca}PBm9meSw=HjS5 z@PI{%-(=a}Q8v58{$#}W3F_vWksO6h;E?C-*z%<-JhHH`0*B(nr~z>Cb{Gh@y?wGAsZ@uB!@7b&VI4OtI#+zLR*gG8 zdsuV4_onC#r@VRUjn9xEwz^qX=05}@hY+?pLUOm-=VHb3%qaTiP4Td>loZMt&Kiz8 znBVo>-QN_g0za|~2oJZBj=4Flc<7*_Zxm09K5}fF?~fd`-%}Il7&@S)qyZ;Yr<2b9 zaDLR{{I|15>qr;1Ku9WJf09D8Tf4_YIlQcn*v<8v2(i2mokjN0_N zwsB-nCfM11o;PgD^lP{*pFVZIXbI2j+d-k)V38EGKH5#Uwk{kU@Z*1`8mM0sjj^0D z-h4W7%ogZzR7ZX{)Xqd9{7r3U`5`p-L%2Zz5di=&(g7KY%|)_hX>+Hw_4-NNzL0|{=_x; z;;=5BH+?x7O3k!dMxN3o&YJnMAtA8$wfPkcIMDZxA}RL$&lI?8e_j;VJf*kj#=MM~=Gp54Od0lRsA zB20#WyIk?%>t%(XB~Kk?YEtb7ec0t(vN(GmnF45H{g%b?LbJ~7I(a0G;gDsZF!#?A zbeuMrg~C^|EpHKG#m6MWoXXIl^b#y^N>7E7BGr}DorP$42Fl*by-D7&-`m-N@OVjv zRJW`=3zSc-{bNSosm4q`B9NtjVPGe(RlS^n+XG}M?vH*1h;PX_8CkD~!evB~#zh2f z5m?DeLIbWWKlnET$!8$&3w`|BNIoUcJb+MgqSMi47~3do5L7j9MI(_y27Dqzl!zs| zb{o66pYJv|yGYrrG0LvB+p4sUrAaN5rE;zMA~a|HY{qi!n`-!7m3iK*QPS=la?Ojv ze1^&XN)GoWp{D_^a5xtOBL{p(oIoWvzsK7uc75|GrFqV7Uku;!I+1|gV^>{N*Ganuq#|t3rkI$Mm zaubex=?U;zY)n%4OLIQBU<@5R9+xSzg^2Uf>`_n1tXR-5bfGJE3319I>GnO}(qp>d z13fgQY2dUUV>KA;Uv`zJ#Kj$CwXLNAO>crzT4^ww6o`3QQPV=%?lsf~J$h4Aabn<} z9~2GHuUK!suNa+=K0cP_88r!2SJ|UMr0OI_-~k&aY1@QrSeu|Vp^yI>@k|7Eha5BV zyF`FoU@6};&%-MZ(~y-Et`o!>fD~2<$MCxuwS#{ayp>^jjre7)QL8cV>g^u$RxFS1 zw7pJ3(likZ3rl^r5TT6CYHOe`Z?2229W6A^NcMg{tn=8!$q8yHZ8yMc=i9OiD#Rmg z_l^bOcII*2G~071J@u0Faj8aYF^k;?tOCw#FQ#Q>H3}0o{5tc^Ct#eDnh4f7mznWg zG!b}+QE@vF@%X0~2~(6VKb-8ufcimo>XC_(?L|cpqX*51SMgjFUY{4a5D3~-ELLpr zwekmE4X<>*J=!NG!R6wz0b{aQ5!%R^RrZ%GK4s3;)6c|5;LpPT;nQ;;V6!gPV-jcxH0Wu{RuJroF7B(#SxQiSy_{$XrsF-$%K@ zkt0W`NFx|)I&arW+HKbB`L0u<-rX;n|2Iiz6}$x8?sL^723YN~%%N~aJj`q{5d#hi zBvmW2JQh?p)6xzbHN+4HOk}LMdz9X5i4FVlMJjP;?t!}S+N@GB&_scus@v^+`dxm8 z({b4I{poY7#c69+-TT?{MmnfNN2N{x0EvT}OSI3y-4r(6r{+LLeS2qpbQGr<_GxK3 zSK-lq4>!?Pfa8i)XQZhL-!wo5ZJky}4v!>#&ob`+mfdlWv zAQ#Al@M(@pY06SEWQ?RgHI|>i2yo1D-V#zzD$3?|@}QND+H2yL$qLJTmt)~=T||(g zoDx9!7(huwGp%D%s~@-zpQ2#^QkWlBFLzpH>W&X{HYWL!h0pMP|IRLm#hS-)HFkxg zPzG~d>LM)ui>-hC zbVEgB6{v3(b~gtZ+@%B7U749Rt_4a&;vk*DD4)E5&NLVu=;)ycuKtKoSLP9MTGVFy zw0s2P{#MZ|KMG?aUy*Y%bxiybfzpC2hAOZo_f1MA&KduOqey0qKP`>*4BR7r(Ui1u ze0))D$|UM$0(?R#P~_&+3=Kmcq15a6GbfsX=G2y*xF&b|)CQV!nJ{7>g16G8b%Hp-ecaWCZ;535OR7zrY>&qxOZf7F9R)-bP;fqt#vP^WFc zlKhbVnzAv8z&@OQ741HI-u=`m8rOu>9?N!U8oNO_%~@iGinn&qLzLwm>jwYei@ za?~e#K)?nEO^ZmUWqZ7k&7WLGo2i5MHW4C#t#SVG+#5Wk)0fz$kEqO2O*z0LTiF;> zFoLcMyt+yCrB*l3rac7rKH4~+Yx+;f&!{ja*tW~o_~ATjE4Ghl>u31c`0I5Ng*5z% zByqB=!FXU)q*H|Rw?^PgSJ&kt;e>ImqRq*IefZN|7iXA5G2DIoC`*y_GI_~YX1L{T zOw!3iMGBQBr~R!FR-n3A)v4@5Kp4G{So7Nq~TPFbFu+by2Wwi zrfUq~qkWoqA+B^R;q4Jh`)z(Kw7kY%8n@24Sfjv(OesC&F)!J_kcE`~!1CP`rv1r> z-~mg0{sma#CgfICONoC{><)xJqbu&1ND0e>|P@U#4*r@3XOCv)yL9yEc1sn{C^+Yjd0J z?rht(ZEMqgdY){xxPy2t1S^y?RO?R$dGLcdjrd+@_ph3g)mEH*pL}LJ$#gWY3SN za`^{-xE0FN1yNyz0qIB--u>d?FLfVb^riJ@PI`W=*PyAgpoG{c^XVHJexG2Pc%p6r zBwnr7`uWK={8B(}E0#>Ij}sPmOBwmP5kvCNm}%Y*?j_*F42_PE(+KZ5doE+~(lsng z%QG7^tA}OQ{NK2OLF9{a{(~DCQJE&nXZGaQWP?L_f{R*m{sS7x|qoBa<_WYt}sN z(a5L(UnbevX)wv|<3$2=Se+&(hQ($?Z z@#$`S+xznUy-$L;{qZYFxBFZXU;CDnUS)aueu(ELtTELG%Y)ysUX}C1&8F-OydCTr( z<)R)yr{m^S%9H(5xV;Tf*MsT?2^uMvq=W52QBD)egpsC7D8|eIEaLgt^4% zt&v(GX>VxpcXhp{J4*bYl1C1_l9YG5@kEyM&eg}e8>N>TSWbsT*Pe#)!3{Kf^5P_G zteqo~G}zKUT3qH`mDOv7_92Gr8~<`g-v82+4qVCz@*CWer+*kxV+#1$cT3DSx7__X z32^@WhixMxeX2rBYh%fdpP3P}b|AO?GIZ0{XhpYaI~^Sx+jqM!q5nAa=!|>Od70AM z-0_%t4ca>f0G#%@syk1bx9;UN>P>BIj;GiJ!2GZ(b?RUDJUd+-E)z?-?;q_x%hpp< zQviO$U3{OnP3v6_$b#w zL;RLk)ha*GcKenCp%Kq^42i(2LYMF?1Ud374f4euPNVW}7)M62?DM#e6VmK-niupk zezq&6U@-yzH-}*#pRd*l@YD+? z>3u_2+eRIG-)kgmTJ{k5zGBL1*T?%1HQ*m=y;+uvTBk~R_f;r<^;?k9aBR`}vR$wN zYFm?CPGGke=uLmIyzvGY=L?tp)KDT)q#cIpdqS*lV9=}Wc^b7_{o#fTTFv>mz2Q05 z24nKxjqBTdyAFK2>V_q10r{qFu_8BmhTun{o4?d|dFkuxKOc;Zx?Ko*Ek90sEFpr< zQtY-~BXU6hmbcaarVn$zduZ)~pDP1@+Z!8i_{Dq~Ntr8uck}vZ=q}}bhPq@f{cPU6 z6>3K&1eu@}<0VNmudk1%z-z?C$-9$q5OX$F$&Z89Lr^@VD*Wo@B5tIJ!cd7p3uB{;*H6P;1Mu}QoOaoP zx3^MhdT9kt{<(NaqA>?llK0V{QO7*FJAca~io7Ru*K@5<{V;y#SY``#oI;HB_q>8N zjb`zWu#D*uAx1gHJSm;GeoBD+99+NB+gDW01GaQ5e7tg~_bE?#mNSb|ndh<$EoaDH z6t5)yNYJo#*%KNHlPS&DO1gSW9IoqRtXFEdN%&;oDLY>aE$$`YKTh$0ixz2c|H=NH zMd4vBBD7qCVSUdEb26{QzT-p;Fu&62b+4!AJS)c3c2Sq}mmxV3NI{$IyGO0ts=}y_ zS6}Zm%4OSy_O#uID)_dl&=Y|%tZ#Y*rGx$T(~GT+6+RD81=4hpzd~g(`ezB?gT;_5 zEG%sIqJG-nX^IC{b6lr%@y9R5@Ik?H5)Bs8XOFKQna$SxcH>Jie$Jz8 zR~@ddzDL)9w^cg8OSRj_Sl*s>z-p_LnTMg_<`|pXU!aY>vvr$xmF*+f$Pznk)?wUv z+SW2$QbMv-<2sVB76a%If`rz?UbAZPgXiQM^H3yez`lGc(flo-|Jaf}^T9jaW}fG# zQro#Oms&ZEH@ps)wStBrsJ%v|0Q2C1e_y0`6d<`q; zBbnd#mNa$uG_12)gjS6$UL}qD>gC4^d1|p%#cb70@>Cdsf_OQ?d)^#_wG@h7EcM^; zF;4k}n!s{`$om%OV$&Tme~*xNdGyKVnUnD+?=Sm($X$CM(&^nsK6itdzU~m*pM5pC zRaUw_*fkm*9l^$%Gr4STz+ULxcLKt8UeE3PJH70}M8b&t>!^&JW3H ziPvQ(-6Tncg@$EE>eYB{TKT?xXYx8VLnRb^UG}@@BJR5T_+s1!uaDQ==8NSP>!*0_ zHkYc_n~^wSU6aO(9)}8*rD!*=dMDZ}8`mD5BY}x05nR8iz_2QK3FMPr-Z%o<0BHiK z#bs@xqj@@4RyW6BxI^@EaOQ4pgfO!&Y~yMvA|mAMOwQkoo3+?`m&#Q^D_9$DAYU9j zocm+^WBHpkcEyOlr~mLjU98S~ zeOO@$j)G;FSuP0G=yqadc)^yw`h)Q{@5N(=8v#P28V#l|;rID~f zjo{n8{$X;$&1e4>=%FFX&4poF+rZxaw&9f1blY~`)zSTbLpbp~_jx6;W!ISr6X-Up zM8WR;b-7vqyHh)kP~fM@nkY3Lszz!mmich(mA$wrV`DOcMF=k~5GUccwbcMQyIF&< zD~NPa77xq?BIFM`LWGqx25?&GCi_vW72<$pyE251f}q5afY+cue%Gf7L8U{(Crim|1vodH1Q=srJ&DNhw!_vu%~CRbNsy zGW0Yz49ppk2G_~^)D*qFc^s@aT+8jho8!{fYiC?{QnnZ``feV496Vf4T;Gq^n$HcN zYxiM%04p2Y{c87Hdw0j(H0XUgwJWvfmNHd4QLTb5w8?t4!%#oB&cWP#a7}4c_Q|?w ziMYz<(_QY(%PpoGQ1N?-4T`jpb{u$!uSr(0X*60mK%wlZJ(RhO&iRV)Cwi9#E={pM zI+{K3fN_*bV|(MN2Pe*>o(HN?H&qE?{W2Jg?UUdb#hPTmiHDsV{e4xD$aT8cF45J) z-F_oyS<&I1S-ZF-QSPx*|``StF6u|gQWU0W!aGnTcC(-ODj1H=f2@NuO9Z)9XaDfo$-XDoS#OAIqO z$?!C>exqiU<&luPE(X{`U*AQ~-o!@zd)$AAdta>sV2qiL^DXL|%h9ypeHl~QYAbF= zKJ#qEGTjnwfwz%|2T?46$G75=Y4i`ab8NPl0~c$9qO7HKc4W(aRK~sxjqs=zPwwF# zDEJELr18B_=%Z4VOx3ZB3AA%S7hQ4TAA87=7@nhFU&4%yhyVr=bz}#acs%`Uy7|ZC zO;p`+C#}(LD!~7Ns}Qt#{1?1nKZs(QMt!W-b24}YYGoRq%k;8{F-zH4fNs$d)A8m; zoCHeNXuto#r(`~;XwbyGvF#Ua>dC+F?vMQOSMX8k#o8=oTzKc_V0MJKxE|+Bpt+i@ z$04qc!veQWpX=?eGgW{i+xziJ7j=Bc*Fyp3tz~?F+#MzS8`t^53O)7nBZ-OT`+ldf_1#x>{uf{u?>7oPuKw#T{j_Zkc}2 zJJafsi`wX>$ny{8RKVNaAixQPkzzxlXJn}JCO-#q;^~b8Bnq~YUxOZWeTerUGwphlF29%Cok3)`BFP7%^G{9&{FDh(H+wQNCqRea5M z?TuTd*Hoq})1&LfZap*c-GFN|I_19@+?;$F$ArOD&d9nfcuU_Y_*xlx-D>~vke;L$ z5Qq6QElLe@IU|*ml9{f=Y1<5=iB8i`k@z!ST>Nib(v*-gK7C@6j+>JfoW6={7#w|Z z=g^c7{ry*{Vu%o0RB23_NyQ(MRP9F1u&kBz@4w^{))}28!&tLo@MM!%=0~o>UHtWB zD8Z4#)0MRsWa@sI?LJ$kt4NQ1b-OWRD{8vVmOt|EwNZ_w@zmla3ywQsuR^^*z5wqR z5y+dQlE26bUTe^`E}rBn=Oz$BG}CYszsREVV7p`xZ6GvWS{!*o{xBHtE0!hYY7*vK zS$MQUJJm-uNUBwQFI~7Sr{Jl;rrn-V6+6EKVM+ESc5=TeTT&p0&Cek}XX{%CyrTmhZq! zrAxo7x0s>F_HmvRMA7?b?n!$6?SnGk>lBh@k!EPyXvvgn4DCodgxo8}5`Gvha*P~0 zG6Z|R#)Z2VUd?G%Dw91%1vRNno@_I+E)bgL-+DDv(WkmAZ`wAWcr;4uL#>dfnMzd# zsJX!t@jG(q03OqMwY@G8R(Lt&kYfh$H5;ih>|O>A&{2{Ke*KD)Zr4zd!#l71O1G-} zk#yA~z86J+H&wqDHz%X)fYI+2`s)k0_Uo5iu*=DbBUKPu1blpDR-rQ#A7CqRxafIX z@qzHOHlB6t-p?a{m%(i4Q`RLhbR3ckiO6Kbdhc7{ZmycxM>qN`+&C#Q< za#G>zn!R!tcl4OhZM*9AP2wP=C6 z9jpA=(gaRCke7o&I^K4C-qQ}|7?JtD(^DIfimP#bSSC}VN1C&}{mnZmsPUF3~cYcx20DA#VIXBL=1pl*`KMeA9V{o-&uK%*gtpvqgaCH? ztt+#Rhc*1J2Zg~^hW~&vAB4jrqWhg-o6D~uHV~`iilGs+KGhsnoUjJ1oszOaF&cC> zCk9xG#@J)*lbQT(&5p6P{Qh}$KTpvCZX*=_R;F@d zV64M3wqMLuVPF_3H){G+=mpD8DpNbxx!@5u1DMfQ4uxop@gna9V< zx9@|O$8aJ_z0|tf85m{15;bcPGI~(w`|hRvYRf@4`l-!H1Xv*XbG5-^ST_2-pE&GL zEmQXo7%S(8roQXywpOL8X)C5p{-K>YWC*8gHMOTR9c^Grm*;?^mZy;m_!v^hI@!Hp z%9>;g^pifxcuY)WX;J6y(D}|$rrp=@ie;t2f$gvBngugYYvM74TAgG+so#`f{2*-S z*AyZ$to-WA-tLq|x!_rS$6uq4DBzQYDeNky=Y6<~3CF!}r+R{53r`Qo@bb{A1AwK^Zo zaww3Wom$FZC(3*q0?$`L(nSc1 zKUjMpg9FElB4G{2E6tWClU_d&);+E}-TJpbH#cYAZ%8gSfRIxHW?X+=Uonx8xkQSD zxfDh)_q)w?mMz#MMVMn`X>E(;`xs{EhZh9QU8+TUvYoqi z;2$MDZW)s2hGu4NOd37+i|qW~>^AQAQoGI&hvSI+W+1oaq?EE5lM~Ct3wT29;=qA1 z7eM;cn8!1^+0H3x}M0OJYF676Xh>f8eiC^V$rA-=8=)xG+{AIq%-9^^LS@@PkN>x z#_QjU)@V7@iHAS$Ey3R@Q5Uix%&&@08rDfMi=vlftli6g&jw+OepX?Hw$dvv=IL79 zINa8-aB(4WZ8}44Jj9$ESX)Coe>5`xA`bI3B8fv%w@7Po)u6^AALORo-~POeJbaq& zx-~kK{^z*I{yyDgoe>%lk(|eaI_>uzKQc&Wj$D?a_Zs)Lqx=4-hyNFK_xwNpVWGC| z7;;}*44VdIQL2bM_^dZ~)@br>=fTMDkZGZse|P`a3v?jxzNwDmuzdXRMdx9V%7;_w zH(8wkE?WtD{GPevk>UpHBO|m9GG>)2OQ1src5{2;)~jpanZDEWnvqY+TRPWRXD}mH z7Boyy@GkN1)s!Ygjs>Ti*DJ2;{78gT*xeDa3zwqEssLOy``+`qU)3`fgxDJxfSZ1V zMwLVNx{gKeLoiu?VF&h?F3UYG%X*MOLFD#Z9>=}V*nc6lnySf}qpWF8ZO3Uxv78-5 zZx$>bMVWNSYKy8FTRUchVaSu*7K*r#dmsAV(Sb8?P(Xyb+FCej)1y-XCI$wya1rVV z-Db0QD*JlBbgq0;^-Bz?yZGO$^mx)bMiv3x;$@m-aw;kP!uCdGh34vbXMg?Gb$3?V z(tb%hxa0tp7Rib5$}u1BbtHj(jFY^K|$U(&qDD4uIpf8}xiVX}9Hlv{SBHap{&9 z^Z^bwBSqMo7e&F>LR!8I8v$Pxy%<5Ot&vtRHt49;F=&$D?0hHO5yZyr`~v3vQt-CZ zPy7!yEh9UWL5nl-K;OXu7lqgt4h9y+;PGq`=N!30ttwcRPQ8C;h6L#W=EU=--l=pW z1tXEvN^Raa6esS~G}FxT#YUhX;GWsZFolrTvy;SWgaT%ZIYbUbW>3L|c(9N3-tv)7)m{{xfI(ZJti{{>3W z_GO1`rUf2}$~@v}G$D<9c85G(zjLq{#v&2?c|}_?Mih7xB+8u!m=?y$lLu}g0n=?R z=Vwe_tLL27n{5{5tJbzZQf0ybchAHhcehWyhXP(t6A=3W*3Vb>z7Hl$UXL}=(MVS> zgL>~ZRkk(i{l<5w-aAIi1pMwG;*O6?yH5zr&36OqwT9CMATT-ANO`rduLHKYK7eCD z2>Hs|Eam&^s;QIzUhbFdlGW{h5qL$q=NXqlX;IF$BJFZYvQAj8$3i*>s9W~7zZVw+X!6YAJ!RQ3 zGCuK@E@TxIfJypMz9Yg7KreqghED2xfFr3#RLH&&zmA!MV@MJ$A?S&+Rf$H+ooure z)Z2&(n4s*klg%w0gB0_*7s%l@8E^xaR4m*K;9r&%=x&$*7n^S z2+C=>9m0>pbi4Wkc)EOZ_VRt21hKO6e&Q+Vy(o9vygH}-)rR!C?nt(w`=DwJ%&h1^ z5~*FcXH2wxK%)j@k+W$)WVY@}PH^?{$IDgF@tIQ~QIV{S>S<=3XEkGBVAADh0s7pW z%y!-n;(h@_U+TAX-_7^fuc{__sA*R8K(vcAsyxL#;j&!yJg*Xob@v;0?w}%;Msd`k z8B(=kzocUK*c7EW9%j%BPsVn>ymk79^Cvl&jXT;9Onz>VlXc8sSN;3j=;-aS?&m9r zr`>Q+v~1BbQ@j9$Ys(#yz={yKc&2~7Skv{sqwxN6Sb)m^(v$7?687A^BSQRIa+cct zPRaeeaUV9tdrr&D$qUiwc{z7l#*n(@c)!(21f~5rBO6lg&ua@w05- zv|-1CWM*YW2nrIR@S6!`Mre^tGkI^e0!V;tSL>j+o|pZIgl;=vx9q&unJ`{ZqW+E` z2!1(fXHo-eHLJkSm+UCitel;rb)C%3ldPv|cV%lhyf53Iw)=BcDX{`GfC%|rBWl03 z8Ui6nmcE1glq^z(p)7u|v1L7kaDH16wXwqnR8Y2lvqi7Xi_@5QrA{im9US}QP}I~P zQLDn%O?}L(L~B&*Tv!#LL$j$3l{qw(Z)QlD{(c5knMK1>-707Q+IUjQd{ikCxC|u3@5BA>McT1W+No84fs2 z%ls=WJ88c&Z;hl4z`u1&?DEce1%PSkaItfjQQj*T%pMr6i;1tluKVuz#Jo1GE><*o zTeLR52NXyg3;K*R=m{#)dns&jJ9s~dkQW%$?Bb)ADj3X%PTJ3Ng-Q)Ani(x0KNGZ? zjVw%?5;C6oMOdX%vyHP%xCRJM6%obx=a4Ez1nc2PJPi%G`sp>NELm%`KW!99?2heS zd=VL6{rUxwnV^pAGbmWv0=TXQS4A=xC5pHQD z+md(S2~W`cuoOnQd=hE;H_WtSq0OY1#&ip(i9oGPiLTdSfcwek*xS}K_NRc`PKn>^ z@s5n%8sxRtc23{TjbxqY6`M0Ro`3|eRx2wRAvdqUeY+wpA z!UHaRkh%RLQ|mPR+kV}~Yj>;tI$$+~=NEqC$J=wimEN0XS{e?u_)7rn6>1Mw<~N{o zoa|#Q>~OzGKQkvMco3urGb^vO=Jp0TXSXhn`_X4DQr*fUbmodPjHLqDHXBql2C%^C8$CtLcp&D$$cH`$!$R7P4}MS#tHiQff$p)h zaOC||>22y2bvlf*vW+l)7#qAju+^uq%?Af&z&*?eotC8Hve)xRP1SHZ#g97y-&jtF ze@~8Z@^fVY(;|2QFG=2|be{tIN04!-L`LsClw__0G8;h_9ZiyThL`p!lmI27%J-3- zo}Kql7pAw$Z5r>w`QNXv*#bG6s3FS3ZXALyqjX&_O-n*~dJF^FZsL;8!w zSr6Jzj-cHCdJ?`K-UHC>8VFec`S=kb)%0YIm60JkCW|Z2wI~gF^kK}+(p7F}Rx=mT z!9pH~T3jpys&~{R%_{Kpg>iZlqAle>s~yZb%hF+oAKQzFVrSfei?2P%P8}7?jJc{g zsh(-He|Zr`UAPJYy!SsR+J4tNKS}7fe}7T@vT58j*7!iXUT;Ak=lErVcwsYQcsoC5 zcEJ9@?PD_zl~#!{U+T59b2HoD3e|hu9-c2xb>Dz6rMM9tl7RDcT0mntY9JzQQ2Pakdw!tttOY z_3U+^Sf&OL-2C1god9bjpg<+jR2fB_bW|jCG>Cql1gmKs8PU$(hNY5?N>XRO z+II;_#U$aWyZ_!6?qnH`Uu}$sJTn5DRaG#4^RcGAwm~wQsf&np+5{oyR0>Zo1D2;$ zRGb!7?iJV8_ zE_kE+^Ayhc_W3q61)Oilw_qXv0-!MMpv=NkoJ1Et6Iwu(NVGJ7m(bZ#NxfwHsmD+C z`vB5T)?QLS9d4c1z0^m^sIK67h}X^-r1++5CbWGn$&FOMw6YVqQ@S^;Q?-@b{WxsQ zEaSyg6X?-uh0>sRm#D6{t!wLZvl0JH3{~w07UptM-bOFy89hOs z(NPgDphqV1wsPCnL^k(({&zaH_td_a{~10DV%<8=MnUoPQyusl%fl6Ag{0*DQY3q-S&(%+-d;0@|orY(n&IH2;8HwF|Pg~Qn zx33R9AjmNtoQ*ZgJS()9=<<*e+(NcTMx&dz#q#g~UtLyK+xM98S=Z&b%LjB{^LeHK z2!q!FfMK%Zr5y^xwv3i8%t9bkf1at@59>60`Fk@Ka=-%q{Q<}oJ!U{sQfkiKp;v5JV#F(9BPs_}T~(-2oLA9czb(X( zW5o0{s8xB)1O+h2IQu=({Em%Ntx7>)v+W0(949h{RglC(%X2KqxyR>A{$b^^#*4sf z4nR{G>A&!0N{ekZSDHbU$ z;t}wExGhy>b`3#ZcV}h!oH*%yoT;N?>c0ZxR`-ViYa09D4YFJAw#!xPU~X4$R1=fa zGah}d%dHZoq5Ci!LcjP_Z(Ah~E8C6<2%h;$sdv?XEZTE!@cUT1x-(I2|2^esUeMI+ zb~&3ss-EDLL-7JMA-MI=$$!)HyKi3o2^>b2c6CC zhY5C?O&{BZ{ye%Z-G7-7$;tSu{b<`QY;$wO5Kxub+*{SWMZ=1MPiX?duf1*k8l+58 zgEAkPO<#qsafSes{(K;T+?<|VhS#u;(mFsHeqLY444U4GE#b>!;Hg72 zKY3653Qqow`X)Lm`*K!AQq5dxNli$nYI!G`&26Tyt7GAbBv<-^>fhW?T~%){ zzUM&S-YT^)@8Aj|*{@^?b*YvbD^_=*SE5EH6r;e&%w5|L7_`gwnyvm4b05{yge})S z#QfJD(`{#7!K18S7;ZJ-(jv9`Yb0|2FfuaWY?)YP(b}=fB+bW9@>}Z;l;DBcVX!Y= zCs|*vjJ*mC>~}|z9kZ_fi*M?rytZQ>F2VPs@u(X63}pItftVMksMMr>h^O{tc_~6F z@(f{EZPO`}9C3lTxSBa@C=y-@EtGrb(eqv7reiWBKif~CG@fsb|+ zkNv&}Fr(~{?4b#ia9K0p1EhrKDkHGY%4@TIDPJ5KqhB(bj0<=bX`tc2UoBEvb%2%6NAV3~mg#T-N^4u)U53wh*t4V`a<{iN#;c>u=tmHd>Jw z--6Y`52?5VPI?!M#`OnH4N4Jg)M&y~lE0?S%N{9!*lEpr&wf9@#R}iEqoSfizthJQ zz1GZk>07T}u1G;8@U z%-SrWFyzv>ifV`rmiK56>=T2*_JSA)_+H;yAU;!g8+^>1G|1$dY{`=p>mZyo#BY$h z$cpsyx0VP|LzxU8=yw6t4k1po)1QR>V#;rCOyfi?EhOa1(Q!Iy!$Fg5&iEZX+(TPK^ z?|P)&L_Ogsnum~v7Brue4B&DD(ndxZ05ig6Z zIPl!)>)^(b!&R+cA{sj}=8Tq9@JvCF0*5|ix3#v zE`T!f0LpnDc^2T|Nxb%AKFBpeLb@=bxwRE04{4awqb;BLvXnYauzy-RRFCHtO8JRv6B8P(sMR?$`?c_5 zUY(1Swv`xDoBmBsi-T~f_%*CNZxmV4GU3l!tH$Gv!r%>c=??AbXAtZi93pyPh|K7t zlua9%Yv3~Op&8fyj_^cv_DbQ~1(Pm@D)lFZC~=tN=%caJP5s8xBvb=iVIcFDNnj)S zb&Y;=JYw6BvVXuY0rmq!Egff#9^{2UqqxqsKK`4=+injJ!+9h$Gbft8{r1qXKXhLD z8$!@@2Y|%&t+sDXQ%Xx@HQ*FDN#3=6Box#z*-1nVZwm1q^u79JG12EQRA+8SMB|V* zs!M&6^T^A_fGBwoeNNRd(4SODykA2y>Y}pt6<*anI1)7{E*9BW9z;ZQQaI`A2q%l7 zTx1ks5gWnIaR-c_mdk{;JqSK|xk*JHjyVbdi$vp3)yO{FOB$eHeqv+~at!sfRvy~P zjN=G=9Jm4YT;mhbXHo@OS_fXfp1XN?M9|-+ZJNf}FVr|e_ZEFtU6vLMZ`fAvMzxK+sVei&8_V;tZvi4SZvL~dZ`T=m{V+AyRk zSce$|he80nsBvB>5}a{^%7i_Ce|w3aOeu(?Ve3nP#RR&&KhUCoz6 zhg;-?=*J0FwRK@8|4^peOxA=1|G+6H{W8xVK{ecZJ&>T_cS{myL8YUzjUbTRhj4QT ziZ+?OFtJu5geryxp`J$uiEKmp??_gD<8ak|9538ekP)t!tcw?A@0R+i^70&o{eR)i ziSm7{#-~$4-g%BqoFfaN;QAJ{*3J~k{m`|V6#rv5>EM)qMY^LM&kZz!X)|x=f7_9( zLX6Q=YXhDvvQkA3aBE(+7|ZbhPTbe|G`5RQ)Wht&hzjbYr!e!sh=W#kx3*sZhdJNEp!Ggqor z5!cdk73lPPCkHI2&Dt$#w@1s~6rWv}!Me1M_9mFi3nTy1<_e+=igtCgd@2gfGLt8bgy|1dygv;3tnKsL1$D~}N3AM77n=76`kmD9K`Xk~%hWW(yivTOX%9Xc z3H50q2eh5BbNm*zxEvEh^GGHqLkX006$2Vw%(V${o{U5;dv3s=a`a^6q+VQNIQvoS z`ZJ5qZx?&()~rhHsWpm`_dF$Bim2lx|BLr%bsB!PY;5gYTY9x@Wx0$SPRW2B^`#|# z&P;_7Va3kaRgv#K9vCsBhqh_uHDk8lox!c6Q;z=*9At^XPE}b~c{+A?H7@+khj_pU zj+e0uLdl{QS`mCShXJP;5Rg)-?;@5?kX3G_8o-kCr?Ts?K8Ua`ny`HHX9qEnuA&L3 zsp&x3zy;ng?@*O867{|8Eg-?}Ss^hl?}i-+VN@%3h$|J)vvsR)Iv7B8SD(%8FQii}3;hw(FG9C|JK3NpB1!FiHfXOa z%Qb(X*l71LrU3Vn7$svocRvK2IUUx5o$f>Uuu&%drIimY(arYdY?RV8?bGgw*iZcpF;BfG$4i zRu!eC*WVr1E~bwW{I1z=cjh{>9XKSp=8X#I^v6>!4~B#T#D1q%(GV{o(M;A)J!pwa zpb+p<&T@dw!n__758$MV$mSnRUU@*|BRj#0qA=6ylnA7y3jn`%{G2g$?bYQ7J_XA7 zy|ZOq?NO(in%aF90KBekevP>O7hl9++p$jNJ9O%i9n$LEOpivA&_dqq-TEaf44J&Hq0e|GMRhdB>>tOmrnWgytIk>=}$ z4JlNBT8NBnGUg|B6vzf{9a_qICX?W&@RUM?v0B&jVEVm9*3qW#vx9@3`y={}g$V&f z%SD5ftqSNC4H#|-6!2hN)~q+4P49nSetVsH?yh9=43WxjinZ`1ftrSUGCG&M5)aI2 zx^d%RgPc03Za$B5NXIJ{X%}SbsanO7>Ay&5Jn7SxB0~{cB#zG*)?K)sF^lx<)TvcR zIt2Z|9z0%Tk3^5&5r;ghupg|>`;w1+-PaAGIq;jZJr4t*Hko0F#^uF~llfV>qIptW zxNIi==4zWm7S+2-SH^xlJGzo0y<3GFx@o`9c?IY8V?Rp^i+_;Ko30&W&+h z;!(t%a`CEg{)Cm&Gfwqyt=n-N|9xACXwddWZpm9t19GhXN2#_|&1-%>hzt|Go~Ww( z?6nd5M~Zx{Qvy4&mOJO5G@9VeYt&ZBH~_jx9m=(ZA64lSUg zYy&u549ua73>(qTAzzpQP$|KbCNOHvKmB#_@&C0RdbbaqC&h&3 z1}8Vjey0>cfa;vUTnAtIN1>54;@gnWeg#^^dD`V%i#~Szk@k34T*;tacJvfLb=+{c>7RD^9v++zDpUksf=1Svk9tw zvYfaJXG$g^Mo84Q)zq3~lQv~Oj(A`?!>&1^U?emQ2;(wtCj}wi?zJh(kc@Ke%O_%m zQ1oDwjs8jJ4xBOVhqR1h#aysUZS@rH$$2=`Sv`Ax7bi{aN|A7JP^{qa z-3vryaM%sv+I)DVLnY#GdB0|AZ_&S@Wb)X3I6}^JMTtX_d+V<)(5AJk zP_0n5C{vN(%*xWtuaNNWO2(YsK1$3hot|!q*F8UIsd?J*us6rq3D6e*ifJCkKE7CT zT`i(MC{%GToF0QpTce{aVZxEiB}gocUq@)mB(_KpZ|R;@Q*65)Jy$y40y}uN^wwfL z_oLfDc(|GFZ?BD+SC39NixQ}Smw-4w&uLXu0q1+e0Gj{2c;eh$>}}d*byo7=KFXJH zO7R}mGKxNm5{P2Yc(G$R*CI&+&!pL#T!u-s{5R0VQ14XK7w8FbP< zv2HN+3JWkPnJ2 zKh#_qJU=`;Wx=$1zo8iaPG}tfOMym>JwC=B#k2Boz&-l#V`6L!WYD}BNuG?b6C zT9jyOzgNs0sgg3CsYZ7pw{{7=9Qya;G*$DpLI1&2jdzcz?^KAE8fRJc^EeRqJvz21kkdAe zZaiNL>lh*V8|8z02UWDBMcSx5kuVH}zQ~3Edxmz60eSQf3A^@<;z|2gvMl^yTSTNe zMR}pFmCp}1+KIx?8KAys+o^k-A(kG#KE=~svUc~HL z&1jjAy#g$Aoa*?F!B`&Gen6f)OKl#&&O0K z@5t*a%4S>BzCV~`%Edbdm3kf;F-4Z(5cO*9nSO!(THgnlgT`ZA*YwFX4N6RWF`P>g z^lw{?1susp&jHfG1%t{N+nDc`s{-u6Lrt+weG-~RDm!VUOjz2*K$u9lZ^jmAk}g6I zy$DFXP_59X*&(O$Vu0;S7l?`&^f=2R>1Er@pKA1~a*|v`g{Yh((%~;|c$qei66u1X zh9vT`6RT`IkiyflQlbV0BHu%PWu%ZK(Z?|lA)qo`U;PjJ{NcaDHxA?6Zkp@0?mo~MH_9>G=1QS3siip2{0vzY$ib7kGP~* zcI@b(&Ku_!l7-2pR`lzcSSEHlE!mtfXvg<$WP^YeA)4C~bp2U|mN3)xS|eCO`s2C5 zU+WtN28Lg}bLY8#Fg1179)B$U;h~4_`NG$~{`JG(0Zf}0zxc%iyLMf&a&l~RYG7z& zd%2YED3vQa{6=bHsg$DIPQ$;BvEn9zQW#~3oy?KB2fvFd7O^XZ4djREllMU6$?U>L zBRmJq4<;nm<2}7;!xY?m?>?4s&?dx&2F|?V;rcLd-oOoEqaNGQ<<$iT{rR;~EW8pz z@sorP(ckNkx4Vd3Fy&N2+#Kz{dmrrDb>73?t4iE-rSxmvpg--;Ua?};v&Y9K-??Vx z#=CZ%{mjqI&&+)M>VLcLYkT*8Wxjx1#V7#u_t99hX2)8;Fs{M5;NJW0BA10~r4h>3 zx-Bn>LxFOUO!6_%aoVs&O=Y-vV2L*q;KtyDA7Uw`iW&s1%?qwl%1c}v=xak|mdpML zOGHe+6<%oe%DBuJn!Gf5&790i7+Scmz4kiz*0*klGtN96F1&Cz)CVghw^&?Q@&I{( zzDE`=lVmqTjuH~|Kuu1$zcDo`$)wAm#E`x^%LI5}v@ik!1F^qS@at9WUnah}I*DsS z7B*qwd%@$032F$aRSu9!b0z)^Ux%CVvcMWzVdPGTpD9U>R_A+z?@3j(qv;r zx?-ITiKw<>oi?_JT1OUl(YE5X8rK`yUGjwf9BowAvHK73yne@4Nzt*`~VjoGr?BB<- zyzl;VrSDrb)8YnVoeAX2$b?p$$iuLA|vSsomub zrF9~IVWwDZ1|gDD1Sw8n6#2M!mzed&Af$4+$(w^Vdra$f5#Q6usMFk$>W1D#<_fy0 zchaON(}2w-Qt|U8EannfP43QsQVzP#5|=wR$nnW6&r3L0;5nyj#UFDb4Nwl$V+%%{ zQ=NcUJikK&gS0WkDo(fCZuoop1(izq1w%t;&1~3k+LcR7i~o4wz}_#s=tVCojSp>D zH#RZ8)j#JM%|?BjG3oYdt+GB%OQZg|ODqAh0rYZJ(Du==amY`=h)M2X6OuxC9~9=< za7jd+cYLo2Ns-0#6tniIf$zz2#Y5(&d)Tyb3a-0xFx)HJ2;5HP> zBX<4)h@>a|X@)2JL&vWfS59LYN$kV^jc;5FXP~EtG5I^zH z%p8MNtD1STmq;csx|uDZvYero+n<;+O+bT4%PDDax{!j) z!0dV=%dnx*$wk2r4EkAjy<&1TEX>aUPUjd$JUBE+&JpOdJ2*H*t{ci$-MaT%fjN$C z$>?n+jNI@!%M$lqD)rav%E&rvmo6eVs&B0(h`NE)nlxJVy99Jip`= zLY06T0b90@Q`w9pX)16NFp@`P=l%~)y~+j1X(c80WR6NRftiK?lzZY;YXx{pVxm|U zDwx6(u)Nd?&xz8LB;`s#tG65)Bo(yahL_|#{xjl+q0*~_O&2HlS+aLSnT6`9ot$5d zEH}Lc*bSCP9FnL*?&SUTh z%o8iMkq}%^c0|$v3wk!3$qQ|KC^OnT7%A&BQ=5vlT94jit=bH(H#kS4uA7)?v?27H z-KE9FzJ@pL6{(U;i^Hk>24uw4lFR&jb=mmXgzI*y&>R{tW8)LhY&HeZLm!COu%ckC zDEF`eVy$dB8_laxRDDP(mt%>bSi!4}Dnm9*)JebOIFfhqrc6L@Mtcvyee~vy+hE1S zD%ijOcB(A&$lE=IuzSzFOodFyoByoKD<-+@%EkNtleuevC|NLu#V)FLYT!{G1r8DD z&aW$+2kyInKQ-(&n+<@-{RU*ta#~e!wttftz`w=0Xl;48@?%58BR{rw?M8RWGcLPh ze*VNq7M2!1arM=oy6&EP?r9ZptQZA={vI0@lk9Nfs&T=&m%zRE?S#-d4jPC%0u;Hlyvl?`Qe)%FXIuQmYUX0lYOurGG6E5JOXYYzRh7g}>{ zOG$QrhK`3a%5?vP=E5uh6MVm!vr(zvN-4ZVp)AN2C)(`k5@3sQaoMr#=%LntEQ402 zU+z2L>l|G%a1Lm7M3WpWFinU6ce!^;U@ke<{o(VC#>%U+gHbEa0Eb^176Wrjll738u8ooAt+2W3^2RyX8$_DT2hxjFPO zfQ<@#{_~do=jzIuV7SV*cFhJD9bEy3kK9kpd$q3$7N-d2c8ozFVRBF$FB&8#b8#{u z$UoSSpo1Xt0vbT^mEl`P8>V>$uEEHGkf;$-#=SGvtkqg`g>p`rP4*{Sb>Y% ziJ7A?G&t@7^ju(&iRG}Y=S%&f+aI0U&zP}>G7Xwe3Z6jgDOqT_)NOOt8KBRbGwSaM z6TcDf=W-eS`P(Py&LFTb2!1&P#1dN))VBVQ6Ro zX6NSMf%_lwpo_r^0w}d(BWBdHgF(=I2Np1nTxMpBBFKRg?m*lL2%rYts9`3J(&t#a z+@(grB~V<;U@r-txxu+9F@fn(En#c9MGHPMhZskU55y?qaDGf07Cq9jTGt=krA{3# zw_;NY-u0d1c$KvQ^u!Bc@LUzg1u{91%>|o1h%1JXCPkE{q@1XSsc_8pcImt$z)l3D zrW#U0zSBM42mm)Js+X$tsLP2H%|0``N$CFPFe1pU45i7AnmMC$ zNg%aksCmt(49kHWSFSeT_0n$7ip3<5l%?m-Lxt(xgdV%w-0Wlr$;FC)e!uGu_Gr zIz6T_X(`7QlLv7gNhyRyf?{OTLJgY!bL#LqJIO6o8*>>NE7FUkt|) zD}B`pC#7NqN#`*H(`v_un+0_KAd5$T?jAgJKYd+uT?r<}Ctz~LO4zh%iwC8nqVR@b zw-^|Cn=`|FJfg6wpwBRYEP(j9LEKH@a&Fc@NDs{$mrYK3kUYu-85Obq{w1fko(^BX z_RF#n%p?gji6l8L(m9()XaE$#L7PIAJqGA^0)dEkiA|paIrD$md(&XMuIo%}?Q`#& zN6a$;0we~4011!)2ays*N|YtFRI*~b?MmB9$t|aoZo8fCq`N9Z`Bzf;mtXnS6{i!s z?3Ub?Y)!N!QKT$!5(N?jK!6}I&%ndOo5y?4-Z^XB>pak1>BNbr_f!x-;Jtg#J;UB> zed`;79kb_72PkqgW7A*`saLMwy!egr@oOiRg^0^v%LVk`%&%&FYwQ~x9f5W0 zHp$}F7E306__es`>h6MKmhR4L&pGD=R-IGQ8|qD3Re_v$n(y2#_D#hQj# zFg>G`g0i$|Xc7=fVM>KB7G|vye)o6(SJ<@a9(eZS&%>cZPY^Fr$NAIK(=?95xbLyC zF}QK#CKp;#XlOzj+Jxa@wkf@?m2I;E+?9$)Gz%&A5QXOvWe$TWB_x9dk5R;q1)*{6 zx(#LP>~nGMzIYIOL6vvxOtM$j8Z6@;$jf1bIiwxKF?@% zhTlt}Co*|qN{Sp$;P=6}bP7a~dzk1aV)K|;mE1fgap+L79C6+o4N1A|tQ8MLt5AOJ ze9I^t%02aAE{iSx_xZF)O#s>AmEDAl|59tlqz~T2`gQh}HET-|kqH9>4(;GLhQ89h|-FJwNwtd?U*t&Ha3=IzD z30X{cr||g%&)T#Aa{5RL&WAZab4CY|i4!xCa`PEA2uliS>OtFJ9E^K5ZHHA=;eYWG zKL_{>VZ$Fj#1uLs+sUmtT0Ey3+MOMOLZ)Sa<3ESHfMTe#ofCKvKBL(#iL|;V=P#Tl zwPfV=H5H z%&%68fj`Hw@atW@dI|o|-}^W4r{Dbd@ci@t03Lnxap>>wr+*t8pMvSCKtrbmq)*I} zyFxGvH!SLAXXeZU8+p_i^NYwarV6Tqgo?h%L$)lLLl`&=Lq#Xv;X@bFq$o@RLu4Cb zU1ol~$qhAG&!n}FZQRLtvdQQP_*2suL0tVAN6uY+oyVx0>YE+g~^EFcSskS1pZx!;IRq~9m>2rDi_Va^X_^a+9)c~@S)_o7v+ zyv4;fIY6u7eJEovmAJD5Gu5zDp*1Vq>DU0ZdMf!R5>6Vb|^lOfSOEQBoO*HIZ2yA9L{>>XSpWq?W_r#v}W# ztAAkCIBo0h>i*5)u5X*zBdBPLd4~-@CawuvMsO*}s2pyqEgkTK|h)^MwZoFKK zyA2eAIrJ)mp!5NS5jsRf$Ns;CQ6Z!%2i6$2={P%@opAq-2jI-PQ}i z*=@+CDJ6v*UvLO-E{=+#FzSVgegtXM6t>JkPF9raW~G9tB)o7cf(kH{TB$0GiZ_V+ zs_A=OJ>9~uY-eBYySUCu`-p~~D1AXuL35l4%z@Tsr<01^rXfKZ^GxZ43*thu2o^NL z0Ul06WR`RMdFHF4ZhnDd$vN?n16)Y38FD%$hrbBY1A<7)<{#D2P|$oW989nn6s;4K zvH^BJq7=_bk$A}WbD<6!OJdNukZ;hlKmkJ4_jUL7m>?0+N8P&%;U{Ckj!2}r;mVtq zgtVg2vXx`kW2}w1&2d4|U~EcC7l1;X+(MA=ocafz-r%etvA~@n!5gmy*f`>UAbkNX z+L#~97JH>oi<;zt&4omiARMKv;LXV%&4mQN9qF z`h?U9{6*)oY_ku%q&p%NqmU?aR zx3Td%^y}z5Z&K*hJ@;&bt@qpuYgVsjx{k$;f=!}w%(Zjau}PRiX}#rL2>GW?QKro<}+y}&lOJz&%mqO%C_Q%JZ{@FGT|#E9m^j>C*wxw#6t=%)SG z_CA;P7|YPn(OlQjIsA_X23Gu|^=r43&piG3$?2Ji7e_{~fAw46`q~j-GtK3%<*(%e z`u~rw&d$C^W@o3_LaS)lvSOodO)E>B#D!h>@QO7yCJ$n@Wx|T6mUdNf(&ABMQ^HJ= zAWVf>I|y>+L>)_C9TL{f5X(Ub|E6omg_G6!epL_m`@Y)+M!I8IL zr44sLvw1 z0Q6Nw5pIOY%hW&&JO)LuGv6(%wDY)9itU)G9Lxz8Yc|=?H)yC;jlKh%Mg7EV3he9pjN=mUqbQj+W!#4)Ix(P+ZqKJN;xT=i6mtqU2MKHO8 z&=jOC+-UiGL;fTgQxgJ9wZ6-|{YIl<1*LAbd`+^CwNeaN2v?fL9KPQidUpc~aeHBC zXbnd}SD&X{av_8%f=Kyb1UYj-6|Gb!7cDwVMW~#wcOJ(}lr`jrE2?V^C;}~d0N0GM z^GeI&uY){{7z`365wokiw|bu0i@e=#8{(#kq)`G=Y&t^6Rb(20rBWzcNO?e{7Bw771uGU7YPMvB6y}IbH^ha6gnPkY#vB1Jg|oDuuE^pd zoIqx~{%qN1E-pHx~nKHoCgI_f_}CzSXPN{r1*>y6eWw%+z-m7N`IC`0@8%JAV8pW6R~;^4D?! z{r}~MZ+0A>o|>e^AxTl7&#e}6_#d6kE?PQUxIt2JC)_?+6i6UPAq3S%D2-5V@93_IZTkC?N7HIwq)1}4@QEY|SHU)&qM=^VjBqv@8SQ8b$`ss~Qa920{sml7L94J0i;sZiLvAdeOyjE1NmE zaD-fV6Fe^GBbG7S8AdL;m@n_#OUw!`NB3%hfin-J6wJjrcJQF!4Q|Bdg=)|cWYn;p zBD={jf47m{BS4xow~4Boh!%a8!dHZv$d!Mzv?&CBUc7!dmJXr;Q2ss$0)^r|O3a0z0o@K_%?mP}mfNuXT=V z$4SxL{A?b1>;DB$M{pj&Hn!)Yvm{h~O0H1{S#qimIfdsKcUcQ45dtep?ndir$%M#? z>zX)GZOmfUX#^*_v!cs+itBv}s_V$j1|t7DaYA434k@hI6^4@%^<3d}2~p{u?t&T% z{LAU;v%h=t82uU^8isZ2Ho*F|8)5zW4Q!9;ic&9#_RY7UySAoDlV;R9SmMr6EybMy zTGL`nS^dbsz!0okyP+yThhco;Hcu=&I!(_4$s@;}s^<#o05w!PD4v^g$^I;z8u1uFRvP2KmO!nkH1uX`>Pi(U;fdVGe?e{ zIdf)Vx!ha+S}vgf>b?-je0X&17E?2b`>ZHuP_qZxbkQmd$LYFRJK_dE&Qc&_xB_(L z!dI6!02MKnhM=hk#gOE(=J1(OPnRBtn>`le#8Z_;iNsQEw%KZzrSSN2GT`+a*QmhV zuy#9q@XjjM)eu@fd8e$T64txznLJNr`$8(RLpF=Hp zT+a6izlFM*7>_Zy)Kz(vTu*nIvP4q0Q`$YP6A3yC|OQZ2wk zZ8J4|M%_M)N~6U%WM67u%z{Hw@!yfMhTqUZk@G$5fZlK zBT#1~p!Jc1bfR6ud$!yMr$2a?3g}XtUd&oD7besojj=bzMI0#*u=-z{JjgqT8_nj=SI7PHyLawM_iowt{!>rRyf`sF{wJ@$`Qj_ruV0^C zF8!9jmJ8_r7hezUd}w{Ofoz+eo`e-ER$1Yd>|s`7WVIld3pCy>#VeN38BMn;qxg{q zE@V5wqGC;bZ)kGf_`H=@j4rAjNHBoFMRLoaP9gfTC}jBe&K~bfuFqcGCcCg6Y!CbJWWJe`w2;;BBGQOGxYLpMets#J%iWUHJlBLH6WxNX^d-byI8#M9JF{;-VIMtd|jn!E;5YP&a}VBihs4`VqfldFFf_m6tSq&dj~eJAy!LU3NxE+QTa{wr6`W$Q)xxx(39>UtPmm{{HM zBMO}@NTVNW1+W)QvM95-Ya#$2QfLPWyQ!7_GzEds)ziJJqq}R@;NXh?V%_>*9i5+> z!?eqIj(|D- znu_RlTk^V0_5d2kU5dj2rG}+w(aLJumRLDO@552sSy<>(*oc+^DJ!Z|Ny&HURg1+7 z8Qix;yhHCDJUq42atM@)_o~fgv0AX-d+#J|mjCdJzfrwLgg1`-2wr*hhji?d zljHF6%YO#1z4kKf+O-!RfBY%fy?YOBD6>`JT+AhbQ>W0OQVoLfLvr~5gsYss)NLpHqzJN7rYka&QOw& zt#DR?HaLzNj8W9W1}KcBI{tzzwz}xG2^B@Yt}Eb%q|EBa5LWE?}f=5BtV2~r43$du9 zqLLbn7IQekCAtYM!%sSrL}=%YUq3_?cbRDSAc#QITmp=v48$K-u6+k_j=Sj^&dy14 zpp1qs0Z~yW^nnZ<^i{zN>nS~`G(jflae)^DH zC{iKsM@}bQT@I};X>Fyo6QA4ZdFRPq7{VJIm$qU{s=z~Im?u3Ei%^3em2zdJKK{TH`x z-~8_PzW4PvfLgQVujQ}h0{TDr)!EVg$i(CrEebqJGQPd;=i*9&Cw@As726G3WM}<7fE)4n7MF)SDZOR%JZ5?Hk z&z4%rIHX+6F}E?u0)!jZ&5>Ks)zJe_J@y&+)W^R7um1E!c=4qds@Gm5uI;g7N8sIe zkHV&nTj1GeKLvXp*iUI;==L!=*NvtS2?iCU5}FF2hM7Vf0mmK(Z|_!D>Y$IHUJtB z;5lxyC=3Hd{+R*`Hdq{~Nr-rVpmiMbij_WrB2B(#)xR(1m~V8% z!4y8chS;1TI%*#0$rZ)ms9#EPrDrx;ai%UPekxF?*RfCqRJ=#cyNcL~paJ(TFoO|f z74cc3Y2eVP7J0fSYP9kG=LF3;F7z9jvJll@T&Fxi-;*6Tu!+MaI*EIUiWe8E^FYmQ zV83k>7THaTy4>LE$zIVaIFJlFx*NdQWe^JQIr&VXxMWi-OK`3Tt2A zU{&0wVuzXcC372cxc7H-umnR^5We5?921BGv9dS_3wXwnd-6p zwOl~|C0`vK%>y@XjMDS=+N-a@zP*PWH#Bbww7|&-(RidTKpvkf|&e*mPh64 zk<88j;B0#2+e%Ha6558KX!?3lylyoiQ3YO65JM_FqS84$1x`llH1hZMdtBVz86AW1 zu>$r#@HFha?;yPT`uE`a&C780+GTp(OP4Re@BQAtfi-K_!;?>b4EFCkKnY-YPTFF1 z*4xu#Tw6*MgPcBv2pkF#F?|f}*l@#JB*%)(t0nqGS0fi#f+XN)qe4#$(^Q(>myND< zr0pH2Aa7_&Gf-MZqmi9aWB_f~OOpd*Og6$sf!-V@wRJR!Ym9|EMVq%v7VSw9=3PgM zA~@9339lpsM`;JS7|Qogh|vNwg7A~0Og)ko;ED!QAV!0(WwWU^Xp&4=GAH@==qSAh zx)h+Vbc+%uOWW9~&}x?!LV>jt6)!@7(5t}{gSL2M>%GbrWT9wUp_+UH8KU#!b&kW1 z!lWZ;(h?vAA!fE?psC0d{S?w`Fvgk3?=7Q0Bv_J~7{E=4Qr$CLka$gE?3D32Qa`X* z_JtZ!9I%i_7ZfV~A=@WX%(x(}r3Abb=D4AS0ee-qOHS{@LbAVqfQq>DWt=B=rIE>m-N@5~YWze~X`OL8@ zMEjtp*;PHeOrt;nC7v^kB5yVV6|3wYF2Ow2&tL)}%z0fyeg;(^K=+iKJ8$)uU0%Qn zO+M$PIKGGto*wvg=V=&GLIF8*)wEpN#hpM=h`NXLMY+gMOfPIQr_ z;qeo1!O?eqN=Weod-lTB3=BIT}q?rLC3 znxyk2ae*(Tn`Ske9a{(chriU{H}Iv;e)?CYs&)V6YOVan)a=CDCr`fl-h~Sn=9f#x z<*(%en)bKGwmV}Z^iZ8W{{ifO@G%?D6)ILSRH(GSOFn{FxRNR?A#SQG@-+50#%$|D z8-8T;RGmLS`Jh@XCyAVv(RxyqHZJx!VkZlyk`N?x28n{isMQyV8J%66`m)xr3-NQ! zKBfUCr>1Bld+LeL!Mb&;;L5cR;M*_!aaBN{BgFg0jcf4rum2%@=R4nk0|ySl(@#GK z8#ZpF7sGTz-1IQyU|?W?XamZxBmodNErN0(>OVm5g<`TfM5+e$cc`@`4e;Dr-hfs*K7C=rLl=~1KSTa zq=*$!t!;eD|7~Orrl3rvSk&QF#d~UAY}$HzdZF3Vq(%&nKb6_a4xbTlh&gry8en5$ zOmg>V)91(Qjn52H7@~-RYlxx>E5+%flqOXlB#QVZ;bGz;7qTT7*)WpJPeJdsxHwDy zj>SiB&q|_5uoYyKw@8fSsc$tFl8u}y8O^mI7d9p$6L0wBEFx9J#V_t+>z!jmp1jG* z7PNQ;6C^gP;*+1jHl4$s-d-w#@qU`EicFj~X#pBsqlAr`32*8AD3!+%64bH5yVvO0 z9H0pN3k zd))2On{fU5RYRfGyW8j-DT71Goi2nDc^BQn{W;oo4lb!T*gBSigVlprJ*Hss^tNtF zgYHp!A9R#L77Q2S3Zh^{Dad)Vqhny8qvLbc-+yjscsQdNxjm}<7QO+d7MveDg>YeP-k&wV_=9sS- zYiU-hct^ze@}=w5f;kBP^f&%{xN++eeDgbh0O!uXPsf6`Qm?=MV|e?mpTf?a55RMu z__=B^y_a4Kxrj3}9KSofVwj4|wQE*apRrBn1Qq|M-#bG>L_Eg6{$A*c<<)9IBEexlf@~ADWWf>zAb=bjBrB2LwqM)CmN>{@grs zjqx}zHXL7PW_m_qv2)|pq{5vGWEvY{@P&v7)!vYhDna3!O?De#UxF;mD=An7QP+9M zH(w5b;Ln?!Dn6PQGmY7m$`JWnPNO$7^2n?A8yp-U4{j>3F{H&6DEv0T3jL_Xvjt0J zVVEU}$^EO`XWfNSWJ^>Or7!Ugmig@|PiT0zWC}?s&zN@|n4X!Iq{1foOXIa}iEy%k z0Us`|ft)c)wlAC)HynMYG{KMx-$nu8EdVWTGzXy=8(CxKQ+8R<0)fW&>KeeYl~6!N z)3CvwpDT$bh2M{S<0Q>7x=AoC0tI=cB_0NAGK%cG>!w>tc)858ZMaYf~ z>SJE2E+JarjInq1v5m<%|8-6*t^v$*5AvDm7({?t*sO`0>V@ekat9$zM_)fv#ZaG8 zeTI(CHgvYTVXmB|=M?`QzlV@_OsK5Z$O{+FkT>$z|Kty;n11~5Q}F1cPr!=dmEb*< znqAfFPA-Ux2{%d`*53nb*It4vSI@HUz?z558JFIsW>N?>elgUN7Htnp^^Eeg^aYma zW0EV!*Ag6l^J~eQZZZN5^js46XdF%^UBzS?z%@ zP0dVw>(r@}KRA2#*m5G`asmDK=WFG_@a}f2wPJR5N)}{63q@20j%LS+ae=)?1DM!K zb_6M0I4YO8f1wZrE8G0AXizizIKK- zyoJSiIDY&s@>kt{?|pFak;mYnhYk|&5sQJbJL7~};24xQo<&NQ3)$fcrlzOqe4?*z z|3E+ST-j$C+ybgQM^X2T)uKxLeEs-PIpKT}i<(mbxJ5lFUB(XqMF2(TzL3C$kj&{M zh>!|G9{pnB+uPestLP$ejoUJY3|3GR*Am5*-JRlnTxRi%Od+rUS&(L^D6%_;3Fizo zbO{BJZOW1f4}6$wGC2|C2;V}zmO=cQb%YG& zMQxN0DSq2!tRas|K~PICMXk)C#YW;85yvo@jz$Ng>G%v`!4_E*hQiVX65BFgIzPuT zr<*x3m=*1Tog=b!STK~IEZAb(&S!v7^U5|i2InJOYGk-1PHJcpgRf1w_Ts579?gXm z)7VT=k+xX!CDs9w2qhsXCpN#gPFPIF<_jZ@5|?AcYmC;M*vycg0#geqYCcH=J)h&o zLvXfu$`9w~kNknjgM5w}N_^Hy99aDiKf?^VjfnV?$NxN;QxTqvY&KLnxFpUZW`A`R zC~C4@aOkCu_0>0CdDdLRn*~tzdB*ivXf~yINfRYY1lrx`rc!V-tKv00z6BA3;@KD; zUcp@M>RjQoa_-z|ID7Uz_`|RMZnYNfgopM&0uMZ}pIkk>-8(EH(^EBkjU4I(4=amfs);P?bPxdV1r44c5<;y=)$?T@;7(_u`vRVWa~Doi zLxuZd=7868V3a0h34@YknUhuAbRp&BS^zg`5tPEiu41dbI=CX)kECD>8TlO zAe1}l$8nZ*7fTlaAsowsxyicOJF0VD6pN5I35NaHdQ85taNfYi>xE2GDzu!`6s zLQa<~B~`IRZ)ep&)S}KaN*ln7|MI<|$ebc!;DnMYU{q}aU$B%591Vi0UZXufFV=Al z3f^GrwnZv(%^66WD~oK2Zd4yE84*KmNc1a>wHB24IkD(VCcZ+%cb<`ZLq8o|O`U}7 z+=00X<;RLsFz1BkgWrSA0E&Rsy3fR~BAnJK8FBDqX<7)d&yoGNbsD37>l)mW8=;)8 zmy62iM8upDWYiAGw2veLQMR~b6djRFEDl$%UQ0iNAOKQ@)c$U2YJ&b;mOO1!v>&IG zXV2kUcnbdb8vq+NY=J|MJ_+~VyB}7q*ucedbsBIl!B}r>I2IS#=>$3QT0?4LZE{o5 z;0jOI*=95uz*)KFiHGu=YhMNi_$EAG_oB$?v?4+3%bZdhM(^B&k&&CQapPvXI<}t} zV4ZBzk#fvsrbR&pNX+xzf0UG)f4-K%?ODkM@dQD(^YlyCLYrnOB}AmO36=)Vr23i~ zor8SJ)~mr$Yjn+N6dnCN-OW!{|M1D)-u|?D?YgV;3kxq!O^koz&9{E^(w#eZCYQ_1 z>r}yrMGtw4j=dg?BDY^d~o&{ym$7kYJ;4n&p$dk0^fb%PvJ*DdJzsk_7r^N z$&Zo^6do*5957b6DvSmO`(a^D3hCH3S_RqQwK$#^1y{uFr6O+85QoBqdWA*k`p^~~ zyDJA-?XavcB^$0>P!&v^G`?U*%UpN%tg6b+gFRZlxl7ZcMk z@OcT+eBtX{zkUV2`K_;3|Mu@--P+A0R^Pk(0Bk}hj@9d7)yj2n{l+C0sm5IRC5yCn zRH}40BD@riE}XlI0Szg$zWg2#LWZ*~fW?L10Nh2(X1>3?$JsNdVbi8961)>?#W95J zgRgdZ;HF8@JNwA=LA4h-5jcYtI!RGIf^x1cyCH$Ibkse#7X6*6XAankHEK+zX_<{4 zWalHE8kaWJO-{WjPBNjRqib{3G=6EIf8a}>S^G;f3yX^{PEAjI{pQWpJ-r&dVy+jOtH0+^hVyqibzRkywF;xiD%G~3HiA=W-EeFK`b*Y zuZgN+MkPHhWFbHz^IvbhHUn18d0T~jj8+FbO=Y%4^I zBBziX@m|Je6w@>*iE?I&?lI+3tDPQN<$*^qA!hoA-8;!BXy)pn{>6%N78#9C!eNdv z^WUqLQSyAWz)2>kPR{uOuO0dv2(1JM8w8NGDDpQJ6Km+;I;3L2N!>CpOus~10XJBZRj@2n?Ow!gG1usVU`s!_(9E#Q1 z*$pdKuAvPIx!#M5^Lde6+L>D;orv;l=n~{CHw|3Sq8nWV@E3k&Od-5~`@^tn$3eJ! z?E`q{-5(22x};xcJ~#zu&b$YkHf@Dxo_P-T?K?o53-NEK+7_jaoA<(eOT?Jk^<$wL zDF6WxLKN&Fm@zv&V>Ab~4s00GoW)Tfwpd9T1&}eMqJMZ@8@jOyid#l$a-_&xSnxc% zU{eVWLvg_6_Y zx@0I8HwY3KBB+T{f-FAR@tIj{=_ez}HYerd;}{z^vRdC9(#3Eas*;GE$Z$K;*^&YdpB$r?KE#^12km%GmWUYjq=r5rXW<>M*lcfpvJK2>;UoJY0~@CbYPJM zm3Y2~28ZZcVIzY@b`;P7i|w{dVX%=z%S1d)NXMC}*5vokp2)t@k|Nt^6t2q&HNA#+ zT)FGZypmnLYz1%4HJS@bZGwvI(v-Qs;JiTdBtqYakoxLaZ;f1skK-DLo0#gf!@NIc&vS zdOC^T(I$(wXaXZ_6eiou-9;1&|BVWZc4=|f9u;7R6GpU|3ku|0-O+5=X28PCvfB9C z97rRGOoq{d6dm%JgSw+c87N1KR92p|7W4}GF*?J=A##crN!-RfV|8D^aWU;{5@@2n zw~E-9Lkom#O$NEhV){d{QMMx7hH{G%T{mF!f|Wvh2^N%`#87zz>MH8dcBgC3>j1~%oA+_S3LL&eWf9^bHO`@hx+8nqDa_`un z=#=(MN(Is6MOflFO$c;#zUSf`eYR>tGqe%M^~eQAWRQfm?UImBq)KVQt`XKjoDzZ) zZ`y`iOMJ^T7yNgm{-|bxiZ$_*r-G|`KXe#TaVr61Wob>la@pygoofra+N6LFa%(}~ zYSbmv_^b_~1Z00+YcTct+jzYpR1T;)d<30t8Lys`3=5ZBr}UfTC{NsgL`#Uu4oA#& zpP8PdpCb`&Uq3etk?BJ0m7WtinH~d1p&)vc&}W)7EsFdM6K{OM8fnv7nDu3}rm;3D zNSWdiBxtD-t3p1s%{v}a7U6}^5~>V4kKp$V4h?fLo=TduMF|PXc9Tg2$6f3tjzYxh zdJ%ZAFi(H(Xm-$E!;`OKiIrcS3Xw&7l3WRQM|4{N6%_e7sL?aD$gbPwIgHp9;EB#X zBldG}_Uvg`zkVYll)oSek#Q+b2B+bk(kbMY?`;$mAG#EZsg7_P~tnq>h0`$Y`S3| zDCL9rb**gCL!-mkmW8k>MF%@XsDCwzs_+*gZirTqS9CM4LrDriMWT^sNr;n;t!zCp zq_%K;7evo+<1JHFh*ZtNn$?@(3!nK)wa_lW8%KTsN8fz~rl!Z}Wp0n&hOd9)59xUJ z?tKWJd-hYXZaoWZ=4RMunKzkU`fRf^vo;Z6UUQqmHSj+%ArN`ASk&RMGzm4z3ml$O zEWDA^s|`|XaY@5q$$pN&2M$TJgt$z9XlUYLqcEC;`haWEq!x8Lme)}q+Z-kvU!!XY zqF9u4DCvN@6#E7#S~mP)$4grXLA zjt(kV+<|b>@%Sev`F!E18tD;?N>}$6wDWNrJwqChJg+x9GA?*a@x;#Y&dPhY*Rbzt z(Xp!AMHzEJsGLe32}?tf%6u(i9s@^e-X`QZ0T`@`>3J%?Vs=uA?Tp|x zwu=3h1lkr)c%M9|1xrS73n|ixL+0)`u=sQpD+d$bMZYA}5Oy!T;?%!X)0BV|v$+@w zqJ3bU0~W^JXib>Fk`5a}acYqB2h*eG(J4kX9U>HMkk5C%zrlrLse?#zL|wdoWz5ql zy_fi!FeTpb2Ik7JW)_v%LdWA z@IFIvH7AHJ(l0z3TnBN|pi|4t+6c}mBh!qsYmJ$fPX#^@ziKrA!A z6S7hp6rH3Zj*+rYJo_BQ2p>Iq3}&lEy%6pxZsJ3OE4VP7npsOlwd*Krw`vrLX&?n)`YhRq(Wc(gVR+m3dyOqH74kQLJ_}{dsT7QasoreGc;U7Q>t@q%63(B`^LqH__6ZCE@7jrqlU$ zCtsMUiY@yQ2V=Ex7!(NwNhr)kbyYd@Pd1Z9T{8uq?`w7_;{9W=YLKyL#=l3eZ?(rG zfAaPs-J`g!A*BUKKT*;Yq%F-6A47wXX{P!FCk9PM(*Rc>+oz~!dS`68ChW`4h6(n- zT~}X>3xx=;)9u^WVdVBrLZP9Cd`D}3J^dmCZ~K_N<%5eUw?tGWVZ=}i{z=I^g;=O> z&yvzJqD@kG|H|$f`us9gGa3k`{?$~}Q^O60l!p*Jo-LXiNz!!ZHd}3n+Io>f&TKTAW$fRUEA1hSN7kEAGIpya?p z3Nd_mTdmRw4nn4IC}-0r7ix!X0tP9xaicAnvkO`n3fJqx#k26)&wdsjcyJe7yl@$g zzI~!v=tkvp@mP1De+46#?UJ~aC=x?kC0-8-E0$Tk4(3!+>&A^Nk(@0VHVM^c7Uy7U zrYb<@tJm)ChsPgz4jy^j`{91CZe12_smLv{ZzHY5hb@y34sGJMX7Epuv z{`>F3hV`3?LX+%1$ssu2f!c~+0hm}o7|Dm-M6cdkU7iVW$-G8+tgX;GohwZ{11`Zb zCL{P6SfsD7dX0McN_2~NB*AP-WsS~}4E5Gfsc1gtW<|8bAlnT4k_%1?nI7o<{&5|z zuJ3S1==@C8%ztL(@Y?pS`yV+rw=nbC?CjLHu3kO&`mzx5ulK9*_vynvdEnVCy?sOf z-NnlvG)bsNqNfHSwGTe{2wc5(5sn^v6*g?xO32yh=q*^idOh@Z_Yqo)3v74wXZ*sj zfr*JbG%g(+SV=ekKwmH1f8Snl7698Ej~;&m_U=Atq7?FBtv0uvd$wj?m5!-X<_~I+ z1^)fW%~7~|`8rw2MOi#%W=H9JdbKo1_p*{qel@8ryn=$Sd{0eKjRBP-s=*09k-h$N@0SZcZN0#{P_** zx5B}FPs05>_R)F1HG0)hj`8s^IDPsgy!F;ksp(j?Y87!t)mm+8YK96H{2aIMjKSF0 zxS?@)Em4?=e@0Jf+;IE*dx=JqAi7jYFxxsSkhNin(ZWG-aZJ$BCR; z{9c|A%$o-=i_{wQoM2JJ_eQd!g()f;{1EdnO2k)$_B+vDj+D#<=&0P_G4UG+-ldJx1N+v!$3XSfGZ2^81Onk*;?y zfezS2;d#X~)21+`MY<qSid(%%JN*cK9f43ZnL>MWb-Zuz;w z_I5WKpSy3Z>95w7g9jdWG_X*+r@)7`K#`9p#(bZPxRxe-Hjzr;-AO$IJjg_(<{*;5 z_NPqSsJ9AA_eg$1BL7&(8f<}4j;i4y_}bGOKrC&O`@14@qKjZtq?)g~p9QG*dU60& zfLfBUgbm@>hVIUu!+m`N|LLlg>;Lh#t@k~;VdIvb{-XQV$oR<2a!I>fK>wA0J@d>n z%`bf6E9uDpH zU!0+zK$IiU209CqQ)7gZV)2O&1t!t$y8l6#n_ZN2DMqE#s0o~U>XyeoA*>T!@dU^(ItwMBkVR4T5#zp9W^XJdQ zkt1)@_;ll@^>E<8zN&y-M>cfGEha=1&jCjAR)qulwJH*d8w4)wc~R8yrVn<}cw)G# zC{n~N2ZNM!9;c?q>3D|+R>8gp4#R`HAEO0gqB@^g{Nw8&>U#Ffd+_E@Un6lEUIP?+ zskNCR%Z%o*cn=FcwX5S0kTx|ci29IqR`q>Ezgdd#=@=L?9YVRGImS8jd6RRQa2U1y zN#EbjnNU6&GPxi$wP89;Fa&b~K0@!PJ5-+8nTGCQf(Bp1*AgZoy(% zH(4#(wWv^0W)fR8A9g|oo*=zRs3|&v&4D(BX#x~E^+62TliMZ5$+2M5iSOCh+arj2 zlBrF~4k3^^m{C&g+K}R7N)oOKU9Tc!N-oz)kL` zvFq%j&xWXScX!o%RKHWQpClBLj7S_c!U~P8fqb02KqZ&!r&semwxG_6!*f1_aBB%^mI>7XHf(}yYuFd z?((iSY`kX08EQaG%!oBOyIIk#D9Gfaz?EmL1$%NSzXoEsD_--xhER(+Paj5u3HjKk zXD9ibJL^6O{(cELEpth%dZ-(mxSz>Dj2)k&Emi+rZQG5$>R#B}-`oH5!>iZ)#`bMH zKe2h^ww0^bZiv^eT^f;b-tyNnh2#I$S9s=`FAV*wfAP+ERk zt`_vt-aCD~TI^?KQQ-#`DG112 z%RZNN*#L=-%B$D&-;y&rgdl{j&GvjvqL7B&)b;As-Zb zys4>4wykS+iaa9O0;V{u*{Ic$qVyQDX?=2t+W6FM7@x!qycdQBSHjOd`z!F#Cq4%! zPX7#k_V!EU;(=eY)yDDi%in_^|M-V+|9!jQ$)}!yT|4(mk-boDEDKZ^_Yd^(s1#`l zhJ^5?!Vr_W*;#R1=qD5wdA^L&W*=S?xD-$u@v%J`WX`)<%oWZW&crL~PfR$HI5)I2 zf=%BPEM`2Gytra(ta7S;paY>PBh=B5x>KT3pPFtA?Z)-#+uP zb#rN`fGZ>}m>@^@rj&imlM`H}6fCI4Xa}AOQDg{952cj&TScTf1gQFZq!r+`XcRR0 zz+a0}3~5uAL=>5#=OzXT3F6OEDg~yLrm2KlQPf=(#fTzP;aiqMM`_dju{g6}V_Hic zOF0OFKD%t>;KX)O(QMo_rzef}(%;`tKab4|alWIDZc=VKHO&yBGf@Mx4Ag7Q|E>P; zZ3znTln*U39O@R>4aO(OY4JitnGhTwRFGB_g-QY*Ue`_%9}dv*wIsNRs~@y2>}Tg1 zDvYYNr&|{K$-s?>@z8Si8=cXb~UM9cjM+QaNm9R zSB3BixOnj*rO6Br55kjAJ_$ej+0Wp&e(S%2mtT4juHU#0&wuLEuxjN>_;3EzzocWr zHSL#vaS%?we+u4y`)78XisBO@NrLgh^cTvN(_&LKN@Cp_i~9QQiqXk!xX!Gn*_20Lo{KkPF$?%N=|?)@1?%e9DtVUw3g%|&z+-5tIesn0sOkap7OIZ)AVon z{H$EL7S5bG1zWdnhr#|8;`RcfA#vhO&$$m-%xH~5boZ$9l=d}3)*paNNacIFx(5au z&5mcgd-|RoPAg&Ur+@MG?CjJFi}Uk;eE!nuSFT^betWsxT`r)*=Rg1X{$Ki~FK^qp zaowKPD_88SZlE2_j>evjj?VkLyE})~AS3%5=dSVg$S6!rPf%A%#WQv5f)WIdW4?O* zGL2~!;ZaT{+F0TEGgXDOADjAxR{3lEU=%sz!8TtN1A!r0sn!7};e^IK)fGQjMS&>s zS1hD>acJivoQ}1u1txeGeB3OLA3p)_z4t!s*|P_pdiwFIm_A&clUX=*@+@39cZC<5 z25-7#f!Dp3er{rNf{q;#Jne*|MXq??2)8K(K@Sz>gn9>$-!eX=T~e@gBhBe$<|;Z?o&d#6vr`yZTwwQD!PC!YH>?A-MLp^3PFPEJk}dWQ%P zZa(M)f!B*rX#romr-w(jAjMje%@G%5oC+jKlnhJM@pNC1yTStTKZ(a)H3VeaHP5Mziqz@m zsrM@Wtct?Qm=RjFLf6HcC=Ts1C;vfqU5OUHqCq1Dj*7>ydNn&|oS58s$O&>qP=E5^c*~MvDaDs1SV|*= zKaSVD`hWTvbip9Mc?>TipKL!TVxeR(R5J^VHJ#MZ<)B{H9CXrZvoLY>>eba+w2uCK z@4Z{$*=IivCr+HCG}c|acG2^UYwhXx-h-a13HkizzesD%cfb1reCE@igMt1*_;+9Z z1GsYa60BRZQ8@o>dr2Wo!trKNZZw-kP4{FW_5w{sNPyT=UAN8-w#%%39_ceke?uWD zQMcyj$%P3g0oiSBY2vJRiE|O#sgA(w_p6Ba^y%Yp;NW5BRV_)bMRH;~a3L!p>xcrc zfaYf5CJkAy5L|k0ZUl^q6Lo#!hAlY`xK0brQgcbLxfSucUg3Q|H3^rmo~Nn6;NS{s z@Nvp9J~2vDmpfy(>3$&5Cq0)97`-zBD^{%HFfR#>0Uvi?L!h(Pq&7&hpqP*+GcL@D zfEDAjhpau2`$n%yC~{7$iDXz%dadxqAoT)%RAcX#*w!-K>3R*Tt&YGK=0Js?|qdwVwm<%!fiiET9G z6N+l{CV=x7F42ZS2JV<}N52=adGpq4F|2O0*aJG_Z;u9rAi)9t~oF7os;Th+rkKdYne_@KHoG#=Ibu(!Fa)3a4GQp^-YO2efH!5EiTKIaSu- zgBi*%R>ywo^by*iE?v9=Teoe40|)lP6Hh)|Er1Weh4WY8><5>s4QC$VN;+N?v#njT zmZ$+ZPQ=X!7wq7bcDYK)#k7kfH$EFA7bh%Z`s$Ah?K!wTc9lX9dV2<7@6JQ8`@Vy4 z{l-Q3+0mEb?1d9FD#vqk^X4`9gFpCPSh;Eq?0H}xJpI(O)gm_tEu?YGOw)D2NL`9> zCcoS{5?f}!>~>Z3u=P|=Re&SKgOlAjYMcUb8f-aOh>L}yu^RQ9t?z))<7hMxAhA}X z*)$OuSyqY5N2CIHkKt6sb0NZ?%a7K5ysLLNPFvv-&rVC{JVwr^SVXbi{`}nnhb7#l1F1rBVhUm|Y&9 zt5~OyXn=I7Ces?V5NnMz`T1gjf|HG^Xutv#dB*s9=%|uX8?2|a#E6^#sflSZWg3Ei zv@#uq(P&FGR2qRG=E>YwQ7d%Q*=~Okr{=c2+*Knv1G+tVG}1|L&Ns%I|wx{V-%aYHXJ%oN!=Lw}|M7XR9X>nDm z{&(}{Rl4p;1a&@O1%;sM=Z(}2oCXs3fY&3i?H`H>`57v!b*~#XZQ2ZL)^339)%w0z z9q)~=Ml-3B2J|X+L{EqkhEND_3s8$rEQtxTlFqh)#734iOg_sU27tV2FwqIXRdBYFt7JSc(0L*ffVqZwAXO{(8&o8OF=0) zw5Uv(KN}^At4t|J#PxIrQ^s4fu{S6>|) z71+pQjhR1MG#ZZ9AXbnu%9N@8{NyAx@tFm0B`KU?0S7us1j#NYjiQ4^goK!Le75@J znvI>M3)bx$ks?GzR`s7q@xVV|F+pKElK!a_C2J}b>2~XKw&H`D!vZ7W!9<@?zsC>H zi0ULof*WCHp<4FTx8yu=y-~Li@?jQd83aMP3)VNF^9MCB(vTox`|PvN!sOJHgs~*} z__NQz%P+kQuf6sw>m?#cHqk`knEsKR$Ej%++Od`meu$4!`=V|8?&dzVPYQLw#NM46hzQ zG-vUU%369kq+e5A*!ifxSSFeoYFqAm`JSOnER|Am&q*8a1$p~vQ;vg89mRB z?eMe#RYw6x*^`ydL=f(i#33i+?UlAMA&MF$`dH({@li$P`h$B867obSH;!(r&wJy> z4fyVNMqu5#HE`(gL$K}Mjj(Oo#;U-+4)34702AX=yZ}kTjMiQ_T0|Q;+=LpUK+oqd z)#x1Ruj~aF>YJ<x>HscOUPh5p__c;=}uz@dX5hj-q64USd6sxF$& zJ#O$vj=T=XjvaxWJ0F0jKJszca?e&mO7VK5w=Wi{6fjY}HX_YB8pPvn6L+xM1SS@# z;Kp#4LcEv}bzq z6TpDS?xmwIsV$q08?^yoHxqkC0vCrxvoH%T6$Ei;Nl6oq+4hX%s`7b6cM%*zV=&5FH1)^%N2WVd5%q9=E)?Yiu=h ze!-e>;_*{-b)>=#5qA98GZ_34K~P&M;9?d=(X~!Xo(rW*CXW9O!kcGdb1-{GJT4s5 zx8~=i*$5uotD|J*`7Vzp-XG>^og9xfRz>BcP*pmqXd`}p)wpRAV-PW2VQv+Wn^j16 z6(6}!mvq3ktZRbq>;GzW7by;uyRKm}+6ZR5$_xNn!z2X_-a}}K`TWm)sw((a*u9q| zff4C#FTVH^T)cPzE?l?(ufF;UY~HjPKKaQ{Qjz-l>#tS+{(boV_y3#_*W05bL`~9$ zj@DsW*Bj!9(~z~u+vjomXDNUXdR|vQU+u^^y+Gk~96#Z5_*SP;)TpS5eMjFrb^f>w{(*)({ z@i(icXAKMv4AEyFxqX8|yzpENS4{>M&Lq^FpRKOvYSQF@b5yELQNe}7xMte4M{eqx z9d@Eywo{FWu4#=RO?tGPhfL2>=N)jA$r#*oA(oV>rV(&C0m-=zX(KL|yV2-a(cjnn zg=&5Mh3a0O-m-b;>s2xR?OV4mzHlBpA`gWxfBlsf(Badc{`9~<`6vHk$GX+4whylw z-cz>P_f`+&u12%t{+^!hm1r@4w}HDGOa5j5P!pHe|DxtQ{Fl_vwZD@)7imAUvy(g$ zNBV)|(Cyv#ARKw)R4yt)Mt*SAu0EhRk_AJho%q7UFRcylPiVYdz;xX^ub&xg!waQ~_ zCEmzx-WY-JeEWyc-`@uZA9)ZS*n1z`yL}^!+!}+^?_GeK*GI`RjK|Ie4D|O?A&tT? z>|en$?y=o0S@#Hh`@WYRCWOntE=qHVp2QI4UCr#10RRMrvv(66Q zXprMg#q-=e1-M{2fJHJD-6AB6=7F2-ooqn`5MN_<+>>a#FDP0Im}juU}7>m zT`{>-J*at+mLenp3&&7&t8I+}qLD*G19ZPlPfgLct02uQ`8lv47^qQ75}!tbXAw{^ zM9aKh&5|lY2gWS-cFAj(mT-wh3OOfW;EES6N$^G#7ZvqnRvsXW!8pl}ogX@3YPu>) zN$3{DPdmEwNkLtN7pR+t7IPNBlEl_7mf4q8o-^KfN)zOlWisVIc>v4A1k(qzeOjo@E!?3Sf-}%{Y!q#o~z{tpLICbhh z*u8TnQJ;SD%4;w-dWWVSA9?a|ShHpo70&qi_CNFxy#3Z&aPiVbxKI_;IU1ZDNyf(R z$TP=ICnRdceIp1O8cL#zM4=&3B4uD52_n{bOq@yxLKSRR_x7YrFTm1gbrMFOSv3jO z-yJ*tcAhNBy^4WeC%I z$QEPmEDA!jwfY@}Q9t>MH{r;eC=RI#=?8bfQy)7Bqa))~NF$=pC^(-7j4eh^7&?_q zir~|Pwb3_3h zRS}?kY)*TOR47kVxJYybadJ__f~e@2(IzL1$hkQ`BecfXZBqe>wubEBF-X^uk^-SH zaW3l#N-2)>3_1#Z#vEgox(}4mC@z`ORoFFBTS^vw%H|fC4wj^|Rc~M{NT@N23A}Vk zLt7TBq8G0V-h(LqBC1ZiBrY<3C!(Sa@vO$CV@g~}gx=!^`ClD%P zlzI}|*)~jyC=-E7GnO2eQYUjPD&;~0i~spBNB0L7A$Wf=zjoFraq54}4MA}F2RYwK zQ0XFA(XU|>I>|9%Z^&y7H5ueP-Gq-n^9-z6w}!;1cpgzKcjLxQ`0QssP502(zV>w( z9UY}+@!-LS;a7g;7vR#RYw)upZ_#^w?(?4^YT8%7`tRX?{Ga}3qBr3CT)TG7o;fbm z8jK{nCZvguHo{@GH7`U-A*`Cdfj+vHOI&pceb zcotTyI3z`LJ^51DiRM0&zy*=W`cimM%Av8Nqc`Eo)e9_S@2J-6wVUDCiJw*L@(}FU zz6bjI2VrddHmqAWOQB$hA|uuE{v8hz%1qY(t!@oQ@uxk3w=#78&?)yjokL9xYKeB-Sv+ut8YkT+Y z{NJ0MH2=-kPfL-38V45ciVqDR3K(Z@X04E}!PMa|r{$!(Uo?HldtJJ8mBu^DaioEA z_1ngc8whEnakF)7`KB$MFej%If%7&_w(y{_J*Ca1Z1n~XdC=mVEzfvC#SMlQma>!u zG>NL5N8W@m2S(Tk4G&3da(HCOh;)1GlXhp@5M^^tqj*%^SrKK?{Cd zFv_+iD)GbKg7;6nL*k)#j-7;^_umT-?%zd)^u+jdRY;$Q>sLnzkt(GC!@>rgF%V_M zA_|)pQYC947(|^N{Iw0{S(}mSWcQgDi=tw?MVvMuziV71H?7|eTQ=Me*Kb{f56&Ki za~Drha0~v_=;&?u-uJ%+KdB07M5FiZI{=$E-$UmYM}6}*=1IAZfh>p=5xUkE)KnIK zEI#q`;KqhD5IpY`2GMHOkY}}%Q(kb8O-&mWv*l93o~GB8(RirA=s4M}Ad2ux#bPn$ zXHUI_gNoj~Kdsriabb$zhn#Qx>g!|sD=eO;s||&90vVNN@gfH^;Q7JV<_@e2^G>EJ-0B}rGHzo!b zS)3^&cx(-Q%_6vok!n5UwbbemG}vjH&NtpS+Hm5(<7hmEMlF;?oi(V~2+^Egf)y`* zV#Vw1h7B9xq5XTwuO4~bNTGV;r*FXSUAy3y{^1wlwb$N+Z-49CaO37JauC|T??HI? z)G6q#8hgA)@P0?c_tK?H@Z10VU&D=C*R8qw&Uap@)`iW+CD(+&PNJ*yi4#zp{Foc+ zg^q}D;v%}cqtlLAdGJc#z)1n!mnoTem5Xo?&*svKP<8FW*U;b?a!4slvy9Vh08748 zk*LtjaJ^-Yzu#Y>w$CbpA6#Hg#;HQht~J=+9zLWHm-10w=j^#tuz&xfHVM_&)U@8< zjyVgC>mJO8#A>4^lPGjm!EFPR={QR--3Id8ycDafQaL~DY53Z#F` zt&mPjrUEJ3!s^cjb5#1j*n86;yOQfn?Bso~3bpT5D4?*TP=&3rqZ{4LZn7!1NJ$h$ zj%ZnyWO=NyJU_*EwYP@qaG5>DMj_Y$AmV5ho5Wz`>=Z~M{{j`ZIVKwtdu%6~M_Hn@Qi)h=iaP z6(xk(8;Q-e;CR@)AgauBT&?94`LLPAg+)J(8=LBF3$&auAg9RXgF(aEI={A6zDK^R zspI^*%_X6N=j2&CwkQ=Y%?l9apock=NfM$|Dcu3mc0_DQj!%5cb$)E{$(pO;q54=~ z-$*6%8P?eOf_xB+@8tN(t@f2ptz~=_d==MHR8&L@&4Un0>(lPwYMnj`-g6q8Gy^11 zg1m4u;|>tOly?qsJYu1a*(5f_VHv21;;$ievhzeHOy(&SQla#Th1zwod=gt!IaAtK zQDZAFxi12iJ>5k|G%NvM-exOmruh4*yr7a}xj6u+!T`{Evng9D)H=t<2WO1{`V~E5 z6B8};0GhjY?xX{~2h73Ea^^uF={?v(Jw5vvOaoMX_H(~L@4x>6eel5tbpHJNbm77W z!TlhLQ0Dh`AW!D^{rmSLU}td+3klt!1BbQ7=4P8ji81GNF6_)vwuy=|Pw*~CtCYin zh*q(F;q_287iSj?HSAHPk`3{JNE5FmPApALt>%z$n6)}-xstyAjel!12~?i$64Px| zq(=$KjzNO=xT2JfxXKpPInWjH?}N7-<>I~*=c4mq^d3KZXcm+fv%v5g(r%2ssJ%Hr zT%hvTV8M4&QycS>@f`N;J>)-w%KOpzP8w+yIe^IP$8$PRM7${4TQfSlSkbF^=RFyt zNhs<>2fje=$b2?Z_qC_{Xl?SO3nJmiRl**18kl88(CWEUc+JyzK6nO6nZzmSg z+sIBH;Y@1Vj@-3#zqvPaeEs72dF$p~>gyY#13i1`)M>M@A3tC=wml4_Avi?1i9AWX z1}vb;r3PA9nrB`vyG}SeuGkU7wun>Tq0UhUoDeP7?TDVi>UxRRH&)DRZ{bw0)5l+= z6Hh%)*KVGtn|CfSS590b28Zs_&~QI(-@c2UefC8bBHzWHzV-xUbw=jU#{~2LiNVC2R*3??SXF+66Fk^G10P z2VfgJ2KoxUw?rb#Wp%>DB(e?@3pZqRz!muIW-<%mk+tjm&+$e1`Cfwy#Wu_X8z05o(J z@Yw*aP?bXL`}#&HfQHCz#CHvRqFJzoDijOunzZ*>mnyxtuhiE2xggQaUPP3#NEmYl zK+E;Ht;0mbQPh+Lu;37z92C}^>j>s?jR7P03SfnnzX(vZ9Q>uiq?H$5lIv1g3q)y+ zi{+kO?&t3VPWIzufNWTtMha7PEJ(m`fTFPXI>qn_R#+R?Ske4ZK_8=Igv-}t^0B^PWc zR=FJLd~W<(plzef;R>?O9g`IX%NznzT}SP0?X-XIS$gqfFH-M;9-5meQTKs;bmo~u ze0@K7{R8^uH~)%C#SLGz7LRj9dB>`deN;+3}x=?G%Z_v4~;;V(_RA-D~&N3AGayoV1um zAuP5`KOXz&-~uEEd+s2z)neJ=3+If4F$sZsv0%aT7I(nM+Fx+Obi714v*VNb{OG1T zoPv9Sz0l0YyHBdmKL&s{;9?Dn2qyjO-~S$6xq6*Wo;*g!PadR}*81Gylrv@5`jKj| zew4`&@yvE*Ulgg!#aFgH9Yj=C4-(D}_{N*VfS9 z28?ovSmEC_*BjV77EcMki`B0@2Dl{2y5Lzr}qR*RpftFO{Q(qCcjvJX5 z4@i|$Q|eFQHVnaRK8cw~S=pzyX#p!-5iuKmN{*+RGTk6?t$SR@&;9f-8?ZTGDJBY4 z0Ea+$zjNhzezy&fzI$hoy1KT}u@eXB@KgI~-~JsmHa2*SVU1!L8Qif)-+VVJi8|gHYT`!aHKa3kS-J|Ii~p7;b-Yk&ncRC zIKtKR(eXjQuswJ%Okexjm(6uGGqvN?>1Vjgk+>GFT3KO^FDlY_wy4C4pR{m(mzI~U zvxC|2YwPOx880p_c~=#&LX>KTJsg!ie~uS_cmB(~5Km@+jRp2D368Irt6;dcU4bpY zY+Dw>s6rtLTz+jpae2cF`O2%S(E?A7=8!Tt!z))Jl%d8(BXjlH9O_U>4BSuh;L39y zv)Hb%5Yqf|NoS5aAP#C${q;cIns}vIniG~v5Qy(iIbOA=Cdr(4U=BZngPP734Un#( z+L{X9G|_2DvovRyC4Q+|$A*|X%xfoZgZ0-I=K(Jf<2Y#G8<@hx9M<5|%43y6K!eg* zfFvqZcqN#|EA1oA0G>Srsb#p_IQuow2~f?2`;E{51S~U{P03sE6_SFl@WyMcRyr5X z5GSUIn9EZ*Gl`^jg|*0uT*5_yBrph`#E#QHD@81rWE(%SW3-{6oi}nEJkj~coTCn2 zgWXmfz}4>hg;s?>eDJ}C{5$SgMuHK~Rh1ZbnYY>>=A59*fC>mS3oPa<@!yqT`B$=D z&6ulYm;5L5Zhc+T_3PKozA|jqxH)U934H3R%;b3MppjwBEiW(f=fd})Faj{LfA2x+ z={aZ)0sA?Pu&b+!z3d^ttE?5gVaM1g~>xh~WsQa0e563 zA@elxDSwGS1m~^goJck5g4;b_MbstoVojkH**Tkex}kL4bVQoYHQOT(>-ZoO8SX`{ zGm+y~L@&v7aHt8U1fk%&IkXJ(9hwk0*GQiUdp88m73M3(Y=s#|aIf;(GQ18lEJWDJ z-RzR@s6paogVMrv+QYRi#F&-n;uFaHV*u!iVsS%wR=Ar}Gn4e~?|g@aR?j_mmU<5D zG2mefEMeQTsK?* zh!gN6N_jBBTsiNMpuLL&#y=(#+$ETYi&kTraAijXgDNgpIPgj4ds1b+VkK$q($x#p zSl_}RD)!qPqe zV6Cn$ndh?TJznK=CsCC@h#|9F3ZOrnDTu=NG@GZ|Ro}HVeH{Sd%oqzvrI(+CDJ@@>_sI9ew7cInq155+Fz$Y5d3l0#L z*Bv;|8!jBhCWqDW=L845gzoZ zH%aW~2_8OxFs$gj0-N$2KjHQzz6zppRZ;+m^(D*sMpQ8PtPtLmB5OXeP?Ro+`21QR zSoZV|e=u^`M*OZNwb5>&RzaWhqD_?B)F`((B`O4;$oq!MxEwN+kNOq=X#72BHwjmA z*Q|I;hj`}1`9vcET)FscO#%2rn8bE;VSD$~74p1J?bAnv{~f{`lm{vlSG>RIYGAQ?dUV9#ONv7^h**Cg`&cbr+Q7hnCiU!!qz;GbZw?;?BK z@7%SW>0@ua`2%wpUJc!?*wJTG9Cf}it8-Q69Q{K@zWgdDNAr#!Dxy?8R(RybDel+3 zk-K~^K;ww@3_|mn?LmT#8?0XQ;DWSHx2;qT+z|LGr<4SqrfC zb3oY*1QA2gRk#Z8${K8DmgA)G^1utG5X>MiLq7SxD zq0QnsrxXUZjW`aiKOX4LS6IYHnX{$Ch77lWREKt#V!z###MDfpMtNfrKp91Oi>NMj zCwlw+so%&I#3-q)5W<;(jrYO7Ol@LYIk8IZ#7!cpc1d^xCvz$767mukppn!fd2ApqqKedb~RJN;mRW#=ik=VM(1EST;KH1&%eox3yp@lW4o4>^h7usn_s9V0rF9pfT}LgA z9rWUJpP>^+KSDSAKBU3>x7gxHxiFFsFP^8%&QJRE>2qe|+RNV1@YRLCGTx=Jp}`5g z%3RSEVF-^QvoOxh&)Z7ymM!c~f>tdy)zpbJn5SB_DtmG0kb@L>!{j1zAxy*Pf#v|N zBU+PdUuu3|&=XSUY+@+{&VM|%R8o<(k)uCIikx;;*3>P^LNUl3c*LI(VzT67-5bpz z6Q9NU=C0cVSypljy--KUJ2gmk$;ZAs`hZWx4r@9RV*_-un}r$M zSQB_{ELqD#FQtvCK*^?7x;Ukv>h3H`;q_hMYtqj5TeBZJx~PwAAe&;+6IX%cE+PVO zHr5@`whj*f&5Mhcj)wO|$VOv*19k7SAbH>3ZaR4I2=9y4WNhtU5>ORIsRnKprAMR}Xo3{q2jAXvdnr80wOfB9=1*oVVMVYnY!Klq>!{NcoRfkHfzBnR z=EJ7sFel<=3Ba-*;@HnC`TiyqHjx$dG`um^V0Lu@Z@#?d))DOA_HBx8pHZ&($!=C~ zpfW!{H#fy@Go$18%wea|0Oxz0cY)_IIr)GZ8=LKzO`yYA(HrUNttXKA#{kf}kgNq@ znz>K`*ETi}r?2lO4G#@cPj4?hbM6%F*|&|wbh44= z`N&LMYiYei-+k>px_5twX6GM9=}z{A0IFYp`4hBz_W?TCecW5C1<_EFx3r_sGSgX_ zs~p=lN7(}as|U!OGCJ`a7z5(e3eBvwU7R53tjL_TmmCCS0hS7D;EN@WS`qkG_QY&$ z#wshTt%V&n7pLSF+r7*ux7qhAQi0-lT;c3CHn#C5i^>pBWLJH+&n9&N6a_w1A>ahn z$71ml^qs$bgWi0jnogWNM8}UGq8*=nmS$%b=<1a_bpPI%v+T2 zEdc^UR0oTd6&z^7sd}&@)5<>!v75p|2%v0vGGh8+AyRvmVYHT(y8R0jjyys;&@X>6PX1TOKHn zqI|lT7r}`?d5Ckj{OHWl5z3LeU0SSUEz!gs$8o-;CG34w-2{PH*6cMlxlP+cE4ZeZ zdlmp$OVcWIFhF-<-Pz$~E)>RJlh~;V{X|C|uS(~-AsI;+jdpfjI`A9CRz>IoPUs~9 zB>O&z7v$N*O6MFR!l;P8BqCH;hXG{aa=A;=(8!+=^Z^{EvMf~Dw5&nV8d`SFDBkGG zf$CI+Mm}Gwvm3|8i!sZG^CXBlK~cc_qKYNrx_GJf-2>m5$b#%bX0C@qwpS z+*LO00aV)SmeN(^gDvxv{kmxmQ{bLM_zEy$=AW!_D(7aRT(YF|%oY)wJ3yf;2B5rT z=IXL@62e>peP(ONHagV%6m{?KVG72+z5AJd0nLOw<2cnbi#t4?Mj)JIdk7R4!h{1* z7TIDAVpup#Je(S1>ou%3+8xGJw9W*9UpSa3r6PKQ%I~q#&GH`Q>XCYs7kGNjp!*&d zKOH=wDFW4Y-I6(S>*f{u?ce&Z_!W>XFfcGoV`F2qw6g3Sa!A?gtS!Q)EU-*GI46H- zjU6>S1W=EO>Xx-jyuc|q5|O8f={#LaxWv4sQt(suo!Ln6uEaAtiK_RRKTzn1ViEgZ zgfJNL;bkbCq-6)3OJ$oN%J-wdG`20pYF=wum*m3N$Wb=|v}KKCD@RvTz#igzK*~D0 zpg1u%KW)ZTB~49_^Ln^s4uAFa&Ai7AG7u}B5=5|hL?Ad>m?hM?Z9otXybyXB9 z>EYUVd1`8G@Cju8aR9Vd8zFTkaV}ATmxjT+QC_FZS1y@T^IbY~`V5^pdz9L@HrYjU zv)WhZP5N^uVzt?u@<)gVV?V>_zp)|B&#%zH-C-KNKSL|aYdq0P%)Q&(ULhV_8+X=e z`?fu90}GX35kfsuQP(p0lZe}CT?DMRZ`s+9S@6q(LNi$XChDqPmh2zezFfhyX2P!R znmPaEvOmF#c*zTpGGyPaW%}<0lT$iyu90p3f3p zGeCNHcr=7gnAgE#(c0RfX(pztRkDfmJy!jlbI5-B+Zgn+d z2L-n6GC*3a?R-L{8|PM0pD{gPYx`EdlC^c41jdvJyw=)EWOtN#uT&C|l}e)ORT2T@ zzzt74H<&!VLaf{Z50G;FY4H=~N+hM;og$9N7I14jIwfB45y%2-unGez;5GoRr*^hw z7EmkR9GPqH$ENcc))Gg%iK63zX2jl1Z0@uZ%)xyj=0D>V!96cJr;Eh#_1NL2Z08r^ z%snsHc^qdttO1szy39bVzM+8=QP@SKUZE%s+|%GF6g;dYO9)%y zu_yF527mTGqx&J0F9ahkn2jIz7#v}&LDMr+R-_pV7rke$jtk>vg9nyC|dV)-XPdhb7DsgIdG~d z^oQqsqH>*KUIldE(#HBE6;*?AjR1I;uU?=F?_8l>dv>wYRo4sKcpV%Y8)q>6z<}xX z)pg%d5|JwNS zLv(Lsz#Ik-Qvc8`)&U^_xDo!@+!d;)wUy-=Ge@SMK;|C8H=qvEx0|+}glxhQMjv)Itg@qDO>)ls~*bDkhBn4Zf+j zuirO|;s)Ki)yIJzm#)4|H~KC|fddp(mc+kwk=u-DA7TSd95*PT&;s(t|5|M-m}lNB zT`aS>is_QXtPorAgtJl1+E?aN@nhBGEBhIV14ZUD?*m^n@UviJx5ob#_@IIRWgQh@ z>xB&gyDm0U2ne!5=33_Vnq@=xm1*A0Gyi&^4hWZ3yo@sm>`f9U7_+nc;DHm=(a~-N zL8)_oP@1VAZ@+zkZSW2s>7gU$_j50t;Bc0~{t@cy8>I4v6_NleR2blo=v6Gl45U#R z%(e4%sHS8tQ7+mfW6?>xxKdPc$y_iCek0*~>^X~~4 zkMF$p3cdNm*Xj7N)8^VwP}jB{lq$P8LL6mjBGufA#wLxg7)wYt!+n8u+?A_0_$sP7 zE<9nt&BCcD+&~M@Im?_Sp^aBgRiysTc}@o}aXBzZ_dRqm(kP6=Sa!!;#JZ03TsAOw_JFY&~sP$6Q6KbfH(J0W44mzlkjd*@kR>o-YH>uuyGv3~MVZ zEOD~dj`r}93cbWtcCF^2l#8$zu59M#dK%m^vf#cU5#A~i7h=v?e{bb=7craD`&4_5 zau6nqI9MXjS=?G%!#@uIgSkX*!^I{G%0J?>_;P@Yic)2@4Uhq+o5kJE^B4zs96rETA2-hdAo}!~Q+#Lz9S5B% zSY+C@ItfBLsi>RJh{F-qA5@b;KLTAuf|T%myLRlQlgG~*u)LSr+S+N)u6^tW-PYDY zm0K!;<4@G%l=V(MHu5_EXT7PwgW-YChhQ(H9gd9NW10iD;zU(CJp-JJI=Q1zELJku z$FpN#tG9OOLp$u!E<(Wbb>}k9+=;w?4}Y^u3`^o;UDWfw3LW?0&MmKsD91d#==Wp>mW9UG?RrZ%oHb6Vrdk~yF@a?uDPe-y834PZtWrnaV$ zyC1mz<&~xTu66k2*WX=4SXjX3ST0+&tppr+u@@(9Devc6L@R23mR|kaSLw=?YjoBu zddE-oQf*xo<#pVVk~epxrAK|9a|(jZ{0}Qi`Qrci=d^oAH@$b^`}F$vUZL5!Y2QYb zO*M&H)Z_plPR+I|B=%cwp>&QAv6wAlfjQtAZEu;5xRQzIH3RIHT!c5P&=cijR=Faa zY2V(VEKYDrT`M<O2hgtiT;bL=Gyfgp2vOH^>FX|UQV z6f96ql~W4~w;IWXl}Ti$7x}0%P|Fx3Cxy)WJEQGcRng>yljMRHlp~6vJ^I0g%k<%e zE7aYym!5v+1f4v6h=KH-+rxC@MnA2tt&^Ay;WIRw#h_f@Xe&i#6SR9{=IyEEiDa&Y z8`73E#d-`K$vpxu&i>s-X_dBARZ?eFmj{cT9ed28F;CZTU7)dvA;%rIRlfJmzeN{5 zc*ktI2h3;q2>VIf#6hzVE-vx2X=tctT1tCcD=nA}90$6^#btgL_;gE)%luww%{DeR zF#j493Gd;Y+A0wFs;t-@DSz1*FaFg+{Pz6tqkh++UVOLH;B$P0%f)ZaS2XPFq-IN_Yg6Dh)YGBt5 z0B?7o7BMoYHxQ-)6gQZ8)X}lkc@3}gfeTcR<)zgi^3s;yZeKR`d(Ix|_=%uT4r7+O z;=*{MZbtw@7HxqFfdC}2IkPEx8K;1TNOdZO zfSR+sG|#VvXD0TO2-rAqpqGvwJ!XK!9v1WM@7`~z5xz~I1+kSE3`Rmk&w@z87L*0c zMbGaJbW@t0o~40-0qP&POT)v%)Zc&C9Lz^qgvgec&ZZ4j!NUhn_^b8=7f) zW`aAYIP3(v5ak>v!gd%{l%y*{n-Y8^Z7&J(FvE8hx+i9l()7!UqQpeU7vo^NTu3cUHdXtk=bocHM4c)s(D@)4}NDsD{ ziG%z;tB3I%`oliYw61Bf%TXJ8D}nfW_0 z`GC5%?WWszt}-wlymy-p9XL+?gE#5qvFGUe_=n~Y*h9DbuJGCg^Mt0xR<`hMY3ktj z2Q>)Rk~pxUKvh#!%ljG%i0CFljL1UeDmO%y~qn)LLyIrX$JxzF&1E~KK3^c3^=+)&p-b(?K{v#TdFHO*D{h6F}=9U=XVqker zmryn$z^@{ig%82-3$O#%iSi2?+rojO;Zg@~!X0 z^MGT~4IC7h<5++w$NZcFLlVwnrmt_2C#iTX;{@#Nso>99S+HEQEO0&rxN~&{ua(+R zlZnX@jwasLxjTw8&2lz@^53^_-K9Hs1`PPzMIZUd({%LM0ovESg9h%77_d3O08>uh zl0t>ZV{{83;87}z1Y<$`lgr4|o7q1heNC#NI_IaE_yZ8CKHy59J@pcA$PdPb=+5Ak zNa(2PZvQQ_G4?S}`nl&mW;Wzr7IWf7p_qrA-OS7!Z_@CMM!UJlbQmY}%QOcltgUTu zumWfxciDVZKPJy3dv9s2Iq%)`D+% z-wzF%J*fYV2g<|u1{uI4F1SWVl}rK8vVY9XO!DCx&qVgamX=PsH_{&+?zFcgi`^|E zV(_C6N@;g}$56+!CMdQqwHeh=A9v5AFw@phhRrW}TS*X8- zzl)tNg6l?HP>C}-1BFUO{B_KAXsODnREcddf@x!p?!+A)cW{6W9J(o}+~PNnsVp%E zRV!33ayoG0X)=l9Rr4CDh-o{h3}3l^p7t6beCgV|bnfiO>F&Tadhz+6r7Kt8qu%bP z4Dg*{n^x>i4fV~mvb^Yk@q$@*n|a*fS};domVmF=L(ys9Qdz@*8HY3+%up3)Fqjm4 z2n#Gbv6mML8*WWXN1wpu9}__T+|T{oxcTxcU;ElO{%~%3?N9n{4}N-nZcb&CMf?hK zDOgt6B%?KP8_4ZDH+gaCInYBdyl{?o?{$tHS&(8*buHj+>3HP{9l7 zt{n&XbpedovT9@1sn(ZyB4k)7gjDOl4)mNuEIB#RJBr}o6hq85azI74(^gEv?0bpY2so;Y)$ z##|~|kZ|FEZ)_RBjd`Kgjia1e0UKX4Kz`X?JNrEXQ1b!9DfAO-b0<7f4NRR`!I9-t zYhElYhbuA9V4WwYoai$x!l^j2y+oHje8+5rr|7N$(rxXnbne;HbnwVNI(T>=-5(yK zt5#za93J;ri zOG`6W(gu)&G0r-MO|j!4Wik?)yEtgN7wYf=N7ERQf;#=-zK#FCgYab-A;nlbV_u92Z`Aqs~D$2~}{J-(KvMP^1%Z z24+d9tcnd8ryWku(B#7@4o|sr=QiEAdCdU6F*DDXA{|cv-fT%I!bcTZ|7rVKMX(1A z1YQGRN8+P9+O|`h0nxA(!!KWjjyTNTUM;RZ`IFYB#KD}YvX1sK@*sUP2G^Ua%{qHD zC6Y+xYFgM=Ha1eOns#;WrMZO}UdsxFMFae1X<~Ae1_p0(#k1LfMO5FnZ|kCM+d64` zSG)PUdIP4@0Rl#50>#QkH$w=Lvx52?a zWgfF>8cYM=shnb-=nA&GHe%duWE;8{7ORwj%8_d@`G{fP2wc-$Xb2 zubRW%F?#*`e?>p_v0tF?z43MW^rwE6Uj6XT>GPlcFW3t3*pahrbO1{^2w5BITlnx< zU)RJy7)hl|44j);V};HR+&BP!ZFIaXoD?~_TzgHEU85B5p*)u}&BZndsT<5|Etmrj zo{ezYQCu{@{|SKpu{qH0*XKX~8Q7S7_N)K;)z3eCIQ0j8ef_;_tE);<*K$c+G2@i& zRBUAR&09Cj$#Rg6A3I6UK6jEjx3^mN0oNjV1RQ&g^rpXx3ruFfPfbnn_h29`nA3ck zZaA*5b*1nCA*$x0jo5A$T@2*yox9B``5_N1knv|`C+!Aqety@^9&exI&FIB9G7@ch z6|gG!O(o$AhD~^Fy3Q2huu;CQV!clht8GrUrrNm~4 z)(?xO%(by^wBv6nmo}9-IKs+r|~)1+&Po>3SHjMp{~=wxbe;|$K2E1kKVv|1o88dM zs4mQK1){E@*4&3$R-`9VCCTifj{7+`H_KxN4j4);@h=z z$a5`DWy5kjkJ(k-QU@lLQ*?9NpWDfakNeKNkWi>N!Dly@qUFAVXN%`vbQWS9*kk4Z z=F#fP2Dj2NN2_aU_<7sIZ8@@*QvMJr&w#7TV!7r7W_cd7$~j|ruUM_!p*{0rTYqTF z0!Lm&RmXr21ARiGu*K>xi-dQJ2B6~mVK3IuQ0=+~OFr2#%d*G;M*FNEMd7PdxL7pg z4x!2k>TKXdX2n8@wJ=PWN0~Y2h>XG127IX_Ua}7j_UUt(^Ab;;FiBb4LuU)7oO6&3 z10n`z4H6%|yyy>ER&!Bc8c0QDgS|F)k2hE#o3h?S$@-rp`PgR_Q#mZS5KBU)`k2oF zK_7rWxU&FTEc#Y9d;`yDI)tjULG z*=w7cp5UZL?OZaze+G~Nl>-$;tkad1`mr`vI`+jU<=ve$#YR?fJlUh%Y-_csy#-{< zkrvxJ6{Q(^ALX252jxOumR9EdYk)GgvS!wrwPgl=l?F`D%udmR2ZK~wSI-m!fNA(% zZ|?$_?x3dTIl0HkcaRX3t};@5MahJ>#23X z;PG9kbj7d&RTix-02NqEC3FWe?2nmswkUy0CE{*&z^L@XU**6libxMe2MxB^MIT;z zi_V^Yk-qc#U(n}2_mAl6_4nwxb00T{u?IZwP^=?m4@o$5VP0U5!)L+abc2ghm0ny4 zoMR8eu#T*8dL)%Q++dGj{QwQ=0fe#%={6(7{G>TMn@R++ZM|#nHyze#p9-q`nPJzNM;NrC52F ziSQcuIe=RRs>*J%5EVcSu(&*H?!gXoKqy-GjT9&5)cQ`RR#3&F&$0!-#exOV0NI6t ztv09S)OlN{&Xz3mX@vmS*3rP6ZdK8_j})m=SB180mieurAb}Z5fQ3vLFxq0_Px;N72 zd~59@chOvEdvKZQg%=Zh@}_HeI;?B^TykJ)8?(fC@mdsBMc7 z)oXy2m8BKm)d|8wn^Ku&Zag~Pdg$uv99>Eh4-4M?K;=~K5>Sw4sRwkJFW`wYy~S)g zR(PhIV3Zi(XW43?!Z=TA;Su6}!DC-pww0NtrY6hJWs9o0^>i;Ht+94s>xgZb9x`{6pVzq{Ljr){)%PdD4cb$9nr zM@I)!pdP1<(K$Mdi1uRoMZRh2DF%^)!TkI(jXb!|)T5OpbEtptfaYfB*@=a;we8bx zEdd3vrn=~a^fpkV#sH4)14k&^o3aJx2N10hS{Q7gkB>WvSUvAYLRE>qaMS_FGa?GM`I z=CbWtq2k4#ulzj@1RaI9=31mq|R;a z)ZAK6=gys_XP-U8oaw$h12i#V4>vY2#8uwSYjf(Qt0tGD%5vhYSb+iXY|wp?&LhC3 z6b0Bu6q+I}-u%`DsZg-O(gFp)dfdO+g=wlb2kPN_cNkaP9k@;h51ypKq3hJyv5i*O zmv~=51-oo;5;_g3S~vl+ta6EmWES4t^n1Vm-_rm4rLWSr zU;7(cSf8clmUeS32dK5Bjd|F^_xqWE5AuA*=~oSAa_*#EJNMGA-8;=SPZB-WEl+d1 z9>1F!+stIx#mZSPmY|RrgiWc;O4`UOia%?G4>7To@GNIP2ftqirmjL>PKDNC1%hQ% zY0N1QVEMs#zqxNyW?`D9shKeYK2{8H#Ktz^;<4?C`Zxa5f69|U0TeT+FL2d4i`z~!jaZ7F`73s=&emGY>i)PW?;sk{D zxr>J~c--+h*0nhC+#h%aM0VBTj!rdyRo^snOl_jjLJJ$DDUm- zt+q(zY!BsN8c3;`vp95iQQ{a93y&f}U(6Sm!+u<))Dh=0RIcss^%T#rNDHg>?#-L$ zhQN;MV%cnRQI{iIV*m@w_q9@ye+EG=mO_%SSQ26+&=rKjVk6acpoU2OA+8}ovN zc4w>enti~T{|^sk^BO2#us5{RasW8=_8g`oFFa+|-CcC}&{68%*Fz1BwNdwnauM*G zL$YGaN)?4`g~of-0d)t-jr9_ZjgB+rVsNORZr#2~H*a0%>-oe>zhK9^vseUJ0#FG< zJ97eY8xT{_1@Fmk$B?-Wvy-;AwsFS^{{V}5tDA^94T>t;l@YTAVa;a&l} z@OwM4M(5UDG(LIX&tG;YsjLiKUCKQDM@7`fTy(VWOg!pvmHBlq&^&UQBeh9GqBF-b z+7#pxNYIwL!frZb?!!23ZQn_yrH$~+#Er(yH5A@hgQRfCS~mOH9D5cI888a2ep6E$ zZ8d9b=hkhs$Bdcwju!K~iJpJ%Y3^Rnn?2$E_b<~A-+F^-7$QEFt~Vc)RV6jl*IElu zrTAciF177k7MSV-U@M0gwr^F+heP2OF(5a44i130e(;b1a38{7*}NClNN792_ik!z zHrF+6u6rj_R+<}IXl&xXnNwXfJ3DR0%2t}1on#6NJ}){g%Vy5t^UlxDGLL!10Ny&s zUj~h1k>_AFj}wd$RJkECU0z*a0E{)H209G@VRHxpFs@}`;0pVSV_&SVZ(`sK#|{W> z>+tVpy#Xx}V-MX9bf0j4$kD~Hkejt_?g?D}2?A*Rnw}ncx4OC}efRtug}2`Mu2Z5` z&@X=Wm+AQNXX$QVziaVRuEnUmp@gOivyjhBKcsKG@(sFjbsxR>!gF-s;BKm}tqin| zs5PftRIj(SaTB(_v4(#BGe1wgy+`T#^(*w@#rMqXT`-^uwmEybDvdp2YN~>P1H46> zn_A4m-NZIrY!~B10omrLaJN{@&OYS93!nz&YLinuxOJZTls4;q z>Js205DgFkU)uTkd7fkwlVb+_4;wH!#{WG&_F$7Oo86S=7N+xUG`E6IN}R4=+JwGO~nIsrRAuzM4X7asIsk zZ5FH*d}jeb_m%;cn7H7Ek<}ymAPM2xuB@i?)?07Wh4(+8r;Z(^XP-MmFMjlCw!^!A z?KXRgT4#&E#l@n66E~_KsBG|X@lkMb=s=VV7I9=%BzhvxjSM&q_XdZVrR6#1lEOGUZBq>miq>I43LW8FG%fKOUi zS8F%Z#YJwfbM;VJ8UvmmQZw;cY7CgEGaCW`H@Iu!l#nPD+K$>LbUD8a9}n&+H+9v{ zip*Bj0H#nO#A~7|E|p}84v9WYAS0hj83b{$2 zvh2cjC};3#pWDR51bzMMe-+7799ZVgL&nq(%r9#bH_y*al368QK5tE^^7-(GwL+kAEYESxHn^E6Z~1D!$I|R<<+sFp13(`-qj+YxZ)4-b zOf$HCqk}8*UE6n3SJyTxLfqbBu*MxKZ)DuHs@_s(#(cG-Ju2>Cpn3}}6l-{R-6{Ei z65boAkn?9RnCqXM9yOr5iEj2?qVD~N>5aEurB8h9=jqC|cj%=TKTVgfzC#~<;Zx?{ zFVmskE68o+OcCd7w|xpz@FaG*2#byUuS2gsimovDTvs! zFqZ&u7uZs+)d1sVet!r9!E?sHqtc8$r@ozUf5HIzPyXaj#(wc1{3rc|q|jra z7f&NhfUkb-%k=7Z{+fRFQ=c;f?6L_;hVv(}XsUp}_sVF=^MeWJhnkj05 z$~BS>?x_HI;79X<56)s$9UbXC%Rm~7{nm&Q?`sntEx17|64VwIxohOBi{wLO$O{aEa7etgDdHiMUq_?{Mm`-;C?En_ zr6THGQ(WR03q040)Ka_7uia6TT1(N*q%b%n_{h$9Q+PilT{owoW(ktJ1!yUAt0V%kmhjSnD zV>vrns*zQG<52wcY8pZyMBA2I$$@{dkYae%CEltFX zpPEK$ZRy~yn(rF94vW&89IBKGv`M1K^(9b{9YuPFT!Qx7hdGesgAoSx_Up+OO_5HwsLo~NA zNjnWtU0<_>9#oaN6YIJ>D{FzONGecxQb%8#Hh{Ldxr46VJWt1tJWYS|>R0HO{=sk3 ztFQk#{b#@OU(?m=@6$(~eVIdTKrKNg0QQ#oMO!HbZ4$JN^B=rHZOxr@?fNCQU%htY z1M~f-%>nK*Cs;lhz0W@5H~X&AwrxAio4&HQzG}cMs>dM+goi|9|tY5l-VZdVWvU=R{X@&ooxJXQY>UP2xo355f zoB>}02I1tx5!%|m!-~MlC7%RX1*F|DYi5U8OxSwvB8llN9nN;c3eA28smS{oayRy?gg;EUwl?!-=xY|7vP$%%axB-3b;F zD$0d}a23%!9{}#gjt0KIMf3SN0V^x>!G{GZI#iI>R1m$2vqqv+2-S%qkLCL~{f?vC zqc(XaQMVy2P&s!Ar77pvn>o*A*|g*UD6|SC<1$T|%7McHHiL%7Mh0<6K1_x49ECZE z<3eK%QC*cL1dpz6n0cv{kK-23v39Nu$~l>+D10XlSPAj)_SvE>TT!ftCzc;q z60=q$T*(X-&`m%E;}(2rh&DMnQnUX%r&)4^ZJk|X?3p0(4j1Bat8@seP>IU5@k{F) z{F#=Qg?fPk!7^8>g>I0z1WY_rJe$p6S=N8+?9pI=Blyhw&4Kp-{nW=l!3l!-11UWM zwuH=V9V=|q`0UIa-RJZwnLhflXX(OwH|XKyG#~Dj1C_Qbp#4FT{mPTf^Vnq{ zW0e3e$H7+7Q*9D^*s%dUwOkNE1r-O8shJ7pOmo7bJKjKChr>7k4TQjn`B|jof)*e` zSVk{YpWTj7_Tb~ES2-lFL0r$7}ei3b9u2}qoNJ0 zF*Z43?(Hr!o-WhL!B%w!Fk`Pk=N;dN`HOMa zSlPs#BwRPT>!{Y_;B31bnrUfFv!RvsCvf>E51{Gr;X@Z*d#&~#0D(Y$zpt*YKK9?y z&iKNg{d0QZBQMcMU;HF3FRs(WhYy{Ii(E8r!M3nmOA6I5RMO6$e~0e$-KJBgPSKgO zPf;79!G*Ud6)Y7%06=tQm1f^#v`PU+nwp!;dw-0!nE`q2`bBy;J;4j7^nbYdH`FmLTEEw>+v2Mj* z0>(4v2mlUVSJy5!NxyRCeY5d2vTzZA&jRFx-3w6hX6`HlXqDUaBP~bHfCBFaP|O=O zc+l81T_svgnw^V`jko+g-E3&idz!dxiU0UA>DBFQ|%$n?UBi$1-u8&?@r$h#XM;hGlJ& zw0AV1s3HVD-~0j=`U(SV8=3O+Q!oCa83!|5!(ymi5*yPy{DvA*^8CS2?AIKy z7XhZNyh`{<<~kfAcul>F0r`K6THcZHE_O)Zs<7Ks#s5~`UuYc?f`Bm!9R;c)sIJ1= zPb?TweNQ$g!s#;Y>8hX)Zko-aLQ_MPO#v;HGFmU&idw+{l63=Um)BG8@1E(B1*+J56tEkut@M$a$})Oud+8U-btMMrdGY&>SwW($Me#ui0y^;1E|jK@9;QfU^sO zQ}dg<7v`F+?|;JcyS=@`dCAu@mF3v+6V%q$!tOq|Zr`O}{^iedGAIKta&ANHYGVO# zK^45qQQ}0cNoMDR_F!8(3Xb#a_UV1Wd4&=I*P2`AUE6oF>ja*|)Xb#WD<&Cqp&+xf zYrmZr=6|4i;d9{gLU4=cU5RSC6m}vJAZ>=UI#|@jfp+v5nns?wp(7`cC?!~`-`aKU z^d?si72G*EyvfW3&`w0`t|MnHdk|KXsF+}qID0?kU2~N6aFrY}3#QF{T%#3(B_?Rk z?)~Q8O|xr-1YS*={kN@kE8V<(iT3U7rAt@e<7B?;H$G&Y*3i8n>S*7}pb^p4C~S3X z?c(QvsxsU`m`1U(z%)Z#KgK#hIGzK#v?;rKSRD|o;%p(Ko&kNW%Pgp^X<$GOx+vxu zSB}jgpx*3#s0i1a@ryMMueoaGX1)3OVKdfYiHZYaZA}+VPLFd44eSiTnTA^!fH{h4 z0OE7z&n>kb4BR0`hQ%E!-~imf5$GJDqK!&-Wkox$Ie32@wz1A++WcHn;c0MKV_@IM zd!y4`tRb-A$*-S0fZo_Beb;RKdU|?V#TBPK4MNeIKl~p5{@6!frk6kQX&SjV&L;Ri zLCCicP>QRT6Yc@ zfBG-}FvlxYDu}D{3dPXc-oAZ@xsDkIToONQdA1o14&L>Zyb{0e<`aKj@EA+bD=G@U znwk`}b9u0zEk*S?v(*Vyp{*d$(mgO~#04QKlpS!%7?7~w(R&VC4jEDm3*y|7SooGb8N5Podix|8jESTVo4%nO)o_Q4v8e0WXF9h411 ztlsRnNP|t6d)7ES%r8!xh06w4zy|O6XMTpxp7=No-n+q7Y5co9y|Jx9e@FN6Oq~8Di-E;1`mxTAG_36=KcLD{*oVFI+#^ zmAI!^fvJ+uq8!jvI`C|@_MX7jXkXm}QLq)~o}EPfqX~WdWQo4}VM3LKl-la^ z-r-5H%B(e&X00hPy-G*6a4arVD%au>PW;2A8am!JMQa;HSCO>$YuTJx=2y2cO~z7B ziczYd6SSJmYhiwl=TU2G2hX?pg?S!>sCeOh=ND!JeZY&ooHZZQKP+G?GDRn@6Iy2% zc5#82Z^?@J@ZU_uikwogNdkD_J^z0ijr^Ruw(l`>u$#U7VJUa`&|&H{z*)KgInVW6 z%ilS4xT^T-@+#Yr-MW3<02~N{Z=3(V!I}m6jNVn@F~88&1XyR=#KZzMwgXI*uad_c z>8+hzzSr6@0QR-e2TjY_aHD!sVUs#rh zj;hj$^#GUTOKti5^$m>-n0D{%Hsg1Z9ZKY2C;JB~n6P<+5RJuZ>o{0xIqI6X1n zc+Kt^s5*0&1SnKYud-rPOC4NcDjKjsO-&l-WV>;%ytSD4M8 zYxvKWY6@X5{vEHw;=ze~{O8&EX+A8XNPrTvmU^m?-zkbpH`Vao#cZXhl@#Sk~LOk_|zg*k`cN6;i zKQLhU;(7Y)XFgBe-AA*#cl(pTdCj~pue2Lk3}gNZC&F*N`Zsjz)-8JOxo7Cm;k_&z zOr1w;u)(seXCBmMP@tWMwnTkh4Yz@z=&h@5;x^9c=rB7ZjE;`*CdMZIWlhgK{Q~{) zt-qyWZJkZbis7kJ!E-kH#n-Kph+FpPCbXF=#+yG{yCWlfjpEe7iCgRI?A`$ZAtnai z4_~dp|Kqr4`Iu7c@oPaNSNg?NUc1Gd?LiVB$zE{cLH-JQhXL1VVlA=~RGC4)C>N-# z9L2+ZUzs&K_=8 zSt>*D0hUVE_{12!^2#gp&O5E<89q(D2Ybz;_!5min4lXsZ?d1OY)a&;|2o>XSs=~S z8fzbfwzv%2L~Qwdl2}M*i|q?zk&UDsDzCQFT#W#S4FVTbDSEn3(*C_ixf%^o%ERdg z-bM;7x(gTHV(xx-_aQod{4BM$wDNnSS~)efW)}KsGyWTSQ$a;mC5f*Z$@5uTS)rAs zC7uV3W|PMKT3lERpC@uS5P_XgeBuO5X%|c4U|gBv1E1RfGe2*$$l_7F)9oCWl)g*? zIy8BUs4R_W6_F6ip0RD!m%X!5l{O1}Q&S6X0!v6M6K*I1gv<~9qn|I(D?cpLfn6EZ zZP6U;@Y1mojm?<*wQk4Tov|&B8;y?05>;20sj1ptE7$(CJ#3a!1By2)*;896Ke+z2 z4Mpb%TloN$xgaF22&VQmB)CR9{RcKvbi3^5vS4a`qr?Y!h$s*C_ELMtR*r!OsC)B` zH@Mx(vp4;MQu1d%Pd?h(@xk|amNkaSMA)~m3g z9e?(x{~H}Se1vTb<$dMnf)B9rv>#a;OB-bxxj#yG`v(j_zDhT4Tw}iS$mpOKP^%;e zKtWsh+~_wvHx!${fkKTRv0zLce zS^oPk|EsUNPFJ2EETJ<3-s}pM`NOjmHn@TwN8L+mAz3P2;O0~AAkK$aXA>#ghOMO6 z*^03Pnz*GM?K_x*D}hjKcLZTiI5o@k~&#D7lDsP91i|E8H8^P6_{w~5#BoGkgjxx)2=jp< z8zQpqn?d~ESN_cxzxTVp`v-47|H8Rn9~+(gox%RW2JLvZHYFS;QdM2WDLvd$G=B$9P-|-oCs<8A zoHUF2b-F(?$R|b?#hJqve0zWTr+%Kk^soQdXk*cy^QxkSS?s4aXRE5si<2w?(n2R2 z?TKnQ2C+?WTIZL+!T`}prArZ7=Qw2j2srm3MQ>V?@Oti^WsYN7(24WEO|7Vq!It?u za5hV+OK-D>78VgYQ6YmWR2B+}2iTb|QYk4p%7^A~76HpiDj?cLN2d;0l%2&9t`g=0 zS<%|}q56$ho}}lAjiLK*w)QfoaD%H9CvXvJi09~k{aSy;7^I$#-2e8#B^8V7^ zbwI{%Y-W#pBH}slUDuWj@LHxK=pA(pW*i^k-(%xLbZ6iS4Gi6&jq*BgZ>Snyy?W6A zkE^tE=WaT5=qcL2ug6x?QE8r=&DDNaeH9;M2~@BOdGQ1UV|wW%~4399s1^rz+*skJVn$$6qLe>0`_=7cWY(k#^5x1H$2 zI~8d(w7qjXS8Fk@0RY&=!K{4~lMh)_0!Nqk&tGD%k!*c7cH_^d-K{?kG!^tVOSe%-g<%B+~ zH>jZZF1&8_2c&bsHLQU!_w(E{&(r_%FTY^cWE)y_?ATHI{onsR{!Cq6J3WoTJ2|M} zu(G)*5o_Y&DyzsbasPhjcYcQ&>doh>YNWk;o?`Is$l{TMg-h@h(45NJpLiDu=~5L` zF(h%4O)r$S9<95A7D`&#gBGGV?1k809~ODs-4PcXRzwg}`%q1++EU9EOFUED51$gK zqlj;xJeforL*@=%QuYn*G@H`PypU7k!^IQcc8{{4pZGicvNWZ2|4?)!ko9H&igLk7 z%I8QXA+lSAV62AvM%$@i%eo@dlUiHbnF`a|(#{pyS{BdQ^^|EZ=5w$>&wy9ZA(kQB zYiehz284LfAT>4|HHWNz+OumvO*|ZD`UL+6A{{&n-WHXq(E5G zB`y%fy3W|W3>9OnA1G=7Y@>3_z!)wV=>}Jvai1!=y1mA@1r=ugbIB(BqTpkJ^#%i8 z_(G%D#ukU>Ac3_Ma}KYMjw8O>)ZtQ~YPy3x0JYNA-&#q~n{*^xv^U1lmMl%4z~#Rm z08QWc?l+(g{O`=~-|Ot`Y&8S6(+u_&^PsBD!^k!^vZXBBn5w9#m^B+W`jTZ=y~dY6 zeCw?b|DWrZ+W*HpcLzQ@G4Zg-)hw6F<=ewrIk01^dUpnHn?XKAhYhHB;l*cY*WRsW zf)r>y6W>?6SR@>&3C~mbK-TkuVO6Jf%;H%= zwla-GL+26A+-7`_qlU1LbZV<3s%$#~<&yFVdn62r#8O4fH@PYU+bLKe#UXCC5?^)) zC>DQgtn#yf;{~3F<$99mDvG)-B@sFiTSCpe`H(JM{*Vs#9;P#=&zRpQ=|J~>=17l> z+_U%FEy}oG;16>f%m5X{s9L+Ls(e)@6Tq0bs*UoY5uPFMs4{UhxVWP*pPZ}Sle}DQ1|{rw57_1Zy=&^G+wZHu#(@Lymo}$r_DVm;q$IPwQ%=*`7fb}#VA~An3?>0&{<#T0el?8qG zA3UJ(QJc^QVfga$Dp%9sUke%=+QU%u1C)ANLzLX1A_^Sb0(S1$Pk;1B|BQNjduU+b zz5&b~^c%nNoAk$j{Ks^l=dg_nkA-FWackeE=HDZ73Y~K)YBZo|dg`HhRu9dAdzzko z=4IEu);{gk@{5Btpj1V5e96)183;5=fS zbt~pK?93)6S1kBaHKAgx#Pvx1i2WjoM1eZa0(V_2a$OX=hG&uX6VG5 zEQu(T`N%A+TeKj2%>rO_I&rUu?%k!`JNMDxy*t#kZ6|ZCt81#vnrVfD2nVX?@RAii zVX^&n`(`(WfbTo85rJ@W#UCEW?4X!NX&zJ)x&L1dpaSi^= zz(!bq$_^monQ9bM>{|4{@EKrj#q{icjG3 z-xGk2tI^}*;}1a(eB3``a6RtV^Ut3eHeY_}D_{AmkIm04|JkLBSB^+fL*ne=?0ihT zPp~*%T)g}~4Gi9;vuDoInX|{Jv#Z4nG*n5~JRh!DOsJ}Qi#0;eu(4M1K&vu?5|tG! zR94kqVxAvfe|Y3Bt7EMhyHuKl$N3oCs^hFCO*(Qoh!eA9_0`S}C}jXJ?>MHEvtf%1 z+K<^U{33-@>VNs0|AfKQ|M9>7OZuhH|2qB5r#|gl@eHC11^0R`hF8PZ$yPqffSp`* zbD%d#UA3>se_u!wn}}#_QZ3ie#r$$BwQQ>)SP(W;*@G%}@NmMkf(j`VvN+q;x4l28 z$O0gHZZW07B8^+k%DI(PT43#Ck5dYo7kt1HaoOFx&cN_3e$C@Y&e6q77wOvdtLDIU zgpNIRj82?5M*H{er8{@~4LBXNUeeOWG7ATUBoKH)016%hOu@g6B~2Xp?h zLap(exbli~>z`fbjRlpD+G+!8YntfUv!A5X$3IF}uD?Tl{g=2pB6}X}uU>!sTlD_> zZ`1MPXQ;=3sA^7~vb3KyrZ-eDWdrwVb!F8D`;e;uV_95UTr%Thk-IYx+JZ^|(H<|P zZrqm3sqehVm}a*P9sJERHy0DfjVa4B*9Cg;uw*tjW#(B%tqoStYGb5R#604W)m429J3oS zI#p{WbI>l4b-fS}lu57i_$&a&ur{;5=h=P4#`A7r4rWjHVLH@%$UNs>>N#+Tx^{FiuiYmo>don`6sI%? zR;dFj-~H|noM zE)W1juG{OG%C#%)xK*1U<@#hp93&P;j7>>9TMkYW+`~7OW}>Eg*qDJ zE;PwLuYy~Xlq;$kP|lshvOP$;xms1FE1$sSzkdMzAM#88>aTwGd*Bh=c~$O(6_VL}DElEJdA zh?Ghd&Yr5$B?>KaO9qQrqgn8A(%agxohw^7nPO0}l??@Zfz7tTc2MS7U`pi^wLA|l zQnM#sx&3(Bv>enQUAF=a1YFS1eCD(4R`BI7eaTY}3KIG2!yzaqWa3IgX8nReG*7cE zM9yldDuWB1IJ-f&!6?hG=4xdj^KETuv7%yKa@J^tf{hzTC40kwTW(LI0-54t!{`qRxj7a6RejlXX0%cV;n(3Pu~ z*f;d((PQTK5$f*lW*+*$KtDfkl1v!5q!`eS->{LJnVsbKM5`}x*CCZ1m9vz}$I*NG z4;2Csm5P={f!tnOSem7|#c2l8NS=E7^vCJc@fT@ibbu~i`2kHneBd`EfUP&*e2w0I z>wC0!e-E8H`3$wUZ*>vcskzn}em=JSj`XTU*UHr1c9zxEu6m8lqprT5?;%8IY|-RG zf)a`Qb)6uowo6O3EEQw75ihSQ+SX>D#d-%P$rU=xd#AQ)S|axF_LgOGG3xRoy1y(S%Yo+#}qX*Hgg3C zAXQTgEQG6VDPvXD)z)u2b3hpJ*6Y@bdR493_hCAd4%K-#{%rDN;#dHI3k#qPv7jXL zfl7mChb~y=4z_#u^w7x@XQ;QQmt8ELI(nS8Z{Om*CU)#03TSVB5A`w5@X&)7mB~fMR6f76N+$Q|wY}xwv1L<5qc$%UDvzdg{`mZjoyL z)onu9=7bk&XT|84VdGs&(xAas=Zm1@*L#T{-|0@J!z#>R5(WajZJ^kGy25{8q>ud0HTIpHnYG^^ zvjQ3Auj0^oP=W%$6wX9xCFko9c5EwGwp0Jv<9tt{gCYQ00!o~}GWL2LL++eHUX#cy z2S7Ds63|M|EzC-aAA2Y_vGk558g?y!oC1t%Z2qW$JbQJrIGMJ%I3@ znp!^JD0Rx$ zu2X@n#=cY5?w^-;lxjH9k;O$UKOxi9w7PK#F8}QY(EdJs$2-37Po94IrRUeLU;mMg zvz;Hh*xl3S?5%R=XKF+n<#d&}NTw_RdHTzLY5~$odhmh!X#X8M?MASQ`e}rLbec-b zyG93j94kIKF{N$P5~uVnsNbr{KWh2nWI$0$d}>|{k^=*6;zZQKC}n6->8dM^(`batMnopwWZat+qi>0)J)k`DAGVbDaq zVOi^}p4R}(5Zkb}HOaKKXczXhBrPe-+GWB%f+3WRrG|CU>>^S%s+R`cZK%wxLco#y-Movg_4imH{SDqkT^9zAd7-m| zy1UM?ZvXDP57XLp8@*R8QU#%RhJ{~i3%p7fn59+%*B5bEP$w+7!wYI|X`<#*3kPU$ zC_!FydI|Ch@>)*5KlS%!=c?3-l*3%?;2>vy=G(KhZGDOE*j-1vZ>gc@?7xS`4PBqH zAZvzLug`^#sp^r*sM$WmS_`^M+Ip_7Fz z7~jvZiWDcAG)kV7XTy1gHkNegE7N#;28B9j;54O4NddCn=xEEM%{pl}Qw$lQy$eST zNE*<}%~IJY(bYI`$3fb;eHYJP?A^PccG}{twoV3qf*)>>-54J!zeuQ+2X`RnqIe_Z zAkT^}%vb5fzj&D^{aJIH1c04;CLoWz$lQ| zb=$Z*6I^uU;=u8PHXC+e2nTTmsJIfT*NXk`vu97xZ~n{Qq!0e1e@JWBw9~)-*Po() z`#b-J?!5EfP<)zVg5C|%jd-!m7umYm|9JE*kJ{^gfxh*vuM1O~Q^EPgI1p#V{!sk5 zv*;LQ;XFi=4)UN`OP7LdD--pu7G2shi3kw!Brmbc4aMy%NrL6I%1P8@?|~EnoyPf* z839tJLDz7Zb>K8v{am#3+*J1R-2n1m#x584q?-fq_}|bF=Sq5*$l<{)g02uqoRlEi zJ^j7meXJ$t0CEY}1p~GLT#@<&#wU#`i@=-Yq6rScTauE)q)ew8nau{NR2JtA$(LB* zt``b>3|-=@>mCZj=Uz?j6|MA%P_y>9~U9ROD zjaRr3q##LQ!XO}B5AoNZ`QvMJ?D(y8=-#_%&%SNcy1bdLT^*v~A*b<@6uyN@$~IqY zUj*+^Q({1en?yoBGS)+j2j?sUig?w|bE&LLNFj@SseQ~anMlg9Xb3QhNq#-Y4s*kh zjC0ut-vh{pP2;IkuTk&i3v}m!BRrso0VZg@$t6B&70Rr$0$7PxR?p4M=%9YQ9cgT=&DXizbXxOhcxm4GPAi(*;Fqx#`MV_ff zHjt{z_qP8%IX+ISSFNQjTQ<|ho{P3{xXPUZEXFeo3d5wk)61<`zK$2aO#PjCpiv!L z@FoGGFWJxb_I0c&UAuN2PhBH=yRZK$jgOCq_NclOzyc2o47|T#s|QOVVYaeps3&M8 zjWS&_m2Z52PM%RAnJWMVc?UBVL{HC5*af+PS&?<^n`!MM@3r9N8lAgvoH{SOrm`1# z{3};3(bcQHtdZS)+kV=1%dPyn@LXsyPETk2@5ZJkKA!;AsTM9S5e#Q*a$-^(0qpx) zzI+9rD**9SLwsDKVYn_69!_+uJQ!_+he#*HS^Sl#>vEO4uVz$df3|5&i4NXY&yuPa zkI&KdS0CDg}d4WSk|&ij{#S?$ItMad+yQ|M9wD1%+b z^FTkpX3bhUaQmIMpjporm3wyYr#*Z3+ReKm2)yz|_jFE$u7!zx?sY)3&}~_?j4;b; z3xkOX4D=0AKfJ*wrs(RGe(LGD#IqKV#W3mM<*&IffZQq+4=?76DnYP&E9@sU+F+%J zM*67h;#umx*um~bV6EHR*2}%%K%x$zLbC~w5#$147!;u5*MI$2={J7k*VK-*L_2ou z=3{sB_3^ur4yGWb6a9IWjvP5m?Wzl{ zn;i3}-53ViI!KK54aGG@PKZe)=_9qMOLU#|p6I2_U&r}ERo|-2c&uE$hL1hzT6}#f z#HYU=LtJzT`pYF6e;E+|s{n8|l(qLC))4sp<0oKvS=OhOwv)YN&b`G2A5rd|eR402 ziz1JdwE~k0*@SElC6!MIAcp)74mRu8ZL;^mHJtm z*aLALi-x&Y2Kj0gV3tLnTvsoHeXvEvS_%NpSOB_abiQkAnP?KGx2l7DRqud9ksFcQ z<`a|nbC5a5lT3;X=?1#%CewZ6NK z?;`+g!QvYLY7_#zf7|B;psp*GTbAJR-ys0)f%Ll`>#|>d`ZJ&T!tYw(^e;}ncIt`I zu`wgj!)|lbmKZ0*34?%EA$&%W_Oo}-?ex$?M`+u&4YabYl`dVpW^bZ7c7>1xMOnny z5~eC?f4GS7@31`+>!=zUkU2lefW$4*s77&7B9i**wI15KWgCZLoH})a4ceL6F4g!H z!Pqe)P7n+WUBvh0H`_ksJ-QnXiv^-yv8m&|AnNq=>C@~w(za?jPanI5U#u!LX^xWc ztO<*uJ-8#+LQLg1*y667@b7?mPITdirW7qnVf*lUCAA4G_5u$?mbH;u;R$mo^;JKd z$`X*Lat>t@J?F=F)75UU28GMzD;H?ro;&ESyY6N;juWrt7UW*0yAIw*=g)U20uZo+ z*E>2k!0!bP8ytZgNpJAJe9H>)$rg+c4EEW_UBT?&`t_SEU}$5lTVLN*Hl=5Po*13z zuBEoNwS2rWv@$Z<&zl9>eFm=~(GE!*z!SA4iY?dRpRC5O5?-K#kqZ@DxQ)-y*hIp9 zux%^W(SwIJ(me+rrjE{6=+xPl8ECsr41+F%gZ*^$)t6}J&ONkm@0~2;z=N@7SC4C} z1(I0IrzR&v>Ql|4nVy_mol{d)Zbi1V$ok0}MY+U`u46pJu_fn482265N%r5hB@E_O zb)%??9i9E*%$zM;`d~>nOU(@lt!TlpU&2l-0L;j|>YuDSb1xkV7ENk!KGC>(Si_Y| zVW3lgpEbtznsM58Nwbtq2RdVHgy+t6@H!Bui#k^uTz}|7FsnQ<&gU4?mRU`HL_xjQ z7F|f$!ywZlD%>-xZTb@(_z0v#2H-o-%>;byj&46;-~|l?d>F(?x&( zpe-bOEMOj{zH9yV-vb<);3NUw&W#Jd+JgQzry|4WJi=XoQ0$c8L6r_5lxw%<4cFWA)zI_Myx@6sG zL_`b?4RUb;c}Ex|q?->CMn8A1E&ufAewJ>zWrqY4MS5SnTMYCfUc0?*o!0_8OFH30 zQ+*xTBCr|eT#U&h@EPnmo!`347m&wIyk6NPNhH&8gQk*rm~abSx_G&Q8EAV~+t-Ou zjaVvlvm^0(p!csM)wsDG;EjMA!`6^XG-~LUvVIkgg&?E{Fy^FZ(U)U>^YWy0zv=9N;hPLlE*;xU2lP^wf3h|hgM2*DS0_#wC6QY|zYM^+ymf_r?0F^=oIbsR$1ImZ zU|i;8Dp}-to%@0)_s3WV<9z{}>pm=!wp>$zaZkd7+WkATua_M-)TM<@5CG`e455}o zzHojj8sClA4Hh1f6AYDO-NZS(etnd?@mX*fTCoI|{|*9Z_wj>2_;!ns=$(J~-=2O? ze_!9n&zw28+ujhy4NG`=2j$*1K=hzhI(qD7I^WqrhwnK;NA5pJw;$L^S1%9Jh0e{TKgIys z>7N%*f_s%-9_f@~pyj0+X3;E#r)hZs2AJ=>aEbv8e!Irr*s!}ovKLq{VRg#(hET8V zXpv96ra0x{En$qrgEY?)ciW2WqiUb8#vWG$M8M}cmukACwo4@{sqW8k3zQi^o;=T~ zoR>m=BY=8IhZbRDO?2VH zc@J39TsAu_7&!M;3-GakV$sW!0JIW~bC&f>*ay7tD_6UDXb`PHwA$CL-9U{yZslRG zYZgeuKiv4lOtG$8v7()=jmE}@IC-+Zu2BXKDY9aU!wtOsvBH(iH}Z;YYB!+hZKE<8 zn;d5EQh1p!Z&^tP_B}wi?Yx`1E}o=Q9pB-UDtGOG6+L$BJ9PTgadtD*(e5Zovd2bZh`Su+G(!?_#vaf z+O%mSty!~13%sb%^&P0Jko0CuUSN82iqrW_1Xi5Ao%{y8lt)L$=<3xz>b-QCu3Wxq zi}Y*u_)pPI+q7{Tty{C1udg^*!xaS%P~dgLe-}Fb_*mk< z;gkLCZ-0v!X~;U<-xfh&(I4NvO1wsZH^?4_hlePRV~_3FdM}@+Rkk2b^c*-)YZeU( zdoN^{D67exvBbeitHSI{cq}(`$ulOdBc<16uFm%%lqZpPd!G9Ht5lNt9n45zow^xt zHaC&}{Z-iH#Zrv;Jq3%vgrn`T2jbj=wM2&r#VWdS@M0GCpq%&7=B5=ESgw+Lkvz>B zIv;9tX(+PcQ;Rj@x}JLcgpHOv18WnG7GGD0vad?e60^S51qPLKuz}-2z-j)9H4AJw zisyO;-t!DL@$*`BvnWNOL^#&GFOm$^)iMcIkwjnx)GYlhm;Cj@sf4AHpCNL^Sddxh zTudaJ$~34a?w%y{1=Wt34QSJmRqIdjaiW?O+jq$mqwnTMH- z z>s{j`6HlEvb!I&S-NYHk8}$PYtunEvnW5*t{^xY^)Cs!?AEd+g9i;moIzSy~FS3mh zY^lVuY*q))5ZRz zNfPU(6QW24LQYo~u{K6qjlrf#k^=$kP?e*yZft7i@54tJlk@EL$gD7V`#f^~x(@r8 zk~AEXph3yh=T@xZ#D0zsX-V6i>O<-SFzoN4T4x}i^d% zRWu+J@nr0*059E{Ngig((yC`8GiNdAzozQBS??Ea9;C@d2c0ZhprMb>^rW0V_X=&^ zu$^_C$4-350@LLdq_3ro8@6y{`1H(L3us38cyl|>4{9asP=L(>8awDc@&2H>!vLiB z{q>#7P%Pz9%iIknIo8sJRydar`LEnAfTI@hjq>?!YFbXW?Yf6{?YzqZm~J}L`3m*+ zp4a0qjt^(f9H)+slgzB&cH2Jtezr<0(LNO?*5y;I8-#TezPDn2y;(jad#Ng-4M1r+X8Fp*qm zvGr5J_YR&1?NVrXC26#(@{mRC>4#pu@>hJ4kukQJU5QCg}?Y3dYZ|mlryqTk5?!I`AAAi-VwbWt(mUH%zgnDkd zL^6#m;%kGXfI(dDxKJus&c(W6qhQ9#Xv+2)U%O@#e}c_|M*3P`4@W6q=sLv(W<}El zogBrp#NK)@DYzE7=WlIorJwrH&(Y<}m-srk84FtQ9dY0<0{tSdFgoaZqa1{1JN#oQ zLma)15d34j9h@5uq%4FIC59r)zB~+fnM{im(vD~8Cen*Mu!{(epv z6f%?KeS113OpSQin;)<)Mv(i-5#0;07C~nW$E|dxBC-*9FGFW+@B8_A(J#ZD2r|2> zCOD!vhL*gliG29|GIwaC6Dt1NGCRcAE9WEF^@gooQ*{!OwTS_?QF}TUt6ny&_2w%g zP1Q;^@kMCL?6Ve88dJ{7AMLEMv?;Bsvz16O@I2^pR~O{9vgdP+XssnoWkH4(7iKv; z1*B1_R7!S+O~I}gPABD> z@)Cgl9stn%@ySpAH1yHG|Led0d!K*n+ur<7UpsO3!G<(!z92KT2x=fw!M!XR43;s?oH>iD;7^MG z9vKjugoH!rkvTFN)%rmurl=Fd2VOc}Hg!WY3z+T3( zAAnmYw~#?gVU|q<`#ihsfP-#c056bU;2dJ059bc&5UqQc7Klmw-Men1J$v@iwp+F_ zGmn3_v=%kWeo)c}O2o|}69$KUV)e~ZLZe^{BL(Q#*d!(oolrXim*B?r4)YH0~1rLRR$(u2s z?qhg(m`tt9TV%HJ6QGc#dI9J#>uY7mkQQQ=-wlK>?U$Y$~n<*Ogl}l$1oR$E+dzW*JGvK zVA=IQnJipS`wt`w3SJB#at0}A4wYsg9D)TwN z--0DrbdCEWCXv1s4>>2a6y^QB0-)W;&;R@fApHErKlzhq|7hdJjUT^oq5G|a{R0io zS%8P4(@eozt_JNg-3oU2e|+`|9Xq~@9(w3LdgAR5)1JLM=*wSvjvX2@zuDM}nXTE% zRI)d~f(0X4MIMJ23?pCw%p>e;a1q~s$k@y)!B6n1YZ_4IVo zl`8_I!SF#20VWmKj z$3l43_y=}K*w6XOEDa3yazrc`pw{M9^zcJJ$Sl>Fb1!qs;mpjGU+hOmhw1BIe}-Ot zQ~#N;@Vxn_!d}hcdFJOCERT(k^EsGc z&^*aN0LK_|lQnDB(SbYeVpbVZy#UQ?*R7K4*|&sqKaUXnii3R0B%u`>r)VUxJC0v1 zWV4;0Td>D?)B?x}9^&hKK* zEh&xxST$^>Ni>-3t`V?)xIQzsG92b$6lgNh9YJEFM7{^RN*~Sa>^XB&)Z-Hc)4V({ zAXQTs@QZw?qXE7ZD^_t*Ti;+$SVQgHm{2?vG+cAd%f{MYmSf&vM%7mEvu#UMGX6U1Fs6k@ms>+Q8A zk?nPMjk<1&oL-jy0iXdiV=uwJ1|M%`do2hB0Bvb$WfEZn=6ue)N`LW)m>?vuf2Ux^ng6?D*u^^Gk5~dkjFkk9WM| zk=N{(cYpfR&m0)I*7v(-PInx(8>vA%*~G5<>N1dcgZrG$cb=w;Jr`K-`i3{%PyhJC z|A0=O?4VD7`m;QUB^GK4Gh-a>tD6ogTfX_LW!)H3zVL9-pTBU5W~Zmc@}^wlE!v!% zz)2MN-)hmuzRIf6bxt76;+k^s6;&K1sZmuQhYM5ny81?D24v8tp4n(F8*TNCq@&st zRj(MXl~hWQY3dgFDDuU_j3V7|ws6eYlCaSsiq^34zXKlp@67l?9k;Ngt_2z`w5eJ^ z<=zHPrl~Wb#Qk=h`Q)TxY`HirRQ=|i>)?eCDsfC1r)%Y0fJl6_(eT0W+8CA@Np@Pb za-H~KW+B3x&v8{+ikEu3?YX(c{@ZKYH?T|t`ZBP8aG=2A!{ZmuU)XL~Yu9dOP>vuJ zuyXLq#d&fYw70?Y+Bw%&FS2nNMc%R|8UoefPiWfUj)2E&ZeGEg;Gw%7rMnNjkz>M- zo%|NF)6Q2NR&_7E^mV@8wrt%-x8Ht{-4?RUZrEwUEIXbDnn5tlv-TRFwZ(!1o4I$m zNceq2Q;2{HEc|FIu54>#Yrt9iJTC5fI-BuM1wO1Il0SGyidOy&Dph_4c_}a)?p@T}5`wJ56{!lmN&ulTg%?`c%0* z^B&E(7e>d%m`%QT@e*}j=%nthF8iMQndx#VorQrsA_l=u+h{cQ*)xy1@vkpcc^WqU z8rBh~+;PZl;ecxuVGa1|fJ+*Az(N-d*BTrv%wpJ$kb_MyaLj3JCZ1poPx$JT#5c(&B81Rdnuz^W6wcJz34fsA#o|G(uu6m z{kKLPFa%J`URJ3{5@)8?Ztj?8>UhE(fT%!q_b!LtsC_DFN7KtXV0p`fdi6RtQmeBR zV&4k=IGAX^?whhNocT3X#U>BkOW5Yk%}YQF7-{I<>ufQ+YSlX0w{JgPzI=u5z2{z< z7@wt8tJ??<>)m=#kTynpWm58bO)s6ZzdAoRPZRbU8XXzr=yR<13oL14GS42u>P(uZ zzw**cfBwP}T>c&f(C*_s?|JmN{qn#U|K!>CoH}{_sg91$TNZS&kXb`hXdiLC$~vPe zo#{BqiF5}K-pl&vU-;-p=&R3ulm7hKXLz`XT+7&SFI=ap(f*k)41Zy&wZH$0_~*g` zj}y#FUH~TSYl#iev0Y;N7aNE3m}X=5k|duw_QJUj7>yQ&E-Fi%rcu(;mMyE}8?6DB zYWBtxziL_7u*q|(oPCZO6EV%cy%e;9&ML?0bluJE27b6@70>XSToh^$l>7uPE3O&0Gka49pT;rPy>*|X_{_`%Sc2eEL zvB+}4gN?d=nSDQ#7O2_xJ3GtPe{0va(>?bdVWzpcsgYhgc}g~^EQ>Zs(HAmMP9+Hu zOfsBLM5{c(MahCjnuBRsw|=ADG>%xHyq9+G+RYM-)$Q%}`mgnDps=^(hx-bD9c9%+PgW$+UdgVBudpA8!~ z6(ut9`EUap(P*(TH_`sap4oo=i8N0X+X%Ws-)ZD0`1_nZY1d`2hhYDhA*G0!OkA)> zRX4_pmq}G50oxdVeS6J8oDzD(M2>b6_!1sG=x>Z1C+*{1CnP z(%0AxrKxEJpX+i`%j+oQi0B#tB;~d0*0iFTS!6sf_9$F)=scka#jq?2t_}A7Z*6Jf zM06A$Ka5e9Eemdbor>=Y{NKHB4xwX_O)vX}&Y^YiOQ1pc%Rhc{F?q;tR#CQOi4L z4aY-?(=!~sjpJLV1AVZ_? z`-$F5SAOzR&!tTjjoEea);x%$jubovZf`<+(a<+v_$r+|eS+>ge1smj{|FsAbQgW; zOV7{?-}+W)o7cKUdM+ABGkzn+qJ`=ci!Uln0o#Fn#_PZhSFS0m>qiaWU|dy~%W7U; z^0Ez7?U@6R3{*4G6Y3;5{tlaGeM2L+-q5}->y)yKYL!%@gf*wUa3o0>hLTa|VD9du z5Q=p&zj5Y%PvXbbDm(yMCzp_~PV<;M35GG6h9!f4UR#=lFb?Hdyi_Ao#)1KPq?t>- zR$Jv9d8VL!5g<~4k0DYlsE@t%owRQ48v5EdzDDQHzeelVZMB<98(qF~nKv9PieRE- z1C>IC&jsRjF)a?jpOw7>2c8e%5|fi-Jn4^ibzQBndjLmR5Fu;GBI+Ev>$bLaw0wD$ z!zqw3i1P=a%f(d^JV0Z;tsjo{Ek6YS8F_7a7^q78U>gr!ULUs$b1TQs-m-Z&hqLtc zU!=~9r!1g49TMUo-?-LGeSMehhPsBfZQsRKZLG(GcY0Q#)vH%>%W&%Y6m8wIg$pOh z6gtjzP*xT2G&nFwU;gq}ypUMPRXJ}{latJJz#b0CkI+s-Q;h{4=MYwXkXk(Y@LOr) zrj6`t4F`<%>()~vTxAvw=6Stj)Qa>z#QEX`zXCS%vI}&3q-{r)Q`5-Um454w*}J%Uwzyu}->eMLPp7u+sg5 zS2$@C8fxx{xHhz72_p-wz@ldX+~g)Q2`aLV83lmoH0?#zE2(6{(3-XD`F>m61uM91 zm?8juJrj<&YmgN{y%U{e(IB_+t!o?;9!N)L(cbqshA2z`ig16jGYzlfrQj43X{4PI zok`r_TqrhtC(qO2MX%o=St$8q1v@{mzR3Y8npM|PP%&a zGJ~kBYQJxbN$6ftXpx2;;kAQ}hNPw*WJ_Zs>*EnijqZ|TZw*^G+G89KO0gt+_y7xQ~cl6OuDQ9_HM2w4|9NeS~Bk{;jBQtjy%ibEhET^jETT&;&tYZ z6mf&ulJu(n$BA=|%KTpGfV120a%Yzp4K51Eu8O~M9&B-)3ypg{7`Qt5bxqr}pdFs#p z?D_w+?Uv0SJA1bC0~REe5JEd}vaIh5> zId;^r)WJDPfGNZ-pDL3liB)CZ{9vDk)^IHY=$b{XR#K)9H*ZNbti_+ZEl@zNEJV&y z$rT<9R8t4CGY`-OP^()>E&yNRMl-JX`ES(;!?~D*Tc81P!RZNH5f^MRp3(LdV9T~^=7AVvZX;4PY}H)x4L zB>P}!G%jm4?fV3qyJhn(+PMA}27}m;;5vZKm)nh)lAfRUK@#GeA_X0$>G2*Wrp9Pw zWPr~bbcc?a&5I|igGox_me7`GRfx30FYcPDLFx04R+dyvka ze}y``Pg)>0G{xPtut)r|8VtGjz7&wB5kEycUr)ih7;H=lkxv z?xF9qYr!|Z_9C4*bylE3$+haGQ;~abVCnW`N#^grOy@Ajl*2}kcDM$LxK0#`u!K7x zj)Bb>j4!KeqElzT&7CVGVH!Ma z$sh`>w9~u_zzr?*kZK{6#tL_m+Lp z5S$4>$0c6IX_C1T2q@-oZrfM4*}`HSKRk5caCtiV%6IshEZ4}8__?#E*-Zum#JhLi zE(wtKg&}pbwYiz|2-dW(VObRlKOP9j`juuHZ!XO8cTtwuRpQ_z%Xy|Ji?B-@EQ# zo;!d3;qkF?69!r`9SU(EEC2x{K7HYfpSK(A8G7J>`{*D2qYqdBeVYFGGk?Pc$+bA{o@#AWuWC}S>&ay8niqu=(RK7I*s(w zIy8yOzZG7`Q`c$AZWOM4==+QcR%?}cc5VblLlE#O)~^8K~%lMYUEz%w@zU^u`-c{c-pO5<8z%8x zAr#L}#y>Yj($TpW1nGeByQa}1YRm!zFyv>>oaC<^9cMUvXKH%F&z0skL3k2Iknw%> ziy!-E^z%ReGZM7&^C`XY!AIFaqngTjOik`}>G8lChlrTqt1MtK@jB2LWTn+yfsG`f zx%-*4!?0of4mx_W#B!s?hE@^lRC8}7S!U*R8J}Z-A6$o!h(LOi=-`!;H3S1+kZZm^V-j#;XR0i@Fk;NbF>oZeE0m2d|xWQj*Z6!`y_(($q>2L-l=QSJ*Gp+$1?6Y41ToL4geR`nl0^1S-1mcn z*Lao&Lw*3vyf4+(st>e11C_aRmFmK=(TS0xS1xvbdvt0LGh)+AaCZqn|BXN1^`5su zAN}ZO|LBWvyn1cqsgoy8A4Uthz+9NbkE2QZTYxVXs0$a)(XL&$(Sr}(PoMb2FVRac zy-c6|>}P3sbRZ&0jb}UKq&ep~>@-SXHNX0ld|5zQt-r- z4~lTsb;9CgL8{|7)3l(6Ro^<<P-wSu(}7@&nbW46L=*sdsYv9=fj#SjlR@gWT8z;+G8BX!Fno3By? zID<2S(`6bTK$Y}*$Gc=7tmB}1S5_^;97!*_?F!GgO*@Fb2WMi)CQ zc;^yj*HKi?&d%EnX@G2zOy?~~K6~zr1cS2WAw8>`(bA5jvYHihYsCIZ+YwY(eM7-e_3<8xphzy+TiagJnEdktK^+C{f+zr){mZk9nvRk_btmS*1@96WH5 zgH;8q$Z4z0O4mnht-WSbqYfTTRKKo~pBuwz7cZUTmxV#H<+ji=uzXZTH;J4{jLO3D z$XnV?{TJL+3if637+*B}MEUC`>lK2hyi8{?qa8~)ik`;aqR%~t_w|?Wr_}`pfH+*R#X|0GrqKQptyLm^=jO6pB8lv(>?D@q3R78&38UOSqn% zF6y~>fj(ou2PxITgNNuH@B9H~B~z6nAfEc@(Qn%#sEOL!+u0dsV&b|5urq8;3DN*| znp;*A|N`(jh%D!96`t!;HlO}Nf0Z|1fE_8a4 zN{UWFHJziCZSAyvev&(Al+4o|w;!bU{?G?#&FYQx!GG{kd)yc3J@5W;x^`uVHgDW! z|2@NdHtB4UlY+W|Eu0S!J%hu2Oh}B`V+i1m^}&L9`>XbyRH}UzET37Jojo=_IsVe< z(D3P@$tzcvBp6Eo`hV3&{_el``15=A?0LhleDYI2aprW#C(oWayDC*{EEA>;?ak<- zhjSl1a#jZo_wBu%-tflz=wJNCQ}l%|JWbC(_q+r=knv2jSaX#lhY4Ze@Sq4CFeSbb zB;`kq+iPm1-73@SMO`na>mg-`|Gp*+!X$=442(lT`9%Ine+PaEv z*}RKC`-ghz=<#pR)&6e3iQ)PLn85Wc0X#QL*etf^q37JVVKY7c*yHq`_xxbg)eUxJ zq17Kbal}J?iEP1D3vfn8#@G@LvWt$6vvk&O=Flr+sM8G{2KLf0BgcTp0^}x^FEldv zsjZVJa5pRp1`84HDDp6j%iRO}ap=$?{=JTKJ@m@U$LZdC5AaZ>>mG^#U;M)^yw>4ve|u8h0cMw$#qTGZ8{1vpX|@DOg-y zQ|&Rl&~?s!o@elk$n!f7+)bM|-C}=dn%`5$xlRkZ7I+933^ODc=x7O8o}pO_V!>d- z5)JPUwr*IDtK0>w6gsI)?j*GgmQff;r?i&$s9N8JGb|gxJ6Oh{Rit}>5G>dmpdZJ* zhNyJ@ox~NANo4J3JVTs&In1Ks$&mksphjHdy2mkD zxqLORueFh%GWM=qJDdEyTJcy$%r)FjkQ30{+(>KIY@q%7cH7qtyUb>4Td{!$n;Yvf zu#F+>D&2Ye5oY}1xRg1Wr)siGMw2abk#B*uA08g0VY|*FVH9#132Vb%VejN>rEh*= z<{ZHC#Px}nCa(9N?(6I8Rj`~dLD?k${lD$w%$YL_?|$-;-+k(--}$3=z5DTh_QJQm z^M4Hu47Q2XAb5Aiaja71miVT6`PCPx^TK($=k9yy`yP2S-FM^=J^iJx(D9?k)sIpQ z*G;LIutk{!cYvi(0K!9r&{-y!qOFlp3m2wBiI*=3xJndMi;W$rcX165AjvRdnTOug z`cAzj*`^J4c1GMFDi|avmvmuCDV|bi$q2h!q+YWr09ai%96QaxHd8%tE^IS{XYq4p z7F!<+;IP8ZAx<8mT1?eC4(9?DT%{7RSkevKL^1^v zbs@ZF*Io~zlb+xhW+acTYu`-Y|HymU$NF6NE7U*G%k9J9sE`*l(40zFs$*?83cZIO zd?UU0eLq6&t5#FX@@BP=%nLrRL8qu-&e^Hi>t%3Ygf4Vh4ISRP{h@NX8`k~znPVq#uV!ciCqEb<>-zwF(4sOZ8` z&__otc<)pbxpv5@3oJ3;e+v~aO+x`v)pS(WCNCJ8Pv(SWc3^s@hGy!f`8X`&0kQx<-uEcHu=ep>NL&y_6_e2PMIAr78uOqnBd%i6$gtv&#~SOTtw8A z>f~`zaF^@21G&0wEp6Pqo}=myAG(`or1tH-%@)rU3#uELk#`F(4+X+HuT~s^5@&ho zosn`bc7|=yF=-1NxOL>7V@AiPuj5@ZjK3olgsNF`Gt*lvK-$jRr$s z&pi7y9Xo!EjvPKhKk`HGp|`%}QToCczD%8+=XBaQDa39k>iNtTc1GezanoVpzzqwq zgGJ0&;%dj0>86+^>K?*uY1wP8*)akvbd4;2C5@$ZR2P72UY3Qg!j-rr8|6vn0e+@n zQ`lr#T%|>9cq%*9p_AM*!a5WPZ_$N{2hi0_bkF>$+U?X80nlP+E(9eNKg`@Q$ho>8 zh~_%YD;g+~MH*o8?N-t-hFqCvdDv)>(0PpJY0yVHjV0xgMzY8P=3Z-OUxRV8<0=zC zyPF5V)J&gc1Jev@_}I0`&>7glQc1MOU;-IL=Q50F^!za+&0#BzEFpl7IM?`C*K%}# zgw%d%_3CvJ+irmmbZ{6@VXYm7R;bB?`q}AHDQbs$&9o~r3PW2WTS9=!?EEx$Rd9`h zQCYd7o&Ld({}e6EXY}7c{rfC0!RCG7z<%1jXD8ip#{n7}TA)w-@<*w;X(g>`-^c@l z)00)&v*%V04~PR|yfcO-RL;#+EI{t2OBZ|T=!uu<)G26{Pw}Sft}`b$!aZ`!)>~-L z-aT~m)mJU3>$wTzT+2-I?%n%E3+jgwMSJY*;T>xnZ`nl&fm|~$yzm0u`X}4zo$q{t zvE>y_ZYTj2Y5+2rhR?fyOD^-C$Ynj}hNr+^MLt=X{@zbM2C_)tV~+5(SO+@u6oIIfCe`@mSYqrj+ek#-J}zO{ot8(e(#KBCNG4 zV5P@KsIRYwW8`6dhW58Sw>Xb5!>A(mOz-m;=*9)CiQHvORAAf$K^J5k^j(A=i?!5F z^s)HwLa>VrmN^?q8Q2!N8M#>y&w7@8_XvBzO!>OkNS75zgQZ`#Oe7xo%0x+BEf2n- z`)K_6_mY1fz0Tb=yIx4gslnbG)7;&fx<1LecGhV#L!Q&f@UTX_mpL>CAbDQp7-_bk z!`$N7kSLI^L&1dCQ&MIbpqasQnVmhPvy_BkJ~td*B|oSNEi}TL@Ux+joY{7`ejvo@ zmaVt3M}BidD<2cQKS;q|c_^ zt=;SogJ=Xc+1H3J(+nJH>^VXq0(T4Oy#atBUqPxYilMeuZM1I9X4=31HhSR5TkV>5 z2mSbuewfy--b8=z-G86vXG(P7_Pcohyv*N5AW_F8k%j|MYXu z{I~AzYya}($Ce9OC-mCM6ZEDxy@@{XlRrwQPj%9l zpMJ(xnnQ&lszm>Wy(?MEROV>coLwHu43=s&4mIPXu8bD}qk1d`q?}$<)&*TcUZkBa zP98NSVYr>IY#t2-3JAfCPCV?EW>TqFRom;m_LKKS z&(&h9mP1ey&zdf1`XdSj&$Q=>w-pOTV2Sz%uF%}VG;QCy*LTL68k@L4M$v|A3hR;s zfq4WnSzl^|Rb11)fmY{hSu5Rhsgr@sn$;VqxusRQFg}KvJj;5snC@_n4VlGEGR0kz z{03K{n?Y;uv*~A1qIE5&!VsZZY?bFD+qKBofoEPHN$t#1*N{SyTk>ul^Cj{4Mc9pm zU@YT*Lo$Ry1qB9K$O|hfx)=5(s9YEYSh1s?d3`wUIH0Jb4v@&&Cc=TU!R_| z|2@N!4CssT2~g`gWiqf1Ql(MS2Ej0w1vHn+HLBH);>&Y4EMBqKdYGk<4v)w^SP#uJ z9QC~BtlzMa2Tfa>SK8OtAStP8x98ygyQtrQ<`?3c@GYgwm^*M;Z7IhnWbW2G$wSGTXGEn9A( zI}hAri|jr0-XHphw0`}1`q`iUB#n+t(T~3O19a`mAgy1wk!Gf6>~SoIU?p<0&d@Ev z%mnnx1A_xJJ~m9_ljD+zs`~i(h5712I^ScD$MMmLzLzgu?s{cpWZ+f%*Aq(!YzaVr zPw1ncc-Ny}wOHm1<;d5O*zjOA?xn0+%uN&X?(*;;e+J)hCZMdFG-Sl66|DvtF zchVc*@Bn@IBma=jpX;WteEF*!=j(iWVXV*kXRwhB3`FmWkGj&bVEE3hA<=H}Mwb}Y zF#=$a5i252D@^3Eu*jBV>P?dkjc=D@1K?@tECQG%U9(jeoqM(@^8-L&t25nbP+g0r zSsg*ZAXloI7MFTf8q79WEwmt=-5w9iWmT`AcFBxbcGGPd!tkk8VCMABve#C1z=Q3{@asvY+2_F` zkDWVAjV$PydLCm@ox?e*$iQJ%Lm4^)nL4c4|L(qYhBj>!kLByrRST#SyXcFX3R?Ts z%A9I*%W@1n@R!XEYz}m(U=@dlCDIrFuC1w~cHfPvhl-V1iq*+T2rZeex{mRG;_)W6~4VW4lozRwwP?m!60 z^>IGOkfY%7@Sdv4yha=^8XdE*1r8u@c<9aav0wTH{`Z9oJ+x!TR(jw2ew2Ri_x>I2 z-FwFk8rs;sfv5X!owYoQBx8szhsHD|YUJ0^o@4^^O7=nTYxH z15{oXmics1)~OqfJoZxy?&QUPE5pTn{ptBgeC%<~pan%49)~r$H4@Nb6#SxS-?#TJ z`r5a?Al6!Cy{@#=1ds)7H10K6mqC9EK#1b5r1KnFpE2OaeS@@1u#T+bwBWnX0wWYo z?W@;ucZH9ivk842@EjL4PNLx~^1|S3G!UpN;=G`Xj>1w*k!g-K(2H6XI+u~F+{w8P zWg$tGi}tvvFY2)kC(lVyTuSD|hS1*cvt{iHUY9{stN}d0xlG(UI8qyt><-LwXUl6& z#HNkAQMEc#Q%BWhslDeawpebl_xwthAAm{4y)W(!tqjb$8{u`!H3HNVsnl@&rMebl zU1o+lt8!2az%Ktx< z$8PHS=+_>8_`aTn%8|DZ_7AN%f9|}wqMq~Y+A%Yw=156YKx-$*S@P()Wwse4Q7Rqb zhWaKM0Mvn7ynvRLHfm{ZVz2+Z?mkG9V{o0z*Zdn})(X_HKKQvdFJ3GHHcYL6) z=f$Ckq0=hCm|2owECJ~6`Hv@_eDtfI`qZZmJ^K9*zyI{9b3fbB(Xqxvv9O-Wh+16E zE~l%zgRa^|;r4xZ(vkb_p%4A^|3fdnaExAj={wT4f{cTc2<66PO>`nanAr?%pE4M; z8(U3{u+3-wyGEI6=Ns)jq&bvDy&~g;Iv!NB|0}8H)de%~u!a6y=OpCN;RA8l041uYG7cXQI#x$zMSVA*%Gc;otW#mc5pgEeKU=g5LvZ1(1fOj;-}9kcQiWL_C`?!5&2f7a(e$7g8DX$YVOTo+_A! zamS>VHm={s7Jlf)3=CeT-ri2S)_;jTg*VvO)qSDIKX;;qWSs?NYwSjhb~NNruv^3N zkkEu8t0=OK65Vn8J@okFkF$%()vNvV+*iLr+qZAw0iW3Syl4+cuMgf#w9!W)D^5m{ z>*QbTDGhepF|swaWva|qow_%4s3I$~ppg!m>JTgH^AdgFglDx(UI^dI7pG1-eYNcJ zD&tX)W|MJ&g7!2(9GFi4Dik;XI~=|Oy>ylo+vFH*O{8;yghJf23l(C+#-%GE`^p;TvN3v zt?-(V<;AWIOXjj9Xz5)ps(t>Rp02Zxzw?bBeDcW;HofazZ++~chwp#?-1U2o^!8q9 z=<4pK{{G9j}-CaGbAq41R>4n{R z0Fnd%Bs%0|SSCS{K9`60jOdG*k>G(uH$+&g?iye@Wa7S*h(%rvWCSJmT+-gc!jqe# zOM=@(Q`I9c*yk~-3(PX-=d6+4_-`;bm6Sa}nRRAcEd{`7%6^-UWp>(U{uw)T2!jB| zKsG8FBFq&?yY`>RJ!G&Gi@y6^rwUj2AN_9 zm#KZ6@c}kY8|k#}i89NMO$sgkkP^rPFT4SYJ`x)Rxp?;^PM|b;ZY2fH7bozvR{!Nf zRC)vw#W`V+e*^{zQQ>aTtH8XPkR+Eo*-BhwI7ga-wOl0eh^Bztdjq%_8tS9Lkv?XW z@S56JZ?FJ+1A9)#78JQkp>oyRPfU(*hvi(?ahke5=A}~ZzS_6vPWt4p{0cqx*qf=d zvxhaCTefbb2OfCPKIbs)+O;oYk)xdM_^VIO%WuMh7H!W&r(RN*94gA8>@j)m_;I%L z$`?sRf*T4I9Qlea6UmKis4H6ZdNEPTpJV&nIdsLdiC9;2lY+rt!;pReyaBk`>!(t! zc;FD$fFx+1Nqy^?9ZeXhxOV(91%IWaRABAhYjRHtzz$}SJ0zpmc;L3^5glIO;lmHv zqHjgiAuxr~Pe1nG z$C?X^It&|P7DdPp(QotMIJ;~tsN2SZS~u47U>`bINTtMAIEb*9aH&Q$;Ibwgl@q#9 zFXt-dE-sf7khr0HikN5h^~be-t-pt!eg1R*$`)`x6Q8Np9=g)1e%rE@*$rGoZ=pPs;`A}E|(#{vv8=xy- z1K32+1_ll9u|Rsk0?QY^d6WYfobHcg=)bdo>EW3@^SC z(o(XUn*!*Xvbu7JEfMVNSoemzIhvAn6*0kZDQxBjA`riy@CxP1WV z3S&%SSyxRJAd7V!$IU_;hanhz#YS#F&{AeSCqfJqD04uIx_7YtPJxTF+e>vqK4W$z z#DUA^m_{LEL0g#Tk@avCyb&|hG6iK1eH8th|AF zEP~{s1~&$1Uc0QX0-I*f#V+1ZckSN02tbQ7%<*H#WXR0RD55mPMX$j`x@bSN8GG4j z(d6T%7cu@OV&jc5{<-2I(O^jzBske32MQEyDBb{|#B*K)mpuEPc>BD>yUz&2%|HSJ zpB7*OoZ+d_I%jLesJjv54f^`+KcIK*=sd=qqAa^n3w{6nZ(xalA1*b;P?bV7cD#FK zxvz=5_2i}~1*bhbzr z9-YF($uD%~C5h%=l9Co^gw+k9{H4E?{gEny6X=1w%j zd%szfK3Pbr5V|rX7GjcJwG;+fM3pV|*U@ zK~AF3o3&u0&UMV_b;IjDY3&d5NlC z;4qarwmyS{hy&1qUDL?9BQLPuKL67M-M-Pa+-O0PXmKoE!5aUS2mKgKYj;YA4iRos zS0^DYJRE8azed=g;rbjK9b%Ri>v3aK6D@C9O{-S6Q(Id*%Nk&<>0FFlhtN16?qctg z#LvBCg|t)c=H*3e!EkRIf3DqJhP$u4EGZMlqW4M{J^zhA{YASLJ@r?(O-sM`dw+QM z+EwlEO*8X@gZ(3GFI>1lSFZMQU=@7H(cSvKH@%DQI(U~Y3|6UDJqq!01>@X2^$%R* zFeR|cVCx}c5+{s$>{;3D^z|!q3$w><@$|~&%U!Qt>F<8oKFshESYG;A0?_{pK0f~b zk2mbR|KO8Xu3Y=XYbQ=^W%g9#v038bV#1?c+xZoPb=bOjJ3aK^1GHu92I{*yM8}Vx zwN>zV)IK$Z_M?+l$Usi!H&WI<8v$5glml=s^AMp}+|{V8AmKf{tnFyWsJaS0Re+qR z-p@IHWa`5#@xoQl=%&@w16>(N(PY8Q4HZ_Hy>ZSO!qkcW*|p>V>>&TB>U6iT(5dRB ztHM^R=1yKi=0UTM7SDo}oli}q-~*jI|K0fec^-k9Y>}iODf-&Rwpu1cWE)cq`G^@r zX8{%a`#QFUcsO&OhrO`3AOg0QLkOhc5i7#7mqa8A;7baoN5=-Jsj-ze#~O_tUtm^7 zhDxDtEqL#0o6>blre`LYRmJaOAh2961&|uC@~*gwI@PKTOd=24aE&LvSj@de97P_t zcyRdBV$iIA@G^U!f_a0-^@g=u*pkl;(E$)V|Ezn4dV+Z}5|vAiP*k7Ww*+81;p0jhE&Gp;EFWbm4xkHf=fwGvI8lp;<*g|lsCw5T+xNs4cCh8+jlTqJ2Eot-FI>Y!!y$=*I?gdP32pt zaB&m{pwlRlJky}5yikZO&dl^Ou-HCPX8^=j&gdX`N$=fSuW@D>o;owR>)w6hv09p2 zIG_WrGY$1EJU;-NHYWuVc}F#pm<3>ob(Ci=vP?UfrI29indpS|&c&{j8@$exEFiz0 zI>4NHiHk~2bdBu2+(}=5;fo)!kN?|$oxOI?o;|gn{H5Qz&#w9J$W7^qvEj*WU0oLp zhW2mUeY?FLC+NPz_whhGNP?l^A$Gr-v*#K`20AVvC!l|{`^@P4{Ooyqt)8%ZJ^fBgLoKk;Ml{^(0DzWP($7caI1M%P3vOzsyLX7f~| z2EWa{dv2#Uz3CxZy?O;*?7Bj)zIvKhpc;3>t{d#g zQWCICS`cwCPN~)dbw1~IqdVVqf~5@yZ+}3wvH^6nKWkc*fu(Y->Ls%RPv_VpXhOkY zaVW-$)jV-8P9&uu#h}<9T8lap*-EKRqA+d|*v_M{5GS6A01eL9@JJsI8iGy3`&!l3 zPMbIH;*>zRbA0VvpZC{j9`y?xSUGa!4b<4w><35Pd1!8KviDOvb$4|aLSq*5m4SUG zy1_G8uN!C}F`#Io01oFU0Puw*!n3DO^L=5c2-v+mDjt4|tkq(MHoQg$!J^?lpT${!23qN)md+)=qZbWcJX=-Yv<*ln|H4kX6Wzfv79yPT}0VE=O z69&M`7btpNj(~C3LaZeYYgb-)4Pm_12Ze_27Rewt952+R!IYoH+U9@W`++ zi#AFr%Cmwd*9|kk0_xzwd+g?L&~Dbt=(XdWY|kZ&XddYW)lEZ(2i;;UQVwmc)(FTF zon1*x=D}zv$mZW?2N3e@(VT*w*N|%8N{Lw5IiF{Zn$9BaUB-;G3NwzBRfGLhHP@N*l2-k*ID06-j;!!Js{~Nz(h{|W7`REJ z>4X%8szkm0#4OUqM&L{Ln39i-rNV~jLP5OuvKA&H$;gXyM=C`T`zi@8kQ7Stk+lFv zV53|}j$;5vNBgPk(rG$;_oKe0>xNG`$N`?T^ODfVOcplUoPu*eUfe7ZEHFCS$A050 z>_!bBEvPhM*^dJzs(kcdGl`@Fj*+Iwt-`mp-6kG{PKEFmSa9_ZU17^K{Nl=$?e=x7 zpra?h6#+;p?0GmA4?g%Xzu(2o@;lz~I6d*i+vwD(4*IR%`d8lTcrgndGo4Y>|K|E| zDh?3lT5RGPJ$>pFYbwp6CAD~MP+&@ZKt)~z!vSiAc}G9^8Ob}Mb7-98h=TNs7I#Zb z&<^LS;Z1xpUJ?qT7=-J?NGOna5%W2>*W;eu2k6tE|97-&$3Y%E3%Y4JpFH?lQ)bqf zlOn5Cwow}!AE2v!7Yi>jKGt}S`|p1yJpkR{F9$&{WI1h3_N0118ZA_J@DO{6^5uYUGvq zlIwzGzMCczjVigs*?3smkv#HeB`?SFMXU~Im*QbTm3-w{UI-)#dzZ1taVDRdo|^CK zI&0{|*2|)kt{rL2!pE)oxFz_44kDq#EczDPI=`2hACX=eR z*Si*|))>*eM-JUjci*$0H?C7BJE^z#Dlg=20mi0XDhnV>bg>kjZHd1xQ`@<=ta8sj zvwDMF9!S}TOb6H0Nx}nAwXWj7^Xkc2jlxw@))30?SH09j zSmTOnm{ZkDSA8lUUO+{)&<;%VU}Bp3VHcS&58n^3J@5?UYL#G~T=00quC` zB*X|udPd`Lb!dt^O|T3WE&@#W-I7LQCs9OpL7J0C%(oOah`e?QXA$D`EES#s!!0;x z@JzmR`8=&#vqj_`s(p9Y18bt$`?bu+5XZJ$mi92%@GK1*V;%u4{2pwYQ2ao$(9qE0 zTfU*)?gm_QUnt~@qNzQTxwtqn0Ytjzbpx~b8RQ+;`g&O>Jv}?YG7ff`DV01p^K2{w z=tr0-^=zi1b6hJw`GF78g|1F|?z!g+!-@ZkZ;xz@}6@eM!<3koaHx=eJ9DpjR4X4p-5zm2+LPzJTH+XT!G7GGE_ucnKw#thE zGG2E_$7$NWeW$w7EShPcxN8t~{QU3bel2kJoFDnfhi#$tHkufpqSocj^s!(3W%|<7 zUuM=B`dG{;%!3?=^v`h-@75ik9_XYCi-5iRzPFAv2{Zc`;Dmgt&4T6C?dvUQUd56u zxJghR>^>b>_m8K;%kKF3fGNKC6W^^0vI`0T+JofGTQ@qkI$7jI#09aB_8}&1OdhP5 z$t;pYk&Bt1%tyzErswCTUz?o1{>qiB7hbg(_ElS)AgF9^2_YUPh@YClsVtes>&{^ zo|TsLvWi;HDOiSNBTqd;$Ny%(Xla82sAcLO?U)?_$!<_5SJo$0`@S>+)S0$V)tw_| zguK<03#iEad+-`(l1(&;Xo)}u=H4N}bqHc>HwTa%lTXg@Ur|#+8iwIP$>P?!KllX= zwhRUWrIeISRz}$rb*%!L*16V+b)qjO zoJE~c=D*5AI$+{jTiZBs%(*gz)WR6P1vno3eN6#02dhUDceg#u>iz_;eR67yzWL&x z17FJ7iX5gQrl zwio}m-x$ndTfCgvWLT|nS41BxF(E+44Z8+;NkS8oLv*qCY{6zkCo$kk1# zsxqLW8x2dw*r#7_DSZthBa`cb1GSQ*zl`}te zZ^CPcCcpDAt>zhLVT(jYkx}O5Bo3p*_DZS#y;ubD&Rg(x%_6poe4Mywozq-4BKFIM zCNN1t*n%-0rZYnq1$%fl(a2*-Dm#u*!rx1bdhNO4BOPvBfS>NjHQs;`<;{`20L(cy zHIed^ats1V*CAhkt>A(WUXYgfbsqhe-2(Ru*`}|D}tzy51B1WZ4nS1}4 z#4AfNnR?qv&$>q*&v1)i4Xg9IC%5L%>#+Y>u@jJm@A+UQEuMo@kV-J@zv~+sSXwa9 zKSa$<4Qyf8b)nm@GrkxvTsIMen`edY7Vf3`8c7&zZCXJqman1}E7!0S2K35oONVHC zj-Rgh85nlM@CJpcO1<3s*MwCC!*U5oam=K{|Igl=fZ3Im<-*_Ir^cj)q^gosr81|J zbf<^(oKB}F8l)Ly_~o`Bpok)%paSZD(TldAavk`+ie7#Pd_XTKiZl%>2+h!p-I*(? zAycL1@zj~8sygTFz5e}u>s!OF1n>P-re?kUq${a9b%uTRIpGw08 zdZBEBR<5|&6$|u&xn5h1-Ve$mmrHy3Vuq4|mQoA!6}{KHckGLfp@5ZYi7Yr*#xBzk zGZJR>U8^;g&Yli}e|6;9!4YVO|1jS0h95{mpRS(IaqgM5Gty(s21A=IR#d!;A`1I7K4isi|&` zP4gk9+9?m5YPq7i@Pza>2GsN>1LbubAO0+mZCYx8kwWLS(&%X`i6IW5Rlggu%^{%& zamacR8sDBI$m~s4ErVfPQI?4kfgDbxykn{MsQO{$g{BWc^({kW>4M6w*70?oQt%CNyrxf8 zpI)3Vt(zQ~XbO`jO@si?Uq8X5#iYGpK@r}EwYko=T59hqtXbb)b-ygvL~Og;)3jc1 z$n*7jaUutnSKM1O_;-~bTv%x*Ch9V_3a}!^L(3xLS!B{qk@1wR#%hw3b>AkF8;O&O zR+K9iek{V+VidtvF?eR^%;(`(*%IoBfCv=69&x7v2UgKygbN>1JB7So__~u-;q_}i zM;OgUsx}WxPfd-}&}OlahyHClw4FomJXs`JF0ezrSPlbKPaV*G)H`K-`JgU;o{z5k z$yu%Sby0DNuW zYe_A>>YQ(n_W^U;!P@zww*ac=W*@WQA!VV;mORTJE}y3a`;8m?2B@QT!w0Q`)9#nv z?qMaF7C^r44M2r^wOk3KMRBfF%3UfH(`Pc-rPD|6d*D?A!(V$YHtnf|8$>>zhOQbtQmK@7 z8rr1-Dv;ijEgDp3Jvej{Mz36eJ8wS>M~>VH_dR$!jE&B~mC7xW`=tVlep>t)?v95+Lu?D0eAfI%j^vJf zqO3@v|2C+v(g%W$SJJW@XlsiMF;S{96My0BHY@?GqWEecFtpS`MLYbbIA40sMJX^2~^oG zT{?2XL0h(5EJJm_sL&#Dz(_n&XX})BfGG)~$I)WE8$r)m0#h%Nv>m&>e-B+Bs>*mB z)Vvmbz~c~8b41GV{)EDK$?-V1w{IkmK2|g@EY6U6joZ>lvTX&{NVQj6JYunbK2uC9 z21}C5Fg7q~Jmj*`Eo60V|Neuq%vo!VsFh1I1R76Bu;b&zRm9qh=h?0$wzjK+dW?<2 z2bPURx9@m7xW>gG#=+p}tZiG-H<{2@B${m{@z$vSTyOzlXsuaP{31Vp>X>qVJm_Q< ze~lun&RJ7Lp%l&#*badUZA^^O+2E?Nag_))65=L252N$L3wgMWRn)5&EuM~E+`4r; z{QO(r3NL-xOJLo)R(R(-e+@qV@xO=LZaYkNG->%_A2QpzqQddEv8 z`%wOTbXgo0eBb-t3z?oF^`$1d2pZ8t3#)9C_S zxpIka2bJ0OjtwMO;Q24J>*ah$mCK=|wabg`ym&lptFqZmjkpoqKw&m6J zE+O8w2twY;^w#WxVByLt6iel>P|QbUIUkYbOhlGbrxusy&QvOSoaEF=6t8>zoBEC& z|HgB17a-=jvf2g>X|^m%=44ew9zW*>-6y_-BhU{2>3I3eUo`U2Lk~UwjX(8{2a?I9 z_ntm|_He0KGOc!MyWW!#cIvYe$t-T&fBoq%!_e?qICRVHaPPf$!Oq?NFf}m;lasSj zA=X}JUVdEZ=B%A+-rmL^)oY>jTi0dYZ=Jn{atk-q zL=#Ci-X~Q_4m7wJ5xbf!6HvAfk3XD!wg3pI6PXQ#MG{D57n+%3iMwF3k zp4E~igbw&Ou8+{#t{2u8zLf(VTATyoUS8!tl^Ng(GsSLc^Z^7q8c+J9`QLauhy8F8&;2wR6l z%n)HzP-_vQEe}?y%G#JYm2uwQ-f1bBHaS-3a-4*(y+1Mg##QzXMLxYXigu`P&l54_ zExzS%S#?0f`krH#2|ZK1AuUAKLW5Od9{}REVYO2e>WXBwf-tWZfSuRz2KGb>+kwidY$BQB`6mw@VeLbL`1oRnmwzlAympM5oyjsp-_NKx)Oaa zfNlM|Sn&>NL0=83;IYcAXB;4;$Udyh_PCW)&t>p@f=air)>78Yg*;cN-7g3^E)uLk zLbY?_@vfIFRmtX4K_Q=+t*n%fl`Ew)m6gh=WO8n-P*}n;kUabwv286a4d<}Ib82eL zEH*hTCjOc*3xcabkMUUam$Lh$cW?yS;oE|zo_eYt{rS=zcieIRJAdVOUU%W*<#!LB zJGWJBooRohZ>xD`s}5U~p8D#OaQ?zDg~#7=>p|GMZ8MBtnT5s0B>j$`u-Kke$Ls01 zI!^xx?ExpSwx)${H57>&Sqo4F!p{nie7;fzP9S*;xFm$jN{A5h8?02ErOywe^Fmh3 zXeg%6N;_pu%fUzK4-E91GkPfWm3b~z2TiiT6i0YZosRptH0cbm3 zsOTv6yh~+Wl3=09j8yf|Ux_NUEXIhAUvwQCH}*hyB_Qhtd5B5cO2{@t%AIbe%VOyS zZOfx?x~Y{@K#VUHA9rg@YxJj|hON@sB&6#}Qlv2>7%aYLlwR+um@hlNO_4O;Cf|Ay zW9j^y7_e3~2HU!D4U#5ex8udgcbtGDk3KR)4hp2t&&|O$%gR?8Rmh+3#-_qC$JM)dD{DyntEcN#CxSuLvQ~|Msl+ z96VR>yu!jHv<;DkL0ECY!YpF3uKLieH`BR(`SLiFO3QHQ(DhW5gAJDQ^`Xdfpe-AM z(=hZa35TaSwvh@+BEpR4b$8chiblNQz(F{8@J6`n&bu(R8iaI%!E!{F%Y_i8CnjkT zsUkS*+?*;EUk7pArY*+Czs~KLLoC*UM`;CYP~y1II5(S2-0 zmEOB*a1^duta`C14(&((n)`%za0J@n+m2JGPSqZL)eAoO{`bHCA0BzZ^MCv7z_~{k z=NEc$3S3zA&_by21OD)3ZoH73g(v>$aX2?LMAhKe?cWLg5s{u4pM^rPWa^+58MPv< zLKW}iS=ATx!4T@A5WAAOp^>Y}soFO|)(zQ)B{Pl%d!vEh-|XdmPDoW5e?L%u zVqfdDdN7TGC?dj-(RpgxoIKZDe1IP;)_|684bKR!*2d;SC0z?)h5p;*O2jQ1LMha0 zn9fqGm8}5O*0%P!dfLaUNw*cxX4FTOxDs%UuWz=n>H1CUm%PDHPtgl5RKdq2`C+KZ zsI>iXs(=T2(c=k2R%>C6Gk6;)aR8gjZaZ{ebUzxTe;kjoFI&h$U!}14?5FmK^iY&s z^!u3itCD1Na|w7vx;Jl%h;)5b)(Yp-lwFH4U9qZjMK1NgpgO0Gg6ezmv}fB#Y!hL- z1xTI2p5>$0o6jPypJ`I~E#?W=mXO3!AS|nidMwJXs=o(Tnv41s;l=L1-QsPxURq_; zCWK1q-w3Oeu@ZZ=Vio|rFj9-Gb7xOR?^{!F^G!Fv$nYiD+TRP4 zlQS?gGewo}D%}T@A<%+^-@`#sTp*%li3Vh``LJa@w70cWiO%+IJ7D+j-LQMt9@xBj z6Q$7<^JPe9axi#y6mr=DS(hk5D7ycsdaH%2d7@M_oJ`lDp-Tw#Kr?>98In+WmIGfa z`ec<^lL2kwE72n^^O#NMx6p+uQfaS?mF4B2T3g8$i@AktK6N3Jo&`yRk&KJ(1B$tz>OIx=$p z&9k#JzVTR^CM`8Mr{2ZXgf^0+J-heA1NT1wd#~FD#X<$f$7Un)QF+*;kdqKKUu>y4V6FWAJ>b;6>l7MnoD*Z>YHqOC4}fj4Ob3 z0)+4DdgEL!1;tW*@`ee>*Z+}8BrSniImdV~!r*_mjXVr)CNIh*?P|fqoAw8M8EAN$y+?^&2h zzwhkXv-f6mIkPdU{g-wbh+r?VjQPUt^Fue?0rwug8#Zm}f^;$u)6?@bTqB1HSveuq z6->+&$O&x`>e6K*%gVPH1ga^}nsnz}=vr0&8$SdDw*m&WfCw-vDLVU^RB7}$)~b3! z9+jG~E@Q5cK!<$0I(wQY=L7POc>H^HO_){mRDcAAy`3h?%H*=@aur3Mnf#gIHA~^t zsR};l=7Qx%uss2#CrxAt*5p60DXPYwVVTP_CqI9cZ9*Lby#1pQ zfktb9Cc~t@+oc*1tL46yZ!=Dw<5k{ke=f8~naMK1lQQ^w(J}69O$(~ zIkwD-?Sv?`+s=xPshVKy7P>seR^z#KaAmcuEf~~p$w?}*G)dZs+SYHN>%jDj=H^C9 zn!p&d(eV*deBb(}cfz0i`R~SS%hzN|+s|1@!+k5!c~c=GEkdi^&Qs@bf;{v;@tQZn zop;|Eou^qiapDyG^S^w8>>b$3x2=B%Tz}wt*uQ^&M40zMZ(lDxrgEtQ=~Nz4OSy=6 zFTu)6mDFS!7*sKvp%f!RU1crbPw~7D)cxVZT@ON?vF!7(tM(tuH%)7YB2@F606c>s zchfxG_NW$I3Eru~?Dj%26O=3ErRZ@+WH~dCTADk#m`Wm9o{p}l1mB&SY464xZ~O77 zsj**PUM?Su9&-W!v^YS!k7}{R3w-q&iH<9h=l4eM&F^)e;0}&JJAAj{|J_GE{hHCs zh6KFL-wKt?lVutCHax_lC|Mxbu#?;nv%3h7B7#Ai0o%Vjt7jn}e7pEvvEjUYBWxa-6)@rD5 z6`2E;m13lhW4V;4A2e9jjG>XzrGXtHt(YI zpc)ZfJf;sn_+nUDUV)vvc0ewdhA%$#Ik*xLXiVS0cFJ-&4>q}qsn7Ot=J-k4i6Zs4 z$}y9CK1a8Oit_gUz3{46z8+rrs+aJ4L=7T9SiMLgPDa7LIG}YF=-r2$P zK9ydqFE1BIql-LKtQ5}A&rM&MPtIJ3$nqq}fjjZN_Sv&}bN|hyQugk8J=hz)&+Lxw zVt;i1H$=yvmEV_;pF%`{0f{Z-$oEW|*Fsk3M(``sa!;qB;_A z`=E+;Q$sq+GNM}H@WV|JYVvD`pb0IKDp^4r&<9>1q$Q&oeIKtHFE0lLnFQ;s*1B#w z6ckOhO2o^QAILHldAU#*B7}VZRQ7bp@l|TTFyI(2r9`U&8iN<89@fM@ zuKId0yUn%eiHQI28ow*9`emJvB23By6?D{?K=a}+wmV@F%e7j%r^#C=(;BX-fR0Bh znjH>vOej?%I)=;9bAZSHp`$N_yYD&*AAkHqFm&OVz9uZ)!E^~EvG^DRFauu`p%D&5hxk;-;FPm)pmzTo&pnKx}W=BeRWMKD8JX!ZAPhnsJ?1r8k8 z2OBqbN2~5=an_iC_3PF_>$(>G2M7LITU%jW^rx$50}SVoGOkXZnipS@Z(`RO9$Bsq!`y4o1gM))3&<@`n{MDcQ-Bz!q>9N6cgFiJfIo=SP z$mcC|J7!A_xP@E;yJOp4xbNt_aPZ(h`T&}qnukK6q_=uQ5r92rCCO=^Nv9;xxMdwO zK@Q3Dj3P{cIjpEa*JPX%Zl98kgUGV9a>&Z=8j)L4mqQajCB36K#8YFXI55@^@>tgm zDJLsQsM`=#)~jI4hidr3&qIu8)3J3Sr`W1CG(L8^@*9E}TNZYXlOB2k&=Z{MW#ieg z0mEazXP7Fb{z6!VAc(1m1C|@cbb0l1NuUcAKBT~1{ zYK#N0vylbG?O_Do5pcG`!IvK>8Xc7^#`M??#z~a(Wbouo(lMw3NDSQqZtO|Nrz+x7LcxPml5)Q$kDvkD>y?YP9EjQf) zx8HFG+;Zqf*wVWZnwlHw_hf=kK+$lD*m}C~$-EZv@+ZDI0$=~yN%>xZ3+TY8zp8jg zFDN+vO(pzDi-vCplvrsxrg2eczuSKYQv@ZgTb8vdG(K^BT|@*KQtA16v6R1DD(6ou zCZ`6bXUCs*WZA*N5om|+QGDeq$94~$z4W^y!{>iwZho%8W(J}4Ca*s*z>5vA?Avoa z+;ijzTz~x@Qf;QE7HL~llgdDqB}mJHB9b%+h$K6d>a-f}lf*crxF#gP%JNYU1bu)@ z0$gK@ha}agE>lLd@hfWzeB11K zR*Ez$&LRI@Sq~K1QDqT&P{@kMQ-lnxyxzD%XcMLDF_``@$d z31-01s%E#yG<~>h66TxB2@|J=$F6|}2vya4!VC!6!;DB$o0`bx;WJszmr}HifB25) zv2DZ*koio!@xEgOSQtI8NUSmSgQ5)iIWc~7_VP#1Stgq#6&r0w>)YCikY#g8ICkm_ zZ2K2iwF+XEFIqU%fYUW0u6}0|Rz#tlOks$2Jabx^-#sv|1@$^p)y1bz9*5Ox)!b+- zK}W=PDAaY?I~6uTwl!~cnT^qLdBG3;DCBcF`1;eIjh=@zUB_zl`a<6@D$Dpfk~RsM zjC1eZkHE<@PwAZ(tYF7Pm4-w!-6jp|l0_=uU5(f_2QTzYCApe~XlibW?oSu=Z`}#k zA2=BOxe@kWw-@^Qw!r%K7WxgGiKtYTA(tu9drPTUfxGTG2phZGO}rkgnRVpb!d;Ew zp)vT>C!drMY z%*`xD9~P^mR#OEmZ!PPZSSBi1(jmAs!RLxS#O6cRo7PEvTB}js$-&KA1ay2nE?V;LUlUc_hPxTA= z=*b7HrrK+Mrj7#`b`ku2hnTSYtnXFtsmqTGKBEX9&z29;`a1DQs4FrmqDa5Fiwgtnx zs#V)6PBH2<<_5<+%$|J@z~qI4l|#Vus-_QHYvH^S~+yJ6?f?XY1(2Q8Q|YO+#VhS}+PSx8c< zKsh4M6bHu(L#kW9%FZILBG2lGsUcz+;V4^9MJNlJbgjD86bW1=qIWyiwB!htdCzu> zkaxfEb)^RW@S2vZtD;cK)=I_vVxgElo6Ro{ETxkt)9LvkCd(`C6Uf2A!4c^1Z;02w z{{MRFjyvu+^lR_@{nwp5e*End!2H}&^r2jnJSz0q^A~`bQul~_314W%hG?HBr_2F|&R8YJU|}M; zTqTW)5n2NRPewb1auYZr(sJ+zm1&g$t>VcXR5nK z((0=rB6S)07!v$pNd!SfG${p3Sg~hdSJ)bvY;7q=oQ(0Hp=bP{o+iv@s4SM_YgJ9F zT?1ha7y4X*EUe)q-HsmK z1RDa#N5l~GdD|mmh-nP=cDt>}d*1&>ZdQdUo~8PNh-Ex`p0J)%yWqrpKa)vCM6!)+ zBgQtRE)(h|Ihk+Gr6rmq`ev6SLQ8Z^ZaR1?WU?8UoW9IMb^@9bjkIf%&u62rtF$A7 zgOZ&cJ*mXVf*$S(AT#Wdb+!yDSGT^*~;gOly)&Qos6EF z5-cyTn5=i+@lfZ5ItN2q{F-=25#zU>mBa$PXpp;KRJKG5^aO;~;=|KkYxeJZo=y(} zYvJqrzzv;BO_v$>_}5}7CsLVY#EVx(!k~IAo6lUFTbvzDrKT=8vh3jC;0W}y99YEi zibtRO!4H1$Umw5z;Qn728NU3MOP4P7Kp2<|TKq5JTLVxk3eS&7O%}fXjW5IS$RHfP z>j>O-`^|9EE!RPEAq$K1OHhNlR%mIv9hG4#hOAZ-dfSvn+9Glsu2!Xb#gp)j_#q$2 zt$NC^M&*Z6HdaZAu1Ehh2wCbuN)>+K`trjPz0yWGiU@Urqvb-G5<0ykHh}V?_SQv(BDV{E7)58#io{gKo_&aQfWW075e)di5Bd7I{s9i04@fvT1!Y z=^)`X+Xg+W{#v2Asf7k(OT_|g-?7`2rU>&~3;T+M)|lxrc6M~bLUKyJ$wnl3*Y*Q& z>rMB<=-5S=n7l+p8K1KnEf9UU_waM!$A0uD;KGH=@cA!4K|jae!>iBclknu1J_QdR zeHr8mDYM8Da(LEmI5driYJjv(7A#y);c@S5+W=d)?t<&~Tn~Hq?1Q~~_e5m5FIu#$ zr`I&@M&)w_$ma4eJ-HAqo+=cDsca{{YTfjdX()^-^dVcp@VQPzA1~_lU=lHmy$I~& z5@6En8;g><9k~cja2%wscan_v#k{}K0-SzShf=vHQcH8I<>k^yHkUd!J2yVCl%D%W zwOYL#U9{>xNgNy;9D)7;#T(x6f=u+~H$VO9&;9k*-rnCmf8oM^nO~UmwSsC<0wP$T zGEHUkU^ce|pL_D3VQ_d59=!iSIC$fA(AC`ubF+((PGek^B+}?ll-0KK15#QhLY*{$ z|6z&)_I(Fb^W6a0D2|0D)G(KjgbN3XB5ESDXH^0QUJnkm;Y2+S6-FO`7_ElHfQVlL zC|jCzXpHX@t6HI7BHDOQ52Vso-YJV>HT#y&C zC)g;)vAkgI@(8V%HLH}xUsF~AYyt7CG8b#A-z2N3JHqjHs@X*`A}0Gtazk~WJS(qO zWmtO<&qc;_Kyab}+e2{ozz^-}XZd*KVo9pfNaT>jpf{b$Fp!M-*iP6?WQBGru)bI% zXon%;%LD^ogq&vJ$;1dEq{~pM6v1CE$#jT_(5dr??!Vp&;A;06RaRv;cJfKQ80DH< zHp0Zv#V>2yH{z3qcwc(^wn8mBk20wxV}}7dMFXr>KS>JlacD}(UFKYbJ$ni?UKU7$fVyo;&KJS{fyHjvDt z4_fH#ZL1`Q@0T2+m5U!NoM~_02>pFK;kv!oM}PLgp51$(x3?EMH+0Zz7;P6A2{$vd z2*pBlU-Lyd$nXvvU(?BC`C=h%8@nWZA*N!4YVO zYvQFZeFXi{ul$F9c;Y~EzWDp6Pn~*6DxI-sruc)OBi4LX&JcY-MkIG;b^`wP?F9cpY~TlPBQ(kkSGZSThLcTZJs3l~1ihD#wMDpiC0aEG4 z<69SXeVeEhW1$6R1tV!fE;5JINho$PR zb(C8|4(6%$J)y`p04L(8*O4{Ur_RjqsyGx_V`-PWOYHln+Y)k?0~dS=ZbU4X3!+fU zuM~@!>2zl4TrQhBmCmG2Ws3_V%gf7)wCZ0J3!l@!`^Xcon3$M<_u$~U z8%pJpcGk*m&w$C7MW&dXAu(xgX@!FaZh?D_+zos7ZinUQ!**hPCi?I#==1~xre=g} z38-^Sn&3#gfU}$NLl*5Ab;@Y2Q|n-zBkTgsg{JZqYAOWEdZqf`+A94H4jxjeOCXg{ zB;t5Ms`}>KXFHvP?pILfylI)Jp$cRIRy1+JK&c|+(X4~{Tvz$NLCmkLGh$T+u241K zpc6D?YDvJ}bBh${bTaRnFFntT6Fk*|Cc`w?x}k`^TJWgfwxaLkb@`eg+RClx*;UY{ z(N1m0+xLgI&-L}H$ToS5sB|UK0EvbMN#uQ#6oQI05^21Q$5r6qNh{6d)J5_^-xiTa zpR=mbvV#MPXzf@*-!xZrV@5SDelRck_~|dNX)QF^wrwZeaKp{9I0uhOTzB_IXlv_? zh~gz8wecvst7GxvO0{{~RbH@MRE3(f;;$A81sJ`25om}Pj4i08c^&N8eFOZ&tKR^_ z!{_1HsjtG+^reVQSLo(wh}N!>2NOkTGfSn4+vP2&ykZhYNBc$^zTCU#0PNelAGUAX z5gm_yXzyqz@AT?w6^ext-KIPu0Csq79$R zp{{XPOE%uU(6O45fTREU)j$5j(AM4>-)V_eQp&FljR`pR%^~>mm!9SpKp!fVg2?4F zD}_>SrjSpciOBMq`PBTWVsYtwM3xsES$1%6a0J@nKOK)f_Wq9R_U!uEvjgYeJ~lSC zh4Pb?XPMItAl7VX>r9MQp$ZZ6y8it@Rf$t2xJ;2EvMfx6H(fW# z=sP0&+%hH`E{>V5kVQitG{`Z5LXeSEUSt-AWc4gJShpgr-H%GS+(5wtI|7 zXuS`3VPkd*geKq#GvsC|gr176v+NAsRfG&oLWHo0H|_>_38RqfNITCWQlRsX6BL2h zAgjK)MqFi0`+WUKm@!%n{meesf)~nJxNzwV9J%ZH@;bPwt$}^iNSx7UEf-pKBBAN* zBAgq3+OpLs5-q73{?3CBKF@akYLfgbzw&mfd;a1VpMsBl>|<9gUQC(>tOT zF;uaKc%IyU|NZdFSH1$)MMVEy?|K(};uD|Hx2=vFmeeF@FtDm?=j}3-wb|6ZbzhX9 z7|UwbwYEXm#?7#`cN^@&1dJVfh%9g2+8ez#JLo=E$`vXfDMci?kS{~2Tqf&;TG#^D zFstc3nnUo+`2}3_u69_I3hZ;DhdCr7c0SX25f~pdU58GLk#T=ipB+8^qYvCF+S=A> zh1#~y&~=i9%O^|FlTUuRc=qhjP$rYQyp*23xRhQzUMMVGbY$7V!NCz|hwnIk_jmui zv%kOhmrou${r1VpiS>#&g5{qCMd5_gs^S#Wc)JFVGae z%!Ljl$wJ>_P&aW@BBWf{nra^mq(UtVRAixwB*t}Cq@|jSgqf6RE~`*PSa5S8{SIbG z3s$|Em`fE}D#$9Unn-%Rs>wsh#2HmpnQ^OH3j-5a!9!4Ls8EwPMX*KOGi~XH;H?oh zg)rl9I+eo{Rsw;hx3M@hO}JD!issoKmvqE4qSduXTTP6eYfFNi^=miV`JC7itDFXi z-A7NwqG5RnXFtmbwuB~R9v7j=fia&V?3x-HVZ+8Qm|vKTNMCnE4Dpf)O5Om~cnER` zk+P(t2U9BNU|{f@P+2ZQy!PDV1~niB)k5Sv*LQ7TiD>u;rsBi8)#` zNO23bZG*0Zy}JRc*2=poW7xQIUPET03c zEpA~c)bW>`od}{e!B`0gfK^2Yx+n$A*10KlQH_U0lZ<9-{Y*vmY1NzySQM!TCi`UG1)GP$LQKz~i% zwn{+(&q@-J1p0voo(Cqn%q#$q$l-TU(Tw?{?WK+|+*144!S*;C^;zwvyzAHh8$A5* z128yr0lK?3KwsZx*uU=}%+JqRRvggBQ0>ylSVj4K;-Uim%3C&XgS~t9!*$mkpxC$_ zJJ7G(PBw;>vvN*|`b$BvQBWX9>S@f1l8t@t|+8sas@f^)G|W;i{@5bT*e&{fu4kRfCO z3T@e|+IU~(|1t^Zq8MzbOqMdxwtfS&w{0Nei>WD+2+H#ehf8VrFgmVyj?`&~50(z^#1FL%5m~{FJ@{9=$vc>u$LL z78aIZDVa2_f)<4qTrG{?LBH~gU+@aJ{=oI5DtCAHKc56IZA-@X(9zB3Mr0?eK$u@F#!rWnYcHKJdgR zzVPUoGv|Kq{K)y8%PT9)(72h5K6BX)Kx9yGu}TPI6PI9eY80;De-k|T(1WmhcR%!Q z>4CAaDM&44Se=xLEf%a`nMw_Fej5`+oN7d{LMq;%tmcO3cCZiy)@u}xS7l2DhD8v0@CDTw6PLo22uuQL^w|0l5wu1iGEuLKST-|2BN2b) z>8(*@8!Dob{NNB&xMt9j5-WT^M##Wwp;N^tL{xpxBEFKRNFogocOMugtOf?v6CogO z0`QnLidd3_QkT~#;JzGg#HK^wwC&rO4j zyYm9$omGnn{GBTAKrC0v(AdySyAU{Nh(wy~8+bq(Wbq7=aC{!a(2k4~nk3@zB9^(7 zN(H$?5rpyVUt3iTudO758U|Fg+*~SRJoM`C%5N|9uJ zvO@R?S=;WjI<8vraPfw@%UEgt!be^L>)To&n=Qcj*fc52%d4v#Ne8hkH;-*QGWjCV zy8y;NEt4vU{Hi)?5w{%a1yU%}Ea>>~A|q78fK1Lk-`Bf35jhsQTy!rB*(;g+(y3H( zeju4$I9aPz#`5`m4z4o6I5;>sI0EhP14g7@{)*@Q{pUXSjW6%nyXzeTXNKN1diml8 z)t=^Q`-T~s3z>9L26RMThR+Yc)bs@0eDm#a^yp!@>6U$v&z0cvr3uL8ij?_`zmmWR zxRw63^e(XmCw;sp||GJK@OE6hLrLzX2ft75Gt@C6SG)7r9h^C0N)pYU#4F^VK zm{LH95Jy+%3B&(U5%nYTjd5#4N*c&!BDu8BWXdCQC$pJB4-le9Th;zb)th?&JupL2 zbe~n5po)X@;$<7kN+H%1vZ$gHq3jY~tT;pnt0vmIKF`WSR)bqIxPyJe9><6&1zp&~ zicG{rgSDeCFB5w4@|A#(hpIH!W)CFR^?-fUsF2EPab@LDr7cLD>9|w-olkyVB*2nL zH!*p~8w%*%2rW3VRuguxP_{6xq@r(Z+1v{q9c|Fq=)-3}`&rnsWh?C1vC~SgF!ma$ zDjTbVOlOg{A~kp_Z9;)bb|LjSh)88X9{NhT48Qu{egz8o0`&H6fsykg@XR+)LQ6|4 z*^yLo2}U#G?g}=8;%zQ3mtkpX7EYZUhzNAM9*9&=r>eYG1lg$9vZ~(Wg_zGj)8#yT zEQmxiA*Sa*#W+$%xFpYXZmTjGkjW_3h`bl_*)X5a0sdj`)A{?x?8M1vl1vxeY|qG!@4l&aU(z5(vI z?Jyj<=MLDsrHe{fu3Vage6d7Bc>(*6C20w$2u1pxg(faCO(WC;fLPoi__9cL@%u6d z7|Fvb7rOwfkLv0aZ@hx7If<3+}H~L$~;(3=0=C ziDzs8>i&49$xiy7J*zm;V}dMO;m8xsg*D294Xm;&&w68`5fTxx#DX2|oo3qu#eG#! z9MH0D2p$}QyTjm+;Oy99TFJHai;Kn4jx2Dc#$?izx-yIUZ*>zgF^ymLR^|Jxr^ zQ$-aYy{EcYuhpx!Z$2rrQd6+Hgljl`!yC^T55H6rn7OME0vSIrUK#5y3PHbPYcV5F)iOs%0P;!1WA(; zqS=|u9E92F>EuFqkN28_MnZ6jZ2Y-@nDe#QHjzP$#*e>J&EPsSD4yrU0!%-QRy=dL zSgnDT8GbV-(NksBvplwzE6e5=8M1e1m^=!jV`Ya%Qg~x7`43*Y%!<@^3|$C+Hck&Q zZB(?7PboH~sJLkPFkDH4S1hl-t{AFGi^J4f=u%S&XRfeY|mc!R_Lb|5TcZtK2^z@BRX7;i5fs6BEL|wCS>HufU1Vq z&O;EI3L3RABVW;ql*vVgQzrR-B#;T9!(@*r0!KX?d;6l@(vcZ* z;y5OATuUdP;z{EZ{;`S}&V0OB;}fzUy;F5D=Vi%ISX~P|d%D6kb z1g1U(FZouzg|^OhV4H!C>D5mDlu5U~jzGJeoK5M*~bc@x1N9&Kq+jqZncOU=eSL6ok z)&KfUK2iEiD~+_Bgo{0Q%|6Z1a*&ggKNi4{d3W&-9|!oc3pE^C&fkuEUO#`Kx!fFey9~1NiJLrI5jAs5S&$q=Wqc*EZBUlUeP7_tgsQ5Mr-tJxT}+yxK#mUe z%=iV)umCkMmUY=4eCzYVLwJL(#klH5a{*?z%O|7hbUGoarI*A|?JpG6lOl5&B+-9c zO!gzWl+w2vD#IlKv7sVe{8GxSIiW3CUs2M7Fwe=aG`E=|sD>=#ZIwS5sT&e`GNW1T zQ|C%v1vu=@rj^+TO=>zsx#5dXG+UB zwyv;vD>=-$mZqwdyvkQ?7z9@KJn_E`00qTGv)#13R`PKi<_aLC5ZOIajw4Jmf z@jX1;D`4y6tniae7`;RmED>Sa5gdY73Th)u>z{b{|!sJi3IOgE_dH!=UY zRH5k6z$-QFJTXc!?~`#gk*fo-ryX$TAk5Y5<%EZ^Hf}6PNRJIZAI>4gsX~}%a~X5- zwIV|rp$N;9i|=?kxbBG0G*}=x8#QI39X zy>*z%5gomF0qwz*EVqS?-z2Bq%c6K_g2DLI1o{s;3~$nQc+DnM!^TpOiHXdxVz_P* zG^#(;!~Yumgp)0`CLy-o6L>Tq8j*vjQ^%i1Vyz)|bU}+qw#-b&D@7$;f*D_ef!fj1{>7_9;@UNu&tv@!1=xULKUeT@$cm~XWg zfWa;Q-9IJwnL+d<7|Y>MclOy})&FizO-)6u&f9k^4qrWG#->9d`DLRKM6+=ba~bh^ z#gC}YX%W5P1EOq%oEdXtzDO3epOpQc7v>g0+dxDLJ?mTb;(k8z0ftV&TH=T$eD97~EsRoVKF#*h)9?>9shQGM*DC3?-vUJ09NHe_h~AWCD0 zV&jRsB)l%&%vEYxYJTDOm#mjbgKUQ(cr0=YlXWDkG-ZYEJtK;|V%4iJUk6{i%hvE_ z7atJj7+`e*oK9Isql^}E4`)SZBm4|cRf2jm5w*6u2qLCImP{!;l~wvFqj}2?y>c6f zqd@}xd)+~(!)z*?g1(5x=U-v+jS}I!0h@gnRGTbWl-Fr5*m2QQ&ccW1aNdplFuKoG zM~83uYT)dZmQm^}{L<83Pl=jDDj&kbX`MFP-_OWv)ISm@6?E5owKOkaFPeNy1v28`2pS3cl_1r39j4&%>h^TY`vi!b=rA{Ul&~)OC3WGQ~T4? zU98ELMSmNjKONDdYu3Z$rb)A<`{5Y}ItE6&)yI!*Fq0J(1yU!4%5Zzbm!2ZCQmOhS zOqknxI5a|_!R6@{zHDExq>L5(6)#%MOfJBgjCD%N^eqqiPdYi5O)B8wJ4{B!ASa_F ztGcK@xUNqy0!#u8X!RuOczwQ&So8)v7^|R2yYh^DYWq>6F8o~@Hzv*4QlC83R`IuG z_#B-~S`tBZHAnePBd7MIV_%6bUhr-(>VD+{Dn1+mc0wSwcI~y6g}zbV=tM2uCU{|XE5oN-0qYw5k(Wq^JcJG_d zB)b=ysQ5L-UAw?R_ogFp=&gfo%xMCv)_W7*=3*#Hmvz)T5~k(eEYOl z?ED)`YSFXl+Qs}LT6haZgvLNIN_atKM2xI$*IesIG%^AI*GDY}*zQg?q4V=HL?kUJ zpl$p+qx3eMUjU~e+(K~a9iWJwlbV5s&BB0s)*BhDS&C1ca=C2hU9O4|#y^CAb`4)~ zrHv6Ky>L*jTn&g1`py%bt1aaO(6prhPa_e!eux|(L}FnS+zM9EYBBrz%RNhh^;EhZ zF+^tRP#v8(wDWxcc*I@XuHtMF@No`3=;z|2ILjhIKhoq~5y_GAHMl5}G<+J{CPwh^ z4YnHI`-JaGZ%s?{Q3{4&F4P(AT(QA-Xr&@H zCK*%(eJVN8ZfD6m|K+e;3}wq_KWOW28hL_fOxKq@Vy4dl@o5t;SGF3hCc^6(*(kUd z*ef>JS&PFp{Gq&EqH>Cg5tZlg& zvt!(kB4W|G9b;j^0IUg+;5CAEWYI|2v)@f%u6F{3A(1g5;t6iB(*C|My&5mp4sbdO z&+-GHTA%aeF^@nRU$0o7@zzK6rixuCL!pzB6p`fnTFo)vlZukk<}3g-Ab)YJb$zt{ z2fM?_RV;oAzr#oJS)=;RIBPYGr?c?b-Fl`34t!~sGP7bWo6g!Fia<=}VDs7d){_%A ziU@e*E9?>hF;_$e1}k}qFWbcGW)&Y=h^_A?uytCS3I#?60vNO!2W-((W*aNyKQ3=c zplKDpx9(y`UhFf+5VxgNG}10$lO>n2Z2T#z2h&P^3|J#Dan$rbP7^Z>AUi%9vdnr? zWRhIKi-3`!B=#cwObVs8#G0wKO0GlOhh^uNYqj={qj_hy?BPJ4TECz-DPKja21i?6xhi=F}14q5T-+ue?a=5ER zI&NgU`J<&IV*s0Rd}JZ_$L(02M=P&D1KjA}1hCG}(W;Cp8IVzGRYIn0^@?d6$tDh1 zb<=+)lR&77$&w2~l{Do&FfF)ZO*vR_EgW~(6wPI>Y?~>>le|}&dRGxiT))(ppqLeZ z*?+euA$x!J!oIX!?_=TMN6XxPC(KLJtkxGeP~WzOg6=P?FMfpC4dywOjV!diz^*qf zwy$xd@PzwJLGc>83T(3-JyT-=92uzWQZU+wElf;|5#j92T#garYz=4Bbrv46jWt`c zTwFK=U)6cqI64+=q0@E3aeSHzLGi9?R!)0@G^HBpsLuC|gIS_|F4py^@8c>lghg8UKZAQwgi`;AF)nc6^ zFf@X&0yg}I%hH*&w}G9l+<;PRhyF%hcT&aOBSyL`Nm3pm&5^=es8&C&Kb3Vs+&deeHMBImTB5@oj>CHGgLEBJb=^* zbHp1Eb{1u6k{@p^Ibjc}o_waq4ON(XAyU5Qb1IE_SAkzt^yG*|O=7vAo*qv9psCvh zi6f$v|8*8|6h-G8i*l|#S5*SDPy6Mt-90s3{^p+H_!1lIyNvFpen6XSq+mSEC0>Sv zAMYJ8w{SUqCIHNG*9wBDzwxiE4NxX<SG>$h2VZ$e>*p_=(Yb}TNw|LnU zHJ-Ifu5AYg=NlcA%54iRHYcg5GQ8m*TDTWqQ=0+Crw?W9jI1H$$T)Es^GyUC1SUlw zx4OnPEk52iop({#*Y4L6Cda&c$BX!EF?C8pvIat_d!OE3FuNnvbrlY<;#aCn{ zH##(`hVeRfUSn;7`+rK2%gtyP>FUi~)2^udwSiie@MFsOV4je6iP@NWZr2Rv70_;@ zOUg=7W~t5ti%irXYsq&pZfs&fS%!6&SMisavko7X3T{+U@XsX+FXqXKFv4XoeGqXt|{zH(S-%p2NKH`Z|Sa|!qg zW_}Y*XSPE6r|kcw3xq;wxH)Rqn)I7*!c<23U+=D-rCkt>sj5S4(8#Nmdfh=UXOT zf2E8pMIn4Rv2b!jX-XZ}*F+ht3K7D=c~6i&r2aNlX}Ey91g&JM>(s((=VHR$j;a0Y zj|tq=w7-S~eA^b<**8 z-FYOkXfx*GazdjVuLfVb$p1sj$Y|QGN?{R2;5prq1YG$_PjjGm`iHI$SW2rV_lu3= zI41!vXoT9mRL)dhkWn0aAD_V_4TXL-Qo|y{3Gmrk>Ok3cUm~h^MK2D(P%E{kQ-}Sr zR$r|L^4J_dY0l`<6`4|~ea7PDb&0DdJ9-B5^5+zlAuk9C+E%Ki3?Mk9zQ`Mlgb!vf*p5LJaU~(^m8Kgv$ zsaJ00R&wjW8xY7P;OD^A%AcsnhPi#-Pb`=6A8>e+CAup5*k5Gqa(A)s_1TEn?`T4O zV)CPX7ISS!C(pk9TkDc4;Tp(sScY>8e*B6T$A$AEdZPn1%><#TovUo2vCAOU4zJFE zRw9>e(!~d01R0?GKzNVp4Sd)Q==FfUNyD|CX~@xPoV|seYd`j~7>8tq+mpO(k$c(}1aG zgWcojfewLYM-vxA1^orezMR=6-`xIARs3@aEuJ57Jgp|Qx;j}M)gwhBe`f*3t{r^) zkd1;z+@eW4|n5)+=tFSuo|-yj08cC}Omg3fG- z{>e;=cQKq&GPR=vS&n_jZ*_cA*WbkVkp=3sW<7^nbx};4RFn*+4!;+19_J}=cAoa` z55NTl=_1=_rwHXpp(Kgu^uSc;$DCyLlZIj&AxmP^+PmLwvDrnABo;k5hd zsRIew zGwXSjk9$9VDGnMSk9>QqRU+i5!PdLN*TeJxBV(kUR;I;&q(uwEGVt^22)GtSiF6V{ zIhf(=-rIYPj+qrH+1Amv+oT=T-_ShDR*hUd48 z)^pbyIL4zi&rSI2%)dizo$m_JGc9${LB{PT_16dp9?BAaT_q*C|(#RGJHt1G>rpeJ^4 zFx|(W=m>xFPqze1%AxR^98VjR&O_GRL2tZ|mfQ%F(V$O)`}8|(ft-tX04I!oqC21K z-y$e-$IVz3?PgfON%LML)58IN&9bt?O-Qv7?GymI=86w`84Oyjr7|AL)pSS~V6*6a zRk9dTp)t=n#rYw#A_3KhsB&V6o()Vaj1G~NEMST>6#bA|l0&n!G^HFGkV$UzX0Dz% z`i$YB36a-fFHF{9Uh4QGq+-y*oj8{B?Yc!hiWWjvFWcvFsLD;#iIti04NOW`XM=NmnydGusaqK0ZF< zK+FH)N34^*yaWd0iwDYp`J1gN=LB@D<#zy3O_l8g-KS)h2VDwonM|22Jf3Lh=55u6 z`xB!|b2-Ybb3`H{qTth0g(`S#99ebJQX9c^MhHuTl;y7J%i+*KxJ3zZCZR|5 zZJdukr4%xp;8vA3>6h6GA-yPPE;E}buTJ{SD^Gp|PB05W`H1Y-+UO91UmZnjipspjoXR#Cl{eGp*Vw4L@2 z4k9!Kk$V#`Iu4hHmhD?RLkq`&gXSTvHt?4^zCoL?XT4){Qx&=_p<8UsmO z-2=bU0sXgU;~&lNO;REezR~n%S>cl-Pxyk_2=vW(rGiAUFk;>!@)OagDYL~iHug(4 zs*CdQiTOC#-3_EqxY|;IzBZ%301Gw$r{22U@NS&;wvT0gQxfIn=fAichYmV6r6(ZR zjH2gqr5BP|+clEU#sb)c9jf;VY;^%bm)!A|9D?ear*Mbc`|U$%fmSs67aaCwK7#rEGQ(H<6*=C zG@$D*HZ~t_=;g((WfBkPr>Z)zwal7YZ_0Tiq`uYt4r{Gv^FY^3I|W0Gy1#`JG~3ZQ zNIe@{wi#QWZW-J@*XJ!kEitv48$TWs+V=0vVCsP0GIGdwJ z{ddri)%@K~2(5OlS2?-3fQb-K$z;*YosNC-s;2Hq1;W5wxH`vW#K>dVnG*wh%x^jFJ$l(0HUqRXXZ&kqz=d0RNz zlZ~Tlfbp!)>l(n1F-(iI1xS~ND1vWMiVvymZq#nS+um?AJx%|5^(96I+VDn4-a2`+ z#NE{f26NIi8AKBM^Vw4sWB)_n{^4&iSA%wcuRaXpIX7{-KV^nWNeKb_6lE4Rhb$2_ zeyzjr<>D%j>8>uo{HiVZNA1T8#Z(&i8|RWc~wo|DlrK&Ov?$kou+TJ80nXQM+KCOS^ z&Q~FCpsSMH)qr0`1J##vrzr>#C>P(hQFqecBh7P#v2y^o<|lyxA&Uxor*~P@D--pS z@Nx24K%2qvaI7A6*l3wm*KNOlRsF3uMD${zNB#l~q0pb3W>10grS)dYFcbfK(i})D zzAAb13kf4!6ZL%f^o8Ki;IGxMrbmh*j?-8}l}mX%7DGU0BX!!-GvBPq&zareqO0`f zIjWtx(>s5R_-IQ;G(CQRqQu6!(WHM>lZ_2d*3j5wWVHIJ3Msc3k+$%e`Jcod`AkHz zMD21D*lVzIb{D=knDKn&EcOVD9`CPDFl@L<>baelonPvmA_nR5(lSXZuXYcU|{tNoi;HW0%0W6rEX6@ zarRpqv8tH-1wL(zaS)(2TD_Ad$loQ#H?fUHq1U_e zr)hPaYecY67(Wd8+<%6GDNz*Q+1TM2>Hhn|BJWo^3ome+jUZ zv1F08bZ5&V2)wAsxl+EWdSTQ9X(1e_B6ICWaWQr?k}uFJ@GWNUNyN811AJHL6K{8e zz*f(RU6;7m8vD8WKRl#2HkM3=EAAMUXeu^Y5C6UUzhOQG1a9&L2A;qal7RK$`lZX# z{rwUXWd=g0UUaL@BTEgl+zp%0f~c64%A6?(1eD;2O_q<9b?0sVX-FsfG-N*IAhLKxrb%wZ> ze;$WkvhC=XWE3S}1=<Av?Fjy~1l`v{(rqnwL+W;R zTn5Tl$IBk@`ID{@Sk+&prq6nTUJ|WH>4unvG*!Y}0!Vr0gr-(bWM|i6udY`viTbLhuhO@C&o7H%qOZ zgvP{?3MDwt&B?%rMIb~{p;o>JBFasbR0_#_-9Dj47N6{()`UIRGtx|Z@ZacE;|>qU zNoA6gvS?moDw;OGAPS^SYuP7Z${i`^7e8yOkJ zVql%SWkBRYYV z9v9BN{e4?!C#N>3F6(hZ)W;yA8Nb}`DmdvCazTpYGD(s*sUjT0S^$u`sh`L{#^V3m t=TrODTH*`X5g&V=4djIX^Y#CI3|=Ga;p!WfNdEb=f{dzkg`{c7{{d#99Pt1E literal 0 HcmV?d00001 diff --git a/resources/profiles/Snapmaker/Snapmaker A350 Dual BKit_cover.png b/resources/profiles/Snapmaker/Snapmaker A350 Dual BKit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4a23f9097b23d265767f275ace4e48481801c4 GIT binary patch literal 217426 zcmeEtbxdT<*JcBQ4>s7~0}Sr&GPt`8ZiBnK4emC$`v8MGgS$I4?(Xi;+q}Q`%O+p4 z$^Nt1Y_gS*?r^K?R-IetoacE?-7p0?aU=v>1ONblBq<@H1OPxzzW>3&fdA91E}j8^ zQpAxI`KIEwbkYW2r>*XO{&?zW(GnnLnPiNVw1Z~FqQTx3`jvqp76J;Mm=6$Bkj{Ix z208C(Nu~ksAGqUupu0-^nwFSY|EVeg7=io&wkC@h{%cZbwXtF6hDLm0Syx&J&7mAy zMw_RvXN8gul56bQ1?bzO?i`=0^N~tsE$Df9{T>twp3nbp|A#E#cPKb|%h6=L+<^2n z;Nq=SX^R(#>Pl0Hbu9~O|EvcA0HnMgSU%;n7oi;K!LFQ794w>Uo===C)ms9@;Q#;# zZ}#Nas}mdVO|Rm1JO05u93mC~VAS%v;Q8csH!#cVYN&F{4gmO)L$KUny*!?$ zA@%r8BndpWQ;%q|hKN9`C9r~klLX-BPL-paaY zzO@WT2Hxt-%(W+v%gN{7De!W*A;zfighD&!uvtVh!L!qr2G7A-;t+g^8sao9hga;v z;oWu6kN|#u!EXQSuV3;Y07+Klryu`X3-Z1%CO0L|g+mPjY#&n?D^=LbkKkDrbw?}Y z=jUhl#sTzwSd4H>td<*21D*yz!7(2IfKC}PxN7UurTTqc@7p;YPF%p~%yH*OvF{&c@=KrIOJ9K=kv7pUr2tKd^#Ct3z#c^*P7P6Zpj&%G>wVjK zq2BA9UgpL2{mG)Rcr<>l?_;uWuC4F$GAhJOr?|kA;!|q&W9r2@ETNkp|Ajxw#&`Km z*SDGMH&*Z0W4-JP$G7qG7rABAoyVy42P8*bCxnLy?=wg1pPnO0bT`KxZ^sXICd8V& z4D%#UF}IcH-BSSlH~Uq`oJR0o)d4+x;SXPgMtQOIKGurzb9>kfIaK%ARku?pLdDX` z?2Zfq@~mAV<7ePNMqJu#J=SKwo``OxHt%P7(ub>coH<95N+iirpu^fLlFd5y?L zaytBC3|x93J0swui-^bcuVh%;V6=HISFEQW_I=;>$>;Vg_-AMy|L{=A4MY>?3V{H?9asj_;IDwkFzGCT$VhhQs`e`BxctO6{gE6+Ug-N5`#|PbuNG1E zuKFOylmYaKj2T|SjI-Ws;!660Y?fkSooIQlEp%(p-Z{*Nn@9s5@m$x_C1~(&`fyYK z4enC05Q9Gm2attW*3;7txD9nx)qt4YS
    dj0z-%$TMd8Y3=@Fm9>~^9%I#ICQ9mz;H0AfzgyRl4(O-k-WS`52%t65O$O- z`--MTVtaKf0jRe+LE811^;SsLKju?08KkkZD+*fM;da6nNlZXc5hn!+xf=;MFyT z3Q&L-IEoe8#2`Hm`jkVA%3NLr7@G0EJbCHG831yYp zZG{VQ@|u?Gpp}jcIdA@Gqa1rEQAn+{3fCZbx)G-7q26{ZV;k(xy+H*w10io z2e}V=>SjTv64$|8$crHV~0!&S=qD>H;JIU`lCs9)I_38fY3HpR{B^ z0@FoHd;ynEG4$wS<7ue4hwzSgvZ7^V#hbMfiwgy$X27|0s~NJ zSg3k0FM${wx!mWdZrS+Eu_1sB_}NBbCZ#UvA$9sc+c$I|H00X76`rV0hOO`y9#?mw zON{q$7;2zDpTG~I2W3Vq-<%TQNP~wy8&;}M`9lrU$J(U4g9IM1Kw+=$riF_%BrpTd z6|!@b1Q()cOG^URHE9R6eWhsezBc5>O#xSn26kENG}N@-nhNK$z?RgeRnQC0XMr%r zO$kG#nos^|IG~E3gYK~wf5w3X|0KX6P9RWc=#rPWUGyZMkZaPA^M`|!*iPpmv?hUH z_Uv7zpT_{cN57XM(a>Qslj9ipiNdIImojJwA81E{uE2?;k>nwbYakAW zQm{+AL+8_p#+%bMd$fkqxf~2?Kr_eTHjbx5l!eHiiUcB)d@Ch;Qs*$F;)tyMq?noJLt zlO)45(AjgFS@Gq=e=)}TV4|_s65^u+*wsN@e);=q!`^u@q0*iDx|fbn=SC8D9IPAX zR!B*lOA-;ix54K!l$v!(ZB5X%rFO0)pv>fOA*wI6tFG&+c4ut=#N^~>c3!gQ7q7bV z{a0Oj$?nF&(uH>}T(~fD^%%WI477dtW@Gocv#065-+1$NxRU@tY89ILPjsPVxm5^D zmu+OpLI`Rh3zira6Vs;YZ6&pGht>kr4L$dR&VT7@OrEZTG8>3W>_I4lF;7khu1qr> z&Fvz=4agQTX58oJ7wEHIx$gsT`^|U4TSs1lM<2f*UVr0NTI4Xa;2YogDm?tq{c!Dd zH^P-yUIQC9Zmf=rJzR0KK+n~p#rjK19Yl7g!J8Q}$(mp_JvGH_9a+ish|SYu#bX!@ z5(rU^xsym+^{Az(a|p?4Ap{w46c)7PjWt?3FiNzy&o&Duo#MEHgy99Bf;VJ=#`ZC? z()cHA(QAi6(+>50y|8FHyrm%=$)_4JNkmF|Q_XumK*(A{_UTp)Gs^;s#ytU43>ti#N3k4r^w(!+VAYRQI8H+ zov+z>xh!H_hT)X`wa$r3Qd|}uL^hJjN*B->A0x(>EEubMhtn#(G31(-r$B}V{iK+| zf~+NMs0Od#IUq(dmjK0(6$+WIJG1Dr^JeyYxqVs4x<5f2T$X4U89M_S{f+m(o-YM} z462I+cJhdL?W&YPx@7`EEU$t=Ar_;sLW@fO9GGDYVr{6-XwH1xgB4R+5a9iS>kqp4 z;9JgA0FuCW^%+o?jLf9kY9`5rs~1~lTNbm-5!3OQn7C9=b{V!#ojadwFU77dYHDdV z7eUfED6MGL`-soI6zteJ6U))6JO*rIa3P)mE2e_3ZLWv;g?YCBtM0$=Kk+bp@9~F- zt=_xm3fOn~RTY@LlGZbovZO+j&tK6%DN zeXc43H?&&u=f^sopZ_oJ{HeL&p#R9Q3=f<>d+edN-g^D1g9i`xM-XxZpnp_fJ`T%E z(UM17)HXS6Q|Mr>1RCCfasdmcP#Yj&nZ3jShdkXb8>3c>Ieo8?rB<1(mN6{RQsNi~ z2#}YJq!fvP2DwBrn~yT!#R+n;mSkod7}GmRrxxpNSh7m17WGr7&Ovv47Jlwie+T9k z&cHXn^%aV9#qUE#`oRb9gYQ1_0PNbm2X49L4%o5d68d@ArpBL%mUvTB(*)9H*Q}Bu zOZGi|_0`wq>v)qw7YRHLWcd_CrB+?iwW&B?Abyv21pnBzHJa96A?|McUeJ~1w2IAobd1Y`1u~E!9!viIR;t_JCtFtV}dhK z7sv&|Qz7R?&rR+kj->;t4|ds5u7YGME~GVY;U}>a*P7h!5o*Jop-fI6_}_T0)f#YI z1}E8xCV7qPeNWFNb}j~~ZEx0o*$^l>g`ne2NUT3gYq%)k>o81VFCxEhPmoF+|j5pCTf?9w6N7ikF2THpXE z%fyCUEOa{bo{Pgpw$lp*OjaPdl$io78qi<=i6axCSOCr!w%1 zzVprM+zhzu0!*Z=UbU_QptEr5^l>VzuzLqkkF*EKr0!YNx0iJ#f#|wiOl3S?&V5)h zoE;$xPx<3?))^Si`CaVLU?H)zyhv^wH{7t_3YXl2+=@UArji1j?Ila|#kLtCa5cs` z*DY%y7DLR~^1>usHq>vSN;N6DvD@nQp?0V$;R~4r#~5qbul3oho|DN|d+e^Zb9aq* z_rwkBb{xC<>RZ0GaAE#SuN^-8_`!pZof~PVM*#Xq=5_70w`{0Zu^n@B7X@gPX(&po zRPmWqT_#E;78d4cgJ=}36tBB1aqUhx zc<2C}ICYd`yDKnp=+KMs>MJk9)~(y&_S=69c3-xaHY8+8k);4(2=T4w=jXHF1>WRH zhZ~lty*)9}C7A|+Yhg`Xt_zjxQ4Xukq2ZFxc0Mqrn%#ndSQ?l~)9sX)r5bE$XBPr| zy`)SgyFiz1;(RVi(o+sZ-Z7BDH*RBV*u!wh4jJU9D`YTR*m39vZhGiF?$m2KvJ-?x zGiyQ{hzv#t%VNyiuW5*o;+kcH(R4ihAG(j6YDPt8s2gkbLVsqwW{v6^bQ&E3aXcJq zWS=qQ1Ug)>sAmwlh87KcPp3OfI|_C_Ly9CeZ702FN($8UI`xy~WJCu#n@QSSN}v;a zKpDKldx*5^i;D#GIN(R+L?IhyOV76IyEP#)C$K1Zrc_Vv<8@oyTNN zScXv7o60rg>sHdez_yRf=Hfks|Arw(R3yuZEVAJ|)r}XLI*8pZ9HbR5aPQMFm1_QN z?m(V9k}_at$QLGCq9Scr3R51ekWo;Z(nk55XnG|U1MJ#?^8y@$PJ@Zq710@kS~!a` zy{QYq{@#gQ4Vj$4*wmOy0$8$x$M4kg(}4vBX=}cg#3?DRIwzqH4p?{%2YkO^cLo7) zqgYCbog$%GCiw{$&Z}lt)6d2|0h#TWUwMIkp?qcM&dcD&8*YZHuDq@)uE(mslg^?Wjk2iz^g_6}&RkbkFtt zf=u!O$;d;WJ^Wd(zwr{>aQz3M?k}Be6AdIgbq`@OhdYTfOF<8TSm5FJx{wkovsr+| zyz3lEv~G!>B=vuX%)!GN9FY5#*KPCEd*2+QbXFpB3#oOLtG{eCn_DKE&0mt;`1clG-ooL{)`)kCko{_U4u8Vw?j0Q6t-*QRxwu3cJOYA*MeYTlT-N$7vuq;<6z zFD%Z%x^($M|7+$J;Lj|hJ+OwkreohDf8jfw|!As)c_WoWF1mUO)UI zy!Pe`w4qc-1c%>x1K#?*H%T9T?RD>m>#nITz-|M{4i14R zN+EDl9~kr&mh_bI`Un3613Ts^nF>7qS>)I23n0brqS2V&)> zg_ZeJGg@IEWdT^pJ})F0OM9%^9LMPApng{iGxZ1#s2i{DgFzUixMX3FyxQ%#G=*Qr zAg%{7lSg<1)8;#E?7X~}Xmj~qsvmDYtca%(&N;5a6PoIFc@UiNGE?f@lP_ z4AT|`gHh~ml;j+ZrM(YOTYW2uo*db@mte>Ok|XNfxAXfe_N*tufvJwRM-joZV+MfCW1n$~w=_&sER& zJQZfR7qIk#L3XPG&CNzj26GqTrI((k)IRLKZQZg1uD<#P*s|f$3Uq4#Nq`O2UNSj3 z$%&F=y*J>w5{uMME*NPrPE!$MR@f#Ry_&m9tPdMH$OEXdLcAu~h_#eVSRstSN8VFV z(-4lobA%)<=wy<|Z%0**wbLos`b5_ZoKKKi*pyATwYxI z^4)**Zy&{m?g(m*0Q6t358i5Bf9CWlA!S|K)Iv%@Q_oip2;gCs(`Qb=^wdmxuw&jT zVp}%dY}6n>2;;%PxHPwf5EHAS3mbzVCn;hAoD6TmZ3E%?}`ot|0)@4w~_xaP`R;N@2iz$>pmUv0)0>0F#X za|-Ug_Z#rtM;?Utz3*!H;0HeplW5!I9RaakwNYTZ5{IeCDs6d*o8giKiN(P{7`bs| z<4_OX@6lkU>6*1Y8&ZqgoRpo*?6Mri9g~-_Z4j}>zO!9iFv$UL^0|&PW_ofksR2*; zBT#6|<}d6vb{DG6_4KJT&}=n`=|kYW-0LN#2$G3`I%`DH_9pMyv>6n#`O|SqaE28O z-X(^VY*-|uMWV{Ru%nttr^SFXRyZaNVRTYp49o{uy_pf%;%88BrGtZ7;Dju)mzmcT zMXl{sv%#}=J4;{?M9@7wEbZE2F|{a`d?urEY0f~e2LiRy{C?R!FO+O4HxS2^?!<(7 zGgB0Fj5VKa>Ik9i0E-kSt~OE#sHR$-1|S=KQZT6ZjBWl|3S!N6D|0~5G`k?{gofUz z9-cx?ZAx(xlF<6D@%b*5;sVm z=`k-{oU!V3HAEM#okN``&;e8MK6N_E1fDxIaIMekQnfyLTI=TKF2GWCy!bx&EaUUE z)LR5M9J0-(bOsSP<4wCz}LPW6fGI);hG#EL)vVGR0Vj?{!N`Nj{A$$lj2pzUGn^ zixv-Qp9rFj&J#R&4kY^?TlcZ!>%~zBlI5jn?!`8*U46?8zWX+X;){!n9xlj~1C{W$E~cO|_4{U4x^0=1vRwlB(ECMs});CLtwB~IiFs3Rr+ z=*Y3p=zh^B)~7G$Cbb?7sBzYV_!JB8;z0(?K(0|Xya#pbD4wlKI#pz1)yKFHHvk=~ z!uK4?@R`dtJ9C~;R=qzUfQHOFcOFVQcN#R|oi4y2HgY^AZW1C$;Uv}(h{-EjV}v$NoOF0CvG_j!G9@3JezpfAr&bx){V3d(e@U2?e4wIG7a(iM}9VGwy1WE~uXBu!R-4qV9A0? zqTKslL3c=&U250p*qvq-4(~a>k4s`oOTI?RqPt8!lgGDbQYf7j;6y)fy6O;JZ4eA< z=fGuhuUG?axjT$nA?7xZC|%&;TaG~=?@m~^jk+7wjR;99RAWg~lR}H$n7QrvT3C>) z4Pa|)ALUc3`9_(BMWW+yZGT9*UVK)|Fc3LMp!1G^4m)S$#DnWk_50++H25i?&xC9K z;=+9OeNMh-V2O@M08rPYx}ag7@{TF#ysdG4^7EB zIeGNAx!9-_2kOz>umUva%ytf(YxW^#fu|i5Ige0SVSnhA=LtYt55Pwo@^o2;Pc`{9 ztNxHXgv6S3B?@Vie9ARH04QZQan*Ip$CPpjHY4Ed84xEM9ng*|Bf@on-PJP%T+9+< zWi1Vm{3B~J$YcRXUASg*ZKK)x^mupj(;t|gnY;elYrns^JolyL<-y}`zWKsSuf6tK zZv;a}0Q!dyKl|dEh55PE?iRr6Vl?l_oPi7iT!&=Cw8YW7+9JwWYuwC8x9c+xQ;q!2 zB7({5l-l_9h}f7ra6lR;)6VRTBDpShV4rP)aV_}M*9MGQ4hMbEFQ82ZA$p5 zQ3hhHpvHn{i(suNQT72+jJOU1;?Kl?XtWxck2bbv) zLmGG!fVa4?M7u_d{AR}_prvQv$y&)Ktq3)+l6ybrwukC;;j^JVu)vF4Yl-)-^J64ILJfPcObS=K7C8f| zZRC&-S7laqERl-zd0j1y5`-};Q!s^>uct!Li$XlVEQDVz-JlPAJyd& zBU-&LYQM|nVJav?j)}Ms(E%>?sn4YsDj`WgB&|V(_ceJ`tbr_XN`PbusnQAO_3tz> zlh-L^$gvB+G850%ca8&|Xn<1OLC7`PyX0&Eg-NQ6P?e!o4xfY)C?R2316WKFsv$>lx6>Gq6h-np~5&CF&`oPI)f zJRw>E9p#$2e66*eQbNOWKXsRqQZ>j1pzdaq6Cci}6htp`Dk}M@+Y2(eq=8;ZH|{c5 zk(8KA7@*OZtlsk@ozB=t@Zi?0Uj5cpSKfHv(sJ)>Pd)X>{Ugum5rF=oc-?f1l>(cXPYgE>7=q{s^Pxer z4ac z_`rQ|)6KV4K>7v(WB5MQuCEp#lnbzpT~(}vI? z`(ko9F;FYoRBXd481`}=+vHix$$zMGUbTuHR_5pCsO2q$`1Cj+Hij0a-cIbxpY4U|QuLPVW;_K#ZXwodcAnbvkS4{G-GH z3xyzaFn#gV$M?me0sXYqR~!eYLF74DdQir>?j%99CQO{b{$JNfeuQ44+%jvqflPE6Rn0h`HoR%m($bua6f>^0R|Ri8C{ zwtNQS;|hYwBuL`9=wdoCE7^K41F(=wMO50OU8EHbBuR4bYLVu8$dIMJ()uj6ndxUo z8%~Ch0-AUZCD^`z{j=(R-%;JWpX-iKeeOfI|M=P7p!dM?;=)&tpE&vLXPRi_wx&L#xke)QK)%XDi~#LYXgdAL5n*AY1RKBtD_6C0j09uPSnZ$ zm8omovMVe}FmF3*1hpkzseP5`pS8uS3o81vf+UjZ3P|B4xY6K7jZDd^H4=@yL<==< z((He&Yh}`^dK=g=(#O~!SkZoVG`JN!vTw`PuK}!Hy&nF`kNphX_JJRVSKfFIo_zYj z3c#PI^LFO!X}J6DFT(@hxexa2-3RY~|4p!E%Qk8OE+C^BI8GP=CLaF+vecO~2>v{5 z%X18MquPwdXcNNs#y^M9%FeMwdQ;0AwUB*dC31~l-jaqa+8bcSA`B^lTV*`MvJ|E+ zwcV2;_aAo`Iu7KZFqlB>RJYycp~HUPT7}8;I@7GG8%T5s+!1?R(7mYllh4>Sk|t&8 zm{gd>6lS7DB>Arv>`|N#F|iIgkjy5O%!HcMNjen-9wadk8MYAWEUs<-79NAgFcj-B z*_6s)L!K^sHm!9KHH{35RhK2N$z~<`$rzI7amZv;DlZLLd^bhU6Z0we()hSpm2tA5 zFju0Pt%Y33Y(W$)vQyT{vE^3_8D%MQ)SH=|bbyP$GgYau8yaWuowi=5;{|@UDzSOZ$yxd$&OlhQ)E4G zE(Z;IwwXlGkQw^=Wln;`;t0EmSYXtdXq9b1k`_5v^N_Y#>#(1 z%ZkN9iW%~uv zk5By6%&OV>%P-q=aCy*w?CjZhzxL2W_v0YqD8yw1pnou4tw!U9bLY+`y|2^ZfuY>s z&K7@dN0Zm=*aV!vaE81)`N8#)?v-@0*oMS~fk4%;%pR(If}MxO@ZU8gfZnD|jHh}~ ztN*T(XzM7`hfW9EK-smB0V!TsZn*vi0;LCEdjwY&%t8WZ$+ma5GMnfUQe zS8UJ{yRFV0ApAz2&5@;0)-d-9nF;nbO9 z^fR!CIdI^6@buG9!ey83h1+iXG1#_!JAD>xf9hh7Y%{(;rV%1zh;35@UdZI22knK6 z7uk|at|NKuN}=HkXF6sY5b-W!Uqag4^F3H)1j78P4V$?~WCM9@A?Iq+gydJ891fyJ zVFzZIO^YWRXTR^Lbw5r?jTlU`Xwl`Y*^{9c=W5{tafR#wfrSQ65U9%r$W#kW=K63xltCG z?qhQrh-SxEvr>ah9s(H<7AZ^2bcxDVYr&(}FWM|ZRs@M=ykDYyU!Ry#Vi_xNgX|GL zCm~A)J5csX*3BIn?OC$aRr2M0*$liK~D zXCBlxkewM2H0wK~z7`YphBVN&lr+Qwf=Y2bftUsZ)x7}Be^>5vT@$Sk$(#?o7fG8> z!ADY{aKVWSbP5YIuW z$rPNk!uQCr!=wSn;@M?EEudRPrm1&%>PiIbj@b+YfSO#3)Xrx^xS1>~>#o@TlVv%m zoGO|%i?fs^TzJxUH|PTKDPCpesB3Z)js{@6Q_@S`lZh-sDJ&>tty8T=)d!f{ zeae955|ChHOS%DsI56$1zF7J&q&4WwnbUCdO*g}?T|43R*WZLghhBxVXU%BTBX=vLstG9?!%RJ8@Mq9w&CqAFlk7{GXI7OHC$~%GgzL$`i@9 zmeEQrlt@_=K@tnGG z#KH&vV9}6NsY^mnlfA)WPzxH+wgsqqPd_`CqcBl zh+?@Ym1arZPH>=@}~3s2$+R1|>HZ z;>nwyw@}bL7mKpDQ1}N;TG$TKrG}IA6ymMxQlX(jw1UORm`GX|eb0&OZDQjo6ezqm zQ4f(&&O-UCnL1@4%>!Q-K5gW$>l8)&j@gOD>N=>t&kMfaYT9@vi#M-yEL%WjPDIC1 z*jxBa9g&E7Lrprag5&dfg^+kjBwHZqf@&^MvrCuc?SEp|pXeBEXk6+~g^oM(uGU zEMOI;=f%8D+c;T#@v`f~^W^v|jV-h+zCa zxfpf2YYR7CtdJZBnPkM5uW2!zxrAsF>gt?sm^ll@#LiAOSfp1VQYGOaksIn+hzNQ> zMnyc(h!=~Dia2-hV?;Z;8d+`u7f4X@_)f9gP6T;g99g_cGE5vo+TH8N5o%WC-2+BS3zfsN?B6Y&~xvsa_bjX3B@_uE5Y%&BQEGB*S)gVG zuUA8O4Nc7*w8pWS&Y4GC^2ugek5FvDIt{y&L@7wIx_VI1QjI`>jOk7!P|T8JLu&3E z712aP!8q`|!k+6zO0va0hACb(+Mkwm&7s97ur^|0agN?QY#w4NXhD>m2K1F*x1L0b zxJTpuR^&;HiFNNwb`DNM797Ls@F-h`fg zz3l4bb#h{VRwo$K0A)LA89Xih;zi_Ajl7=~hGoJr`ubiTx8ww~*mQHh5lX;NCo!^7C3N{uVFk_=8!Rc!_tl2`(#~)hbBSnx-b63D`xXk+wEARX-E% z-_PK#aOU(U23MC?elR^Z^^MDy@BD0X^3L?rvi9F082kUD*Xn-jw|=W->(;&#KKK9e ztvlCTEM6*6Rh(7f$l>EKJ~>9oP^~TPv@wl`0&o4gjnLY8Rwsv>J z(!vtV%*}E#UKGe6`iv=D=sS!DtBkin5mTp$a1qVS5-44Q#*$aA)&mfoOjcHx!a+Dk zeAlMtb~t+QBpmKLMTgbs*!@VefG8vy7`OxPyz>@dV&vw|E#c5?V3a*t!QnxJ_I4uD zD!?1Qc&0%nSXg5s7#<1b;i3}kRcIaAy*o|*52Mus5~C3R4`Y?O(g~~M1kTe@xdv0qwu9bph~qY{Gv$Q zB8f*cJI^&i2R0VhS{{n!Tb?IcOBpdrmQcj)Tw10g8V`H4MAT?=7a8(YQFRK+Df zbp4mD7wO(&KWuW-35BS5OecG<_!yO}k|s{Z{UYNjRzrP!AF+W$`UOrLV)K&I8pLZw zRD@b=bR&9S(7q<`TN1)Sq8^pJe+@e|(%MA$2giprWUK#CQi1^G1v z3ZssucoQDDpwUH%my*+&RMATo{3j&Ehojg7as*KmDC{w$gGoXb*s!J%jY5vz3 z_GvRucIH-4=}aP_?6Yh5&gzkG(#33eQk+(%1~})nfbUE6=7$nz+_Ga*Gs8k=5@{E@ zJ~V3FoSdc0ZzhnUo(%7EN4WP+wzsYOhdZ`!{f~Nj4xHM#eOFUmL)+N+_{iMT689+r z{kJNTzx2yrYX9XgeQw{bT{{nKT)$yYUA5XBZnVy@HhbzSm94k$46gql|A+s{#ls^b z6)n#9DjfaV*w74r|5v^Yx9{AfIA9w2F?|A208;21ujI^d{y@g_m5e!qd{}Z2hIssv z@C^~Xq83rD`f7{|R#ylS5GKI`aM%ZM3Lg`Vd4!moBqm^cC7VALxu|cSJqzd0Uw}gg z55SS5hv8Fy@8d8&HU)R?-i4u1m{SrTqVfgC@ivoJD>exfDI9(t56fiLCS@uMIGigT zN*cjZLKhe*gZNrzLh%oCQ{mukf!5|W_~gev4=N@7^!@l=z5Vvz zz=aF%K~GN~q0&7)y^#}*2-;Fqtz(2RzK@iyMwiHI;l4~`_C=^;#|1pRa76FyMs9>F z6^^NnrV8E&hLYqYT554@yCAb!Jm}?cjS@{G@PWb<$r1T>jHck>7S<~ruoNhR2%zx| z#cggA0{P7}4F_j1P3(0u5UcXTZkDU!m-{6Q(~gkB^B z#fVbprKGWn*i4BXq^mGOFI-`-hZylXi4Kub(N*wkTOn?1d=rpIilW^bKX2;|;I-SicNgs2w-3&rI|m~pBShcWym>S1*uDb>hX&!ZpZP4j zd+t3Fj{e#gz6jT^_rst4+5Ze1H*JE>&QAE!7ykjgf9V2T>%U5`6&sN%?FAJ^wrfoF za@0&y4grfT(brsTHSylca->dG+1)5(`p9w=o_ko6ylcdJC6Yu8)RE>3{8}L*C^ZPr zpUJ7mF#6~r?AWnO!+mO!AS+rLp<^(0NDFZm=UL&OOZHG@;)#>@rbt$H43w)+ND;LF zNe|%+rDP2PZetwPFd%-2u3HreYhef-A7XNPobDUCPgWLT!}^VI=gtk-xpQ9({!*Xm za`Rznez8gP3gUQv&e~Xb@q`Bh2}wwfwIuYqHCF5D)>rGQUu< z`1#D#;~%{F*41|bp4#L+Euh1?dgYbhYX1D^KecE7-rYUz>pBjA%Xd~QbqB)+(i^(? z&T!M$#nGy>>BIDA{P6@OO9_I8r&EPSQOTTrWb_ejU|3*f!h7Yy6uH7xw6Uv5SD6{r za6)jb!M)rZ37x~kAxr3-*Pz;xb(IJaoKO5PU==*Zfl~v(H+bBT9HoR)0Y=JuNRPpt zJRX+sU&5H#{!oPWz?n0r;q(iqLP5O&;?it5u;-w@4pFQ&ICbLVaQvB<;O<~Q{LS0n3-8B0 zySlc*3uitGM~*zBsFT>Cp}%jnsY=|`8gX7LD#lw`MPzJ|u3J5!K@~>H zR!c~+^2(jpv7id^SiFXaeO_1}Xee<;$$OXS5wXxoQN#^cs0i97p(hyVfGF+4e968^ z_~$mY5SzOSi$XCD7$2K>;EV`4F8U&OIOh>{jZu<<1(YduQ9M#De=*Vz3bj0p&$D1U zLSaz*(vf5eaG@pTd>y=UWTR!3Jm(rs2pYMuA)7*nZ_@!c>Chx6yXFEplguY_!B-JOGi(nDmIn!|9_o4d@-dEsb&`?WD8#N}2?7H9$ zC$c1jDn$QKn6Wu19SBflT;wcDb}HBugev2vAME(pB=}iG+F8!4@ULaB;kp8+1N9B{ zPrDHmdSqD&2 zC^@BwTM;C5Iwpo{<-H)hhpjuP0r4oIRgWC2Vm^+7)(q|QZaq-;32qw|32If z-}CBceif#tr{E_)`4P;{%)qA3Ews0yU@?WU6vT6GZEd4{9jBnt|K77u6(=7t$O&CP znnE#6;Vop3w@RODZf=bhhuGXLEfEcdXn=-}3{RK^@%r($p@Y(NjJ)582OgW0>o=~% z0$QA>T*8}me_)%@lv83-CB3x6-e~lEvX~XVaTXhSvGJty5&RkiS{zoA@?H0j#3xaD zlT1M5yYPOVnwfw{p($u@bI3AkhSBjNI&T4 z*btKlYbmrKg;#ivPR>d{E1L<9F;hBOJdEF1N-34?ZHq?-(#Do zctGOevA$y?6{&dr5cQ0s$Ydd8DGo`{18R>ZCZRs}CJMFCso?VJQt0Rx!sCY`q`3q3 z>^um&cJ#sUy<70^#h=2!&^6vv3K$u=4`2KGzkxU2{4tz9{Si2F_?d86wopSfzpxm2 z!5Bf!sdJ0@5*_Fw_>+Pge=}O;wY4=7>K3D)!8mLb%wx_}KqwqZLRi$gE*{dE5m&`= zZB?fN6@DBnB%;k*9*e+aB%J6Zdcs)mq!io}(PB?0Jo3Wv^Ato=X{1y?c^y)K7hJ@r zk45a0e36AZA@@(5m{gSSC+obH8yhdX~wa zXeSmu$N^o6Tz1Ebe@sF|4|Y730$s*!&CXugXIpqv>iW5F% z{GW@@dr=tY40hDea!iU?*xO!(a6DmdOz|DDCa*2s}V%9C1a_ zf}PPr5^qY-1>PS;OvcPIr|UXS2P}oa_=N-S6E2}}vL{N><-jxEfcL;@BHBbH8SoJEmrL-FwR3v}?^S>5~uQ6y1h1Y?;L!qd?9U7A=3=9syrS~sVA&yfP)d7U(JT^AMykg7$ zkA-55EIQ|TA6~C1lxX>h=K>blDAtWA^a?#+M5l58>+L;A_s;nX?~zCu-#=_D=fXaY zO+}pYl#%6Il#lMixw8y2p^?F_;{dMlO!@l{o$CLM859{{!(^B~V zT?MrJr~mX{w0`PSFKn!@Z{E3igwc~MA!qBO~+peSlj*cjC@N}9w{ zvA}*bHberu=H0C@G&~#*gi+YIX#*TPb_9++b1+4K-X02@#vCCq6;AfT%>th@ zTF@byA>u3VEsNHJ^$?D4U8X`E2mT32K?X$--e?{PJ~9_#qj;zv=PU`Wtr$Q?V*^dQL(kGwn0$@ z8oA!M@#Fh~E+04|joivYtsD7cvzmiDD9fQt0R}7BodfrckwAsiQC&q8ZFD81bL1sbqDSM0ub*@}v}Z zYUfpy!ccs4jHp&3&p(fm&_D@pV2bG^o)p2Kpqdg>E|US=`SI|gaXCb8AaX)UJc$W! z^Ye@##>T_)e-qb|3-rt=ub-`e&vtC`wfD$qpdx zR*pi8Xp;@=q!oGk-Vp^1kzOf?J@a{syvFZQu59o^;=VJ(iuBe3SdhACWmgoS6e(=p z98rSm41G1aLf~`2Yq{tb(rDSGpbVE)N*0M&97+R#`Us+N5J!APsT$-rqW5+xO6|H= z3(txXN+}2+bf_pwEKhZOM6Sycz*Jnb9hhy7;$+1u07=0z=m+nkT_dh5Y~pZwKzoAL zWd#+VFTL~hb<#Ry>0HK@YPTUQAX!uw=;YLfoNa~;>krcImS(da{>$zW4bAFlbf ztve}po%xhz54P!?a!rbou-Y3WJ@Kwf%#ma-$a|%?=Y@;)L=39&YrOjmz0P~x$0IGq zt)Z#Jf2-B3u~KdQOjrY-=~%zP@7~dOZ+T_q`;*f%e?2;S_ZLG$LsRfH#O43-0@}U$ z>Z|o%{LB|Owr$zGYfI;ry-iJZz4i4Cy`gB?SFNw#7T*62VKZw;=j|Gc8WWG~%s9vj ztei7aHFIO@jmirPzjtnSF5Kkf(RiOxk|^A9uy0>aLYj-hSkPp8lOj(S(dV3RL>c4d zd9G9mL3AY4!TA*By-GnRp2wW*C!6O94a=e{gSd0Ziy{wLlbR<26%ncAa_H(H_2YHN4jm6vM0tpVsD*UmlZmoA(pV&7w$RCdSS5K;8*2t}L&c6!ubpDLSOG8IP;N@!LFT=kB0~4OnC1z z7EIy4a}>hDE-WslDB`9wH8n#8H_{23n=3S)i~>oRch9 z7!fOr$ne0&A^{IIa*c5I+Tq5Hrp_+Pb%x{*>`iK-G<_LQP=Jejbx=8>qd*VSHQzq_Hr%>31P>nEhqGtTQlb2bPkcNS zsiSc2+N4#~G6`E=ZiWMWM+hB7lp6ts=oV6;q8W7~Rf>nNFnAJ+`4ytAEfErr_f|=C zXo&b?dl(mjXgJcDNW5@%KEl^{_wLPbmhLAip`}8lRB>mJl$`c>*{|e?63d9md;I&`}$72wXiV#l^Zt(el#{V@aSnV z{eNEp?Ou81mF8Do`L$h#4W2IVY@@zI)Cej=J zPD!Z%hU*5UbfUH4Sr(mEgafRheDWzqlokDH<2b#lViNp+D5_hSTjj-^^C&4DgaxB# z=xX6{M8$^yDy1oa1&pJD2v)G5j+xw{XsIaQF&45ZK3v@>3oCkv!m7Bzq|lT?{9z#p z2ays%lOHdISHT5%!Q)7$oWdBE0kCKH0XhsR<%`5>PLc4*$w_$Qr$2`)SFXeU{d-|w z&u;kSFTV&QBadO=&Jc`^O)xSN4>#=Eu~WxFQbvNPIA=dQ;$&%IQY1chp+#myi?PhN^xX^f_zbm{EkftXu}Yl0^%o-HX}}&NE2w}=Zuaw1TdKBZzrC@ z>dPDN@7#KTa{`ldi8CrCeNpnnPF8bbev=vJ4!>qnfY;*17hep`^!BiZ7Kz5OeS3G< z%O1h#=wmo=ppOEJZr!>S3eFh{W%~51uMqv_Pyh8**t%^i{mkv#w?lDwhxpB!GRuo~ za$=GI3Ze8=Dw%>JA~vqNI{rBmWglJ#{vM%SAVL~><1v&7|JFENRqWLYPGUr%H(p_U zAI@KRhwUrV87LNbo*P;3)3u6>oj8GQY|NClm4FM-rrEJ5Ir*b!2B}WdUJ07Ib*CSG zDgSf=uf%=G1dHf&$a*tF@=Dew4xm&E5Cu_fAY%hRI`)vF;KeZpQ#S_(ZbEnW4l14} zCLYt&7}w9t+%y3$I2l4qz+JocQ#L`tbSf;St>ceS-L!}Ehz-8^8F)&)z^8(bKZ|Ll)3q`N}tU?%T8X3t<)Ss#dFg;Rft$ zZf@!h*S#@~r^;L^8NoeS@Iu)>$84EqX{6ZPl5G>L`976x89rhKBBiO=$tZ zjQa!u>gm}B7tdcyQgLU}f_$N3GRH_-fySp<V5GNXv*!;%jA- zE0`0iBWEvB%sz3!Ds{>?^`<$X4YKgYZNcg9k*+!C;)0a(;jr$%b|G}yUDOcZV^RTA z$mWk+>Iw-i@o>0!;R+l)v_CW%2Vm>gQ=!0~2?x$y7#@76<5n!7P`uLI)B;PP@SLBW zp^+v9c=%);B)ZjvqS}4y;zXR@g|9wNxm^H*MTVNEU{(V1bQA4u1Z| zja%WrC)u5)fh^<@*@)uOiqcUKeGs<{+3+JmTcq?qMl2#C=E&c>!kpJQnq$)~mzcbY z)N3-Fp)Z+YTQ<%rqtiB}P&k2@;27ORfKnZ!C^I@RsOPb!`7w1x97DLUi}VVEq+_v$ zt|kr56vj~$NppY`4Mh1x2&id%s!&f{z=Fs3VjZULBrMtkGs?y5PwICR4~7D?p|Ki; zZi|Z`)?kXv=rxzeFATS`?2eVQ=dmKp>=YrERdQ_#(>Q^dF2sAT!uL{*?cV@2#lxhJ zNzu5pxImvH`^d(|7*tZkbzv>iuvo|DG)7jt4k6SP)Zae7Y;KYVS(wOuDx z=`RU~Vhxx)rk%PB;Ul15x$MPAE5IoaJ_m8eP-hco?d!cd7+E(JXOi&}-3zq17Z3WR zb%_)hY<^#Q=|$MKwL1nlh5Ku1WeKJxr{R@XK1qeP`ilOyo?C)&P*4We)>^xJjQ&6Of>DPFzlGSBc(+$--OVVaEwhf+gtClr27u8M7RGZtziJ#u_}95!w0OjAXnSg4I-+8gq&r( z_Zb$?4y>q=3t$sTF3v34&>AO~5<)D__*he2JG}hTXNDi#8~EJK zfvXpumd=060{ZJ;{ozLsKhyW!`i5$Y7JGWL6^a)5HMduplk3*pzcymkSfDw0GOgzW z(C6~UCjAfAe4fAe{=EkgIbmM12yJka>gw78m$U0Bz09u>m4Kk8hP=0zw~o4r6rDtbu;DA7Ld_?ZrnT~5+xQ;V*P`oR-{EB zy0NmlNE;DI#59kssd86)vkdMI+@QGc%a^WE5q;=zA3Xp3G3e{t2REu2Hl9}9=)M~UZ%kB5BJkw>E>vRPPI zjAQTld9!}w8dxST+ZEb`(WezZk3QZa=$3`6h=p)heLO5E(JxQbAQ9d;D3tFfJmbuW z7m*jA8Gf}G^a}@18s5xq!#dj;U##6*D6_F#h7Dh3S+IuoLT087o6(mS&$|k#D$>L zTp&}?j3e(*D2O#77Hz5*V1ZkfWh#gS=9q$dO*3j+t!UCAHM$ZM#QU1%pNsp9B4Plg zeJ_O}u#*I&f>-D`b>yF1r-h;%lGtcR?t6`BH!_};00;7r3-a3Lw+bzT^2ON5MlChYnD>FGW6Ie#*r0CQD1*_UB!{E89?&Y%xkW0RPz*}JIbk2fB2-Hd5wiMX zjpdiC?|ccXt;ROk-n@;k)1Y4!jTw;@|uSzYc%#7hfe&A2u=A z@E$sJh|p$Sza8s4h(3es_{NPJ@cY02NAP%jOhbEKd+oLGxZTm-(#5qDi}N~YZ)>Fe zJlet4BLBZgbP-oL{@x04W=U*|^f^YvBduVL3zTTlC;VosA&IH1Ia9ncb`}x(MvW*O zQ2?E5;FdJ+Lcgk3vzS#-seIt{J?^EB`T13LVllqMCKL;7Q{~FqAOVwNTAuiC=Wy%R zHKN6&qAoR>S!R+{}sV3x!;Z&=osg?HPd-nzzps5S%tQ97wCc+ueO~`ZC z=IyDrFcePDPAlkCQbxidq3b&RFp=FJO4Jc=Qb47)Ei5c=DHEzIaH-+*V6KWZDPD!E zYjsuSpoKzf3TH)?&U}v~A0~5hlN@ZzEyr}PT!qSUk3`de=2!+Wbq(*Q@b8Y+_I3YR z_{M+yv~>Pk7SIcC+}s24W)r@b9W{AF z%ujx%Y1}GayipueV{cJW)R(Qv@UYIsqm~cL6cK7Tv_+wOL2?X`*ks7kI35hrOKEXH z9XJ+}NPERmJ0j z&e^xZd%g=^c;REPZ(lDVfQaCb&?a103|xu!cB`87MF$?y4?KyBqB}tY6>lq{2*>ej zr1H2F#mcelO2v?*N{#@QO+9la?%T7+trzqa*!~T)$WGp^nT{W|anfd`F#N;hhwY3d zAG(!zzd*l#{rU~jFT57%1g;WC_&L%qiXtNK3%M4Gg^vBDiL8}kz$H5?6N@Rn9)#j@ zcz|%ICDI$R(wSEtM{2+jqsxZUg+eHNpYXL)phs&HajEHZOkpa;I|~I$c;(g!{&HNW7=2l}PhK9x93WIGAOAe%bsSmxqKf-0TF0Sq(0cldbsAb6Vna;DDuNpzp7VJuka-;=4>zU_uJA+= z9UnHr(Id~m;X{XEa$*6#^S!@jRYEyw56qOqIcKPiPh!uB+nj{T;@p&IO;9>lTq#{3 zaeT!^2KTq?H!s2S&wnJvs(UDDLZD1?(Dzt=Zzh=sX_KVy-LRpPgpv3j_w4KA24T&6 zs>Q8P&1#OolEthUO>8O#{Tv( zQzECD2`7HT4+iR=mdzicfNrR-)^1$81rNgpbKt-sIC1hYY}>v$jve#dj2IFb-a!&W zmHifAO`%-2#j%g&jPu3^PN7PC$r9toj4B+B^6>B6{0xscix{C93Zi{`b`x5Fc3}2_ z#b(B<^->xoN-9>y$ygF(P;elMaH#3)c@kY|;u;@VWLc#RhN$ovrEs7{S5#qV@enH_ znqB3wch1~rv5up|j)D#<)S-*j9-<_fiv?b8c#l{#)m5?RE!bPQ!XmKP7;Np{2{Ut( z^gcW0!VV1%!SL{X*tv5X9Dnu*96qui_Vw(9+qZ|{&aEL*whJOc{IZVq&_?36SV)5) zc~GS2U1Kd4(bgq!u9vJT^@vknUY&mA>Am&F6Fkd|y%bx{sg+Y99?s0mR;P}z zW~#^`uh6we6iu!-qVD*8)oPU^-IIl!G%#iVV$iW??vsU-w~dYmbuY0fOB7(%w23U( ze@P;GrJ1n(v^Vxta(`reU~5sp_FO2C!g~`7Q2ZTOd={%-(IwBck{HI}biC?0kR+pk z5Kr_Y+A9jDg+-xFozug;T31y|N1ap^am0>mX9?Gd&yDaX@jMF+uJKVm$OS(&hDh1K zNm8{+8UsAziTAx)Q>Otvz@2-7#wsoWxL%zNc2PHANe zJOx`rBad{fAH4P&4Bxv4Gt)Eh;~)MgqUrqJQo~>h#WdPZ1(B?8a7ieKdm&B<5O9cm zU>B23!`_BM!|mI*Q=k)az|q_J&7ZxYE+4X93n!Li(Ne6)!oG@;-C>U*p7X*YP4|}B z^SQC9g%Vfy?cNU`|HRAm_``P}hdt^zJab|{J*KPLG;emq7r4s8qzpWI%=Qj%>J3xnjkl8Y83 zx`R@t;_t>r28@Ma$$~G7B3p_{ljKFw7FpXa5!DvfQZZTPW$ex)MX-X}J_3Q6D@jq5 zo}%`c8uwnPQ zXpTeVP*|RGSWleXhUZAR3URuLuLJW2!Uq?hmdzicfDVVmGOE3oR~F&ig?A}>^!V}P zaO9a@*syUOztIIeNojs^JX3~@E%)w8F_m-v{}^drLzM#f02&oP90~{{k8puIMMMsA z+VFb&`WU5i?0X9(WBJ18%FkrdulkvSBnGN6x{OZKA?jQd8+snk$)Oc*l8Pc>(op2$ z!r=j|-)T%s%p>2zX<0i;gL!n*Jp_TE7 z_miLa6&M(}t;Y4-xk(F9~?T=1HJoq!|hN+W4a-_T1fgC77Fd_ zI-nIT@aAU2K@`)@GDbVKVPOO-jW5dALf;QCJZTeHgVdDOuujo21>pNB_d!`#exxc^`n?tgO_ezsv#IFL_6Z||Y-9M{pBj0l>C#`=cvxwcSJ?i5d37 z(RCbaz8d+|d=rp@zplzcD$gUa_5ekD6K*Tqh4_llFkSDu~E*|I@APIX|Oxtv`3i%w@N~wdf5Mds; z@hMOK&D@l6(9`nQ z*WB`42`SDhSxIN}&b#k|f2W|PkKBbA5XiD}j4}!Pc;6C76=na@5>)i%hy0*gZ zU3=-{uCDH|hpeL}cTZ0@-Amt}|2ed@Hfd3dJZ)T2)y$Pp=hAdS-z=%h+?vT%QJ(6W z1GEHKYtP5~u!g7ilIrGZ_D>4C#0^z7@%2#X2*+v|akj9hMvt?a{&cH}d1E{ZSjEJ(2X{@aIA6hSC%YT$LKVtng0@=nqps*Vi|!$S4ipl-apyc>O0ohI8l7!I{%%;NYQs z(6OO47FR{N=(W+IPol>kJc9AYhjpzBs(oR_4x9uQHZ&}pGAi675?tVTCeIB*VT4l=5>4+HZiwNz zUg>`y+FI77aaiX0K(5lY!QVePI0S=3L*$Qo?8IT%-?u0H-3^Z(J%%fnZotIEbhO>e zfV_9|#4>PlYMM43EVl6askTf0c&yU8C}j2Wkrw(pV9ye=E366qPqrq z&t}npnZ5@buw_j6Q}wnVKX$Z3zr zCJNlJIl#}M$V^;SY{^AvuQQqgzK#nNS^>$bk`Vr?He>3*W5)JHUU1Ag=!je1U*TjX zE_1Rp6di=P>&R3B1yB-Xf?`mdlF+mutTREN@Vb$ZPJWk<6RB8SR_OXlQ|>Zr6AEgn z6_Xb$QFCE7?Ti41yv*B|;0^Ph3B5>I)^y*HUvPYWcrRhmJUTiO!*d#&*dsir#?_ew zRc+ceeX=N7nA#X_$D?lvHKIMzG>F(t;l#kwhoYzTvU1=3@^UEvBO-wr31ubJ1>fhn zxp{g}+#lxVW=IQwMf1$ejM8-QHKD-m*<+_+*RI`EB=7I(Ba|7R2biQv`IT5`f90#+ zg!#ppuzwE2(!S- zaO8QII6o-ma=J9_bVgSpR-EP7?DYP4Z>LqpVL%Y+(NOwfA zaX!>|c-{BzIlwssvwmh__UhBJ`9l=Ym5N)5(}+wvAq-i=&ib_^h}-2o?0J_~(^ z_CixrogRo!7QpWRjJ;f<`GDT+4nD}N!#X*5Ib=+1w-mnkJs4j-IrW%T%jrO9Y;1tP466w(61HrRBkqQsIh$=Fr88}9QrE!gdCoWjBc%Z~$xhR>|Ytk4aXvw$M z6W>-5<)}!~gh6QzBG)yg`Dq+8KPObD<8z^IHOEm*p5niKW*j|0-7@Gk;;1n^Up%mJ zBfXf~j-deMG>+q7Iit}Ox<`!0&5!SKz|Mci_^c^RRz^ADlk(QRwd8Mz0gc@wHX9!E0?{ z9%R^{RtqhtgfBYJ<97@+L5c^WpE#z~tVR~GiQ9&}r5UdyML0OHrLMk81&HSY1fK+= zkQi6)Rj}qbEFwj6JA+QCc(s!0?MD8<4m1i^(&vb?%ZhR;K+%b$xtYXzxG66!E|*1M zW^9k^sK&H_tdb@pQIwdg)ncX*>x{b6{ln7=9D3($uUIq5hQbr{P;w*@I)>OX=_r;F z8T>kaJja$-m{Qr@71jDg*%6L)QIM-dVWv3Vr%)g%ta3)bY3wP5Or8Wl>X$8cfIit? zrIf(LlT{l_R~G0;&v$m);dMgyfb-lK#9|bSe!Ry;Y$ky+@*I>4UL>KZh=|Hg7qI{( zyFu@@!It|~1=U6bl#GlRK^h_&*h6NlGHR33%Q=mx^71c|s`M3L!2N_CUxBeCvMTvWu-2A@+UCN|=F zoSB^_Cl5rO(FPQYU76l(+_0I7*sI7`1mB8fB!A$zjl#6ckxmai6%95vf|e8iTxUU%JQPq6eXhY<+MIUWWB*!om&G; zfAAS@p9A@DGtYl~{84xh>Yz2emuQQc7e(njH^^Mm+5v;Zx8cx%V{rM(4LEq@Q&KgJZF8eF@61+HJe z3Y#}~!LuiyhrYhUgvN>k2ijI)gMvjeZg_}N3!ju4D~Apsi}X5Cn24f7QTKa6Es9tS z;AEo84P3@ngP!Rai25SRmFJ7)LsG|yjydbzOniKbJr)t25gsNNlyoqr@QT79IF9V^ zkoJIpdSQ@j%@Sd^kxrPVSn9SM1pL`({ABJ?;qJm4B2`d1O3Gww-?3$w7~ zOLXuu$CgF18C&&f*a%M{@cGToOw-RbHZ{`yh9hXSAEoIBPxtWq@I6C+Y%DH>h9)9z zM7O7BrproHNIulWwl{}H#``JyC*wMwpP!|M9t&h_?(tgUgsF)+%0~|!BLOlt*PAzW z!LD6IJ>KdvXRr*1NbE1Q({=;FIm>efxNzAtQ2L7RhFt&8kagIspl1(V_ zNTZck#v@ch^J<0KmO*Lk72|J3*C4{Lm>3roy~4S|g3cRDJe~>bL0zyQNs{#_Y8h`r zMxaq7fMf97=Zy5>*Tti;7L~@sNfyJ@QMe-ufT|r3LrT$-p zoBh-Dyl1AT;oP~4aQV^|IB>8Jj)y`T-8*{w_QLi4JE5_;M}?nbdID|`b?fR#0ET1H z$jLS6siB;dw9w3*6Yi*WB~eMMaK?+A8Ykp2)>Z1syS8`VQF!LaNkW&t@tyxA99on5 z=ostz-S2(_{^n;tfoG1Lf)mf4BEM@C7Umooj#gJFIK%=PRrFDC8R-wtxkKp2;CO+%{BLXs_+R*!!`1Un&T3Dn)jH1I4sl=ccF1ia2 zT`4SbC)QzN-DgC6zQ~PLTckRvH?ujgrD1U{*`d+-xI#L zM7({c)Eg{zSC(VqoS^r~$i|oW?<7crh@=Zu5AR3Eg>yuxE0kb|4f(=Sja@Sebpxb!k{>*Yf)|&RPaGqbJIMiu4)lfwDkzXHfom^~)4h3rc(r8C z&=oSB@-4IT4o)R-jfgG-9d)YYAH0#=9`^2uw2Qra_CZ(IR`Qb1vebZD-ASTMfSF(> zx>CZ1yb514xgW!|oDQ!CQ$+EjmT+6*QiMV&~J`4;Fhkf-? z3X0JHl6WmBUDs#E)`c6Nl6ywt5ervagcD-F=6y=w6Nihkiw~dQer=7B8T-jZJ&}n} zUL+)6@1+l5Ytwm-jU9)05ojO*TqN|5R+iWZ;-oPO`yxGq&U`AeSGhq&AS^T=HDI54 z$59V)edBqC&uxBThMwz#heNP=b2s!~zX->Vo`(KVAfI{eWjKHFE$Hnz3{%tNaQvCm zFni(W6e5H7byHIt(Kv8=gXxy&pN;1n+HQu|G4!-#{*VQ9SVT+GfjXBg)Vx6nu?UKy zm>e!%IuCb4A$|DJAvk&J8Q9d>5s?EG%UQd)Cq11lN2BE6vW7?Pp&aLpMalIm1EFwR z3^(arn4Ot}!FxC1-21<9CK75seBWdRQw5KJXXYFKPwUnDTrmxKA}a$9OgAbZ?MpI%&U&wZ*&Cd-FG+~c8zoh5o%tE>tbcO zfQuI|!L@5QptpA)9DU{>Ja_sTIB;km^k2ONBO_z5IKQY!1_}T>)@`JN0}r?5aB~+$ zawtiLoRBzjCZs|+DaNvjY}JH6$0O^NS|~1NLm^#lfYrwj&I+5^M~-xJAVU*4AqJN5Bz!&Cq3ZG z%Ku0&DN2@Oh|pt0h@5g)$1%s@OX!V@jmS!|Lc$oY2vQO!OYtmI8hH¿UHiogvU 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

    <7IM}CMX^KW)q@# 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

    %?S1mGhgHM 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®l2kxL<=s^{!iggPw&e#kf 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Snapmaker/Snapmaker A350 Dual QS+B Kit_cover.png b/resources/profiles/Snapmaker/Snapmaker A350 Dual QS+B Kit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d4dcdad9fe6a4298088621de942ebdc116eacc GIT binary patch literal 222847 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 z⪻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 J-{c@*HkAfN8(BtRcnlEd!3 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Snapmaker/Snapmaker A350 Dual QSKit_cover.png b/resources/profiles/Snapmaker/Snapmaker A350 Dual QSKit_cover.png index 27f6e27f4544df3fb25989ee6fa76f7fd5c948c3..17106bf04310ede64efd1e014ae4e81399a102b7 100644 GIT binary patch literal 218736 zcmeFYbx>Sg@HRL&fndQscyI~sL4&)yTX1&>&ICvxxCQsY-QC^Y8Qg=*H@xrrtF8LB zcK_S0+NwQOz|?T=xqbWe>3;g@z7dM@k|;<7NB{r;Me3`VG5`QQ@%DoV5Ba81Loy8j zqs}EI_C?iW>A3Y>jh==l`2NKC)VEqfr;1Xij#8$o5`{Cz3{#j=twqNHx`=3GuKK?I>Q7K;X=yyHY%y*+I-+SjSs-P?JHu4&j~!Q^2CFz^6uPIq z&(^$ePM=R&+kI~Ycopmu*3Mr$|9Ur_p@K8K#};3oPtG3w#UMic|KtB54RrYYNq9h5 zskNEMc{HhS)w8hI`K?@!Z=!xR`qD-a2DvMP-!X^pg8p>aN%>>fnfJ-bnE`eADHL3pDo`1pq2aji6flqmd2#&N~s>gIA#d0RgDT zOSLv!K=ZP{-WXaCV^fq2m#+?QyUhwCSqc(>252Tgr-W2LUl?6l5kPL;F#|80cccB~ z`5k@kS??M|7Gx-t&G!I+Vf2E9{VNWJ6`&&)dqNk>^2dFH@*$ItFXW=VpW_S5XW9Gc z02cgvh5-N!Qox)%rm0pc`&c+5m;|IXhShZcT@%#axr^!BD#<^=$N z(!ycXpKdW*(x3nUVKErM$3J8l|Cb*D;g)~^8lA6%-FAfN;}D5)K7k4aey9Ng%w$c- zY~Sn5e&G*l+?p--bDeJ=Pv?^y=f8UI_8wr^S3xnezyHa-^BLtB1(3juOdVn}57IlU z6%vdphaJI26TCB=Z*PBGJ)0_jeJD5ShbTkj>uX;(n$Xj`<9C1r8f0>4;>!%7mKnFx zNNjq`{%GQh1gHH8GF+5h!q+xUp>^h`F6N0)6hd8>TjrN7W}FiXEz9$Z%ar++P)@s* zucD%&7k+Ew7ULPNae)?@zH`s031~k2s>vrj{a{D0A8IkRbUwOm&nNco?fz%p>p737 z&GwCc#H4j5^NByvP$1@F)`~v)L3(xLOLPbo8XG^i96T_q+-H{_X!p_U^>JN6=sr#e z|8+F;HpBZgurPHucn9qN0xob_VeuJxI>>yXrDhrqUcXOYcZBBLJ#9YAxVRmkFIMoo zjKf8A_7l)AE6Nz=uiWlO_Iatk+Z()c5~ZzO!n<;OJmPaSg|2vNI2I3fgKuAc@iK(1ow^)yuegyg%4Z1Bh6W!E6% z(vbo>G=@;n?=U+KpnFX8vd}N+*6G-to!sl3{;53U>b=2H0=>G}I(8ompo7hXOzcmh z*xHrYue5`C&v=4DY_n5e9u*0G~Po1Psop4IM2VGsE1}5a2Fv9WcFDL75A8UU! zF0iU59xAyTtk#wh5dFleqXLxwIqk%NgQ$>-0t?kn>u@U>fkJ-z=NBob9GVYuL{X+V zRpANzE7zaTeb?{$xE$2wU(7vd~Uz>Zg*Ew8ZI)Q{dBE5#dWvvG!Z5^<4THvln@@UHmbBAM&gA?P5?mMmkCln zeC|sUZ-vo%uRxih1-SUw8N!Jva4To;6^A)83%>GIPO4YD-#`%BS4P#Gs5BJC*u362 zYmn!^^4l4lHf`KVV^R@t6BBC(3!Hsn;!QelD3NL2u$eV=#q*JS+?N!Rw)eYAU2WF_ znADC0eqslpPb9);R90v18LtQGe$}AK5W0v^kfrm}+HepHgX08~tM_67RigKqRF#I7 z$1^cyNd?XC9?LLURj?_Yj#X(Kp7?OdMHT{hFZgl$iPwd3!$n{!MjFz@gU_^%`C{Pg z^^`_cdz>RxTQm|s^N5W08W|ptVYFa5&LpAw9G_Qt#~)x-e&2;MC^_t@F7*gl%=+zx za03mI>nfUc57gUs#T`?DB()8Bvi>x>-eS0z?)(E6_!%LoH6Y_%OX*ns;SO** z2=H^zZ`Cx7=0sCGg|KGsOdMzr@fF~BzSD+nrke@f5x!_(L$P=O5z5nW`_nLf`<~c% zIsJ{+kOR{9m4r)+(yk~abLsTEJrk_{ft4=IxL&t!()vEDf8o=4z^EkCeSLj)-5CHw zPX{fhKT)hezapTsY>C6QXI+R6Q7edZYQwk^h#h}n!h_3a)DrulI~C_S<8wZ?mhU-f+-E=u(aLW`FIAqSiPN4pH*r-@pjiG;nb5n zQKI%0awa24JT?Mph5R|snEMgd4|__8D12JvRcrWWPm2AR1aa<&c1)^MaJtWi`^65c zs?mF$U7KmFf3xAYpcTV~&pyYy(X}jGjPFNPF1UGgwV|2_6i5%Wq%QA-u5KdDr}*P}ZaOKb6|AS7b#$U87FtxI!75qeaO4q4Dmo$73;hQ4?uNUC=bf#8yMB-I*#}jf+;=>BZpk@EKpS zf}7Wmilp6bhvLU7`QKOI*zFDDNpqto>T=6f|yURgtle)-2dA zM(K&3^c3m`-wS2Llr0ibT&}6e&2IENQZ_e5IyW|GCVm0c2CVM1RPK)PowcAgLqU!! zk0fpFzH?8p%=U<`SSIt0_7xQ#bD{@GM?C>5Bd5hR#IZ;-84W{V(&<)qg_Sx7wE14r z5`5(i@*XdWoNnqL92$_#9G7{;#jJ3R#$dZQycp#YlsKG1XWAPVjF-}0^}c$%JTbOH zJM)@vrd~Of85Glle?3QgbtqzI)~c{9b2niIR9rXi&=U0}=_Gy!l*YONQyJO57Kqpt zVa;5CHwHBIFCN5uLO3p7UZ745ROm7M~Ql(9Yd?yg36 zbG>+FXUrVvqLlXz7eFAt^IHQ()3hVCbhsWIh@mA2h6|4?ew#(9aefD`k-y0RV&F*3 zj(1_O;&k!v&qYwQwU5#05QL7zdw`Zf>#xu2nTgLVN-ve+ZOncbK$Rhibf$m&CW}YA zELIVydb`Bi&vnX^l?>vmJU?{1*ga$T-U?5oz+KFg%!iLi(N! zNrnm`?DaL}k3@+}?Y`MHxa`u6J0?V>#}H`NckEL3 zF+J|j>PQh6t>Am8q9m(8b?D97sqw5EhwY@kUY_E|x(YTZ-EgY|y?2dCx6|i2BbCod zrfU&8T;XCe+dLDqVxC_0H@soEAwd8Hz|s9l6oDle`O(z(c~*CDun?1O+SLkuQxB}n zLI^Bh4Bu})YxADkV#1hiSv7cEny0SSO#MovzHU+V)#~Av_iS$v)|Ug?r*g&c#qX?P zI~ug?;uHZk-VLSco_>Bgir!w7b;<9Bm|#d#3QPbiDxhKjmfajY9LIaq4#bYtlLbgm zBQ=hS5zRDu=%QYvwQ+%`{jPIJ)2I9}g!Ch%6(lLur@8N%lPyWB5M^JfPd^<9Zrx^l z4W8c>QYg3|G7ii+bme(SBtJPc-qNZI(&GX2aRWNYaV88sl`WpRRLFYC6DjJPwsmI@ zI+)0?jKv1yxM$ldTre^z75PLc5pR z6frJ44a^sHy;Mo`>N%iv?G1q-L~{w4W`Hiz;iV$8b`UPS@sSvpZW8tW9;?Nc3Mu;fAs{^e~J9IuU_r{EwB-#(GOLVS?9LJXi7vm@$qE$N&akCP~!m?DmEk6hT*7BxgqM zNk4ZtUD<%j3eESNfgh6hu+YX5L44GjcnW(lde~L2_f4~Vw6kDUin-bTw~e8B7{pMK zmrE{F+uX&PNEGEC<|rP!`PClRr2ZFRLIg=|z1E7HWfp3zrdyCK!@>9BK8d)Pm>fw) z)R^h6j1?sZIJ1_%wSV2z6cuisfQ$2LG`yM5#}+gri@PU#Po5WHptS@-OziecN2Nsd z?)702ORl!y#V|cU#}wEp*WtKU2&Z=P$%l)l$mR(EB~V}Cs;g!iS)nN_MV4LV z3)!b|hx8Kzx`63E&e^nm>jw!n2Ze+_CD*+q>+9t9pr$R+7Y2T-q+{Kr7}RKF{AhNC z8U>Hci?-6!xZzbhAKD-+R6qhkVt0tiQ{>Ij8LR`pMU(XUsrP3HIv z3{0*Fjf>=4RYRtkIocD6B;B)Md91}Ui7XYa7;9KBIuQL+n)Oa{FB$mc(!K5{O{}Zu zb>db-=CQyXclokCkjmDoGVAveu=Ops^QrK!JY&aUn1w20T6fN$iMZ%JP1oTHFhBy9 zNAy&OckyoWWOjY0sL|a?Tw7o@s+++E%guE)rNnkFQ};V?81pFQR;3^?W;dp&2&g?a zS(9*lRs!9M#G|jJ9bXfa+ILL ztZxpJy;o%}{*0U^Q|Uv3?dk2x(Bf0*#zLsR}vkEng4&jutoDG4|Eu!Hu-B^g+D=8ne)syxz9$ z!)$j367y*`4Sv58*}Otqw%65U#ESbh158hRg}NAz*k2M37Rbm;O+J=&N~vf@N;K3o z)#<4}k~xcu?2y~#Iiif&E_9yxBxg$2hh=jHrqdDiL23Ge)Ft4FZz+8vxUTd}BmIIm ztUIFPDBcyw5dWUR^@G(wABj(aw^yyVTb4YV-@}o;c1U%ZMEd><@QsLMd=1){-qJrE*-OOr$OUG+|ZlgQXR{aHwc3BnC&zv z<{5GIY?@wtWq`FnZU?(i%eVNtKKeJwnJ~@vwA=ND2*F%tfla?Xe)tzQOBfieujLv3 z{j8)<2FyA@6vY^KT^m=aRV~5%rLqdYwkBir-1|M7F89v2pefxoW_LcdglI7WvPRQ| z*pe1YNK9a|Sc}%(j9fx~lK~U;bv`+CNf8nxXcCiYt-d~Kw_nS&vr}OVKiY$kJPR;? z?Wz?tIoI1|*C>K?AiCjqOaXqM<2_Ut#SwK*vx)?7hLQT+4a2_aiTUPu@pGElqD4X% zs;Nd8FKbWs@8-f;#*_T5AEX+8&#@b7FI6erUCGVZ9O-(U605=snXH8tgM)5Kh4Pt1 z`c9#pd-F!ZULXmON2mL6=9Nn3!|%s56^yACy%mRCyUXtWUDcR$p!j*g;foXNFaC7w z?@jZb^UZ6!!FsDaU5`K7Q<;4>kumeHMkqM~4HCzPfpQGuHS^ekmoEkbvNc;>k6uiS zJSvm=c}>cd3tC7;5rBZA=>}bUqA6~{3M@BrU{=$<#^K&anO&lY&6Y9ioX93958hvV z5!UMB!D5NiW-fjPey@#@b8-ldU4=+{E_}U;Lrggn$ z$Vehq;*{ukZajBzt>O47$d6+vjXwr1_sLAhMu?rcq;#sD98dYO&W;aH&K(NI%_qr| z5x1ivZygF68THp6I*#<8oBkR}#+i}Uh9NDf@*?l2YA@%Go*~{w=6KLe|8wQ2+KPH^ zVZMIS$X{<7PwvZ{9B|G$=D&RwN2-BKY(NR^B?Su!g2=kULe~?b-fkyLwf!$m-j!!! z7@|Z}sh^BFW{tVyr#LFuM?NbKO~R|D=1rc*?@76)u|FzrXbDIZVDe-D=YP&`ssV7+UAJ7S zuEK@C+eki8uNIew9ZtHr>>|B{s(Gti)ZiFH*fS3LbOI^VWvc!{!Inqg;LZG= zuUob79OW5-Im2Wr%@$#&>nK$NKla{d%VDzY%F;lH(1ht9|T5AQgLnf8!l8-q^$P6Y+h}E`QPtcHH2{ zR!s^W00VqJ`5&mHfN_3^MZV%RLj~+g)}eEDMS|Bgk=iCci;Fp}Dzl;;^LLC(Edk&Qjk^(Li_zfTf+6oeOMK??>okb2&2hP|SDzY(-=L@tD`J#F1fv1$9} zuV-stzj*`^lO=5HUPijeUHjt6{f(prX5k!#t~>S<+gIW?kE3T#zJcd{68bcu%Z(s3 z!2pO3HK(ApH)>G5H@(}jr^CNO771{G2M7x*#H0W6D{oyjV-7F5n1u!a3cGm5v=V&# zULL3rEdU)=xD&MQYo1`fnmPAH19wbi$fg-KRx8l{rNS9)ZEal-tA6HCxi<;&aaq$8^`*M)aLKt!Oje)Ax{N~hWU*>!GPmjlc{m1LupHH3_L?L4Se`@Gb zW4S>AWWwHf*LsfB(HMhc*1n`x2<7|e2jh(ld6p!6lw)W>0;*O*Ssk?JEhRJo-&?&Y zY19L#_ur#JQr>?CI;8mYHiRMO`_F(v`SUXGE_jVuuKr9t90s`JDV~_#;R+fN_|Cs>zb_~#jz5e?brCz%% zM)rm~ZwAL?#GA%*LD2hg#I!uG)(_xK0=b|N-@XzVpvn6*N%}l_$}oJ|zF<<(4B>mti;kz?%<0-s(it;;?N5RSMsUlG?NQG1>M7=S5%e4+|s8<{yZ$~ zn^*ym>Ri?9oW*#wOJ9F~|FNj{sQI`@2?y_7P|GK?!vEAQp&s7^_ z53$uZt!`8~KzN-eQUed8^)a{QLZQcMp_hw(l4Wmi|8;;?mW(>tqmH?K6gp0-_qC8dtO|9Cc-r2RDf z*}8toRMsfdo~nNC#$wa&a=WynPRHEx+qaSDonfzn>3pvCdr7PQXhJ{moQ}P(&v*vH zHH1tCznZzYTz_m6ha4V(w=)Gu`miYUdPPC{lq2*|UjNkpdZ#lp9j9}#oE?o_P1i&I zV=`BDugBip|8iYxhlI~>Ch{os@mb*P#cU{5ZpmSm+G}~)FRkriwtNDTBRrm-1qF$+ zvpFSjuZ$R{z>Qen<5$!%d^9n#6AKl;IzuT`TeHk0zI`!Y^f$-+_(Jgmd zz?iL6n2o86&qB_(#1vqO(k3?FVikpqg+#iaRq4}H!*1CUoQFNoYN=lkqy#r&ekRSV@REUIYj#{XTqd% z+8!>~+ppub$w4-Tc$hO}yY2CGxx#iCMd)@5h>&V<_k?@uu|fEHR}BLbWOq|^5 z?Y;8H?RwwH>t?aQ>T1u%syh_LWd!wWOXeRqY0qrgyu6->jWh0)oJ(P?X#9yj{I6)*zD87F25glthk{hV8=F z9I#}}^F#TocXMk=KZ*BogtI@yT)^AhzoC+Z^#2xu&AHf#roIex6=~tUGmKn4MhK7X|mAA*ZeOs4@6b}nXUmWaPD4lmw zGKc3${W90q1l<{v-?xDl?!7%;NAyHJmUVf*E~tA8JbYix$n52UM1X1&e91rFYi{EL zXHV@07m+&quI1juzPtA0jbEcGgHV~X%M` zysbG4@pW0Yt#9-gZ_Rvu?|a)E!+qi1i+uz+M>R+3W9fV{FwcStY(L5=8zcQHjvf*p z36X7ZR<-8Np%}eMk*^u&ZSzQHJKPgLKpbr~wN5nYgV1xqt4YNwCk#sLK(|u8wWUa;d~U&S)z*pgA{Ce2cpIyuIoqE2XYhFDS$Ed^j;BheUFnQH^S;6% zj=*tsY^3`xt2D7}W~?Ul0Rn$zdX5X|k3#F^{1-OvPwlnuZja8ZTP}k6d<8tc8=3D3 ziFhCg2URlxV_%Zw{$c#(eA3?UDU!ZC`%Lf>{p5L#;`HV3Q8^ugILYq;=8z#@U*G4M zc_HBvjdDkfgZ9^l`GfP#M2LP6wm%%~?_2u#xdvRv@?iHD+kA}v&XYVpkmJec@$*~l z(zS;F-`B}D-|?yBX^Xq(nTd&s^&c@Y>t>`kl&DsKJ+i3|I1Hn*eQ3wSF=e-&^H-+c z8c?Q$2K91mwpzyPss@TYlohA9ZlF;K2hIxT)8p0OaE*HTO#FQLX5w`)`4Z7v-2V8- zLZW%qI*r$}WpMV%hW#=_p-euV3kfG94ou)ZL%R56bx!{fJn8n*=LOc^O>{gLn&)kmquju$}lLS<_kDD+#Fp=Uh|gO9Lu2LBM^J zc@2+4=@dWMDYjJCD}g-XDPeNEW~4`GUh13w3t^MtEM1hYOii-NFsRv%o+Cw$fX6+0 zEJHxfVl2&V&V63jnK&v%yuh?1qh1IU3}~xrzs3 z7yV?z=yA^1-O(V)i5gdPar}gtAloh1`$fhTxGVj8Q7BP>mr||!uFz#ZwzMU(NUT7u z74P;tVKg0J1QP}Z#^=V2Tr4ilSgBBN9wV~;w8+s@F6;71Vazu^ID7Y&!v^%nygE_; zc4;}Ckpvg}(nOpiHS2NPG$!?9 zqw}0$!N(WO=0^wV{wCL>{oO=;m-!#pOBC&HJV76!Ay^W9;&Yx!WVG0KlTt3MGaeb9 zF@N=?=c1C7bOZ`wx;>f^R)&zW4X<+?;zUv3Sv5i{2gC5Os5IC6X|{&S)tP*``3BXW z)fVFufiRDvzaP7N4qYk|5OH)=ok5fU!&56xNuGz&t#_K3dh#?Yr$n>31p0+ZO=`Y= z2diXpkNmg(q{O>5Q6yg1Ve8KGBss%JU2VS1+$Al6on-WvVJ6by``(yxT#90d0D$vg zmF(ue%}qUbN?g800~xhS7K|niJRNBSDAEL5nX@UQq)FU1F&9;(Ui??`QG}$cEEv=yNQr3ne)}z~WwC z1Z#jWwFdn2@i;igzRNphOk38zmND_##)94E_0NM-kP%`sxeuqfG(TP0RMVq9is3f> zxtP=ZWXS2rCpMtsuFv@fHb9Y7xJNof_{3B#A|Z z$9_?DjnMbw2O8f*u2yct^Ez%d5Mp^+B_NpKOm}w|?BD3w=aN1dmSdhU)Sw;v2U3z# zWmHV|i{_oR`?SjdnBZ*YbX%{~xY~^ZXu8^3-Gl_5N6-rW4Z}I@8kWjfutOXf>p8fT zs)YD%1nr_->~`LxWD3e_=vPi^O;v8}7GBusKk^cgo;1WYhE1~_-;YG4*4eIp@mzD6 z+@7q&XtLhcb|>B(`g@egz&M&T`tTP06zgn}d2Ht_ zHEf86uf!B$hV&vsG0Hs*R7b#6xObHs@lp*^Qw=_%x%vd8gta2x)%J6yuWaV!aP8Np z26*dWO>4KBs+V(a}&xBS3K1YVcG!IbN*!NS$&rZ;5&pK0mY>`$3S`C!<`SfNFnl3l2 z@Jx`(52PCN*~?4)U}lMSX=V|M5t(Nkw2TWDwuqPx#T;LHjcTf`Iv7$(=t{48{fHJ? zAfN6cQ_tMiupW6J$m_K8(<-`#OrrQ?ybn>n{j;N-3lHH805j1%eZfw;FxHYAj@793R7unsgNsWm&2jioqTN_ z=46%u!O`jV$Y9D5_wXY?w`eK2BWX+KOyNPAw!WL;*S1*okCtmUUrMiU(i1xHMDkCZ zw7hU84lh{8EO&yogHO&6Fxj2ldIZcZEwMQWTkX(^h%}AtgUD7Xa#m17(=t7_b{v-~ z{Bm>zcXfNs?a_z@oRa3s+P}lYBcwa%*E&VfKNxkMI_L0wKUU#+cz9T`S@Ykn{nSsq;3?RjT_u_tIF)A+8nB_>h{%o3OoUpz6D+Uv7t zFd$&Scl&W3he$m5-;Lt!E9AFXfGQ135%8TMB6S`v)c~z-Al>mYg>*GoUQgyQt0_X#TEz+nZEaj4;N0+UO?FQ0ZOL6Iw}5^MoRrsj83r43g%lyBk~V zq-d|m|1!nsb0|S_wljmmSVW#Ol&?UxD{H3JQXKv>kryq`*z4V!-xL-ef1fwX9rG!f z4gqIS@>&M8G=FsND=5$fX25A{%0N)iM?5(>xhThl7sgey-kGT)PrSnSEr!#Ptu+?= z>Xba3nU@n<1GTpw=T<~~)9OL!!Pl+Kz@_ZqH{LYTXg+RDUxAHk0oX&BwgR)}4c)Q7 zS2l~p8Ehm{;SwPT8#*Z}7PU^2;>C`<%hN>M&+fUo*!+NgT_+7&;dnq0+qx-MFQpya ze;w<9qN4RfTjrvYiTxjcFK%eYgVq;{J;zU68*y>7~oAbuq`u#58T1`r;IXT-^boO^6MfU!TrrymASYjfnv}~bom3gOBVRBdsEE6Xgo~W0p5K+b+QTNnt_?ve=mF0kr>6ShraM@8XwcKF-~e;PobJS1uSu* z$LH6k$R^(Ci;rm~Z^k-;nV;hvLE?-Qmbv4FaYQpqm(iyDt#C)MtotlPX7jv62kZD; zcA{H9t%M<`249+ld}{YEdBmrZ%jcD&-r+{tRN>^R3Z;82^aclr<-=aTM-Wx3srqS# zw`@j3OXT=20ax}jHarF2or83UGkBscQ8WKLibQFSyAmmr;B}B1Pm)z!-Cw!O4{@BU zQw`$B#ZTiseN0!ss3M^bs#v5PE#LqhEfcgqsz*MFXeU-jP+;2biXP+@s&+UUXQJdPOTwh-(f6{O=>&WX-Y2C`12>n8y4yB(0$kxk?ys~us@g8-`Fll znvahXU)w6O+eve~2I8M+c&x%Zcf_F3!vPF#mFg5TMkZ-!E~)>bf0!hbWJC3uY+qCr zb3tFoZ;mQ&=W|XU^_f@(ejCd<4kq`C&;+uaS#kb^LFwSvrymw}(E7Na-M&f0p7rx* zm(}>~W1&O1b{x0EUAW7g|JEeKFEh-moU4iotRo7se2u10gJQY_2{Sm1TcPQ>X*^5aEgB6ez z5=IgG_@5teHS{Z4c&>ELd1^dcR43leh&kkF9$K;|=Q%8r^^L-l1N1aOprOwY6W@z) zYmQ5l=f%nyn`|2U8rDV5W1$wVD03(ot{%o-!B*brviZw}8E3ccMInycvgf)yX$f0- zLiLj&`)+OaH0{b?5$aQFO{2QTSvtt6M%+&}bg4ec9x?*_&XcDbhShs9O!mfuAJv?c zcMSNAWhvD@;4Dr&X7)ZP<<@!3xM8UWmjj#BG7i2_k5Z@jNIbV0y0?c7_gsQVAL|XsBCUjM9I0PmSNn> z{XV*^mm?&;>L*EduVkCbgD^c4dGH&T4RMOG;1jnWLyF1M$HDeB88Q??s(Xwd;F_D+ z5ZLf>e32vz&U^0$_fx3KRRotP7xA+2SWs)t9zqeVqCeduCi2q&#bv(1MZG0zS(d3j zraMIG0^ZcJU9PcPX4zk(=i!rYtqZ=%+#g%h$i{Z5;jkV}7_sZ4U5=z*S#4J85@IPW z&MK}k9sC$LFki#?q`RMk9`>(f$$pmcuDV_l`QHVIlsMwL78iS;%y*|aas|rI`14!g zY6^8DwbPc^B&@XR^0ok7n$Nv#)`7=1c7qRgN3tRyz5=`c= zPA0Jw@h2yGdpl&Nn2XyY>l^WH|*T^DVw9vAY&QpP<-$rdHB~x1LOWp^t%{3MK;{T@Kebz$7 zMFs4|khfp-=^PBvb4}b&I={5ckU0^xWVEi08dp|kNuO3@5i}pc*S~u&9vYIX^E+dr z1v-Avrtt`>7n?cW&F~%b$UKuf%5)oIr3%)hPDZ(S^6+`p*&MB*2?8YH?Wp=891}%s zTe1OlGR19d1A|$zSDi$@DbDt~Q`z4DPp5V8N*ByzxZ*j&p`4|B_kgovwcAR1{X2Hd z#7vd;MJ>U>mA1ON)aB|Y&YJSXz+d1SiXi3Ye!9$hp0SR3#EOn)7D25WeIfXQm71Ar zrR9@JhvJDPZ*oH!DwR^Mn?sgGyrvj9TtYTVVb3XAEV=mWhyPJ9{3kP% ztjL$L$=JxDlZb47l?e1(k}8J2JXRS7L3Sj_nj@H?_vDVFSqt~fh`Z#plrwAni#Btm zKVS)y@qoiICHdhYgMP8PI4II4ID_s?dfx}u%VXWPLUwdyauU06*_&t3o$AtvSecjL z{;3>6dzlmQxwU-e^jb?3{4BdBsMP~v;zN%$h*p!Jiog7TipniHQ&iw43Fx+Zv&XQvcC<#!c0R?4rOACO zqIcyNq{>~iyrWunGMm*J$0nwIp%-_~PLz7VJNlk0Q+}r!7s2yOJ250!+0!1u46-zf zf@WpP{QxMM37_|XS5rQ87<1i~cxIQ98`FwWgo}Twz{3=)^}sVvDjw|T>3MEtoWBh0 zZkL#()u`6BIqPyIcfmMZ&`txAO-7*qLm3WC<|w#(c|DBW-FaAgWXFEBFP%ms2qGaNvlTExqrKS1D z8^OAeDCZi>JBMSHussktM-^R1#(>NDB-N6Ov#LPJ)e57Rk}ONJb}`vmU|g@2B8%{AeLt%DI!Rl3C;W}FO#6X6{1d_x;(#T`kFv6`X9i;D zns*3szpC*AH7pDYzAGl|!43ugMiSyJo{&yF1OG-Nb|O)mI{5g|5Gj0i>5$N0Xc?c_ zyp>Zbi#xf)pC93ak#%X0n*szT!b zf?A+$8MlLRh;D@BIYDkt#iIqBw^^_i&kFKaOCBGILYF3NW~1sZa42;7l*``CT6dE_ zRXhgk$b@zgR6)0l7-p-oCV~8xDI^B$QAWEU9k*o0F@2Y3NuBCrN-LndV+k`W;f5Ng zlmV8bgrJTpAaOytm&lXtQmB}vgvRifEQnFLUO2vte_^RsbU*lLG|SL%eP?@u_a72x zRUdzd)}3?|t)Y>OqYPu&`z(!`gDO*KcBGG;lKz#+bZ$V}fB$2{B4G+4RXDTFwWGRK z^Jxvs0GHga+h3L(xNyl6lw>U}G0_OVC{QRJKJP5!@|c{=hLwNK8rR2p8kG%u)W#6d z#F?saY8qcKjHc->+s3jpos=hQ>CDB~^wK`52ZH+Unb41rnw=hOyZhzTZos@{(f+5WTBXI$BG>+FM@=YXzwW3q)?+>aFx#Lt( zi02b^36jzdH?=7+ce}9KSY=w)@T?0N@=bH`4R*2C#mGRa^9xZOV|B<;qKSBUU4pH>>;6oo#9l)Xvqqe> zjc=jL##b&nR6qGoxRqX+ucLC>E8iDH~8ut#k>9;Wc2Si|50fd;`rbauoFe>|L84q2384tjb_<}g7)taOZ*bLpni}g$gcR}P zf35XcQFt)XTj_Sipt<5uM`$+-h4`4^tfm`A6p6mD6;)NLkc_{cf{OHYRb(+}c{^p6 z^y8{nA{3^3T?XRjnnM0NGK6qt{nfHP-*B|uQrU*m-bWGzM)OSZhNkKcA%uM4K<@pb z%(74TDH!XAbU~-`C-_Jc*)Kj*Uc9ZiY;WB-5`EW=gN%pHTqn6Qa3Cog4s&8uRUec?*9+HxAflHUjU zOI>->#Xb_^ieJLux!wz;p5{tV?tT#lXIW=%0S>+$t1ezs$-xaiefWn&?+;N%W zZ04#}{qQ@liuIkNSh_w4uk_Y0#93JPF6v#?LgGhmtMjU&U+}bzn6r*6lu{+1_(DBp zc!U-z&*SYvlt1kxsPak8SFvC4NI}u+@%q4~IO9zBS9OQIBOcx|xnB<{`KTI<2qBD} zYgyVpXi~QdR;4B>NNYyL?jLKFE<;QTa=GT79v+gz)2? z{L-I4vhCrv&92GCoBfO`Zp@#H9REbcx17>QE34&d4 z$S3>;Ij|?BPNLc3%UJb>+G^@$()eT3hRKnxCk8t0iJab;z4y0!^45g9UsyeFNrVn& zS@XI*u5Q^z>BE;)0rUsTmP1#9V?m+>60=R9lFwO(c6~bpMTLqKon8E}DQe$(cOdyq z>e46jf9MB@<4aaQHu#X!==brrQGcGD>B}B3fPlF8$agbqm^Qa6z0STf9XN86-cfTg zNhQ^+d z$$JTR^RJIlw)cBTx6+%*?d^D0Q#1lUsO<&zEq;aLPwH%andRcNA;;chO7$H0KmwyUHz${AB zbUWMxuO5jB82vKX3}-E)X$O~Kbtd*0@a@P;P&6e~#UobNw4>^|?k(O32qhjmJX5<) ze`tLT)@h@_aNN02Nns@+bCn^5v8etZzC}xYFe{G7oLTC*T6i2C{u?|b(plk>_kC94 z0IjSkGSXxO>5^k{9tHX*=G7 zM`jxvJYe*?O6zjZow$WD#Usmhp-!#!_Y!SZsz4+|m(S?5PP~}&iO>DXjT`||0N)GP zUH%&4{HIaCZ4U7}?^RH;z0iJek$i%ZuVc)aaG`NzNO{Zn_q!YMU@|I77vvqNaTL=g z3HH>gWa%YUs->gG&L-VH*WtFYI(dzr>Z>R<$ot>}kj*FAuhCho9v75gZmk(l&sqXI zhg_FT0VI_h*fezUoKm{s3S4&IG4Zu*VP6)h@c>cVCU%8HgH9)?YGpV7p!@E%*DXP? zjl+EC&%NDLQS2|e&F_RD70b8k4KkEolH1l40XdKEs7ml2oGv#W|DWEiS(G%T`%r#S zgTkB~vv|_$JEIVfUZ=ocr$ejzFIhw3?nEI$UzsWCddr$~#MLqC_@bDVPSYUGQ_iU4 zL5~QbrHaJJ-{%yJO@7aNkeVB8l!$CoZWCsNdrRa`{ic7#V>Dh-7-+54+oaj0CYbbO zC1N6AC6_akq`vt+Praigbthodgh1-xa z-gdRR)Lhy$5M5NkusZ$e%m#Nux@_jGCvWCkPispcO+15b78#z@e4b7ovj@}toSA%F zQ|kvc-e^P~FCm{T#(bii(k*0n!D(41QeNN_AqfSc$L1!z>n?^=c3&}L)J^S2)x+RZ8*k^d`Lq`4{8 zxZ-W}AS{`Yht@TM&J|J>@%H)95>Be0KhmmQiKCCUL47axVrH*jyYZYrnGHYjZ@w&v zmpYT~sV2Ruox zEFt7`2aO}Z&v86Bx4u+bWOywf&X%YP-gFmuk42}A#*hkm{f)qs1d$LE6INi3Wk}>) zltH@o6#Q#f?QUze^VdnHT77+Cf;{DYZ>|rj`@IaBEe-B}y`G4kJzpla|AF*?t~MGQ zg!T1}^FUO1O@%L$E$NpOmg~{ zPR6nV13Oj95_r8&S1z0>{ufd2z+P9^wGGF%lO5Y=Y^!n7*iB>Y*tXTib{pHaogLe@ z@#T7t`#HY9u-2Soj&W*G6i~2qdGD=#yvOA<^onv)%C&rbZ9^f+uUc!%noo6&!sq;EuJk!;}bNj!4N zrin@ZX0A^}!_#bjiySOyoXTXhM_8NN%=WIh5m&1r+#WJ zk$rvcn0JUzw&@JQ6w?gB=6d|^<57vVdNG8ZuYYl8Xu&ZC(p(_4~% z^~gd@wBdCcydE#2L(cxGm)+>vcPxCYt?9KmiktL>ewY;`+-s#*EH+~oc~mWCeS8t2 zNE{jes+I}Q>^W|Pyx<^aYMgK6x2b`-bm+re4b6DlHhovvd{hOcc^ zU6-v)x|Rcx*c=@7y_{4dwbaN+cPe!y$C^QWOrCGo(rrTZ!iMi2Cc^31=a8DRDZ(Zv zQ-AaFdZsyn3ZRyv2?8}O(H5t}Se1%P9(&>4w8!^0)XZr~hp#^dEaCL^wy`-Ic5idK zo6bv#6MP9OS&WX0QEgi&PK6{|O#c~>gGg9X_PtoICx3P^5!#-ZFXJV7Yw&sK^*74- zfQx$~`@(N>Gj)UZf8^(;Y;H zw7?;#J5tUa9&4HmO7=!4BZKHDe4dMYKaSiUJo0NyssmN&`t6^5X)y2a9v|)>?jJcT za&49AZZBn>-OdH!p{?8N&kZoOGuBP*(9#+hG>_j zCLM-y(||%Y(0dWr+u4{U;ACuMvGoI{LE-W6jtIuY`g*D8$4AMSzzIrN{r|PtTHC7{ zGky((7A`;+&csQw0)3zRzTEbXQz-(iz9Z0cHO9?hi2tYjyT7(u*IdJXvc#`Wt*7>*Lg(C=RX^` zLWL%2kLX%e{PTUd%XpvjvZ@W4!^x}?P}c_vpZ8OI6ltA5AwI8ML4nCd^ZqKpt}Dsl zvlXOjbxf_Ig)<^RM}&`GZz?M`?a0eNxBC77TstCO04?u5j}4 ziSbwZ6|HJJVAE&G%E8XX`>Mb6-9qWT$~Nn2*9Laz2mg-hmE2#=Qe@_mYGVpnT*8$O(7UXJFNr2KzlE$=9nkiE))>$*UA;z**N6v?)_gQx}#j&tOS zB>w^RcfdMp`=9*GB#zt6!NDQ1U^*566{Rp$FHr^?k6im&l<6V+x!_-yaGR8b{?xt+ z-DvV&s`00zr>&kKmVa|4N-et*W8lX&VXI;;o#TnDrn_1lk z4T%~^6}i|N%2hfog9xW&H2s>(ue|rA#yLZuuFM>wjBR$V8so96CTSt`h(BTzZ!QZ8 z4v*iS(HT}iOQ6dJKkJs&tE+14{=+k;!7Q|o*DnpN=T?9p&~NwksX>b}F0Sc|=FR*> zR9d1n_%o%O|CML*!2>R1llJ%b`#LlXc_7R9UFn8#W+~HvuR-OZ; zOq>4S5A@cL*7y%l|IaNkxzVr(%`|dn)Ol5j(xky6zLv(|#`Ta0v1KI`??-VWMi%{R zrwi{>&I$1Vs{e>F7K(I_x_cHSA$d*vH9|nqQR+|89zWiwu|>i>c3JRtxf0sZs~>vI zT$Kv$c+G+4^+Xo@S$4+pQsqgrz076*+P71>vP2fK3ida0R#;TppiurmU(b(MP=m|; z{yL8LF-`5)B}W56ujP2P5Xl2)OCIJGTpKqKf8vm1KWatJofT7JcoKJGY0Qw_tXE9N zBhRymtyXdfXUtT*p04CB%zvjmEbS1kFQxOXuxmhDs%QRVM*nwGZ$%${?x*zzI^@V` z4ooW6lLgPN^B8YG|3#d?ZZ{Cx=C<;Bs|+`uVBHz_nS9vtI+BDSd_DZPWZ9esRq(-_ zU7j!f;n9GbY}>-m@X|kn6v)xmRF#wMwN2-F(K57tJ65OVVV-T|MVCE(l;DzCC(O?Hyewa<6i0K=V_(zV*nXU`Q}j zk_B--I~4cr#y%UYd1z(m`n1-bzpGIR*OCvH5M;~|>Ep04V#4fv#_{jRlEE&LZSB_b z_+grtLQ0M;&0obI+!jxF)m{@muQ?Gy)3c4bosi#eCQJ?_fJ0lL-2mndY@wZT z6d}7+9`&;GN6XfVx?MFEMT=`vJTt$;Nl= z~V6Npj{yTr~~xx58WRChKrkX+iO|U5TikZJ^qt z%J@b!EbZi#xkPwGLQXQm_+6e!cs;zUe=g8 zNw(-GM>6IwjTluF&pqxrhQ)}@{%3tt;VOeWZ%HZa58cSb0qo&6!LFW< zULG)v?_5z2+9{TlBjEDN zF3Fr_P(k-O$5`z=ZC^4u4+&4&=@ukBlMj&>rZuam&&r=oNs&O^VGLrW%@nU{lOIeE zEg=3WcMP8kjZLaeg)t6QTn`QY!NM`Ouyrz@_Enzmy!qc#V!!3^NB|q$8sJM>Gbmr*RhuKi4IvVJ z@Y=V6+?=vgO8%j{5t-zRJgjCcGW@>atFd*H3ETdnBbyQG^;H~I_zIw|&-t;xn~P!k zrLc6s`ObK+Tiu>EMqTN3<Xi@aIz=xR=u~!+4zw^D!Oz!l4d_+6##z`o@WZ6<4 zaqac6%7AWh*mLHX@1lq9sA4w4KG{yw&LN<(6L&~H zsVyTpvc~|&J4CKpr<&_@B0=RNZbkk}b)ro5mv_qS+8&wX8A;!(awJj~zw$SS{O`ub zZ3_+n6&Vh}d52~ruIGhFG%yjU|A30{{S5Xpg;l2A&>jH=dyQ>h%QglT&Y7k}k`c&E z_npC?#8u9vCa}^pVhBV91FD=PF#?pDwcm>W?C3~untKQc&m;Og<6)(A-oohdB;OTQ z4M%Gcs{T}=9>PVGApuv%<qo9c?4n2kWU3; zQ)+H8nE$zOZNE+cMy@7Cc!kmfC?nKDy*v}@w^9C5?o{bge1<{1%|tBg0Eh(NEQazx?WdsML?}cyAVe z$c}ycPO-8+@fAd%;h++)XItc$^Z3`r`2{#OvzKoov#r&OCB`IdQWr{cW3hw%8O1E9l>Dx4ed(_@hkN%4CTkD*Kn3^cgd{Y|xF1;?wOwKYM*GZAR;bA_!5e`WRlK-)h zUti6}vfh;UN51i3q2$R|-6U_{9t`25{&CKqP(BtY6u}{j5Z07}kWjwmNE#<+ufnPs z#uY&wB9luJF8+g|oddNNMNKkWb*3G&Pu?6@_TS z-p_BADDD+iK%9kW<x^P@-jvh)S73^Ho^eE> zUupd0-k;nAgtmBtoqBORB`h*32Dl#)i{@kvaznC^18_}Cb43mo5d_j~V{s}5dvX#w z4*~os4fdV=e_7jY@%f{cGV0KOoeDlSg|bW|`Rxwfnk+XIHVw6<(TbbedF#^RH@xanS7IijU=vTpk}#qTEtj-fv?Z^T->so<4)@W= zM*byD^s^BQ&?nBMqs5|5ey|&b*GaOZN$+TKM5h?#+l$Ol{(bmS!MD+<7?N+qO#Qo_ z5mT%qEg}iq0Q`o0Bj;8UYu>cJRUUMepDL#4+73pEZb$cfy#A9>0NpX}7r3qc8Rxpq z!4JO5)TLV8R`G+0&@5*xXS+MS)Nl)ehAtAmH`P=|3(ZqD@0a;$bK%zkw+cPpX%k`H zoC~auhg5>E`LWfMb#Pe7V^{eDip&KnmRqb;msbcZVKB^gp zO2o$@b>t8CMK&4`ERg{-Va1!)GEHmJB9kh6ba@+jT*WnU{vC@~Qa0Tj>}z{)o)18? z9N)kVVc$!J6W?0%km*IFx|Eq?I~CGN)rv6}U=LR!8gEMmT`FoxY>P_iL34b)`o-sW zCM~g3o6ie?Dkqggnw(|1s#a6nbKxgOBJXF971wo!qZZuk+?2CRz@nkGpWnP>5lFu# zf!Ob)&G~5)lDwcFnQuw3QfiC)-WPR1ieapHB zu_|St`_y~OL{bdxiTZN51Qc6NS!U2VaYou~0>zk#LpJ8KMkW`n5&>D-(S>n;00q_) zb{=PopC0fUUXfzggozJ$#ruV6=%qUUa=v>ad)YuGb`{!Wh^;J6xHUg63JS9rm=<|5 zsBf#R*A3}tIHUYE-Z_bvCEyS#b#9X5bpiiqQ1Q^5VIz2dXYeTc`T~{=4Q!R+adcst&Vyxl7ROYJ+VtWmcdFEU(oiYk^3Tt+ z_qz7^9l~#onAW;nmxbmze)Ah{b#-~GZd>@Ro^$sa7WM^)*?!TL9=jSV&AxRVpR%o^ zA77}>?YA93>}TzDSe$c-nh<*2=G!93!os2fQ=Ns_J7D8#g?lF3-ghBl{uyDNQ>H{QCpU>EZib#A@fnQ>53jH!$K&^6#iqo8e{l?etBnKmA=>x6!cD3KVUzx~ zmt6PITmfrxd8@l8Unk_QxUi6geS;-qDkb(HyIcQSA3Ma%$Fn3ewB zF@12C?nF^ik?I>!CUtCo**0~t3!c*1W4p}jdC5of!11@KWXi{{T_J{GVDBdVJc*K8(M5Ahilm7sVs;6t20PsR_^)W6E#b zavj0wz;M~lH?vV$uo@DO_}GR~O46E@v~K;itT_a9wqQ;ep!Y`cY%7Mdsl+X>l2Ep0 z3W-I4@PwZuxGbHu=PjtYzP;=HC^^FBZXev|7ruQ%Jx(27!xapI8{WIpZoYXh=VGu% zsVlMbd24g#)WC;^h|e(|g~TI)tGp}pizwhX?r^kFKSHwT|IT~B%b;$DnxnL4T0NZy zE_W6CKqTJ|_K*ZBtfNgsoKqL0T`5sGDpY8G^vB7Yu$`jH3NAQe{6$rjx_Nk)rsn*x zhEGC-$~(t6K9x=6`qvN{q&0Y`>qIls*$K{{*4!Jp#;`^ipj%ZJe|`$M$9!4yTU?7Y z-bFy~s365DgWSH?VZKlg!!{PdiqEdP1&?3qtx~r|G(!h|n40KAN6Gd|!f^#8{9W_gELfCiml8 z(R>!=Mdi(}bXVq2(G;$3Tbn|nBb3t?adQ^<5BNiRbxN*P{BP{ z9HV>u?4u#Fx>>c{9P*$o+VPxDRBzd*;c2&7aJNX}L8ISrLEw2^WPVJ*keij2C8+2` zrOy-eDnBfUa~KH(w(e#ZOrBP)$!vN*S@$Ol^aNnn`)0jA1{s#HD=KFfSFL}Vw%#9b zH{S+i)N_%63kqn2nTzr#rO-wN6`L8v#k+bj0r*~jQ^`}Ce;#@_HHTtw0V=7*dAcqDmxRa~8) z7kzweOwS6$B?VYOTlDL$x`|+y32z>>ZzIyJ`>IFexE+}h5R79nDHK#VJgx|c(uz@T z;PQl)b~riH5$RFVlXO&J4x#?xX>*sxG4vma$we?<1;ududmd@}M7qC!eCPR(^@H#P zpCdf6&FC`?W4)f;kLu8x@leQ6IZKzrYKy6Hr&~F%uD47qrt>vo&>?a&l$Hy~H}nNb z4Urec)2Jet>*F{|qFSM&PA2sAYitt!AwOS5DXSh`p9XGgjXJvzP=vD=gCfh+85UcA z$AC5-a6E60FI&U!kXP-Cz91zabjWJs+Aqlm-xS=A^~f`E>4#;%E|Jy7b$L|bn@7dz z>ciU0pH;2i0}VI<%UQiWVYc@6!t2hvWydjXzT<+~1^?_nuXEfa0~wP)9!NT6giSx0 zAY50Iv+T<3*Bs==SIr$7Tqj!529R8!dK@PYUr&z|cQtjy))rcffBWLjYOFp>!;;uo zc49EmK68(REt-yoKKd?R>$&}`L|4tvyh4nT|K=;Nv4Rsp+l1;ffL!IQqVGE)1ssWg zyZpMY*>^9_k;QUqmO93#D_Q)H(PrWEX4kFpA-zVSYW&SAk?=&S&+U&O8WNw28we1! z4$KR+oc3`ydO5TUwd_dbncrbXw+z3@tx(_!O>LPjOgTI+plKtRAoz-#B*ea{5Q z0OU8P07A8E_Iy`XQd0U{-k#x>Wk=>ksA_YC6};(yJ=(isTj{*V@jUx0ebhR^Z@Idd zQBnPo7bRog`Qph3+_GHpT#sQkHTeuEIhy2t19%R^f^^tGm`(Jqcv!dFOJGH7Ky*RE z^LEdEV;Ao}W;C-wbq09e3GK6W^?kWuN>(%~?B zqAJTFd)YTj)E^}z^!Uy6XKRSF+;7(%-#>IwbjYf3dQjE^m-XnAZu=p{n4#L$d5AN|^PUo?%j=)=r$oK;7hvQl-^IAwEw_7OU7~*))@0LYvsK8h_xwr#;w~ zuGG(S`;V@<^t(85MD)pMiN-r)IjAHYaM!S#0>7)|@vx&ZQ~F9WBSPnRq{a`A>Kz~| zj-&hn&bjes_VNhI=@fRuJB(d)%$Ur+2(` z&p6Ng62P*w-%@FjH&JC>8~>b79kInhFdUFg;ZWv!xsfG!Kd&YTGW7GQ!fy2eaBnPi znT$2|lvV0*@>E+Hb^Ag?nopsi3Vpt9_mnMG0@fOLS3b%UQ0rGsf(|F6?{avZe7Ek7 zx3OD~km~u*12oD6S-H4`rjMOrDsqpe92e{dtnKX$4GT(^cXxs+6m>hCfnAv1{Pt@H z$@i$8&hZcDej7xP0B*ZjcnR$z+UAc@Ym5CzhD@i+OjG z=cB>X)!RAg!~oQz?+IY46l|LsduWniuFkq< zfh6^{Ehjs94m(=&iV6y%kfOpNQ&$gUx;BN`4UP)97}5P@I_)Iv4CosOcKcq`b~$`; z5`#qV{~(>t$VFUK@34Gaz4ZctViepV-{7cMJG=Q1P4tK9(-cy@d~EM)Xy%Xr-m(QMglYw;E;lKkqqz#8~|(fS7)~J`$Z#@yS;_ODC3+ zwct`*K_G>|FQ^K@K%v2O?g>C$XAULf$UVI2A1D~Kab-@55rD;5<;yN4FQv{U+sYOR zmvE=poiE5mfSrH&#WM|V-;`Q@^+`ecdiyoT9t_|b)_=*6mXD4GU-~j0=TmG9*0nlX z4K7{7U}7v$pR(A`gx{}@j;@B6mX?6Y3t>0y?6b#rp{o;%GEJ+1uPlObV8J3DVTSNG z9u5xWoXl)Xc_jtp`t*uWSUyNztRP=M)aTvv9Q&}h9z4r=E65nB0xk}LRFC*EN8K)U zOkzd_?hNHe|B-aQa{Z1>ff%JMp#jDWVKZcBxl(+sRvYwrL0TImldF$FtfxY{Lj?hM?S(3Wtw)uZi-#dW66~;3}Dh<4&b3z%Qa(RB7#}J zt6LkrCTuC`!=7_~ZsX$}Q{YI@y{E0e9_M71FtoKsMUcrQVX$OW@=K0=PbX}4@VmY5 zs{NSMEX1yC%tSEi<(H;N$kTrh;q^g46a&^Y-6KHqt|32e@KiORMD4x8-z?cy0?;b9 zWX>=VG5EbNw=gXKAuZ#hze(SDAa6*sho=%Qjq%%R?k03EMAST0L2r7GlMLJM(+ti0 z=G5xnwCT5_e`Z7g2@Vnz7pl7j3BXh_1Q;d@<=2X^(0qCa{-`|{1)S6?U_gXA&G5&7 zpnBgS`qMr{vCJ$cb~n3&f7AWaE`dmUF*5eOyPkvJ_H(rFwtnrr(}&xqng(%Z##qf{ zYLQ&Zdjr3lo&KpaUzf7N#6qbQCq0-?PVBN>U5P{2-y}j7-dl_!g=Bv9vEv_oNGq(g za!D#z3&b@F(@MwqsF+YzzNw3xW|Bgx}X7jc+Fyc#`SB~TD|FG|4x?i03awzpl|IM0MPrb|Bi zx-MqQZ1+L{SN1Cw6C33@d@A!+4W0*|Q=Y%05T6cK{+vdVT6E z@DqlBgsSfUFb>M_CxGha4V0V@eCb8lRO%C$4@LVVCZ%qaGAaO_SGPexU^uED&0I=0 zF^?jcQOH!mE!lG!@wY>gUnIkH=(}wkPrf)l>9y~BB8EhLh0PqJg1bYHk9LX^tT7v<9gCs z|22^-S3jXL{Vc?o)R1zB>J$!cQOtjI#{LGZ-EY9kT z?zWt;?`z!kMm<-j5H8% zF|LCn#Oo--mSpCx@n`)4c+?Eld?X+PCI41qFrg(p7(6zpR@H7PmCKK!8hE5BWT>6+ z&nt(cg;h&8T4j^QN6+35xv?rQ&3z0j}&m*_O!H zhvYi2G8Ru;XA${kx@$X8IKt|)Il{EoBd9pTH}CrPiA7HxXF{sK@roKVLAmlSC+Nxa z<3riA(00_o#pJF4hq;{3J_0b(TZheS!8~W)O@7Csj@rzt5d^S$si01O2mhF4Cg+S5 zZ)!j@Fp(S$c*V`(7V~A{ks32%fD<=lf&GPbCX)?6 zdf{N7D}FqEdc?!eR1&#_tpv3OT&7KeZ>+hUpqnTLYt0Mz$KCebTKf5|^>vO>zw!2%17wc6d;&b*9Lx_rV@UDA0lxAMku zMv-(X8exN(ep)$nZ9R}_^`94GwQ4KojmgJ6AVW-6`a{MmBbu#efdwU5VhmSuhC3Ymv;ebe-m~*q4TV99_KYrbI0=aY=kdrBNfD*siYJHbcHiUE35(cd zf{v9D$MVd&>b%=3Stuy7dh=!+*vi?PSUq+u&`as#^E^+6)mF^JZtaJdb>eTY(mBUR zO@8mZ7QyPF(&^#UB^EI0)1M(T+%}B@MGazw59rsrLlb%&a=O1<$Ms!Z;brpNJ>1&CWq5l!1OusIL8p78C5BZn3w6*?^_I80h%tHIymAnpBdvpr5I zfO|`Ts{nIf|D{{AGWY@tle@GW&ol9!C|)QW=q;PTK83&tXea=TJpm8Y_&43^JZ;Ta zCk66^YBJM#Nska7>G;W|n_J!qyiG4J; zo?{Ljne7OinW4V|Na3^}%rulEK@>%Bi_e5ZtKS^1@dycvtkL__(CT+g9H{zsTI3FG zn81G81v|5m(sMAu3ZN3?ild0nBb7!A1y`q$dd&^V-Ig*S(ACRN3m3?tmGp1DJ`}P7 zRb~3oL2E~4jcN*G|2xhkab~wtaRQ9NzCRz*t{n@Kd%l8_wiYW^v66I$;=^h}+6zz3 z;i05?@KHGjw@&tTp;Dv&CS+sa4@vo8y}iL}G8;ZPNu%syx*0kCB=kLO^2Nnr&b*}I zhcvkj4K#tJ$|2+a!!8#!hgh5GW*67@lqJjKCR7rEMDr8sYc-03{ANhVEvvc>7EBnd zaZfMXQmYT7&00Oo!2}6a^~i(K=ouD=L(}S+C_lfTI9Pah#izhTS~6_I@P;SQ_f!K+ zjmH>M`OKwAJ0gwB3Z-^@JPBuwl~$UcAk4yJ7>*Vs+Cx|@EIe6_?NquUoj;MLMtwXG|Q%|Yf`t3BYB}@wd$&_HQWT!c6t8`fTwT6NhRoKXSn*#f_it82RQE>7EIDF}8(C@}ct8 zj9d@16Qea9c?^r8qQ-Q`+Ij_rdA6;FK2|*8o%cx#Ob<>)#?eu3+ifgC2$2L&s5fRX zE6iNr>}VuBiG-u@JS)W$=`%PIMVN;?>DHCOY$n#+iKz-8f?qNgAk5eEC|Se>#E|}2 z^r;38z?~0vlh!ojFV8PnhCtc_Y74wGhVib1bdIk;kT|~0mvl_igXA$$sth2bmRm(( zimHQOdB^c_Nkvn6FBVL9%QfPKI3bml1M##1IgZ-AGoa#ZWZ2m!JbmGxn3U7^5{k6U zTn4ISOk@IBK((uuiU6f}Ml(D$oYvvG)`fb#{~PL-+8%qTU^n?K_cV$ZAX`o4b}$O*#PO`E7kg?Gzo%l)!TsK`!Dy-Tvm+9Op< zQk%AGh-jHN-9I?P3IO#ihkkPJHC4fPEDRB#LrFvd&M6x@Qr5~#K;_z7;%u` zNZ+BjPXeC&VVnAbOuDHNVnu_NLdf8hVc`~f5=k01A6)C8nQVZ4#m&iG6CyIy6pKjU z+z^K5kW)oy5`Zq?>J4ELbF#n2JRD$ILy@uvgSrswZ}lftlujDa zH?uR_-D`k!=j{0-D#;-ax6+SO0aw?_Rh35p9w_1{$rkzm+gZZIvy2LE7I!ugNeY=e zjX1_g60R1k6AoPxCe|lRC<1};>_;u*m&~XGFNa$dT5x$5R+94smDvJ}7RYh4@d@Xc zN|k7KnKNj1zGnnK%vvQ05dJtY->&@x5b=I%pk|QhRhF4=AM6uH8jw-l-M;w~#VW|I zaH!zaIKlw

    D{t*0-V~050zN%1--?pJ{%TQI)<>;aJn`0cEW;e98Eo49*hl*{oQiSe z!{wHDR&Eyuu0Wfk-FPe^qQxA=wvbDtX>P*7H9F0ml-R!#9K#Rh`fogqzAhwEG^E!E z-OqNb3-;@~{{}oYJxk!1T>F1D(ZopA>8imKTDk%fu=$y4y;^)ksd4qRj)Jr(;X$gr z!ro&4(0*_c^nhdRLL_8C|3)kQKy)f3Q8#sDIeA49eLq3*t<|AAh;b&UX+^Li%ERcr zP(i#|=|kp;mw}+HyYi@;-mk;OY%WnRyh_N1jVxAkxIQUG*9EG@6Yg#Ab0a1j2 z$xmfUG4(g*-&d5N!o3Du>~XXEv*T92INKD4?LN39oX)7J#6FcbP5Qu-5FBw6BC}$v zL|n;|B;F}cuh*T)PCWa|-6144LFg-@XH?C3pNp|>NV=5jKjIhf*Id6n0rL-%|{{D2x znr0Kf;)?%E7DZ_y@#;(jSslPaOxywdoKpicS3L#chQ_>@Krp1YFtMPLa6u^(cHhds zz#kQ;LxGKs+tVvEse~B9u1)wZS40KfFSh&cl`t+nE!R}HAx`GcVh0eqoV&i)DX9KUvasIqK zeP-sVk4vZ|^u!C3|Mceud6BN&2XH*l-xzQ6CyrfAfldkE8r^1(Q*v&2YBS!!3i!S} zagt~;UzPMj@H5}!LI|WLE%{?46PutKm@((`=*h+55fJ=2 zwMHy1Daq3+2i_K08Rq&4yq|v%p^}BS9hNUm_S!)IbF=Y^8+|)s%>IUpnuPVQi1B$I zk!<=G<)?ZdGLE)CgEHpj!hV0Emk1^rXNX631dl$4IaX&6H`@HGTBsJUGmj%}@G+7z z(KO?;AFGR9PZd`_F6@N*UFmW|LOc}&r041Wo{aJC_la}Y|9VN{r{|Ak($3Vb-cv0V z*G;`PPq3l!!N(mWyR^!~+3(m4W4GP{pwRO>2RJ4tE!>N)LW?1oVZAyHfGipv_S^_a z^ue2#!ga0lCEG_m{ogKuwB@rCkA#DCCrvTqqyE5>Q`VdijeG3OJC79D?W8>_e!No( z`PG94903WmbcdNMa(~BI`y%rDUeiTR6|WrgpGHi_$Gj3=lGo7PigU$lbC+ME2eVIF z+S*%7So&h(YG;v_{==iv+|B_Zk^+Biz-M~7E2_35T{fg!O9O3nYU8>d()xC7HhU4=%1@V48sO}|&?vKXz zLT zjYC)i5-P~6Z@M;U5pPh>IJm-1EI%lH;L1Gp$67-W|CVuh{pAy1(T}!VGLe>TvaYz0 zKj3FY3IucrJ*v6ZO|e`JlVBvsq0`kH$V%E(B)g^2!%Yt&bwfYD*WprC$s(2q(1FT% zRo1!18iuY?Ycncf|6^5`cS`@g3BM|_>X&38WD+io!BLxGjK?Pm&-VUYQOW3)CflhT zggY3sRL-oOQ5)sSkdc0ap$cN4RrVa}`B4l2`NqMM9A@=dc1y&DT zDJ1W;?;btqit(f&cQ=qP5YR5l1SOQ6J8vga5?-wqg9?_@*>YBw)b#X#@EaQF=yIg( zMMKjznWqIS`O=BW-iCI9y%ej)bnt#eFocCP9Je=ekK@U4g*ZFgMztcplM;cxJi9q@+8Xu`)91`-{mu^fW=CmCY`T!qSFQDgtT*$+I{ETLA8Yp&K2n1Xg^dbQ zRM|Wr^zZ>_R#`LMY1j@8C)V>eNk#)_O`D}0XP3clN3U|0b0emm0If>(tM<1m&Qn%o ztH#3uEn`czO7_tDeja~o$@NBnKro%S|4_W@EUDf9_9B-%l>3o4SRPTZbLi`|EhJD> z`SHO-4el{3^BjeV1e^+*HQZ(qLq*u5J-bt*Nmhm{bqDuvS-j2LgHd!{>mLyr&=XUw zR}N~6%hRH4ON5iD+=dJ&COC_OayJPV2e;$3A0}zy(bv%g{PF8%(qL$hwp2GI>`wP< ztG(ep|7PU!F8#0W@99DJPQQ2GiSnu&TTz~K0YQ=XLoo3GDWgSDt@pGlh4vwZ1bOV@ z3d7&IBo?kMWu?ZyYqaAXeZwc?CNFJE8-A^OE#WU;7J&RMJ8?+ObQC0x3f1W1SdaWO z)S{L3`@@FRx4Sp`+m#Qikj)M9%_N2(PMrrkVa0rNi6sV4lPQMw2B?|O&)~CSc3Zc6 z-+CG2x{v)Fzb&Uumn)P)<|l}r=VwHX)tT({%;E&k2YGP#eyZ1R-Cu8+fW6CtlwW!z z@Ny7;mu}^Yj8>pFS#=LE7u$8F&60BC$Zv}kIxaFK1nY~JtADe?&^H%9QV6pI zrZDpEv5^(?But5vrha4|k*ioH6zN^Sk)z{vY*!w8@K1As?!Scs$u)@5vEQ{_+Nf`Q zWm`~}ID2<{dlE;&gY?PzJG5me2jFB*1AJg*2qDV7A@G#SpbHY8Yw-C6#|~V#j>B!S zH9qW*GP7KcnzZMO5dVakS=H}7NZ2&YSPRryyq0QJZk$jSTBX)L>m7zG+CfeqQ?vKKI&TaPR`OD;Vsae1d9E#9<4 z%LWBquB-XsM=_OI_=vbEcG~ty8tuH9Rm0ac_XAYjC_C8j58@pmhE7}7hdjb(kD8UL z&dMx*S#>k4`zItJSetIKrnyp1?A2T+iJ!~dPfT4@ffC=_>(q>1XWTgy_~vntJce_;SX9vLKFuW;gd+M% z2pEt=oqDw6ktaY2Q5muB@{1Uc_CVkdjj`W_BtOB;?qROE$vE6wzGNtf_C>6{Mwh@KA6k48(3owPB?>t9 zF+EuyJYD|r@Urr-^K)xeP9l_O8n)pZI}_2EzIturIF|?O@L+m{HknE zC@KCMUi+Wj>vzD(g@l!r)r9<}t?&3KFdP`qjsXL1)ejY6oV{WZ#OFd&%o!l}n*gm_ zH$E1M2qs>ZbFUSSKZkd9ZKTg-C|cM4{@Ad^_XCbzv%?z6{qqTQ!ifSU79Iug?M=^I zw!V_dtIh*r#XzP)P%f`dr+q=_BWu|cn`c$#OVkPb|9I$o-~rpE+|Z{gZV`SeU<1>y zJ0y&W>!nT+qQqV?f#^wdFW$L|GTjKeW%1ZkGtX&iZWi`3W770XqQ;4`=|j=@X$@dk z)AU4aL;SMZ1=ym2x8-vBL_vsJ5Bg7PcGMcy&ijCI4QN4};s?U_9|*eZ z{nf5_H7R4~_B-U2&lCAOi5rsBHtP=_Cu6U~Q@bxCID)_OsZtXMS9U+ot`wE6JWLjF zDoO&0vfk1bb7Vj0B6MjQt~^4Hhm-!_p#Zv_32|k;`VSiI3P+S-KKtg;MTvM~%1~}b zodeY!9l3n*OxRU@_}0Od%n8FpiSREr8(dAie}udd=_V^wghnf|&+co%8AmPQTsQtJ z=6f{17)JBYB(AN@NkUh5UY)Zhq2KXh&?%w+dBb99w4iu%Ib$U==s^keNB`OFA4gC&WVJq8<1f7i(ygzzwNl6MCjJ~@eD?YDl@H%H(`*&y) z7o&2I=_KFt)oxE72-&j4fzIJ!Aj}mk0-;82FjsKo_K_F|HV!+4DS1LEV0(at<&rK@ zLe;FiLC}&sue5i5|A#bnO-J-qNCiW3@d*F477=#9HuM!)s5(9j4=+z%WhJ6#+nWV& zW@AAbQ7hcAlbT~FEEuDUe>{y)S8W>@%QglwZv04 z+zErNWRAiS+UJ+}BL*2J6nC7ioGfTIDN^`}jBI{NAH0{gESh8C|c z9=>`{UY!=uCB{2kWLG3~E z>Uk>5Zm3wL$j~n2ua+B5M@h3Nuh@4zUa9>082h;Lv(0+yIQrOhdl!RE zRP0Sr{J{AZ9D2gv2)|?a^og_Xtq48f&o==`B~w12NCe(Og?P`e-W_RdS;F)7W|61< zONfXl@>QtOXg$0Wr35)~fRhkNGMncFP0|O__)YZh0d)!HO#dcykaqCfc>x z5smMZkqf;tO5u#I_|VzZNj4#{oE@UMtHzYs^0A@EZ+ANs(;fso3Xz2$7zHGNeC0(G z;Q~;W5ahpUIXR42PCj-1_6^g0A#QGpoCr2J)B)Gb2#AQlWQH{ZcXwRkhx-^X(W%59eCkaA)%F_*MDwRY^az6Jg%4^Jn1*jT^k#^H60xYdwYLig~+f^ zXsLe5QD{%?eTtvoWhL9cGc~6FoyRpCYmJHzz+5RML6Oimf*^+RmSzdaZ8->|7?j{K zi7hWLJ<|=cbV0Oi#I67Bu?B7+Cpjm<^qcG#+VsW(B!8#R^xBqe#diaXKJ4GOd;B}Qe6{w0YCTaMlDAZo3wtd>k(9RqBL0bNshU)JQ3&+#;m3mmDA~x) z*trZYP0pq@`Uawz8Wm|(x7?0Kl{X(6HxNTy2Njwrsdn|>Z5zVmmMU?bgGX#EgH1?R z)KeqG0f!}9&lAi|N7Qob9WYeU0urB-IiK%Wz{c>qLO-E7nhs9bLTn&}iXGPsX=5lhVcm zr&1Ko7!h;o`95smuz3FuS-5O2#cd`Qu$>CV8kVka312DIJfOyYgbrooGpS4v<) z#du?Y1lkSVyC4UCTQetz;)PT;{JqxazLoiccF$2@7~=gQSKbd<;2x&qf zx|hj0A{$(_u$-_3Ko{X}0d3VGAVi^LZer;6eC=a@I$vMo^@Pn2m9~#76u@{Ipq***2Z2$B6a|G$J5o@xRZR9W=p4W!M=ZN;o!Har&F6{2DUCN?!TF|J zuMgm+fH4>57ExCZc{jc}%HXsM-ORR?F%?^ZsI%17)kP2?)s&KiOMjQksO}M)@I&GO z!}=?=_pibXp>(fMXwV6h1(ei78rG=r!n?wS&~p2@7W`KMrJ%E z9eMSz6Zk~F^bu(Da>n@MOp_OU7Ppp*hNf;_s8FPV#86ZttzS&HRV-Ay^tfkc^3Z+J zE7}o6@3jvhp&yDu=QB=fT07(rk|2UQm0svwiUKg`shcqLPm{9L=x3*-!PaKq!IZxL z+QA3XWj7I{F2DAsUhp46cd#aesNNO$sot(yGIAUP=)Yj3Ga)tg$qduvzXrt|CKZ+) zmkh_K6|hEC)<7^Vn!&^r8GM%&Ix;aL-)hU#z0tK9;0)YI8fT=ItQawEeH}^-$fET%Yo*a^FOdE}uh09$D^lu@MTD0++~v2I8NbP6eXQ!2s>n&Am37$fCv!&L z5$T23f1LY~d%988oVGAd9MX7myar)hV)8Am5Yh2AS4!mg19P(+UrdJbiU;&q^*;v# z+j#Pqcx`zvA@eJ|1 zSQo!`YWNrl$+oz1*~x6GXZ+q9R_5)SB9hA=@yDhzh8U(!A~tPV%%yBADoR3wSQ`EX z#tw8p4@>JUWQ-eV>Rr@6V7mD*$^}=r6zvmbp6(8(pL%`sTB!xeCHt6qlOCFgV{GbY z-2~SVPFYHzi=<>QKg__87F}1na5u<-MHtdsz$`*Th+%c$S2jEBfFZ%Plnl!Ws_TaP z3pa1@GssXL#6AKG6)aeLzHrz8OPJ}jChps_3;a7Gk4;S7pprrPfu&%pW#c>BhBFhxW@agUY#0Z~y!|Nk-d z4eW7u-QJUAVmpnUw6SeFX=A&wZKHA0*l1(hwr$(C-nq}YpXa>aV6OS^z1Lblt>j&c zl(f&GM^1;utLZruWnNLA+=hJ%)(3RpwMDO&j^{od z!*U`9O0H>n>5D4lwFBns#WZPi*_$;>XE=NAhR8yrLm7!LU1pkd3tCy4_GV2Xvh^@l zpJ4NlbdQn@2j6##yJI)x40C>fUX5>HM~M14<(9KSmhPmwT3RG(!PcwdkVin|pK|o0 zjwW4Y0L$wJI--~|+K;uka#hp}M08 zuWCgkqO%Z>b}{X)Q6;4$FlTBM~5iZPdX@k!$WH6OP$vZ$(Phe+s^7U#HYNvgFYHOW8vPtqX}wpA}HcAOK6(>-=+*S8k~y21VeYsP!tT)A!`iXFsOVB} z(f7es690^9P!~C2Y8jeg01k>eV4<70K>ppa{G8}~#cc9A$7lE+kq7ZbK~AnKYyHwl zpJox~V$uKi()jt zjzJX+b}B@xR$_w6lPr7HnFB#?5*Lnj(0S64SM${aS$&{SNd z*)P@ySN8ib8ht$NY*)Jy6{R9qPN!A{e4lNj1$8`SkKM)F3|n z?l*k0F1JFHpU_q`hZPous=@}5cS9Ed(s_jb=K%X8{Ivtr45v|jnrJx0z~KJM9K~2k zh>|g70xM6Y!#$Rz>Y9-9r%rMK==&4V`d^!Kx?X>Ad)u1@k%%8?irIe$dftsdA_NBC zIQ%b21a5!|Z5|oFm+8<=W%?%!R{@!DHvt=x(NR?R+h_ad(V=IQLxferJ|V0Q3Bsh+t1Z82>Hxso~H zrwev~P3CsB3cNr3LJ}y!RT@O$qZAT2=x2>1{HbBm7!O=b%u^{jjYCy->>H=zoSQ)b z2{qG3Mn(v85nHG-Ii#-qLnN%8kgtqnIb3LB4d z<|dTVXia0oz}FW^(rV{bl(WlCWKdw}owwezBe1W1ozJPNtk*P?T?W1n6%3olT?+u` zJJEJO=@K+Vez?)8W&Ry8Md)fsuqNkkL!=)&8{SUyHwH}OdahJ@GmFIB#mS+kU`0TX z+l9m6<@3WE##%}npwjcq+D`wBQ@h0_#6{%coKO4$f00r*B=9w+_jz=(d-O2-PZ!2- zFWE`iDbn4kC)lSo?CJhp>ED>mFR}|q2Lh!lj#oH9ob?$=h}}G`7H-+zeAd8LfdK&-5&fwj*xAt`gtJoj z<>f_*zgu@=#p@3ezBE2oe8}N@M0;}et%s_uB~=+?gy-{`;uFzwV&Y*QN+`_e3}DU2 zwZQ#gJ=8@@(8-|hBIj!L6vx5;%#q{*LG>-yy>T;sK9yUQk=S@(8BSz)dKUM^KvICO zkx^`8vdF!I*&a)`;|ZVlt%Rd%Xo@}FGV+`Y2>rN@d`J(9^NOgoySoZxWO9!yJJWT3 zV`F6Il^zfFbS1jcG@>$?C)bO;1;#bB+ns82wqX~u zFihRR;l3N$^3{L@;1k^zwJ*}em5XZ38qZG?BB`>~ZsWsKDg#qXmh0@O-5{F1-%8iC zc+87ST_GL4LvMx-MC?s$X>8Y)6+Pc!f2pY^%T#F>DxypCkhL>fwx@pGHzGNAhIJTD zt9WZMzolHNHv0MO%>gwl==%wP?!QBh4+8gRthv@%$MjHu`TjM6l%*S!!~>bB3H~%1 z@Rxa}It@nOud#|ORVd4Iq0`PSOLLor4hJQjGe?}_+tJh11SGzuP2U)t!~N7zYZaRw zilbGX>vy&ue*akX%PYqrV=x2b$AI`Nps}Y>?TtMd8PCY=GV~z>FS0_%1;O4iFPk^w zi3E}VwKvt)XyFHj>7h+L9|1d7Rx2oO;$XTmlpx<|Og>pa!0Sro>d)cFZ=6$t)d3tq zX&9JuY2%)n681E9-8F7gHrfj()UcHu@qB5y()tzLVa%y}lf~$DM&35L4CbDx1xR_4 z&(LG<1>G;n`9SPirtFTHP_q3Zc`a^ZUeN|HrUk|ly)?4zbt#dX@!{3#S0 zwr(#)#rxm^rUQ=X&3YK(=M&TJ^%7&__GHt;BHjG8p*X^aYyjQqSYli|q0)pnFFFZ4^NWf=s2K;|44Gp<~ zXL=+HzZtjZ6PU@{PDOoV>9?_AXY{?%0%n*g3?iE1BgYW#s4tl>CMKvz=K@IC>Fx4_(>Ryy=K3k$;a#m(;Y<7(M18YB z?#V?XiNfVkZtW?NT_gVY<(OU~-(SxaT zF!v_fNOP^$n8?7^xx}$Z{3(TolAc-+Q(A2AgL%wb6;)vH7c*>OUQNX)ELVZMfmL3T ztR056hoPT0l-;a8;i{jON^j;}y6S-Qmm`-zS94Revd(ZAWQGr0lUKG81Ox&i?%}bh zWZ5!pPKW4`3rOIF5L;5~3R2Noi3@-um^X6lXDj;ZizAwv{HDBmZXc~Jbf-mMfB%&O zIjyh`jhk*99h*|VVl%pz>QrJ*=~fSnCmwoN&&;#A-o!~fE-w5E9sWL{?w( zU&A3xo70C(RZ9zk_dCRfeW2SG^~=g?Td=6jwJub3J46!~7ue?qvTwu}RZaY=#B?la zdCJk(vrX5b(~$C`gm$ljtuV`bn}^IE&d2; zL!?z;$A)gaynY{Bz&_!P!vS#uoW_btA5@Kml^Ft=U_7Ljf5sk>DlSxQ)gR=k?s#{c z+<|VTGuI0W^0O{Q(U!R;jfk`w+NYy!bqQRaEF8PjxB5V5!dBHPc4Z1|u{n{Dt!$y1 z!87nJwsJ*P)};Ct>iMEDd7b?FL?LA=#NRb#Dx<+NMu-bT1jfVj7V~+UTGmO#w#~Yw zDmY4SE$io>^K@u2+&y!ZO6lir4|)_`_3C}iRyFhMm9w+cZMO71 zA3ZzH-#b4#-yeE`0Do89s;kqEUa98jWVYR`|U%-wyN$zJqI zZ|JkNY9gDpHUL$02CdMof!jl{LU)u@2N8c(0&b>Ra^_OIM%epyn<}s79ELpJD}wAs zix0L#?GKiy-DqPt`9Gx1tgrh8rH5=rU9NlkbWsk?0NIcZu{uWxe%*9zd9f;8j2v6i zO*>q&RMf^};hm=PWWK8jB_a5NtEC>6epRQzc>IgO_Fqj-Kld5Ra3m$>Iv#71`ed)7 z0=LMfc6DLbbZ#1)*#Xb8th=${3wp+k6Dh!~e>;b$Vuv2Rfl8XvQlHh|IdY}@8ddCn z7MK=A66y^yX{ef2B#k0FCaBW|7nV+oOahF3jaIiua?#6Q$c+g2Jc!!%iz}%Z%Tyhg ziX^Q{XQyCb>6EY`4D`wscxUOHP7^kG1zm7;NmmZ?j;cEHB@bN8_DBU`Pf5E;qTx6` zJa>PEQ`$V{OXjd*`S(XoIZ&=aO(^rnsG0@S`(vH*BX+`z#*U$I6 zw6iZRrYGh!S@KVo-0nM;ZL~O-g5h31Vp<@5Rsy^1ogbaP{O*aZ(t%RREa0T$^w^uX zD+hLA)AJ)EcfLr0?mQm74rssTyp!6me3(B=> zZwB7`m(G5WHA#m_+0(WsO<^Dxutv&kmNX#ll4IUZ>K2`9wM#(0gh;7I&=R0HpB;E1 zt8UI;_Eaa6m|kQlNixRf?+{+;vcnWreao+-=ya8lWq$0MW?MesU*u1DUgZVCy~Cth zxwdXw#1!aqIu$3)sm9|n(_Ww2mYmVZIy()cke|185{d7RU^L^hvC($GQP7B4^0&Xv z#D3#3+KVIPpZ_1|@gGdO+@sz3ptbY$b?f;sJ2>2Ok^C>-Ti>rV3wLqVKANh#t~4$F<^#>jzmTB-l3u za_0I5G+)yPTPS2x?ddOB!q+Bwu&Ojn^`oPC+6MDj2?Qx_ivyi13mRa`lB9P+mI#F3 z25Q|)KJU7u(V*KO!Tno*>A5L?TY#3Y8+i=d{yIuCTGdnsD3y`1ad+-#OCMJ)UDvd( z*Q~AAv@Y2w+OS~LyqzC7Ip6Q!f7Z-zS+ZcqT2Qrg9QUwpp3y5aUbb_#x6kYF{rq@g zndF`AP!sISyKgdxT}r%0>KZ#wXLLV>Yx}sirS`v3YI1nTU-NxaTG9hQWDxk2sww2D zy5yul**OOx0tor54_#5|YC~imUYksA2Xlo64-e#L8(j28&_!P-c~qAe|3dV^efaB|1QL9GxrU^r<@6P0W7)rf4Bj z9$>gG#W<5OIK6t-tkV>$nDXPr2>+7cJ5A6ot`Pmr^6l& z0-|pNut$b}%U_60@mETXqUv1=|6Xo}wvyv7^sQNiPQ)y)8@a1t1s`yFZC(k%ov{c8 zr>dIML!RAt96vz_4f}fdN?TO|%H!%{TgfmPAnd+xDx;o%aiUTESkeBBQ$bwcK&>~W zRl5vCa=@}1*tW6O>PS-CiFWZaJp(Vi)a38uh1zRbB134nV$?4%?yT6fp5}XUMR60J zDtN_~$3x7=V*2~R(^2qfA3_jPL#nafKFHyxNr-IUEAhtr{qbID(`O=_KIASIr zX9J4)uS9sdfQm&9lokNY8hker|1 zx8JhSk*OOV_Hq@$11T@~wgodRrVN`3jaIhn4zW?UVhD^L&!M_##$LQ$j zGdBOH6>Ju?zSk!crw53rdb|0;>HXq9OOaLSb*v^$uJgIzxulI zDAGqM@P3y*EW-uN@q^ABxj8YGj`~h&G8G~kMP#~_Hu_LAOVnq_fq(a_7J#RLEa-iIaGEj+pGl)4gRkj4L#)=&mM1?pazw zb^Ex>?!7xh1SNfPYPY)kXRyoj--$c)G<^>^ZTCd#&Aoozo{Pv1eeTy-Vy;sez;UaJ z_WT6GQGA*Fg3k7kN?ip}@bv-d3E|WPUmRZvqwJM(j{1D6I6oLO#tywLk1yiv2eQtd zF9LyFEXnXx+{+)i7f;Ce8sb>U0Qv&T`z9R4Wc{(Y&_nT zZYNq&?ww9}=Z7Id3f2;?Me?bx2b!b>D6k0?+9_!!3#Z=~R$m9$v09#M>4s$z7?erY(b{Z~zR4{N>jE2HsCoY~PJ5cZ%(})mYlQ`$kdT~oaCjK^MP6$>s~Ct(jw+Y048SID za^rFRXhs8UhV(*ThAO;2n>4xXg5&es`NEdP>F{d>oK{jrv>Y$P-hjkNpZrfVwb?;h zKhz8+FGMh2y|-uJF%HWk*oe~4oBAiXEEFp{e~HshSzT$k&qCe(zsb`Z~L zi4|9*f@h`DU9);I5L`zw{~?^$3+B{42;bNMUDZsB!u31kZkqWoEGv%&@ete2v$Oe) zN=RF5-?*@gt8$u97oR**aBD&MMzGMr2bfyWUn!`!y!*x)S^9-mch1h;d?fr6)0t)( zMM=e&EIbySQZeS(mGxB3uG&(Wi6yDBOr2%*K>|MMB(9oUgq;SWE#4 zYI6!?)AH)B)SZ6W%&o!%-*H_P*$nJ}@wP)tOJs9b_~ zJH$3y-kntZE8vOR*4e^-gSTf|_`+t&ijSr|lHI<75*?2ls*=@bUnooE!GY*>-2x6- zxqFl!X!!bf`4=rQn?YP3ooW{)alhX|_*;KN=CST0tz`IX}{PL>$WalJr zQ9bvD>XKpIT{D1wC4iE)7&80fJ0x`lKA&Vj5$xfQ3r$63cdRJnUA$oTxM<(>Ie3Bu zWD*5zWe{ododVEKGQZBZMDI^VOF!N_G*o1}!{vO!1q#zA?&`RUo64!N_VL$=1SYW0$qI``iBGzC@KfU zx?_FcLY;&Y3C%D4QBV0ylN~E}2ZIZ_E!FL&Nip7>F#~;_2Ne~}?#&keYS-VeP{uc` z?c=*4)-FLEh(+vUZ)rijzh|D_6{!kd7|V%q+fQ4(mf7B`P2%|FBXfPGvz=QCy?&5d+nGKtrqNtA~NpBMbt%7coh~DIoiF?Zch)fy3` zYXVekHo+uU7=mw;fxu(ybetcs5;JvMyK5(GIiD^m`Mw z+Kn{YH02gBBpZyX&NG18b+`1w7YkoSaVij8A4ZC{J-VH~40eTwm1hrzo)_Pv%P3Qi zof|HUukd{Y@1isInFjYMED8&-(3Ze&{>Bn{($-%Cbs6d}ky9M;!b={{zW2>g`%0lW zr7W|e=zqVIhe(O4qkFq*FqF8#qGeY3?YIwM8hD~_;*99g3a#&SDsSlevnD+r$8>A# zxR!jmssiuhF#FZSEf?6E{c=Z@>uZP7fM8A1)vC%*I182Sv8yGG!V8lQ#ew?jb~0z~ zc2ZvH9~e3i)_-w+N`g|RwYq^#pO;Z)1yNbfnp4`E%vLPkT#164n@e6YjNsSfWFheV zU9GZ5Si+CRhlR%z-DX_2Yd5Ct%flHr$flqhv@1av;!R=4?|k66-(vxebO!1NWf-G~ zU;KAtW}^rD_AtSxaLNLdHsNJh_IGR~BwDh5lvjJ9_x$J@91e9eueXi}a3c0Qx}EkKq|@cKTCYjaG4gBgfb@R>qU2jKNcL*U62tRE!k1S@j`hjPkrfe0l%L-2 z*UTE$jBzY{adu{(u#8>qCXHEI2`E7LW~BcUx4y+Oi%(5PbkhtP#D0ubB?M8h7zQ8m z=Fsi6mr`o5FqNBB9_c@(IEx2u?$gHRkWaRUx-_X;R~56yLBwcHN<%+nx#lAg=I{i~GyfNqXO0D0I`^8%;8#{q5n+UzVt8P2>XpivnRx7L{Jjh@O z3olYD62yV9ALD=xDS+%D77P2=@4MMXTAaX1cj!^felY0CQh9+DGycloT>?P)rr7UG z2ALGaq3qI+5Z7zc&X-tL1Kdfr)DdQ&i$i}@qAb}`?QVzDkgV@+;SrEF;&QpB7jUXo zRmCY|@a-ujnW0@U<_kW4K=`oCUE8i_OxM^Nx%oXCwZtGP1z%duFq?~xNKWJr#A9Mu z$Tj;=o?qvfG&_Cf8{qUhdl=|DcMD^ z81fX7d<)jIs(IwRY}&*1lw14@QxTpx@n-lM z*pv6T`mrWH6fKo5p*=)C2<8eDr#OVQX}nvG?Y64kP`LavRfxe|;Lx8WqSGbd5J#Ve z#>7i9=pJ=@h&(O2)pE!c72s@`b7@~su=8`54suy<^*hVf+!&&|hE@Pb2|!F0b;`k@ zG(ybXs@?K}2Ks0StI}JM4bD-j1V}_~fTZL@Sp9rGCs$Vnro|j2?3txQvRR|+Fn@W! zL%OpIsI+yRknr1_m^2MJRQF67?TE5lxbR3dS6&@6a9}7Bc%4~gibl3<(PA2ArCIxg zTbUN}cju^L+@E3CF%El#=F(&oS$K%A$0f#R)n#cm<_AA)?~sV@)u?BuzZ|_;;><4N z;IAs3oXf|!9RU}2hH@wK<;mPmW-#W9*h|I7++CRn9khMY>=Mc1Mn)vMYy#UwSzxN?=``S;xqwcRX_ z&W1>&tSdZW70s>VFp;P5IPT-tzRLEJDRF? zUHAQVU?pjc&2Jmx6ha)FJU83BTk%sK;Ox;z58?PgtBe_FOY@%`$J4xGvT;_Z#Jbf} z@s&&r+CaV2Pb)j)renKweR0lP5;7!V#xQW}=V%wVU!+J02n}&>USL);lZc^3z~m?t z2_!V$JO^km0mz^(Y*be#fSO%!GQUQ%YVU1%Zzn;79gSQ#=vdkXUU7%5U+eDZ{5=}p z&(LpDS}^fWLC1J$6RX3K#{E}d=Mh*kZ_zjkJL0}&p+Z(71l0mL#zFuoEUHyD#>!=m zP?I(MW23KX`RQ zLsbglj<0g;sg4&A2ma;g9M6w{=OGc`2B)f)tpE98RHdrpUz`fN)C%40OjJE8lHS<0 zfTnFELIU3C?TM89s27x)iic4~%7_LBOSEm=Doi^=dihgd3R$$TNZ}I#_ELl6Mt}Wg zyoicRibnW^u-&E3GQYu{_$>Hy@ponN5aBxepqJbrjSw8mC=$a1(5WS~0PsT#b! z1@Xn%lpEEhF%7&*Y>1Zq8Z}N4)`Zw1>s603)}SlIK)k|QGkO2GRk=7O4G0TU3h zu*RJgZ1=$d^=_u6U)J5WCaP?UJ){Vxz`O>Nj=7&i%e2|i@I3&3SH5G}S$3tQni5LW zDXwIDVABK>Z;zC~0c8WNf!#dk^0{AS7;b%eN(ZivyKG){`za2(_zPn9b+mP>ftwkP zc8fzaIeuA02U4l!sGZ%LTl1AAib%WbBiPa9rf8&-f_vv8-^2Y>1j#ov7{d(O9nuDk zLF|}S$!rE{digoe{qKA%w=K;-p1;Tbkc7_g4YGxC%8mG*4jZ+y0j3v$-)ER3=MA0r zH7OR&CYqHn;|AOhWZ&#GeQylMO3x5g7kz}@BrjVu@>>6553~Jv$n6rab2_Bw=)eza zCviEMg2F`qlkO#$UN@i)O2h!}@+|kkdkas%zD&6+@dH7U-Q`~a@W9;JnO7-rOq7ZS z4`-0bajmV#QCG$RV&Y%LtWwg=3)G{8J>P-^%+n4TZfJ^Qmm(j^3>ULY@w zQf*Elb#b>wH8r*U-p1i$YG%~ve2TPGXAZ1LeiZqOBXsw+gHTpRE9eWGRg9|WG$o(E z*-LCFXmO#v_O(w$?rObkmD|@iYjbBJocJ!B!Y>sNG$acUY+j6&*Em#>uCqn#j05OWS^G~TN>uqp#0PVhj7q{tbekrB~sNU5fMKx!4)(+BS0;OF+%6BD=r&T0G4 zM@}nT`~Z-PM%dO?;F&MKU#E3F?<&i}8PY~hClDkzOxkV2qa4}%LW34!X7ab2F6$f; z@m_;tVlOOU;(@-m973Agc5?t;-lmBzh-89|R%}VzK6>k#w!uLxE7VdRU`)~u)h0qV z-h6Z+6io`p+W%A2usjpqJmlmSzYyWYQYh6SOjuL$5mm5)UT{pUiB);Fti7qEJw$R9 z5#^CSMSY|FLi^_PxjzxVwXutp+sAlXu_IKqG!yXOTRU$teo#bFhYS1nx(%hlu9-w; z9l>F;q}bCBnG+S!vD#*5;Y+-f6?&QLAEjaGTYcT2a&2rXalw?ecdJ#BVH64Q;NBT^ zu>>YN@+N7K-_jUUS%5n}=qYivA2?|n z+^jIFe3VmoLSSnrQi+T(0(NxBNLxj1&nb=&e{zm-Xi9S%{O?N$)e+GXf=B#VKzG^W|a)FFS;zrJKZc$YYo?J7f0n z!9+k{HWvN`K7aL4OX)#1eGFV>n)Vl~w=|CC!`4o49PL>X#Ycn;f=)C6N5hJ)XW zyj?9P&dCi_!jfr`rTUCaWlNOX@=c`Oh1p)x9{tLLg@$}dzpZ#>#J$Xf-um-e*so!Z z!hLGjx*kxAYp=c3X_NgZuBN3;*%sNA=d6X@@0>8u+yX9v)B$Hv|7|U!P1ZbUJ&_RZ z$8wu{0dSFLdtk5MVSBLvL-@DN7=vu@Q%C-seu)3KX=wS+GW~>XZas{hWUHP@jHfU5 zg#bAi;E~_r>FWk{l~{^(VgcjQE)=I&HoeEkmM=k%D6>6+!6=VuPVtv&>Voa6EB&Qk zXQTze(&UYjywvpyOZt5DQSgTZ#8!LdFzB|$ai|)0mlgRAu;z-!G^0D1X)yDzeCTw} z^gKK@jl>K`91zOmq(j2-WG1_5he5eIj7z3gD=%YYo>lN2kj*Shi(p|UPFNcNC`w0EFDY?NeVdE z9TWpF4hHAsMY(1WYpBh1Lf_m3$l{SRy-1Sm${;2Ox@ai4j$+uRqeQ4>p?_Rl8X@*& z!Ly6GZ{Cjl-l)TEp2+3%eh;j29OO^QY6b%dm+(35@RO3T^*wCR1|Eq5E6}v{THZ(_ zZB`-EIjsFl7bk^5*)aboBNkjoX>LI~&{55j{p#jz+&^uzxsKn{AoogWhqV$b;g8iN zI5wHyhW7uE68}~zK>Y%2jSTX}CtC#kA=6y{HcZjdva{@vNPAVGuwgHIVil;r`sJ{@ zSh@%U>IX`MF1-AYF@m~?2G)&%NCymCLN++uNm|R>jdj9i*@W=|gI7-d( zmo);xm8SSt$7P(|2Ka)b+=$e_9rEVs$>k-(A=e^ld2ZLRZ~>+n&CmX? z{=3Z-(i~~Ln1UFD7_a9lajKGIwtWQ8zNOH0>XYs93uqah!G9~dMpDO~^dmq!VBl8| zKZ?C-G@j+4q;vIHdMQr^0v|D$3O(%ou zf}K-J=&bxEme0BCCYKb~mq4%{M$RSe37Y|prBpHQ4{;mkSRT{pVMP1iOjl4S7O75| zG%LImcMJ7)RS#H{*r9MruU;32%SobU*c?U7WUmL>2E@9Zw^k=3GluT&owMPPcOh2D zWOOTwebu~82-G&UcKBqe)c@C&$S}0;HMMVwW)0VPmupST)L-_^&@r$7t|Dn(p#>oevNN=F(Sxg>xc zBKEUhbx|yP>>HP%Xu1g0;TbgWF@RD{!XDyD(~u<~MdQqCCF`bPvfvKBLavu?gJ4K+ zwF$r&f>L9?LZd)=uTYQNHIqP*S%?{MQfCW^d@jQ7>W^E)$_cDz|od;Jsno$(q4EaYxO;6%0IrY|IyJXQ-CU~G)EBGjGkNUs8#jtOtf|{c3zX- z{e}thqFVr4$MM%%)$fY|h*=gTf$X>!v3hQItw;i{cWB>GstlN2D#BPZGJW8p(_zs4 zIzkh}@4B8jo#ETp-!W$SI0O)(2QJYI5gV%U&NdM^Y_&tW{l^(wtU0P@pZw2>c%UL= zZW;N!As#OIL?^kpyybAtr<^3Z=xGLNFyi8BwOms}QFC|en*!}SJkf~QDB>^Fvq#X# zBKgNAAc-t!boU3$e!G_4PV!dmQ3@xL5BtP`8=_;C-Gz>nK-c;?nt+lyr#L=Rade@R zR+{uhhW%8~#H=X{TemA(1>i!KmuEa=1ay9Hkx?u6*M1l@e&a-tCaYeI#_PmEuGAT- z#)%8V*wCPwObGf9ktGO_dk+wsfc@E$d1BjyXsP$4rZedEQ`gh)#(4Q z{W-6TH)PDKS@}~H8X0`6Ipp0h=53z5@$y6h0#8+wv;(eI2;VtXXH{!bI7jC<3f3x4rsNBi7W^ssXb^Z6f8y5>$HTYhfC z>BQ4LyG2gh?qlfxMNRPi=&1~5&@`9XFYzUU&!$eaM%i}x1aUfIfe`qBlW2kQ#qVLlgx zq9yKd&hwlf1@LuOt=sYHlH*_!&hl=5=J`?1+LzywIT)mnXaad^7LC%|XdQq|^u4H+w`*;_ZmkM%0k5xl*@@(}mv3qA^fonX3&izy4Eb}O*At%n% zWTNU$2cc+^5r=d`bimi9OIP31Wfoi|0=OR=sazC`Nt?u6o@4E zm6fiH+RPQRSPqWv8=EhGU4uGcA>t(1T1WBn`BzS)XOPI9^u$!2PeZatExyhEY5Ca@K4K1@AKvEIwPBHm=LD6)De#Od9}rP?;xwvF zWpbr+zoKl`o@}KA6wnRBMdUNP9#aD_vo0SjaUPioH+a|)-rYi!A=~FH%AVb}SJ2jc z2|}6Pn4N{F^gJu~5pp>j>Q$_)oW}a-Xb&wmu&V~ntxCA|Zgrt(x4R&@Bmz7pDmlQEEg(~gD|cBIvX_c1u;lwzf2 z??0*TsWb@w(-;hssSb(OoQQFC6ex*;;Mqy#EK;(`!57}m1zoYHJo~xHeJ$}`m5iI<-dZ@eeOlCG=5?ikR zy#kLlC5Na+N`pYFiMH0fvO?!zG{Hboaw`rE(3Xa&V+Zm|LMZD79prJ2fdjaC3+`W$ z?#d1BX*D@ zS5eUfA-uWVhuf8fDZcEUE5I?U2^K<|YPZu|My+zb8-Ngi&*@;DvHPkx34p}qQbD}U z6O707{=rZsOV)6ZA6zy1eh-~SSi&Q!ns)mp-9$VLl*FUZ%@;`z-O|~-X}{zDmiVi) zLOE~RhUMu{3@+QaHTk_vQ zqiO`UZa-)}ugOM=(vcDXVUiaI$|kRvahQ!U`kO{2N5j-}ddM!N85p+hKoW;Yb+GiQ zLK5NGpMNm~g;hnU8$s!2+1>`BH*1>uvq$~aJU(i@ozQZ|IYci11lVn5LvI0h4Y6R# z57r1hcnM+hRig1CWOtD8@1e-wFY8=WM7Y@&ix1T(BP9A*gXHut#5QITezluhcHLk0 zY~pk8$tZ65ii9dKG*!h)^hGZ(C2$`RV=Fz7vfMAKhI{S5d4nT-ho1%?{AB=k3|>dG zcS~zPB9um7H|zo6w3oN>LBTH(xynx0{#`SaNep@pU)LPz+@-U%^zu`PoG zf+T|iTgTH?Em^?50>*%rKCGPYG>RFS1~C98skOBwka4wdA&Eq(dfkQ+>OXIzqT+1c zu#9uM@NHF+vS3sTwBXO5?eZR!;AjO(XJPBk{`cse>Ng|ftg6dQej)OsWm^OG9Pq9B znSvflc(uRs{3rIjj~-g#RW(DFo99H`Vn$c1nyKeRv6Luh<~(!A5gnjdi-0f)`8?3k z)peIjw$HRki))JsFMLks@ZT>+jT+Zwy^5!<43X$BDF=*fv;o z1d+9mI@nvMCdydkdla0@#HVs)%?X?Ep4MWf-I~_!vlAZYuGJGYWF3@&tTZ=G3yzVp zou5m@tkTfN^C|4&HYJBjq`FZzSJe?=PjleNl`A`3G$V>gpvI*dW)nR=tK z^XV6_9en^d3Yh=BiS}E{{crszj+G##+7w`M-;;z0E8KKsh@fo(IsRi)l4{cFy+z^| zgZes%G^BJtY2I66*&I-Fo+f#v9}D=yWt0CKKr$*^Fc0ze#*EbNr-Qb{5IgK)mDFREF= z>tM5YY!2g}VO1+cLTYtwvol;nED=zQAZY?mzl8jfiBJ>tW0a#nl1+|99ed~V8wI0P z)sOtmDMnX~h+|Htf>uJ^&XKbsTelb6-lGL2Zq?sVBuj&PG7BH8C>g>$WccmYDx;?q zWYf{%uoKK1jyh#~cGbD^xG(ya!fkApDJ%=(KULfQ_!|?Pw?Rq=lcCsPTjM^ut?A5I zg{2+H8q<$VsGYJEl~=^G{?#0;q}jKQ!dC>1+Xm+5NG0`{)M_GgEYmiPFhM`}ojG}V z!EL?Xd3aaXw#ksUK5fce;hm;QGYUw96U2fL`J(7GM=`?v|0hTU1WQ#(GcJo#@t7q3 zjx)mcCpDvr&<0p4^1H2mtsm*36sewZK%GL05=HPE7N^+_N7I3YIXVyvN;3+LSz>vq zKv{(rn^JYg0((TVHN%6{C4Tt!`A?lF|MO@0wpXNgKKxYeWm;p`!@U<7qJB(E!sR;# zM}V3Yun!Vt6pT|-(^0I9c5dloOesDaD&WdHKsoSywd?Y46$A{*EG|nn|FG7;b0Bg? z5QD(0IVk*rzWW`3@Eg!s*c#JuvCM;H>$PKEq+%KOvv&KsRIo`=%~-byl|@dM}nGQ$|qcvl!ujg*NbT{04-q;+J+{fp&8@=l5)=gMl>-7D>xPVNj<1Anha4U7Hft$+rw9u6sGoB7Bxe*B zNKOtD0L_}w{Q~!zEk~+FcAtgyhI9%_F&?I=f2k3uq`Rf?LH13*B<+ad4p@kB(qDRHbg^_+?{%6PCJWvhe#3B~0N;ER|@LF9RjQ}HYqClh2ABh40 zY+asL9v=J6AV!vU%oop>T)P}>3JMAz|M+3|M*;q<36;v*jk$>ZYX?`I-TXMG5u%kH z7aQyUOGwrB$u=9B&|%V3e+w4}Q1M1LX71>f%ZdXPc2Ir|lR$EF48-73pUb#pnsBwufe7J0D%HclrlH`R-zV zBz^X+ii60xzE2_lIqzoYzrU-dudZr;IT(ipvO%ab`2CP<*8vKF{rhNZbU+%fi@!98 z56;0fzsU7Qua+3>87d=fH&LMEt_cx6LaNL34i6$*x6_tL^Z(bpzv3#X7U zA%XqqS#un#VZQtQ0z1u>V?3!XNXL%i+$RGDi6g8%r3m}20-9*jCr4rj`E z0H7r7KUdrwz(x~LV^wzh>n`Jaz1i3M8ony^A>Ki)*#}JZ)10I;Yx;-_*i#Mj%)Vi# z1&AnC<|(v@FXP&4VTJUhxP)eIZff!N-YRp8R#u>dMn=$R%4F}@9ftCvszeqeuUC*isT28 zG;sWytWZEwv{JRuv`w{KuqzQCF+WMa-8^cbV>%WSZ&3qQ(Mt+sO%H4b=m_gT-VK%A zvZ60P3^;hulv3cf>$5JZ_o5}Mx~6u)u7-}z&(>Cr8MfU?CN#qIkE>Q9zcbkQ3Jwj3 zd|_xJJz)RUU~o9@E?>90*K6bc9msePWat%mljc|`i7Nb38o_qKWk3Bw&T&%$+Ms|h zV;2gIrZItrUAKLkb-i;Ea99m->TxylPjdq(>$Ukha;ti~4_{pB<+~VNJ23?tH6P_X z0g+L8{{@i=#WcrYXe9z|819faO|WU+NzIut=qw(;fatWl{uvG>WuN#ZE%)~~ImvHd z(|KrC7H@b{FD?oKJ}k?SeXlNmWb%02;CJq8ZQTB7^YYx>v}{7CE7;wI-V*R&ey~G< zY4_NL0{RM8m2Mlt?QOHdH#c z5gn8aQZ4V-2WyWC>5nvhc9hdU&G@GcQu+DZ!>svqi->``-VEoia-Rd$M>PS~&pSIj z-m7gL@I>vOaW|Wzbu}=@1w&o+TF9#_xb+u3N%q(q9uY4TUEHo#eI)M_D>Y69er^#> z>S%brSvQTE#}WT@0e~4&McTM(bXHUO{@!WR<$bBaQMXhMc4EM&cVF#~TXe#*7{~=E zYFK6cpPCf1;nSwFmh@+7A~>rP^zU+01fh&;-)^Q%#n$=Q+4{bpK2$?rd!DsNY5U?z z&=csH+>bF&HjJ#s_-ug_r%?&+|47=kf@kn25Djok*?R2i4yv)+r*( zdV)(;9W_0DewP;VWJ7xU>yndF3&2)8RbM|lRl;g8IT5rcl!xdGxME$guBhU4COGTp z9z=JI$~d$3;6!XivFzhI?fBLp>Q=*OQ)50VMCRU7PpBV<^IzhPk(K_ez^Te(cJOfN zY2SpQHv1`iH#DQZ0%?*2b481d{8OM=45l_m)7e)BtxSO^iEn{OzjgQvmSfgOE=Jg9 zjp3?k&#&G?<&;)3+@2NPkdZWCH@QJkb#x?qu2nQIf{4988Q%ARo2&XiK4d#}qiZrf z6rMzre|l{_^78(%2MVd}pHsaf{ob`&r0-3lNdYO8ymhKCxbA<=a|X480i+~j=NyW$ z-`zi=(?rccTTjqHQ~;OC)=oIw>gAh z?$3o5Pg6hmU^j0zestZW(b_|bcyUHNs<9ISE?a&|k;IS?@6)Nn9C=Kq&pvlU_Ky$4 zmKd+sSS|X3&AVqR?g12@Xul&(;amh(8*CYk^j&<%*$8XVAgq=>{F>ThWZYdT_=$|V8FWFsTetkY+(`^%+k&O)roxKXI#1%ClxS#_wrwWfiry_TB zj0@X0eF=t9l!hLO$sliR(El~e6uaL}iyxQ9T^%_Z6T-O z{sD{C0CPiSC9(4d!kwDKd*6?@t3m#&fNY<^BH464>r8G995!bpZp;BIQx!OW|Cgb- z*R84C{3+Z0n)W&vhD=_>NxoarI1Uc5jwR#J8Q8?IoL|BLoSF?LOQcey$5Hbu=RG8r9ohys@-DcCI5|zGuzK+l2&3B}W<} z<7)MNi`DI14XnP!|9pV+o@FNr(0d=k-j4b~81(xX6X&SB%aYYR=3B$6rXR1floVJ{ z)jNV#v+W^s6a}yWhINFdZ9N^cvl#6xo zhe&dCep#){Os<>X)0W>G4%sbl=X>fV_I)_F^Ly3Wcv-M}Yjo_tm4y_u*rV5!#|>~% z?eWWKG2?I?U23<0(S1#$+{#tUCbNLBELOM(h>x&YZR(wx!U9{@FntF@%}%jK7ELZ7 zjrK1RMYaSE?<^X)xQxfN>AhWPJdOLkL%j8LzVUdUwh;xDuBx@I%4Sprh=D4np#GT$wI%{+cH=Ch^e6& zMplN;aC)3V2fPdou^Fye1cW=ncuX!iyIb8rS>uTyU!Y!E8}&Uz|9WH5sipE(rjo9e z2qjmHZKBoh&07u#;=l<1KzdrT1zoS&>E@6UfP?G#<_%uAUy!S1WE6La z*)t~&@RR$PE(mRNk8}edh&|ph!da`v5r@^@UmoKSKxSyCw%c|~IGIH#@YUbc2eO5f zU$hQ_djtHr*Al~ij|hbb8%&Eus8yRRwd&)8Z2JkXB*y2=XcQWW!2R-KJ#_N^;r`to zmX1ajto%5>ONJ#{A$oq|+lJOX{~w<}jBHKBO}6V$%(Juhw+F0n#JH>6NTmCdFCys` zyHm`7?^$q3(uuoGV%_8_wY{U}XT)oZvSat`owvS6$E=JUe%#vaA2Q~9PHTyyNF<*dSmgY*DPAeIeWT4T6zdP!X?wX)fs{oJt8 zU-XgdW|hLR+q!)yKfLl~SS~cbP(wYp^~9$0HqGmZyH#GLI?87Mw+nA4g4t?im6on4 zid){K9HOpptZLOKCR%~TN;91?sM`=SW@Bk&5+#>~S35QdMCwlueEGDoSzGA6?S0_C z5VsWOgidUV#Ql`R$AlN9J7ZooCxabalz5+Ec%QL+-XG+D>h^PR(bwO?9*L>bQ+4L? zB}+x(H%p?}Y8egr=3<>A@hyn*2Om;>vt3-Th~6fGBr8hE7w+^5L~NrPe=M+YaWx+_}=R8{dA)jnPyyb&p?WP2?e=|Jjl0fOZK^~W&~ zylj5T_j=2oYk>GTGaLNFqwUXkBd_g#r^%PoO@^}R_rNY1c3j1XyaXo(;P&GwHd>aq z{o+owX2je(L0+27=GIY>Rk=3JR&?HmebLrCS$U_g%hqh@{{O{;s_ctX&rdRt{Ymt7 zBtT$Y`$r*4;t|0Ea=(&9Xm#ztSL)o2)Cdmx!1Fsm4?`1&K%y5C4ag*UUjEE}?qb~~ zBjPCN_fV^N@{y;lxkep^3}H)jt89VD=^Qu#Cw>a;yvgT(`7vp;4%lthsvNjj+c#h@ zpvsd)Mt9}--iuKDYq(eZB8W6)qW3p;HsvdOLt<}St;KE4P=wf5jNU@t$k_iS_(+(erevvP)Ry z11sA-IVk05e(>gSG$FJ!52iC#K+*G``IcQcQVeIl=maR%c7ICK@GG_oEoIk{7j@mH zX=)MnGIZCBuO$;ugya4L?qXW_?<6~a5)B?eX|@ihhLT6!#eX6VBH@d&r4OwOyt!9a zCf+*RflcWJ2|r|i-uk`$_PdMWySq!K6aEyhpZAX4BLJ(j_s*MWiKQ}k@vYUh?Nan# zY(Ic)aoF{QHMHwJU&bxb57I9L`-6dg(c+>ifImv;KE}Yn;DwFny;FKjp$%{bFDg1A z-vSn<4LV@61Pdpg*sfe^?@rGv*&CgH-ZtKEQ@i{3jEdzd<9&UYslR_0B?>fH^ag2b z(@~vh6_V8^YnaG;{?YfB^4pYuej*3!KZU=aaMwf77u-B**O3>Hb*Y3i@7EaZlGknpo9GlfsSSs{=AX# zhDUHQ^M6U=E;WNSzC~NpQ#al;<3Sl_5e7euzv@LV442~+l~4^F8^6XRJ*QoB;jizj z3#E|BU%1=bg=bpit_cnm)95@1}9>^SfODb*31cvO`^a9@TCr^k z|Eb5zai@c`z5S?`+a=L!IFQN`t=;Jx?w#Z1^-89==JM1~LJUz20+H+mTNhW~TVe2u^~5lOVt`$#Uu< zPFpFBO9F8KqN>dzw?YR&)H_qioCs-rm_l7%=*oM7@U-FHNq>_&8f?(Wvibiw7hTla zZR6443-w|=rIsLksC=;}&r}KTEsUkVApg)+I zJ*z{OKf0?nGlc}wu{ShCa2{EUJUNA12mYbQ;K9%XV(ZTE#NM(c1_1UF*f zEs1b!7Lologpi^-$CX#b;pMk$LAsmLJ#nmV9a592eDR%5Zo7jKAO$~90LA2yCM9O> ziz`&=Bid9T;t8!H!*-!6MXXXu=K5NNh{OLpsIWokt$q{mkyf3e>sk6t%74TE(X00q z^0~hm9ewe{J#Ts5SgGopH*ali+obuEZiPi~(*2w_I&@=$$o=h_Qs46gtD=gocV{Qi zOk|ok%}sL19#PQfbYX71A0B(s#`iQKraO8)ifAohxz!3su4DV#(J_AT@pAv<$6e=B zqu+NRgYx;tV7~LrD>V&pZML7n|5{4?@>B1uwDaj*Lk;qQ?+R7OL`GKY@C}*FwXi@$8`u6iuz&jX5s?x$7l0RqUC^!%L(fWY7QECN&5LVS&ABKLZmU!Pn_T9uDVQ?Syy*TvU@0!rz zCaPS-|G}1CDXvv{5UyFt6qZYwSfdfV{_Bs?>-JMP^j7O(hr|q&^FbF=gUP6>rhJ*O zZ29ur&e_=vun&7CK=+I;)hh=(k1uHkRE(sQTTn z72xi0V(4bo%FDB+Q<}{Q`K}eyy|(t<`!4@ePMK<;_b}&^eItalMNsOcnC%&DDGJZV zr@`$@j`|eG-UmP|G=snq_UjH2v<{=z(9;V!?svUrYrW&6^7)V85(h>keFs8rDX`f5 zIVI9)vMfaQiA&r4I(XCnkDQ=E?(bSV7O?svtVHyE>SKaOZN)w z?aJr!H99g(e00?=o5LaR_0Q#d2ROH@wU4t+<%2P2)y9Ht^I&pHGF@E*@A|s^&7Rfv z%Y8W`s|)(cJr~n7%(Hyi7r<_wX5~Acz`ImAq*|2>y-bsBvv2z%{UiGt?h*bAVrqsh z>&H=jG2cTrd{*tpa<%tOuehu6rS<&5=1r40<#r(hKXT{u@G7GoelF8lb)-?zOP^d%tz@wp-c~(S$>Fkg0XLKIC!!4-uNmY6J4j8vE@X8zo@_EXhj4 z_4*5lVJkuRA203Z+)Lz-u+=og*3TXaK~yJeQPTAPMR5m`ST!!XLb}i($McT&h9fmv z5WX9xhi|ju$^y0$ybHU-SRy<^ZB+CdGtIv_@we_8tLF}P9xW--2Y>5;cYe^&xCI|n zaP@UGHs1SKw2Wj29(jgQXukoTBP(@Snp@NyhrH^O?y0T>N|;f9$wL+`R7D zPbWUUtaN7oe2Q7K^VwNp@Ozn?vwKe=IPH(b#`n8*xqRv{({q2AT(CSppVavs)Ou30 z#PBnTG<|RA-k=hC`h>g^3Gd4_voD9&xAMLSU%M~X?=bfC4a3dea?0xH_?xOEt6=8^dDYdXj#FnnrddddTJ^dI~ck@`)V*LmY*~b^>?he&Vq9hv+o0_i_9ti9mWLW z84fBK6l(C)hPF{`P>zS(c4s#QztAbyv6~h8eIuH^;j7(>Vj;s77sBi^$r=qL+^qi0 zXU8sO(`zJlAdq4|GU!Ib#ziFZV%J&vr3 zZ@gc)A@kf#p@(L>zb91x2CzO4NT=xf)+yNKe7UpCYOZe9d@j_qxi=eqr5~KUJ?(s5 z{ye3Nx$t|PvAkWM7rS1AUp(Ol1?l%YzJBi!|J*uD*Sp=i{6Vk!8JbcIB_*$UExZ{H z^?MKiQSVMtp?jL^!0_hRwL_ArL5)Nwu?u;ka_(`GuF}W8w&Jrh+QPQ7*xfY`Uo-lXfD5hiXnV`F^gK`6 zEkg@DSPa1FF_PL&rRT7O0ccM?t3A6Y^*hkETXz!rHi^W%9c|{QjsN8Hy=BeZqv?nw z2kf&P+tDBp;;t?{*I@OdP;aWWU`lXW@`R+{=ctq9#gPp%<$I4_lk?UvOsfd|Koo-X z1?Foy+NQuk!JxC~oNgR>G!83W^+yUVMkIFgoY;Vp{%#<<)gT!@??9QjG=|Rhdj_x1 z&tQ}D&%up!5Q}7;{eZ)b$In(3lZAzH0HAGdUD3@-kOoV_a8|;<8_eh@$QcZDcWP}d zMUScB0MaTGsnr0pDGsv$M^~!9L2YkzEe{g2f!A1SfGO=V2?|cIYVce-puElMw5(!e z-|sTZ9k!ulX#=ud5y-a zwV~fSUwI@rS`)fKb{gb6*0MJGvt&vUcu{7dDIOwpt<&o;gm+L;W9cYVsv9df{ANYH zJcmI1`~i*NcGyecX$-+ol)tmK*!fY2BkI0?DjrsX;@9{}(uTgT$0tJdy39eqve@xu zeeBeGt3QD?P^(A*KJ9GI1%9A>AvR$lEBa|PX@K>X%8sQ4X~2x0BaWQeCkSahV?}~S zv{DcYAcA8Et21k$Eh9HnF(*Wgoe+Cg$2jD?{t3!kj49mn;VFz}76%rrrHlSM&} zO7`1eq9V)Z*QP;PC;Mh(pWarklkjuM!kb>e&R?i)z!N*ZSk2h&4o5X)^~X_`99&RaOh?3o((n-ZTg0~)`Lt%bX}!<0%_x7NmIR4o{DiEwL#$e7-~_p zVd>rO$?!&OT!~6WD4IUiS_-DnHzc(uQjcB7D=I6n;l!XJa5KLd)mx|8mcefGk?`9} zfCpqMRL$oY8bS_NrgfhMFjya@yKmJx!x)@h!lsdw2Hc@3xyGr;Ca}Sl!E%+0Nv(*s zJms~Bn>l%A*uxV3<_hAE#FF-ER_jhr=Pn@|p>>`^9!AzvLLNMk_-up$f9s;^hIp;f zyhSpPqJC3Uk@US~qRW)|1oqpy8M!&R+tM|Jpy-OXtUSB~)W{A%fhW8sEQdYZ&wJHj zU=E7dqgZ>f!V(M0;jtvt9zgEtXo25e#|{C_MGZV4cVARB61yQqFXqQ|a&^(hr_PFp z=xwQZ&O|pMU?E0LH>9D{DzABtaxqkw@cY3zRhLP_w9*C&7G1jzCIo8-9Ggdc8)Q>l zU4ED+(6es`oWK~?S^<5?1$PHj$~4<7kJdOFA^<9B$V;y`=9e6(zG}25Ws?ct)SsUR z`aH*!ZKpp2FFi>zU1SJxWgw`KNC;;+zb{XifX(7D*a`r)P1+X4zZ0JT1zY9p7HUn3 zh<2R78xWTk2l2j+aR2)T+n5KIrEm+&pbq8cE8-2PYFp{QPLCd(X}6R>(IaDi_JiPM zi5aP_92f2;`OKAr@1=<>F}z?;Aabe-SlbVL8)<}%8Ob9#&yynqUxzV)S1XOTeQ0xo|^ z69ALC+dSWGMp8aB1A_~kL5dwHjf&RBSN0ObsEbBkz6Z(exBx62b4tauuDFT-J@v1v zHjH!a2Rw4HL>oY+h?*mX$)04xAga)(*3B|X99Mgbt%&^b>W`w`R$MUOl3JX)P<8Z| zN6`b}S*3r~=%CbT`MPTiO5~2>yeJ3wl`gGt78eLk*ytU)QUJ;imxmuIAqgf^iI^$l zKj%dlQANJ(O%^(U?hsfhU1VlH_ooUD4IQ2poTU$h8Fg22mWP_X`kws}Lf;X--0c$w(C_2G?(WcUqAvS56S^-1Jrf9Dz(A z(nY1pgOlCxP!T9dyQ7Xs=H_$Rnu}{fc6>WD{f*PQncpV({E1f_g){^iVk$WD<}N7` zY;7>S2qDXHHn!c{Iya_qK~@vy@A?g4kdnaMNB2q&0D)_Pow3k?r(AAQMDUZ9Ow6a! zqKDOY=Fvx<hFE{Lz=^ zO%GU25kvtLf=AA!85K^l zUB82UGG&dF$IPIY4oIxat2m!t0AL=pE*BCICHHJg?oyPe-_4-s)>;k@7Y<7%@PnM^ z_E}we0xdP1lds}H9g`WnZ<-*Uae8lhxk{R5hB zGTUfFcY0L4Sg-nY>*?n9?ifH0g-7u!XXzds#h3Jed2jiB(!c;@N%7L9sC~{~%Lfx6 z)}2>4dU!B-8&itGrDS3q@xz3{>>DmB!9bLcE^=)M299!Tnwx^OUqj@=HKQ89YWC`|OvxaFB57uf=O@FigWvdn^gUwzVOZnP*bR`YX`a^c4vjQ|T>oS^f4@8c?0w!!Z5xQyAU2hL=jIZtJQ)zA z_S%&yDvE?KHtN?ifkt|7vpq_pw9u&?7MpCd!m_F=YCI>b0e9D2hsKeKdd2ayJMuDtV(}+lx(2GRchB?-_vyO$Xx|qLJmr z7}?`oL9%+@VqfR+qv=;M z52)U%m z8n(~~G+zIbb2%i++^f=UJLvt${hTbf*}i~Nij|8CIq*MAtC?m^Q`k~}E^&2sO>ZbE zitn~<_|NW5aUL2ge}gI<26Qd;xms~qIMIg~Zi^$PtO#j6<*Xqu`J2QbE+Sw)KX;)+ zst9+-Xb=})dVx*eo32}neG8G)n=n`LJxu zj>i<=40&Y$9*?TD+9B(3Iv`rJBQo|o2L^#O;h7_}G%27@QXxhpvVrC_r=H){MK6CBujzccv4w1NJEbu1nciiYyB~L&$jYq zRu*NNk;CrgH*Hy$Ims3vM^ZIn)g3pb9(4YJ)!yol6nO5SEg1fYJP%uH^RL z3z)S-?{`&pLIpeqziYt6FmifpZ6xzmT8KD8)C|_#C9dq~R+Cd{uA#@E)}mE>%!qhZ z=qaEG>)jCI4xCW2(Tg{XBZa6Fkw*mkp=q)(bUzoS8laD!k+;)hy@*8uw^RYeyn}QG z;U66l5djC{ygV@om*q1x)37>3 z({RhMueS`CCU2}c4(RzH|MeI5v+Ey1vS5^e#1PWqG`c8NlG@F>nRLsqRBWoQ-^fof z6RhOqOf@tXUn#^GJ;tJn&?qPbOnB)6*KCdyjk_^+ye(j@8&N;mzzT7=d0*qs~WL-^-ia)zj{wNKRXcyPq;_ z`*Nv-o&(wV2;MwcJTrFMrgib%ChL!>?_%Y-XDjH&EM;-Qdj4L^*riT^@#aKxT15d~r!ntkR@J(-% zTyfjF7zyonN*WMOsM$Nl&VMTxNf+iiU3IG=FT!~;kC`&-Gub}~UxGpt78^>YYZ1{X zKznxY?43=JQX7(e9-bMBa>BO%%^^Q>`b{%N0V&7B%`bdHTZ@H?uEF`?^ ziWiokRZ1sy`Q6gDx#dBF!xh#;B7E0_UNWWf1W1xx&)U)5@+~!+gF9d6wF)a|eX}gV z1q?0Wk(a)`xDDv!8o01kf9#NX(Y{cPD%O$JrmobC{^ma|G$X7kii3XJ2Rr|NQ7Q@U5899*Wxb1*fBC~-` z)7dX**{fwFz8<-1!ZD73*61eM_IOVMb1-SO^(R{~-dxSH*t+aULRH>hBJRTwzanAn zGOIu*#O1O)40jB2-Ev@q?`wvs^&H=0xffVvcZ3goP@hyZ6Lo0fy{gl5k%*?m$h7`= z=S(a+W8|F98eu%|WGsgoAHDt$idajdI{|U+n{+W6>(L(`4^wH+tOuA0)W%USn+=P} z!TE`}ZOAjlvqVW5`4orykHoo7?+|B1O+hg&`9Kh;t5t-NhRQ1pk>{MJ7Mr3&BcK`p zD>G1Y>%EKt!FPR0Fjk%n{8P!_Fr|SxVf0;KAq5_hC0~RsN!b}=MO`O{zj1SjchEL< zC3p4<(%z>jK>ngwgFIv^f9Pu4j#6jjEN$fiq9Ixc7ZFhH4S4XaAIc2Yd{Dv=rGM)) zV0qT3xk*KuL#VuE^iBl&rzAl!*KulzgIIz`cysUcp!LX0ZNu!+eExOuBB?m55#N>x zp2iCl`i)(Yi%Nbco#`+>0KESvW%Dw4V--3`UM}L?eb3(#L66BP@cFGL!Ld@X9_d#v zLM5_uZ@R4xt!o;bfwYU%gAe>yp;(eaT0&c>E$jOlsi=B9}&=e(7D#e7g?Cc zzQ}t}fl$;9!m zH?-yOh&2+AXG{leoB@Gz{Rt)etSp6nBM1mQDr&Xy0164N;9=)0-YB>4U;I(?souKZ3_3n}TU!FM|a&n=-$Khz}2%6IhA*Z!&u|m{z#JdTBqSqBpTWL>SZ|F7BKpSsiZeKB*zF`?RZ` zXWp8vdC0bAk;brCENs646&&oJ*fYSIBEO)t@K{q-mT04MWWXM9^IG5UT)t(yBSRUg zfT&q(+$oh!&1-?9Y1NjY9C4HenP-pL^hZfYm?4qw+}lbj*P#kD&D;)IMzMoU75T^$ zd3UERH}+7`tuFtI3Tv2je7t099; zrcY_DN{DBNWl`1`k(?Ly^+)zyUnlUX9QyG{tG3=l1na@f?#M7uamcZdr23e|;hBdn zUkw}?si*_Na)ZT0=~i=_=+Whgotpi3ZSB4CWTuu_*rBBx$oOZe!$R9!>sT|$C=1;{ zs-;uW=*=@neZp6@7xi{5lqmxTY!`4j4hnzsR=_OvgTu>#>&nQ$?BQqc^POxlOPp~O z(#QKxkq)4{WrP0@6E!qrKO2t0ZBOsFfUNwqtixc6IFsuD&3ARSL3fMGfq&}C3$o%O zfrp>oX`)Fz5cuf|A9~7T!W)M;&zNGnUKkyuJawtU1orJksTZD(Iyv!ex1?lWD{)xF zZy7nrhGvn1SBmoIS#q4LZUp%9S_O4#0U91o^A9KH?YLtFr>ilvA{G{_$OStCQ&G9P zCQyn7l%_EU15(e5+?FR6TjCJT1r-tVYRqTPKy+3S<-Z5yNVp^tJG;7f=}RPXIkLk# zbCs>3F|=A&5Mh_7OtR|I6#bkL+a#J&Nnt;4`Feq%PrhgunHwG!{OX$4RK*TCCfc%1 zfl4Mf)TC(1mmr>8PV}&rH~}G32O~(3+bZenS!&a!-je|Ul{YP}T_#HNNsi5v zGhM9_s;^5>4J9`i5eMYI7~|r6`J&~K3%_7RvdB>S63GQFhH73O@k&p8lvU$v|E3W( zLR|@-JeRU4+BlcPi9|Bj&ztvLnKo6r$y@y#DSS*Ge9(qMqLGCPf+MMIdHqbZS!oQ2 zyTZRg2=>}ZiXI=rX=W-1)ul;Z3aWK=NF)r@;h|4(DyZyxOg$`;5_q!0pB2_9Wo_;; z?7_2xlXK53tWtgXu%*843)6U_Be^dt@IS`)8}AQF=1Zg2yU?o*B}%~?7>4+O z|3cS1q;1@KMm|IJa*Gh;@En2%J(+-1n#(1kShY>*1w!hu3_^hd#{$&yD~1Au#-niN z!RGK0Gt*2woJ<4Z<8p zFmN_H>5LjSl!aQ+rBm;mG9h*BM{nLDh%+34S5tx#2!ey2q;9xsfAFUmw2b(Jddi5WwS`v8ksUvytD;zz~6 z8<=4NX)4(Zb}7xTD0r2V#KmtqO{aNKF6DN-#^l<9B{;3pP#Aa55$&d6P~iQaa&I}q zigs9pMm5OX~%>Ds&|!3uol$EZ&EP zp~^)jpf0~gNt6l__pT5`evcSJ{fM$}<&AJ-;qYejGw0j8*<^Kz)#ex&Tls9Hj~xv_5fv&ky#VcT57!PuQQ3$Q7f_+o5Z zmt7%`?cVFVyMbd+=mVZDeSAW?djx!&+ON?mHMwkm-LtOCaJxWM0Sog+Z|q!JSyR+w ztbH8e)A2EASxVJd&nIk@ybAu%71H63heMO}nbJ(0a954d85267c~q1J+0hTH=A01o3~GUfgvCJt4Wgv5SJ8HKJJI zVNsk^C)-g_#r{p__B_vO2dUxn8}MtU=xpj2Yt@v>r1rwIyKJ?K>x-wrq`1 zHN0557Xz0^W8pgjD_1zf1En>H4RAEu7;jfyAEDP$!=p%!6(#KrQQgktPsC7wWs8dx zR`qRg@4?2zRnwQ<(&AonTsKEUq*O)<7cG6Po>aJpgPc=Z$?rq;DGPxG=lR>*qth6- zZ6a=Q%|Unm1F9Q50IS)W3Ko`B0aM9|l}eYaY4(Lp8Nu2B6vhv4oJsf?>lo6ZPCD-+ z$5;rZqv(cVwgq@g)EcU*Q_*TE+U z8~(du*EkI;^HYOuy-Afm82qCW4Uf(tE&?O|x)gG08Wr_IthJ*OP|QG5p4b(W0FNC% z!J&1$A%?&cnw^+n9dNPJXNOc% z0?K#7y-qUmAYo|82yARch|X);uLky4@UqZnp6+kZAcs(<(x>S*g{NNk~DK8*@nqn1Vf=VJ_scrA)%Mi5`@YC@nOpWfv!a#}5= zQDC8(ZJ%0*oD z?mFgWj(Y2|sNp0}q0^!i+}L<2znv;t!s@^UL9p7gvKW?hw+zDts0y>^2bcaN%T0r87Jm_oh#q zoN~{9lbd3uOzg&7op6e(=ZAJ@f_fMA*Mfk!N-b%4VXX^3D_ltxl%okYI zKM6^%%*z!y9o?+?Y>hLCBQIy*z(mPrc}f@mEa!zhIwG)^F-=iJ-nULk(dY${z4_Ye zoCvHr{*6CxEBK&yN#}>#!^M0y_yn)4UM#LyD!i+`E?8APq}ta3avgMax0$Q97LO%h zOZ|qiuPs}{+Mr`QO@g}&OLjtdf>vt3Atm~=LbIi1TE#4Yo6Np%|yp&2B&cHQS%{|#{Dp}~}LsvOSO4c`vL-yrtVGVmK)aMSX2=hAD zlEn~M4!icd_^ZZyv$`VZ`VUS;o*3xO4phmPU@4I>10(GJkUZd>PDV~fxM&}+7XtDG zk`%3(t3HM;wF17rcJreo5BBgMf~W$hM8^(}3Vdh}ReOu_+4L zv&n*LtrX6|AZRTjy?EwJmM9hA87dy*>!4jBKD^yqHR09fX8K14Q&tggwV%;;%ur1# zU>}ow-JRp%4|080vP1d%_>C+sO0Hy!i;JPvA7#}+#glxn!g{pwxebDyBKucSv4%lO z>EEPPD8nW&p z4eu(moy&xf`lW{mY#QHeAD%=6ILeTrRF-wnDq-*moVbNy^W5#e_<%Jv$w?Seu?`>PJLz}ff#a|)%lVX7O~nE5leN0;6D3v`l>6tTg7Sg(X3dX#6$cspKA#V ztDjK`zUjZa`VUV7h(IUE=wpeQ`3(hXmfXH z^uSpSrVVs~yUm_FCVEbfnl6LkhRMV7Voc!)}hH-*2s1oLbLNgv= z;^Gw~ZH93X5@GgvKOn2-It2=wS~h4THC+E7=Oe=KG7RE@Dgt8q#WofG4cf^Bie#uVn$|3}j`_*J%c;V?~_ zYVu6B-DKM~PMU0;Y-6fPlkLg2ZCjJ;WV^mI_kQ;;IKT7mz2CJStY=9pK+mzs&mmq% z!ou$StRSUKBdl*j#>8^OPW5FkTMS~5AyPK`v-x2Rvuc(&(_9Y>$ia#r_*#`lzJZIt z<}IXOm@fYzC6A38)_TG#UIe&sTjX#TJvTb?c6OS`MFUBitMYPlT2#Tae}p*Vo;tw= zwjkU3^+o7V%A|9~{iwNpTsgz;Y(QfGE8*_=mNsiQ&S4!>Yq_Y&rp#HDJy{P=cA=hU zE&5cLUv>Y$B4vaNAk^^4vE)jyRAuDLl+PhvDOTc}LKHb#5Jj%+$C3`s1t9BW-LZRP zq?$J3d8sT8$BY0DIyUbY5yxUG7Lg6JM1M;E3pL4$gCf$!_Vn5w6XRKFj1Okdez_$0 zw-_$-npu=ZA}M0Zv!rSkfAecS^4a^qn9jc>?!oaQy`Gg8tvkc%h^_#6$zD6)DuW$m z6izJhmm!j`3;P<}E*qb{ZKSCeAH~Q*i)g?MH9;wGO@+r*W1+!}^tq-_IOWb5(Aef? z4U84f&IvcZjZyES1=!anhqT2^6gb!h5?>?o_B;iq<6H97G|nxsJ3NoPKG%`r7X}(xL;b&6wnlI8xiF zgW4vuFbjz;^4sQC^ky>Ae9ejsi%-tVptx9Vw>n}}ll=k~1ow2J!$0AW8^#MUTqZ>l z3McXtuLwh>JwHD$UdCYl#sXdx!)ng6GvPF5qvzQTb*tTNtEdwPT30f1= zQ$-U_X=<|D&UzqOh(uFe1ZU+Pn@&mHug;+MuS|$W!92UA{hw*P!SQ#ryMa5_+zUZW zp%iR6OXMn1Ca~Ett{Q6_An9p0#&Wb)2+mIPjoaOXoNLFbwBpNi7lnR!a0j7A32zA= z&s6UbtQ;l-Dn<8VqF*Cdg2COQ!qya{BTU?WjGjH3r@l;UEfI-OeGKWd)XfD3lbtzi zuWX*O;98kO+Dg9E2|Iu^;-M8WDpD-)1tO!279=TxiFubEIn%}uJ@e}~6%oFcuI?gL z>mh~*GTNi5K(S85_QQJz-GBZq4|o^rz7E@^blwG_(dCOd<}9&L=sEIo>(Bne7AqczIFn7@|&>62Vv&}P{*sgv504?>$Y=!kI6Pc_vg;S!|GExu@9Kry(1@`jb*Fh{3~Qr6M)u<$ z{~6fDSY_40Lg=Xea}?K*5+mA(ze z{|Fb3-jgFH%OQ@e7`G!TWUrn9i;vGmVcpL4<`6p&IK}q*vs*agubXIoWW-WWM<+#A z=kv>F%Rg~#i}83K>+QY$HRc2(K4J6qd2QyXh&xjk84fslWXD-?DB+d5Kjd?W#lX3V zaORQiEfgsu{%S`Q9v20r(0pVnf+6ChLX$bD`*j06sBB4~B~*<6ct`ymEZ(KVUr?$M z&Ox}upPLZHl@RHT6r2~7N3hIiQnvL@_u@hyW=zYo4o-00h3;eP&oCp#6FU~>lsUik z3+bs~)zW@-r`1Rki#?p~P0iO_HT!Fgd_T#0jnue{bR5mg@=?tN6E|ohiu-+ULBW=g5pFrz-9})1DxL?_CQmf%5N;8;9 zV=-!LW|`U6E#VL(<{UFjG}IS1y^kJcBqp+2iK?32ClQPDf!_kg%6D`wLKwYC!BUw{ z(pgVtFp6YLr*zx36(bUhsoY<2P z<*2W-Vc^wK#e9J425EHPGQV5k!F*-~W>OqBVd6r1sr%=+Owjt65^a3-RcUp;Z3bCo z%wzN^>*Ff;!7BD}h)U3crjEx_SW7!!Mq}E}uKFW$X%&@gojrqb%eGc&X-li>>tSe1 zX}3>x$7&|r2Bm~mYwSyG#yO+De{KnK%ydE@1@wuTW!wLHBH>g^Kps!nPw7W<{Nn$T zzTh}x%kdkxuJuxrB0l(=gDY-oiE;*Bb0LWgiy^9ybA?nc*r*GpinVK6sClMH-A=il zG*m(p@0oe;MLy=STOEG*Hf z!Q-p%Wsket$uy;bnc1MZ;wg@#dkg=ZfHuJVaEe#*&y?SG0Ye3$bT$!<>M!_->@zmJ zWM!0PBNMX*=K^d)=9QIMQPCYEHUlm9@l;i+;&tTaTQ&PW*ZQWkQ2_~2_kSR_&UymA zdH#%GC-3swH%)RWP6Pyn0B&WfbQA~_YpOOwEayl%#WQDW{s>HnAHS891+=zAM~)p2 zqNI4;MuSat7|?jN?^~x9>zwpD7Z3dNB8Op<#DYoP{=SSXYVW@__-<4fn|E$dybl`% zelh4aK_oF`ghpaBc3o>Q2zP1@sfKKBVh;J7e@EI0T+;fj@8$gnh>PZlAkXp; zrK}kob=N~V{>I;5PTt z)XpRR<6GZs3^5J{thQ-0&GBbI$5whHpmX7`?TJRR@|-2#f*@j&AKJe?COzMt zV!&wa$d325UjJRq_kKH=wvo^2PRs3V`P%;N<-uWV?cu=5-u=UDE6?JZ?F3YFjuz<( zP`-v>4oSj}YK}tY0lIc(>)I9*gVdpXp0uUn*!}EBrM3D5Cl|HOL7L6s=k%eiqwwK{ z_L=Sn2SbBuBfi~A_wjkTrohpwAmj)er-~e$cj_;Xpp4@ zooTXU36fEp)o_yDhsMy~Hnph+s>^shhD)T#d8&vT&9(YO;cQyICNtW4Pb5A@t2zc%5Y`C45zF{QXw2V&bue)6h zo6WE)2tZFp89Y78Bn=2;18vxaO(e3~i;{8&C7y2REU7Bc`H zxY70%L#@{tQHbQRP^~kV*ORJ|f_N8{es`|0RlX1ORU7_@Lnd;ZK( z)!Dh2tjEL^fPwEQKGqYya1_JXLlLEjlGK%9p`F?=|yiNBRlom0l{INoQh1m+p5%6%+1!kUle$8lKmAfJPKZJpNu~va{+Ol2X>oF6Dj4CGO^1rT%@3 zM%yvt>)!d}OuJQ5=T%~*$MU8r4NL2CG4w~lZo;K66H+%9yFbS9o&c2c8gGKK;<-Ve`f z`e{%eF?bZ%F${8D)y;5WjW)R7%WgjVFbKUXDRCI^T@8`8+C73eUZ1lbhO=Inc^pS> zhSb9mfbo<8Angf|nX6xSzL!aYsN%jPcAg<7o->TFMixpuyc-vHTW!4t!jiF+EdL3_ zc!1zVoyu;nEgG^5?r}Lr`G_1fAH#OzKeI33(U;Qmdsrk0GPMpHBkMpl9>IA%X`bG1 z6EIAbng{%?w}7Ka9!sg@aAhuNpYDZP51`YyhYq>wjm>9oq1$Z{&8ZF6 z&xEK*URvTGmC>7dXh0t;Z*PHHuV#_u3UR1?fVGK*fNm4WVJ||aatOa^vixJZWA_&y zeGhm($l7|9Eh5Pv4svvaWc5beX3dKy)*`;k)P<%iIw7W>$if5WX=ci>xVEpuIi&v? zL6iQ3%1^~}h*P7%rjKt(i}|zJ`x8;CJ8Z~yIWi~m1zRjeX|T@<2{l-ETqVIreW#i^ zCFoR}f2n)ihJ5krN+e}VK=XVBuz*5XY9b#8!rwQg)nZB19Hv385?kBApI(wmsqDtmr!56 z_%+uEN#wiD(P0`DDLX(KTulB|qaWt)In5VK^4U$X(*!6;b?!T6ge!7CIFC8Zlb8qVbI1#`?Kd;W%;i7*C zCjEQR=vKLFdyS47_~tdx#@?Y$99%J0lf5w?fh87;DPA%54Oa{hrwvoi;qk^!lvt#2 zT_z5>jurI0@R3TaFV1Ddp=i_$ux^Echg-bE7~%A6p<-Y&^|=};`q-Qeaxew4*Fb;n!KHQVkbx9k9Rpf%f2~UzH;SAedlhbB zwnxo4ZITK}Yovsi6K7y_ZU#uJ>VX)-;y#AKc@7ECJ5L;|F62jtkI}z1K+=$S|7q9P zmOU1aesG-^az8+fZ z2^i7JGm5P}yL;Ae;C#a#ZFxr-OVup%pNb!UUNVxu%@4+z+Y5rnm!s-!tB5wL_V09s z>Sax*b=kkIuG$=*n3z*VTJNsN7Dnj?{V4aX|5zpny`bWEQ2hSE5@^Mmw#3f->W>_; zmAR@>3-soO2rAIS$_)b8Yg# z2_#&)AFxpAcO^SlVYK}R=Z=N!)Bmq*4|oV??N6(#8bjLhr1h*#gk?MeJVmkH^{&P4 zfntc?i(?A#WFt<=Q3+jr!v{HUu7EDnL>$Pn$eC>Yxbb@~Rz+4ueDuyJHNCV@U6H?^ z`sMQ9D1GK`AD>|Y-5}Q?bMtHuS9CL2gGtReliw_6ak$pNq+p6|_o2q{qUJAXi)x0e zDX$DMpMq`80?}}|ri}@6K(3c$+`jPfDutlIB;fndumsL>A+iw4ddiGg%3##Vn+nSD zv&jG5fnd&#slM97*zIhM_2QWD1v7f!S5#C>y%B(|S})||82je;4bs3lu}Mlse%sK|VtL7O#X(ygjk0ZseV%_@p58TKTGxRdl z!H5#zcRh&#AYFgl=DmmDnlW6#u)IqlL&gph_w#`xl7Top@?)LkYLTq7kZc@s7*;7@ zh=g$#GNHRhx$@iA=e}kU70Ji!F+}awQ8_{7t>aJY`e!@5hjV4FckbsZ@Ti9WQg^+T z-$q5&br}IIaIKy^6LJI`rG|f^&fj=A zeYd_kB+LGiE$-2qVZ%5er*r`Q)KxrUDq=TDD-;D3@DdYpvr$)t$rT`kK`QU$k~(a6 z5!1@&J65{r?A6?bZ$O@?08pCSe0cWta0`A6%9RL$#jk&-Dtw41o_NmNa5*?)95kU= zI2VwegfOAF>gIQA=f=X@q17b7Yo`QduyM${@~iwxTnfxGK0uDZx!d^?Qh4MIVB?^W zl^M*oQ+%FwrPr4B2*s@#nD)>Dkzvd~&z*HA44@i>ww(_lLHd)+Hl zsc96hP+`isYeAo{9#-Ah12f#Oz)B9vFno#Pkms9_n3saV;)t;`4T16FR;qs96#rrM zOy5>C%EqT2M6Bz;3S0chev*G{s*E}ZIV|@9OFFL)+WVO6i~Gawxv%xwR7JB~;)*hL zVjc#(!Jo4_TXz~kRb(e57RcL(igh!NiCnoVmzoerxj#jd958p~+M7JOJ!R?kIhY@) z!tBzI&7CR%VB?lrH(H=S*jTyVGdTuD&lxdd)IjN%LTSXYBy$GI$H7D;Ael}R`HFFDCFpf1=UZgSJ=ZwQms7 zkH<~dnx%&f>DA;E>X5@P$eDE3nFpR_HHY^lRxe7Cem|Sq8Te2U9MM;@A!3S2bb+)0 zo$OiTJ+R!MkkZQ6-*z6)vA21f%pIFCo8C_yk9**X4={`2yOTmaZ~n}bvQCC(^85TA z9LX0Y5}g_*kGV;Kj^s&01Y3MV>ZX?r!Kw9$8r$Dsk6A{ykv%pgz<;iuf#NM=MU|!Z z_fYD*DtTdu>K~Lt;a)>Ya54Lrtl^@@EBFK*k11!9Rq*~HyGL+~$L!W?AE_mKma&Rh zDk&BC6Wu0c&CqB&SeXtKqRVj)de!AI=IVz0`3Y;c$FE80G%XM|IV`+Sf<$@uU=#zT zVp1-R$EGU~*zl8Q3d}3m7Hji(oZx=Mo0&fyt*Qq?*|y%2*GPi4Ton_`wZ`h-$4zNP z4Yl=G{g%DhrxEAsAxpv!ZSmZlNmT2RZkdmXQ<}$59)vOu{i$)rpIADaUOg9eSwXkK z9ZAbjPA?452O%SggMsWy63Wov2kv(M|LFmCI(OE$DRNifL7(VwKuU8Mj;wMzZuruG z>vc%FNv|60C$Xu%m@G?in(ddjcDkiT-TDvxzTzr*x3@?-ftX=fM-Vc)e4d$< z@^D@kd-_nNR>x%`UxMOHLRE{r4=Haic~GBgSU=j6SS&ykklZ;!fBM6`u|E{M&XGBJ zXyi_*ijn~BiTWFpsvs~Obfa3nh~;D0`}YU`u|Fkct4l!0*{f4w`q4eko|Ws&`#bzl zN_>SEX+Cvn$dfPn_6@{`)bB08&x?o-ne_Fid! zBWi-2JEgFmq;Js1DKlX1J`@D(gdK;Z73Aq1kq~utgeiunt)k|m0e9v(ysmkCj!Vq4 z9%gB4=TDzZHDJ?aonei{IPbN(EMtKVmor@aFY3s3ONup#8H|A>R>A!!vb{KcHMXBq zCD2w9uD~+O&m-OD>WNlcN3s(}M6Xz~d@{ms^*A5%Jf^)r$_vkRqOku4e>4BMVZ+#V zrG+t|xvPst7M7v%^ri$9r3chLnDhP`FM*cIR=sax@H}WKby&yWtc*a2{9zvX)Q524 zg6H#ju|+J?XrCkx0QDi+(9SLf(%bM)WgQwCBa#X>1cCl+BiO$M?41{QfE9R?sZD(3 zP;*PERj~V*qeU&S{JoZyK1lleZ-_*gASvgM=Bm`UkqhBygsME!gx`oOlti^@rS^s5 zU17lja7p%3nUlMoc3v16!M;g20rUo3*!2&d&B%UXDkAUysx6}sJ(f|EKhl?dUj!pc z63Gk69rQF@c_(FkP1w$r+xf~w!!;^c^&_XnvGTp8Y0{W9Pdkf1CV1QF@x@{Ma#jg6 z#Vj^$O}$yV@vfE~i;+EwTOzv~FivYBwqg(5gkYKcI)*Hdl9`DRu|Qt|I|1Alm^7f` z^R9b4&Lm6zkwsUU6dZs9Z;L_0|DkjtTQVuN+m3~jaO%2o!2dXrSWW=nqnU!ND6Cqc z4eujM?^6c_F&Iw$k$*d6dY(g8^|eHTxK@~9ZDC4WiWmu*j$*X7kyiq zSkA|Y%UG~xc(KHyYF1!{+Y1~VT3Dlj$_r++STFl1OX=`za8~aZwtHV%*$#7xG|3GC z##36GulVOHWuaYjcxZ_YLO0}7_k5m}`t2St6Z&4r6}rt3t)8t5`0|$CuoDUkz2CT8 z$25{_f{7gd^b@2}s*x~NoZ*rF))+}#nN2aw&^nfqz`I@PT7+-MnySygYfp*nsYFNM z<7hn$iURy6yRNU#vD!2bnT|NDeiDfESEUO?^xIX~(}SWpNNE-8Ws(i@4GN4@VQ~JS z%Q0H!4{wm%){Nq}I-eUELnLQ?&3i&DLj=uT6z2y-IYI7O|K{>J9PG)#ZQOXd<9P4C zr03m9B)bAg9jl<)c^7GH-g>0H_P;$;!(Kn)lvU!#*7L;6JFK=3m_|XBpRSZM3>}9B zXo0kGItTENNX*X2;_)wl$Oay;e3D7quuCMz@xkpK4MN2PpoLzn=@&Ll!GEVS|BB#* zhyA&PO4b!NCduOuS$>1{8|!jn;wA9(9y&*;za*)0yJ()i)|K)SMHy#E#~S=HlMCfW zv`gLTW;^|ifODYLJUSBo0kSJ%vbnV%KvUBhSMddSpxnT~m1}p%w%wEl0|x5@d?)Xq zN}oSzO)8(_@D9`AxD(K(#wix~99}R^&N~yhrvVc)7QZggv?SQ53S2^XQV#w6PI8I~ zND!G6ymV6V=FQF}?4!y%CQr86(y7@l*N43_rt9E8RZuI!3)NxW_K^Bzq%()_g7v`t zQjcmq9esTPW`YJ=E|-&CJ_!!_bUppeCMWhZ0ngi+J^hEJBHw59%SnvCDJYTJ&(EtO z@)mz$E1b=zU4;tNrr^|0k3WcFqas-F+O-n~(|rO#kEYR@N`HpdAa_)PUHRF_ZR6K! z<42JSu(Jt`7Zk2TB2>zNyD`a$`K_e0(vlJy#smr}>&u)JZah@pp^P6x9TP5_k@SyiUh9jLyg0np*M*?-~aJ)xG1p?(VK{_}6%AfOqBkZ_($zH{mgFeenwX z&FJq5e_gwsRP*;5o_$|g4wU}bC*fAqx}+8$(r1n!gw)!&McZ;&C<@jXKcNXKtl6k* zeA<`&K28i>-`-21mn_~e%%kd((qD)hmC9oNb8`)b&PDT(MEZ?tsr33UYOw9Y*|>OO zd@P#ey&Wo5yC|{>H^)fDquJ(rdZz21&KorN{vDltA^LNDAop~#n|3^aSGHrC$dAh( zyp1PAH-o78Lh)gWJ2>uEKFacDQEV~#7`e+FK6Id)z;5-vUx*z9$r&3z$@FR3zr&&1 z!A89doJpE7!QGt9K`zS*ZkVDm?=Ng z+HosEAn;OAUyH84%Wp<1U&w~{D1HAF@kc~U4yf}z?ffxZ;O?pMP0m`E5HS~q;H$$( zArGAEnhOpCpabIC)|LnhM-J-y)|%!-2`0e510%SDvYP06%N7~zc@{n6|vEn+BM0dasex(nZeL-RXM~r346bvEDOxjVP$cF)zt$?zl!17`T z-P-UBXCm&YQHZ!j@tID~Q1R87dp!3&07lPLruSGlk3u^D(h7e@)*_8Mcd z-eNAT{x&MFxr?!+Y(I#xPx(tMG6vkSF)xW%N;cP7+Ax2z1?4Dn-$iQb4KE()3^yfX zYA!OkDtu*-M%wCQy^U6z&KCE_K90alE`%X}enoF$Je@-EphpHP zmr+^(AG5Dd30>~*YXvY)byJeo2_lE(jTF z;!f~inPumPGP?qTstS|-<-K| zdV!7?olKgJ?;M_4I_&SJ&~}m4qb}GyOL7f6*SvG1hj;O&F=O% zfaXrCJ|2J4{P45RVWoipafQ1ybnory$6=Gc$hOnWOMh(z z&F@Py&AZWWr2{ii7r zpO!QHXY0V6$?vpp;b9TL$ZwB~rI2MaWHg%c%SN6@BwQD-wEE3Ho!a{IgJ%UheQ))0 zWjRp$AskxzxK3s3uq~xATpO;{e+02Vb4Nhio>qkC!Iiv*!{UI2PuvOuuM41SboPT9 zFQM`vu3qT8Ui9oUSx`P_dx<{X5OhmL5*;K>$)!5wXE`HL14OQx!JYana>E4CUcX!| zD$(O?Ha(tUDXuA>2XbtJ49gOtWS#gMc-SiN&eQv6BiN&nw21-^2KI2@z@AH(`K;Hw zbN9z{zBkWJfl=D?!>bp`*U)wsAZ{j)FBXCC_Wjm(!gqY`G7QAX1Ohu!Gf4BW`zg*? zGrIsy9ZvWQ8_uyOx5KkSd2{jRcyIb;f}c1Du!1tLRY=g89#5Bv-*p zTBrvfOG`_|DwS?~jsQCKg)#$Tr9{oQd2wLWRfs7t55Qf!w;ko#wykhG-dH&$alma9 zri5EYnnNZxmYItcitViY&NxV%XFEEfIoE_rh@(I)G<`);j8kMC0+90fDcSewc`T?k ze8z&F786#Bo9_ICN8Gxj8cY1Dg$EbQ@ls__%3qyhe4lwJ=*xc#*t`W;5xyVh`M%C& zH2N5jSNe{^`W|b^zLLBwoWIcUKBh=WjY%vT%(c-qhXe-v**yvWh&;L~ z`<8HAdrC?rOCncf4au^(fuie?94~Ooj4aviuFdio(QbBscRwJqbjCycVHmwUmBlQrI!e< z1_^k_xOv6*xi$N*D9%3x1?xSS&4fn!A`_wj;9QSCJOTSHN(*v&sCE?_OTl51mUsKKJ$Dx9)rv zsNuekeqq_w{0KmJ?Rnb^-k)6|7_rVt(LKEN0M!|$Swnm1{6v;p^rTURb=pgw)G+Y& z_U09|?OE8zO6T-Jlh5FVXljT(1 zSrr`&6sy}Y!Jb?2)n*u|rOVUXvZKU8#c`{|cRV)0xD1N^i|s1)u2UP^O47#9-Oie8 z?I+tAp=)1-Wxmu5*&uOGcWOW=FCK$HPeBbi!VG&A6v+rKw23_fk5sliBv=)Hynb@p z<+@dgWVBL#+nt}Q!+-oqw{clB!2>B6%(>WBSgVWjP^Om){Tf>A>eK7`68va=TgiJr z*6$4T3`J3{ZC*{3*QTJK>xb`RSFnfg+d8iAz{XKAO-T0Jmt@;g%Jwa)ugP;&NFod1 zkB^_R_R7F#v%Pxg$QaHil}n|8sk)8(dSCPPW}SD8HVt zJ{04%OS;3L^Ra_-guev5%HG3`oS{1W&DoXyl^>cA9eiY(=b z-HhNY8~f9#)&-DYz7j@(Necf(c?H|gwZ;?l16rw~?zMO^AXDPT@cTX29PY+N$m5&s zJN-dsdjbPsEyQZ^&fxlxnbX5K5RDq2YR3$6f+^z)KWNGHI}Ool1I)Q_W1~q@ujqN} z?d=mzbkD*9GpA3kORQZ%jE-$Hl6)p7j7}OGv(tCp!}4w~6XcZ+p{N9~OS9nq^J!?R z&>gyNoAc$ko#*PR9@=@(-@_cYoylrFYk`)QWUw*rE0;AD(HQ$3k@!Mw_VpAQ${>x( zZqEd?M(;qWgR}f;0!DYX5HXWqJ;dePkUSyh&?Z95xtVZ%9aQ(hjMR=G>~VkZ(w?FEv%1sqjj%^8wSFnU8AdPdgql%6M?wg#5huVmNnszpl=0m z5#U-5@OcB#TOIehjqeZi4Gbu8I$U8jUEhH>Jv9i-`I+$&ed3+c8X0yUjPhx%0~8sj zXozB`P98Af3M^d~lX}3cCc8`oN+=9FgB=-=gVaJIgraG(R5Xng4-Ys8*YlT;l}wxO zYs=_hD0H6`-S{HghWj_+tJ4k6g9{x;|g6kNWt1h22;Zu$#K^Ibl3f@+Ie zOjK&hZA|?cDZj64#eZpi(?pCfz=1GSd8}G%aL8FGu}=6lTnuvdJi32>$k5ZY8M>WA$YJM#pWi~aM>)iP!MH+oKmiZowEf(pLQuV?p<75vW{9FdskMA zJMWV=-PDX}g z!TVszqpFevw%b85C%Ju^@x(DRI6I7gc% z7^+-Q2g2u3*`t^W^+6AcZrLC_Ci7hmr<)}{qJJoo-{s#MJGfkH^XBD9(+E966ud!s z7bne=U1{%2tMn{soWnIZ%Hp$7Wo2d2gjOFFg-(b2k~Mm@5<-OHDgKak#|6zKE@zM; z{-My8FwHVQ7avJgp&d=%Y4O_AHl#etxi*Bik? zRs2jScIspZ7rudfM_d)8Cox@D(t3V29#MiC446A%Z0YT;xd9!(rWG?KIEY_5$vGTXzGs<2k9`aZ ztT9q0iZfl`jaavM?YY-tl^!22Rmbl<`$8TZKe0hT*?!k>EAzQ}DE|-=H_ekC5IbjK zW@Pe9R>Ghz#>@V&GS9mqkF`h&l1S_q1`{q_H&n`r&fNeh}Za=V-QQYr|6y;eO32 z}@n%LgM}Hj)E8HFv<6E(Oa$!{hx1LGx+t*N9)GZ{;j9BO(CQcSY14V90>9cw zZ~i4UGM^%q)~{}CIS@xg^b1gAP6UO|+3^F7U5E1{$;s&{3lnOc$6|)rpQQyUC=@EG z?64)p;)lr<_YGdhA8)GuIUd~CPZzfn+ubAyi0MJ(Y>{!$iUWhotE;uWwa+rx_f88~ z!~u#NYf&Qc(zG)ip6&VTmOgm7KZrzOpHP(Euk_#6D(UaQ3%Dxst~}e$JCeHh7ntpx zx?}@7=I7N~sah_pXF2+Z)tH4yvQgu7!voHa^@O=Y$e~-#|BtWKgNx8 zx>O?|5+{-vS%h9K0T#vnilfEf2hV&&7RS%|UEhwv0gTFvHpsqr3hx^B+kG}O{tS4k za}PQC_}zU4quA!kD!ULeSiq%78(m7j;&1q(DCUMV67d2O!+y3YNxRP_!#WdOY(Aax zz0y5_<=xm+1{vMcbL*kzG>RXR(fet+r+mYn{=f>j+4$PsdzZkZ@338LwCW>JDy%_W zWA2Zg$5NQs3sIYL^=A7o|5B(#Lc@w7ecjN!DABz)Vh^Um3PmVP>@0&VpW8*0RW|M3 zS&QTxCX>_dHbqcQz&_ogp`|5YeoisVd;rZBDOCQw5JCOrX%Wz`U~g%q?_gTzNlg3g z?r?k&HqZOnEv3Q+!o1Gi)!yh%aB-+hQpLOP(+T>;OA{nmBj(rC(P>0#uysrjF8t*z zoLKB?<`DP$=Gqve4ExZd9UlQrsr>TCEM@c!qJ+=wimWI5 za_w*Jh~TIi+`QLezUQ^(ceCTAO99x!zBF`7`R)>x#-7U^$}RBmBw`1NHNe@=P9&?Sq`n{|))+dIxa-5O9PCR-qf;V3 zsT-}p9(uy8S=s@4zv#BQL=l|M^k2Jn+`MVDZ4FaqdFlTx?s{!47A>)xkLB-sB8{6a zg9^T&S%tP^uxa<8<1w5vbFIm153Q`cB32A9>*di=eW(y>>m~T$532$nvPNTNRa2O9 zPu#`kLx8$q0BTU)06y8#=b`!7lid-b%XWEKW;@gMI(k9!uY)rTm4SK&1w0FT;WfB* z-xu;zFpos7RGFNr|Dr|_RgQpBSH0zqPpdnju#nQSd{-^QJ&%+TA1;ak#pB?CQBz(# z{oIF>{;5Ev930&0vK#83751^nWEj`xjA8qY@@L$@w#vJo%ZoHlsjtM6; z{oAT^2xedP308S_B#GbMRnxOsomwWZbX_^3HqY8`pDfNK`Vi3NEjxhR;o zLqn9*i>wuRos=}4xxG`F>+yNgO}xKtC&ZL5S-tzqlFp!jxldy~Fu=M>(hb&{O@avL zDkx$a1spX&1eHH?K_a8%AZf`tO;BtwVr|d`2r&}mqSUZL88_EzPD?Fh{|Y|>qbDY= zMpU4#g=ZgD_@{8mKF5#Ae30TZ30Ugae)4#w?RY7;emt4~hjKJL_lpMy7=pyD0*ZvR zT82Y(2H6@LJ6WMF4!A~ETRNeEerovUSWZ~Uamkj3#8?KCF=!QW=*f~CtI2@gWYMX} zl4@ab5}^5$BJTqmd?R?_u6f__*y%L{ z)A_$yrNuNdw=;L^U1U+Tn_4QWqMb7%ckb5^WJlRI2;uC zK&g3dBb{yp4kc85C6D=Nb&R z7$b;7%89Zp8ngiXeWoLC3yR`?k>s)lYl&ZPKi?VkR2(^w!b;mk|!59sh`qpD~E9iQM4$cR=!RU z)EH4W5JmmiZio=22SHGbV=^`7Lvw{(b$rJ9MrzETP_XOb`X~4Hsd2?*F>CAUF8Eph z6|~sNumS&%81=_vRA=*QwAFL>z_1dEz=L*#_WJ5->@+=X zwNu<#fHWtc=cp8=M_!13M!fc87Y3Hv{G)0#Tj1RSP^g?@ z-ZL{!J_mhDS1elkGy?hNKt+N7uEe+Y@IFhz!ZQ1V_PXQfsr_il>gm0Bn_&u54XX?q z2PxA%(vX}FIa|zhMZ+C|l3&J4Y6g&{#6W|45uP`8!HGE%(m_?HjgIez;z;aB!hAw5 zGi)?--pk#0Kc(m@qjCMd{8IiOIR<7?;dKnI0~>bj|wx$-XUB2mz4shI`8^>6fO+3>MgL*5?@9$!mK zA0~HF)Ec|2(oc^yCDViBx?keb<1MfwrWBXfA;UBKMN3EO2kiem@Pa~pUVJ?)eeKR& zbGWwWeBYlZdAnR(q#$q9mOqf^i$augNY;>d`HY z%Oi%bruDexxB@_gnlQ*^1AR|)Kc>rokH>ms*WvRaq8!JE%xiL8tz=>k&T71B(71J; z1EGG0f}4^VOLorMF0+P!urTIZp=K6f9GG>L^f(C9_dR zr;2Qd7h>ET4%+($Y4LDbz8V5^Tg)MudIoELBY0Z;u$tH6aB{{%zqj^irhj?SYv(o& zUUAdC`J++fubRPF%zsynlK#GN{$}M1Y58)EegGgf z(4E?{u(CR?JkxExBYYd!d{`B@1*>4&`tNzZH?uJ@lk<$v0^)jFkMXzOuP4n#_`EUi zHU#T&5QuuNx8<_O@of{!h4M#Am@D5F37lO8nHEezb3(0_gJPTyu6iBzUceNI=mt zFS{VPgiKo=3+dv;eE}A{Tl#+EmHz&v{Bn~ckCSvB`Lw)o9hovZD}Y9^Ty33`Mq^`_ zjEa)!5l}^?x)FZWDvFBxD$Vxbdl`rDnXeRxxMtHS-RDuE* z`8B|xM>$vm05X3@aVmE@$$ho{JZSsA=;||)(s7ubl$69AA@bGTLe1aM>b~DJQ6Q$u z|Gu*&Gu20z$>aVvs2CL^+PCxayEl!$^Wpx4nYg7L_WLh9)s6Vx9Ru%sboIV`^|?#` z*-MS@c|KP!>-BE9ci0L>?|t%dT?eJ}!`5vtrFZbv<2#A&{qg$xddAMy>3);)HT$H! zzOwT9eH6v@@@VVp6VYco)c2V;CHXq1L{nSS^X)(P;!hi?llN7>p6NT^Jhz*D&kPZi z1Goc+qH(bWZ^>|0IJkU#z)Yz30>?pZy7nG_KGSR;FNXM`L+&oXwN%{%<3y%WZzLFs zp-URq zIX>5|<6VVdDfEx#HDx8~^9=^JmwTA_?5O_tJ*l z>AdyzGD=S2maMax{|&Do6svvPa6F(SK(N^9m$@_r0`b}vcX;>OX7%CM23}1ev-Lc_ zncIW?;?DXh9!{Hk!+qMQWOFs!FnGP#6s-5~ow3NkW!5!*rHjdAv+CSnMV%tYPm%gEORRmq~k&%l;80>PG~_DAkk6C=WfYXV|6q!brn5WWs=H8RLV(8cl@$fK+iv0 zwme5kBVcPpJtOTE_^qEiz_&}@r%dn1<}RS`+t(+gWacN4R>hhPcU>vZ-iD&$(sA8_ zBnuA%3-q2L3WK)K0u#T{?eLm+z*OjMzq|Gnr$jRfc8;ZJW%aJdIMJdQQ2|NrERu(6eH`45+wHubLUYnGUgXMG zUe`upiEB3M+@W}-hPhnF>;u!?aOe+0l8x<8FE-{}ca3aPg1Tw;VEs)%I2Mi~E^q`Q z!({^$1KemtzkJfZaMc_tL)vOY`OnnR*JA5hFg0al4-SigmX0yiIQ>T3UmFVRYz)A z5l-C=Aa1npCHZb}vNtHNxhdJ+GR}>Dba|nLe7|wF(wKh&HOT^!DI1&j*I-;rF)I=J zBRpe^O#7v1fqLioe>!sUeVj}IJvQ2$`Q2~#@3P>~b#$s0s4_-H>}6oa=@R*ElAcWF z!cnF++#k>HF2~apuP27^zjM*LL6w@#C~z;c18{Pc3;Iu&K)H$X>nY!}r5zbtA8gVS zWk~|}i&fMXmk+8Dlx(+MY|;`RET6NS4>r=h4d+1#XvQL%P66$)#StTUa)X zBt3d^q!dK>rXPq1ht8wNIhz)kp1tSd9(<{Adsq?CLOe;jP* zI16GsEy53GFtbDhr%}tph#$Nu&p68EtY9?9Pmvj^e^PSJL}B=1?W>f^4<0lL>7Rpx z>1gOCdb{<&ZT+YKN8{oBX-bjtRJVKt6;}RD=dw4M9Ze$Q?@Q0 z>kXxTB7r00xxEweb?T($sx#(u+xC5s{{ykFuV5k&3b8K)0sGh|mn9cTlllGWa>G+^ zqwRr#mluH^=mg4UyD3WGae9dGh(;&4g(Ax{ifCE{`?U3CuhwXRx^6#I9tMMpgG2S@ zLyP12V7c7{^we8xl9|6}V`YV7o`WYlBaN+Eq?V)Zs=>5zZw23Qk@sPAtC(j3n{$}g zs9daFTwJW}x@+G0a{XG$`Qq<<-wjUTe-4*@pAqwUa`kmRMFp|7Ia{oJ@P5-_<>KV5 zYg@rt=jG#b*92}ZD}a4kAGB;}MejK;Xc*@L>L+_8NUWeknM3e?f`}F)J#3It*i<)| z8}5{DTF zu{`~rLi9r`DN{W4_Gg1B7D=ar4O7M&=}|Q%3m$GSw-GEuyP{TRW*lJK!ZtlzW(@9` zn-)p6Q25@R%8eS-QKH=+Z!SfvoR-LI4HLh;r+Q{N-quQPt1 zXMZRk-yPX@NOd+A`|a*eT4G`$PpFWPr>4^=ZMt%+vLy>k$!$grK6Dw9;nAC8agBIm zG+V9VdZ8orfPEVZXbejZc~AG?0C~TCOx)Kkiok1a$hBu4;^mQn0^A%bqmrAK-lyN* zEPV7*Qc{J8&ZH%@UVolhjbr-jOClVT zvQ)ss#2#ut{NhzS>j02FjlTf>)klc-3mDzSdwpu~!8Sy$FUA<}2lMjs!dqKgu|Iy! z@V|=T3-~S#b$54vxbr=bS+7qY!X??5sVB#0l_8{N(m>^KJ!rv%$oA@agQYj>bJ*D-z#}yGlfm^^qD15I!iz=Y zQTgkDvfD`aoR5Qbd_LIvxpv&)lF*hYIbz_M{|2g?#vT+TBUd7o?#4dQ)g3^_b#rZ= zt)wA~PtkUdDqxF>hURHh{{}J&_%$56sj1rtd6ohYNp6P6p2m)y?J*Y08skPrZt!&) zEp|f@&-v}F&0lQ2A9q6WKLfwH@7Dw5=_|E*lZ{Rb)~!pe&QidjCRNh+EuJx~Fe=zM zrUOiVUFiE2f59g4%ky$5mDy#iJ z@nW#qZ9d;_W=3-6s|0Xtu@`M~b-$>9#qaTTR*$J-u{-PDBivtSzkSRw6~K=ZZHDQ$A`>!>e4$nntbayzlQ z+uZX#vBvk^7V=%jNBH>0z@Yc8-d=~yx?W~yA(ezAdC{a67-+!(bt9Hrivt&V1s(l;XiE{ z!w$)YBLz^wY#L0-0BGb9GP32K%Q+H`iQbRjC>o{fzBJ zcL*Kx0khAnY+R6UPq=>Ey3SBmYn`=#I_0Kc^jA`ihk6rj$_%Zr-VrG<6+2*I-H!TI z2#(BS(`G7T_G;9EHX_JVEHCgjd4=6<1_cGgq;`0Dwanbih>D7H0H)ATsIjNi7EV@?qKkurB;^Cn54XluudQ!1;r()KRN?2)UwouarcXeV zC)fJBd0SY(C~>b?t~=!USR+6WS=Dx19?NV5Okr7HvT3nj4s7Ci{ifbe#Tnzbg19(x zpaLJe*C=yN!c;xE3`_mWgGZJR)C$)-caz+ak%0B}Xl83)0t>*mvt{^5Jl%Xg8}3+F zL&uN#pKRYsy(vK2HXv)Qxv#%$A@+c0%BWZTD3JsUqEfKCa}xa5X+VO+*K>BXEZ=n~ z;@3pZr{~>)7f0bFYHYiM%@)9PNVSi(;ky$i3Y=6S)8=Hnnp50afii*OXzxK_K>+J8 zkb_sI<+szvvBW=T#xkBox+2cbbzy~~@;U#3TSx7j z&XCd|e80}@&i_7fHZl3Bw(Zi=`I)cnCR)fYW#}e@&GNQA=?iBD0f{aW?eMd|bjfA> zR*S0j{PIKM5XP7_!y=G+Vq)b>!B$fZOqgdOkxkFpXnWPk^wR3)N2gH7Be#kT;}dGI zL&2^klOMD>bawW1KgYh#4%@drrul7IPQQ$7==Nvw1~B1RSiMp3eD(>SXI1h1S<4rD z;|j!fwtIMEm2p|2c8Pe{*dPlG3#P4_N(f`U+ATRnnhY}s&*vRp(#NK8N>EZSWsH}m zA(p_4ne`h72Sdk}@W}i=Z^u+mEOQrvf?q^ZvvNXTZY^!1=U$z_!>}1XtD|&PtCt*{ z|C+hB{aT&g^T+v(I4u|BoD->U<8_M`nNN}-m{1O7llh)bQWXHm7kXN zwduiGBV#76Xg+ztNS{ea_F-=ba+XhQ~fl^$=02%{kHQm_iq&8GGYE#7%I#oN;R}) zkH;>@AMFNe01_Cfs1MYG)gQ@py29E`1%&$^n)7Y6k+6WB&8XTCJNKJWDVpEED}J|W znz+ng?|nxJ5kTluajjoE!OxUd6tS!H=&_uc?)draOdSR~J1O;y9gi@?lO7 z=ao6WcFmU??76$UYs}aRCZ(|h1h{Ky9TqU%l-H=QR?_+;921vn67ypRR)(T2@IfU2 zzc$HKi1EV)sHGiGNHuuG#Q{>V81H%~Yx0?{UE$YLJJ8?EP&;4x(Sk1B)gD8AcCa{X z3t{D)Hen^{DEFi;4~(wQeZAfLvv!U99oh6WprOX|c7$Bw9}gGXkFzCfzbI_>?)`o$ zwR#uY$e5VE{$(TguTVX6eTdU2Nto4BIqI+S(iA~3zG-@_E)yv^9%gNyiSge1c^06r zWzFdw<=qN8x5hMY!D9O9WK$jy;Mru^z@%FrAQ*LI>TPU{In4|28{+Xqb(#UQ z=VTt}u-j_Np_7)dMsSNUSWE$@{A_0cfezu7kA z5>IHhF7lS=HMW09%_Vh&ze0;iOmJW@tjKg?9f2Mnv(J~jq0yO~;E4BP{|C-DWD3>P z=-l#WMr1Rd9nyj@6yK0*Du}S#30_SyAnK3*{``pOuGpi|mNrx^0wsO*W5T{j6bUIz z(D2rS!*>@>mtZ!0%_Ko0f)+dpN%V&BDRK z2qRZftwPPO4OXeIG^`ZY<51z-bv=7xo3M4wJHB1j9-Tlu6plhZVs7~L3I4qcJG;Gy z4@qrvE81*Mf_W*^4!bJ`<)Wj%SFXAAZ1TR1PHd2=b(!-*G)zrQDS{J@(kU5^nVY34 z@nZPpvlL1yAc;a!=uSJ%`j>cY5tw^HaEcg#5xw{_o6#Ku)HR4abYD7_zf2s^JiYoi za<5HRf^9V~Y2ErL3F9BI>u#Z4V)jc1TYDycSPt#0g+o6_67fp>FsI~6 zl;82Ieh|(bYwPO^;aDi;nR*uirE~H$0(MrnK`zYI^JkL~7;MpM%;nQYBy|{162a&? zbdxGbxh!3v1>IP=eNjw$5mK|;6>R*NFz_%5j}ua`F&Y;3Cimn_bPn@q=lkh*;N2a#Ucl*u{X^ zgmiFJ9zQRc%4>Er77j?TGJ4CJcFy+rwf~$-qY+)aidSMbMv2JzsqJBMWV(L4+pA0E zI}0`ae>;dP{8EMp=TCP7n>!kfDZvIj0~ig+xjFXj-r%`!8pA|9i%DFzqKGr{gw8+! z*0Y!E&T4S0FBmoBpFl%7)`@kLBFu>1iGs!97Rq)$?skt?MWDFYt+Z67c369%lX=jmC6-;_2ueq&P3OH%GckuW?OtVnz$c$jYByvyq z0nYnSV2WLzXJ7rh-UWeDqTN*s7CqC~(C~-|ib2kndLSVo)4pycfayRvTQ>2oB{w<{WOna1B}+-N)sE7_!oVmmu4s|V+&tcQU?MN%Cj9WK3{yy?`q6I;dXEW* zxJ5k_9^ZG{%Jc|wM}`pTv_&&)r11?ufnvX---9f+JdSZ*4B}*HT4k(_$OHsZ(o<4B zQwZR3x0r?3@aXCm4xKwwk{ME7pRhApo)W*3AY~4`DJkuWVh1O1AT@;E@!VucK_IT! zypQq6}3QWYN^76BLq{l#z8`|Py0rs_``FZ zm!ROR)OF&pg3!i)VbarS&Uq^8JmU2R>DvgUmzWh$L`;*lMCJ%#L}|a-e*mUA*wE3@ zH`PC{Q%0+kKEsajKMKBq)t;fbdut|sJ0S`J5nUmGC#Y1h6cD?gFBRdc+@YuJS`i*h zH)*%qN|VlE0S$-<2`+5cz-3Z`(gxtGo8;6$@1Py_^`a?}A=6~9MO@&T8n+gXNMoUr z@&pLFH*X0)!{U77O=42HRTVmeAA$$p`ZC0rl+*$1VVEgE^k}Nf46fp2&bUX|9V#S9 z5B_0!nZtd07oCj}A=lfW0HV=j0ffqjkl{~bmzE$*|2>gepWaCohaN>lxuKRdJgaf# z@6G*=9yl#uoG6*Y4)(Un9$E+EH2YlP! zi}5}A|0s7z47)BrQ6IuW{q?^+B{0CA{qspB3z3!sK z1bLL-s7bC^y+w9bAruws&M!Bidyl5WGNXKvSnh?>l+7du&}WE*i1uICp8e4NULDKP0QhLdM<10j6(R+$ex{rZHCT05@7&S;zJ?Uy8KX9u4 zC9%@&&$onbBj(>jv!|V!S0E^~%*-E2WYPR$;I7Ro80helwc=446Zg9Koql)Sb?P^B zfp#lh`x!XLuDpj2|NdLgnu)J@pGzRJ8C@co*iS|xlIj2n-vu!996lo;RM|butjY$3 zFP74p+ql=UqPUzSnRjYyLY__XW zc~ssY8~IPD-;nPCIsLU%QmNtPf}(=t0ujge<1CTUk+7aLdTCCB9U&;-nZoV~ z6LrVL^)z4y7&m1)bJ0Gu(9q!ss~VS0R?7h0_T`eIC{2H<9*oo2ryw@y<)4)}tTu$x zf+REiokxAGTpMhFk-)$}2CeA0n_3BnSpl-v1uQ?&KyA#rep>J$;cU~mxJLqPI)iknCFlx<_n=E=#^R2Zd}ofMoA|UW+_S@Q`3dF(Xi7y5!VSA6Dy*{lA$x-b*cCwC zrEdB?156D?{~@CqYu{j_>7FLon2y2U8_u78vE~Y77 z^H*1g#h#kz(Vn$+9dHL963XJk_Y_MY<2E$ad$=wF$gjW=ujh56Il-UQdHquvErK`YKvi&GI_a+POM_1m)1E^?k>T*8Nz}_1N9|oE-Wy zZxL1C)#VP}X8Ppgb~E63-TRW@w1GYvHFrIn8r$ce;mB#J$yUF4c&nvoI7em|#${$4 z(&%8&L(c0cK{j!mjb}mnr-7V|qGHIFz}~c9b7n@OW6Z@NTZY?pT6eL9p?@ne1V$<>R*!anpWOG zjnJe6RIq=+??4--vGFHv8 zQ>ZfZ{ZFEroQb&{$vg*iGQo=Oke=d(;6&a&>D13y#GdLSt@23NUf4;QYy`(-3TAux z_qr6@3Te>or-@G;1qwB{%nM}=FZx@j`6{0aJw5(AfkND(Up-Bg+&MZr>0brGMVF!9 zG8_tdUUkanT=eDc?k@W2!{LmQLZkVf3I+{3@VVocL$#e_a5swSIN1FP45ZsjczBXT z6|{(qQw&(2n5V?|nRB8G5d01H4(2Fc6jC~y%fyAtv|eKB$|Q8S;UveN!r7t$k=Mcb z2}{q-=RqOQ?-1<0;>XVPe+NV;vl#{z`Wlw3TA^2yD1wDt{vZJ)ATY46FgPO{2wJXE z`Lkw>Cco*oWgnqCUsiQS z?pW1}W~r);D*=4bsl8fbwYA{cXu4A;9;9Uno+BU}QW)eevLn_zLQ=O%RSB(nGES#= z2nMx>6oc(O)u7XJer1cwR9ysimJ<>^0`;dHzz!cef>o)S(B!nnTKWVQL5m8o6VPp@ zs3=>Lww{X3j&wf>Gguw^1+l%eV>0?M$PA)U`4nxi$#Lbpi0*h~uoc}jPb7}iA{ArT zA02eRdT`qMC-<&)S?{RFz=UBvlAQ~}Rh#F2qN#QB+rW3AmquiAD@QQ_tA0`#(?uY( z&d#Swo&J-G-@bq8@3KhQ2F@MeMR>SxnSsYl5h$Zxe*kMjf>|oU*Qu$$wE50b8`Nmf zrzyWWLl)h@1B+*9kE%KV$Dx*uH{a(7R;u5xJwHcLvMz7CGSbxBzIHgIndVOp&`uih2g zNNMOppVtUZFCDr@Z9e{uuY5I#+d!(kRk)@Re_32F%x)AqLcKMJ0J_rRedRKCB z^F9pTLjAvY#Z(L?;72mE1}zCojm2-~If6UJE(S3b7mTOBn>Cw6uFS+iz{D#GlBTc; z|6c@$@e+vnGI-yLrnmr8mU+|woC94;1^QNThT@AUS==CJX!pL>>XSr#-f1%GzUo;pgS@^PD-|7Cm0_l|vw|6>a_V%@AI>iem|9viFsr&E1FU)@vXV81eL zwI~LbM|86=xe`4=S)U2;+U6Ai5t{I5T7fC%T!c`bGYXN7Ss$>WH=lsE%QeOzs2N8C8Iz9DC~V#K-Wy?~@d`dq zO6C~n3@7ikazQ2FJlKM&QR+`Yst`MZ5EY$2_CO>5y9X6})6A^Qq+pXoV4YHs!lJmn z@P=NmXxkK_2b$?VnBjdC$SkC-#t-)Vn~gkrpJo2e59Y5NDmwV)yhEQpT}EC-sKh;5 z&qQuGU2u#{+n;?jfWmPr-S`DKiruKJnLjf}vBd+HQq4*t6)ZK`2?5X@CUGnrF#8DM zHSt5Iyj6YXVsW&(*g9x*LRrP<>d^z}^EQ0_%>O!r|1zQo7XkNWV`F@>rR#eV{LQz& zS+#e~-`pVjexT!h0=GV6R4pD}H8!rd&6eAo(Y4x~e$wf1fz#}zhVJa>+q}9g-lmY5 zjsa6%SR<;WOYB2Q9M*{15@7Qk`VS@cknP}O)mBPn8<^L`-ni+b0yTQTOz~!UoChS$ zqtuR#li)s_UIMqyV?sW^H5rgsZt&^Y4Lt0-U86zNrt$RLx=75<(i7}L^M%_=HnEeS zvShWi7A&K>ZB9^JEb9sf*bi?>ivB@rYv?;Vw(Mzl(J`W?0Y%rK-$khgS49(l^<)fj z_3zCjCn$H+$W)-#T&;AS@2_{hVe?bU_iE(z!h7Yh*5&mw`oizA^|txM(yRo*HcV8SE89mZNb-;)Xm3%77r2{^j#1cZOl6>>75 z9ARFqyaZO94g0pP6A-lga>4OMtWKGGwp|%_GFH^eyY*Jhu2d$$;y{&W08t+-)501XyOOL2|*};5v;e zW;I6B*3Fh|ay2r#$B%5S{c_ysKmF%=#rJHBj(&viw(T#=^R|V=oQ2E%7#Qff;e1rQ z=5n#j#lTTl-VxP)+W6YJOC#)U^~@yJlK?1@aiFvSV-1&r_?@Pto%Am{Iz7b6 zP)fm7HMRMpz0vOZbcyiqPgdJ}sK9@@lbp0T8uaeHTI|kTI!f!NdKd{ZVH#XR!&Jq! ze5A39wuPg^%3d-m$6ja&by~YJjEPfZ@CpRt^<~ujUqZ?IgyMac!Q1F*;*l33h{ja}05I1Lo5&)v>66q28E{tz3125Vw&K^z>i5@^fJQAbgz)S421erjr5OTTk8c=)8!CHoxi zMUQGZ=4^7!)~1>#5t!7OB!F(gnCQ6yahiyEcmT}Z@*gnD4rZCgz-2pQ{25MnNOyK^ z`&x+zc9fnn6%g3S%*0X765@pd3%ht5H&hB*TH0C_AWwRw;9~@NO_za80$t5;5OF`a zYI`B9;7GL5Tgn{Alm(H{p1tOevv)ghv->YhJS;f=$AYiE1X7CkzO=LzsE!=($GlLy zS05VzC+=_Z1$e~!HMe}a@G#>4I-K0Ivr~D%x~#Ifv=Jrh{Uu;&XXvhNacb1_YTy_A zf~ux|Dh|#OgW|MH(40BaX!mj}q6af6=`O1wTGuZ}BR-h0xpjO1Kl&zm2YVe9AMD|O zcXQujLk9sgP9DChq7$)tJH7GQJ5xH4jS_05Aux~6_TEf zOP-cM^2m-LCCI3eGcSK?a zm-}+L#&Ri{Hp+jnNwl%H6VQom*=PZixRLAuY=V6_+jL~JDT6pA$LsiGMPZ$VGfw9Bl} zd8S$N?^6>)xspGhEGhd6n0P%lxI1J@i~7t|)zZLQi@!iKeAK|=)*T;AHWH)^JJhOp zI1{viK4)+MTT6@k#6BM6%!{dk6cUcwSOq#6mJ!M+vrWi&{{T3BV%@O@E0gHV2{S&s za9U=)jbuYyB8fnJ$?#JusSXxXK?Y-#y$T!N(AMrO*oHTNn}a?#Q3O+VK2(vJk}`_t zOrxmHuZJT~6YR=(ad!_$!=7|5M7!wyJf1i;6(?G6ZYXo$@V{37`;Q=-C!o{)0Fe}_6Cms$+{PRM#_0{l7dsO&gO!v?ftuFQKXiKaI|oivL)~H z#-3Z9boIY1;}^|PPoV1+HF*Wv+FyO9Iik$2Yo2xQ_lZF+RD*v90cws(a1NGs!wvbA zivM6jEF2F8zAMAXjAUfUWX$K0Gll68@{4G#kP*VmOR%o)NYYlifGcL^d*~^})VC?{ z(_u-YE&Jt)oU8d0Q*=E%GzxNJmbriItHHGDRLb3lx&_Xn!$)qqKAzcgK9-j{Kcjqa znECIv_#vw!JBZiX9)_=L4XZaheZQ*KkT8}kqG%7KY^l)Sq7Hy*!*!$LFEiaK)55P)tKbQwqx1+&61XB zY1C%~z_Nu%QQU={!ggegXZFY|Uw!Go#D$1_eDn?@bEL$4mPGzpK7k4ndv3UpctOOQ zN?`Ju9LsYln-wr@pjdg(z<0aZ3(KkE(dTGqbpP%V7+7OIIzL(sE7kjZh!{IBTj%EBdH=-!y6Ji}dwIj>cRaj@%JI6T{wf-Med!6T#`Sq>-)glz zdc5$2)CA|g(=e8D-)T~&UT{8;kWGAQ2{*E^xGP4esa+zraRIi?sXYX#n^mwWQ;SDC z6$!?wha#M@D@L-bUbXFm^YQV;-3#{HTX#-*(A&csnOxpmI|htq5$u%gIpSG?TO)+% zJS;Nu3}C^sazJ-ylW$z7&2rWLQEtjK1g-!t52(?9Tz%7W5A{=go~?+1|J7ajA1Hcu zK&kVRnWgGif(C+LQs-0d?YBEvSvbJfn$ANWN9#ZpW6ks+CPy15qL`EX^^qv#Z z&^GD2m&zQ?(D*ymE2Hqz3jpQuzx8?k7a{)p>#EJajk)vEqCYm0h9e-s{ziZ92hMBa%@uTZD&ewNyOohc_CAcz zYK5-K{eo6Z@f#<8n?kmB;UH+IhPJG!a*ArjY+TY4>;@0Zq}E4Wlvg1_ z8psF|3O2VJZv=dD1gRN|M*QNii}%41E=Bdg*;(W2Squ*6dwJ*&y!Y4L+4Z3+?e_bg z{}4Dt9S+_<=cnJk{pQ|ix39*~7b+N<42f-Jv|Eu(zfg88~7N5?fMNj`E!m65}&ZW##8PZ>k5=@!PT=eP>eRh2* zxfr3qU-F&)QE^j!P{rCj=s4`qE(XKYJEr^{_!gwMVTF=?0A^Dr*JpeF8p5=d(wK;T z;W~zso{tTTN-{SCH&A@s$+89%92{Y|JUKfV@dqLvx1HNot+uDj=LY_3&yx3X+R^0u z<@c}&RdKmk4Tit{yt$cKD_dBNMh>%e>%%T9uhFm8sALn`Mh)4ZFp3kfTYYHSb_K8q zwCRDZdCRxzU?}~IhqOGLy{Fx@+DC0VXMPDx8#Nli{K6Lu_00VsL^4!b}^#fGxHTO zR0PQ)`-RS}rOoO!d7wQProqD#NYVqN3{!A~8v zmqWUDkCoF&reI0oXPxP#59P%1{nT4WAZA24YYw$#!0&l6{Aq{|V5s{m1M_D`ZmR*s zW5EnvI1Y(vU)*zEPFaGU0!g5en_XoPs*m#8V)NbuY@*#6(Ce{vfPz0)fgUDx8+YTI zmKu3dZ1SgSL>e^7Hl@j1;l@QETsWS`u=7|Lxo4Q9l41SrXa$o?W90sS+5{h*qAB3= zTK&sVogmH*wtzNnZoAGxLVLcxd#~DCS~m0_Yjgi{K9?0`d7Uq&po=#Kqp-30ufea> zT#vGT|OteIQpWpOsrdlKo zj@^#Nw|~>^SmqZAJsJ< zUU}L7{WHpQW$0pnvsASu_!qU@v78fsBVQpl10;MWY>p6uhgym zHW^OG{^zh*8?AVb#V(*-Vv;a{g`096IlgBj;6BHq^_dWZ0^p_^w4(q8Y5)LlCo$U_ zJAdb)p`%TT_#H@sv*+A&r=ih(ynAbj*Og3I&QZc%W>nwE&;@dL7s0^J-dwtI`EKwJ z_zrjFb<}Q{lc|vg6IP~VnQRrhab8GH0tGSUr{HKsBTaJo6PiX{gg~}e)MMpHNiy#$ zL5fQ?rg&Y#s@}?hNeWbnEskAw69$|rlJzrEvO`@|L&;c%RV7{G_W~ihJQKl$kBRnD zlpxjUBeD?fW1v??mIz3_4zsA;(EVt)J_(`4=1Kx*!Cx`DiPBaxkC8ag#zuhJ0NO;T zk^W(Ak|_;%Z|xkJuW?+F5z=0ScOq^O-u9^{NVHUH*X@MJVJxN@0h`YGwo(EX3N*9h zhQQ zVdm@P%JJ0xiUGO#T!(2yKbjckNG_1q29Q}CtAnl9YaM2crySPZW{)VpGzYrm5p4W= zJnG$L3l`drl&jlJU#34*ea&6;AD^nV+do%aJP%KKpE|tF&K8|f8dtkR!e`Ze3*k5W=TPrt*`zAu4C^ja_Ht&Xxok`E zTr_R}Xd8AXNSvlT4dP*N^o=yc%d0+acO!|kEA*)rS)ioX@wlT&byS#6=3*&BJNu4?$|w36PBu?*C)F*p49Z{RhLI_>n4yghZm*A#!(x4zoNR z60zOED8g}58Yrn>M-2!ZoRr)@21Dp_9rMWx5CvoF)fT4&7YH+BTl`d_-6pg#)7)%hWXhk%nTpZ9FL1(#LJt7Y-lzRjDd8x zfcy}bNYO~f2M>EVmbT*l7{9RxRaXp{dvhFAqNHQ2oiDQxC(BQ56xhJUZriFOcU(f#$ zDw4%X;@I8uYM<_$6V*qE6{!2SCPkYS-tck%$Kx0oQ%O_`SNHL2dhQ~<1CC$Ga#Ek5w&hf~7n&uRlQ;f?*0YR)~APKyZ3myH1 z)92-uw8ia&bh*x$8HMq-Bk68yyL)>(0}|4;%Y3f*BC8-2k@xYCz4M4)tIPeaXX}09 z$q+;eU-~=8bhCx*r^DJ{A`3%;%`UNq<{y@9i~0*i2<&{*?&8(hz{Da6YqH5c4+U5p zz><}-3$|NOlw~shg0WIgY2=guK)>UE#1hl8pt3BpAaG3ax}h zLfu}p1pbA{PO=(1Tv2W(-^=A_|i84;;o$2dOmHG*VsDj?}%k>eD4wACXqijM?^n=3NVK-9K-e2F?Zrep~o%_^Yx!L zeTawK)>zX=CY6&-t{KdP!*qV%`jz~%ii%n=XrK#)H6d-IQZjrbL7-09IAk3j(l1hO z17~sz?9Yl|iC}o)kP^%(lyZTbmQ)adhF?J~LeL7xa@KU6>^462k+>3A6CsgBG;GLo z9sMw=$$u#o0Pyxb2(s-Ipzb=PZ0-JcI%o#H=Fk&qCu!O_ALror&6>?Nfmz%x-K&k3 zBelJh2~>uEv+ITV@lMni5dZlM$YaOMGTU@3c^zBL6-~HGQXI1a!Zb`x-Gxv4&XM&- zzS;|bUeeBLd@jg1JTFPI5bLJ<`h$5rz^MtxJB!%q035C4f( zReuDsl~tcOtzN!HQ6KJ=kCQ`>ohqS$oNxL?;4-N$9qNS8X1K&g3P~By3`)sdFwby> z9zVds3XnVtFQ@ef>PoJp(~+{Q(h$fCY;cOcjMRzhFCa z_q|x!M6_J02wcMPrN!a%0@(bK5iHQ5qj0=42@YB1=Yi8oMLD zc96gxk4KRGd4Lkk;ej*~j~P+4Lru1I17TL-3e>XW)K&!qnB== z=huxgrX;A{*!`Wi@kyr-D)AX#swl!BhG5L>eh0SrT((_jInFEka32C@PsIS%t zih@jzLVx#{4de7~^cHFJdS4-F=3h1&F5qt=4}JDPabE39ptj1g2xNai{18O6RI)hw z?fV_;5Tr16=Xes1f;Pq1pQ#Spe@sD?Lb>+Iz+i^U`*^*Kx|% z-n+F9ck1(%dhEsOH9v&4y0l4~mHW2r;uA9qnjL;5E9PIucy#)f+Uqpr^G>n18LXP^ zsnVE%qQ7Me^ovyDvLgcm?fV_R9lx}8H?t6SNA5o~)KY`LLsl61d%ub3B|e)2Nt}_S zM_tSN!Q!{V6;O^PX#NM!Krp`yJ)hSl*N!)!4BRD*34(3Xb)B${Lgq$$mb)gLcnDPVR6#+en?rXR1qtF!^B+O@~is7RBdYSs(VF*6v# z(l=^sQCF_A1pQrF*vj#MEOmFKu-Iy!c}T-Xlv&G_#fL01Qi;xyJ)C2sQfjFfnM#h8 zr$}L!_!!GhE{I!;g5gXUx*j_)mB9$Gr$$7qDpdGfJDu2AS#T06f`S?X z%><71UT}qgbn;$6p~~aEw~ejFbJO@Us{#FWfP!J3Sx0 zN7N{~!nTIEiNp#G%96;rTU;>|gVD1EPKeLKstUYO6+kV1yiVm-S!NsKE=fMJC|T0y zUN-^gKQG?zD%YTKiW@7EYejHGubQcUu;)3;d)s_C0b9g2MDVnskSR`roIo~Y zv2vwS2bD6RUK+9jG$yB7UMFpCq-4bMTAVw77G5}an(XorOz+&W6E}Fc6wl=Xxq}GH!bE?32W!6y4$P*URxTKgZhtOy;be+xNm# zPd`R+=_rrEv5wb?+-?eQ6_OrtzJw8lq?yqw7Daf$x!!o~CO^5x6r{o0&VQEfE>3vcPEWZ_)dE%&t9 z_~fe9KQXxqeq#OlO-pZi^SzI>yWNkz^wPzL9)9?fr}`1{{i6?{|LZvNaxuMqc6K`M z@F58`5TKRk3_=-bN32~{-sd54Ay*WJ(t+T37R521+!DVim&2K&ZBs}}v z)39;FX1MdtV{rJ$?JzPtVrAR5=zZ}$sSz&o!qmocJG(Gwa7gq(=F)y3mK6{5B1Q0> zhs@X+#zVfxyHpo(7j9v0tg$VYJN0*?LrP`@Pa$#zwvUUQ@`boDsAe$$d-`&tR&JFD zYmSuA6T0q>11t!9x{5Rz7Mz%e)@Tx0jjw^gL+#iy86(hR;TOu2`OuEm2obo15}=QF4Oki4vh; z9?seTD$Tg!bq!(}XwQiNBHm2JC~R)J%Opw9M}2(xJ+z)v8IE4l*qr7`w~xAh9oI2d zJSGylgpthi7`4nB7EV1>XBTQd%qymOH+KaI(+RRsg_MnSNo5Ms*mG$>)W+Fxs}?qq zIfXc0yp->i5x3;#5KPxk8<8v%?Y)caJ0$Yk0A{_2RW+*QU`%?gq2?si1gRCWpnBL$ zHcq6CXM0BSOUHZVVoW*8+^BK2V3(J(FPtvH^jUHW*|>fKY}v9EHkALxO(qZ1Oai5p z91aGMEjci_9&6E<*qYfqp_>GKE$EpldUe)Ge;%ld$G}h%=4O{fy2ta-P&xMv3=YEB z=r~-t`Vu`;ON)!t6Jw!4x(3L^ZL*_eWiawQ%S^VUt{PO82+`do`jtzQY>+CJOL^+3 zen}!w({I{li0>ir*sw@&FnJhPB@0-XpM@9Bo-Wt7Eiu6}L`e(p6d{o|fsq$Z=6swt z^Genn9UcFHa{T?k*zoA$?(KUXU2HFW_WJc3pa0N@e&_L*Uw(P954ZY9A3%Q}9V7PJN&eFi7g3>Z%DK zi#C?QBcDG-Q)e{+UlE|0x3~EJdP(eaws`VFh#{E&f(sVT14&FY>$wYCG?9@G&^ykUrFZ6f!7ORPthC4$baMo;5)R$a zH8vG@Z1q~5*j@5t_Q9kmEZYH*5T$Y25!h>^A2q91IPe3(H#Xm?4>tb0UA{h*o@E22 zjC3fxB}sC_Y!RJpf}}pW=&x&=WMCFqMODGrpjiDZr6fsRH~z( zMjJDkF^!Sv8u-DFZkFhT<;H0Mkk{m;%r=KkoM}`#rsJA6da7slY=c;iIB6P9QcTl| zLeR0weGAJg3?6ZVjq?Lmpm6-Q$$Ag_3mt8cif)^w0~i~gX-a4LS|YbuE;k;y@u67y zobC9qGPAU>04GnKfD(;^c?K@!G*6rd#6q^DyR^0?0x*4&V#YIk37+qh) z%}MBic`@vSUs}L^@>)1<8_imxA@AE;LnTKsSD~a3#8=?##lu5NT>QBy1nRo3O&qd3bfQ$ z6kh|GvrgzTvo6|8T#E(lR^#x$Qp;Xb=9l( z+a(Qn)QBdhpbiPaMGG<~k`eDY5e{{S)oPQQ5m81U5$n_}<>MmA`tc;lMFKq_b4kU- zNrPW7Z*3-dWBJ}(EQIX~MUk-7;$2ORhtVTg8((#7aYJCrj{6uajOUU^fVi}{K=y^$ zh*nWOw+IxxPnz8dNjj`ll7-(JFyYPWQjhhSrGrY6AU=2OYc2o_Z-?|4k`~>w)WD16 z1%Fp1Jv>BW$Vf<<%L?@(PRjBmJ3`H`FwneltPtQ_DZ!^VM+_&@kxtKZ86AF-3WroM zSWg^oX(Uc!p)+a1)g()RWc<<2LG=0(93+6+X)`H)Zed^5>s)OMDJDE2WAS;!WY+n) zS@D^!l4crx^V5bjJaE&TNtJ*$d}>8lo)cE9T$f=QK9hJ(ZQAsdV`OQ8^wMWvI71tf z4JDY~z2`P!s8IqX9KM7AB^%`s=fk8B73X4=HiRTC7QoypLc+`%TPuG3`0I^<8Z6Fn zU=4%w0K2yDgHz9+u=|2u-l&nM@F16_9>z_O(*P_@FwKKC<+%`rDPEfv?Y>7A-KBGz zS!1RRn4y=CcDFVPI+M>wcc9QS9|yWORePt4FP(>L*RR3aHESdsC`8i3CqzzC2}rMP zNE#6JzlCYNp;~V=4mO(2gLjS{`-efBh2g|1(}9&WpBFRWX; zPWl8i+8%7|Sp!`{QmB)O>6=61c#~92QsJF8Y-{@8&`=8&=9c;VJ+8#}AKka-z>nHPAu*MB5Nvd8oa}pDqftltzVagy*+zKYM3VYJxXT)`YSfv{{CF9VtkofQ7|&(l82|oB^g(l#Pi~Mo8Yn5(i~N;-vA5&Qrr!=%jK1 zJkiFG**^I@h`Lq?Fc0s|Lk@i;J+620pE#6tZzqjWmKUC-NA&#~r@zxZ$KAk@DPYjfU9G zb+{R=XPXj4asi~{SDU#Y=VxrX>N3f*xx&_gkeS9>H^p2b!REXodRD8p(~E2dg4qP} z=Zi7xDIf|WQ=qYpj5j!o&Socyf@C=yM_++PV+dB-%Oo?&=~(sV0|t zu~!5LmKurQt5ASSSDHt)8p2}`Sz;Y0Xsf834YHzJX~Xi;vN6Xh_sQ~H@Q^f67T%(u zdHjj4TT>*g-(O%khGn zspp?R38zk-gyujCHm=_Ydv@PO^E5H#A@ufvh?Y0eA(bdZXbq zD($eUV-}h9C~$YN8YWGNMW^G+u`xO}GWOQ-v5B|t-mz!-t#5w&b5qkd@4Ip3+(*9f zl`ota93~CH3H~|p95CGz9xHKTf78MRKK+r|H zWzWCE@xwYuvvUN3D`xpJUc>_jc`!>W3oyiZ zVD;@)P#z$dkGFac6HwJkN01N)sfy$x!C?uDlMMn`#X!SgbnGzb&PcN0WjrEiBhZL) zi%v(<1-mBQ0ZZxhCJjL_hxY`paiiISZo5r-W-l%v1i-NgP|kyT1iE~ksDFSOV^!zQ z<0(j0$D1fs(hPm{!qv(RX}a+{=)%!y$3|3Z-h}vf1Pn5k0{}lGJ}b}NRpt6S^HNU5 zLD?8Zbq^(;Rqn=Ij|bedc*`i`c$>XZf`qR|$$r+VJSS>DEC&a%>vZN(-d!&v7Fb{I|(J zbR&ZRdYO_I0bacD0!&X&!^r4J@5TTiVYd@)Q!@CqNipr>Ozr->_;dTjtwiNWyr$9S zv@tk1cyw@R=;+3cn|@`_{yR?1&dz;kc7FCVAN}Ybe)HV9bIX0W)<60H`akorYs=c5 zggp284#Aq-{9oAod=ndqCNEtRvTO42Dy10_J>oS_m8^Jta8F}a4Uab>`m zhU@4ig|wIE_`wy6P6;yE86u--W=cSl#=cnojrLirr4JOdjSH39`I&SC;vyA-YN8|1 zD0tE0ia}Lb%^0(e*AzD>2z-~wJDfikRS0~ra25Mp0^D>{#?q!t^v29mX1IRO(2st0@lQf8@2+mJdN1`k^}KJTk+k2^K8llV(8#&J-bDj`@Ms05R`Hk@Kd|oEsR}Qrcmb*_;$4 zUDSy`HcHPH7v~K)r-!CiDr{yZG+OSdHKh76_u4qd01ge)(d(i%kRS<^xul*3*`Sjg zq-b-qE4r1Gz`Q|T=w3EgA?oE*10i|DG&UWQ^g<4O!snyPc8I8>FE?7xKKm{D!phmU zZ98DgmTj=M1k<>wQ#(NI{|L8K{{tkqG1ayMn4C%VYJ-DKSXx}6vErp+7QO$!{PoY5 z_izyA=4WZlBU|2TwjlL&4lc^;OkNaJ%9AkW0Jj9Dcw@}9@~O|L+A`_SoccK@?-P0| zkiF!KT2=N$nmhP58Hc{+)$1?8`Sa)C(8wWvwu%@%ui)4iZ0PmkrgJRfXNmSyvAH&G zcGRC;ejegy*PfH|zj>q9+}l{)`sG!VYkv8E{+VC8JU=)0k@>m#PoH@Hxi5d}Q}9&bO6cZ-KKfJ_pa8dK50cbXFR(`1hx# zZo+^3$iIireCE?7h&}?Zy7L%p+PoDxF49Zm0$Z!sU~F`h-s`28UbfV?AZ`{|+V6Bc zsHR+lPapxq)X*g0u3lrkwJkUy>C7h(DQr#VMI-LX&QDpOLiC=z(5H<#u^dVzeF=!k zC4dEl`OKx!&usJ(yDi-uFhI^C>#R+0W+f+|Khiu@QPBIsO^#}h*p1d^8mvLst}tsf z=VGE8LMl{!=d@9*7z1ckj664QU1E~aIfT5AW2sr?8~nO?v_f-fN}70Wr_HVqQ{zlD zp@Bd09N>Gc2pg`=frP2b?{lPgWYP)^j}f}oO6VcVKzyRtOt7H<^2FboLRh*6J{@6w zaSOpFK=QKIkfkD;`s%&Cr8!n<&gknKnQfA+6s)Jl)We~nQF?B=nr;{(bH2RvC%Ak` z`5v7~R7Y#BEn*WH9VQ|;G0;QdJCZgifi`&G@tiV=pwASzWMJVqPGifZX}2h%x4YUf z+L!}Qazw2=RZ`05Qtbg*cdZfd-Xi6#ZzPpAXnG@X)h3gQP*J`%R+ttR7fT@hG(1y+ z>CusKShsFHY~8vQ)~#X9w0FUz2YjzmHdlToju;_vs?no0*Z{a94oynFeUO*nAipe5qk2GbhY)dn*p&EfH9)~p#sqn&Y8R^=oi zWv#us2ld)_LZT(7@mKzjMy;{7G12&$iHXU-v3A|sD|a1#-6KoO3!i%F+_^9Qn-Bbd zr~6>KfAj(LpVQH74BXY0WXlJ*`3D*HE%{y#3q%0n+rQ+am_Ld z1n+wiu@KA#@ql$9L>~>+Zz>xZG(;oNf~xV&Di=sQ^KDwR^*U)-6lRXzg_@Y6M=)D} z1v_WLZOGns7U;Eh?b!y04)22(&b>&i5o)~2hRk<+Bo+!<@Om9RcpUCHayPtu)#i2J2U7uEzP*rMq zd7fPk!72ZwDF1xR=IwCp#x*#9;S60L-o!^>4$wPSrdnpT%A@^>Y?RH?&|JV%8Agbk zn&2&jsYf>AQcrA`M1KnyO*ZBxrbuiqU0UH(83#&J$`?9w=4821S%86oK?Ch-y$JgE z;$RYrkTgq1-*HHq9?@Y)pGixCOu%#+;1u(2Zb_?^YbEP~tCe87yjAZV9vu4b%8k^` zU)%dzkIl`_e*XIOwa-2M^w*#M%2&R!+y~VCqYt28nZuQn{r($MH+sz9wHc4uS#8FX zMasuGZ!1S8P7IMnj!cRV(c;V{M*FIHr9?Q;h8^~_C6>iy<^%1;j!nzMMxJ;N5hq3O zX)EO?B~a4o^0wa^#b|jF_XPZ#%U7?!{M-_(-?#>T{uloS{Or&E96WdW8_Z-&;|;oR zU=vMFrR0os)C!mo%x&4Y19tD+2h+1t@U3UQ4v#(YNC~Q6lrldMlYIL03HrMK)2m9L zeiV)#eHCn2ztNaY1iQ$HQ?sEmqjK#{&*#As+04IN%hI6sQXON9Q2Ic?s9Pi!QDDuP z+We+$ToAbf2q*-L$A%tnZUUBC+BfzuGiKEc_0$!MLy<-EA%o5zK5mYuw3` zgi2;+DTGFucS*|g;;NwMpE@lB8ABn&jfrjSgk9DOj5eW>YfD8usMX~`o033cq7CGz z|9ECvXFdmS8<3E6>6`ta0E_ra!nw=&59|)CM>>MrArUM-cU2fqJ!W4lFct;6|dtn?ZDT zVXz4H+FHWb>(mY_0)Dyqui|R-eX`1fJj%gblx+l!v+i+4Nye1x1%x5d`clP2HVxK| zs^EZ(*NT2$*s6DB1tXxTUY6Yjc`Q;;hvN zUcnXjQ?MLIrC=&sLwO5Uzb?IW5kCIO55v&l5Xs1nz3MpZ-FJXA)CG-2XV1Ge>iN*a z?&8k|2ODtn`YZ!oya(lfH*MGf&z^Xa-k0P?U1rNKO;ePxn;=y6K=Hhr|~m9#*jCy#C`p+{;>uC9lAX zQzfg2)+^-@Qe80reyi0YGksj#l&OQn?^k~h8;{bcVd^!MFgYg+RvN`xNL)3fgovec zCsDNldP;AxNs9eg5kO)J7&~0B2d)>8p2@_BnqhKjC@24?zx4$C`ahn5*S_wxu=l`r zdVSP6bI3$Brk#18uy9}ur;`LT{NBXaB)sw7cfdV&zYR{DdJ?|y0eIw*FTibk_LcAZ2H3fCH$b9sCLrTDz=WFrLe!J%h9&|D=|4A1C!C;Jm%H3q z=I|2npT%-(QAF*r7Z7Oaf`yOFUgmm|%xIA=G_*m^M=B9TA{~j2C$gCmiI3@bh1KI; zQ?LCwq74RP^pugp1scI4N2*KWAqJupK~m(}A|>HX19k@D_e?(t(eXn|t$KYqtR|$( zH>mX#0b7aL2DMH!pbYl+y~$|7sxaz_Zl2E23&a>OhMw`R?6Eq5I1^HFlUyMoFt~XM z<+0*%WULbM^9TPbx2DZ>WL;xKA8mxy^`_w8r3E}D?vTC*eY@8%P2mtSY;N#>J zv}*NgIDF_R+ZN$p*2`bi2)0%F`s+7*7as{;PzH);Py4E;1@P+*mVB2$KU$MrArq+ z`k4nm`iYAdFD~`rUjOI==ja| zu>_^YKb5tV|E{6D&XrSzDwDDm`#qp64{aZeo??jGa_ndt89QI`A3P$$dSGlQR|#HyMCgTQHzhR3Cd)fyPq(Q%HDbb zaXfqr&5*VdHk}^<@UGnx)tBmL(&~a)Vuc92Z4$~eYf5yoxnNmt#z~;KIqh;YTP|{y zZkJOcV|YVk-IWz1&uGWeoXEgO35sqCvn(@U>uP#!yRh6|;&G)cpJ=0bEJfd8YvA;S zIJR`f?#`Rk#F`*QLvDKIEGFu8e3yVsE`n9VBrayiE z$6#`D4cvb8PI$u`-U7RK-^TIm-6GLT^SRcWHL~eLsT0o$j+(AFtlI+fa|;BZ@j$(L z7#TI-XT2+FvZT5VWzj+qo93*kQ{+Ckf@(13H1q&s3!+Lwwo;`+NF*UDt>|qUbkU+U zaY@lCh+1ntf9hFsbirg%NI|alc4X4DEE@vetU|JZP16w*Vo0+SARUj9a<`3wGU(ET zn)ZNF4^W8ns9k?;ASKxtJ)>FqnYPu+uaVJ-pV+bUw(I5hzH;f(#g9LC>Y0x|^w1}- z^kp9XqYt3}lw)*wy?QGH2us&BTQ1g8@_Ue;IgnE> zFZzl5MJ6EP`IDz);<*gRjva^h{peqYPk!t{IP?6AQDaI8eMMw3T<^}Gtnrd*eEr%@ z@ZNX*B)s|c?}A6a`9=8hS3d(crmor~j^~1L;rR8y1D}8+NA9E;S#&&cO#3jyE2V#B zVyObq!>mfUjM&y?qM3CWvzHo7LJeEM%`#lh?~07ZCpzK~Syy2|vMh_;@;(><(uLjS zd5=!7NEW1^gQ)x)95*0Z&VuA6|37>09b{>C-G`m~z1KOX=`fwAC+D!cvshrU03?zi zA<+zC0W6DU3MI=b+Y)J)T{KyeWmfqQRmpP6sB#s}Di@2Q7=%EO$XH;pc{Yd1p(p3* z?&%!g`|kBU=bm%!{dysnO15Q&?!{ntx?jKWg?oSJoL{Jd_@W}1B7a<)2!Ilhf*ZZ% zSZWavM!tR`z~s+}=K;fVB<(OHLkcx1KCi@bi)XNOUW0|*CQf#e1V^L$^qR!CTM}Yr zmIw@8;vsIe2q}?`Ttz#H@;EE>4;J&Kln@uvPqZsa(-d*7z~hr!>ON+rNKtUyX$*il z#MzToBX8Px%qy>2M#bIj<-0x0C(t3VJsdZ(ye;OhkG=HzDU@TbZUud zU&1y3?i&#AjyPAF2G zX3D28ODG)bKaYi0C1(&A6C8y$Qu;BCe@5 zHT6LdhzX@g@rn_Cyq@OjVj%&Yz@SQwT}w-w2jxv90AF03Bbvv|<7p43zeQlWr>75| zKKTjwuB)j(y1KGLF|5&$UiNdNRk84DrSqck#b_ht7x#BP5bWvM z4r3z|N*e$G9ew9)yX3^04Wh`5EY!H84dMpC0ScQ(eJOuT=>a@qmY|C`uw#C1C8w?n zK0}55gA<+@RNV%3!vlT62Ed(_v~!A`FASM^{`v2~OE0|uZ7p3;U)!#uS@e3%N@ecA z#f|_zPubM5zpi-BW?|9wf0`Pa;kjpi8b1Ei--Jt(XW+$Gz6H1MO%|e#mzEddl~;cR zuf6^fjEzmebI<(^5&|LLP{zWz0b-GX{K@)K4K0=%8cGiy!g19xHwQ^r_A)L(v^=vy(MjThrIT5c1?j28YLh#G2Yc(4jkqaDZ~`Qb z88*5Qs0|dqXBEgLBU|aP%0``$9bWKwMi5_JU1zF504*6`!=Y1Dq!m~jX+=ROnb3)# z$X`~EZ5O!N(xG;hTsvQxcn*swPG2l^fw9O8-T%DMEfX$!5QqkkVWb<0Wt!!#D_(PA zBZ(G{b|ai?ERLiDkJe|k4dL&VN&q?pI_-vr`J}dlh9k|R{vg_iNoY#Awryf*XbNH{ z7c{Ko;Y|sXCVZaw*+Oca`g23dPmY-yplgTK%Y`iQn3s<9q_);}x+kg|73STt_z~|> zi1F7d>T)*GY9uyxHu{}A)mp@JsJw0LOuMpn10`UFicb-w;(g-RfV%qnkkALf_L4!! zh+Sp8XK9+0G^nGVAzWK1K&%9d52B?ZK*i7M^3XMR37s9Ug)reWR5aqGf?Sf=Mi8F^ zElXP=M2Mq*Jzfh)=ljMtzXE^$jV}|JKKazg;nSb`n=mpwM%P$#OC!wA%!jp+qpaK7 zI)WodM-M!j3U;U%s?t(!)^4kWh`6Nq(4Sehx^qQJoD)Zx7^A2K3S>s9N!G=#e~~vH zL9B~sNO{p|{JQd=9TZ}{@j&5e!YLL`ukaY1J@+9D4-fmA*ajZ9Odb;sJ^&;-6QlN? zDJ{ln!zB?s8dne;YNH5Zw_Ibw6QQXnA=UjPc??aFHTf|Kc9A{WIb}lmd$_5gq45)q z4Go{@>)-w_4(>ZRIXgG=jrqmdubesa*6DZOeRpLG7H)n0wFl6nqoZ}s*!?q)AL%Al z;A%PU;Amf&1vLQb7c8UF1`h`NdIxmnHyog1*aTlXcN7r7Hgk?QV_oJlj>zQ&w&aX< zZE}g=23Jf@g%}eZaT|9YU7{*yUM5l&q6S@X?5d>JkKclX6HK$ZH2XO%wIgoT8@p&l`O+r#A7$+1u8|#%2BvElHbW|^C z2Z;lS^^j zwMV9c55yZ-&W%_Cib&T)eNYMkowMlTBBI40 zZUgoCjYY20&YTJ<6V7rJNTtG3aa_n4aM{?!q;;jFyl?CVFI4C0ersrKpzbsl2`Fll z=}CCPyb#wS=TZtT$2JoZnv;qyqve@Z@m{p^3-24la563~GPWTk3Km(;t?N`refE>< zG})@#8UN_1RX58U|rx&~dxLMT&JgNkTvBS(l*xKI7{fj}A`u*U97_}Lp9 zo9H!=@8teB&!Huzkn_>7Rn5hmTWOlUxgd3Ii}WFba!{OCCVqrO$(a z97T)x!_1`~)CoZ3LdqE^I(8)28MwraLnlSimeUD%)VY%qD_B?>yUNzZhLE6U2T=5D zcEJ)vIm-NfEVhaM<^O)+!ddvtr+_}}ADC120 zOfuEf^wwA`K+5G#^bJwy9H(-dEhU}gEy#W>p8C=_@kgSzu6|eVw(bAzwrvCd&CvGo zJ0Jh}XTP$(u=u?<-hb)M4?g%{ZVMuAef_lr&=V7fcb1^MeQNq)>gU2(2V+0#E)A(Qd2)yJ-poQbeW?jS`^Fn!~h8<)XeUT8zR^Y+(4Va$0 z=Yez|^mY%@rsUF;FX{M(2*yM>6oW?$Btkv^Pha04{OnKv3d}Fe!iQ&0!TC$?!Sv$? zu@m8c53BE8oFah5x8Z%d1WY;t z$_R`NcbCPLBj@WH_Sr1~%p7q^xG zK;m_mb2x}eI<+R@xytpSJnY2JT|3(Biz`-+B?j9>ZLz7Jbro>3Ccp$kMuPCx1K3Kg ziK;gBYfjqSc&y7TbhXARM_r&ldCHe-Y0Z+?17IHo^#+-Qsm}}AbNxO(!wjClSGhzi`le;5AX-~2B8!5{oCbaifnBZr=Xy?YM(wP)0yhZ2mB?t+`QuIa=I?M=lN zGgWxTZfvCB$wxJu4CpK*x{^4_QUP}|4J~*;Ln6xMeIo*Fqw8!z4Q*1_>97IHx-Ee% zK}c8!OG_d5;LhFaFf%g){r&yX$s?KY8Fd%Q3ck?RrLS#bkPH+ZPw2ul35_Xw*u{>u zQbFR>#w7GdFhy4onP#b1HG679DxgfbO-`pUHcqT->xOzddw(4|xBdFx9vGhc^e2Dz zyS@PX_N}|uU#+i)TVMY2m-8*ixb^kd0zfy{wjA&aO!LCxZ0rjNjl&if{X&R_n8)*t zkMs}AH(F+5T(qR+2}n~vUA{-7`$HC#(!`C96*W->N@WcguqL%!3!v1-a$d(-s(#J{ zsJXZyt2hKSAjDd$7FgCsuUF+-;{uA`mkv0O$^zK&Kziz?2e}?dclNm-TmO*g)LV_g9xIi5iL9045Lgi9a7XTqMADK}Z{#R^{1nNu%w?f7cz zE9E_g_gBLrQKB8-F+iG&iy|rnbsH4w;xrLW;;4a(AUu~rv>U;?GqHP*0IR|`Q%GF% zmxm4av(T$Fb|Q(fRzG+bXitXI`J$Cu^bBEF$yRJ-0D{Ck^|cVvc}s^r=t%)dRi7#Z*0YZ!mgH;=N%CK|Z0dD${FMT>!gy zeInp%YHXx#^om^xYprEJbboDUc?PYm?aTv@0tUO?3-NHpzsuh1VP2m$)9St*^r6 z%NKp|FaSKnDS%)piqt|pp&!LZrjs;Nm@p)KjYN28RG_R{O!X$WkP5jiBrjTIZH9Py z?lu>=*2Z~Jg);e2Qo5}g7rl!54qx19r2cPfg?3wk~+3Wx4zZ(DE)Xe>t{^*Z> z{{jv(w&3H|*I!uxU8*S`@|%cRURu_)G#LY_?{2b)Xv{LW*kxitAa*^<%)fQqDKl9y zMG7|vQg%zy7I&ruSV`x_>P8wIBW#sT&t2%a-3?=-yJ2K#T)DU< z?!=~cNg|{qu*)9R8HZHRsJ~M6n_xZc96tyn!+W5ss|Eh|-~Hz>w=fee(QuXWfal`H zv;NOH=;`St(c#IH&p>l?3wuR70$X^HaWm`f?I9ID9)}J8ySjOmoZ1XlnX-W&vZ`H+ z=;Mlfz}mVx7CBXwx*?DsA)RC=Pjy_L9 z29gWbGBB2483{7cjw6F}olHcA1pRztBY<*Dh$Kpk9LH3|s$EOR-oMe$*70j9)xpFL znh54<>VlI5US~9!0H?9gRTha=S$G)eIB6Ht@Mu0zfifvt*&94u--$ELW~TrMVpK}r zqktfbn!txifjfY3HeSHZ{>>v4e|U*HV@#t%lYs z66=LPA}e0nz`-Bfsgre4aFFHeO+3KWvXQ7x<=D|9VQnR>p|Zw`+YxucgK$wqnw97@ z0?`@6@%jWwcaJHA4fxXk_OJYTuch;u z8=-HN>D*Vj`z#$}q&j6h;lWTS{JL}RI^4c{9bSCp+rewTre4qC^70b72mz$$)g^Q+ zNXf&=ag^eR&z;lQC8fVnG3$(`@};cjc&%(k!bYbVG3Gmq-Dfa~5I#PyJQj1P@n`+vq4P%HoafA>Fs zxV*6N{Dt%9{_KTUzWD(}Ta>M@Edc#j;w$qT$PtY1#s#t<29ldsd^yb~&XwZ=)`aea z2nq3zN!F@pV`dA9Zqlg>!V&Hcr>~cYizsviK{bT5yJA-WlCGRdJZr;Z6+}9r>nNbK zP>Iv?%73$eEh*h=VOwt>(I_aG4JjsK8z#YICNa?04nlapGqVqgc5(jVd$40{4~&oP zhSru=9nZ-qvcz7|mLsIgrcCx#lw!srGX(063l{WQ-PSz_+xthMy}c7|+`2@Ym#nP# z^ixw0;RiqX7QFuYi?DO&UO0B_3D~#qfZsfaLBc}j7UqfD{P^)K6$|)f0?$2iapSeMzFtwTbFg$PQFuwET2WvrV99_h z_+JMBUoA(A1CPw5`{?L7Fy&0TnBq<$swm}@^Yxr_Vq&CKanhfOZWq$6vPn#{P5gZ| zewb|p3GgupBthYZ4K6yqAg-a#zyGm~!8BNBhVZzEW;?Dyp`GdPQ=Mo=BxvG88^}2MUWUe z`8<&m=ME#*g@FpB&LDh@MHnh{vlJ*sDob8)q9K5v6c0I1FsyVIWs(9WzFu-3g-4AP zl@ljU(E4%j{yn&M?HU|9co16JTHwOD3-AlS_zUpWuYS!J;oG5os2$#U=WQ4m7$7>! z@bC!i+PxdzIQ2R#__YBAsv8vI6mCkJSq*oQ033Xen8t@w8nQE7TcOXkx>^l%5pIpG2#F?Vdx;08J)X(f}3?NBuSDj0zrm(sF8yuY^El@h))~eG* z(J0SqQ7ii*T7Kf^!S{dj)>U{k^$4>R3hO1`l&s~6z+DBm-_3ukKHC< zk&^;?mjpkkfRIHvD*kawZ6Mk}7663ho8HtI1u25^2~UZu00}u9CI8`LaHH+&>V*yu zROjaBU~cYlu=WG4(sk^WC3Z`upuk>PU4jqKz6}>HpN64C@Qe~^uY&j!|BuS!QkL9 z96SCL96$DCpp1ZH$A(-J&~Smo?#kNQDs!JhWVJqFvhf*ST!mUl>2Urdp&LmJ(?{0V z*7*#HkTYz+CGPG!%N*aT)$k1Y3btU}CDu(Q92aAqdK4=ignWg=`^wo@S#0UTMiJgg zh@Up0BglO`nN%2X2>|5jL>9T)8Fv7(Kuy0UL!nWj!UL%?<;F%>T3n>h(9jtCy3uny zjO-mHbp}hXkQNuH19>4DTkkQ5R1{@*h-femlbc|L<cTQu=1s{k{ zZ17625=fImCj!-sr#IpK5%9!Mj{f01*>P%7S&BSQD=(KRpW3mYSSL-%#!KNH5|m>j z07*IGB1jICDO<1r6Nr%8$dj#Q$^m^gh}_yLJB}b%U)GM`&QXdKrkXOHSG<<-*@HWa zRog>6*bbJtW z|LcGKdvN#e9lH1N8ZA?bVVHDO_+CM(PnDy@g_e%*i*y6);d~;^MT(l079l!6r~I5rIb@uQYBo$onH5V>P%lt^gj>F1O);DHHwUKtiLO zO=8 zu67p+5nEc?zSz^%^YFy+lcyff&V1|j*T46Tt5>f++Jcx{0QxW8S8Z$Cj#8El&n-OW z#V2gwu{&aun>6Fi$f?HJ@ECS=eFbLcr=hh4t)o_zH%BAg#BsrK5*RK#j$ID4n&yrl zd9h;W!+_F1WD!b?529k5!GKFxkg4Ta#@(M>95o>NSI4+rvFI{^Ygyu`>AVs;PyUgu zt!>cU)C@~Y3oyShPbT^pfh!ag5lAN4Gb)V2x3ICX29wv$!?l~2ps#lj4(vTbJZS$n2ZjJp01)fzIRkVc zt{`qS2p(gEdy$$EUK{@&!Z4goqQo8Os5s99I6>f<(hrAYWCYG3SSHwz5f!Ht6U3}0<|XtA zrUyvZ*gG8%6dhoW*M)Q zJOkh^A;-FlMW#4)a4{@SH%1x<0-l*_fX4CK%`98F@H529N_kaHn={axQya^XCT~skF zb_qlATxGB38u}gr>W0Q9vdUX>i($f04cBT-77D7&Wd*-xV9F6q(8_ht;@{WyfqI&% zbar;ZK>v1_oqG(gzy2~TROYF}jr6b1u5M_kYw*t(D1!pfbV8E&BdfrfV&ps|-F=9GEaVL?&Q+R1n)ES@vdLK! zWfMRTQF3XD7PFuQtx%oBNr=W7rc|!!YcALPTuXE7&kg?k-&^qa)d!E~XTEp(^yI(Y zv7`0+mI!eRK>wxqYHDfQkM}4V>B~r0fQ@>k5{GRWE>E8I!0Whj)s%mSqyP2b(y+WT zM~i>#f?C}G9Xn8v2QMow@@gIx!P1!`8#|}rDwa7`60vJcSzSFg(>PL*i1_j00zx zn8#_D_9NV8I=*&O=cXWZiNGige1O7;)T&E{WAT>Q+ywxd>v_ZtUOakbbR7aq0{Ebg zy96F^N5}G5n-ULeO%V9G(CrG-mPBNj*u9}wbKp3Frpb}LpowFAllZaAq#~s`NI^-! z)*+COLc9_eG$OK<%@o)@BG~%H-v{fITA>0+h;hrv!Ll&c6@ zUGgWr=wqii26088s;(-Dom*<3m-??8C}cA!O-QL+$>Z^yp(cW89R5)^Zd`@g*;$H8 zH|$=eJnn>cBmzK_HjCx6XHW=n5}HmznJ&=9i;1SdlL4oqLM_%4PkVZK8v>9Nv@-y< z;%?(2T~j^>q;A@oNj%>dx!qn+UoMf zFaGL({bw_?55D^KuYdUr-L_j_TLAhmBmufqeqv#9KE#uX2WgfmugTvnDA2D#U@<-O z05Ix1h(ltq3I5Yi9~9Qu@xhG_k`6VvC=QbwT!(NRRHCuM2wX_;!y8<}d8YBLb`Ue| ziU+?+o5~>=6j-*bvI!L;R`4O=D`#O-q!h@~i5o|MZ$I3-f0sLIF?kQ42gjYgy@Lc6 zXAwyI4FW;1q~bxr7R#vhEsg|*uCTZ`3va#m8k|1!E({Hh!RY8tzo9fL{lIWXR2nAu zIwE`lBOcqCI*ZUax$MDw*}%?;Lol)908CBahl^J}fCrCmYe!L>8ZKQr50@`rfUfRt zc=Cyl!Legc(ukErc~u7+9{l2_iSMOcg9&xD17|0 zX$hW}3UOa8b@MlJ_7%oS1kWff0EWO8JHFn^!i-ItQa0VE0gN}1A3!Z8Pp|Hj84D5H*J!lOozw!FNk zQ!=N*L-DB2^&Sg+)=WWx0uB=*&&77psPAwd9W7`o;g4;(tX;h&Ao_VL&(`p?!;$kxM`s6gb#)QfdgsmwxPIdXT)c1z{-@vmCoubX4*u{D z|HR+pa~_Db!7u)upNHY$K@$F9=lP5W%4biXg|lbQk#Lu+DQ$@GK7an4INd2XKBRhP z#Qm0OMhXBmL6oNtp!5(&-r2eE<^ALP{5sgV_W*f1H~4~SoB#WjD;MDO=?@aO7MD0S zIJkCw5+<)+iLMTt3NcwL(@-Rxez-K6JMsNzBpU*pAnCd$?oi3NA$`4wxlN?>I4Bfx zkvE+NoWu!`a@;u!1=d#nE+prdk*jh3WvdD3EMW+}mkzY0qeBtSvI(cj= z4ASUw=?;tgqc(<$zSGglk44Sa6`0;pL><=@odBfA#-#;_Rr(BV^|>qXyJ>nQ6E(g! z)w7#_R+u^f)HF0S9c*lBKDe!S@VCZ)?ZEA&rG@X#EzJJ$d+(ilcXIO0Mc7J1+yc;l zLB4Qh{TOx@aI=?gh|mT6=7y#a=l!D&<9$-^K{E23YijD0bte2&+|aQDv8`u-62SDP z5E=$^jDuZSl}BHj!XpyFl;sUpIEUn(QMI~YM8QIQoOG?6TKa&F7DX+b@jT2h-_tNi zaLHIbEM^w!Y8&9=AAc6+{DyYn;(54r`v!GpOnRI+_PC>?o6@)D=N}UfTz(c46dBkh z{>K8WOAOF%-o6TV?%njqa1aLi2cfyKH4%FuRioCwhikBXV1OM&I4YY3P9$n$*MZEG znXikY!$H{AJpg_Yf^!$&hFfJ@5AxqPr?%(Om}y6EC0HR zDt=0)TPHCbJ~wX8*mWfPETPMAoV5d|VAp6DHSo=`lZOQlb}nrxbQ6&_BB0G}if9iV zkFfYkr#Wrjl*!^S>9lZH6@TD2061JVHS zJz%F^0*ZvgkDXkh+aO@Zq63{^@OoKAfm+%nCEaY3&<|2ScI#rSw-TycdX5T~|6rx05^h@!{MARN*zFo^ej zmc*q;0g});B)};xFR)O|xmgo37hLiEB_S?u6R$j`Ndj}sqf?F)dc!`nw5FD!lH`Q??xuU@-$<1gZnAaIft z*8>B?921==p;;(Myl57WiFzD4c9uI28hr~~(Mq?=I0aC$!Rhn5VmzxXhLU_3y?-6^ zih~eD6ge4p69~}oB8FV<8#k}R=;$~+ee!8Ibl@;tx^fY&UB3oPOY;N*=yR}h0WR(> zEp5>3|E#aA5KlT6kra2WQ`NkDU%IZs7oVEGM`FO1mUa(fd!f0hg&jmTV0C2~E?+qh zzxM0D2ItRTfbGM*P_ED6`i+hxkc7o#;*5Zl82>(+n_A)ck!N6P<{ov+BV8w66WBR? z{q>jN)TvisVq!Nu_0%&kHa1S(HqM-*$B_TE2co$72I0~M$3`=iLwVJaY{?c6qs?0TjW34#Bty zanei?5H7Bj_ia!>R*k_wWXonWHawkX7>;_^ajyma?7ha8E9nM!(CFFSNWPuAPQS6 zN|#;kLE)8__`Kjh#IwfkKJm&o=E^SJ2P z!gQ1H6s8a_E*(EvAFPS4JQ>?(3h4J&a?lfy2X^Q<2hMnzKp|cO2=a3&R{3drdbYvP z@F4jo<72O1zd=6s|MZ{!CLQNL`lBzyy*sz4D|z(zVGoRZ{bO#!_>OUM!zqz-MFoEM zcYhDgoH<7{IXov_T|NH3I}VeR*Wiu^*&vz@qF+=v*edXVV}yIqLa6_@@@IqCEkK%D zzV36K{2|X7edHyv(^8Cla9>fHj|)QRx%tOrlZoIRsXAKBDj&T>Tyb0%Qb(P%GpwHH za;ayfLPu3Wug2VRCm*5*acUJ;{7vamB$N$F?NeXqWcmPU9Cmb3l4EC*30M@fX0aO% z;a;Zct$&`Y*Dg_r7+vp>2;b8JLCiT4p&tu2)OQ|WQyQmyUYk%$62I^?gPi-?nl8w0 z019TsNy#P|1ae>a5=bpeVRPhoR4OMR+9jQ3rw%IGy|&4u&!;ZG_~MJzEtt9m zp#P(NZQnk)+i&_ci%atX>}DBvS2E#6-s$S@xrmoGa)cWjyP&U*ltdNn{yM6-u#5;6LKYlh4w|_~tt= z5J2zUHUMwG`x1dU3AvFr0*+`WColTf7=WWkpMZV)4-r@h-5nIph0PY%JlZ(304~Fy zz}c4I2yy)gof~md2%OMrrK({%PLhNyQ)hH@W$P=USqR`4OFK_e$WP=doa5(Q)y;+DN-H zE{g4}Nd(4DolAoKo6|6o@LmGV2zYbXsffA+#GAu$=Pm$v6BGaB7($%dAfW!cfAVf9KC%gp*G_0k6IO2An&41}vzBV{epgi00r9(iuhBw`V`D$!|ygUG;&arp*07=Hr}gvT#$N&?kVJ$Q(Xmh zmchanauPYO`fCuA8?jJd!-(+JwLm>`Hqn)ZV@)3LwGEJ3`=)L(k%AF^r>DEuubmVA z{MW(z@4rip0&L8r>yz9sWNYdiTlQ%@VQK~!T$@0+w>Al#0j1A{O4=5<(U4f9rrmPK z?nlu{Iy|>AX<=KWgJ7X3*9eBj+`fGq_U}IsKzjzV+72r>CZ- zmbM`47J&Z$^sAw^X&)|<=qeFLd%>HvM4=!h@Yv|A-}IJ+|2Xq_I*QlQBsBsBEA%4_ z4k11?kG?h3LH(ved#*};%i(wP3VSo-kBB1~ZXjFGggEt}b_tJ{7Dvh)7nA#pE#XWQ zEQktOM)B-yAUAf#jfyDfsss))c69vveE9GleE<1-@cOA&;o$xwaO~I#*t2(!|E%Ni z;NgAZ`Q5pDD*zK7Sq2a1O0dH6n=FDc?DVX0)GkHnCgPCjXyQm{NWw=GC>dBZEchY^ z|NF?HlLV}9-?|$($$>x$ef`^@7R5MJ9E5JQCZIW^BY4Bz+WNX?80Z^?r%rqVu3o+9 zi-bN8^cUgQ-AM+HktXxt!Cm;yckaTAFMc2P?mYxgKm81B+t%-&hp9D~G`1E*N60Hi zfsth|Xz~L^Fq&6Y=`CH`$b&UX4Zy__K^AVTB^K|kuBlS0?1#D3i zG6wHJ&WVmr7k_bDk&Qz@Tj-+X)XCIzOzvD+rein;lYyTey1g2XA`TKJPDnCwUr-^A zaHg4V;U8Ni;T8JI)~Fb7b!D{}11_Q*6a894VNy-Tv{tRAq&qH!i->p$D7hfID`i=M zKN;Nt*s%m+A|!5Fwd9>#!v(BmN=6>&FII{j2o{e{y1Q1vJ_?Hw&~0pl_m1GJzM)L^ zZwt8oNWq(ME7KvocISjs?5v&(={Dy)4U)}V!J$%cfN3rMI?ZAbQ|ij00E@9#nk;B^ zbRRbH|K(r&uN1Y^n?xpJdWu!LN^i4zrwIhKFU!P2eHGdT^>^a zt*Ky80$XSj;cV2c$POddBCV}SA|S70xaMuFSEvbb{=yjo(8i>k?3Cke)wfx2qc~gq zI1ynCuHu3*kK_~e(dQ&j;Nzr8hc0DuCuys)PeRlvL_-pj2zrescq&)gWSe-`n|!Oa zKu>(k)%_+WkfuV#sDWbcwmK9+K|^81kK4s228BLl<(6_|`MIX1#^*Xax;Dngc3oau zUVCx!#)Yr{=ttju34)XP*4Gw*{(tw&Z!RaO)3CP2BkYX3pQ4m@@7wA|jw`lCdooDT zjhkxBPomHR9m0qSf@K!kWZ z7hDV21}{sx&*H0@@hFHl*)Vb}Yk{3f2nKf{GVZddeU^V+9M8S_`j6nf58j5I6MNvq zi6>!vd>jS`2Yqqz7_LrUfyrx^2`GpdQzdd3IMCQk0vz0^Fk~P&0N~LO%1qdlj4U># zEOryK&?!Za?bg;#_`^T=Ds*+XQ736`;Zfk5R_Z+0>N`RD}=gYHxR#? znp$C?e+2gIJOcNp?!eV+=Sbjald&9*-QRof4f2&99v=0d|D*@h2Ltb#`Q;eMK%&De zfP0Kf7E8Ba0cUxl5Rx7xagDgiI5PLZ3<1yl`~tl;a+f879J`qsSVD2c!8WW~jbSND z@kqoiE*V7|8R zlmsmzLdXan{}OjNE0qd+CI{O}9NDj}t?IZH3R57Vt;Bd_;K@!%EG)5u4o87w@xubs zHM>R@ZGkRfsSr2n-5u#18hI|)PpPDCB1+p}8daeKDpqyQDV@uyMP#PnO9YRGoq{Yx zetEP@(}tg}OL%FM?lx`pv-*|p; z0!0%UiL1{;^!O@^vO+Os^}Zm1FWT+-bp~k{m;#6#Y}96~`2QBMt^i?yYjO;#)lhIC zNGA(D5B#xvj6qPneO=@}vAncO&xyx>aIl|3Sa$B(31h=!(9_#R*C3wXOXqLVdmkC= zgO;{NdY@Q?k(iXHjk!=1j7uW81;JYm_krZzfsag|AjvF9W6(dEOqyweXv$qn!s_EW zXO5EQ7^K8$Qlf;21tbclT^`dW4b;}xHXNv}sXuW1$kYGjq5UWBtXDQ( zee~e&*FHFN>iKKet}Vcp2yqKQ|3CejfQdSP(H)?~DYdT)oo50+<&s-moqH{JuwUYM zwKHT~G9tGcyNs21OEdC+S5-6!61OThJM$i85f2f>Hi>r5JP52&L5d`@3CNOhvhc90 zw$MgUpqMcaSSsm28?agdOJ=SmUS>{!MMlJu^d%h$RW(bX+9RL`M2$58g(HcERxW zadPjtdgB5-nz~z1f+MIw+a~;j92pIZoqa1Qb$?U|e`lPZw>L2nNwDfM_`A za)GvEN8Mlw>B$J3<8$Kr(bU)kA-H5U zOf3=*dWjd7YcO&yApxrc#B#vV++1+5A$w3G zYhU1!ZXl<8b&)#C81jT*d2w-xoH42_G8A60Nw~b>x(R>`wGl&uBd~YR0XTf*2#k!3 z!R}q-Bxb|{xW2v?Qt#i*^aB$OffWqOw@80dE(NZ(Se{Zee56?=MxT6~Qr5JH3B|rL z0iaT-q}h}%HbkVTQimrCg;YbA(5j-tM#fYglc?Z|puO0|_JxjL&y7Fs_~V(GM{xha zJ!oy)6S>-jVmT@B#B-XHC!r8+o(8BGrHV!Rhk-OPQ2otaP{3GQc1hF>JB{^`( zxyxeDJmDrQ1x@KhrO4v8G5Ik|+)N4=iHl)HE;$KmGnnyu;v%rlG~PV%>y|WC2HMgo z5{-nqdnHZva!t)psa*cT=-9;P2Zu&xec}1~^z`&srXJsT;pLZKzOx0Uw*d5i&{zA3 zzU_X~*oU@rz?};LX*_;in46n=+h3V`91Fr~_`-~sHF|HhwRS>tb51s0Xp0xTi8Jk{ z5|ByVGptj8W)dLfobYAE*v6>cjZ$;1i?O?qB*)n}4zjX1ij`CPsxEe?Lnnv1ouw=) zlO=9EiAYv4m~_caaA?3T-OU@Y%^n4W$Z#4;Mo z9Y8vEF3|D|fgE^@cr+9173LHdoVGv3!Z%P z8903SF!cBJd*D3kV^07947#efD$$xK2og5yQ>8rBYG zmZ?>glOU9=l!UQ>I?>SY@zf-^7+B?q<73x7m_=#~UY{6<5iIz!z-={2H^>AVw{Y!- zu70VmhJd6icxeZbAf@UhV|S3^RFX9r0g59-EQWa_Hx8m3jzox;=(WS7i8+pR&4Id$ zs2hQd$Bj!O-vgCvX(Lbpk6-~3t)IH)3Al@yG*Hc?CS+g+t zuf44u_U=9Gf$|;_29Ntcqa))Uz&926%J|jXjA1Hug*`)gwgm(Uir@;d*<9dJCt4X6 zhG==gJ*XPHy`l-Rv16J#`o#0WG%B{;Q}DORw_BsZwV27Gz%UW%3U}EQI?ROxr8F%> zi)ojn&B_;2^04qno4@lH&%iFf{>NBy7h|&Z+Bb#wn;8RXc#Cq9T`YhK0!Sk^cQIZ* z+A2lbmlU8b0m1;AdFpHzYgoMR5{|fb-Q~LCbW9^|RuP1YgWkqi|n8lLWOy zwFY}g zpt0$Ql!1xb*90+LM|+nps%kZrECw#E>^xK5hS=I znJ`O6bYhFd0tC9z#8wGh!kNrUsx;0xyhX)UCfao&=d7m0JXKqQsi}wX(#sFw-FM%D z{reBY!Gnh=Vs~)+5Ipjm;kk2X;QoDI@S2=ChWMcZeE~siQ&Tg&4vxv^7iVd#-PGI` zI(II09LTg&MxL6)aST&~rluC|)NhbLuj)2}kW2z-7!=7UF+879UZ+V!ok1iP03L3> z`}Z7!-8&A#y@$8p%H(NSSejM-vV$NZMTP#QOXuMG-|L6tC!Y2j^**SpZ%~`1)oS2H zR#%l~A|NzpP=vq{t<{8=NlqA?>}MJDVOk=d7wT$r`dn1Zhs3)m1gl2+ zPc>K0e@NhqqM`s2Vnl7Qd9wwv7bKiO%bb3qpj7iHOjDW@PXTyy6HaCBqT7i0Xs3ys z()B@L8A3b)2t$8zqFIoiHM_WAN0aUuPSW!~!!dvO4AE;)NiS3aVNwqd+yViA>g z@6_ha6|`E>J6Y1voMYFGz|FK=WE3}UQve6SqA=HEfEI&TpyG8=OP%;e0+He`ozT!U zj$JnBu%v|ZW>{>OYZS9#%fdj(NflMW{U-m?T{`upPkiZ4VTQ?W!eiSCSx=_0y10^#N{R}q~$mg zhoA19ia%EMuV9CHT=K|BetX2C1ptHW<>#Ej61h5JO3Ew=jYfOH0(d9iMV?8 z0vtZ{BvFsD1hhN3zb#WRz$JY3gmRKz6EbPgsgaHAt1~g)T#jc}ENom#sR9XeqIJXH zDs@M@8|sgCc6R;a%EtQD-8+wdcWUPGzrAqbt@rNSxwEmy#K*lFgm&ejvsphMutbAx3{0VwHR7*{l+A1h$Y%s zGD=4?F4#>qHZ=Q%r-=aJ+}t!-HY!h|~F)UL0Sx*r9H*h$9Da^T&{LR;3NNH(m%a}L6yjKf3_fa7(AHhYat zO~m_LTU}SnH?r{JE`&IesF2686&?di!=VNOUS(qt{y!+sH`+uAfX*N*Zc5DMH=J}R zJZJ*+%=?TRn8e0M0aKOe4Z#x5lnvCELTE+_&oR?r#6GV=>5dgWua5b~GPafX%ekED zA1x^odVDo1IgcY^n{?vEpI7M{pcavN;t#D>SiH#vj(h|FnE(d`v+N}L-!+0GUm+g@Di10#y5Wj{^QKzA4$i+)%X?^b9 z)(>s%ofMRI=gtin=pTX)&%En_@(Ea6n1`D;ufg6uhbROM_qK-*?!dAy{&tM*)_b;K zCQ!Ivq0n6ynvxOfrDh$NL~iyJD7ywusi!N6r2L?vGOHHI@$O4J>R|IgK(NTT6fu;gC;gyOYk2V*G zBTLm%`QO1Q!&4_d19%NR|D&%JmFwJDLV?tqZ@vm|zx^8Q+_{%LrI9lpyobZ)j#0Rl zW4arg8tMHJkWd@50NzU69mK#5u{4za3eh@{J3Su&NOMa|;DA)u3kfj&_+AQBV||Jfc7j z)GjiMQQ#~{a+;(j1sj4$;NTO6&{^~=77*c5t(J2I{x0%^$%fxB)0fA)k1`JM{*(bRO}Z=-W03qhn(*v11px{v1Dc0{RE~pr@zD z1Nf2_Yc81#ioPW64sQzND{^36Lb2efl7Ooyv4hw_-qdt9Q0)5Q_ix;|O~=LGhJGEZ z^Xo*df9`s?d+$EH{K}7Dc6N#^01H$zE>N=sXr=!a_hx4z@V5y~A{1sN-BY4Fj|t#c zoFinal1x+#m`&~TND+vGC!uX6aoPNVOYFCe=M6viwd+@5$HYVctv2dyVrSSXuUS`= zf*XcQ=t*f;*d?6egcib9jsiXlbO;w?(1q?`Obpvmmys+KtT;tX#g*7BnVz1aurG;j zuc>VyVd=T^A5y{C-?ts6kgDjPbf4efy8O>v(f}z2*Fb?2?$S4$99P-1A<117aO{jz zmmrrk%R;D=QHq{n`eK{}#EFC4^TFMN8*_#nhk9$;I)166z4Px34vwxIIrPlSm3-q* zZeO|a%B%1E@cI^*{%a1P2L}fm{I&h`;=){VQ6gY1v3GDSeEn;G{?E5>@Bh-xn|I3S z_z*%&ILVJL@=Pm!#~rOqI8M%Kl(lum;1f~zYBVrJ&sIt&K> zgd=InQBhnWHey=KGxb93?MO7l^oEpUCYv=ds0m{1*iECG4S^+g3d&IQ#e}%v32y`e z(A8^~=@0Uxj~{&kMn`tQ;lsxXRNlIEla$+Yb2DJs@+vr@7y>|bw29XTJGa#(SXy2n zZYX*}3LNIMq@y6fP zxeY%3>`%ihuRRZbkJAtdA`g#O(A?;9Jz!#cgk z1LY}Gkc`v};;N(Hy9djtL%`(HwY6mptxZx0Fhtcyb6*u{icL~iQnrJYyl9MgKTi3Xr<$B8epVeziX{vDf#NuZ{41p%9I zVb@nT;Gg`~Z^OX$e)y@M{s~xrxB(X~1%dGI{La6EmtKC6ez!gAgqG$OMUNr&I^0Vl z;N0vhT$maZ!a$4yL6b&-a{(R;IY_8d((G}YTqI&KlBrnO=yBAJDHmcw?ZRTKT3x13 za{l}W@Z2Xq6JqQ6J*m5l+5A2dF=JXdW`+f?!uvI<*NC);=-eWc9|N#SFA$FfUZ*(i zpb48_Gw$BMP4631G)ds;e?EEjg5R6=g9ngM?x~^ojAHjISI^V6I=H=^j>}G8)Vb8r z#KnoQ2_uxGOCD)JVb9H!P9Yxj>dl_;*Cl0Fre5N*6_ZMhQW@!WOKF0mOGL=gF_PYg^Fx zuP%T#6B84)pZoMLbw2x3pV-mT*gV|X)js;@;mpo2ed%|$p&&)TuM?|8e;xI1>x90( zo>ttrmX=nM#m0mYQ|M!9r^x1sw=Rn|Qay<=k@qEwPY`Ow&IPL3!9>BJY_tIsX3Vp# z>ctJI)s2p4p)ej))oyN;nvrfa3hw=D+pnZS1nwbMX+kq=~<&h-k9t=mKKJ#N0vLEU+7eoZ*JXMgn`}P$6E>DX%Ur zuQ8T3;n4@7Y8FABi*eE*(1b_Ub+xt0^(8ir;cCM1JyH*%C?^4QNq4X+Ud&=o#vI)s z2+S1%sc$R`bU_!j9k^4u05@0>aggi9-|J==N)U}$j2-}8G3Tu$u3dw&Qf#&<$XTT`Ug zBx_W>pW_I-xZy{K1fg9-ksH&?3b@;-pK>}*&k9}KD6ag!-CPO|C=txQ_ugr;MeOKk zhwkof=5VthH5tOAC%&#NIx(=3fLwSTry{sa)-?{)iD4XyxYYYvt}{q^w$3G!2v@X% z+eATeiMTxKdR)?Q32OpwOGqQb>m$%O?)tUv5%l%<6(*CZHqmXK2Dk|BR5S^u;9TL9 zM;^YFWgqGxaJJ|`DF2W8|5Ue$!P>@A{ZPT?; z3ZNv-H+;^VF-E3Zk4!aJEK*DocPZJ}BsO}9JxkdCay31W<{pSf#&1c@EzKvJq4{K6 zTi5Ey(Ab5Qrh4-ww00k10MJ!&@pGXi_G|Lq_xt{5M(!;_IxgFOw=i%W$FV z(3CO}Y)EI35)QL6l>B?RdGi);_yMe9vfzLE%U^_d-hGd{)+OTdm6Q)@Md+4+x=lbD z|IMHs7p#W51{mlYCK2Q4@E)jdX!M)NUATMyI$8fIEyVvD7iXk*yz|Z}7@^VhQ?O%V zS7Mdt|I>f|wdxvmNYHy0e{pqXEq26dk*#vqMixD}{&F2fV?yBugGi*tG}Sc)Pib4# z>%g+mPehBl5eawN*a*0JGj3=Mol645e97fiN1aOwwW#L0aOZj2odpdjh}9*qkT!M+ zMPQ2sT+SPXY`#KqNv9?mbGY%?A?+iG48x=VyR=y7BCRGfp%|z#Ey+QQ{Z{%Fzs8MQ zQ_$7X08@`wVQ#4cef9P5nNRHWz^@nP<`;djv_Q0?xyMs5c@teDsvcZ7@H*jW!^Lar z(ewh$%&icR0*$tJn)qjU<1;4OR?%&5#6iU}0LPFAM8u5;k zf*_%+q&9Me&Ri-2G@BSbDHZp}fa#f;dHBuW`X8Xbcg(McwebGi=ZOQ2KJImO{!eWq zamKNz!|M<46`aaIN(1=_=QnntGg+5xB02;SLYI^_AnO+-)^@TM(qhKEWS0m53zm8X zC$?gv1`_%oXn;(ZaA4B|Z7q@3aP{hCvI2Ao-ySx5Gn)vOr5H*h=#|C>E}4oMo!a2% zUGQru7IX9Sv-I2p{ljqk_I0>)`7AXwIy$@P-bd~-UDLjBL6;YFhuJx?mwtx|Lw}v) zz1rK`M=|w~cu^O<>t%mq|8gU~%(1EEz{H8PTJwQg=;?$KHd`6GBp3?Rr9(T_U<>~9 zppGQ2P>6`K+9VSjX=KGT%3>IgQ@hDLp?`7ll_lJ2Lq&Za1DmvvdB~>IySHXae0_C7uX9GX9=r9;;2%Z$*De9%E(P zE$2lB3x?d~QE|+V58)~3pirL(jI3J3g~(;5dPt;F7AjwiekS1)Tb7Bxt+Udhm)A0z zgd<^mgq!r~b05H^D;HsC`v~mzK)QEZFSNF`!@~Ryc<|sJbuv&ORyMU<>;(4+1o%x2 zEzsQ5Mw`&W!fXJs9xxzSa)~cyX3E;7eKhsZgJuj(8Kq6=;-!leQQq2o9X>ew8VnEZ zq)r5OcghskCY@3C5#`R^X156G;7WmoUFw#mR%mbQ^o#UC540Y@sIDi^=ckKG%mtK zHSos`eU_bDqpmb=j%Ha~jT}#FJYQ_(%Z?X|#1%ybVufECc%B6q1ppqHJn8CnKf;+R(kPghWX6Sg)-i zz=COXL1f9rY8G9*RE_Un``r(3z!OJzz>i+N06+iPL$GT{F9~v|W*6YX#oJKd)aZ+& zdH*>L{N!g&cmOpElUMJ+n;+h#sCPX4jSXek-rEj`_YQb)Sr7LfF2P&=d68nGt~ufg zVc8|er7TQIX$yZuu!S6DoKR3G3H-MpP=io@lB;?k^3{-q{JGBRk>5@uM(4HUYyU!^BnY z>FF$p@KS=Ax~`Wi(~GI(bWvCl;G?vy0H#*$WRI z-l69~4FulPF=pDTFt^yHEow}{+st&G3oHv;jGh)jp|q%-Ed-_%Ik|CKqU*dS_9cGH zCiR+*(*`+IcyCoIEA;a-=RSldpZr)5k4iVwIHks=RZp=i4oL$e+#5(wTH(+$=Yj^H zrd&(GUYIwqd*^<-AF$AS_q{g=z+=K`d@%A|OeSvFjW5Lu+k;GNMO0J-CUVbet*_uUjo#OyTy3LTHUbcj}-N zG9IeIMzf&hFtISzDU6B7KbeMv$aS6~x;Ra@N$PR12~Wt??5~e4I=>F>sPli?T08!; z(Ey@AUBBV+hZ~iRw>_Bt)7uv>ee3M?vyZlT)BkY*wE2mj_=(0(ed?$BckkZ4r@67^ zP+Lda9$)Q@`bB2IU+kUbQmLgBWYz`}Te(7YocJVe_E5yfT$#KcMvu0V2t=Zr!;xc0 zn1^ZnjnHS;u*WZkxbfpAz0Cva$1~F&fKCxG zz-}~=ZAy;2-yu4?p?iSN&EnD=JbsMHgw4U?jd|NCDH4wsj`VQJxO(k8+<$PJKt9rF zUOn|)51@Nt*Tf;%=ASbJd_+N?p6@(bFVQ*W>oDU4GFpHUgt`!0ll|rTB@LD|J6DJbQAd2Zaw{!xwS$3n*4w6EQW#NfVdT1Bv%Pc$bQ!<&_0kTv((o9X1Zo z%RFZn69LE+;Do;HwWa`6<7gd6(++;_Z~qefgMaW3p`)_{x;nd{uD(|7Fx^L*7Dg!) zii=p#m|pkF^@X^u@-i7WhLZV+M=qrNYN54Aunm}kSj!}nj>HUt-$SMp5P4sbYYhIF z`GV=u3|Z^VKAwYHH}1o&yEpuQ&-g-r5gtCA^7r)&JbLti&I=x^N007Np(yLUVft8q z-!Qr4JfIkFLxoFgYa0uF1H5-G(%xbuHG{NF$YfRvtDwb;YqfZ6Z&v3Sof^n}0@{g8 zX-kO_9Cv<=0{A4)Ljj-CF8u#+U0UUR_RgJaFgHI-0b4GeE@UQwQz?iH*Uq8`zi1DK z^b1U{?duzWAHDp20?>Q+9He~#pZB3Z-V2L!v^L)MKpAc0EH@3dZy$!9?mhy>xYj>< zbf4UjCdT*DB!v3)q5)D*?X<(32qn4097TaiXQ65gsp<)y^7S>s+(zAv6iha9o5TApVpnIP@SeMXOe=v+ZcBz5C>G*$y&$|zq@`(8 zdzO`Y%USK`x;y(m*L<{XrMbK3{ad#tzjW{6?Jq<0I@toy{~-YRv!DHJ?XUjouXgxb zt+S=2W3;}$X53kGsI|3up9ezYelzbvkHVCPt2ZlOX!$1bNMQp>`ZjLUWAGbm7`J`> zCRM0$3?9WGxQR?mOz4Ht)!nHbysA}<|dnVDr=))aB}h zNubaKL6^z0O`RYfFhv&x&e#qq1{_%BNayTm zA*p#;mPJ<&ERIMBm}!)?B-Gg~wi(58$??6KvshOrG3;&=?3_wO4H+HjgCD+fk$`K9 z2eMu5HPBdxe#t=ux3IKMz-Mj45+`|mgDD{FcH>_GHkL!+2X4qjIq?9yLJ{G)x}H!0 zv5IlqWqQ6+sTP)2E5ui>tzCnbrh3#U!tCk>%q_0LgP8@$^T?qU>r0z(+-2**Nc$QpTmX_vWa`GZ{ z_iTeh2aXZ_0{2PGAV6C~)WhU9+PkK7FSJx0rE|f$9Y~ryTEN9ZPSHf-gyS>`(n6a5 z=v?d&2f&;uT~itsWCM&P9Yt*{mLxOu$V624cHBJc1rP{{vv3<{skL`Z) z!j-c#@4x@*54HgGzXvDzmw)*mwmtRK)7!_#d-t@rcOGeOY}#2De zY4#U$7C@ORfLs;IrQbBgQ5qCPd4)%A)ERG^zx)>@r{ogpl2o#wn*h$x(oUpRbwB;WuJ{gGrRp zE=fDI9Iwm!Rn_JRS1fX_3;ez;D#wM}nK3v=d${xGPeVgv6ZH2EKu=E}c`2h94#6D? z332qCSN%;(iF2h8i4K7W-PF`XM*c+ASz4eQ9Rabp6|}dtQ3nG(r^Q!Wc*^5rdtlG5 zBkEaXn*8(Z!*G_J zhv=Gk{)IoK&lGuZ;k@0wdmHZDxkX*7eftipJIIfC7#$`ZZKz(7A8)}^II zJ>E$5zzqXA&k`dJuGnpn&x2wzv?j~QQZIxcY^;UfV{VYf#p9x0$t&!+TbzW@HOH2Z zC7Py$SbCyM@V%|zn}d67(mj_htmU;KEbzG=6B6oRx?L%Zu@CGUfywI+;bTu9fJ>Ke z!80fK!0-Rbs~%KhVj+qs9ke#rdVuX0_1cW6T9t}F-+s}bTUdt`qCAALFuEdOcRskF zglqWi_pZX;@pk{%4Om@AOTDTuIIxpj;RHe(Kr_AXlHWMO=19KPt^|9xwJg&jIJo|VqG`z&R!BQT@8lH^PVjm`(2pAza7Qf#%0l%>yTg!x zPj!h=fu&PXHS(y(d;zm`K%w(IJG%hau3d$T7cRoP@4pS#uU&&X_inW13~i((3Sd;* zzMwTJP)3+=ZIX2?)p8U)sKdFzYa~#l9GpMRBK;8ES0;Asp*?4E z@)8vrcpZ-njX_`EcCtc6XQJR1V`!fq=pWQ(nM@y~YwOgRgvGmRwdo2eo-WODkd#jw zQvk(2&++lk5)Qt}U=s*&1%awjt4q-diIt^Op}XD#V2X|?wpg?X28u3}N%o{M+FZ-n zDpih$7H38#6@{BG(E|u2DpMOoe7@@X2JImzHV(4C5as#MqE z^5l8HMy=M&&p-Z*|D`Pe{o}q)z4Fde9w7fpePiR3b+z?l^>wvv{=k=ox0tHn16a!w zdznq6CiTBe%E3(wql%FnZ0b3D)bL)q)z`1xfm5%(1M9wOot>X9*vQFP@bTOX{NgYE zC;mnqf}XBE8X*n(n^!h{>Vi=yfYDL0#%T&Dlu#^aQ+^T|yd^)HF%e6U()nM%dLNXO;M6RVdY$SuG#B+(hH>Pl%l2I)5|N z);3V5bOU*mJW8}I)T8Hj;@H6(i15yJv5X6)ItkbyiXnj`1Xl|LAY~C`fF*w0t=mZN zxJ?}4?(V+OarLi{#SZ=)9RkE}m^ji1&In|csJn=KV%#86Y*O)$$CSfzT?X%;eg#fG z^&D*9J_h&h-Qx&i4-9RE7I56`KK`-K!mO9_WJj@PRHi%gByNRT`Y*FkgNK}8!rdZ;m9}~JNl%* zE=TC+L&Jm6*4j$lV+2``9!-(`7pB?a9~svh8*SpsoP20FK0Fj*M!ObhUxw!wMR1L^ zjiHD_V2ONm|DLN>s1m}L4tz`-Dm<-|@@h2-fl#z4U3+kvz9^ecp71_{r!i^dO|I*?-Fu*mjtIJPm*E^H0FNM+?y2+5l%RK7-tpH$ znI=pdzF@s^Z^~ak84UI|Lu*qjbhOpO>|zDpKK+2YzkdB9K#k|*%!T{hjZV6PMBOR# zx)wr0f-PJP-OJd`mw*YP&R~Q%^2S$I3+tYUiVcIrAS_#2=))p8LJmIp;7P zr>DCo&j2$Z0D=GsQ4~puBE=w+qC`^kTG5tv%Vn9nwY9Zda;<9>R%P#&EV;^6E3ZU} zR3JzZ6hVRjhscA;xo0}(9Hw*kd+)n@f9J;U&A`@Le+rH2>OqGWzVF_1&-tC-`Tf-1 zDWjU|1{G&2bekXhJ2G7t5j(I%7f;f~s>sB|$hd4SEY9h@#~lcrePZw$vl}SLkwD`E zMZTlnk$0ITN@`Qb0fi!QUIvV1Pg|j+3|^ow>>TynY>FQUwA^1_kGVhr!kLta#1LON zv}r#I)ta|9c4HGmw6eOwHtOzoWAY|4#*x!uDv@BIqgW;3r%#=6cJSfgdvO#62(Zj6 z#`FWF?EABzj_n}CCLN7Lo>Q+(sJpPjO`uV23nQKriiDdb^1SrmI@sYo*Kze;5Uy(* z#oCcDq=^JBr{wg>BL}*K9Tvf}AI5(oK=AEclh1&n1YlyHN4R1@CO|Hn1q`;ZldINw zM}C1sSp#HgKA&;UYKP4fJC0&52XP3GjW~zSz~252U#l)vM8Yg-b#3t<^wURhFX+mt!WtqlbG!#R;~F-RG@;>bK0Ih-O*2GnGmDOd~v60*IutCFL6 z8dJ&h)Z`qu(5~OO=r?ad3)ZyIw>H$@jI+!TrrFz70`2TVBT5*aNJEjZn_OG=3TJmM zta?DKxxy)#3OJVfz_i0ucB8N*GHVt~MzAcp%Lgow!q^WrhMcK57YCfe$Q{sbQr`}4 zNj+F*2N{_DVH6ph-hM0%QjIFVkPlA0mW)bBq5X>2r`1D@%$*sQbdy-FPZSU!BXaZ! z8a132Yil5K)lP(>;E@6_w@mzyHqvLR%Y~^nd)@|BJ@PM!j+bQzf<;F+6kXeH>hd zMsCuZZ@yflM`npd3F z!+SY1NXL9^OUv+sN|q{uM6lFI;c3LvP=$;=cvEAwS_jaw-ldJr-2@-s@#M_@$w}>} z#>OWw#j%N~ZH-#aHfv4CnvWl#+_SCtcdyNI5aGk0(%69CG5iy`|#CrRw>{oYhXw+lCuq6^G$DE4Xs%`hvi?3K$Rnk zw88-&WGQdW8zxNQ&=J0edw=L)Kb<&vLS2(CrXpQ9e~sVknX|{~$tTZJxhlL;(St)> zjsg@=G}Ek7qm%teJ~&?zCVkSim4%~iP@alK%A(_f9-v`Zl#`^lIu2zyfZor{%+ch; z1PzZ2)9A<;UApo%&CX1-p@oi5*`&dVD=2afffIQO9(dh5yPLE#x5@FLvZ9vdGfRrg zO~Dy}J0t^XQ!|8RTI0CwD17D@XQ{cV%_T%Q<2pO~=*I1fj(&oUTGpbfh#j#<(&IoY zJXFolsyLL8AagXAAW`x)NSqh|^lkc(%j!Ak{ty+qXpq4`oI|b+C={Tj+`d=u!xqP& zz>JTLQO)T`f8WD18)pUb1!kvx{At(G)gA5P?cZ*m8+1H%U6~F)uvhU2n|_ zkhBy;X`Qf2eNA#syVvVp+P1geEHN+al+*6@CNC_%BO^y)u}C1 zLKPfgR|= z6saBp&QNRX%bdi*5fF$pCwf3u(?$H6;KWBpJ6jl41FN8c!4mwlv@2kxG8%4oYzVe4D#W9SOkhRS2VM~!H*4j zH0J9EMchw(@GO1pFTY0(wPn=a(!lS3dpo0fo;fXPx3>p{h<){*c1fgl!mpF}oNM{p z53BB>xyV_AmI*hIb#G`^-G?^1J3PljLcN`JbhN*P-|x9suc<_SkN0CC0=+sQrsm;- z7juzjoj>hf#(Tn{Z_z2M#DLd^=dvgw^t$oA=B6e_h9@T{IO)apvFpty8mx4o3KtwQ zTdbM9$-I2H@qwOX=M|FZs*VY8XtWNd`JYh~=&VcQC<)%QI@Cb(X>K||Z3o)uNdGZ< z`l)BBr>~2eTB`Z+R+ctsR9&~#wfk(dTwPo33U@mY9S-D$-8=jP$aQH+iBl!82eJ?m z<&T><9c7Wvr%uu;C@?ok%zR_rsQb32UhCq*5{*xcu>|FqO2&o;N4PBvogT2>psu-yf=%hlQ z3`jn2(IGe2<5XTOI_xNs=J!pEv-yYn zS=b>r?zN8MBfJx_B}_QwtH`hY$ei^dmCg;yN~;~3}l0ZCsa9k7mIqVuHL5?p8pXQq>I?@b#8u^hDPqN4&?gAic4fI z(rCr$y-bZw=6wr?+wqZZduVsD$R%bXArc>2pK7Ts$A67wo?dk9T3MQgVIIRMAz(A) zOj(G9ZuKE!+bWmVnm7(nBO_^)-~Kj=CEzAow?502(@At}HJ$kVW8*O|HkWaQgMEKU z#?o<$GC;|*u~Rc~-3DVp9@*2=c@qb`MaxmNUP}C;vqn}-tBAyARFHYgxaRB@XOIZ> znxN^4!71o1S3-tJ9h}>2P7qUJQL#&Gaz+{~78d)6_|8;S)>EYl3iER->R_G*ql-DR zg@wh=Wi4Zee2_@t+Gn(>Npn*N9cb;+3K%J$@WjT_T9CJz^-@oINsuHu1+b%Cd2aFp4U{!Da3X67T|*9ER?TRss)u3n)#@NZ~fMwYBs6 z-&6^))t+XPk)0hzVC*2@miiq~2DEWa5-qkeVKU$xgD!w>LvBBth=W$k*!~-XIR{!h z*odU3r%x65Ev%p3)6=8weYd*CMNBV4yntj{*usykiigzdD+x-Gp@dOVsVtHGLgfH@ z^RM2yb zZR=f2jpjnb9hm5-JqcMe?bx_y5b2zuj>PYnJY&z))->qCPu)AnV`}4{1=e%dt?DXO zyPa?C9Qepls4!Ph4tq#OJ5=p+0-d5Zj>e$B!s7T@aj{F3q z2t>2BDRJNj5f(q>-9u#nt^`f_#7L0V$`}6n3O{hH9f0#BARV_mc4k}J5Gl(Evz9rP z#!Df^L;57uzDO16a{vyEDJ}7uE=_Zn8BfC9H$FEqtWdSekWHw=Trn zq>#tYbZY{^6Yh4X%=E;2jt@3%wVgCKu?MvC?+XVK0)Aes`4@pjv|$Fj)?1u#WXc-8 zs^%W$Trkj^B}4s=Yq9_MImg3Q^vGHQxq_aCW6U&Rxjb#V}=GTZ_DWX#sXHwCTTRXep*(? zBeYDdW%xt$%eiJ2n(_lx4kR}S0NAXU-bPZ1p}VpCuj!>iZXFvT}8lN1Y^KV~J*CrbvbUG-y&MO%?L*d(+ zk&!e@wD8sUpx#ke+obNtQBI;q#|9YL^xVOS1L)wr+cY?IM{7zSK2FDvpXTeri8Q-x;HdwOdQC$UZvB5N{gXqoTAp|N~o-JQeRS-W}V?1x5rtg zPEufZ4dVlqB!BC>SDXW)mzeSv+L0ON#dBDt4@es#VaK&{u?NM1K`Wi=jiGaJ*8{v` zwa#F^Ff=r%4yi33crQO`TkvDPh17Z50V}q7R?>QXc z;CJ)zX9&?bDx2>gCDJytCXk?8Bb7vs5$NALq&#mZ%j#4Q+#Xg%)nytOxXZ}$(9j4w zbb>Q%=|P-mA_-0x^5CTqe&#~g{vxoaP9m+gosTXX;vYIMNTg+E&&YPlKrYaqG1%)s z*%uaP-tiDboV&liq!PkqJ}1gmGF@I)t?3u$x`U=?K_jRJK^3LCx;CM$d!V_Kb+>K0 z3mOmhtc?U-2_rn*JmhE-rzna7c`>iV5mRs$S-b798z@CWt2jZE@z9uc{_uN0Z(?5r zMN??9QefyP_#N%titCTMkWhH`sZ2kWPd znOiEd;80|IBGk20_ZHoGC}jOQ2KHuI1@zG-{JBUOrEE@7-02bU!E3on0+dRb8exgKb|5myRYjjpNaT z8}=bpuG=dCuOp+%rKzb|9?-aO@m0+u7J5FQ*tIV}CTV;ME;0+3HraIt&Od&A`hchh;_^~s_9EQ29fr^4gX*pBpVWh}Z+fo`U zYNwu~-#?Mr@TOqUuP+XeblpAzMF1@-$WlQP3{;IhMv=9(vmKUMoU_F) zWBuq79)!RIaX|sl(wI?OJT_3m*ts`K=8cU_40C`QpB$w0#T4}&>ZPCi{O9QD_dQF0 z_#ggQt*0$tz?iOqG;P0Iw=Pp%b%Q$)yc=DBG1yrGbR7kK4wAmKGLOg0HDt+~!k{fAz+=3aTS2fJbz^zk`11%OB^x_ve54eOg=J z;`Vr%N^Z)_RI*%I%G$r{n>(b7@eGYm5A#=Hje7DG7@QJ}?LO%P48wm>q*W-ghC|Km z%$ymjjCakR)cU8kg9YjY1`M?^&zkyNXO6PvDQkztIG|lnqIGQ1WIQ+4UQ=T;ojQ4j zdi#2rG65wEB+MlxMNYa+nArprH2b?`iuEWl2n~e1xwV$ndfecf(^Cu7Um_3rIxXbL z7yEqQfi@MOGnWnq(xgM7C53vk0r%B_73oxzc<?_W9os{P982_T%7&;sIeM^dY|rZEUDMG$w_osNp&D) zrX4h69wwZn%BmWt;(&QXXw5@|zNn~_i*x4P?{2F&Qk<8lTCL$=a6b0_0>0}PIO7JU z7@VNRkpo2%8pDARm(GLZ0A&tTRP0Pm!a7|hRX9ilCN&zkfhIKe8;VsZDjhv?jK6Qs zJ{iz3wd83)=rPwSjzbEkK0}?(b&|du7+RSEkkx>^gsgMwwKNaAPn^hBP(;R*q$e4p zHK$x7V>f`Bpl`Zvo-J}jV9`y%@TCQle3#Z4k&!ozvfV9c*CTNT6^L__=UCeRQ0NTuYyo#y3A zg~7y#bsI0KM0$8+h>r9hp}u}~fT%>eti0Gv>j%ak!G;cp6^I_BafGI$BCqmZSy|)O z+Wq_YslBa-7a5s>CA1iT9w7&d zZ)mxj*wSsaOkSi#(D`9fkvXI!OWj3jp%ZyygrZFxtRtduLy1$9<8Vh|Hf&FY9*VM3W zVFa1i3QxAhRFKjdxgzHk3?ifFs%aJ(zQ&+D0QrFo9@I40MQwM7AB)@dk8bag3c5VrEo*l#rjdz7^&YRP!lsbA+Nx-CtBAFkH&vpwdVh~5 zrlnT7M(|^|V?2enmy4DLf^g5l}IKY6QACvGj$3 zb3|0h>(tBy^&C3t?j`d6;*v7{osPDHY^;P2Twh3kanTx_fnl3pQWA!hu8}WECMJWV zGuzVZK!Xh;qQL&$-*2y~PS*;R2BVy?k zUp#Fm4k)NHsTgA_Qz^VQzP+Kg*kH3BwRU%ylDNm+5tYtb-b%}#{E`7%2j63YY!XzCy&`Gbq@gjA1A6Cip9Ninf zMW6cVFVLIkU!qTa{EO=UZ?e3tHfGx4a}vX%b+wJ0^P!6aiWAlx?%CGveFVKb^pD() z@EsFqbdRlmkxm3n=rzg!;Ca3N)+;n{Z-5T>A0`YNwska9c}1}qrg;b-EinNu6Eug1 z=|0=mrPgnie1pLmMODvITDJNmo!Ht|o;#dO<&Faa9JsavUCbk`saDBXR=4+TWeDR9 z=t$%5Zr;8?Prm2JjU-t_p%^`*-cjVLy^#1MjpB$q@KVCasA-L6P6#pBl*uqH!ylp+ z&5j)>)s`VvQp^gTTUCyba~3lKoi@ovF0halhOZeQed_CCGcI$?vF!&tX^OL#5pWiY^?6C$*U;@I-OAvKrP4tl~4j%5Q2 zVWXFAh6v*nked{1aBD5?*va?-#*Un{k*V@yEjhKJHa0k^P$a;n#yQVR(%gXe=$Q;Co;vkuBFPhv7tr4 zf*MI1+PHTIuhL#_o7UDBsj}`_`qbw>L~(kXe)RGie0{9sk~H)uY3$!^(66qlqcf+U zR>k2Nby$zk==fb$cyPl&Ms99=e1s+@M)>`lR0&^i?_nOA1Ol(ADLH;Up!@*EKw-qn z6Iq?~=^<0$bjaC=!XU$I>)X^&TTaalRVtvS)Zgo33NmnO_jhPr6%?0mPH8@=^eth& z=it4Qb>t&g(5BM3o<*D}aiXJsw@}?P6qmcZ`&@Knv(hQr*e+N&M*%4&6azq!p>(mX zVi5)att^~PP8`oapjzpohEyV4sp3F2b$0epXGc2^jUGOHm}6O4d5KxuGI5aFgDMWd z0Xvu*CaV;<-ld$nhUq?8J$zwNL$5s>#u-1n6*}qVr#a-@*Y0mD)9?M>?=naA-~5~Z zjjC&_D4`D>renezc$~lRno54hsH(Dt?W!jyr?@MZpw9%?kfjo>4!tN)e^_Z6;yZ@u*f zC))X%(YW+2P>V;}qoyE1lkwDEfSKY#xZ=)&8VOvlh% z!3dzvA_F(*Y=w4+O^t2pj2d@q5W4m?Pzn;kewUO`lL+U6Vt3DjZfD*Ncj^;nh*AVH zXEIRra5FJM=QqkX@CcNuEFHk>ZU+|AMsHeEZ}bbAo13DksVVC0>T*dV$J_8Zj83tc zgmf~BHrB;~d!Gl{qJX|cPNzOZ+`M9qw@7zrw;dFB9c?QoqK8B+6)M5w56o`dtdx)e zuixr!`wox&nI7WXQ}Jt$ff-P=$P6)Kz3a|N8oQqpXWcQ3I7#)KWf(;5YT#=xqd~gJ zqu6!`(CgjW4ub|0KvP9tG`BFN3b-En{>#tNlaGIpZrr-4V&w+Yjc(kzNT*IcL050Q zrHe+jeo-J|Nco4a{vGvn_cP55Pg-7H$+D|`y~p^hh4d|K(V-YdMkZI?!!i0t{_)NT zbU}LGZfc8+I9o|OrL6t~t>X1JUZvsTVRd--szaz(C8UbG)bOKxcKUznQ4 z_h)8i>EHkRKV-3dn2EHtcClocw!hV_dsM`z(DZ=V9uLXc&7}uO8rk9KaQ|^Sc<>+x z&C8drxPb#F1!Gk6{mr6=X{WN_la!6}9FyI`?;+#v|b8&$9*ksbQFk?4; z8=$$;3?#;0dBa{mH?Zbxxr4*oY-BrFsQG2yvRNOYh*Tnd>zYbVmi3SUBN+x+Q=iaWM(Y(pLu3V`%hJfU zSsphMV_)~$FTZ#cx! zD(2)jXAo(j^;pq9wg(BWfi)|^&r3>6__23Q@`b-mm+1R~*6Zl_9kWh#7XwHd)*5VQ zagd{0-_Pvwd&B#J-S6hkn)>^FDuxX$JMhKS+)__p{L<&xGI)G!!i*#e?|djMk`lRt zP7k7$(xD!;Zo7}r{QM*hj}53oZ$41C(T5zAAYOazWjcTUH5K%Z(2*l2sJ_0@8AV`? z?-=*BH1o1Ce-Zjcx7TxVf=T>o6MGP|5P@vP$l@T%w#D z$_s{mq?XD!YBa?N%u*i}< z@Z&f+cob4}98x6%g#aHnHFq-#bmK$fXuedHzAj5kD>O7T%s@qHMG3D(Ja=VvDIbVG zdi6!RzqZ2b{tI9H0zL8M8CQ6F+vXr{a9cX!V)?mmoadNVU0KWBxuW6{KImnrq!gQ8 z6X=cD|piwnndBewzg{I=62jouC1!2 z&wS=HYVY*YwQJX@y}g}&_1AutZe05fUbjxo!2m?yc(=E8JLyjR*V^1clhebT9N|1d za*oakK%7vHP$YE9B4=dfZKJ&@j#JVQdF#YF63Rfj)$!P4hxFzHJroSr8*)KX?k-8Z z46rZ#9t$juL%pxz;d?rP4)#yDm%J<=C7tysl-rXYeYW#NR-MNVAx0K3q9Cyiib|uY z9R(^No-QrC^KoQHC55-AH;Jf7@SG`Oq@wkd_e}A=Lm8EGpjg$jM_R@d$ufSgsGx+` zIZ#`iNi6neBr*ZaAif|^VNZm;?ZE9*aQw4f1jORBc9wD=7JviHxxmE{b6{N^z4Y9- z|6lsZhdxagF1^Cf(a_LBlT*X=(GPz{tmdDywx2QE|Em9ua#xR9Dwbvon)as{RhKMVi-*b5&ii*>@A@ccgHn_abgBWZkCJ z%zX+Z#LV!Zy3unB)9Q1E28RYUB7L}rS`Rd;pj8kI+lWAVCJ$|XNG|}v^*~!I{rCUF zZ_w}m&L7a*mtW=0TUXOWEzJkGErEcDU^uUy8v%A*EtKuuEvF)Z0W?Ss9Z-j8dwU19 zv^KMBn{KK3!32#~`Hi!(y1{R9^vLNmDxp5fMa$J2msGMn z%ddr%Da>`!#u8dfnvEhddnVY$zM5w~v|(zR78BMJC&-2>5xdBm)rJ*(R)Z6kc7qtw zwBB<@pE%Cb5=TM>CrSiQ6iYUcA;E`}k|@yA_nFKt($DUE2_)5 z7!&C%b@bFzPk%E_jnC7}{HQ82Zm|4asNIWVqqU`j8XH@+$o&09PO!;v(5ouTd0)&- z%>^&t+h2!}ljZ91|03y4r|Cdzx7t(PyvBz{ZqpppJ2Jag#Dd=s-si2`a9X@hEiLV; zAUdhmeV60)+uvDT(}RKK6=f>W$6OTb?Pe1Q9lorr?fAhOLsQ{<3>U(*ZZ+km$E zO-(DWPaxeW9;Tp%U??Cz2(gXcvwayCK%iU)dGp~I$OIhtAb$N@oE$H&eEIq z*aQ*x4svg8>V0;!wX4J75OsET(CJf;QCD}nk%^OjXev-eaH;@C*}x7Td1H^HLuxqK z<%W~OB-*L>c(}}3+~>OkCgPry2@y|0-lYy}=a+xwSJ)2u+O;bx@h@>P5@l2t*(0~1#B5lMy6xitlW?DUhe6HY z^2szwnE>^rQ#1+GHO#z{3=rxt_A*^8qh;bW{cG3#Kf5JH+IdtzcEsH??nuHh6!TL; z&tzduVXZP~A+v0Ytz|Lwenz3_2N{Ly(uSbd`q~nAh9)P6`4ZNtv+Wyy`zQ3p&;JI! zbnctf(cVMLtCh5&icuuStLpcU^q*8`&$5cgg`B{nn}os`g>pq%6@y=(z2cn2@1b+a zb0jbsQ+s}N^q%@zle$Kl=U!J+Pj~KI<>A68GQdc>Kr4BPX#U*<`W-%0Vw7>(!Dg@_ zl7ZAtnCPaogcvIGnb|3to13P=!6EAF>!ZUeVQ4wfpaNQ2w=ZSBa%VDiPUuIP;ehJu z3i{#~f02%zI7OE(ou?U95zWj@sY7-{B@}Jcu7X&ZIxK)hE|nCsRVdpRtLm+`x=tPJ z^;BI|qZUgA2Sb*2A;Uoxl&m@vM*$LuMOs~5r0SXmYEg-Fv8v1j+g%#R9=q@@a-54@ zi%#ZZZ+~m1)orhd^=MOi04O%yYDUeR)RF#uo74d{LB$LAI?x1AQC_?C7TvjfjRz5+ zX{`B#g1=794w|WK&npXuf>3#4a{(Q~PcS5kB>Mc@uhGd9kJ8yQkJFJOM|ems2Qi|baU0^*s|@8iN@d}^2`rUq3~wC0D2%$l2>o#efOBm(#J z;K5$DwbsR=;J~?le}faGVij0{$nFDK0V*fGQ3_rp0xyO~tSJHxiEP#%ELnBXY^wc; zfx7zoI+fgOyI!mOfx`&M2b?1}*4I=5x5BMKjnd@;9o#S`_$~}kaO|0mwr*_dTv9Lh0duKD2I2KZK{=dnoQ5u^VrO*D8pQB&+ z`Cm{;VU>!HZozHrvb>cA$nqr?Ku)_%$`PF>iBjeu@T%?=VFHoeU(Q%;D$O zasaRggPw8h9Rgw_rHG_d2J0C_fRF7F#SI=ES3=u*y z4(M4F*q;l7K3g>f8~+X;K5lrso(fl2SEoK}==twFuaf9xRgkswx`m30H&r5+ku9rp zW>3ZBg5n~b=$hg2`r1ZwjrFf$-Germi(P7GBr8S2dCv}@3&#aEV}52XK?X^n=g23t zFA{v|MDZbIVs9Bu6z=Ng1Flwy`e2n9w$46+z1i3keWSUMm&*rQ=TA|^L!oY0o@-AVME&A`i_^;^v#dCD#(Wg|LA7Y>b=rFoCwY5#Oy0WB-=Q5`4 zVc&wP3S}YeTf|??f7I4C@YxO82Hp#X0+AO@saR2=&P4G4(FLzkXC|nu_4N&ma3eP< zEz^m4Q&Xz}(b9UZDw~s;z1`(^6Xl)p@bBi6^ zW>vzDpoM8t9XJIqiiov2tJG%&ClTOpVgXn**ir%_BS0?_Q_RwBN_=NkCDPC?gi}Z8ihyh0HB7{Mm&5aFOP#XbM3n2S& z;#ypsXA5d1A-i1J#$M(rUqvMl$P{7nK-xS(Bf1&wSeVs{7YImbt6si(o~~WLM2Gv2 z(R&_yk~%v(c}Q(RJ^ziHS804=ggM4m-NUX8Rxn9x#t@$3R2BCES9`Vff>|4nyWfHc(A)l#_%yh}@qG(A1d z#fJ!{y)8EoT>`ZHu3x)GZ>gdI0sj8l8XqL+5TUpV-MNC12)ABimcT1g0l$V1g5E=i z_+ai)McnbDCshpTQ$=#xyF!NLp`@TI z#garmG1(sURvOFjpsnMn2&B{#6pkPmx_zKNe)!Vs^wbj{R*Cciz5V7@x_f7o?;CiC zIQW|zy4Xkuaq@8QN&Z9v{6~NEN4y8JM*kfLXjexcHPkn$*i~+AjmNM z!97K+MRy0qSeaTEu)_u)(i%`WatRv7>< zSrum?pE*I1QIB|_`AcPTFNswL^IMxlk|JO7GdN zz(}N#0>yjj38Wp4pjlOcq#Tx)^=xU-!#kE>g=lX$`b~^Xk-_fzdk8&q*c5Z@x@}oaTm#)4} zpZ)Ydqgw;lxM*dNL!J5MrIkE53&1Oz)AF44DlxvTeh>Q^U<%eFae(*V zP}fBF25)jV9#VDKYv{PZ{0V>xfDAi#gV}>d6(7)<#+oTtuK`;4;6Gd0O1uy3h4t0t zm3I^9clc1r@p?gFq0DS;3qAZ5I#d}`4copG6zDceV~c5qoKzA$JBMlRPEMo`_Ho!%TqKvKTfZ_w#kJBQ1$tRxj;c+D`DDzb_*&^B=NAK1v0*G+CuvM#I7Zp z&^Jl?+H&Rmp0gjI<;4Zs%VZqCGiLp4miOTMd1v6J+IY9rp?iqVoPC1Y+d9Ag=CKUzLDXxQ`9jZ^d6;3Idz1{@$CbiIS&p-E-BS!EWv;X z#SX!JLBdBEbSmAopmv&MkOWf)X>nxYB9|BED)4%xyS1^&!02YpcHw%X^Ysz zR!3W=+$cYVB!6lnQ3ZhY|sWG>N6O~L)i#a=c|QatXJ~GDN~vOoqHvYl9qcG+pc6B?6Iq)k5U)QH3`xL6my+)eH3UOF!b@ z!9@IDef@bOcj@1!U3YOV>yn@5<~HU&0{vWEnpH*kBun^Rzxg)rO-NWl?FF3@j)_D8 z@6^hjrKqa9mOpXNSJ#%+nwa3EyQ;d5Tf^GiC~~Nx=cK0c5cQ<7mbH3EHxR`Yiu(5U zgY?mleoU>o8g+oL(VzY4pQyxr#w5onR%ijrjG`C=#0Og24I&>UIL{)%Nly-dyH1uZ zuwtjL$Dzz%9s1^T-wez^e9>m-6=vrqReWeRb)*IZ5S#J- zFu0{9^dxuqD%Dve4f@Q*FvTuz`@y{sjrR-)Z;9=dV*~{baYpl41a6QNbaO4OBcu;m z`bIcpnJ_0YCDjANtLpEd9gc1We)iVeuhTF7;+J`@0IDOP20^t2=4SwfoC=LIRPiLG zkkaY)xS^2clt{Rg40=6SBFo?2t04y#pV`)Bs zSfCK12;)KNto8|DMJuR%VX)RHpA@7D+y&9sG;+g}SXZE;A?JX$KM-voz~6i68}!pE zL4M=ympE=zS60!`@NGK#$kQ~xG()8-xkYCV>#?dzpY4_9Rh;kwv;c(yXBqquK-oYM zQLgfV^^H~Th9b#DVvU&({0$s2vF32;AU}6soeQlhCSVX9uNlfP7!s^k$u(j)s83L& z!gFB28lVw!7EnP@1eT~X&vxF8OmJp>RwXL$CeZIhf)+n~{PDAYHa#`-`N6^A6eUm` z9dNDVnRJ$qIi2K0M%ytZxaAJs?a=T&nwT7?&U@W-^vF@_=~V}QQ>_^)^UiwVVJIE9 z6cejz(aKU2aI?HIii!@XgWzLy{Mbo)OC{1n!vnN|#iJG;+V_RUg>0b=w1o{q0*NPX z>)G^KN@FUKFBl?%4X=}FH`y;WuNLYESd3*Q6=nd;yJFd(!%3O?vpe@L)5@RC^91+i z_I+-pFrB~%q2mx?aenn6sQge>lGMl@P*mv9e)z*br4H2}se@%oZL~UdIL-tuyL>u~ zM{M_mv6KY}0vI1+(0w+p3F!_cmh)-BM@zNEB3lG_y4TtfPRG$0+7Rkd`o z>OItZ@HkIo50Bj9=OPjb_cLz2&dqQ#($#f{x;ne5UM2S!23}ZLVxHXQ<`!MJ@HQ*% z07*ty1jsTH4b4UMI`MpXsCBN98t(=QloZ$NeNR2Bo~Mh^h3X6arjgrZ` zZ$WEkFFQCG8$}~l=LowGMy+CRFGG{#(=;_TLpQG9qPuqo^Cm^eJ4uQtVRP)XFUikQ zV10FV_Nr@sh+DB!v*R>BH_hF_>6vkkGmVW0_~-ata)XV53WEAS4B&B6-h6=1U;Yv!;%Cl0p}UCbf*{!wj$W0Z;#ir#e4e@K$VEYy!0L0yOphs`ipx;zb7 z24{~+vE91!{BLK#CA?j>-wS5&(>%UKo2B$Xl@pvZlC5DZb?;dQHr7V6l;0zUyWlZf{a)WgDbla^f{wr2s*5|cbqI6P4ZMa?TQcXhHw)FF1&&hQLNdt zQK8anL z0F>7ICSxO>-Cm-ly>}Dnclh|ymp%o4%a^|PwZHwp+uK_I=X*mVKQ%cynGOd4B16}( zd?#CJ#_mwhnM0Pn$h6eZ;BA#ik5T8qK{|T$2-|}vJ#F3wJPC85Vpa(qOz2e`>^uOpW;qT z@CL0RmmHg@jO1i+hFuC^gb}JmkmiF+)F*hH7G2cs2WhgN@87B~kgmS7yIb91gu!oga z?kdB>6YJ`GXmgdbG0Pt1_O0=X?ow#!j!iMKYv#?=i!g~A4g13~*)T$-b) z=~3=>t&gnHh*}>&%Gz4HnTwe+15sX;#n8bpOHfhCoxb)s%dZ!-p-J^vl`27OsBbad zCtXB4vkUv$LrZ1DWdX8$sJD-vefAj!CBE`M{%iW=CqGT^f94sUWvEewR&7n4FNCaF zmn#U9R@uJ$KooilkQv02;c%xZ80`A!>O9Ez3u+%_6~#RKg-(y9SZOsPp?R(914F#H z21t&5S_&FRvm1D1*S5VqF3!DVn@mtK@@#n@SjhIQO&S;qM*-0>#g|ZyJ56Et!&8SW z?Ze)OJRwC#B;j*CFyPTD0ugtGEsX<3_3N+ykPB~cy_=dEsHFw&nl;pRKow`5?M$DT zpI=Z#n>q{EH~7qvQJkc2nt|Ea76Vex{~$R=l8Fuqlzxy9+cU&F@WnO+b7v7c-s!Y< zYt__EP2sa0ve;0byt;^10J30!8}en|Ke1xb_J*cBoWJ-Az30p`bottw>h)~XQ%`<~ z%}0Lim;N<7_wkGn94ptBRdHEI_lEAc|7AT~G+)+Th&7IRyF#VwIJ7MF*7(ki+7rxy%|*{=b_*{}(^x=RWuG3+n5q z{`CL(t7m!+9sGkE*KVF#US5t|f5+Nc1)JMW+Cxhrj>wWFPC>nk;*&S^3VQ>hB$R%H}048nlND^!~cj%(N?Kn=iM!!XF?)Hu^1(8gF< zSy9#9GClRw`&5#uQEwbhXjuRS^uunHkQ%Z`tUIlR9{PHirs%q=M02@i`n7-Y^St1a z$z3>m;-^8JKBfAoQ3nJT{-K^e`p(~di(4_EXJ{VXzBW-w70}A^GWGTKs|0%>7;FlQ zfxPFUWHRBA$cW7}(mAcNlBOtV6KZrlGRZ`2xXuWw`zq^a zr%~jsxb0wulZKOC5-)2+RM42{T2=sP!E?$-hJGniIkh9u%dI%oEg(XtlWmx6IQ2Wuo-G%{TV?|FA;PbGT=EboPQ;V5I)I77Yu>FF_*?3{Lvba({~buDU5 zj4@}GTkde6+u7#X2Z|}6fsiwOvdR$deh2ce3HpeUsq^=mJQ-0usAwf+IHqGA_rg6U zoK&dK-y>%i9u}LP<|LRFxwWNfVq+8cc(AZS6%v?V06({(p@Au2P0jVHps1$K_73Xq z?&RN_nVF}#xp@X$q$%{!S;ijX8K0e9UBKta%{A%w7&-GU3_%tZmNJTq`==dlr9qXm zOg+H5ffK37>UE1QgDv2+I*?X85l-ALVm}DnSDe3>uf9$n`SH)tcfS3fski5d$}#Hc z=B*3#iJ$r`-TkX;bn?Vm2FdWekZN34_ZqWUP!hu9G4EI<%jnW*ncaPrpES|k!Rw45 zBMw6y3KR_>(2y;K(=gPDfI5SEfwKv^>Dww<$6lMBn_vncx>`7=OG~t7Gm>DI+f&5_ zisjka3D%iLPZg*-XeCJ83*p3@D&X@D&x-;O$vl#Arn(ds@@p+tuLbHHxLzg2<$;Nt zdVMlpa~u2J1p2@F5r5&!KYQ*2ANas~e(Se>`xBF+lfQlI*6kx}t80P>e<0BV6jK@j zbg~-AzLnyJa!fUi^@W?&t>pe_IRU+MWu#IYJE4YoH4OA>RP%z}95)ULG z1(*ai`ieyb>aZ_llqX$S$N{;p?+9;3v?(Fkb@wg~yh-ZsKTJ!9`v^-qYG*(*9<2n5y^)h^CmDkL?CuNFbpF?&Eo3StE!+lN^iXW z3R5~=wBeCHU@Vm-1%%olRggqFb?k9Ee&kU`AJKx>^bWu7 zZ9Cj0oH9-_BZSvi*NAEbqZp8u1nPn3Krm)0LAIgSl$87=SLO{NCaPBo^wVX?3l0+Y z5U`5^cRlHmdKvIQ#X~3_?w&+}p0sK3BT2?V543DyeuWkn7HME$kc}gjRS_G9YcSNY zH8UIF>UMS>;{S(M{>aDx?_p>qgX5S^Y3?o=nuKkRJIz|tQ3waj5?pMHU>I1G?W7G4 zRtDvRG(CF}z@h zm@;3b3*Z*8&?Z_@ph6RnL=y6LdH(5+{vzGqhXeMk2d&;CnFJceQ$=|#EsZTOy%2E} z*Q`b*(+zcv+$C;pX{P$dTBdm%I&_dV&F|eCqi;R;E!y4Fi5d!d#8a)t?)UzIjUKxlQqz&E2QZ>@)5=T+8)IO|naPNnQ@9>unjX zF{l-m;|!TobaGh5NPV(CGf-l+-*)%4HaQBB8I>#}$pvr&x+nGmD0Bc?m?#K-wEEkn zU%^&B^oy(p(_srjX>|-DM?mzwVzqmR!GTr;~OW$Wi3-$~?>Q5TQy0Xs_$}pgdnd5V2FpftrNnS)=7rSzgVE z2CgXr6x1Xn%Ybb$UlD2?Dbs34#Tv^0gow(+kZ1dPkSHR_VU8T5#3G^n$!KXTj3suE z(5ip{WCl)SS#F_elolKC&9~0cr7Lf-quZ$yXBbKEZ0}Ns=(MWXukxgEoQ+Kw=sNmVdU#vaTBGCji>;RRkU4uFbb!_zO-9 zq)eJP;Qj&yNwItp+&t^4t{Mg;RVrv#@u5*vsO_0?@G)AH5>5{s99Ld9=_t`ccGkdw zgq7Eu6#*FRUCI*0t#~LD?vSx}LZn?1Cj8(s_Q2-GHjR#s(Dv4z+IzDq*`1)N$w^ja z&_)}AksQ3&m<<&&jBw%J@O>ehpv1v&l&27Y8d0nE4NxK&?aa)MvlJnCia^h#>m~?i z6vTh;6eB2UD=hNpEaX`yp$SVISTVZ}TQIb3b?oghT0?y+b1~5_pO_k^g~b^jFuHl` zk}4jqsaV?1#v#z7wMHP)bh>2hUkiqideothWE=Aytn{M}c4+J8*d9B86C&MOzkK-u zedaTtqNkpEuR2SfWOb2$^;`dv4|WXRKFmYlVdVE@*YCj?ECVGN064?LgVfyI!m;1d zDs0@bcG$45&ZZ#MspT6{C}MvDm4-qB+UMvXm8b+oxY-NI#S#)5yB3l7knqKH#I&5q zS))hN53ov^JV(6rp@|`GX2^DagtcVx*H=oHd|SV74=x17W=!51J8&bkiF|AvVnf|# z-1D@dJm7mU-O3%vvhFv!FGwVT%tD@RLM30I_taK5P<=xqHP$y!YikSj9`2x5&b`WU zf{SeRxP@@21f{Jo#Rw=?G4`92vs8&+b}Pr!LaY6qip(IUbz~IYK{Lw(%Mm}u#N=H% zbnpnh`0_WY@6b_xJpB7#{^oDfn{WR>eeZ}Wj+QwI1xk#V*lbKl5aV$64Gi3%((-aX zk0mF=)vCCjW3D_XiYTmr{=x>ErQ}ityv`~+Yt;2v;@5`1xvz2(6r1~*JvXa>ek4w@;sb z^2*n~_NTo^kDO2o4)RKr%z|PL zDqtxvf*x5baxX>2R_7|NZn_+)E{Yf+9emH=09jZP@Jf9P7k^`&Ev4rv7za_G zZ0kY@*HIs+Fudq!?c?j(-*=oIee@I^J+6wM4$LMr(DdXY{ngk1mIm(LV(BGxc!*)Us#mlLzmYMtY_8t(Vk2h-DwK#iyxpt$)GzEw43t>d-IAxr?VbeR8a;4hQbXc z?dp zuz3KjP!FR9`n=pFiY)a=@S)b#+0XX?XfIG+yeTAFICQb+$*D5<{py`g^FZzrnu;SAS+5!B zm+Lfyg@kp~kgQnr8(&*nx@cx@oRLAqYZMe1(n68#DJ?Ql0EvVve9(OmK{rTv#UrZ* z6EdPGu@U3Z(3$k+Y*<4#>?6I0|4CEGA7ivD6ZPS2%NVj-oS(7ow&6@R{c1 zarHh_IcC+m8Dq2*U8-lEewNO?`Vuv%>xbdu&CMNt9f+}Zj%Cjvv35NJY_kO=NQZuC zS8z@Nx+W0cshKhU9iZQT{oH?|U-;ZVSBdgB49C5PU53w`eu4(>-Q=~5$HlN7=otW| zkn|#X#hKgD*2SO-o~K+To~!ql7 zje?lFTvW_SFbd7Ry=}f{NT31Mv^00{^Wrr@2m#l$v9U#8TlE@%Mk5aCztyp)LVXXk z4WQFI>;@~j=mYW$bq~;CgwUWHION!~nXGne)`|PBHdJ9*zZ4_TxS#0g<1Dsw3SOp? zdGK5BrqBP43AE64H1je|w9Bs)!P5)7Mc zngJIItYz^_m=?cqafQalU|oBZTRk0JE$U_$GbhJRvI~O}Bbh1S$zk{Ld{TfavFQ8mwzn2HJn&SC@{(jq{GC;( zu$6gnQ5me-9nz3BvjCQQQdGtL@i_s$T!YHvA8*iaGj~Gh3 zd+#=zcbqu>2y3?1)%`dvE-upG&>c>sF}%loVZ%uW51OTOQo88MvVy}NqdsZa3A$-} zJ;)Nd!JgO+ZumpPuBlWY2_*vMieO4V&tQP8?2>vMpuqTDtPcc#1RfM#2s%8?%!2ii zc@0s}I@kX~B3V#cz|ZEhIV0&-TmjKW18#m6DDrHWlXkPure zj}fg{xobKq1zJhPnuqu?WKBd8T9U4wQLc4$XfJYtfx{oNm>AF#(xYe;(mLW~f~^xM zp4uNyyOX9sW7! z9XRBHVmW(qhgRy>l`{xpXldu-G&q&&y8iIoi~Ok-Zwfeh?(IFCpra&XoJh!>I^J-e zi=LF?0X7|;b7gheQL>VXMLt2~jt#mDaYQ-rzeSc(Di&cKa54?~vy>jTbcr`!m%4!1 zr-%ti%#c9ip|`d+OadLOe@oE{r2agON+#l$m6O%-o}T4osY+To#b{Dn&3K1KTRmt` z8_I8SNMi=0hgLlo8~fQBhU9;>A6Uy3Wi{+$z&hDT(&RqJ86?z5-eAxH$_rF~rl!W} z?3uH4>(+o#P%Wp^Bm9UH4d98HG6>8*v21 z6;Nap4t(Ynrn$R;L>fgJE)U|>t~xhcnya~h$Kyk?4sneUiV0hO*TXfS65@fnZD!_TtDeOX)4>scaDlhnG(yqiA%0}|-Hy^Zg~ zA{d+?7-HC9h2-MRw|+<$FTF+|c>hPJM=jdztsSneLYXle*lf}fyB3TYKvbK5esPXJ z?+o0gqeqT0wF8MX+yr;FcUcgf2enedc+D58g_<)&_yT8cfhrkDG^Fs5Y*$y;aDYH^ z-Q3j1!FqaTgy|6r>iHNYN5Ge{v3rhv>o^cj4-qsTF0(qM9%Lvh7+w#Na zw#cV9To4Ae4!C?SNB3qKQYI5}e6+T-(I-CfNp-Js^rLgz<&a|ObR4XLfK^J6 z2_#N9ZgOlmk5+Xca`J}O07kc8Z55B9F!1gWI3Xj1b%()=LOYZyyfwT%RAGCaPH91Y z1WoY1DRA|)`n@8MPm8Q0ogJEqHG;hl+ii0_K<`MU3la;%u9?`-r#!qxPF~JgQJdsF zas^<(36AvM!s7#lD~8-2UxSo;Fsp(Q6>4Pyjeu*q3-&O(R2CH^OduXG9+3|Ydr?C5 z!fWsfV@ZAg{w7c5PfSeG+}r|9s;^_ClQc3q!bysBJptiOod2I@mV&DMpJqyEz%ohJXx;#wrFw%{ddK61P%mtLHR2`aj zY9Hts&>tkN)irhO5SbiAHXW>3cVvLz##WQs-aPUyt|Bp5EZi`mYu~$~CKyz-&Ti%& zn}FR+5yKVA>uq9P%J%%4SbWuBQA&_i_o zkSOUyKVwi_^}A^uC()_M89ua^e$h{c*#LA6f!s3>dS}PYF0kCIHBJicxDyne=%K^9 zZZ3cWob<_aAh&2`KG_P~+0L6;B3E9;=6uof3al6cYCtZ-Lw(pI*GmTG<(&>|r(ZJndK5tV6k)OYbe6ozh7kgxDb5-R5*XZ&0 zyq~`PcYndMi%2$KdHn@?`n^9+&wuZ0OmD#21e%Nl8HQg-KCzAvFEL0B$_)@!Ai_w( zn;M#F{r)OHSABg8y?yyLPA~yfAt8o_GK%p+P##&GX^)>5&ja)tT?m{59qk8c6Gal7 zDC-(nf4y9-Q2-{m#sEBch*TBHh!ME1Wk%B(1A^GcJP-&26!m-DjZ(`gYq-dujHLOT zDdNX0Ez?RFDV{$l+0@bzjW!XN^Fe$4=jckfADR(T>BP1 zcILetq_#G9jO16~L?nIEDFSOk43J5qa|X$!*WX-L73GjhqL0wwBZug~fd;CrtD?2l z4V94WbBh~^GB!Jg47B@GMkmgk+-UwPP+hcgt^P8M1d3SGQtw_&&th-@+^KY2V2~Z# zDnn|O%j4mZGyU*wv{05y8s4@~lpNM+f~-aKyrhoEvtmu!t%hm_k{;B0#&h66Lnq)X zU-=4MeESC7yndTi9^6o;$daMaIw>GFy?})^5O@gA^Y6uOCv;cpfE@q2PrBj=$A@k8kiVO6_7@h4h#8ZUQ#7m+V+_#(O&%Q^ zp@sQnb+}~RFKZ(nom|@Y5C;W`qsvHNx&pxg3I%CN99q>?^&AU;-k=x~(yGviKrh#G z?)jeLo7q^s&Kz6QbD^O=5kGJ+;UH!ckOKX()UZIT=6K~ay1GfW-W(q8V|4?LQU&n2+b)jxF}|Ic_kn6eZ42> zVE18KQL%D%eu{^%VcrAf3G53D&$TqR>!G8mhIw^1IhR!3e#9}4k!kCEtfOwAhh1bM!h-D^of3IZuVITJIU7;5nJ@G)I4zI~l zT42Kt8Wr{pes^Yef?CzOxqAIAj%84Z`SY*;A^qAv`=8j(8URxyKENtMINLzQWO-Ee z33Z7BEuH*3l6m+QjD!P~WtTn`tC|{HX>w|e&l2#fAwh>u5E9=M(=n>JplVc!G`dmN zkAZo^>ThBc71@1$>@9Vc0-*&rcwhazy0V6)bFq%GKVZ04TU%!ov?M3NdzoF1{al!+ z>yM#6KK}y}=yT`J?SADe z&)iW9{c#{M$!4VV+Btux77Ug3ZK1QZuEkTwSVKh(}Ia^UqAwy#rnKu>9$Wa1Ua_FBO1e7vV z;}iih8Ma$JU=+vX1`?5kVdFux{npI^x_a#@4|hVcYH4{!Rmd&;m|4nsMx@jewy?@h z2|vVy?gA{^^@fMmRk^ee61R_ueg!|Ju{$NPK@u!eBpV;v!xMIyG%!L^VzL#?K= zumhw)D*?exJ0tFEw=5(1C{3H+`|(79nu30_DI>w8r^>aG2ohRW?@+;-hbIFWDiNI2 zLI~FawvLCA$hG|wgIM6E!)-1C|E@%vfncc4xO$S%a}D?_v=))X7GX+0r_nkTJr4|a zxn#}}6j*8sn#jw)?1DL%MxKx%|vS`#>(L|ao8^S!B=K|b`GRl=kXrW7X% zctuE}xrI-5$h4H#o=xg4uh6Pg;E+X|IG1Z<{dmkpOim5+VUJ|GsIbt@UD&p(H5AcB zthvM~G723c7%uc?Fper81<9?whSFcdkUwqzp4+X``xu(gW4oCJ_+6Ya>GgYnhPB6A3DSSE9h) z#66QTPe$NG>}=iYyyD>x|=R4)HI6natDZ%F-2p`&?K^afAIQ|__F5mzP8oYme?B{GmwCS z@5Eq^rDvok$-%q&C;a7L5*1lHA-f4tB9Q;PpWReMMA`;42EF zn!v+x&^%U$C^jo>i#4iN#ES~;c9kBIR2xhmjN(B-q&x|(*vcb1xdkta$lbf!ma5a~p0mT6z{qlSUdYHUoN?nl3O2s&yWVqL_mxsiZKY9t)cm_Mj_k^Q-^? z4)yDA{)n#KxI#zNJ$&TUS?WF1M_nCVw6HW!0|U2cd~(e2oP|f5%}@`jW6)-BFt9UL zfgbFmJZ`M-0Fbj0cSC={t&9w!WDh5Yn%Z`!2-SkE{&dV5*?YX6VBuS#u2UJ?T%*%5 zx1}w+5nPK3OMKD`#EmV$b>+jsJ6*^qZdL_S1V*hRO-@0Xak1UbaLwlu(ai~exJ|-ErTJ7^b$}Z@6s-51bP?&Y;W(V!(^8_ySjLt=$2k= z?9g*8*w56Rz<%Bi`{Mg}eQRs$w6wTLm#=Rx8zj%At{}eMUTS*r!d$0JIUyGr^7P7WFxTA7026jlP%Q(C%`wf44D9y`3}ka%w#m~(}O@O)ycnQkfvM`vSz zAPxo>pXZGFKN4DK*~KrKVKfnvjk4Z3U|rG}~r7pBt3 z*;wY$H-yZi2GIkmNnUM(f~4C^+-c&1wYKXO@t9rWSV}Wv3fLt5B2-}s3(~*G zX;1HXLCIgU+1W`tdF%=1Ia4s`XgdNpmx_7VpG*;>hq3Pt-DCuK&q#`bn~Y)%v0gjq zZEr-P_;R zF2l@S-eq&N4AVNKPMkpxDk?0-e{bHN&z7F{bln{W)|3oi=eYa5{}r4m2R6aAGhMN)@EUyXo^kFo7;9 zt9Y}vu0bv=%s=#ECN+w6f{4L^KmF<-Q+IbSedI$wL%82a>bUwh11$RRNV%!**jC!) z`L3w0Mn?u|YI2+ghYmSJ`t+kmX=Zw!rl;oALNu;JISjD?<;v=b;atukC`hKQ9kFDU z3H|-pAfBZ)n#Y9A3d%kiQ{MKeNX-vjf@V_g-fq9{i1@q0t-SW9+Si@+mb;5~)uuIEPD>2ysw&@F#s zkYY?FM_Wj*)J(7S5K6kYbvQ{)q~5DUD$A@TKGAYZ*Lt4P+OrLdR#f z_ZR5q(#n!S{!-ey)+W!fPcWFWq2BAQn|G+Tu8z8asHj5_d#9*SuW9VB3=f}V*m4;y z$NkI>C&%aC{sBGr&95@5yt=wV8yMD;Ic^zRQx0i{iz!cv(JGq|4=w406l*)=Cg8Qg zX={6XofekUR9#t5&5iB+`dmTj%qaY}v(9i(;E7zdVv#^QP||9R<+Qbn~38|VTCqE!mP;F<{rOpv{YfLfORWvCyA^} zqrUM)Y;MxYC>-?H(e9p@9A;i8XlO_%W2eO^+96_^U_#U}p19z8c!}Z8W&LnEO_ji)4Kqikj9r1_Un!@cXa-_kYeQc8|T{b$(%Cxtf`tX-L&mDY!7t;6@ym%6PjW zBWQ%JgbVBR*%!Ezb@uELI&u6s9Xhg~9(d>^_1_#03+~Nu11!k~558ARjK(o$VYB;I zOZmIPSc~)_}T!MQ{G)e!F8mhD4+wVxp?_BPX-tW zd+h=uYBVf9&p!7AojvzF9oT;)0O|W_8;tiiZVHw5gLMAlIXZXlMFIBwnysTMT^?9n zRo*K&S>S~TlLr&JRb?4f-m$RL02vN4Y1l}eR3y~MlGDtSST{(Qymq4jluK!W#zTXf z0=k6Q6xbJae1wH!0;DA*r5;0_M$({Rpc{ef5XVLUh>I3>4Sg+9_XQwb_{5Dxwxo)b zIGiP1m!ON_aq%3Zqr=qKf1Ssm*ZR)z=7N#(_FWt3!I$2}APF#i_rA^aC!ZapFFpPz z0hn$Go7pVw*}Idi2>}SC(OdHUg@U1f=sLZ4`q}WfFVN6Pe{@DkR*xz40@R4YONWHT z{NCsW)z=*nbC*pgA1I(O3diQx!Mx>ee(!j%Q?sL-B8RworeG*=^PXyUg2sC{YL7T? zjUkJBQip=iOia^-41F6eG8@cBUz z-sDa{C?3&K!n%=;@e2- zrs$z-VlO??nZ2?J4prOH@=UKX?sQ$qM{yE`>jO4#O&--ZqeYxesVv>o)|PsVvTxf( zJOii`$JfOoF{Q*-alOpK4sW9+NgmLVo7=`pu<4&sVXPyUM8SpH_7zO!U>79cU@AIy zSn<7<@$IF^HmwBwvk@?Z$C;a(y@& z*jirXdkt<}L!fAc?_r(A^k?n5UYcK;SL(%TeVo;r5m2#d0h}^~5+sugP&_~vZR)fa z&4q5}Qj37x?BX!7vh-rC!{8@NGp^7^aD#z3-y4+xXcTW%tBeVqyyiHeTarr&x=!(w z(@CCJdsGWXD~#?_nee@e`V^a7g3ck0m$1hzOLj*Avj3frzZ!sk&wGCG+P8h%cmLw* z)vN#E*w|>-Eq81!N$WQ0c;Vx@=bxTAedf7;^Gm<<>wngNec&Gqj|{&&Y!6`nXWz zLcqn1n-do#E^-4=Ewh0tQr7^UKw-ZZ6(=@LboOe&6V9_h0bN~q6o2%i|BfDb-~|2Z zM}C9;<^T4J5kT8hSM6OApHVh^212P$cd4aqxhP69Z)1Fge=Bah;o%|flH0Lo zZWUX^EsK}7Rc;E<~Jb5qmuJ5G>*FHeUkDZ|N7tZpy9~+Qxf*Z>H zE7?=JOFM+1b}WR&4GSk;gHbo|`!QM485dd>CSG97A%I*)v7sm^lQBra;5342of0%{ zYGNk-E#noo_(Cw^mfsYzxN%HbBz!b@LA7Y zd@6#LuRZmr^o}2R5AECmpWD7r+`LH7JbNk>kk_NlqD4~|X1Pcy_#yclSFr%$@nj+Q zvCBla$;pIn=}NN#egSELV|<<06Z?GZtgl_OiAS(V`%GaYbx&@lY+x$j8j**abF{4o zW6mzH(_BQs?ZEk7$>BK<-~Va`!jbOIX5~I=6Uc1DypwPP1V?mq@#a0hC|x$JEdT@n z2pAFbRDco)uM`AhNyOhmXtjO&ZthAWx_2pT(&8(LlXjcY8QI$h$#!p3b7U)ncfZ#PDrSMivVj-ZoV z(%l{*T6aDR_h}CGV? zyI5gQSQ85X5%hrvTe967t`DYPSjuHvJ>gvKvWWiAG2!u+Jnwdwrd*u(7l7mc7vLG| zl_UV>7JNk%x=O+6Lt(X9sD2F*W=p6CVx=c^4e#b=696)RH2xR`)Rk)&`MO2}3{xTI z9#2p4+5uZQbfeknq9vLV{QP=Y>$te)c<*JtulO;^fwVJSMX$iXinEd&jw z$^`n#l@9kp*B$u$R|L?w6F%{Y|M;N?9(e5cyE`v^@7ToH!(m}L5CGV^aD=}BV0S@!U_LE01y9pdU|^F$A0Vw=uK~W(`R1x$ZNiNY;@*l`}_MJ znwy((PDNL7jL5(s=UD57qIP)LP)|Me6*?Dy7UIEAoVbhj9oQ8%`)&063+GtuQm}_> zH;-pZCF;v(7pF~;f{;ot92=)vw6Q6Ft1=0sE?qjy!2&h{Y^h@fs@mvGf`E{+yk&W| z&RUX)QS_fq0+*a`O_?~xMSha4ul9Esm(Ozm#G)jp=_r!Ddb5BBt6q7WW@>3{4oVj= zflJwPeACOZT8?28$-_7$%tijBzE0eD{R7t+#2979**KRSKHvx45LXN@AphKj)9lW% zYsYT7@1B>?maSVkD*V{d<2-S=aPcfJxJ?C#-oh^+)(VRoN0u&&7?i<$M2EpFVr6t2~2 zsz+!if9z&QpwBne8dL`vLMu-0;M(_^6I4=jy^WK<>^V97+<2v6=Q5k$MNfwf^i~`9rsqH;6=O1IFA71crM{{ zF7qfDU35&0@L1@gcQB1cJl5^1E4^&Qczog6uICLMwsM#NV1tJ>7bYG&E$|ko;Sy!Q ztogL?t4&1ME-$UK2}Aohc`&z=6kbEwXjmEqRZ_zycNZ-T;x!PydEmfNwkS<@hV{lm zI=OlTvN-k_YhJUW^KBT=XI;^HS2{K~Dqo`{c%|U6$2kOXy52D;Qi>tgEp!>sfZ&O# z25NBG;)O51W%CXi8tRMs3QWl`1;Y9y05YSJ5M|NpZGbstqVT52 zT8UQ*kMwy?>su4Mt`PlCgyOL)tdD3!KxDXS^EOHD3-?&hs#V(gUBUMTKs7Aj7B$|w zOQ{#2da$q#(@cP64lP^3`#AP&bhX)X5!P=E-j`X2vt%i?Ood$LqE_5U#0Q)KGAFr8 zlZG31Wh*+TEVGs*Yr;N%?n_}IrjR))_%eC=z$|Ic3c zn#bNeHZuAXef>A@UQ`PgQG`n8p(yew+ay-xt)c0dYVp)Fr#Qm<;Gx4DpmOx+LE5!z z8-4AoPtr3_3n#6Eg>=i|!s)67Oi1EXE0X(37y44iFKh`zDUSH`S&Xfp=Zp03zxPLJ zW!Su)eg4^aqe|CmQ7>+a90H@O#6}|3BU%Nx_~g-QU^@QW)wpfBS2e~=Vw)r#Wq|&U zMyGUST~QyMHi{(LWFTEICBS&ud<<}-Yv;we4%z&e%baziGs=T;gK_S#&`ix@pO@ItB*9R4k6e9+|4CelJ(2*lYY3I&eY-hN4?>@TG*T-}qgi$ze z334iaU3N=N0RT~4 z3LbtqCwLrm2vH=!vJ3$!i%TQYjSL$CfDa2filVKPB!y&80F^kW5TLNXx~B;GW6Zg8 zakCcRVDp4_ijyz~ZP1SGduj6~(2YjIF}@Z6^%(v8fA?GLlmkKS@bCzI?sK0@*H}z3 zOFZ`oR(&gW8q+Ags0TIhqD^woS%<1}SpsGPTcGc}@r~b0k3ar-div=n_;)r1K!|Rg z#Ot=c&YqqZmuZSHzc3TdKQ@q6w4!TG9Y85>zs$O+K5}7;?40_@O|29Zu$XarlqRRg z7(_7r1_fN_3N5mV1ngWYbU1uQJE<6xnkTaP%eFMMXMA#)CtE94uF&pVXY_N9oPB-G zxW{*F+f7>oU}M*vk$$$9gQxWRbrK!U_lcn~rkZG%yhtmFnl45rnH2!Fh}WJGj)i4)9#y zd3WgFmz=FLQ|x)Jayhcw*A+>_GP+!>0$s~$LaW8N9fhBekI*~;uwAMQ-4fn&%P+5vKWsl7wJ+_ z#O^eYm2vZ-?^MddP^e(bX;*CTp2OVnMK!&0#Tw=x@7uc&0Q@J68krDEf%L8}6 za?y$tV|#O;FiJ-1M7xwE=8CAA^;rknC`uNmUUWA3_qdbU(J9|!t2P%42B$VkHu5d? z=8iy~JvoRvK<$8-1~)wmUP>LqHmH_d@#UZ}SX!3x=Ug$vuLI|j`R=SMXsMcB!G-yav*5PkDGh=g;PZ;# zL-&}2gu*ooz=cl$^zHyMR)nv)4WY{rAqrxE4}csL?%>{^zwiQ2-8Lhn1x0M(a z>rbJyCa1IjD&~(~`(7v`#L?G?j1b4R`;x9vGSVL>lH97Rk6x|n-?I;+~buiX?l8&k1aPgU_GbFd@EOI z07*DraJ)bixCwaY!*io64Vnv%E5I`To*%c8VpjOk(zxpGmO>O-Al~NzkUK%coQeS< zvLAKJeuu&c0>tqCI+UY~=jnzBa7l#3+?3GHZK=N5Owj<)E}Bt9Z(?l;qiU-4W=GT- za7rYSEHj~Ap*E?73NCrAZm5G$mCle*QMvk6dZJfrIuzr}aZRxN1GBp{Dhb}3q=UBP z+Vo{~>|il|0N6}XYo;(Wqi{5NEi2aCfzN;a0Q#@><6|HD*E1jc82##d-}}MezW4rn z-aT-0=m&>~hjwG^!Mvcj`4n-n&3#KHs#rQF09If4(g-Kt9X@=NjvYHpZ+Xk#rK{Jj z)1Uq6XX%9(o{t@;Mq^oT2oZ1;*btd$w9G)0qk0>uyTEBj;Ua}``kJ)|=-a>bO>AlQ z@&D^T)5!1ub52Q>u2HlUgHS4kIJ!U=7HO`WSO(8Uq&+b3H7{1@YGYBKQ6hNcs2cEq20aFfbIG zyppL4V`HNXfS3d4;@+zs-A*YpRn|qM+&%Lmo z4jnp7dv@=oT|0Nuwr$&Jbaad^Ub;a2{e3caqDG>mAn2o`Qy1})Id+S43o%L1X*bL| zhWTbM5y%!!V(|tlx~PO3Z4LO8xM^U^Xp8Tph5~x}{FS_UFnHpub zjL{XPh!U4tTy!pC!p4d7i)#uS^SgfJJ@k#Q{>E^RLft<_ANi$Up|5@A6rW2G=V+90 znHNMZ3i!w+j;$nfHdM?dLNcapn3W@64>Bq(7b@WP~Tmy0P__;cu&p^F9N*IS<-bab2}0Md_@*0AB3W7tVRL-j-#>$n@56nrYR0VdpCnV&Fcn`wAS9bR(7_PX8 z1U;e2`WPv)p<&>4lifO`n~aV)PmMJiTby_rTu_^f3a?ALhE$r;XR+?AxloObQGfUd zl~p_iOmU*Dv+N8wSE&)@rBhr{OYc*;Sg|MIb+9d|b(!_k^bNhKEYO7EOKdjb_ghR@hmuXugL{<1I`=`80segJ01Wcs#$cKo`3!s zz9GOb#RuEaR3+sDQn*NHB!&W$f`KOhi2!KNqMC;CrwXN2FqgO4i2OqH^{kA~2|Yvze61dHl320p@OV08kvFQC13$wNO+cBLFZ8BRmH>H1i7*aMUPF z&}ZFeAESUPjjxmYMg*le|0`BBLQ%4cwr<%Kj^!}j9Jm^Q-4KswLBW9_r)2P0G7SZj z9_Af->8itV1)P6G%fdF1Zo@krA0Oppxk@KJxAqZzO^74{*+wnV4wDS{sLt?lnvYZ> z_{G}4@4fErxitMz> zZnMGNK0Gcgy}*ZuEg&{T6kzDciPw}(lhR}a$8Qb$O0Q>5IZ{{QiUV+fuJroejRFJ| zh;oxc3u&)iPj4WaCr`TSy3DDgt&1BISF>QA+y%#|7}DW(b*Z3l)1%*}Q<^AjdE#rk zg9p`8NpGi%V+vF&6T3Ug+(P6$O3;ZkIz)Kh;7*|2=S=F6{Xs1YTb#(Lg==`7uvr@( z?qfQ^f_6yrUa*h;(}|{0v~`R<<=)NtaY`;Jly$3XU^|Zb1(czv+P-xUug~b>0%+o% zbQ-%2Fe?;BnM8_Ty?F2==mX+t^X4`x1I0#A!5n$7E)t33D;gZ}hnMtSwtwsF=4%%q z70m$7U+@w(wY0dvAWtZ8;+u@u%i=w_V*&hW*BHm2|9(*{-q877Vh5B>A~dc@3wp7X zv*Mgxh}1W|!E_9G>91kIAFrXBy35>sUuBWj>YbchpeivPYerdCnSFLe?Gf|3kyGMv z`siZgVnHHZYUEg$i2^4SGGAI~Ar>dk)KZ=F;l1E^0lS#>BKA15+Y@2=Vx)`Vdq$nX zah-#e9~w*He>2n55x+F0@wQek&+-m{{u}b~vp@Up>*34$Kk|`(^KaIyTl3>HlQTa$ zI5^nl)kia$>EkBwzBVS48(q4kxG*8K8491L&+Me*cil}#0+9a6_x?D&_~L2$_$U65 z{i;hFdjRMxFUn1lc{LYhBa0obxC@J}*X1kc`NjdIg99MoZc!D{nZWp9HbQQ)ja-AP zW$6?*RLLyH<;L#<0B)%tWa^sus0hzfw3sfUk=WQA*dJLxvDwN(*yIkgbhTAP$Y?;t zlA(a`d02~ulW~<>Dt}o(Vu$Mt0A;mQ%B9?_B}5zHMjsy^q3hQ#^Uuu+PWni~8LV^> zL8k^cdxIah8I$Gk&e~!+cJwyBV9iU^!?xKwwH&SnJ zFC9K~n66y8OqVWS;!Uf_c(LZg+@s@g7~L<-&8va_N{uZok^qScwLlX-VvWyfp!hb4 zZC-&f-YlnYz2zh^EK;Yr^YaPk;XTFVj1I@GbP~zy6za-+lM9oz>LjbhJ41>T4Whz^#LtgEf~(SYCbD zr9+z{<*nnN3w{kpNowRQ7lIHBp?i#D48SoqIxN#DXWrTx1f@LkQk`&?)YXQ$rmMu! z1I`^23u9b3Fpv(%scBKXal|k87%(4>8vq?XK^=l^SKokirQs-qZnwGT*z_Us-zi45 zr+cHFMv#Dj1u@heRT59x*MPCFEBB0jSJMDVUg9nTsV~>Jm+{Rwv?o0SmgQq4hoH-@5wnm3=f1Azh+*PUr zsHiUbu+C}G)#LL{kUP0lgE`GI)w6cAi+byVU-TW30P-godZV zBSJ~&;-49%5?yImh)5Ar8`e6hs|lQiFrCExArq2P-kUZR8XEc}?iXdGL6!=zP0YvN z(;~s?dcehkqZ&oXy2xc!MW-8~HfkDdm6|NZe-;M~-78DI57{15uCJ2$$z440#kJVv zIPXwgtnG}$BrM5 z;azyHuFlR?7${)5zXPEEW_|egzV}^M!q@lx@-P3|N7rxY{ki^|1K&PAKHkXD0gq!V z>n1fcflNXVq>!<#Z2KsMCz={gD z2>}}Zv$JCEm#?ZwufTJ|bbTWHk1fn9;SzOqX6^vjG50f?%fx zY*6IJ8CP7!&_!Z9vu~(pPw37y>*>t-rz1Dez{V{?h}gAq8A$M7SMX==y_4xZ1-p`9 z;a=IZQU!HgYLC^7sfIRsHjZjfI7g2>^772Dmtu!_$Byj`3jX9zKFzNS{=4YVqr)#@ zKjHm(bA?EqAs+#exT+W^sJo;2*jbA2*GDtTMCqX<{FV51M2CBtTAJY3hJwh%gAd*R zDh*bUjT2KEW8pU_6=pc6_Wt3Ki}wuYj+yW|Jv&XE%KZi)F%WFFcED+}E_*`t-xSjo`B}60zvlzuJ4`JX}l$)bRrhu=xT$s~P>Z-cv8El|BpD@TF zc9FVJxBJYZyd#XSsEtXj>q{o$q~u<4J0NWn0lQ?`*Pc=&wIr?jG>wQSSAaBI6m)e( zQC1XOhQ9+vDi@X~<5CyJ%9IC?SrAUu?kJJ~Gu8((fSW`LN1ySGCvaAgq1tyq-BiRjEvJY3l1UZI1c9 z+dasQEz>Aj<^Y;XoIoh+9~uN^A&Y&DW3QLRGaVB*tm|Ex*&qQn0t_98jC4k^n+g6H z0EhR4bybq~TC#8J8ShXBEof_S!Z7)h$640g0HH=$0Flq8E9S;j8FeEjqsq~+@5iP9 z6|s2{^(UI>NxFaXUTy%olnEtIk(Eo&uV3wUt%$+<$9czbval8CgfQ7M!8#WtOAG24 z)?!MAQQJ5VfSVmNY`=@f6vB_zu7$qn80$|qZCb~AqrdlkKNkMIg=VMc;(G~LrEAry ztvxd{19t%Q-_Q^LlRx=Rw4C1f;Sc|-d$(@g_VZV-Uww7h6gxOrglw@FiUc~q)}1Yw z?^_wojlX~6`W3p-ca?UZ-bcsb*m3MA-T#t%=!;)?oId%P|3V`}!{MUSk$Fo1XQOIq z_ez0oLt;rWR(<#M+^YnRpK{|y${^#iX&=8s3^Zrp~&eE|0il^ z*QF7-(DGpc= z5dnsS739?Q)I z8B>26eC{BcGX;6h$rlYmp<+JA5#Uwz^{0Kf7xo`GOdB_DjvzUu)fKUbF&_CXBYc;- z{`UNG$P2o1lpZA4b8@&*TQP5e26cg39$18NInF7LEs6&K>B15+kzA=3f6!$l4|83=aIY>4 z*oFr#IN#{nfkQqvF+#DCD8qNv-f)w{F4rt^s6!0c!3Jot9$pgk|O^Re3u zC|uU5b}oz4&Zay}bMsQTkh(z`m)_O~2$(@Hnx8L~CoTfyEt|Hp2YYYtCZ@FkQQLnNwSN3bS@I17_ylcXu)60&Cj(-Yxo+ zWmwa?Xv2mL0eEktt(&*9hNpW)7u%{~-@(M`6MuM3DM5AaH08v}xK`D@+ar~&5=tH} z19O0i9pCV8G^VQAyQksbP zB@4B!QoeE{@`1%AMx0ivnCM%@VxfxO@)UW*zOd^lg$?n#q<>RrqAT8y1d+7j#DZ<@ znyb`;PS#ZJpld3ngt;|&J&?pzrEBQ>$GO3Aol`D&sf{$Iva}ZY982hvQDNp-e2I5~ z@2&1x6OQ2o^{!vfiLLkEdk;V7!w)}78#ZpFcfRc>*#zNbk37cj8-@Jw5+EIp^ zq9b(`n+%|vu~X3l4i!3e5jbjSNu!7$QX-Z~ILghA2&9DrZ3$iq7%6prnO*{y3b=!) z4>lG9{{86xTQcp#fHyxLgcAV&P2o)mK$oSEZ(`*iSK6hoY!d_+D8#bL>E_`Z(g|nb z0!GdxTwsd?j)FVohFJ_ZFS{1c?nHc1B{LpStHq{=xKx-ZvZ6`{?~@UeY+m z0NdzzV}a__F{ICI-I5=)EVs;&ESizOMp|SPHcpL>D>5C4NtBgOp41xDV89dJ!}7ig zw!ssR>v>JHo8tfgb`~j=PZ~Xb(|(L=i#<=ZBLV(*VWAIB=q7f}HC!``Nv1fiHUKF= z7mF!L0oNsCR1^#Vaa+PM2i*dKPKbhT51b4ByB$0Bgmbc6U1^G1_u72BtLXPmw*aaf zP)Dy~CxzhWKmR#;)vI2~n+4w26Hh!vzwy!EsHNytly^w0whpt8fZAnYD&jojBCkFs z^|?%h7Q2r|6OqR$8jVg8pj z;J~hOW$!Ab{w#7=8r^9q?%8u(N4UvHmfLEPUIY*i#|T`<5R+cIe1@+J*yF8TyMbw3 z(evFBBz>jVu6FClDSz7M5mB*#s64gVbtXURJh3vL=hQ9U+FUqX4yx;($L8_wGeDjH zo%3?meH;JUYX{nR@{Re-gF1E17_)T`SAEc+gO$;;_WkN+{d zL8JskiuPj=)U98?nMdj1>^3_Z%Hlv!`@N2mc)RD|h3kCbh_rwF5;3TLo4^%S2~+h4bJ1!i5dp`X8-~Y}}hOeLgmmm4f?;9Q*{;7e1!Mo?@=UkC{F54pP zic~$SD+X^t4dEA^J^wsiyMCGWp54!>hOhtT*VAiW^IH1ECq7PJ`RbQxI$YqbGI8R} z=7@!RnjFNoJz?=Pj;q+ydF3oMqaYA}%UxmZIZ@us7j{WoY};3jR@u!)Y}b(}VD*%|=bPTIM12Mv!5)5QxHXlP_G3PGH=KoaSq z_Vx;31&sn=5F=W2I-+BNirmcltZ>QlEWXJ~eaee8+OINdhhTA;U2sr`Z`66g8tn|A zBa!eT*kiFCBFsVY0G}|tE>KbMHBDWL*tK^g#U4N!s3G7<16=X7)hO!uz*PdKLV5Ag zS%5OYfon>HJ;a@?_r34^^s2`m<1WeMoQt^4#e!4A3^I`JTdg<^;>nS9lC>a~G)19e@n{w??1*3wfB|3(;EQWS=hMW+ z?jMW6R;os8d4VS}I4|HZVq?W)%`X9j4T+z4IQM*=Xw0)sA&cJgrjphJ2y+i z!~Jw!yV7v*Kv$ZtnJOI<11Ba{iPaxGK8BIq9bF z|Gsz8SHAM+9H;_X6(>)2u)_g^p@WhsK$+|-K|!3Ind5bBA>0@9bC_BzvM3e6A9T3X*>|aI zQLPO(PE^McH3Z((gqW0RJV+@V9hy{VO&wh8mIR132%vsZJ<+j0;lAkNV_8PAdAVFh zai0NH(cTDvCQHAybExk-CW@+4g>4rl|Gtms+o(x0&GwN_l_+n*?RM%iVnx-G7BKkv z5(|HuIwck{CC*caPJy^^0CyRJ$7YBA%_2_@tn1EHt#B+lySrr1Z^@(?4n_y|ALi%8 zRBHXYjkF=GyBjxdpdfg_X`e#ylT)rYyUOrwwoKD=Q$u}ym-_Dj=)Zj*)laAs8r8FliPeYiZwxyMJa<5*o=~@!2^fs$dM!Toqy*$ z12A|Mefl$>p(md@CCdNU!7FsU-HiOWT(QNYdle;0gm#0+Jq`Qsjs|!AaN#oT!=-UC zI?3G4Y$j1;i@U^9%?cN~Lumr(`OHqpI(H&Y6pBcr(THHrHW#UmC4LqiXAyl=u{&WR zP06h-bd)b#-x|M*giFSqX>>Ks(EzZ*D{s)cI_h<7M(~xhv85*+4shoTf-C$48wThn zq@8>lyh&F}!H~MH7$pH7xSKa^<>&kJFO2f&5`x2BJ9lw~4q!btI>J%#1B3nKOCPI$ zOX0&Nw|0#zWB{;8wZ!r2WT0vmV2#w(GJd3WmXD7k4i@&v>vsu2L_nK+)3$Z= zK!17cvDeV+UiVtQ&M#iPK!?I2{{Hv>4BJL-*sz&Sp1eQvGk2L?U^^PlBN1I~Je>bL zPwb4&1TJyPnZ9%EI6eOOrDU_kG*!RDh=1LO*QXk`lSBS z$I`F^i_ER6=++ShiWXGF_j!kK=G7VzkBx2q0iq#L>u7YgQJM7G*G~D+NFR+& z4$;v=_fdzJ+{8}iS@-ZU0L24ViI}W(sRKf{B{Z6CV{Y*lz76`o-aQ8y&_Eb`?fON& zH_+V#Zx;7xUXU24GbMV`E$1$$U){E=oO7Ntr0uEJyjRB*f6GJoHr}vv{uUmw&phiB z7n-7HIlQ#vbVApu8WY>OOe{%q--UAoyEL5X=MktCz!W-#IPT?gi-v{!xxXCT(OQbM1Kg{a?4ST$xpGCgr#5mS3cUxOmj&V- zO)W%aZv*&&&^GLY;XV)RS9nf5@9eB3q6#H!R;O9>EW(4GqPd$?8Ldk!WG%SEY#obQ zA(D9ZMRLm0sU-UdqkG&e)KQ|Om7r~44+BjB1w<(JoZiE%S#nJc?n?AH;iosFU%3VS zV4Y>(V*YuN1-ZB^@QR}IkGBc564=dVPei*7)fWl>xbkJZpt#Gec@Rv~VC%wVe*Na1 zj3!2lL!*R(2LO#V8PB=2EaFCp;5#^`yWoi+t{-k>iQh6`Gq}GhJ&({O02FUnzlrwm zJxcf9dxCECy^KzrI8G}%SJU5n%a4X@t)xdEe!0>{O4`1C2UFI#k!8ApDy@->52}=L zfZ}Rud^{9)BkXoHiM3*SiY;U37iO!Gk%3%4}jv)2VcYQZDeGaMn;F}^x4z2Z}0w4sUM-un>X`jgpTR8 zYgef6<_$j1wn4-Qa@R>cs~S;+F%=dT97j%hi)4;8%A~@jF1c}ztExst5#fmNu#MhQ z8&&72Y*`GmQF}0^X8;x!d5mmvouI2cyFA0d0-QE9>fw`90wuwhEGPCmRr2MfLW5Z{Er72g*x-;O1!|RvG?aoWo$2KOawO~lfLFRy z2FB%nK!I@giI>oS{mk!%Yjd2(x6G$5J;zTwjtyVS_Zp@KbMrGC00rQ_Qn}I?nNv(Q zOW@FJ3^#M7H*8^`0}d_%U@$V?x@9MKQe9zGjH*T<%Kv4>hf{8QVMe4bkKQh7VA|Cv zGcMx}XX%4ljMkr5JBwAKcv#G|t8u97JYIm6T|4(Bp`wYu;sZMg3#!Di0fqU&gZngO zqoN(#x6$d-FVNsXzg+K{4hjvznbR+Z<3Gzq@6MeEXz#8=>eIWRjt|5DdF|SD;T*2x zB7ejB^*p^1u5vT;!PZGcSuxdNW_mWP3CjTtFR;VHLIBPH%G2yGKgWglYyisubO6wa@{JFLxOWHLmmQuECzm)F0+cPwyN{dA zW@f=BDTB5bmMla}j#wxT@bj)_7r%BKV@wJdxK^^)LipR=Efco|74spZ0{1bypM-)2 z6IO8^>g4$HO`EsSwk^Bp(81$$;J`k5?Kk}$dgS3p7!kbvt?!|+(MfvfC67dk&9-ej zL~x11Lunv2fovfKr%idVPmhN65R(u9=IL-x!wi9oB~WgfBKQnNnLl^&>|j+b{qsNj z+#mjHy7Te37eFT<{Zk|1%ddR&qrdYXSN8P$;KcaE`vwO4*SKu_Y^hs3b~TqV?^1_B zDGt~y5d3id{8>7B6w%;E=&j%X{nX$8P4uZx{ZRne=b~yGK)HxPC|NQcM0#p)1UyMC3fUcJH{AnC9an)E0|*lHH^tP*#O@K|ht$H5db0*lQs zqj=bRFH&dB#;TH1RYkkR*yWA<09O-0#g3SDLP_2KC z-di`&)osfP3ypB~*l0>4`22O}?ZyOBsm&E2eU)QPi53+fFkHu_a&ay6ph$s5b`M&B zPNXSlv17%!X%s{_T4XkNK3d%6R01ou%ree==Mzw*m;z|;71w_ijwQTuu|}Xv3D9b( zcpOHtaf1Sbh1eMcxGB|A%`eI8kc7?^{Qdxv;HQlUaIrL7!Ioi`h}S5RFwhQiPXO!i zQe(PVh^Ci32x76aBV)$J_{M~85pL_i@i3N z&|+PIbk6^_|MV^sEf%zM`#uIiHpyaQjuw)Mlka0%^DWxGZ8vKYaF2k70-6{AJsL@%4xnjJMqNfKIL*x`(jX`~@kAX=SPwdR z4X{Z2h6EkyWRTWnO1H`24efb@=)C#4I-=_;haDiiUM@sf&H|0WIeyvT|2kYw|&d^(1Q;?6y9fN`0t;l$%z?y*(0xr*E^=F zoO58bw|Fkp6-KX533>?yb11-v#)m>dcaz2@M#K4>VxW(G6?<%lgaG+QMo=}@&rtvH z4~>kCtWG1Slze48CmRbopBxD|q#@^!*!xlQ1b$~5CwApCHO+m1Q6c0Q$!*~i}4z2Q;_gh%_29)_ev-uGbTN<5N zN}>XKwQn=fo1vn(_+m33pBUi<0%K07jz>lY7=Z2FeIRUXd+79;7gfv#x`~f|tVpJm z!azDQc+cPRy6@s~b+p#9ah3Xj;_=U(dyy^hcJA249qFD`s{)`tO8fWjr~biyx^Uq< z(;V7o#CU$haYJ|o`owg2?QH9}qKA*E3DA5kfvnE=jpxD=@2sP)^8vEXy>^UUE}Dwm zP>Nr%IkfyT7fI-h<23>Zqr=30pit$5$F1N1oqMxT5{gI3;0!5*KFo;xOccORik zS6<|fCFPwz-lUfKv1exH_?mw6-~AqX<9B`+oxJ;Q`e*;_!+eePuHVo`|Dc*!Fgbpt zfQV>AmeiGPjvpz(SfYWK_&PMYk`;zk2FxpS*r?KU#kiebEv({*+BWQ1s8pF3nimZ~ zrGD`dJZShzSP8QD| z+J85PwnW#Bj89)Fz_91UV}h!H?*R;;>&R3fH_iniu4M>DBi+Klr;XCXb-r%xh5!IJ zaEB8iEzh5Rg1g~(UAc8zJ19$uUXBMD;&3>;X&%Vah1N~+rNX>tX{*E2D`j)Pht(5N2hvWF`VlK<|@z4O0+wQ zV>EX7E5d{p7x+HML<-XdaIRaW0`1l!pIcbGEiKQ}a=FAH+8Q3*@eS7-fHpuoiYv(} zz!XNpx7Gxp2d50sf2P7dh~KsDX3jS+YM$=V$Xb1_Rg=?fh!c+YH9oSX`Xz@V)ezbJ zmEC(jE1nuUB@zow?O1CvFN@t()Xt*9@b4uC$dbg1>r(>Hgi|iv=0%>G8I20}0OuQ& zo;$ndaDkU;apD~Jt$|=DYG4fqItG5eF5F*uT_`v)5j=G0An$Yg_wT3OyLZzYzvHcR z_~0=r_f>TKu9E@aPSGO|e}mj(;WglT$-Bu#_I^dnMB;d&YX>Hypd*4FG%-2O*8mp{ zI!#4~JAnRhnYZTW7Uy4>pPoC_T3UKxWOC^2^z`(Ffq^SXz?!H3!P5rs0O;)Fhkoq4 zFNZJh`&S?N-T!0b%;@_DZuWm)xWKwom_&+Uww9@>bWI3g;t`B4AOG4H>D+~LbmY)6 zy6ePIdiy(mfUaD=MxXoK7ifUTc3yealtMg;LZg2LJR7Lx@vWvF@`mhGu%~09hT8H} z%FVK>n!Pc-Q?qyR$@H1PkhOyfv}_!24kh*;8x7qUmHUhLi5uU-hAQ)=Tu!1W7n!G8Y@8S=&dyFyxnTn@5EyMuPECaGP14n?=jp^< zF9{2Kmx2hV1p*F|P*ubT-^HY?D_5`5!wc!9eI&fb%8$RQl+7VlyXw+IW^T-c;IoS@m%^It^DL*>23 zt+rzNq@~CiSIxt?y~&t)o|{fdFBZYQF+BHzDd2J z^FR-uQarQnyLF5snLdV}RA_GR|1&US(jqAiUO~2?N>|um>8jN=-tTc z${c*9XQm@p8s5Q}U>N^eGzeKlcjcH*jiL)8oS=!d+!L>$&6~IIwc%Cdye0hi)vFhH&1vlFU`oY;f@O&O(D_9- z8B?5D2>j;f7gpo|my+!5+esPq;s!2?HC| zu*NSgEYs!7muSzfz1&2IPCTs!Q}sGA30&LD(+4~!3hT+Ku>d?Jo6oLV{hSfnukE~_XCw8jmtf7_c&OKPobeRd4gWv}%Lasz-~oaZeI zYw-M{_$7M{9Ko86CINHsksf}npiwa$g8;xlKfk-uD`JNl*FBCuCULM0gmVhG z%W#g`y;~?4u+YT$e*0U0g7)m$PrYk5@q2^K=Sv@XC40l;1D${4;oDS9t+nL1G@|O3 zInLA5V+@v2piS^TIjdAr5uA2)F~nJ3sLF|OPo4|=!dJ(~$Dh7_^URBrlapt|&t~qx z;X45OFa7cE_rCcw@bm|N=AZxSmd%@fJ}h3Zotm6%y397rMj<6t@nSZ1WMvB7uxMft z{^H}GC+eJ%U^n&MiKL^(WQm*VLAF&RnZORL3gNQ1+g$N zAmX^G7)^q0>J)?)jY=$f03LmVt@ZGGY>bbQmqm+eijr*x#+$SE(P$LW%|mDyMci;J z?nVkIZmM^t0X<$+8v>g7-fpQXyQE}3@70aMXYK`&pOyk0Oz2_)PjGq03xWnaO>Ov~ESvR8=xsNA*8CHpnV=p$NE`ki~^WC9&*I`Qpw6 zz`is`H*Q>`{{9;*)&Tc?{rcVjqPOt^2(H-WE0@^<&$y9Jok5I_fxlY{n;F0d1Ugt? znd_Eym(AZfaR_q@t*k@IfU1Zg1yX&KSqySjqbeA~%a*n$`C0UdnTP(qcdSOa7+(u_OcFP)QBea&^`@P?$&;R+Kg?r%`4Gj*_ z6HlCCLDgNy?`;D{j?$G_Pg6^RuKd4!2B7>cyl8B$NF&7ki{b?!qN}TMi(o7Uom4&s zRd`Jaj6o1Va@mL(mf^3DS!mYwA9=T34hm0z5_0chRK91v8uj=JB2^%uNH14Iz zsc{yu0YGu#ReE)YNqlw&=;7rO$CO{^+Bxq`U9Fn}2s~Y>a>B!i7sTF*X|j&?Ez8{+yeW&-dI!gNw?4pw=9-`O3?pp&`cl7<=^CK(@ z{f=+@yKxS6&&m5~dTJ(H@2Z$uYhCzSYOI&N8hrV&(NVhD-$%ovLwt<@&|5PO?}7K3 z&dzFPW^!n9V)&`W#lCk#ac3p7S*Zdo`OjsdH4>|IZb!nb%G8Z z+DC7D`}fhgvlr>q*PaRswFogB6Z1Qx4G;S>qf5Eh6$hQ2;qTng(rPDJdeCt6sgZ`ZV})am)bds zK_S^_)DjbQAOy;Lr`` z?rq(?OV!P3^v6wi8yOc0PFbiZ#~LHn;gLaFvvwUFIeaWU#um1T+87p8Y<{49jE5qL zVk~PBN51G(ARP?cx!KvNuxO5R*Mhsjh0tuI6WCHwPN8FBO=xtD*d_GQjMK%ilPokg zaN#Un4aWtYP>5QN9zCvM2U+jAjmD8r2HJx*TpRFCad&BS&%r*btcQqE z9A$j{@pE%w=j&d?ROesIwN+)nJEt5K(M6-qwXI@T*b8qdcC_u>xd`Gj5nGM!EsvKX zek<;@S#)ybI4TvT$O46g>QeG_0i0I6$Bu4n+$9PICrw8D!yXx!MY?G8d*_DQsbTCz;R30IIjx!WMU4#WE z`!9F#F<1!i3v>xg5ZDnb95c}JcJJEDg$CA^9ozPDmH;R^hY#INk3IG(+Od5vJ@Vko zXk=)d-u2G+@%aY+K6>Q1(8?TTC5?-ncH{oD%a%4%mRKx2OJn0>+*KY5*9a!C-02R_ z4>}1`wpOetUBgX<3e_=9uvb9|LIOf9Ug9FkvUcA(7%BKaZQ3&A1W>|Q0YmlA+kJEUZRB^|V*p(wJ zSiaQ6r&4Jot$G}<@=Gb}ILO2|b6$vXy|(!k8V^h{^-V_S;=9agag~B}Jbxvrh@KLN zEzOFmLJ_i3Jw?MphBPMt23?SC!?#Yd@W71^Ddz^fLyQJbeeH3MfX95v z-NY0jjUWl6dMz!bX;bVD6UCIh!u;ZWat)wNJ|&HLpWFcQ6hopIm(I^nSo)Z&xrL;{ z*wyF>xf_N3eLVkhvV`k3MdpDT08z2Id|15=P$5E6p&3~;y3<0!WgT48Uf4urWb~#a z8LnE(zYoi_s**HJTq|Rv!+gFWTE!Ft{CYl`t`b)qb5C$Cn?$AeigPkDGQ^V*P;a8m zVq3=<-~ojyc=Q}Rk#TNg@s&|D^7w0;P>`-Y2>HQvvU~SljXL*9abPY)-YYNGr*oc7 zBJCWp_i#hHpa5fAx9?=?1Fr4K$#H&Pp!*5nth7l|a0hpIc!(DY-22!2uJG{$g#b<* z=q{rW5(>t$0MqQg7BBw}-X|ooyHgTo8w!%c9$+!?1^>LEdqAbBsubU+*yNSb#RAVa zw=hj^%6z7m#i^&OlUA=;M|*Z3V22VUD#FnPfbJ`&K1VN}enzHPW|LM}v7y{t_4v2t zLxR65-p6b*hc&uklS}3LvdFJPf}J4V>u8EaDy|6}PpoBd5W?S}=s@}+{synxLPp?z zf#(F}1r!Mp`YozE#sU|KxVPYejc^*gww|6I+PrB8J@~)_)Vp>oJ@nu!=;X<}0+{_S zc5MP5`bU50eRQ*Lh;0QCAO-gmOHL(`EJoja(lDNU!i_a(d_o*BhQoaTz>KC3jvE>+ z5G68ie)Sq3-pADP^3n@~BYiIn4)i@eH#2=|dVcKumPs9o8I)vS3dgs?;IE!d4K;v|H*JeITPR|F%D(km)3z*2MASoU%7gbZuDKFT{{Ix z??14IjvhNer%zv^vuDqQ3KKWKDgM#jfCGX$QK$N5=+ssMY~WkNuB5hF_B z-N@rNbS0S2T(LpCr9AQY-ic5GqD2!QU=c9Yv$%d#8p}-_=24cdNLR5gK;?Yuh`QuW z?6vdkO^8`$$0tU3`vd@EXGuJd3;n$ac5;o8Dc>6knpwfUterTg;**wg)r%M-jN^vQ zz0p*E&Q{4bdxcBB+{r*cSzH;A!egF3_cTA(1NXm@N1IPR^)(*X9^8L00Kn}Gs!yD_ zn{A`6-MC7FgM<8cyw?^7bxX zvTj{(8%H_OPY})im9Kn(ueFo++)w-W9jbHFZ`XPD?c&3B{;Lnb`6z$h8rPhAMT_O$ ziIexzlc%0g>O>pOBLnch@{v*yDIQsniq8@sJ>@)TN)9?k(edigVI%G~vTpRz)#+0- zZF8CiMiiefI^3wMM`h96l~;R8>rz*8Eh+5)oh`&PH?*53dJM0rmzTxkKmoZrDDK~zR|_6u_!uf+K=cw zqfUM;LT%!4Za| zM0o98t~(Q3nq6g;io&XjbPBTu_1+2#7lm#(E@de~KXjA3I)&zlBEzT^9D@z3IQ@$A zg4eP_DLME)8Ua|#IDCdA1{>EX{*CtxCnfwoxasS|`+V?$d)Xap)25BIVM8yy?Je)7 zd+)i2z2o2cwx6IYSNdr8u6@z{qoXsMbSVw9$|hfC^@n4FN#EqeBo|cUu%aQ>ZK-RV+$4;rC9WLeeT#0m^JVPV8)d@)wRGz# zz7}54@!kqo8)!?1sz@#&D!5C4#wBM2;nc(;0Ds5yf(X`qOm~bPzThshC%B8eNpnRo z%0h#?kJ4@G2|(lA#pihO?#3t(-0ZLzKKtA=bm{U%E|Ruv*}{C!LkAD@cyC}}fQ6*6 zjEcy?#=%9QX?$xm#6UU@;L0_k^1qGNlG8(?BSapL+#WXK(mA)OiLY~`JtgW6&LKvb z_?ZY#y7+p)$aWThYoXvyB-4qaqe>QL(Z*S=Q6Z=fe8E9AQ5>wjZlP_oXLLutG}UMs zIi;g6Kx_|Nsf)~nr`||#xh;v#xUSxW#Ric5tufLr^X!fs+>EZ^GEf)O3VoTVAU07@ zDwMDgw8NbV73+Q!>e%Aw7H@8$QAvlcAfppyG57k|04K0sL;=|uKnBh?2NbDaJb)2^ zrfVEv4)e_16s=mh2CI#{mIlV@GBIPWbG1rDWpi^hIyyvC0oVaZd+ltxHo;#Mr+K=~ zIm^56#9cXn=UQPCYnZC`{d~%mV%dGHr+kcJmkFD>aA18$H}&C%9%4{>?(8M@itp+Y zt3TWm;@RKihK6@WU!$zMSVSH%I>0E@R)*r3Q#S*co|_Y!IRI()SDu-miRn@90NVto z(F}iwsbaW35tzg2edsDTK?j*!@9n!nImUOG27H~swJ zaR2$K$PMuF&FOZ0WYVl(bws7+t1EE6|VRnf*Av@W~xbekl?NwbI| z6=ab*o>clRbDI#GFYP*mpBn+47fv|SPAvAfNP#YFL)1{$1;>1J7N~I1Q$$bZBHE|P zWA52~h+a7Rgc#++8q5p51Fr|1&@*Sv0&gen*|U#39J_b#p{-lC(eUtaIPcflQc9>L zWlVhn;Ob!uyq?G{#QVYM5F1C*Sj!B`$8{wNj1Onu8;ZQ+WXj8#u=4w|ux; z)99R|I#?!O3oyAQ+S$`Bz^Vq|GC<7taKynr(uat0hm9gDgj{OE>-AZuT-3=lIp$8C zcB3Ga+55{l(L`BbO9IOjX(m3=n<^iZCXJASYn#^(r64r2&R7;t!$5j|J`_sxv%Il0 zSnL$P?wkELsAtv62!PbZ{4zyTDk-EZSS?cN{$7e5B<8fOm(Y6CK*stCyHUfVg{rX;3`iT!S^F zU<*^x9^l@`XQ9cqg*q@5YKw^wE3ZWmd+&RRg0FaeYeo78uhD8_$}Tzp@<@(cyOATm zSNE*t@3GrN)-|pwp>fE5)~Y!|SjU~RkRwtdpA{rld~)N%rj&Xfc<)h88QvR?5u7n_ zoFwjgiK!602bC=@LdGUWxFBIZGdj#+y~GEa6S!9Ke&skdSzw6*K$2ru(dNxNXxFaY z;kwyM_ul;oefzh4CrwSvg|&KL0LF{-?ce%c%sIwu0AG1>Vph|7U5X~peBGT`Hc_Dz z6}(?`m4}80!dgGb4o$2FSuVAC)8Jx+-I-dgfbVBcha&39@b%f5#i=txL&Fz_hOWUf zZuSmm`3`{oTlevS5B&YX@a5+|@PS|Y&3o^^=g0eR4!mn{aInW#eo+G_DN>AcR&Zmy zRxDx|C7nL=JYBtZh4$||NGFb;pd$fDA3VI5E?l@uH?G~}g^)BZxX>{rc)P;iQzL(8 zJii33@Dey)6r)CLE)Ay&>>?`qbsJLO+weP0ugd!*d<#n_(@D%X)3Zl3eqYCSJc5Jp za9KPrOFZf_i$lmYbm44?wVZOru}=Y<%SP%crO$ay;j`|3p^?}wF4%HR)pwO0A)E?w zmN|uyfuRbp0~4^|Z;u^485ZT$G&4QN;DEsl z-fLlC&hZ%b;-w30gSU0-cG|!HAoYaJcgKz$oF)a%FZ_9-=(eB%(!vYp5Ss$qC&3wG zc8V3&=->%p_iY~1h8A6vq*%h8`NT*emAaSYa#{z)XkHf+0iAk=iw`(y+$=8?-~)z@ z_KRQpOzdu@j=zi6Y6&s=TZDl5$H9X~`Mn}#4PDN5p;#N^Is11V6eS*P9e71Yh8#p^ z?_HhSQvcpnDLl!j5JgV=sJmt4R*um=Fhzf61y1T1M@w9_OLJK;QS4Zo6Nq)^YK4K% zJjK)0;nu*ADsr<0TURxAofx%j6bF+(V&n~v;3WYg=y;+~!ZmRBT@OckSF}vjsR%oV zs3VNgF92lF%^V*eqKT;yx*b6#PY;Y8_F4gw&ME8-WUajJK0x({`aVKq9w~+xe!dXzL14MH(C7d4#CJ|mTXgHBFq|?(v z^%D?5g3E4n9A{RqK6SW@DslZ|!Ky;=m`Vs5l7^v}0~LOT;|W13Tfa4$>}8EaNA5r` zFY&s#FnEJ);Q&G*bY9)FhVL8Dk>J=gIy^+{H}uku?R)6amp(#!cOIrk9()zucmI9N z$zRp8k|~ov^p5w?+{_a1TRXOIXNM=}#1mN>U!sLzM-NH`FHe2Jxn5if*Yr3I4fWIL zC@kZ~X>NX=-z&$rcS8fv@SUAq;Xo~p&P-2SoLgA<>g??Fv)B8sJu@@szU$%3PygG0`J2DCas7t><;KmvH%(4Xc5%>(A-6)~s=fF>Tij{v7LkbX z0Jffc{>cEOFVmp|N9fowd>*6&`}feS~ov?{4#&Um#&x#9+qQKF?b*AR#e$pExdRLE^&3~27a3Cryo=qmZguHEQ86(w8i4c+ zbCY{ktcshdZ|mf@r(8!aZS0tu7*q=cuQVfb`JgmXmt;yC<0nUmiY>F2HO0?I!KzuU zH5yL4>W(tH@oo6Zo;zOq_aCag=sMnR-(RvcPe(PrdR|!gICaQHc?vLd;7NJtgUgaf z6SyVya;r|CMMBrhqJS`45UR4ees0qEd90&yCIYoHF8;1o&1a8B`I3bpYghPgzikgoqej#AhC9k;a7Lxs^ncrjzm7t+%xpf<_Ux3ylZb zot8F7>i4MKe`0G0`WM@-xirPW!~#?YycZN2xMsRKCCv|03>4YROf4&D?dtH}R`u{? z4{`F3KKdX(-if>5^3z4{`Qi6-ry2b4A9~x5g>`r!0POYZ9ApWaMJ#snV6Et{OwuR< zScb38uj`I(8C4-E_s|D6D&8yY+oMKV@}drI9?rV)?; z7=SJa$)0%nD|F%FS#}OUJow%B9Hk?R`|09^Ycw=G92U&w$QL8m(kR+WIGn!Fcvr7B zI3gZuvVC2Pa>llBhZ_R&6+l{-1DtB{pl*tazly=r{Fr5{)ZZ-~{ z={{L(bj4kKR?}-V3?9EwwK|Rq)brz$Bh3E4TsZ}7tGGHQT%^J1KdNMvlNQ_~YPJUYmWHb%h)s-lmw zlP$gH*qj_BV%o=v0I{uL#qJz2;DDsy5x??V zsT;K(y3b>`3%YGWUDm_3?sQI%POsayb-#-gY|<9elH4EUTJY4!Xe=o?U4X3my=&aI z(Nuh`QgLlv;gr)Jd*}Lp*71#8N#!zEUZqx+Mj0Jfya1ZQCR;vI9t!Is=d_bZ%t-Gi zh8a1R#a*lYUF_nTvxAeAQKdfN8lM;+q{*pfxc=917na=$q8D$y%NpMt3y@0r%;qJ`>sqDG4{AYLRq7vKX``W( zMnw1+8XTcZ)0Y^$J@Uva==}K$Ts(mi#s#d<5MI)09cTnqFqrD%?jyi7x|w1V z*GN2HCyo;^N?`5Ba><~cfw0*?E-i3_LSnTScoM)49L)bMSeUyutQ~7t?+NR|<^T*g z(V8{AOtUfzHoSMSXDgX9R>n0?{2*l7rvWfj)ovz>um^|~nuSkdIBRcIR_qp0AS-zU zRqSXBC8jP2HrF1pzI3s0!MenOEX&e8@6^;vth1nO^sZY&yLTN3Fm#L#AKp)oJp35F z{+qu!T#M`JeLwz>!{2n!!w){nuWf2-mbEALe$lbEJc3;O%S%_5v4HoALJ6E@xT3(e z6yiSO?s&I~`*_{0mRd_w;k*n?O^ux$9_>FhJ~{mOwQHB222KACP`(48?|l5_Km1Sq z)Q`LvzJB*F|KdkqGPf}I^Or7Ne)ZhUj57pn)>wrC7N>$C6XT_BRKX+rQ%`(}&Yn9> zcO5$(7K_7l^sWPRu(glQow-Q;{R6zffh%0GuX7^?FBH7{R;<9bk+5)jHBdxBqjzcS z&I-d49AH^2J3B2zRp6Vokq4N z`bHVSNu(gF~HE9YlmUM*Z2kkH1Q+ESyQJD7rl^&vT6lre@|%Pf7QTZNZIBJ3sAjEJq_ zD4jX;ymUCjb8g?Ui-ooZbn*};^8hvnqEfl!Rhc@^HXX@d7mhnt^l|$EtJ6 zpV~m?pdOrC_`<`DVR&SK?Jsd$Ijt`MN30DyHt*#79-&7NX@VCFHyoRG+WW&AB?U+; zb3LK77r-Z(twrS?PU(Mnk(nAGmQrX!a4XPB*A#vZvzIGn4Uqt^GE&B*=**aA#x-Ys zO2y~NUL!ipcq}v)Hg4P&ikC;|#PO5#%9njJJ@CN8v^5-u`|o)u0NYV|<9EC{S^xqp zFD@*R?X(p45$hYc`20K}be?VPM#o2}f1sak-t1$|NvUH*fOkt}UB7;Vp9v>_W_sfM z@JRoc=H_O;Ix|0adSKw zWy0UN5xG__m07t~W$jy6R#h*6-Po+k00P3O*gqg6ZZo1Nh&q7$=;O$b{NkYgwg`yZ zpeQOhiw^>VU?b35^;*?kU3>0JWX8T^WJbij=fB@~zVDn9S%os{D9b(F^;A}7WWJM`y-BQ zyl}U$^(tgNA+}Q?xQ>JoZ`s#2H!Dfrh)hkmz0qsCH0vV30uKZkuucK`oKOME6^WBG zT032yHPuOOH#5bOTp^EBN?GZOn6ZS+G_PZr>aDFBm9U^G#V|fy%q}T=LlJUqVK=9mWZ=4znv~VwRsCU+u$<^tXwgMFlQOafnJD0~Lnb?Av&M~yP?C_8 zpY2WrN(vr)=nHW9@)N`;JMF$peZjA%Pdp9w?>!7Jd&x_gm(Bz~RG(;~U9Ns8#E5S+)?5m`N;NPa|G%z`)wDj6yy%_M)d}J9MG^`+NE3I9~(%736yT4o9 z1V=4U$Tl!&5q+Fpy3@kQL@vHdN1QNcZo?t#kOk~3r;V{UaJx*+C$nX@!BtDkPvyq% z-&le`xpW0jZX*mWZW~HcsNE{Q;bVnsild}lBb>5%pVE*e+B(T$#pbgI9{MbtK6wZ1 z-E-J5g$O?48}5Mvhhrc;!i;T17x}fd3{}A6Qm#ZJn)v0wmJ{H<#Gj*+ANM`xwqjIM z6h}rQ) zq;z{tw|iaxLZojX&DaKPw}Eo)XR&X?+x}zjbCgkQoZn;;ljiCnJ?fYe-qqT8B9T~UxrN6}VK?i2-L z{uJg~WJv_R`F^mS!M5@~kri1&$Vp~W90iHLf8T?DM}|gB_Q2E(oRqjpnK=)SA3Y66 z4o}02U-UvEW&F=;YpacPk|`mIw&+n4lzsif}qR%nAWU z+{I6_xw%n~kN;eJe|j>PUw^z*%HNkQE?&&%^XtfAB=98}iG<_dSlaQHpZl?o+;!Jo zAARm~zw`C;*XG}xSz9|&->egbq`VRaxrc$L+v6@4yL_I_ufZ4o{&VouQ|C$AapdSB zxb3!6P$^gA+5RkKvpHkR2$=h!>wJnN7zp?XB;y4#6>yP(%MLY~JZ>gTr>s6LWled; zR)lhoh{{_!xHZbe8=3YkV=8P?Tvh;`>A-;H6en_!HadWG4C1NDj&*hsv|OVaK7Z&{ zGpoRw3<-d07jU3$IRafeX>wp0mO$hleBsBG3y%fS62XMPF6C;0LASU{T%-gkGDrag z)_j9EI4W?Vwe83(bt@{RWp-0TDC|gJA_N8FAP~ofHN3g5X69k{u1qsZEmH$1k< zW_Ihg=g`|8*Cy`}DUBZqr}Z{)?lwx@XyZL5SzGWNIn}Xl-{v-^T6z258aaIc%+d?d zMqigKq$moyYamRkL|IlkP_Ed>H?(3r z8~#bN=@50o6wUdSE|eO`e239t&w0*sW6)EB-@5xZ>HL4~Ykz?1-yeD80W$HKy5^Rh ztP9W#Em-DgI=kZMPdwu54=&*cDPoE-gBeY%xMXi)`?_IlbTS5aCrMg?D@8aEQ=twS zS9@HWq_R6vCb1#QBk+2P2|GLb1}IN@Vr(~zj!YQPJTORxGh&qkWpv6cH)+N1tD(1; zSq5g7!DRPKahGCUvT{in!UUV*tDwzTO?QDH7&->r~?)Uw9Ur*2LDjT&oudc4`!wZS%936=hc=@o38^=_e zk7{*oDF#!kaOuj$_=a-=jvhG-x7<1%Uqs32ZJ=Tp%KTt z8HJ;{k*4g0kZum4xk;GiSfk|yl5&6n%&3t@ZMAlc7d|I`FX&JvA6N&>lm><+Cw7}n zZTQ|XG@p%IDQ*D_I0KrUR32lbtwh3_R#aehrV$s|5W62q8bIVUyq?}%3P?cG0<@oF z%$e6Ik%|OfB{|Vla_u--P{ zmNA?J&Cboj(()3FjZMTLdpBt>M@PrvoA4Oq3;7sGuR}GyLHkRhq8G;qD7;zY^Pu4n zCthf1!niD2vXwoe0|Vi-mnp5%ZOl+|Fse;}H`u#FPfOZ37J3x-yOhCD2%Jza9XnRffGLEV9Bkk;@KxwOmcG40~ z0P!}#&yv=j3?%?p9HeDMz@~SIfj0C^Yd$-!ya|dqW6bkLZBrF@7$U15wOV!X0e{HZ z$L$O{O}zMXgY9a;Mm0WPOAeUbK(>R@G?YCQ@?|Q$c<{`xetJ=iPxSV z!Cb4n0vJC3wwLrMzAlM(!b;TtcdUnN50`S7@sFk)i$b6WQ*AgSFb+# zR6d`?5Pa!Grr@V4xpzxjZ#zmCIEty&!kAWH$4XrZ6axmYYy$n+5SAsF~rwuMtFI zJ}Bu7o1xJ|hoN;Y6MKL>aI-~!qn1$I@ka8|vNt!$zKy~bvqpw#iNr}CX=Xn;dMjnL zZzS(v^V@aInJ}In>ta}b&X^7yQZgVtWowNIbTde&c)KXHr731k6If8-V%h>?=cP50 zN)3R)vP1=@(pIlYB?$N$Sf~)+z)zpP70#Y}ltF-Vf(tv8l3LsNd&rJq*#aKt-rgQg zNl_#PSzBL=0ZQ3|8>u4qr3}VdUZOu}Zo-?Dao|Vbl(epn-Y>`q*tqGke!+5_fAjf| z5u3C<=UIDZp{c#`xq0eV&*0}C>o*fB<=3bCDH;Cr>Ncr{TfS9olxkbL2DGPqSc4Q# z6y>PXUJ)^vMK&ELqFDEg zzLb%Xao9OH0z+u*!&bW;{bVYX2+GK6v-#Q-1gW4s&l!1TDdcNlB)WL8s|_|i zB9*dL*S-$kU(KL2ph)z~zQl>6J*hmZX;u?#l96~|B1?WqA(h=`l963m^r zV{3Ec>_)x*NIt)IE?>&tS17EVz3Z+w^u6{~FMn1#-TCTNy6bx~tJ#5>Ye)_((gc6c z?gR9m?!5C3x8<`^{tJ zQt^DTlD(46E-#fzNn~6y5&-=TJwEUoA3d;~UHpksvHa%M)zvgu17Bo~NRjrUpQ7uv ztm1UW8^+$L1GH?mfB#+>9PEo{>?ODu1L;z!%op#_0U>KBi^vI1`asNc=AVgXwZ%X< zj6~1eV%=M0+Xd+{d|@Xb9T@`(=@V%wl^^Rl;VG1#pW9@~0&5qwT^?5ax>}a0y#}@@ zjJ)`)sIA1pF?dG12@F0Iw3`IoElX|7DQ3Z)1QjT!R}ZW?5o{rj=pljgwH+XctTxgV zSfnjb5#}Zc0uMYXtCJR{&`3tixqt>kWVi4*_xASM?MDVDv$g_w&+uFJNdAJXKUbsU zuBg>Y#7d`QP(IK%V7IqzxgXkVkbP2EmVoi+pC$mkX#rZ~S4^|UbpL)lCvSF%FWas- z>N;k6JG<-^m8k8~54X*J9Gzphug@Cxfw*X(al7la4S49xgI@88lR?O8iGSSXGwLP` zs=da%%}}Vf)wlaq=E_bg{d2Mn#wxGnl%-u3SWCV4Hm2U@WDAhho|GgA?9bXX)=IU@ zTC90jThMm!z)`B4f8zXOtcwNfJ+P}5_I+?0D1QE9fLg1UDZN8Lq|2+;%+5w6U+vt4df~r*7 zfOzqw_;MUSpIX`L8`za8Ki^u?JES2{1um=G9)Bt0(GtHIIwibrKh|Ybv@SX)|%)md=p7*-f{lu>Ce94Pn z+_R(ahjkb{dwFTKt5~SO-0Uo^QsDkWFG9$TgP1hZ(b1{n{fnpEeC-fxWmI5U1LhK^JM| z6)#{*V7e0y9y|i4Pu&btQxl|tU0Pm+Yggu=zPZV)tGR%hqzKuZ!&Mx?mXfdvDz0%%9s_U8I2N!#@(b2N2WbZ; z+L&eY+LcP4GQUShc9Yr90wkMfEs=T#G>U#v7;pUM&VeDSq{S#aAvrhW&u>c-H-;e#Nhz&$_jYnT7!O+4f<1!}u)#sMUr zVkii_R=_~k=3Qz+kZJ>`$f}NwOp@kzWo>~X)r=$}1><9TX_aPaX~tVga7IFFNc8w? zYPXA@3)yEpU(Dy;l_dFXh(rd&;Pu2!w?b!UnvM$=Yhb(^J_bK8SSL>v@ZeZCV$c9hv%go0{=4d`A2tXaA{K;{zY~qm$#~6R%lc$-nA>`_CNe?Ceyy zE%EuGYt`~b45*)~)hhRH)awuBOSz{qnVE(7^-++XM8+i}0no{~e*eGoo&Vo6qNaM+ z+}!N9S1P5n-+1O4qBPioE#Md<4#rm+Y*;?JjSn9>4ku5Zih=YbE&VSqWnv&b8{b^E zOwkG!rFe}|QhpIdo-u@F7-GsXQBWotN^W|VrABsIyX;k}n#G^tRj(z6A0S;ZfocLX zECZne15Wv128T4$!Yncq9fckvDmu$n=l~o=E;Vg}glR@YHaj4YZR<&F!G%8|2^`=F z0?X#OrbMvKS`raw!EccAWa^5|H_A#pOo@f2)-E)<;0+OfV`}Ug(Y>wQ+_m2+rTyC9Q=?1tv=GbRs(J3#+9%S+myvUHKL0JJ% zZSoj^Pkr{!;`3*VZ`K|Oh9>4H;wACd08g)Lw-+0;fi+LGpt%wv=vDlK7I3)6=)Zi(l{x0=kbp_8>g;=ogKA zDt;(Nwqe>1{sW6b@G+A9Bj=V({+u0Blhg|**iCG&44YnYhC3IKO;$9S8-m+zc_!R^ z`sp;uLx8)uGzVuM`Em@5H(_Y!2!TA3V8owGG%Aw0ud%^Wj0T(XLT|!lw7Cel(Y)6` zu+xC#U1Kn^YdoHe4wJDL-;*&@YibZRsUA(24#c`*DGRYlCfg=_B7>tlU6K(BEdHmuRBe80+^rKzNuT=X7&G;5VUhOgfyk6hXF$h)J+$yZBEWmOMgo)+l z2`|3S1N#rhlZ0KcfA3Lv#VcM0AN0y0ScT^^y2!V#{w58JCO%KqupW|2W+J>;LVAb8`#77z3a?s?{pd zL$>t8kL2=}DMgPc6}EEo#vIY3M~=hv^fXLPj>k8VG%PQ#!QAX3RAbOU<~Ih24!k-b zZkS||UjXGwhn%&FH!8!72JsEjXrCz$8rhy!%iee-13F?*Eip^7~cA~-ceGqvAIFZp}jl$;v0IuX(|g${xdH3x}*c`vDYr{3;{O+5d^*n!13p} z+&Q&p9}Mr>)n-gx%dA2+mt&oJ%eDwcY$B6w#AR)aeu`p%-?w9sBKlnGhm-rbbP@%h z{LDvbJM^}+2&=I~3CBJo;qbMWuub*Z&YXH|xdo2f!tJb#LwPZU4ybq@x3>Cj*JuZx zPTZW=XiR$K;WJM4tKbGeU$rsXyy)WqD#s*XAyhi7%oOmqz^g*);NtC~RA4kk1E3(V^CVpnsSqhGU}> zq*+D)jgkd4o|(z5nQ%&DAO614^_vN;RFu;(22*`*5`?@)MC}S|B%wo!MUbs;&t8sf z-aJqF_?f{ZByl>Btp3Pr;q_BWPsHbd*PoWjt=8pAsa`5)7jn7mxwW>NLOf?5rC?-{2ErGSXHu{x!4KT-I$>JqP=240>5~j-hzV=e3Gpn~s}c)*(>&1I*Zp#PqveJ!{bFLt<#R zUFCI^M-6o{2gxS*`8d}B-{Ms*Se$wroD5DXkVF?{ZxVw%rQ?*omT^UFyer8JxJq_h zf(r7x7|2E;DH1YU#{TjC2U>qX!JW>uIiVUTw8X~uPdvO_Sh)BNwA z;|YT9kLLQ35oM#s4hTiRV`ETo(A-f0(Q8j`tP^jSrBbMeR8hA2`RRqNjM+Z<9ePv_ zR|w5vihj?E@?#T1%+FUYc$NkgP67eyb^$ACt~44dtDK&n=i$%n-|OnyA2*PVCdB@a zs57I0SVH>?_$NFz&kBsyJZ%Rsl27(7+UaHU*zy$1SM#OjT0Flwf4(K5k?}Kb{S_!O z8pu|}n*DA+|ylcLvweK37K^{KLXT;BXkEwUS0iK&iggv1j2TvTeDG;Wp zu1FSzlBh*+RhU36ZZ!y2s|YeN1!+?fXM|~fLj7d4R)T+pP!KX+Q=kB>(bl$(;L_jS zF=Q=Wr*T0xccnyCrK{CAEH`tW1D>?2c{{qBosEplo^^{8eO+B#9&|sm%y>e#Uxy6{ zR?94EKbO8gUuifAqO>};ZY$Rf(voD?)r~GAtL(&o^RIcheE!{$yPg}90$!1NN=6=X zzds*ed}ffl&)1JKT54)*bM0;IXh(j^{%zQX!uV;95@>KGt5*JxZ;uA-tZ+n%JeF&^ ztxa50Upq3;b&IvMhHM$sY>Ep3ylBb>6@79lJdu#_{sv|@RTRa^U9!l{ejPu=4oXaT z3-0RWr$JfUugSWr^@WVFw;{Jd7CH`H^)ssKc3{4A)JW;(Pr;Lj;` z&M89NS}a+%Q5NS$1>@MueZQ2{0y_jXP&79LVYkjxY-w~nAI8qQN^ssNCX9o$pE0)Y z2>~=t75r7#Psa8D(f;Cp9~~${R$H+{@bI#@_3GLqrjxWq-kV)$ z39+%Z{_)iT5A`0tJHGVrD8Rq{@k|t0$%ZWj7nZA*Y)BGqS1_F{{jk@{ziKX3Gy_+9 zk3(LsWhF`yP1SjKN1NV#W{yLg6#?qVMNdC9nDoZul|81tO(B7!!F3Br_&Nw1a&hN?m!jEov|v#WWz6_ zaH9z?oRA^xn@Ce8K3IuGbEu~3+RsB8|HgL9XWLcPJm!WNH-Pr?-AV1QADGxt#ej#4 zwMlXy_KV=A@XD>R5nd=wYwFUW z8BeznP4pv?YsY8cIYzTwuX<7D_LlsmFNF?!ceUQC0$P&9cehu6UXqD{X@skeszrwO zKt8|MVgV+_*rM4qLz|{To1h1SMHVleAsQoaS9N^TvHtew5SLmEdHu@Yd`o=y|W(}Si>8rLv1-87w#5la0%6R=P%+Yah9{>xt8Jh zv(xjKzB5#h&rM${D=}#OKG9BtEF%ONb0a4!Qm7vXES4DoIotX;ID-|tMoF8f;E6H- z;|zANdu=Bch0MniKIm|oFGhpOU!Oz`^XW?$Ctw#>h=Fz_D}fRn1U>>HortDE)K9H~ z(gX2~woD9jS3N+2-H76j5>c;~u5MmX+*OYc;qD(i7b8kH?+87RT~>hFF2_J0;-BUd zn#Zr^dh^T~6h9r!XQ#(q+Sj-=AL_~J$-a}G+ZBkYJ8r!;R`4T_29=7#$a?WV;fXPC zp%Zl$`yd4T9s~-x@7u4f$inVjQn>8~oi{3X2k^5?bI>mE8ipL2MPoR)qd)MRL)}p9 zdQ=6nQivOUDWLDo`IIB=;-cH2NbYd&!>A9*S~T zMJxF|QjGqxDlI$po(VFts>Woxdkf!R2O>_JgBjI;qShMIe!PwNFDz#J_p#6ZFmF&% zC0Vj$ce5*8r_qqTc=B>H^0hnb|Ge*ibM_?EI+E-)#r{^20NRQ<<+rrFr22dfZ>IYU zuWMP}&P#1tOlTTL)M>``I0?3~QU7m(XvYO!YaAAZo>^Z1?tERv`#A%}<>BgVl|tEC zdTS2CO%2sPslU_|XmM#qJgp??hGbBu`F)rsr}aWjBprf)({OJ$xC%4CfoqI6HH|I# zTv!@?HFXFLag1n)S}`FNh?NMJo`%I`{B5oyg#rfbro$m(pGMaKqE39GHKBWC2dp!JG3KY-Dv_;$8rkmne;^~u&@=kJ;j!jL-dc+Fj|rIBc$6q zZ+ZAU*x7RIzRkQN;jGp#fEY%msU>g_hCNb=Y3l10fq}*JW^HzbBdA#Z5b!vKv9(IExrPVBh)SQ3lmS`@Cl$j}ygI-vW( z`RHcQ8d*dv_M6aAsj~+mE8?UQa#!$b%C=xz-IGD~>*`%2*Z;^xx8R1KYCXR9!Cx$Z z==}E_j`q$b38#8YR{D`n4d!0A_f06^QpSe>jv}A?_m_Tagc&KJ06XYKR1Z~#(ke;g z=Gnpy*vX6#UXOm};}d*zeItypwnAo_1!9fUw8@wPt_OmBfm1HtJ)cRtF!fxq2T(xn14IRzYV$A^pw2rE(RPDG9_U9BjO1&S)S%BEs;%bR2AHkll!}Ig`AyL1p zNUuge20taFFG#l`J-w~?rx)bTsDMsuPiGp?=?c59!P>Rwg8r_QAKC!Vs1`Qd|C=nj zhZR2uZ5(5t{{nq8JH8xkACI}r)YbicC>tBZXpi=*x!2`+HLE8FWCx91rBKD!aD?@` zolzBXxDmsVh=ahPU-}lex0r=mAfjdISd?t%?`FmOpP?`?miJO>R4hwi z(R7pk3S(y|o=~x!(aL5-p+0? zmle^Z1Or5#r;`FN;|gw7{05|;`96xq`DrhCYaF-2_>~2OT3nbc*~b7yMSF1ltO-)V zm}V2{4}B%|C+E09Yt2eg#jY)>T~9M+m-d%kQ?o~-kpCXRqw7lo5{D8|V@Vr_vJ<{u z$eQBRt7h$d{WcH#&-T^VW4JDXu30`nJRXuu8^J$aI7bN8IS6{cn=&?W3DgN{r6e!M zZ&)A?L{6HBk!iKdqV%B)w4+K7c%A06f^Ks^^X0Se7NMPRdspy_ojhlKd_o=uv6IAa z#lEFyCAq>(SZ(Fax<_qQ$AZ7^4dSM|TT{=aZ@1theXxZq(VF%ax+9K>@V@Kuro7zg z$UVeC7Wxv8@*9|u^({n5s}Y21e84_1=?;z)I?ujq1g7qMcbhDR{r;LSgm~mt5mx*<@3DO?^X;wDM_fKuJu*y&8L|StOdft0fV60)D#T?g>0oEj4NXjPrb@~_fzG- z@qCfN@pYDz+sA|Wa-#>@+ydLs$|)3t1`lLmaBy&DDdBk1VgRKy!`E);oAz%Q^HPwi zX;UUx7-IB70X|Q?z@1tf`DsxEUCf%b5mFOem4c?qbrWb1OkKj>aD~GJ*!drHO0bQ@ zG-G$~=+VeOWFc|3IYeS8izdB)A9D|F z5f1|#Ccl0zhzRCJJ6!Wr5Dl9><^L6%UE6~6ewOQ7edSg=HeY6=K#U}_w2>VM^g7+X z*0(ksIB0I-m2?V~SSe>XU2KjSfNlvA)yp4^#Y+Fj+2?M)X5pH$q-QW=3w?V^{xZ((hFFNW?|MV zeZZymj+SjC2tLh1lQ$ujR~P>Q*{*j|?S}vAig))%Ft>G{nVlUj>A>4?=Gxa3Zpiv= zZY}}mCo;syRFl@)ZJFxq5S< zuqPo8SXS0CR#YcYmccL6C53=Hm;9gp^k;0_cktZAn~GduX;!hhLsCuiyobwT+Fi57 z%7WwAjYrM^W`ofaVqF6RKMI5Kzm+R=n#6xY{R^9-poz1+EuEbeSp>iMdiJ5GJ_60< zpWO|wj@jQ;xxfTCapgS2nnGc3or)L zv0?)ip-FATW8F2N!>klo3^k1LWM~!cXF1)O;CihvrTzBR7DWx=ZEXuOI5un|2-+Mj zvSY1O)|??Vs0unm(0L#N*;rutrjBqEh|P*8yWu=O29(xG>0<(_#VhdTwzaD?Sz}UV9dO8uAaT$-E(BOl&149-z?sYifQg`ovd=Y#h}#V z0nco1u*u>H)dnkEAXp8tA|Q4w?kjfK$K)eP@X4L3m6{^DPcb&F_w$gI8E!I7n$gr% zIy(6D8@(?4P!)W?6FR}DgJ)W=v~KUye1R#zE>PG0uQyelAf@H;x!%1E1qI>}1*sG2 z>Y0H}rDM;{>r_TfqsJrW%Zxw`39zsxG4t?1dY3+r1bD(xQBz3=1tt<3ryTqXrNtV; zp_!Sa7cN$&6zCe1TVJ=WrCh8!wq*1=uai$?7g4Q|8j>Smr)$dYn{V0^(IN7M7qR7K zzDbf#F*+TWt;$G`*XX@VY-%6U5B}3|%QxwTkro9(KOt3bDi@egmS=?~pX@uIZZ}=hy9QA}&$P4jBkX?mNpW-BSWUr7_J2 zb7sZ+ui%)W1dxG?BjB)#XuB8*f4b75F{2;Q2P`m)GbnTj4;WGJ)tK8%G&EIRa<0wY z&CCbR;mY#ie|4XRsf`1?e)ZSyuX5`eryTRQ)3SO*yka&*<1J7WxGH!KeMqneJbK4K z#p(z`#-+{Wa3+#psv4%bA34~xAJ`fgA8Y-{AKV;tMvPj48=A$@3_vujSfKsDC2ya% z$0R|JztoG8rA>|`*~1dgW5q3`?;XKC#&>I;G6t_mVRd!;JtFJ{H!L}FW>HvZ!pzDl zWBVjyj*F+0pMvkG9-Y#ij&EC8{dYz@&a+p;Zo09EB_r zNKCxqx-r4-Ax0$tbGE9t#I==1lreE`gX*Ut*&;&U2i%JLb!0(>Vj|13~U#-Bz z&OP+pH@49eHmpCk_RA!>6H0eezkNnz$Jm(p_>fO>y^<+#!jXwW7N4XGm-u5TTVSSO0G`|1Y@CTsjwdDs!qCx0kj@t}YocMbly zA?QcAW%PPAF9gNspkFWV{rn_Lo=`JRaS|;^7msW0QqjIe`J+4!K^)Cq({yVwn>|4~ z_6MU@v~?awXkC$qHiq?#E3@&edPeNnn$|H_Mc)k0Q<9vsKZtvq) zxmfLJnzK+{{jUy&Zoe3-`5@Y2`#--KcQb^7jXo_n1hM=H{k#2<FH@uFmzo12W;h<0Rk>hvYB=6ERlDKr;LLGM#aOwX97*uEJjI!9kaIcqCXF3AXqcNb8B7 zts8?usTO2m<(cV445KKv#A_27tQ~UlHhxEQ{MmpdpYNuA0gr}GmGC>E@*t&*ZdUo* zmV$|*Pl-`WbY6&F$wXKL9pcFTI1!cs)m%hJ?632>f|9y{EIPWPUjRCCvcm3{@EW|e zbp2+(ItO^;J?(Uo0%VQ>Q=Kikpu4>vlsQ&T$jSDbGVkax0zJ4Z#(RCo0zFbLm%DWC(hsk$4r6##()W#4 zzUD<+JvhCe!5ksUe3+Ii8OpYC4wFBA?-dsEdC_AkxY6rqI2{@RaNX~n9KAk*YU)h& z5&OO#aMll>&GdnpWb8^ML`#pdAT&=U#K$DV3pHwzsMcV(6=yRY->*%CI)B;P+r3?S z<$ntQ0C4D3tGgJ;R^1Ezj){wV9$H!WS54#PwTj>n)k8G${QRoOby1yp=T|xCO}k+& zo@O%ZhQwFX6dCio+0|LxQ)UHnogi~?tN{snkG0UI8L#zHc&^frJT}&Fgu5AX1 z1~q)-Z5>Lg2v#mHpMICusn7%=eUELeM)`s6vJS)*s0sbfpXq0__a(Yq^PLrd(rU+H zHZB0eL+EJlKzJbfRw&nv34Htkdd4L5nt=l|%}usu5@$v%CwCbs^0=^01$U2P3RbJ% z0d_JiAo~54>d=;?d3!OT+Rdt|&SeRjoJcxB@DTFr{CwgF4fMHfEdz(&L3buOIB9>k z&E@je%H!)n9|!y&J?6aaA{PuvjRg?fVw2qlNp2wEbp*?Czi`==eeuJ)AL3x!i;Ty_ z`*a-2ldJp`Hs`NskI%H@IDKZ5JP{dZ-Mh-PdEp|8uc@&gelA6X_rNv?Kl_H^dq&6x9-@O2%a=w#F=&>%gI$iHNxlou<^t z9ZFWE1b5X1`Fn?l8|M2fg^2{j_i4UBzIoN}3nifY45X^2YC!Vq^uW~~y1bVv144Jn zj%^3@GDK6*-(#z6dHk1&O`~$vp$6U3{nF5o4K`LP){MPf$}~G(EZto#N1~3zf3?wn z9LTub@gVow`2LsVe_tr{-mJLkd|@Y)t*7%5SzJ6ca5vR&(m?i=iCZMqGPL;Pi-^NB z6w%{+|Ddjp8$29|DAZ)cKB&w4_rO)l4wOv>NBUo#5YhZml35DTU1x_Vc#&k)O|r_E zVPS0vwd`Ba+58ykU#@Gkspd2ly~or;{MK@1dAioiN|I2ic!ow~TgsVfO=?kWIRKB- zQ%_4sw%wRz;d48c93!eGQHz1R`k$oCXHL}$_pD19262n!Z5gGSS*EO%r)#X9vgoninZI5rYV zL=%2lV{pSc3`|Uk$>0w~zYd}Sd(bb$asH)H{{9A))rlqY&3ysmi&8eX48dpu5j!KD z*0|jY3(%7W^;9|l?3PyPT#bA=C?30~=?`Rr01KfHEmbn-n=XT}m(CLnOUPgVl-(F9 zS*S>_F5{AMuU42t+W{`i?q-mT8T@@)*JE$-l8tMQq4zd#0cjh1^Qj8B#_#q zTDx@eB=prqt9p6=K&^BvsJXUWcR$3UUG^=bm-eUxt@E86^T2sAbS!VF;^E**?p_!dF$Fe_4^l%_*Bi!2gyh1%fMUcg0;|T4&J(pTYZjZnxuC ze|&AV#k0Mg-H*00NzRmknQgaBD;+I(h4tC3EqLJI5}dS9YIxHvFuSt?e{sRn>iUMq z0KH(+1{#fHP<0|9rcI$OU(+8e!Ym;gnvkTsTY}TP<`eIymu{<=x z`rGXQ@*s&X==%rs-ZWqC2ndRycS6(xZx#eHQUQ1x+3w%M1daMC_FAP7$JbjUkB6+C z!AkTn>3@KiFTBsOT%Xm2^2!TsD5swMIY5sCb?0GdZPDeWtj6@f`MNHG+=P3v*!fB! zjjcD>(ArUI!qckPH*%oZq}ugm+{+z_v?0~-^C0>Xcpa0VdisF?KRC1p#U-jldMEOQzm2 z-y|@^)inq+_<2+RG+jc7%Egj`la&+vCdR`Cm=(k3U_X{j`m72~gGqEW^Q zce|Un^qzCKfa4h*$k}-azbk;Ih7Dow(#KeigZ*B7Qjn7azLKR-mIqE6Vpo>elAY+D z@anMd19bn>ifmj0xCktzPy>@qLeSG@XHhfq?eizZ@jQtIvU7LPX6Xb0o=JCFaLZOw z@GCBmD0>3X{rH|eYQy)EgWJBHHx!>e_}t)^f6LIcXZu$U{u9p{PsT4l8|_^i|DNUG zfHZq3V>dJ}Q`T@_o~RXjj3|3ov01M;86Y7c4525LzdkfVyC>;;{{DQipH{o3%mDXO zumQ-+boGw5$`oS-AO8S7ovlnt^))RLr_qwxcu?XqwGrx>uY=z81Z!Gw(PnIcO04*6WqOD;q zRw@)=??jIy+CjD;=BpKYzKd6DX~xqy$3KFnvyoM-HcQL-0kp#SVIbe@{J)M>nIOg8 zEj_&9cNVKT^8VfVz2g5(PWX4rp+fzKgXTn)djzA#n7p#597^kv4)&geCqx-T$jJ2H zKsvUx-NE`KX5W2?7{!?W!$X{^D%0KZBds#^O3pd5ZX@Nv%#spO@(~!a8W0Us4c)Bd zSQ6#gm>!7?=>AWPU@%*n!owIWFv;?NcA8c}#($*lR8?u_altQ2V!Qfp_Dt@e?1&0& z1zNStu{^^qW98?e!1N{*;K5=FIK`4u5p1TTQjaVj1k3Xe3p1rO=-;UIu9U2!`V< zIoiQj+NstASJ-(09IWG}a4&a@Ikcn4_qV;lFa1Xo*yV@d8uGn5sJCklbdW68r>{K5 zw=3(971e!I0x$<#MA#M}f(oWy-tL2j9s%p`R8-IX+XCLO%;=T;P3TZi(1wx-C9ytK z6mR17NahQXNhrgR?2h;eP@NSa^MC`)iKvzjr!qFn-$Z?tSPZm>ua&vPjjLyA3wX( z+degN&-HfzHl~%bZtg|%|4K2}!PXoZ5+(p6N5 z&>Hp>?924ggnj5L)g~N|_m~EN&ZB!C2u1P4LP!S(g2j<5spG#kBHJfI;sAm>yJXNBhN2jhJ?vqwUh#%V}Zc7Pv z>@nPEO5Sd6e$?Th^2hkU4#&lGKmJPpLwSP+HPiB2A(+7q-0G$}db1bJZ$;9H<-OeU zY?OC~h zGQ@RoA+Wv9w$OBe#AEezyz_D-v@B7JU?w}8p6_Qp!i|rW>&5rKuU4w%+Fi)~DvHI1 zIJ&0_;dnOVI_A-twv~FfmM&(#K`bT`*y>{D=7uP|ySU6)g$B+{AzdmT`!fUFEEO=x zw8dmZWIe)31gzs_YQS|zFSJQ{nLx4eWdxjrB2QQjYysN5 z#EJ!XUX1|4S4MhW`I_PX+D>AhVqfj#)O2^ACOu89#MA;s`*Oq| zk!VoW7tAu+< znubD1+ms};@K!rn-ln-;y55uOrVSI9&~o&b?kZLpVEvgN>QaKBkUG{hv6p05Q_iP} z0qqEKSB;CU7p!HHAqjMi8f>;|E!N~lb+^=n1}aYXG>-#)fp&m*|ABTuNOqW=dEyLz z=TkHVJs0s=G?v`N64uO99Av(L%1wPRi0)~F-dhk#KQc}<<9 zFyn~&A-_kB+BjwFL7YY3g#PnQes`d9#E;G2JJ@?B#NRMhaeWKm8!He~UIs(I!W1fk zb}lY2$*S*XcVXmW6#KWkpkviNoqs@06wV6GLJM>WBy-MNOHlOWwYC~(xQ?es1b*yb zUQ2dbLqOe1fGekZy%W+7`Kuszf%&6czj99VvS4Dq= z7$nMg$xW3{S;hfV?W!2KTtWeDqV>14=77&$FJRRuSM6?Z)6$jI+y_2?AT3Z~m}|-N zHtzT5%E_7eV@>E=n?-76O7i^-N}R)jqrfOjyS|x7;m?EEcm*IRbcQ2E99Cbi=L+5( zB<$s$ph=e?MzTtJi-#L77)V(i!NV?Ov*rp{XaqD?`h#l>F(N!htYgRGdC&cv^s6Xm zPSZu-4MRH&IpaFwp_CG|4=k0Y0ZM$#4M{w%Pu>azmp0Juz~muEj<@Kx-&CZ-UC2hX zNo!gmibNVI@tG72p2fmR0>^3DZqA6TWiQhtlA7(Um6RP{XV%hw-o)GM-56y}9CtQs zk)0B~NIb`8dRgG@9b5(w8vqUcP5Mx0V<#sQQwL&t|;|wTWRg zNRNb*d$BT$pDy^%vV8u3&7k}FOTqX`+Z0##3-#c|+PAk;naYhzC!` z8Ww(&kS_1wr01>PgrFj{s9eiyKiBSRSNmZO-{y0?zS+O2vi7;|i;w>nz7GqE2Nal1 znEy8}0LjYaxIW)NTkEgum&qxH&(HVu^(lb1+FCzUC9GR05-0fbGHGLt25sfa&~oG1 z0rlSQ9ym)n9%-J-*}NK%`q?C$8sJhSU^roGjH4CH%3?Y>E3FJ&Z@b%+(N7_(-ZWU4 zP!tgTW3+R0vH|ppDxTLEinoas#6+n`!<2#XA3f_ld}PtW<|noA%4ZG*K2CL=xy*`1 zKBA@!0JoDOwl@QkM@$12{VHd~*DH20tb2r88zDS(>@Ym@ANu?u1T`Pw-@lBq+GzX` zqm7%CLuM2Zy*l!*pV;5jBk^x!(4d2;2nd%U*xjeaw<-?rgxpcT#3oFhVdXtrWl97SJm+^AoY3j?aXKuIn3WX`BbQ41haRUaZ!fRC z#m9wRot!UvT+UkO&?-o_gSm=a)u?}z37TqA*U(LDH zu(H+dB4JvK428{|YnF2l5UTiu874F6kdYP`87Nb=7>d(m)Z~#KqB7oGi7vhAPeq`! ziyc`H(7xbj9vfs#jcf7}?6pWme=nhD44BcAFosl()t$wGUIJ4x#Z9d_I-bsUzE6=p zj2}wn+JYSbHGKumqyHZ8m=p+b%Z$2vEEVcHkn}q(?YW7hp6(Io$l+;j0~E_O>W{){ z9m!~LUtspuD#!6#fuq1|u+?J&6V1h+c2^^s0ZSp38Wx65R*~t#>>v^df{>O{5QKun zETahtmaT&bUs{z$TAX0|`Bt1ww0JD71yv@g#;Ys&BfB&B2&cNJvV-;Bq-;m1jcb_z zz;FnrmxQqRofj&&4egUs^RTwoAKGCKFmniP6|6tj<_)O3GCnxc?JA5&iZZ$wDpP^j z_~vvCM+?>KI%sAE!U^s)8@ujYLv34vw`n-+tX>8Ajld+Bm!ogU<%!a4qMRr(_s5}; z7o5(oCx-xskLHv9!gxUi&v_=Fz35$)+;@!5BL*Qz#f~fYD66Dl8NNt3aUHuu?A9N% z#!4H5u;`#CsR`7#EJc=rskw*uWt5BwShz>zTU!FN3D-dhb57jOr&PS^6B8~l*)Xu7ucl;15=$H(tma5DLAK+iW4SX%lAX z@ZDh6)s><-cT6Sl#XF;uTyq(YaOvco6bz|VdNWR=@Y$x`BrOS!_|lU))he*y@$r}5 zj*i~oU7}ZV=#Q3(D(#kt;)vCxfGV;7Km;E*au!sogZ4Y%&df#Z_bTM`3Jl=gP0C0K zyqPh3aF{f2gr4oC)*2+8Ae4)esEEB|%_D8Nq+x8FVbGy)Kabjp@wv>D#;{c;+oFu0}c;`P#Xp$JF{CDx#oG8RFQH2AAq~MT*5GDOe32GIj zp={E$KtVO1okSU8eHOl0nb7vrg%*N^oiz{7S4$Hy#y0nu0)jqTi6&MmOI-{~agboW z2yJA%yc76%StPx@Mpt-wmN z;g!4-@(@fB(+sDC!=lMU7%rYK_#@l`*pSbPx<+#W1O31aQ+d5g%lP#2eSs3f6L$5#N8x8MpP5 zHB>*KPIbi$b$2!clnX&@)+o7O2F2W+F`T^y-RtCHY<-AG__nvYz~9{wdUt!7C#MX8 zsy+4t&`5bk(mkZX+0ZGfaRyU^%9y=E zRa7ec510H;V`5|8c_uH^N%Z}6(c}Fh`DJYHc_t}4bUy>6%ifUm_Cj$m&rWVGlGgDm z3-R;?M5`j?G?zsfJ6RzC{f!~06|zHup`Qn;TXKMx$LE1i_%zZat!R-3mg$TL4ulC9 zxk>_AX{id768RXtO6dT!Tp`TdX@;eMUVl3u{!B!cM5I2bAiW>~S=!*(2;z)^x_Uo>;P^l))6nm`^i6vFZ~)*?u4y zft;OXi-9d$rM>TEU6a8QFEG}Npkx=C3mxL#!&(#_huAtI`T< zSSWVRw8(7~9csE*O9Ip>2Xucd!OBk1InD_9!%N0*|D^vOK>nLQk~$7~dU;OqCngUU zF&rp>_FZ3FGMi9mJ_0?WEUQ#NRmtI`MF|{}*tWJ6t=1;%ko8+1XPQb+`FGnzD zr+?Di$F!_t{hO5u=Gp_b`UJO}_#TEes>EbfnJQ<*%9H%VbZjKhv0kML_pqdW)Ms6N zyQ=N}&$vyu9Zft-cF4FsG2s77_iGwqWC%H~!BgwU^$t(APGy&$lhYlb?eg7Tt^+2W zHYv*=L!3xXRsRq#m|G!FxNaFAJQ=8D8n`pz>I(#iHZ-h@*Ir@rmw3ZRq3@I2a2Omp*E z5&v(HV#m)bS_`T8=zBPb4rQ0v+R&JruYZ!j3T^iE1v7qb>L5~Ic$oU(3l=3;}Yld$n*t5 zB=BL@h7GJ5@p%GqnO4S_WNBIXbN<-=998Yh&QT$-3qL19$(oI^z*I z_Q~=iLR|KiiEzf z{#Zox&~RZw4V;)`z3)Op+`cxWln>a^cm&1X(NmmDJiK_32S%LrHae(t-`TAN!W-(O zN3ykXSE8R(j3_hkn>&PrRQ@HsBlU;ptHJnAq(9tc)7+(bj3yHU)GVPONuAAQ!Kj67~1GxjpsP<47sya!ZTT z^S!$ZlNtm?V>5{`8Wdr`fJN&b5lUNwYj|aGw_~aKfm6F!#)+Xb)7b@E!l+F0g12HI zvDCn}q8F)hRK>jL?@=6#}K4~ zaYyyICcp_g7*XuIz12j}4v#GEdg-1S7(WM7>m~2C>i( zkIPoCqmn`}$hloBRAt%Re)yfwOSKN*!_Hqa2vOPS68i<06+!8WcRtCmm<_i_GAxtk zD>85W@1pg8di)tW?pMdx_aUpZ6ql?498xj9|3M6icN|=3h_0+a9zzeX!QFd&zP$8& zU&nVk*xNq~JUqb9)GSv7rqF@35}3f))>H?`F9IagmGg{T8liyHBNX7a7M2xfBJj!% zgfaX6{@zBivC;Cl|AZ_{uFRu#D-b^xk2#dd?^ANw7m*T0f}&^elZOfkWJ$=Ez~g9n zq*8(kGUPPG;))Vc%B<`u3|KX0MI}?o+NVDk7K<{2D&gEX9!Vf-A2P!x)V0lDOP7j- zFQCObtW-`;N3p_&wZO3@uayGwaH0vq(yy2s%-Qq##In{Vojk_}VI)*fu9SJ#$xd-T zC8{t-#;sr8YwD4T5nwz#v4q{GUO(}`vc#+Atyp(r<6?j(Lm{Ag?=sxh{V#}d{hz|t zR)%H1TJwJY1Qicg1U3a1xW!GVEBU?b$@NsqkfCLKmAHK-Mkl5Dx4#pa=gHjSV< zu~>kQ41%Lk0GYBh45w;48BtOXLFT%<%FgIKL45SeIvymz0VO7eC{vlOj1=WXQh06Z z)p0KBfWnBQk)XPkA_Mdoh#WR7-7bZ5JQZg5pM*9nBa#$ym!hRZX%a;cPT6%#-~3(Sf+}*iw{r~6 z5D*3RIPZrX-z_c?siu#%h2zNNYzv6u4hlfW;5N}-M|iuyDs@Ru#8j!-w-86aK$Otg z+TXOA7bxr`XV0{%j!7P1E*lT}&H8yZ+bzN{=Z6aJt}{=@iWHwPVj#RLe-pR?K|Y;w zT>K>^iDkKNE)2^fCJhR1I^;w=|7zh;vujRT@q%q8US);!?$0Z!rouG#f{H&alknk&N zOzc_P`iPuSCBa=*jL0PeSy2k1gJ``7J}DiQTR7(Fep2F~4ZV($Ah(hY>hQloqTl4? zx@E)rd~jiR35eE5QA-kt>k9e*}^4RIDE zxO1`ZqIGWS>ZaxjIUF~b)}c&D?H+=QE3%?AeS|09W@ptK z=3RF)5uH>A0~sRaIjNjYi5&|`p)WE;u@$j)DabO9h^fdo%4nLvX9=83$kPa`NR9U( zM>6W~lqlf)1yxM*SUpz*7yX0TIV9AhZT4tO14ji}&HJ85V8p7s%=u|k`hY&8F`GfX zE}y>(0YgJn40Ncl^R!X*1HQj#YBpjl417s|U4zp)uO8MZ&mSesJ+A-o6$5CI(|dbc z^EyNG`0|v%nKLeUi!)TaSFw#)hn${|1q;dX3d`akP&v*zqu_8|Bmm>%Ym%Fsv3uj@ z>ee6r{px%BijKVc;y7_;(eLl^bTKu^AZVV2j}IKs3Tzowex$--FE6L&OdhGvVA8F9 z9Q<>S)jInBecjy^b8puM?H`h<8f-$1t=#@0K;N{hMvxyy@R(`AQezk?a7d4Fh8dO6of3#BeuN*zePIIQp)WN?y#a8%&0 zdRv$`QuhwCji-A`FD!B4X5WQfJGuM6Le{WkaOHa?i#cmUX z2$U+LSKZensRl~jszw#D>TPw+&a{n-i4`()^1>dNBrR&Ux}5x1Y^dMFElPhS+u3t+ zJ5e_D?%1}2MJg55N^7HgRCOg38bahGv_Wjjl~=2hgWc#Zv~L;Wdbax{zquCe#S7m1 zd3;L4=RIAI`4*oDd<r{wK!x--XlkvvCA} z=k<9`;K19@$KL%*sK#9V#ds{(NFg>xbXAo6*RH>2>%MRfh@G4^4)G2m7h!JLKseHn zLA>&P-{d6!%1f>DCl)SYVrWE(^r&%Q#sN!oayod;f(G!m|1ltZJF zdrmTl2!3N0Y713!0T$b3r|}HQT9Ho()@P7KZ*pYlF%*w9TY|YTxT|eM8ViFj2BzFqlK*m|6Oi}ZQX?3uNXVsln8wBx%%ox z#Y4nI7m2$b_H&1mN!~rPaUy)}Np3?cW|tydXrn;foLyc0^FT)7&3;?W4M1lB)WdkX!ghCoGHxAe5Cx zxw2FTfiFMXSeZiH-nV*w7r?Ur4MP4N``Ft|vZw>xP#*{p2U4K^2bTRe5rUkWe%jscZ zarnpRmkW}H{e$P!WOWDu#L9exHu<4$$C})8rVB{qjijqZNQtfDP+KJwJGh+ingY1dM}`iFOW6%ywRLB~c%xyP8Gpu_T7T2?^(8Eat& zsJ;ouF(RXXHcd%$W;zVj`_N)vj4(v9|BJ{Dku*MJmt~H*UR!cBiDMfVW@r2ND~o`9 zKO_dj!ikPg=pjk^=Lfx$%bjP@_ip@+epZI>x!awXP?C=ikcIdE9twKSJYS}NcRTQA zjeW}1YrY2h2xfsv*Y<9j{5dr?3rs}VSjTGXH2ow}XS>Pbg`qB09Qg7D(l1vOtb03r zj(%|9qrnWXvNDr2k9p2KX6LxC`%E3tFeJF8`;#*xQ;r1}gC#Q&@T@_tZk~-sUoJ@S zA&#fU!obT6i{~KXJf{H`_uDbT)DLOW2lsIQbyDzUf!dwtsHh_|Bq5o|AjtJYwQzCj zWSOG<}tfvqH~SjMSanNdiy0%O|jq0NPjO_3k(dtUiILH>WMh$#gK zFRlUG!QY=>MthD%hgx zqV*8cA&rETfP^%IbjhF~jerBv3?r$OFw!A0gn)DoNJ|VO-7Vb?lG5N10@8Ko)B8O4 z7u@p$&N+MSy;r?!z3bq#D%#HB6z8$$#RlWk{V)VVx!BdEvj^LP>gAQ(Q4Se)d)gKW z7zh?FIoxQ|(g+`{1P)1}YRLTg;)5k;Z55_Ccs&EPq5;~Q>^=beTBA%8@H*$-LwG7P z^ZMIbYtulfnSfw{2>OrC?RnO@(7VO)itPE(7k0j*4^Ovtf8d0KB$Uf(_bS+8TlmOy zL3ozkKXbtBK5lmdt%>1f7eIDkj~F944km*8mr&H#cm2zLHa{%6c;lzYR_vL^9yTIVT0sXwdNC z`okp{KE&^B?}hyoGAg>!0f%{GVp?<%<5v5O9Mw z2QL-3IeK|*Y|MhRa6-P)O7^G;70uY>KkANB$YUR;BL`!o<{s`m5xx*RjA}&VEMM`{UvEi|7Wc?(M*D!Z1bkYf`?0F?` z$Ac3O*ct0rik`d+`L()XbYnMSe6%30SjnfK>A?g-n9FA`V$k9& zl|(j1QL}`$2mv((aQRG}l^qW^R(#ihL6L!f2^Po=Lh;7zyFB?Jf@kZmUix z5V5T8Lz}J(wZ;J}9|x3iPt62>d?adx%v6a{NDS@f!Y~|+$_5r>$?6}}a}^0j{rqH$ zYsR1Rb4~;^lh@7hz!U7)d;l|hrjU#~D3W@LeCQnalcwnXZ-(Il);m2!{l{n~K^kE< zGEv;9F9de%5_%*osOJY^CfJNho45X*a}^^7k{|k4r#;WTj-6URN}CF9ur1C!MBwKG zp1pnc7f<+C@&RF8x+s5l+4V~eX zbN$SLxD!p~SR6kMoL(U(-N7+SMBofiiFW<*wsl)wDsWnFRc2&i3D(2M(vjVd?Kq6} zo_qIak6q-^ormR&f_3%r;{#%!3KM8>ZY+n>2E-kzv!z#diJxc+_Olo+OiJx z>wc!(OVSl7V7K)o$7^9R~Y;<%1+F*?HpyD~*d;M;n+c5$q4>;+r5R>ZFTlONP_8{NEju+b zv+EuO*GQOG$z9wLF75r?1nMDB>}_Dw(}b~@9|L|SuJUAD`8Kro)SdnOt_^pBz*dpf zj==OkmtMG5;<;%Ju@;I++CE9kX5F~i+p&^pFcZ1_c^F_LFymZ83KVrS;}l*EFxA7) z-1ti7qaYHdv z|9M0IAmZE0)jEGn9EH%x$hC)p1?+ld!j~6Uk;Z3J!>GPBjz;b(nxrba$9v?Uo5ui=CSQ_Kdw~~mfIHhH+L_*cG$Tx`K)nZIz+P>!}K~t z&1Cj>jAT|)5`Wrq=(bXgSDgSYu>EG^e2!w9#Pw?J(V$MlyCw;W*6qw9fyq0zk9-CN zCw~`k;8&lgvY++kI6F&P`uLb*vlWJA%r&Saje}(;h4=pQC=W#Ki*!C(lGI=%@iXfG zwax!!bf5ON&3m6V?Pm+E^D8!e{d(qy!BRK#)9MN750m8e5b>(9?qTP+Q7SvgYy~ba zic}17U)}C5I7XYim^ z?s7j_w6vDc3RHSdvmz^c5T+E7z;AufNoxJvkmy0ohpOeUNHcz*1QirfTd-UGXl!rC zSxB}{JSFQg(_LkYq_sz^a0XRI9G88or2@Z zR-HYbRL-h-oZguG5O3$#3$B%B&DsbL1r``fzk=eEuk0TS4ePM8?()|U;e-QpV%gS?k8&YffhajAUz z_+o?gT5KKVvWi2a@gEXYkM-Wxg#NBBQundB`2bH}Z*MgzDQPA@9)M`9y>H$A%s5Wo zN0UEmQC?9IB~RkE_mk4|ZjM|AJj^SrHafaGR{IaLsE2r{T!&VKCeROL_I~)-`e;Lo z-!f%T5@~2k&Fv~mGPNJIV+|hW9z?paH; z54y~S=;9pVrsTO;$E~WJQqfPK7Am8Z=2&B)q`XZ_2xMcyAUowf3S8OtLTGcnr&UHV z0RX_2cthcRwj92I9Dh`&#&N;xeuT<#m0)^nSJm>Ho`NNCHjHmX$ymKPlWU4~!cD$j z1g-*fo#o$ad6!cEE4{o^z^L0aTpPs3rq6ttIX2baPq*A+-aN#81A}~4$?>>^=shh4 z39f zMKrBpkSi`-@nx?m)eq|q<BAZWY&oT+}Ms^vIyLKFfr?v=W;Bj z8`Z74_YsTN$@*z{G_oSShEp2>yj|O+@m5F&?_8-nPhBTerQF;mT{-Y)0@^iinBs$g(+bLZ$*VMQ-0<~-1zZuv`4p415DExS_00nkA)J&8a zw&)k=YZReMCf$$vC)I@Azn~r29?`?^b-*0|6K^{qtDJY$y_Tz;k*uYLiUpSiL|66w zO5IgjZN|7~#gkCuQ9}6RuP5S#uT&oq@GtvX)S1pW$X+jsPz;vZcj3R0x zs&8ks)^CVkj+gq{+)h1JMkev67IV1M@kbnN(+S*~Z|P{j9BE#uMF&4mbSJeRT_Z`G z)YM$>2jwH5nh^Y_SFd=3ozbr@cRJ8FUg}VgfEns(H}NirdM-@x&vwOF$9MBHl<{3W zacYh}po)8fVB+ham>+9nLp+#TGUM`7qad`GSO!eS6H!$pOen+CJ$H|0VUwkscij!o zniC;>4@Rf+S>N5iUtrCl=GU@Dfwx@7pblNjpEOvDltG!@TC=##gm;@|dpOfN zy6`)!r9Tbz4z%q4&}Hq-b4s@@!HoFtHC}kG;a0v0EU8){7i%&wvyWSfpmodZ+U74s zXb2&X*4A6XRVlUwfRtU#A(BJBl`2JJ{vL4!4v#LY1f|Oxm}B%U_ta^o+gec#*9kyYXO_ zj#zwRd4`|VQ&}f$w>{Q(>jy+}t8_3FvHdQ2+DpEztZZ8ag&Z}U?T?RZpEoxw8ZU)| z)lb+(^11cC-E^@9-2OU93}<6vWlbMhcPrS!d({dD0Pf}n#euz-{F*3;kw>+C{xHli z9G<3LlxW{NRg7L8fgXuW!@oGLhmNI?4nxCU%5dtWOmnFk2rz89Kx&drg&ZO~-{_nj zlsaA?50mUFVU2b&RXTadiSdu|t3!bR67%;qOQ(5+IbWvF3UL5Rfdn`EJXe=&>E6e^ z%&yHon^N!m9DxnL+f`sE7g)B?Vox-Jxo^uq_j^90!;N&6BMNV!!U|IK-r-qPp>|@{ z!v}+KtY36TZx=c~%pA#q&U6^m3Uk&Ir0?`qSWRhOxmwP5m1FjcH1N&&ySG>(xmcEM zkg(Vnh1+~W|C^Ws*!6hHq=B&vWKkL+g!>D?$^e}af>*Us%mH7|G)gbzA!I+lZ>dnQ zid{rI)v2|Z(}ZY_s`Cm{5O_&PnulcRk{bL8rZH730&nKAFF4eMZqljo zBvK!hyc88bZGA|K$^#3)wTmu0XJ*oy zdP$NlRcnqUS_e2He=~EJ3Jd>JywG~p0H!hLA0l*g(21Ll^Y!{>ju#wc`ryvBf8%4LU~oBHj;T0_CwjJDNN z*^Po*q#ePceefTS4g%%B%27j9HbcXC=1q{4gxr-58|ms@r$yZWzvp3DD7i<%q>I|O z0#Ei8hfrhy01lIh=*f;xRkhuq-BDMW5i$Dh5RVFL>}AoYi~#0!3?=D6NRB;j-OCng zdH*Q;d;f{MDgmFty#AoOQ4&LNk+mDq`!l-t5J}z_>inKbp0V(fW47e7b@ao(e;E)H z6T6x{$Dm1#??9;t*F_YJ%>6ree7`vk>f{a&sWXl|sTBN8_HT)wLI^44>b6%jAvC`@ z5l2BvEa^(}cMAy>rFRHju90K@{<5&6cjIMR*;W9+h%<3Eu4RKwU#w?upYRgHhlRnp ztds99MTv}LJ+Y-l?iVeicnn0B`79S}FK?)?U4cYhmm%!|8dZ(VfI#=`E(5?7Ccx5V zuGU!{q1)K9;1Wk^;eYN*Y;3SQj*dj-Q6*CcehA)cb9Ys(lyeJbc52(0MaE=gOtF~^^Sg??_cq< z7Qftc);{}O*RHeoiB(sX!$2cO0{{RR3i8sL002Dr??1{b*q07HxjX=1e?vi9Lfd!s z_&X;C0DywPVfj9gUw5{l>szYXk!|-EagVQ50pITh=x9lP znGM@?W&Nd(1O4Ea>d}rMqsr9X@{}j+ODJRBM5{i9Tq%zcTO?)~BJ2~&&J*9!PR!?h zh-ZQu{yaPY0F?4zJ1ywG4D3jV&sTm8TZ3`vnz3;b_z1qw+BaJq*@b-qtNTlW7m?rP zXZ!V&&TY1~HhUc{{@7d*yhL2J+2WRfEirDXTKMfHO0`>){E(MSG3KwR*tB2~wA$(v zps8rWP&iY5<9}Q_^E9dr2LQM(Fl0_JJE5o%6Jiokh_#7fD%pvNKCE9VF!I*cwQXfT z8^@S&Si!{pU_DrmizT!^+Mzn^nt0;;X+^U6pr3?}fx*T#K*`Ku%8c zB2uY#<`4G#Oic`82Rl1Ksw2}o(cOR}7;>?SrS8!l=WlU8d=-19D<$S-@FVHRJXk+b zc_}U~-l=Q-aPDi=@KhqwR;KO$!sm^YSl7{U*Bj41C8cRNxhr#Dvv?n)`CEey3-E2d ze6oHSyD!ztSdrIO|9-H2`LHMC>meF`{E+a}-+1f5wQNsV<1s5fctV?S7lT1wjH-@a8Q)(3Cw4=7f0GP3${tCg5JI63tc8Z}0MBQ_plan2#!8sl!pp$LETG4vXdY67Tb;IW8A@hn@^F1i+8<&vU$s(O+cz z&Bd&OuEWk(*esGZ2b#l%+T3=A7ZfYSOSI{qK2PlFe)Rx^cH&qV>kJU?YwQf55;p4f z+)ODG>ia8JT4+|48yXra9+Lt<)2g7I6{K#S!q4M;!zX+0etUh#8!8UC8hFF!6(nuH zRHa?Nuo=ISOs%9#FFP;&lF;%cfzvKWd2>frNuxnpMn*%Txsp5Wrx;3j426{Iks@TI z!ru~vz!panbG^C!5^;$%9W|D=J=x)jw>+QxO6_bNlObmT%UcEk(EQ6~KFif&m~iCM z-Z&bg!pg=Z-`4Ozg*D3Nc{jI1{M7DmQZn6<4AayM-2d?KLx*}i1&$1 z%Y{9&*$Ta?peKkYTM`gKZUU33z5!sjawa8vqN%G1^#pRHWk2mkt4|$?mZJhtmWZOc zZb!28UOrQh?6p>T z)JZR>0su0M2$1^xsa-lcDK`owK9;rljy1OPx$pFJeR5J9b!x>?mv|~;J>(Au(L`3w zX1C~fJ9t39&@fe%ro#&tV7V`*&^vH+df_*YCt7 zLSF$~6LwxE`ea)|H>e64qgx5{B9gsdWAv4(778}if<;6`Y8unDeivUckK=4&!h76Q zDcm7$AOfWCG}8MbvE?cVzA}4*wrr7qk=43gZ9WvAa0EF|Op!%I)K@k5O0w=I@IKt{K|v&)uuKoM`nvdy*uA>)c0~YIAiIll-fu zDYbbI5s!Y8Rude;S5BFs(B4PYLacYdB@=ia0KkVOb7I3GYq8#BfY+{CaS2&Ak)nbK zWHzZRPB@L(T+R#BBTg*##06lddw_E#2Cm$lO9N0kFIeyqpo%odHUleR*MAj?gegQ# zRnWYNN?dn%?0JKYccI1f3c_n&R*3lyC@gt~=~=rdqzqH&69*Sp!xl$vuEdCdVtQS9 za7d=6nEV2uRv4@ng$oMWXmcek$_0cnYz&`!fkRF74Kax$4Pdfxla2ndz8u7!KlKVj zUs#xo2c@t4L#SA+^t~kvnY0|2ZC6YffWXh*?FDvN3m^;91^*>VsK}XB)hmcO(RHk8 z^nou^t??9G=ZYga2)2u@`tJf5*$0)-$Z^#v24QY|PZGHUdkq0#GUo(wjAZCOCmjG- z!m@|b3j5U0%yU?kz=cDwQ9I=^U+L_wnIJ-O-p)euT^QukibJeKg`Y ze&WPoG1zf0s39}wpG7TcYO)KEA;-t&1lTWO6s*8eqcqGO(FHBC9dv z24Mf0hzvRH-eQp_#vO`5LlJH=!CU&UTJm0`DAw1ldCjDa6+fOKsukV-M@31Id|Ovb znSBEOS47@(0Ngx$$a?|AcM^=)RFd*xhPGe+1e(O#3G9bXHwxbcr@ByD{Y<{$;@*1g zvKi&=pGR zng2K*+IDS^fnX}6e#F)2oY?DpTl|5wPkdKJKa7pj6qL#0^mA&e>vmkHn!O6hZruLI zaFPoESoRa{lA&`+igxo*4r0snpuu^N-wj0(ms1_%TAL;^Qk3TIN*bxSDgeG;t&L>@ z&)al6Le`TOe_XV-@&z|uT8iZIIrsjAH__8uqG*DZ?yWlbiThc-60#2NobHTATn5(Z z(#Itz{Mq@^c-}(!k>=eHdhn?DfjXyJ`byLe@xP-PmI$>@Lbb}Oa<+*&en`@!<8W@q3(C`oMt|a+p+E^ruYeb|*msmV z@O)^v_6-x`W@U~3H6c7{OtC*x-$(rKG_4h#!!DgbIeW2hqotU`%dFBhCXqMZL>7gZ zOqXnz^~j8aE8+pW``c^P-h>>jGdS>PvAaa%Abmt*eUJwoQ)&K{pcwqUjL zP2jWDfNUZ>8P>~oG(O#Rn5iqRHSAvD$V&7&DKKQaXv4ZtGM;`Zjnluf@j9FA2mANW z9?vGi#y8jv#Gh0XLo9F=n|mK0``2&{K}rXZf{B3ZM|}1fLpvv@6T|T^c-V~^ymxni zu2`z4RZ&QQ@WiH+8Jh=GuuC^1&Fp{6ImfO>*qQ1Tle*UjX5WFU^R?GSWR;#MIm>>J& ze}|BrEkbW267m>Jf4e)T<@IixtS!BW>fk+OFMTb`Ju%sX;C!x{eA))Ojga<65ji?>> ze^yXXRW(GtZp+2R)jo5uV_>inxZaMOJ2;~#O@8g)^G23iaI8_}y5?$f)ehG{mS*aG zLZXLIew%lFB6)ouP2|^ZIXTm>uBMV`&^)xM#;(9Se$hp7hXdacH}cp;2m!=ZAn>g< z5sZ$RopY8shDqxttrA_0&vJ5!#8HG8X-eV-)_3K7KwERn*eh@Z=X%b4O!!030#au) zOO1gyN$w&s8<;xq{8uRhtmy%GC!0V7s`|Y}y&g`AUpX;4`sYJQ+Q_#s1Q*IwCL#+~ zf((d%LNi}q-%mabcQt(jkWHooA%xYaHHQg2krCo#iQy?e$p-W5RE8G40Fi%nJEjiAbi%hI{M~NKA_^R}n)7Mtu%sfjMEI$0&TY3L0K$gT8 zeuI!39md_ZcbAI>Ua7Xu0{(_t^d0S}P+RDVJo&&!j4sKH(vg@FL+aKpLM2aOoG6(< z(H-}Wk8d>m^}^)B*z!JDg|VSK5Za!909C?2?R|Js3qTK=dyNt)iG>t_H1q26-VQ#+n2c$GFtq%8^Dm!}{@~ng-UvSN>Z zCY(23Q;p26W!yTT5aWiqQB$zTd}nO=R6&((jl$7wd7SHe-KX%pR1eVV3 zD=E11%Y%#XC^1+%Awc2{`u(F)p-bCV5d^_xM)$m3xFm$ws?^4k3H;hNYJ0N&( z^=m1SdR@LC(EV4GG5>XJ_l|d0^wY#<#|WR!kX!e#bibLk#KS1{^L7H&C!*rFhm&RT zr#elivtF`XADvvzdQN(19UZkI473-Wl$ROmt#47n+EHZRNNeCV+EOzql4=#Z5vNNi zOUJ#&h{V7=Fh+a3T?cL86F#{~3v80}Pc5}MfX>f*Ok)*e!}6r#s0S|cTn+uK(QLpv zfxSTq8SxLoEzYKu<01`K0xgElt-Cf$#8uNHc^QV0O4}F7KFk1VD|TF$98;BU8LJLG zUE*xt_@d6NSRcAm?(3M}bDpr6=g?_^+N_G-zbyE0hUk!+;fu)rrBIeuI3!ShP3+?* z6aat{KkWI_M^~mEyOhAbPdZ1QIP1TQEj+3a<+1-`$XZD2;M zIh}`w(FsAig>tu@H|Kd-(Nm+IX2H_nTKQ_WuhLxH0}>Us4_tOeM#f!u38_jo(C2FK z^J0i6i7Rjq6(v0{%H{9+s!>5^Y@kGsb`cwXiQk_n(RnMQ*4 z(2}JOoEWqoxG3qrC7G5~nuAjCtqpw7`Y)3{+GG)3q@b#F)9yK_bX!?HC}nXXeG`nZuK{$;+wA>8~|gDfy}!C9<)xsd{5}C^sQo!T<=B z9(PC2L+4SV_fHirnsewZc{eNfx(PV8QyQ&Uz#!_}w8FfRde4AA_bR!h)lbF?H+?85 zyd-#LF#RLt5~9D8@m#0Pj43R7S8bq+`ng@`a;fx^2oA57nw03Z)=~4ew2X~I5%aP1 zzB1!*3c>n%>x!TV14{5#5&hkuBOmz!4kU&uf`@q={`)~dB${`Ro~B`?ymN_P;XZwi zQU?v#L^KFB{)oiIi5?jXBdwvqY^)>JqqBP6@eCTKh9$dZN%#HKlzN=2VZ|}_H2rzd zzGdIS6V|khX?gLJB0zy^>*y?qKCtP#UD+kT`s)CG2{X#oCJ9ijt^<{S z8Z18U1aYH4H8;@O6J~hBOqVD=6lIGl^bk#) zE#tz<2A~?~s8IssR?ghEE*o`sJoU!um}eJ-P4B03+ssX<+=ZT2gEJw`%QVExE0ddX z=7hb5Zu|RE_WOP5yy;=ztvvQ&4kTFMMZm|`VQ#WSx;KZ?wIQR5FLj{%M^lZM8%c{4 z{Vs7AmiG`Lo9nLHk-4z{8vQzwkGpcR(s7fRj+U18e3IRYs1$ajGK!QOm-@6#BoO;!DfGWAYm1)rR2CcTTv(LL5f7d*Odf!EH8;+942A!77Nyy z=6I61!|du&^$yq@E3+nKWUk-UEQpVbipj zEii2wPR#VfV6%!80rIhsr=4x9iH(w?aI8;t_4V|%PGlur<;m^F1?C!fXOb=#3}EZ> zBw$*1cen8Q@nnJ#n#gYY0z1`YWodIW-rrJ;(hX7JF72bT+NB4%rh#3q$DFaLsVW{X zu(N`uyY&<;;D8)&!E5B4*Dke8WwrTTTyhoennE#|m%T}Dk;Zr8+PGOE&RDwH!5@0B z72i}lX@gp$g3cPdZd&49qORbIhAVi_!-(H8Q5S`t&&FW=SY!|b?i_X~OKItQ&zO3f zpItmn21bi}&T!oLU_NAXA3P`B<*v)%>#%|i&-DD;juOjvNb;uz&g(1vQ9Ryp1>T~B zurpu{DR4v%3_W6YTyOateVY_7L*WocY3>79^i!xO8r!tL#QmmaVq#j22hL0P zMV4Q_v~Qf!3(kt>#1%5c)HPxM9HtNc!B7|yat}Skjm}1fg%1hP(E$e2*FF-lMukX0 zKE4bZ8k&@vNtR!p?$YJ_W2wi?3l&9GekEb1;E?{}SzBq1V;LD2a(YGK!x?*dm-$nm zL(8iEq$JEhu26O*qxm-ja}xsYbUqTgEOUJrL}_&WE}7aPltwx(F3o1vseHQCWft&s zHb*;QC2^hkP*K$Rr9W^YUfRaikP_z9a(NK{?D35cIp`_tVCz3WzhlELEP!z&p%gq) zR+^!a__5^%i)`t;p;?R3&x~4Q4-}JB3S;r3jaJNKQzZOW3eVo;KTr)CEs^4Z;y`>I zb}(U&aap6%JUnG&^P9+oUhRDX*P;OSr#s%kR=a-G)b*i}t*v?q{V%X>x>2EbKv>;a zQX}hMuWd}l$;oNj=lcpHj+Wbo4$St}?yAIR;G;^*-0?fhLruCcx{9LTW;874jR+=n zvFbDm_7h5{OM+u9shP%lR83Q9CA)oJ*WHD%nekwrtd7{ZYiXDGsH>-w7HQCQw23BP zrkX1;=Q;c;%4hAGOc}n%afOL4OjS|QA0=J;3e)ooVOTJ5Mk2%v7Y=-PM^;XAMM$$m z%`}NjRlohIjjj*luTOwI;e(29EfWEm85y7aF2!n|8b8h8vMDQ`Gk5z1TyvsAFZQal z5m$H4MG_RN3_@*B-|^JUR-KH0(-sSm77ljKYeW)k`X>{8M9XMSq@h_Bv9!D3>? z$gcP#1C}-@nXs?|=O-+D$h(gh<*?`6-um8Y;?iwT&4^FZfSGl_o&eFq|DZ5c+J}j4 z_YivKauTQiJohEvqhZv=HnG#5j-#yDCX1g^^~o%}WCk}UZe0FDJDeIUBQpf+M2{PW zsi>N2uQ?}CK`%$1#+pbQ-L2^6efe@vIJLQcO~Z_NW;T*@Iw7GPNg`)B{xng0oQbOJ z_gKx!*;x4NzbJs9C?mpz@c5Aaerip(4#^BX8Af5RI1Nyf{tPgL@GqRu>{tF0@i`p* zmKP$^mvvvd8CEJH(?6smqz1Cpw?aQH#%_j3gYUvt4Nq)RodxBmpGHpx-AeiW0ynZ$9A5|qlj%Hf?vy> zGBrBs68+lzjqPgGyI0l!nU2s47{`y$paE#stNon@T+J=2yi;0QDjEwDRZ&r4Ymh-Q zx@6MniF$WV3bPZC=9OHInr#(j)~7;=hK7GWq{0j?q?n|)naR^)0WZ~=TD*ZwPV&OU zl$AYWr)$$g^Dfx~QFv55`BhR3x_!^Jx@i)3kbFK;c8*hhW@Se}#J17X3+1?Eoem#Zr*pg~d0;8k8kO>q$gGL@K7<^q}2 z{CIAtKCueBxw+M_pO25XNX`XtJJDkh@NBsZr3%EXhM@w4@lRJGP4D(m(DgUzbXX_@JFR4{M z(t8$L!eFO1JL1rt4DX-POS#<)RvL_*b=qa5dB8~m;d~{6EyC;N{FE7#G3NRto1oaQ z?7EDw5bUp9AXH4P9=6%SoSY}%rr7}8>hZ`_04>!`SrgBEXlRz9)d_fY-_0I&3jXp` z>b67onEJe=d*QVb{*zo9i6LFl!`uRKd`xN3z6m#C>bjJfV6XOy?7~Ot7308P&WNo=R|Yg-6tW`gFuVF%t@FjRVvJU)?K$;Cq4| zFx{aL&Y?G&COT7e;FTJ9r=u9fs(4O|;pwy4V!1CNVW*R9li@6rBAiAii7Qsaf)IjK zD)#PgbHk^4`n51)ghdjgw&w^^L1S$9u<7YBE8-bjo@c~#ZRE%l-B%H%Y9D?f%RJqS zvMV)iDf^zZxSTM>4}L!%JpCCnWle9bB*d9hI|$N_!P6eey6mYMhRRic`0ha#kK|rfmzp@Eb19`qb_8;Hu&O{op3`!zxe*ZF*Pt1KbLvfD}+3X4M=|_VFuD=*|-&wf-xs+0& z1e0VBKXk3EBc;El(A28Uhx*Uc8@oOfTA(U=tAfoFSp|L1dbJ}sf$M*d+T@#%f`O26ZI+?EsG{C{H>U5;q%j) zJ{@oQQ0@l7#Pc_q?mcN~Hy*kQkg7qh_P2Rt?;p`WPe+*c_;aFr&J>7B1(Oa~w&FN+ zHpzx!$SM_&@MPBxIv-F~ndb?59E`WU$&PW z(LGJ^cGa(U1Y(Di(Gv-S*V`-jxp5M3th2r{sFufa)O`%i?Na}QZjr%4hfrow44%8} zJqVf+WOY&#hkX3p(5UdyvArT*FPO%(GL}N)T@FOvm@m@J>e_cYLHZYw=*eoq+zb0% z>Gnq+JO2x%%ifu^M$?bKWk~|F3GF_oa-b# z*~_V_lUj-MT;x!%rrNe@--53N?Q|g7br->iXoG6MJ^ET7*0+>!I+S4 z*`}}+GPDZE$%)CB+&t49C~laP#zi!5|2AzSVFHUKlciEy;^NCIzj8P-C7Q$CAD*h;-Jg>$_2MDS2gS)0g`VD2DxVgt8mNt8 z6r(2iS=6}L4m{$9--z^^uPyY5v-gQbe--=+$(g++Ts$)RG|It-1am3<5I84UTpmHe zbgkydcWyaPei;OW>;`Oe>`i@h${8b)kCKj6`q8%~-G!Vd_+|Et!!28HGn)%)s;WFm z!N^$tb!!kI6)a6xl!MIp<2_fF?-A#>LB7N=(F~>UNJE4$Ag(mB^qcvfDlu+#qPh*3 z?-MqrvTU{56AYe5+e@w-<>bnXed{V$q|tB%ALnY)tY2%OWInH#5UQEO&TNGP4oguu zjKw{T3=poCc*46BFAGd<=LY zoL=BvfX|Qaxt)C>AqkM;5^feaf)sz0YsTv8J97?L@MoRT0(omNvPufEk+{;$EzZ&&d`zxa{Vq-id4g6 z&qBa*Wi!)hCv6gmZucs?9D56gMwx^DtM`=L-pQ$$OxV!YOphNPHuM0D(t?nmm@u%C z+Yh*Mu+?<&P*mnmw~br5bq3!Oic>kFV^7JZeB=-;eqW_oelj(sZDiDSe3_Vt^7o?l zQyea6%npd<`*sL7+633&8tq7=ZnW1#r^UJqE#Kpgx2QGcyhdwuFneE;h|l83LQ|ok zp(*J8-d{LJZ+Y>V`hO~j7D&X&;yUN_H?;f`qKa&XwXno7Rj#0N?ee%TR83_6it z-9P>~H>Bs~U`*_=x$49WjiCN@GiIK^2UxjVTa=-ibX)+ z!#dIF>n{Y#QbdSpsy_g-v6@DXjI0=(x7kENaN)2Q} z<%ICne!aRh-l*$263knXv8Ig^HMXt5y8P1D!;zDz)PwB|+;z_HOjW3y^D+3+$3FQC z%XxR@vk=4+472)8+tX$S5W~SzDWDk_9Iu2kzK^!w5vIz(mv5Fm!$BvK$IMPdxP?=_ z&yzp(E^tj`0)>@jZuwSV#gQ+SMgjd-#>r7ripyd$J|;{ANCN0`gaNsW;wa_zyF~Ql z68zx?kc`nvs7yJYYGGgt< zWr-#G%ksC;(Ce9~7QZ zUr0RUK0HQ*diYnuV;CiCl*^I7+7OzYN?paSXNRrjF7?&*_2N+7?D&Pj_%7N%+xrFy z_3rF(l3V!wJD^Ip%8=#kncm4cxcJx89NVw?JfVE&-(njosWe(p)#GnAF70J4X`!7m z$RnkkXzX&i$ev6A$}?Q2v&OCkvSgUVL;_nh{unyB%>(t_Fb@tTfWL3s4DCHUZ^M6I z8l7BmQ9j2}u(T+q$&@c6lB<2f?7lR{_WM{wqp7^yX3OT?Y}dmnx>BmPutdA}hC+jY z%Wba!Ih@JHCGF0*aI(+GkI#)hbYP7ie&p;+EBPz=LB07KSGB~{onL_0@T=$s?*<|rwFd1>eTUZl)re3sC`{umxrf>GV_lD+oQIA^lgz) zs8D#8cXcvN-CS3m{{CH;srGVF{ld;RUBfys&q!j1`S->Q*u{n*p%Zq|n3M1a zkMFK1gV7*pfUyd2$;|hzdR_@1tWE?vD?lRz6`TW~Ne7v0;4O$&h z=ruGn&b2>$_+{-a@_BN->!IG6IDv@Rt7-wD}l zO3R%-n@Val!U;H7*V$RTgjI<*CRUw61r zSB8W#vbwwbg(I4$xkl{JwV&UeDyp%(e9X#|SCJ2zr<~k~{50D0^K+CUny0ih%|Cro zq(BqZWk9;Kxe}X%7Dlk0o!w&OnnGASM_1p^e0&J^#>U2tyKYL7L_sP%85u6ZKi)|3 zAcZ9<+?7GjY>{u^oif_n5#vvqnmqE~v{yiEFVUJee@4OgKuwa&d!pVcNrYKD0Hr`M z3kGx`=9D(tGffqUCjZX-lQPjobB83Oit1^t+u8(gV;Z*TR|stLX2Tcwctw!(nife& zj0*1Gc}L%YGb-~%k;5z1mz#U>>uX9dNH)u7_?^n~LpEgsZcd9gH%;f&bHtUlLTnM<{g^!cGeYoNs9J#TWtz=@dbg!zwk4ya;VstecS*>0vb2-@V1N(F$uW#~ znxC74p-eh~^})0qexwmaSQLB?<5SU|=|B5Y2e}BmoA!$uf_9k?IOe{gi9MApI8{_rt5OHOWXl`{T*?!rIbNlSA+FJBsR z1;4Snz&oyr<(bgPN~-X$1@UbIKL2x$YHx2u7S9H!)JG9Tg|RX1J|e=mhDs3)QHym( zYOof?7w+0>Mjzcq}yuiSICH4w{9bWUzu5UpPCrc&G!vF}HH) zQXXZ|oC=?x7mfyd8wU8P3+q8D&{7meA1gFXan3X}G(aE2@4LGD*Bz@k&Q_-)?_Qhq zd2dK&?O~=t@$0+yFFa5&QSa`quFlWD*c9fT5QNp`@T?pm))#C!R+NDObyH#kNM0jQ00mzgQ<=$6?^%$@_>w zB5SoX;pD8Rzq`(GW;b8W8Z7H!6s?Eq8SpTtKK+U~kxn0GOcO-t|NLW}7A*DRz>xO7 zEmEfe0X}@PDq}PCbm=9z)p<(w2Gu52~PZC<*!i}_t zLswgEKaN9r)H|R;7vT$JW8s#1bDDd2>j=$$Vm5PqG8V`xP831W`fc}l$4<@NEN18Mr%Tc z#mQo25y%0sryn!QSqpSiHZ#xiUEXIIG$Bz%BQ@76E4ycBXEEOlg0Og6Mw!7oiW4=b zX42A#ynJn)W<Ci&*v>x$hCt+FKdlug|*9FdN-A9s7{A`+W8FvrNL! zF)`08fNiZlseOG<=%i8u{g%GR)9HB_1;O`+Ta2{ePa3n@8oWsVLQ^{vxVN{L9N#w4 zxd8nG%Zf)^I6KToOuOpW!z7jt8c-c)C$EP9F;O=uqVjHuo`Sy0}tLag0a7k^% z)#h5|Xi~{|RV)`2=)?N8DPaRw5!F-EomfYu;MIQ+;XodXH1A4R++Vk|Tr4jCP^1X_ zgF`0tLyGW$t+I1G@R|LbcA+;-P5sF9MW$k+7oR`tfbxEBE- z!V#6!=&AoBkbjKM#bbY}yt&y^QBl#FGsr~SSaN~4sX`%R^Ju!(#Kh#q-sY{acqyWg za9awUO6|wL-8ewf`|A6=RKCS|_^HJh>!Q6@)BXCsRXUw)waS)pWfna)v(k6bedTK6 z8`7|3UagZggBrffYL!Qc649{+KJ-i$zVNuXKyyShHa70AMHfWAU!4i6%{QrU_VS|j z^zqr6;B>6-=afeEvnF)S_^bl5)UEUl1_t$Gr zp4;L60of}8C$NZ?Lx)#q`b38+6hRzyM{i0WOlQS56QAREx&K6FgM9sx^tc`spYe4O z#o^5e)3-&lrH{jK^ivp#D$tRROWWX$aGg}jXWRoy*!v$}eblg|xFpW}%XxeI|Ed;d zcrtQ9L!7VzA*YYHM_fL$^o7nJB9!&}zS>t$X0n-n7*Jj&p0h?!`GF^a9nc)U%(hYX zHgWhtfS$4_fHWu%3VmJuMo(L0`XjKq4}OYG-tx%gV0T}`(z3+P@_c!sX5sgsVr}d9WDkHIGngg*cME?+csPr0*H>P7Ii89p_#Rh{p2Pmp z_FG>E9WU5(1;K;&tfW}Jh6O8%G()Ah$_I~7`({@d=KxbGaLv&6RNErBH)yM(g*QT< z&A1)-a6VAZ; zGOOvab1>>rL^O2dm>X0`W2EIx4-XF~`!w$(K#%(Rb@$dhe13|+{((pE|K$M{kkr6C z{G%{yX7=uf(*Vzk@@SQ1tx}Grj8Dblq@`1ZE?)>ueHChT_KP)5fBFSoQx~5HtJ2Y+ z-UoCPM40k0QBOKX-cA~{e9liB81~OieDJ23Q~%7HmxhRl_&5yPPEY-!&4Zi}2iE!q zV7e!>hLMwzRmT9&R(kXjpC$+0Pe(k;8a7>eS~6nu(V|vd4VYuj&bz-D)-Pf0h#*#5 z2SfmuSS!j?-AeIDNJezaTy<14JyfYT4#d>PFCh%`LlOT)9}{@8!mN@=V6{wM?B2y5 zvuFDaiqqpR_iu=P)f`h(FxE`GP%C*8&D6`NA2}VkFI5F}bpdFEH?z?uqdi!7K(E@REdEnvN(q?8^5YnG6_onIA8rCkhCd_xg_f0>z zl1b%waAgXO?J}OxD|d0tt>JBJ)tZ_#_?(`vvb~MNWtMkPI4Y+5Wflgjdf`^;bzD7y%+Kxu`gi13WYe>s>D%o6eH z&KEWey02Cv6_+pzy5lu^qXy#>L4>^(;`woKe}6w@{}sTI%+6r3d{K}d9ImQ{pRQB( zodpgKu9Zgf^!Mf3lPHB~Lx|mB_VJ@E(%%XmRxwjt1~`Jyc^V$~9{pBtrrMfM^RFDE zuwa_|)l&9Sq1?M`;6=M4VAp~Q*^`0sKKiW1>DE6cOD1br(9qGFQe>hKg~E^M=bl_f zJ6yJLKFxKQn45sgXCnWLg0H`Qr3b4$-)JGIfMWMxNxkeavM{JMJA*YqBe6eFYMh{e z@Tl1^h|(eKrzJ2<3^HRSpu0GDwBIii&&bABFjkev)onChSi;iBThq_75lpq$o*s`Z zEJ*nNgd*wK=)F1zEe&0EozCdwv<+tvSz(H$hw=TWMsda0lF9u$F^vDHX9I_Qr$Uf` zsc@W40ULsCK!6DXHIuT0ig8e$)O`8&&LKWArd* zRZC_v6b`*r)lcpin(M=l;uwK04QX=sN_%*v275@-=Oai)uBRZ10D$Q z$)q~&WGv6RSs8PIhZapN(y-+4?ewW^`roVuz=rPWFWX9tl%vmP(yiPh8hyBvEdHhS zTJ;LGNws_Q^5c~VyQ%?ooK!~_O06lylo&_*w!n4V$6=D;VckZZQVPxwgMCUDopV#H zL{WKM9AUlhoeCu-rJUlLPSC?fw3Jy$c*PXo{602%!D1zaF&%0QKlSTKSRMmjWvSkz z{QqhMNK1Ns_0_LFvT#ba*+b&~MA;qojxM6>MBka^9RsFwG;yV+IKwfPrBflIs2il9kL&N<2(*_ z+kTvp2N(lKGUqsgY(<}??==)8>6QFU##Ij=nA^rK%n!Ht6xwR%ZaU^p-sN3zgo#l_ zg-1wLer=z$xR~U!B4+w`vo=EPY;O(^3SQO(R=e>at{q-0V55S?(STs9K)L!@|mKVKgTY`7Aj;GpvBGC&%6WQn|7&8}(ld3hU(^vcl)t6^|Ze0^41*xEiN4>Q>`2x2(Pr z@4f)m${(znmm>N%rr|>l_9r=W5yyH9^ln7{-cv$-26V+;_X!w5eM^W?cRRH{nX;@NXe3L$!>tq(qzo?1=J&8?HdOtBWMhy-Q4z7#4Z0nxp z2>vwdD{g862+L3dd3}g5xVl?xsV2!a`d4^Rg4=8ytuZl(ci+WJ&*a@XiZf5&XD$;D z`0BtR8U}~e)#TZFP)gj?9i@7>~Z44i5o zaUu@~gE=VDV-t9f%M)3~XgCKsR_w?09Wd(ssBcXR<($r>TClwGwRRb2*_h#htC(e?Wl*mX_AeU2$wBtHN4K-z9Vt=cw~ETRFIlAMA?M z5AI{p+|vAT@~~R}#E>1+6RY%8uy(RJVW*i0xF4`ahL+Y%$S~;T8Ib^Bau7jRN_2XW zHonrRV1AbkHaL&F+F+CPd(q5^zT9~lfYWP`k)csFd}r|`^}hqvno&2DJa%*l`sNH zgW^YD{kL;&p_%$CPs%@k3gHdsn??WPXHns6^30*uJdbJ4@Cn`*V z_vA}M0waPjat0W0UaeYk=^!-^eSrH11}}e?ca@l9#P<{~5QU0J27)IaG6)q&!qYW~ zk6Axsc7fV;QO%zV$Ag0dXZs}iMQ=Q`ATKW!-V+lze~kbgd3go#aMJl+jq&>MtMRoF z7?2Ya185H3{!_#SDpXccf)gs7__!}E~(Qw0~ureI1Dt}}%l@K?qZ+c|yz;=D}>+=kB{(?3*A zI&FE%UPD$^1OY0|NN_=qg9>&)AFmsLEj4vj&$0Id+d{Mx3xVD%==!A}Kt+6|tFNHs zmq5}^n+Y@zo?3SQqMxk_{n;-RQR7#kwi=a@$sb4KB+d*$DMSf)9Bx#vRMY4+JBN5O zzSher~n^t(Uq5P%KzcwjRCN>Jh&tKMe>e~Wi&K!hEH`@wNIQSldPQgFi_K5YI0 z1d`}g9y20)ikVS@;Np=yjj_SW2m6C?Jw&nCu-Fa1+U{RlM+%OTgl(}D;Q-qL`k6q@ zQaR#g_P9m>6!C@Qzg?=ANXFqzSe&1iLZ|oKeeQTAfG=yNbW;fT+mi_bAYN8^Sk2>1 zQ8?oxclGsY)s_(%x?j!;PyE#oSU!ocdg2|AAOx~Q_=B>zcoz%|-J{UZSHs|bC2?mKP}4q~Q`6cV z=3lUM1#Jgr@q0pM^)Mmc4=FHB3BfKfK&^3+o5jE3!X_wiqQ*1?OCi_n=?I4_b3i zHO-TWDC=#?Ab0*hmaaP<>i>`5FwfrEGnBnImp!s&hOC?|dpjgsM)o=($;^z5lI(GI zb|}u4P2u;c@9*DxeC|D7`~7~sUe9-Yq;Uy~!m=0D#yH_%woN=*5p2(d)AbEXqR}?h zB`;eC08OyU25>193LG&QL9hDGhxMS+bV*igvsmDzg>UZCJ*y{;jQ+%z%ovw+LtwAp z|Kw!jSs6)z$L4ko_%kw~(&?8Pa40o)qrx5PtUiw*xGwo$vR{o23rLn4)NteaoS9?- zn}s221>Savmhqu1J8M46h>Op7!#^%E{U_OW4J*`p>W0La$KrtS1A{ptk;z;$KesPF z+~}V4_pA5OGIrR?MnwH5F}#wC2Gf5ff~!jl4rPR11ugF)&n}hLh@Q_U|Awxf^*>_% zH*m`+U%8rdpBTX0g(X0i5+KrbA2{9z807QUJ{-aHo#esT$FTstK$?N~e14bedvN2P z+=LYunFLaxSx_;Ot3Ug#WnN7w%#!>6%_a@Q5LsL-BdUf{C=%FLE9lk9Z!A$f4C|<~ zPxU&}-86sv|2}Gw;8tCH_waoHpi9(PC&Rn>VVA0#NS(hDnN5YZ3RgF;(cKT$jQOh) zET}!=miH2a;Lw8`rNGPr5%Rf9(*gj<~NO`A1QuM_NB&cr~X=N1$C~=h9OO?sS z20s&>bFr+Uq2r{if9wQm2|7_;Xu^qqTU$QtMAVjQ3Q8EwP0_>ij=kzhNk6`Evt83Ex8Sog$ysZI!GopEoU+Btc&vN=JWu`UWs~Z}vnb-q$@;rXytCD$R3i z7f8EnmiCj8{*di}!0L1F??{?Yy`<7*ZWB6?&*IBTPCC0|^4)Pw`Q97^c5+=g=aBYA z#Ay3i$gvp&4nN4h=$S%7f&!fYOQ6Vr9(Po z4K_N%Fc}$-R1yNNx1<5{B`wJ=A1Eja=2N}T2$dl?V*z=9~0yK;|1UP871x zm>x~_Px1Y9HFNc`8t3xMfQ)jD++9=zDej5&4fPHeY9tJDRr3zX@BirkBTW&e<6#~q zfjh{0TfF(-0jZD_Ua{}sArvGW6IaB&wE#*3~p&DtF zc8>8^a7S~SDqy;ZCwdBX34!naE$iyi-h9sj?BEHK8k#3?o*Nb_Ap>7u z#{cN`e!jj%7d4IBIPSXC4%LQ3i-|E8r71W*+HP{d7m@+Cwzi#R4rB|vI`7pRT<6|F z=WUy`c!qf5GY_{1@BbyOy0?4}*wSJF{#U9IfxF2J@73MJ%jc2Q3Ni``wFvxLpf*vY zjr+?NIReb{A4tem@;tKUKl>ldAQfnvI={CKnYXWxEt5J9&@qDx)N)^S3=9mc{G7%D z?**@2V>jOW0Jbz)`Rl)c8S-1PZBwNgq~h15zGUB%s`vgn5psb^eSNpRUHLB=W;i(B zU{RtC{ohPu`zTTTx6y$Cfko*EzaRHuk4px4`x>%uL$4~jkyf05+voz~3-o`3pZ}nG z{O$2;w)oJ+a>|1Vo3YWkCQ*f(F)m=g6KmxE_M4vliVome1p%h_&C`FXGn8&^%1iCk zEHXA!PLz8$Mr3wpBIIx^oB|Dxg-YMM$JYoBjs9oh_V2apt%>|)TaniB&2>1pd3QoW z!e3LvqHXJifVNe%{`cV#C6zUK!c@+>6iQ^oEKHvKq7c|%9URVH)&6>t-uP@6OZqMv z*;#TQRomG3pIj8Kr48ApZv5B?mX8qsEg#V-CsihhqQOHvPl|o(A6BpSi5a9HUiy)=mt-2ZRn00a`UR5kbCs}sNgc$A3!{jEoL z(B4?0-M{YlZQ`<`WNQ5WuQ(pm~OJ*LPyW*pcZ6m?wR+9ymSO8TAdUtUo}bp=3EV)&{AYX zgD$ZAr{tOCZOvA^6F^(y%Y<*Xr=dW`ZKfDOrf~B|2%O}pkaW|`zdcpt8}#L9h#EcH z_RqTS73R+4yjM@)e-$7f(L5i@Kf*Io4Oo&dV@zb|PcK?@3PT>1OEk6v?5^fVeQay{ z>x{sBx^9;1esJp(ujnuSK%=ykeq$`N>;(;&XcskEbQPuJVH$D|()KatA3cwzW<9VE zqt~=@bx=FoEjo4Aw`2x?zl}$H5fI-gpNMMwbj2<{nMW1z{|(W zs~)Yg7A6KJ3LwO^gtx3f+seyd{bOz*_3K@yn}JACF<-U8dIygiAeuP5*=JB7_JyysmGPs3fB&CwnVDyMNdD6gvDIe8 z)>?)dEEH(utqa4;b6@y5$-n5?yl`fQ_`SM-CI2KPIwun_g?O^4@^f$a`6Hj99TV$+dN*5p9}N0=dr2v~T5_!3nYiOZcmO?GSmR4I* zK$t`_E5Wc|d;4n%LDqk>!3)S`h_MaCH7xWva88ZLq=TEF4e>lBJ^?oh0 z!VSF&ICNt-7)!KH+yAJb2%8*@uW=8IebQ93^9~Ypf&0IeZj-V?FI0yd9T9j%O_TKs_vD-8e_W@%!>|m)4AKE6VB?S! zO`Agp$)!NBn9fSBQKXCEHp*7-F-|m`I;N!|ndtL?Q{P_;7Nx|_hT^Go?#PGB_;*DY zyg|wX8fG18RgepnX8n$&770DCNvmX-xcEDZ!$Xisr2G1Vt#+b^yEJm)98J zBD~iCl&u+=01U5<;<(dN{jPTJ8D;FA^jwyyda@hjrB-zx+I0~8GpUH z?K*iRE!tN83e#C0o5{&_;2QRy;Xg`D(v2-MvsmXtc}IHTURgruJb(XuZ&$0DFDX?c zhO&!fM%&`V#FVwpNjU`usw^h$?=gS-6aH_x2l>C^@&KWl#XKWhkjsZVB48Mdz?=*P zhI2^lB>U^V-D>{@V5KY^+ zE|v9cG?AW-Emn9vaWkN|_5MEFJ{}~}GlQW0_($1R@yJz~MxN-{ZT{`$#Ea&W(3OKB z0o~h`V>Wn+UX-TJ+*DqZT-F64TAKkp@6QhW$W7_o4Lw=;{5)ahy6c=9u5i9cuncXS z$3^lhB2|lbH8pkibv1Q<(V{Z6`EIhnj0VOFWDe{=q{5kO5Ne{un;FNhI zGbuAuCgPnZmP*cGnZLCO^_v@0>5_{KYZ92P%Z+u)f5k`E;_j!ycxsi@S2#bIKn|WJu)kq zPCpxE%B?h>l1QzOr(;XaBJD&-KAfGp_uqQOSix6p*`B|CGcy!}t|NJn;!@a%Du6)p zu+bRHC-u&!&cN8so#U&E`k?Q`DzdNmtklGPa45F)W!!V^u|61!w~&8kQ8)RIs4(!= zI|a$3RTlWcuQo{aIHuJEMUVhYg*P^oDF^8!a(|! zU1i6_!b=j_MAqJ>vd@VZum?^31J8X? z(Plz90fGC+cw<57w5Yku^Q`^^r>ZYjan!K{8oq8&h^X^J2l0a|iZ6AxB6imjrgn~t zRb9-V$W5apzP~Njdn*LSkSP4ghMZ^#bneQ*&!6EU%xuUYC*QWEQ`JSethp_^DF)U8 zYy%Vb>>}WvGQ=Yv9u>_d0=YMb-!p?X^=+d7m)xD0gF36~d)eVomXEhmY_#{H4@xAm z-6XgGfrZo*$oT7sHS8Mq+A<==d)UWueTJfUa(0o*xL!l?9+H<%LL8ej>d;CcI} z*HE+<76yLLnzwL>Vo>-3qCsQLed%8a59(3UJzW1D8dBUCH%8Oj(sfQRAWFM?4y#=4J^uO?@mzXpxmy3M2m0G`SC6-LPZWDI#?SicC42EwVrxL zm*m1y@K^dulPM1Qv*-HUuUbIYJb>)4S;6v{rdlFQ!KN7%cJWp;4 zaf`6h^{*(i2WT`)p7~raKeHq25r5@LobTml)zedT;xvjfe8CQH@qav7Rx-zK|A{Da z(U#pbLiJLpkI-d<<-$Y|Kih1FHQ{SLgBnw`;w2+W;qr$F3>|#dzSa)e6YVbU!&5_M zyh=+;$!`w~1|=j7*n$2 zr=Ijl;ReYuibW2Lcz3a@`#ByBXpX^q77zUv{v#Xe5&K*gmqm`*5em#pgi`o@;tfL! z9E5(|!HY4jBr$zn($NtvJZi7p^MdFe?&L&+y1eyCvRtl6?@d3>L~}gZ=nLwF z?JYVQ#tfIH8mozo#b7Xb;LLR!cRCwwW{@?AB0NCpNLA+;Vkyq>8$K&RB)2j@^OKDG z-Mbw?*T4fpxUJ!0B2_rEJg{gwDtP$KrG5*@&DOL_8MtJ^LI|{p{=xsgDv+SUfY<=f*;eg08>P zSQ{Y2erA|-;3D`SKA?Ab1UC6P-}+os9wv@`e{5x@6eK2X>(vnIU2Cl7p}c<8LGXM+ zf@^!^MFKTn8+7>-$Cr!B?-$|>0uckIQupuYmO8keIy3bM_o*A{JAFkT^H~|8vfj0+4FpVDg0B8YH>FWO28BQwZKcJk1+Iat5a!c^%*wG z!3zs9o3ZKi-Q#nQ``a+D7Zy@KY#())%SZ;>!RDjy{#<-u&JvnAmL-3OtUEp~E(d1U zfo)4GE!j!Hx$Xw?uMblaPORys2nFtUrQRCqZ5k~~N$QAMf}jR}dkN(}$Jjnw#-`@Yk$ z*<9lLJ9sfEYU!%d&YHv+RRC?o2TP+5+ehaDs!iW_%d1gl$|YIUws}kmFyOE&ZND1n z>`@&(!ZL_{%-r+!)A^W8(BKu&!<$fV%9JHA4pv~C5 z?{>P!d>L6RaJ%HWOgs4}V?re{mvyNQcAiZry;U%Jv$cC{);d%KK&l!6{N!2@UX1d6 zC8QrQ+M|uG;m>D)*D1Cxr#BVkT+Tom83xSgxgvR9h15q63){^FU87 zog~AsIVlF}@>m1ef9}`d{^9>MU_cB_Ss}MDBm%)3eSU$uz{grPMD>B zGn*`><1B%&!G*Pk1>jLocGu;V1q@xgA3m}JYcwxeCq|QFVN%WO?FS(KcA4oz^u&Us z>zHlhk1MgNC0sb^UzsIlQrt6gV;$~xB2PYt6#p5sJKR_&LpsnJ<@kSDXa2;I|5)El zd$YZ|r0>11k5gHn6m>kodx+d;?_p0S$9eBzyzY`ChgiQq1Vi=btAmOFM=H9mH)H@w zv4k{E3xN2jwa8Fvv1b$;ACwC4yatoB-A=~N`TOch=)J}ZKoi3VYf+5xzV;d8{)bEQ z?0ekYzh+0%x}t>Qo(u6ruZJUbqckLCSXm>Ci?s&t7c{o=oJqEXq!NOIB7bJnK7B&8 zkqzBmxs&k7LpW!@n<_?8n-_T#&4UR!-#a$}Uo}Db*%)rXh*T_aP$^C@0fmXx?;p}8 z$Ep^YO};*@bZW3~zNgxyWJi-hC4qpXT!m3oR8<^fm+BrpuZLXt)+T&M_4oJFv!uOe z=q;ve#|@!=i2hQr>kOq%9qz69RIYv%qG%T#J1GG=5tu*iNS9q1qU5yS$+c=U;xwLhAjO3)2sLh9A)t z3%W^&J!O4;3nPx-TzB#1O6+a=Obse5w*8+lDrOe z=FFcMy!9@zhSe%`%0H6fV@1P6kT*BM`=F&AEo?e=2KIG&l3)?{yq417<-2+uC6|~{ z{*1h5d(9D|Zk98|pWH-6dSr8({YfdvG$mU)KDM)GouBn;TP*8pYVOCZco4P6A)?pm zJ^xVId^;yH^*Rb5Uaxj__mzsFD_A}N5q-3hhc4M|=oHEZ&Lq-`>|-BxcmOy^BoA|h ze?GXlu(=3`P>>6~ItgzKJ@~lawiC867S$)R>TSrSo$K?F=!4t)B7D-J>`1ANltUqr zp^eW^d1u+^h6M)KeNo))hSJDUt#Y5lEaMsKQ`PBQn4I8I~bY_ocNU&I1 z=_}38e|#L}<0w&4RZ}Kc1P+MRtS*ysw6+p$41$(7Wm>SXRBTyjbibQ!UfF|n*WR`Z zi;vnAe9}qh-_)6|{7HxwV*;7q=le5@%M|ckANJvaE&Y?Re5qrmL&`&DH+{BYp%N&D z~f90E^ zy-HbQ+T+=84;LtM@6_7l`u+Z%@N@r$xiP(eV~UXcTv;~K9oZrNEZ`~A#L<~vY$0x3#u5pFtCd|UhReq$eBQKj?tl5v?#TabE3eNMmDpp(b<`770l z$x2pLiuGn0wT#!x1JoLq!=kS{CcKIr3zigCDs3;(^?Ybb1aW(=3D)o-s zZ(pRikx?A_99B2?<8EXZ6zot>d|PzRv%|6*W%}mw-jtfP0HsGkiqicPkOn#V9OZ%4 z4B;bZhktan*_<<*llcI7IXUxGtm(A0tm%uJLmO>jZN;Os*Arg3dG6o~flB@-ynI0gQ$n6qOoCrptE^YZmljCZM4mV7m?TmZ^T3!-H|#{V!T5- z4V&3ERmm?v7vmC3E;F3zzYnb8oZ7i6?p>ica{LML?DO(+kwOyI;FPf5vtImr*wMLg zQ0P&QE?}2Vm68P)Dt*JCX(S*%IFgAo=$HXlP*ZDVkSsuUvrKEKQbWm(pjzi6$oVP| zbM#=H#dna?z|2tB0uxuN0&;F`oMvjwQwktrQ@FWU=XlBGBfTkGSL>p>ii0}EImV7q zmxkN;Kmrdp`dU+p3f-V~^eijhV{+-L#+7cVDGxx_q|D4+FZyWm=w2no5ULKnWCaB@ z@+82yxyFaq`x9x;4WIb^ygX(niw`|kp>PqSBmDS=y&9$WfU{HYN@SMiYmrVNaO`O_ zMEX&!qP=V31b~@0jL^{@Dm|uBr=iN49HfAYRU1GhKVt2amU29wX7LLNfebYCh5fNt ziE=^iOJtA1uxvSfY;uA#=Z!0HmLM<7=M}mFz0I4e>VB9#s^!PXJoWK8O*=VpvtMP` z8Yu8z)?WQ)0d-|3{k?z8`ND0X$z_&NosZiH4|-Bj^cW&)x+8(4W`WB9P~6yP0AD$M zDzTa)aGkTBRVo^ArzJ}Q!VO+5&hMk_54b(I83Se0@&s7sTATYq=Ec~HxJq9he;2Z5 zVQmdOTuhdIK1Eug?4hGwek?y>w&3lwBhz06pidTyWa|=Ob%(*yY!C}0>4DhTS7~YS zStmG?V-M&@kPrXliqW&=3KcCr>w5_M(it%R+5zy9=emS4dSI4NiU|T3RXi2OFbWjf zF9cnxoRNI#i3pAL!~^us2=z7Jomgw=P&7-Fi)e3{lxaM_-Fe!1{vP(SV5_Bd9YvW7 za)w@)`Y?Ll6B{GT6z&n|ASQHYBrB39*M>7BB2igI0X&}AN*Q*&I*@+A8We@k`c2^` z*QQDq(|;6PdWX{ak1*O%(gdYj^afY}KD=@&lpkb%@K5h!98r@W;G^5qE{mhD^n zKR9{YA%Bk+ZjSLuqRM>raXDLMC0tg)8U-`?d*SuX^0E1|va)KscAG@^SFbX0#uKAo z&Xv%D-@{pyE>6p7chsI{YOAC@C|1M*CX}~>Vt8VfC3j6D&e-9{*os&f7c7b8uU^mT zk(j1NZCay}nEd*C8L|;_nd3Jid!=bP8G8W~uT3}VxAA75dmIy76s*F~<2=SccDYI0 z$0!EXn_hc)vJ?h z@LulcbuA~0)~!h=QM+Lx1)5+bT*}fplO$gHIQuBYBqDgx1`MrmyGw@(7L%p{Esb?R zM*3hUP4S6|?cm;@m`k@wtU1KJ`gAihas!TGzuga>qZ*WQt`MXK~k>mwG5lT@u(2_++lZ5f^-=!1%2rCie?hALuSt}6)iKkoFvu|R>m1@^cetuSNA0Q|7 z4nu~M4b5HqyL1G3#B;&h-eRD4kyT!?PqAK7kk7DwPfofeZpPr^JZ0MgG#-lH z-ZEPt{?I-XZ(sVhG;;a7qZd>&G>HA)cdh;jhxca)RlVTR{1`I#zNuYoNk0H{SVLWw z`&BsjiqZrr?|+u{0O@BCamEEd#xp`%S8ew1}M%d`^{QmCMvog(b_*D{N z#6AU0i^IWNfSy+M_8MN!z0KFlkG-SQ6b)eGG3E{wP6+2Ri%K3Ai<=*9l(A2T-#nqy ze4(91>e{zle&B!h@Hd~ z-uG4RL4e|BUd@jm8xN*Xxvq0*XERl14X?Y&Q0(kkH8CUcXGu@X``-TiMX9bdLT@-h zhUgnx$+=TW8mwNTw+=#YhSOqUzTEyajhNXkxXsab{7#6*mX*IgX9%rOD_g2Cu5?s+ zC~JwESFx)msT310;XW_yv(&#HrxEm&Ixa4basHGvD5L1{2hUXz61fvSq21vY(R|R= z*h~2~KdqqN<#CWth@!1J9C{Bg`iKz~4x!-h^t_4uyTKEFKSq%Y zy4AyJnzl#t;srYX7Rs?aLPEb(@4WQ=ZbCMQF5dVF8sxFFvy>;9JZ&WD8q6Je4~L!{?}^}k zZ||MO;Edpd4ihu47T%#Z&r|fsCxTfxBJ3yAwZ;7>#iO-ZycCx)RXrnn&n0A79`~cAAWWD zb0}+tm~6{cMn>i(En|eA_c3gN_E!oSNc$(Iv73z*xEse_&9Ii{&&mFPU4e&7yaBo< zTEPFkTPqD}3s<)w3wP&Z*gfsk<4*q3+BHXulwyXj>0jLNDpEOTZmWT|(uXqn7NBHK z5g8fN+c|h>(r4$3Ow>21_aMfs6wRtCACr~3=4YHWLyJyaaE}$Y#+*SP=!x_BDPHv- zSCTLito%$C#??sD!|^1>;~oDJq%M& z_Eapcao(G6T7jx7>}+pK<_hb>Wgwe zGHDga>*ex$dbj|;>H76xd?M23+z#7^n!onj+W+$)Thma-!W#C_^fc8!YZ>KZ^K;)-Z!jGgt*G`m%erg)B{vTb1Q{ z@7<%y!WXfP!$67;KaI#_6btF+`f+rb>w`{%5HnNWT)v5sZ59lmj5S>4JAs*CLqrN;@~5?~!T(*SMh zJ34OOL5@>p;-SyZ&MKi%Uy?oX$DXX$y;WA^;o*92I5d%kVhA*lpP(SdLPUYC*n*Ln zi4C|295Rf4+^hDRtGpjX==bZo>2ks6w1g82N=h0=4eDTtc?jB0e2*NMk(e{ zl`2HVo~%FFy91F?eqIJ{T#P5LbNkK851#Msom+eN%*c3_J=?rcK1Gwu7N50CDZX1M z4}68&oPP3^fTq?|^5!*Au**&-@Iimzg9a}HbLh$Y5No58b&^}Q+Rh`oXqPvKgj5QY z;pZ-aw#-n4W9d7=t2?!LBHU9a17E(Z8^)?Dzy@AGlarHeGO@{dbbb0R^F*hkp9*eaCS}e5myzUEB5m>+;4GvC;$fl+SYH*bQ%>u$&)QE? z6mFw3s`y+!7^$N%O@Ouzxw*SU!}ywPOXfiK?XOcH2YIC9gvY`?ML3=-<|2=k5=IJd z>-+qfHFgZN$9$(j^=DE#BTT*$)WPS~Mir^S7&fU~{ z&*A>m`~AO!dpc8d3{ey)Tpx&!f(%k;+++0u=&Ro96ii+G$VYjWmYsd4)dBhd8l8K| za!s#XdP{71yKm9v7PF0JxH2?1 zS)Z+D3$e>}9KP{+uR zzH}@hDPg$qEAB>Ik4SPat9B6P6AM0;NZ1b;&^z{;mmKBs;dAZ@2_dV`=)-I73~lk` z#Kb=&6EwsL%(OXD=XBB!HmNeV!5IB&nl$yPv8L!K=i3{Z0ibV1qYxx__({orWqDx$ z^Y(eaz3{~J-4oBswy-b{EXfeRK)|1D@z9n_ z9US(--1EXf&d<=L58L1WT;daZC>GnqBR@Ys`f_a4H3Y{1dv3+kj3DST-U8U)lAJgT zVw5-(ORxYvHFe^lZZFB}TxyaL9m*HS#Sau&+V`JpDuA({-krwp)~j~V)i`o-(UaUD8~G z|A5@r3aCrqNLAlpZ(9AXPnFyb2gv?z{;Cpm-JJlq>MBN5@c`_);7=r*4j)6<&CLfi zkeg0-`hU#8gX^R&{xHV=%cI92A8+pk@98F@O(`gb7>0(?<2r(fe!um#61Z2rMhPrg ziHt=bcFmEh-AqWl{EQJm%VAPRd4EaFLAh+_`l_K~nk*!7Vz}WHrlNQF%<|q@)p8wt&Jy*De3i5l?LzSCJ%tZH5+1>po#& z(N3Ou#<8up)<+#ZB0`u$VSaXjt||u|kNu~yvYx@gI1!|u&*S9pv2DiIFOzgL35khs zxC|JQovON1^PUjGXT=)df<*K1M8CT2<=lz<|2?6J_x%gZ0?fbDy$mUcb!_LkY- z-oB6h(x)4U4NT}D<6DpipZohU-X85|8|7L2H-2XFEmmy-aUs9HX8q`ibNoEHI8dV# z{)~2uEPkuq)NrAc!f3X7rQ3PIQt|yv>ymc@vm+?<`qa3z;Ui5kS(!#r;(+}P(_WCMz0D37BUH_Gd)WW&)%?i76<9ig762ezi%yV+Mdv2le-Qyq=z`U? z@(T*=!0{$^(FnxG8nK39fk(&b%roTX@loq(eC*?Lg=;P;&siJu*U1A6K;@anrb+~h zF4tT01<9R79p@lwe1ey(3;xP!{TM6*1N~|ztMaD2EZ%3EQ@vzlv@vzD6J=c*WfU?g z7|(1PRD;(!9Tc53vZslZ|0*2kX|MclLJmDSnNC5_w=t6UOb8Ix$v0vyGanOi z`Zim+dcmx{M|QAdQi@fiU~dt+P>1X(sU!NbcRWV!C?Yqp+5`I#XS&Tv|9ZcAYI*vH0T2 zo+J^=HTSD7dLK{EZv*0Vme$tH!9V&_udPE*r!6S+r&T)ttPzr(lkB*?g&5;?pxU19 zsa7wT0&qGlV1f{_xQ*fWtWYI(yoRR}{of?{w7Bs+fbMhaJ}S`Y>KkekXq4+38`6VZE)s}}2pU~Pqi)D^IpoLB=& zTi#co^(`#u{Q-35CFb_q&&L49`h{6Z_4@AvjTMx$Xi%jGDUV)LgT+HsPD1ZxSV{R< zBUrSNUG3Y?hr+ELY2qR~kFeg0Cd`X}>b4m;IFD2o7m^mPcLWjoGjfRY7h++%vEP8f_Omsf24-fJ>apV$r#rLjwn+d}a}fb^ zK#UoxP8|YrR`-{Zmc|jpb_&>|OI0`WJYVu>zW7n1Yc+v2K_l>(gGAxzgIDs4neSCL z(+baWHql?~WzVpU7 znbwCPEaJG_@_xn*?G{OlKD(UU3JzzFRxiZIq(vPYWo9n<3IK<5uph&aZQm9EFKMm< zZPWY8e4{%-7=mSbavm+a`vSzD+e$%@E7U%r!{>KC0SU1~XeQ#rxhb=sG z$HU&!lr3CTwh-lm#bRDn&oANlY!e4?l0YD=zBqVA#Ej5>8#9#g?h1+ z;XFqVYUB%g(6?Ki)-uq8OS;oDqKQsIAXD8qo}_s)!tHj%96|S z;uFgt7ne#qC2to$L&Hr)4kZS{G~8px)z@pKmae)UMNG)2a^w0bK#^o77azJ$J&L{L zesz~`MMnuejRW9V;@Ys7wpzfY2NAJ8*WJ+s5)B&S!-In`CR*Bx47IYqI$th-c`~_j zw%cLpVpc!R)bjpaBpF3kl`rGBHL54nNIy@{M+`iXBRNOvc1B)4eMB4guep%=#IV)UQti>1%G$_Fd&xT?H1t85PYJwm}OGN`PN^OYZo%nF^?I<5F>m%Q!Bd*VQee){xU7}5m>9%y$ zV_o9rw`6Io#MLE@6;4(T+DcD!bZjW|1!+EDVLBshmOy-|xl|~vq5Gb{REqUPG#tUD z*4QcXcuZU5b$(TLuyMe>gH_6Yo@vWKpghJ6BgW9Q4rY7i{Qa%SmE+Vn#)CD5KC*H4@L~jsY8S1}k;K z=E>RFSCG;E9(8>9I}g`lE`mPDTSlOcWGsgcbvFo1Cr!I%o1j?y)a&wN5xDdga)Xfp zfLy#jv+orXpje&vSo?=tY0~PPDCxeFu~erB)w!SI8;qW(sH;=JRyQXBG)%Ex1|{bM zP>Qip+*-zu&o$j?FoTsvoVepJczx15FA34g8tU0tq~ftQVOm-|g;71R>$g4$Ut55c zN#F&4EeCOi=fN^FrhS3d-D3SMN~FBQ1V=Y34v3L~Au)j$5IG{Ut?+8|rtQEwzg^(A zCX+uUIWBI8I|{2I|6Xo{}S9yxuVc zU6szSF#Z&T$jQED1|YdDqY{A1q+D&5Yp8N*QPhNgFw1;Cc;H244K_kTLZY_uq-xS| zbN^K$udUn2aPNDk2IglLzC723B=zr~{W!UEb#(<)#i%|vV$u{9RNkhucq{OD)nP*u zxM&DY;cy&adHzR-gS;AQ>b||T7Y;`L5{}jPCX0AoC*4Pvp~DTnnse06nd%0=T=3}} z+h-!;p4157s@BZfClb8PfhuHPI|@h$rDnuy6>EqJ@EuU6kl$6x0!@2sQ@!a0eXt91H zUd=r|QW?yDP*PE`wGtF`B@Tbpij6wFODbesy=TcO1McJU(*+~6sgs}aA3SVQn+yKR zA?nJ7jS+J}_eKCz2(4c=sWhpT$06GiLe!9d{MuJ5bnnsOa+7y}&*OR(NMrgWc{)>9 zO3EG<#02jHC%Qj7vC*GEL*-HR>+SwVyf%N^-|kw>a&mG6LBU@&x|eT0f^fQ^Wc&`V zVGKqT>A@MG>qHGO9Y=;!@XJOm8)H9WpvW^?u_E$>hBP(Ic8_l-SylCGM~xGczvYHJ zAE~RuPdGK7IiZ!S+DvVM!pibgU$XH||Gp_Jy*^1?j&{bXf_DR}XTiBlH{ z`PuPAsGB_ed@SRHdD@5nOq{EiPzwW1B2~{7pTR&YtY{JzTmH|CMZn}szt4EUS3M$Q zbmS3ler};u?`<(Nycsd@>A>L>8cC^fC1$B5+fF9n1XkdbQWVYtoVOnhuMU#?dT-8W z6BJG#88I-@&^Pj#%w{~5anBQXV{@R&0Ib6lu1i2Dg>sJ8EB&YPI}{v-H$geK9csMG zgk&4U$aaZ`#Dg2PpB^+FoI!zfd5=gHJDOB~rg24-!kjJDdE2S>C|GH>QN-8NRQc0+ z48dJs{w=+Sk6#Zy-fs@-7+Af$+Nq{Ybu7!|vv49z%sb8=*JK1hzK-Jc@P7!1?f-CiY=V+e4FxsO__B|NG!8rz8;HX&I~pjwE>p{s@X*g0x`s42ys)vb;M%r(dPR2;nh}b8!L15u zJ#93yoNx2x0cvjx%Jer_w;lNPehFKY>aaKItfy#}g=47W+F1q{vEk>`v4`4xZo~II zKe5wXVeZzxeKoBS&=(N}P{7HL3=wDl`0kplpr|HJjOve-$)dPMd$?Awz4_4kQk%OR zNL2N2A-HCdfk=IZcc8rwo1Lex&tu5^379F7h zZmZw6*Ok~_+iLi@vc+kuv&s0q_#z*?ZVQ~urU3jp-TOQ|1Iu#31Hab$27m%*8px>j&PvnK9tGuh^6LtEa}VTCJ=3j}whFG@1wu zs+~H9Z&}HS0tkY?%AvaS1sho&8BIIMK08Vn{Nev=nHF9l=e2*HKa*?- z73!rzH8FagkHP3s)2Vq&L5?LzaAaS|43o^*o&;QQVl*bO=CZ^(W-odu>%Y42C_-Uk zTD}WzEvfD8vR-|A{wXHbff*sE(sfJ z0(1yQkFnTR+(+w0lzb?Sg3>>#lp1|$TwNKC1L^M(gigen7 z2^{kp=!B6u9gyD`uS|IH7}S#4d3qiyu-c5Yl($$DqR;(FbMPVRGl(M(XLq~yr1>k( z01SkmuRrw6-%0B!o1B6C^!(gE2p(zt@H_A{Pgj}@>2r~ zLoKF|!v{yd6y!O9W2at(L$pqKP%eX1$n&1w-rNtbdxEk(gdc4bMH5(_`rKMbH#tZ$ zf6sCL8vm&MD!`as?m3yw^Iy&41j)^2p4ZB3tZ5F;q zKMB7$X`Kv|=j1fDa&nd~8K)$#WW~!gF?|;+TmmNzEbmie%lkv>WZI{$txd0?tvxb0 zHr7S_diX~1Z3NDfbEeo~pQdKtcMB4lJVbR7ubkw_4&;MY9wEcF@9g0DJfp=%s75|l z>Yz}yc_y?;hEP*e^Ew^@T9TEbclY)XlbH*jemC<4$WR5qaunp3)>K}9a!77({j;Swyj&&7WKu_;`0jJs@BNEFTc6N3gl9Jg1zjf);K`G|> zpFWPf%`dndT8hvvFCK9HBr7Vdn!6yaj$c)&hX=ATi;CAAd{kBD*)ghSFe5lIF_Fo2 zxBRh=hDQ1VEx$L>+f37llGdiEP&QlNf|>MRg~10V{G_^cSZFHXdj2iC*dGEk+(zAJ zSX4pL@R`4T{?yTtOIl;4*#DQzMq(#k{<~ zUK$Ss{76;n-@N_vm`8Bv^mNub-L5Y=6#y(>+u9nKJug+~XcT=We&Br|cK%vh^(sbH z3im1gTP^NL`wuv27N(KFo1D5T`JP*2}Lr zZn*bt5OS<9m(NjNp9B8Hm5YKJ3uB+*dm~?bbnc+g3{;_Vq}V$8Ih1kO?m8!YC31^o zNy{xP6QCsp$v~)QiSTHF%#$G;4x*)FU=!#%5x)FcZY?@53>Uq3=;3jj#0l>0`+9tO zEy%0U7yiJI+KOomU1zEJ+uqE9kM<6o5Kiva4!y-ZX43wFxN43W2ay$%(ca^#x@SIY z_g!dHQkvH0)i!g?q~h;WikPQZR?>yKJ4p<~CTcophpx{RM6ppt_Vf|PM))?R?TXh9 zk(xt;aSQj|$u$`m5GS;}48$iZoj2eo4SI82I4s)i6L?JAudsQf@8|9=e0&*lxQsj1 zP{lgAw4Aw8=8oq4Wug;czNOhjpw13a{s{yPWIzcU4w7D@1_ygM~A3}eu18~yI~ zAf2k3YXeFm>qUiPb|gZ>`W;Jm{{RUz%xg9f;(r{S1A82O8^vR%v2CZZ&5dodand-A zZQHhu22Ik~wi<2P7;T()o_9aN?p(7o|NETZeGacOt%$F$FA~tC0%EeDf1Nxpivv*s zs0MCX*E*l;3wcKBEjFWs@Bj7V;I!WmdEm>Bpqqr&1Bd29VH6uDXJ}Zl0U2KTZ z#?93^#C}0NL(WdD5$)vkNbv0cD!AB^0ZDfgyP4YEk%S_C5(j;DS&PGG^D@JFxLdd? zPmCsVU*)RibKgv-YruDll->C$vJ9aQA|IBAgts$2@2T+O+~Mq>NPoYK$-1p;(x*g; zB$;CG8j|^_vxGOVd3Dzu`Dy=~Cp_$|;ux%Ojeak7;^Zosou6-^)O5Ti&hCD`;09ZG zbF@TMYIgomE}qV*J@|))lM|d&ez!K?Hk}5;k?(U9N=c!n_5usWIO*v5S76*pdlw?h z*kpOH?^F!H9rT!9aYg+Psx(kp`8^I2oWNQ<^iPuP1HW5%J>jG$`M+f*%px)kc$+>t zCns^lyI5HA08JGsK?a&|W|QU+D&$CLz25ck05W3Cnsu~Gv2W1d%GBsZ(unPy?JEPU z!i6Q(7@(PnmQxlM7K)?T4C2U7Ww(Ung4_B^W3llvCkub7A0Oi-Jx9=T@F}M5kY^t8 zv_iE`{nDZqqD;`#;!O%RyFm1cmOIn$JOFov=@bsq&dnfn)7F#~$FVYH{op$$2Y$vi z!aJG^$G}vZpr)DGOw<2-IXRjBULbvC4hx)YV^`1!_DlaiCIV_b#(RBY$rm(@&-ID+X=aQ625ovmLRay1j z4X+(9<{1wE3a>41wP%LNx$Su6%YL^HGF0PD$;F7hDa!@!-()jHD+ni={Po1LIzgm9 zQf07$qKcoWsHnQWy#Fx0s;y7^DAvouSb?UD18J}gmjN2rV~(B?s3cfCe+wA_r7YQk zl~$CF4r#uJnK(}PL|7n*ko0Cj2978m;%t50J8FA5#TBGHF*8LczSTiNUab1c8Z7G! zymQS#mhQxeJI$#Qjfgc7^S1?*Uq#(O7vKmPhK@X_yVoaA%exGSlx!oh!Wcp%K}Qm! zZ*^q$Y*3C*B_vn|2SVp$glhlT+|cHoDQNx>Tvs&&UBIH_<4ZBt+FA38)n@+GK*EFv zrnBqe#Fh>h%j0HyhRy2A?8)b?)uo@J^x|XUFq@Di8w%-;&Ke%x8{}u9`Lagz6)Q^n z4LLIZa7gdK>o8FuXY;;BM8s&jAIAFn2?6%lF_B0cr1FJgwmAyFFxAJkot;x(jS$#W z(f$iEARtz2m75QO*A=wk)nuxbmXW;MY%ic@&=bos5Eut%E$hw~zjU(bR*Djx^u~jO zJH(DpGLxPwcovy1;bRxN^aOe2$LN~Md56P>NQY^AFUpFWtyZDjt(5vkQ{SWM5`b~5 zIFi&1bv~Qf_g2!ne)dAV&l+ido_`)}DG_DKl!8!g{tL71QYTT>(qRP~X}LYg$4J*u z88bzLg7RX*sYH27^<$f{7DHE+p49e>cUiwrg2Y;d60P%@$_v$b2$DFE3QEn$s80iR zdGxa%b8NBvlA4k+SaXdli2}CBjr`hSDF9}7SNz+*!3`f+>KSC)Axq?K`XkBrgvP?X zHve5YTPPUIcxlL6&`A1`X!un?4-BvM1!!!VqK80AHztE4HYyIvMDJf6G}w*>;_XNS z5LCpWA#$uJ9(yWq^S4^t+lwJkOX@q;>eyeu?hb|jbr-B{SWf>7ylQ()0M~q5TMaPM zW+cST*lWjnfWXcqvCYz!`t@}_7(DD4x|kR_azr^>7s&!pi3OINw(0t-E>k$#{o4$vHz=48yS@~n*_z;_psXk_nb)E1te2`GHsbD;<>VN+ z?D)2*=EoB9RiW-f(S)XPi#9yfL*8uWFXQd6%6{Tbyq*3|4oE(s}kQa>JV{N`{D(3T*<@>S10 z0dNrca~#b@GO|9U*xW$?oE5y&B~*nf)lBmEFMYx#_k^bymZstzrHU8BX&YbVU0i&N z9>mMVL$wSrP0OQ7xi*-l4t^;OqXf8_siuw>MOf;Nj`_CK3-cMvI9l!04m!;1(%Kv$ z=6^F%R>}+{cjHu-Wq~NlnXf2ke)%Z{-1bG?Wpy!aL;5SCeAAiqoXK%2{nY77ZSj+q zxlOi6o%Q|s5M^@&Zo!X_k0~v;lLV;qswGN?Bd))Gw#o8cld7!>3RuRs8l)27(R9cB7OouSW)N`6vW&DTA`+^y+by|%WFskayeR(fpF8e4iy zC=a9)R0UsWwyW+xFq%==oDtMfVvBShH#gNug)Otp?d2EehOS*&_hI34x~8+UOckq>q{$pliD=J;l)39n>B>Ll%NKqA8|RiPRX$9f){>KxKQI7^ z?Epq}ctpBIm@5rP!I&BE*w^FFsmGnmg=u`TNpKpdfM2AR#9%>p4gGhd^p6{SIcO9H)%+5CGRab}X*8J|Vn6JJZtA0WF zpar5qt()#0@)&+7GRdUttfugcw-exNr)A}O<`WSW3c;B$jg8XoB)RhA^X_^deoW`` z&LKtYYH5-%QRDdWFFLA**4oZO zuPpl33wxpv;&9C!uge+4roWAGQ3<$~$49#htE*3hnh#xkBl70Aj3h~J zRtv}Hx3ThPSgX7Jkd(={w3Dx-)DWNICoIJ~_X1u5scu~PAo836&oDPbMa#s*Wa4g4 z^y9y=x?d>p@-3JUqOj%d|>Vps~nB27-(0WB!|&@W1Ulz)JsiFQN@0%$(dZ zkkxw2bK`r_J+1za5dCfkx6mRsvQk7pF`?e)1SG41tS2 zEgH5%RG$Ou1V#TsmR+UJxG&~?pz_oj6oDM(@x!%IR@}P6H6UC$I7S{HxBO3|$@Tko zH*Y&5K17}OAIubWyW*{DVMn7KX9!SXIbz(efN#*2H5LT;Z8If7dPy2$HRSwlt(BQ5 ziPyAGSF(!loWns;cY#L8a~K#Hxn#cQ&Ay+Fdfk_@V`!>&sH0f0O#2SbdT<5qUSQae~@QKs$-M7k- zVL~go!GX;ALP>XtE&J-cd=hTa-7vx$Tm9ZdAN26E-{z*L`~Bwd7gAleOSCW~*fD|& zDOn1ctmRrh`wZzB-9tX3y?YU(wCO&cV+o*GXz-r~1DCI}#D9Eo0f^p;5iO|PT*1%W z+{)PaAU|G7sZyY)C(zc$flH5Cl%G5F-@Kuwy0}8+UsRM(mQcKjKs<3ez&IVfxw+XY zTHd}&cA8<^hsq9Q5d-Fg#({skzE`hLm4%|&Nb}^kPeA(xW{GVZ2M1#ebYR_+8S_Au z;;FRP@23Ia=?ZweRye^C)Sp6G-IH}azAvzUb-(##jNN}WWGiMFtc_otTX7;d&xp5g zEJo*S!6Fy%9{h7{j!b|WI1)`!w9UT=WSy!6r8W_y2xHnr`S;1cIeD}iln^!4#dpOUoCVzYL+DnayfaAe~+v4Ek zV$8}l_+f7YZ1<2q!H$%b^i*D2-((5okrss^5Jipvu`sKpDC4=QVr$pEyn1m36bVB-tv}*@rVjh0+h*Mn3v;P zEg=+>M`DetSfE$YLr+j3E(zQeU2ku-PW~*mFe1a+)H*{J(WF7U+Z>+E@Qa9uI1l=M zByciSX5t0*&Y1=>*H+Ow=I@~Q5*{G41;Tg4Nvc}2LOT+?5`4e`_FfKaigYY)eO+T? zBK%VK{RQw(eg+VqJ*9Y=!uKOCe(yDLbsZg9Oh}>0sYy9UB^Ck_5*kxT3g?dp$J=8( zlN6J{C#|!$KJNoc{<{$Z@Xvqfn$qjDKhSWbat*FAiiU@&z!LjMM==@nB&gnm zxtriGQQmScT>@=YOcj)xgX91oG+US9?Z~{eqP+Wl|C7 zQpB~>8147-!>t{OTyO0vWV~4gE5h=hQ>1_cM+!kM~_br%3bY52)@nZkZ;B1Pk z_KM_+dm57a`|C>;4os|B;Njta{r)XaC8HsQr{(44HB7p45oh`eu4`x}5b?bWb$4_W z-WVNfz^*SvW$876VNa7rqMV^^^%Ljv9VM=esj(aJtFQWL7Oa1Lm&ebm!Ukbe6ON4M z6x?34J2mx3)7_nzft7^{He7lia&O}II&5TEi}6;C-ETPsU%H7|Ca$`l#OrWOwZB2K zok=L45^pIdQPMeflgDY{oAe{B5=5tg@C4eRGnyP$+#s4nz(6KutJ-^C5EXewmP!pQ z7qiJ5&;C4@6myFN=fTqlvbBYEhUjUo*4p|dhV|fNG!XogmfGY&?Bj!40t!bds>@l7 z8)}EQ>TU??DqTEPO3wE*}&ft+3qoaqr(?&`BDMVr9E)Esa@JU0_@-b`R_{fU$(D*f^8^EXx4>= zgoUHK0+ZmFAY@ophHiFyeUNjGRLYA5GGis4#R$91jysa(bLzHxdEp{x09;la#79j7 zu>uSQ`p{PMlST`Mk=2^|C1~R2y|pFux)d(!AGfClttILs4;+zeFvLyl?ZIj`wyF@~_YgUtFI9Ql;is}I*UX$)WA@`3u*4Gzs)>Q2_j0;kEV%hczAdPSl*dW=KM1IibMWb(!2mR33v}b-|H+~%?2)6R;CHxn+Q0HeiRut&2h0O zUql#UXK}MQ5BnFU256t>I#E(;X;9o(y{NB`M9O`8{Uy6QQQ*%T^I@v`x?&NRZEH%NAPYkg1WKJ|p63~MH2{yD&DC9T zDyy$IH@CU&LNYoqM$%`!Kk&qVgk0*_+4XEM$~rr6a{73J2rUv>TL2w`cjnrkS2iaL`Ff0|8T2nSI>mKVT*j9 z9MaRU$Vg{EWmZxVc{=J-WqQ7X7#bizUNp&nicu?1MDIFuw*8aE6BJ=Xe>g!Fq+Oe6 zu-%ANWa~w>7exN+=-je}9$hN8!s8&AzOO`^izz)_C-txLg$gzKue#FVQf#qrS^i^k zkG>2H)uvlw1`#w!vv`iDFb|TrIGK~qDc8Ee47|UDv{W71Aa-RrL{Cc zcg{u4e;Qh|Efg=)dPCXc6^C`6298A?Fk?^YDQhKDQ?>WcF3PlFck(?M?yWi6%*EO( zs-pw$U)~2X)<2P@d{_=h)SizOMa$hpDRy8lU_?%40e6Q-4x<+}4b4+B|6f_ zgBLQ9qam`l*}Yu~s9-VYD?f4Vzik_QLaW|v#t?pf{#@D_5PNx}vCV-l_%(dzl-lPC z(#=r5<7Fqqza+mWi$C#(zU~6>6_87jN@`N^7k>pYiyO2=2feVsj-a1GL#y|fi%687 z9wBi}YoQ_7zGw;Day(^=S=0?Fz{6vF=%K4^JW+bsmT+`}lbp7!=ndt~M0W6G(PZbq zLB}~x)u>)wSAYlt(tJ2>xxA1^?zx2)_V#6pbr|#Sw_3lNz??9(VM`7o? zeFn_Vu%Bjhm6>W>@fktdVVEv~6hPJBH-jJ^?#>*NlDj)(J?PrpE%_XwR=;i`+flX4 zk5W;SPrHX6w^b)S1{3OQ zLUo{d{!NG&wH_BjlN@hBUs+z|CchTt2OJ5jpCb7Btv*2NIRR*6E^%|Fga?vAa8G z!CbKgdAr=-2ejm3Geo-j7WOAJc)a5)8*2SjMn=Y=;~8CJpW}48BHa7TQJK=YLO~VM zz}K((qWYPg?2<_nq4Zn>R`z4DRh*$=y{0K?DNZhqbGMU(i-@Fa7=IC|x#aoT_~gG! zaR}o92|6G#F>(pU0qF|@2>!TP=wNa;fxpSdg{HM7R!4yKzVHeo?ST}2e(nICBO%6J zBu3WhIs;gYK_8#4tVinfKa31oKf3c#RxvlLsX z?B`<5Ow2F+lXNLl9m9!&Maka}*uMQJ`)3mKys(+myu7+PdI7M6C^^lB9xg}L~GYiF%13_Dc3r>ZSP zxeN0+Y@Darp+w-EL4N zw*VxS^+uj5<@U9$FjQnjXLZ4VPLSanJ48QY9SIFm^)XS(FYx5H%ab28?TxS2VKTtl zaR@P%tDjk4C+;JM)?HWH_M&0&)09y#ogY{M-WnPJTg@HZR8JQl^P30QQ> zNxC!1lo016ZFV92b;P^7BE8|K_5A_V@%#?zRS61;v|C>1Vd3u3SGWu&L9gRr-4Up{ z9`uj>D7_w)1>6CEF@ab#K=CPTLoo(`1H{C*;^fC{huU$V3L~s3rn)4+%I37OWR{iU z?D8z1(QX2ypwe0O@BFAOOkx3*mzmt{gqi&AWJl4ofU73w(>gid)&Ss5$FHF+JL$Y^ z^#=sFvK4RQ5}S*0v|hyVXKE}hYOTU~6WXCOfA9I0^rMJ`ZOm#|2_PlGV0Nc`%)fn0 zRJhJ3RFYy`&jX`nEu=n2nTPyYJW9cIN}4J5SW)Fzf$;V+{~jMNXMWHO$mR^Q8y)^r zowW`wv2J4(Up~cc);08-1H^-exuuVz5&~pMe7et)-vLn6A>ODYCPrQnb-|q?G9lUz z>Pt=(eh+6JiDk_&SAD|4>6}W?-QOD;LEznns+h&Vl(@{>9xSSFhnqwSN9L(#g~MbI zFSWM(SCE21X<@})rn>a|*fXkdQ!98dbw@rpz9fm06~H6t~t!va>}- zj-~wi<+|7qW_7u;wbfZ!YT?cLxpcuI)yd_Pu>DZ?<4~5vFNP*-Y{)i2%8rA5642KA z`gHfxN$$nNU|V6~o};9sq!zF_!Nz6bv-D`qta&tyCPEFArrNa|Qc+Uc(sou;EdUvp zy+Nl|Oc_hFVNKw#G)UF+j)`N@kz0_D1Z$}k?XtyL10`+Q)zWW%I4j)PW!dY5C0hb;H{)RoK{dVMONu`Jq* zSha_9`nCMGw7lNvm=j>>UAF&jC1}4lh28OsumdAx*8!Y8w`qak8m?1>e>6mbty}EI z3xOXC_QTj64rP(W9%~fJz{E%%^41ed|0QHCX!*a{9DTt>ck(e`=q}R}2!Dj)GH;cl zv<+hz?0MflLRcCu0k(#2K!U#UsU{96E&3)ckgV< zbo`kuBTR*J%;Hm`RjUoj_WcKU6^!*L6cIdA5ZqR%oIqrV5$LoXGdHQO6bE}VF*{1+2wHcaWMMlMKmUf8xp~RqnT5(!ZnIxekQuAr;^)3c zOa>MfZr|?ji!H9d<0HmWY2m-fexbueSU6Zl`HjpIYubElHDu-jsuI7dEb5A*%>j+h zz%RPAmZOzbJ5n(VsRtZNIDdkI3bocv{WLd4Q+`|)XbRHd#(svWE~?7<=JW(L9g9~h zm4%8E#0l^aA~sbnmNEY%PiyWKcX$gIni1_@4tpHBCpGdiRy{Rl++6a~)x1PvXv=H1 zUZl9PRm^7gvje~w4>WiA6malYT?tU_invJ80dg9!q}F6Ur=oFehd>!OZp2g3@pD>w zIt~h62>3siUXn9IQE#O?U+}B zE=I4!g^av~IHAdJIW~*X0`;20)4|h2y0>V}Y~b&ARx%2O&EM(apiMn-Bija}V<*!w zh$Hw67dZpDAkSB)9u1n)SK~{FO{Dus?E3?eShL-s()+Lf#RdR z=xBPH|4&`(UwyD`#m&t_CWI)F9LC=C)vMAei( zZ6JYVMn+bQ)K}VwCyCQHYvaCLfG|mI?EB<3idnr>IaI>3aepPTrQX`|se_QXSTQ=P&9QuVm*?z0yKSs5Oq8!&Im3w%eD(Yq zZrtZf@ElFl&w8>^Mo5&oj)BOf^i{8%t`!@u)Gf(|(L$|u#Vr{$x7X>sm#Y)lEpNq) z^r>hP)p?+O$3fZrs~kfG<uWLPj}q7zrERuBa+5ef0k=3e4YHB zcZ{Y?%uXMUnx>Y5uCs|M8H|=)%!Z#IDWxFwP1o4Cz*&P}>Qi-`^kDE+zp&iFp9+y^ zz-~N~SYelabgQ3PCuK7_WN*)=^#n=f)QMuz<*ZUtjikwG=o&&X*xJ!Irs>4yW~bX{ zTt%vtl8&7p$!E`K-lh}9Eb=NwZ;%i^ zMJh5_4Zogpv|_=PLW}*}kyG<>g|{e{!N$dnsMBw^I|G9D-ahHG2dHbt_rGERviEEm zUGsI-`X~7UThK&~z|3M@y38NFjvgLDb#qy9wd!U}L26%^_Qve-PYVv+Xqj(0(ig>E z-|MgP$2)#5 zW<-*3F%whkAyaqa?Sus>qpMLuR_gJ-V@z8^`fpH&UYei#AAe0^jVb$uNi*uCQ7%4u znc0oO(+Wn1OOLu+LMa^{lEtlTVa@c9ZVWCEyt*55#i2)&9H*_DX;P99lyf{w7&-Vs zscsdTOgRQ#UXl)x?VS6vu-1!x^e1lgU53J;reShUCyDJjYnFSwJ|gZDRjs@fW@OAz zo(8bBv*vue_Eszxj_pX$b614Fkf#-FBVKBB4$+DZS87ojtJzQKMNC3Mx4gDiX+bb0z^wWt5zK*`!!%$R%wn+1^;?da zF-K@V-;DnII(66tOl(9ngIx_f4{dUT#IH*-bW3we$L9{wdjt(!PS%fwKs0g+A(=LU4$%)R+WkJcTY>l5`ce|{j3S6u-PuY$zEkOTvtW2v)S-T z1b!>OoBDSi0vk5z%of3iW6D25VCV4vChHSc&*xi>bFM>bDc{Np^3N@Fx6yJ@BHhNu z=d6ossOpCN&P^pn&aePa1Q%!Eya2WH64G~XQWed;W#yuwF^3lOoz7(OUERtRVyS4G zE*Y@jhDzqXWcQ9)yYzx(x_XvJeofA| zW9AUGX7AwzW}H)DU>qv0R$BkfNGzL!sUz*}Nih+^kKq~@xK#1bSg zKe=r+l`->izogP>PB2B_FV}W0#RjWWg;3|h zqSseB0!?zWhI+{l*Fz{8(cz)UAGu2hDXyPqtc5-&&acQ% zQ0EM?nQTWqbVH|;FQ^kJczSmH11QHrewY0pp3D|cY9^HaCy}k!+ckJ7(j{lfzq37mKt9=(n#fDd{%;H8zNas&O${L z6Enq)pljapJi7L9ZuM=CUnIP!aLjI0F*R>0WLPUHqW~zjJeG37d96zsDJ8@?ZHcjS zY{a`iVi2Ol1Tfi~vjv-;jX{g@r?N-~jZl%7LeHR>JHTqyxaz%|{a{lvW1H3qzf>mE zhJ_~!|MZ!W5h>vP=`_>N1I(m0>Z(UZ8NcA;0#x%>)fPIVW9Da?NX0Uc&T)x}nl%=^>@wl49uY}UI?b-2}4M{mJf^0VIULT_gNnJI2^<$q(a+Bn6HJp8Z z#hp@3ylgw@SKrf08yEho?{uE}?IvN)2=H<3KBSWqEac7u{M0%79>KU2<#aS~q|e=0 zDNE!7RWLPnf6}J|=wfAAzU56Z*|qhuVoM;zFts{3fbSxF4)iy2zukkisVsoh5T51J zm;a6t)^QC+-`{m?p;%_Hq5x=@p4mb#*ov9VJb3c+bJfDY>nrm4dUNcnvwSM}SBh(k zI}D7M1NY{J)*vkJ(o5;t4SPr8S@L?a!WrvbywPY$%;<7R^98O{SGVu@ZJ_T9JhDeN zCh9rKm(a}Va8};75foysYi;V;BOjT8RydywTturf6&pd8-Fd)$nG!)eKEcTuzM;a| z-WlF1I<3iil&ZP>+*m_lrMponfm}o==cebAUUyiKpNbYNK8P>Ohn(psyTA&;IPtt2 z7WSqhh>jaCYQlRnC+rFzvVjqC-ItpzTKc-G9hcia1u=b} zh2~e;Z=>m^BZNwKK!>fBF$qf)uwg>8iz%iCk|u6feU9&MWkT}Fftv~Wp{1i==O!oC zPF|^KsIgrn;oaG#q=f)vFefxrtnV8(2L;l`i9`y@eGR2h-9@ImY_`)`;6^hhYe9Wt1HGvkj4`%2I5ks zP}^fSK&-8V@FC}pzByLSNaZvONmrs+*2Ck8a5M7*B$|G{mrNX+EZ*h zg|?(|@iqGz!J$lgl$$NqSHL-k@ajFt6L4f?4gFMlqDV!`E8qIn)in&jU?H4-OY2Uc zgbsp_e#pwc;m}OpPU*@w#T}+CMZVEvdl|LOGz@A_0-=0io$V-Bjf5`wJaKRCF+7sh{I|= zF~bznlyDqhVbeBi%q#3Osd;^0q01+XDY)F`5{74;nkYbJz?_ndr@f@Fi8NtLppQ3G zWsV7^Wz))s&ED|2HSej^H(reX8B#n!;!xqUHb*1fBFJK`e2g_d)y*c)qHdU&CD z8J#bde3;@Yu-F}+;s8u!}HUq!K{+Jd~qeO zN*tjTf>rikXgE|t`jRvHlG&9N97-xmo5e+S$jk%V)p{fNt-ak(S*$e4RyInHPj8)j zCXhkjvy6ZVi>&ick7AW3fr7ev$`;^(68*j0`HmB-889CSvT!Fo-wPD8mChO0hM$P1 z_3->9rB8o;Z((6ysd7#tYzCT|PR0~e6ga*(TEfLnS9Nm1PsyGi$B(k39JjU2PRgdi zIKqq$>lD=6@Tt%)k@JX;(iE4s6Ifqg?-0w|y5&*$ncX|{E%}r}G6MW&yv$5i%z?hq z7}*yZ%3uslU8&NsZ;?=v+cETugOQzGo7mFbfp~p$qa@!7X1`thrm)@X%Gd^{CAhcO zaJ|iz>Mv?u@t=rM8?PPy*w$YFMR5lOkx*p8=0pR^POBhdv>?byPd}zfZ#L}v_8{wz zb2c0~5K*q6LoZWuhpg~ZhW|5m&YEgYI44G?DlDcTZdRI5{&D1ik!*D)TnoJR)s zmp3@%@+t{~;(wIfn9q;!XJry|*@sT|7Q%jyAcUeTPU2rF>J*Jd_>A_ycN&k^J<^ zW3EU%Gy)G77mho<`FyoC4)$lu!Hor->B?QL6;ACD9`=+yJ4!s8FQ)L+>ZLZt0v9fB zD!cNuY@&rsG)WtZ))u*mhlX*q0m#u-{x}aFE+a6a+rUu+cN`&VOgaY=_ z3mBqk#u=(X7vD}bB+Tq-m?fuOFYVeNA0B>Lwh*>H*KPTmrc;vGy}&1O!sQ{L#~~x~ z-Zg0c5`p4_-P_k|_SACha(T{Q4!X0=E3e|1gAV$h&B2C`f{L?g2*(snCVQp#bFNA6g1n*VE&<}LG zf$tt5F4S~NZ@C$l9-UAPe`lI>;VhZ-hHA&6vfvE6a6sLrU}p%=xS3Z_Y@a7oQACor z*^t|^;^6JE-O~}969z7H0kqG z;iU9USG+=Bt%9@VR@E$q!vOQ*>`(=-(I8H0X*!D?x#~t`4E%lm+U7523^Az56|3`3y-`;|fLM*SxOFkpr&gO^H??F&NF@?Vy*+vh9~P7^T$A zK7|m|senO&ljONJ|3-(Q!$}V znmQ{41W@}Qo>m?#0c2V;1!ZOB<*DBs?CpUxciie_4rWq9k3H|<%^IAt4~V`P5yk9B z@u#(vwT*esufNK)_Y?*X7=Z^TjtWZIp}c3#(X#tDq*X<|izR~?d+gYjw3}UnslUA< z{?9?Ju}lDYNvQaBc47t|PX|x`RnpZS@Z0e=IA#m@Yq4$nBN*=tsyHf(CWZ0{AVLS{ z*CrPtLABWlfQxVhz&P|t*kk)BrU)mjMd z#AFyE7JVu~GzrE{nkM(LRxX`*1vV)`-0pDR$3|twVXpGUjQf3!$fk6qiRD% zJpBp3W*S+|ssI(@ ze9-L=@hN0I^~H^Hit<#6?#K!eDJ(zhMjZ?2QcrNLnY9(Zcl%Cw&rmJ2q*D3l(MZ_w zNc9xo*jCy2JSF{300P~M4ieKaZoRzNxU^D#*OH;rQyruaSc-LSWYxAze~emm>6FT@2!7 z4yySrVD>=1Xt*ZNWuj;0Axkwcl{NDud_>!h@tZGo-j4dMj!GsW3EMJN(X}QA*Y!qb z1ig`F#p&hgNiBCT@ib5~j;nO&m0KCQX1W97`g4B?Cq9bBFP^&&SDTFHva+&iamtgb1M+l>8#vBU(o8ByUy}E9FY8XS=~=fB zfKNTq9^EzLNhaWzBiYz^B5d@6t@-|N7Y&hpk(Qz3iNCmAtAnO4!M?LtG!?j%gkW&k zQVl3g>w?`usjW<1v)S-&C*L}_?)h(TkW-9SOJfwmusz_aINfrTBwTaw8I7vBf1&DH zd5}ClKM!e?$};V|$`-gIBO`<4VEg*jQS z-di!l!omjEYS-(#f~O>(GnzrrTOEC<&4>)HtQndIx#>%By2&PlR5#NRQoc`cKfGb-EobyTj`W-C_6fJFv}MaAs%&w+fBl{+4U=ks?LR{r=tm83&4W2B_WO$?3i2r@ zQ&k)TF^q0}hQa-Q9@fCHn+W*$FOY8t^=DJM{{=w*TIU_RXR#>8z&Ri?4nQp_IkYko zqta?_J6f7vO*RpW6}J{Ei55~U5DG_hBeLKgChYY;u8#YP$dL06zGb|n$t4PAWvFHQ za;vyt_1x>EODSd7GDYmwa{MU&?m3LMVs7EtxzW4&1RK5%0ahHtPOLX?T-qNDHBIoyl+i5ovE#LOF^F-aR+{&$1${8w`^PY3~6AioG@wB zD=I37hKO24=xD9w5CpUGYCtKKlL=H$dHz)fQ~XVFz>z5&2YbgLaz(E3@(!S* zf=x$^GlQYYAitb$99g{I7Ma%vE*eUuKhbDrhwkHnCo+wJw>yE0Am+j@Nw$=N6|;wj zN40!LbDn4*WI=#6;)uco#bWc<=qgp7Mk8gAa<~{Lz1i2ii%Cm8xMWY4Jk)+jiWZLH zLoAKr{X`i~jH(LK^i}(KxS7Qs zm01nZ8=C5RE zJ~>0MsJU1iqr?`PCFqiZp5Hoojo2z{ek-H}W(S2%3`w5Yy zUw> zx2^WQSI8nF6ClrXltr(L65#>Zd!3h*xryn{Xx5G9$ms0od*H}uCRPLV>hXnADaGp& zrp7oLy&YyG7Qx0J%gtWP(~-@FifL9gMV$4HKbE#sIzqBDl9hN>q|1-9md!Yvx%3pL zHvP#Wjs8~EssI8a@Sv71bkOuQm^DQ4zpjcm0rKPu zjtl_V2EKN@?&xhjW;97*U;qS1>m8VqxiXH1pQSXLGC!w4`oe@UO6)E&#jxi0FR?uf1CR7>>}}}3kR0vMFh6()88P_?L46%uK-Yh ze2xH!3&W--%mzXMkTSH>j3AI)Xx=Mj)jYdvLvb-iw42uVvhJcLe9TmJa&mHnbPxN5 z@ipd^p~c0NsFuu5w2>J-;cu#Bdx)EJdn%2xjPii)1j+~4|!nl)s7B0HmIB8Ne3bT6-J~d^HFX9vd4ZjyM z)FP4G`gZ%R)eEZM2e@0#ugIj@*M}oexz}%o6~9cH{k?k#uf!8UmF*WXCkOt9!m}LA z95)a_zK-QjPrp7a5q1l7Ml2h_lu2mM_uLiVrN&F*7ip- zje`-i^3FLj&T}VqkyOhyN2s${IX8JBDgZe>q%OVQg0Vc;MzUg9s~Mcwz&3iDt%m`w z&RD_;oP&!969<&`5H3U}2l&8S`x?XhpQo4s{7e)Em5h0q#v`yl z(ex{qYOgm@no;ymt<1;k(p;0n2&4M&k=4{FV#`up6fDuKV&?L}CF0>&;+K%R9aW{a zX=}-xDlkl_HPY!xHd^rIR%4_2)m&2*J_sl)f%}n*>wc!Y%Fx*+S1kzSy0+0>SEaQ( z6#0OQ;hU3h5U(F@f}eW?;?lOhfLfSmy!hryCePs@yl%_m22I%%BL@(){#!upK}LKC zrNl(j5Q6iBp>zaRpQ$sNfA-%mD%AGB{WXxD)Sb;2L<1D55*i5tg2ghC)4gTa%;a?V z;^YO|7LTwY2RvT2fxB>dNg6a)A7L__N5bn4&v-f1u`Ej&P zlKr~P+3@2MWb1shnVLJAn+bF@G*X{8?HlW#fH(mWNy@j{eyQgpFS_EE7F;>ku-^NK z$0KVg@%&^|iUURsbX!L3uUQvEQu>jPf;yc(n?I}77^NgjU6JfOl?(KePDzD(rbIq1 zej#V1Ex>guCz{NSa3DOc;#pf>KAh`TO(sH>rK59@ExSh!#U9huR}KZ+;MD2%=gq>) zkWVcVj~x$Gs#$r$1$|tXM*){sAo1<6kdhKD`T;sbH??w8aZ;C%h^TeX`!GIpwoo)s z6?n=GM<$X}&`XDqm&Va#P3q25zhzfgRteG}Yvr_&Edq&|GZ3bLbgDhQ(WCaxs40~WtytcA1 zpa+!JZ1{LHv?ia{?APN=2AubfSmeUh31X$_qg3h2tw9~=sfjCb*@|gfGz-f5WNVLQ znpG=HtI65v7Pv5*g8(5>h=u2LCJdB`%f`4m?)Xtppvud>tKGufN)z`=3U`Ka&9us=;~kRZ!W7 z8Im~(4vy8!dFz}u;Is$=PlGT_yn&tXyHu{sbMOFRkwU37KucRGo;1NxW?RKSJ7kW8 zb?j-~aYsyoNlQsF(53l>Ti}1?efK}r@BcpyI~*Y@``CxWu~$Y`_KwJQjO^?^k9A~a z93vUok&%#yP&jt7voa!kOMEW%e*OCW2fpVgZa2<(o@+d=>v6x|ANL0f_tgH7=M25G z&@h~vJ=d86s&DiYco~JvC2EybZVeSgS$5Nm6dTJudc@`E|MZTzUxGG)z`4X2@43&8 zKlBR_!S9cF&-$&u?t21kjt=>BR@JnxfoD6P!B?njxuv*o_^GJRMaIJH#jIQphjoe&ix*sK++AS|@sUrSEhzdi)NvvIuD((Jy} zv$TLme}$B?Y^zA>ez^sN~1VS19bn$#rD*7!Hq&NNN2s z8r17@*SG)|%s0pxRdRYN?h)=gH!yuYhFpwHVpKc~Y%If+^TPJY*KaNxAQ$9`RYZoC z#_=Li_f0LT4IJvkSw{3aFe=iHj-Z@KgyBQ)4ZJFtw_8p)D_a6?P}jlvcco`{ab;yg z-yjceHw64dK#*36O9}T*m6>~c6JhE4dU_p&MMX{iK0a#HE7{VyQQIcp9!KK`WZDA2 z3{~y=8+4L7VQ|A8j#55aAJcqZeGHl~KOF$DRq5m0Q19dkuQjXBgXaa&!mL z$^|?f5%S`cCd=4Jeyc8oz4K7deA(DeysEO|)cpdrD>)V(3)Ant8Mb$KLU&a@Eg7q> zHO0TCBe^YT2r)+GLx z!=!k&=(&bf7n(LaE#3UXGbd$3C`je%RS}>wELt&}U5$ophwuSvS74-r9jc>?Yz+!L z_!Cs>E&+won0|kQTY2W*NghEvxNwkSxIJ~zc~15{==a80q^h#=#N5t|9Sl<-fl39j z>MvEcrK3GKmsG4^FYM2T^u8eQyWDE?1bwXL%f3{r_hLf#nPZnSStFbK;~GafX3u{>YviU`dc_r00~| z$=V8!aPeJya%Zf{u-fv{Y0I66nD{<33(H1Fe0}8#^}J_SF*17*dpXXv^67u+%HvmC zP3x6W9gLezSKYQg933Y4SJ&3m+-BD+dT8ovb8s{p+^Pv;GraYT$elPgMzov9inE~< z&D#3%8Zb0d%lHO~JsH|F?|E+jPBN5U+9K>nDi z!y|E$yT{Sg)lO0$+lB}ch+59u8ur5`kB#wLg3kH;uy&8;MnqD4d!BcPXhz|<*v0U1 zuRcBp6`8fO^x__?DWFKxk{=l)sML_{Z%h@BR#+MP z<8v|aM<^5&R)nq9Dm@D@nLTw>`TnM^E+Tf7CFqDA6sI>}Y!@zP22Dz)m$x;tWC>_X0lHp8qH45FxQ-1> z!fO*1QK)xf1LJgvZ7#1Uqw*XoMB+y&VMOnXlT1r}NLrmp5ji$s9(<4V0VBg=@r^MassIXQWGdDFU zLsvFdLIe|uzvnuZU71(Q7jIR z?z~w~+B_~*;uNFmXRU8>*1hodDy*05qYf2Wmu&^-X;nr+$MzXaLj3Z8psQDy_W`);{rT_5q z@yw@pWfV?l<yX584=9=PF-6-v*x7Mh<@Uh00k=$N6Pz zKj~y%@l-l*&i(kMvM4%56;mG=XC-9CM$t`M=xCLHHJ-3rfJa9~HKHp6l;Rd7Ag2jZTi!B!8>GCciswzLM0JiAmC8)?V! zH}fjVHq{{k_;Tbnyb|DY1aNp%=l!fO>O7C7m6hLlSL&5Z5!8;t;U~KSh20E~_5H(@ zb)TBJJ2dgfRCm{ueMn05_xYW4YwA+A_0nbBFO4T@V`q__L*qrUkp}yd$YE(!*9M|w z-C@}r%u}n~!4*^18Ae)HuEE<2KbKw`1|9;C2PAbkd_<(%doQ`|*^KdcDd=ZFCDmqp zm2<#@>5ACrBo&Lf;Rn;2!?s%UkZ-(f*uUetnl#Cz$FVEc1G56!=^LFJ=dVCQl@H>; zJN6cqa?~`*&mVPaC6&KHBZ`_L(uG$FoyJ~rZBuZ9KNCT7%bTH?Z_b52Qxg)&O;RJ1 z1|?Ist*n&RM1c5ga7?0rs&iy&fU%>oq0U6H^WE;jMCH@zx$4g-PMusp(^-+z(&9?g zZ{eT=q5h~!BP=je`OfV~+i?7jA`pAx>+5?CzQGImT%oJ+<54o)W39*7%hZkpg*fIe z(;;I_qKB@?!4}@g(-Pma4ALk?q*b+ulbl4d)(8}W?&(=J*V7ByX>R61gK|Hk*#r@3 zjv`&meY8ds=1**uh^kwhMt1r2P6>a;l(~2qG2eWGsC@h<>vwJ#<3iCTOc!G{KVtD|_)E$1mT z{6~-=Qd85GfD?g*WrVP>SAE@?t>XeL4RxZ|^>=D^+@|OV8X-QWrlx5$wfc-bhI~Qm zZ?0@Oys_Uih>l6I?IR$HiMhE9OXIV`3{w|dUwas9#cj(6 z8Jds(F6s=;Yo;z@w{`~ywXy&{G{#rI+0bIt@UY4x+!O93qadb1-AxQMD%0(j&|&%A zm-OAH^lxvMWn5e5uO{r)f(xC~TB!7L^Al+$ojTSa)iU_#FByD7I0TuKjsrIlXX#Ok z$fdPf=Hky|lNraL)iUfmbeUx{|BAR=kph3G21ztuET7;(=G0?&?`-?iST%a-d5Z%u z#A&agDrXdwW7Xx+mkn|&Elf*Bn%hBdTJk7SWifL8#><&*zT)ccjsh2T@}Hwo zf}r1fTqe%?`Wo(?vuM8cp({QLKAA%=c8C=FgrWs+Umo&Zdg+}hj1cLV*6(lvfiZhP zR{+qoZ4m6C*0?T2?8hen5EBv_4V(W=?%2kT7};yNS4ZIhF?@kj&YlS;%Y-r|`!UPl{!eMbn| z;ehl;ZD9NZvM)3B;Nak=g@r{e37rtTv)0h3fLXfeqU#@9w`rp;mn^zJvXw|*O@mfd zLxVK6`mUsp>&n|Fr|H$%lDpW4jBm@y-husDos{b%f*{*r@uc)WFZUypCg3~)o&r01L#`QHT&`B*|A^z}V zL`R*$pC9(L6V?ZI)%PTzB#F^FYmxT~8_imS<`x#N4Dk9<_vcDf!7bA8`g5g%Rjh@q zeoa3GXf_5|rwF68G9qmoWB9!11@Ql_p?AVfjGU|RbY(O+VnMN`?>?aLb0q+f&tcV= z563A-@bR|fLMae+1 z{gst^ieW0%FCy6r7`eD8zE7VPsihhPaWme7Ow@ud;OXf=d-D(&bqd-K7ZyKf>&q`8 zxcHqLka@Yi0r01Nqf)z_x!|wDjZmr_&Y|D6`xmT?4Nw3jO{u>KD17CO30O5e6c^OI z;)jV!5-E?M8tpJkVZD$+!_!y2kCm!uJiD)oO3K4}@H4iX1?1 zs~Fcihi8bM$cu8a(v>+sO5-jsVScZK|KuXPgHmY8>=tF3oRk>qb4pz&1~YdvsnmL8-ZtJ*>fyf}oVLNnkn0Z=;GD1SZxXO>|18e!4_@zk_YLUS zAIgXA8xw@53pZa$+64%M&R2|CdUk5A#u*6-8k4P^kkSa4aA-#)O=C1@%EKh5gJAcm(XrnYs># z+|9h4ad~7_Mwgt_74+lrLet9m-uLavv`Z>*wxhW`MP#n1#?UG|Q|V%c4)^X*Y;Tcn zN+0jkJ532oU7YRpQuCT*Jk-*f+nS%}pCJE9yRb~Ie^hyV-jXA|@Hde2kz~@nrZdVz zP_vtCmO*S_hK&I_E*I-33>NbOaZDUA6?(TDq*417k~&Y55_R5N1j+J8(6o#u?w0F* zHPSLPQ6zrW^wsv^n6MzrfI{c1E@rGCz*#~P6U}`97g|c7RK3)yn%;kDOHu3n-FHRZ zL_Sbf(9E*&K}5q2MN$l2kNsw3T7ra_^RvIHH%go7(bqaCk6u^4LHP=E(u-D?*%pzi zb9enMAXL)~Ces%>ur^LKW=l>rmVr3wNcjNQ77Dk{M>jaBpa3um_(EYZ<`yklTx1g> z&XRRDND;~ly}|=QYBFOJNNI_rD4DUKojo1^H37SegXYvzv*}_dkfsBo9r7;h1|`*G zenxRqlQ?94_gZ_%659v<{2ksT@BUmskX=3@n|^+0O)BZXTAi&}DsB+LNMTluFX2h| z-1qM|aDGKTfET|cSj+lqUZ<^9qo8HiP#=N$;uNIK$r`fyl6ORJ^lRwt*KD*#jW7Fq zLL(@Jc7mJLbdor6^_B9_^DkHY;OvDQ`E{TZ=1@J4EVg^6MnMlR# zy`4^5vjE1mS|B%Rq)As3fV=?O)y2-=p%4BoJG3$4P@{mF@3+~eBv0m{65ez>aj z^pp;2Ed5ipuys86lEPU^Hmh;ff)GN?9E1v!A<#<1xg#ZK8z@T<=f-+^#%qD{<1%;u zix&yOe4=6lp`UYo6q$o+;b%1MUPLs@{osv%1v~PO!1Nvg#$4yeJBrv> z^1B=&%JKdOb~#$M^`{37AC>M|ck5^yJ!a1m6cOYN$(;1#;I3-gS&35>9DNGZ_pTTL zvZ8_PNcta1g%s;q-M@e`m1=3p72uUb5Tr_P18QPcNqT1Qr!&^t6pp||@>~tv>d&tp z4zb2iiPpjWukt=DOz1QNxe{? ze@Fhsg`H4Eu_W^6(I*zm?%8R%io1}7$w^e&gS|7wlFCvSoh)uQuFRyB?Pv}fk)SIi zO8L{R!P2YWHY^l|5k(p~S5_sWyk`R+PAs<)r}tl)m-_=>vyHLp{=mp+7^OX}VV{$Q zc_hX?Q{l(m;!EHRtiV-t10CVOhp!GLHnggsf01}vbp?Q?u2VS~9u50V40+}yRo@R+Q?UF;umsd8aPKijJWP3tBda5mD z{fg~}y2}Euf?pO-iZIeFH}r+OEq2|%!2LtT)OQ~xN%Z0c{Tu5Yid}y0jP3xsgs}%n z-Dk^LF3ug11FU;10|OMj!NS7AizMJ)DF0ow|LXDV#ScZ9e>?P@M=g`$+`$M+Ii?JW z#pj)A34G6Cb)q-7UB&tjADz-Kguz@54aSd2N2DWIMg=EQsAc{0aHW z_LmH=QAcl01{!h44BiM#^Pp~#8mg{N&&T#if`|fnTgK)>P?2!6ZCP3e!*9uZU(W`# zcmByKzNuJqdCW-v@0dZ6nESO~#K7zuyXlzmcvx9&Dmmtk|0`H|O!yKvvuq+1vk+O;=Ib(@Xl0`xX4bN#DCvT!4>P!8Z8qzE6o# zNQ&7;#NDCL!xW$k5vm6hAKW%O$Nn&!5&pZgv<=b)k1{ug_ZYgny9cDf&Cao*SMfn) zOlTtSx%!(d`C(&fiFka?%@`Ra#m@R;+hyO=cC3+?VZrO11xdR(83Ho0s0|mFhlVyq zO}}c@V`#IgzgUZ%_B^evt(AIRQGs5tp-!WNxO^cF`FC#7pxQP{)V}k0&%2I;j3q8M zHY_*z{Dk##D}3vnq`+=Sc)itmPBDX)xi#~=9YURV#b4>xo0@vuxNcpb%Ku!dXl(3{ zii;CqMRF)-zA{;M;Yjyg>`IsS^aCP|0Bh?)I;5vG64oAoA6AQ@{r9QpsHw}dd=~V> zewT1}`0$#XAq0T#_c~Ua%<7ni_U`1`TO{!{162l$3-v{rs^PuA%+~iN1G^N3aLGQv zpy)*l>i(Wh$p7O4$O&WM%l3idDTY{qw>J8kU|p1v&qR{oESwT~$p3F^nP=ceJTxfM z1fKyCWeR65t46k{h*+$(z9Tcl7Tzl3>fw$Hh%@HHXAUjp4h|MQUrYU1?MN8z-CYBj zj6fY zJ3c<%*LZfk>HMs5FKUvLEYzspiwI)d<5<*;gtokl5?X8r6@AjPjZatZ^l{sUtQ}pG;Q>l zr%0^^{e(vy-ZH07GPSjdWa4_hL1xQ8=~8lO-s$3Iwkhn+oQG1gO|g8jtM-xS_|opc z^eo2k3*|MVadV%%guh1wNckw52&UQ|d(Rwbsjhi=c+_1j($Ty0B+ME-I-AMuUI*7h zKJ|jA{vRjZ>`F5nl0$4lS1)E*bcAb<&s9`Z+WCnmReqSxR@@~XeSF-;>JES{y~o7T zh$+~=N#LV7U4Vz#onw@Vbz+_Toq^Ay)A)Put=wKi5AD1dkAk;XDoq=S5b4x#3x}?t zioPH#z}xroq2M=D1hPTzZT#Qr`TO@woYODt#m;H$@tt!Y!$&t#^aV<;UuXIw>?}&tkhhN>_n%zPM3%tdf9LI(& zELe&Lu6e|D(01>xh+c0!KV7%RX^>4M1D$-$p#6ckAsf{H+umr>$ku2dVcD`Q3XZ0i zTxXhkpjHCo+S`}*EKMmzu%M@T@3d-cah_;@`BU%zf>47E4$g%v;_Ss;_}Hq!3za#kn{o8q~lqfk4c#;2bk@`Y)`P2WWua7EZgmY>4-#VCF4!{Ei4f#qr H^RWK|p<@l` diff --git a/resources/profiles/Snapmaker/Snapmaker A350 Dual_texture.svg b/resources/profiles/Snapmaker/Snapmaker A350 Dual_texture.svg new file mode 100644 index 00000000000..bdc061158cf --- /dev/null +++ b/resources/profiles/Snapmaker/Snapmaker A350 Dual_texture.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/resources/profiles/Snapmaker/Snapmaker A350 QS+B Kit_cover.png b/resources/profiles/Snapmaker/Snapmaker A350 QS+B Kit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..2e79b01a243a8dfa583c8cd7c00aecfdb7690972 GIT binary patch literal 217420 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�S2!!`3|O!u?wan8 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 ?NzRw&L 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⁡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

    8`f*SfU&2j9()q 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 literal 65597 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Ėn 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 diff --git a/resources/profiles/Snapmaker/Snapmaker A350 QSKit_texture.svg b/resources/profiles/Snapmaker/Snapmaker A350 QSKit_texture.svg deleted file mode 100644 index 27777e16db5..00000000000 --- a/resources/profiles/Snapmaker/Snapmaker A350 QSKit_texture.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/resources/profiles/Snapmaker/Snapmaker A350_cover.png b/resources/profiles/Snapmaker/Snapmaker A350_cover.png index 9400dd45fbaa86a3936d526700fc21a001910d63..dbecc7e061fb40af7f79a7b29cc78d0190afeec2 100644 GIT binary patch literal 207557 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�q6uT6Yd>&__2Y^;j}4pr8RTVm_JUnkX0l_2$8SE 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

    X4 z;OO$s+n3mD`Sh7%>})VTHcwyp!slstWRQ06?4--rE--L~zQncJ4dsc2(t4c1HyK@? z{=t5lnw(~f#p&rePUsW8K?%Ke;oG7=pfnR)!x{*EJnS$@j1OFOK8>cKax@0#-X!w{_9j-rQcU+4ei_e2!nS+77rXO zOoFEc&9PnkBj+MvyHq)q_eq>2>4kQ!N9!(^T1r~cffk}L?1k809~ODs-LWn@?;cj42d~-*|M*9r`eWX=7gL!KHPf3OZO=8`iZ~A zKcOjYxSNs&0$FDUpePfJq+E_<REdv==Z?_Jq=z#hggAdueOP)8W7?^gH%&}OdqoPXz%U=G%+>K^a}uHIIBS9kBT&k zEqH!BCnB^lH*FXRk^*5#7nwj5ah;L93>9OnA1G=7Y@>3_z!)wV@g`TCah(cW-Ck$h zf(kQ#y(J01DEJ7l-ekZFUuYED*y2zhB(RoZ&f)RVal~gy9p3U(O>?jZpjN5)TPqv% zW;+rl+8g6&M-oR5;qu=NfTpi~=W9?0{$u^|o2{*_4SK+~>cL*GZ&aDS8Oi2mvYaHF z(qj*B(xl0XtIFyWM|F z5As1eqCv&e&pbxE_qFH=lB12p`o79y5pkp@JWt^RS;Y&6s7?!1R#8rScJHQBCr{DE z%a`f)?He>Obc4S8{l8!?(eq#VqMQ~v5hw{b#-U3@0Hi=$zu+YtiZIgq)##=sVJcig z)4+tp#KYrZ@@;KxxwfaICT(u3qHI?@-(TfM6{D%K*?GKTaktiVw$+A7jTSSg9THd} z?bR(<*6B-LU;!Zx6B+q(BQXw_{oS)miLCDiOIQ*`O_ zdvvJ#2%SB1R)3tLgPjMMBRxEPSFX2NlySYlALcfg1}cbA6}zj_Y*i+)fH5*v8|6YH z97EnvWx{B1>yE;Fa;|z$^1_A9kp+is`|0$Fr|IgAx2gBeMQ2Y3ddSdF9}N!nQKQ}< zPMkbTod*unj#3HVKu87i=t@hO8;1oF{@PYZ?+$sGcxzi+#l>8xfW^`Jng$fB#=bG} z9RsqiIk9)7P^qIBB}o!cS(Itp$^oXWDWZxUDJ`uc&;WFTh*s8$dV>&-wdJKVeJGNu zHUbWqFKY8w1&L1ROE7;1iiQb%hDk~>sD zfrDGXuAK+ycYf!eQg?S3_4nV?fVr7|@fUxIe)o5OmkxFvk+|?sSe8C$?c3J;yH8G$ zW?YJDG$@*xp3?VfN*}mq=<&y%GwtitrM(Kj*joeIs%RRx9$88pSsTYN`pE9N)s%qAvR1$?P;UolqJ^+^4I{UQoPfoYfpZn{=v zx+t=SCxQ0lZ~HInLG8b{U}zkov)Ilp2}O|J)g;>1LGc9(Vn1w95(;^k2dwFNv#Nn} zE7L6)K+n%GH3lL)uG}KsG7`#?6@@Y%nT2&r0>ak?0Hf21Ydv`P4(-{sp9b#UrjE8< z%(*TrFV$3+`(tKSK0JV+trjRd4cI@=z7|UG5~df zE6JN&S;p6x16!OwkmuqW{F#A`u>KScK*l}eP_$TzVPtHA-FjfU^GrK5^MUb|61rh( z#u0P%Q`rykIzde-mQ>~+!sWjs03BAN$H&K~Ko5M-4>7nN^zX?hPY>x&Kl7z8{rUSB zW>@~`(#0!BZBRpG?BQfSM$RYLI$m77{0{XG+@W)4&(Ya)$EmfWUJo=>N!J}8E}xI6 zv}}hMp(of_3p~(D^`Jy$1q+p^+P9eJhsPfpzQgKRF=MxtCd=b|0B%jgtfrLGz~LZF z%(AO*YV3ew1^^3&V@eqtwy>c6fc?TPQaGjlr@!QP+xR z5S`1J$1^d!DQumj@=*lr2NhWWWXCP0*juD=t63Shl7awh7keC&*Sz2jZV{K=_2cvp z_3&e!IC`EgUb;xvu3yy$uA_APk>hmo^N>$JAI=7N35RDiK8 zE-x+X@v+3+83=7bC4gv;7g95Bi^bS=UhJ4=w~f^Mn!nHDtrM#r(Y1vGxb06=&z0LQR4laB>O4Y+yASL8+)Z5v z4^zj^4(7GH1jTfFdMkw~&7M_ifXa8i^L-=Qj5EK14iD~4=e{G{ex8~frP1*rnp-H+ z@BHpRWkJ@82GDi2%`8l^&uRVP(XA zbnem9eDHYbrSH*)KJ)?h%taRn0K!{$TDlx%lJ-KxY%Z^}NKAu*MreDAuMvEbB=(r$ z=dz^*Cb8$Ohi(o^S@BzB4oEg>(1JY^q-E%Myq2XNTRRsgFPtf?61mXe4rAOmSsnoG)D*8;#8U>tu3V2r|7 z&SW}7#=%S|c(F<04XA}_Fvd-2lH9MHS(B70s%cQpox`FWB+XncElmp#;qu=-fd04n zm;U_Ef8x9P^CMsV>bE|Ar+4u8Zr!+Z2m&Z_+*4&dp{;T^<;@MA$`Bg9{mwh|}p|OS&?qI`&3Uq>X>RAr7EY!ZRBUBK z-dPon}E<8io#=l~Qa=Q$s_h{1ZC77b9(^Mc92B4+V%P6Me|%h7eDe80(N!oVd(gLZttMs9X) zlAjZ;zR0`|TiH<=OQ~!ey`%q7&I3_f(GnEM?X|__IhtRZVIYmEe~|)8y2M+mHaZUU}sudi}NU(!K*-bo$g|)YQ~sBD7=uT4(wGNc$b>RZFIonL689 zR#%(qH8zjRsw%#Q5S_6_lL-lmY}~Ku1lel4ZK)P*#n^1bD{G3{8s%PWY@yn&=&?r% z8ieKO>a7jB*^g*gxd!E>8W_~1&Lm``0NM}>+GIXZX>jk*1xw7qcHiDEI(70ab$4~Mi^U_yPEdP$i{l4p z1ezH}e&DJQ2(zMqFX|KMa~jujPXbk zPSr_G8ql%W$i|)!|>%?I}QO0i9?<-`5vI=9M0T*j0#=2Pdkb&Cx5-?&Xk zwK?L2+FCK%%CK@SC9&sV8|Mqp<2Q4OAK&s$rNb(f!N>~&oo%4le%gb1U2PNd$JxUd zG>*+p%9rN6mc$*}Be%xHE-^NC9@0N7K>k6%*wZf3zxFY?3+W=iQxp46*38=Nk4dH& zzir(<|Up}=%5IImVgrLuZ+DO*N{7>pw~pAo{|FJ zZyb88SkKZU$#ig0AmX*8q=a#Y?4L#Fwqw_n)QHqoE;63?k?D;3Xm`H$D)k4)NSSrY zSF5q_IJcdd7J%%eJsopp^`Fj+oja50R`G>@NZ2Ly(m}IGM&VPl?VLZ zZC2%u(&2fCPUe#tAj0!=J(dti&TS@!&L0xKxh8uTWhqxJx3=F?Vv;ZO6WWK>#2D~%c~k> ztrGL~`QW39=E@{gr5~bIgYKMZJr_z8ALQ;$g73H`)qLk@AiT-TeG+(>7|StiKJ#;P zJfC3|DNZtRkUS~RhWiR`EE&;PV&d%?6dIj@<&;J_1CY%`M_V3k)cd-MhX{VWAFij}C>JTeji{A+cOdJcct7MI zR~6mdDAF6Rzr#v@=G;aeV5hDUkOp4zGQR*g0hU3tfY5eyY>35d)3f6YLUy+ArH;1! z+@0|*Ix;wL{lLwJ9T>tv>;Y6RI4i9z_vHMzJ?3N#)e7eGhHnX+R;D~ zKLgOj_?APL_fi&tUI~96sed!mlPp5S_samlHSpeH_{pV(GVXu^Z(zTLDAxsDSzBCJ zc*zAO-lCb{0+G38D0119Pcqauo)-x@w-|3><+WFQNXW_G=FGm&)oc`%^5VQ9`4XGl z^}@j(qDy?Xon*L!<@4YRJ^c6Y0)Xa!ANk1nMg8f&{rXqF{>7@wieHmmO7`9B+_iQ2!W}7dz zFM@Zd$}ynBB$1Ghg!$0o!MVnOB3!l8R8H18q>u%^)GlV2R6ym}CISp%l7En6hq_NB zV_i1<_W<%?(|GOL6}o%x4xKvrI1BV3U;@{hY~rIig>u!|09c7vHlCY_GUCm|Jig(# z#Jh<$;2{gH;WpS5_DFf?Up3k+$aD)cV0sYw$8kx9(h`+jp)Q+KW8? z@bD0gjNE08?4iSt(Efd0{JQX5Xfdv=B>Z(nWhLKF0PENsTx=p3?$+YMqBsKR_f=b4 z$M*_AJT@UdHqp?J%ZSB^wknT`Ho`-s6Jjm?a@2RPNc|%T?a)8l)smyrhs&5!^~R-j zT3!=wG-wy)r74x>HK0!5+pJ%6LE7bu8f?!l#?0M!fhSe~iOz@tA1vlWx@bP{D%Lja z2OCChO|8DqE!5K5tnd9@J#Vi0Ttf4>%po)f9P9ndVphFz%AsVDt5fJw0Vt!ojOPJ= zzNMv=P98s{4>av;QF-LhBXs2GQN4MWdxBTGZBD0@=~}4J=iUf3Gu@VL%LrFl^}%3a z0fN3M8izOd!V--PkJI4b5NjrH_n7U1Zit=ZT(6+&E4*i{`D0#-qNrg|9uCwRm~S$EW|G z3USsY=x?TI{7pdk{|f+TLs>olu!g|zA3s5bmuY?Gq-|+0iFI$W!AF!jXP?wjh(-l7rm6`cbP1#U!kn~zlF z?m=Q5PZBv~NH@@qo7nWwq$>tbXMpNr5*y9YmPxM_dL{FzON7RXJ#34CbHR1j@qGk< zZEAc2K#hX{@89})0jPK6^3@OF^1nj>+5zcLexy%-`pomsf9;=Z;Pm@fuUz}s?A)A^ z=wZ7#nwA(R#7PAKtwQ*WBJJnsk>m8tGmq2${T)=_P(wolqk0mpvnzxoD9R$nmM}$0 z`@*-L?rdd=pgOgv!6pTu3fv#2JKwg&Xu?n!O$@y zOc3-7T~O~!AGCeQd$bb{iv^-yv8m&|AnNq`_3P|9($HAT>SMd`i&ce5nxn`+Ys6$| z2kywW5M%ibwz$hj{5z;TM`qy%rxYzosrKRZN@^3T*qbbf%$r8)7Awr|bNUJD?d>rLK)?=O@9f+J zzZW=ca0GHdy}|o(Ei1$)YcM`BIi?@Cj;n+1?YlH!Xkf0}*w_f0(lbDhlu>jSsG*^i zuQx<1GqdBoS)kpg@ERi1AqfL`g0@7q1%ZP%7lj@yMOk6#z;qo~z=rq62 z9AiCZEVo_KEM?OH&lnrwty?|34ut8V*3|~%4_yeZDlg3QJqER9%_KkKK;5bjT}au3 zknhNmqxxER)2^KzRITS-HhCoVvB+T+RR!WH<*UBdDvyFgmFsjx0zBY!F+M)250Zl# zFi+Fi=>N;!n}FGMUR9#|KlfIZs!FAjRGMd5vL(y%BoDIWAx<2e;Mf@mHUaVo@F1bn zfer!s3n6r3piRF9n)ju7e1!0t=Iee8hLC}f(XlfbJGM1hQ%R*Nl}ba+^IZ3ybKbx9 z-v4l}6dv%PKL~a6RZ5ns?r?_xUwiGf*XpzX-Or&3P7>hl+_>^KNso5saM1ra`i^qZ2x^F-*@WvkY)uPnzP-U zo11lGx6J(Q-Fq8fm#iC&h={?#0WMA;?+Am0bnQXH=--`d%fJ7HpQr8HcSy=HCL^2&WXex<^ z3AfOti`L2cK@B( z_sb3(>e9j{2mthKhEUHTUpPM%jqk?$1`7|#35LqCZsHtHO^t9jJ_`;*D;DAMzd!)( z9^e1{Z?*`D-ufs1^Yc&i_4a<`)TuMO?G0hvu!NU)Q0`p=L=Re}!$)4GvmNbp&s_)T zz`gtEmfNnU%NGaeT*pNL4LOE|WTGBG7nK?o1l%-UuSVg92Z+XFVW?MJB2-JYed|tM za`s$@`=|Jr#!qRjFEVd=2_xyTakTK?d#RqSd2{gh;rVB?kC6yjpAAl`K2ofgoJ z)7PK-mJWop*v)z~ojZ5d1C}(G%?=9&&VAJad@P_?^ztMCtwiITW&INN0iXNQjH$E{_tm{^+Si{yvqho`dJlWXLECYuWSuw@o2HyTy z;Y#KkdBrxh8&LGNQ5lU+46%19yv&y`TS>R=y^n6Z{!Z#Vf1FOVzr-n3?%Dw>dgRDU zbn?Veb~D&x3rTpHk`|f>3Bb!Cp$&^FyICwOs7G;`7yfcnGb2^@8np}aiWQ%a?np=fXw0bn&t+(y!R#KS|^E{0$6U;qw8{+LbF-%N#;tB1Sp*7#G^@YQt9u zuhDfhGu}ANOBDi37VHGU9D>2SVdu@XecNtMUj>-%?eDQ)7dVA&^QP-){n{;jeZ|2V zt|)MT0`D9CyU_8+#}a>rPxiOJ{VissA?t9zTLghce|+~Y@g4!*AbS`Z8l*UmJ+@=( zxpqy5`h&^v-GoE z^4ANe5|&DShR79TL1v+IF_CO4)1aQXd*VA{z5o-;IUW>bn_JN^<8zmkQAUwmRf{|4 z%rVQFZ3X_2qAZAI9%eF@v-Cu)@|u@6@_^^sb!{|1V+*2&#OwU=yd_iLwg{L11p{bz zkN@C1ANjM7eB@(axbvPn-ZnNo{?w@xr#3LqO`LJOQ9t0&DieE}8G82XU!mhCj@d`jGkn4EuAa))~lWd6W>D zFc=SQJBe-QwrJHk6y%yx6%7bQJQ+JHz)N>#f`^&1wCdT&%vlWj@2PrjHu{B|2WfKA zK_@i}H1yG#o|KbkUZE`;cd)MW$g!6!FkNmz`a0UQaVtlLPtUBgfM%GFH@D;bpjN^T z1=uX0v4h?dpAVWl3_yC{U*D+=#Zn%%%-vv;V=Y~1g>(6kKjn4-9I=3JgwOZVrOWBY zU3by0>+i4tri)H>yh1%aXZ84t4cg+;fiv56OQbUwTeT_rc|-Sf1(S?meXwVjzaEWb#z zG{~DwQV5km0fl=NOeEJ?Z2gq*y@S_5yA&E;NgA!HJfx;Q9kH&=RB3cLHbRa&9~u4ET7Y~r+rn+$vW*k>5cv!r*rhGa{`QS6E!`DrOaw|yUf2lZ z&Qh3tGf|O5EG6r`(r=5wbJTB-b!S%>_4W3#SNHrvh(S)gcH1!Hw{6SyyqTk5?mB;l zpMTY=b+pU^Ea&Va3H97^iDVjC#McH%0fV^QaiLVOoQrkCM!}4e(Uk2qzHaSi{sNl? zjr5h?ZjMqu*Li{q%!;N9Iys7GiM{n+QgAJDuix6*N-YB>nccKGK~hB$g3A^695J2*ESNLdIaN(@DoeR&w}GMN@Bq#e)FHKZ4L zU>6lMVPBe`%cJ3Bu_;BG9t!EJ!SCNb^!N8+nd8Ag3@|QhS;>Hnqn^tRv@o|o1A~1^ zR#XIRH7wySUVVKNU!RVVr;wQ>pWD+ZVQR$7-u!@dF@oGrj_6*1wFo+6IBumg6_Jg= zdl@=od*9E`i+&mIM3C84HNg?ZF|_1WP2|JRm$^eDolx=Dmf0b`UO6AZt~YG$nyQnK ztW6BCjoQ<>SoN}Dtv6p0X{uJTi7!G^W}mf)(wK5q{%B{7rA=v7ovlQQf!9HoySgCn zl|7&9L~AW!Dho2SxG>A%DIkqXrFxpRIApm!Z)~@>6z2ux$P(JQV+Sp%Yo+BYTkO5t z#Ob!iltnJH(iH4^;dD~2D=z}*?*ahLk0+n}8R(<`=s*3ZkAM1&Z+hLofA!eu_h0O} z)Z~((+(Mu0Adv%txZsg>|ID*rvVh_=-Fxpry5+VTXv4z24O%~%U zN&^gwz5_RoAp)2W(HrEMUUpAVjWt?!GUy|q0Ygs!$7|PY<;@UmBmh^>#q$h0H>}^n zmR@MrjoE*L*Jzq9_=OM~W^;3^#J$c;Gb4@HTCuFnF0AE3u#RIyO(dLm(e_~zr^tOK zY8~sQg6j>fNECCet!=br^YyfO(@y)|2I=st-=OZEGva)Z%f@x_VmE)ST)B#FzWH|A zv16C_Wd_R*@Ne|koITq?-RHZ53<5<}RW>((ZX8Ek=a_`AsLO?G%?^yn^_{vz%sf;3 zM>!wZ6qYnKN@!2j4eVts`vJIhatj%>6lU2(u+Ov04mjxM1@Hpt1bubaa9f z`M@am^$t>3*Lmvgy~3L!HvSR^7S%C;!Wx1C83R7hS|;Us^^jHMDA7dcq-w6ojHS1(pA7a-Lx>|p(QaD%G zIInzn-%;T+hR`gh>L|>C6a9ZW=n&_6f;I2B0R?-1Q?PMe}&ylE~vzM1egSWXRkow|YHQr1JAjm{> zEXpOh-b$rlh3JY~d`Q+>>+oTTfqN!?(md?9gryiftcWy24P9|5h3pblGCaT1*0zF{ zHLs#|>sM1&v1@f(D^=!m{=5ZCu;?21MNA@nD;{!AXfewBy9GeI#|J<79tb~w=`){s z=Fc{5+Vqig=epiF(AVGOoCSC&I?WWk9IFIM0;-9 zNniZJv+U52`OU^&%xuk8rjoq@7AzRaD)KzMU>E@dU>;##gNyjy1Fz@m_sh@xCH3}S zj5dYXW~$`1ufjYVjcrXlxC1D2I!5^_`As0#q&{O3Kkx|qGw7F~)h?;Nm)$X{nX+&K z%1j=yV@7S0Sp=(?IWa2XkoTNYuvv1_gM`G|F6h|;{UMrk3=-O>R0fdE*%N&(r)@T& zg10bVTbH_Ekz@KZ(Yoi(4I%ToV%Ij4m}eIOo_iIHJu-nsax$7|(MY*aT2S^$+NE1I zUe9)NSbQ_DBZb{tO5NQZbm@`+X)t_{Lx70|0}Hc$EM94rI9UI{H zhZdp)v*e!1Brkss$2bdecW zayTx|tyFqG;x4dK&D zyy*-N4@vC@2q64vziZ>}1cMgw+97Km{cnHV-%=FZ>KaZk;&m!ORXzD)`7M?f% zRM@LIyw3bQgXPh&F+K<544Nkx2;dk)ZnAdmdb;h_JD62QR4+jDy7jB%diE{h+|MHf zzv3XDGD&E~#wi*}?2hAC3)yVv=N9ZS9S%y(#fnv&)Yd!D9o7*3N`=-iiH2S!5d$41 z)!9F~hE0YKt zG3RsY5Pjvj&lQfdJ1s%ipLoX-=YAtBzSA=&MRuQ}lu5Pa;OjIAr_f~?AZZx;u((Sw z2Q38!iVbKQ08VRo)G-CH~=d_Wi23`D=)iN~>Ld%0kwuDS&Dv{DXT?;NR)l#;d z6MNO^if!od9YhuYeI@nUcg~qm^}Ep!E7_Z>d~V-(>*WJ>K$`*S~7Nz5VH@zkFN&mEPYyb+Y{)yOA2SlTGZpuPy_LH@MH~ zY{yAD-+hktuCICRz4Y(i|C4n5cso7)^e1@`ODxn9X2v+$S2rD0wtVwf%epb7eBt4u zKYQ*3%}!5?xx*wg#NFujAsbr?VOFRN%uZBKd=N zq{zjk0WH_bi81?L##n-Zp+~eRE1K>Fdn^oy-GA@>7AWtb-Mb-C*l&{br& zywil&LkWNkGYLgKsZW*5Gw;!idtqdBl-cC-=Pyvlxen^;?6jY`kC`r)(pebDBVrKj zw2ek%pFQ)K8~^@Nm8W6juVWo?${mN?77n;p5!Qh34!ER|2P|~aaIL|y!Yqc}2szjU z1IL`kX5tA(QZxGC10wfj608s+hk$^mgT;hn>VmFX{x8#@nNFgzmlOm(**mbuM z``v1b;s*Pj=TTHjh+>$RN+{-%65p$s0ou8JFAv0_gN9-Y(zVt0YmL2z+U&gqiB~;m zC&)3ZETpW#kEMx5@9R7YsPW-4O#Gz2U~#iWUT_Nk;DO)u+! z=(cVVgHMF99uJq@jCnu*LAIRqJW* z-ka&-#Y=SeU3b&?*etDD-9~s?@79BYv^m-{dC8mF|aX61@Hg+#b@|j~Vocn;$XkqB0veaoB zB`s~qk_NufnqaABZ#?m&=xNPke|nNc5nYMJA7aR5$(9J(-}ok?y8R*8tUi7G)Mxl*4vzBwB^^V-oT&`amoFIqxN@O?RjhQgMFkRM09rnG`N96qlovJ8z>Mc9ZP6)ImpH{iX%lSNy&U#-pq2to`a>o%AiY?qiEUp6s^Q z8d3@YWZ`wX+yYiCvRv?Bqi$ScKhJ~(YWDNa&a(C2x^-*luDcH~)7-MOnO;49LN=)^ zi#ABn7cx*zB?%EsGMrCDt31v{$%00jgK1g6VUyi74p^Xk6Ybu$n(Gs$m_YS%XkO=8=bT-0CNuC%Am&GIexxTCjYc&a|JQi#rL?u>iRI z&{TL2?)t>A)fmSbw{a1L?vbRE$u*Wzq>;w6q=u^EQ^$Yb%&c_AZChxcU6BR`$^%!G~`(Av0u3j>GIu_3me0}~0?AYA8Oo}sf21yJe}L4%7(fsNMRqZ+Sz6WxP(q!G@Q z!B0#KMl-&DHg4Knl*q*A!wqaiqs7KtL;D+hX8ZLg(mYXYBj^f!r;#7$zvtvhyDo!0 z1pCJfDMid=;(|T0qGhF8V^XA@E*Wt$P`cfJhT3$*+}jxH{hg5SxMA(6qzin{fyG3j zilPXz!8bql4tn9mudy4-(xof-T$hu2UPmEEMArx)DX&+zrWGyBBI9+jN8y@7=Ltn9 zhGkK3ZM64)>$0VM9CRo{W9BRN-W=om05ddJPxu)B9!xl~!0J3TWueRyhe^u?jkzT=x4sqH=Jjroo{I+3jNgc{XrcPV;)@DXz;7+2NhvYMBdylewid*%Qn1Jz9QggOb1-^1qF*woCeH?*(II;HHQS|!yeVa+Ko z97z&}p=8uKn7cbEgkqh{Z=AW`llXbH3J-wR$tC2w(>&%*f?j6*pV zFV)DDv0y+RY35R|)mAx2o+)Ur0YnP$F+_?5^^rHemDaCYOJDoO*XYdIS82ogZFW;> zql=d=@`i&&5lob9pi;>2xj?)wro{pHv$A*K!0RDgVq#*HC;ic`Zm1V_58wz3B4iC& zM4dx--PX3AmM^bzI0X_0asB{wxwuM#2WYIf^~15g<);83Bd;wF167G1Y~#VpsWH1S zw{raK_AR?PoTaz#JawEuVFA_2kPrv?#+4rG?Y(F>)U|Zoj$Lfk#(F$>r)L#fy?Q0L z3@4{1Y1`JVTsT3d(0-(G3xH=V$giP3*RrXi~_CfhPtKp8W2a2#C2(m%O`O`PuiZ3It3Zu6LJQ@ z(Bu6vbI+iyfv-DnKj*aGl=-j-B+v~FUE%8oT`-CEP5GLgo}J`-AK;ifWG>Y$cPV+q zI_b6*YZ!2WmF^q3#7UdbP;*DbwV@qL7+Giq7Cj5#CO45uP?2@aC;&vKX)mf?NhK48 z)~?&Y_gifjtl+j`iU9OGnQ+8igRB7Ro#-Ts2Dy!IUE`SWKsq{$_P)n4L}3C@g!_}7 zX?Ptk1*e!uBkhdnOyUOTLb2gHd7ch0di@5;LdhR1*!h9=h5miT@)h*C&wo;6Vj4RS z2czbt1NI)go-SX$$RH}K+P}BOBy_JRv`E8_@ZP~jLsHWSvZcA1_3?(=Z%r~9$jxh-blpAD%R?%SEUN&a&+lP)WOy_>7a!yKTVmdv|KI4e-EBhT`9 z%LuX}VbQWJU((uC9IwcZAsv(*7Ci0SK6u zrAyhK@aDaHsi)^5IW*t^RsiD>}%h9Zr^jIQe8N1?~lWFPdk03cc61*eB|`t;H69U$!8a#@xNXG z&5t*{;obrJ?Ww>1>*xO4b=$Xm`1I+H_gIirj+;u}Yt;=b@d8p}d#^8i@pE+O@L{^= zo_pwtC%%s!e)#qD$N$ft(y`-5RJYk66TgV5PNSPrTTBf}6K}8$PRDD?qHFeYjf8IBvzGq^MidFTEq1WpzCT{t)xsJZr+k= zSd0Jewm<>7vJg2-C0BSbP)!}k&OAUDK&@^ixd42L8_l@l=igN)4Ci7ZN?Ny2>2qe{ z;Y?S>m&-9uoo+A>40HUPa&7`^;UlvR1~X>pmBTMGV8DC5ZpV$xnD-A3i2l(&?~=x5 z1~C$F0B_M$y+KP1BH0H+qj6cYX+I~}+^t)7(WVXC84O}Wg6jY_Uv4*IN_u|Y2T6!? ziWGF1rpIR(pB$y(;eI}E&>cEvHZPta&)UTUQ6>T~!8WfrWQpr!b`C>=qugFx-n!bp z-|K1P`s?Yoz4z1Uv#(G`*KrHPCVeMjaIlXC272k}k(X%Ku03?a4L9;}?CazRw{5i>#6H@&;|5y2 zW~G-*co39_mb>>$j<4F--qHK`=3cfH7(e6LB%J#zR|e?h$>VhD)CoFu`V^gRKWR6x zPOn8|jiO%X@cF*;j=Si4>{{@Ruf0I0PMj8KP;#w$=~U$28(6wMS(5qtFVi^;GUc$* zqaCh+BCZpKA}rw!h+|+g2IET_mePsS-{#I0k}!=XA%eBSd%$KrZi_h-)mRgP-ac~I zF&Y1SQ?o?3qxkFY>0l5AR@!M^1>lAjdPud9Ys^{rQC_s;BvXu~c0lM_*(ZL8FG(Wc zn_N{OI9#3%zw#1aljS-Y z5?`OzPwx!IgH^Zd*_yB+y}BNu=c6^@t# zfg1`;449a(=MT6<2Ri|lQ+vKnRx0yHCML%ZUGD9EaeRE}1T%n(k3|6ew>{qUrq}k_ zZ}0om(|`R38+z9N#+kEc9~v7SGhv`5)1eRt!U7OL;?rk8_i4Mqo}&BiJ4pZb-@eBJ z=#%u9fAN=g!|Aj)k_EhJIZ9;{=Ge(18tT+yO)hZkZ{oEKIcw zL;!3t+ndS)3xMg~E1m~G$IMfMuup7OPsT3<(B7uiGNp+y&=}uIB9{k4!OON_>h7cz zdTco6yPEsKF9yZ>9TE`-q_Hq#LE=T4|33FDbe3kJ4aR{R6>l@YY>%jSLbqOhn6i}#ti4+&}Ei;K(Csp zj3g8Y?h_^je^!cuHcS=<+PLsAC6%_w&tn4^7`((AG2*4+CwX$zJALxT0{5c6)`Cv*9-v2N=XjD@x8^ z;P8PmMvTD->>9#N<6`dnQ5?|C}?5Z zI5joPg+3%0C~k2NfMtd(18IJk;{ZU$u>iY@!oPwrrwW3J<{3yLdGe;4?&0Hu&kG3% zhN@A(;W^RWnC4lDsHk@XmU;qHm1(#xj$hB>^A+1DW>Hr{6N#M+)6I)8@!+-7PD&EG zbeNkES(;i2g2;e|8ZwKr3>=Cxa~^q-=e&l4Va7GUgMIcpfGdJraJ*V=(TO4hGD=9< zz$)YQ*4qMT?V9y;$G&~^+WQ}&4I9_c`+n*}9OU&AKl-yY&_6==AAHE3i%Du}S*FBI zusU_}sU(rT6ZieVz!jdQ!H^#SGw)0F_38s{&p>7FOr^STWMq8!@TKz|-yWG9z>L`R zBHUdB(Es4a+n#t6^wAH0^3Oi^;N>gBPaQvY@*cFH3(SQ{{5YDlzXkYWfjW2Y4DH%= zBi(=hz4XzK{xZGz;>+~OPkxeyM*1U?)OfZtPMUL`!%m|FRs$>nZe%P#0BuI;j5>Ap zaBd;INoDmi@1_hg+lp!15sOLLF78X}8+5wbR^|9oLwFfD%z2Y9E6`0$cu%hF@3h0* z!b<}yoMr*6r|Q94siq1lWwUp(3;-q!X1KOwHI?_zNp%cB7qoRPpc$;M+c0vcQD#7% zdO1e{J}K)hECo+Y`Jf1AT_-F~7Nk0UGffM6SoN)wP0nk-6TbtqZC{DJTZp?(0DkS3 zA`+akII&!}eGl7)@o`W`2@D3IH4iBSSSwfyfdN{`GiEE?hV6>46CcEY z4s6#jJkqcvviT}SfHOEFI9;akK@LgeCLm!Nxf}RmjUY6Q{cMQ^Fa{96@0JJX_5jF0 zH@}BQ+5sBfUhZ*161&z?QWU!)rst~b{Kh@BKTeUokb!T>McU%6!H$&dUx z-E+^KVQ8@6ZV^0*w2l=!#GSHf^-T+ zpVQguV7BpiR?QZe;Be9% ziMuXSLtPV97pl~L`UG9K;|2zP;vgXoI|!t~peoi2IOD)l5)uMe)XQ3zd+Wd~a!7Id zeLt<_wevxWm1pE#WD*6@;=!Ex^w%T_NyYd(d@gYTvLKlC$_p%Ka~5|f7BIU~;eo%h z@7A*Zyt2Tg37mgGRKbZ0onEApqEk>!=V)cy8rm>F!5uV8=IPd3_R%}v@g7>cdK10( zCqHD5`vN`j_8+G!mj-Fert9o~&+wj2I$PwVpl)Cb=L1B~z)&v}5~KDQ0=Q#+uwdT) zsQo0BYOe*$rxs>skBm)>y*M&BbaHUw(&a@7#v*|Jr+VaX|A9xJ+p}lSYku{~kNw1{ zlkHEQK6QFks@7O0OdHyp(M1pEK6vD`4jS&g=@xp;g9qvV_|H$#XFvOSdhXfhB;bLJ zXPU*Ds~kB@2m^;FMd*Mj@r@uUKWf}wS10XOnN~0AdO2MWDMS4Gbzu-DF$`j0To2|6 zj8&ZiJN2;e8wfrp{u1W=c@^)a8myx{Sa#BfTtRVQqQjRYz`5tll%2-UiZel#H*)@} z3aHE!l(VNc|67FtbDE{vqR+f6#4&SOH30Cq?a2%vYu4OinnvK+6u>jTb`)HayMU6s z>Q##_LCS4*+<44%M@!WDk6ELTOvW1xr$1Gxv8jo!+jb+TKCw1hC+kaY(s^E5>tK_? zOt6P(HZL1-;%YJF zTp=`&2ghw{8eYkx47yrdSJCz@yZEbbu!jyG{RUm`>++izu1|moT+b4~bFGBUVtXEX z&P^M)(4&t$N>4oT{ZUsp*pY=+f8@jw5A`Lo1y?P=86F;GOE}0b+S^alX}g(2uZ*Ei zH*^@-OT&yD10D;Im$H1JnZZwegG7P5VNozxh;T=dhhbdq9@xkJ{rman+Rt>;D=#0V zyYIe@hbmnsA!bQk+u4o4c@1n%kwsfn48%5tZeZB`j21)OLZ6@E&IE!qFr>uc4h-;A z3ZOpjti|R|P{r%`C5||yxtVG1E;Q5$02B?fGNdxT$nOWvGSH%fi5wXjq&`~+wyJ{% zuE8ubezT`6)z9rZKBmARW;!Sw6tcB`&v`-j9m}1A_jX>8WE689i=ixD!ciDDjHN%u zI}A}ItHAOIR+R5;dyV<<6ulDBCB%A-wH1sX+V}O)6EA6IRvOm}z_eS_agR7K=8kLJ zku2C!I}6W52$jt4%mAifad}O($M9U|8T)mX!80PyZ@=wM+Om1O{h4Y0OzmenEa+O` zAzU!bkYJ#rC181mW-W*Xg9%GCd_LH^VLh&L7qC+3q%yga)H7H{VIZB-dfubzeHYHK zYyh8N35QmZ?g2uuU~hna9QPWc()ni+S4bw2wV&|}aqi_XHN}%5|8F9x2uZLaV+;fF zT;P=w9i$U5&B=ipagFO9$7JR5)x5seM}ErKyK?Pp^54~q$1-BB;dX+YfR>hKTDx{5 z-Mn|Vec!OlY@xOl8+ov~xe)`~7_zR??YA6Y#vhJLnUi^{Cc9)b*)kXT7FheCp#d7Q z>pT)hA(xS`HtZGlPOesZ=ND$q04$GBjlVcP)pxSDx3@>Za=r*<7XkGDvd5`YrxxD+ z`0Ic7si%JD&))X-NB_g~-+JkX2m1%wL~0PcJL5Q3sd7tvQ@woX1?o6=mhQUqZu*|r zzm5(b*iWDT!k6gi;iKwDsfO#OR7}{SOoBVWQYZl7AwuXZ6HL+8$*6@3Q=!Dm7X(}- z3aZ7%j?}xjjt7ur7_rPlZ)$y~UXyIo20J?=ZV(j=5|m52u%r}Esk3B+-7QkD*%Sb* zE*p-WW?-AC9yk}anZdL8IWvo`&joN;VdoGh4^b_qYMt>}Sn{D-)6_B3MghG>Zab#i zG2*#r$AcEyxp|1AUFtV$%JYK#T@mPsosl14N#f~z^3yPmjmjtlN?;+z5Fj+qkR|}I z@CKii`2DkNgQVM#*yn}|0(-DFHu3qAxcJO#ZBw;Kat~Y^aPGiy1yc-tTO$BqW0UvW zc8J5dKm}K+L@btc!#0sj!9-mMui3TNgXpBkIffa@W9!#!q3?bDJK4wjOxG*a*WbhK z!{Dfp7c|hEN>^%NZ8r+N2kw86-uWXxL~B;9re(`p)Iu^Z_`C+4qJlYRr)IC0f&O7S z*VSPG++{jx|`JM|Cr^2U~GN9H>{5DmR)^A;Vft@D<9!j_we5e}3607r-+ z&-1{hj*g7-b+oE&1^sV7@;Lwb%U^ybfPPKv^imC9AY?&iVnUR!FKTmTj9pruDF?Bfv!Xo+;%LmVGnJ7jbOXzoIK#hkeW;#Q%V-hEaNo=EF+?zQNS&! zZ{qbR6zsgj_p{JAAn-vyFFNKeAU0o=0+{^~cLyRB(%_3Ve=eSTz z%qvPb3Il;f{=@5+y*m#TT{sH*=%@wnooXW24mov!CFc8Yq2i@!C_t*3j>_8P1w-@6 zoUqIeOwZKOOv5xEhb3H~HA!K{9l<5+`^z?^ZYbP`)nwl7C|8j0rF2=&18Up0?cf-5 z$Sa_yg@gd>13FtTzx+4!(#y}&nl3_Idht27*cS}@jU|I2Y09n68o|W zv&)%JPD~i&BU!M-dr^Z(R?15}XfCOTyVJ$HCK2|+*_oWi%cC^gFvEo_UU!xqh-UdZ z1NesbJqjma>RQh@#D)vk^;(UdD&o-lz^W(SM~ z2J<*3I5%L$!6MIdtalR^5p|^od0rIUM-^nvldvChY7S9z6 zs+*aScMC5M1;RS7UL1iEXL;$Jk#a6}hHTL>VGA6%dkv2au(XC#C+iWpJ!el(^^7T% zI%Z}jIxh8%9~vF)Khf9Mb3tVoi(q*XK>zc2eCR{(8@Av6-KReF`Hv0vO?>#+t0#YO zU|_JprvH@@Lv`s`=FNF5z#blNy6 z#BL|*`OFq}M&d|u(_!Jj4GXY?Ma);?YR8r7rkEw_9>Q#C*=w%ZF#;@foh*JOjiq%| z7l3PCmW8jvmAE7u&wjsr}OG)$1j;-2xxz;4q-VT007@P?HDsv(u$g)DHEU zX;)+vhPFhugaDP<`DyN|;2H&^vU0^5`pF;vX*>~8 zZ==z{1^Vc(e27|>uB5eVHu1pV^hA~R?74x%1LA-f?~I`dm2-0y3y{0$!ucLLeC%a9 zaROT96TIoV>&(fGaF1-?ww?Cew1*BKI%Gjz_ca*jdS;S$@4i{IpnfP(w8zdK-m%8< zmR*z($Tjo)^Uu=_pV>iged}W!ul;i$_(i(J1M9g;w~G3E=LziWy6xIb2gGPuq|>ka$I66 z&uMsQNF(0M9GU}=Jg;($G+WSNZgFf#6v#KAV8Z(;DYFdF%;34q&K}ZPO2ROo8xF6M zA5?`F8sSa&x543@*><>oAjE0=wj0?azon^_j|n~>q+rj#_!ZXLPqIIHHCRh#K?5Gx z_}FpM_)GzJm9V$67Qy&lu9J9cH~YgN8i7srJ)+Ar1BV)Wj!=le-2!@V0AR>hkSdE} zsBKjntzWx^Zoc_Oy6?an?V5Hg{rJ1yPwQ51rXP6wkJ0>0iEg{)PF{zWwM1P%ecvFB zN@^5wW-w>{Enzy0`Med^2qv#aaMZyY~<@^-1})sNEI+9;rMQ^ffD!Qnpo>o0tU zUOj${Ui;eD(tCdDU3Bt92YvDLU$&LzU}1mM_ox6Zs#kTM?--ELU5xK54)wARO(gLHakX9?6&0Z z7Fe$=i=61fQuTVy{3JIs&fNOa-%~k6RoyBwo%&`uMpg9BqA`>KM;?sKQa^wwfH-WF zPTJrY=b)K(pj#I+lY5hU_wU|%&!0bM?G=Zz1rr^_U| z9iGk@{DZ#m@|6p`aly+KzvCmzO|(fz8voqKpc^kuilqhxW?0Y5&}bixjP+B`y0>g?>|4F=aOfWZr|e5s&UHc8^cCvdEP=BIy#KKkS@v!nttjt3rijRmtkw0ZM3 z3+mUiT!aU5YX;E55Wl$wn7bBY3xEsv!3RF@0s6IH`&A2CMrdMuIxxQ!F_|hO3g{q> z1lw6?5yY=z$cL0O7@|VW7mbFS3 z#>X&|XIZZm(;d#SAydmFQ`{xVuW}W-7PR(0n|>B0TGw(a3=x`It2`gsu0_5MJoEZU zYG;qkB9ha=CM*U0J zUarL9C6Gb1EL%o%vvd6XQ_~an&oeB^fW8=C0JW}DCIjmrRhlJj5Dar!Ky#^Fr&{eO zzC3rs;uU+Xhgk~g@QB=l_0T-S(a3AghK-we(6qH>rG0-(z3Wh}7N*kaSn!<%xJulA z-}l;k^@6<)FWUXFk3WN-cZsb3;?8gEs*|fci1!NTrr>(=db`)zmGB6|p^tv-Z4ZCde&6?3fBxl%&UAMF&goNUc1=xB8Q=EP z1z1elh2eB7p-v@v9u?>wJ1)tk3#qu#pT5 zMDL16LupAceCO7XXt#KyOAPB60Wipj6%nTuCh}ZZWJ@yjrpboJx682s@U(Om0nC!F z*{X}qJzJFd0U)r|nQkl!E?yv)6Q zLh!D2pdm4_mO6$m;qM&e!!ZUEjXwiKLFR#hn)6*fb~Ef}Aa|kXoZWP`(uQ?gncafr z)vrJGU%7bb@9nprb4Hvy5CSqa#^)Gv6g(e3Q#F~_h~t{kG5cQN0P>m#UPmAP)Qv_S`>6$Y^5Wl>;bOl2^n4^f_BdzI zf}#x1!y4T>31~42eo?gVz3C46+P6L{)>>t~uC&txkOgft?loAKL4ONCh~loK^Bh{A zG2q92gS1Pqj;!Of;JeoXBNR?+RnSYBrD`IRg`0F#P)U)&p7 z8JKf7!t0jn1gIxcsp0xdbuGra%nWr_<)9XTUH&(fm*CtlZEm48ZEI*%+j=h2n;To? zylU|%jI@LZK_-&GBiqaBjhD^f*iBB2eC?r!4t6h84!n7wZ*axgGiS{u^_*wdj+sd{ zM@pgsT01$;l1I-iv&|rhQt1dcH7=C_KpnWn8(6lijh3}6Wv~A`?%YQcqjN0BSlPOP zZn=3MYy2O3eGe6(n-oDmEv9O-Wh+16EE~m4roi5u&;g-F((}9C`(ffYpf2S9oKSD3O_>#1( zAmiX9Lb)+n6P*YUW;R3HrwqpI##UD+Y%^MeSS%dau2ZJk`9?brX%1ykugEx|jtAB3 z|4OQPb-@fgY@z?I^OLHB)-aSx#RsRPnXu6ehX1*om4|L)jq($*%Q{Vibk126FGF` z+JS(Kw8?bWv?Y=3qqBe;O78Z0i>a+V{1JNq~W$85zi(} zutyQW1&EsGg;d5o@|cdTrwZm_+%c)AO&hLb3qN#Y`UfsjPfrJ3>AS$5!W-@T>N?l$ zUpvu4vcZC~wRR&$I~sB**sbAsNN7TlRTSAqiEh2+E_(FQN7=>X^5s5y_N(8Z9Xq!2 zfKTjuUbKg!?+o5dw9!W)D^5m{>*QbTDGhepF|u{_Wva|qow_%4s3I$~ppg!m>JTgH z^AdgFglDx(UI^dIYf~qkzFKy9mGP)Yv&pzXL3(N%#ad5x4M zxtdLm=w@H!x%R&CLJguQVfI=@k$YVV0zUzVTO>=xq9N5GW!809DlBb)Hk#LAUPG4H;(Ix* zT)u{-Bb>(CvP>LXTna6xxTb1TTH!Sz%Zptbmds^I(9*kHRQvkf-JPc&ed~koef;tF zE`8hE-uTD^58eCjxv9Gj^z>Y6>g?*GzP^jpYrk;4q3||A+u}v*E@mE|9misRL6U&s zUWE6$VdFZwZrg6!dHr?ty$`>g4%~Ae?c8y*{Y=X#+Y(3v49Q~efZWbm$3nX3Z1C_2 zED)xV$#EJO=;HyuvGHM=nVHogZ=R>f7Agz_>Kp%+6DLkT(bw14l&Mb90ZbE32M0Dpz+G$W3cCA_{dC7& zxAG$Ljc>j}U7g*mAq41R>4n{R0Fnd%Bs%0|SSCS{K9`60jOdG*k>G(uH$+&k?iye@ zWa7S*h(%rRJ!G&Gi@y6=raTtH8XPkR+Eo*-BhwI7ga- zwOl0eh^BztX9Ktx9PFim;a+Bx@SfJJ-e>{#M)sVJEhuu8LglKrADZMZdzS_Izc6#zxf0Z72WUVb_HwYgD) zuNY86H(f8uhtA0(k2(>~Pe1nG$C?X^It&|P7DdPp(QotMIJ;~tsN2SZS~oWGU>`bI zNTtMgIEb*9aH&o;;Ibwgl@q#9FXt-dE-sf7khr0HikN5h^~be-rLUWwdG1sH#TIZs z7oWOc|MlP9zH8_8-)Btu%~KQ8`#U?k>mkQNx@&LWWu7kqkWIA{=>}49++O$KTj;)n z2U)|7^K#w~Lf%Jj}md}6lFb6O=-5&>cB=TKaaWZt~ ze2H1gK+adx*<<17>J)StUVJ5_rDQiZ1<-Y6b>$FSBG}il?hVgXGKCg>mbv$=jvJ|C zc~h?gWZju>{Y67f6#=zy`vA}t#+byiu9_-97VA2Wn}s$GLooP`jod!aQf56TLJSlr zb3lu_cd-6Wfs3=-OLam%V|FFPfy?HYMj>NCTbSpO^>7rt5i`^>2&Jue=N72JJI*#K z_Lz39ewTFRlB=Avg$w2}N#cPgju8qSutzS!n13JFK~hrJgt9t+h>J&~SVM5Dlr`3D zdno>^h4CrXbK`i~g`U~nmZhxg-(UH`3kJ7d{!678zDj}Ml1)1j}WMVfQBnq zx;Yt7BD$B;#*NppeN^y>E&@LM&G^I+y?pp<%#gVdA^dw&lif65_b~m@AN@D`=Oz5} zANlA<>DQlnitfJqep<0&}97#laHIOVf;IK=0b#afCZXS$4G+ z`rdnA!x8~MTxyD;Durn5c=yV3UlV!j$(qNywQK3^k3UXdedep2IO#yP1JLtx6|r@* zU(m8LgUsO}qW@*~Hgy0xtI>r=r!aBy3!QmMqWPDkq{UdGY;&CeWe&?};QxlC!vkpq zw$wGsKr&cq&1}w8tDUK14~7eQKy7qL-8!b#)46J&KcSZ9R-Rc{xpKArT1(69I)L+! zeIeB@U~Chbs9FLALrEja-Ta9Ayjhe!SxBnn!P8VfbM752@VI!Xi=O-DXaA!;o*({B zd+dAP`;m3`-+$M;ni`rPpBSIHt>bKG>0(beUGDAS>j&#dMeW`2{vUqm?R2jN(D*!= z#+%0x?gjT1zD}eY$Nv0%S2(>7VI;8qL!lvIWDT%S&8Ma(x~tj3Q48P?b@z0=G%(Nu zz4GWHP+oj20_cDEBl#cy{gdB2I5hUFhh9E%J6M@S*-5tv8>d_LQ^mo|ee0I%=-`2S zX!o8SG}t#vFZ|6Bo@UR<_<;`31}k98QfJX6+EvL5NtqQwumSueoh2P>pX*Aly~NLn z1vp{7bzHgGmgc)vC{JFj;J07f;@M@R(6C z4BGh6gggdwnWR+4No++1I#6J8z7x+L8)fqx0CqN25F@6n7aiiywR+VCi3qL}X@_%u zal=VYb59x?0CpQJn)pl4so!k9AGiu2EAdu}khEZ2=aC=eBnn-gfbmVi#)}H?#1!6WNYsniZ68#U2liJhKAC@r z3p~U3)zr)w|66mT44r~?1aNTIXs*SexOiyMr`NZMLPhYC0GhZ4aX$h40rX*LwlDyy zKIE`qJay)kqBBMwnA?N*KBxei3Pqr)@dI{lJlCSJLqV4Np;-JGZVK=F>G#sHW3SSG z{n+p5kTd!2*8Gfs<@tGus$SqQl{vOPgM)|z(1Kml$hjjgu-`ua(*)hV(Y4%YL6T^3 zEM37m|D6Z@7))z-N{0>+Zqv{pAuT){Y7D!$ zwXI=U1FSWji;?RP8VAH(?0u5>xtFYvcBL?rr1GwVTUu_m!6=Wx`nWTEj>&lRMX~TJz2{Gv7bZH@xoLxpQ>sat{Yq!IvD}t?zm5+vtvc zci6&Um1@$R9x^6z!f3>vmCa61U7A~%J!*@mS1w-cJannA z>t*{iLyKT}@v#V?{|O!+dG|+}uD^HR#Xve6!3O!YToT%QHOZPl~R;%Vt-b3a=vyT?ff|Z?5O{Cxhojd>C`0w*P0ySBU zq#!B!+Qzn8CPZW#Qw;ft8AN9R75n=-wuX2(bDoF2u(u!rww^->q~H-N!m^h{Bnse5 z3Z_R!`)O%&D{qc<8auwgtc(nmLf=~O-qkjx>y}KpT$66xm*e$HDcvmaTRr{ zRU4Q@9=72cPkgbMdy6=VJZ|yi@TbL~S>M1#_C5vk29N8F>$b8bpBthBAb9RupSp(S zSmr&S(e7WhYOVcRV?Re*h=GpX9%|#BYgp*oFpqE?a=Lu!B0C+dwy%Mh;ym)ZcFg6m zqlbBeHZiDGHr_LK=GyKbMN7LR^g)b|!tsBXM}XTMYeTWTBMHxC3h>$&bRq$&awIdZ zDFkHjnxN0a!)NspO`Vh?Uu+Xen(Uw9(t!dVLuGF6!nrL#bIl&Y@IY>Cijw4rU0mAF z9;peD3CV=Jcki`@(e?f_I$+A3EW0j@Sm3i}^}6D@4E~f?$#7iJh4&5DiXA(4GFv-5 zJmlSXas|UP(<;|s-(*eYTc~hx6b7KvD3UzWpsBo2h}C9hdKp-3pQtkcVk>8K5WJ-K zZoStyvkXt2ncQ{nzVKYjT9$D@2V7^G8kh0>0BqWv6iDP9)ktC%fF;&Zp1H^}?PQih zf~jYs6V^KyyHalOI#aTM{CesDbLJ&3DmBqHvgcw4ef{~*eZW5dZ~uMv+C6*r)Ia&l zzje^A`ESWh>9NtFiR(H$&lwEu-?;l0dp(ZR!Fvw!Ks!i+!J$ERznZh>8bt;=E+8kM zf3*9|$o%~5S$nM>vwP!_?w*bd=gyx%%ys`FSYCWA0_gw6k4GPUchgV&=-WT^;tPj< zy6gP;Wr5K(5et+11%}x?)u_R5^QJww&}(1&0IgoVg3fndqCyKGc~V=wFd2k#x?#f1sW8quTv#s4f|tZYV4=fndE?607{I0ffS(jH85bjuM8FW!eMkYZMsgDj% znQ3-164%o8K;I=ddQEzy-}Om_(Z;L4@4%o3FPTVOa%E%51lJ9xYo;12G}mYskesND zhcu0nf~y6y_zS9WH|)B>jw~es%cKPn2ji6LJy7R!Za2EKoyS<(uJrCtXRzx_u@oS3Q`P;{h_s}Gm)*7+9V3&7J=dAZEI-DmR+0@2zQRJee2Wy8qK4AfdeZC4!nk%m$vx9QFk6% zT9(@TX$^ICb`?TnYWd2*J`-K#8LZb0G>{ljG*JMDa})shLK5NWlPCGUFjNHWULF+> zzeUz+F+&^Pqk~}4aGy_Oq#D+__`9)mB7pV0@Y)Ut;`v3|RU%Vt#IVjE;0<6piR2-Y zcq%D~FCBT7ZoK{u26|3p!l`@q=aF(ZKR3^>2aPWzN(kc^7`#YlyN**#xX0%WVDaEV zoYQ4NMx|BQE3f%&s1F^-2LGB6|}Cz{?jXdS8x!ao0kuB@Sy>UU&~-ywwMVhVB;0AU7O0 zoX@_a-QDY$Xh;^$M_uPn((~W`(tGS@`~83DetY1+9j+DXZgvb5#xYQ`KB&&P!VL&*JQ% z06Vh6^Q;m;ol8s97GmHgjiwV)6si*S_7hX1i;cjS?lC1F8B2u?(S?F|?`17aM3Rvg z=Z;j0BKB1hTp%fwP{;dc=Qen@-vAF;Khxqf>GRtpy%cJzzV{f7pC)(+^ ze(S$@uj5)4I%YbfrvJ6|;Zz(T%(d9WHG1;I3D#7ankBV(ZBSrJeLzKC1j7Mpg?UFm z_!-GNqH}1RjkU*mihcxk=wT_-9Fe(?6sP0da8{-1q6-F??SvTHW|+|PcH_0L$3Fz|?3 z4XkYy_P}>*Rv4nrbj@?G=7Wg}U5t1TvSu*ShnkBf7wZ7JP?!;b3r3rQzxTsAg*xt5(;NcO0El%`EHs>G^*qhXX9aMNAk$8mAo9w7qL2=U5bYVRq~Z* zc_EM}>|Mql$C-R`dUC$A^VG4^XAix@{&V*~#-97zzy0y`Esd>j`@)yL@x~cmS%_bv%G4>3$4Qvk;iV(hcaC*~@ocJvpmU zxJt?zLizcsmwE_mTu}{ks(R_FPvyfKsHhg&foUF0OjAGXA`|A}@56h~z1@`C*fMWB ztBY=gU zgH02PA4nFOnwI&NZ)mr>0oU9Y3VBU5wP!MGixU$-qy3y3kG*H|%h&q1$=W@RmID5_yeBk}I(0UV%k4;kR z@)r8=FZ~LA;qzZ))*1R(%qYx*9EkMKaS`v<9iJZPqzg5`-u=C|jx-4~`xxMae5%cY z<<)C8SkSzRC0THjpgh=pIGHWl7Q-I0#R-DS<`xmc;$sm& zFFyW1kLmCK&L2NMI6CrF`>FOFvokYl@skG4pW6Qz=L4&YAlAWkYd6qq9(a&$+IzhP z74vlLa69!63~A~~E(Dfidk_^J>6>$9NSS@sw8O;37?UAKI8iQ(IWq}543}w)t@A|o zHc6TD{j93&qUu>`NiVCY<(z_LNH+4+Gj#ml>=!Lg3A$q-x)n zMu0lg_Nlsa#Eg))dU633ng0x4<4m%NCJ`+W$iUn?B)ASiZ0+U%vSaee8U8D3N=U;n zJSeGct^0#t&|u48AW%w4*<@vuO;Oh>;Jm~GMPQ{+yd+6*`Y5?UC3XFP6ay|S0M4#0 zU1FVUgIFi}V!~O}8D;*fJfs6AuC=v|6UUq@Lr5)*;ah;?!Qa;uKy$EqG;w#^v#jn{ z@ZKjTN9mg{{B^JlBl1>qF_ZVe1FzRMb{<)~5f8J@Oi$T@v{fUiV=x@G5(@v47Z}kP zxaJfC|6nKPLV=DSJI2FjR3ouqwvUQIHB=+Zh%FQ2_gG-eW9bKlFsESlVWODqBx22t zcYX0P6^hu%NVi@4XTLF+T3fuF*<@I)aaTm2D={HJ#tpj$c}YU!6N7ZV=XAkpE-n)A zpO_7~_udD2uq(C`jDcFw+dZ5Q0ou;iQ3nKdUc#*bnaalSVxRr&r&uEO%rno^V{d*v z{mMt5qR;)+U-MeV9kWV>i+Pr!sRlaL>oLzl(M|>1O!7p8(c+|m?c!QFtq+Vc^#17b zG&U|(0wY&9p{mM&if%M48DpP*y`}U$h>T3G3l7vuk^=LcX~esmyUATJ4G#>KvvBW&pCD^ zS7wKlRnGj>y$SCjn*7egw3=s}g)I^pMMjyIlQ@hL+bgB|`(hEuJ8!|)HH+9T@^Rv# zbxw2Hh}bV1n!qFpVGG81n9dAc6zt*IL?h27sq8pL3IAPU)N9WTAL(%80{nD`ukZ$p zC~uDB1z^sxsfm=Qlw%M`x(@jQYy}s5@Pf3&r+gfA0yl-s!$c`AphsS{j$7~JlVdbF zAjxuw>vbKIf|Z>fn|S!rv-%V$EC1hN_+J25Zq(r&;m?EYf^D3pa)x*BM`o7p|L#!OgQmcMJDYW1S=nwk};kE0(XK6)V@W z69)9kY)gk|dyb#3_!$^>!|(=$sY<=v=huW)1;cU)NO8=hL!L(Kg7NE_cfD{j!N^xU zbj4C%Fjp({c0HKR$Hs=u_~ZyX0}T%K@poviw{N-L9>bjG7N%H&)7jO*L(Blo&|SM4 z%X?3!=@%El^WtL>KrcT2e?NZWC!PS>{Xd_2>UaLfV{d-bhmXH{^52|4f4;%7koB4X7K>y@$7womtNt5z-%R)2dw>pFAl-Lmm^#kDS9g*(GY&*i7m1Q_Q{8HtmQaDU za~e38a>a4sCDAsfob)D!^4^XQ|CUOcmK$JX(|OM{8ZRXYz#)s`cQchal>8tLOE0pZ z+Y^AS+GLk9m=zgiag<19IFbF1h3#?i!%hp$8=%`v6)^MW!(cWKT4=>SK9qu_HJSN< z0R4QLFjlY>^9+;d`+{cKs2f4%Tdnq>3InL`!yhL+VM&r2WuP;YRw@6g40r)YV@LB+l%Xqb?S4o0)p!6 zJ?Il=%`n5bVtJeWn>L!XK>E^^^VHn5ltUMsZ?(6tGmgOz!100Bwkk{umMIc9!R@~GK z{#~U9&m*^!V0Brj0wRm?ERx8W2u#KbSf~g3W*U4A7(pqd0)8iBr3dm&2t26HfFVTSh}a@JP&P7 zPK?vWOvpXDv!`>)QLJxw(Z4*tV7HM2caH0Nfk6mt65xReyWD2l%#A)cNBj zfaAGU$DHesa_+*GOr#H&^Hfs3aXBed71E7_JPXdG_CYcMM#ODTp;hvwK$!t+P zHZ?VNc4Bh)$jIp6;d}3U;2lR#e)AzD?Ky`VJjTa|>DY-8zV={07#IHWKx8PE`D1-+ zapzxrECT4o$3NQRLmztIu>JP4pZ@gcKe1`k#@{)0^3;PvLqlF^7>5ctLwX}A8XRYR z{KPACuCtx)+_#?&9JrJ2d(A%TI(LaW&s`*!idZfsVbNvThAz~q-}T1wiQD`G_)L-z z+Q1tz$)E@<=?sJ4RE_(EfrXwH|Ay{(mX-@GXx3TlLJn}pI#Fe$pubJ4^SmK=dnHf1 zk(aiJiHT#475L|gPs7SdS(L;L1ZELC==8l2Yeh~U9l){!5t-NcIyntR5(TtDtbjy@oyWxgC z1<%>2M)b^O7y>OiB*gY{`BlK$6#Z;#fo-g+;2h(?@KGdV@##B82iG(hBq$h+_u7sb z{on~5S)#>K5>vzeYrq9%SyZz)`$au}?wG27Jb7o8q=pf8*K7!)a13WgDu+O!4aXSo z4ek;f=NV7~5ZB{6wAY8pbhu4f)T@gYmp|uT4wm|kmvi=E|9Shf7#94^-+YQjMn-7m%2ryx zZZqxJv6}|_dl`IVsC!l0YTB}88*SaRoeRd{;R)*OJj<^GX0~P7awaTr{fl?K%y%qk zIFv}cOri5)blBE;vxgY*FuWXxfbdz;^CD?^Ro^AVYv*aEolH~H1wr7-JWWnbXA_g- z7A%ijusmYH^3b9F!7E2*X2vne>76Lv^<(c@|LvEae+XTGg61kp8w{X1k|>3X)d6|z zbH^8V{Kdy2fL?t3qd(sI)<;e~_~3&Nzx&5O@W8;p;8TYWAKO1QITcdvT)Wc`VnYEv1Bt*N>-kGga4rV$f9Mh8{ab-}E zsPD3Ul7;yNwiM)vewJsHyzfPpiu9%H!buAb)-qGZ=f@-rq@lq^x*V=EfFJyRZi0oK zlW8nn+QRJHtOea@;{uqVWsOMkNQfJiAu1ip3xbHif<{G%mpnwFDz!Fq&f~nLr8QzQ zV{q)QJ^IXNK1G8AeYS90#)Uo) zAg5A%gH7gjCkwL~-W5YxYIY#9V1ImKjQ<;jXTy>u^vD~3fPVSIzsUE=*w_?JPtMT0 z-nq&G%^b6?%8D*LMj00tC*@wt% zqp75RE<@)NoV!I-OGPsma;Uz(|1Bt?USu5)9w>m{KoqvJ#A#Q4bNnYrn2PtQyp znVFk8G%#?bYhq#$VIbr5x7fBVSyFx#37$PYU7^@ivzX#N5ekB3H(^tFLZwtuwEWOky@KwCa$e^tEq% zg-*AhWb^o2Zrei}Hm#xaotLS+m4hvqW7DBm{xD9iKbvDAl|Rvo0Vw_h3d?J?JaJQcEy~ zJ%08%R;*Y>S!c@94b~7dwN;WdL-w6+;Gae41h?g(o33wE7m%P!#piBZ(rCXn^03wL z=l~5@2bhtDM=(WrFEG94Dx0s^zRiKOBnIEUh>3W9bquIwjVYEcTmz)#h1W3!@LdGp z*Cd<^ws*y!D_&2rl~*1E=g8&7e1`$XOqp!g6-jDrFijj>6Xi$8pD>HG(_A2Hu~(Q$ zRK0&FM02mzb_IOlyih3eM7JB}D>6#`f17B{!L@?x3V}(G4Y7nFkL-f;P{bmx`qtZS z=4-v9<2+4G&C;#6?&hEzBv{J*;lOk1B^$ZAVfZ@)jwU6HR6HtDPJ zeVXRBh)wFbdq~=SVB#V#hK$JCmHD|8@14wpyqTXzaT1bTnfHOg-fUuG8+?gNf=BwDaZ{Ps_ zKmorpefqEdl3qP=f}_EA-msN6S|Hth{xVHWPK7vV2Sy`HtIXLunJD^#H-^jyg~XA} zpYK4|6_2K7bP0GW2oIQUBp&9Spm7$w%55DujBQg zJF;gB?4xsBNj1hd2`y}X{*d}5FPQl$`dkB5@R_=S%4EdtRT!vWj}} zmf3LtNoBX+dY^qCWzmo07$=fKmL<-GB~d-KVbH@?a`yM(_v@Twd~yjH2HpQ}dv5|J z*LhY6zxP(JQZG`smTpPbYFW0tud*y}aRN@*!cWE|By52|0tt`=_=jNvCShQJnV(^s z{Jt#Bbj*|iwc)l_wE$fX?^G{>}4P{W`(?b-Jc`$X7p z0WwE$;Q8q7$!FE9pIK7)Ps|gpEg@-2f$*#*=CK&Rs{I{!X)fj}Drma@ev7x?dg+x> zyC|}FZRFe9V>4(P{xnf?wp|pO6=ZuF9>8mBbXE)^p{XEw{?}6zpGm~QTiLp0Ck~rI zp_K7lCCZ*z(&XI?$m&dRI&Xwk%2EsVD#)o*tUHD zCMKp~dU}#7-%Yv?CPSbF34e!!qPRdr%MuO9V)J3gdg$)zrV^d&cI<>bd-lMd-Fson zmd%t#Qz}#-lg-2M=`qOXiez1)1fk^qqv~xIuI`C4(QrClhlVa8vIEWd4QEJV<5`YE ztLT$eW=#gPi?2kFxXxpCncvD5s%WLXp;nfcqgs6>S1RS_bA|NzY-aBC^z_viDyx;_ z|5CF2Vwj#@nCtHDSxnxyx35j8d9j6Nur|leEjWch3to1R7`tx(eEQSR@0hrJ!v%<(d^7m+PwuhD%}zJrAl?9|6`>M1z;>>mut+ z3#G}G4(*Uq*pzXNm+MSO2C2`XsT2;$Pf6Qi3y_Y%3$=om{H~S|X)L{=<~A&Kz(Fyt z0JaGbVQA}(^Z7KC%0()L=A|J0%$gM&8ctWCsl6Y z=AyFQetFSoJ70bG)xxzo(&p$!zi{%JBx{e2Q-r27D6Pr!`W=sdf3nc(hOd0}(=ai8 zffmEM@;TCtmo4qo*yrNw!Zkz6{_X0=g~YeIoF|WT?0K~nm#*Nk^w5K^f)9P@PoSr_ zo6e-Y{p~*qU;6UrIeIhTa+bE__+1Bs13RIoX9G1??%uT<_V2#|_U_vQ+Xe^ey|7YQ zfowVtOX(csGX*G?Dr9eJP&;aav+CpKNIh#=Fwt+ZZG&{SF0e^QX7PvbKl*GQXbqav zGmQTsP^zg~KIZqQ(AYbYzhP#6rCe$hikVEQoEyy-^QQ{=^s(86+0(UJc`~_B754$*ISx|4kJl^7=fM`fuL6M(Xu;PWAN}a3 z?w_B|{MXZ`Pd|{$=iP}>>%a8NKoon4b<7u@KEM5zyWxQ&_rd0^eUMo!z|_r$g=S*Mv-X>^d{Xo7rI{4|Hcmi#jSu*Jt6|kN{Y>XCRG|e zj`fnxbm_8=4Ub|gjj^Pw} z=zs7{KMwcYcTaMh=HS?|6Y#fx_i?g!U@PB_?K|Pd12@7AH{6gA=KU}*I6#l7Qm#TK zU4ZmbJ|W&qu(DDkHJJtmP0VJj#faEeS?l*xJnkcNe|UE{qS$6Ehdk_R{m1%E(>p^E zoB2%up25&((*oP}Xck;4K2wF+?Zr|ys#GgW$>U7Oa&{=aG<$p@y@+IaD%nsOzCJb6 z!Ob_{`2&-aSAK4JxpFXh%qak{;sBj}G>au(;G5S-vR{!r|9bM?{Oj@wE)W7O_mwH}r0Td+xpu?zr<-*s!q&7U#3DxRBMv z)1H0?>l-%J)NvHsoa2ZK10t`&){@moXA9#7us{L{1*%(dLth3-MQwG3ZlqSn>uco) z$uABW=@!8{Pp?O|s6fX)1w=+7_8;ozLT(!5;uJ%w6=zACtk;;!S}0wEvz$$?s~ysT z*egB=uGyCgykRjzer-yI8SDz0PN7@Rv`2s}t+t#w^oUNgGOf!lpefhbpLn-rB3{9Q zZGa05*=3TBDl!Kw8^y@%$4a?CL!KLZHk0*26Jvb}JmC9*q(u8OQxGP94*_gh3ldgJ zU`d`seBJ}HdvuUbTDP*r&HIHt(LI@sJyD_dGHlX+^?rjo}gnk@QggRZP43X z;J@$yn!Lt-n`0CER%_+)W-8&(l&%hVH{8_l15NJ%_z;?SB<^>6r2evgQukT1j3^i|lhc`Iz#(3ia5 z-~zCc9K*|y$>brMEf9Iu1woN5UeaFU*b@oX_}8s{&FwEvlce_}<*WJN%1oNuD!~?aS{e7F^@cj?M-S^xI9i8nkH9nVo z@D%Oe4PiueB;xi#6YXY(bc|)hw8G(sn<3QX*N(vwS|nAvf;OTLyhv$FMlJb0ZW=GI z2L+h~+pN}xZ8}sGO|?qI%atGKG8KKf*cKwheE&@LbjQPF`}N(#`Y^0j)4MGxo`H4TVHal(O5Bm^VpPQb36*F)ciEy?e+ zB8>~1m6ZzJ=Z>~@lnrb{4+ z#m9)LEBG}xKMD8V^#~>DoE;s4m0Fcl>7K5QRJIcYnvCM_6~`~?ylKBN&kV;Jf*I37 zYy04JaO-Wi!GQz&VdKXBWYwK4&RSEje%(6gT-Ra0aNw`AvlG@OUwxZ45JAqOqMUqX zmhw~_RjyP?QAYK)5yh^O98B^@!0$AIKDL*pLUC=za;0@`9+|C#Bpt6bk z48gZIxP0swD$D4vUTl;~nM;*w>4mw)sZ%pESB@t4`wWP!K_CzUE%^H2Pk#R|wgnw+ zPY$0M{*m#Ct1V3v`Fsl9kJ&NtXIXB57Y34pNAOHW@GDOPO&v@XuR)ih5Mhe;e>pBThGD1LQAwvRX7t)dkQ{q+c4X8!=Zsw|3VW- zma@KJ>+p{BbB9Au=xrvCbE?(dAGVI5JpwD0wG|}AmEZx4jgLUBu?lzG{D8H07+)&x zb0l1NuR1z96H>R%Ym5W%vym0W?O_Do5(%(Mu>5st7>{voVd!Rib($(c6smTo;n*%rQ zzYBW1H^ZwQ{Wj?9?|~PN9fM;h{~i{WCX>srrF!6}W(ooce2uckF_K~erE;ZkY+-S7Xlmx_b3&E{0wK_XZ&3XG-yhvGa{A(LjGjIBJ+pJOEj}}d zy*GLLfdN6&0L%WpH^Tjg55tW&?j_Y`YI1>2i&|0{nX&|JSujMB1_6;|$6B2>!+n|< z#}wCu1lU+U8j+$8a7}>gZ1K>f8r5aWh&DcGwr)f`AgFC0HBF?sBmr2xcEgNXnIQe`9l~5bj*V}dJHW|NK)I{ z$mS6;SuT{*bQ=HA-LGQXh#MdanRw%U#|W@Ed0vrNW9kP*8S-=D{O0WCPoA@EZjn@M zv>mPQ>Lx;#%P+#w6Q5_>zq+PX5VL&I!eIuSUKHxucQ)lk6#B^&j%YV$P8;)k0PeM5 zUT3Dd_~h{yV6|3rH`Tmg8DCG0-kI#K3c^)#f zjn(A!g}z}_mhp9@Z4x>e=YjhkhvTQdY|p%41v@6Hw4~bUHfdOwEK(7l)o41+!3#ZC zNp5B#+S)sk`_l*8x9x%(4;)OsZiao=?}Nd?t+2kkgRX%y5!LE4cCKDBIXVwtF5Nr&Rngpez$u`V`_Qpt5= zosF8(jd>Jrho4oUEaNy`68d?Bd)8Qbv-*q5jOOF2y{Wi%IYc+Lp;Tf){O0gduVX5PH7y0E^=Yjn$A{m`&wuF z`h;o4P+hG+zL2HV2OLN<#W_A#!|QI|G)N02^gZXMvk8&zb6L53EXT@QL_pA_^!}3r zf@}D5(?FnVGKDy`(zjp)*R*PT#VJmm#@yg04|Cw(18{la;N_6>Z5iKekSrQ*z40#S z?d^v%Bgd0{u|$_el8b33&wSw%M1ZR+WqK}fALo+&g_am3$9)?I;OfMv&TUWr8yP*O zk6KiDljpj!T;elLE4um8D;)BNBlW^S*UF;}0}FGuY#xMNJNLnX8*YX@yZ6AZUDv^e z4L!7A!l=n=c^PJ==5!%RxeAqpJX0JTFAS+}{Te%qx`sTPJ!Xc8b%djCIaRSPXtK5H zUQ;A+nTS2xv8E+Qnaq2(Tf}_!3tv}e;19R7Tw7Jea;{!36&8x6-056lVQ49{cs!Gt z8)34%BA-A4fj|iKH#gLq-~4}l`R=>#zWo<};kSP1_zN$*Yy9fOL2QO|Lvj3JrQD>r zB84(c$jS9+GFOyGGI)njs={8T}Yi{9#E1!9+9}1xtCcXW&=ZI+<*3DMvFI z<3Yo~`9T9qnB7oWQ;x4!HEqrsC~vqh>}HUvrU=H#I{LJ=Ua1Wi6x1lJIj%vBiSdn9J~Xvxhzaf zUE(1-1#PKTI%`uX&RVbA{}M z*@c<0bb9iMg4_a25j@46Lkx$SyboX^3++!EBGVHH|B-Hytz7eiLB zD|_0MM%of`9Iw{2dc~9Qt@t4y=~MNTVU5ZUrEIK{65UAtYf-w?gOn=#zzy|>C3>Zu za+DD26i3U&Iwgd7d6aBFVc6)E#4O`Ra<7TQ#Jc&5lxw`Rk>cS(XePtfHlcG_t#8+F zkBeOai0_eY`at){v{AauFkRpkrgmg^>p7`gQFzz*s65=y|~`>eht(k!PJfr}!NcJ~nRHtOwoNJK*G* zuK>huNc7q=F&mp7i}91y!vZ{_O=chj4hXnaNW*5t~5ot=UVw2 zQdVQ8$JpD`5A%zY`b{<=$-A#R0C(K-0E}I^0OJ!Ei74Z9R;LAG2oD^3C4Ara{vez` ze+fSKrKjodcs<;FuCNHteDRa;$dT7VzL<84ETxBM{f0x=cxVPl8)U)41r_f1-mVR> zZQE|Re(#O2Z|{ECw{LGkmIsqX%X)fERs^8QL>R&imrt-)I3&e`-Lv zQc~%q+11K&c{G<#ADx-KI<%CT{c5dNyOdnCCZ8k%fj|iK%M@>U%d4}=w_o|xr#}0q z+Xe=H@qMGj(z(#Q_G@*vMlqOs_P?S&;ojq$3 zFmO9K(1sKBI8>N?0AjQn5(6TBDWGg=(xpS~SH=NFQc$DT@L*m_5NxF>cBWwl0s@i&^tZS;94C6~Gpdz$BrC(XquFM7&Gxfr_U%lh_>=1D`mF9UEEtYfC?04?cakw(6^OW(749x;Wb$I--H^9Zq!|?Rq zd<0tBS|OX8r$IHmi|OnfEjIBskj$eGTG{MvuOx@>mmZ?kiythU>F(YL+Xr{S_4{s2 zzV^f3J$qqbU;uhI^w4VFFF`{3b69-%?Q?bi*!)WjTQ(m6eVM~ZAj*A119 zv_cz&`9RdMS2W_|S`ypP`^+jalSZ;hC)+`?fgilB(5f?BaT_gopBl*9d05iQt7gBRSy4MX))}oQ`3NX_Ovjv;$Tu z;s`pmW)Lp)3R%D^pH_!7jtehC!H-ZgLsgbc#4d$FKL(FtDDa}UwBo3^W=APyThllt z+GbZ<)f~?j#G2Gw+X9~vhy$|-&`LM%--c?~+eD=p3oS4!7)cW<|503{JZRisSfh*t zCl0jYPPUFXAvYKqmXPVom(If0E!#<5M)HUeYPc9HmkadJIyqL&*lo1+KC(e4`a2JJ znoROoFXDW1?ARD+^|qzer)X=QBjqX4u|3da?!&?oLE zJ>cNv+u!mYn4X=1d~t!SC|GVZw=ezv0*(LV<(`_j|%Yh5N6gMJPDn(T+7gkE8>{KSZbS9rmpU7m>Cvv6v(dFgk1zPnB z1Oma=0FuJ-5`0eo;=@nBZhU<1y~D$2ZYo#G)>*4hdqzyYJTk@P42em5M<*OSa2woz z_&(UX?>bmcK5WOYPA4C}MVp?0z|@SGEddRVNmCqY7jbqoe#oL7qd^(X4Qd^1aD-jN zxzJR;LQRE0S+7+8TVJK?;NT&Zx28{HQJfe@&5gx)8}@(CbCWMBPv}pIYFF0FJNBcV1yXPkO!8g7I&YnF7M^F3%Oio=)$aIx%j)rLcDtT~Ggg&!0 zs<>a?g32o@*Bbdz^_b+rbiVj1$u>lJ;=m2xE^ z?5nOpZcVw1^77=(zXLuF@bzcv-YL?&;7eb8j#~gjs8)+AU&yW$%lYYIA#*Ar%cthjb0{co)@w# z5D0`o3;xydo zz7w_%^g||Fpu~<+xoQXDbo(F2*CFActmg(#)JI%=!f|ulJcyBWRL!lJY;%hkRd_d; z7@I;BBIXTy{m4{_Qzf`gks`9JT!lAn8+7y?k$r9%(+zUkQ>(M6m2EIIgxN%PDUP;_ zJYHoCP1bbC+egBT(Q4>t4!IV*SjoZp zi>Ki5z2B<0!A)%~?4w5Fj6Q3<&}t9~&Eyu~%-QEWTa6*nnyTS-9(m+dzVp|Tsk|0L6MKlq$wLo41h0Sn>tJ0%^xyNI_rS+L z{&9QTX1`%cO^OBsYqoaYFGE?IO&xmo#rTP_tY%$j7xZo10^0_5z-~;y*twU;^0sXQ z$!oKR?qju5rSg$-LXwMx3Y04qvQC(VEpQF9ncky0guoqNz%}pY42w~LLr(N?yF@h| z&vaZw&Ie7~u!%7`?vLuTlgEGL;X71U*E*|E`}P^yCRw;bvIITz%$G{1Pmhdbv*}Aq znVAbqnS~dM#ia{EmIVTV5NN^I9KZ1!f7H8u`@qi~KYH?A6BFa>4RHj|KM97yDdVry z3KJ60o}NA$G(2?w-O$(90}Bfon4X%aDSVv^9chw~ocH5myrDbZY3VTiEe=0ds-W=Jbmy_uM66(+we5BWx<=#@}ozN1(g}0!we3;?OMNGUX_iX9rx; z(VP)&wxVq{P3+uS68x-Rzu7M2#FnPYX@I8t7?@ZzEHB~gXC1+ovV<()A{0F^7E**= zTT3f!*w_bi^Aic_>raRwUNS|=8(yN(;p85Re;M}=UXv%e7>mqp3cssCmAq8%MdCM)gz;FNdZ}QM{8C})(nVtLp>kHT@#f>@8k89wLf}qvxP^t6+!BPw zTkk6EY3LRLPWAw+pku6FCcCII*@ax8k~@*jE*_tr89!C8RxY-!?=E+AbnrSMStcfT z(*KUX&*kPz<#IU#+M^^82n0f)1>YF>$VdL}j`YIP`_7J>{kHk}`IKq)GL`{fDRV!BU#@fme zvr4Wjz?CITku9WAc3999Gk~>lI2Au=%I5&@6u0se>gJc6p9o?#!KM-p0I!M;Y*7lh zQ|GSK#WWrgO>&y8_cs&OXH|19U@@c~nCJ(A({^L_Sexd!fE8$?xN47V%H5U%OY-q= zIDm@Q1HX7B2((>=$a_lr=~Ha|$mW+40{s}#8gvTY)ht%J%cO;W})M`HEfJpNFtsg z$*~uI7eGsMO|jx!Y?B#Ik1+;+CJ$_tH5X(koq$58>`iTaX!3uVgmY00HdHQ_v(UAE z19W$7AmWRuDVhlC;|zyOY4|YNuXv0!>Z|tlowdLXc~UH5;D~Qit$G6VRzm<@^|mwX zI+E;mwojT(l8NGlV9ewff4^zdCc5phOIKmtZ8yRE{1PlJF1l7hk3uW1md4+pU-{c# z{W`euz>TCT_xEpt&UGDhoK>qUP%M^VZgvqaUKod!l~t&%*1Rwh&Q`|lha5j>NUmvW zv`H*3uFz=UanO7g!Fy79e}>xf#K{(QGc?E<+PFB)m2+{vkj!$17me@MPR{Pf2^|HP?NXMXeC=(%0XD=W;8(>_8!Doj{NNB&yk^jn5-Y;6 ziI9QULT8Fkh^U5vM|?F;(L@@c*?r)cuo)OMPlSSI6F|VEQ8gt=77-dVGV!0Xib48(G^0MuY0*{^za81xJn?f?ICe4~2XgE?pdle7;1P&v=y-M$n~N?64A90q|o#A-Ii5Pxv=% zbX|(c0xF$#P%W%vV{BcZv!F4`sztRWq^)j~7ic&zA;XjcLWDTkT%a8PM@2MD$T!BV z5h-aQn~CPqA(N?q$eqq+20K8A9&J>Fjfk+rjW%H zohW0M2%3sRl=5n#z3l~F9WJ19W0bB zj4P?+7hAUsKu=E>w6=!una_L%wr<@9J9qB#(kq<3Mytxs>Y&qEw5`Yto@$#=Vsi#X=DV2DifKxlwrj+2hdB(MfhBlU#z)jCghhn?dn5mzOKB zv@`=Jjt?aSy4wy!ny1rLUK@h!)N5T;AMipfO&(9SdnKRG7lbSe1OmZ75Ai??;Lrd3 zlUpmL)%Ojb9{!Q>@$nWr;N}g%IYrN6!0t-#MalUYl}l0cV?KWQ>9gt!t7^2 zTMxBIgw;RsqEzhhHM!CMWGr6bsomayVbC;G7`QV8)_xK=8-Te#fornUzUROzP7IhJ z>sC1OL~~({@n8e1?8dX+nrekqLM*Xh$9kvP_JAJgR?3oYp;VB3aS1M7IqeO#0ehxH zxbC{$@bJTr!5{wN@AA+gz;n+%58w7}uZBH)Zh*eNO-;!vx~WfFF(Nx?8reh_oyKC) zVj}C~&*!sHtyXlIPx62;I_@Xl`m^x%cl?+xAgL_Fv7=|foc&YyfAtXtouhg?~84tcSv3q;Hr0k8`lK6#{Y3c2aZa_RZ$nJcG~f1k)?>c;?bMIp)pfj}S%wBTQe zH@@+;SU~XBr#|{O?;qd0`@apH8hSLF%>;&IDQM2y)&5>qCKJ+AsTASM|L{3Dd-e=G z`tU2@*4u7`d+)yurl;m$?D8Z;%QYfHxg=vT zh_&5VAx;8hLMT*1y2uZ!lM>LL5u>-G9#9(|nn9vK5h26-OU4CGPS9jAW;=w^UQs;t z-IAhG31B6U6j5T0E!r+X9#l;hfrsae{nHQ|%7yj_vTG*{z^BP}L1G&W71=CIQiAd$ z=L|Up@X9B6I||mCpl$uQYawjjhR(TWlB`@?iBkT34vf1N+>oBKDtv5x@>=~THI;8K zVylPs*;+L`ru<;N-xMvXjBN&=7bMUf?VWl!R5|I{JUT24dHnI$!VmxO_tRyUma_Ey z@Zm$SfB%7G(Uya*u5Nm+8f@Ls(TF-GQRkM&HthxX1D#b-j&x$t3m${`n7Y>Yko}@> z<7PN=_%V3=TV4b6Gg+9KUWB>Xd01Yl!mT&o1%(2ZqO>Q3ejQ+s$N1z0%C|Nkzc(t% zk>Y_(XK@KkHnZ`1n{06$w2flAt|r&I#*k((&glJxUe)E6-&A4LO%1{ z?84;G{NnhrOeS+OxoBSA=>!6SKnS$p-vHn9hVMN6n%Df)Yrg;c9{;Yfv9X^$J973A zDschZ04)78#0Xq_8~UBGaqSbI`fE6GYBwCZ?-1N}+f6XIeG6QxkRhT4}h< zM50lpbgT(ZTWd%Wc0{OK+esaav38s4q1$woc%ZAo>C`!q?>2~N7^*?O=Tsa*L)A$+ zM1tKCv|3Aq8JyBhb-IQ);+8eEYEU^ypjAKgW@C$DidxY?H?|p7Q<qniU{0DR|riB9x7N<%@+8|btu%@)W0|R*O=IX z&r7LXu+|*cw-L~DJ~ul@#}5+H(?cV4#~yp^0eak+zELTciHw^Bmxz_BOw& zFwmthNWyXPhSlQzeVbr#U=TKM-aRDBZofYV=tVBY&K8F4Q8ZcTwYIiJ8Vn{ zcD+`kV-1@JjmN(Ed_wbM@jdVMxVtRw-(h=fz9F&(q4vvdZO`8q3S&g+>%# z%odg|OpIT=Iz2ajJfBY^Sr%nkAP@+IKnuQ>_{?X1e>M5~*ujHOeDcX(`hmBN3}1TB z@R>84X#kJTrE^gN5xUR~x)C8uk=+6Z4X38B!qDl1aOCh|xZ%dVuyfZoxO`~>CMRbp z2RMb>XeerDL)9@P;uwkKPH`a%kw+d-^1eETj8dgVyda$yKg6qjGTkf(P2&!0V?2GSze}N2p4HPw(o+L z_H}feA#q0~yQ`}QHgDPryLat|J-hcN#CbCvXR9kUK>Kf{Tm`(#t1CKZ9PiG$jxK21 z+R1jK1{Iblsts@0#}=C0?!d*vg-x-9ZsFs5MP;)KjZ&$& zm@O=xPcJRLkj^ihE)?cZrPJxDKL2)W2hxd?1R19&9X_m`WOq@}M4JoS>xE&PHL zFGo7Cwwll*tFCm#&q{WG^WOptfe&m(v^AfY?JKaYhu{^r1fFNaFKsdQ>yT^11Fra{ zpYhCsDRN;8!|KX1lqy+RS*_^j(QmfnJ@M*q{ciZ+hyFik?`VUuvCHtLH@yKaUcA8G zYF!hKwc?ocv2nvD*s)_zLYB9{-o4ku-h?do_4U(juPm=n)pfa8rFwa67eosQl6S>k zedC+9{(k@-LX0_`gcW{VMJ4~p=F{+dfA}OUuT<=Q?%S{he(G&cLTAT%ex1bjwGswi zI!3Zhqb%nO*@av_J(|mh(L2ABgLi}wU-rQmlWYjTHKj^<;Bm%O;z8HoT@bu zcmcSO4zHci5MTw((GSY2_P&Npn=OVcU28I~Q%JZVMFmZ5h1MI-WIkmpoxw$_@!+B< zQ_+_Xy@5qdl2>aO?^dD#Jluydd(?r+FgD)33OEY3jcWojiS4u~@Lfa7Gzb zvGNqw*w83T82dMFg~NxAz&-cg4!s+?U}k0kMusmyb$NxZtJ61PTg8o8!ZcLXSmm?? zCd5Rfm2NBK8t*99O0^-xy1v^Ck2R=)5Qn*9{(Z#N-lhSONPB~oX;#JY=LVA~YBl7h zLX+kZdu?zrCw7>8VeoRIV;-0^#T%}v&gPjkC7#%}K=6p0Uy7k)FgU6&wwcaG%{6{o zBM!Ua&*pYNu*$Yavca|fnT9*peHhr`M&&gGx}pw04J5EcG~jKS227I_VU&5?-?jQm z^0f^0sK%Mhdfy=FT(_b-{%uLu9v5n%t8816+l-xvq}RYp`{r&bE+- zuKSJ~Hv6|hRo|}mJ7!`>R*Xp3dz0syNf+Lpws`1hyU2^L(=B#djW<={0f4P`Hl--a zZ^R?7w6S0~QVnYewSlrZb9G$n#GlW9};ZtB9l zzHqM^+R|1yY7Up?oKF|%aF?y z69QeP0mSv|*C%ATLlg4=?3oO0nXskwbexhWn+NmAYQ%{$O)9flF!24O7DN+SXj&)v zc}|78E<2Y^!|yr;8aHq<3|s%KqoegJ)oOJ#`S+^4dk6#qfe>iH%N$QW`FlOrU%&Im zPoEh6x$_s!Z8aWWDv01#!`Q0Oiff6DA{|o#$L^i`;IUUc1_uu8B~o*4^fHW(Pm_YE z%QLjXT*G)X&h(`ru10N5bDWp^OsaB?(-=IjbHkA0hRcIirc9&3gk2A|k;fW<(mss3 zY)V_4I*Q72oqe+45pQTJpHX1E&@T7aW|$ZswD)(bT>E)+X3!7pgc>x}SlhutO;TOU zpt-DHlH)GtZ!WZhi=KM?B6bb5WP~2YCogZ4C&U$d1WmRLFODyC2_lpSo;+WXYR~{3 z#>Z{!?T7xpt*~XwcG$R~A9{K=!uqcDu%TxIw6*FsL$m*|4&EvG94{ES$U(Cp3qq|R z8zZ_o2Fa5Q+{VZyBmr)MYv2{D;Kmbgvbi;})=4F}#Y}Dqe)s*qgajIkNdBMX>%Syl zEAmbu5C{Z9pap_!@Zk@Cd{?rQ|DlAZeF(w*7X3PwMmdVtqWDOjYE5#6)V$tP@@$Dm1DAWaES`3 z&XF!=QS468bTNwWja=NkkP+9z?$lBR-EZ_ zT$$*yn`1ke=Py81Q$1g^rNfoq05l2Jo=4qRovnQVpxJ_9w&>eD`~ny|JgAzkqkYqX z=btuIJoK8*15Vb6t)-=!CLx$Xhn=fX)3|VPNYv*tBUYba!<_XJ;oRXCMiV zcmZSZg(dh6pHs{g zZ^ULm)OgzYc9Ywhn7X1q@S)%Q>dI>MCzD?d%R7TWAP@+F76|^A`0Ky^yF(YwUU~18 zD_35%u&|I)td1IAv>_gTo1P(+NI*CCZh|{*zX$HV=MLDhW2+uCJbxMHW|vqA)rB3M(FR&eY*S*?u%2cj=EkIBX+*l5#SnOexgG0=j$6w4~Lx@h9_Ecu&2tO5;aBCyR2a>wHp+6zXI}*aY z4YqC`fWH1s(3Sjt-TH1F>lf?AMWf+{IjQxL$*v}^ZXcjkg9=9iM{NE2YWdgVLkoHwhM)Vnwq)Ns4kbrl10MvOX>O1t5?roygGH^%b;_Z z1pk}o701Pu~*Bibj%&8!rW@7lQCRMN5qkJ4WmXwM79C6Uo;vq zTRa+EE#BY+h}foW=$dga+Kf{|41qUEAVHvsnkCa*1r9dS4y;NYGjX;gng;wLM{|_| zUrsjF;y#qRHqlI7BSEiuxtrpZAiU;s$|J~j5Yf4ry{!aI@pV=?XPXOdy0xVZ)+dB` zQ~w|g4(x#KgS(SO(RJF6(bdf*I^Yd`DjR{Qm@qdYO?0(Fuk5ixq&9H-$yhIp?Iq+) zZa)q%U}A2)-b9Kc`?%~G5-&Q?BxV!}Ihb3Rte47#%jrz|*~yu)Q*(2ZL#0yg1V~zj zKp+qZfffkK6>9fjvqhy_OVN2J6EY;Fkqs>)(-ZOTH?Y(W=2Kav28CL zI&?qWap%p@(b-N#Ea%RTLA6rVDl=t8$DGg1DI8R+60;g@1_C4YOe>qDK`JpT$fS2h zo;Nx+L^`&Sb`cM@MLd+IJ=A>NIJSAynrO$C7&|M7i%2s+D>G;q_=AQ{RW_vA>>pi{ zt+=csu#eBS4}vS=Zcdi=tOj1mhoU-f@P__Od!QFV_abiiH*93qRnY5*UncmBI}3nWuy4~bc+ zPVNiUgmcPcY{%|zpIJ~Y_^VkXAgDpKd+Lv3Hc!NrIN2P3u-fc5bjqk|#O;FD}7 z*42IaJCtqMzmO$+B|D)k+4r@<2xZHfWrm4~$ucI}knFNQNU~*1mWaV%MkD(cvX5;H z4P{A|5F+F|Jn#2;|AzPe@jj0GI*#i)@AJIQ>vMiS*SSfmEPLNpahdiRXp;Y1bIl;Y zzcWV17mkK&Kezl}In=jY$-$k(;=UNJ;-5K3HL{C+JETTW+lyyfTR%ZSY!1zCv=*G9sG zF2Aj;C6w3$3i3^0_!a!>A;+~kyl7_Wm~ixjo}^T27bDqE&*ENi$l3L$nzG1+oiJ{I z!f|7FcXX*X&2KIK{Yy%R+sz#)_{Nj19^wL7r%smI2aLQ~*xI_7^+Ek&nb$W~8@T_( z`#x#7@bWPX>(;niFUonjkYu#?a$ zuz+bQ99v$a#xvt;=)nT?UC)~;`)Z-_D#S%%qVfT;`~yadsCpYo`40H~@!E}6pD+?d zs>`k?r_5L7iv!3i`ng9(Cwgnn0| zJ|~UWV>7+tAPJc;P~zvA3eVg7Z_?d%2VY6Jr1wdW`yB3qr8CtUYE*sw1nXp9naccg z^-?1KoF{Oeo->7z#R69#p?iI4qNI?eopc*%DJdFdFR3Rb*Hi;bLr|MyN*S?Ld(BVQ z1_RnsX$8VJ$Ol`1jd9%W)2!UA$#RZa`8eDlMxV*g__av0ZE<1jB_3rK^@KSJ!BElY zTE_;dDE$y+@#~LuW#y2s6_st{m9ebwUvYu+W^xyl0d6-4y*Evm0tZ4LFAd2#W_3JzricQ`!i<2l3wpP}SY-fjOg zv^O&IS_m^GP50pom?%TpZ>hW_tS*Doxg@`tX;s#mbLojiQQ8U2p5Bc@mfe<}6yUv9 zud3Hz(k%L=tawkSPLvw~!#s!r1BzT%L^Ew3WDJW8AC2M;35k|?4$+L->;<5c(}QzH z;2H6z#VzHd*55F#KYs|T1PC8MBRB+S5jnDaHTF(ijSEYb?T-kRO#28DdUR_@V>4Pe zb~7>pp5x>cO7Ex|#4VpK$-?AbjS^|m-u7Q!Q9mk7YNir%(!KIc|B=vlzaKHEy$7i( zZJgVrJb6^2opavz(YWs|pz8Vr)N4N9n;!_JZtWn@S0@@thnV_0?{L(G-$vHqeg5<7 z0{MnX&)MtJK3;zNPgHPLI2!&0w&U*r%xVyAg|P7PZLEt=rHDE!aSnt(s*G<+PNK^3 zi#Y1OL*)8=*K^|M3(zs82mTFJTi33))1?~2DtcTkzguRhQ*Uca2>9xt%uq#lcX_%6 z&QCcnFYND+gJ{du^|A8cP`4Yn#}1CJXZzzBW3q2SSm3a?XU6c8MvQ6R-|j??p#WAp zW+uC2cp)uQ)^<%+lD9C!9Xc{+rXz|)ld^&2%{qxf#G=vnIQapz-N4k4VWx_|FQcP! zsGt)yxDIui6yLWdN7t`-J(qHm;~FV5i!!3xW&k^feK(6hU7fmwi6=qXGZWQ}akOr| z8CE-Q3X^IqrF*23J-IL9VHK)5V=0r9rr&|BJ3S_fvjKC-4)kvP;Ss1PG6RbVj*`lS zp@{rsPET(t+|RX*X9kaCKxM@?^~!y5+kyD{#Dr-vEih^BAdKvdy9Dc?@Pg5)(OB(= z8^i<65??nZEfw@jNvuAHg70t=gpbE?<(lb@M~9W?_1d#Q)U>`u&cA3+h*-~~6j9Us zKk;aEB45AoLlJbO^QU96hPGnW?~L>95o`0K2K-SVFSQq}tEOa-Ux=|ljg~AO!rpsx z;%v=P^yYHX4Q{X`U#TCb(Zy7!ra7@%-H6av4pArge#=+FMWzO`w!JMdQVRU8ucxFy z6O*ONW&@l1-jsFZnoPY;R(sP6I*(`Mp2%zKBGym8^@L6XK1c`-dJgpTkEeR(^w`Q-cYsP`_ulW6f*Z5>)+K|$@a{F)C)Bg7kFRLJcCt*K z3pk2E1}Z$g%3qtx7`wodN>9*dugnJQf{Xc`o!9&hgo_T60zxGSz#00FHC#NeXT89V)@*7kt`rb2I zr(uCsr;dpA%Vnk={~CS4$6s9dzeVG`P04R zZHBz>gr~FuIrjb|Ej0wtYE{)zY*hp_HZ?U}e{=>DpUpq=lu2{D>qMYro1F*Ic^68$fX?&5jP`_nCBQY0+@k?X3q-?%|8VBN3K)c zd7e7nBl6mG3G z&iLT`b&$#v*6QZwG@)-~u>p0C3f$!G&h_2j@W_^=kde7LDn2-zwb;+vALZD9WTddQ ze9&1;aJ_j1f1y0vx!HO3%EK9EG^7b~fv8eHNE!P#yt?S!5!f1Q0YEeNC7YL938tA; zIIDr~?w@WQcMMGL&W;}*b`$U=(TAx6KKlO!Q0minfxDvypf7*1kb?+?cd;ZDMaBA} z2M`wv^5rcho~}`X6NQ)ha{ke-ooa63*lb>roeet;kyV{$SvBT&R8^-|sH;;i*X>5K zjxf{pu3(n6rZo!&0Zgpo!Vn0QtL&m z*B53Y7JmQkuVpe+sY_O!s_^zSVp32-L9QdL&i^2d+$h&hhOF#z^Z_$6m0#C(Uc^~0 zPUAh_e$xiYRCagV8u0oqvskEuDW#w-qUOLexFeBoZOb2+4i1^{=H)g9zi$Hb8@_|d zT+o&@XgEto$eRZBX-wdc^5NeyL(%{>P0gKUv_xj3r-A_eNCeLvsJw~N(5-#ujquB& z%yZ8;H#Ph?cD=qweuiG5PX*9-Tg3l*lf7HZ-Wix};+=3mi!8=`sVF(0bXd7au`DW#{<%iFM5Jj*vw8ZfRBD8Xr^;JXkDnE~r@zPT(L;re$kMxT ztBWmluI<*ZVrG@AC4^KVflo+^YPFVRc2_8Y&hqtugw0c?+>gAz%^wJ@fjQ#XK+cJ< zr!HJ$t9nWes@9V14DVc*MIc$P$&C3v$vnyQG3bAp#q|UAulRz$$L-Kz=F{DQ*#S_` zr%#rR6Q*`!Fg&knv#w15weqTvF{UjU{&8U>gv>xAvH%TWJY+zm9SzkbvuLtzbI&rbS&X@0|lP5uuj*5zSS*SJJ@NVN|fDQ;$ zVf_r6^QVyZw{d7~pQ^H+;2$~n(^@ow^{J>&&f6ns43+qhbTV!k^z@E><|~R1PmQ6m z=CjF_4O?b3>rMB?B?t*gv>Y@E)ZmW!nn#Nkn3d}9G(V>0+5#q;GnmDAb6EankWrGhsGC6h$(+FFQdxZh2?rDx7o%#2R7TF%)al`i|MkA6J6jHro#Eyva zQ9+^9d0f6rM! zM3X{c38MES;ct}!_HO>XGUi77ph8io?e~q0W<~M*s#oouHAm}+aW;5 z!-HX9klc+UJGOkaLRLM9TU~w1^03#R7|=OCuRQ&Nb!pFG4Hc&PmeI|Iwkp1|_HexI zcgLbs4x{T>GW!+x7R22reJwgjMwibUJhz(Zt?RJH2MVx?d36hWayu{7e2({CgC3I3GzAHb+8I+J>9fq{s;ly=ZcNY*}HvjQCip z=|)?-_Gi0vw-trX0OJfD(Ft55yt`i(2Fh{w7^?Hy5%;|ikG6j-8_{Z-vENBV3F`Ae&A$5c&68 znm5Q?6-xnrft&*E!d7J$6{9&|Tj9GDxZ`_^arPB|INXxaQzKsROQn9Sy`A#Y!7Lcl zIzk@@LV)^8lk+-z zKY*oqWF!Ym6tZ`x$HqEVqjwh>ekCfrtC;AR2nIk{&*=Q;P;$gPgmQ0LC2UyXbn_$W zn3lfzq?O9@fK6^yZ$eGc(B~m7!=92-ypldccekMaZDnttAsEwSil@+Oy)!Sx>CF4V zgmG7s7_>a`k)B5+D(y~OvFLAK7xq3MX-C`K&&7BKXyWQ&;US^#+plaw;nGqEyWn}P z=HC^W@ScwWX(2Z|dWT;n93o}!T&rKk%I$3@y#z&r^4(#{}X7WEyL>Aq!w;q4iQabLsa=&SLlDHYtIX=EPEGa!iisl+fnEPDS(bYAo z>Ti3smfNo}ru?JwB=fiCp3foMKec?9gaw|RqWWYib{Of; zN-pR4U`*#Hz&_f3=Tu80aBJQG@_R-ggxGa(@XVFNRXM8sKp#?j6CWWVYMw7NXSR5M z(w~%y@q8?gLWs&rMWT%eZE!_yCR-G$V_nikcIEGWUD%;0F#jBWBpgFB&qe)Y=g zf9hI)ll31b3xgo+-ycg79AWiVx9U9-ecR$WA8*Fx)aIBl=I_fy!D$(z+OX8G3$_cE z47oDK7`A8Ejpgzjn$#6EyhYMLs;NWLxn#i!bjj!Gy?mx~@Z>CCAt?s_d`8MMX=(m8 z_2o$8zD=eL;C8TUafyYLAk(C|kNJSPU+9_uQ6ca>t3tj9hWnAPT2>ZsRQ&2^Sv7z5 zYu8|Jton!RF~37SaGC|Cz4Bik=@EVU>OX{#Hgm40jVc6Z zP4MPqXeBo#a{Ko#|B}sqv9uj8A&XqnG#+-02Fex53`a*8xCbNP00;k&Gr@(d4$Vn zU3~#vQzbBqr3?FIkJ7IK3SSiu{b$O+Rh>N~A~jH5c${nL$D z+lWbOLa++jKUtH=599|>ryE8aKo#u7&b@j5X1p0PVty$hiRT%Fd}UV(4ILkSvd)!< z?}Q|h%M_dfVieaFbeY3TBXrBK7))N;?K4{USwSg+{OSJwWa^jvB*)2i z;k`Z{75VTU7CM3qf1-x_AtS*a2K=9o&g`G5C=F==lhDwuQ-sG_uDzYzDs!h50{C2m z$th-j=0JU4_fy~0#3Dq%+OSz8fmp!Sybdsz&cx3@yM6AP=S%SKW_muy|C29|6SuW4RIHoY UtrVbADag+~J<~f?z=x6l50T0TnE(I) literal 59158 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 H^RWK|p<@l` diff --git a/resources/profiles/Snapmaker/Snapmaker A350_texture.svg b/resources/profiles/Snapmaker/Snapmaker A350_texture.svg index a21a1396073..92a346e0c1a 100644 --- a/resources/profiles/Snapmaker/Snapmaker A350_texture.svg +++ b/resources/profiles/Snapmaker/Snapmaker A350_texture.svg @@ -1,4 +1,10 @@ - - - + + + + + + + + + \ No newline at end of file diff --git a/resources/profiles/Snapmaker/Snapmaker Artisan_bed.stl b/resources/profiles/Snapmaker/Snapmaker Artisan_bed.stl new file mode 100644 index 0000000000000000000000000000000000000000..a04b55a306e5bf967229a023bc926eb628915b47 GIT binary patch literal 7884 zcmb7|!EPKy5Qax0;sJO9KS6{oSvkck7}+>hqzLdCi5rL9eS?w0g$qxBcnFYkv)9sy z0~|Pk#3LXMTq5NP^;iE>_4jPq@vai3vejSz)m>HHGyD1F^N$Zcx;#5LJbHZe;p4-{ zhfkgyj4z(Q`0VN1w{QMC*!T0p;Gbz2rmb1iFrALWbTPMYPiL|D{d9YM<=#dZvk=p* z*-Fp`@#Fj7Y+ir;({-Eo!sfD(1Bk^QhVNfqjHh3m`S(4co|+hj>#Kjxt~UR^`t}AI zN~ApuzaL$UzaD==4JFi56VUkWy{|Sezx>NJlt_CRUj6ZG9ENjhD50L3fX17jKi&NO z=Lg6~H&@cb@ZIIJ@t4<&h7#(j3DVAK@qO#_is-vG`w;}! z0iB6anTDSXI6qvE5&HK%p`N5;cb$%WxP}sGN6x9id^o`zxThwhu6Br|u~}Zb)L>n; zm5Zk)puuY2A#&d6L24+$o^Vf1K!aWD8cL)cX9+cwU~jvpCS0SPSFWK%+HsC88ba`l za!*Y_gQw^T>Pm^U<7}sf5{_z{x=5jlFFu#}kd`0wKoBhc9e2ZRh^V+$Gv#H(Zw0*B;bQr$( zl?P$5hsV}b5X{FGoeK>m()OIs=&+`NQ+gpR2jQs+XyEQZ=R!k?w7qs`bXe0+!fGiz zH31FWf#_UlD3P}J;EWDy8cJACgr_E4!|rl)E;N)#+s~329YzfyOgTI?0S#Nj7Ec<` zP$F%3&S#5~8cL|ACZJ)txIyP)CMDALvwgPRriKz$3E`;;Xjp~ZpmU+1MB0Ai%vLqj zP{JxYJT(CgJnN!!p`k?D=7`?p%^8GxY62QI!4~uTr*+XRw#9Cr_`dadMfiOlJ(&F{ zQ8k@-y7!a82t4n^`pjMvjNLt4(~6LMxP}sGN1mv`d^o`zxThwd!7AAylEzBBcB!F+ zdTIh1toF87GFQ^kH`GvqJ>j03fQI!r`rI{?NIUwU8cMLY-BS~;(atN^P$KO(#}*AC zct*LWCZNGn^ai`GMA~s4Q$q=!weG12Xz(_04JFc!dxaWG@Xl~gO+W+B?C5o@Ly5G_ z(eZu86V21X0+UO{aDrX{L06z8<5bC<4y6g85y1SaqJ}UKSU8%McEvQvg9T9zV zUsT#3+K+uy>d}+oVNvx&{;qNNI`o7ydvqOJaS#*oVe|4$5$W+KJ*zR;cMyX^peFS#!&tM(XW-Nj#u)`WVjANiYAu~!q+T0SyUx^I>z+@hwr z)=*DR_{x)*z%u7C7YQH5T1cV+StT5m^Kwn^AaoRWq#)G8-KCyaXhCSaN-&%6AaoR~ zry$hBO57tVC0O}|hOR?LvD1>6T0;C};FD!M?<`S8X4lo8^Srvvt}n zd(-WnP>=PXt;zD!-ik-B2Y*85vh5#x8t!_x-c3*j9O7%Q@ep2u5)pC-p zt7NGw5~8s~j8a!_uQRyxd1&~ktm7gos|MUG)2)umzF8CM$sUYqe@9eGWY4cPSnWQS zj>cI&7pLG>8-L0X7Wz)#z*C<;xKYm`tTsjInfOSF7H6}ys@3d79_6&RX z@Thvic7wk&h6ZG|95rKJ>bdRvSDvEkQG#o7dc9Y!?j9Y*eMx6iay4|B6eR2>md l%e%FkQ6Xa%nQO4dim24XI^H9yo><;8?u{zmMWSmN)&KLqM$G^K literal 0 HcmV?d00001 diff --git a/resources/profiles/Snapmaker/Snapmaker Artisan_cover.png b/resources/profiles/Snapmaker/Snapmaker Artisan_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..e93435e95286ce5a9e15108d4079e13e4479d61a GIT binary patch literal 241679 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 }TbR4&%Io!8VEI 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%0D#0POq1)N2lLMM77ifbc+b3DA?V`aJ1l}t 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 + + + + + + + + \ No newline at end of file diff --git a/resources/profiles/Snapmaker/Snapmaker J1_cover.png b/resources/profiles/Snapmaker/Snapmaker J1_cover.png index 6c914790ca6492e8d549afe99ad1e84ee25eccf1..7c185039120887a02cb075328106b2c664b6a1aa 100644 GIT binary patch literal 402570 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%0AeicYpRcR?V)$AS#(-F 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

  1. BF6-vJQVyL1WLTQj`)!i$9B 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¬?-rUU>KX?H8=wi#dGE z84aA*gH5E7`ugO7D4D6MDf4jN zFRw4J-&P0uJh_>f3^8*$t_|2~fh9e>t|_b)X$_tZyS!2=~?@> z<2a5m@7>CdU;p}t=&nov+fLYi>oP5-j*@pVAUp2&H+EEH?BZfx>BG|ax{s6N#L2?# z?c-M%<3w8%^L*l~ufE3fc;GmnD49|4U~;G%sVPZp-; z&g}JBw=PTL$j%i+2FTHoNtW>JZrT}GeKO*=WUST1ccxRD0Sr8O-{0Pt;?)*vrWv!W zg`OC34D-=v#VNhD>tsWV>?u`!qI~6vWl2!}CC2hp*Q3b5#;(-W#bL7H^ZCHG-7r?e z=ox(itq+`M$J-k*bW`RMH+-$o6subiR11si$jDgAHyjscmVkBY{hHXJ{N zYDrh7nyQX#)r2LifFgcZIZ$;LZ98v7Lw~jF;+BhRrhfLWQ{8y(`pwA)cMJ1L|di+w^Ikg0&Ne%T}q}v?N#xAMe%kz0) zE1Not6Ll-FvCzkfT6Y|6;O*_s#(^a)nOIBay=k^Q9gT-e$y&_Vsr5)=gW*l=kY+!ccIs44D?1p>rcu+q|;|HX(7e4Whh&T>Drn~Gc*(LI_cLb zh)+%snm#3iGljDb;1Hs3VR-7EEgeQY!Il553fM}HP*tEu(&4~kp_zosnk(a_sB|gb zToLw?($anBgdav_yX?Smbo83cxQ%(JHyQCgp*CH-doKj%xKa*BS3^TF;oBy?`@kmr zV*(pRS?_Pzb;x&PFYkR#tdgO3O+DKP48~rPl6N^Z~#N~@{DGaAk+Uv%|7;SthpufC+ z>mBGZ#!4xR%dGGNb%B;;aeBE}zsCCBZW}Nhd_S<|jT>5TFe4L|<}aOkSI5yF!N<(C zpyYyDHe%ySrH(97+c(z~GLEL9J{rz;a^zbJ&UR2jp$-GPNj~=F!?|xeW;Z;Z@5tu3 zAL4_K;}gc%_dHL`*-^Km?&Z*E+5+dp^e47xO68cG0T4-Y zk{RPqs2ekt$OaW>OZrSVP+DSF*%#XEa*#p;2f5W`-X`f(@ghC&Mc6*O3r!RQT&ONA zjr>v+E$gL2Vv-bG%vZ0qt}f16roHRZrUy6FsZfdI{(Zk=-?l)-Zu<@2eDe+d>Re!1T+yikLRV~*A%6l zXI%fBDw^mSmU(bpgPmi_wfOaG+2Ywd&nK_7KYt2hVj-C{(a5MJE8UP%lip8CdLk7w zV-3Ym_fDhh0_Lz67Bw+nw%n$EIsE2iD(Za>GjVWW!rqd+H zaKu(6lvMEP(>o>@SzA&?${AH0)7DOG`yF$1oToLqog@iRNXa`gBgfV6~puNnZ=71E8(McvwYK2UOs zg*T^!+wD!Aii~aBg|~D12sg{ERv0oypVVll6cMyd(X62aSPWj7bKq15Xim}tt_3h% z@!@oeB3Z(|-GMdf)>l+Tw#-eqXlz>4Ze#sncT`2c~3^z?EL~)e(UWKh&%UPhf||WhIF3>G&%jQRY&xZ5yMDb4Do{KmF-n z#<$;ogI|CDJ$~`$eWnyTduUYzT>n%rY<`>nvE%)cnnt#J9yrYZa4}tgMi@u-m+@NOKj;K6duq+NU4z zJK0jmKVs6NZg#SS`~HT}^^7J;wfwNvM?AEOu4Q)vaiJ zTS783=c2zrIIB6iR`kJtTkAL#AmRrI*G_s@y`3YzmL%0D$T9|H5DAkiIj;DZ2eRRmL1~bcq#@tGpNJK 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 literal 45686 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 - - - - + + + + - - - - - - + + + + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + diff --git a/resources/profiles/Snapmaker/filament/PolyLite Dual PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/PolyLite Dual PLA @0.2 nozzle.json new file mode 100644 index 00000000000..f47614d7102 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/PolyLite Dual PLA @0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "PolyLite Dual PLA @0.2 nozzle", + "setting_id": "490991920", + "inherits": "PolyLite PLA @0.2 nozzle", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/PolyLite Dual PLA.json b/resources/profiles/Snapmaker/filament/PolyLite Dual PLA.json new file mode 100644 index 00000000000..e6ab1a14966 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/PolyLite Dual PLA.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "PolyLite Dual PLA", + "setting_id": "64868365", + "inherits": "PolyLite PLA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/PolyLite PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/PolyLite PLA @0.2 nozzle.json index f2caa20861d..b3c643a0429 100644 --- a/resources/profiles/Snapmaker/filament/PolyLite PLA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/PolyLite PLA @0.2 nozzle.json @@ -7,15 +7,15 @@ "inherits": "PolyLite PLA @base", "compatible_printers": [ "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)" ], "filament_max_volumetric_speed": [ - "1" + "1.6" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/PolyLite PLA.json b/resources/profiles/Snapmaker/filament/PolyLite PLA.json index b0e4fe3ed20..aa38602aa8c 100644 --- a/resources/profiles/Snapmaker/filament/PolyLite PLA.json +++ b/resources/profiles/Snapmaker/filament/PolyLite PLA.json @@ -9,24 +9,24 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/PolyTerra Dual PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/PolyTerra Dual PLA @0.2 nozzle.json new file mode 100644 index 00000000000..c3673b4d3cb --- /dev/null +++ b/resources/profiles/Snapmaker/filament/PolyTerra Dual PLA @0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "PolyTerra Dual PLA @0.2 nozzle", + "setting_id": "1258531391", + "inherits": "PolyTerra PLA @0.2 nozzle", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/PolyTerra Dual PLA.json b/resources/profiles/Snapmaker/filament/PolyTerra Dual PLA.json new file mode 100644 index 00000000000..8b13924b724 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/PolyTerra Dual PLA.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "PolyTerra Dual PLA", + "setting_id": "1258005940", + "inherits": "PolyTerra PLA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/PolyTerra PLA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/PolyTerra PLA @0.2 nozzle.json index f2b469c7645..215685b8e3f 100644 --- a/resources/profiles/Snapmaker/filament/PolyTerra PLA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/PolyTerra PLA @0.2 nozzle.json @@ -7,15 +7,15 @@ "inherits": "PolyTerra PLA @base", "compatible_printers": [ "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)" ], "filament_max_volumetric_speed": [ - "1" + "1.4" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/PolyTerra PLA @base.json b/resources/profiles/Snapmaker/filament/PolyTerra PLA @base.json index c09b45b79fc..fdd96cf6f9f 100644 --- a/resources/profiles/Snapmaker/filament/PolyTerra PLA @base.json +++ b/resources/profiles/Snapmaker/filament/PolyTerra PLA @base.json @@ -12,7 +12,7 @@ "1.31" ], "filament_max_volumetric_speed": [ - "18" + "14.4" ], "default_filament_colour": [ "#73CEC8" diff --git a/resources/profiles/Snapmaker/filament/PolyTerra PLA.json b/resources/profiles/Snapmaker/filament/PolyTerra PLA.json index 712fbd4c46c..644b87e1ab8 100644 --- a/resources/profiles/Snapmaker/filament/PolyTerra PLA.json +++ b/resources/profiles/Snapmaker/filament/PolyTerra PLA.json @@ -9,24 +9,24 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS @0.2 nozzle.json index 1588ca9e2f6..33966f31c75 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS @0.2 nozzle.json @@ -7,13 +7,13 @@ "inherits": "Snapmaker ABS @base", "compatible_printers": [ "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", - "Snapmaker A350 QSKit (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)" + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QSKit (0.2 nozzle)" ], "filament_max_volumetric_speed": [ "2" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ABS.json b/resources/profiles/Snapmaker/filament/Snapmaker ABS.json index e6280f6b7bb..5afe4a5632f 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ABS.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ABS.json @@ -9,26 +9,26 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ASA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker ASA @0.2 nozzle.json index 8df1b2ac86e..0edcc66bdc5 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ASA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ASA @0.2 nozzle.json @@ -7,15 +7,15 @@ "inherits": "Snapmaker ASA @base", "compatible_printers": [ "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", - "Snapmaker A350 QSKit (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)" + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QSKit (0.2 nozzle)" ], "filament_max_volumetric_speed": [ - "2" + "2.4" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker ASA.json b/resources/profiles/Snapmaker/filament/Snapmaker ASA.json index 5a4c9270d73..762c3f8fe47 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker ASA.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker ASA.json @@ -9,26 +9,26 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json new file mode 100644 index 00000000000..6db75b2afc5 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual ABS @0.2 nozzle", + "setting_id": "2402717089", + "inherits": "Snapmaker Dual ABS @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_end_gcode": [ + "" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "overhang_fan_speed": [ + "80" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_loading_speed_start": [ + "3" + ], + "filament_loading_speed": [ + "25" + ], + "filament_unloading_speed_start": [ + "3" + ], + "filament_unloading_speed": [ + "25" + ], + "filament_load_time": [ + "0" + ], + "filament_unload_time": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cooling_initial_speed": [ + "2.2" + ], + "filament_cooling_final_speed": [ + "3.4" + ], + "fan_max_speed": [ + "80" + ], + "pressure_advance": [ + "0.015" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.8 nozzle.json new file mode 100644 index 00000000000..41053273f2f --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.8 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual ABS @0.8 nozzle", + "setting_id": "519475561", + "inherits": "Snapmaker Dual ABS @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "slow_down_min_speed": [ + "10" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json new file mode 100644 index 00000000000..f4cb4f76cab --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json @@ -0,0 +1,59 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual ABS @base", + "filament_id": "168223792", + "inherits": "fdm_filament_abs", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "105" + ], + "overhang_fan_speed": [ + "20" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "fan_max_speed": [ + "15" + ], + "pressure_advance": [ + "0.02" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json new file mode 100644 index 00000000000..e6f005ca231 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS Benchy.json @@ -0,0 +1,62 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual ABS Benchy", + "setting_id": "3540754477", + "inherits": "Snapmaker Dual ABS @base", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "compatible_prints": [ + "0.25 Benchy @Snapmaker Artisan (0.4 nozzle)" + ], + "overhang_fan_speed": [ + "35" + ], + "slow_down_for_layer_cooling": [ + "0" + ], + "fan_cooling_layer_time": [ + "2" + ], + "filament_deretraction_speed": [ + "55" + ], + "filament_max_volumetric_speed": [ + "31" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.5" + ], + "filament_z_hop": [ + "0" + ], + "filament_retraction_speed": [ + "55" + ], + "filament_wipe": [ + "0" + ], + "nozzle_temperature": [ + "250" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "0" + ], + "slow_down_layer_time": [ + "0" + ], + "default_filament_colour": [ + "#335BBB" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS.json new file mode 100644 index 00000000000..90049f3a659 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual ABS", + "setting_id": "937533070", + "inherits": "Snapmaker Dual ABS @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json new file mode 100644 index 00000000000..b2b5588eb2f --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual ASA @0.2 nozzle", + "setting_id": "2698003242", + "inherits": "Snapmaker Dual ASA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_end_gcode": [ + "" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "overhang_fan_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "2.4" + ], + "filament_loading_speed_start": [ + "3" + ], + "filament_loading_speed": [ + "25" + ], + "filament_unloading_speed_start": [ + "3" + ], + "filament_unloading_speed": [ + "25" + ], + "filament_load_time": [ + "0" + ], + "filament_unload_time": [ + "0" + ], + "filament_cooling_moves": [ + "0" + ], + "filament_cooling_initial_speed": [ + "2.2" + ], + "filament_cooling_final_speed": [ + "3.4" + ], + "fan_max_speed": [ + "35" + ], + "fan_min_speed": [ + "10" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json new file mode 100644 index 00000000000..1da233088ab --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json @@ -0,0 +1,56 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual ASA @base", + "filament_id": "1247172706", + "inherits": "fdm_filament_asa", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], + "overhang_fan_speed": [ + "15" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "fan_max_speed": [ + "15" + ], + "fan_min_speed": [ + "0" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA.json new file mode 100644 index 00000000000..1715dca402f --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual ASA", + "setting_id": "2541866198", + "inherits": "Snapmaker Dual ASA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json new file mode 100644 index 00000000000..514b9009a5c --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json @@ -0,0 +1,56 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PA-CF @base", + "filament_id": "3493177425", + "inherits": "fdm_filament_pa", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "hot_plate_temp": [ + "100" + ], + "hot_plate_temp_initial_layer": [ + "95" + ], + "overhang_fan_speed": [ + "50" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "15" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF.json new file mode 100644 index 00000000000..518d2b9f080 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PA-CF", + "setting_id": "2799665789", + "inherits": "Snapmaker Dual PA-CF @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json new file mode 100644 index 00000000000..67bca9c4e87 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json @@ -0,0 +1,53 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PET @base", + "filament_id": "2128577941", + "inherits": "fdm_filament_pet", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "overhang_fan_speed": [ + "40" + ], + "filament_max_volumetric_speed": [ + "6.8" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "26" + ], + "slow_down_min_speed": [ + "35" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET.json new file mode 100644 index 00000000000..03a664e8cf1 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PET", + "setting_id": "4213200045", + "inherits": "Snapmaker Dual PET @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.2 nozzle.json new file mode 100644 index 00000000000..8ab0c19c204 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PETG @0.2 nozzle", + "setting_id": "2935726097", + "inherits": "Snapmaker Dual PETG @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "1.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json new file mode 100644 index 00000000000..5dd8ca18195 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json @@ -0,0 +1,25 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PETG @0.8 nozzle", + "setting_id": "1060879577", + "inherits": "Snapmaker Dual PETG @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json new file mode 100644 index 00000000000..7faa2b3630f --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json @@ -0,0 +1,65 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PETG @base", + "filament_id": "2209001062", + "inherits": "fdm_filament_petg", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "overhang_fan_speed": [ + "60" + ], + "filament_density": [ + "1.25" + ], + "filament_z_hop_types": [ + "Spiral Lift" + ], + "filament_retraction_speed": [ + "35" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature": [ + "255" + ], + "temperature_vitrification": [ + "178" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "nozzle_temperature_range_low": [ + "240" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json new file mode 100644 index 00000000000..c1603ece8a8 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json @@ -0,0 +1,95 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PETG-CF @base", + "filament_id": "1042511226", + "inherits": "fdm_filament_petg", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "required_nozzle_HRC": [ + "40" + ], + "overhang_fan_threshold": [ + "10%" + ], + "overhang_fan_speed": [ + "55" + ], + "fan_cooling_layer_time": [ + "10" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "6.4" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "temperature_vitrification": [ + "178" + ], + "fan_max_speed": [ + "20" + ], + "fan_min_speed": [ + "0" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "6" + ], + "enable_pressure_advance": [ + "0" + ], + "filament_type": [ + "PETG-CF" + ], + "default_filament_colour": [ + "#3D3C39" + ], + "nozzle_temperature_range_high": [ + "255" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF.json new file mode 100644 index 00000000000..e74ff28c311 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PETG-CF", + "setting_id": "950459082", + "inherits": "Snapmaker Dual PETG-CF @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG.json new file mode 100644 index 00000000000..3847f3627b1 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PETG", + "setting_id": "2452014271", + "inherits": "Snapmaker Dual PETG @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json new file mode 100644 index 00000000000..cb9e12eb4a3 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PLA @base", + "filament_id": "1417031127", + "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature": [ + "220" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.2 nozzle.json new file mode 100644 index 00000000000..a6ff3b69522 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Eco @0.2 nozzle", + "setting_id": "3529576452", + "inherits": "Snapmaker Dual PLA Eco @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.8 nozzle.json new file mode 100644 index 00000000000..2c9432c24f5 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @0.8 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Eco @0.8 nozzle", + "setting_id": "1134628044", + "inherits": "Snapmaker Dual PLA Eco @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "slow_down_min_speed": [ + "20" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json new file mode 100644 index 00000000000..0604c192119 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PLA Eco @base", + "filament_id": "200803790", + "inherits": "fdm_filament_pla_eco", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "filament_density": [ + "1.26" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco.json new file mode 100644 index 00000000000..570074dc3c0 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Eco", + "setting_id": "2158656028", + "inherits": "Snapmaker Dual PLA Eco @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.2 nozzle.json new file mode 100644 index 00000000000..31e981dd130 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Matte @0.2 nozzle", + "setting_id": "2269792171", + "inherits": "Snapmaker Dual PLA Matte @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.8 nozzle.json new file mode 100644 index 00000000000..88e7b42ef62 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @0.8 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Matte @0.8 nozzle", + "setting_id": "378166115", + "inherits": "Snapmaker Dual PLA Matte @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "slow_down_min_speed": [ + "20" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json new file mode 100644 index 00000000000..455345c14e5 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PLA Matte @base", + "filament_id": "3503790988", + "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "filament_density": [ + "1.32" + ], + "filament_max_volumetric_speed": [ + "9.6" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "215" + ], + "default_filament_colour": [ + "#EAC3C3" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte.json new file mode 100644 index 00000000000..e681e7b1852 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Matte", + "setting_id": "3959402964", + "inherits": "Snapmaker Dual PLA Matte @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @0.2 nozzle.json new file mode 100644 index 00000000000..9f8acad9bd3 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Metal @0.2 nozzle", + "setting_id": "922702789", + "inherits": "Snapmaker Dual PLA Metal @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json new file mode 100644 index 00000000000..f5bbb7250d6 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json @@ -0,0 +1,53 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PLA Metal @base", + "filament_id": "2029994346", + "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "filament_cost": [ + "90" + ], + "filament_density": [ + "1.25" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature": [ + "220" + ], + "default_filament_colour": [ + "#767A7E" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal.json new file mode 100644 index 00000000000..dfa040e7644 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Metal", + "setting_id": "720664627", + "inherits": "Snapmaker Dual PLA Metal @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @0.2 nozzle.json new file mode 100644 index 00000000000..caf986b50c7 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Silk @0.2 nozzle", + "setting_id": "965040007", + "inherits": "Snapmaker Dual PLA Silk @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json new file mode 100644 index 00000000000..9e54ccb9cf2 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json @@ -0,0 +1,62 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PLA Silk @base", + "filament_id": "1181363872", + "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "hot_plate_temp_initial_layer": [ + "65" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.32" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retraction_length": [ + "0.5" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature": [ + "230" + ], + "default_filament_colour": [ + "#CF942B" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk.json new file mode 100644 index 00000000000..083fdddb973 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA Silk", + "setting_id": "1328250686", + "inherits": "Snapmaker Dual PLA Silk @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @0.8 nozzle.json new file mode 100644 index 00000000000..edae140f174 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @0.8 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA-CF @0.8 nozzle", + "setting_id": "154056642", + "inherits": "Snapmaker Dual PLA-CF @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "filament_max_volumetric_speed": [ + "12.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json new file mode 100644 index 00000000000..c5568ad7977 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json @@ -0,0 +1,77 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PLA-CF @base", + "filament_id": "1702147325", + "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "required_nozzle_HRC": [ + "40" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "filament_density": [ + "1.22" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature": [ + "230" + ], + "temperature_vitrification": [ + "150" + ], + "default_filament_colour": [ + "#3D3C39" + ], + "filament_type": [ + "PLA-CF" + ], + "nozzle_temperature_range_low": [ + "210" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "additional_cooling_fan_speed": [ + "0" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF.json new file mode 100644 index 00000000000..4eca5405b08 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA-CF", + "setting_id": "3589359438", + "inherits": "Snapmaker Dual PLA-CF @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA.json new file mode 100644 index 00000000000..f2ae4d99488 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA.json @@ -0,0 +1,46 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PLA", + "setting_id": "1195313935", + "inherits": "Snapmaker Dual PLA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.2 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @0.2 nozzle.json new file mode 100644 index 00000000000..f83d1b68b28 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @0.2 nozzle.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PVA @0.2 nozzle", + "setting_id": "3656018400", + "inherits": "Snapmaker Dual PVA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "1.4" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature": [ + "220" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json new file mode 100644 index 00000000000..6083795b147 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json @@ -0,0 +1,41 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual PVA @base", + "filament_id": "3104636980", + "inherits": "fdm_filament_pva", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "slow_down_layer_time": [ + "8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA.json new file mode 100644 index 00000000000..b7a8430f65e --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual PVA", + "setting_id": "4145213908", + "inherits": "Snapmaker Dual PVA @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json new file mode 100644 index 00000000000..b93954f9b2e --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json @@ -0,0 +1,67 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual TPE", + "setting_id": "2704030359", + "inherits": "Snapmaker Dual TPU @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "hot_plate_temp": [ + "45" + ], + "hot_plate_temp_initial_layer": [ + "45" + ], + "overhang_fan_speed": [ + "65" + ], + "filament_flow_ratio": [ + "1.1" + ], + "filament_density": [ + "1.22" + ], + "filament_max_volumetric_speed": [ + "7.2" + ], + "fan_max_speed": [ + "65" + ], + "fan_min_speed": [ + "65" + ], + "default_filament_colour": [ + "#383737" + ], + "filament_notes": [ + "eSUN eLastic TPE-83A\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json new file mode 100644 index 00000000000..f343d1fb250 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual TPU @base", + "filament_id": "2971656290", + "inherits": "fdm_filament_tpu", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json new file mode 100644 index 00000000000..e7be5e9e7db --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU High-Flow.json @@ -0,0 +1,55 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual TPU High-Flow", + "setting_id": "1072918854", + "inherits": "Snapmaker Dual TPU @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ], + "filament_flow_ratio": [ + "0.983" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_max_volumetric_speed": [ + "7.6" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_notes": [ + "!! It needs to be dried before use.\nSnapmaker TPU 95A High-Flow\n" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU.json new file mode 100644 index 00000000000..cc2c391c8ae --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual TPU", + "setting_id": "3164285683", + "inherits": "Snapmaker Dual TPU @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json index 40a9ff19c29..ca0d592a7c0 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json @@ -7,5 +7,32 @@ "inherits": "Snapmaker J1 ABS @base", "compatible_printers": [ "Snapmaker J1 (0.2 nozzle)" + ], + "filament_end_gcode": [ + "" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "overhang_fan_speed": [ + "80" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "15" + ], + "pressure_advance": [ + "0.015" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.8 nozzle.json index 04a2d058d61..b8ae69733dd 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.8 nozzle.json @@ -9,7 +9,7 @@ "Snapmaker J1 (0.8 nozzle)" ], "filament_max_volumetric_speed": [ - "22" + "16" ], "slow_down_min_speed": [ "10" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json index d49172be1cd..2674a15d111 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json @@ -5,17 +5,29 @@ "name": "Snapmaker J1 ABS @base", "filament_id": "1223824394", "inherits": "fdm_filament_abs", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "105" + ], "overhang_fan_speed": [ - "29" + "22" ], "filament_flow_ratio": [ "0.95" ], "filament_max_volumetric_speed": [ - "18" + "9.6" ], "fan_max_speed": [ - "29" + "22" + ], + "fan_min_speed": [ + "22" ], "pressure_advance": [ "0.02" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json new file mode 100644 index 00000000000..97d656cc38a --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS Benchy.json @@ -0,0 +1,89 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker J1 ABS Benchy", + "setting_id": "356879727", + "inherits": "Snapmaker J1 ABS @base", + "compatible_printers": [ + "Snapmaker J1 (0.4 nozzle)" + ], + "compatible_prints": [ + "0.25 Benchy @Snapmaker J1 (0.4 nozzle)" + ], + "overhang_fan_speed": [ + "35" + ], + "slow_down_for_layer_cooling": [ + "0" + ], + "fan_cooling_layer_time": [ + "2" + ], + "filament_deretraction_speed": [ + "55" + ], + "filament_max_volumetric_speed": [ + "31" + ], + "filament_retract_when_changing_layer": [ + "0" + ], + "filament_retraction_length": [ + "0.5" + ], + "filament_z_hop": [ + "0" + ], + "filament_retraction_speed": [ + "55" + ], + "filament_wipe": [ + "0" + ], + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ], + "nozzle_temperature": [ + "250" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "65" + ], + "slow_down_min_speed": [ + "0" + ], + "slow_down_layer_time": [ + "0" + ], + "default_filament_colour": [ + "#335BBB" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @0.2 nozzle.json index 41f1e92077e..6e6be4145fb 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @0.2 nozzle.json @@ -7,5 +7,23 @@ "inherits": "Snapmaker J1 ASA @base", "compatible_printers": [ "Snapmaker J1 (0.2 nozzle)" + ], + "hot_plate_temp": [ + "90" + ], + "hot_plate_temp_initial_layer": [ + "90" + ], + "overhang_fan_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "2.4" + ], + "fan_max_speed": [ + "35" + ], + "fan_min_speed": [ + "10" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json index a38b5082239..cd43cd00b43 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ASA @base.json @@ -5,9 +5,18 @@ "name": "Snapmaker J1 ASA @base", "filament_id": "144877656", "inherits": "fdm_filament_asa", + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "100" + ], "overhang_fan_speed": [ "20" ], + "filament_max_volumetric_speed": [ + "9.6" + ], "fan_max_speed": [ "20" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json index b7bda1fadc6..1514c32a42c 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PA-CF @base", "filament_id": "1210173120", "inherits": "fdm_filament_pa", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "overhang_fan_speed": [ "55" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json index a65db99924b..fdd3a613bf4 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PET @base", "filament_id": "1009481135", "inherits": "fdm_filament_pet", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "overhang_fan_speed": [ "40" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.2 nozzle.json index f8c6325bc18..2f7f4539ac8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.2 nozzle.json @@ -9,6 +9,6 @@ "Snapmaker J1 (0.2 nozzle)" ], "filament_max_volumetric_speed": [ - "1.2" + "1.6" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.8 nozzle.json index 3860051545d..d78b04b3696 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @0.8 nozzle.json @@ -8,9 +8,6 @@ "compatible_printers": [ "Snapmaker J1 (0.8 nozzle)" ], - "filament_max_volumetric_speed": [ - "16" - ], "fan_max_speed": [ "60" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json index d856f8ed3e5..68c61976239 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json @@ -5,12 +5,15 @@ "name": "Snapmaker J1 PETG @base", "filament_id": "1172603684", "inherits": "fdm_filament_petg", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], + "overhang_fan_speed": [ + "60" + ], "filament_density": [ "1.25" ], - "filament_max_volumetric_speed": [ - "14" - ], "filament_z_hop_types": [ "Spiral Lift" ], @@ -29,24 +32,6 @@ "fan_min_speed": [ "10" ], - "cool_plate_temp": [ - "70" - ], - "eng_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], "nozzle_temperature_range_low": [ "240" ] diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json index 30d518d9d48..7a8f9f949ea 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json @@ -5,14 +5,20 @@ "name": "Snapmaker J1 PETG-CF @base", "filament_id": "4235401834", "inherits": "fdm_filament_petg", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "required_nozzle_HRC": [ "40" ], - "reduce_fan_stop_start_freq": [ - "0" + "overhang_fan_threshold": [ + "10%" + ], + "overhang_fan_speed": [ + "55" ], "fan_cooling_layer_time": [ - "20" + "10" ], "filament_cost": [ "40" @@ -21,7 +27,7 @@ "1.25" ], "filament_max_volumetric_speed": [ - "14" + "6.4" ], "filament_retraction_minimum_travel": [ "nil" @@ -29,8 +35,8 @@ "filament_retraction_length": [ "nil" ], - "nozzle_temperature": [ - "255" + "nozzle_temperature_initial_layer": [ + "250" ], "temperature_vitrification": [ "178" @@ -50,31 +56,13 @@ "enable_pressure_advance": [ "0" ], - "cool_plate_temp": [ - "70" - ], - "eng_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" + "filament_type": [ + "PETG-CF" ], "default_filament_colour": [ "#3D3C39" ], - "filament_type": [ - "PETG-CF" - ], - "nozzle_temperature_range_low": [ - "240" + "nozzle_temperature_range_high": [ + "255" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json index abd1c423891..e95ea7a1125 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PLA @base", "filament_id": "377675245", "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "filament_retraction_length": [ "nil" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json index f5f24aa8c0e..4e2f8954b6f 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PLA Eco @base", "filament_id": "3383257822", "inherits": "fdm_filament_pla_eco", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "filament_density": [ "1.26" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @0.8 nozzle.json index b3f6fa1f3b1..150999911fe 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @0.8 nozzle.json @@ -8,9 +8,6 @@ "compatible_printers": [ "Snapmaker J1 (0.8 nozzle)" ], - "filament_max_volumetric_speed": [ - "22" - ], "slow_down_min_speed": [ "20" ] diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json index efca77692fe..1f9759f5620 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json @@ -5,11 +5,14 @@ "name": "Snapmaker J1 PLA Matte @base", "filament_id": "1192769348", "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "filament_density": [ "1.32" ], "filament_max_volumetric_speed": [ - "19" + "9.6" ], "nozzle_temperature_initial_layer": [ "215" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json index 3d75258f561..ceac6636484 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PLA Metal @base", "filament_id": "4012961186", "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "filament_cost": [ "90" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json index e9fc62b8fc3..780b647fca0 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PLA Silk @base", "filament_id": "1528786603", "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "hot_plate_temp_initial_layer": [ "65" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @0.8 nozzle.json index e7714a602f7..28dff6e2ea8 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @0.8 nozzle.json @@ -9,6 +9,6 @@ "Snapmaker J1 (0.8 nozzle)" ], "filament_max_volumetric_speed": [ - "18" + "12.8" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json index 699e8eee375..5b5ffb42be3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PLA-CF @base", "filament_id": "3806593857", "inherits": "fdm_filament_pla", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "required_nozzle_HRC": [ "40" ], @@ -29,24 +32,6 @@ "temperature_vitrification": [ "150" ], - "cool_plate_temp": [ - "55" - ], - "eng_plate_temp": [ - "55" - ], - "textured_plate_temp": [ - "55" - ], - "cool_plate_temp_initial_layer": [ - "55" - ], - "eng_plate_temp_initial_layer": [ - "55" - ], - "textured_plate_temp_initial_layer": [ - "55" - ], "default_filament_colour": [ "#3D3C39" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json index e7e03c48e1a..e74dfa665ff 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json @@ -5,6 +5,9 @@ "name": "Snapmaker J1 PVA @base", "filament_id": "4227461134", "inherits": "fdm_filament_pva", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ], "slow_down_layer_time": [ "8" ] diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json index 101d1bcd198..ae11ea5b292 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json @@ -4,5 +4,8 @@ "instantiation": "false", "name": "Snapmaker J1 TPU @base", "filament_id": "4092268632", - "inherits": "fdm_filament_tpu" + "inherits": "fdm_filament_tpu", + "filament_end_gcode": [ + "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF.json b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF.json index 0a7bc640b3b..7f1cf4b3465 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PA-CF.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PA-CF.json @@ -9,26 +9,26 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json deleted file mode 100644 index aaafafde466..00000000000 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "filament", - "from": "system", - "instantiation": "true", - "name": "Snapmaker PET @Dual", - "setting_id": "145337790", - "inherits": "Snapmaker PET @base", - "compatible_printers": [ - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" - ], - "overhang_fan_speed": [ - "40" - ], - "fan_max_speed": [ - "55" - ], - "fan_min_speed": [ - "20" - ] -} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET.json b/resources/profiles/Snapmaker/filament/Snapmaker PET.json index 76943095eaf..5b62beb0b80 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET.json @@ -5,30 +5,5 @@ "name": "Snapmaker PET", "setting_id": "3543479015", "inherits": "Snapmaker PET @base", - "compatible_printers": [ - "Snapmaker A250 (0.4 nozzle)", - "Snapmaker A250 (0.6 nozzle)", - "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 QSKit (0.4 nozzle)", - "Snapmaker A250 QSKit (0.6 nozzle)", - "Snapmaker A250 QSKit (0.8 nozzle)", - "Snapmaker A350 QSKit (0.4 nozzle)", - "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" - ] + "compatible_printers": null } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG @0.2 nozzle.json index 824fe3aeb66..eceef2ca82a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG @0.2 nozzle.json @@ -7,15 +7,15 @@ "inherits": "Snapmaker PETG @base", "compatible_printers": [ "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", - "Snapmaker A350 QSKit (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)" + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QSKit (0.2 nozzle)" ], "filament_max_volumetric_speed": [ - "1" + "1.6" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json index 13a9d748955..06600fd9e89 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json @@ -8,11 +8,14 @@ "required_nozzle_HRC": [ "40" ], - "reduce_fan_stop_start_freq": [ - "0" + "overhang_fan_threshold": [ + "10%" + ], + "overhang_fan_speed": [ + "55" ], "fan_cooling_layer_time": [ - "20" + "10" ], "filament_cost": [ "40" @@ -20,12 +23,18 @@ "filament_density": [ "1.25" ], + "filament_max_volumetric_speed": [ + "6.4" + ], "filament_retraction_minimum_travel": [ "nil" ], "filament_retraction_length": [ "nil" ], + "nozzle_temperature_initial_layer": [ + "250" + ], "temperature_vitrification": [ "178" ], @@ -44,31 +53,13 @@ "enable_pressure_advance": [ "0" ], - "cool_plate_temp": [ - "70" - ], - "eng_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" + "filament_type": [ + "PETG-CF" ], "default_filament_colour": [ "#3D3C39" ], - "filament_type": [ - "PETG-CF" - ], - "nozzle_temperature_range_low": [ - "240" + "nozzle_temperature_range_high": [ + "255" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF.json index 25bc06a5991..6901560cc30 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF.json @@ -9,26 +9,26 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG.json index 88dc72729dc..855640f556b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG.json @@ -9,26 +9,26 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco.json index afe83fd2992..ee4863686b0 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Eco.json @@ -10,25 +10,33 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A250 QSKit (0.2 nozzle)", + "Snapmaker A250 QSKit (0.4 nozzle)", + "Snapmaker A250 QSKit (0.6 nozzle)", + "Snapmaker A250 QSKit (0.8 nozzle)", "Snapmaker A350 (0.2 nozzle)", "Snapmaker A350 (0.4 nozzle)", "Snapmaker A350 (0.6 nozzle)", "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QSKit (0.2 nozzle)", + "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @0.2 nozzle.json index 9e7b884d477..90f05057b64 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk @0.2 nozzle.json @@ -7,12 +7,12 @@ "inherits": "Snapmaker PLA Silk @base", "compatible_printers": [ "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)" ], "filament_max_volumetric_speed": [ diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk.json index e26c80ff7ec..6928499914b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA Silk.json @@ -9,24 +9,24 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF.json index 5fd902e2173..5439435abfd 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA-CF.json @@ -9,24 +9,24 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PLA.json b/resources/profiles/Snapmaker/filament/Snapmaker PLA.json index 0deea4e9366..5dd453dfa44 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PLA.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PLA.json @@ -10,33 +10,33 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.2 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 QSKit (0.8 nozzle)" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json deleted file mode 100644 index e9831920995..00000000000 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "filament", - "from": "system", - "instantiation": "true", - "name": "Snapmaker PVA @0.2 nozzle", - "setting_id": "1131479069", - "inherits": "Snapmaker PVA @base", - "compatible_printers": [ - "Snapmaker A250 (0.2 nozzle)", - "Snapmaker A350 (0.2 nozzle)", - "Snapmaker A250 Dual (0.2 nozzle)", - "Snapmaker A350 Dual (0.2 nozzle)", - "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)", - "Snapmaker A250 QSKit (0.2 nozzle)", - "Snapmaker A350 QSKit (0.2 nozzle)" - ], - "filament_max_volumetric_speed": [ - "1.2" - ] -} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA.json deleted file mode 100644 index fdd0387142d..00000000000 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "type": "filament", - "from": "system", - "instantiation": "true", - "name": "Snapmaker PVA", - "setting_id": "3741816734", - "inherits": "Snapmaker PVA @base", - "compatible_printers": [ - "Snapmaker A250 (0.4 nozzle)", - "Snapmaker A250 (0.6 nozzle)", - "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", - "Snapmaker A250 QSKit (0.4 nozzle)", - "Snapmaker A250 QSKit (0.6 nozzle)", - "Snapmaker A250 QSKit (0.8 nozzle)", - "Snapmaker A350 QSKit (0.4 nozzle)", - "Snapmaker A350 QSKit (0.6 nozzle)", - "Snapmaker A350 QSKit (0.8 nozzle)" - ] -} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker TPE.json index 846a0536881..ac388de2231 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPE.json @@ -9,24 +9,24 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPU.json b/resources/profiles/Snapmaker/filament/Snapmaker TPU.json index c1d56cc39ba..3d203bcd72a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPU.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPU.json @@ -9,24 +9,24 @@ "Snapmaker A250 (0.4 nozzle)", "Snapmaker A250 (0.6 nozzle)", "Snapmaker A250 (0.8 nozzle)", - "Snapmaker A350 (0.4 nozzle)", - "Snapmaker A350 (0.6 nozzle)", - "Snapmaker A350 (0.8 nozzle)", - "Snapmaker A250 Dual (0.4 nozzle)", - "Snapmaker A250 Dual (0.6 nozzle)", - "Snapmaker A250 Dual (0.8 nozzle)", - "Snapmaker A350 Dual (0.4 nozzle)", - "Snapmaker A350 Dual (0.6 nozzle)", - "Snapmaker A350 Dual (0.8 nozzle)", - "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)" diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_common.json b/resources/profiles/Snapmaker/filament/fdm_filament_common.json index e2d108845fe..4e6b9230ff8 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_common.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_common.json @@ -70,7 +70,7 @@ "0" ], "filament_minimal_purge_on_wipe_tower": [ - "3" + "0" ], "filament_retraction_minimum_travel": [ "nil" @@ -169,21 +169,21 @@ "0.04" ], "cool_plate_temp": [ - "60" + "0" ], "eng_plate_temp": [ - "60" + "0" ], "textured_plate_temp": [ - "60" + "0" ], "cool_plate_temp_initial_layer": [ - "60" + "0" ], "eng_plate_temp_initial_layer": [ - "60" + "0" ], "textured_plate_temp_initial_layer": [ - "60" + "0" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_pa.json b/resources/profiles/Snapmaker/filament/fdm_filament_pa.json index aa2b20a5c2f..983d97901d5 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_pa.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_pa.json @@ -8,10 +8,10 @@ "40" ], "hot_plate_temp": [ - "90" + "95" ], "hot_plate_temp_initial_layer": [ - "85" + "90" ], "overhang_fan_threshold": [ "0%" @@ -70,24 +70,6 @@ "slow_down_layer_time": [ "20" ], - "cool_plate_temp": [ - "90" - ], - "eng_plate_temp": [ - "90" - ], - "textured_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "85" - ], - "eng_plate_temp_initial_layer": [ - "85" - ], - "textured_plate_temp_initial_layer": [ - "85" - ], "default_filament_colour": [ "#3D3C39" ], diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_pva.json b/resources/profiles/Snapmaker/filament/fdm_filament_pva.json index 73717471a5e..9f34b6ed576 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_pva.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_pva.json @@ -55,24 +55,6 @@ "slow_down_layer_time": [ "7" ], - "cool_plate_temp": [ - "50" - ], - "eng_plate_temp": [ - "50" - ], - "textured_plate_temp": [ - "50" - ], - "cool_plate_temp_initial_layer": [ - "50" - ], - "eng_plate_temp_initial_layer": [ - "50" - ], - "textured_plate_temp_initial_layer": [ - "50" - ], "default_filament_colour": [ "#D9DFE3" ], diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json b/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json index bb6a8df3a2d..86075bf3801 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json @@ -32,7 +32,7 @@ "1.24" ], "filament_deretraction_speed": [ - "20" + "25" ], "filament_max_volumetric_speed": [ "2.8" @@ -41,7 +41,7 @@ "0" ], "filament_retraction_length": [ - "0.6" + "0.5" ], "filament_z_hop": [ "0" @@ -50,7 +50,7 @@ "Normal Lift" ], "filament_retraction_speed": [ - "20" + "25" ], "nozzle_temperature_initial_layer": [ "240" diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.2 nozzle).json new file mode 100644 index 00000000000..0e263e84128 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.2 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 BKit (0.2 nozzle)", + "setting_id": "601809056", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_bk", + "printer_model": "Snapmaker A250 BKit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.4 nozzle).json new file mode 100644 index 00000000000..149ab1f9498 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.4 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 BKit (0.4 nozzle)", + "setting_id": "1355061546", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_bk", + "printer_model": "Snapmaker A250 BKit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.6 nozzle).json new file mode 100644 index 00000000000..6971038c816 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.6 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 BKit (0.6 nozzle)", + "setting_id": "2117251500", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_bk", + "printer_model": "Snapmaker A250 BKit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.8 nozzle).json new file mode 100644 index 00000000000..0753e53bb94 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit (0.8 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 BKit (0.8 nozzle)", + "setting_id": "3069209150", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_bk", + "printer_model": "Snapmaker A250 BKit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json new file mode 100644 index 00000000000..58ce739df1c --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 BKit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A250 BKit", + "url": "https://github.com/macdylan", + "model_id": "1921635482", + "bed_model": "Snapmaker A250_bed.stl", + "bed_texture": "Snapmaker A250_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.2 nozzle).json new file mode 100644 index 00000000000..fe7de49ffc7 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.2 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual BKit (0.2 nozzle)", + "setting_id": "1737970856", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_bk", + "printer_model": "Snapmaker A250 Dual BKit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2", + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.4 nozzle).json new file mode 100644 index 00000000000..55221d047a2 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.4 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual BKit (0.4 nozzle)", + "setting_id": "344796450", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_bk", + "printer_model": "Snapmaker A250 Dual BKit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4", + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.6 nozzle).json new file mode 100644 index 00000000000..04bab454148 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.6 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual BKit (0.6 nozzle)", + "setting_id": "981140900", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_bk", + "printer_model": "Snapmaker A250 Dual BKit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6", + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.8 nozzle).json new file mode 100644 index 00000000000..b938a00d3c3 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit (0.8 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual BKit (0.8 nozzle)", + "setting_id": "4072267318", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_bk", + "printer_model": "Snapmaker A250 Dual BKit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8", + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json new file mode 100644 index 00000000000..4d353c996d8 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual BKit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A250 Dual BKit", + "url": "https://github.com/macdylan", + "model_id": "1463587605", + "bed_model": "Snapmaker A250_bed.stl", + "bed_texture": "Snapmaker A250 Dual_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.2 nozzle).json new file mode 100644 index 00000000000..6fad47bacbc --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.2 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "setting_id": "1173309402", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_qs_bk", + "printer_model": "Snapmaker A250 Dual QS+B Kit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2", + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.4 nozzle).json new file mode 100644 index 00000000000..64560104bc7 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.4 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "setting_id": "922041936", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_qs_bk", + "printer_model": "Snapmaker A250 Dual QS+B Kit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4", + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.6 nozzle).json new file mode 100644 index 00000000000..c61616bf2bf --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.6 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "setting_id": "402855638", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_qs_bk", + "printer_model": "Snapmaker A250 Dual QS+B Kit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6", + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.8 nozzle).json new file mode 100644 index 00000000000..74c02a16997 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit (0.8 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "setting_id": "3502361924", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_dual_qs_bk", + "printer_model": "Snapmaker A250 Dual QS+B Kit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8", + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json new file mode 100644 index 00000000000..177c6ce1f3f --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QS+B Kit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A250 Dual QS+B Kit", + "url": "https://github.com/macdylan", + "model_id": "3396626756", + "bed_model": "Snapmaker A250_bed.stl", + "bed_texture": "Snapmaker A250 Dual_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json index b9393c2dc3a..ebf2d3524b6 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual QSKit.json @@ -6,6 +6,6 @@ "url": "https://github.com/macdylan", "model_id": "2661871200", "bed_model": "Snapmaker A250_bed.stl", - "bed_texture": "Snapmaker A250 QSKit_texture.svg", + "bed_texture": "Snapmaker A250 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json index 2ec1c0ee928..2e655df13ab 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 Dual.json @@ -6,6 +6,6 @@ "url": "https://github.com/macdylan", "model_id": "2728546690", "bed_model": "Snapmaker A250_bed.stl", - "bed_texture": "Snapmaker A250_texture.svg", + "bed_texture": "Snapmaker A250 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.2 nozzle).json new file mode 100644 index 00000000000..7730efb8e2e --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.2 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "setting_id": "302401596", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_qs_bk", + "printer_model": "Snapmaker A250 QS+B Kit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.4 nozzle).json new file mode 100644 index 00000000000..dbb4414dbaf --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.4 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "setting_id": "1629237686", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_qs_bk", + "printer_model": "Snapmaker A250 QS+B Kit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.6 nozzle).json new file mode 100644 index 00000000000..75fb4331336 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.6 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "setting_id": "1340741936", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_qs_bk", + "printer_model": "Snapmaker A250 QS+B Kit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.8 nozzle).json new file mode 100644 index 00000000000..eec100468cc --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit (0.8 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "setting_id": "2267595426", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a250_qs_bk", + "printer_model": "Snapmaker A250 QS+B Kit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json new file mode 100644 index 00000000000..5385dfbb627 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QS+B Kit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A250 QS+B Kit", + "url": "https://github.com/macdylan", + "model_id": "3626883798", + "bed_model": "Snapmaker A250_bed.stl", + "bed_texture": "Snapmaker A250_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json index 26a51f641c5..06a06c068fa 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A250 QSKit.json @@ -6,6 +6,6 @@ "url": "https://github.com/macdylan", "model_id": "3817522582", "bed_model": "Snapmaker A250_bed.stl", - "bed_texture": "Snapmaker A250 QSKit_texture.svg", + "bed_texture": "Snapmaker A250_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.2 nozzle).json new file mode 100644 index 00000000000..c785a1315a9 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.2 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 BKit (0.2 nozzle)", + "setting_id": "3154404158", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_bk", + "printer_model": "Snapmaker A350 BKit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.4 nozzle).json new file mode 100644 index 00000000000..941bf35c7d3 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.4 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 BKit (0.4 nozzle)", + "setting_id": "3474856628", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_bk", + "printer_model": "Snapmaker A350 BKit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.6 nozzle).json new file mode 100644 index 00000000000..59809d5f8e5 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.6 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 BKit (0.6 nozzle)", + "setting_id": "3790090802", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_bk", + "printer_model": "Snapmaker A350 BKit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.8 nozzle).json new file mode 100644 index 00000000000..f23011008ca --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit (0.8 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 BKit (0.8 nozzle)", + "setting_id": "690678176", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_bk", + "printer_model": "Snapmaker A350 BKit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json new file mode 100644 index 00000000000..55d9b2301b5 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 BKit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A350 BKit", + "url": "https://github.com/macdylan", + "model_id": "3190019076", + "bed_model": "Snapmaker A350_bed.stl", + "bed_texture": "Snapmaker A350_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.2 nozzle).json new file mode 100644 index 00000000000..eb0dccbbc2b --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.2 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual BKit (0.2 nozzle)", + "setting_id": "2156589631", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_bk", + "printer_model": "Snapmaker A350 Dual BKit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2", + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.4 nozzle).json new file mode 100644 index 00000000000..8148ed097b5 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.4 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual BKit (0.4 nozzle)", + "setting_id": "4086336437", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_bk", + "printer_model": "Snapmaker A350 Dual BKit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4", + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.6 nozzle).json new file mode 100644 index 00000000000..e589dcc894a --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.6 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual BKit (0.6 nozzle)", + "setting_id": "3714491187", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_bk", + "printer_model": "Snapmaker A350 Dual BKit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6", + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.8 nozzle).json new file mode 100644 index 00000000000..2b5f34c71f3 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit (0.8 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual BKit (0.8 nozzle)", + "setting_id": "363100321", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_bk", + "printer_model": "Snapmaker A350 Dual BKit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8", + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json new file mode 100644 index 00000000000..0ba9b50af74 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual BKit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A350 Dual BKit", + "url": "https://github.com/macdylan", + "model_id": "2326416016", + "bed_model": "Snapmaker A350_bed.stl", + "bed_texture": "Snapmaker A350 Dual_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.2 nozzle).json new file mode 100644 index 00000000000..1edb00c17af --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.2 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "setting_id": "2039456978", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_qs_bk", + "printer_model": "Snapmaker A350 Dual QS+B Kit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2", + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.4 nozzle).json new file mode 100644 index 00000000000..cf5552f9238 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.4 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "setting_id": "177593688", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_qs_bk", + "printer_model": "Snapmaker A350 Dual QS+B Kit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4", + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.6 nozzle).json new file mode 100644 index 00000000000..165ba09dea0 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.6 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "setting_id": "610530782", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_qs_bk", + "printer_model": "Snapmaker A350 Dual QS+B Kit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6", + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.8 nozzle).json new file mode 100644 index 00000000000..ba996f2e3b3 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit (0.8 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "setting_id": "3969986124", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_dual_qs_bk", + "printer_model": "Snapmaker A350 Dual QS+B Kit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8", + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json new file mode 100644 index 00000000000..5bee6ae40d0 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QS+B Kit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A350 Dual QS+B Kit", + "url": "https://github.com/macdylan", + "model_id": "1305649671", + "bed_model": "Snapmaker A350_bed.stl", + "bed_texture": "Snapmaker A350 Dual_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json index 4d3cb2f15ca..a8e08120cff 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual QSKit.json @@ -6,6 +6,6 @@ "url": "https://github.com/macdylan", "model_id": "61280022", "bed_model": "Snapmaker A350_bed.stl", - "bed_texture": "Snapmaker A350 QSKit_texture.svg", + "bed_texture": "Snapmaker A350 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json index c44d84e8e3b..a7c93c1eae3 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 Dual.json @@ -6,6 +6,6 @@ "url": "https://github.com/macdylan", "model_id": "1846038812", "bed_model": "Snapmaker A350_bed.stl", - "bed_texture": "Snapmaker A350_texture.svg", + "bed_texture": "Snapmaker A350 Dual_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.2 nozzle).json new file mode 100644 index 00000000000..7e774a0cdcf --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.2 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 QS+B Kit (0.2 nozzle)", + "setting_id": "3079526450", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_qs_bk", + "printer_model": "Snapmaker A350 QS+B Kit", + "default_print_profile": "0.14 Standard @Snapmaker (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.4 nozzle).json new file mode 100644 index 00000000000..dae4dce720b --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.4 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "setting_id": "3298271672", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_qs_bk", + "printer_model": "Snapmaker A350 QS+B Kit", + "default_print_profile": "0.16 Optimal @Snapmaker (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.6 nozzle).json new file mode 100644 index 00000000000..9b99e5d97fc --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.6 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "setting_id": "3932260670", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_qs_bk", + "printer_model": "Snapmaker A350 QS+B Kit", + "default_print_profile": "0.18 Standard @Snapmaker (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.8 nozzle).json new file mode 100644 index 00000000000..356a03b517a --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit (0.8 nozzle).json @@ -0,0 +1,20 @@ +{ + "name": "Snapmaker A350 QS+B Kit (0.8 nozzle)", + "setting_id": "581128876", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a350_qs_bk", + "printer_model": "Snapmaker A350 QS+B Kit", + "default_print_profile": "0.24 Standard @Snapmaker (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json new file mode 100644 index 00000000000..19f60cfa36a --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QS+B Kit.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker A350 QS+B Kit", + "url": "https://github.com/macdylan", + "model_id": "1133024953", + "bed_model": "Snapmaker A350_bed.stl", + "bed_texture": "Snapmaker A350_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json b/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json index d9444234876..fb85033aa3d 100644 --- a/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json +++ b/resources/profiles/Snapmaker/machine/Snapmaker A350 QSKit.json @@ -6,6 +6,6 @@ "url": "https://github.com/macdylan", "model_id": "4109488597", "bed_model": "Snapmaker A350_bed.stl", - "bed_texture": "Snapmaker A350 QSKit_texture.svg", + "bed_texture": "Snapmaker A350_texture.svg", "nozzle_diameter": "0.2;0.4;0.6;0.8" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.2 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.2 nozzle).json new file mode 100644 index 00000000000..0f42b93bbb3 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.2 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker Artisan (0.2 nozzle)", + "setting_id": "767951383", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a400", + "printer_model": "Snapmaker Artisan", + "default_print_profile": "0.14 Standard @Snapmaker Artisan (0.2 nozzle)", + "printer_variant": "0.2", + "max_layer_height": [ + "0.14" + ], + "min_layer_height": [ + "0.06" + ], + "nozzle_diameter": [ + "0.2", + "0.2" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..c5c4a6aaca3 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker Artisan (0.4 nozzle)", + "setting_id": "1591507869", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a400", + "printer_model": "Snapmaker Artisan", + "default_print_profile": "0.16 Optimal @Snapmaker Artisan (0.4 nozzle)", + "printer_variant": "0.4", + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "nozzle_diameter": [ + "0.4", + "0.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..892223ec790 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker Artisan (0.6 nozzle)", + "setting_id": "1881821979", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a400", + "printer_model": "Snapmaker Artisan", + "default_print_profile": "0.18 Standard @Snapmaker Artisan (0.6 nozzle)", + "printer_variant": "0.6", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.18" + ], + "nozzle_diameter": [ + "0.6", + "0.6" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.8 nozzle).json b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.8 nozzle).json new file mode 100644 index 00000000000..0277708e846 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker Artisan (0.8 nozzle).json @@ -0,0 +1,21 @@ +{ + "name": "Snapmaker Artisan (0.8 nozzle)", + "setting_id": "3102247049", + "type": "machine", + "from": "system", + "instantiation": "true", + "inherits": "fdm_a400", + "printer_model": "Snapmaker Artisan", + "default_print_profile": "0.24 Standard @Snapmaker Artisan (0.8 nozzle)", + "printer_variant": "0.8", + "max_layer_height": [ + "0.48" + ], + "min_layer_height": [ + "0.24" + ], + "nozzle_diameter": [ + "0.8", + "0.8" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json b/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json new file mode 100644 index 00000000000..84d08a9e573 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/Snapmaker Artisan.json @@ -0,0 +1,11 @@ +{ + "type": "machine_model", + "machine_tech": "FFF", + "family": "Snapmaker", + "name": "Snapmaker Artisan", + "url": "https://github.com/macdylan", + "model_id": "797581801", + "bed_model": "Snapmaker Artisan_bed.stl", + "bed_texture": "Snapmaker Artisan_texture.svg", + "nozzle_diameter": "0.2;0.4;0.6;0.8" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250.json b/resources/profiles/Snapmaker/machine/fdm_a250.json index e95e8193d4b..7b3915a8801 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250.json @@ -6,7 +6,7 @@ "inherits": "fdm_linear2", "bed_model": "Snapmaker A250_bed.stl", "bed_texture": "Snapmaker A250_texture.svg", - "printable_height": "235", + "printable_height": "230", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250\n", "printable_area": [ "0x0", @@ -14,7 +14,7 @@ "230x250", "0x250" ], - "machine_start_gcode": "; Model: Snapmaker A250\n; Update: 20231019\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z156 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\nG0 X0\nG0 Z0.2 F960.0\nG0 Y0 F3420.0\nG0 X230\nG0 Y250\nG0 X0\nG0 Y0\n\nM83\n\nT[initial_extruder]\nG0 Z20 F960.0\nG0 X{if initial_extruder == 0}-10{else}240{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[initial_extruder] + 15))} C2 W1; common flush temp\nG0 E35 F80.0\n\nM106 S{min(255, (fan_max_speed[initial_extruder] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[initial_extruder] + 5}\n\nG0 E35 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if initial_extruder == 0}10{else}220{endif} F3420.0\nG0 X{if initial_extruder == 0}-10{else}240{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[initial_extruder]} C3 W1\nG1 X{if initial_extruder == 0}105.0{else}125.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if initial_extruder == 0}0{else}230{endif} E6.54809 F3420.0\nG1 Y11 E0.68599\nG1 X{if initial_extruder == 0}0.5{else}229.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if initial_extruder == 0}9.5{else}220.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n; ready [plate_name]", - "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 0.5} F600\n; retract the filament to make it easier to replace\nG0 E-25 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", + "machine_start_gcode": "; Model: Snapmaker A250\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z153 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-5 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_bk.json b/resources/profiles/Snapmaker/machine/fdm_a250_bk.json new file mode 100644 index 00000000000..9a03e3072a5 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a250_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a250_bk", + "inherits": "fdm_a250", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "224", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250\nPRINTER_MODEL_SNAPMAKER_A250_BRACINGKIT\n", + "bed_exclude_area": [ + "0x238", + "230x238", + "230x250", + "0x250" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_dual.json b/resources/profiles/Snapmaker/machine/fdm_a250_dual.json index aa1ba00f7af..7425a37bf18 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250_dual.json @@ -5,8 +5,8 @@ "name": "fdm_a250_dual", "inherits": "fdm_linear2_dual", "bed_model": "Snapmaker A250_bed.stl", - "bed_texture": "Snapmaker A250_texture.svg", - "printable_height": "205", + "bed_texture": "Snapmaker A250 Dual_texture.svg", + "printable_height": "190", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250_DUAL\n", "printable_area": [ "0x0", @@ -14,8 +14,14 @@ "230x250", "0x250" ], - "machine_start_gcode": "; Model: Snapmaker A250 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20231019\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[0]}\n; --- T1: {is_extruder_used[1]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[0]}M104 T0 S165{endif}\n{if is_extruder_used[1]}M104 T1 S165{endif}\nM204 S100\nG28\nG0 Z136 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\nG0 X0\nG0 Z0.2 F960.0\nG0 Y0 F3420.0\nG0 X230\nG0 Y250\nG0 X0\nG0 Y0\n\nM83\n\n{if is_extruder_used[0]}M104 T0 S{max(250, min(290, nozzle_temperature_initial_layer[0] + 15))}{endif}\n{if is_extruder_used[1]}M104 T1 S{max(250, min(290, nozzle_temperature_initial_layer[1] + 15))}{endif}\n\n{if is_extruder_used[0] and initial_extruder != 0}\n T0\nG0 Z20 F960.0\nG0 X{if 0 == 0}-10{else}240{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[0] + 15))} C2 W1; common flush temp\nG0 E45 F80.0\n\nM106 S{min(255, (fan_max_speed[0] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[0] + 5}\n\nG0 E45 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if 0 == 0}10{else}220{endif} F3420.0\nG0 X{if 0 == 0}-10{else}240{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[0]} C3 W1\nG1 X{if 0 == 0}105.0{else}125.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if 0 == 0}0{else}230{endif} E6.54809 F3420.0\nG1 Y11 E0.68599\nG1 X{if 0 == 0}0.5{else}229.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if 0 == 0}9.5{else}220.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n M104 S{temperature_vitrification[0]}\n{endif}\n{if is_extruder_used[1] and initial_extruder != 1}\n T1\nG0 Z20 F960.0\nG0 X{if 1 == 0}-10{else}240{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[1] + 15))} C2 W1; common flush temp\nG0 E45 F80.0\n\nM106 S{min(255, (fan_max_speed[1] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[1] + 5}\n\nG0 E45 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if 1 == 0}10{else}220{endif} F3420.0\nG0 X{if 1 == 0}-10{else}240{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[1]} C3 W1\nG1 X{if 1 == 0}105.0{else}125.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if 1 == 0}0{else}230{endif} E6.54809 F3420.0\nG1 Y11 E0.68599\nG1 X{if 1 == 0}0.5{else}229.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if 1 == 0}9.5{else}220.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n M104 S{temperature_vitrification[1]}\n{endif}\n\nT[initial_extruder]\nG0 Z20 F960.0\nG0 X{if initial_extruder == 0}-10{else}240{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[initial_extruder] + 15))} C2 W1; common flush temp\nG0 E45 F80.0\n\nM106 S{min(255, (fan_max_speed[initial_extruder] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[initial_extruder] + 5}\n\nG0 E45 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if initial_extruder == 0}10{else}220{endif} F3420.0\nG0 X{if initial_extruder == 0}-10{else}240{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[initial_extruder]} C3 W1\nG1 X{if initial_extruder == 0}105.0{else}125.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if initial_extruder == 0}0{else}230{endif} E6.54809 F3420.0\nG1 Y11 E0.68599\nG1 X{if initial_extruder == 0}0.5{else}229.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if initial_extruder == 0}9.5{else}220.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n; ready [plate_name]", - "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 0.5} F600\n; retract the filament to make it easier to replace\nG0 E-35 F200\nG28\n\n {if is_extruder_used[0]}M104 T0 S0{endif}\n {if is_extruder_used[1]}M104 T1 S0{endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F2000;deretract\n{endif}\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", + "bed_exclude_area": [ + "0x240", + "230x240", + "230x250", + "0x250" + ], + "machine_start_gcode": "; Model: Snapmaker A250 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z126 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", + "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_dual_bk.json b/resources/profiles/Snapmaker/machine/fdm_a250_dual_bk.json new file mode 100644 index 00000000000..5d084ebfaf4 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a250_dual_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a250_dual_bk", + "inherits": "fdm_a250_dual", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "184", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250_DUAL\nPRINTER_MODEL_SNAPMAKER_A250_DUAL_BRACINGKIT\n", + "bed_exclude_area": [ + "0x228", + "230x228", + "230x250", + "0x250" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs.json b/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs.json index 2180b332c9f..59d55fc579a 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs.json @@ -4,11 +4,11 @@ "instantiation": "false", "name": "fdm_a250_dual_qs", "inherits": "fdm_a250_dual", - "bed_texture": "Snapmaker A250 QSKit_texture.svg", + "printable_height": "175", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250_DUAL\nPRINTER_MODEL_SNAPMAKER_A250_DUAL_QUICKSWAPKIT\n", "bed_exclude_area": [ - "0x235", - "230x235", + "0x225", + "230x225", "230x250", "0x250" ] diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs_bk.json b/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs_bk.json new file mode 100644 index 00000000000..a270c15dbc5 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a250_dual_qs_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a250_dual_qs_bk", + "inherits": "fdm_a250_dual", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "169", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250_DUAL\nPRINTER_MODEL_SNAPMAKER_A250_DUAL_QUICKSWAPKIT\nPRINTER_MODEL_SNAPMAKER_A250_DUAL_BRACINGKIT\n", + "bed_exclude_area": [ + "0x213", + "230x213", + "230x250", + "0x250" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_qs.json b/resources/profiles/Snapmaker/machine/fdm_a250_qs.json index d814aba7adc..dc606b984c0 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250_qs.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250_qs.json @@ -4,8 +4,7 @@ "instantiation": "false", "name": "fdm_a250_qs", "inherits": "fdm_a250", - "bed_texture": "Snapmaker A250 QSKit_texture.svg", - "printable_height": "220", + "printable_height": "215", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250\nPRINTER_MODEL_SNAPMAKER_A250_QUICKSWAPKIT\n", "bed_exclude_area": [ "0x235", diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_qs_bk.json b/resources/profiles/Snapmaker/machine/fdm_a250_qs_bk.json new file mode 100644 index 00000000000..f450b7a38d1 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a250_qs_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a250_qs_bk", + "inherits": "fdm_a250", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "209", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A250\nPRINTER_MODEL_SNAPMAKER_A250_QUICKSWAPKIT\nPRINTER_MODEL_SNAPMAKER_A250_BRACINGKIT\n", + "bed_exclude_area": [ + "0x223", + "230x223", + "230x250", + "0x250" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350.json b/resources/profiles/Snapmaker/machine/fdm_a350.json index 4398c811241..1ae94e4af74 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350.json @@ -6,7 +6,7 @@ "inherits": "fdm_linear2", "bed_model": "Snapmaker A350_bed.stl", "bed_texture": "Snapmaker A350_texture.svg", - "printable_height": "330", + "printable_height": "325", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350\n", "printable_area": [ "0x0", @@ -14,7 +14,7 @@ "320x350", "0x350" ], - "machine_start_gcode": "; Model: Snapmaker A350\n; Update: 20231019\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z220 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\nG0 X0\nG0 Z0.2 F960.0\nG0 Y0 F3420.0\nG0 X320\nG0 Y350\nG0 X0\nG0 Y0\n\nM83\n\nT[initial_extruder]\nG0 Z20 F960.0\nG0 X{if initial_extruder == 0}-10{else}330{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[initial_extruder] + 15))} C2 W1; common flush temp\nG0 E35 F80.0\n\nM106 S{min(255, (fan_max_speed[initial_extruder] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[initial_extruder] + 5}\n\nG0 E35 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if initial_extruder == 0}10{else}310{endif} F3420.0\nG0 X{if initial_extruder == 0}-10{else}330{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[initial_extruder]} C3 W1\nG1 X{if initial_extruder == 0}150.0{else}170.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if initial_extruder == 0}0{else}320{endif} E9.35442 F3420.0\nG1 Y11 E0.68599\nG1 X{if initial_extruder == 0}0.5{else}319.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if initial_extruder == 0}9.5{else}310.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n; ready [plate_name]", - "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 0.5} F600\n; retract the filament to make it easier to replace\nG0 E-25 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", + "machine_start_gcode": "; Model: Snapmaker A350\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z216 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-5 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_bk.json b/resources/profiles/Snapmaker/machine/fdm_a350_bk.json new file mode 100644 index 00000000000..3a1f9655dbc --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a350_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a350_bk", + "inherits": "fdm_a350", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "319", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350\nPRINTER_MODEL_SNAPMAKER_A350_BRACINGKIT\n", + "bed_exclude_area": [ + "0x338", + "320x338", + "320x350", + "0x350" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_dual.json b/resources/profiles/Snapmaker/machine/fdm_a350_dual.json index 3ffbd990cda..a2e3a405890 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350_dual.json @@ -5,8 +5,8 @@ "name": "fdm_a350_dual", "inherits": "fdm_linear2_dual", "bed_model": "Snapmaker A350_bed.stl", - "bed_texture": "Snapmaker A350_texture.svg", - "printable_height": "290", + "bed_texture": "Snapmaker A350 Dual_texture.svg", + "printable_height": "285", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350_DUAL\n", "printable_area": [ "0x0", @@ -14,8 +14,14 @@ "320x350", "0x350" ], - "machine_start_gcode": "; Model: Snapmaker A350 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20231019\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[0]}\n; --- T1: {is_extruder_used[1]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[0]}M104 T0 S165{endif}\n{if is_extruder_used[1]}M104 T1 S165{endif}\nM204 S100\nG28\nG0 Z193 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\nG0 X0\nG0 Z0.2 F960.0\nG0 Y0 F3420.0\nG0 X320\nG0 Y350\nG0 X0\nG0 Y0\n\nM83\n\n{if is_extruder_used[0]}M104 T0 S{max(250, min(290, nozzle_temperature_initial_layer[0] + 15))}{endif}\n{if is_extruder_used[1]}M104 T1 S{max(250, min(290, nozzle_temperature_initial_layer[1] + 15))}{endif}\n\n{if is_extruder_used[0] and initial_extruder != 0}\n T0\nG0 Z20 F960.0\nG0 X{if 0 == 0}-10{else}330{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[0] + 15))} C2 W1; common flush temp\nG0 E45 F80.0\n\nM106 S{min(255, (fan_max_speed[0] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[0] + 5}\n\nG0 E45 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if 0 == 0}10{else}310{endif} F3420.0\nG0 X{if 0 == 0}-10{else}330{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[0]} C3 W1\nG1 X{if 0 == 0}150.0{else}170.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if 0 == 0}0{else}320{endif} E9.35442 F3420.0\nG1 Y11 E0.68599\nG1 X{if 0 == 0}0.5{else}319.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if 0 == 0}9.5{else}310.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n M104 S{temperature_vitrification[0]}\n{endif}\n{if is_extruder_used[1] and initial_extruder != 1}\n T1\nG0 Z20 F960.0\nG0 X{if 1 == 0}-10{else}330{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[1] + 15))} C2 W1; common flush temp\nG0 E45 F80.0\n\nM106 S{min(255, (fan_max_speed[1] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[1] + 5}\n\nG0 E45 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if 1 == 0}10{else}310{endif} F3420.0\nG0 X{if 1 == 0}-10{else}330{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[1]} C3 W1\nG1 X{if 1 == 0}150.0{else}170.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if 1 == 0}0{else}320{endif} E9.35442 F3420.0\nG1 Y11 E0.68599\nG1 X{if 1 == 0}0.5{else}319.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if 1 == 0}9.5{else}310.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n M104 S{temperature_vitrification[1]}\n{endif}\n\nT[initial_extruder]\nG0 Z20 F960.0\nG0 X{if initial_extruder == 0}-10{else}330{endif} F3420.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[initial_extruder] + 15))} C2 W1; common flush temp\nG0 E45 F80.0\n\nM106 S{min(255, (fan_max_speed[initial_extruder] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[initial_extruder] + 5}\n\nG0 E45 F200\n\nG0 E-0.5 F200\nM107\n\nG0 Z0.1 F960.0\nG0 X{if initial_extruder == 0}10{else}310{endif} F3420.0\nG0 X{if initial_extruder == 0}-10{else}330{endif}\n\nG0 Z1.0 F960.0\n\nM109 S{nozzle_temperature_initial_layer[initial_extruder]} C3 W1\nG1 X{if initial_extruder == 0}150.0{else}170.0{endif} F3420.0\nG1 Z0.3 F960.0\nG1 E4 F200\nG1 X{if initial_extruder == 0}0{else}320{endif} E9.35442 F3420.0\nG1 Y11 E0.68599\nG1 X{if initial_extruder == 0}0.5{else}319.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if initial_extruder == 0}9.5{else}310.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n; ready [plate_name]", - "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 0.5} F600\n; retract the filament to make it easier to replace\nG0 E-35 F200\nG28\n\n {if is_extruder_used[0]}M104 T0 S0{endif}\n {if is_extruder_used[1]}M104 T1 S0{endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F2000;deretract\n{endif}\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", + "bed_exclude_area": [ + "0x330", + "320x330", + "320x350", + "0x350" + ], + "machine_start_gcode": "; Model: Snapmaker A350 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z190 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", + "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_dual_bk.json b/resources/profiles/Snapmaker/machine/fdm_a350_dual_bk.json new file mode 100644 index 00000000000..5b16424711e --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a350_dual_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a350_dual_bk", + "inherits": "fdm_a350_dual", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "279", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350_DUAL\nPRINTER_MODEL_SNAPMAKER_A350_DUAL_BRACINGKIT\n", + "bed_exclude_area": [ + "0x318", + "320x318", + "320x350", + "0x350" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs.json b/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs.json index b2505329ffb..0e4823e2be5 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs.json @@ -4,12 +4,11 @@ "instantiation": "false", "name": "fdm_a350_dual_qs", "inherits": "fdm_a350_dual", - "bed_texture": "Snapmaker A350 QSKit_texture.svg", - "printable_height": "300", + "printable_height": "270", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350_DUAL\nPRINTER_MODEL_SNAPMAKER_A350_DUAL_QUICKSWAPKIT\n", "bed_exclude_area": [ - "0x335", - "320x335", + "0x315", + "320x315", "320x350", "0x350" ] diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs_bk.json b/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs_bk.json new file mode 100644 index 00000000000..0494b8e7eaa --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a350_dual_qs_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a350_dual_qs_bk", + "inherits": "fdm_a350_dual", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "264", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350_DUAL\nPRINTER_MODEL_SNAPMAKER_A350_DUAL_BRACINGKIT\nPRINTER_MODEL_SNAPMAKER_A350_DUAL_QUICKSWAPKIT\n", + "bed_exclude_area": [ + "0x303", + "320x303", + "320x350", + "0x350" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_qs.json b/resources/profiles/Snapmaker/machine/fdm_a350_qs.json index 590161e292b..2b5eb369fcd 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350_qs.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350_qs.json @@ -4,8 +4,7 @@ "instantiation": "false", "name": "fdm_a350_qs", "inherits": "fdm_a350", - "bed_texture": "Snapmaker A350 QSKit_texture.svg", - "printable_height": "315", + "printable_height": "310", "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350\nPRINTER_MODEL_SNAPMAKER_A350_QUICKSWAPKIT\n", "bed_exclude_area": [ "0x335", diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_qs_bk.json b/resources/profiles/Snapmaker/machine/fdm_a350_qs_bk.json new file mode 100644 index 00000000000..e3ede6d2a5a --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a350_qs_bk.json @@ -0,0 +1,39 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a350_qs_bk", + "inherits": "fdm_a350", + "machine_max_acceleration_x": [ + "3500" + ], + "machine_max_acceleration_y": [ + "3500" + ], + "machine_max_acceleration_z": [ + "3000" + ], + "machine_max_acceleration_travel": [ + "3500" + ], + "machine_max_acceleration_extruding": [ + "3500" + ], + "machine_max_acceleration_retracting": [ + "3500" + ], + "machine_max_jerk_y": [ + "5" + ], + "machine_max_jerk_z": [ + "3" + ], + "printable_height": "304", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_A350\nPRINTER_MODEL_SNAPMAKER_A350_BRACINGKIT\nPRINTER_MODEL_SNAPMAKER_A350_QUICKSWAPKIT\n", + "bed_exclude_area": [ + "0x323", + "320x323", + "320x350", + "0x350" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a400.json b/resources/profiles/Snapmaker/machine/fdm_a400.json new file mode 100644 index 00000000000..4bfd754b692 --- /dev/null +++ b/resources/profiles/Snapmaker/machine/fdm_a400.json @@ -0,0 +1,59 @@ +{ + "type": "machine", + "from": "system", + "instantiation": "false", + "name": "fdm_a400", + "inherits": "fdm_linear2_dual", + "extruder_clearance_height_to_rod": "32", + "extruder_clearance_height_to_lid": "400", + "machine_max_acceleration_x": [ + "5000" + ], + "machine_max_acceleration_y": [ + "5000" + ], + "machine_max_acceleration_z": [ + "200" + ], + "machine_max_acceleration_travel": [ + "5000" + ], + "machine_max_acceleration_extruding": [ + "5000" + ], + "machine_max_acceleration_retracting": [ + "2000" + ], + "machine_max_speed_x": [ + "300" + ], + "machine_max_speed_y": [ + "300" + ], + "machine_max_jerk_x": [ + "10" + ], + "machine_max_jerk_y": [ + "10" + ], + "machine_max_jerk_z": [ + "3" + ], + "thumbnails": [ + "600x600" + ], + "bed_model": "Snapmaker Artisan_bed.stl", + "bed_texture": "Snapmaker Artisan_texture.svg", + "printable_height": "400", + "printer_notes": "PRINTER_MODEL_SNAPMAKER_ARTISAN\nPRINTER_MODEL_SNAPMAKER_A400_DUAL\n", + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_start_gcode": "; Model: Snapmaker Artisan ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z266 F960.0\nG0 Y200.0 F6840.0\nG0 X200.0\n\n{if first_layer_print_min[0] >= 70 && first_layer_print_max[0] <= 330 && first_layer_print_min[1] >= 70 && first_layer_print_max[1] <= 330}\nM190 P0 R{first_layer_bed_temperature[initial_extruder]} ;only inner part of the bed\n{else}\nM190 R{first_layer_bed_temperature[initial_extruder]}\n{endif}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F6840.0\n G0 X400\n G0 Y400\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", + "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", + "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", + "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_common.json b/resources/profiles/Snapmaker/machine/fdm_common.json index 6066188b5c1..9dde4953b3e 100644 --- a/resources/profiles/Snapmaker/machine/fdm_common.json +++ b/resources/profiles/Snapmaker/machine/fdm_common.json @@ -11,7 +11,7 @@ "auxiliary_fan": "0", "remaining_times": "1", "single_extruder_multi_material": "0", - "purge_in_prime_tower": "0", + "purge_in_prime_tower": "1", "enable_filament_ramming": "0", "nozzle_volume": "0", "cooling_tube_retraction": "0", diff --git a/resources/profiles/Snapmaker/machine/fdm_idex.json b/resources/profiles/Snapmaker/machine/fdm_idex.json index 867e6b31a57..28176df2d5d 100644 --- a/resources/profiles/Snapmaker/machine/fdm_idex.json +++ b/resources/profiles/Snapmaker/machine/fdm_idex.json @@ -11,28 +11,28 @@ "2" ], "retraction_speed": [ - "30", - "30" + "25", + "25" ], "deretraction_speed": [ - "30", - "30" + "25", + "25" ], "bed_model": "Snapmaker J1_bed.stl", "bed_texture": "Snapmaker J1_texture.svg", "printable_height": "200", - "extruder_clearance_radius": "68", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_height_to_lid": "90", + "extruder_clearance_radius": "35", + "extruder_clearance_height_to_rod": "35", + "extruder_clearance_height_to_lid": "150", "printer_notes": "PRINTER_MODEL_SNAPMAKER_J1\n", "fan_speedup_time": [ - "0.2" + "0.3" ], "machine_max_acceleration_x": [ - "11000" + "10000" ], "machine_max_acceleration_y": [ - "11000" + "8000" ], "machine_max_acceleration_z": [ "100" @@ -41,19 +41,19 @@ "6000" ], "machine_max_acceleration_travel": [ - "11000" + "10000" ], "machine_max_acceleration_extruding": [ - "11000" + "10000" ], "machine_max_acceleration_retracting": [ - "5000" + "6000" ], "machine_max_speed_x": [ "350" ], "machine_max_speed_y": [ - "350" + "300" ], "machine_max_speed_z": [ "10" @@ -62,10 +62,10 @@ "40" ], "machine_max_jerk_x": [ - "8" + "10" ], "machine_max_jerk_y": [ - "8" + "10" ], "machine_max_jerk_z": [ "3" @@ -100,8 +100,8 @@ "Snapmaker J1 PLA", "Snapmaker J1 PETG" ], - "machine_start_gcode": "; Model: Snapmaker J1 ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20231019\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[0]}\n; --- T1: {is_extruder_used[1]}\n\nT[initial_extruder]\n\nM205 V20 ;Junction Deviation (mm)\n\n{if plate_name =~/.*IDEXDupl.*/ || plate_name =~/.*IDEXCopy.*/ }\n M605 S2 X162 R0 ;IDEX Duplication\n{elsif plate_name =~/.*IDEXMirr.*/}\n M605 S3 ;IDEX Mirror\n{elsif plate_name =~/.*IDEXBack.*/}\n M605 S4 ;IDEX Backup\n{endif}\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[0]}M104 T0 S165{endif}\n{if is_extruder_used[1]}M104 T1 S165{endif}\nM204 S100\nG28\n\nG0 Z100.0\n{if is_extruder_used[0]}\n T0\n G0 X{if 0 == 0}80{else}240{endif} Y0 F7980.0\n {endif}\n{if is_extruder_used[1]}\n T1\n G0 X{if 1 == 0}80{else}240{endif} Y0 F7980.0\n {endif}\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n{if 1==1}; LED\n M355 S1 P64\n G4 P100\n M355 S1 P128\n G4 P100\n M355 S1 P64\n G4 P200\n M355 S1 P255\n G4 P100\n{endif}\nG28 X Y\n\nM83\n\n{if is_extruder_used[0]}M104 T0 S{max(250, min(290, nozzle_temperature_initial_layer[0] + 15))}{endif}\n{if is_extruder_used[1]}M104 T1 S{max(250, min(290, nozzle_temperature_initial_layer[1] + 15))}{endif}\n\n{if is_extruder_used[0] and initial_extruder != 0}\n T0\nG0 Z20 F240.0\nG0 X{if 0 == 0}-7{else}331{endif} F7980.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[0] + 15))} C2 W1; common flush temp\nG0 E50 F80.0\n\nM106 S{min(255, (fan_max_speed[0] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[0] + 5}\n\nG0 E50 F200\n\nG0 E-0.5 F200\nM107\n\nG28 X\n\nG0 Z1.0 F240.0\n\nM109 S{nozzle_temperature_initial_layer[0]} C3 W1\nG1 X{if 0 == 0}142.0{else}182.0{endif} F7980.0\nG1 Z0.3 F240.0\nG1 E4 F200\nG1 X{if 0 == 0}10{else}314{endif} E9.47915 F7980.0\nG1 Y11 E0.68599\nG1 X{if 0 == 0}10.5{else}313.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if 0 == 0}19.5{else}304.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n M104 S{temperature_vitrification[0]}\n{endif}\n{if is_extruder_used[1] and initial_extruder != 1}\n T1\nG0 Z20 F240.0\nG0 X{if 1 == 0}-7{else}331{endif} F7980.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[1] + 15))} C2 W1; common flush temp\nG0 E50 F80.0\n\nM106 S{min(255, (fan_max_speed[1] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[1] + 5}\n\nG0 E50 F200\n\nG0 E-0.5 F200\nM107\n\nG28 X\n\nG0 Z1.0 F240.0\n\nM109 S{nozzle_temperature_initial_layer[1]} C3 W1\nG1 X{if 1 == 0}142.0{else}182.0{endif} F7980.0\nG1 Z0.3 F240.0\nG1 E4 F200\nG1 X{if 1 == 0}10{else}314{endif} E9.47915 F7980.0\nG1 Y11 E0.68599\nG1 X{if 1 == 0}10.5{else}313.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if 1 == 0}19.5{else}304.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n M104 S{temperature_vitrification[1]}\n{endif}\n\nT[initial_extruder]\nG0 Z20 F240.0\nG0 X{if initial_extruder == 0}-7{else}331{endif} F7980.0\nG0 Y0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[initial_extruder] + 15))} C2 W1; common flush temp\nG0 E50 F80.0\n\nM106 S{min(255, (fan_max_speed[initial_extruder] + 10) * 2.55)}\nM104 S{nozzle_temperature_initial_layer[initial_extruder] + 5}\n\nG0 E50 F200\n\nG0 E-0.5 F200\nM107\n\nG28 X\n\nG0 Z1.0 F240.0\n\nM109 S{nozzle_temperature_initial_layer[initial_extruder]} C3 W1\nG1 X{if initial_extruder == 0}142.0{else}182.0{endif} F7980.0\nG1 Z0.3 F240.0\nG1 E4 F200\nG1 X{if initial_extruder == 0}10{else}314{endif} E9.47915 F7980.0\nG1 Y11 E0.68599\nG1 X{if initial_extruder == 0}10.5{else}313.5{endif}\nG1 E0.4\nG1 Y0.8 E0.6361\nG1 X{if initial_extruder == 0}19.5{else}304.5{endif} E0.59245\nG1 E-0.5 F200\nG92 E0\n\n; ready [plate_name]", - "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 0.5} F600\n; retract the filament to make it easier to replace\nG0 E-40 F200\nG28\n\n {if is_extruder_used[0]}M104 T0 S0{endif}\n {if is_extruder_used[1]}M104 T1 S0{endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230730\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\nM140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM2000 S200 V[travel_speed] A[travel_acceleration] ;quick switch extruders, S:200 mode/V:speed/A:acceleration\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n\n{endif}", + "machine_start_gcode": "; Model: Snapmaker J1 ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\n{if plate_name =~/.*IDEXDupl.*/ || plate_name =~/.*IDEXCopy.*/ }\n M605 S2 X162 R0 ;IDEX Duplication\n{elsif plate_name =~/.*IDEXMirr.*/}\n M605 S3 ;IDEX Mirror\n{elsif plate_name =~/.*IDEXBack.*/}\n M605 S4 ;IDEX Backup\n{endif}\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\n\nG0 Z100.0\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\n G0 X{if 0 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\n G0 X{if 1 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\n{if 1==1}; LED\n M355 S1 P64\n G4 P100\n M355 S1 P128\n G4 P100\n M355 S1 P64\n G4 P200\n M355 S1 P255\n G4 P100\n{endif}\nG28 X Y\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 0 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 1 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( initial_extruder % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", + "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", + "change_filament_gcode": ";***** Update: 20230730\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num] [toolchange_count]/[total_toolchanges])\n; layer [layer_num] at [layer_z]mm\nT[next_extruder]\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\nM140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM2000 S200 V[travel_speed] A[travel_acceleration] ;quick switch extruders, S:200 mode/V:speed/A:acceleration\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_linear2.json b/resources/profiles/Snapmaker/machine/fdm_linear2.json index 3a37a7f8ece..ed91a1489df 100644 --- a/resources/profiles/Snapmaker/machine/fdm_linear2.json +++ b/resources/profiles/Snapmaker/machine/fdm_linear2.json @@ -14,10 +14,10 @@ "Normal Lift" ], "extruder_clearance_radius": "75", - "extruder_clearance_height_to_rod": "25", - "extruder_clearance_height_to_lid": "90", + "extruder_clearance_height_to_rod": "35", + "extruder_clearance_height_to_lid": "325", "machine_max_acceleration_x": [ - "1000" + "1100" ], "machine_max_acceleration_y": [ "1000" @@ -29,13 +29,13 @@ "3000" ], "machine_max_acceleration_travel": [ - "1000" + "1100" ], "machine_max_acceleration_extruding": [ - "1000" + "1100" ], "machine_max_acceleration_retracting": [ - "2000" + "1100" ], "machine_max_speed_x": [ "150" @@ -50,7 +50,7 @@ "45" ], "machine_max_jerk_x": [ - "1" + "5" ], "machine_max_jerk_y": [ "1" diff --git a/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json b/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json index e335bdc4a03..fcd3e851540 100644 --- a/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json @@ -12,18 +12,11 @@ "35", "35" ], - "extruder_clearance_radius": "110", - "extruder_clearance_height_to_rod": "45", - "extruder_clearance_height_to_lid": "133", - "machine_max_acceleration_retracting": [ - "1000" - ], - "machine_max_speed_e": [ - "35" - ], + "extruder_clearance_height_to_rod": "60", + "extruder_clearance_height_to_lid": "285", "retract_length_toolchange": [ - "8", - "8" + "18", + "18" ], "default_filament_profile": [ "Snapmaker PLA", diff --git a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker (0.2 nozzle).json index 93ce6eb0e1d..ffbaf1b6495 100644 --- a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker (0.2 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)" + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)" ], "bottom_shell_layers": "5", "bridge_flow": "1", diff --git a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker Artisan (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker Artisan (0.2 nozzle).json new file mode 100644 index 00000000000..e28c15c8f79 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker Artisan (0.2 nozzle).json @@ -0,0 +1,27 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.06 Standard @Snapmaker Artisan (0.2 nozzle)", + "setting_id": "3200425436", + "compatible_printers": [ + "Snapmaker Artisan (0.2 nozzle)" + ], + "bottom_shell_layers": "4", + "bridge_flow": "1", + "initial_layer_line_width": "0.25", + "initial_layer_print_height": "0.1", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "layer_height": "0.06", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "sparse_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_shell_layers": "5", + "top_surface_line_width": "0.22", + "wall_loops": "4", + "initial_layer_infill_speed": "70", + "initial_layer_speed": "40", + "inner_wall_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker J1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker J1 (0.2 nozzle).json index a46f8f910eb..b6a267151df 100644 --- a/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker J1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.06 Standard @Snapmaker J1 (0.2 nozzle).json @@ -8,7 +8,7 @@ "compatible_printers": [ "Snapmaker J1 (0.2 nozzle)" ], - "bottom_shell_layers": "5", + "bottom_shell_layers": "4", "bridge_flow": "1", "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", @@ -19,18 +19,9 @@ "outer_wall_line_width": "0.22", "sparse_infill_line_width": "0.22", "support_line_width": "0.22", - "top_shell_layers": "7", + "top_shell_layers": "5", "top_surface_line_width": "0.22", "wall_loops": "4", - "gap_infill_speed": "120", - "initial_layer_infill_speed": "70", - "initial_layer_speed": "40", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "sparse_infill_speed": "100", - "support_interface_speed": "40", - "top_surface_speed": "150", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json index b53e32ce637..a081fe766e9 100644 --- a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "bottom_shell_layers": "7", "bridge_flow": "1", diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..22bdb6cb08b --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,22 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "723238605", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "bottom_shell_layers": "4", + "bridge_flow": "1", + "elefant_foot_compensation": "0.15", + "ironing_flow": "8%", + "layer_height": "0.08", + "initial_layer_print_height": "0.1", + "support_threshold_angle": "15", + "top_shell_layers": "5", + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145", + "internal_solid_infill_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json index d15aa3175e6..eaf51d4cd63 100644 --- a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json @@ -8,20 +8,15 @@ "compatible_printers": [ "Snapmaker J1 (0.4 nozzle)" ], - "bottom_shell_layers": "7", + "bottom_shell_layers": "4", "bridge_flow": "1", "elefant_foot_compensation": "0.15", "ironing_flow": "8%", "layer_height": "0.08", "initial_layer_print_height": "0.1", "support_threshold_angle": "15", - "top_shell_layers": "9", - "gap_infill_speed": "160", - "initial_layer_infill_speed": "65", - "inner_wall_speed": "230", - "internal_solid_infill_speed": "230", - "sparse_infill_speed": "120", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "top_shell_layers": "5", + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145", + "internal_solid_infill_speed": "150" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker (0.2 nozzle).json index c7e117ba78c..10f10cbe484 100644 --- a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker (0.2 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)" + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)" ], "layer_height": "0.1", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker Artisan (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker Artisan (0.2 nozzle).json new file mode 100644 index 00000000000..a1bc54d546c --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker Artisan (0.2 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.10 Standard @Snapmaker Artisan (0.2 nozzle)", + "setting_id": "2309389761", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.2 nozzle)" + ], + "layer_height": "0.1", + "initial_layer_print_height": "0.1", + "wall_loops": "4", + "bottom_shell_layers": "5", + "top_shell_layers": "7", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.25", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker J1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker J1 (0.2 nozzle).json index cc3a94a7bc6..f928d404ba5 100644 --- a/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker J1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.10 Standard @Snapmaker J1 (0.2 nozzle).json @@ -22,15 +22,6 @@ "internal_solid_infill_line_width": "0.22", "support_line_width": "0.22", "top_surface_line_width": "0.22", - "initial_layer_speed": "40", - "initial_layer_infill_speed": "70", - "sparse_infill_speed": "100", - "top_surface_speed": "150", - "gap_infill_speed": "120", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "support_interface_speed": "40", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json index 884381d1108..24216b3c5cb 100644 --- a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "layer_height": "0.12", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..41cfa41d212 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,21 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.12 Fine @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "3320746901", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "layer_height": "0.12", + "bottom_shell_layers": "5", + "elefant_foot_compensation": "0.15", + "top_shell_layers": "5", + "top_shell_thickness": "0.6", + "bridge_flow": "1", + "support_threshold_angle": "20", + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145", + "internal_solid_infill_speed": "150" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json index 5fce09ed241..1ff76293393 100644 --- a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json @@ -15,13 +15,7 @@ "top_shell_thickness": "0.6", "bridge_flow": "1", "support_threshold_angle": "20", - "initial_layer_infill_speed": "60", - "inner_wall_speed": "230", - "internal_solid_infill_speed": "230", - "sparse_infill_speed": "120", - "top_surface_speed": "120", - "gap_infill_speed": "160", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145", + "internal_solid_infill_speed": "150" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker (0.2 nozzle).json index 09d5e2d93f3..29567647aea 100644 --- a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker (0.2 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.2 nozzle)", "Snapmaker A250 QSKit (0.2 nozzle)", "Snapmaker A350 QSKit (0.2 nozzle)", + "Snapmaker A250 BKit (0.2 nozzle)", + "Snapmaker A350 BKit (0.2 nozzle)", + "Snapmaker A250 QS+B Kit (0.2 nozzle)", + "Snapmaker A350 QS+B Kit (0.2 nozzle)", "Snapmaker A250 Dual QSKit (0.2 nozzle)", - "Snapmaker A350 Dual QSKit (0.2 nozzle)" + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)" ], "layer_height": "0.14", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker Artisan (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker Artisan (0.2 nozzle).json new file mode 100644 index 00000000000..06f70315ba8 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker Artisan (0.2 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.14 Standard @Snapmaker Artisan (0.2 nozzle)", + "setting_id": "1624466618", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.2 nozzle)" + ], + "layer_height": "0.14", + "wall_loops": "4", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "bridge_flow": "1", + "line_width": "0.22", + "outer_wall_line_width": "0.22", + "initial_layer_line_width": "0.25", + "sparse_infill_line_width": "0.22", + "inner_wall_line_width": "0.22", + "internal_solid_infill_line_width": "0.22", + "support_line_width": "0.22", + "top_surface_line_width": "0.22", + "initial_layer_infill_speed": "80" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker J1 (0.2 nozzle).json b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker J1 (0.2 nozzle).json index 78827b21727..9370091a512 100644 --- a/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker J1 (0.2 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.14 Standard @Snapmaker J1 (0.2 nozzle).json @@ -10,8 +10,8 @@ ], "layer_height": "0.14", "wall_loops": "4", - "bottom_shell_layers": "5", - "top_shell_layers": "7", + "bottom_shell_layers": "4", + "top_shell_layers": "5", "bridge_flow": "1", "line_width": "0.22", "outer_wall_line_width": "0.22", @@ -21,15 +21,5 @@ "internal_solid_infill_line_width": "0.22", "support_line_width": "0.22", "top_surface_line_width": "0.22", - "initial_layer_speed": "40", - "initial_layer_infill_speed": "70", - "sparse_infill_speed": "100", - "top_surface_speed": "150", - "gap_infill_speed": "120", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "support_interface_speed": "40", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "initial_layer_infill_speed": "80" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json index 0e68e7b1b09..119ae1e3e5b 100644 --- a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "layer_height": "0.16", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..e2547e522bb --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,20 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.16 Optimal @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "2870109378", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "layer_height": "0.16", + "elefant_foot_compensation": "0.15", + "bottom_shell_layers": "4", + "top_shell_layers": "5", + "top_shell_thickness": "0.6", + "bridge_flow": "1", + "support_threshold_angle": "25", + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json index 3872ca6e362..77a170ef615 100644 --- a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json @@ -11,17 +11,10 @@ "layer_height": "0.16", "elefant_foot_compensation": "0.15", "bottom_shell_layers": "4", + "top_shell_layers": "5", "top_shell_thickness": "0.6", "bridge_flow": "1", "support_threshold_angle": "25", - "initial_layer_infill_speed": "60", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "outer_wall_speed": "80", - "sparse_infill_speed": "140", - "top_surface_speed": "80", - "gap_infill_speed": "160", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "initial_layer_infill_speed": "80", + "inner_wall_speed": "145" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker (0.6 nozzle).json index 064c5a4b249..fa83e160f89 100644 --- a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.18", "initial_layer_print_height": "0.2", diff --git a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..0993b706545 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,22 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.18 Standard @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "3721468026", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.18", + "wall_loops": "2", + "bridge_flow": "1", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker J1 (0.6 nozzle).json index 822b4189bed..a514ec68702 100644 --- a/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.18 Standard @Snapmaker J1 (0.6 nozzle).json @@ -19,15 +19,6 @@ "internal_solid_infill_line_width": "0.62", "support_line_width": "0.62", "top_surface_line_width": "0.62", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "support_interface_speed": "35" + "inner_wall_speed": "145", + "internal_solid_infill_speed": "150" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker (0.4 nozzle).json index 075efd986b0..6780e6f04e1 100644 --- a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "elefant_foot_compensation": "0.15", "initial_layer_infill_speed": "60", diff --git a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..107a05eccf6 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,12 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.20 Standard @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "864558918", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "elefant_foot_compensation": "0.15" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker J1 (0.4 nozzle).json index 2e8d4d0f18c..54bd710c1ee 100644 --- a/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Standard @Snapmaker J1 (0.4 nozzle).json @@ -8,14 +8,5 @@ "compatible_printers": [ "Snapmaker J1 (0.4 nozzle)" ], - "elefant_foot_compensation": "0.15", - "outer_wall_speed": "140", - "inner_wall_speed": "240", - "sparse_infill_speed": "300", - "internal_solid_infill_speed": "240", - "top_surface_speed": "140", - "gap_infill_speed": "240", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "elefant_foot_compensation": "0.15" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker (0.4 nozzle).json index 832d265b248..1d57dc14274 100644 --- a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "elefant_foot_compensation": "0.15", "wall_loops": "6", diff --git a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..de5b6b2cadd --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,15 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.20 Strength @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "1825586885", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "elefant_foot_compensation": "0.15", + "wall_loops": "6", + "bottom_shell_layers": "4", + "sparse_infill_density": "25%" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker J1 (0.4 nozzle).json index 4b03f36e16b..3bf46734bd4 100644 --- a/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.20 Strength @Snapmaker J1 (0.4 nozzle).json @@ -10,15 +10,6 @@ ], "elefant_foot_compensation": "0.15", "wall_loops": "6", - "outer_wall_speed": "120", - "top_surface_speed": "120", - "sparse_infill_density": "25%", - "gap_infill_speed": "160", - "initial_layer_infill_speed": "65", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "sparse_infill_speed": "160", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "bottom_shell_layers": "4", + "sparse_infill_density": "25%" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json index 52f1e240657..17089131eb0 100644 --- a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "layer_height": "0.24", "elefant_foot_compensation": "0.15", diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..43947ed4273 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,18 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.24 Draft @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "2003861482", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "layer_height": "0.24", + "elefant_foot_compensation": "0.15", + "top_surface_line_width": "0.45", + "top_shell_layers": "3", + "top_shell_thickness": "0.6", + "support_threshold_angle": "35", + "initial_layer_infill_speed": "65" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json index a7609b7a3be..23877e116c1 100644 --- a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json @@ -14,13 +14,5 @@ "top_shell_layers": "3", "top_shell_thickness": "0.6", "support_threshold_angle": "35", - "initial_layer_infill_speed": "65", - "inner_wall_speed": "190", - "internal_solid_infill_speed": "190", - "sparse_infill_speed": "160", - "top_surface_speed": "160", - "gap_infill_speed": "160", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "initial_layer_infill_speed": "65" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.6 nozzle).json index 75d8c107bad..4c1635b046c 100644 --- a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.24", "wall_loops": "2", diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.8 nozzle).json index fe005c6d895..f14c178747e 100644 --- a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker (0.8 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.8 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)" ], "layer_height": "0.24", "wall_loops": "2", @@ -26,7 +34,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", "outer_wall_speed": "90", diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..b01cefd7e49 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,22 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.24 Standard @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "4094373563", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.24", + "wall_loops": "2", + "top_shell_layers": "3", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.8 nozzle).json new file mode 100644 index 00000000000..4affcd8001e --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker Artisan (0.8 nozzle).json @@ -0,0 +1,23 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.24 Standard @Snapmaker Artisan (0.8 nozzle)", + "setting_id": "1019868457", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.8 nozzle)" + ], + "layer_height": "0.24", + "initial_layer_print_height": "0.3", + "wall_loops": "2", + "top_shell_layers": "3", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.6 nozzle).json index db6de9e9c7b..8fb9f65bc82 100644 --- a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.6 nozzle).json @@ -18,16 +18,5 @@ "inner_wall_line_width": "0.62", "internal_solid_infill_line_width": "0.62", "support_line_width": "0.62", - "top_surface_line_width": "0.62", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "support_interface_speed": "35" + "top_surface_line_width": "0.62" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.8 nozzle).json index ae3070e3abb..e05c3bd7dfc 100644 --- a/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Standard @Snapmaker J1 (0.8 nozzle).json @@ -19,19 +19,5 @@ "inner_wall_line_width": "0.82", "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", - "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", - "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5", - "support_interface_speed": "35" + "top_surface_line_width": "0.82" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..6cb96ddab12 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,60 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.25 Benchy @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "2853588009", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "elefant_foot_compensation": "0.15", + "top_shell_layers": "3", + "top_shell_thickness": "0.5", + "initial_layer_speed": "100", + "initial_layer_infill_speed": "180", + "outer_wall_speed": "180", + "inner_wall_speed": "200", + "sparse_infill_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "180", + "gap_infill_speed": "200", + "ironing_speed": "30", + "enable_overhang_speed": "0", + "overhang_1_4_speed": "180", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "10", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "detect_overhang_wall": "0", + "reduce_crossing_wall": "0", + "ensure_vertical_shell_thickness": "none", + "filename_format": "ArtisanBenchy_{print_time}.gcode", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "alignedrectilinear", + "wall_generator": "classic", + "seam_position": "nearest", + "wall_loops": "2", + "minimum_sparse_infill_area": "0", + "infill_combination": "1", + "infill_direction": "90", + "gap_fill_target": "nowhere", + "line_width": "0.4", + "inner_wall_line_width": "0.5", + "internal_solid_infill_line_width": "0.5", + "outer_wall_line_width": "0.5", + "sparse_infill_line_width": "0.5", + "top_surface_line_width": "0.5", + "bottom_shell_layers": "2", + "initial_layer_travel_speed": "100%", + "bridge_acceleration": "3000", + "bridge_speed": "100", + "default_acceleration": "3000", + "inner_wall_acceleration": "3000", + "internal_solid_infill_acceleration": "3000", + "outer_wall_acceleration": "1600", + "small_perimeter_speed": "200", + "sparse_infill_acceleration": "3000", + "top_surface_acceleration": "3000", + "initial_layer_acceleration": "1600" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json index 3aed2018f26..da364c6b571 100644 --- a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json @@ -9,47 +9,52 @@ "Snapmaker J1 (0.4 nozzle)" ], "elefant_foot_compensation": "0.15", + "top_shell_layers": "3", "top_shell_thickness": "0.5", - "initial_layer_infill_speed": "60", + "initial_layer_speed": "120", + "initial_layer_infill_speed": "200", "outer_wall_speed": "180", "inner_wall_speed": "280", "sparse_infill_speed": "200", "internal_solid_infill_speed": "280", "top_surface_speed": "200", "gap_infill_speed": "280", + "ironing_speed": "30", "enable_overhang_speed": "0", "overhang_1_4_speed": "150", "overhang_2_4_speed": "20", - "overhang_3_4_speed": "10", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", "detect_overhang_wall": "0", "reduce_crossing_wall": "0", - "ensure_vertical_shell_thickness": "0", + "ensure_vertical_shell_thickness": "none", "filename_format": "J1Benchy_{print_time}.gcode", "sparse_infill_density": "10%", + "sparse_infill_pattern": "alignedrectilinear", "wall_generator": "classic", "seam_position": "nearest", "wall_loops": "2", - "only_one_wall_top": "1", - "only_one_wall_first_layer": "1", - "resolution": "0.05", "minimum_sparse_infill_area": "0", "infill_combination": "1", - "line_width": "0.5", + "infill_direction": "90", + "gap_fill_target": "nowhere", + "line_width": "0.4", "inner_wall_line_width": "0.5", - "initial_layer_print_height": "0.25", "internal_solid_infill_line_width": "0.5", "outer_wall_line_width": "0.5", "sparse_infill_line_width": "0.5", - "support_line_width": "0.5", "top_surface_line_width": "0.5", + "bottom_shell_layers": "2", + "initial_layer_travel_speed": "100%", "bridge_acceleration": "3000", "bridge_speed": "180", "default_acceleration": "15000", "inner_wall_acceleration": "15000", "internal_solid_infill_acceleration": "20000", - "outer_wall_acceleration": "3000", + "outer_wall_acceleration": "5000", "small_perimeter_speed": "200", "sparse_infill_acceleration": "15000", "top_surface_acceleration": "8000", - "travel_acceleration": "28000" + "travel_acceleration": "28000", + "initial_layer_acceleration": "5000" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json index 7a5407da273..1fa3b0654e6 100644 --- a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.4 nozzle)", "Snapmaker A250 QSKit (0.4 nozzle)", "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", "Snapmaker A250 Dual QSKit (0.4 nozzle)", - "Snapmaker A350 Dual QSKit (0.4 nozzle)" + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)" ], "layer_height": "0.28", "elefant_foot_compensation": "0.15", @@ -21,6 +29,7 @@ "top_shell_layers": "3", "top_shell_thickness": "0.6", "support_threshold_angle": "40", + "wall_loops": "2", "initial_layer_infill_speed": "65", "outer_wall_speed": "85", "inner_wall_speed": "95", diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json new file mode 100644 index 00000000000..0780fd81b3a --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json @@ -0,0 +1,19 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle)", + "setting_id": "3141987096", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.4 nozzle)" + ], + "layer_height": "0.28", + "elefant_foot_compensation": "0.15", + "top_surface_line_width": "0.45", + "top_shell_layers": "3", + "top_shell_thickness": "0.6", + "support_threshold_angle": "40", + "wall_loops": "2", + "initial_layer_infill_speed": "65" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json index b3831aaea28..b18c01c857c 100644 --- a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json @@ -14,12 +14,6 @@ "top_shell_layers": "3", "top_shell_thickness": "0.6", "support_threshold_angle": "40", - "initial_layer_infill_speed": "65", - "inner_wall_speed": "180", - "sparse_infill_speed": "160", - "top_surface_speed": "150", - "gap_infill_speed": "160", - "overhang_1_4_speed": "60", - "overhang_2_4_speed": "30", - "overhang_3_4_speed": "10" + "wall_loops": "2", + "initial_layer_infill_speed": "65" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker (0.6 nozzle).json index 49bf34e10ef..74c8bb139dd 100644 --- a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.3", "top_shell_layers": "3", @@ -26,6 +34,7 @@ "internal_solid_infill_line_width": "0.62", "support_line_width": "0.62", "top_surface_line_width": "0.62", + "wall_loops": "2", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", "outer_wall_speed": "75", diff --git a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..76d5d0013b8 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.30 Standard @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "1517142331", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.3", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "wall_loops": "2", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker J1 (0.6 nozzle).json index 323c6ce9aee..1573baaf496 100644 --- a/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Standard @Snapmaker J1 (0.6 nozzle).json @@ -19,15 +19,7 @@ "internal_solid_infill_line_width": "0.62", "support_line_width": "0.62", "top_surface_line_width": "0.62", - "initial_layer_speed": "35", + "wall_loops": "2", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "support_interface_speed": "35" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker (0.6 nozzle).json index 72a85a87d3c..471106ef3e0 100644 --- a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.3", "top_shell_layers": "3", diff --git a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..f564a36bc41 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,26 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.30 Strength @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "87417016", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.3", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "wall_loops": "5", + "sparse_infill_density": "25%", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker J1 (0.6 nozzle).json index b2fc14f58ec..03e484da04c 100644 --- a/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.30 Strength @Snapmaker J1 (0.6 nozzle).json @@ -19,17 +19,8 @@ "internal_solid_infill_line_width": "0.62", "support_line_width": "0.62", "top_surface_line_width": "0.62", - "wall_loops": "6", + "wall_loops": "5", "sparse_infill_density": "25%", - "initial_layer_speed": "35", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "support_interface_speed": "35" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker (0.8 nozzle).json index 93bb0015a1d..02058c5dfd0 100644 --- a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker (0.8 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.8 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)" ], "layer_height": "0.32", "wall_loops": "2", @@ -27,7 +35,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", "outer_wall_speed": "75", diff --git a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker Artisan (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker Artisan (0.8 nozzle).json new file mode 100644 index 00000000000..51103f39411 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker Artisan (0.8 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.32 Standard @Snapmaker Artisan (0.8 nozzle)", + "setting_id": "195892532", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.8 nozzle)" + ], + "layer_height": "0.32", + "wall_loops": "2", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker J1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker J1 (0.8 nozzle).json index 07017dbce5b..37769e42d4d 100644 --- a/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker J1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.32 Standard @Snapmaker J1 (0.8 nozzle).json @@ -20,18 +20,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5", - "support_interface_speed": "35" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker (0.6 nozzle).json index 4449b024c97..c8da8c45056 100644 --- a/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.34", "wall_loops": "2", @@ -27,7 +35,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", "gap_infill_speed": "50", "initial_layer_infill_speed": "55", "initial_layer_speed": "35", diff --git a/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..836464a00ed --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.34 Standard @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "3004749888", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.34", + "wall_loops": "2", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker J1 (0.6 nozzle).json index 3eaae555ca5..37b2265fdf0 100644 --- a/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.34 Standard @Snapmaker J1 (0.6 nozzle).json @@ -20,16 +20,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "gap_infill_speed": "50", "initial_layer_infill_speed": "55", - "initial_layer_speed": "35", - "inner_wall_speed": "150", - "internal_solid_infill_speed": "150", - "outer_wall_speed": "120", - "sparse_infill_speed": "100", - "support_interface_speed": "35", - "top_surface_speed": "150", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker (0.8 nozzle).json index 97b84293786..09d8603d8fd 100644 --- a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker (0.8 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.8 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)" ], "layer_height": "0.36", "wall_loops": "2", @@ -27,7 +35,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", "gap_infill_speed": "50", "initial_layer_infill_speed": "55", "initial_layer_speed": "35", diff --git a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker Artisan (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker Artisan (0.8 nozzle).json new file mode 100644 index 00000000000..cc48b094d90 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker Artisan (0.8 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.36 Standard @Snapmaker Artisan (0.8 nozzle)", + "setting_id": "3805809743", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.8 nozzle)" + ], + "layer_height": "0.36", + "wall_loops": "2", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker J1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker J1 (0.8 nozzle).json index 7830c7cb834..f76c40b9676 100644 --- a/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker J1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.36 Standard @Snapmaker J1 (0.8 nozzle).json @@ -20,18 +20,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "gap_infill_speed": "50", "initial_layer_infill_speed": "55", - "initial_layer_speed": "35", - "inner_wall_speed": "150", - "internal_solid_infill_speed": "150", - "outer_wall_speed": "120", - "sparse_infill_speed": "100", - "support_interface_speed": "35", - "top_surface_speed": "150", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker (0.6 nozzle).json index d2e7d337f3a..803c9d21c97 100644 --- a/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.38", "wall_loops": "2", @@ -27,7 +35,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", "gap_infill_speed": "50", "initial_layer_infill_speed": "55", "initial_layer_speed": "35", diff --git a/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..ba2d953ab18 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.38 Standard @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "1408693644", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.38", + "wall_loops": "2", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker J1 (0.6 nozzle).json index 5755a88be06..9c7105cdf6a 100644 --- a/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.38 Standard @Snapmaker J1 (0.6 nozzle).json @@ -20,16 +20,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "gap_infill_speed": "50", "initial_layer_infill_speed": "55", - "initial_layer_speed": "35", - "inner_wall_speed": "150", - "internal_solid_infill_speed": "150", - "outer_wall_speed": "120", - "sparse_infill_speed": "100", - "support_interface_speed": "35", - "top_surface_speed": "150", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker (0.8 nozzle).json index ea1670e0c34..2604772bce0 100644 --- a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker (0.8 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.8 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)" ], "layer_height": "0.4", "top_shell_layers": "3", @@ -26,7 +34,7 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", + "wall_loops": "2", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", "outer_wall_speed": "75", diff --git a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker Artisan (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker Artisan (0.8 nozzle).json new file mode 100644 index 00000000000..37e1bd34586 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker Artisan (0.8 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.40 Standard @Snapmaker Artisan (0.8 nozzle)", + "setting_id": "2628115465", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.8 nozzle)" + ], + "layer_height": "0.4", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "wall_loops": "2", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker J1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker J1 (0.8 nozzle).json index 74c2ab7f8b4..51fd196ebba 100644 --- a/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker J1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.40 Standard @Snapmaker J1 (0.8 nozzle).json @@ -19,18 +19,7 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", + "wall_loops": "2", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5", - "support_interface_speed": "35" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker (0.6 nozzle).json index f7da29784ac..9bf1ccc2852 100644 --- a/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker (0.6 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.6 nozzle)", "Snapmaker A250 QSKit (0.6 nozzle)", "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", "Snapmaker A250 Dual QSKit (0.6 nozzle)", - "Snapmaker A350 Dual QSKit (0.6 nozzle)" + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)" ], "layer_height": "0.42", "wall_loops": "2", diff --git a/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker Artisan (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker Artisan (0.6 nozzle).json new file mode 100644 index 00000000000..af119895795 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker Artisan (0.6 nozzle).json @@ -0,0 +1,25 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.42 Draft @Snapmaker Artisan (0.6 nozzle)", + "setting_id": "1891109323", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.6 nozzle)" + ], + "layer_height": "0.42", + "wall_loops": "2", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.62", + "outer_wall_line_width": "0.62", + "initial_layer_line_width": "0.62", + "sparse_infill_line_width": "0.62", + "inner_wall_line_width": "0.62", + "internal_solid_infill_line_width": "0.62", + "support_line_width": "0.62", + "top_surface_line_width": "0.62", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker J1 (0.6 nozzle).json b/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker J1 (0.6 nozzle).json index 23abeb1ed73..2ca0c16a989 100644 --- a/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker J1 (0.6 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.42 Draft @Snapmaker J1 (0.6 nozzle).json @@ -20,15 +20,6 @@ "internal_solid_infill_line_width": "0.62", "support_line_width": "0.62", "top_surface_line_width": "0.62", - "initial_layer_speed": "35", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "support_interface_speed": "35" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker (0.8 nozzle).json index 733d0bc4926..3b793072018 100644 --- a/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker (0.8 nozzle).json @@ -12,8 +12,16 @@ "Snapmaker A350 Dual (0.8 nozzle)", "Snapmaker A250 QSKit (0.8 nozzle)", "Snapmaker A350 QSKit (0.8 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", "Snapmaker A250 Dual QSKit (0.8 nozzle)", - "Snapmaker A350 Dual QSKit (0.8 nozzle)" + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)" ], "layer_height": "0.48", "initial_layer_print_height": "0.4", @@ -28,7 +36,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", "initial_layer_speed": "35", "initial_layer_infill_speed": "55", "outer_wall_speed": "75", diff --git a/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker Artisan (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker Artisan (0.8 nozzle).json new file mode 100644 index 00000000000..477d70a63a0 --- /dev/null +++ b/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker Artisan (0.8 nozzle).json @@ -0,0 +1,26 @@ +{ + "type": "process", + "from": "system", + "instantiation": "true", + "name": "0.48 Draft @Snapmaker Artisan (0.8 nozzle)", + "setting_id": "1018401408", + "inherits": "fdm_process_a400", + "compatible_printers": [ + "Snapmaker Artisan (0.8 nozzle)" + ], + "layer_height": "0.48", + "initial_layer_print_height": "0.4", + "wall_loops": "2", + "top_shell_layers": "3", + "bridge_speed": "30", + "line_width": "0.82", + "outer_wall_line_width": "0.82", + "initial_layer_line_width": "0.82", + "sparse_infill_line_width": "0.82", + "inner_wall_line_width": "0.82", + "internal_solid_infill_line_width": "0.82", + "support_line_width": "0.82", + "top_surface_line_width": "0.82", + "initial_layer_infill_speed": "55", + "initial_layer_speed": "40" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker J1 (0.8 nozzle).json b/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker J1 (0.8 nozzle).json index 92824980565..633be804e7a 100644 --- a/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker J1 (0.8 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.48 Draft @Snapmaker J1 (0.8 nozzle).json @@ -21,18 +21,6 @@ "internal_solid_infill_line_width": "0.82", "support_line_width": "0.82", "top_surface_line_width": "0.82", - "top_surface_pattern": "monotonic", - "initial_layer_speed": "35", "initial_layer_infill_speed": "55", - "outer_wall_speed": "120", - "inner_wall_speed": "150", - "sparse_infill_speed": "100", - "internal_solid_infill_speed": "150", - "top_surface_speed": "150", - "gap_infill_speed": "50", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "50", - "overhang_3_4_speed": "25", - "overhang_4_4_speed": "5", - "support_interface_speed": "35" + "initial_layer_speed": "40" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/fdm_process_a400.json b/resources/profiles/Snapmaker/process/fdm_process_a400.json new file mode 100644 index 00000000000..90c851f1163 --- /dev/null +++ b/resources/profiles/Snapmaker/process/fdm_process_a400.json @@ -0,0 +1,37 @@ +{ + "type": "process", + "from": "system", + "instantiation": "false", + "name": "fdm_process_a400", + "setting_id": "3085664947", + "inherits": "fdm_process_common", + "initial_layer_print_height": "0.2", + "enable_arc_fitting": "1", + "initial_layer_infill_speed": "75", + "outer_wall_speed": "145", + "inner_wall_speed": "160", + "sparse_infill_speed": "160", + "internal_solid_infill_speed": "160", + "gap_infill_speed": "160", + "support_speed": "100", + "overhang_1_4_speed": "0", + "travel_speed": "190", + "default_acceleration": "2000", + "inner_wall_acceleration": "2000", + "sparse_infill_acceleration": "2000", + "internal_solid_infill_acceleration": "2000", + "travel_acceleration": "3000", + "infill_jerk": "8", + "initial_layer_jerk": "8", + "outer_wall_jerk": "4", + "top_surface_jerk": "4", + "travel_jerk": "10", + "support_filament": "1", + "support_interface_filament": "2", + "support_top_z_distance": "0", + "support_bottom_z_distance": "0", + "support_interface_top_layers": "3", + "support_interface_pattern": "rectilinear", + "small_perimeter_threshold": "0", + "support_material_synchronize_layers": "1" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/fdm_process_common.json b/resources/profiles/Snapmaker/process/fdm_process_common.json index af5fba96171..3560f4dc019 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_common.json @@ -42,7 +42,7 @@ "bridge_density": "100%", "thick_bridges": "1", "top_solid_infill_flow_ratio": "1", - "bottom_solid_infill_flow_ratio": "1", + "bottom_solid_infill_flow_ratio": "1.2", "only_one_wall_top": "0", "only_one_wall_first_layer": "0", "detect_overhang_wall": "1", @@ -56,14 +56,14 @@ "print_flow_ratio": "1", "wall_loops": "3", "detect_thin_wall": "0", - "top_surface_pattern": "monotonicline", + "top_surface_pattern": "monotonic", "top_shell_layers": "4", "top_shell_thickness": "0.8", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", + "sparse_infill_pattern": "cubic", "filter_out_gap_fill": "0", "infill_wall_overlap": "15%", "infill_direction": "45", @@ -84,7 +84,7 @@ "gap_infill_speed": "100", "support_speed": "80", "support_interface_speed": "50", - "ironing_speed": "50", + "ironing_speed": "35", "enable_overhang_speed": "1", "overhang_speed_classic": "0", "overhang_1_4_speed": "35", @@ -93,15 +93,15 @@ "overhang_4_4_speed": "10", "bridge_speed": "50", "travel_speed": "120", - "default_acceleration": "2000", + "default_acceleration": "1100", "outer_wall_acceleration": "1000", - "inner_wall_acceleration": "2000", + "inner_wall_acceleration": "1100", "bridge_acceleration": "1000", - "sparse_infill_acceleration": "2000", - "internal_solid_infill_acceleration": "2000", + "sparse_infill_acceleration": "1100", + "internal_solid_infill_acceleration": "1100", "initial_layer_acceleration": "500", "top_surface_acceleration": "1000", - "travel_acceleration": "2000", + "travel_acceleration": "1100", "default_jerk": "0", "infill_jerk": "4", "initial_layer_jerk": "4", @@ -124,7 +124,7 @@ "support_interface_filament": "0", "tree_support_branch_distance": "5", "tree_support_branch_diameter": "5", - "tree_support_branch_angle": "30", + "tree_support_branch_angle": "15", "tree_support_wall_count": "2", "tree_support_adaptive_layer_height": "1", "tree_support_auto_brim": "1", @@ -149,7 +149,7 @@ "skirt_height": "1", "brim_type": "auto_brim", "brim_width": "5", - "brim_object_gap": "0.1", + "brim_object_gap": "0", "enable_prime_tower": "1", "prime_tower_width": "25", "prime_volume": "7.3", @@ -158,6 +158,7 @@ "flush_into_infill": "0", "flush_into_support": "1", "flush_into_objects": "0", + "flush_multiplier": "0.05", "slicing_mode": "regular", "print_sequence": "by layer", "spiral_mode": "0", @@ -167,13 +168,13 @@ "reduce_infill_retraction": "1", "gcode_comments": "0", "gcode_add_line_number": "0", - "gcode_label_objects": "0", + "gcode_label_objects": "1", "filename_format": "{input_filename_base}_{layer_height}mm_{print_time}.gcode", "post_process": "", "enforce_support_layers": "0", - "exclude_object": "1", + "exclude_object": "0", "standby_temperature_delta": "-45", "timelapse_type": "0", - "single_extruder_multi_material_priming": "0", - "gap_fill_enabled": "0" + "gap_fill_enabled": "0", + "single_extruder_multi_material_priming": "0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/fdm_process_idex.json b/resources/profiles/Snapmaker/process/fdm_process_idex.json index bfaa964a0c0..7682a1e12db 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_idex.json +++ b/resources/profiles/Snapmaker/process/fdm_process_idex.json @@ -8,27 +8,27 @@ "initial_layer_print_height": "0.2", "enable_arc_fitting": "1", "initial_layer_infill_speed": "75", - "outer_wall_speed": "100", + "outer_wall_speed": "145", "inner_wall_speed": "250", - "sparse_infill_speed": "150", - "internal_solid_infill_speed": "180", - "gap_infill_speed": "150", + "sparse_infill_speed": "250", + "internal_solid_infill_speed": "250", + "gap_infill_speed": "250", "support_speed": "100", - "ironing_speed": "30", - "travel_speed": "350", + "overhang_1_4_speed": "60", + "overhang_2_4_speed": "30", + "overhang_3_4_speed": "10", + "travel_speed": "300", "default_acceleration": "10000", - "outer_wall_acceleration": "5000", - "inner_wall_acceleration": "10000", + "inner_wall_acceleration": "6000", "bridge_acceleration": "2000", "sparse_infill_acceleration": "10000", "internal_solid_infill_acceleration": "10000", "top_surface_acceleration": "2000", - "travel_acceleration": "12000", - "infill_jerk": "9", - "initial_layer_jerk": "9", - "inner_wall_jerk": "9", - "outer_wall_jerk": "9", - "top_surface_jerk": "9", + "travel_acceleration": "10000", + "infill_jerk": "8", + "initial_layer_jerk": "8", + "outer_wall_jerk": "4", + "top_surface_jerk": "4", "travel_jerk": "10", "support_filament": "1", "support_interface_filament": "2", From 6e3e733dfb03950acf043b307b3f903fe1af086d Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 8 May 2024 13:21:40 +0800 Subject: [PATCH 02/64] remove key --- resources/profiles/Snapmaker.json | 2 +- resources/profiles/Snapmaker/process/fdm_process_common.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 5aa74f1458b..321f9445da2 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1299,4 +1299,4 @@ "sub_path": "machine/Snapmaker Artisan (0.8 nozzle).json" } ] -} +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/fdm_process_common.json b/resources/profiles/Snapmaker/process/fdm_process_common.json index 3560f4dc019..f35f39ffb1d 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_common.json @@ -158,7 +158,6 @@ "flush_into_infill": "0", "flush_into_support": "1", "flush_into_objects": "0", - "flush_multiplier": "0.05", "slicing_mode": "regular", "print_sequence": "by layer", "spiral_mode": "0", From 9715ea9b3c752266375f6f2406bfd4957bfc9869 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 8 May 2024 13:36:28 +0800 Subject: [PATCH 03/64] fix compatible_printers --- .../Snapmaker/filament/Snapmaker PET.json | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET.json b/resources/profiles/Snapmaker/filament/Snapmaker PET.json index 5b62beb0b80..0357f8ce705 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET.json @@ -5,5 +5,30 @@ "name": "Snapmaker PET", "setting_id": "3543479015", "inherits": "Snapmaker PET @base", - "compatible_printers": null + "compatible_printers": [ + "Snapmaker A250 (0.4 nozzle)", + "Snapmaker A250 (0.6 nozzle)", + "Snapmaker A250 (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A250 QSKit (0.4 nozzle)", + "Snapmaker A250 QSKit (0.6 nozzle)", + "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A350 QSKit (0.8 nozzle)" + ] } \ No newline at end of file From 97ebb35bc9b20c069db2af33fadc0d7e3b653ba9 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 8 May 2024 13:43:45 +0800 Subject: [PATCH 04/64] remove pva for single extruder --- resources/profiles/Snapmaker.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 321f9445da2..574e677891e 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -524,10 +524,6 @@ "name": "PolyTerra PLA @0.2 nozzle", "sub_path": "filament/PolyTerra PLA @0.2 nozzle.json" }, - { - "name": "Snapmaker PVA @base", - "sub_path": "filament/Snapmaker PVA @base.json" - }, { "name": "Snapmaker TPU @base", "sub_path": "filament/Snapmaker TPU @base.json" From 00d5b8900d83fa6761db282863e7760075ee236f Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 15 May 2024 17:59:23 +0800 Subject: [PATCH 05/64] fix ci --- resources/profiles/Snapmaker.json | 16 ++++++++++++++++ .../Snapmaker Dual PETG @0.8 nozzle.json | 4 ++-- .../filament/Snapmaker Dual PETG @base.json | 10 +++++----- .../filament/Snapmaker J1 PETG @base.json | 4 ++-- .../Snapmaker/filament/Snapmaker PET @Dual.json | 8 ++++++++ .../filament/Snapmaker PVA @0.2 nozzle.json | 8 ++++++++ .../Snapmaker/filament/Snapmaker PVA.json | 8 ++++++++ 7 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker PVA.json diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 574e677891e..e063a9c7e12 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -524,6 +524,18 @@ "name": "PolyTerra PLA @0.2 nozzle", "sub_path": "filament/PolyTerra PLA @0.2 nozzle.json" }, + { + "name": "Snapmaker PVA @base", + "sub_path": "filament/Snapmaker PVA @base.json" + }, + { + "name": "Snapmaker PVA", + "sub_path": "filament/Snapmaker PVA.json" + }, + { + "name": "Snapmaker PVA @0.2 nozzle", + "sub_path": "filament/Snapmaker PVA @0.2 nozzle.json" + }, { "name": "Snapmaker TPU @base", "sub_path": "filament/Snapmaker TPU @base.json" @@ -788,6 +800,10 @@ "name": "Snapmaker Dual PET @base", "sub_path": "filament/Snapmaker Dual PET @base.json" }, + { + "name": "Snapmaker PET @Dual", + "sub_path": "filament/Snapmaker PET @Dual.json" + }, { "name": "Snapmaker Dual PET", "sub_path": "filament/Snapmaker Dual PET.json" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json index 5dd8ca18195..fd8f37e848a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @0.8 nozzle.json @@ -17,9 +17,9 @@ "Snapmaker Artisan (0.8 nozzle)" ], "fan_max_speed": [ - "60" + "25" ], "fan_min_speed": [ - "20" + "10" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json index 7faa2b3630f..6dfe8db49b6 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json @@ -9,7 +9,7 @@ "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" ], "overhang_fan_speed": [ - "60" + "25" ], "filament_density": [ "1.25" @@ -47,17 +47,17 @@ "filament_cooling_final_speed": [ "60" ], - "nozzle_temperature": [ - "255" + "nozzle_temperature_initial_layer": [ + "250" ], "temperature_vitrification": [ "178" ], "fan_max_speed": [ - "30" + "20" ], "fan_min_speed": [ - "10" + "0" ], "nozzle_temperature_range_low": [ "240" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json index 68c61976239..ad69c9f1874 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json @@ -9,7 +9,7 @@ "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" ], "overhang_fan_speed": [ - "60" + "35" ], "filament_density": [ "1.25" @@ -27,7 +27,7 @@ "178" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ "10" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json new file mode 100644 index 00000000000..1318da9b4e8 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker PET @Dual", + "setting_id": "145337790", + "inherits": "Snapmaker Dual PET @base" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json new file mode 100644 index 00000000000..521a5d53d59 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker PVA @0.2 nozzle", + "setting_id": "1131479069", + "inherits": "Snapmaker PVA @base" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA.json new file mode 100644 index 00000000000..4ed343df13f --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker PVA", + "setting_id": "3741816734", + "inherits": "Snapmaker PVA @base" +} \ No newline at end of file From ce4a648578262d6dc113ac9034e3782263ab1348 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:06:56 +0800 Subject: [PATCH 06/64] Fix compatible_printers --- .../filament/Snapmaker PET @Dual.json | 4 ++- .../filament/Snapmaker PET @base.json | 3 +-- .../filament/Snapmaker PVA @0.2 nozzle.json | 5 +++- .../Snapmaker/filament/Snapmaker PVA.json | 27 ++++++++++++++++++- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json index a77525a0e99..801cb64b05f 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @Dual.json @@ -5,5 +5,7 @@ "name": "Snapmaker PET @Dual", "setting_id": "145337790", "inherits": "Snapmaker Dual PET @base", - "compatible_printers": "" + "compatible_printers": [ + "Snapmaker A250 Dual (0.8 nozzle)" + ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json index fd188706aa5..47594a10d7c 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PET @base.json @@ -4,6 +4,5 @@ "instantiation": "false", "name": "Snapmaker PET @base", "filament_id": "2549587591", - "inherits": "fdm_filament_pet", - "compatible_printers": "" + "inherits": "fdm_filament_pet" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json index 521a5d53d59..18b8430d150 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA @0.2 nozzle.json @@ -4,5 +4,8 @@ "instantiation": "true", "name": "Snapmaker PVA @0.2 nozzle", "setting_id": "1131479069", - "inherits": "Snapmaker PVA @base" + "inherits": "Snapmaker PVA @base", + "compatible_printers": [ + "Snapmaker A250 (0.2 nozzle)" + ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PVA.json b/resources/profiles/Snapmaker/filament/Snapmaker PVA.json index b49e2cfb4c2..0a44bae8ee0 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PVA.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PVA.json @@ -5,5 +5,30 @@ "name": "Snapmaker PVA", "setting_id": "3741816734", "inherits": "Snapmaker PVA @base", - "compatible_printers": "" + "compatible_printers": [ + "Snapmaker A250 (0.4 nozzle)", + "Snapmaker A250 (0.6 nozzle)", + "Snapmaker A250 (0.8 nozzle)", + "Snapmaker A250 BKit (0.4 nozzle)", + "Snapmaker A250 BKit (0.6 nozzle)", + "Snapmaker A250 BKit (0.8 nozzle)", + "Snapmaker A250 QS+B Kit (0.4 nozzle)", + "Snapmaker A250 QS+B Kit (0.6 nozzle)", + "Snapmaker A250 QS+B Kit (0.8 nozzle)", + "Snapmaker A250 QSKit (0.4 nozzle)", + "Snapmaker A250 QSKit (0.6 nozzle)", + "Snapmaker A250 QSKit (0.8 nozzle)", + "Snapmaker A350 (0.4 nozzle)", + "Snapmaker A350 (0.6 nozzle)", + "Snapmaker A350 (0.8 nozzle)", + "Snapmaker A350 BKit (0.4 nozzle)", + "Snapmaker A350 BKit (0.6 nozzle)", + "Snapmaker A350 BKit (0.8 nozzle)", + "Snapmaker A350 QS+B Kit (0.4 nozzle)", + "Snapmaker A350 QS+B Kit (0.6 nozzle)", + "Snapmaker A350 QS+B Kit (0.8 nozzle)", + "Snapmaker A350 QSKit (0.4 nozzle)", + "Snapmaker A350 QSKit (0.6 nozzle)", + "Snapmaker A350 QSKit (0.8 nozzle)" + ] } \ No newline at end of file From 7fdb1a58629c9ce97210f24508a0d161f6edf814 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:08:41 +0800 Subject: [PATCH 07/64] Revert specific parameters --- .../process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json | 2 +- .../0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json | 2 +- .../process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json | 2 +- .../Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json | 2 +- .../process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json | 2 +- .../process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json | 2 +- .../process/0.16 Optimal @Snapmaker (0.4 nozzle).json | 2 +- .../process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json | 2 +- .../process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json | 2 +- .../Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json | 2 +- .../process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json | 2 +- .../process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json | 2 +- .../process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json | 2 +- .../process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json | 2 +- .../process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json | 2 +- .../0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json | 2 +- .../process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json | 2 +- resources/profiles/Snapmaker/process/fdm_process_common.json | 4 ++-- 18 files changed, 19 insertions(+), 19 deletions(-) diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json index dd1be72edbe..a081fe766e9 100644 --- a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker (0.4 nozzle).json @@ -29,7 +29,7 @@ "ironing_flow": "8%", "layer_height": "0.08", "initial_layer_print_height": "0.1", - "support_threshold_angle": "30", + "support_threshold_angle": "15", "top_shell_layers": "9", "gap_infill_speed": "85", "initial_layer_infill_speed": "65", diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json index 3b160147bd7..22bdb6cb08b 100644 --- a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker Artisan (0.4 nozzle).json @@ -14,7 +14,7 @@ "ironing_flow": "8%", "layer_height": "0.08", "initial_layer_print_height": "0.1", - "support_threshold_angle": "30", + "support_threshold_angle": "15", "top_shell_layers": "5", "initial_layer_infill_speed": "80", "inner_wall_speed": "145", diff --git a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json index c93c20378fa..eaf51d4cd63 100644 --- a/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.08 Extra Fine @Snapmaker J1 (0.4 nozzle).json @@ -14,7 +14,7 @@ "ironing_flow": "8%", "layer_height": "0.08", "initial_layer_print_height": "0.1", - "support_threshold_angle": "30", + "support_threshold_angle": "15", "top_shell_layers": "5", "initial_layer_infill_speed": "80", "inner_wall_speed": "145", diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json index 554733174f2..24216b3c5cb 100644 --- a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker (0.4 nozzle).json @@ -30,7 +30,7 @@ "top_shell_layers": "5", "top_shell_thickness": "0.6", "bridge_flow": "1", - "support_threshold_angle": "30", + "support_threshold_angle": "20", "initial_layer_infill_speed": "65", "outer_wall_speed": "75", "inner_wall_speed": "120", diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json index 1626107191c..41cfa41d212 100644 --- a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker Artisan (0.4 nozzle).json @@ -14,7 +14,7 @@ "top_shell_layers": "5", "top_shell_thickness": "0.6", "bridge_flow": "1", - "support_threshold_angle": "30", + "support_threshold_angle": "20", "initial_layer_infill_speed": "80", "inner_wall_speed": "145", "internal_solid_infill_speed": "150" diff --git a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json index be2dd48aff5..1ff76293393 100644 --- a/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.12 Fine @Snapmaker J1 (0.4 nozzle).json @@ -14,7 +14,7 @@ "top_shell_layers": "5", "top_shell_thickness": "0.6", "bridge_flow": "1", - "support_threshold_angle": "30", + "support_threshold_angle": "20", "initial_layer_infill_speed": "80", "inner_wall_speed": "145", "internal_solid_infill_speed": "150" diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json index e8b091eb7da..119ae1e3e5b 100644 --- a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker (0.4 nozzle).json @@ -29,7 +29,7 @@ "bottom_shell_layers": "4", "top_shell_thickness": "0.6", "bridge_flow": "1", - "support_threshold_angle": "30", + "support_threshold_angle": "25", "initial_layer_infill_speed": "65", "outer_wall_speed": "80", "inner_wall_speed": "100", diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json index ea9ab92b4b7..e2547e522bb 100644 --- a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker Artisan (0.4 nozzle).json @@ -14,7 +14,7 @@ "top_shell_layers": "5", "top_shell_thickness": "0.6", "bridge_flow": "1", - "support_threshold_angle": "30", + "support_threshold_angle": "25", "initial_layer_infill_speed": "80", "inner_wall_speed": "145" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json index d303e2e5da0..77a170ef615 100644 --- a/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.16 Optimal @Snapmaker J1 (0.4 nozzle).json @@ -14,7 +14,7 @@ "top_shell_layers": "5", "top_shell_thickness": "0.6", "bridge_flow": "1", - "support_threshold_angle": "30", + "support_threshold_angle": "25", "initial_layer_infill_speed": "80", "inner_wall_speed": "145" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json index 8f94f6c47d0..17089131eb0 100644 --- a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker (0.4 nozzle).json @@ -28,7 +28,7 @@ "top_surface_line_width": "0.45", "top_shell_layers": "3", "top_shell_thickness": "0.6", - "support_threshold_angle": "30", + "support_threshold_angle": "35", "initial_layer_infill_speed": "65", "outer_wall_speed": "90", "inner_wall_speed": "100", diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json index c8486952a08..43947ed4273 100644 --- a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker Artisan (0.4 nozzle).json @@ -13,6 +13,6 @@ "top_surface_line_width": "0.45", "top_shell_layers": "3", "top_shell_thickness": "0.6", - "support_threshold_angle": "30", + "support_threshold_angle": "35", "initial_layer_infill_speed": "65" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json index 0fd04fa649e..23877e116c1 100644 --- a/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.24 Draft @Snapmaker J1 (0.4 nozzle).json @@ -13,6 +13,6 @@ "top_surface_line_width": "0.45", "top_shell_layers": "3", "top_shell_thickness": "0.6", - "support_threshold_angle": "30", + "support_threshold_angle": "35", "initial_layer_infill_speed": "65" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json index ab306e914bd..6cb96ddab12 100644 --- a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker Artisan (0.4 nozzle).json @@ -31,7 +31,7 @@ "ensure_vertical_shell_thickness": "none", "filename_format": "ArtisanBenchy_{print_time}.gcode", "sparse_infill_density": "10%", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "alignedrectilinear", "wall_generator": "classic", "seam_position": "nearest", "wall_loops": "2", diff --git a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json index 3e8f9db16a1..da364c6b571 100644 --- a/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.25 Benchy @Snapmaker J1 (0.4 nozzle).json @@ -30,7 +30,7 @@ "ensure_vertical_shell_thickness": "none", "filename_format": "J1Benchy_{print_time}.gcode", "sparse_infill_density": "10%", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "alignedrectilinear", "wall_generator": "classic", "seam_position": "nearest", "wall_loops": "2", diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json index 8e9da23b21a..1fa3b0654e6 100644 --- a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker (0.4 nozzle).json @@ -28,7 +28,7 @@ "top_surface_line_width": "0.45", "top_shell_layers": "3", "top_shell_thickness": "0.6", - "support_threshold_angle": "30", + "support_threshold_angle": "40", "wall_loops": "2", "initial_layer_infill_speed": "65", "outer_wall_speed": "85", diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json index 10d2759083a..0780fd81b3a 100644 --- a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker Artisan (0.4 nozzle).json @@ -13,7 +13,7 @@ "top_surface_line_width": "0.45", "top_shell_layers": "3", "top_shell_thickness": "0.6", - "support_threshold_angle": "30", + "support_threshold_angle": "40", "wall_loops": "2", "initial_layer_infill_speed": "65" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json index 2060ea02111..b18c01c857c 100644 --- a/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json +++ b/resources/profiles/Snapmaker/process/0.28 Extra Draft @Snapmaker J1 (0.4 nozzle).json @@ -13,7 +13,7 @@ "top_surface_line_width": "0.45", "top_shell_layers": "3", "top_shell_thickness": "0.6", - "support_threshold_angle": "30", + "support_threshold_angle": "40", "wall_loops": "2", "initial_layer_infill_speed": "65" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/fdm_process_common.json b/resources/profiles/Snapmaker/process/fdm_process_common.json index e894e7f0d23..f35f39ffb1d 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_common.json @@ -56,14 +56,14 @@ "print_flow_ratio": "1", "wall_loops": "3", "detect_thin_wall": "0", - "top_surface_pattern": "monotonicline", + "top_surface_pattern": "monotonic", "top_shell_layers": "4", "top_shell_thickness": "0.8", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", "bottom_shell_thickness": "0", "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "cubic", "filter_out_gap_fill": "0", "infill_wall_overlap": "15%", "infill_direction": "45", From 5b549682bd0589b3628d261069abf1a78a9565b9 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Mon, 1 Jul 2024 10:48:10 -0400 Subject: [PATCH 08/64] Improve RatRig V-Core 4 covers --- .../Ratrig/RatRig V-Core 4 300_cover.png | Bin 15410 -> 17378 bytes .../Ratrig/RatRig V-Core 4 400_cover.png | Bin 15410 -> 17378 bytes .../Ratrig/RatRig V-Core 4 500_cover.png | Bin 15410 -> 17378 bytes .../RatRig V-Core 4 HYBRID 300_cover.png | Bin 15410 -> 18880 bytes .../RatRig V-Core 4 HYBRID 400_cover.png | Bin 15410 -> 18880 bytes .../RatRig V-Core 4 HYBRID 500_cover.png | Bin 15410 -> 18880 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 300_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 300_cover.png index 8490bf74a0fe39b0834234c2eb0746f220e69c69..d1ed3b3437d41c2316fba973adcbf01b0f2af262 100644 GIT binary patch delta 14232 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 delta 12249 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 diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 400_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 400_cover.png index 8490bf74a0fe39b0834234c2eb0746f220e69c69..d1ed3b3437d41c2316fba973adcbf01b0f2af262 100644 GIT binary patch delta 14232 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 delta 12249 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 diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 500_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 500_cover.png index 8490bf74a0fe39b0834234c2eb0746f220e69c69..d1ed3b3437d41c2316fba973adcbf01b0f2af262 100644 GIT binary patch delta 14232 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 delta 12249 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 diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 HYBRID 300_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 HYBRID 300_cover.png index 8490bf74a0fe39b0834234c2eb0746f220e69c69..d4a3fb40154a1a2f59edb8bdb01901ef51a46afe 100644 GIT binary patch delta 15693 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 delta 12196 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 delta 12196 zcmV;VFI&*SlL4}LkVp#-!~g&e!~vBn4jZvkO9CTfIW#adW@0ccVm3EnEi^P`Vl6l} zF*q$VWHK-|H#cQAIA)W<0w5$fF*Pz{H!wCWIAb4qpH7#ajWn?WhVKg!=Vl^~2Ei^bdG&MJ5Fl1t7W0MdCNDVeEF)&mzGCDIcIx{%4 zWd&{s2$uLeZ~y=R!;{+$AAi9O!!QW^Get+hKpZ@d)1*>2==cRgqPp!#J_BbR7&u=Tg%dm6PgVhW+8L62`?ZMsfhJ8*`^0jDip$3*y>%YSOy+ZXG@LJUS8*5@lv(uCA>P4i0;Kdw+(8hK!4gl9G{re}0;p zn4zJdf`Wn|E*WKbVJbu*D_IyLI2%EGAy1nYI%6q5PBdAs4rGf%Q*TU0iXwi3fS$K< zz+M2-0000KbW%=J0R0o-{{9Cd>4CCBFI$yx=;_R|a+n$q001mKNklP+%@`A7W`BDLPz<%o0=YvCB7#^@fVU^u@Bb#Jdo8XeIcLvQ<<$A(bZSOt)YU&e zdVSr?eEatQ_#cSgWHNbteEzTI98Vr6k1v1z`G-kA9i;sqqshycvkr&7AtaoP{z@UH zf1dEEU$`4L&d=%V%hT|Sp?kd{igeDmVR%g+|1{n3X@B5qx~^)GQ>2sL7gu8MVLVB5 zXQvv58l3<7edyu%`2p5>z692Ktq@a*j?;%PS9)}J^c0>Gh!qt-p72hOe{^`9@EDho!9OuB z_|wGTGH3<(`E%d!(>znqI}c7HvdtGw(1?f`?Hq?x~qc6CHM&$hi? z6u}c3^grRQB|(zx_m1OiLf74H@me4ONRvYpWgI_>bL)9=WN*w1_!Pa5unMfTbwejf zlCmE0A;PpxK_4;tIEXx48rm3o~>xN|=4&YsiOoN!bAjr|N zhEBJK`PG$V>J-FY=oxw+PdA zyDf=PTY6goSOZ{iEZ|jS(2Qp?@;tW$E`Kv>lm@F=E*7)7D2b~%Vpq%zno^_Wpt$vp z8^MvBl}uGMbx^=o;08fjHw>Lp;YwngN^GFSRAB<@auk9mrXa3nb0xV{(2xCG69Ib3 z37jM@X^0|2X3&h9id|we?h-s=MVOQoj~9U9B3Tve`DTMJ@Aq}>Mm2Cl3?frxs(&*r zTb>X>oX=JVckozl#Fy#O;}&l-5$J?=@O)L;04&ROaWib-25=xp_HwtD;eQ_N4RpiP zO>Wz?CTJBSGE*5V8S|Qa#emRDJ$@aRM%^2oBOah7-ZV`p16l+)b7)LVT5GzswxBs; z91aW}*fI1n)H(n{`!MKBRg@pA7Jo4yC*9;scUIg~b^=sT9?Y!hdA|=5URGq0whQy)r5ObVD0Ok&Xhcy6H($&YXV5@T?h0Fa zds`v2?1dQ=Gj!uK9WtQd!%fOIJIzkEfx($o9n0nBrefc4&)-R0BY#&ax0)^y1X>=d zm&DhCX2!M;-SY}2zx55Gtcf&RtSmQepkMBfJ7K|~c{Ql|GVN^G!Lry5V4p-ubl`|m zZKST)4fXt{N^0Ut<%+qS6QCwJJ#YeB*MjZoihUG1DQ1Np@4C)z4MGudwpi-f>r1aW zz+QZ?kGUYrf}r~j?SBhpV`g2<^)&p&smWZR@7A+j<<=Y8>*)%4EoSO zcPr#W>ec5u%O$j|+L~e5wbDhYG*F{?05r@QoLx+tlj``#nSVk{xJxN?i>?I8P1kPU7^wv#m=;H@oGL`km&@JlaN6d{q3#}Qff`+v% zEkNkg-&g8hd4|kx=ork17m^-hGtd+zaz zpDVBr4m=N_X+hT~M1=M%z!XG*LNlu-A3>M1?XtzYY(aA!Xi81!s)}U?Wmw7j|h?# zp?z%QZ4y{v&9qJ$3N)xPJ)zCWUsJn+s2Xc@tp)d{c{)k zxgYCGIJ=nGozU~pKU|lc`j8nmghB9l2}5_e>8q6d??Jbz@zi0OvZ1L5rZgmUYn||X z=J=|B(*-!5oLug2ps$)#dYnT3Y=-$K8m#!ze@7B`LE zzJDzfJx~I)&Xv&XaBu^CS9n6@d3NAzHesVSy=H_4w&jv*?I2pv4Yb&SUUfHOBlRtH z1Knh#&<;RHI9TFfx-#PQ7Wy0!@VwHf0lH1i?h`^w2;HJKYvy;*s}G^u)QnpYh^47( zo;TWM2}w5$+5*3#gQMKf=gFJ%5j&Q9GOFTY&O=0E7mzWaAy-ErwQ zcng|+o7Fn@n*zrh(Y})rzikN7rU}e=vxR6EKRS;0Z8)wykE2FiN?peWc0>g&lpClz zBYsfQ?;B#bK&0ld2ooZm{!AU9H|>lFz4zAO;ico<{(9gEJa7JUfu1M8CBv=hV1L63 zfhGePKy#f_sqlf&AC4X^v42UOBk(VHL6V4$X*V6_%_gxGJc{E15gc!L^Xrv2Q*@|koMn6ayHGR;%0Xh$KViNVemK`zIobq{Rk4A!< z{xIrLhVJxYf@YHrt_AbBNGb*`LGgw!T3-Jl%|mW$((y#G3$MvxC){x6!G8j|7G);Z z=nz_OGuO#&i&#E|J!+duKWm@|ds~!A7|?!qkfA{FUU-@`PqSs6%D_etjpuw#@m0d0 z3l7~GiA|)p+z`O0_6y26S41if+ThItX#BLBiT42!9wsL*|s~s`0vZ+{a;_8 zd727nMbfKc+Je4kUw^aIq$!rQG1=0M9)muvKyql+mlWlQnvMeYc&8%oYz>Nc0{Zp0Lbs7760{TMBp(9#et3Tm>hX59UawaV4-XrBJ*<{Y26Pts zH4B3`nq;5)H{@wW;n+_YCD^=X*;+3yOE*M#3-eZ!^tPRPuCdNhANcznw5}T7Mgl!giZ&BAP<`CQ#k|Nz*Ja z98wOam(>lVqvzP8n@v3&#(gH@3C%?D|Ft;Ad%(dyw2kTax2Nt;y#J9Xo`!YrKz^ok zE*>mD<~4*JcHhHlwc2jC)B{cv(T}5+ocPYWQc;pZUrC{zUK;HmIX4-^Pi*U)mY*&zB4HKK;p8+lG|%#IkeiNG zmGyy0jcaPgPRppey1K%?&?%^7*kRpIWF1BJoqsRf3Z&rfh1prdgIM@TeyHj}v6rz9 zBfMWW-J*_7$B_YOU-N7z-f8H&ncnpz3(!GPho<9_UOC=B1-AXGHQwZ!x^HlgFVd$v z?c1j=h_{LYZ=c$t@TTs(H2$E&3QboSa*bG~A0|2P>6g<%eY%*cj(zAUP`uO77Ynxw z`F}uY(5oY^#Vk&E^Oppn&yJSW6)PIbcDLL8bjrF;QkFU1KU>|pa^@+Ik~=tpjk)fq zSWF@7GG`GIFAkkLs^iGEC+FW@or1pn^ZhXJx|)iWPgMjgteflkcvi$|*rP1g?1$Tj z&1SQW_=4;k=8;MZtwxZTv)(kAv#@8f2Y(!{&aD~(P6O7RE@;eEAG<}z3DFDEC>Pn{ zV3q+I;^A4dyN|!0ynglJa|LMM(XD<=-6CE(nC97)$tDWoa=hD3MPt4Ya=|5|EemOu z_L zMC;lz+@YsT^KK@$w>OAd9CoHr=r^weR(AbiE=+`0;$zNdagkV%w z3wS@OOt{O}x?V7ObNcq_FCXqopX9@mCCdn^6uXh7mh4)N>gy2QtlA&L;_5_m@uR-^ zL2EfGW|*|T22xv5-|)z5sZR3obQWWjG}L7{+Qa;`Kn8A>LYT@kQtTHtn@4IwC5h$_Y6JV<{D&`?eo$ zx2vTh)A1)!=NL00h=yY%Kzm)O_;v>R@*Om z>BNMqDMHaEohw_?KI`+eI~9@#@;|5-~6DAya!kN zt(XMRIBa2KL9MV&L(r1_$xHt^3w`;YN#jV7io+yY(`5KAv26SxAE%65?}fdVtEI4D=PO-{B8tNeCk_5|K-B?09N+t2R|z{{G)&yWauGH>rxtvW}mg`gQ-iU$+p_fG>I(f!> zv^qjd19W!}TBm+`v9P0V%TA6&Kt7@dMt`Qy=na!vjc6BE*=a>nxZJGgYC3^#x*|2T z3ACJUo^*L{zuwdVScL}A)CAT^z1>cz>)52}%71)r7TaZ;X9lmCs$)@1a7(HKs=?NT zNr;*$@5(ccyj#|Z<1xQy9YNP^s@rpB(-05mPJDP0`XBHAyd}~CjG95uXTLg-ofBx1 zX%t#Y_Ny%k#|EZpaT-+xyq*lq5YqVCPCCVSOI}zkL8}KUF7{kcx{(=ne4--(Lc>1v zqJQnpm$N6wr@n&E189Xq|MmBO|2If|YUqRj+#Vg}_q1g%;nQe0+Ms=+oteJ72(E8MO4De}gWD zjDE?XtI$W8V->5zd6n~aa^5LB$RS6Saewz|C>}J)(kW&(ba(K!V8~zF&F%Gh0czOO zTv89j9jJd-qMHY7TAP1Ek9YR;SkH%(UBsa2W2C?S{uM)FxLq}(OJQ8`fKmS+0cj3RoLLOvT2Z@*t1S_5{f6c)88ut2f~!9_sBXa3Eqe}6s) z{psX3^$=R4k5SeoD5gX>Ysh1Agm#L}^`>SW@w_FTRcvS#CZg3x-p)~CMTa+si%T?! zlcK)6y6#+nmcs(`Htf0YNFV08>krV2g|R>V?d+L3v#(dNy_mx)vB$_*v~p93Ry2KW zsz_C^sc*Tt*f*l7zpV<9YS9wi(0_xD*RObJcjuXw7$Sgczq{U42D+Mnz{22GZ%J=D znQKbuRS+8XX|THd_{@yn+xI^zW!Q-xN^6impvhWla$W4=A&QlY`W54DD^g6jL?b<` z7KxF8s%3wzI*}4%^#DIRjQd7HZwG6R90m4)BYOk%yg&T;`*X8u?|*hagMapDXoNil zPw4~+!BvWL0}lo%GU(ikKp+)%?XeZPX2Dbc1p=(<7fXmF|B;rm0(_S$rFsYx1 zDIp0>F(>7Ayk9ij5P|K|Tz^r)<|%wM2x$yYjvHh$LTk7WZF2QI^ry>JK;4HzS6Y&} z41)Yp#={@%7=VO)1{w{WE}iwEtsf;`gKr4Kvh3qHA3ONy-%H*lLfcZZwPP5L%twLX z`QeAGLE>TH@dvE{dK4Nw-n-|aPYykUwlNXJN&*cQG-1Q^K&8;KZhz`-p7t4i^^tfS zrzqVCG$-fS)Tak&>aHzIhF4JObJ{HPRLs729iQf4zyZz!Jl@T3FF@ZW-a<$wJauNn z8VnlD2FJTl4@-Vjv~gez%+qB?=qyT-KHvic0iBT<*V;6CQuJ%8RH!6jK9=UCQJRC5 zc&x4p`|uljyl0_5|9^2sH0twcF08uv6qZ7Nx0zbw21Cm%Aue=TPN+F}kO^pZ^#tT5 z+{evIj6|l{7gg#g;yD$?7PScpgmxOhcJxqsXaEf!@56Jmvj6VFY-MoU|zxGm_@JVa~G*trcn5FWi|(#jU4HvC@-Vt}^bQ#MRX&kRWc zkM{!f=gU<{MX-fOj=l@fkowpIv|yH1-mAjIvAB+)`{3wyp{iI}Z@o7ABz0wbFb{V5 zU^u9)~;v}Sc6Mq7@uTo)e5=JRK z@QIT=a!t3749Vl^2<_(?N63t0aMN_7sHC?%XyIeb>!8>-v5wG+9s~wFfKTy)T99aY z4lraJJ%8Sd&_4=U!`P=PHip+eDLPQOAdBKYsft|1BvO%O20fuZT5jwh4e@OAUf1D- zd0jGSaL{r@NS?>+45kC?aKLHIDTVBXtIL;G`s~9^t7@ugn5qWQYL-;ZiZ<9UySS+9 zSf~DTSZZDiHSZ7XnKy$g^1n=8>#zkAK%A;%u=J)TRnri|qk>B2Rz0lt{RTrPg9!5ou|S^9bO`j2zCpaU z0G|}NI5-fnsuM#3Xz(8(LG0xA%Zp!l@$qu$;#o8Hm4RQ&yUpD#gKpq?n<9fGf!oJG zy??$xAqn1WZ3Lz9aD;L|Mry;DDG2Sv9fhV-40neufsMFWNbq+@0gv|z=#x!^Gs2(_ z*YLD`J3#LVq!*PtKqIwvpPGT|6xubPL+0fMgf>an#>F0?ch`4^eO!Y0&>ZX{v}N#k zuYkTzArzWH-(zTqs*Afj0UZN$pv@N)ntxG0&JB1LO0D&MV8JX}p71zVu0*FgU$eA{>29yD4XhVlLwI#NLA+Tt)yV1JL` zg3badr9S~Ylv))k|~Jqlwsf| z&F=1+&TlQNxNW*#!rYB5HI>4%N4a5}0rc$QeD(#E?hC#1tLfVS0G(EPK9<&+rYaNgRPZ%GJHBXMh zoG1Y?XVaAq2}wBgVYjN|oOE@S1g0f~dY>FIll zB2Y0QVb>}C6X*s+ABi?HoD;C3%%KJA)B`^k{BS~xf>P>Hv9?DA$Dh&SQ}>4O5OU= zt`j=6uU=M~zleQ!RHY!aFC(+12NarZzFBS7aFD`uRzhHF+R@w1^+mheuI^k6GM(7> zG<6cK?^bPS-iB}t)cRY{qP%%TD`HqZ%x4pYL+7(F-_a3j9Dl2iT+JxE{RD@I5@R25^M++-hB}#*EO$Wc>%RJ;! zJaklW|FNeaf4RMEOWr?kA@x5AQB0yI;4|{s;53@0$=DQqHOe0pmvvW@cs1J( z!;p>GJT7^P6=R?hG@5TbrC0 zx;!oeUQ4#o)1kwNI2^kv0)I?Xw!pkqH~Y_*s|Sa+%zu#^6pIyuE)um$3H^bY**%A? z&mvuF{_PNSI#YPoQ5jXx*i(-cc+~do)>&Sv9^Y39g|`e>-jaB#!?bUvSbI40u2u;%G3$4fCS32BonOfOS9OWC3>{=9c=8&nUD&aPEbM5|p2o`yw?Te+e|6_gsigdWjcAGLc@l>Ml#I%Xc&j=01!y8ja0R(**?)H}n8s~Ig*5p9lBFh4s7hw2? z|8k+qy&YMW&q?=ORM-Z`Qt)Uf@!k-iHrPpgWX6L-Z}t1jp+CMZhleeL2Acl`1psjKa9;y>9uDib*&ep;&%ve8e|^5%=mMJB zJcP!LH}VPQBiyX}>81|gqa|Uf64vO5dTp61j*UOUIfOgc;?UFN*TqYFKU{xbx!diO zHD^j-^L79Y_n}c+jSlmXfd8EF071+mO@CrxB89dkA9v-zIYf)cp{?Ng_WIqW)HlBq zuzBC5Yl$Fi@y5y&TmQg# zj5hlo(C=RgBA^v?neONn&PrUYxlSM-16L_(^=v-9N#45Kgps^_^j%IicEq)H|+4Ify<$utB-Tq3p zOsS`qqLx7lR+ZKGNweD0mNAE&AAM?x3vT?)BS9^*+Pfm_Wf;1dDU62<7O&4z^qc3| z^uT;3QyzI?SdO`Q0znTAqao#{jO$(m+KzBUUSrpb5FCjpG-0K{7m5;y=V<@w_Hb~P zSADkqf4F(cnaxuS)fi36#D6tv=mxXisEtorT_3I|R!q6a+)Y!09V**g?b$vdE zXdI2lWHsmqeYK%B&vxdCuj^hpuc1XLU$2no9pdh;*t&&@VY^tGsDG#(sRbREzOJB3 zPyM&S-@Tys_u2t{CRumqDnNsJu29 z+^|tQtf-g81Ly(RJSu8pWJ499>Gj2-E9N$G1Gg08zk6XsznVtB{k%if8d*?Y_0Z zUAGK^$Ys6xDng@8!cR8$aC?zGrO+d=c>NxexP4ih6dFVg(0`t*I+DYnkC=HowAiQJ z=s9kXM}k}EiCD8&Lpv&k20kU0vO%7Z?6i1&kXta3@ zTGLw0DCQg-%g&zi?izA_DzSJ)mlU9=@gOqj44|<{%b>0B{J_>(=-)nvwrrwK+}L1( zmL;$rrBZp*W%$T9!m-JgF+8u@IV|k@h2lR3cB$^L)4ylXOkFtW8@-j zEG&tle6uKUh#rq3s0R&P;HUufJTp1;)?4krynpL2X(FI)NuS3m8?A&35(jR$a&(!~ zYS@BKTdWHl)Dzehb&3J3Pp!4aWr5USqvBx&J$c+;_k3OH`t~`sne{;Pk!iX?#I&8G z{(-r@OJH~Z_^_^42?%P?{vh(1sIe7+3Io(mgCE&bq0`IP_dWFk$NWazeBgjH^J{1> z4}U}wSIkj^x%mnPf6ivNx_?-&t2ZtLHGTYqiaOQ}!e?C3mJVf`AH=Db{pelJzfWcF+DweRCw zpdYziL4$Fw+odbzsCA=aZoDgn98GFF3(5jDLzmRLat9#!(nGaxw(_R1MSk|9?r`on$sS*){m7 zhtDiK%ki>%`#d|l4ye~Q?e18Y(@BkqaFS_}rnOGDHt3SqSq`wuxK`{m8r{s-Y&Hpg z^N|J+yre6Bbifj69;b=fN0ACdthGIyjaGz=!%mbPt+Q|TE-c&>*;wlrW`A4cAHpnl zCPhUa!!$vRS)3M%kxz;yH0z@OPC;`U>9E)m>zJ9@zqF!&Sq3*7IB zLH`wtzxbn@dU`qM)NQpFY<~k8)#{2FU-*w~<6Kn{EPCE}66zw#dGhY3 z=KgX#yY;-@YzmnkL`fBO5CdH+3Iew;NHWy)I0hONSPdve5gp3=bD6Zr$R&}7f4Qij m$P%}22#O+e|M&+h-W37z6q#n`Y?c=Q0000eH#agg zHD)=J1p_G}GG#MjF<~t>I59UZG-5YqEn;IfVJ$RfFgY?~VPs`DGB%S?16&O`I5agd zG%z_ZGcY(fleq(K4L3S4F;p=yIy5snH93BxCFEkStP$ojsCNqF9Q$Vvhrgj&k(j% z(0BmlW)u(6mdm&yIk&40GH7b_CtL79>< zk@x^K4g+;d+GJbDXtJEGty3Y5No*ni_H+Wic6wQZ#9UXP00093P)t-sM{rCkD=Hfs z8y_DZ9v>d#S5AN;l78VvaIyo{lGa4EiJwZS&FD^SgHzz45 zEiNoCFE0}k6D}?;9e*7iAR!78VvUG&46lIyE;p7#J8OCMFON5JgEx zMMy>)8ygxL8ZtC7CMYK#ARsX_E+i%-Q&vAtE9Y6B8UA91IK$BO@ae6ci5+4?Eh#A|Gcz+EARj0!D=I1~B`GK^GB6}1Brh;8AR{6x zD=Q)=B_}H?IyyQeC?+vBG%+$UCMqcy8W=@IML0M(EPpXC93UP(K0Z7=JTo^o78MpM zE-VTP3LzyVHa9j(QBOldLq9-3Ff}taH8w6YGBh+a85|o&NJlOl?DD zibA~Jh(umLwY<4DL@h5pC3TrqqRwaR^wy8PTH4*)$<54$tXW{5Ji`D00BdwoPE!ED zH@d(9;lRKF+d06%z`nr12D%mvxFgNoFtqRby135i@%g#I@%fO<#b?&P@aNCs|F}9w z*ng6H_|{cJu>5uTtK{_DS^nMi{-N%o>fze{5a|AD{L{7Ex9Q%^`DC!|%=F}xPVYq^ z>D#ux#2WwrH-1S(K~#9!?3Zt7+~ys}vw*vG>6xoz<2JalTh48~#1xaIbN=Au90!(C z92x>4%OHbM+84e*I^|BvnMgZHD3K7=xPRm{q$NQ+A;gvIUI=zB#+DB|#`Z8Kb`~>| z11EdYHzjby9>H<8?Dt5Q#7^sDgZRZD-xoe?>+bpJtMBjoJhy4nE4|Vyz0xcFzpJ4$ z82sdu&dv3&Z{#YCdk%ga3sDTxkEIrlx++kH5@l2VPsF<9F`d zIo{igUMlMCeQhJOc8Om1Wz7XA)=hd%V^CF0Q@1qLG)>DgHN$XJMKQ9VOfFX}m2%$e z=xCuZGBPwYJUliwK0ZD;2#;ZEYHAuZfi(BSnwUfXL|4JZ@Rq?rc=Oos@PF{ou={gl zq%b;~b27zZE(hy^h;Ci@MMMtC+!2{FXSZgxEc3gCTNBkLYF~iCHH_EP+lYez&)j=5s!RLDdcQnMF zHpNI%65ifl1-d?%rnr8JRcuL;c%J`~U`R40@uZ}p^-3j8)Ktr2tv|vYDBeA3AVo&C z=(y3Ts0uH-;|do7lO2uCfZvd4D^EfaQzWdO;u(g?D|(*eB%y6v-TE71{SHe=h6G!) z1(8jgrcFsKYk#qPZsN{q&~JY=&QJbbJ4>Xlrt(OsFL{QhDS?+urP63FEhM3PxWtQ! zc*1eqoor|&5O~7S1Vdd>=I>JDzd6=>`tF;FrI_Y=Vdgbbq%^)KdAHW|?_HbwKR!DFXRooR1=E3e+22WS`+ z9rdWivVS5;XhoUifQl2H5e-X5D*m27fBw1CuFDhwn-$NKBvhyfZNx$$rQ+G!H#6c} zTYZ7{_OVhZel~i2aplQBV$ozGw=kT@AuF`Gnqon7rB^xLj9yAko#&T*?o3FLCy}kQNEI%TlbS$nceHTmSR55``RNJ=d-+y6) zCUhQQ8T`e^<;Pu1-6^B9f~@XyFx#Q)@931qZ)v2MfFGEm{t@xVHNOG zpK0cjH-nWtdsR<_jUhv8+P&T18ffp1hOVSDq5I|XgXNV+-zIZPKFLYMt^?KL(Qxpv zOksTjYvA|GOTfI$e>0$1k-a{cLw~<-`_>L!9?gcRRnWR+rES}@nt^~22|S~4k+sMk z^9w`hI;~J=)lpe#+6vH+!KOGT|LNi7UqU(_uRQ3_=qW5BF(2%!W_8`cy*iQX7t)6K zhsA#`mY?M10Z~=nX$koK9<*g;oPGgzb9WL!usuG9z5vh^md?=$;VClZB7eK#_#QN( z7S0(N)9lz<3+>Sw@V~DOSpyeii!00DPW+zEm{JIr_z&J}tU8E04%1v86t&Kz*sr?= zlmU~qh<(j2b8Rg^vxb4;nyOXm1B_k+ji@>P=C|Rn^ohnY16hA2^F;}#^&wo>FY*%wLe4-CQ?@HU6 zh9%qs2c$zm%&Z43x$yvKI!PKtLU_*XhU3C2Xxnz%167_L3CWt62B&L%2s^Ov9l`wS z>r1ilm1sDfO+!sHhyKH;8UHq|U2&Ysof3X%Szn4sX(&)>K%sgSuYc0CmLm1Rgg}q? zpV&B-!A|VWezvcSe94=oK%$q-o1#RX$&_u9Cq-Ln)2IkBCRA;pX+mld51~F_?1%Rg z{J3+klQv~fN>8h*s@;1(J^tSBJ?FZ84vF?38fr*_U=&^3hxY7VF;~maOiT>X7#^9O z&*O@VkWcC)!d!tpv40C~cc5h%xy7D5ccJYF+Mv)8H3VWS6$4Mtju7ghp^2koQoU9x zIKPEmywVCCPBv5L`kknKo)^KW{j%w|T7N8AMLaVy5sf!IJd&6S8$nS*J}K}(khB1? z!mw-9RMfIAHA=SlgV4mLF_bACfxz!0)wgm6g(kBMPfX14u76{%;%jNHR>M52%V!t* zovEF&9D&t?lH4dS-^Z0=DmFpJqXE!R;#3@zC&f115Gi!W@w(8O=9B|b?3IVykq4xj z6iQ)8w-;E%mLde$G^P?Gomoa^XOCY`Ut3;MZU`+GBgNE@9qxNV>N^4l_F?ehv12JW zH8nfX9d2YGF@LpaV7MWyM90fx&@>6V+Q$oVdnJOZ0UHDY-F6Tv$TIZY zRAOL+V#6e}vE$y6=^szt&KqmoG*NU9w4)Tuq%Gdw zS|ZQ8O`(Z_kj0oMjVKl*3_V~x(Vb*qAQod13^VxYjY>T4*v40Isau7jtnJ^5<;|;otFcJqa>y+8)Y%o2$OVqDKsWzytK_m@qaHw%p2WUDE z379e-k2428y;iJ;GUu3!Kl`K~^x@&0qzaj086BBEAMa3)3`99d#AZwrY^YMJwyPx^ z22t5TSK;kmXkKmyWH0aC5-D_KAf!{XO0`0(RDWbqM%E`|z0klMA5R`hm#WywYW*D# zJnyK%tE}m}qIB`+6Y)-}JL4r1Go}s=d#l}EYnH@DfQ`uPx_PG14(#EmUK4oIT=nQ< zC)cD~#`MUppa?lfn_;^1#5#%o$(LfbT*G2k)8`lZLXTbzMU|8Nq8zp!9~+PLQpXa^ zn1AdTj_TIy^|p(2j5~7Ph9;6GbqCaX632?Y)H@0RY*RFA^+KUuQw6Ye3QZ=8MbHfM z#WIxirG~`H{T+{b9zbibtH9=wN-(|D@a>r9WJI>qF4Ws4q!>B4H^8QIpO5y3K6e4y0EElfz=59}k9S6ko*Xmn@P9g} z4a8WliP?-U+4@e%a!1jiX{ptIu`UVx_RhFX4cO2fUB~1|w_Z*Qjv`J2bbN<7&dh)z zhHhZ9$jtP2ynXu@<~77AxNKxq+nNUG?Hs^}Oj6Tj2^M0ZaId9Z&zOR&cTgyDN6|cw z)avTfbxGy<-DNd(5lvCKblCoVsee_kv4SXR(@b}oh&eu~ORQ70bPk!gzvGeO)I^-n zC>v?d^gn_IdDw>Fp+d7&{&UMo+qx>sJ)vn)q9qBj)#az_P@3}}cLSuL5?JmUuK(pv zrHz(yjkWDDCf*xNJY}G)UWCF_()aXAZS-h^XStjkNVe~TRrf+Ck|$)i=zj&R;?e^b zrOlj*L`{xp=#EWSAul0CEi6A-5?CaOyZQkQdRzwyESq*pD-W!a<$=e@CzHFV875WC zJE4n3kJm3O^oQPm@M^n4AP?@;Jvz9@v%X@zayob{cL2aiTqccn_KW zpsyATziNI=Luw=}aY~u#P?4-|_bC`+w1yl*D>Y;0sv? zPsS;A1Wq5^4DWGX?y(zICCR&`u_|D7Ya>bxc~&@WZE0!c$&34nKrZiO+99uW2=g6I zlFDK2VUFX{dg=f(7*P+>&++NS5Z%cabE@j(j*jjDdf&OTqUs^++PNT@JRRwSe2^GV z&OLwrJj;b&zkk2A^?$OwiUp3N=bsXJ960M>2b+8|KGrA~8-Z_fcjd;_gL{Eqn0JJ%&?p*#Yo(Y7nt@0p zW@o48Hoy7LvuCefy}oqm`%CYdk2dn)6iP%(<1YDvtd;fU`hUjCN=UDCd3*jeZ}au{ zmp+4mp8fl~x0`cQ2__0k%_PGzwCI+e6*Oxvjt8DM0K1EttNg~Uq&f!54E+>hcy{dV z%UdsBeMaK)l`B_1RO`*Pb~B3APBfcq8}$+tCnelojb6&^ME8!hYWUyFmoJlnUcdR~ zS6g$_v&YC3F@H+U44!p^oF8hiU8c_L?Y~7PWCiRaz-W#-9^`rIi*Nt=j~A(#U*429 z-@I`|OkO}~hWq!L+oo^0c7nVB0=l(QtAsb`3*DvNLEjOrtQ73fmTZu?@ZIJw?B9Jo zQ~lT9o;>=JtRYDC=@Y74#9w)ebK%^cphvHo3YV1wi+?|oJWqwjq@av^(BvG0fBEj+ zhnxznx*J%HDnY*UBa1wk?Sg`_<;l zJLa!>@%}3I-T86Q^dPhVH_Qq+9&+|jm`0wrsBoTR0rc2-1bsHA<@M}sgTJ}8<@>T` z-@>xi@PGZ{|0p&4-zLsGfVVOdtrXQ8D<;8YBcLUOqLEbUMkq+UNP{27kK_;F$L1d2 zJ-+k#UJ@T?KQg<^4Hsi)arQKz7|Sv8G%cD?o91l^C`D?kjzC^0$=0kYA*8MLOW~JI z`#yJe6YWJZU&)eXTX&!P`uVIOhS3F*(PSB%v<$wYD&TuTRD`6lk5j3|f6m-|lv-WUGwjn$24&Dz(UEBJ z#D5aIB3-CAX7`olvcV;l!d@3TSihf^3rQWx&QEsL2K{zB;Ur=gqqND#94K5PE%ui! zY!(ZO9DBO3u=b4&iYi#Dj3S{>wmRDA8VI62?*nA^D92ay#26t>56qR9yJt$ zpvMbKYfnZ}`CI{qL*d(-GC1hI1_$%w_xtjxp;AdfY```c4i7Tf`qMB?!vzXouPr=T zrlMm&9MzN}*Kzc?pK1CX0VPJFYKA{?U`K7xyN}Ac#5sv1ZT21a1%uo7wG`8ue1G|3 zR4EfOH9j^zHuK5dkME9-dz%i~Y<41_AIc4+*n~JYkb9JU_Vn5FXV0HL{jI5(P_CQl zqMa_Xk@vvBK+atWxHS%rWb{)of?E?&!-+37a4?drt zUtDCb|0nbFpFc2(ViAdEkTsFuPW@nSYim=4q)nc3e0yyk56Z-o5XWgW;m~BMbmwkf zNkwTn&1;$r!S2@VOe(?J(v>m)K(0DfF1fQLUpl5kH>sohfXEP;y7Nh)0S8e5x9*BBbkN# ze`qYrs{r5aMrE00LzSUQb$$%hl-0X})|dNN`+K3@WhHMc=Cwmu1_(ji^D`ins#Jo% z(1~Fw5>c{cJYpa_PGminNPlV+TYGoc3Vmdsu1dVEaBx+D>c|?%C#H+$WDc?jidYKd z&XKF*<4yKTy)DMST3_GTSSHt2WwJ%!Io&j6%SSR+vZaJ2^Ms?}usK~+DPgG~j;0+Q zqWF(%^mtI)9@bTXl*<@#7^_-(VxVvOhVrKYT@$&LuU6f}2W~@Hu74~$WrMXc%+0>y z$n&Smnf1pT%X0sFBW$AVO4(ZhFu^dBUaN#PA1pof$=rv!M9M89x*ayBQX%V-=2v*1vw$-G4Ul`ZEduD`we9O)At4MC^E|Lf4o7*ys{Mr`uc7`1YVPWpcex ztYgDADAj8AcrU%WyA`Vfaz+SM5vHm$@cUn1`QUVY=Ms46wX=^Sl7t}8GZEDBPtBO) zZHKr$bvV4@^KTyOE30UIy=NGIKScB<0gf3rM<)e=3a*4gG=IE&;lkR|ljU=#IbAO7b4SiU~k`R%vo&v&-%mng!ZBL*GL z&kbpe#i_QKn7LhkzKYb9OeUjsYdxD2+X^_z&K4t75`-#uTj%+|pMUcjqm~CFAzdb5 zJ4url0J`?=)_J4!6Kj~A`f zh&<2Z*oYp{lM1NH64@rjX7j`IEq6z8q{=Kr)V4t9**DJ~YB_hRrND;;fCg&CAp+9c zkJSwQ>VXa<2%>GNC9K99)Q3mvEw~ zhfuoDk|d3EYgIqN;4P+il%Gwr;T2OeK%<60z#j+%+hm|l$Pvt{NTMXMfJjZHctwuv zLz2LkV=Q+=A@LC~vy{N^5BPocEgVOP1i~hLeVA10D6aryYc+@@^-xH(xsZgoYK4fa zG}X; zb|rAIneTNhNq|EcPE7T5%VcX+%Un3pMHC8Qkuqq`_3B<>Th%!ye~=DufezF$@dwXX z=T0>Wm^~L!3^1!$%^nZrtp-E|oQ!6erX|u4^nX{O{ZI+@@Meq(5)DW1-RX&1nQ1upsC^L5`$LZboeXG z0NtcgPLsghC_lB;XXLOj$enCL2HA=M4^u9m?Fqe-@Od-du^pNU}) zT5A3tx-Jkn19=v^f|!&AK~Hx4Vn@y1o6RT$~Aeu3Bo^gsuztTU0Or zj5t|WW{Y6ZP5#Z}5olKmk?zLL8>89(RD>F+W)APChf1S_u|XhKKuNhoL|n49ls@Z;xkUj*?)1sU^}a+ zA&HaVnUrh^p`_E=GA#(krlJV#zx}!2b7v=L`)Bt=QGDm*{PEYn=lAm5^GjBe+C&

    t!G92!gGBm`13$ueZ!U(w~jxjt=2;70a3ZQrWyc3`)hBhMm zVChQ5-+lBLe0mVO-gz5diGRc=zWWvd!#reoh&ZjivC;G@MUs{<@z3fYCU zt9hbN-Y*Q5=)PF;}!mHI9dO~Vn zSh*wjJD^sFM=R^AdLs_1biO666kZ*)VcvWUr%U)kU5{b(I7{C{XzPifs&60w2Oy%)Wscdo~*PS?npl+vyR-L?V&T=L?0UCHOAe%VW2b zrE&pI6bf)2o)yJd#Gmq6;&I%F*~dnsI0ey?g$uIkgNJY{O+@EsYqQoK1Wgedyz2+b zpwAuw*UvE=D1VJpSqcMN!GzXBgvMynL+VVj7(Y5%Bz-ZjM+}7$2zV_Iyd{twNncKt z=WfReW%;nQw6v7ZuO&k8yCKn&5Gm_O#enPkr5mAH$b+G>aLuN5lr@)TdvpSA#RzcI z%DVD)9X|*mmSyx1&b5$8P#n*(dK}VGEl#@(1_qo3!+*1hbO=WGH zyH0lkG-ZX#N2?>lBlB}Zn3OGJ7{zgBg;`^cXB8 zAtB4mqJJk)T)&rsGLT~7LZqIA1RLBtg|oBOaW9Jkj*%ygI!*U`ism8md0-wGxKW5t zRC;ozHjJBaX~(~`d;uASkJjTO-!5l8u}ocR$x22O5_!Ql0MKh-6fiB*FE%z_h{!mQ z&>m-S{l1lA?T^8T7UvAJb|G3fV+ICrl0A zs#f5tG+dmd8!3jKGfgiR7=Vr?N}D!PA9+ju=3_@n_Xq*nB9|cX zxPPzc^gENWj3<;A8>U?cU$Z1`&Kp8?tH^9@gy8eYWb%nvELKcf6EV(Av9CbGCyHCE z)%nq^Ff{4l>8pk-M5of8-aThp360Igcn1tx!2wDSLXu1JdbX~#CI0>Qsh~S3d1jBt zlgVUW;Rf<}VsbJdJ%n=^F(WZ&5OOh@41c%-Zaca$iY!frhTP5t&=V#tR~gLFSJPJr z1*Ley=cx%JW5NtM%80whZ_VE2Oqib5quo>-6t)(hJrxW_Af6!~wWIZo(}oh$((|1VKBBMK8h*XEyZ~MOM6Cac5p(M#O-Om{D+a z2mSuI5#kH0#-VCp)oS(7N_Em<))QDirQ=8){@UJc3ZYLQA+)xB#*4a)S$nQHbg8Ya zt*fiu*K+iP+NkC1B%+Q)Q0NA+k$>8VTLMSyqs`3|c$(+&EOjNCv+@&MPpgtryy5d86$tl*X@TN!Ev9cd3`3=ABAJE|opsE|l4MWu3MUw=0jo^AMJ($aK?V)Xb_m}@D}sLOfVAQJ^4CKX{n0DNoVU-Q)v3=a?o!`-?hp~} zcTDkGDoak?{jv_d`+S$`wSSgE`FhN3u~_W>piP2yHn58g#VxT?!CJ>{5X;sKIwPU& zK8sPK(X}4ynCW~|-lhJV)!|`-@CO{K28JNi%3JIAfzLC#a^8~1XrXhJhrdGo7jLMV z+FMlT+9Q0@hMBWwA4n}(2;`+Q_9i)3Eamwmz(Prz{BLB5*=G?5fPdcEG1qyZ4*hUw z*rn~E`@CUZLmWA+9Qy1@o#6KNkA0r~;)~qyCUj?}?VW?4>4?v8Run;MCg?_5Z>e1; zj~5Gx)GH^PPI(4KWM+US;{rkGPVVS<+$=+P{Ozmstq1<(*hDT&5}M}yilO)X0^A4h zbxq%s@N!51#AAf%-jh}5SjEOAFMW(^+k`%AgvxZU8=YI?|MkFE|hD}0-SxAx= zvqpv<*@T|yTUaL7Zg?FIOedUE>ZT>1M-Z%`cjWU_e!72Z`P0KqJ9qAG`t84;|Lf(` zr%zu#{br$ddx^9FK?6F{fJPQ>b|xn5f&YP)m{Tb*jt2CB_Y)^%=ucMX!?lHI;iki3 zz;&%>_9=$mwtx4ShA{Q_4vqQ6YcB7-Pdm21{`&Ua7oYuAhW_Bl|fpg z2^oEvH=Ge zaK?3+1fouMBf7qT4x7w=p6n#!$DQfDeeqtPy)9NOuYcvGK#Qebs1$)#XdMs>wNNP_ zir91=O`0Y^5L;dZ-9TbyKJIhQy)BjfcK0N}?JXaEefmGod0x)BY3G}h)6gN8!~c9@ z>Gt_0BeuH!7M9NWS^#vyDT*X2E3bD}RE?AlI={b+YCwOvxT-6_(7BgpW`F54E7j`y zGLT3KCx4RYXt7o{HEW|U!NR(ddQ1#v20H_@fa{oXg8JDUVkC!^y31afRb=Jm6nv0UUk2GI^!O+ zVdzi)72bSv5upDQ4sJd2KJIL{inUsGgd1(%gx_#==2&)B^)*%G7H4BM(lQJ&h{I?! zDhULgdA2CyBLuzo@V75KFJ>xRu!g(aiu&&8>rMoUz_p2@Wj9j8H7?P2WYZz-)P1j4*I*t zhB=pS)?IqFU(-P*C&dYXKAugJ#rj@!l-1dXn$?VjQ`x3@jHCbD(kyvhKXUn*IizIjgd+I zC}1AO#ijfR(4}R~e*gPlyW3vmCnhF-2GA>SUx&l5b3?v=PgmIQQhKXZsx^HPp8Hn{E2}RIZ<6rH^=eDw5J+O`1hwb;uua-(XGQUX>0)L%! zlq59@LebbcT+!X;%a6~=Id?G}-dGO<^=ioXe0JC|!uPMNI|k%tpb6>r8w|tmUC^U_ zrg-NBYJAc;yR$4DblRU6$HpHx?%pY7*&2~7^9w=H2Tn<7sZ=7pHKHbZ+r0Vd%Sg7Em8E_y3>xLOQccbL5~D*U}hsi>y|W9@|LdF6fRGOz@qk?tTi;!2ECi-gP% zPRmxt%87)drYJh&MDL*p^qh0Dq=P09v+R>yf*wMZaN!6^QjBJ4X@Rb5GvsgCY%TInHZHG`?;a)7RJ4kqWJV|Z!jACHfY zF;g_lu(a$Sf;=8-yd05`5|QQ&K$n=h0NOCLTCf>Xtb(Bd`dO#fYm)=86k{R}q2RrT zMx|1kt99@fyAE)0yv=b-7om$dS+jJR{Y(UU#xVMj?4acgD+A~hL4Wc{I>wMBNk|d2 zxUp?(YutjMgNjhWY9M&&f#2oz8YpaKg+`;|9I%GF!si0uN{jB{+xYV+&=j?DLg8#p z>+Bgv@j1=3^FG7agbbiX6#UNoyFl-ejds2;Mu3*K0`!EXb2YaBpuy0=OOuWvuh-2= z!GsE91X{%riy`TS)qjMGK=}{DyKBy!fWa{|K~_34cITl(czb{F8zyZXplO1X$;d)s zF7M-{Pg$6WjPlI_O>~=PeNKx#xSAVOtp_o5*ZoSs>YFlWWUqaR&f; zX(a&Ap|LwR{oZ?W_{xpgwvp8wt=wiais$NaDj2hd;}3@P4dMrxAZSVR@R4L>>HYg= zoQ6lYrevfZ=AkV0c$`4!F92FXNEa3;Nv+AgHDtLL2(AW~mH|2tat=GD{Xff5>=O$O zz~=3s4+o>>4}Yl9Jk?-mWNP-Nn@HckAE2{*6Sm3zDVYRA=j;;rXg+WsG))o=K$F)@ z4uHP@4xs0k1MdRCw{vz!=X8@?Y~({GH4kjYu{9c1e6@fBhd2fW?(F4%kYXN{>0_ec{oc)g7-cNv2<3tewj?Hpgs$#)ogrWkM2m-MZ*1nq( zHhWJVK!1BJ&QZ35W(f&6k8cD+CnZB_!J;j8vf|dR_W->C&?|4&fO>u0?{c~utYTF$ zpKJsTUnX(6g3NCk@bYNUSCj~PV{UfZKB5M9C)S!{>Il)oM?*_&jelmlet_Jd8jBmK38VWODU!of%qyC< zjM_S67@E#Jogf(cBt*Otf&h7luD1bn>k0^CgV_M+wYFKi`>qmALi5ftQ#&d&HC$;J zh^dD)L=0YEW{!y4sFZ8nEfPj@BzO`X%@ zrhj<^Em~Pyd$)GeWp`KWwV-Ik93|ea-nFz3Y!`T=g*=1}a#G{En2}Js)em~p?TA_~ma{(IWX25$F6+5mhPfGep-rleY>lGfcZvPLT< z`sy?PxM#F<3f2X190(8?#oWZ11xYD9|R(`7NGNH9*TDT#}tSARIa+89~cgm>h~; zi)*fH+{Cbyo`8^5BGLU^uL5c4bS)KFz13V_?)G+vzlm#xV|Drz-(! zW6yoUio(?+XZ;?FlabL9fbO7A{(m3PN!aHhXp*_^aZNO~j#^k+PoSsSk(3ho4ODaF zTZ!1bP0_CH%a>fcmfLy|u{T(|uAz#rt!q`cn+P0Zr=Ih7{kOgIiD@Ih;bNsDmHX2qL_8qRR}^MEKOHRrEWRFT3Z67@BMx=V6tfsJIBJP5 zP9u;{^C>!hFb>=yg6-7bOn>$J`=%MP%Lvis`CE~0fkLxY#XlUn_)LX}dt%s=2zEu1 zK2{NcSMdsv9>O5%j62Bm03{C6VU-vTtKhT>nN3M+V>Nv~O>o4f7U%&Vi8&Rl`>af2 zIS^S)v~ipus%mwOf#a78tA2sdO4zxO_{06h6@X@;FJJ^{9>YXuTz`X*7}~_g3IfN; zbd4T_eTs6^$q5&wCeZSnM?k+0dlSo%`E8FxKfj*2)n zjiWXk#}I!;bDl=#KBDndS_7WZLkBcmM&}q-fCdq| zS|iZZ^8~J?X*d{Jo_~Z!hCtf{o16GEew^Nk8Hw>M0rard25SYN-zzl&O*~H!*oJnw>-KDdB~$SL%}7v-%00w4Ldbk5G9?~A z42n(VMrt2w?INz-?Cc#LzwGUXn$O#_I2(z0tcu8q1|1JP?|;Woy};VAxg9-s5(&5_ z&fzjvH~Cncj7_+LKHo@;s7y6R)O&gy0|&KZBZwW;+|M%*mBQUn@_DC|_XGE22~U1h zRkqS%1lnAW?YzRWjK6ncXtEVl=QxFF#7}CeKf6MGAoC$I;Y}P1ijLfX4LL%@CZiw2 zJ)yb5K>{6227l(q+610JR~S3H-Esyh0a0N^Sa;V(qJD4^A>3+r6J}h4un2wN$XZ?? zGICDl2H_^yMC>UtSBNPB)PM91y0PN3uZ#}e8fxQIk>k3@2x>B;N2?}QniKo=DlgRZNl z(AaPK)6?O$UVocp_d8`7Hx*(Wm>V-W$b@uMk3;MPrJkWFqHXL`(+zD{^9|0;Ty2&) z*v2_k<&8O>$y9@$CvdGTqhI`47!G2??YCO7f~E!y2_27PHs>H~xU)Ijn%aO(6B`Fl zA+dw5Zhx;8hip9Q>CWd*Z?Y7+ywn&pdLGXT@z1j__aF6o@SP*Ky@447rI8u@IgL6K znF+E6d=xp@lp3^-$Ebz)t}$LO6i$*S*uVMmDb!hGrYh^S$>i(UdWwM7D}S)d_~wF_Sp_mqZe<>l7kF;NJGR9$ z7Gu!ndICMWy1yRHWV1<50%k!7gGHm+L2}G}pE*flagjc1+!R}QjjbL$hL?e=uiNP)JKDt<)$cP=1NNu{J(qMYjoDxuJQBYHV zPhE`(OWE~LdFapW&S22DG8Lc8Va`Qf(tkn&*TmMSal$?gTa2ecX%Jc-XEz(AIK$ae zczQEHi$*QaT#H7{vBJ5n?QQ9X-IiX>KC*`0GA1-I&tPsOa+!7Hg@uJf?C()ise^KR zSbnnpxzu{a@!hL)Ti@{H?cKfI-R%u%m_ccyj)#NP z1e#_4`Tp+C-nOdVKUj0gV9;1{V1IJl(-WGevo3RHG_;t(M?$S@4b;yjC#lp(9qb-G zSZz@^UhVDdZGp}Ny0+LTbRntppfMCu-|p^gvFyjIPeMUx2GKZ(*=fkAGm$w%;=w&7 z`G7vvxEFQo!?Xr!=gj6~QS@%_{QHH(@u}? zAHlk#t7~Go`9_B2&s7fbb)c`nzIC&17^6cO|e10CD7Z(1^VRm zz%wxLz#Z*84Cc*&chun|0^Wy*XA}qs4X-5rwA46s!Ox){Kx|e!QU{;lz0(}41(y?V z{x$IT)t+##g?y((soDWO z_&lYwi0A7q#-S}|*rvaHjDNT4qEr9)7yO(m%4bw>Y;3&PC@O;Wo)QC}*?w7NoY_=d z+1P&lu8n6a>PxG>{`%s@kE+TF@)xC*A6S{?esO9~KwpF@H?-nifluDzAF-3zATa+Pyjzun1={W=c|(fnSc6_9`ECns?dCvg%daTNan?%Ml5y>d>W00000NkvXXu0mjfy#tJ{ delta 12196 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 m$P%}22#O+e|M&+h-W37z6q#n`Y?c=Q0000 Date: Wed, 7 Aug 2024 22:48:38 +1200 Subject: [PATCH 09/64] Shows extruder's values on filament's Setting Overrides tab. --- src/slic3r/GUI/Field.cpp | 31 ++++++++++++--------- src/slic3r/GUI/Field.hpp | 6 +++++ src/slic3r/GUI/Tab.cpp | 58 ++++++++++++++++++++++++++-------------- src/slic3r/GUI/Tab.hpp | 2 +- 4 files changed, 64 insertions(+), 33 deletions(-) diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index 58c123fb18f..8085a9e5069 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -248,8 +248,6 @@ bool Field::is_matched(const std::string& string, const std::string& pattern) return std::regex_match(string, regex_pattern); } -static wxString na_value() { return _(L("N/A")); } - void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true*/) { switch (m_opt.type) { @@ -287,7 +285,7 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true } double val; - bool is_na_value = m_opt.nullable && str == na_value(); + bool is_na_value = m_opt.nullable && str == m_na_value; const char dec_sep = is_decimal_separator_point() ? '.' : ','; const char dec_sep_alt = dec_sep == '.' ? ',' : '.'; @@ -827,7 +825,6 @@ bool TextCtrl::value_was_changed() void TextCtrl::propagate_value() { - if (!is_defined_input_value(text_ctrl(), m_opt.type)) { // BBS // on_kill_focus() cause a call of OptionsGroup::reload_config(), // Thus, do it only when it's really needed (when undefined value was input) @@ -840,11 +837,10 @@ void TextCtrl::propagate_value() void TextCtrl::set_value(const boost::any& value, bool change_event/* = false*/) { m_disable_change_event = !change_event; if (m_opt.nullable) { - const bool m_is_na_val = boost::any_cast(value) == na_value(); - if (!m_is_na_val) + if (boost::any_cast(value) != _(L("N/A"))) m_last_meaningful_value = value; - text_ctrl()->SetValue(m_is_na_val ? na_value() : - boost::any_cast(value)); // BBS + + text_ctrl()->SetValue(boost::any_cast(value)); // BBS } else text_ctrl()->SetValue(value.empty() ? "" : boost::any_cast(value)); // BBS // BBS: null value @@ -866,9 +862,14 @@ void TextCtrl::set_last_meaningful_value() propagate_value(); } +void TextCtrl::update_na_value(const boost::any& value) +{ + m_na_value = boost::any_cast(value); +} + void TextCtrl::set_na_value() { - text_ctrl()->SetValue(na_value()); // BBS + text_ctrl()->SetValue(m_na_value); // BBS propagate_value(); } @@ -978,10 +979,16 @@ void CheckBox::set_value(const boost::any& value, bool change_event) { m_disable_change_event = !change_event; if (m_opt.nullable) { - m_is_na_val = boost::any_cast(value) == ConfigOptionBoolsNullable::nil_value(); + const bool is_value_unsigned_char = value.type() == typeid(unsigned char); + m_is_na_val = is_value_unsigned_char && + boost::any_cast(value) == ConfigOptionBoolsNullable::nil_value(); if (!m_is_na_val) - m_last_meaningful_value = value; - dynamic_cast<::CheckBox*>(window)->SetValue(m_is_na_val ? false : boost::any_cast(value) != 0); // BBS + m_last_meaningful_value = is_value_unsigned_char ? value : static_cast(boost::any_cast(value)); + + const auto bool_value = is_value_unsigned_char ? + boost::any_cast(value) != 0 : + boost::any_cast(value); + dynamic_cast<::CheckBox*>(window)->SetValue(m_is_na_val ? false : bool_value); // BBS } else if (!value.empty()) // BBS: null value dynamic_cast<::CheckBox*>(window)->SetValue(boost::any_cast(value)); // BBS diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp index ef1b6024b00..be521828d21 100644 --- a/src/slic3r/GUI/Field.hpp +++ b/src/slic3r/GUI/Field.hpp @@ -10,6 +10,7 @@ #include #include #include +#include "I18N.hpp" #include #include @@ -225,6 +226,8 @@ class Field : public UndoValueUIManager { virtual void set_last_meaningful_value() {} virtual void set_na_value() {} + virtual void update_na_value(const boost::any& value) {} + /// Gets a boost::any representing this control. /// subclasses should overload with a specific version virtual boost::any& get_value() = 0; @@ -283,6 +286,7 @@ class Field : public UndoValueUIManager { bool bEnterPressed = false; + wxString m_na_value = _(L("N/A")); friend class OptionsGroup; }; @@ -324,6 +328,8 @@ class TextCtrl : public Field { void set_last_meaningful_value() override; void set_na_value() override; + void update_na_value(const boost::any& value) override; + boost::any& get_value() override; void msw_rescale() override; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 3bcb4eda28e..e9efeba7878 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3097,15 +3097,25 @@ void TabFilament::add_filament_overrides_page() line.near_label_widget = [this, optgroup_wk = ConfigOptionsGroupWkp(optgroup), opt_key, opt_index](wxWindow* parent) { wxCheckBox* check_box = new wxCheckBox(parent, wxID_ANY, ""); - check_box->Bind(wxEVT_CHECKBOX, [optgroup_wk, opt_key, opt_index](wxCommandEvent& evt) { + check_box->Bind( + wxEVT_CHECKBOX, + [this, optgroup_wk, opt_key, opt_index](wxCommandEvent& evt) { const bool is_checked = evt.IsChecked(); if (auto optgroup_sh = optgroup_wk.lock(); optgroup_sh) { if (Field *field = optgroup_sh->get_fieldc(opt_key, opt_index); field != nullptr) { field->toggle(is_checked); - if (is_checked) + + if (is_checked) { + field->update_na_value(_(L("N/A"))); field->set_last_meaningful_value(); - else + } + else { + const std::string printer_opt_key = opt_key.substr(strlen("filament_")); + const auto printer_config = m_preset_bundle->printers.get_edited_preset().config; + const boost::any printer_config_value = optgroup_sh->get_config_value(printer_config, printer_opt_key, opt_index); + field->update_na_value(printer_config_value); field->set_na_value(); + } } } }, check_box->GetId()); @@ -3142,7 +3152,7 @@ void TabFilament::add_filament_overrides_page() append_single_option_line(opt_key, extruder_idx); } -void TabFilament::update_filament_overrides_page() +void TabFilament::update_filament_overrides_page(const DynamicPrintConfig* printers_config) { if (!m_active_page || m_active_page->title() != "Setting Overrides") return; @@ -3193,22 +3203,30 @@ void TabFilament::update_filament_overrides_page() m_overrides_options[opt_key]->SetValue(is_checked); Field* field = optgroup->get_fieldc(opt_key, extruder_idx); - if (field != nullptr) { - if (opt_key == "filament_long_retractions_when_cut") { - int machine_enabled_level = wxGetApp().preset_bundle->printers.get_edited_preset().config.option("enable_long_retraction_when_cut")->value; - bool machine_enabled = machine_enabled_level == LongRectrationLevel::EnableFilament; - toggle_line(opt_key, machine_enabled); - field->toggle(is_checked && machine_enabled); - } - else if (opt_key == "filament_retraction_distances_when_cut") { - int machine_enabled_level = wxGetApp().preset_bundle->printers.get_edited_preset().config.option("enable_long_retraction_when_cut")->value; - bool machine_enabled = machine_enabled_level == LongRectrationLevel::EnableFilament; - bool filament_enabled = m_config->option("filament_long_retractions_when_cut")->values[extruder_idx] == 1; - toggle_line(opt_key, filament_enabled && machine_enabled); - field->toggle(is_checked && filament_enabled && machine_enabled); + if (field == nullptr) continue; + + if (opt_key == "filament_long_retractions_when_cut") { + int machine_enabled_level = printers_config->option( + "enable_long_retraction_when_cut")->value; + bool machine_enabled = machine_enabled_level == LongRectrationLevel::EnableFilament; + toggle_line(opt_key, machine_enabled); + field->toggle(is_checked && machine_enabled); + } else if (opt_key == "filament_retraction_distances_when_cut") { + int machine_enabled_level = printers_config->option( + "enable_long_retraction_when_cut")->value; + bool machine_enabled = machine_enabled_level == LongRectrationLevel::EnableFilament; + bool filament_enabled = m_config->option("filament_long_retractions_when_cut")->values[extruder_idx] == 1; + toggle_line(opt_key, filament_enabled && machine_enabled); + field->toggle(is_checked && filament_enabled && machine_enabled); + } else { + if (!is_checked) { + const std::string printer_opt_key = opt_key.substr(strlen("filament_")); + boost::any printer_config_value = optgroup->get_config_value(*printers_config, printer_opt_key, extruder_idx); + field->update_na_value(printer_config_value); + field->set_value(printer_config_value, false); } - else - field->toggle(is_checked); + + field->toggle(is_checked); } } } @@ -3577,7 +3595,7 @@ void TabFilament::toggle_options() toggle_line("filament_diameter", !is_pellet_printer); } if (m_active_page->title() == L("Setting Overrides")) - update_filament_overrides_page(); + update_filament_overrides_page(&cfg); if (m_active_page->title() == L("Multimaterial")) { // Orca: hide specific settings for BBL printers diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index 0550c6291d8..cab9990bb46 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -554,7 +554,7 @@ class TabFilament : public Tab ogStaticText* m_cooling_description_line {nullptr}; void add_filament_overrides_page(); - void update_filament_overrides_page(); + void update_filament_overrides_page(const DynamicPrintConfig* printers_config); void update_volumetric_flow_preset_hints(); std::map m_overrides_options; From 97eec47be6e71203ce874253b325c4229529cd53 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Tue, 27 Aug 2024 01:14:19 +0800 Subject: [PATCH 10/64] update Snapmaker profiles - add Breakaway Support filament - add preheat params for Snapmaker Dual/IDEX printers - update the check bounds code in start-gcode, which is now off by default --- resources/profiles/Snapmaker.json | 30 +++++++++++- .../Snapmaker Dual ABS @0.2 nozzle.json | 3 -- .../filament/Snapmaker Dual ABS @base.json | 3 -- .../Snapmaker Dual ASA @0.2 nozzle.json | 3 -- .../filament/Snapmaker Dual ASA @base.json | 3 -- .../Snapmaker Dual Breakaway @0.2 nozzle.json | 22 +++++++++ .../Snapmaker Dual Breakaway @base.json | 35 +++++++++++++ .../filament/Snapmaker Dual Breakaway.json | 37 ++++++++++++++ .../filament/Snapmaker Dual PA-CF @base.json | 3 -- .../filament/Snapmaker Dual PET @base.json | 3 -- .../filament/Snapmaker Dual PETG @base.json | 3 -- .../Snapmaker Dual PETG-CF @base.json | 6 +-- .../filament/Snapmaker Dual PLA @base.json | 3 -- .../Snapmaker Dual PLA Eco @base.json | 3 -- .../Snapmaker Dual PLA Matte @base.json | 3 -- .../Snapmaker Dual PLA Metal @base.json | 3 -- .../Snapmaker Dual PLA Silk @base.json | 3 -- .../filament/Snapmaker Dual PLA-CF @base.json | 3 -- .../filament/Snapmaker Dual PVA @base.json | 3 -- .../filament/Snapmaker Dual TPE.json | 3 -- .../filament/Snapmaker Dual TPU @base.json | 9 ++-- .../Snapmaker J1 ABS @0.2 nozzle.json | 3 -- .../filament/Snapmaker J1 ABS @base.json | 3 -- .../Snapmaker J1 Breakaway @0.2 nozzle.json | 14 ++++++ .../Snapmaker J1 Breakaway @base.json | 8 +++ .../filament/Snapmaker J1 Breakaway.json | 13 +++++ .../filament/Snapmaker J1 PA-CF @base.json | 3 -- .../filament/Snapmaker J1 PET @base.json | 3 -- .../filament/Snapmaker J1 PETG @base.json | 3 -- .../filament/Snapmaker J1 PETG-CF @base.json | 6 +-- .../filament/Snapmaker J1 PLA @base.json | 3 -- .../filament/Snapmaker J1 PLA Eco @base.json | 3 -- .../Snapmaker J1 PLA Matte @base.json | 3 -- .../Snapmaker J1 PLA Metal @base.json | 3 -- .../filament/Snapmaker J1 PLA Silk @base.json | 3 -- .../filament/Snapmaker J1 PLA-CF @base.json | 3 -- .../filament/Snapmaker J1 PVA @base.json | 3 -- .../Snapmaker/filament/Snapmaker J1 TPE.json | 3 -- .../filament/Snapmaker J1 TPU @base.json | 7 ++- .../filament/Snapmaker PETG-CF @base.json | 3 ++ .../Snapmaker/filament/Snapmaker TPE.json | 9 ++-- .../filament/fdm_filament_breakaway.json | 49 +++++++++++++++++++ .../Snapmaker/filament/fdm_filament_petg.json | 3 ++ .../Snapmaker/filament/fdm_filament_pla.json | 6 +++ .../Snapmaker/filament/fdm_filament_pva.json | 8 +-- .../Snapmaker/filament/fdm_filament_tpu.json | 9 ++-- .../profiles/Snapmaker/machine/fdm_a250.json | 2 +- .../Snapmaker/machine/fdm_a250_dual.json | 4 +- .../profiles/Snapmaker/machine/fdm_a350.json | 2 +- .../Snapmaker/machine/fdm_a350_dual.json | 4 +- .../profiles/Snapmaker/machine/fdm_a400.json | 4 +- .../profiles/Snapmaker/machine/fdm_idex.json | 4 +- .../Snapmaker/machine/fdm_linear2_dual.json | 4 ++ .../Snapmaker/process/fdm_process_a400.json | 2 +- .../Snapmaker/process/fdm_process_common.json | 10 +++- .../Snapmaker/process/fdm_process_idex.json | 3 +- 56 files changed, 274 insertions(+), 123 deletions(-) create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @0.2 nozzle.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json create mode 100644 resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway.json create mode 100644 resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index e795fc8cb19..93b15214326 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.01.00.01", + "version": "02.01.02.00", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ @@ -400,6 +400,10 @@ "name": "fdm_filament_pva", "sub_path": "filament/fdm_filament_pva.json" }, + { + "name": "fdm_filament_breakaway", + "sub_path": "filament/fdm_filament_breakaway.json" + }, { "name": "fdm_filament_tpu", "sub_path": "filament/fdm_filament_tpu.json" @@ -724,6 +728,18 @@ "name": "Snapmaker J1 PVA @0.2 nozzle", "sub_path": "filament/Snapmaker J1 PVA @0.2 nozzle.json" }, + { + "name": "Snapmaker J1 Breakaway @base", + "sub_path": "filament/Snapmaker J1 Breakaway @base.json" + }, + { + "name": "Snapmaker J1 Breakaway", + "sub_path": "filament/Snapmaker J1 Breakaway.json" + }, + { + "name": "Snapmaker J1 Breakaway @0.2 nozzle", + "sub_path": "filament/Snapmaker J1 Breakaway @0.2 nozzle.json" + }, { "name": "Snapmaker J1 TPU @base", "sub_path": "filament/Snapmaker J1 TPU @base.json" @@ -920,6 +936,18 @@ "name": "Snapmaker Dual PVA @0.2 nozzle", "sub_path": "filament/Snapmaker Dual PVA @0.2 nozzle.json" }, + { + "name": "Snapmaker Dual Breakaway @base", + "sub_path": "filament/Snapmaker Dual Breakaway @base.json" + }, + { + "name": "Snapmaker Dual Breakaway", + "sub_path": "filament/Snapmaker Dual Breakaway.json" + }, + { + "name": "Snapmaker Dual Breakaway @0.2 nozzle", + "sub_path": "filament/Snapmaker Dual Breakaway @0.2 nozzle.json" + }, { "name": "Snapmaker Dual TPU @base", "sub_path": "filament/Snapmaker Dual TPU @base.json" diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json index 6db75b2afc5..1bf8f4af610 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @0.2 nozzle.json @@ -16,9 +16,6 @@ "Snapmaker A350 Dual QSKit (0.2 nozzle)", "Snapmaker Artisan (0.2 nozzle)" ], - "filament_end_gcode": [ - "" - ], "hot_plate_temp": [ "90" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json index f4cb4f76cab..5f102698d1e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ABS @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual ABS @base", "filament_id": "168223792", "inherits": "fdm_filament_abs", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "hot_plate_temp": [ "110" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json index b2b5588eb2f..ddfa0696f95 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @0.2 nozzle.json @@ -16,9 +16,6 @@ "Snapmaker A350 Dual QSKit (0.2 nozzle)", "Snapmaker Artisan (0.2 nozzle)" ], - "filament_end_gcode": [ - "" - ], "hot_plate_temp": [ "90" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json index 1da233088ab..4b82c16926c 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual ASA @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual ASA @base", "filament_id": "1247172706", "inherits": "fdm_filament_asa", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "hot_plate_temp": [ "110" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @0.2 nozzle.json new file mode 100644 index 00000000000..15d4ec43ec9 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @0.2 nozzle.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual Breakaway @0.2 nozzle", + "setting_id": "98433967", + "inherits": "Snapmaker Dual Breakaway @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.2 nozzle)", + "Snapmaker A250 Dual BKit (0.2 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A250 Dual QSKit (0.2 nozzle)", + "Snapmaker A350 Dual (0.2 nozzle)", + "Snapmaker A350 Dual BKit (0.2 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.2 nozzle)", + "Snapmaker A350 Dual QSKit (0.2 nozzle)", + "Snapmaker Artisan (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "1.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json new file mode 100644 index 00000000000..d2b92c92617 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway @base.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker Dual Breakaway @base", + "filament_id": "1207881278", + "inherits": "fdm_filament_breakaway", + "filament_loading_speed_start": [ + "35" + ], + "filament_loading_speed": [ + "35" + ], + "filament_unloading_speed_start": [ + "35" + ], + "filament_unloading_speed": [ + "35" + ], + "filament_load_time": [ + "2" + ], + "filament_unload_time": [ + "2" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_cooling_initial_speed": [ + "35" + ], + "filament_cooling_final_speed": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway.json new file mode 100644 index 00000000000..daf06114e53 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual Breakaway.json @@ -0,0 +1,37 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker Dual Breakaway", + "setting_id": "1762361484", + "inherits": "Snapmaker Dual Breakaway @base", + "compatible_printers": [ + "Snapmaker A250 Dual (0.4 nozzle)", + "Snapmaker A250 Dual (0.6 nozzle)", + "Snapmaker A250 Dual (0.8 nozzle)", + "Snapmaker A250 Dual BKit (0.4 nozzle)", + "Snapmaker A250 Dual BKit (0.6 nozzle)", + "Snapmaker A250 Dual BKit (0.8 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A250 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A250 Dual QSKit (0.4 nozzle)", + "Snapmaker A250 Dual QSKit (0.6 nozzle)", + "Snapmaker A250 Dual QSKit (0.8 nozzle)", + "Snapmaker A350 Dual (0.4 nozzle)", + "Snapmaker A350 Dual (0.6 nozzle)", + "Snapmaker A350 Dual (0.8 nozzle)", + "Snapmaker A350 Dual BKit (0.4 nozzle)", + "Snapmaker A350 Dual BKit (0.6 nozzle)", + "Snapmaker A350 Dual BKit (0.8 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.4 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.6 nozzle)", + "Snapmaker A350 Dual QS+B Kit (0.8 nozzle)", + "Snapmaker A350 Dual QSKit (0.4 nozzle)", + "Snapmaker A350 Dual QSKit (0.6 nozzle)", + "Snapmaker A350 Dual QSKit (0.8 nozzle)", + "Snapmaker Artisan (0.4 nozzle)", + "Snapmaker Artisan (0.6 nozzle)", + "Snapmaker Artisan (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json index 514b9009a5c..a3583fcd81d 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PA-CF @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PA-CF @base", "filament_id": "3493177425", "inherits": "fdm_filament_pa", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "hot_plate_temp": [ "100" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json index 67bca9c4e87..bf642524275 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PET @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PET @base", "filament_id": "2128577941", "inherits": "fdm_filament_pet", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "overhang_fan_speed": [ "40" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json index 6dfe8db49b6..6920156a95f 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PETG @base", "filament_id": "2209001062", "inherits": "fdm_filament_petg", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "overhang_fan_speed": [ "25" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json index c1603ece8a8..86a223a7149 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PETG-CF @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PETG-CF @base", "filament_id": "1042511226", "inherits": "fdm_filament_petg", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "required_nozzle_HRC": [ "40" ], @@ -83,6 +80,9 @@ "enable_pressure_advance": [ "0" ], + "pressure_advance": [ + "0.04" + ], "filament_type": [ "PETG-CF" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json index cb9e12eb4a3..99967358610 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PLA @base", "filament_id": "1417031127", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_retraction_length": [ "nil" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json index 0604c192119..77d46c7bf5a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Eco @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PLA Eco @base", "filament_id": "200803790", "inherits": "fdm_filament_pla_eco", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_density": [ "1.26" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json index 455345c14e5..5b99cb36f32 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Matte @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PLA Matte @base", "filament_id": "3503790988", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_density": [ "1.32" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json index f5bbb7250d6..3ef20715869 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Metal @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PLA Metal @base", "filament_id": "2029994346", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_cost": [ "90" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json index 9e54ccb9cf2..c2ddf06aa3e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA Silk @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PLA Silk @base", "filament_id": "1181363872", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "hot_plate_temp_initial_layer": [ "65" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json index c5568ad7977..644105f3df9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PLA-CF @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PLA-CF @base", "filament_id": "1702147325", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "required_nozzle_HRC": [ "40" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json index 6083795b147..e5abdc7d823 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual PVA @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual PVA @base", "filament_id": "3104636980", "inherits": "fdm_filament_pva", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_loading_speed_start": [ "35" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json index b93954f9b2e..dc50110b2ed 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPE.json @@ -37,9 +37,6 @@ "hot_plate_temp": [ "45" ], - "hot_plate_temp_initial_layer": [ - "45" - ], "overhang_fan_speed": [ "65" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json index f343d1fb250..199797509ef 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker Dual TPU @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker Dual TPU @base", "filament_id": "2971656290", "inherits": "fdm_filament_tpu", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_loading_speed_start": [ "35" ], @@ -34,5 +31,11 @@ ], "filament_cooling_final_speed": [ "60" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json index ca0d592a7c0..41f0ae99e2e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @0.2 nozzle.json @@ -8,9 +8,6 @@ "compatible_printers": [ "Snapmaker J1 (0.2 nozzle)" ], - "filament_end_gcode": [ - "" - ], "hot_plate_temp": [ "90" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json index 2674a15d111..0de3893a527 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 ABS @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 ABS @base", "filament_id": "1223824394", "inherits": "fdm_filament_abs", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "hot_plate_temp": [ "110" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @0.2 nozzle.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @0.2 nozzle.json new file mode 100644 index 00000000000..4cb11cd1e36 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker J1 Breakaway @0.2 nozzle", + "setting_id": "2613265860", + "inherits": "Snapmaker J1 Breakaway @base", + "compatible_printers": [ + "Snapmaker J1 (0.2 nozzle)" + ], + "filament_max_volumetric_speed": [ + "1.4" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json new file mode 100644 index 00000000000..7d1d244cc31 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway @base.json @@ -0,0 +1,8 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "Snapmaker J1 Breakaway @base", + "filament_id": "3492897526", + "inherits": "fdm_filament_breakaway" +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway.json new file mode 100644 index 00000000000..bb0936c48fb --- /dev/null +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 Breakaway.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "true", + "name": "Snapmaker J1 Breakaway", + "setting_id": "738160822", + "inherits": "Snapmaker J1 Breakaway @base", + "compatible_printers": [ + "Snapmaker J1 (0.4 nozzle)", + "Snapmaker J1 (0.6 nozzle)", + "Snapmaker J1 (0.8 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json index 1514c32a42c..b7bda1fadc6 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PA-CF @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PA-CF @base", "filament_id": "1210173120", "inherits": "fdm_filament_pa", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "overhang_fan_speed": [ "55" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json index fdd3a613bf4..a65db99924b 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PET @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PET @base", "filament_id": "1009481135", "inherits": "fdm_filament_pet", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "overhang_fan_speed": [ "40" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json index ad69c9f1874..add2de2157f 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PETG @base", "filament_id": "1172603684", "inherits": "fdm_filament_petg", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "overhang_fan_speed": [ "35" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json index 7a8f9f949ea..b979f6bdea9 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PETG-CF @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PETG-CF @base", "filament_id": "4235401834", "inherits": "fdm_filament_petg", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "required_nozzle_HRC": [ "40" ], @@ -56,6 +53,9 @@ "enable_pressure_advance": [ "0" ], + "pressure_advance": [ + "0.04" + ], "filament_type": [ "PETG-CF" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json index e95ea7a1125..abd1c423891 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PLA @base", "filament_id": "377675245", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_retraction_length": [ "nil" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json index 4e2f8954b6f..f5f24aa8c0e 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Eco @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PLA Eco @base", "filament_id": "3383257822", "inherits": "fdm_filament_pla_eco", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_density": [ "1.26" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json index 1f9759f5620..fdbd3790705 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Matte @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PLA Matte @base", "filament_id": "1192769348", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_density": [ "1.32" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json index ceac6636484..3d75258f561 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Metal @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PLA Metal @base", "filament_id": "4012961186", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "filament_cost": [ "90" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json index 780b647fca0..e9fc62b8fc3 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA Silk @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PLA Silk @base", "filament_id": "1528786603", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "hot_plate_temp_initial_layer": [ "65" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json index 5b5ffb42be3..aed0f937c68 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PLA-CF @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PLA-CF @base", "filament_id": "3806593857", "inherits": "fdm_filament_pla", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "required_nozzle_HRC": [ "40" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json index e74dfa665ff..e7e03c48e1a 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 PVA @base.json @@ -5,9 +5,6 @@ "name": "Snapmaker J1 PVA @base", "filament_id": "4227461134", "inherits": "fdm_filament_pva", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" - ], "slow_down_layer_time": [ "8" ] diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json index c2ae2b9c6a4..e1768a743bd 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPE.json @@ -13,9 +13,6 @@ "hot_plate_temp": [ "45" ], - "hot_plate_temp_initial_layer": [ - "45" - ], "overhang_fan_speed": [ "65" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json index ae11ea5b292..a811ac33411 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker J1 TPU @base.json @@ -5,7 +5,10 @@ "name": "Snapmaker J1 TPU @base", "filament_id": "4092268632", "inherits": "fdm_filament_tpu", - "filament_end_gcode": [ - "M104 S{temperature_vitrification[current_extruder]} ;standby T{current_extruder}" + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json index 06600fd9e89..6b63709c017 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker PETG-CF @base.json @@ -53,6 +53,9 @@ "enable_pressure_advance": [ "0" ], + "pressure_advance": [ + "0.04" + ], "filament_type": [ "PETG-CF" ], diff --git a/resources/profiles/Snapmaker/filament/Snapmaker TPE.json b/resources/profiles/Snapmaker/filament/Snapmaker TPE.json index ac388de2231..fa38a7a6247 100644 --- a/resources/profiles/Snapmaker/filament/Snapmaker TPE.json +++ b/resources/profiles/Snapmaker/filament/Snapmaker TPE.json @@ -34,9 +34,6 @@ "hot_plate_temp": [ "45" ], - "hot_plate_temp_initial_layer": [ - "45" - ], "overhang_fan_speed": [ "100" ], @@ -46,6 +43,12 @@ "filament_max_volumetric_speed": [ "7.2" ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "240" + ], "fan_max_speed": [ "100" ], diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json b/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json new file mode 100644 index 00000000000..6441a7aa671 --- /dev/null +++ b/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json @@ -0,0 +1,49 @@ +{ + "type": "filament", + "from": "system", + "instantiation": "false", + "name": "fdm_filament_breakaway", + "inherits": "fdm_filament_common", + "hot_plate_temp": [ + "65" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_cost": [ + "100" + ], + "filament_density": [ + "1.32" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_retraction_length": [ + "1.8" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "154" + ], + "default_filament_colour": [ + "#ffffff" + ], + "filament_type": [ + "Breakaway Support" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "200" + ] +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_petg.json b/resources/profiles/Snapmaker/filament/fdm_filament_petg.json index 407d8d3258e..81bbe9eef81 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_petg.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_petg.json @@ -61,6 +61,9 @@ "enable_pressure_advance": [ "1" ], + "pressure_advance": [ + "0.03" + ], "default_filament_colour": [ "#DF6734" ], diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_pla.json b/resources/profiles/Snapmaker/filament/fdm_filament_pla.json index 7a6824530e1..f8c982cc3b4 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_pla.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_pla.json @@ -31,6 +31,9 @@ "filament_retraction_length": [ "1.2" ], + "filament_retraction_speed": [ + "60" + ], "nozzle_temperature_initial_layer": [ "220" ], @@ -49,6 +52,9 @@ "enable_pressure_advance": [ "1" ], + "pressure_advance": [ + "0.02" + ], "default_filament_colour": [ "#F8C827" ], diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_pva.json b/resources/profiles/Snapmaker/filament/fdm_filament_pva.json index 9f34b6ed576..d4c778d1c1c 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_pva.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_pva.json @@ -7,12 +7,6 @@ "filament_is_support": [ "1" ], - "hot_plate_temp": [ - "50" - ], - "hot_plate_temp_initial_layer": [ - "50" - ], "overhang_fan_threshold": [ "50%" ], @@ -32,7 +26,7 @@ "15" ], "filament_max_volumetric_speed": [ - "2.4" + "6" ], "filament_retraction_length": [ "2" diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json b/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json index 86075bf3801..689c2ab0dd1 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_tpu.json @@ -8,7 +8,7 @@ "40" ], "hot_plate_temp_initial_layer": [ - "40" + "45" ], "overhang_fan_speed": [ "70" @@ -53,10 +53,10 @@ "25" ], "nozzle_temperature_initial_layer": [ - "240" + "230" ], "nozzle_temperature": [ - "240" + "225" ], "temperature_vitrification": [ "138" @@ -67,6 +67,9 @@ "fan_min_speed": [ "70" ], + "pressure_advance": [ + "0.01" + ], "default_filament_colour": [ "#302730" ], diff --git a/resources/profiles/Snapmaker/machine/fdm_a250.json b/resources/profiles/Snapmaker/machine/fdm_a250.json index 7b3915a8801..8c1fb277fad 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250.json @@ -14,7 +14,7 @@ "230x250", "0x250" ], - "machine_start_gcode": "; Model: Snapmaker A250\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z153 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A250\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z153 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-5 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_dual.json b/resources/profiles/Snapmaker/machine/fdm_a250_dual.json index 7425a37bf18..4515a509f7e 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250_dual.json @@ -20,8 +20,8 @@ "230x250", "0x250" ], - "machine_start_gcode": "; Model: Snapmaker A250 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z126 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A250 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z126 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", + "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350.json b/resources/profiles/Snapmaker/machine/fdm_a350.json index 1ae94e4af74..f253dc2575b 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350.json @@ -14,7 +14,7 @@ "320x350", "0x350" ], - "machine_start_gcode": "; Model: Snapmaker A350\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z216 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A350\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z216 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-5 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_dual.json b/resources/profiles/Snapmaker/machine/fdm_a350_dual.json index a2e3a405890..e2eb4282919 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350_dual.json @@ -20,8 +20,8 @@ "320x350", "0x350" ], - "machine_start_gcode": "; Model: Snapmaker A350 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z190 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A350 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z190 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", + "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a400.json b/resources/profiles/Snapmaker/machine/fdm_a400.json index 4bfd754b692..f68fd4c72f8 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a400.json +++ b/resources/profiles/Snapmaker/machine/fdm_a400.json @@ -52,8 +52,8 @@ "400x400", "0x400" ], - "machine_start_gcode": "; Model: Snapmaker Artisan ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z266 F960.0\nG0 Y200.0 F6840.0\nG0 X200.0\n\n{if first_layer_print_min[0] >= 70 && first_layer_print_max[0] <= 330 && first_layer_print_min[1] >= 70 && first_layer_print_max[1] <= 330}\nM190 P0 R{first_layer_bed_temperature[initial_extruder]} ;only inner part of the bed\n{else}\nM190 R{first_layer_bed_temperature[initial_extruder]}\n{endif}\n\nG28\n{if 1==1}\n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F6840.0\n G0 X400\n G0 Y400\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker Artisan ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z266 F960.0\nG0 Y200.0 F6840.0\nG0 X200.0\n\n{if first_layer_print_min[0] >= 70 && first_layer_print_max[0] <= 330 && first_layer_print_min[1] >= 70 && first_layer_print_max[1] <= 330}\nM190 P0 R{first_layer_bed_temperature[initial_extruder]} ;only inner part of the bed\n{else}\nM190 R{first_layer_bed_temperature[initial_extruder]}\n{endif}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F6840.0\n G0 X400\n G0 Y400\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230923\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", + "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_idex.json b/resources/profiles/Snapmaker/machine/fdm_idex.json index 28176df2d5d..1c09ea45b5a 100644 --- a/resources/profiles/Snapmaker/machine/fdm_idex.json +++ b/resources/profiles/Snapmaker/machine/fdm_idex.json @@ -100,8 +100,8 @@ "Snapmaker J1 PLA", "Snapmaker J1 PETG" ], - "machine_start_gcode": "; Model: Snapmaker J1 ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240428\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\n{if plate_name =~/.*IDEXDupl.*/ || plate_name =~/.*IDEXCopy.*/ }\n M605 S2 X162 R0 ;IDEX Duplication\n{elsif plate_name =~/.*IDEXMirr.*/}\n M605 S3 ;IDEX Mirror\n{elsif plate_name =~/.*IDEXBack.*/}\n M605 S4 ;IDEX Backup\n{endif}\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\n\nG0 Z100.0\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\n G0 X{if 0 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\n G0 X{if 1 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\n{if 1==1}; LED\n M355 S1 P64\n G4 P100\n M355 S1 P128\n G4 P100\n M355 S1 P64\n G4 P200\n M355 S1 P255\n G4 P100\n{endif}\nG28 X Y\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 0 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 1 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( initial_extruder % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker J1 ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\n{if plate_name =~/.*IDEXDupl.*/ || plate_name =~/.*IDEXCopy.*/ }\n M605 S2 X162 R0 ;IDEX Duplication\n{elsif plate_name =~/.*IDEXMirr.*/}\n M605 S3 ;IDEX Mirror\n{elsif plate_name =~/.*IDEXBack.*/}\n M605 S4 ;IDEX Backup\n{endif}\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\n\nG0 Z100.0\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\n G0 X{if 0 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\n G0 X{if 1 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\n{if 1==1}; LED\n M355 S1 P64\n G4 P100\n M355 S1 P128\n G4 P100\n M355 S1 P64\n G4 P200\n M355 S1 P255\n G4 P100\n{endif}\nG28 X Y\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 0 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 1 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( initial_extruder % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", - "change_filament_gcode": ";***** Update: 20230730\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num] [toolchange_count]/[total_toolchanges])\n; layer [layer_num] at [layer_z]mm\nT[next_extruder]\n\nM107 P[current_extruder] ;fan off T[current_extruder]\nM104 T[current_extruder] S{temperature_vitrification[current_extruder]} ;standby T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\nM140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM2000 S200 V[travel_speed] A[travel_acceleration] ;quick switch extruders, S:200 mode/V:speed/A:acceleration\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n{endif}", + "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num] [toolchange_count]/[total_toolchanges])\n; layer [layer_num] at [layer_z]mm\nT[next_extruder]\n\n M107 P[current_extruder] ;fan off T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\nM140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM2000 S200 V[travel_speed] A[travel_acceleration] ;quick switch extruders, S:200 mode/V:speed/A:acceleration\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json b/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json index fcd3e851540..7595508dc5f 100644 --- a/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_linear2_dual.json @@ -21,5 +21,9 @@ "default_filament_profile": [ "Snapmaker PLA", "Snapmaker PETG" + ], + "extruder_offset": [ + "0x0", + "0x0" ] } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/process/fdm_process_a400.json b/resources/profiles/Snapmaker/process/fdm_process_a400.json index 90c851f1163..8989333a913 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_a400.json +++ b/resources/profiles/Snapmaker/process/fdm_process_a400.json @@ -8,7 +8,7 @@ "initial_layer_print_height": "0.2", "enable_arc_fitting": "1", "initial_layer_infill_speed": "75", - "outer_wall_speed": "145", + "outer_wall_speed": "100", "inner_wall_speed": "160", "sparse_infill_speed": "160", "internal_solid_infill_speed": "160", diff --git a/resources/profiles/Snapmaker/process/fdm_process_common.json b/resources/profiles/Snapmaker/process/fdm_process_common.json index f35f39ffb1d..c09a7c84458 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_common.json @@ -49,6 +49,7 @@ "reduce_crossing_wall": "1", "max_travel_detour_distance": "0", "wipe_tower_no_sparse_layers": "0", + "wipe_tower_max_purge_speed": "55", "draft_shield": "disabled", "independent_support_layer_height": "1", "interface_shells": "0", @@ -154,7 +155,13 @@ "prime_tower_width": "25", "prime_volume": "7.3", "prime_tower_brim_width": "5", - "wipe_tower_cone_angle": "40", + "wipe_tower_cone_angle": "25", + "wipe_tower_extra_spacing": "150%", + "wipe_tower_rotation_angle": "90", + "ooze_prevention": "1", + "standby_temperature_delta": "-70", + "preheat_time": "80", + "preheat_steps": "1", "flush_into_infill": "0", "flush_into_support": "1", "flush_into_objects": "0", @@ -172,7 +179,6 @@ "post_process": "", "enforce_support_layers": "0", "exclude_object": "0", - "standby_temperature_delta": "-45", "timelapse_type": "0", "gap_fill_enabled": "0", "single_extruder_multi_material_priming": "0" diff --git a/resources/profiles/Snapmaker/process/fdm_process_idex.json b/resources/profiles/Snapmaker/process/fdm_process_idex.json index 7682a1e12db..26ceab17697 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_idex.json +++ b/resources/profiles/Snapmaker/process/fdm_process_idex.json @@ -8,7 +8,7 @@ "initial_layer_print_height": "0.2", "enable_arc_fitting": "1", "initial_layer_infill_speed": "75", - "outer_wall_speed": "145", + "outer_wall_speed": "120", "inner_wall_speed": "250", "sparse_infill_speed": "250", "internal_solid_infill_speed": "250", @@ -36,6 +36,7 @@ "support_bottom_z_distance": "0", "support_interface_top_layers": "3", "support_interface_pattern": "rectilinear", + "preheat_time": "90", "filename_format": "{input_filename_base}_{layer_height}mm_{print_time}_J1.gcode", "small_perimeter_threshold": "0", "support_material_synchronize_layers": "1" From eeae83f445a185a4ef996b0680da2c613babacea Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:11:04 -0400 Subject: [PATCH 11/64] Initial add of V-Core 4 profiles from RatRig --- resources/profiles/Ratrig.json | 156 ++++++---- .../Ratrig/filament/RatRig Generic ABS.json | 132 ++++---- .../Ratrig/filament/RatRig Generic ASA.json | 120 ++++---- .../Ratrig/filament/RatRig Generic PA-CF.json | 120 ++++---- .../Ratrig/filament/RatRig Generic PA.json | 114 +++---- .../Ratrig/filament/RatRig Generic PC.json | 108 +++---- .../Ratrig/filament/RatRig Generic PETG.json | 156 +++++----- .../filament/RatRig Generic PLA-CF.json | 108 +++---- .../Ratrig/filament/RatRig Generic PLA.json | 102 +++---- .../Ratrig/filament/RatRig Generic PVA.json | 96 +++--- .../Ratrig/filament/RatRig Generic TPU.json | 90 +++--- .../Ratrig/filament/RatRig PunkFil ABS.json | 93 ++++++ .../filament/RatRig PunkFil PETG CF.json | 93 ++++++ .../Ratrig/filament/RatRig PunkFil PETG.json | 93 ++++++ .../Ratrig/filament/fdm_filament_abs.json | 176 +++++------ .../Ratrig/filament/fdm_filament_asa.json | 176 +++++------ .../Ratrig/filament/fdm_filament_common.json | 282 +++++++++--------- .../Ratrig/filament/fdm_filament_pa.json | 170 +++++------ .../Ratrig/filament/fdm_filament_pc.json | 176 +++++------ .../Ratrig/filament/fdm_filament_pet.json | 164 +++++----- .../Ratrig/filament/fdm_filament_pla.json | 188 ++++++------ .../Ratrig/filament/fdm_filament_pva.json | 200 ++++++------- .../Ratrig/filament/fdm_filament_tpu.json | 176 +++++------ .../RatRig V-Core 4 300 0.4 nozzle.json | 52 ---- .../RatRig V-Core 4 300 0.5 nozzle.json | 52 ---- .../RatRig V-Core 4 300 0.6 nozzle.json | 52 ---- .../Ratrig/machine/RatRig V-Core 4 300.json | 12 - .../RatRig V-Core 4 400 0.4 nozzle.json | 52 ---- .../RatRig V-Core 4 400 0.5 nozzle.json | 52 ---- .../RatRig V-Core 4 400 0.6 nozzle.json | 53 ---- .../Ratrig/machine/RatRig V-Core 4 400.json | 12 - .../RatRig V-Core 4 500 0.4 nozzle.json | 52 ---- .../RatRig V-Core 4 500 0.5 nozzle.json | 52 ---- .../RatRig V-Core 4 500 0.6 nozzle.json | 52 ---- .../Ratrig/machine/RatRig V-Core 4 500.json | 12 - ...RatRig V-Core 4 COREXY 300 0.4 nozzle.json | 71 +++++ ...RatRig V-Core 4 COREXY 300 0.5 nozzle.json | 26 ++ ...RatRig V-Core 4 COREXY 300 0.6 nozzle.json | 26 ++ .../machine/RatRig V-Core 4 COREXY 300.json | 12 + ...RatRig V-Core 4 COREXY 400 0.4 nozzle.json | 19 ++ ...RatRig V-Core 4 COREXY 400 0.5 nozzle.json | 26 ++ ...RatRig V-Core 4 COREXY 400 0.6 nozzle.json | 26 ++ .../machine/RatRig V-Core 4 COREXY 400.json | 13 + ...RatRig V-Core 4 COREXY 500 0.4 nozzle.json | 19 ++ ...RatRig V-Core 4 COREXY 500 0.5 nozzle.json | 26 ++ ...RatRig V-Core 4 COREXY 500 0.6 nozzle.json | 26 ++ .../machine/RatRig V-Core 4 COREXY 500.json | 12 + ...RatRig V-Core 4 HYBRID 300 0.4 nozzle.json | 123 ++++---- ...RatRig V-Core 4 HYBRID 300 0.5 nozzle.json | 78 ++--- ...RatRig V-Core 4 HYBRID 300 0.6 nozzle.json | 78 ++--- .../machine/RatRig V-Core 4 HYBRID 300.json | 25 +- ...RatRig V-Core 4 HYBRID 400 0.4 nozzle.json | 123 ++++---- ...RatRig V-Core 4 HYBRID 400 0.5 nozzle.json | 78 ++--- ...RatRig V-Core 4 HYBRID 400 0.6 nozzle.json | 78 ++--- .../machine/RatRig V-Core 4 HYBRID 400.json | 25 +- ...RatRig V-Core 4 HYBRID 500 0.4 nozzle.json | 71 ++--- ...RatRig V-Core 4 HYBRID 500 0.5 nozzle.json | 78 ++--- ...RatRig V-Core 4 HYBRID 500 0.6 nozzle.json | 78 ++--- .../machine/RatRig V-Core 4 HYBRID 500.json | 25 +- .../0.20mm QUALITY COREXY 0.4 @RatRig.json | 61 ++++ .../0.20mm QUALITY COREXY 0.5 @RatRig.json | 25 ++ .../0.20mm QUALITY COREXY 0.6 @RatRig.json | 48 +++ .../0.20mm QUALITY COREXY @RatRig.json | 67 +++++ .../0.20mm QUALITY HYBRID 0.4 @RatRig.json | 61 ++++ .../0.20mm QUALITY HYBRID 0.5 @RatRig.json | 24 ++ .../0.20mm QUALITY HYBRID 0.6 @RatRig.json | 48 +++ .../0.20mm QUALITY HYBRID @RatRig.json | 67 +++++ .../0.20mm Quality @RatRig V-Core 4 0.4.json | 62 ---- .../0.20mm Quality @RatRig V-Core 4 0.5.json | 62 ---- ...m Quality @RatRig V-Core 4 HYBRID 0.4.json | 62 ---- ...m Quality @RatRig V-Core 4 HYBRID 0.5.json | 62 ---- ...25mm QUALITY_SPEED COREXY 0.4 @RatRig.json | 12 + ...25mm QUALITY_SPEED COREXY 0.5 @RatRig.json | 25 ++ ...25mm QUALITY_SPEED COREXY 0.6 @RatRig.json | 48 +++ .../0.25mm QUALITY_SPEED COREXY @RatRig.json | 12 + ...25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json | 11 + ...25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json | 11 + ...25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json | 31 ++ .../0.25mm QUALITY_SPEED HYBRID @RatRig.json | 12 + ...mm Quality Speed @RatRig V-Core 4 0.4.json | 62 ---- ...mm Quality Speed @RatRig V-Core 4 0.5.json | 62 ---- ...mm Quality Speed @RatRig V-Core 4 0.6.json | 62 ---- ...ity Speed @RatRig V-Core 4 HYBRID 0.4.json | 62 ---- ...ity Speed @RatRig V-Core 4 HYBRID 0.5.json | 62 ---- ...ity Speed @RatRig V-Core 4 HYBRID 0.6.json | 62 ---- .../0.25mm SPEED COREXY 0.4 @RatRig.json | 31 ++ .../0.25mm SPEED COREXY 0.5 @RatRig.json | 31 ++ .../0.25mm SPEED COREXY 0.6 @RatRig.json | 31 ++ .../process/0.25mm SPEED COREXY @RatRig.json | 32 ++ .../0.25mm SPEED HYBRID 0.4 @RatRig.json | 31 ++ .../0.25mm SPEED HYBRID 0.5 @RatRig.json | 31 ++ .../0.25mm SPEED HYBRID 0.6 @RatRig.json | 31 ++ .../process/0.25mm SPEED HYBRID @RatRig.json | 32 ++ .../0.25mm Speed @RatRig V-Core 4 0.4.json | 60 ---- .../0.25mm Speed @RatRig V-Core 4 0.5.json | 60 ---- .../0.25mm Speed @RatRig V-Core 4 0.6.json | 60 ---- ...5mm Speed @RatRig V-Core 4 HYBRID 0.4.json | 60 ---- ...5mm Speed @RatRig V-Core 4 HYBRID 0.5.json | 60 ---- ...5mm Speed @RatRig V-Core 4 HYBRID 0.6.json | 60 ---- .../process/0.28mm Extra Draft @RatRig.json | 33 +- .../0.30mm Big @RatRig V-Core 4 0.6.json | 67 ----- ....30mm Big @RatRig V-Core 4 HYBRID 0.6.json | 67 ----- .../Ratrig/process/fdm_process_common.json | 140 ++++----- .../process/fdm_process_ratrig_common.json | 233 ++++++++------- 104 files changed, 3383 insertions(+), 3906 deletions(-) create mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json create mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json create mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json delete mode 100644 resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json delete mode 100644 resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index ce479235cbe..9a69c1529cf 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -29,16 +29,16 @@ "sub_path": "machine/RatRig V-Cast.json" }, { - "name": "RatRig V-Core 4 300", - "sub_path": "machine/RatRig V-Core 4 300.json" + "name": "RatRig V-Core 4 COREXY 300", + "sub_path": "machine/RatRig V-Core 4 COREXY 300.json" }, { - "name": "RatRig V-Core 4 400", - "sub_path": "machine/RatRig V-Core 4 400.json" + "name": "RatRig V-Core 4 COREXY 400", + "sub_path": "machine/RatRig V-Core 4 COREXY 400.json" }, { - "name": "RatRig V-Core 4 500", - "sub_path": "machine/RatRig V-Core 4 500.json" + "name": "RatRig V-Core 4 COREXY 500", + "sub_path": "machine/RatRig V-Core 4 COREXY 500.json" }, { "name": "RatRig V-Core 4 HYBRID 300", @@ -87,76 +87,100 @@ "sub_path": "process/0.28mm Extra Draft @RatRig.json" }, { - "name": "0.30mm Big @RatRig V-Core 4 0.6", - "sub_path": "process/0.30mm Big @RatRig V-Core 4 0.6.json" + "name": "0.20mm QUALITY COREXY @RatRig", + "sub_path": "process/0.20mm QUALITY COREXY @RatRig.json" }, { - "name": "0.25mm Speed @RatRig V-Core 4 0.4", - "sub_path": "process/0.25mm Speed @RatRig V-Core 4 0.4.json" + "name": "0.20mm QUALITY COREXY 0.4 @RatRig", + "sub_path": "process/0.20mm QUALITY COREXY 0.4 @RatRig.json" }, { - "name": "0.25mm Speed @RatRig V-Core 4 0.5", - "sub_path": "process/0.25mm Speed @RatRig V-Core 4 0.5.json" + "name": "0.20mm QUALITY COREXY 0.5 @RatRig", + "sub_path": "process/0.20mm QUALITY COREXY 0.5 @RatRig.json" }, { - "name": "0.25mm Speed @RatRig V-Core 4 0.6", - "sub_path": "process/0.25mm Speed @RatRig V-Core 4 0.6.json" + "name": "0.20mm QUALITY COREXY 0.6 @RatRig", + "sub_path": "process/0.20mm QUALITY COREXY 0.6 @RatRig.json" }, { - "name": "0.25mm Quality Speed @RatRig V-Core 4 0.4", - "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json" + "name": "0.20mm QUALITY HYBRID @RatRig", + "sub_path": "process/0.20mm QUALITY HYBRID @RatRig.json" }, { - "name": "0.25mm Quality Speed @RatRig V-Core 4 0.5", - "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json" + "name": "0.20mm QUALITY HYBRID 0.4 @RatRig", + "sub_path": "process/0.20mm QUALITY HYBRID 0.4 @RatRig.json" }, { - "name": "0.25mm Quality Speed @RatRig V-Core 4 0.6", - "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json" + "name": "0.20mm QUALITY HYBRID 0.5 @RatRig", + "sub_path": "process/0.20mm QUALITY HYBRID 0.5 @RatRig.json" }, { - "name": "0.20mm Quality @RatRig V-Core 4 0.4", - "sub_path": "process/0.20mm Quality @RatRig V-Core 4 0.4.json" + "name": "0.20mm QUALITY HYBRID 0.6 @RatRig", + "sub_path": "process/0.20mm QUALITY HYBRID 0.6 @RatRig.json" }, { - "name": "0.20mm Quality @RatRig V-Core 4 0.5", - "sub_path": "process/0.20mm Quality @RatRig V-Core 4 0.5.json" + "name": "0.25mm QUALITY_SPEED COREXY @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED COREXY @RatRig.json" }, { - "name": "0.30mm Big @RatRig V-Core 4 HYBRID 0.6", - "sub_path": "process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json" + "name": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json" }, { - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.4", - "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json" + "name": "0.25mm QUALITY_SPEED COREXY 0.5 @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json" }, { - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.5", - "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json" + "name": "0.25mm QUALITY_SPEED COREXY 0.6 @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json" }, { - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.6", - "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json" + "name": "0.25mm QUALITY_SPEED HYBRID @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED HYBRID @RatRig.json" }, { - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4", - "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json" + "name": "0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json" }, { - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5", - "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json" + "name": "0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json" }, { - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6", - "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json" + "name": "0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig", + "sub_path": "process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json" }, { - "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.4", - "sub_path": "process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json" + "name": "0.25mm SPEED COREXY @RatRig", + "sub_path": "process/0.25mm SPEED COREXY @RatRig.json" }, { - "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.5", - "sub_path": "process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json" + "name": "0.25mm SPEED COREXY 0.4 @RatRig", + "sub_path": "process/0.25mm SPEED COREXY 0.4 @RatRig.json" + }, + { + "name": "0.25mm SPEED COREXY 0.5 @RatRig", + "sub_path": "process/0.25mm SPEED COREXY 0.5 @RatRig.json" + }, + { + "name": "0.25mm SPEED COREXY 0.6 @RatRig", + "sub_path": "process/0.25mm SPEED COREXY 0.6 @RatRig.json" + }, + { + "name": "0.25mm SPEED HYBRID @RatRig", + "sub_path": "process/0.25mm SPEED HYBRID @RatRig.json" + }, + { + "name": "0.25mm SPEED HYBRID 0.4 @RatRig", + "sub_path": "process/0.25mm SPEED HYBRID 0.4 @RatRig.json" + }, + { + "name": "0.25mm SPEED HYBRID 0.5 @RatRig", + "sub_path": "process/0.25mm SPEED HYBRID 0.5 @RatRig.json" + }, + { + "name": "0.25mm SPEED HYBRID 0.6 @RatRig", + "sub_path": "process/0.25mm SPEED HYBRID 0.6 @RatRig.json" } ], "filament_list": [ @@ -235,6 +259,18 @@ { "name": "RatRig Generic PA-CF", "sub_path": "filament/RatRig Generic PA-CF.json" + }, + { + "name": "RatRig PunkFil ABS", + "sub_path": "filament/RatRig PunkFil ABS.json" + }, + { + "name": "RatRig PunkFil PETG CF", + "sub_path": "filament/RatRig PunkFil PETG CF.json" + }, + { + "name": "RatRig PunkFil PETG", + "sub_path": "filament/RatRig PunkFil PETG.json" } ], "machine_list": [ @@ -275,40 +311,40 @@ "sub_path": "machine/RatRig V-Cast 0.6 nozzle.json" }, { - "name": "RatRig V-Core 4 300 0.4 nozzle", - "sub_path": "machine/RatRig V-Core 4 300 0.4 nozzle.json" + "name": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json" }, { - "name": "RatRig V-Core 4 300 0.5 nozzle", - "sub_path": "machine/RatRig V-Core 4 300 0.5 nozzle.json" + "name": "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json" }, { - "name": "RatRig V-Core 4 300 0.6 nozzle", - "sub_path": "machine/RatRig V-Core 4 300 0.6 nozzle.json" + "name": "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json" }, { - "name": "RatRig V-Core 4 400 0.4 nozzle", - "sub_path": "machine/RatRig V-Core 4 400 0.4 nozzle.json" + "name": "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json" }, { - "name": "RatRig V-Core 4 400 0.5 nozzle", - "sub_path": "machine/RatRig V-Core 4 400 0.5 nozzle.json" + "name": "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json" }, { - "name": "RatRig V-Core 4 400 0.6 nozzle", - "sub_path": "machine/RatRig V-Core 4 400 0.6 nozzle.json" + "name": "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json" }, { - "name": "RatRig V-Core 4 500 0.4 nozzle", - "sub_path": "machine/RatRig V-Core 4 500 0.4 nozzle.json" + "name": "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json" }, { - "name": "RatRig V-Core 4 500 0.5 nozzle", - "sub_path": "machine/RatRig V-Core 4 500 0.5 nozzle.json" + "name": "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json" }, { - "name": "RatRig V-Core 4 500 0.6 nozzle", - "sub_path": "machine/RatRig V-Core 4 500 0.6 nozzle.json" + "name": "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "sub_path": "machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json" }, { "name": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", diff --git a/resources/profiles/Ratrig/filament/RatRig Generic ABS.json b/resources/profiles/Ratrig/filament/RatRig Generic ABS.json index 5be01be8c95..3203213bb04 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic ABS.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic ABS.json @@ -1,75 +1,57 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "RatRig Generic ABS", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.980" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.03" - ], - "hot_plate_temp_initial_layer" : [ - "108" - ], - "nozzle_temperature_initial_layer": [ - "248" - ], - "nozzle_temperature": [ - "243" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_speed": [ - "30" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig Generic ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.980" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ], + "hot_plate_temp_initial_layer" : [ + "108" + ], + "nozzle_temperature_initial_layer": [ + "248" + ], + "nozzle_temperature": [ + "243" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "30" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic ASA.json b/resources/profiles/Ratrig/filament/RatRig Generic ASA.json index eeff92f76f1..5681ae1f3c5 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic ASA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic ASA.json @@ -1,69 +1,51 @@ -{ - "type": "filament", - "filament_id": "GFB98", - "setting_id": "GFSA04", - "name": "RatRig Generic ASA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_asa", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "19" - ], - "filament_density": [ - "1.1" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.033" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_speed": [ - "25" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "RatRig Generic ASA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "19" + ], + "filament_density": [ + "1.1" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.033" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "25" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json b/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json index dec08573fcf..700af887313 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json @@ -1,69 +1,51 @@ -{ - "type": "filament", - "filament_id": "GFN98", - "setting_id": "GFSA04", - "name": "RatRig Generic PA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "filament_type": [ - "PA-CF" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature": [ - "270" - ], - "hot_plate_temp" : [ - "80" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "filament_density": [ - "1.24" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "50" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "RatRig Generic PA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature": [ + "270" + ], + "hot_plate_temp" : [ + "80" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "filament_density": [ + "1.24" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "50" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PA.json b/resources/profiles/Ratrig/filament/RatRig Generic PA.json index e4088575166..c8383d5a27c 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PA.json @@ -1,66 +1,48 @@ -{ - "type": "filament", - "filament_id": "GFN99", - "setting_id": "GFSA04", - "name": "RatRig Generic PA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature": [ - "270" - ], - "hot_plate_temp" : [ - "80" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "filament_density": [ - "1.24" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "50" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFSA04", + "name": "RatRig Generic PA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature": [ + "270" + ], + "hot_plate_temp" : [ + "80" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "filament_density": [ + "1.24" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "50" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PC.json b/resources/profiles/Ratrig/filament/RatRig Generic PC.json index d73a99bf3f7..0cb3a930224 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PC.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PC.json @@ -1,63 +1,45 @@ -{ - "type": "filament", - "filament_id": "GFC99", - "setting_id": "GFSA04", - "name": "RatRig Generic PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "hot_plate_temp" : [ - "100" - ], - "hot_plate_temp_initial_layer" : [ - "100" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "RatRig Generic PC", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "hot_plate_temp" : [ + "100" + ], + "hot_plate_temp_initial_layer" : [ + "100" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PETG.json b/resources/profiles/Ratrig/filament/RatRig Generic PETG.json index 8c355a5966a..4be7ccacc94 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PETG.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PETG.json @@ -1,87 +1,69 @@ -{ - "type": "filament", - "filament_id": "GFG99", - "setting_id": "GFSA04", - "name": "RatRig Generic PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "10" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.94" - ], - "filament_max_volumetric_speed": [ - "11" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature": [ - "235" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "RatRig Generic PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "10" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "11" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "235" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json b/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json index 1d0a0b99eaa..0efe0ec44ac 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json @@ -1,63 +1,45 @@ -{ - "type": "filament", - "filament_id": "GFL98", - "setting_id": "GFSA04", - "name": "RatRig Generic PLA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.92" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.05" - ], - "slow_down_layer_time": [ - "7" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature": [ - "205" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFL98", + "setting_id": "GFSA04", + "name": "RatRig Generic PLA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.92" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.05" + ], + "slow_down_layer_time": [ + "7" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature": [ + "205" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PLA.json b/resources/profiles/Ratrig/filament/RatRig Generic PLA.json index 9f69c7f91dd..34dfab2e4b1 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PLA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PLA.json @@ -1,60 +1,42 @@ -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA04", - "name": "RatRig Generic PLA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.92" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.05" - ], - "slow_down_layer_time": [ - "8" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature": [ - "200" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "RatRig Generic PLA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.92" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.05" + ], + "slow_down_layer_time": [ + "8" + ], + "nozzle_temperature_initial_layer": [ + "205" + ], + "nozzle_temperature": [ + "200" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PVA.json b/resources/profiles/Ratrig/filament/RatRig Generic PVA.json index 35a7fc8579d..c2c68325f5f 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PVA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PVA.json @@ -1,57 +1,39 @@ -{ - "type": "filament", - "filament_id": "GFS99", - "setting_id": "GFSA04", - "name": "RatRig Generic PVA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pva", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ - "10" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSA04", + "name": "RatRig Generic PVA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pva", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic TPU.json b/resources/profiles/Ratrig/filament/RatRig Generic TPU.json index 784537f231d..89f8047b40c 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic TPU.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic TPU.json @@ -1,54 +1,36 @@ -{ - "type": "filament", - "filament_id": "GFU99", - "setting_id": "GFSA04", - "name": "RatRig Generic TPU", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_tpu", - "filament_max_volumetric_speed": [ - "5" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.1" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.4 nozzle", - "RatRig V-Core 4 500 0.5 nozzle", - "RatRig V-Core 4 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "RatRig Generic TPU", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu", + "filament_max_volumetric_speed": [ + "5" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.1" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json new file mode 100644 index 00000000000..e2b95988966 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json @@ -0,0 +1,93 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig PunkFil ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.92" + ], + "filament_max_volumetric_speed": [ + "40" + ], + "filament_z_hop": [ + "nil" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.022" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature": [ + "260" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "7" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "60" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_min_speed": [ + "50" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_cost": [ + "25.5" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json new file mode 100644 index 00000000000..a85d362275b --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json @@ -0,0 +1,93 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig PunkFil PETG CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_z_hop": [ + "nil" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.038" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "hot_plate_temp" : [ + "80" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature": [ + "230" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "50%" + ], + "slow_down_min_speed": [ + "30" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_cost": [ + "48" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json new file mode 100644 index 00000000000..4a70f159d75 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json @@ -0,0 +1,93 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig PunkFil PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "40" + ], + "filament_z_hop": [ + "nil" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.025" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "hot_plate_temp" : [ + "80" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "nozzle_temperature": [ + "235" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "8" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "50" + ], + "overhang_fan_threshold": [ + "50%" + ], + "slow_down_min_speed": [ + "50" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_cost": [ + "24.5" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_abs.json b/resources/profiles/Ratrig/filament/fdm_filament_abs.json index b9d4eeda312..1c87696e44a 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_abs.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_abs.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_abs", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "textured_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "textured_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_asa.json b/resources/profiles/Ratrig/filament/fdm_filament_asa.json index 262c561bda8..38126ffe560 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_asa.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_asa.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_asa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "textured_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "textured_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "35" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} +{ + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "35" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ASA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_common.json b/resources/profiles/Ratrig/filament/fdm_filament_common.json index 22c32f8ca6f..722b02593cf 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_common.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_common.json @@ -1,141 +1,141 @@ -{ - "type": "filament", - "name": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "0" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "bed_type": [ - "Cool Plate" - ], - "nozzle_temperature_initial_layer": [ - "200" - ], - "full_fan_speed_layer": [ - "0" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "nozzle_temperature": [ - "200" - ], - "temperature_vitrification": [ - "100" - ] -} +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "95%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pa.json b/resources/profiles/Ratrig/filament/fdm_filament_pa.json index 58f53cd451d..671549041e0 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pa.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pa.json @@ -1,85 +1,85 @@ -{ - "type": "filament", - "name": "fdm_filament_pa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "100" - ], - "hot_plate_temp" : [ - "100" - ], - "textured_plate_temp" : [ - "100" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "100" - ], - "hot_plate_temp_initial_layer" : [ - "100" - ], - "textured_plate_temp_initial_layer" : [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "4" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "PA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_speed": [ - "30" - ], - "nozzle_temperature": [ - "290" - ], - "temperature_vitrification": [ - "108" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "100" + ], + "hot_plate_temp" : [ + "100" + ], + "textured_plate_temp" : [ + "100" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "100" + ], + "hot_plate_temp_initial_layer" : [ + "100" + ], + "textured_plate_temp_initial_layer" : [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "4" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "30" + ], + "nozzle_temperature": [ + "290" + ], + "temperature_vitrification": [ + "108" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pc.json b/resources/profiles/Ratrig/filament/fdm_filament_pc.json index cec8b89a38d..e87b47be071 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pc.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pc.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_pc", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "110" - ], - "hot_plate_temp" : [ - "110" - ], - "textured_plate_temp" : [ - "110" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "110" - ], - "hot_plate_temp_initial_layer" : [ - "110" - ], - "textured_plate_temp_initial_layer" : [ - "110" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "23.2" - ], - "filament_type": [ - "PC" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "60" - ], - "nozzle_temperature": [ - "280" - ], - "temperature_vitrification": [ - "140" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pc", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "23.2" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "280" + ], + "temperature_vitrification": [ + "140" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pet.json b/resources/profiles/Ratrig/filament/fdm_filament_pet.json index bb2323e9c1e..dd775dd8277 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pet.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pet.json @@ -1,82 +1,82 @@ -{ - "type": "filament", - "name": "fdm_filament_pet", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "80" - ], - "textured_plate_temp" : [ - "80" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "textured_plate_temp_initial_layer" : [ - "80" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "20" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PETG" - ], - "filament_density": [ - "1.27" - ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "255" - ], - "temperature_vitrification": [ - "80" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "80" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "255" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pla.json b/resources/profiles/Ratrig/filament/fdm_filament_pla.json index 82c6772f35d..afdc52a03a7 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pla.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pla.json @@ -1,94 +1,94 @@ -{ - "type": "filament", - "name": "fdm_filament_pla", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PLA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pva.json b/resources/profiles/Ratrig/filament/fdm_filament_pva.json index ebf25aa3ae9..773d97da7af 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pva.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pva.json @@ -1,100 +1,100 @@ -{ - "type": "filament", - "name": "fdm_filament_pva", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "35" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "45" - ], - "textured_plate_temp" : [ - "45" - ], - "cool_plate_temp_initial_layer" : [ - "35" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "45" - ], - "textured_plate_temp_initial_layer" : [ - "45" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_soluble": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "50" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pva", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "35" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "45" + ], + "textured_plate_temp" : [ + "45" + ], + "cool_plate_temp_initial_layer" : [ + "35" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "45" + ], + "textured_plate_temp_initial_layer" : [ + "45" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_soluble": [ + "1" + ], + "filament_is_support": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "50" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_tpu.json b/resources/profiles/Ratrig/filament/fdm_filament_tpu.json index d00b7dbcab5..c153d385167 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_tpu.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_tpu.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_tpu", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "30" - ], - "eng_plate_temp" : [ - "30" - ], - "hot_plate_temp" : [ - "35" - ], - "textured_plate_temp" : [ - "35" - ], - "cool_plate_temp_initial_layer" : [ - "30" - ], - "eng_plate_temp_initial_layer" : [ - "30" - ], - "hot_plate_temp_initial_layer" : [ - "35" - ], - "textured_plate_temp_initial_layer" : [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "240" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "35" + ], + "textured_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "35" + ], + "textured_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "filament_retraction_length": [ + "0.4" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json deleted file mode 100644 index ca065917b4a..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 300 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 300", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.06"], - "max_layer_height": ["0.3"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "300", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json deleted file mode 100644 index 8f78b122fe5..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 300 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 300", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.07"], - "max_layer_height": ["0.32"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "300", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json deleted file mode 100644 index 1383d316a27..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 300 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 300", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.1"], - "max_layer_height": ["0.4"], - "retract_lift_below": ["0.3"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "300", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json deleted file mode 100644 index fbe06996478..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 300", - "model_id": "V-Core_4_300", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-300.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json deleted file mode 100644 index 4b065733f1c..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 400 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 400", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.06"], - "max_layer_height": ["0.3"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json deleted file mode 100644 index c6c81a73eb9..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 400 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 400", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.07"], - "max_layer_height": ["0.32"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json deleted file mode 100644 index 2efa2e53cf3..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 400 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 400", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.1"], - "max_layer_height": ["0.4"], - "retract_lift_below": ["0.3"], - "retraction_length": ["2"], - "retraction_speed": ["40"], - "deretraction_speed": ["0"], - "retraction_minimum_travel": ["2"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json deleted file mode 100644 index a3f9c85191a..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 400", - "model_id": "V-Core_4_400", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-400.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json deleted file mode 100644 index e34c326e7f3..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 500 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 500", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.06"], - "max_layer_height": ["0.3"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json deleted file mode 100644 index 6bc08fb4739..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 500 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 500", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.07"], - "max_layer_height": ["0.32"], - "retract_lift_below": ["0.25"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json deleted file mode 100644 index 7c27538c58e..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 500 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 500", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.1"], - "max_layer_height": ["0.4"], - "retract_lift_below": ["0.3"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json deleted file mode 100644 index 2803355533f..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 500", - "model_id": "V-Core_4_500", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-500.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json new file mode 100644 index 00000000000..0fae5169a19 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json @@ -0,0 +1,71 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "from": "system", + "instantiation": "true", + "printer_model": "RatRig V-Core 4 COREXY 300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "inherits": "fdm_klipper_common", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_speed_e": ["120", "120"], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["200", "200"], + "machine_max_jerk_e": ["5", "5"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "max_layer_height": ["0.3"], + "min_layer_height": ["0.06"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", + "printer_settings_id": "", + "printer_technology": "FFF", + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["0.8"], + "retract_length_toolchange": ["2"], + "z_hop": ["0.2"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "z_hop_types": "Normal Lift", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "change_filament_gcode": "M600", + "machine_pause_gcode": "PAUSE", + "wipe": ["1"], + "default_filament_profile": ["RatRig PunkFil PETG"], + "default_print_profile": "0.20mm QUALITY COREXY @RatRig", + "bed_exclude_area": ["0x0"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} EXTRUDER_OTHER_LAYER_TEMP={nozzle_temperature[0]} BED_TEMP=[bed_temperature_initial_layer_single] CHAMBER_TEMP={overall_chamber_temperature} TOTAL_LAYER_COUNT={total_layer_count} X0={adaptive_bed_mesh_min[0]} Y0={adaptive_bed_mesh_min[1]} X1={adaptive_bed_mesh_max[0]} Y1={adaptive_bed_mesh_max[1]}", + "machine_end_gcode": "END_PRINT", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "scan_first_layer": "0", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json new file mode 100644 index 00000000000..ae501bbcc52 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 300", + "max_layer_height": [ + "0.07" + ], + "min_layer_height": [ + "0.32" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json new file mode 100644 index 00000000000..6a5e1b90c8f --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 300", + "max_layer_height": [ + "0.1" + ], + "min_layer_height": [ + "0.4" + ], + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "printer_variant": "0.6" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json new file mode 100644 index 00000000000..f29b1b75def --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "RatRig V-Core 4 COREXY 300", + "model_id": "V-Core_4_CORE_XY_300", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-300.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" +} \ No newline at end of file diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json new file mode 100644 index 00000000000..9c141d3b812 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 400", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "printable_height": "400" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json new file mode 100644 index 00000000000..a4ec2b52407 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 400", + "max_layer_height": [ + "0.07" +], +"min_layer_height": [ + "0.32" +], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "printable_height": "400", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json new file mode 100644 index 00000000000..e82cdafefcc --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 400", + "max_layer_height": [ + "0.1" +], +"min_layer_height": [ + "0.4" +], + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "printable_height": "400", + "printer_variant": "0.6" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json new file mode 100644 index 00000000000..1dd3263bfc9 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json @@ -0,0 +1,13 @@ +{ + "type": "machine_model", + "name": "RatRig V-Core 4 COREXY 400", + "model_id": "V-Core_4_CORE_XY_400", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-400.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" +} + diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json new file mode 100644 index 00000000000..1de8073f901 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json new file mode 100644 index 00000000000..1abb9e608aa --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 500", + "max_layer_height": [ + "0.07" +], +"min_layer_height": [ + "0.32" +], +"nozzle_diameter": [ +"0.5" +], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json new file mode 100644 index 00000000000..433461df2e6 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 COREXY 500", + "max_layer_height": [ + "0.1" +], +"min_layer_height": [ + "0.4" +], +"nozzle_diameter": [ +"0.6" +], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "printer_variant": "0.6" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json new file mode 100644 index 00000000000..dc7a572b6c3 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "RatRig V-Core 4 COREXY 500", + "model_id": "V-Core_4_CORE_XY_500", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-500.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json index d72a3a5b2dc..5901d9f65ca 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json @@ -1,52 +1,71 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 300", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.06"], - "max_layer_height": ["0.3"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "300", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "from": "system", + "instantiation": "true", + "printer_model": "RatRig V-Core 4 HYBRID 300", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "inherits": "fdm_klipper_common", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["200", "200"], + "machine_max_speed_e": ["120", "120"], + "machine_max_jerk_e": ["5", "5"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "max_layer_height": ["0.3"], + "min_layer_height": ["0.06"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", + "printer_settings_id": "", + "printer_technology": "FFF", + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["0.8"], + "retract_length_toolchange": ["2"], + "z_hop": ["0.2"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "z_hop_types": "Normal Lift", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "change_filament_gcode": "M600", + "machine_pause_gcode": "PAUSE", + "wipe": ["1"], + "default_filament_profile": ["RatRig PunkFil PETG"], + "default_print_profile": "0.20mm QUALITY HYBRID @RatRig", + "bed_exclude_area": ["0x0"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} EXTRUDER_OTHER_LAYER_TEMP={nozzle_temperature[0]} BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={adaptive_bed_mesh_min[0]} Y0={adaptive_bed_mesh_min[1]} X1={adaptive_bed_mesh_max[0]} Y1={adaptive_bed_mesh_max[1]}", + "machine_end_gcode": "END_PRINT", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "scan_first_layer": "0", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json index bf8651e3ff2..5f8a671329c 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json @@ -1,52 +1,26 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 300", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.07"], - "max_layer_height": ["0.32"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "300", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ +"type": "machine", +"setting_id": "GM004", +"name": "RatRig V-Core 4 HYBRID 300 0.5 nozzle", +"from": "system", +"instantiation": "true", +"inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", +"printer_model": "RatRig V-Core 4 HYBRID 300", +"max_layer_height": [ + "0.07" +], +"min_layer_height": [ + "0.32" +], +"nozzle_diameter": [ + "0.5" +], +"printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" +], +"printable_height": "300", +"printer_variant": "0.5" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json index e40e4beaf13..9a671d4d4a3 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json @@ -1,52 +1,26 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 300", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.1"], - "max_layer_height": ["0.4"], - "retract_lift_below": ["0.3"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "300", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 HYBRID 300", + "max_layer_height": [ + "0.1" +], +"min_layer_height": [ + "0.4" +], + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "300", + "printer_variant": "0.6" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json index d1016f26622..6d0e34d3b4b 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json @@ -1,12 +1,13 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 HYBRID 300", - "model_id": "V-Core_4_HYBRID_300", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-300.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" -} +{ + "type": "machine_model", + "name": "RatRig V-Core 4 HYBRID 300", + "model_id": "V-Core_4_HYBRID_300", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-300.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" +} + diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json index d6e8b028fd1..541062cbed8 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json @@ -1,52 +1,71 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 400", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.06"], - "max_layer_height": ["0.3"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "from": "system", + "instantiation": "true", + "printer_model": "RatRig V-Core 4 HYBRID 400", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "printable_height": "400", + "inherits": "fdm_klipper_common", + "gcode_flavor": "klipper", + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["200", "200"], + "machine_max_speed_e": ["120", "120"], + "machine_max_jerk_e": ["5", "5"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_min_extruding_rate": ["0", "0"], + "machine_min_travel_rate": ["0", "0"], + "max_layer_height": ["0.3"], + "min_layer_height": ["0.06"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", + "printer_settings_id": "", + "printer_technology": "FFF", + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retraction_length": ["0.8"], + "retract_length_toolchange": ["2"], + "z_hop": ["0.2"], + "retract_restart_extra": ["0"], + "retract_restart_extra_toolchange": ["0"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "z_hop_types": "Normal Lift", + "silent_mode": "0", + "single_extruder_multi_material": "1", + "change_filament_gcode": "M600", + "machine_pause_gcode": "PAUSE", + "wipe": ["1"], + "default_filament_profile": ["RatRig PunkFil PETG"], + "default_print_profile": "0.20mm QUALITY HYBRID @RatRig", + "bed_exclude_area": ["0x0"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} EXTRUDER_OTHER_LAYER_TEMP={nozzle_temperature[0]} BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={adaptive_bed_mesh_min[0]} Y0={adaptive_bed_mesh_min[1]} X1={adaptive_bed_mesh_max[0]} Y1={adaptive_bed_mesh_max[1]}", + "machine_end_gcode": "END_PRINT", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "scan_first_layer": "0", + "nozzle_type": "undefine", + "auxiliary_fan": "0" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json index 29d095b567d..2b75c49eb8d 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json @@ -1,52 +1,26 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 400", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.07"], - "max_layer_height": ["0.32"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ +"type": "machine", +"setting_id": "GM004", +"name": "RatRig V-Core 4 HYBRID 400 0.5 nozzle", +"from": "system", +"instantiation": "true", +"inherits": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", +"printer_model": "RatRig V-Core 4 HYBRID 400", +"max_layer_height": [ + "0.07" +], +"min_layer_height": [ + "0.32" +], +"nozzle_diameter": [ + "0.5" +], +"printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" +], +"printable_height": "400", +"printer_variant": "0.5" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json index 95e1bbf29c8..b785f522a90 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json @@ -1,52 +1,26 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 400", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.1"], - "max_layer_height": ["0.4"], - "retract_lift_below": ["0.3"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "printer_model": "RatRig V-Core 4 HYBRID 400", + "max_layer_height": [ + "0.1" +], +"min_layer_height": [ + "0.4" +], + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "printable_height": "400", + "printer_variant": "0.6" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json index dce309372cd..629e7921975 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json @@ -1,12 +1,13 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 HYBRID 400", - "model_id": "V-Core_4_HYBRID_400", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-400.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" -} +{ + "type": "machine_model", + "name": "RatRig V-Core 4 HYBRID 400", + "model_id": "V-Core_4_HYBRID_400", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-400.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" +} + diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json index d2ded5365f8..d1924567810 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json @@ -1,52 +1,19 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 500", - "printer_variant": "0.4", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.06"], - "max_layer_height": ["0.3"], - "retract_lift_below": ["0.2"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 HYBRID 500", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json index 83428f708b1..c9fb5f9cde3 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json @@ -1,52 +1,26 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 500", - "printer_variant": "0.5", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.07"], - "max_layer_height": ["0.32"], - "retract_lift_below": ["0.25"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ +"type": "machine", +"setting_id": "GM004", +"name": "RatRig V-Core 4 HYBRID 500 0.5 nozzle", +"from": "system", +"instantiation": "true", +"inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", +"printer_model": "RatRig V-Core 4 HYBRID 500", +"max_layer_height": [ + "0.07" +], +"min_layer_height": [ + "0.32" +], +"nozzle_diameter": [ + "0.5" +], +"printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" +], +"printable_height": "500", +"printer_variant": "0.5" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json index 38797ef1e29..4f81d3881b8 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json @@ -1,52 +1,26 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 500 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "fdm_klipper_common", - "printer_model": "RatRig V-Core 4 HYBRID 500", - "printer_variant": "0.6", - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], - "machine_max_speed_e": ["120", "120"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_max_jerk_e": ["5", "5"], - "min_layer_height": ["0.1"], - "max_layer_height": ["0.4"], - "retract_lift_below": ["0.3"], - "retraction_length": ["0.8"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", - "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", - "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", - "thumbnails": [ - "64x64/PNG", - "400x300/PNG" - ] -} +{ + "type": "machine", + "setting_id": "GM004", + "name": "RatRig V-Core 4 HYBRID 500 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "printer_model": "RatRig V-Core 4 HYBRID 500", + "max_layer_height": [ + "0.1" +], +"min_layer_height": [ + "0.4" +], + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "printable_height": "500", + "printer_variant": "0.6" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json index 0c27eeea8d9..9b185bdeb01 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json @@ -1,12 +1,13 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 HYBRID 500", - "model_id": "V-Core_4_HYBRID_500", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-500.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" -} +{ + "type": "machine_model", + "name": "RatRig V-Core 4 HYBRID 500", + "model_id": "V-Core_4_HYBRID_500", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-500.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" +} + diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json new file mode 100644 index 00000000000..8f883a30ffa --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json @@ -0,0 +1,61 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY COREXY 0.4 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.2", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "default_acceleration": "10000", + "top_surface_acceleration": "10000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "8000", + "outer_wall_acceleration": "4000", + "initial_layer_acceleration": "1500", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "250", + "inner_wall_speed": "350", + "internal_solid_infill_speed": "400", + "top_surface_speed": "400", + "gap_infill_speed": "200", + "sparse_infill_speed": "400", + "travel_speed": "500", + "internal_bridge_speed": "100", + "bridge_speed": "50", + "detect_overhang_wall": "0", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "0", + "overhang_3_4_speed": "0", + "overhang_4_4_speed": "0", + "outer_wall_line_width": "0.55", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.3", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "18%", + "inner_wall_line_width": "0.5", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "top_shell_thickness": "0.9", + "wall_loops": "4", + "sparse_infill_density": "25%", + "sparse_infill_pattern": "adaptivecubic", + "detect_thin_wall": "1", + "bridge_flow": "0.85", + "skirt_distance": "10", + "skirt_height": "1", + "skirt_loops": "2", + "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle" + ], + "exclude_object": "0" +} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json new file mode 100644 index 00000000000..63995c71b04 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY COREXY 0.5 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", + "outer_wall_line_width": "0.65", + "line_width": "0.55", + "initial_layer_line_width": "0.6", + "sparse_infill_line_width": "0.55", + "inner_wall_line_width": "0.6", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "wall_loops": "3", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle" + ], + "exclude_object": "0" +} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json new file mode 100644 index 00000000000..9a69c064961 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json @@ -0,0 +1,48 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY COREXY 0.6 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", + "outer_wall_line_width": "0.75", + "line_width": "0.65", + "initial_layer_line_width": "0.7", + "sparse_infill_line_width": "0.65", + "inner_wall_line_width": "0.7", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "wall_loops": "3", + "default_acceleration": "10000", + "top_surface_acceleration": "8000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "8000", + "outer_wall_acceleration": "5000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "200", + "inner_wall_speed": "250", + "internal_solid_infill_speed": "250", + "top_surface_speed": "250", + "gap_infill_speed": "250", + "sparse_infill_speed": "250", + "travel_speed": "500", + "internal_bridge_speed" : "60", + "bridge_speed": "30", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "detect_overhang_wall": "1", + "overhang_speed_classic": "1", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "60", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "20", + "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle" + ], + "exclude_object": "0" +} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json new file mode 100644 index 00000000000..96b6637c304 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY COREXY @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.2", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "default_acceleration": "10000", + "top_surface_acceleration": "10000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "8000", + "outer_wall_acceleration": "4000", + "initial_layer_acceleration": "1500", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "250", + "inner_wall_speed": "350", + "internal_solid_infill_speed": "400", + "top_surface_speed": "400", + "gap_infill_speed": "200", + "sparse_infill_speed": "400", + "travel_speed": "500", + "internal_bridge_speed": "100", + "bridge_speed": "50", + "detect_overhang_wall": "0", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "0", + "overhang_3_4_speed": "0", + "overhang_4_4_speed": "0", + "outer_wall_line_width": "0.45", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.3", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "18%", + "inner_wall_line_width": "0.5", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "top_shell_thickness": "0.9", + "wall_loops": "4", + "sparse_infill_density": "25%", + "sparse_infill_pattern": "adaptivecubic", + "detect_thin_wall": "1", + "bridge_flow": "0.85", + "skirt_distance": "10", + "skirt_height": "1", + "skirt_loops": "2", + "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle" + ], + "exclude_object": "0" +} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json new file mode 100644 index 00000000000..439c240ab23 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json @@ -0,0 +1,61 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY HYBRID 0.4 @RatRig", + "from": "system", + "inherits": "fdm_process_ratrig_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "sparse_infill_density": "25%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "15000", + "top_surface_acceleration": "15000", + "travel_acceleration": "15000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "8000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "250", + "inner_wall_speed": "350", + "internal_solid_infill_speed": "400", + "top_surface_speed": "400", + "gap_infill_speed": "200", + "sparse_infill_speed": "400", + "travel_speed": "600", + "internal_bridge_speed" : "100", + "bridge_speed": "50", + "detect_overhang_wall": "0", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "0", + "overhang_3_4_speed": "0", + "overhang_4_4_speed": "0", + "outer_wall_line_width": "0.55", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.3", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "18%", + "inner_wall_line_width": "0.5", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "top_shell_thickness": "0.9", + "wall_loops": "4", + "detect_thin_wall": "1", + "bridge_flow": "0.85", + "skirt_distance": "10", + "skirt_height": "1", + "skirt_loops": "2", + "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle" + ], + "exclude_object": "0" +} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json new file mode 100644 index 00000000000..e5e15fbb6bd --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json @@ -0,0 +1,24 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY HYBRID 0.5 @RatRig", + "from": "system", + "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", + "outer_wall_line_width": "0.65", + "line_width": "0.55", + "initial_layer_line_width": "0.6", + "sparse_infill_line_width": "0.55", + "inner_wall_line_width": "0.6", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "wall_loops": "3", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle" + ], + "exclude_object": "0" +} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json new file mode 100644 index 00000000000..b95038b2a6c --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json @@ -0,0 +1,48 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY HYBRID 0.6 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", + "outer_wall_line_width": "0.75", + "line_width": "0.65", + "initial_layer_line_width": "0.7", + "sparse_infill_line_width": "0.65", + "inner_wall_line_width": "0.7", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "wall_loops": "3", + "default_acceleration": "15000", + "top_surface_acceleration": "10000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "8000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "200", + "inner_wall_speed": "250", + "internal_solid_infill_speed": "250", + "top_surface_speed": "250", + "gap_infill_speed": "250", + "sparse_infill_speed": "250", + "travel_speed": "800", + "internal_bridge_speed" : "60", + "bridge_speed": "20", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "detect_overhang_wall": "1", + "overhang_speed_classic": "1", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "60", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "20", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ], + "exclude_object": "0" +} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json new file mode 100644 index 00000000000..fbbb6d325c2 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP005", + "name": "0.20mm QUALITY HYBRID @RatRig", + "from": "system", + "inherits": "fdm_process_ratrig_common", + "instantiation": "true", + "layer_height": "0.2", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "sparse_infill_density": "25%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "15000", + "top_surface_acceleration": "15000", + "travel_acceleration": "15000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "8000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "250", + "inner_wall_speed": "350", + "internal_solid_infill_speed": "400", + "top_surface_speed": "400", + "gap_infill_speed": "200", + "sparse_infill_speed": "400", + "travel_speed": "600", + "internal_bridge_speed" : "100", + "bridge_speed": "50", + "detect_overhang_wall": "0", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "0", + "overhang_3_4_speed": "0", + "overhang_4_4_speed": "0", + "outer_wall_line_width": "0.45", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.3", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "18%", + "inner_wall_line_width": "0.5", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "top_shell_thickness": "0.9", + "wall_loops": "4", + "detect_thin_wall": "1", + "bridge_flow": "0.85", + "skirt_distance": "10", + "skirt_height": "1", + "skirt_loops": "2", + "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ], + "exclude_object": "0" +} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json deleted file mode 100644 index b65a4b50cd7..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.20mm Quality @RatRig V-Core 4 0.4", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.2", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "350", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "500", - "initial_layer_speed": "50", - "outer_wall_acceleration": "4000", - "inner_wall_acceleration": "8000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "2500", - "initial_layer_acceleration": "1500", - "travel_acceleration": "10000", - "default_acceleration": "10000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 500 0.4 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json deleted file mode 100644 index 1bc3d680c8d..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.20mm Quality @RatRig V-Core 4 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.2", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "350", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "500", - "initial_layer_speed": "50", - "outer_wall_acceleration": "4000", - "inner_wall_acceleration": "8000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "2500", - "initial_layer_acceleration": "1500", - "travel_acceleration": "10000", - "default_acceleration": "10000", - "line_width": "0.55", - "initial_layer_line_width": "0.7", - "inner_wall_line_width": "0.55", - "outer_wall_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "support_line_width": "0.55", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 500 0.5 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json deleted file mode 100644 index 4027e25c7fe..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.4", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.2", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json deleted file mode 100644 index be118426d12..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.2", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.55", - "initial_layer_line_width": "0.7", - "inner_wall_line_width": "0.55", - "outer_wall_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "support_line_width": "0.55", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json new file mode 100644 index 00000000000..fdf14cb6b34 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", + "layer_height": "0.25", + "top_surface_line_width": "0.45", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json new file mode 100644 index 00000000000..707c52291fe --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json @@ -0,0 +1,25 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED COREXY 0.5 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", + "outer_wall_line_width": "0.65", + "line_width": "0.55", + "initial_layer_line_width": "0.6", + "sparse_infill_line_width": "0.55", + "inner_wall_line_width": "0.6", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "wall_loops": "3", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle" + ], + "exclude_object": "0" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json new file mode 100644 index 00000000000..894b27a7bf9 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json @@ -0,0 +1,48 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED COREXY 0.6 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", + "outer_wall_line_width": "0.75", + "line_width": "0.65", + "initial_layer_line_width": "0.7", + "sparse_infill_line_width": "0.65", + "inner_wall_line_width": "0.7", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "wall_loops": "3", + "default_acceleration": "10000", + "top_surface_acceleration": "8000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "8000", + "outer_wall_acceleration": "5000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "150", + "inner_wall_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "200", + "gap_infill_speed": "200", + "sparse_infill_speed": "200", + "travel_speed": "500", + "internal_bridge_speed" : "60", + "bridge_speed": "30", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "detect_overhang_wall": "1", + "overhang_speed_classic": "1", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "60", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "20", + "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle" + ], + "exclude_object": "0" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json new file mode 100644 index 00000000000..5989ef38fc5 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED COREXY @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY @RatRig", + "layer_height": "0.25", + "top_surface_line_width": "0.45", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json new file mode 100644 index 00000000000..6601fc13db0 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", + "layer_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json new file mode 100644 index 00000000000..cda7600f802 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.5 @RatRig", + "layer_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json new file mode 100644 index 00000000000..5beff8f8b43 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.6 @RatRig", + "layer_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "150", + "inner_wall_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "200", + "gap_infill_speed": "200", + "sparse_infill_speed": "200", + "travel_speed": "500", + "internal_bridge_speed" : "60", + "bridge_speed": "30", + "print_settings_id": "", + "compatible_printers_condition": "", + "standby_temperature_delta": "-5", + "detect_overhang_wall": "1", + "overhang_speed_classic": "1", + "overhang_1_4_speed": "100", + "overhang_2_4_speed": "60", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "20" +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json new file mode 100644 index 00000000000..d56d2c2dd07 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm QUALITY_SPEED HYBRID @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID @RatRig", + "layer_height": "0.25", + "top_surface_line_width": "0.45", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json deleted file mode 100644 index 3bf5a1faa25..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 0.4", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "350", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "500", - "initial_layer_speed": "50", - "outer_wall_acceleration": "4000", - "inner_wall_acceleration": "8000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "2500", - "initial_layer_acceleration": "1500", - "travel_acceleration": "10000", - "default_acceleration": "10000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 500 0.4 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json deleted file mode 100644 index 5f9277cd55f..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "350", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "500", - "initial_layer_speed": "50", - "outer_wall_acceleration": "4000", - "inner_wall_acceleration": "8000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "2500", - "initial_layer_acceleration": "1500", - "travel_acceleration": "10000", - "default_acceleration": "10000", - "line_width": "0.55", - "initial_layer_line_width": "0.7", - "inner_wall_line_width": "0.55", - "outer_wall_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "support_line_width": "0.55", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 500 0.5 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json deleted file mode 100644 index 785ec5e762d..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.35", - "wall_count": "3", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "350", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "500", - "initial_layer_speed": "50", - "outer_wall_acceleration": "4000", - "inner_wall_acceleration": "8000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "2500", - "initial_layer_acceleration": "1500", - "travel_acceleration": "10000", - "default_acceleration": "10000", - "line_width": "0.65", - "initial_layer_line_width": "0.84", - "inner_wall_line_width": "0.65", - "outer_wall_line_width": "0.65", - "sparse_infill_line_width": "0.65", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "support_line_width": "0.65", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json deleted file mode 100644 index 24a7497b61b..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBIRD 500 0.4 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json deleted file mode 100644 index dbf3f1e9e4e..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.55", - "initial_layer_line_width": "0.7", - "inner_wall_line_width": "0.55", - "outer_wall_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "support_line_width": "0.55", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBIRD 500 0.5 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json deleted file mode 100644 index 975e82da8ab..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.65", - "initial_layer_line_width": "0.84", - "inner_wall_line_width": "0.65", - "outer_wall_line_width": "0.65", - "sparse_infill_line_width": "0.65", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "support_line_width": "0.65", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBIRD 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json new file mode 100644 index 00000000000..975b6e3515d --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED COREXY 0.4 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", + "layer_height": "0.25", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "20000", + "top_surface_acceleration": "20000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "15000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "500", + "inner_wall_speed": "500", + "internal_solid_infill_speed": "500", + "top_surface_speed": "500", + "gap_infill_speed": "500", + "sparse_infill_speed": "500", + "travel_speed": "800", + "internal_bridge_speed" : "150", + "bridge_speed": "150" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json new file mode 100644 index 00000000000..beded075aec --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED COREXY 0.5 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY 0.5 @RatRig", + "layer_height": "0.25", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "20000", + "top_surface_acceleration": "20000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "15000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "500", + "inner_wall_speed": "500", + "internal_solid_infill_speed": "500", + "top_surface_speed": "500", + "gap_infill_speed": "500", + "sparse_infill_speed": "500", + "travel_speed": "800", + "internal_bridge_speed" : "150", + "bridge_speed": "150" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json new file mode 100644 index 00000000000..fbb96a2eebf --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED COREXY 0.6 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY 0.6 @RatRig", + "layer_height": "0.25", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "10000", + "top_surface_acceleration": "10000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "8000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "300", + "outer_wall_speed": "300", + "inner_wall_speed": "300", + "internal_solid_infill_speed": "300", + "top_surface_speed": "300", + "gap_infill_speed": "300", + "sparse_infill_speed": "300", + "travel_speed": "500", + "internal_bridge_speed" : "100", + "bridge_speed": "100" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json new file mode 100644 index 00000000000..efb44d98e25 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED COREXY @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY COREXY @RatRig", + "layer_height": "0.25", + "top_surface_line_width": "0.45", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "20000", + "top_surface_acceleration": "20000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "15000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "500", + "inner_wall_speed": "500", + "internal_solid_infill_speed": "500", + "top_surface_speed": "500", + "gap_infill_speed": "500", + "sparse_infill_speed": "500", + "travel_speed": "800", + "internal_bridge_speed" : "150", + "bridge_speed": "150" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json new file mode 100644 index 00000000000..9e0eaf0ba1e --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED HYBRID 0.4 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", + "layer_height": "0.25", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "20000", + "top_surface_acceleration": "20000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "15000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "500", + "inner_wall_speed": "500", + "internal_solid_infill_speed": "500", + "top_surface_speed": "500", + "gap_infill_speed": "500", + "sparse_infill_speed": "500", + "travel_speed": "800", + "internal_bridge_speed" : "150", + "bridge_speed": "150" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json new file mode 100644 index 00000000000..e1d046d9cc1 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED HYBRID 0.5 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.5 @RatRig", + "layer_height": "0.25", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "20000", + "top_surface_acceleration": "20000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "15000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "500", + "inner_wall_speed": "500", + "internal_solid_infill_speed": "500", + "top_surface_speed": "500", + "gap_infill_speed": "500", + "sparse_infill_speed": "500", + "travel_speed": "800", + "internal_bridge_speed" : "150", + "bridge_speed": "150" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json new file mode 100644 index 00000000000..7e67ad3eb48 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json @@ -0,0 +1,31 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED HYBRID 0.6 @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID 0.6 @RatRig", + "layer_height": "0.25", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "15000", + "top_surface_acceleration": "15000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "8000", + "outer_wall_acceleration": "8000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "300", + "inner_wall_speed": "300", + "internal_solid_infill_speed": "300", + "top_surface_speed": "300", + "gap_infill_speed": "300", + "sparse_infill_speed": "300", + "travel_speed": "800", + "internal_bridge_speed" : "100", + "bridge_speed": "100" +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json new file mode 100644 index 00000000000..f654271216e --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm SPEED HYBRID @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "0.20mm QUALITY HYBRID @RatRig", + "layer_height": "0.25", + "top_surface_line_width": "0.45", + "wall_loops": "2", + "bottom_shell_layers": "2", + "top_shell_layers": "3", + "sparse_infill_density": "10%", + "sparse_infill_pattern": "adaptivecubic", + "default_acceleration": "20000", + "top_surface_acceleration": "20000", + "travel_acceleration": "10000", + "inner_wall_acceleration": "10000", + "outer_wall_acceleration": "15000", + "initial_layer_acceleration": "2500", + "initial_layer_speed": "200", + "initial_layer_infill_speed": "200", + "outer_wall_speed": "500", + "inner_wall_speed": "500", + "internal_solid_infill_speed": "500", + "top_surface_speed": "500", + "gap_infill_speed": "500", + "sparse_infill_speed": "500", + "travel_speed": "800", + "internal_bridge_speed" : "150", + "bridge_speed": "150" +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json deleted file mode 100644 index c14483511d2..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 0.4", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "400", - "small_perimeter_speed": "350", - "outer_wall_speed": "400", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "200", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "10000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.4 nozzle", - "RatRig V-Core 4 400 0.4 nozzle", - "RatRig V-Core 4 500 0.4 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json deleted file mode 100644 index c720ad9ad13..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "400", - "small_perimeter_speed": "350", - "outer_wall_speed": "400", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "200", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "10000", - "line_width": "0.55", - "initial_layer_line_width": "0.7", - "inner_wall_line_width": "0.55", - "outer_wall_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "support_line_width": "0.55", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.5 nozzle", - "RatRig V-Core 4 400 0.5 nozzle", - "RatRig V-Core 4 500 0.5 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json deleted file mode 100644 index 1ff1df93c80..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "400", - "small_perimeter_speed": "350", - "outer_wall_speed": "400", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "200", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "10000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json deleted file mode 100644 index c277f10ff36..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.4", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "500", - "small_perimeter_speed": "500", - "outer_wall_speed": "500", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "800", - "initial_layer_speed": "200", - "outer_wall_acceleration": "15000", - "inner_wall_acceleration": "20000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "20000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "10000", - "default_acceleration": "20000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json deleted file mode 100644 index d9351ba3b13..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "500", - "small_perimeter_speed": "500", - "outer_wall_speed": "500", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "800", - "initial_layer_speed": "200", - "outer_wall_acceleration": "15000", - "inner_wall_acceleration": "20000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "20000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "10000", - "default_acceleration": "20000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json deleted file mode 100644 index 00d6c2113fc..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "500", - "small_perimeter_speed": "500", - "outer_wall_speed": "500", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "800", - "initial_layer_speed": "200", - "outer_wall_acceleration": "15000", - "inner_wall_acceleration": "20000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "20000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "10000", - "default_acceleration": "20000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json b/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json index e0935d7fe50..483f763f0d0 100644 --- a/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json +++ b/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json @@ -1,21 +1,12 @@ -{ - "type": "process", - "setting_id": "GP007", - "name": "0.28mm Extra Draft @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.28", - "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "process", + "setting_id": "GP007", + "name": "0.28mm Extra Draft @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.28", + "top_surface_line_width": "0.45", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json deleted file mode 100644 index 70df1a4edbd..00000000000 --- a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.30mm Big @RatRig V-Core 4 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.3", - "inital_layer_height": "0.35", - "wall_count": "3", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "350", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "500", - "initial_layer_speed": "50", - "enable_overhang_speed": "1", - "overhang_1_4_speed": "20", - "overhang_2_4_speed": "45", - "overhang_3_4_speed": "80", - "overhang_4_4_speed": "100", - "outer_wall_acceleration": "4000", - "inner_wall_acceleration": "8000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "2500", - "initial_layer_acceleration": "1500", - "travel_acceleration": "10000", - "default_acceleration": "10000", - "line_width": "0.65", - "initial_layer_line_width": "0.84", - "inner_wall_line_width": "0.65", - "outer_wall_line_width": "0.65", - "sparse_infill_line_width": "0.65", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "support_line_width": "0.65", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json deleted file mode 100644 index 0bbc5f062e2..00000000000 --- a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.30mm Big @RatRig V-Core 4 HYBRID 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.3", - "inital_layer_height": "0.35", - "wall_count": "3", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "enable_overhang_speed": "1", - "overhang_1_4_speed": "20", - "overhang_2_4_speed": "45", - "overhang_3_4_speed": "80", - "overhang_4_4_speed": "100", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.65", - "initial_layer_line_width": "0.84", - "inner_wall_line_width": "0.65", - "outer_wall_line_width": "0.65", - "sparse_infill_line_width": "0.65", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "support_line_width": "0.65", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/process/fdm_process_common.json b/resources/profiles/Ratrig/process/fdm_process_common.json index 1da14b4d918..c00f623e363 100644 --- a/resources/profiles/Ratrig/process/fdm_process_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_common.json @@ -1,70 +1,70 @@ -{ - "type": "process", - "name": "fdm_process_common", - "from": "system", - "instantiation": "false", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "compatible_printers": [], - "print_sequence": "by layer", - "default_acceleration": "10000", - "bridge_no_support": "0", - "elefant_foot_compensation": "0.1", - "outer_wall_line_width": "0.4", - "outer_wall_speed": "120", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_line_width": "0.42", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "20", - "gap_infill_speed": "30", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "sparse_infill_speed": "50", - "interface_shells": "0", - "detect_overhang_wall": "0", - "reduce_infill_retraction": "0", - "filename_format": "{input_filename_base}.gcode", - "wall_loops": "3", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "40", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "nearest", - "skirt_distance": "2", - "skirt_height": "2", - "minimum_sparse_infill_area": "0", - "internal_solid_infill_line_width": "0.45", - "internal_solid_infill_speed": "40", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.15", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2", - "support_speed": "40", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.5", - "detect_thin_wall": "0", - "top_surface_line_width": "0.4", - "top_surface_speed": "30", - "travel_speed": "400", - "enable_prime_tower": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0" -} +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "compatible_printers": [], + "print_sequence": "by layer", + "default_acceleration": "10000", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "3", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "40", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.4", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index e5da6affa15..eb2392a9950 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -1,115 +1,118 @@ -{ - "type": "process", - "name": "fdm_process_ratrig_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_common", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.80", - "bridge_speed": "25", - "internal_bridge_speed" : "70", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "5000", - "top_surface_acceleration": "3000", - "travel_acceleration": "5000", - "inner_wall_acceleration": "5000", - "outer_wall_acceleration": "3000", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "outer_wall_line_width": "0.4", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.4", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "crosshatch", - "initial_layer_acceleration": "500", - "initial_layer_line_width": "0.45", - "inital_layer_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.4", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "60", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.40", - "wall_loops": "3", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "minimum_sparse_infill_area": "15", - "internal_solid_infill_line_width": "0.4", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.4", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonicline", - "top_surface_line_width": "0.4", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "105", - "outer_wall_speed": "120", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "top_surface_speed": "100", - "gap_infill_speed": "100", - "sparse_infill_speed": "200", - "travel_speed": "350", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "enable_arc_fitting": "0", - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ], - "exclude_object": "1" -} +{ + "type": "process", + "name": "fdm_process_ratrig_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_common", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "0.80", + "bridge_speed": "25", + "internal_bridge_speed" : "70", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "5000", + "top_surface_acceleration": "3000", + "travel_acceleration": "5000", + "inner_wall_acceleration": "5000", + "outer_wall_acceleration": "3000", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.4", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.4", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "layer_height": "0.2", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "60", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.40", + "wall_loops": "4", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.4", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.4", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonic", + "top_surface_line_width": "0.4", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "105", + "outer_wall_speed": "120", + "inner_wall_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "200", + "travel_speed": "350", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "enable_arc_fitting": "0", + "wall_count" :"4", + "initial_layer_height" : "0.3", + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ], + "exclude_object": "1" +} + From 2c424653528f3f3dfce5f810c343abef28d13661 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Wed, 18 Sep 2024 14:23:49 -0400 Subject: [PATCH 12/64] Fix some bugs --- ...ver.png => RatRig V-Core 4 300 COREXY_cover.png} | Bin ...ver.png => RatRig V-Core 4 400 COREXY_cover.png} | Bin ...ver.png => RatRig V-Core 4 500 COREXY_cover.png} | Bin .../RatRig V-Core 4 COREXY 300 0.5 nozzle.json | 10 +++++----- .../RatRig V-Core 4 COREXY 300 0.6 nozzle.json | 10 +++++----- .../RatRig V-Core 4 COREXY 400 0.5 nozzle.json | 6 +++--- .../RatRig V-Core 4 COREXY 400 0.6 nozzle.json | 6 +++--- .../RatRig V-Core 4 COREXY 500 0.5 nozzle.json | 12 ++++++------ .../RatRig V-Core 4 COREXY 500 0.6 nozzle.json | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) rename resources/profiles/Ratrig/{RatRig V-Core 4 300_cover.png => RatRig V-Core 4 300 COREXY_cover.png} (100%) rename resources/profiles/Ratrig/{RatRig V-Core 4 400_cover.png => RatRig V-Core 4 400 COREXY_cover.png} (100%) rename resources/profiles/Ratrig/{RatRig V-Core 4 500_cover.png => RatRig V-Core 4 500 COREXY_cover.png} (100%) diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 300_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 300 COREXY_cover.png similarity index 100% rename from resources/profiles/Ratrig/RatRig V-Core 4 300_cover.png rename to resources/profiles/Ratrig/RatRig V-Core 4 300 COREXY_cover.png diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 400_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 400 COREXY_cover.png similarity index 100% rename from resources/profiles/Ratrig/RatRig V-Core 4 400_cover.png rename to resources/profiles/Ratrig/RatRig V-Core 4 400 COREXY_cover.png diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 500_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 500 COREXY_cover.png similarity index 100% rename from resources/profiles/Ratrig/RatRig V-Core 4 500_cover.png rename to resources/profiles/Ratrig/RatRig V-Core 4 500 COREXY_cover.png diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json index ae501bbcc52..d17e27faa55 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json @@ -7,11 +7,11 @@ "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", "printer_model": "RatRig V-Core 4 COREXY 300", "max_layer_height": [ - "0.07" - ], - "min_layer_height": [ - "0.32" - ], + "0.07" + ], + "min_layer_height": [ + "0.32" + ], "nozzle_diameter": [ "0.5" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json index 6a5e1b90c8f..cb2e41ce81c 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json @@ -7,11 +7,11 @@ "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", "printer_model": "RatRig V-Core 4 COREXY 300", "max_layer_height": [ - "0.1" - ], - "min_layer_height": [ - "0.4" - ], + "0.1" + ], + "min_layer_height": [ + "0.4" + ], "nozzle_diameter": [ "0.6" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json index a4ec2b52407..c8baaf3d557 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json @@ -8,10 +8,10 @@ "printer_model": "RatRig V-Core 4 COREXY 400", "max_layer_height": [ "0.07" -], -"min_layer_height": [ + ], + "min_layer_height": [ "0.32" -], + ], "nozzle_diameter": [ "0.5" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json index e82cdafefcc..d4642d3b1f5 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json @@ -8,10 +8,10 @@ "printer_model": "RatRig V-Core 4 COREXY 400", "max_layer_height": [ "0.1" -], -"min_layer_height": [ + ], + "min_layer_height": [ "0.4" -], + ], "nozzle_diameter": [ "0.6" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json index 1abb9e608aa..f52bb1d9d84 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json @@ -8,13 +8,13 @@ "printer_model": "RatRig V-Core 4 COREXY 500", "max_layer_height": [ "0.07" -], -"min_layer_height": [ + ], + "min_layer_height": [ "0.32" -], -"nozzle_diameter": [ -"0.5" -], + ], + "nozzle_diameter": [ + "0.5" + ], "printable_area": [ "0x0", "500x0", diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json index 433461df2e6..a130cf14b8f 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json @@ -8,13 +8,13 @@ "printer_model": "RatRig V-Core 4 COREXY 500", "max_layer_height": [ "0.1" -], -"min_layer_height": [ + ], + "min_layer_height": [ "0.4" -], -"nozzle_diameter": [ -"0.6" -], + ], + "nozzle_diameter": [ + "0.6" + ], "printable_area": [ "0x0", "500x0", From f1b91b706e74a859b4eea73a86b8bce8c1202ff4 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 19 Sep 2024 15:05:24 -0400 Subject: [PATCH 13/64] Fix parent errors --- .../process/fdm_process_ratrig_common.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index eb2392a9950..a130c074c27 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -105,6 +105,24 @@ "wall_count" :"4", "initial_layer_height" : "0.3", "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle", "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", "RatRig V-Core 3 400 0.4 nozzle", From dda540fa5dd55ac3d9d1e7e24850d50976ba546a Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 19 Sep 2024 17:25:41 -0400 Subject: [PATCH 14/64] Revert "Fix parent errors" This reverts commit f1b91b706e74a859b4eea73a86b8bce8c1202ff4. --- .../process/fdm_process_ratrig_common.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index a130c074c27..eb2392a9950 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -105,24 +105,6 @@ "wall_count" :"4", "initial_layer_height" : "0.3", "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle", "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", "RatRig V-Core 3 400 0.4 nozzle", From 1d2c28f92994eb030fdf8922c33a2ecd0ace7ead Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Sun, 22 Sep 2024 15:39:32 +0800 Subject: [PATCH 15/64] update gcodes - add if 1==1 to switch the feature of wipe nozzles. - fix the hold point of the right nozzle in J1 during multi-material printing. --- resources/profiles/Snapmaker.json | 4 ++-- .../profiles/Snapmaker/filament/fdm_filament_breakaway.json | 3 +++ resources/profiles/Snapmaker/machine/fdm_a250.json | 2 +- resources/profiles/Snapmaker/machine/fdm_a250_dual.json | 2 +- resources/profiles/Snapmaker/machine/fdm_a350.json | 2 +- resources/profiles/Snapmaker/machine/fdm_a350_dual.json | 2 +- resources/profiles/Snapmaker/machine/fdm_a400.json | 2 +- resources/profiles/Snapmaker/machine/fdm_idex.json | 2 +- 8 files changed, 11 insertions(+), 8 deletions(-) diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 93b15214326..72d5bd4becf 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.01.02.00", + "version": "02.01.03.00", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ @@ -1339,4 +1339,4 @@ "sub_path": "machine/Snapmaker Artisan (0.8 nozzle).json" } ] -} \ No newline at end of file +} diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json b/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json index 6441a7aa671..73addc11186 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_breakaway.json @@ -4,6 +4,9 @@ "instantiation": "false", "name": "fdm_filament_breakaway", "inherits": "fdm_filament_common", + "filament_is_support": [ + "1" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/Snapmaker/machine/fdm_a250.json b/resources/profiles/Snapmaker/machine/fdm_a250.json index 8c1fb277fad..4a177a83bae 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250.json @@ -14,7 +14,7 @@ "230x250", "0x250" ], - "machine_start_gcode": "; Model: Snapmaker A250\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z153 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A250\n; Update: 20240922\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z153 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-5 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a250_dual.json b/resources/profiles/Snapmaker/machine/fdm_a250_dual.json index 4515a509f7e..09be312c71a 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a250_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_a250_dual.json @@ -20,7 +20,7 @@ "230x250", "0x250" ], - "machine_start_gcode": "; Model: Snapmaker A250 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z126 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A250 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240922\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z126 F960.0\nG0 Y125.0 F3420.0\nG0 X115.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X230\n G0 Y250\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n {if 1==1}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n {endif}\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 130.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 55.0 : 175.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 230 )} E3.42995 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" diff --git a/resources/profiles/Snapmaker/machine/fdm_a350.json b/resources/profiles/Snapmaker/machine/fdm_a350.json index f253dc2575b..dea0f9cdad7 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350.json @@ -14,7 +14,7 @@ "320x350", "0x350" ], - "machine_start_gcode": "; Model: Snapmaker A350\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z216 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A350\n; Update: 20240922\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\nM104 S165\nM204 S100\nG28\nG0 Z216 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E15 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E9.0 F200\nG92 E0\nG1 E6.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-5 F200\nG28\n\n M104 S0\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" } \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_a350_dual.json b/resources/profiles/Snapmaker/machine/fdm_a350_dual.json index e2eb4282919..83448eaa908 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a350_dual.json +++ b/resources/profiles/Snapmaker/machine/fdm_a350_dual.json @@ -20,7 +20,7 @@ "320x350", "0x350" ], - "machine_start_gcode": "; Model: Snapmaker A350 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z190 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker A350 Dual ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240922\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z190 F960.0\nG0 Y175.0 F3420.0\nG0 X160.0\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F3420.0\n G0 X320\n G0 Y350\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n {if 1==1}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F3420.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F3420.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n {endif}\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 145.0 : 175.0 )} F3420.0\nG0 Y0 F3420.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 100.0 : 220.0 )} F3420.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 320 )} E6.23628 F3420.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F3420.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" diff --git a/resources/profiles/Snapmaker/machine/fdm_a400.json b/resources/profiles/Snapmaker/machine/fdm_a400.json index f68fd4c72f8..f21783f25a9 100644 --- a/resources/profiles/Snapmaker/machine/fdm_a400.json +++ b/resources/profiles/Snapmaker/machine/fdm_a400.json @@ -52,7 +52,7 @@ "400x400", "0x400" ], - "machine_start_gcode": "; Model: Snapmaker Artisan ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z266 F960.0\nG0 Y200.0 F6840.0\nG0 X200.0\n\n{if first_layer_print_min[0] >= 70 && first_layer_print_max[0] <= 330 && first_layer_print_min[1] >= 70 && first_layer_print_max[1] <= 330}\nM190 P0 R{first_layer_bed_temperature[initial_extruder]} ;only inner part of the bed\n{else}\nM190 R{first_layer_bed_temperature[initial_extruder]}\n{endif}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F6840.0\n G0 X400\n G0 Y400\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker Artisan ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240922\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\nG0 Z266 F960.0\nG0 Y200.0 F6840.0\nG0 X200.0\n\n{if first_layer_print_min[0] >= 70 && first_layer_print_max[0] <= 330 && first_layer_print_min[1] >= 70 && first_layer_print_max[1] <= 330}\nM190 P0 R{first_layer_bed_temperature[initial_extruder]} ;only inner part of the bed\n{else}\nM190 R{first_layer_bed_temperature[initial_extruder]}\n{endif}\n\nG28\n{if 0==1} ; boundary check(for dual/quick swap kit), not recommanded if there are any clamps \n G0 X0\n G0 Z0.2 F960.0\n G0 Y0 F6840.0\n G0 X400\n G0 Y400\n G0 X0\n G0 Y0\n{endif}\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n {if 1==1}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 0 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( 1 % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n {endif}\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F960.0\nG0 X{( initial_extruder % 2 == 0 ? 185.0 : 215.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 140.0 : 260.0 )} F6840.0\nG0 Z0.3 F960.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 400 )} E8.73079 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num]\n; layer\nT{next_extruder}\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n ; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\n M140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_num == 1}\n G1 E{retraction_length[next_extruder]} F200;deretract\n{endif}\n\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n; M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n; End Toolchange\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" diff --git a/resources/profiles/Snapmaker/machine/fdm_idex.json b/resources/profiles/Snapmaker/machine/fdm_idex.json index 1c09ea45b5a..62000328f79 100644 --- a/resources/profiles/Snapmaker/machine/fdm_idex.json +++ b/resources/profiles/Snapmaker/machine/fdm_idex.json @@ -100,7 +100,7 @@ "Snapmaker J1 PLA", "Snapmaker J1 PETG" ], - "machine_start_gcode": "; Model: Snapmaker J1 ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240823\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\n{if plate_name =~/.*IDEXDupl.*/ || plate_name =~/.*IDEXCopy.*/ }\n M605 S2 X162 R0 ;IDEX Duplication\n{elsif plate_name =~/.*IDEXMirr.*/}\n M605 S3 ;IDEX Mirror\n{elsif plate_name =~/.*IDEXBack.*/}\n M605 S4 ;IDEX Backup\n{endif}\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\n\nG0 Z100.0\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\n G0 X{if 0 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\n G0 X{if 1 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\n{if 1==1}; LED\n M355 S1 P64\n G4 P100\n M355 S1 P128\n G4 P100\n M355 S1 P64\n G4 P200\n M355 S1 P255\n G4 P100\n{endif}\nG28 X Y\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 0 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 1 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( initial_extruder % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", + "machine_start_gcode": "; Model: Snapmaker J1 ({nozzle_diameter[0]}/{nozzle_diameter[1]})\n; Update: 20240922\n; Maintained by https://github.com/macdylan/3dp-configs\n; Printer : [printer_preset]\n; Profile : [print_preset]\n; Plate : [plate_name]\n; --- initial_extruder: [initial_extruder]\n; --- has_wipe_tower: [has_wipe_tower]\n; --- total_toolchanges: [total_toolchanges]\n; --- T0: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - 1, 0))]}\n; --- T1: {is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - 0, 0))]}\n\nT[initial_extruder]\n\nM205 V[machine_max_jerk_x] ;Junction Deviation (mm)\n\n{if plate_name =~/.*IDEXDupl.*/ || plate_name =~/.*IDEXCopy.*/ }\n M605 S2 X162 R0 ;IDEX Duplication\n{elsif plate_name =~/.*IDEXMirr.*/}\n M605 S3 ;IDEX Mirror\n{elsif plate_name =~/.*IDEXBack.*/}\n M605 S4 ;IDEX Backup\n{endif}\n\nM140 S{first_layer_bed_temperature[initial_extruder]}\n\n; you can clean the nozzle\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S165\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n M104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S165\n {endif}\nM204 S100\nG28\n\nG0 Z100.0\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\n G0 X{if 0 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\n G0 X{if 1 == 0}80{else}240{endif} Y0 F6840.0\n {endif}\n\nM190 R{first_layer_bed_temperature[initial_extruder]}\n\n{if 1==1}; LED\n M355 S1 P64\n G4 P100\n M355 S1 P128\n G4 P100\n M355 S1 P64\n G4 P200\n M355 S1 P255\n G4 P100\n{endif}\nG28 X Y\n\nM83\n{if 1==1 && max(hot_plate_temp_initial_layer[initial_extruder], hot_plate_temp[initial_extruder]) >= 90}\nG0 Z0.06\nG92 Z0 ;reset z\n{endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n; preheat 0\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n; preheat 1\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}\n {endif}\n\n {if 1==1}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] and (initial_extruder % 2) != 0}\n; flush nozzle 0\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 0 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 0 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 0 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[0]} F200\nG92 E0\nG0 Y20 F6840.0\nG28 X F6840.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\n {endif}\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] and (initial_extruder % 2) != 1}\n; flush nozzle 1\nT{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))}\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( 1 % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( 1 % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( 1 % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retract_length_toolchange[1]} F200\nG92 E0\nG0 Y20 F6840.0\nG28 X F6840.0\n\nM104 S{temperature_vitrification[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\n {endif}\n\n {endif}\n; flush initial nozzle\nT[initial_extruder]\nM104 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))}; common flush temp\nG0 Z1.6 F240.0\nG0 X{( initial_extruder % 2 == 0 ? 147.0 : 177.0 )} F6840.0\nG0 Y0 F6840.0\n\nM109 S{max(250, min(290, nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 15))} C2 W1\nG1 E20 F80.0\nG92 E0\n\nM106 S{min(255, (fan_max_speed[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 10) * 2.55)}\n\nM104 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))] + 5}\n\nG1 E12.0 F200\nG92 E0\nG1 E8.0 Z4.6 F200\nG92 E0\n\nG0 Z5.6 F200\nM107\n\nG0 X{( initial_extruder % 2 == 0 ? 137.0 : 187.0 )} F6840.0\nG0 Z0.3 F240.0\nM109 S{nozzle_temperature_initial_layer[(initial_extruder % 2 == 0 ? min(initial_extruder + initial_extruder, 63) : max(initial_extruder - (1-initial_extruder), 0))]} C3 W1\nG1 E3 F200\nG92 E0\nG1 X{( initial_extruder % 2 == 0 ? 0 : 324 )} E8.5437 F6840.0\nG92 E0\n\nG1 E-{retraction_length[initial_extruder]} F200\nG92 E0\nG0 Y20 F6840.0\n\n; ready [plate_name]", "machine_end_gcode": "G92 E0\n\nG0 Z{max_layer_z + 2.0} F600\n; retract the filament to make it easier to replace\nG0 E-10 F200\nG28\n\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 0, 63) : max(initial_extruder - (1-0), 0))} S0\n {endif}\n{if is_extruder_used[(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))]}\nM104 T{(initial_extruder % 2 == 0 ? min(initial_extruder + 1, 63) : max(initial_extruder - (1-1), 0))} S0\n {endif}\nM140 S0\nM107\nM220 S100\nM84\n\n;\n; DON'T REMOVE these lines if you're using the smfix (https://github.com/macdylan/SMFix)\n; min_x = [first_layer_print_min_0]\n; min_y = [first_layer_print_min_1]\n; max_x = [first_layer_print_max_0]\n; max_y = [first_layer_print_max_1]\n; max_z = [max_layer_z]\n; total_layer_number = [layer_num]\n;", "change_filament_gcode": ";***** Update: 20240823\n{if current_extruder != next_extruder}\n; Change T[current_extruder] -> T[next_extruder] (layer [layer_num] [toolchange_count]/[total_toolchanges])\n; layer [layer_num] at [layer_z]mm\nT[next_extruder]\n\n M107 P[current_extruder] ;fan off T[current_extruder]\n\n{if layer_num == 1 &&\n ((filament_type[current_extruder] == \"PLA\" || filament_type[current_extruder] == \"TPU\")\n || (filament_type[next_extruder] == \"PLA\" || filament_type[next_extruder] == \"TPU\"))\n}\n; set bed temp: {filament_type[current_extruder]}({bed_temperature[current_extruder]}) -> {filament_type[next_extruder]}({bed_temperature[next_extruder]})\nM140 S{min(bed_temperature[current_extruder], bed_temperature[next_extruder])}\n{endif}\n\nM2000 S200 V[travel_speed] A[travel_acceleration] ;quick switch extruders, S:200 mode/V:speed/A:acceleration\nM109 T[next_extruder] S{if layer_num < 1}[nozzle_temperature_initial_layer]{else}[nozzle_temperature]{endif} C3 W1 ;wait T[next_extruder]\n{if layer_z > first_layer_height && layer_num >= close_fan_the_first_x_layers[next_extruder]}\n M106 P[next_extruder] S{fan_min_speed[next_extruder] * 255.0 / 100.0} ;restore fan speed for T[next_extruder]\n{endif}\n{endif}", "before_layer_change_gcode": "; layer_num: [layer_num]\nG92 E0" From e755d781e17190f2dc1778e4fa4ab8621742bf1d Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 26 Sep 2024 15:24:28 +0800 Subject: [PATCH 16/64] Support multi-line progress information rendering --- .../GUI/SlicingProgressNotification.cpp | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/slic3r/GUI/SlicingProgressNotification.cpp b/src/slic3r/GUI/SlicingProgressNotification.cpp index bedcbc2eb7c..e6ea1a312b7 100644 --- a/src/slic3r/GUI/SlicingProgressNotification.cpp +++ b/src/slic3r/GUI/SlicingProgressNotification.cpp @@ -31,14 +31,13 @@ void NotificationManager::SlicingProgressNotification::init() m_endlines.push_back(0); } if (m_lines_count >= 2) { - m_lines_count = 3; + m_lines_count = std::min((size_t)3, m_lines_count); m_multiline = true; - while (m_endlines.size() < 3) + while (m_endlines.size() < m_lines_count) m_endlines.push_back(m_endlines.back()); } else { - m_lines_count = 2; - m_endlines.push_back(m_endlines.back()); + m_lines_count = 1; m_multiline = false; } if (m_state == EState::Shown) @@ -222,7 +221,7 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas const ImVec2 dailytips_child_window_padding = m_dailytips_panel->is_expanded() ? ImVec2(15.f, 10.f) * scale : ImVec2(15.f, 0.f) * scale; const ImVec2 bottom_padding = ImVec2(0.f, 0.f) * scale; const float progress_panel_width = (m_window_width - 2 * progress_child_window_padding.x); - const float progress_panel_height = (58.0f * scale); + const float progress_panel_height = (58.0f * scale) + (m_lines_count - 1) * m_line_height; const float dailytips_panel_width = (m_window_width - 2 * dailytips_child_window_padding.x); const float gcodeviewer_height = wxGetApp().plater()->get_preview_canvas3D()->get_gcode_viewer().get_legend_height(); //const float dailytips_panel_height = std::min(380.0f * scale, std::max(90.0f, (cnv_size.get_height() - gcodeviewer_height - progress_panel_height - dailytips_child_window_padding.y - initial_y - m_line_height * 4))); @@ -272,11 +271,12 @@ void NotificationManager::SlicingProgressNotification::render(GLCanvas3D& canvas if (ImGui::BeginChild(child_name.c_str(), ImVec2(progress_panel_width, progress_panel_height), false, child_window_flags)) { ImVec2 child_window_pos = ImGui::GetWindowPos(); ImVec2 button_size = ImVec2(38.f, 38.f) * scale; - ImVec2 button_pos = child_window_pos + ImVec2(progress_panel_width - button_size.x, (progress_panel_height - button_size.y) / 2.0f); float margin_x = 8.0f * scale; - ImVec2 progress_bar_pos = child_window_pos + ImVec2(0, progress_panel_height / 2.0f); ImVec2 progress_bar_size = ImVec2(progress_panel_width - button_size.x - margin_x, 4.0f * scale); - ImVec2 text_pos = ImVec2(progress_bar_pos.x, progress_bar_pos.y - m_line_height * 1.2f); + float text_bottom = progress_bar_size.y + m_line_height * 1.2f + 7.f * scale; + ImVec2 progress_bar_pos = child_window_pos + ImVec2(0, progress_panel_height - text_bottom); + ImVec2 button_pos = child_window_pos + ImVec2(progress_panel_width - button_size.x, progress_panel_height - text_bottom - button_size.y / 2.0f); + ImVec2 text_pos = ImVec2(progress_bar_pos.x, progress_bar_pos.y - m_line_height * (1.2f + m_lines_count - 1)); render_text(text_pos); render_close_button(button_pos, button_size); @@ -353,9 +353,13 @@ void Slic3r::GUI::NotificationManager::SlicingProgressNotification::render_text( imgui.pop_bold_font(); } if(m_sp_state == SlicingProgressState::SP_PROGRESS) { - //one line text - ImGui::SetCursorScreenPos(pos); - imgui.text(m_text1.substr(0, m_endlines[0]).c_str()); + // multi-line text + int last_end = 0; + for (auto i = 0; i < m_lines_count; i++) { + ImGui::SetCursorScreenPos(pos + ImVec2(0, i * m_line_height)); + imgui.text(m_text1.substr(last_end, m_endlines[i] - last_end).c_str()); + last_end = m_endlines[i]; + } } } From d989da6047641890a83f95452689b30ff1b46cf5 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 26 Sep 2024 14:39:44 -0400 Subject: [PATCH 17/64] Reapply "Fix parent errors" This reverts commit dda540fa5dd55ac3d9d1e7e24850d50976ba546a. --- .../process/fdm_process_ratrig_common.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index eb2392a9950..a130c074c27 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -105,6 +105,24 @@ "wall_count" :"4", "initial_layer_height" : "0.3", "compatible_printers": [ + "RatRig V-Core 4 COREXY 300 0.4 nozzle", + "RatRig V-Core 4 COREXY 300 0.5 nozzle", + "RatRig V-Core 4 COREXY 300 0.6 nozzle", + "RatRig V-Core 4 COREXY 400 0.4 nozzle", + "RatRig V-Core 4 COREXY 400 0.5 nozzle", + "RatRig V-Core 4 COREXY 400 0.6 nozzle", + "RatRig V-Core 4 COREXY 500 0.4 nozzle", + "RatRig V-Core 4 COREXY 500 0.5 nozzle", + "RatRig V-Core 4 COREXY 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle", "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", "RatRig V-Core 3 400 0.4 nozzle", From 0e3a841f03b77ec1994d1a62837d6e2bfb21d628 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 26 Sep 2024 14:39:48 -0400 Subject: [PATCH 18/64] Revert "Fix parent errors" This reverts commit f1b91b706e74a859b4eea73a86b8bce8c1202ff4. --- .../process/fdm_process_ratrig_common.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index a130c074c27..eb2392a9950 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -105,24 +105,6 @@ "wall_count" :"4", "initial_layer_height" : "0.3", "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle", "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", "RatRig V-Core 3 400 0.4 nozzle", From de4af309213c47ef8bd3fba5e7ebf3c2a9c86ea0 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 26 Sep 2024 14:39:54 -0400 Subject: [PATCH 19/64] Revert "Fix some bugs" This reverts commit 2c424653528f3f3dfce5f810c343abef28d13661. --- ...REXY_cover.png => RatRig V-Core 4 300_cover.png} | Bin ...REXY_cover.png => RatRig V-Core 4 400_cover.png} | Bin ...REXY_cover.png => RatRig V-Core 4 500_cover.png} | Bin .../RatRig V-Core 4 COREXY 300 0.5 nozzle.json | 10 +++++----- .../RatRig V-Core 4 COREXY 300 0.6 nozzle.json | 10 +++++----- .../RatRig V-Core 4 COREXY 400 0.5 nozzle.json | 6 +++--- .../RatRig V-Core 4 COREXY 400 0.6 nozzle.json | 6 +++--- .../RatRig V-Core 4 COREXY 500 0.5 nozzle.json | 12 ++++++------ .../RatRig V-Core 4 COREXY 500 0.6 nozzle.json | 12 ++++++------ 9 files changed, 28 insertions(+), 28 deletions(-) rename resources/profiles/Ratrig/{RatRig V-Core 4 300 COREXY_cover.png => RatRig V-Core 4 300_cover.png} (100%) rename resources/profiles/Ratrig/{RatRig V-Core 4 400 COREXY_cover.png => RatRig V-Core 4 400_cover.png} (100%) rename resources/profiles/Ratrig/{RatRig V-Core 4 500 COREXY_cover.png => RatRig V-Core 4 500_cover.png} (100%) diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 300 COREXY_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 300_cover.png similarity index 100% rename from resources/profiles/Ratrig/RatRig V-Core 4 300 COREXY_cover.png rename to resources/profiles/Ratrig/RatRig V-Core 4 300_cover.png diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 400 COREXY_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 400_cover.png similarity index 100% rename from resources/profiles/Ratrig/RatRig V-Core 4 400 COREXY_cover.png rename to resources/profiles/Ratrig/RatRig V-Core 4 400_cover.png diff --git a/resources/profiles/Ratrig/RatRig V-Core 4 500 COREXY_cover.png b/resources/profiles/Ratrig/RatRig V-Core 4 500_cover.png similarity index 100% rename from resources/profiles/Ratrig/RatRig V-Core 4 500 COREXY_cover.png rename to resources/profiles/Ratrig/RatRig V-Core 4 500_cover.png diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json index d17e27faa55..ae501bbcc52 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json @@ -7,11 +7,11 @@ "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", "printer_model": "RatRig V-Core 4 COREXY 300", "max_layer_height": [ - "0.07" - ], - "min_layer_height": [ - "0.32" - ], + "0.07" + ], + "min_layer_height": [ + "0.32" + ], "nozzle_diameter": [ "0.5" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json index cb2e41ce81c..6a5e1b90c8f 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json @@ -7,11 +7,11 @@ "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", "printer_model": "RatRig V-Core 4 COREXY 300", "max_layer_height": [ - "0.1" - ], - "min_layer_height": [ - "0.4" - ], + "0.1" + ], + "min_layer_height": [ + "0.4" + ], "nozzle_diameter": [ "0.6" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json index c8baaf3d557..a4ec2b52407 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json @@ -8,10 +8,10 @@ "printer_model": "RatRig V-Core 4 COREXY 400", "max_layer_height": [ "0.07" - ], - "min_layer_height": [ +], +"min_layer_height": [ "0.32" - ], +], "nozzle_diameter": [ "0.5" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json index d4642d3b1f5..e82cdafefcc 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json @@ -8,10 +8,10 @@ "printer_model": "RatRig V-Core 4 COREXY 400", "max_layer_height": [ "0.1" - ], - "min_layer_height": [ +], +"min_layer_height": [ "0.4" - ], +], "nozzle_diameter": [ "0.6" ], diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json index f52bb1d9d84..1abb9e608aa 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json @@ -8,13 +8,13 @@ "printer_model": "RatRig V-Core 4 COREXY 500", "max_layer_height": [ "0.07" - ], - "min_layer_height": [ +], +"min_layer_height": [ "0.32" - ], - "nozzle_diameter": [ - "0.5" - ], +], +"nozzle_diameter": [ +"0.5" +], "printable_area": [ "0x0", "500x0", diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json index a130cf14b8f..433461df2e6 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json @@ -8,13 +8,13 @@ "printer_model": "RatRig V-Core 4 COREXY 500", "max_layer_height": [ "0.1" - ], - "min_layer_height": [ +], +"min_layer_height": [ "0.4" - ], - "nozzle_diameter": [ - "0.6" - ], +], +"nozzle_diameter": [ +"0.6" +], "printable_area": [ "0x0", "500x0", From e5f34a7f468b49f02d3ffdd85a6cfe3169df54ef Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 26 Sep 2024 14:39:59 -0400 Subject: [PATCH 20/64] Revert "Initial add of V-Core 4 profiles from RatRig" This reverts commit eeae83f445a185a4ef996b0680da2c613babacea. --- resources/profiles/Ratrig.json | 156 ++++------ .../Ratrig/filament/RatRig Generic ABS.json | 132 ++++---- .../Ratrig/filament/RatRig Generic ASA.json | 120 ++++---- .../Ratrig/filament/RatRig Generic PA-CF.json | 120 ++++---- .../Ratrig/filament/RatRig Generic PA.json | 114 ++++--- .../Ratrig/filament/RatRig Generic PC.json | 108 ++++--- .../Ratrig/filament/RatRig Generic PETG.json | 156 +++++----- .../filament/RatRig Generic PLA-CF.json | 108 ++++--- .../Ratrig/filament/RatRig Generic PLA.json | 102 ++++--- .../Ratrig/filament/RatRig Generic PVA.json | 96 +++--- .../Ratrig/filament/RatRig Generic TPU.json | 90 +++--- .../Ratrig/filament/RatRig PunkFil ABS.json | 93 ------ .../filament/RatRig PunkFil PETG CF.json | 93 ------ .../Ratrig/filament/RatRig PunkFil PETG.json | 93 ------ .../Ratrig/filament/fdm_filament_abs.json | 176 +++++------ .../Ratrig/filament/fdm_filament_asa.json | 176 +++++------ .../Ratrig/filament/fdm_filament_common.json | 282 +++++++++--------- .../Ratrig/filament/fdm_filament_pa.json | 170 +++++------ .../Ratrig/filament/fdm_filament_pc.json | 176 +++++------ .../Ratrig/filament/fdm_filament_pet.json | 164 +++++----- .../Ratrig/filament/fdm_filament_pla.json | 188 ++++++------ .../Ratrig/filament/fdm_filament_pva.json | 200 ++++++------- .../Ratrig/filament/fdm_filament_tpu.json | 176 +++++------ .../RatRig V-Core 4 300 0.4 nozzle.json | 52 ++++ .../RatRig V-Core 4 300 0.5 nozzle.json | 52 ++++ .../RatRig V-Core 4 300 0.6 nozzle.json | 52 ++++ .../Ratrig/machine/RatRig V-Core 4 300.json | 12 + .../RatRig V-Core 4 400 0.4 nozzle.json | 52 ++++ .../RatRig V-Core 4 400 0.5 nozzle.json | 52 ++++ .../RatRig V-Core 4 400 0.6 nozzle.json | 53 ++++ .../Ratrig/machine/RatRig V-Core 4 400.json | 12 + .../RatRig V-Core 4 500 0.4 nozzle.json | 52 ++++ .../RatRig V-Core 4 500 0.5 nozzle.json | 52 ++++ .../RatRig V-Core 4 500 0.6 nozzle.json | 52 ++++ .../Ratrig/machine/RatRig V-Core 4 500.json | 12 + ...RatRig V-Core 4 COREXY 300 0.4 nozzle.json | 71 ----- ...RatRig V-Core 4 COREXY 300 0.5 nozzle.json | 26 -- ...RatRig V-Core 4 COREXY 300 0.6 nozzle.json | 26 -- .../machine/RatRig V-Core 4 COREXY 300.json | 12 - ...RatRig V-Core 4 COREXY 400 0.4 nozzle.json | 19 -- ...RatRig V-Core 4 COREXY 400 0.5 nozzle.json | 26 -- ...RatRig V-Core 4 COREXY 400 0.6 nozzle.json | 26 -- .../machine/RatRig V-Core 4 COREXY 400.json | 13 - ...RatRig V-Core 4 COREXY 500 0.4 nozzle.json | 19 -- ...RatRig V-Core 4 COREXY 500 0.5 nozzle.json | 26 -- ...RatRig V-Core 4 COREXY 500 0.6 nozzle.json | 26 -- .../machine/RatRig V-Core 4 COREXY 500.json | 12 - ...RatRig V-Core 4 HYBRID 300 0.4 nozzle.json | 123 ++++---- ...RatRig V-Core 4 HYBRID 300 0.5 nozzle.json | 78 +++-- ...RatRig V-Core 4 HYBRID 300 0.6 nozzle.json | 78 +++-- .../machine/RatRig V-Core 4 HYBRID 300.json | 25 +- ...RatRig V-Core 4 HYBRID 400 0.4 nozzle.json | 123 ++++---- ...RatRig V-Core 4 HYBRID 400 0.5 nozzle.json | 78 +++-- ...RatRig V-Core 4 HYBRID 400 0.6 nozzle.json | 78 +++-- .../machine/RatRig V-Core 4 HYBRID 400.json | 25 +- ...RatRig V-Core 4 HYBRID 500 0.4 nozzle.json | 71 +++-- ...RatRig V-Core 4 HYBRID 500 0.5 nozzle.json | 78 +++-- ...RatRig V-Core 4 HYBRID 500 0.6 nozzle.json | 78 +++-- .../machine/RatRig V-Core 4 HYBRID 500.json | 25 +- .../0.20mm QUALITY COREXY 0.4 @RatRig.json | 61 ---- .../0.20mm QUALITY COREXY 0.5 @RatRig.json | 25 -- .../0.20mm QUALITY COREXY 0.6 @RatRig.json | 48 --- .../0.20mm QUALITY COREXY @RatRig.json | 67 ----- .../0.20mm QUALITY HYBRID 0.4 @RatRig.json | 61 ---- .../0.20mm QUALITY HYBRID 0.5 @RatRig.json | 24 -- .../0.20mm QUALITY HYBRID 0.6 @RatRig.json | 48 --- .../0.20mm QUALITY HYBRID @RatRig.json | 67 ----- .../0.20mm Quality @RatRig V-Core 4 0.4.json | 62 ++++ .../0.20mm Quality @RatRig V-Core 4 0.5.json | 62 ++++ ...m Quality @RatRig V-Core 4 HYBRID 0.4.json | 62 ++++ ...m Quality @RatRig V-Core 4 HYBRID 0.5.json | 62 ++++ ...25mm QUALITY_SPEED COREXY 0.4 @RatRig.json | 12 - ...25mm QUALITY_SPEED COREXY 0.5 @RatRig.json | 25 -- ...25mm QUALITY_SPEED COREXY 0.6 @RatRig.json | 48 --- .../0.25mm QUALITY_SPEED COREXY @RatRig.json | 12 - ...25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json | 11 - ...25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json | 11 - ...25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json | 31 -- .../0.25mm QUALITY_SPEED HYBRID @RatRig.json | 12 - ...mm Quality Speed @RatRig V-Core 4 0.4.json | 62 ++++ ...mm Quality Speed @RatRig V-Core 4 0.5.json | 62 ++++ ...mm Quality Speed @RatRig V-Core 4 0.6.json | 62 ++++ ...ity Speed @RatRig V-Core 4 HYBRID 0.4.json | 62 ++++ ...ity Speed @RatRig V-Core 4 HYBRID 0.5.json | 62 ++++ ...ity Speed @RatRig V-Core 4 HYBRID 0.6.json | 62 ++++ .../0.25mm SPEED COREXY 0.4 @RatRig.json | 31 -- .../0.25mm SPEED COREXY 0.5 @RatRig.json | 31 -- .../0.25mm SPEED COREXY 0.6 @RatRig.json | 31 -- .../process/0.25mm SPEED COREXY @RatRig.json | 32 -- .../0.25mm SPEED HYBRID 0.4 @RatRig.json | 31 -- .../0.25mm SPEED HYBRID 0.5 @RatRig.json | 31 -- .../0.25mm SPEED HYBRID 0.6 @RatRig.json | 31 -- .../process/0.25mm SPEED HYBRID @RatRig.json | 32 -- .../0.25mm Speed @RatRig V-Core 4 0.4.json | 60 ++++ .../0.25mm Speed @RatRig V-Core 4 0.5.json | 60 ++++ .../0.25mm Speed @RatRig V-Core 4 0.6.json | 60 ++++ ...5mm Speed @RatRig V-Core 4 HYBRID 0.4.json | 60 ++++ ...5mm Speed @RatRig V-Core 4 HYBRID 0.5.json | 60 ++++ ...5mm Speed @RatRig V-Core 4 HYBRID 0.6.json | 60 ++++ .../process/0.28mm Extra Draft @RatRig.json | 33 +- .../0.30mm Big @RatRig V-Core 4 0.6.json | 67 +++++ ....30mm Big @RatRig V-Core 4 HYBRID 0.6.json | 67 +++++ .../Ratrig/process/fdm_process_common.json | 140 ++++----- .../process/fdm_process_ratrig_common.json | 233 +++++++-------- 104 files changed, 3906 insertions(+), 3383 deletions(-) delete mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json delete mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json delete mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json create mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json delete mode 100644 resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json create mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json create mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json create mode 100644 resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json delete mode 100644 resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json create mode 100644 resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json create mode 100644 resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json create mode 100644 resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index d4b1df91df3..f58b289ce5f 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -29,16 +29,16 @@ "sub_path": "machine/RatRig V-Cast.json" }, { - "name": "RatRig V-Core 4 COREXY 300", - "sub_path": "machine/RatRig V-Core 4 COREXY 300.json" + "name": "RatRig V-Core 4 300", + "sub_path": "machine/RatRig V-Core 4 300.json" }, { - "name": "RatRig V-Core 4 COREXY 400", - "sub_path": "machine/RatRig V-Core 4 COREXY 400.json" + "name": "RatRig V-Core 4 400", + "sub_path": "machine/RatRig V-Core 4 400.json" }, { - "name": "RatRig V-Core 4 COREXY 500", - "sub_path": "machine/RatRig V-Core 4 COREXY 500.json" + "name": "RatRig V-Core 4 500", + "sub_path": "machine/RatRig V-Core 4 500.json" }, { "name": "RatRig V-Core 4 HYBRID 300", @@ -87,100 +87,76 @@ "sub_path": "process/0.28mm Extra Draft @RatRig.json" }, { - "name": "0.20mm QUALITY COREXY @RatRig", - "sub_path": "process/0.20mm QUALITY COREXY @RatRig.json" + "name": "0.30mm Big @RatRig V-Core 4 0.6", + "sub_path": "process/0.30mm Big @RatRig V-Core 4 0.6.json" }, { - "name": "0.20mm QUALITY COREXY 0.4 @RatRig", - "sub_path": "process/0.20mm QUALITY COREXY 0.4 @RatRig.json" + "name": "0.25mm Speed @RatRig V-Core 4 0.4", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 0.4.json" }, { - "name": "0.20mm QUALITY COREXY 0.5 @RatRig", - "sub_path": "process/0.20mm QUALITY COREXY 0.5 @RatRig.json" + "name": "0.25mm Speed @RatRig V-Core 4 0.5", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 0.5.json" }, { - "name": "0.20mm QUALITY COREXY 0.6 @RatRig", - "sub_path": "process/0.20mm QUALITY COREXY 0.6 @RatRig.json" + "name": "0.25mm Speed @RatRig V-Core 4 0.6", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 0.6.json" }, { - "name": "0.20mm QUALITY HYBRID @RatRig", - "sub_path": "process/0.20mm QUALITY HYBRID @RatRig.json" + "name": "0.25mm Quality Speed @RatRig V-Core 4 0.4", + "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json" }, { - "name": "0.20mm QUALITY HYBRID 0.4 @RatRig", - "sub_path": "process/0.20mm QUALITY HYBRID 0.4 @RatRig.json" + "name": "0.25mm Quality Speed @RatRig V-Core 4 0.5", + "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json" }, { - "name": "0.20mm QUALITY HYBRID 0.5 @RatRig", - "sub_path": "process/0.20mm QUALITY HYBRID 0.5 @RatRig.json" + "name": "0.25mm Quality Speed @RatRig V-Core 4 0.6", + "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json" }, { - "name": "0.20mm QUALITY HYBRID 0.6 @RatRig", - "sub_path": "process/0.20mm QUALITY HYBRID 0.6 @RatRig.json" + "name": "0.20mm Quality @RatRig V-Core 4 0.4", + "sub_path": "process/0.20mm Quality @RatRig V-Core 4 0.4.json" }, { - "name": "0.25mm QUALITY_SPEED COREXY @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED COREXY @RatRig.json" + "name": "0.20mm Quality @RatRig V-Core 4 0.5", + "sub_path": "process/0.20mm Quality @RatRig V-Core 4 0.5.json" }, { - "name": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json" + "name": "0.30mm Big @RatRig V-Core 4 HYBRID 0.6", + "sub_path": "process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json" }, { - "name": "0.25mm QUALITY_SPEED COREXY 0.5 @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json" + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.4", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json" }, { - "name": "0.25mm QUALITY_SPEED COREXY 0.6 @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json" + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.5", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json" }, { - "name": "0.25mm QUALITY_SPEED HYBRID @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED HYBRID @RatRig.json" + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.6", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json" }, { - "name": "0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json" + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4", + "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json" }, { - "name": "0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json" + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5", + "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json" }, { - "name": "0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig", - "sub_path": "process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json" + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6", + "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json" }, { - "name": "0.25mm SPEED COREXY @RatRig", - "sub_path": "process/0.25mm SPEED COREXY @RatRig.json" + "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.4", + "sub_path": "process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json" }, { - "name": "0.25mm SPEED COREXY 0.4 @RatRig", - "sub_path": "process/0.25mm SPEED COREXY 0.4 @RatRig.json" - }, - { - "name": "0.25mm SPEED COREXY 0.5 @RatRig", - "sub_path": "process/0.25mm SPEED COREXY 0.5 @RatRig.json" - }, - { - "name": "0.25mm SPEED COREXY 0.6 @RatRig", - "sub_path": "process/0.25mm SPEED COREXY 0.6 @RatRig.json" - }, - { - "name": "0.25mm SPEED HYBRID @RatRig", - "sub_path": "process/0.25mm SPEED HYBRID @RatRig.json" - }, - { - "name": "0.25mm SPEED HYBRID 0.4 @RatRig", - "sub_path": "process/0.25mm SPEED HYBRID 0.4 @RatRig.json" - }, - { - "name": "0.25mm SPEED HYBRID 0.5 @RatRig", - "sub_path": "process/0.25mm SPEED HYBRID 0.5 @RatRig.json" - }, - { - "name": "0.25mm SPEED HYBRID 0.6 @RatRig", - "sub_path": "process/0.25mm SPEED HYBRID 0.6 @RatRig.json" + "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.5", + "sub_path": "process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json" } ], "filament_list": [ @@ -259,18 +235,6 @@ { "name": "RatRig Generic PA-CF", "sub_path": "filament/RatRig Generic PA-CF.json" - }, - { - "name": "RatRig PunkFil ABS", - "sub_path": "filament/RatRig PunkFil ABS.json" - }, - { - "name": "RatRig PunkFil PETG CF", - "sub_path": "filament/RatRig PunkFil PETG CF.json" - }, - { - "name": "RatRig PunkFil PETG", - "sub_path": "filament/RatRig PunkFil PETG.json" } ], "machine_list": [ @@ -311,40 +275,40 @@ "sub_path": "machine/RatRig V-Cast 0.6 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json" + "name": "RatRig V-Core 4 300 0.4 nozzle", + "sub_path": "machine/RatRig V-Core 4 300 0.4 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json" + "name": "RatRig V-Core 4 300 0.5 nozzle", + "sub_path": "machine/RatRig V-Core 4 300 0.5 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json" + "name": "RatRig V-Core 4 300 0.6 nozzle", + "sub_path": "machine/RatRig V-Core 4 300 0.6 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json" + "name": "RatRig V-Core 4 400 0.4 nozzle", + "sub_path": "machine/RatRig V-Core 4 400 0.4 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json" + "name": "RatRig V-Core 4 400 0.5 nozzle", + "sub_path": "machine/RatRig V-Core 4 400 0.5 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json" + "name": "RatRig V-Core 4 400 0.6 nozzle", + "sub_path": "machine/RatRig V-Core 4 400 0.6 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json" + "name": "RatRig V-Core 4 500 0.4 nozzle", + "sub_path": "machine/RatRig V-Core 4 500 0.4 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json" + "name": "RatRig V-Core 4 500 0.5 nozzle", + "sub_path": "machine/RatRig V-Core 4 500 0.5 nozzle.json" }, { - "name": "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "sub_path": "machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json" + "name": "RatRig V-Core 4 500 0.6 nozzle", + "sub_path": "machine/RatRig V-Core 4 500 0.6 nozzle.json" }, { "name": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", diff --git a/resources/profiles/Ratrig/filament/RatRig Generic ABS.json b/resources/profiles/Ratrig/filament/RatRig Generic ABS.json index 3203213bb04..5be01be8c95 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic ABS.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic ABS.json @@ -1,57 +1,75 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "RatRig Generic ABS", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.980" - ], - "filament_max_volumetric_speed": [ - "18" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.03" - ], - "hot_plate_temp_initial_layer" : [ - "108" - ], - "nozzle_temperature_initial_layer": [ - "248" - ], - "nozzle_temperature": [ - "243" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_speed": [ - "30" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig Generic ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.980" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ], + "hot_plate_temp_initial_layer" : [ + "108" + ], + "nozzle_temperature_initial_layer": [ + "248" + ], + "nozzle_temperature": [ + "243" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "30" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic ASA.json b/resources/profiles/Ratrig/filament/RatRig Generic ASA.json index 5681ae1f3c5..eeff92f76f1 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic ASA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic ASA.json @@ -1,51 +1,69 @@ -{ - "type": "filament", - "filament_id": "GFB98", - "setting_id": "GFSA04", - "name": "RatRig Generic ASA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_asa", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "19" - ], - "filament_density": [ - "1.1" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.033" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_speed": [ - "25" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "RatRig Generic ASA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "19" + ], + "filament_density": [ + "1.1" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.033" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "25" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json b/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json index 700af887313..dec08573fcf 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PA-CF.json @@ -1,51 +1,69 @@ -{ - "type": "filament", - "filament_id": "GFN98", - "setting_id": "GFSA04", - "name": "RatRig Generic PA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "filament_type": [ - "PA-CF" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature": [ - "270" - ], - "hot_plate_temp" : [ - "80" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "filament_density": [ - "1.24" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "50" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "RatRig Generic PA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature": [ + "270" + ], + "hot_plate_temp" : [ + "80" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "filament_density": [ + "1.24" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "50" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PA.json b/resources/profiles/Ratrig/filament/RatRig Generic PA.json index c8383d5a27c..e4088575166 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PA.json @@ -1,48 +1,66 @@ -{ - "type": "filament", - "filament_id": "GFN99", - "setting_id": "GFSA04", - "name": "RatRig Generic PA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "nozzle_temperature_initial_layer": [ - "270" - ], - "nozzle_temperature": [ - "270" - ], - "hot_plate_temp" : [ - "80" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "filament_density": [ - "1.24" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "overhang_fan_speed": [ - "50" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFSA04", + "name": "RatRig Generic PA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature": [ + "270" + ], + "hot_plate_temp" : [ + "80" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "filament_density": [ + "1.24" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "overhang_fan_speed": [ + "50" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PC.json b/resources/profiles/Ratrig/filament/RatRig Generic PC.json index 0cb3a930224..d73a99bf3f7 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PC.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PC.json @@ -1,45 +1,63 @@ -{ - "type": "filament", - "filament_id": "GFC99", - "setting_id": "GFSA04", - "name": "RatRig Generic PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_flow_ratio": [ - "0.93" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature_range_high": [ - "290" - ], - "hot_plate_temp" : [ - "100" - ], - "hot_plate_temp_initial_layer" : [ - "100" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "RatRig Generic PC", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "hot_plate_temp" : [ + "100" + ], + "hot_plate_temp_initial_layer" : [ + "100" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PETG.json b/resources/profiles/Ratrig/filament/RatRig Generic PETG.json index 4be7ccacc94..8c355a5966a 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PETG.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PETG.json @@ -1,69 +1,87 @@ -{ - "type": "filament", - "filament_id": "GFG99", - "setting_id": "GFSA04", - "name": "RatRig Generic PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "10" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.94" - ], - "filament_max_volumetric_speed": [ - "11" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.045" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "nozzle_temperature": [ - "235" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "RatRig Generic PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "10" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_max_volumetric_speed": [ + "11" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "nozzle_temperature": [ + "235" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json b/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json index 0efe0ec44ac..1d0a0b99eaa 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PLA-CF.json @@ -1,45 +1,63 @@ -{ - "type": "filament", - "filament_id": "GFL98", - "setting_id": "GFSA04", - "name": "RatRig Generic PLA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.92" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.05" - ], - "slow_down_layer_time": [ - "7" - ], - "nozzle_temperature_initial_layer": [ - "210" - ], - "nozzle_temperature": [ - "205" - ], -"compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFL98", + "setting_id": "GFSA04", + "name": "RatRig Generic PLA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.92" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.05" + ], + "slow_down_layer_time": [ + "7" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "nozzle_temperature": [ + "205" + ], +"compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PLA.json b/resources/profiles/Ratrig/filament/RatRig Generic PLA.json index 34dfab2e4b1..9f69c7f91dd 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PLA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PLA.json @@ -1,42 +1,60 @@ -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA04", - "name": "RatRig Generic PLA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.92" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.05" - ], - "slow_down_layer_time": [ - "8" - ], - "nozzle_temperature_initial_layer": [ - "205" - ], - "nozzle_temperature": [ - "200" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "RatRig Generic PLA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.92" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.05" + ], + "slow_down_layer_time": [ + "8" + ], + "nozzle_temperature_initial_layer": [ + "205" + ], + "nozzle_temperature": [ + "200" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PVA.json b/resources/profiles/Ratrig/filament/RatRig Generic PVA.json index c2c68325f5f..35a7fc8579d 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic PVA.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic PVA.json @@ -1,39 +1,57 @@ -{ - "type": "filament", - "filament_id": "GFS99", - "setting_id": "GFSA04", - "name": "RatRig Generic PVA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pva", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.03" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ - "10" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSA04", + "name": "RatRig Generic PVA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pva", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic TPU.json b/resources/profiles/Ratrig/filament/RatRig Generic TPU.json index 89f8047b40c..784537f231d 100644 --- a/resources/profiles/Ratrig/filament/RatRig Generic TPU.json +++ b/resources/profiles/Ratrig/filament/RatRig Generic TPU.json @@ -1,36 +1,54 @@ -{ - "type": "filament", - "filament_id": "GFU99", - "setting_id": "GFSA04", - "name": "RatRig Generic TPU", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_tpu", - "filament_max_volumetric_speed": [ - "5" - ], - "filament_z_hop": [ - "0" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.1" - ], - "nozzle_temperature": [ - "220" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ] -} +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "RatRig Generic TPU", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu", + "filament_max_volumetric_speed": [ + "5" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.1" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json deleted file mode 100644 index e2b95988966..00000000000 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "RatRig PunkFil ABS", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.92" - ], - "filament_max_volumetric_speed": [ - "40" - ], - "filament_z_hop": [ - "nil" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.022" - ], - "hot_plate_temp_initial_layer" : [ - "110" - ], - "hot_plate_temp" : [ - "110" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "nozzle_temperature": [ - "260" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "7" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "overhang_fan_speed": [ - "60" - ], - "overhang_fan_threshold": [ - "25%" - ], - "slow_down_min_speed": [ - "50" - ], - "slow_down_layer_time": [ - "2" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_cost": [ - "25.5" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json deleted file mode 100644 index a85d362275b..00000000000 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "RatRig PunkFil PETG CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "20" - ], - "filament_z_hop": [ - "nil" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.038" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "hot_plate_temp" : [ - "80" - ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "nozzle_temperature": [ - "230" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "10" - ], - "fan_max_speed": [ - "30" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_speed": [ - "40" - ], - "overhang_fan_threshold": [ - "50%" - ], - "slow_down_min_speed": [ - "30" - ], - "slow_down_layer_time": [ - "8" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_cost": [ - "48" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json deleted file mode 100644 index 4a70f159d75..00000000000 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "RatRig PunkFil PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "40" - ], - "filament_z_hop": [ - "nil" - ], - "enable_pressure_advance": [ - "1" - ], - "pressure_advance": [ - "0.025" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "hot_plate_temp" : [ - "80" - ], - "nozzle_temperature_initial_layer": [ - "235" - ], - "nozzle_temperature": [ - "235" - ], - "close_fan_the_first_x_layers": [ - "2" - ], - "fan_cooling_layer_time": [ - "8" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "30" - ], - "overhang_fan_speed": [ - "50" - ], - "overhang_fan_threshold": [ - "50%" - ], - "slow_down_min_speed": [ - "50" - ], - "slow_down_layer_time": [ - "2" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "filament_cost": [ - "24.5" - ], - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle", - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_abs.json b/resources/profiles/Ratrig/filament/fdm_filament_abs.json index 1c87696e44a..b9d4eeda312 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_abs.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_abs.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_abs", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "textured_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "textured_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_asa.json b/resources/profiles/Ratrig/filament/fdm_filament_asa.json index 38126ffe560..262c561bda8 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_asa.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_asa.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_asa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "textured_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "textured_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "35" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} +{ + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "35" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ASA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_common.json b/resources/profiles/Ratrig/filament/fdm_filament_common.json index 722b02593cf..22c32f8ca6f 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_common.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_common.json @@ -1,141 +1,141 @@ -{ - "type": "filament", - "name": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "0" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "bed_type": [ - "Cool Plate" - ], - "nozzle_temperature_initial_layer": [ - "200" - ], - "full_fan_speed_layer": [ - "0" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "nozzle_temperature": [ - "200" - ], - "temperature_vitrification": [ - "100" - ] -} +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "95%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pa.json b/resources/profiles/Ratrig/filament/fdm_filament_pa.json index 671549041e0..58f53cd451d 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pa.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pa.json @@ -1,85 +1,85 @@ -{ - "type": "filament", - "name": "fdm_filament_pa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "100" - ], - "hot_plate_temp" : [ - "100" - ], - "textured_plate_temp" : [ - "100" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "100" - ], - "hot_plate_temp_initial_layer" : [ - "100" - ], - "textured_plate_temp_initial_layer" : [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "4" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "PA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_speed": [ - "30" - ], - "nozzle_temperature": [ - "290" - ], - "temperature_vitrification": [ - "108" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "100" + ], + "hot_plate_temp" : [ + "100" + ], + "textured_plate_temp" : [ + "100" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "100" + ], + "hot_plate_temp_initial_layer" : [ + "100" + ], + "textured_plate_temp_initial_layer" : [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "4" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "30" + ], + "nozzle_temperature": [ + "290" + ], + "temperature_vitrification": [ + "108" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pc.json b/resources/profiles/Ratrig/filament/fdm_filament_pc.json index e87b47be071..cec8b89a38d 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pc.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pc.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_pc", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "110" - ], - "hot_plate_temp" : [ - "110" - ], - "textured_plate_temp" : [ - "110" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "110" - ], - "hot_plate_temp_initial_layer" : [ - "110" - ], - "textured_plate_temp_initial_layer" : [ - "110" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "23.2" - ], - "filament_type": [ - "PC" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "60" - ], - "nozzle_temperature": [ - "280" - ], - "temperature_vitrification": [ - "140" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pc", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "23.2" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "280" + ], + "temperature_vitrification": [ + "140" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pet.json b/resources/profiles/Ratrig/filament/fdm_filament_pet.json index dd775dd8277..bb2323e9c1e 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pet.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pet.json @@ -1,82 +1,82 @@ -{ - "type": "filament", - "name": "fdm_filament_pet", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "80" - ], - "textured_plate_temp" : [ - "80" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "textured_plate_temp_initial_layer" : [ - "80" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "20" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PETG" - ], - "filament_density": [ - "1.27" - ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "255" - ], - "temperature_vitrification": [ - "80" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "80" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "255" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pla.json b/resources/profiles/Ratrig/filament/fdm_filament_pla.json index afdc52a03a7..82c6772f35d 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pla.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pla.json @@ -1,94 +1,94 @@ -{ - "type": "filament", - "name": "fdm_filament_pla", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PLA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_pva.json b/resources/profiles/Ratrig/filament/fdm_filament_pva.json index 773d97da7af..ebf25aa3ae9 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_pva.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_pva.json @@ -1,100 +1,100 @@ -{ - "type": "filament", - "name": "fdm_filament_pva", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "35" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "45" - ], - "textured_plate_temp" : [ - "45" - ], - "cool_plate_temp_initial_layer" : [ - "35" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "45" - ], - "textured_plate_temp_initial_layer" : [ - "45" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_soluble": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "50" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_pva", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "35" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "45" + ], + "textured_plate_temp" : [ + "45" + ], + "cool_plate_temp_initial_layer" : [ + "35" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "45" + ], + "textured_plate_temp_initial_layer" : [ + "45" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_soluble": [ + "1" + ], + "filament_is_support": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "50" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/filament/fdm_filament_tpu.json b/resources/profiles/Ratrig/filament/fdm_filament_tpu.json index c153d385167..d00b7dbcab5 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_tpu.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_tpu.json @@ -1,88 +1,88 @@ -{ - "type": "filament", - "name": "fdm_filament_tpu", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "30" - ], - "eng_plate_temp" : [ - "30" - ], - "hot_plate_temp" : [ - "35" - ], - "textured_plate_temp" : [ - "35" - ], - "cool_plate_temp_initial_layer" : [ - "30" - ], - "eng_plate_temp_initial_layer" : [ - "30" - ], - "hot_plate_temp_initial_layer" : [ - "35" - ], - "textured_plate_temp_initial_layer" : [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "240" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} +{ + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "35" + ], + "textured_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "35" + ], + "textured_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "filament_retraction_length": [ + "0.4" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json new file mode 100644 index 00000000000..ca065917b4a --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 300 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 300", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.06"], + "max_layer_height": ["0.3"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json new file mode 100644 index 00000000000..8f78b122fe5 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 300 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 300", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.07"], + "max_layer_height": ["0.32"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json new file mode 100644 index 00000000000..1383d316a27 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 300 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 300", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.1"], + "max_layer_height": ["0.4"], + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json new file mode 100644 index 00000000000..fbe06996478 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "RatRig V-Core 4 300", + "model_id": "V-Core_4_300", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-300.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json new file mode 100644 index 00000000000..4b065733f1c --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 400 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 400", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.06"], + "max_layer_height": ["0.3"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json new file mode 100644 index 00000000000..c6c81a73eb9 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 400 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 400", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.07"], + "max_layer_height": ["0.32"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json new file mode 100644 index 00000000000..2efa2e53cf3 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json @@ -0,0 +1,53 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 400 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 400", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.1"], + "max_layer_height": ["0.4"], + "retract_lift_below": ["0.3"], + "retraction_length": ["2"], + "retraction_speed": ["40"], + "deretraction_speed": ["0"], + "retraction_minimum_travel": ["2"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json new file mode 100644 index 00000000000..a3f9c85191a --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "RatRig V-Core 4 400", + "model_id": "V-Core_4_400", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-400.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json new file mode 100644 index 00000000000..e34c326e7f3 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 500 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 500", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.06"], + "max_layer_height": ["0.3"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json new file mode 100644 index 00000000000..6bc08fb4739 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 500 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 500", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.07"], + "max_layer_height": ["0.32"], + "retract_lift_below": ["0.25"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json new file mode 100644 index 00000000000..7c27538c58e --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 500 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 500", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["400", "400"], + "machine_max_speed_y": ["400", "400"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["10000", "10000"], + "machine_max_acceleration_y": ["10000", "10000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["10000", "10000"], + "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.1"], + "max_layer_height": ["0.4"], + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json new file mode 100644 index 00000000000..2803355533f --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "RatRig V-Core 4 500", + "model_id": "V-Core_4_500", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-500.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json deleted file mode 100644 index 0fae5169a19..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.4 nozzle.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "from": "system", - "instantiation": "true", - "printer_model": "RatRig V-Core 4 COREXY 300", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "inherits": "fdm_klipper_common", - "gcode_flavor": "klipper", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["10000", "10000"], - "machine_max_acceleration_retracting": ["10000", "10000"], - "machine_max_acceleration_travel": ["10000", "10000"], - "machine_max_acceleration_x": ["10000", "10000"], - "machine_max_acceleration_y": ["10000", "10000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_speed_e": ["120", "120"], - "machine_max_speed_x": ["400", "400"], - "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["200", "200"], - "machine_max_jerk_e": ["5", "5"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "max_layer_height": ["0.3"], - "min_layer_height": ["0.06"], - "extruder_clearance_radius": "45", - "extruder_clearance_height_to_rod": "25", - "extruder_clearance_height_to_lid": "140", - "printer_settings_id": "", - "printer_technology": "FFF", - "printer_variant": "0.4", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["0.8"], - "retract_length_toolchange": ["2"], - "z_hop": ["0.2"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "z_hop_types": "Normal Lift", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "change_filament_gcode": "M600", - "machine_pause_gcode": "PAUSE", - "wipe": ["1"], - "default_filament_profile": ["RatRig PunkFil PETG"], - "default_print_profile": "0.20mm QUALITY COREXY @RatRig", - "bed_exclude_area": ["0x0"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} EXTRUDER_OTHER_LAYER_TEMP={nozzle_temperature[0]} BED_TEMP=[bed_temperature_initial_layer_single] CHAMBER_TEMP={overall_chamber_temperature} TOTAL_LAYER_COUNT={total_layer_count} X0={adaptive_bed_mesh_min[0]} Y0={adaptive_bed_mesh_min[1]} X1={adaptive_bed_mesh_max[0]} Y1={adaptive_bed_mesh_max[1]}", - "machine_end_gcode": "END_PRINT", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "scan_first_layer": "0", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json deleted file mode 100644 index ae501bbcc52..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.5 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 300", - "max_layer_height": [ - "0.07" - ], - "min_layer_height": [ - "0.32" - ], - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "printer_variant": "0.5" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json deleted file mode 100644 index 6a5e1b90c8f..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300 0.6 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 300", - "max_layer_height": [ - "0.1" - ], - "min_layer_height": [ - "0.4" - ], - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "printer_variant": "0.6" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json deleted file mode 100644 index f29b1b75def..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 300.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 COREXY 300", - "model_id": "V-Core_4_CORE_XY_300", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-300.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" -} \ No newline at end of file diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json deleted file mode 100644 index 9c141d3b812..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.4 nozzle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 400", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "printable_height": "400" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json deleted file mode 100644 index a4ec2b52407..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.5 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 400", - "max_layer_height": [ - "0.07" -], -"min_layer_height": [ - "0.32" -], - "nozzle_diameter": [ - "0.5" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "printable_height": "400", - "printer_variant": "0.5" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json deleted file mode 100644 index e82cdafefcc..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400 0.6 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM003", - "name": "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 400", - "max_layer_height": [ - "0.1" -], -"min_layer_height": [ - "0.4" -], - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "printable_height": "400", - "printer_variant": "0.6" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json deleted file mode 100644 index 1dd3263bfc9..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 400.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 COREXY 400", - "model_id": "V-Core_4_CORE_XY_400", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-400.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" -} - diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json deleted file mode 100644 index 1de8073f901..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.4 nozzle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 500", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "printable_height": "500" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json deleted file mode 100644 index 1abb9e608aa..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.5 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 500", - "max_layer_height": [ - "0.07" -], -"min_layer_height": [ - "0.32" -], -"nozzle_diameter": [ -"0.5" -], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "printable_height": "500", - "printer_variant": "0.5" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json deleted file mode 100644 index 433461df2e6..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500 0.6 nozzle.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 COREXY 500 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 COREXY 500", - "max_layer_height": [ - "0.1" -], -"min_layer_height": [ - "0.4" -], -"nozzle_diameter": [ -"0.6" -], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "printable_height": "500", - "printer_variant": "0.6" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json deleted file mode 100644 index dc7a572b6c3..00000000000 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 COREXY 500.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 COREXY 500", - "model_id": "V-Core_4_CORE_XY_500", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-500.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" -} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json index 5901d9f65ca..d72a3a5b2dc 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json @@ -1,71 +1,52 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "from": "system", - "instantiation": "true", - "printer_model": "RatRig V-Core 4 HYBRID 300", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "inherits": "fdm_klipper_common", - "gcode_flavor": "klipper", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["200", "200"], - "machine_max_speed_e": ["120", "120"], - "machine_max_jerk_e": ["5", "5"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "max_layer_height": ["0.3"], - "min_layer_height": ["0.06"], - "extruder_clearance_radius": "45", - "extruder_clearance_height_to_rod": "25", - "extruder_clearance_height_to_lid": "140", - "printer_settings_id": "", - "printer_technology": "FFF", - "printer_variant": "0.4", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["0.8"], - "retract_length_toolchange": ["2"], - "z_hop": ["0.2"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "z_hop_types": "Normal Lift", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "change_filament_gcode": "M600", - "machine_pause_gcode": "PAUSE", - "wipe": ["1"], - "default_filament_profile": ["RatRig PunkFil PETG"], - "default_print_profile": "0.20mm QUALITY HYBRID @RatRig", - "bed_exclude_area": ["0x0"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} EXTRUDER_OTHER_LAYER_TEMP={nozzle_temperature[0]} BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={adaptive_bed_mesh_min[0]} Y0={adaptive_bed_mesh_min[1]} X1={adaptive_bed_mesh_max[0]} Y1={adaptive_bed_mesh_max[1]}", - "machine_end_gcode": "END_PRINT", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "scan_first_layer": "0", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 300", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.06"], + "max_layer_height": ["0.3"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json index 5f8a671329c..bf8651e3ff2 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json @@ -1,26 +1,52 @@ -{ -"type": "machine", -"setting_id": "GM004", -"name": "RatRig V-Core 4 HYBRID 300 0.5 nozzle", -"from": "system", -"instantiation": "true", -"inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", -"printer_model": "RatRig V-Core 4 HYBRID 300", -"max_layer_height": [ - "0.07" -], -"min_layer_height": [ - "0.32" -], -"nozzle_diameter": [ - "0.5" -], -"printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" -], -"printable_height": "300", -"printer_variant": "0.5" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 300", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.07"], + "max_layer_height": ["0.32"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json index 9a671d4d4a3..e40e4beaf13 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json @@ -1,26 +1,52 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 HYBRID 300", - "max_layer_height": [ - "0.1" -], -"min_layer_height": [ - "0.4" -], - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "300", - "printer_variant": "0.6" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 300", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.1"], + "max_layer_height": ["0.4"], + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json index 6d0e34d3b4b..d1016f26622 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300.json @@ -1,13 +1,12 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 HYBRID 300", - "model_id": "V-Core_4_HYBRID_300", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-300.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" -} - +{ + "type": "machine_model", + "name": "RatRig V-Core 4 HYBRID 300", + "model_id": "V-Core_4_HYBRID_300", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-300.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json index 541062cbed8..d6e8b028fd1 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json @@ -1,71 +1,52 @@ -{ - "type": "machine", - "setting_id": "GM002", - "name": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "from": "system", - "instantiation": "true", - "printer_model": "RatRig V-Core 4 HYBRID 400", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "printable_height": "400", - "inherits": "fdm_klipper_common", - "gcode_flavor": "klipper", - "machine_max_acceleration_e": ["5000", "5000"], - "machine_max_acceleration_extruding": ["20000", "20000"], - "machine_max_acceleration_retracting": ["20000", "20000"], - "machine_max_acceleration_travel": ["20000", "20000"], - "machine_max_acceleration_x": ["20000", "20000"], - "machine_max_acceleration_y": ["20000", "20000"], - "machine_max_acceleration_z": ["200", "200"], - "machine_max_speed_x": ["500", "500"], - "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["200", "200"], - "machine_max_speed_e": ["120", "120"], - "machine_max_jerk_e": ["5", "5"], - "machine_max_jerk_x": ["5", "5"], - "machine_max_jerk_y": ["5", "5"], - "machine_max_jerk_z": ["0.4", "0.4"], - "machine_min_extruding_rate": ["0", "0"], - "machine_min_travel_rate": ["0", "0"], - "max_layer_height": ["0.3"], - "min_layer_height": ["0.06"], - "extruder_clearance_radius": "45", - "extruder_clearance_height_to_rod": "25", - "extruder_clearance_height_to_lid": "140", - "printer_settings_id": "", - "printer_technology": "FFF", - "printer_variant": "0.4", - "retraction_minimum_travel": ["1"], - "retract_before_wipe": ["70%"], - "retract_when_changing_layer": ["1"], - "retraction_length": ["0.8"], - "retract_length_toolchange": ["2"], - "z_hop": ["0.2"], - "retract_restart_extra": ["0"], - "retract_restart_extra_toolchange": ["0"], - "retraction_speed": ["120"], - "deretraction_speed": ["120"], - "z_hop_types": "Normal Lift", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "change_filament_gcode": "M600", - "machine_pause_gcode": "PAUSE", - "wipe": ["1"], - "default_filament_profile": ["RatRig PunkFil PETG"], - "default_print_profile": "0.20mm QUALITY HYBRID @RatRig", - "bed_exclude_area": ["0x0"], - "machine_start_gcode": "START_PRINT EXTRUDER_TEMP={first_layer_temperature[0]} EXTRUDER_OTHER_LAYER_TEMP={nozzle_temperature[0]} BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={adaptive_bed_mesh_min[0]} Y0={adaptive_bed_mesh_min[1]} X1={adaptive_bed_mesh_max[0]} Y1={adaptive_bed_mesh_max[1]}", - "machine_end_gcode": "END_PRINT", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "scan_first_layer": "0", - "nozzle_type": "undefine", - "auxiliary_fan": "0" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 400", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.06"], + "max_layer_height": ["0.3"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json index 2b75c49eb8d..29d095b567d 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json @@ -1,26 +1,52 @@ -{ -"type": "machine", -"setting_id": "GM004", -"name": "RatRig V-Core 4 HYBRID 400 0.5 nozzle", -"from": "system", -"instantiation": "true", -"inherits": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", -"printer_model": "RatRig V-Core 4 HYBRID 400", -"max_layer_height": [ - "0.07" -], -"min_layer_height": [ - "0.32" -], -"nozzle_diameter": [ - "0.5" -], -"printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" -], -"printable_height": "400", -"printer_variant": "0.5" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 400", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.07"], + "max_layer_height": ["0.32"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json index b785f522a90..95e1bbf29c8 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json @@ -1,26 +1,52 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "printer_model": "RatRig V-Core 4 HYBRID 400", - "max_layer_height": [ - "0.1" -], -"min_layer_height": [ - "0.4" -], - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "400x0", - "400x400", - "0x400" - ], - "printable_height": "400", - "printer_variant": "0.6" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 400", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.1"], + "max_layer_height": ["0.4"], + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json index 629e7921975..dce309372cd 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400.json @@ -1,13 +1,12 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 HYBRID 400", - "model_id": "V-Core_4_HYBRID_400", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-400.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" -} - +{ + "type": "machine_model", + "name": "RatRig V-Core 4 HYBRID 400", + "model_id": "V-Core_4_HYBRID_400", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-400.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json index d1924567810..d2ded5365f8 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json @@ -1,19 +1,52 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 HYBRID 500", - "nozzle_diameter": [ - "0.4" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "printable_height": "500" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 500", + "printer_variant": "0.4", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.06"], + "max_layer_height": ["0.3"], + "retract_lift_below": ["0.2"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json index c9fb5f9cde3..83428f708b1 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json @@ -1,26 +1,52 @@ -{ -"type": "machine", -"setting_id": "GM004", -"name": "RatRig V-Core 4 HYBRID 500 0.5 nozzle", -"from": "system", -"instantiation": "true", -"inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", -"printer_model": "RatRig V-Core 4 HYBRID 500", -"max_layer_height": [ - "0.07" -], -"min_layer_height": [ - "0.32" -], -"nozzle_diameter": [ - "0.5" -], -"printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" -], -"printable_height": "500", -"printer_variant": "0.5" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 500", + "printer_variant": "0.5", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.07"], + "max_layer_height": ["0.32"], + "retract_lift_below": ["0.25"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json index 4f81d3881b8..38797ef1e29 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json @@ -1,26 +1,52 @@ -{ - "type": "machine", - "setting_id": "GM004", - "name": "RatRig V-Core 4 HYBRID 500 0.6 nozzle", - "from": "system", - "instantiation": "true", - "inherits": "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "printer_model": "RatRig V-Core 4 HYBRID 500", - "max_layer_height": [ - "0.1" -], -"min_layer_height": [ - "0.4" -], - "nozzle_diameter": [ - "0.6" - ], - "printable_area": [ - "0x0", - "500x0", - "500x500", - "0x500" - ], - "printable_height": "500", - "printer_variant": "0.6" -} +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 500 0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 500", + "printer_variant": "0.6", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["50", "50"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.1"], + "max_layer_height": ["0.4"], + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["0"], + "retract_before_wipe": ["0%"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nTOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "before_layer_change_gcode": ";[layer_z]", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "thumbnails": [ + "64x64/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json index 9b185bdeb01..0c27eeea8d9 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500.json @@ -1,13 +1,12 @@ -{ - "type": "machine_model", - "name": "RatRig V-Core 4 HYBRID 500", - "model_id": "V-Core_4_HYBRID_500", - "nozzle_diameter": "0.4;0.5;0.6", - "machine_tech": "FFF", - "family": "RatRig_V-Core", - "bed_model": "ratrig-vcore-bed-500.stl", - "bed_texture": "ratrig_logo.svg", - "hotend_model": "", - "default_materials": "RatRig PunkFil ABS;RatRig PunkFil PETG;RatRig PunkFil PETG CF" -} - +{ + "type": "machine_model", + "name": "RatRig V-Core 4 HYBRID 500", + "model_id": "V-Core_4_HYBRID_500", + "nozzle_diameter": "0.4;0.5;0.6", + "machine_tech": "FFF", + "family": "RatRig_V-Core", + "bed_model": "ratrig-vcore-bed-500.stl", + "bed_texture": "ratrig_logo.svg", + "hotend_model": "", + "default_materials": "RatRig Generic ABS;RatRig Generic PLA;RatRig Generic PLA-CF;RatRig Generic PETG;RatRig Generic TPU;RatRig Generic ASA;RatRig Generic PC;RatRig Generic PVA;RatRig Generic PA;RatRig Generic PA-CF" +} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json deleted file mode 100644 index 8f883a30ffa..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.4 @RatRig.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY COREXY 0.4 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.2", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "default_acceleration": "10000", - "top_surface_acceleration": "10000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "8000", - "outer_wall_acceleration": "4000", - "initial_layer_acceleration": "1500", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "250", - "inner_wall_speed": "350", - "internal_solid_infill_speed": "400", - "top_surface_speed": "400", - "gap_infill_speed": "200", - "sparse_infill_speed": "400", - "travel_speed": "500", - "internal_bridge_speed": "100", - "bridge_speed": "50", - "detect_overhang_wall": "0", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "0", - "overhang_3_4_speed": "0", - "overhang_4_4_speed": "0", - "outer_wall_line_width": "0.55", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.3", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "18%", - "inner_wall_line_width": "0.5", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "top_shell_thickness": "0.9", - "wall_loops": "4", - "sparse_infill_density": "25%", - "sparse_infill_pattern": "adaptivecubic", - "detect_thin_wall": "1", - "bridge_flow": "0.85", - "skirt_distance": "10", - "skirt_height": "1", - "skirt_loops": "2", - "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle" - ], - "exclude_object": "0" -} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json deleted file mode 100644 index 63995c71b04..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.5 @RatRig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY COREXY 0.5 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", - "outer_wall_line_width": "0.65", - "line_width": "0.55", - "initial_layer_line_width": "0.6", - "sparse_infill_line_width": "0.55", - "inner_wall_line_width": "0.6", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "wall_loops": "3", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle" - ], - "exclude_object": "0" -} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json deleted file mode 100644 index 9a69c064961..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY 0.6 @RatRig.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY COREXY 0.6 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", - "outer_wall_line_width": "0.75", - "line_width": "0.65", - "initial_layer_line_width": "0.7", - "sparse_infill_line_width": "0.65", - "inner_wall_line_width": "0.7", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "wall_loops": "3", - "default_acceleration": "10000", - "top_surface_acceleration": "8000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "8000", - "outer_wall_acceleration": "5000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "200", - "inner_wall_speed": "250", - "internal_solid_infill_speed": "250", - "top_surface_speed": "250", - "gap_infill_speed": "250", - "sparse_infill_speed": "250", - "travel_speed": "500", - "internal_bridge_speed" : "60", - "bridge_speed": "30", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "detect_overhang_wall": "1", - "overhang_speed_classic": "1", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "60", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "20", - "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle" - ], - "exclude_object": "0" -} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json deleted file mode 100644 index 96b6637c304..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY COREXY @RatRig.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY COREXY @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.2", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "default_acceleration": "10000", - "top_surface_acceleration": "10000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "8000", - "outer_wall_acceleration": "4000", - "initial_layer_acceleration": "1500", - "initial_layer_speed": "80", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "250", - "inner_wall_speed": "350", - "internal_solid_infill_speed": "400", - "top_surface_speed": "400", - "gap_infill_speed": "200", - "sparse_infill_speed": "400", - "travel_speed": "500", - "internal_bridge_speed": "100", - "bridge_speed": "50", - "detect_overhang_wall": "0", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "0", - "overhang_3_4_speed": "0", - "overhang_4_4_speed": "0", - "outer_wall_line_width": "0.45", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.3", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "18%", - "inner_wall_line_width": "0.5", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "top_shell_thickness": "0.9", - "wall_loops": "4", - "sparse_infill_density": "25%", - "sparse_infill_pattern": "adaptivecubic", - "detect_thin_wall": "1", - "bridge_flow": "0.85", - "skirt_distance": "10", - "skirt_height": "1", - "skirt_loops": "2", - "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.4 nozzle", - "RatRig V-Core 4 COREXY 400 0.4 nozzle", - "RatRig V-Core 4 COREXY 500 0.4 nozzle", - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle", - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle" - ], - "exclude_object": "0" -} \ No newline at end of file diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json deleted file mode 100644 index 439c240ab23..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.4 @RatRig.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY HYBRID 0.4 @RatRig", - "from": "system", - "inherits": "fdm_process_ratrig_common", - "instantiation": "true", - "layer_height": "0.2", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "sparse_infill_density": "25%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "15000", - "top_surface_acceleration": "15000", - "travel_acceleration": "15000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "8000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "80", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "250", - "inner_wall_speed": "350", - "internal_solid_infill_speed": "400", - "top_surface_speed": "400", - "gap_infill_speed": "200", - "sparse_infill_speed": "400", - "travel_speed": "600", - "internal_bridge_speed" : "100", - "bridge_speed": "50", - "detect_overhang_wall": "0", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "0", - "overhang_3_4_speed": "0", - "overhang_4_4_speed": "0", - "outer_wall_line_width": "0.55", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.3", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "18%", - "inner_wall_line_width": "0.5", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "top_shell_thickness": "0.9", - "wall_loops": "4", - "detect_thin_wall": "1", - "bridge_flow": "0.85", - "skirt_distance": "10", - "skirt_height": "1", - "skirt_loops": "2", - "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle" - ], - "exclude_object": "0" -} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json deleted file mode 100644 index e5e15fbb6bd..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.5 @RatRig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY HYBRID 0.5 @RatRig", - "from": "system", - "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", - "outer_wall_line_width": "0.65", - "line_width": "0.55", - "initial_layer_line_width": "0.6", - "sparse_infill_line_width": "0.55", - "inner_wall_line_width": "0.6", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "wall_loops": "3", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle" - ], - "exclude_object": "0" -} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json deleted file mode 100644 index b95038b2a6c..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID 0.6 @RatRig.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY HYBRID 0.6 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", - "outer_wall_line_width": "0.75", - "line_width": "0.65", - "initial_layer_line_width": "0.7", - "sparse_infill_line_width": "0.65", - "inner_wall_line_width": "0.7", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "wall_loops": "3", - "default_acceleration": "15000", - "top_surface_acceleration": "10000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "8000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "200", - "inner_wall_speed": "250", - "internal_solid_infill_speed": "250", - "top_surface_speed": "250", - "gap_infill_speed": "250", - "sparse_infill_speed": "250", - "travel_speed": "800", - "internal_bridge_speed" : "60", - "bridge_speed": "20", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "detect_overhang_wall": "1", - "overhang_speed_classic": "1", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "60", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "20", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ], - "exclude_object": "0" -} diff --git a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json b/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json deleted file mode 100644 index fbbb6d325c2..00000000000 --- a/resources/profiles/Ratrig/process/0.20mm QUALITY HYBRID @RatRig.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "type": "process", - "setting_id": "GP005", - "name": "0.20mm QUALITY HYBRID @RatRig", - "from": "system", - "inherits": "fdm_process_ratrig_common", - "instantiation": "true", - "layer_height": "0.2", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "sparse_infill_density": "25%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "15000", - "top_surface_acceleration": "15000", - "travel_acceleration": "15000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "8000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "80", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "250", - "inner_wall_speed": "350", - "internal_solid_infill_speed": "400", - "top_surface_speed": "400", - "gap_infill_speed": "200", - "sparse_infill_speed": "400", - "travel_speed": "600", - "internal_bridge_speed" : "100", - "bridge_speed": "50", - "detect_overhang_wall": "0", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "0", - "overhang_3_4_speed": "0", - "overhang_4_4_speed": "0", - "outer_wall_line_width": "0.45", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "initial_layer_print_height": "0.3", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "18%", - "inner_wall_line_width": "0.5", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "top_shell_thickness": "0.9", - "wall_loops": "4", - "detect_thin_wall": "1", - "bridge_flow": "0.85", - "skirt_distance": "10", - "skirt_height": "1", - "skirt_loops": "2", - "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.4 nozzle", - "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBRID 500 0.4 nozzle", - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle", - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ], - "exclude_object": "0" -} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json new file mode 100644 index 00000000000..b65a4b50cd7 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.4.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.20mm Quality @RatRig V-Core 4 0.4", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.2", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "350", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "500", + "initial_layer_speed": "50", + "outer_wall_acceleration": "4000", + "inner_wall_acceleration": "8000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "2500", + "initial_layer_acceleration": "1500", + "travel_acceleration": "10000", + "default_acceleration": "10000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 500 0.4 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json new file mode 100644 index 00000000000..1bc3d680c8d --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 0.5.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.20mm Quality @RatRig V-Core 4 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.2", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "350", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "500", + "initial_layer_speed": "50", + "outer_wall_acceleration": "4000", + "inner_wall_acceleration": "8000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "2500", + "initial_layer_acceleration": "1500", + "travel_acceleration": "10000", + "default_acceleration": "10000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json new file mode 100644 index 00000000000..4027e25c7fe --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.4.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.4", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.2", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json new file mode 100644 index 00000000000..be118426d12 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.20mm Quality @RatRig V-Core 4 HYBRID 0.5.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.20mm Quality @RatRig V-Core 4 HYBRID 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.2", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json deleted file mode 100644 index fdf14cb6b34..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.4 @RatRig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", - "layer_height": "0.25", - "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "4" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json deleted file mode 100644 index 707c52291fe..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.5 @RatRig.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED COREXY 0.5 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", - "outer_wall_line_width": "0.65", - "line_width": "0.55", - "initial_layer_line_width": "0.6", - "sparse_infill_line_width": "0.55", - "inner_wall_line_width": "0.6", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "wall_loops": "3", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.5 nozzle", - "RatRig V-Core 4 COREXY 400 0.5 nozzle", - "RatRig V-Core 4 COREXY 500 0.5 nozzle" - ], - "exclude_object": "0" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json deleted file mode 100644 index 894b27a7bf9..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY 0.6 @RatRig.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED COREXY 0.6 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.25mm QUALITY_SPEED COREXY 0.4 @RatRig", - "outer_wall_line_width": "0.75", - "line_width": "0.65", - "initial_layer_line_width": "0.7", - "sparse_infill_line_width": "0.65", - "inner_wall_line_width": "0.7", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "wall_loops": "3", - "default_acceleration": "10000", - "top_surface_acceleration": "8000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "8000", - "outer_wall_acceleration": "5000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "150", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "top_surface_speed": "200", - "gap_infill_speed": "200", - "sparse_infill_speed": "200", - "travel_speed": "500", - "internal_bridge_speed" : "60", - "bridge_speed": "30", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "detect_overhang_wall": "1", - "overhang_speed_classic": "1", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "60", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "20", - "compatible_printers": [ - "RatRig V-Core 4 COREXY 300 0.6 nozzle", - "RatRig V-Core 4 COREXY 400 0.6 nozzle", - "RatRig V-Core 4 COREXY 500 0.6 nozzle" - ], - "exclude_object": "0" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json deleted file mode 100644 index 5989ef38fc5..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED COREXY @RatRig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED COREXY @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY @RatRig", - "layer_height": "0.25", - "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "4" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json deleted file mode 100644 index 6601fc13db0..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED HYBRID 0.4 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", - "layer_height": "0.25", - "bottom_shell_layers": "3", - "top_shell_layers": "4" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json deleted file mode 100644 index cda7600f802..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED HYBRID 0.5 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.5 @RatRig", - "layer_height": "0.25", - "bottom_shell_layers": "3", - "top_shell_layers": "4" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json deleted file mode 100644 index 5beff8f8b43..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED HYBRID 0.6 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.6 @RatRig", - "layer_height": "0.25", - "bottom_shell_layers": "3", - "top_shell_layers": "4", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "80", - "outer_wall_speed": "150", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "top_surface_speed": "200", - "gap_infill_speed": "200", - "sparse_infill_speed": "200", - "travel_speed": "500", - "internal_bridge_speed" : "60", - "bridge_speed": "30", - "print_settings_id": "", - "compatible_printers_condition": "", - "standby_temperature_delta": "-5", - "detect_overhang_wall": "1", - "overhang_speed_classic": "1", - "overhang_1_4_speed": "100", - "overhang_2_4_speed": "60", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "20" -} diff --git a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json b/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json deleted file mode 100644 index d56d2c2dd07..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm QUALITY_SPEED HYBRID @RatRig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm QUALITY_SPEED HYBRID @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID @RatRig", - "layer_height": "0.25", - "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "4" -} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json new file mode 100644 index 00000000000..3bf5a1faa25 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.4.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 0.4", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "350", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "500", + "initial_layer_speed": "50", + "outer_wall_acceleration": "4000", + "inner_wall_acceleration": "8000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "2500", + "initial_layer_acceleration": "1500", + "travel_acceleration": "10000", + "default_acceleration": "10000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 500 0.4 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json new file mode 100644 index 00000000000..5f9277cd55f --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "350", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "500", + "initial_layer_speed": "50", + "outer_wall_acceleration": "4000", + "inner_wall_acceleration": "8000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "2500", + "initial_layer_acceleration": "1500", + "travel_acceleration": "10000", + "default_acceleration": "10000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json new file mode 100644 index 00000000000..785ec5e762d --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.35", + "wall_count": "3", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "350", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "500", + "initial_layer_speed": "50", + "outer_wall_acceleration": "4000", + "inner_wall_acceleration": "8000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "2500", + "initial_layer_acceleration": "1500", + "travel_acceleration": "10000", + "default_acceleration": "10000", + "line_width": "0.65", + "initial_layer_line_width": "0.84", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.65", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json new file mode 100644 index 00000000000..24a7497b61b --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBIRD 500 0.4 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json new file mode 100644 index 00000000000..dbf3f1e9e4e --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBIRD 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json new file mode 100644 index 00000000000..975e82da8ab --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json @@ -0,0 +1,62 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.65", + "initial_layer_line_width": "0.84", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.65", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBIRD 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json deleted file mode 100644 index 975b6e3515d..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.4 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED COREXY 0.4 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY 0.4 @RatRig", - "layer_height": "0.25", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "20000", - "top_surface_acceleration": "20000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "15000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "500", - "inner_wall_speed": "500", - "internal_solid_infill_speed": "500", - "top_surface_speed": "500", - "gap_infill_speed": "500", - "sparse_infill_speed": "500", - "travel_speed": "800", - "internal_bridge_speed" : "150", - "bridge_speed": "150" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json deleted file mode 100644 index beded075aec..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.5 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED COREXY 0.5 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY 0.5 @RatRig", - "layer_height": "0.25", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "20000", - "top_surface_acceleration": "20000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "15000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "500", - "inner_wall_speed": "500", - "internal_solid_infill_speed": "500", - "top_surface_speed": "500", - "gap_infill_speed": "500", - "sparse_infill_speed": "500", - "travel_speed": "800", - "internal_bridge_speed" : "150", - "bridge_speed": "150" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json deleted file mode 100644 index fbb96a2eebf..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY 0.6 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED COREXY 0.6 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY 0.6 @RatRig", - "layer_height": "0.25", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "10000", - "top_surface_acceleration": "10000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "8000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "300", - "outer_wall_speed": "300", - "inner_wall_speed": "300", - "internal_solid_infill_speed": "300", - "top_surface_speed": "300", - "gap_infill_speed": "300", - "sparse_infill_speed": "300", - "travel_speed": "500", - "internal_bridge_speed" : "100", - "bridge_speed": "100" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json deleted file mode 100644 index efb44d98e25..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED COREXY @RatRig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED COREXY @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY COREXY @RatRig", - "layer_height": "0.25", - "top_surface_line_width": "0.45", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "20000", - "top_surface_acceleration": "20000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "15000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "500", - "inner_wall_speed": "500", - "internal_solid_infill_speed": "500", - "top_surface_speed": "500", - "gap_infill_speed": "500", - "sparse_infill_speed": "500", - "travel_speed": "800", - "internal_bridge_speed" : "150", - "bridge_speed": "150" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json deleted file mode 100644 index 9e0eaf0ba1e..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.4 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED HYBRID 0.4 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.4 @RatRig", - "layer_height": "0.25", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "20000", - "top_surface_acceleration": "20000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "15000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "500", - "inner_wall_speed": "500", - "internal_solid_infill_speed": "500", - "top_surface_speed": "500", - "gap_infill_speed": "500", - "sparse_infill_speed": "500", - "travel_speed": "800", - "internal_bridge_speed" : "150", - "bridge_speed": "150" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json deleted file mode 100644 index e1d046d9cc1..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.5 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED HYBRID 0.5 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.5 @RatRig", - "layer_height": "0.25", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "20000", - "top_surface_acceleration": "20000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "15000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "500", - "inner_wall_speed": "500", - "internal_solid_infill_speed": "500", - "top_surface_speed": "500", - "gap_infill_speed": "500", - "sparse_infill_speed": "500", - "travel_speed": "800", - "internal_bridge_speed" : "150", - "bridge_speed": "150" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json deleted file mode 100644 index 7e67ad3eb48..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID 0.6 @RatRig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED HYBRID 0.6 @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID 0.6 @RatRig", - "layer_height": "0.25", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "15000", - "top_surface_acceleration": "15000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "8000", - "outer_wall_acceleration": "8000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "300", - "inner_wall_speed": "300", - "internal_solid_infill_speed": "300", - "top_surface_speed": "300", - "gap_infill_speed": "300", - "sparse_infill_speed": "300", - "travel_speed": "800", - "internal_bridge_speed" : "100", - "bridge_speed": "100" -} diff --git a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json b/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json deleted file mode 100644 index f654271216e..00000000000 --- a/resources/profiles/Ratrig/process/0.25mm SPEED HYBRID @RatRig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm SPEED HYBRID @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "0.20mm QUALITY HYBRID @RatRig", - "layer_height": "0.25", - "top_surface_line_width": "0.45", - "wall_loops": "2", - "bottom_shell_layers": "2", - "top_shell_layers": "3", - "sparse_infill_density": "10%", - "sparse_infill_pattern": "adaptivecubic", - "default_acceleration": "20000", - "top_surface_acceleration": "20000", - "travel_acceleration": "10000", - "inner_wall_acceleration": "10000", - "outer_wall_acceleration": "15000", - "initial_layer_acceleration": "2500", - "initial_layer_speed": "200", - "initial_layer_infill_speed": "200", - "outer_wall_speed": "500", - "inner_wall_speed": "500", - "internal_solid_infill_speed": "500", - "top_surface_speed": "500", - "gap_infill_speed": "500", - "sparse_infill_speed": "500", - "travel_speed": "800", - "internal_bridge_speed" : "150", - "bridge_speed": "150" -} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json new file mode 100644 index 00000000000..c14483511d2 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.4.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 0.4", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "400", + "small_perimeter_speed": "350", + "outer_wall_speed": "400", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "200", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "10000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 500 0.4 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json new file mode 100644 index 00000000000..c720ad9ad13 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.5.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "400", + "small_perimeter_speed": "350", + "outer_wall_speed": "400", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "200", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "10000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json new file mode 100644 index 00000000000..1ff1df93c80 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "400", + "small_perimeter_speed": "350", + "outer_wall_speed": "400", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "200", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "10000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json new file mode 100644 index 00000000000..c277f10ff36 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.4.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.4", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "500", + "small_perimeter_speed": "500", + "outer_wall_speed": "500", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "800", + "initial_layer_speed": "200", + "outer_wall_acceleration": "15000", + "inner_wall_acceleration": "20000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "20000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "10000", + "default_acceleration": "20000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json new file mode 100644 index 00000000000..d9351ba3b13 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "500", + "small_perimeter_speed": "500", + "outer_wall_speed": "500", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "800", + "initial_layer_speed": "200", + "outer_wall_acceleration": "15000", + "inner_wall_acceleration": "20000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "20000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "10000", + "default_acceleration": "20000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json new file mode 100644 index 00000000000..00d6c2113fc --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "500", + "small_perimeter_speed": "500", + "outer_wall_speed": "500", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "800", + "initial_layer_speed": "200", + "outer_wall_acceleration": "15000", + "inner_wall_acceleration": "20000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "20000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "10000", + "default_acceleration": "20000", + "line_width": "0.45", + "initial_layer_line_width": "0.5", + "inner_wall_line_width": "0.45", + "outer_wall_line_width": "0.45", + "sparse_infill_line_width": "0.45", + "internal_solid_infill_line_width": "0.45", + "top_surface_line_width": "0.45", + "support_line_width": "0.45", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json b/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json index 483f763f0d0..e0935d7fe50 100644 --- a/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json +++ b/resources/profiles/Ratrig/process/0.28mm Extra Draft @RatRig.json @@ -1,12 +1,21 @@ -{ - "type": "process", - "setting_id": "GP007", - "name": "0.28mm Extra Draft @RatRig", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.28", - "top_surface_line_width": "0.45", - "bottom_shell_layers": "3", - "top_shell_layers": "4" -} +{ + "type": "process", + "setting_id": "GP007", + "name": "0.28mm Extra Draft @RatRig", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.28", + "top_surface_line_width": "0.45", + "bottom_shell_layers": "3", + "top_shell_layers": "4", + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json new file mode 100644 index 00000000000..70df1a4edbd --- /dev/null +++ b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 0.6.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.30mm Big @RatRig V-Core 4 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.3", + "inital_layer_height": "0.35", + "wall_count": "3", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "350", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "500", + "initial_layer_speed": "50", + "enable_overhang_speed": "1", + "overhang_1_4_speed": "20", + "overhang_2_4_speed": "45", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "100", + "outer_wall_acceleration": "4000", + "inner_wall_acceleration": "8000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "2500", + "initial_layer_acceleration": "1500", + "travel_acceleration": "10000", + "default_acceleration": "10000", + "line_width": "0.65", + "initial_layer_line_width": "0.84", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.65", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json new file mode 100644 index 00000000000..0bbc5f062e2 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.6.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.30mm Big @RatRig V-Core 4 HYBRID 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.3", + "inital_layer_height": "0.35", + "wall_count": "3", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "enable_overhang_speed": "1", + "overhang_1_4_speed": "20", + "overhang_2_4_speed": "45", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "100", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.65", + "initial_layer_line_width": "0.84", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.65", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/fdm_process_common.json b/resources/profiles/Ratrig/process/fdm_process_common.json index c00f623e363..1da14b4d918 100644 --- a/resources/profiles/Ratrig/process/fdm_process_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_common.json @@ -1,70 +1,70 @@ -{ - "type": "process", - "name": "fdm_process_common", - "from": "system", - "instantiation": "false", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "bridge_flow": "0.95", - "bridge_speed": "25", - "brim_width": "5", - "compatible_printers": [], - "print_sequence": "by layer", - "default_acceleration": "10000", - "bridge_no_support": "0", - "elefant_foot_compensation": "0.1", - "outer_wall_line_width": "0.4", - "outer_wall_speed": "120", - "line_width": "0.45", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_line_width": "0.42", - "initial_layer_print_height": "0.2", - "initial_layer_speed": "20", - "gap_infill_speed": "30", - "infill_combination": "0", - "sparse_infill_line_width": "0.45", - "infill_wall_overlap": "25%", - "sparse_infill_speed": "50", - "interface_shells": "0", - "detect_overhang_wall": "0", - "reduce_infill_retraction": "0", - "filename_format": "{input_filename_base}.gcode", - "wall_loops": "3", - "inner_wall_line_width": "0.45", - "inner_wall_speed": "40", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "nearest", - "skirt_distance": "2", - "skirt_height": "2", - "minimum_sparse_infill_area": "0", - "internal_solid_infill_line_width": "0.45", - "internal_solid_infill_speed": "40", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "support_filament": "0", - "support_line_width": "0.42", - "support_interface_filament": "0", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.15", - "support_interface_loop_pattern": "0", - "support_interface_top_layers": "2", - "support_interface_spacing": "0", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2", - "support_speed": "40", - "support_threshold_angle": "40", - "support_object_xy_distance": "0.5", - "detect_thin_wall": "0", - "top_surface_line_width": "0.4", - "top_surface_speed": "30", - "travel_speed": "400", - "enable_prime_tower": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0" -} +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "compatible_printers": [], + "print_sequence": "by layer", + "default_acceleration": "10000", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "3", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.4", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json index eb2392a9950..e5da6affa15 100644 --- a/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json +++ b/resources/profiles/Ratrig/process/fdm_process_ratrig_common.json @@ -1,118 +1,115 @@ -{ - "type": "process", - "name": "fdm_process_ratrig_common", - "from": "system", - "instantiation": "false", - "inherits": "fdm_process_common", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", - "max_travel_detour_distance": "0", - "bottom_surface_pattern": "monotonic", - "bottom_shell_layers": "3", - "bottom_shell_thickness": "0", - "bridge_flow": "0.80", - "bridge_speed": "25", - "internal_bridge_speed" : "70", - "brim_width": "5", - "brim_object_gap": "0.1", - "compatible_printers_condition": "", - "print_sequence": "by layer", - "default_acceleration": "5000", - "top_surface_acceleration": "3000", - "travel_acceleration": "5000", - "inner_wall_acceleration": "5000", - "outer_wall_acceleration": "3000", - "bridge_no_support": "0", - "draft_shield": "disabled", - "elefant_foot_compensation": "0", - "outer_wall_line_width": "0.4", - "wall_infill_order": "inner wall/outer wall/infill", - "line_width": "0.4", - "infill_direction": "45", - "sparse_infill_density": "15%", - "sparse_infill_pattern": "grid", - "initial_layer_acceleration": "500", - "initial_layer_line_width": "0.45", - "initial_layer_print_height": "0.2", - "infill_combination": "0", - "sparse_infill_line_width": "0.4", - "infill_wall_overlap": "25%", - "interface_shells": "0", - "ironing_flow": "10%", - "ironing_spacing": "0.15", - "ironing_speed": "30", - "ironing_type": "no ironing", - "layer_height": "0.2", - "reduce_infill_retraction": "1", - "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", - "detect_overhang_wall": "1", - "overhang_1_4_speed": "0", - "overhang_2_4_speed": "60", - "overhang_3_4_speed": "30", - "overhang_4_4_speed": "10", - "inner_wall_line_width": "0.40", - "wall_loops": "4", - "print_settings_id": "", - "raft_layers": "0", - "seam_position": "aligned", - "skirt_distance": "2", - "skirt_height": "1", - "skirt_loops": "0", - "minimum_sparse_infill_area": "15", - "internal_solid_infill_line_width": "0.4", - "spiral_mode": "0", - "standby_temperature_delta": "-5", - "enable_support": "0", - "resolution": "0.012", - "support_type": "normal(auto)", - "support_on_build_plate_only": "0", - "support_top_z_distance": "0.2", - "support_filament": "0", - "support_line_width": "0.4", - "support_interface_loop_pattern": "0", - "support_interface_filament": "0", - "support_interface_top_layers": "2", - "support_interface_bottom_layers": "2", - "support_interface_spacing": "0.5", - "support_interface_speed": "80", - "support_base_pattern": "rectilinear", - "support_base_pattern_spacing": "2.5", - "support_speed": "150", - "support_threshold_angle": "30", - "support_object_xy_distance": "0.35", - "tree_support_branch_angle": "45", - "tree_support_wall_count": "0", - "detect_thin_wall": "0", - "top_surface_pattern": "monotonic", - "top_surface_line_width": "0.4", - "top_shell_layers": "3", - "top_shell_thickness": "0.8", - "initial_layer_speed": "50", - "initial_layer_infill_speed": "105", - "outer_wall_speed": "120", - "inner_wall_speed": "200", - "internal_solid_infill_speed": "200", - "top_surface_speed": "100", - "gap_infill_speed": "100", - "sparse_infill_speed": "200", - "travel_speed": "350", - "enable_prime_tower": "0", - "wipe_tower_no_sparse_layers": "0", - "prime_tower_width": "60", - "xy_hole_compensation": "0", - "xy_contour_compensation": "0", - "enable_arc_fitting": "0", - "wall_count" :"4", - "initial_layer_height" : "0.3", - "compatible_printers": [ - "RatRig V-Core 3 200 0.4 nozzle", - "RatRig V-Core 3 300 0.4 nozzle", - "RatRig V-Core 3 400 0.4 nozzle", - "RatRig V-Core 3 500 0.4 nozzle", - "RatRig V-Minion 0.4 nozzle", - "RatRig V-Cast 0.4 nozzle", - "RatRig V-Cast 0.6 nozzle" - ], - "exclude_object": "1" -} - +{ + "type": "process", + "name": "fdm_process_ratrig_common", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_common", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "0.80", + "bridge_speed": "25", + "internal_bridge_speed" : "70", + "brim_width": "5", + "brim_object_gap": "0.1", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "5000", + "top_surface_acceleration": "3000", + "travel_acceleration": "5000", + "inner_wall_acceleration": "5000", + "outer_wall_acceleration": "3000", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.4", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "500", + "initial_layer_line_width": "0.45", + "inital_layer_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.4", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.15", + "ironing_speed": "30", + "ironing_type": "no ironing", + "layer_height": "0.2", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{layer_height}mm_{filament_type[0]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "60", + "overhang_3_4_speed": "30", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.40", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "0", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.4", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.4", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "0.5", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "150", + "support_threshold_angle": "30", + "support_object_xy_distance": "0.35", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.4", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "105", + "outer_wall_speed": "120", + "inner_wall_speed": "200", + "internal_solid_infill_speed": "200", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "200", + "travel_speed": "350", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "enable_arc_fitting": "0", + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle" + ], + "exclude_object": "1" +} From 8709f225970f188bc7c9d7de6288642bfea5f655 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Fri, 27 Sep 2024 09:24:21 +0800 Subject: [PATCH 21/64] Allow reverse on odd without detect overhang wall (SoftFever/OrcaSlicer#6920) --- src/libslic3r/PerimeterGenerator.cpp | 12 ++++++++++++ src/libslic3r/PrintConfig.cpp | 3 ++- src/slic3r/GUI/ConfigManipulation.cpp | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/PerimeterGenerator.cpp b/src/libslic3r/PerimeterGenerator.cpp index 6cae4756a3b..3b9bc6daaa7 100644 --- a/src/libslic3r/PerimeterGenerator.cpp +++ b/src/libslic3r/PerimeterGenerator.cpp @@ -735,6 +735,12 @@ static ExtrusionEntityCollection traverse_loops(const PerimeterGenerator &perime if(paths.empty()) continue; chain_and_reorder_extrusion_paths(paths, &paths.front().first_point()); } else { + if (overhangs_reverse && perimeter_generator.layer_id > perimeter_generator.object_config->raft_layers) { + // Always reverse if detect overhang wall is not enabled + steep_overhang_contour = true; + steep_overhang_hole = true; + } + ExtrusionPath path(role); //BBS. path.polyline = polygon.split_at_first_point(); @@ -1219,6 +1225,12 @@ static ExtrusionEntityCollection traverse_extrusions(const PerimeterGenerator& p } } else { + if (overhangs_reverse && perimeter_generator.layer_id > perimeter_generator.object_config->raft_layers) { + // Always reverse if detect overhang wall is not enabled + steep_overhang_contour = true; + steep_overhang_hole = true; + } + extrusion_paths_append(paths, *extrusion, role, is_external ? perimeter_generator.ext_perimeter_flow : perimeter_generator.perimeter_flow); } diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 33941656dae..5dbf78c0da9 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1056,7 +1056,8 @@ void PrintConfigDef::init_fff_params() def->category = L("Quality"); // xgettext:no-c-format, no-boost-format def->tooltip = L("Number of mm the overhang need to be for the reversal to be considered useful. Can be a % of the perimeter width." - "\nValue 0 enables reversal on every even layers regardless."); + "\nValue 0 enables reversal on every even layers regardless." + "\nWhen Detect overhang wall is not enabled, this option is ignored and reversal happens on every even layers regardless."); def->sidetext = L("mm or %"); def->ratio_over = "line_width"; def->min = 0; diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 3f4399d68e3..704fdf0dac1 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -736,8 +736,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool has_detect_overhang_wall = config->opt_bool("detect_overhang_wall"); bool has_overhang_reverse = config->opt_bool("overhang_reverse"); bool force_wall_direction = config->opt_enum("wall_direction") != WallDirection::Auto; - bool allow_overhang_reverse = has_detect_overhang_wall && !has_spiral_vase && !force_wall_direction; + bool allow_overhang_reverse = !has_spiral_vase && !force_wall_direction; toggle_field("overhang_reverse", allow_overhang_reverse); + toggle_field("overhang_reverse_threshold", has_detect_overhang_wall); toggle_line("overhang_reverse_threshold", allow_overhang_reverse && has_overhang_reverse); toggle_line("overhang_reverse_internal_only", allow_overhang_reverse && has_overhang_reverse); bool has_overhang_reverse_internal_only = config->opt_bool("overhang_reverse_internal_only"); From 5b6232b084fdf30b1eb90660a3881d117820b6f0 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Fri, 27 Sep 2024 11:33:02 -0400 Subject: [PATCH 22/64] Add filaments and improve machine parameters --- resources/profiles/Ratrig.json | 12 +++ .../Ratrig/filament/RatRig PunkFil ABS.json | 93 +++++++++++++++++++ .../filament/RatRig PunkFil PETG CF.json | 93 +++++++++++++++++++ .../Ratrig/filament/RatRig PunkFil PETG.json | 93 +++++++++++++++++++ .../RatRig V-Core 4 300 0.4 nozzle.json | 17 ++-- .../RatRig V-Core 4 300 0.5 nozzle.json | 17 ++-- .../RatRig V-Core 4 300 0.6 nozzle.json | 17 ++-- .../RatRig V-Core 4 400 0.4 nozzle.json | 19 ++-- .../RatRig V-Core 4 400 0.5 nozzle.json | 19 ++-- .../RatRig V-Core 4 400 0.6 nozzle.json | 22 +++-- .../RatRig V-Core 4 500 0.4 nozzle.json | 19 ++-- .../RatRig V-Core 4 500 0.5 nozzle.json | 19 ++-- .../RatRig V-Core 4 500 0.6 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 300 0.4 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 300 0.5 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 300 0.6 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 400 0.4 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 400 0.5 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 400 0.6 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 500 0.4 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 500 0.5 nozzle.json | 19 ++-- ...RatRig V-Core 4 HYBRID 500 0.6 nozzle.json | 19 ++-- 22 files changed, 505 insertions(+), 125 deletions(-) create mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json create mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json create mode 100644 resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index 3519738f1ec..a3e6fe1fa31 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -235,6 +235,18 @@ { "name": "RatRig Generic PA-CF", "sub_path": "filament/RatRig Generic PA-CF.json" + }, + { + "name": "RatRig PunkFil ABS", + "sub_path": "filament/RatRig PunkFil ABS.json" + }, + { + "name": "RatRig PunkFil PETG CF", + "sub_path": "filament/RatRig PunkFil PETG CF.json" + }, + { + "name": "RatRig PunkFil PETG", + "sub_path": "filament/RatRig PunkFil PETG.json" } ], "machine_list": [ diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json new file mode 100644 index 00000000000..f614f700966 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json @@ -0,0 +1,93 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig PunkFil ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.92" + ], + "filament_max_volumetric_speed": [ + "40" + ], + "filament_z_hop": [ + "nil" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.022" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature": [ + "260" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "7" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "60" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_min_speed": [ + "50" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_cost": [ + "25.5" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json new file mode 100644 index 00000000000..3e956e88d25 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json @@ -0,0 +1,93 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig PunkFil PETG CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_z_hop": [ + "nil" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.038" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "hot_plate_temp" : [ + "80" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature": [ + "230" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "50%" + ], + "slow_down_min_speed": [ + "30" + ], + "slow_down_layer_time": [ + "8" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_cost": [ + "48" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json new file mode 100644 index 00000000000..b4114f10b70 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json @@ -0,0 +1,93 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig PunkFil PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "40" + ], + "filament_z_hop": [ + "nil" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.025" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "hot_plate_temp" : [ + "80" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "nozzle_temperature": [ + "235" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "8" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "50" + ], + "overhang_fan_threshold": [ + "50%" + ], + "slow_down_min_speed": [ + "50" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "filament_cost": [ + "24.5" + ], + "compatible_printers": [ + "RatRig V-Core 3 200 0.4 nozzle", + "RatRig V-Core 3 300 0.4 nozzle", + "RatRig V-Core 3 400 0.4 nozzle", + "RatRig V-Core 3 500 0.4 nozzle", + "RatRig V-Minion 0.4 nozzle", + "RatRig V-Cast 0.4 nozzle", + "RatRig V-Cast 0.6 nozzle", + "RatRig V-Core 4 300 0.4 nozzle", + "RatRig V-Core 4 400 0.4 nozzle", + "RatRig V-Core 4 500 0.4 nozzle", + "RatRig V-Core 4 HYBRID 300 0.4 nozzle", + "RatRig V-Core 4 HYBRID 400 0.4 nozzle", + "RatRig V-Core 4 HYBRID 500 0.4 nozzle", + "RatRig V-Core 4 300 0.5 nozzle", + "RatRig V-Core 4 400 0.5 nozzle", + "RatRig V-Core 4 500 0.5 nozzle", + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle", + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle", + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json index bee5029db67..9aa5e17c45c 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.4 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,23 +26,28 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.06"], "max_layer_height": ["0.3"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "300", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json index 94c11a1bbe9..4a69198bb7e 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.5 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,23 +26,28 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.07"], "max_layer_height": ["0.32"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "300", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json index b6033678690..bf8af7c54b0 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 300 0.6 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,23 +26,28 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.1"], "max_layer_height": ["0.4"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.3"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "300", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json index f01c8a7c823..f95218ddb2d 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.4 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,25 +26,30 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.06"], "max_layer_height": ["0.3"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", + "printable_height": "300", "thumbnails": [ "64x64/PNG", "400x300/PNG" diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json index a43e8c82d52..7a69713f1b4 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.5 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,25 +26,30 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.07"], "max_layer_height": ["0.32"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", + "printable_height": "300", "thumbnails": [ "64x64/PNG", "400x300/PNG" diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json index b47ecf033b3..8a2c557b01c 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 400 0.6 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,26 +26,30 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.1"], "max_layer_height": ["0.4"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.3"], "retraction_length": ["2"], "retraction_speed": ["40"], - "deretraction_speed": ["0"], - "retraction_minimum_travel": ["2"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "deretraction_speed": ["120"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "400", + "printable_height": "300", "thumbnails": [ "64x64/PNG", "400x300/PNG" diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json index b1d3c11ff3a..d89467a3b42 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.4 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,25 +26,30 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.06"], "max_layer_height": ["0.3"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", + "printable_height": "300", "thumbnails": [ "64x64/PNG", "400x300/PNG" diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json index 46643c68c8c..96618aa218a 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.5 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,25 +26,30 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.07"], "max_layer_height": ["0.32"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.25"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", + "printable_height": "300", "thumbnails": [ "64x64/PNG", "400x300/PNG" diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json index aef0823eaca..adb004f782a 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 500 0.6 nozzle.json @@ -18,7 +18,7 @@ ], "machine_max_speed_x": ["400", "400"], "machine_max_speed_y": ["400", "400"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["10000", "10000"], "machine_max_acceleration_y": ["10000", "10000"], @@ -26,25 +26,30 @@ "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["10000", "10000"], "machine_max_acceleration_retracting": ["10000", "10000"], + "machine_max_acceleration_travel": ["10000", "10000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.1"], "max_layer_height": ["0.4"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.3"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", - "printable_height": "500", + "printable_height": "300", "thumbnails": [ "64x64/PNG", "400x300/PNG" diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json index a5687013718..19592514fd1 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.4 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.06"], "max_layer_height": ["0.3"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "300", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json index d4277f77614..5f3449a306d 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.5 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.07"], "max_layer_height": ["0.32"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "300", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json index 9f5d69299af..951606077f2 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.6 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.1"], "max_layer_height": ["0.4"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.3"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "300", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json index 40c56a1db0f..84f7796e4d7 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.4 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.06"], "max_layer_height": ["0.3"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "400", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json index ca973935020..9adc92b1e0e 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.5 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.07"], "max_layer_height": ["0.32"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "400", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json index f26750c4f48..7af4004b0d9 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.6 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.1"], "max_layer_height": ["0.4"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.3"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "400", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json index 08eae27e320..845752dee6a 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.4 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.06"], "max_layer_height": ["0.3"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.2"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "500", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json index 58a7ef937ec..9eb0716da33 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.5 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.07"], "max_layer_height": ["0.32"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.25"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "500", "thumbnails": [ diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json index 05c5c9c075b..d606c82b540 100644 --- a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.6 nozzle.json @@ -18,31 +18,36 @@ ], "machine_max_speed_x": ["500", "500"], "machine_max_speed_y": ["500", "500"], - "machine_max_speed_z": ["50", "50"], + "machine_max_speed_z": ["200", "200"], "machine_max_speed_e": ["120", "120"], "machine_max_acceleration_x": ["20000", "20000"], "machine_max_acceleration_y": ["20000", "20000"], "machine_max_acceleration_z": ["200", "200"], - "machine_max_acceleration_e": ["20000", "20000"], + "machine_max_acceleration_e": ["5000", "5000"], "machine_max_acceleration_extruding": ["20000", "20000"], "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], "machine_max_jerk_x": ["5", "5"], "machine_max_jerk_y": ["5", "5"], "machine_max_jerk_z": ["0.4", "0.4"], "machine_max_jerk_e": ["5", "5"], "min_layer_height": ["0.1"], "max_layer_height": ["0.4"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", "retract_lift_below": ["0.3"], "retraction_length": ["0.8"], "retraction_speed": ["120"], "deretraction_speed": ["120"], - "wipe": ["0"], - "retract_before_wipe": ["0%"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", - "before_layer_change_gcode": ";[layer_z]", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", "change_filament_gcode": "M600", - "machine_pause_gcode": "M601", + "machine_pause_gcode": "PAUSE", "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", "printable_height": "500", "thumbnails": [ From df2006858d7644aa2582701018883f1b7a62ab55 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:01:54 -0400 Subject: [PATCH 23/64] Fix incorrect filament type for RatRig PunkFil PETG CF --- resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json index 3e956e88d25..d475b3e4111 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json @@ -63,6 +63,9 @@ "filament_cost": [ "48" ], + "filament_type": [ + "PETG-CF" + ], "compatible_printers": [ "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", From 23d597a3029d4ea8fb21e1d9437937f604dd0bf2 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:25:12 -0400 Subject: [PATCH 24/64] Add PETG-CF10 filament type & RatRig filament vendor --- .../Ratrig/filament/RatRig PunkFil ABS.json | 3 +++ .../Ratrig/filament/RatRig PunkFil PETG CF.json | 5 ++++- .../Ratrig/filament/RatRig PunkFil PETG.json | 3 +++ src/libslic3r/PrintConfig.cpp | 1 + src/slic3r/GUI/CreatePresetsDialog.cpp | 14 +++++++------- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json index f614f700966..c8affa0ab3f 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil ABS.json @@ -63,6 +63,9 @@ "filament_cost": [ "25.5" ], + "filament_vendor": [ + "RatRig" + ], "compatible_printers": [ "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json index d475b3e4111..8150ef9d539 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG CF.json @@ -64,7 +64,10 @@ "48" ], "filament_type": [ - "PETG-CF" + "PETG-CF10" + ], + "filament_vendor": [ + "RatRig" ], "compatible_printers": [ "RatRig V-Core 3 200 0.4 nozzle", diff --git a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json index b4114f10b70..aff5fa4c6d3 100644 --- a/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json +++ b/resources/profiles/Ratrig/filament/RatRig PunkFil PETG.json @@ -63,6 +63,9 @@ "filament_cost": [ "24.5" ], + "filament_vendor": [ + "RatRig" + ], "compatible_printers": [ "RatRig V-Core 3 200 0.4 nozzle", "RatRig V-Core 3 300 0.4 nozzle", diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 33941656dae..cc35375a094 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2124,6 +2124,7 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("PET-CF"); def->enum_values.push_back("PETG"); def->enum_values.push_back("PETG-CF"); + def->enum_values.push_back("PETG-CF10"); def->enum_values.push_back("PHA"); def->enum_values.push_back("PLA"); def->enum_values.push_back("PLA-AERO"); diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index bb784e567d1..6606d5f5f52 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -47,20 +47,20 @@ static const std::vector filament_vendors = "Duramic", "ELEGOO", "Eryone", "Essentium", "eSUN", "Extrudr", "Fiberforce", "Fiberlogy", "FilaCube", "Filamentive", "Fillamentum", "FLASHFORGE", "Formfutura", "Francofil", "FilamentOne", - "Fil X", "GEEETECH", "Giantarm", "Gizmo Dorks", "GreenGate3D", + "Fil X", "GEEETECH", "Giantarm", "Gizmo Dorks", "GreenGate3D", "HATCHBOX", "Hello3D", "IC3D", "IEMAI", "IIID Max", "INLAND", "iProspect", "iSANMATE", "Justmaker", "Keene Village Plastics", "Kexcelled", "MakerBot", "MatterHackers", "MIKA3D", "NinjaTek", "Nobufil", "Novamaker", "OVERTURE", "OVVNYXE", "Polymaker", "Priline", "Printed Solid", "Protopasta", "Prusament", "Push Plastic", - "R3D", "Re-pet3D", "Recreus", "Regen", "Sain SMART", - "SliceWorx", "Snapmaker", "SnoLabs", "Spectrum", "SUNLU", - "TTYT3D", "Tianse", "UltiMaker", "Valment", "Verbatim", - "VO3D", "Voxelab", "VOXELPLA", "YOOPAI", "Yousu", - "Ziro", "Zyltech"}; + "R3D", "Re-pet3D", "Recreus", "Regen", "RatRig", + "Sain SMART", "SliceWorx", "Snapmaker", "SnoLabs", "Spectrum", + "SUNLU", "TTYT3D", "Tianse", "UltiMaker", "Valment", + "Verbatim", "VO3D", "Voxelab", "VOXELPLA", "YOOPAI", + "Yousu", "Ziro", "Zyltech"}; static const std::vector filament_types = {"PLA", "rPLA", "PLA+", "PLA Tough", "PETG", "ABS", "ASA", "FLEX", "HIPS", "PA", "PACF", - "NYLON", "PVA", "PVB", "PC", "PCABS", "PCTG", "PCCF", "PHA", "PP", "PEI", "PET", "PETG", + "NYLON", "PVA", "PVB", "PC", "PCABS", "PCTG", "PCCF", "PHA", "PP", "PEI", "PET", "PETGCF", "PTBA", "PTBA90A", "PEEK", "TPU93A", "TPU75D", "TPU", "TPU92A", "TPU98A", "Misc", "TPE", "GLAZE", "Nylon", "CPE", "METAL", "ABST", "Carbon Fiber", "SBS"}; From 97d1745e5a76ecc6d8b2a7790b5a7250b704f1f4 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 30 Sep 2024 13:34:59 +0800 Subject: [PATCH 25/64] Update files related to support to match BambuStudio's project structure --- src/libslic3r/CMakeLists.txt | 22 +- src/libslic3r/Print.cpp | 1 - src/libslic3r/PrintObject.cpp | 8 +- src/libslic3r/Support/OrganicSupport.cpp | 1420 ---- src/libslic3r/Support/OrganicSupport.hpp | 39 - src/libslic3r/Support/SupportCommon.cpp | 2 +- src/libslic3r/Support/SupportCommon.hpp | 4 - src/libslic3r/Support/SupportDebug.cpp | 108 - src/libslic3r/Support/SupportDebug.hpp | 18 - src/libslic3r/Support/SupportLayer.hpp | 2 +- src/libslic3r/Support/SupportMaterial.cpp | 2950 +++++++- src/libslic3r/Support/SupportMaterial.hpp | 214 +- src/libslic3r/Support/SupportParameters.cpp | 144 - src/libslic3r/Support/SupportParameters.hpp | 140 +- .../{ => Support}/SupportSpotsGenerator.cpp | 0 .../{ => Support}/SupportSpotsGenerator.hpp | 0 src/libslic3r/Support/TreeModelVolumes.cpp | 4 +- src/libslic3r/Support/TreeModelVolumes.hpp | 4 +- src/libslic3r/Support/TreeSupport.cpp | 6698 +++++++++-------- src/libslic3r/Support/TreeSupport.hpp | 656 +- src/libslic3r/Support/TreeSupport3D.cpp | 990 +-- src/libslic3r/Support/TreeSupport3D.hpp | 71 +- src/libslic3r/Support/TreeSupportCommon.cpp | 212 - src/libslic3r/Support/TreeSupportCommon.hpp | 196 +- src/libslic3r/SupportMaterial.cpp | 4960 ------------ src/libslic3r/SupportMaterial.hpp | 263 - src/libslic3r/TreeSupport.cpp | 3716 --------- src/libslic3r/TreeSupport.hpp | 511 -- 28 files changed, 7410 insertions(+), 15943 deletions(-) delete mode 100644 src/libslic3r/Support/OrganicSupport.cpp delete mode 100644 src/libslic3r/Support/OrganicSupport.hpp delete mode 100644 src/libslic3r/Support/SupportDebug.cpp delete mode 100644 src/libslic3r/Support/SupportDebug.hpp delete mode 100644 src/libslic3r/Support/SupportParameters.cpp rename src/libslic3r/{ => Support}/SupportSpotsGenerator.cpp (100%) rename src/libslic3r/{ => Support}/SupportSpotsGenerator.hpp (100%) delete mode 100644 src/libslic3r/Support/TreeSupportCommon.cpp delete mode 100644 src/libslic3r/SupportMaterial.cpp delete mode 100644 src/libslic3r/SupportMaterial.hpp delete mode 100644 src/libslic3r/TreeSupport.cpp delete mode 100644 src/libslic3r/TreeSupport.hpp diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index d3c08bacc67..2c362dba23e 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -307,29 +307,21 @@ set(lisbslic3r_sources SlicingAdaptive.hpp Support/SupportCommon.cpp Support/SupportCommon.hpp - Support/SupportDebug.cpp - Support/SupportDebug.hpp Support/SupportLayer.hpp - # Support/SupportMaterial.cpp - # Support/SupportMaterial.hpp - Support/SupportParameters.cpp + Support/SupportMaterial.cpp + Support/SupportMaterial.hpp Support/SupportParameters.hpp - Support/OrganicSupport.cpp - Support/OrganicSupport.hpp - Support/TreeSupport.cpp + Support/SupportSpotsGenerator.cpp + Support/SupportSpotsGenerator.hpp Support/TreeSupport.hpp - Support/TreeSupportCommon.cpp + Support/TreeSupport.cpp + Support/TreeSupport3D.cpp + Support/TreeSupport3D.hpp Support/TreeSupportCommon.hpp Support/TreeModelVolumes.cpp Support/TreeModelVolumes.hpp - SupportMaterial.cpp - SupportMaterial.hpp PrincipalComponents2D.cpp PrincipalComponents2D.hpp - SupportSpotsGenerator.cpp - SupportSpotsGenerator.hpp - TreeSupport.hpp - TreeSupport.cpp MinimumSpanningTree.hpp MinimumSpanningTree.cpp Surface.cpp diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index d1d1d15b423..f76029d2eef 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -9,7 +9,6 @@ #include "Geometry/ConvexHull.hpp" #include "I18N.hpp" #include "ShortestPath.hpp" -#include "Support/SupportMaterial.hpp" #include "Thread.hpp" #include "Time.hpp" #include "GCode.hpp" diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index fc83b1a8d97..ce9536d708c 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -8,9 +8,10 @@ #include "Layer.hpp" #include "MutablePolygon.hpp" #include "PrintConfig.hpp" -#include "SupportMaterial.hpp" -#include "SupportSpotsGenerator.hpp" +#include "Support/SupportMaterial.hpp" +#include "Support/SupportSpotsGenerator.hpp" #include "Support/TreeSupport.hpp" +#include "Support/TreeSupport3D.hpp" #include "Surface.hpp" #include "Slicing.hpp" #include "Tesselate.hpp" @@ -19,7 +20,6 @@ #include "Fill/FillAdaptive.hpp" #include "Fill/FillLightning.hpp" #include "Format/STL.hpp" -#include "TreeSupport.hpp" #include "format.hpp" #include @@ -3528,7 +3528,7 @@ void PrintObject::_generate_support_material() if (this->config().support_style.value == smsOrganic || // Orca: use organic as default this->config().support_style.value == smsDefault) { - fff_tree_support_generate(*this, std::function([this]() { this->throw_if_canceled(); })); + generate_tree_support_3D(*this, std::function([this]() { this->throw_if_canceled(); })); } else { TreeSupport tree_support(*this, m_slicing_params); tree_support.generate(); diff --git a/src/libslic3r/Support/OrganicSupport.cpp b/src/libslic3r/Support/OrganicSupport.cpp deleted file mode 100644 index 05e515d94ec..00000000000 --- a/src/libslic3r/Support/OrganicSupport.cpp +++ /dev/null @@ -1,1420 +0,0 @@ -#include "OrganicSupport.hpp" -#include "SupportCommon.hpp" - -#include "../AABBTreeLines.hpp" -#include "../ClipperUtils.hpp" -#include "../Polygon.hpp" -#include "../Polyline.hpp" -#include "../MutablePolygon.hpp" -#include "../TriangleMeshSlicer.hpp" - -#include - -#include - -#define TREE_SUPPORT_ORGANIC_NUDGE_NEW 1 - -#ifndef TREE_SUPPORT_ORGANIC_NUDGE_NEW - // Old version using OpenVDB, works but it is extremely slow for complex meshes. - #include "../OpenVDBUtilsLegacy.hpp" - #include -#endif // TREE_SUPPORT_ORGANIC_NUDGE_NEW - -namespace Slic3r -{ - -namespace FFFTreeSupport -{ - -// Single slice through a single branch or trough a number of branches. -struct Slice -{ - // All polygons collected for this slice. - Polygons polygons; - // All bottom contacts collected for this slice. - Polygons bottom_contacts; - // How many branches were merged in this slice? Used to decide whether ClipperLib union is needed. - size_t num_branches{ 0 }; -}; - -struct Element -{ - // Current position of the centerline including the Z coordinate, unscaled. - Vec3f position; - float radius; - - // Index of this layer, including the raft layers. - LayerIndex layer_idx; - - // Limits where the centerline could be placed at the current layer Z. - Polygons influence_area; - - // Locked node should not be moved. Locked nodes are at the top of an object or at the tips of branches. - bool locked; - - // Previous position, for Laplacian smoothing, unscaled. - Vec3f prev_position; - - // For sphere tracing and other collision detection optimizations. - Vec3f last_collision; - double last_collision_depth; - - struct CollisionSphere { - // Minimum Z for which the sphere collision will be evaluated. - // Limited by the minimum sloping angle and by the bottom of the tree. - float min_z{ -std::numeric_limits::max() }; - // Maximum Z for which the sphere collision will be evaluated. - // Limited by the minimum sloping angle and by the tip of the current branch. - float max_z{ std::numeric_limits::max() }; - // Span of layers to test collision of this sphere against. - uint32_t layer_begin; - uint32_t layer_end; - }; - - CollisionSphere collision_sphere; -}; - -struct Branch; - -struct Bifurcation -{ - Branch *branch; - double area; -}; - -// Single branch of a tree. -struct Branch -{ - std::vector path; - - using Bifurcations = -#ifdef NDEBUG - // To reduce memory allocation in release mode. - boost::container::small_vector; -#else // NDEBUG - // To ease debugging. - std::vector; -#endif // NDEBUG - - Bifurcations up; - Bifurcation down; - - // How many of the thick up branches are considered continuation of the trunk? - // These will be smoothed out together. - size_t num_up_trunk; - - bool has_root() const { return this->down.branch == nullptr; } - bool has_tip() const { return this->up.empty(); } -}; - -struct Tree -{ - // Branches: Store of all branches. - // The first branch is the root of the tree. - Slic3r::deque branches; - - Branch& root() { return branches.front(); } - const Branch& root() const { return branches.front(); } - - // Result of slicing the branches. - std::vector slices; - // First layer index of the first slice in the vector above. - LayerIndex first_layer_id{ -1 }; -}; - -using Forest = std::vector; -using Trees = std::vector; - -Element to_tree_element(const TreeSupportSettings &config, const SlicingParameters &slicing_params, SupportElement &element, bool is_root) -{ - Element out; - out.position = to_3d(unscaled(element.state.result_on_layer), float(layer_z(slicing_params, config, element.state.layer_idx))); - out.radius = support_element_radius(config, element); - out.layer_idx = element.state.layer_idx; - out.influence_area = std::move(element.influence_area); - out.locked = (is_root && element.state.layer_idx > 0) || element.state.locked(); - return out; -} - -// Convert move bounds into a forest of trees, each tree made of a graph of branches and bifurcation points. -// Destroys move_bounds. -Forest make_forest(const TreeSupportSettings &config, const SlicingParameters &slicing_params, std::vector &&move_bounds) -{ - struct TreeVisitor { - void visit_recursive(std::vector &move_bounds, SupportElement &start_element, Branch *parent_branch, Tree &out) const { - assert(! start_element.state.marked && ! start_element.parents.empty()); - // Collect elements up to a bifurcation above. - start_element.state.marked = true; - // For each branch bifurcating from this point: -// SupportElements &layer = move_bounds[start_element.state.layer_idx]; - SupportElements &layer_above = move_bounds[start_element.state.layer_idx + 1]; - for (size_t parent_idx = 0; parent_idx < start_element.parents.size(); ++ parent_idx) { - Branch branch; - if (parent_branch) - // Duplicate the last element of the trunk below. - // If this branch has a smaller diameter than the trunk below, its centerline will not be aligned with the centerline of the trunk. - branch.path.emplace_back(parent_branch->path.back()); - branch.path.emplace_back(to_tree_element(config, slicing_params, start_element, parent_branch == nullptr)); - // Traverse each branch until it branches again. - SupportElement &first_parent = layer_above[start_element.parents[parent_idx]]; - assert(! first_parent.state.marked); - assert(branch.path.back().layer_idx + 1 == first_parent.state.layer_idx); - branch.path.emplace_back(to_tree_element(config, slicing_params, first_parent, false)); - if (first_parent.parents.size() < 2) - first_parent.state.marked = true; - SupportElement *next_branch = nullptr; - if (first_parent.parents.size() == 1) { - for (SupportElement *parent = &first_parent;;) { - assert(parent->state.marked); - SupportElement &next_parent = move_bounds[parent->state.layer_idx + 1][parent->parents.front()]; - assert(! next_parent.state.marked); - assert(branch.path.back().layer_idx + 1 == next_parent.state.layer_idx); - branch.path.emplace_back(to_tree_element(config, slicing_params, next_parent, false)); - if (next_parent.parents.size() > 1) { - // Branching point was reached. - next_branch = &next_parent; - break; - } - next_parent.state.marked = true; - if (next_parent.parents.size() == 0) - // Tip is reached. - break; - parent = &next_parent; - } - } else if (first_parent.parents.size() > 1) - // Branching point was reached. - next_branch = &first_parent; - assert(branch.path.size() >= 2); - assert(next_branch == nullptr || ! next_branch->state.marked); - out.branches.emplace_back(std::move(branch)); - Branch *pbranch = &out.branches.back(); - if (parent_branch) { - parent_branch->up.push_back({ pbranch }); - pbranch->down = { parent_branch }; - } - if (next_branch) - this->visit_recursive(move_bounds, *next_branch, pbranch, out); - } - - if (parent_branch) { - // Update initial radii of thin branches merging with a trunk. - auto it_up_max_r = std::max_element(parent_branch->up.begin(), parent_branch->up.end(), - [](const Bifurcation &l, const Bifurcation &r){ return l.branch->path[1].radius < r.branch->path[1].radius; }); - const float r1 = it_up_max_r->branch->path[1].radius; - const float radius_increment = unscaled(config.branch_radius_increase_per_layer); - for (auto it = parent_branch->up.begin(); it != parent_branch->up.end(); ++ it) - if (it != it_up_max_r) { - Element &el = it->branch->path.front(); - Element &el2 = it->branch->path[1]; - if (! is_approx(r1, el2.radius)) - el.radius = std::min(el.radius, el2.radius + radius_increment); - } - // Sort children of parent_branch by decreasing radius. - std::sort(parent_branch->up.begin(), parent_branch->up.end(), - [](const Bifurcation &l, const Bifurcation &r){ return l.branch->path.front().radius > r.branch->path.front().radius; }); - // Update number of branches to be considered a continuation of the trunk during smoothing. - { - const float r_trunk = 0.75 * it_up_max_r->branch->path.front().radius; - parent_branch->num_up_trunk = 0; - for (const Bifurcation& up : parent_branch->up) - if (up.branch->path.front().radius < r_trunk) - break; - else - ++ parent_branch->num_up_trunk; - } - } - } - - const TreeSupportSettings &config; - const SlicingParameters &slicing_params; - }; - - TreeVisitor visitor{ config, slicing_params }; - - for (SupportElements &elements : move_bounds) - for (SupportElement &el : elements) - el.state.marked = false; - - Trees trees; - for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++ layer_idx) { - for (SupportElement &start_element : move_bounds[layer_idx]) { - if (! start_element.state.marked && ! start_element.parents.empty()) { -#if 0 - { - // Verify that this node is a root, such that there is no element in the layer below - // that points to it. - int ielement = &start_element - move_bounds.data(); - int found = 0; - if (layer_idx > 0) { - for (auto &el : move_bounds[layer_idx - 1]) { - for (auto iparent : el.parents) - if (iparent == ielement) - ++ found; - } - if (found != 0) - printf("Found: %d\n", found); - } - } -#endif - trees.push_back({}); - visitor.visit_recursive(move_bounds, start_element, nullptr, trees.back()); - assert(! trees.back().branches.empty()); - assert(! trees.back().branches.front().path.empty()); -#if 0 - // Debugging: Only build trees with specific properties. - if (start_element.state.lost) { - } - else if (start_element.state.verylost) { - } - else - trees.pop_back(); -#endif - } - } - } - -#if 1 - move_bounds.clear(); -#else - for (SupportElements &elements : move_bounds) - for (SupportElement &el : elements) - el.state.marked = false; -#endif - - return trees; -} - -// Move bounds were propagated top to bottom. At each joint of branches the move bounds were reduced significantly. -// Now reflect the reduction of tree space by propagating the reduction of tree centerline space -// bottom-up starting with the bottom-most joint. -void trim_influence_areas_bottom_up(Forest &forest, const float dxy_dlayer) -{ - struct Trimmer { - static void trim_recursive(Branch &branch, const float delta_r, const float dxy_dlayer) { - assert(delta_r >= 0); - if (delta_r > 0) - branch.path.front().influence_area = offset(branch.path.front().influence_area, delta_r); - for (size_t i = 1; i < branch.path.size(); ++ i) - branch.path[i].influence_area = intersection(branch.path[i].influence_area, offset(branch.path[i - 1].influence_area, dxy_dlayer)); - const float r0 = branch.path.back().radius; - for (Bifurcation &up : branch.up) { - up.branch->path.front().influence_area = branch.path.back().influence_area; - trim_recursive(*up.branch, r0 - up.branch->path.front().radius, dxy_dlayer); - } - } - }; - - for (Tree &tree : forest) { - Branch &root = tree.root(); - const float r0 = root.path.back().radius; - for (Bifurcation &up : root.up) - Trimmer::trim_recursive(*up.branch, r0 - up.branch->path.front().radius, dxy_dlayer); - } -} - -// Straighten up and smooth centerlines inside their influence areas. -void smooth_trees_inside_influence_areas(Branch &root, bool is_root) -{ - // Smooth the subtree: - // - // Apply laplacian and bilaplacian smoothing inside a branch, - // apply laplacian smoothing only at a bifurcation point. - // - // Applying a bilaplacian smoothing inside a branch should ensure curvature of the brach to be lower - // than the radius at each particular point of the centerline, - // while omitting bilaplacian smoothing at bifurcation points will create sharp bifurcations. - // Sharp bifurcations have a smaller volume, but just a tiny bit larger surfaces than smooth bifurcations - // where each continuation of the trunk satifies the path radius > centerline element radius. - const size_t num_iterations = 100; - struct StackElement { - Branch &branch; - size_t idx_up; - }; - std::vector stack; - - auto adjust_position = [](Element &el, Vec2f new_pos) { - Point new_pos_scaled = scaled(new_pos); - if (! contains(el.influence_area, new_pos_scaled)) { - int64_t min_dist = std::numeric_limits::max(); - Point min_proj_scaled; - for (const Polygon& polygon : el.influence_area) { - Point proj_scaled = polygon.point_projection(new_pos_scaled); - if (int64_t dist = (proj_scaled - new_pos_scaled).cast().squaredNorm(); dist < min_dist) { - min_dist = dist; - min_proj_scaled = proj_scaled; - } - } - new_pos = unscaled(min_proj_scaled); - } - el.position.head<2>() = new_pos; - }; - - for (size_t iter = 0; iter < num_iterations; ++ iter) { - // 1) Back-up the current positions. - stack.push_back({ root, 0 }); - while (! stack.empty()) { - StackElement &state = stack.back(); - if (state.idx_up == state.branch.num_up_trunk) { - // Process this path. - for (auto &el : state.branch.path) - el.prev_position = el.position; - stack.pop_back(); - } else { - // Open another up node of this branch. - stack.push_back({ *state.branch.up[state.idx_up].branch, 0 }); - ++ state.idx_up; - } - } - // 2) Calculate new position. - stack.push_back({ root, 0 }); - while (! stack.empty()) { - StackElement &state = stack.back(); - if (state.idx_up == state.branch.num_up_trunk) { - // Process this path. - for (size_t i = 1; i + 1 < state.branch.path.size(); ++ i) - if (auto &el = state.branch.path[i]; ! el.locked) { - // Laplacian smoothing with 0.5 weight. - const Vec3f &p0 = state.branch.path[i - 1].prev_position; - const Vec3f &p1 = el.prev_position; - const Vec3f &p2 = state.branch.path[i + 1].prev_position; - adjust_position(el, 0.5 * p1.head<2>() + 0.25 * (p0.head<2>() + p2.head<2>())); -#if 0 - // Only apply bilaplacian smoothing if the current curvature is smaller than el.radius. - // Interpolate p0, p1, p2 with a circle. - // First project p0, p1, p2 into a common plane. - const Vec3f n = (p1 - p0).cross(p2 - p1); - const Vec3f y = Vec3f(n.y(), n.x(), 0).normalized(); - const Vec2f q0{ p0.z(), p0.dot(y) }; - const Vec2f q1{ p1.z(), p1.dot(y) }; - const Vec2f q2{ p2.z(), p2.dot(y) }; - // Interpolate q0, q1, q2 with a circle, calculate its radius. - Vec2f b = q1 - q0; - Vec2f c = q2 - q0; - float lb = b.squaredNorm(); - float lc = c.squaredNorm(); - if (float d = b.x() * c.y() - b.y() * c.x(); std::abs(d) > EPSILON) { - Vec2f v = lc * b - lb * c; - float r2 = 0.25f * v.squaredNorm() / sqr(d); - if (r2 ) - } -#endif - } - { - // Laplacian smoothing with 0.5 weight, branching point. - float weight = 0; - Vec2f new_pos = Vec2f::Zero(); - for (size_t i = 0; i < state.branch.num_up_trunk; ++i) { - const Element &el = state.branch.up[i].branch->path.front(); - new_pos += el.prev_position.head<2>(); - weight += el.radius; - } - { - const Element &el = state.branch.path[state.branch.path.size() - 2]; - new_pos += el.prev_position.head<2>(); - weight *= 2.f; - } - adjust_position(state.branch.path.back(), 0.5f * state.branch.path.back().prev_position.head<2>() + 0.5f * weight * new_pos); - } - stack.pop_back(); - } else { - // Open another up node of this branch. - stack.push_back({ *state.branch.up[state.idx_up].branch, 0 }); - ++ state.idx_up; - } - } - } - // Also smoothen start of the path. - if (Element &first = root.path.front(); ! first.locked) { - Element &second = root.path[1]; - Vec2f new_pos = 0.75f * first.prev_position.head<2>() + 0.25f * second.prev_position.head<2>(); - if (is_root) - // Let the root of the tree float inside its influence area. - adjust_position(first, new_pos); - else { - // Keep the start of a thin branch inside the trunk. - const Element &trunk = root.down.branch->path.back(); - const float rdif = trunk.radius - root.path.front().radius; - assert(rdif >= 0); - Vec2f vdif = new_pos - trunk.prev_position.head<2>(); - float ldif = vdif.squaredNorm(); - if (ldif > sqr(rdif)) - // Clamp new position. - new_pos = trunk.prev_position.head<2>() + vdif * rdif / sqrt(ldif); - first.position.head<2>() = new_pos; - } - } -} - -void smooth_trees_inside_influence_areas(Forest &forest) -{ - // Parallel for! - for (Tree &tree : forest) - smooth_trees_inside_influence_areas(tree.root(), true); -} - -#if 0 -// Test whether two circles, each on its own plane in 3D intersect. -// Circles are considered intersecting, if the lowest point on one circle is below the other circle's plane. -// Assumption: The two planes are oriented the same way. -static bool circles_intersect( - const Vec3d &p1, const Vec3d &n1, const double r1, - const Vec3d &p2, const Vec3d &n2, const double r2) -{ - assert(n1.dot(n2) >= 0); - - const Vec3d z = n1.cross(n2); - const Vec3d dir1 = z.cross(n1); - const Vec3d lowest_point1 = p1 + dir1 * (r1 / dir1.norm()); - assert(n2.dot(p1) >= n2.dot(lowest_point1)); - if (n2.dot(lowest_point1) <= 0) - return true; - const Vec3d dir2 = z.cross(n2); - const Vec3d lowest_point2 = p2 + dir2 * (r2 / dir2.norm()); - assert(n1.dot(p2) >= n1.dot(lowest_point2)); - return n1.dot(lowest_point2) <= 0; -} -#endif - -template -void triangulate_fan(indexed_triangle_set &its, int ifan, int ibegin, int iend) -{ - // at least 3 vertices, increasing order. - assert(ibegin + 3 <= iend); - assert(ibegin >= 0 && iend <= its.vertices.size()); - assert(ifan >= 0 && ifan < its.vertices.size()); - int num_faces = iend - ibegin; - its.indices.reserve(its.indices.size() + num_faces * 3); - for (int v = ibegin, u = iend - 1; v < iend; u = v ++) { - if (flip_normals) - its.indices.push_back({ ifan, u, v }); - else - its.indices.push_back({ ifan, v, u }); - } -} - -static void triangulate_strip(indexed_triangle_set &its, int ibegin1, int iend1, int ibegin2, int iend2) -{ - // at least 3 vertices, increasing order. - assert(ibegin1 + 3 <= iend1); - assert(ibegin1 >= 0 && iend1 <= its.vertices.size()); - assert(ibegin2 + 3 <= iend2); - assert(ibegin2 >= 0 && iend2 <= its.vertices.size()); - int n1 = iend1 - ibegin1; - int n2 = iend2 - ibegin2; - its.indices.reserve(its.indices.size() + (n1 + n2) * 3); - - // For the first vertex of 1st strip, find the closest vertex on the 2nd strip. - int istart2 = ibegin2; - { - const Vec3f &p1 = its.vertices[ibegin1]; - auto d2min = std::numeric_limits::max(); - for (int i = ibegin2; i < iend2; ++ i) { - const Vec3f &p2 = its.vertices[i]; - const float d2 = (p2 - p1).squaredNorm(); - if (d2 < d2min) { - d2min = d2; - istart2 = i; - } - } - } - - // Now triangulate the strip zig-zag fashion taking always the shortest connection if possible. - for (int u = ibegin1, v = istart2; n1 > 0 || n2 > 0;) { - bool take_first; - int u2, v2; - auto update_u2 = [&u2, u, ibegin1, iend1]() { - u2 = u; - if (++ u2 == iend1) - u2 = ibegin1; - }; - auto update_v2 = [&v2, v, ibegin2, iend2]() { - v2 = v; - if (++ v2 == iend2) - v2 = ibegin2; - }; - if (n1 == 0) { - take_first = false; - update_v2(); - } else if (n2 == 0) { - take_first = true; - update_u2(); - } else { - update_u2(); - update_v2(); - float l1 = (its.vertices[u2] - its.vertices[v]).squaredNorm(); - float l2 = (its.vertices[v2] - its.vertices[u]).squaredNorm(); - take_first = l1 < l2; - } - if (take_first) { - its.indices.push_back({ u, u2, v }); - -- n1; - u = u2; - } else { - its.indices.push_back({ u, v2, v }); - -- n2; - v = v2; - } - } -} - -// Discretize 3D circle, append to output vector, return ranges of indices of the points added. -static std::pair discretize_circle(const Vec3f ¢er, const Vec3f &normal, const float radius, const float eps, std::vector &pts) -{ - // Calculate discretization step and number of steps. - float angle_step = 2. * acos(1. - eps / radius); - auto nsteps = int(ceil(2 * M_PI / angle_step)); - angle_step = 2 * M_PI / nsteps; - - // Prepare coordinate system for the circle plane. - Vec3f x = normal.cross(Vec3f(0.f, -1.f, 0.f)).normalized(); - Vec3f y = normal.cross(x).normalized(); - assert(std::abs(x.cross(y).dot(normal) - 1.f) < EPSILON); - - // Discretize the circle. - int begin = int(pts.size()); - pts.reserve(pts.size() + nsteps); - float angle = 0; - x *= radius; - y *= radius; - for (int i = 0; i < nsteps; ++ i) { - pts.emplace_back(center + x * cos(angle) + y * sin(angle)); - angle += angle_step; - } - return { begin, int(pts.size()) }; -} - -// Returns Z span of the generated mesh. -static std::pair extrude_branch( - const std::vector &path, - const TreeSupportSettings &config, - const SlicingParameters &slicing_params, - const std::vector &move_bounds, - indexed_triangle_set &result) -{ - Vec3d p1, p2, p3; - Vec3d v1, v2; - Vec3d nprev; - Vec3d ncurrent; - assert(path.size() >= 2); - static constexpr const float eps = 0.015f; - std::pair prev_strip; - -// char fname[2048]; -// static int irun = 0; - - float zmin = 0; - float zmax = 0; - - for (size_t ipath = 1; ipath < path.size(); ++ ipath) { - const SupportElement &prev = *path[ipath - 1]; - const SupportElement ¤t = *path[ipath]; - assert(prev.state.layer_idx + 1 == current.state.layer_idx); - p1 = to_3d(unscaled(prev .state.result_on_layer), layer_z(slicing_params, config, prev .state.layer_idx)); - p2 = to_3d(unscaled(current.state.result_on_layer), layer_z(slicing_params, config, current.state.layer_idx)); - v1 = (p2 - p1).normalized(); - if (ipath == 1) { - nprev = v1; - // Extrude the bottom half sphere. - float radius = unscaled(support_element_radius(config, prev)); - float angle_step = 2. * acos(1. - eps / radius); - auto nsteps = int(ceil(M_PI / (2. * angle_step))); - angle_step = M_PI / (2. * nsteps); - int ifan = int(result.vertices.size()); - result.vertices.emplace_back((p1 - nprev * radius).cast()); - zmin = result.vertices.back().z(); - float angle = angle_step; - for (int i = 1; i < nsteps; ++ i, angle += angle_step) { - std::pair strip = discretize_circle((p1 - nprev * radius * cos(angle)).cast(), nprev.cast(), radius * sin(angle), eps, result.vertices); - if (i == 1) - triangulate_fan(result, ifan, strip.first, strip.second); - else - triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); -// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); -// its_write_obj(result, fname); - prev_strip = strip; - } - } - if (ipath + 1 == path.size()) { - // End of the tube. - ncurrent = v1; - // Extrude the top half sphere. - float radius = unscaled(support_element_radius(config, current)); - float angle_step = 2. * acos(1. - eps / radius); - auto nsteps = int(ceil(M_PI / (2. * angle_step))); - angle_step = M_PI / (2. * nsteps); - auto angle = float(M_PI / 2.); - for (int i = 0; i < nsteps; ++ i, angle -= angle_step) { - std::pair strip = discretize_circle((p2 + ncurrent * radius * cos(angle)).cast(), ncurrent.cast(), radius * sin(angle), eps, result.vertices); - triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); -// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); -// its_write_obj(result, fname); - prev_strip = strip; - } - int ifan = int(result.vertices.size()); - result.vertices.emplace_back((p2 + ncurrent * radius).cast()); - zmax = result.vertices.back().z(); - triangulate_fan(result, ifan, prev_strip.first, prev_strip.second); -// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); -// its_write_obj(result, fname); - } else { - const SupportElement &next = *path[ipath + 1]; - assert(current.state.layer_idx + 1 == next.state.layer_idx); - p3 = to_3d(unscaled(next.state.result_on_layer), layer_z(slicing_params, config, next.state.layer_idx)); - v2 = (p3 - p2).normalized(); - ncurrent = (v1 + v2).normalized(); - float radius = unscaled(support_element_radius(config, current)); - std::pair strip = discretize_circle(p2.cast(), ncurrent.cast(), radius, eps, result.vertices); - triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); - prev_strip = strip; -// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++irun); -// its_write_obj(result, fname); - } -#if 0 - if (circles_intersect(p1, nprev, support_element_radius(settings, prev), p2, ncurrent, support_element_radius(settings, current))) { - // Cannot connect previous and current slice using a simple zig-zag triangulation, - // because the two circles intersect. - - } else { - // Continue with chaining. - - } -#endif - } - - return std::make_pair(zmin, zmax); -} - -#ifdef TREE_SUPPORT_ORGANIC_NUDGE_NEW - -// New version using per layer AABB trees of lines for nudging spheres away from an object. -static void organic_smooth_branches_avoid_collisions( - const PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - const std::vector> &elements_with_link_down, - const std::vector &linear_data_layers, - std::function throw_on_cancel) -{ - struct LayerCollisionCache { - coord_t min_element_radius{ std::numeric_limits::max() }; - bool min_element_radius_known() const { return this->min_element_radius != std::numeric_limits::max(); } - coord_t collision_radius{ 0 }; - std::vector lines; - AABBTreeIndirect::Tree<2, double> aabbtree_lines; - bool empty() const { return this->lines.empty(); } - }; - std::vector layer_collision_cache; - layer_collision_cache.reserve(1024); - const SlicingParameters &slicing_params = print_object.slicing_parameters(); - for (const std::pair& element : elements_with_link_down) { - LayerIndex layer_idx = element.first->state.layer_idx; - if (size_t num_layers = layer_idx + 1; num_layers > layer_collision_cache.size()) { - if (num_layers > layer_collision_cache.capacity()) - reserve_power_of_2(layer_collision_cache, num_layers); - layer_collision_cache.resize(num_layers, {}); - } - auto& l = layer_collision_cache[layer_idx]; - l.min_element_radius = std::min(l.min_element_radius, support_element_radius(config, *element.first)); - } - - throw_on_cancel(); - - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(layer_collision_cache.size()); ++layer_idx) - if (LayerCollisionCache& l = layer_collision_cache[layer_idx]; !l.min_element_radius_known()) - l.min_element_radius = 0; - else { - //FIXME - l.min_element_radius = 0; - std::optional>> res = volumes.get_collision_lower_bound_area(layer_idx, l.min_element_radius); - assert(res.has_value()); - l.collision_radius = res->first; - Lines alines = to_lines(res->second.get()); - l.lines.reserve(alines.size()); - for (const Line &line : alines) - l.lines.push_back({ unscaled(line.a), unscaled(line.b) }); - l.aabbtree_lines = AABBTreeLines::build_aabb_tree_over_indexed_lines(l.lines); - throw_on_cancel(); - } - - struct CollisionSphere { - const SupportElement& element; - int element_below_id; - const bool locked; - float radius; - // Current position, when nudged away from the collision. - Vec3f position; - // Previous position, for Laplacian smoothing. - Vec3f prev_position; - // - Vec3f last_collision; - double last_collision_depth; - // Minimum Z for which the sphere collision will be evaluated. - // Limited by the minimum sloping angle and by the bottom of the tree. - float min_z{ -std::numeric_limits::max() }; - // Maximum Z for which the sphere collision will be evaluated. - // Limited by the minimum sloping angle and by the tip of the current branch. - float max_z{ std::numeric_limits::max() }; - uint32_t layer_begin; - uint32_t layer_end; - }; - - std::vector collision_spheres; - collision_spheres.reserve(elements_with_link_down.size()); - for (const std::pair &element_with_link : elements_with_link_down) { - const SupportElement &element = *element_with_link.first; - const int link_down = element_with_link.second; - collision_spheres.push_back({ - element, - link_down, - // locked - element.parents.empty() || (link_down == -1 && element.state.layer_idx > 0), - unscaled(support_element_radius(config, element)), - // 3D position - to_3d(unscaled(element.state.result_on_layer), float(layer_z(slicing_params, config, element.state.layer_idx))) - }); - // Update min_z coordinate to min_z of the tree below. - CollisionSphere &collision_sphere = collision_spheres.back(); - if (link_down != -1) { - const size_t offset_below = linear_data_layers[element.state.layer_idx - 1]; - collision_sphere.min_z = collision_spheres[offset_below + link_down].min_z; - } else - collision_sphere.min_z = collision_sphere.position.z(); - } - // Update max_z by propagating max_z from the tips of the branches. - for (int collision_sphere_id = int(collision_spheres.size()) - 1; collision_sphere_id >= 0; -- collision_sphere_id) { - CollisionSphere &collision_sphere = collision_spheres[collision_sphere_id]; - if (collision_sphere.element.parents.empty()) - // Tip - collision_sphere.max_z = collision_sphere.position.z(); - else { - // Below tip - const size_t offset_above = linear_data_layers[collision_sphere.element.state.layer_idx + 1]; - for (auto iparent : collision_sphere.element.parents) { - float parent_z = collision_spheres[offset_above + iparent].max_z; -// collision_sphere.max_z = collision_sphere.max_z == std::numeric_limits::max() ? parent_z : std::max(collision_sphere.max_z, parent_z); - collision_sphere.max_z = std::min(collision_sphere.max_z, parent_z); - } - } - } - // Update min_z / max_z to limit the search Z span of a given sphere for collision detection. - for (CollisionSphere &collision_sphere : collision_spheres) { - //FIXME limit the collision span by the tree slope. - collision_sphere.min_z = std::max(collision_sphere.min_z, collision_sphere.position.z() - collision_sphere.radius); - collision_sphere.max_z = std::min(collision_sphere.max_z, collision_sphere.position.z() + collision_sphere.radius); - collision_sphere.layer_begin = std::min(collision_sphere.element.state.layer_idx, layer_idx_ceil(slicing_params, config, collision_sphere.min_z)); - assert(collision_sphere.layer_begin < layer_collision_cache.size()); - collision_sphere.layer_end = std::min(LayerIndex(layer_collision_cache.size()), std::max(collision_sphere.element.state.layer_idx, layer_idx_floor(slicing_params, config, collision_sphere.max_z)) + 1); - } - - throw_on_cancel(); - - static constexpr const double collision_extra_gap = 0.1; - static constexpr const double max_nudge_collision_avoidance = 0.5; - static constexpr const double max_nudge_smoothing = 0.2; - static constexpr const size_t num_iter = 100; // 1000; - for (size_t iter = 0; iter < num_iter; ++ iter) { - // Back up prev position before Laplacian smoothing. - for (CollisionSphere &collision_sphere : collision_spheres) - collision_sphere.prev_position = collision_sphere.position; - std::atomic num_moved{ 0 }; - tbb::parallel_for(tbb::blocked_range(0, collision_spheres.size()), - [&collision_spheres, &layer_collision_cache, &slicing_params, &config, &linear_data_layers, &num_moved, &throw_on_cancel](const tbb::blocked_range range) { - for (size_t collision_sphere_id = range.begin(); collision_sphere_id < range.end(); ++ collision_sphere_id) - if (CollisionSphere &collision_sphere = collision_spheres[collision_sphere_id]; ! collision_sphere.locked) { - // Calculate collision of multiple 2D layers against a collision sphere. - collision_sphere.last_collision_depth = - std::numeric_limits::max(); - for (uint32_t layer_id = collision_sphere.layer_begin; layer_id != collision_sphere.layer_end; ++ layer_id) { - double dz = (layer_id - collision_sphere.element.state.layer_idx) * slicing_params.layer_height; - if (double r2 = sqr(collision_sphere.radius) - sqr(dz); r2 > 0) { - if (const LayerCollisionCache &layer_collision_cache_item = layer_collision_cache[layer_id]; ! layer_collision_cache_item.empty()) { - size_t hit_idx_out; - Vec2d hit_point_out; - if (double dist = sqrt(AABBTreeLines::squared_distance_to_indexed_lines( - layer_collision_cache_item.lines, layer_collision_cache_item.aabbtree_lines, Vec2d(to_2d(collision_sphere.position).cast()), - hit_idx_out, hit_point_out, r2)); dist >= 0.) { - double collision_depth = sqrt(r2) - dist; - if (collision_depth > collision_sphere.last_collision_depth) { - collision_sphere.last_collision_depth = collision_depth; - collision_sphere.last_collision = to_3d(hit_point_out.cast(), float(layer_z(slicing_params, config, layer_id))); - } - } - } - } - } - if (collision_sphere.last_collision_depth > 0) { - // Collision detected to be removed. - // Nudge the circle center away from the collision. - if (collision_sphere.last_collision_depth > EPSILON) - // a little bit of hysteresis to detect end of - ++ num_moved; - // Shift by maximum 2mm. - double nudge_dist = std::min(std::max(0., collision_sphere.last_collision_depth + collision_extra_gap), max_nudge_collision_avoidance); - Vec2d nudge_vector = (to_2d(collision_sphere.position) - to_2d(collision_sphere.last_collision)).cast().normalized() * nudge_dist; - collision_sphere.position.head<2>() += (nudge_vector * nudge_dist).cast(); - } - // Laplacian smoothing - Vec2d avg{ 0, 0 }; - //const SupportElements &above = move_bounds[collision_sphere.element.state.layer_idx + 1]; - const size_t offset_above = linear_data_layers[collision_sphere.element.state.layer_idx + 1]; - double weight = 0.; - for (auto iparent : collision_sphere.element.parents) { - double w = collision_sphere.radius; - avg += w * to_2d(collision_spheres[offset_above + iparent].prev_position.cast()); - weight += w; - } - if (collision_sphere.element_below_id != -1) { - const size_t offset_below = linear_data_layers[collision_sphere.element.state.layer_idx - 1]; - const double w = weight; // support_element_radius(config, move_bounds[element.state.layer_idx - 1][below]); - avg += w * to_2d(collision_spheres[offset_below + collision_sphere.element_below_id].prev_position.cast()); - weight += w; - } - avg /= weight; - static constexpr const double smoothing_factor = 0.5; - Vec2d old_pos = to_2d(collision_sphere.position).cast(); - Vec2d new_pos = (1. - smoothing_factor) * old_pos + smoothing_factor * avg; - Vec2d shift = new_pos - old_pos; - double nudge_dist_max = shift.norm(); - // Shift by maximum 1mm, less than the collision avoidance factor. - double nudge_dist = std::min(std::max(0., nudge_dist_max), max_nudge_smoothing); - collision_sphere.position.head<2>() += (shift.normalized() * nudge_dist).cast(); - - throw_on_cancel(); - } - }); -#if 0 - std::vector stat; - for (CollisionSphere& collision_sphere : collision_spheres) - if (!collision_sphere.locked) - stat.emplace_back(collision_sphere.last_collision_depth); - std::sort(stat.begin(), stat.end()); - printf("iteration: %d, moved: %d, collision depth: min %lf, max %lf, median %lf\n", int(iter), int(num_moved), stat.front(), stat.back(), stat[stat.size() / 2]); -#endif - if (num_moved == 0) - break; - } - - for (size_t i = 0; i < collision_spheres.size(); ++ i) - elements_with_link_down[i].first->state.result_on_layer = scaled(to_2d(collision_spheres[i].position)); -} -#else // TREE_SUPPORT_ORGANIC_NUDGE_NEW -// Old version using OpenVDB, works but it is extremely slow for complex meshes. -static void organic_smooth_branches_avoid_collisions( - const PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - const std::vector> &elements_with_link_down, - const std::vector &linear_data_layers, - std::function throw_on_cancel) -{ - TriangleMesh mesh = print_object.model_object()->raw_mesh(); - mesh.transform(print_object.trafo_centered()); - double scale = 10.; - openvdb::FloatGrid::Ptr grid = mesh_to_grid(mesh.its, openvdb::math::Transform{}, scale, 0., 0.); - std::unique_ptr> closest_surface_point = openvdb::tools::ClosestSurfacePoint::create(*grid); - std::vector pts, prev, projections; - std::vector distances; - for (const std::pair& element : elements_with_link_down) { - Vec3d pt = to_3d(unscaled(element.first->state.result_on_layer), layer_z(print_object.slicing_parameters(), config, element.first->state.layer_idx)) * scale; - pts.push_back({ pt.x(), pt.y(), pt.z() }); - } - - const double collision_extra_gap = 1. * scale; - const double max_nudge_collision_avoidance = 2. * scale; - const double max_nudge_smoothing = 1. * scale; - - static constexpr const size_t num_iter = 100; // 1000; - for (size_t iter = 0; iter < num_iter; ++ iter) { - prev = pts; - projections = pts; - distances.assign(pts.size(), std::numeric_limits::max()); - closest_surface_point->searchAndReplace(projections, distances); - size_t num_moved = 0; - for (size_t i = 0; i < projections.size(); ++ i) { - const SupportElement &element = *elements_with_link_down[i].first; - const int below = elements_with_link_down[i].second; - const bool locked = (below == -1 && element.state.layer_idx > 0) || element.state.locked(); - if (! locked && pts[i] != projections[i]) { - // Nudge the circle center away from the collision. - Vec3d v{ projections[i].x() - pts[i].x(), projections[i].y() - pts[i].y(), projections[i].z() - pts[i].z() }; - double depth = v.norm(); - assert(std::abs(distances[i] - depth) < EPSILON); - double radius = unscaled(support_element_radius(config, element)) * scale; - if (depth < radius) { - // Collision detected to be removed. - ++ num_moved; - double dxy = sqrt(sqr(radius) - sqr(v.z())); - double nudge_dist_max = dxy - std::hypot(v.x(), v.y()) - //FIXME 1mm gap - + collision_extra_gap; - // Shift by maximum 2mm. - double nudge_dist = std::min(std::max(0., nudge_dist_max), max_nudge_collision_avoidance); - Vec2d nudge_v = to_2d(v).normalized() * (- nudge_dist); - pts[i].x() += nudge_v.x(); - pts[i].y() += nudge_v.y(); - } - } - // Laplacian smoothing - if (! locked && ! element.parents.empty()) { - Vec2d avg{ 0, 0 }; - const SupportElements &above = move_bounds[element.state.layer_idx + 1]; - const size_t offset_above = linear_data_layers[element.state.layer_idx + 1]; - double weight = 0.; - for (auto iparent : element.parents) { - double w = support_element_radius(config, above[iparent]); - avg.x() += w * prev[offset_above + iparent].x(); - avg.y() += w * prev[offset_above + iparent].y(); - weight += w; - } - size_t cnt = element.parents.size(); - if (below != -1) { - const size_t offset_below = linear_data_layers[element.state.layer_idx - 1]; - const double w = weight; // support_element_radius(config, move_bounds[element.state.layer_idx - 1][below]); - avg.x() += w * prev[offset_below + below].x(); - avg.y() += w * prev[offset_below + below].y(); - ++ cnt; - weight += w; - } - //avg /= double(cnt); - avg /= weight; - static constexpr const double smoothing_factor = 0.5; - Vec2d old_pos{ pts[i].x(), pts[i].y() }; - Vec2d new_pos = (1. - smoothing_factor) * old_pos + smoothing_factor * avg; - Vec2d shift = new_pos - old_pos; - double nudge_dist_max = shift.norm(); - // Shift by maximum 1mm, less than the collision avoidance factor. - double nudge_dist = std::min(std::max(0., nudge_dist_max), max_nudge_smoothing); - Vec2d nudge_v = shift.normalized() * nudge_dist; - pts[i].x() += nudge_v.x(); - pts[i].y() += nudge_v.y(); - } - } -// printf("iteration: %d, moved: %d\n", int(iter), int(num_moved)); - if (num_moved == 0) - break; - } - - for (size_t i = 0; i < projections.size(); ++ i) { - elements_with_link_down[i].first->state.result_on_layer.x() = scaled(pts[i].x()) / scale; - elements_with_link_down[i].first->state.result_on_layer.y() = scaled(pts[i].y()) / scale; - } -} -#endif // TREE_SUPPORT_ORGANIC_NUDGE_NEW - -// Organic specific: Smooth branches and produce one cummulative mesh to be sliced. -void organic_draw_branches( - PrintObject &print_object, - TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - - // I/O: - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - InterfacePlacer &interface_placer, - - // Output: - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - - std::function throw_on_cancel) -{ - // All SupportElements are put into a layer independent storage to improve parallelization. - std::vector> elements_with_link_down; - std::vector linear_data_layers; - { - std::vector> map_downwards_old; - std::vector> map_downwards_new; - linear_data_layers.emplace_back(0); - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - SupportElements *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; - map_downwards_new.clear(); - std::sort(map_downwards_old.begin(), map_downwards_old.end(), [](auto& l, auto& r) { return l.first < r.first; }); - SupportElements &layer = move_bounds[layer_idx]; - for (size_t elem_idx = 0; elem_idx < layer.size(); ++ elem_idx) { - SupportElement &elem = layer[elem_idx]; - int child = -1; - if (layer_idx > 0) { - auto it = std::lower_bound(map_downwards_old.begin(), map_downwards_old.end(), &elem, [](auto& l, const SupportElement* r) { return l.first < r; }); - if (it != map_downwards_old.end() && it->first == &elem) { - child = it->second; - // Only one link points to a node above from below. - assert(!(++it != map_downwards_old.end() && it->first == &elem)); - } -#ifndef NDEBUG - { - const SupportElement *pchild = child == -1 ? nullptr : &move_bounds[layer_idx - 1][child]; - assert(pchild ? pchild->state.result_on_layer_is_set() : elem.state.target_height > layer_idx); - } -#endif // NDEBUG - } - for (int32_t parent_idx : elem.parents) { - SupportElement &parent = (*layer_above)[parent_idx]; - if (parent.state.result_on_layer_is_set()) - map_downwards_new.emplace_back(&parent, elem_idx); - } - - elements_with_link_down.push_back({ &elem, int(child) }); - } - std::swap(map_downwards_old, map_downwards_new); - linear_data_layers.emplace_back(elements_with_link_down.size()); - } - } - - throw_on_cancel(); - - organic_smooth_branches_avoid_collisions(print_object, volumes, config, move_bounds, elements_with_link_down, linear_data_layers, throw_on_cancel); - - // Reduce memory footprint. After this point only finalize_interface_and_support_areas() will use volumes and from that only collisions with zero radius will be used. - volumes.clear_all_but_object_collision(); - - // Unmark all nodes. - for (SupportElements &elements : move_bounds) - for (SupportElement &element : elements) - element.state.marked = false; - - // Traverse all nodes, generate tubes. - // Traversal stack with nodes and their current parent - - struct Branch { - std::vector path; - bool has_root{ false }; - bool has_tip { false }; - }; - - struct Slice { - Polygons polygons; - Polygons bottom_contacts; - size_t num_branches{ 0 }; - }; - - struct Tree { - std::vector branches; - - std::vector slices; - LayerIndex first_layer_id{ -1 }; - }; - - std::vector trees; - - struct TreeVisitor { - static void visit_recursive(std::vector &move_bounds, SupportElement &start_element, Tree &out) { - assert(! start_element.state.marked && ! start_element.parents.empty()); - // Collect elements up to a bifurcation above. - start_element.state.marked = true; - // For each branch bifurcating from this point: - //SupportElements &layer = move_bounds[start_element.state.layer_idx]; - SupportElements &layer_above = move_bounds[start_element.state.layer_idx + 1]; - bool root = out.branches.empty(); - for (size_t parent_idx = 0; parent_idx < start_element.parents.size(); ++ parent_idx) { - Branch branch; - branch.path.emplace_back(&start_element); - // Traverse each branch until it branches again. - SupportElement &first_parent = layer_above[start_element.parents[parent_idx]]; - assert(! first_parent.state.marked); - assert(branch.path.back()->state.layer_idx + 1 == first_parent.state.layer_idx); - branch.path.emplace_back(&first_parent); - if (first_parent.parents.size() < 2) - first_parent.state.marked = true; - SupportElement *next_branch = nullptr; - if (first_parent.parents.size() == 1) { - for (SupportElement *parent = &first_parent;;) { - assert(parent->state.marked); - SupportElement &next_parent = move_bounds[parent->state.layer_idx + 1][parent->parents.front()]; - assert(! next_parent.state.marked); - assert(branch.path.back()->state.layer_idx + 1 == next_parent.state.layer_idx); - branch.path.emplace_back(&next_parent); - if (next_parent.parents.size() > 1) { - // Branching point was reached. - next_branch = &next_parent; - break; - } - next_parent.state.marked = true; - if (next_parent.parents.size() == 0) - // Tip is reached. - break; - parent = &next_parent; - } - } else if (first_parent.parents.size() > 1) - // Branching point was reached. - next_branch = &first_parent; - assert(branch.path.size() >= 2); - assert(next_branch == nullptr || ! next_branch->state.marked); - branch.has_root = root; - branch.has_tip = ! next_branch; - out.branches.emplace_back(std::move(branch)); - if (next_branch) - visit_recursive(move_bounds, *next_branch, out); - } - } - }; - - for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++ layer_idx) { -// int ielement; - for (SupportElement& start_element : move_bounds[layer_idx]) { - if (!start_element.state.marked && !start_element.parents.empty()) { -#if 0 - int found = 0; - if (layer_idx > 0) { - for (auto& el : move_bounds[layer_idx - 1]) { - for (auto iparent : el.parents) - if (iparent == ielement) - ++found; - } - if (found != 0) - printf("Found: %d\n", found); - } -#endif - trees.push_back({}); - TreeVisitor::visit_recursive(move_bounds, start_element, trees.back()); - assert(!trees.back().branches.empty()); - //FIXME debugging -#if 0 - if (start_element.state.lost) { - } - else if (start_element.state.verylost) { - } else - trees.pop_back(); -#endif - } -// ++ ielement; - } - } - - const SlicingParameters &slicing_params = print_object.slicing_parameters(); - MeshSlicingParams mesh_slicing_params; - mesh_slicing_params.mode = MeshSlicingParams::SlicingMode::Positive; - - tbb::parallel_for(tbb::blocked_range(0, trees.size(), 1), - [&trees, &volumes, &config, &slicing_params, &move_bounds, &mesh_slicing_params, &throw_on_cancel](const tbb::blocked_range &range) { - indexed_triangle_set partial_mesh; - std::vector slice_z; - std::vector bottom_contacts; - for (size_t tree_id = range.begin(); tree_id < range.end(); ++ tree_id) { - Tree &tree = trees[tree_id]; - for (const Branch &branch : tree.branches) { - // Triangulate the tube. - partial_mesh.clear(); - std::pair zspan = extrude_branch(branch.path, config, slicing_params, move_bounds, partial_mesh); - LayerIndex layer_begin = branch.has_root ? - branch.path.front()->state.layer_idx : - std::min(branch.path.front()->state.layer_idx, layer_idx_ceil(slicing_params, config, zspan.first)); - LayerIndex layer_end = (branch.has_tip ? - branch.path.back()->state.layer_idx : - std::max(branch.path.back()->state.layer_idx, layer_idx_floor(slicing_params, config, zspan.second))) + 1; - slice_z.clear(); - for (LayerIndex layer_idx = layer_begin; layer_idx < layer_end; ++ layer_idx) { - const double print_z = layer_z(slicing_params, config, layer_idx); - const double bottom_z = layer_idx > 0 ? layer_z(slicing_params, config, layer_idx - 1) : 0.; - slice_z.emplace_back(float(0.5 * (bottom_z + print_z))); - } - std::vector slices = slice_mesh(partial_mesh, slice_z, mesh_slicing_params, throw_on_cancel); - bottom_contacts.clear(); - //FIXME parallelize? - for (LayerIndex i = 0; i < LayerIndex(slices.size()); ++ i) - slices[i] = diff_clipped(slices[i], volumes.getCollision(0, layer_begin + i, true)); //FIXME parent_uses_min || draw_area.element->state.use_min_xy_dist); - - size_t num_empty = 0; - if (slices.front().empty()) { - // Some of the initial layers are empty. - num_empty = std::find_if(slices.begin(), slices.end(), [](auto &s) { return !s.empty(); }) - slices.begin(); - } else { - if (branch.has_root) { - if (branch.path.front()->state.to_model_gracious) { - if (config.settings.support_floor_layers > 0) - //FIXME one may just take the whole tree slice as bottom interface. - bottom_contacts.emplace_back(intersection_clipped(slices.front(), volumes.getPlaceableAreas(0, layer_begin, [] {}))); - } else if (layer_begin > 0) { - // Drop down areas that do rest non - gracefully on the model to ensure the branch actually rests on something. - struct BottomExtraSlice { - Polygons polygons; - double area; - }; - std::vector bottom_extra_slices; - Polygons rest_support; - coord_t bottom_radius = support_element_radius(config, *branch.path.front()); - // Don't propagate further than 1.5 * bottom radius. - //LayerIndex layers_propagate_max = 2 * bottom_radius / config.layer_height; - LayerIndex layers_propagate_max = 5 * bottom_radius / config.layer_height; - LayerIndex layer_bottommost = branch.path.front()->state.verylost ? - // If the tree bottom is hanging in the air, bring it down to some surface. - 0 : - //FIXME the "verylost" branches should stop when crossing another support. - std::max(0, layer_begin - layers_propagate_max); - double support_area_min_radius = M_PI * sqr(double(config.branch_radius)); - double support_area_stop = std::max(0.2 * M_PI * sqr(double(bottom_radius)), 0.5 * support_area_min_radius); - // Only propagate until the rest area is smaller than this threshold. - //double support_area_min = 0.1 * support_area_min_radius; - for (LayerIndex layer_idx = layer_begin - 1; layer_idx >= layer_bottommost; -- layer_idx) { - rest_support = diff_clipped(rest_support.empty() ? slices.front() : rest_support, volumes.getCollision(0, layer_idx, false)); - double rest_support_area = area(rest_support); - if (rest_support_area < support_area_stop) - // Don't propagate a fraction of the tree contact surface. - break; - bottom_extra_slices.push_back({ rest_support, rest_support_area }); - } - // Now remove those bottom slices that are not supported at all. -#if 0 - while (! bottom_extra_slices.empty()) { - Polygons this_bottom_contacts = intersection_clipped( - bottom_extra_slices.back().polygons, volumes.getPlaceableAreas(0, layer_begin - LayerIndex(bottom_extra_slices.size()), [] {})); - if (area(this_bottom_contacts) < support_area_min) - bottom_extra_slices.pop_back(); - else { - // At least a fraction of the tree bottom is considered to be supported. - if (config.settings.support_floor_layers > 0) - // Turn this fraction of the tree bottom into a contact layer. - bottom_contacts.emplace_back(std::move(this_bottom_contacts)); - break; - } - } -#endif - if (config.settings.support_floor_layers > 0) - for (int i = int(bottom_extra_slices.size()) - 2; i >= 0; -- i) - bottom_contacts.emplace_back( - intersection_clipped(bottom_extra_slices[i].polygons, volumes.getPlaceableAreas(0, layer_begin - i - 1, [] {}))); - layer_begin -= LayerIndex(bottom_extra_slices.size()); - slices.insert(slices.begin(), bottom_extra_slices.size(), {}); - auto it_dst = slices.begin(); - for (auto it_src = bottom_extra_slices.rbegin(); it_src != bottom_extra_slices.rend(); ++ it_src) - *it_dst ++ = std::move(it_src->polygons); - } - } - -#if 0 - //FIXME branch.has_tip seems to not be reliable. - if (branch.has_tip && interface_placer.support_parameters.has_top_contacts) - // Add top slices to top contacts / interfaces / base interfaces. - for (int i = int(branch.path.size()) - 1; i >= 0; -- i) { - const SupportElement &el = *branch.path[i]; - if (el.state.missing_roof_layers == 0) - break; - //FIXME Move or not? - interface_placer.add_roof(std::move(slices[int(slices.size()) - i - 1]), el.state.layer_idx, - interface_placer.support_parameters.num_top_interface_layers + 1 - el.state.missing_roof_layers); - } -#endif - } - - layer_begin += LayerIndex(num_empty); - while (! slices.empty() && slices.back().empty()) { - slices.pop_back(); - -- layer_end; - } - if (layer_begin < layer_end) { - LayerIndex new_begin = tree.first_layer_id == -1 ? layer_begin : std::min(tree.first_layer_id, layer_begin); - LayerIndex new_end = tree.first_layer_id == -1 ? layer_end : std::max(tree.first_layer_id + LayerIndex(tree.slices.size()), layer_end); - size_t new_size = size_t(new_end - new_begin); - if (tree.first_layer_id == -1) { - } else if (tree.slices.capacity() < new_size) { - std::vector new_slices; - new_slices.reserve(new_size); - if (LayerIndex dif = tree.first_layer_id - new_begin; dif > 0) - new_slices.insert(new_slices.end(), dif, {}); - append(new_slices, std::move(tree.slices)); - tree.slices.swap(new_slices); - } else if (LayerIndex dif = tree.first_layer_id - new_begin; dif > 0) - tree.slices.insert(tree.slices.begin(), tree.first_layer_id - new_begin, {}); - tree.slices.insert(tree.slices.end(), new_size - tree.slices.size(), {}); - layer_begin -= LayerIndex(num_empty); - for (LayerIndex i = layer_begin; i != layer_end; ++ i) { - int j = i - layer_begin; - if (Polygons &src = slices[j]; ! src.empty()) { - Slice &dst = tree.slices[i - new_begin]; - if (++ dst.num_branches > 1) { - append(dst.polygons, std::move(src)); - if (j < int(bottom_contacts.size())) - append(dst.bottom_contacts, std::move(bottom_contacts[j])); - } else { - dst.polygons = std::move(std::move(src)); - if (j < int(bottom_contacts.size())) - dst.bottom_contacts = std::move(bottom_contacts[j]); - } - } - } - tree.first_layer_id = new_begin; - } - } - } - }, tbb::simple_partitioner()); - - tbb::parallel_for(tbb::blocked_range(0, trees.size(), 1), - [&trees, &throw_on_cancel](const tbb::blocked_range &range) { - for (size_t tree_id = range.begin(); tree_id < range.end(); ++ tree_id) { - Tree &tree = trees[tree_id]; - for (Slice &slice : tree.slices) - if (slice.num_branches > 1) { - slice.polygons = union_(slice.polygons); - slice.bottom_contacts = union_(slice.bottom_contacts); - slice.num_branches = 1; - } - throw_on_cancel(); - } - }, tbb::simple_partitioner()); - - size_t num_layers = 0; - for (Tree &tree : trees) - if (tree.first_layer_id >= 0) - num_layers = std::max(num_layers, size_t(tree.first_layer_id + tree.slices.size())); - - std::vector slices(num_layers, Slice{}); - for (Tree &tree : trees) - if (tree.first_layer_id >= 0) { - for (LayerIndex i = tree.first_layer_id; i != tree.first_layer_id + LayerIndex(tree.slices.size()); ++ i) - if (Slice &src = tree.slices[i - tree.first_layer_id]; ! src.polygons.empty()) { - Slice &dst = slices[i]; - if (++ dst.num_branches > 1) { - append(dst.polygons, std::move(src.polygons)); - append(dst.bottom_contacts, std::move(src.bottom_contacts)); - } else { - dst.polygons = std::move(src.polygons); - dst.bottom_contacts = std::move(src.bottom_contacts); - } - } - } - - tbb::parallel_for(tbb::blocked_range(0, std::min(move_bounds.size(), slices.size()), 1), - [&print_object, &config, &slices, &bottom_contacts, &top_contacts, &intermediate_layers, &layer_storage, &throw_on_cancel](const tbb::blocked_range &range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { - Slice &slice = slices[layer_idx]; - assert(intermediate_layers[layer_idx] == nullptr); - Polygons base_layer_polygons = slice.num_branches > 1 ? union_(slice.polygons) : std::move(slice.polygons); - Polygons bottom_contact_polygons = slice.num_branches > 1 ? union_(slice.bottom_contacts) : std::move(slice.bottom_contacts); - - if (! base_layer_polygons.empty()) { - // Most of the time in this function is this union call. Can take 300+ ms when a lot of areas are to be unioned. - base_layer_polygons = smooth_outward(union_(base_layer_polygons), config.support_line_width); //FIXME was .smooth(50); - //smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : - // simplify a bit, to ensure the output does not contain outrageous amounts of vertices. Should not be necessary, just a precaution. - base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution)), polygons_strictly_simple); - } - - // Subtract top contact layer polygons from support base. - SupportGeneratorLayer *top_contact_layer = top_contacts.empty() ? nullptr : top_contacts[layer_idx]; - if (top_contact_layer && ! top_contact_layer->polygons.empty() && ! base_layer_polygons.empty()) { - base_layer_polygons = diff(base_layer_polygons, top_contact_layer->polygons); - if (! bottom_contact_polygons.empty()) - //FIXME it may be better to clip bottom contacts with top contacts first after they are propagated to produce interface layers. - bottom_contact_polygons = diff(bottom_contact_polygons, top_contact_layer->polygons); - } - if (! bottom_contact_polygons.empty()) { - base_layer_polygons = diff(base_layer_polygons, bottom_contact_polygons); - SupportGeneratorLayer *bottom_contact_layer = bottom_contacts[layer_idx] = &layer_allocate( - layer_storage, SupporLayerType::BottomContact, print_object.slicing_parameters(), config, layer_idx); - bottom_contact_layer->polygons = std::move(bottom_contact_polygons); - } - if (! base_layer_polygons.empty()) { - SupportGeneratorLayer *base_layer = intermediate_layers[layer_idx] = &layer_allocate( - layer_storage, SupporLayerType::Base, print_object.slicing_parameters(), config, layer_idx); - base_layer->polygons = union_(base_layer_polygons); - } - - throw_on_cancel(); - } - }, tbb::simple_partitioner()); -} - -} // namespace FFFTreeSupport - -} // namespace Slic3r diff --git a/src/libslic3r/Support/OrganicSupport.hpp b/src/libslic3r/Support/OrganicSupport.hpp deleted file mode 100644 index f86caabe99a..00000000000 --- a/src/libslic3r/Support/OrganicSupport.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef slic3r_OrganicSupport_hpp -#define slic3r_OrganicSupport_hpp - -#include "SupportCommon.hpp" -#include "TreeSupport.hpp" - -namespace Slic3r -{ - -class PrintObject; - -namespace FFFTreeSupport -{ - -class TreeModelVolumes; - -// Organic specific: Smooth branches and produce one cummulative mesh to be sliced. -void organic_draw_branches( - PrintObject &print_object, - TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - - // I/O: - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - InterfacePlacer &interface_placer, - - // Output: - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - - std::function throw_on_cancel); - -} // namespace FFFTreeSupport - -} // namespace Slic3r - -#endif // slic3r_OrganicSupport_hpp \ No newline at end of file diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index f51e992256f..d37324084cb 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -32,7 +32,7 @@ #include -namespace Slic3r::FFFSupport { +namespace Slic3r { // how much we extend support around the actual contact area //FIXME this should be dependent on the nozzle diameter! diff --git a/src/libslic3r/Support/SupportCommon.hpp b/src/libslic3r/Support/SupportCommon.hpp index 753665e5963..cdaa43c5dbf 100644 --- a/src/libslic3r/Support/SupportCommon.hpp +++ b/src/libslic3r/Support/SupportCommon.hpp @@ -12,8 +12,6 @@ namespace Slic3r { class PrintObject; class SupportLayer; -namespace FFFSupport { - // Remove bridges from support contact areas. // To be called if PrintObjectConfig::dont_support_bridges. void remove_bridges_from_contacts( @@ -150,8 +148,6 @@ int idx_lower_or_equal(const std::vector &vec, int idx, FN_LOWER_EQUAL fn_lo return idx_lower_or_equal(vec.begin(), vec.end(), idx, fn_lower_equal); } -} // namespace FFFSupport - } // namespace Slic3r #endif /* slic3r_SupportCommon_hpp_ */ diff --git a/src/libslic3r/Support/SupportDebug.cpp b/src/libslic3r/Support/SupportDebug.cpp deleted file mode 100644 index 5c18bc76947..00000000000 --- a/src/libslic3r/Support/SupportDebug.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#if 1 //#ifdef SLIC3R_DEBUG - -#include "../ClipperUtils.hpp" -#include "../SVG.hpp" -#include "../Layer.hpp" - -#include "SupportLayer.hpp" - -namespace Slic3r::FFFSupport { - -const char* support_surface_type_to_color_name(const SupporLayerType surface_type) -{ - switch (surface_type) { - case SupporLayerType::TopContact: return "rgb(255,0,0)"; // "red"; - case SupporLayerType::TopInterface: return "rgb(0,255,0)"; // "green"; - case SupporLayerType::Base: return "rgb(0,0,255)"; // "blue"; - case SupporLayerType::BottomInterface:return "rgb(255,255,128)"; // yellow - case SupporLayerType::BottomContact: return "rgb(255,0,255)"; // magenta - case SupporLayerType::RaftInterface: return "rgb(0,255,255)"; - case SupporLayerType::RaftBase: return "rgb(128,128,128)"; - case SupporLayerType::Unknown: return "rgb(128,0,0)"; // maroon - default: return "rgb(64,64,64)"; - }; -} - -Point export_support_surface_type_legend_to_svg_box_size() -{ - return Point(scale_(1.+10.*8.), scale_(3.)); -} - -void export_support_surface_type_legend_to_svg(SVG &svg, const Point &pos) -{ - // 1st row - coord_t pos_x0 = pos(0) + scale_(1.); - coord_t pos_x = pos_x0; - coord_t pos_y = pos(1) + scale_(1.5); - coord_t step_x = scale_(10.); - svg.draw_legend(Point(pos_x, pos_y), "top contact" , support_surface_type_to_color_name(SupporLayerType::TopContact)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "top iface" , support_surface_type_to_color_name(SupporLayerType::TopInterface)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "base" , support_surface_type_to_color_name(SupporLayerType::Base)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "bottom iface" , support_surface_type_to_color_name(SupporLayerType::BottomInterface)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "bottom contact" , support_surface_type_to_color_name(SupporLayerType::BottomContact)); - // 2nd row - pos_x = pos_x0; - pos_y = pos(1)+scale_(2.8); - svg.draw_legend(Point(pos_x, pos_y), "raft interface" , support_surface_type_to_color_name(SupporLayerType::RaftInterface)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "raft base" , support_surface_type_to_color_name(SupporLayerType::RaftBase)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "unknown" , support_surface_type_to_color_name(SupporLayerType::Unknown)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "intermediate" , support_surface_type_to_color_name(SupporLayerType::Intermediate)); -} - -void export_print_z_polygons_to_svg(const char *path, SupportGeneratorLayer ** const layers, int n_layers) -{ - BoundingBox bbox; - for (int i = 0; i < n_layers; ++ i) - bbox.merge(get_extents(layers[i]->polygons)); - Point legend_size = export_support_surface_type_legend_to_svg_box_size(); - Point legend_pos(bbox.min(0), bbox.max(1)); - bbox.merge(Point(std::max(bbox.min(0) + legend_size(0), bbox.max(0)), bbox.max(1) + legend_size(1))); - SVG svg(path, bbox); - const float transparency = 0.5f; - for (int i = 0; i < n_layers; ++ i) - svg.draw(union_ex(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type), transparency); - for (int i = 0; i < n_layers; ++ i) - svg.draw(to_polylines(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type)); - export_support_surface_type_legend_to_svg(svg, legend_pos); - svg.Close(); -} - -void export_print_z_polygons_and_extrusions_to_svg( - const char *path, - SupportGeneratorLayer ** const layers, - int n_layers, - SupportLayer &support_layer) -{ - BoundingBox bbox; - for (int i = 0; i < n_layers; ++ i) - bbox.merge(get_extents(layers[i]->polygons)); - Point legend_size = export_support_surface_type_legend_to_svg_box_size(); - Point legend_pos(bbox.min(0), bbox.max(1)); - bbox.merge(Point(std::max(bbox.min(0) + legend_size(0), bbox.max(0)), bbox.max(1) + legend_size(1))); - SVG svg(path, bbox); - const float transparency = 0.5f; - for (int i = 0; i < n_layers; ++ i) - svg.draw(union_ex(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type), transparency); - for (int i = 0; i < n_layers; ++ i) - svg.draw(to_polylines(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type)); - - Polygons polygons_support, polygons_interface; - support_layer.support_fills.polygons_covered_by_width(polygons_support, float(SCALED_EPSILON)); -// support_layer.support_interface_fills.polygons_covered_by_width(polygons_interface, SCALED_EPSILON); - svg.draw(union_ex(polygons_support), "brown"); - svg.draw(union_ex(polygons_interface), "black"); - - export_support_surface_type_legend_to_svg(svg, legend_pos); - svg.Close(); -} - -} // namespace Slic3r - -#endif /* SLIC3R_DEBUG */ diff --git a/src/libslic3r/Support/SupportDebug.hpp b/src/libslic3r/Support/SupportDebug.hpp deleted file mode 100644 index 22a43bc4ea7..00000000000 --- a/src/libslic3r/Support/SupportDebug.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef slic3r_SupportCommon_hpp_ -#define slic3r_SupportCommon_hpp_ - -namespace Slic3r { - -class SupportGeneratorLayer; -class SupportLayer; - -namespace FFFSupport { - -void export_print_z_polygons_to_svg(const char *path, SupportGeneratorLayer ** const layers, size_t n_layers); -void export_print_z_polygons_and_extrusions_to_svg(const char *path, SupportGeneratorLayer ** const layers, size_t n_layers, SupportLayer& support_layer); - -} // namespace FFFSupport - -} // namespace Slic3r - -#endif /* slic3r_SupportCommon_hpp_ */ diff --git a/src/libslic3r/Support/SupportLayer.hpp b/src/libslic3r/Support/SupportLayer.hpp index a3c60b9fd82..64e3be99e7a 100644 --- a/src/libslic3r/Support/SupportLayer.hpp +++ b/src/libslic3r/Support/SupportLayer.hpp @@ -8,7 +8,7 @@ #include "../ClipperUtils.hpp" #include "../Polygon.hpp" -namespace Slic3r::FFFSupport { +namespace Slic3r { // Support layer type to be used by SupportGeneratorLayer. This type carries a much more detailed information // about the support layer type than the final support layers stored in a PrintObject. diff --git a/src/libslic3r/Support/SupportMaterial.cpp b/src/libslic3r/Support/SupportMaterial.cpp index c6d250e4208..b022607bf75 100644 --- a/src/libslic3r/Support/SupportMaterial.cpp +++ b/src/libslic3r/Support/SupportMaterial.cpp @@ -1,16 +1,13 @@ -#include "../ClipperUtils.hpp" -#include "../ExtrusionEntityCollection.hpp" -#include "../Layer.hpp" -#include "../Print.hpp" -#include "../Fill/FillBase.hpp" -#include "../Geometry.hpp" -#include "../Point.hpp" -#include "../MutablePolygon.hpp" - -#include "Support/SupportCommon.hpp" +#include "ClipperUtils.hpp" +#include "ExtrusionEntity.hpp" +#include "ExtrusionEntityCollection.hpp" +#include "Layer.hpp" +#include "Print.hpp" #include "SupportMaterial.hpp" - -#include +#include "Fill/FillBase.hpp" +#include "Geometry.hpp" +#include "Point.hpp" +#include "MutablePolygon.hpp" #include #include @@ -18,6 +15,7 @@ #include #include +#include #include #define SUPPORT_USE_AGG_RASTERIZER @@ -34,25 +32,29 @@ #endif // SUPPORT_USE_AGG_RASTERIZER // #define SLIC3R_DEBUG - +// #define SUPPORT_TREE_DEBUG_TO_SVG // Make assert active if SLIC3R_DEBUG -#ifdef SLIC3R_DEBUG +#if defined(SLIC3R_DEBUG) || defined(SUPPORT_TREE_DEBUG_TO_SVG) #define DEBUG #define _DEBUG #undef NDEBUG - #include "../utils.hpp" - #include "../SVG.hpp" + #include "utils.hpp" + #include "SVG.hpp" #endif -#include +#ifndef SQ +#define SQ(x) ((x)*(x)) +#endif -using namespace Slic3r::FFFSupport; +// #undef NDEBUG +#include namespace Slic3r { // how much we extend support around the actual contact area //FIXME this should be dependent on the nozzle diameter! -#define SUPPORT_MATERIAL_MARGIN 1.5 +// BBS: change from 1.5 to 1.2 +#define SUPPORT_MATERIAL_MARGIN 1.2 // Increment used to reach MARGIN in steps to avoid trespassing thin objects #define NUM_MARGIN_STEPS 3 @@ -65,6 +67,105 @@ namespace Slic3r { //#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtMiter, 1.5 #define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtSquare, 0. +static constexpr bool support_with_sheath = false; + +#ifdef SLIC3R_DEBUG +const char* support_surface_type_to_color_name(const PrintObjectSupportMaterial::SupporLayerType surface_type) +{ + switch (surface_type) { + case PrintObjectSupportMaterial::sltTopContact: return "rgb(255,0,0)"; // "red"; + case PrintObjectSupportMaterial::sltTopInterface: return "rgb(0,255,0)"; // "green"; + case PrintObjectSupportMaterial::sltBase: return "rgb(0,0,255)"; // "blue"; + case PrintObjectSupportMaterial::sltBottomInterface:return "rgb(255,255,128)"; // yellow + case PrintObjectSupportMaterial::sltBottomContact: return "rgb(255,0,255)"; // magenta + case PrintObjectSupportMaterial::sltRaftInterface: return "rgb(0,255,255)"; + case PrintObjectSupportMaterial::sltRaftBase: return "rgb(128,128,128)"; + case PrintObjectSupportMaterial::sltUnknown: return "rgb(128,0,0)"; // maroon + default: return "rgb(64,64,64)"; + }; +} + +Point export_support_surface_type_legend_to_svg_box_size() +{ + return Point(scale_(1.+10.*8.), scale_(3.)); +} + +void export_support_surface_type_legend_to_svg(SVG &svg, const Point &pos) +{ + // 1st row + coord_t pos_x0 = pos(0) + scale_(1.); + coord_t pos_x = pos_x0; + coord_t pos_y = pos(1) + scale_(1.5); + coord_t step_x = scale_(10.); + svg.draw_legend(Point(pos_x, pos_y), "top contact" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltTopContact)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "top iface" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltTopInterface)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "base" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltBase)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "bottom iface" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltBottomInterface)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "bottom contact" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltBottomContact)); + // 2nd row + pos_x = pos_x0; + pos_y = pos(1)+scale_(2.8); + svg.draw_legend(Point(pos_x, pos_y), "raft interface" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltRaftInterface)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "raft base" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltRaftBase)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "unknown" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltUnknown)); + pos_x += step_x; + svg.draw_legend(Point(pos_x, pos_y), "intermediate" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltIntermediate)); +} + +void export_print_z_polygons_to_svg(const char *path, PrintObjectSupportMaterial::MyLayer ** const layers, size_t n_layers) +{ + BoundingBox bbox; + for (int i = 0; i < n_layers; ++ i) + bbox.merge(get_extents(layers[i]->polygons)); + Point legend_size = export_support_surface_type_legend_to_svg_box_size(); + Point legend_pos(bbox.min(0), bbox.max(1)); + bbox.merge(Point(std::max(bbox.min(0) + legend_size(0), bbox.max(0)), bbox.max(1) + legend_size(1))); + SVG svg(path, bbox); + const float transparency = 0.5f; + for (int i = 0; i < n_layers; ++ i) + svg.draw(union_ex(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type), transparency); + for (int i = 0; i < n_layers; ++ i) + svg.draw(to_polylines(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type)); + export_support_surface_type_legend_to_svg(svg, legend_pos); + svg.Close(); +} + +void export_print_z_polygons_and_extrusions_to_svg( + const char *path, + PrintObjectSupportMaterial::MyLayer ** const layers, + size_t n_layers, + SupportLayer &support_layer) +{ + BoundingBox bbox; + for (int i = 0; i < n_layers; ++ i) + bbox.merge(get_extents(layers[i]->polygons)); + Point legend_size = export_support_surface_type_legend_to_svg_box_size(); + Point legend_pos(bbox.min(0), bbox.max(1)); + bbox.merge(Point(std::max(bbox.min(0) + legend_size(0), bbox.max(0)), bbox.max(1) + legend_size(1))); + SVG svg(path, bbox); + const float transparency = 0.5f; + for (int i = 0; i < n_layers; ++ i) + svg.draw(union_ex(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type), transparency); + for (int i = 0; i < n_layers; ++ i) + svg.draw(to_polylines(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type)); + + Polygons polygons_support, polygons_interface; + support_layer.support_fills.polygons_covered_by_width(polygons_support, float(SCALED_EPSILON)); +// support_layer.support_interface_fills.polygons_covered_by_width(polygons_interface, SCALED_EPSILON); + svg.draw(union_ex(polygons_support), "brown"); + svg.draw(union_ex(polygons_interface), "black"); + + export_support_surface_type_legend_to_svg(svg, legend_pos); + svg.Close(); +} +#endif /* SLIC3R_DEBUG */ + #ifdef SUPPORT_USE_AGG_RASTERIZER static std::vector rasterize_polygons(const Vec2i32 &grid_size, const double pixel_size, const Point &left_bottom, const Polygons &polygons) { @@ -228,14 +329,135 @@ static Polygons contours_simplified(const Vec2i32 &grid_size, const double pixel } #endif // SUPPORT_USE_AGG_RASTERIZER +static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag = "bbl_ts") +{ + static bool rand_init = false; + + if (!rand_init) { + srand(time(NULL)); + rand_init = true; + } + + int rand_num = rand() % 1000000; + //makedir("./SVG"); + std::string prefix = "./SVG/"; + std::string suffix = ".svg"; + return prefix + tag + "_" + layer_nr_or_z /*+ "_" + std::to_string(rand_num)*/ + suffix; +} + PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params) : + m_object (object), m_print_config (&object->print()->config()), m_object_config (&object->config()), - m_slicing_params (slicing_params), - m_support_params (*object) + m_slicing_params (slicing_params) +{ + m_support_params.first_layer_flow = support_material_1st_layer_flow(object, float(slicing_params.first_print_layer_height)); + m_support_params.support_material_flow = support_material_flow(object, float(slicing_params.layer_height)); + m_support_params.support_material_interface_flow = support_material_interface_flow(object, float(slicing_params.layer_height)); + m_support_params.support_layer_height_min = 0.01; + + // Calculate a minimum support layer height as a minimum over all extruders, but not smaller than 10um. + m_support_params.support_layer_height_min = 1000000.; + for (auto lh : m_print_config->min_layer_height.values) + m_support_params.support_layer_height_min = std::min(m_support_params.support_layer_height_min, std::max(0.01, lh)); + for (auto layer : m_object->layers()) + m_support_params.support_layer_height_min = std::min(m_support_params.support_layer_height_min, std::max(0.01, layer->height)); + + if (m_object_config->support_interface_top_layers.value == 0) { + // No interface layers allowed, print everything with the base support pattern. + m_support_params.support_material_interface_flow = m_support_params.support_material_flow; + } + + // Evaluate the XY gap between the object outer perimeters and the support structures. + // Evaluate the XY gap between the object outer perimeters and the support structures. + coordf_t external_perimeter_width = 0.; + coordf_t bridge_flow = 0; + for (size_t region_id = 0; region_id < object->num_printing_regions(); ++ region_id) { + const PrintRegion ®ion = object->printing_region(region_id); + external_perimeter_width = std::max(external_perimeter_width, coordf_t(region.flow(*object, frExternalPerimeter, slicing_params.layer_height).width())); + bridge_flow += region.config().bridge_flow; + } + m_support_params.gap_xy = m_object_config->support_object_xy_distance.value; + bridge_flow /= object->num_printing_regions(); + + m_support_params.support_material_bottom_interface_flow = m_slicing_params.soluble_interface || ! m_object_config->thick_bridges ? + m_support_params.support_material_interface_flow.with_flow_ratio(bridge_flow) : + Flow::bridging_flow(bridge_flow * m_support_params.support_material_interface_flow.nozzle_diameter(), m_support_params.support_material_interface_flow.nozzle_diameter()); + + m_support_params.can_merge_support_regions = m_object_config->support_filament.value == m_object_config->support_interface_filament.value; + if (!m_support_params.can_merge_support_regions && (m_object_config->support_filament.value == 0 || m_object_config->support_interface_filament.value == 0)) { + // One of the support extruders is of "don't care" type. + auto object_extruders = m_object->object_extruders(); + if (object_extruders.size() == 1 && + *object_extruders.begin() == std::max(m_object_config->support_filament.value, m_object_config->support_interface_filament.value)) + // Object is printed with the same extruder as the support. + m_support_params.can_merge_support_regions = true; + } + + + m_support_params.base_angle = Geometry::deg2rad(float(m_object_config->support_angle.value)); + m_support_params.interface_angle = Geometry::deg2rad(float(m_object_config->support_angle.value + 90.)); + m_support_params.interface_spacing = m_object_config->support_interface_spacing.value + m_support_params.support_material_interface_flow.spacing(); + m_support_params.interface_density = std::min(1., m_support_params.support_material_interface_flow.spacing() / m_support_params.interface_spacing); + m_support_params.support_spacing = m_object_config->support_base_pattern_spacing.value + m_support_params.support_material_flow.spacing(); + m_support_params.support_density = std::min(1., m_support_params.support_material_flow.spacing() / m_support_params.support_spacing); + if (m_object_config->support_interface_top_layers.value == 0) { + // No interface layers allowed, print everything with the base support pattern. + m_support_params.interface_spacing = m_support_params.support_spacing; + m_support_params.interface_density = m_support_params.support_density; + } + + SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; + m_support_params.with_sheath = support_with_sheath; + m_support_params.base_fill_pattern = + support_pattern == smpHoneycomb ? ipHoneycomb : + m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase; + m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); + if (m_object_config->support_interface_pattern == smipGrid) + m_support_params.contact_fill_pattern = ipGrid; + else if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) + m_support_params.contact_fill_pattern = ipRectilinear; + else + m_support_params.contact_fill_pattern = + (m_object_config->support_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || + m_object_config->support_interface_pattern == smipConcentric ? + ipConcentric : + (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); +} + +// Using the std::deque as an allocator. +inline PrintObjectSupportMaterial::MyLayer& layer_allocate( + std::deque &layer_storage, + PrintObjectSupportMaterial::SupporLayerType layer_type) +{ + layer_storage.push_back(PrintObjectSupportMaterial::MyLayer()); + layer_storage.back().layer_type = layer_type; + return layer_storage.back(); +} + +inline PrintObjectSupportMaterial::MyLayer& layer_allocate( + std::deque &layer_storage, + tbb::spin_mutex &layer_storage_mutex, + PrintObjectSupportMaterial::SupporLayerType layer_type) +{ + layer_storage_mutex.lock(); + layer_storage.push_back(PrintObjectSupportMaterial::MyLayer()); + PrintObjectSupportMaterial::MyLayer *layer_new = &layer_storage.back(); + layer_storage_mutex.unlock(); + layer_new->layer_type = layer_type; + return *layer_new; +} + +inline void layers_append(PrintObjectSupportMaterial::MyLayersPtr &dst, const PrintObjectSupportMaterial::MyLayersPtr &src) { + dst.insert(dst.end(), src.begin(), src.end()); } +// Support layer that is covered by some form of dense interface. +static constexpr const std::initializer_list support_types_interface { + PrintObjectSupportMaterial::sltRaftInterface, PrintObjectSupportMaterial::sltBottomContact, PrintObjectSupportMaterial::sltBottomInterface, PrintObjectSupportMaterial::sltTopContact, PrintObjectSupportMaterial::sltTopInterface +}; + void PrintObjectSupportMaterial::generate(PrintObject &object) { BOOST_LOG_TRIVIAL(info) << "Support generator - Start"; @@ -246,7 +468,7 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // Layer instances will be allocated by std::deque and they will be kept until the end of this function call. // The layers will be referenced by various LayersPtr (of type std::vector) - SupportGeneratorLayerStorage layer_storage; + MyLayerStorage layer_storage; BOOST_LOG_TRIVIAL(info) << "Support generator - Creating top contacts"; @@ -259,15 +481,18 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // should the support material expose to the object in order to guarantee // that it will be effective, regardless of how it's built below. // If raft is to be generated, the 1st top_contact layer will contain the 1st object layer silhouette without holes. - SupportGeneratorLayersPtr top_contacts = this->top_contact_layers(object, buildplate_covered, layer_storage); + MyLayersPtr top_contacts = this->top_contact_layers(object, buildplate_covered, layer_storage); if (top_contacts.empty()) // Nothing is supported, no supports are generated. return; + if (object.print()->canceled()) + return; + #ifdef SLIC3R_DEBUG static int iRun = 0; iRun ++; - for (const SupportGeneratorLayer *layer : top_contacts) + for (const MyLayer *layer : top_contacts) Slic3r::SVG::export_expolygons( debug_out_path("support-top-contacts-%d-%lf.svg", iRun, layer->print_z), union_ex(layer->polygons)); @@ -280,10 +505,13 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // layer_support_areas contains the per object layer support areas. These per object layer support areas // may get merged and trimmed by this->generate_base_layers() if the support layers are not synchronized with object layers. std::vector layer_support_areas; - SupportGeneratorLayersPtr bottom_contacts = this->bottom_contact_layers_and_layer_support_areas( + MyLayersPtr bottom_contacts = this->bottom_contact_layers_and_layer_support_areas( object, top_contacts, buildplate_covered, layer_storage, layer_support_areas); + if (object.print()->canceled()) + return; + #ifdef SLIC3R_DEBUG for (size_t layer_id = 0; layer_id < object.layers().size(); ++ layer_id) Slic3r::SVG::export_expolygons( @@ -298,13 +526,13 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // The layers may or may not be synchronized with the object layers, depending on the configuration. // For example, a single nozzle multi material printing will need to generate a waste tower, which in turn // wastes less material, if there are as little tool changes as possible. - SupportGeneratorLayersPtr intermediate_layers = this->raft_and_intermediate_support_layers( + MyLayersPtr intermediate_layers = this->raft_and_intermediate_support_layers( object, bottom_contacts, top_contacts, layer_storage); this->trim_support_layers_by_object(object, top_contacts, m_slicing_params.gap_support_object, m_slicing_params.gap_object_support, m_support_params.gap_xy); #ifdef SLIC3R_DEBUG - for (const SupportGeneratorLayer *layer : top_contacts) + for (const MyLayer *layer : top_contacts) Slic3r::SVG::export_expolygons( debug_out_path("support-top-contacts-trimmed-by-object-%d-%lf.svg", iRun, layer->print_z), union_ex(layer->polygons)); @@ -316,7 +544,7 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) this->generate_base_layers(object, bottom_contacts, top_contacts, intermediate_layers, layer_support_areas); #ifdef SLIC3R_DEBUG - for (SupportGeneratorLayersPtr::const_iterator it = intermediate_layers.begin(); it != intermediate_layers.end(); ++ it) + for (MyLayersPtr::const_iterator it = intermediate_layers.begin(); it != intermediate_layers.end(); ++ it) Slic3r::SVG::export_expolygons( debug_out_path("support-base-layers-%d-%lf.svg", iRun, (*it)->print_z), union_ex((*it)->polygons)); @@ -335,23 +563,24 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // Propagate top / bottom contact layers to generate interface layers // and base interface layers (for soluble interface / non souble base only) - SupportGeneratorLayersPtr empty_layers; - auto [interface_layers, base_interface_layers] = FFFSupport::generate_interface_layers( - *m_object_config, m_support_params, bottom_contacts, top_contacts, empty_layers, empty_layers, intermediate_layers, layer_storage); + auto [interface_layers, base_interface_layers] = this->generate_interface_layers(bottom_contacts, top_contacts, intermediate_layers, layer_storage); BOOST_LOG_TRIVIAL(info) << "Support generator - Creating raft"; // If raft is to be generated, the 1st top_contact layer will contain the 1st object layer silhouette with holes filled. // There is also a 1st intermediate layer containing bases of support columns. // Inflate the bases of the support columns and create the raft base under the object. - SupportGeneratorLayersPtr raft_layers = FFFSupport::generate_raft_base(object, m_support_params, m_slicing_params, top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); + MyLayersPtr raft_layers = this->generate_raft_base(object, top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); + + if (object.print()->canceled()) + return; #ifdef SLIC3R_DEBUG - for (const SupportGeneratorLayer *l : interface_layers) + for (const MyLayer *l : interface_layers) Slic3r::SVG::export_expolygons( debug_out_path("support-interface-layers-%d-%lf.svg", iRun, l->print_z), union_ex(l->polygons)); - for (const SupportGeneratorLayer *l : base_interface_layers) + for (const MyLayer *l : base_interface_layers) Slic3r::SVG::export_expolygons( debug_out_path("support-base-interface-layers-%d-%lf.svg", iRun, l->print_z), union_ex(l->polygons)); @@ -374,10 +603,94 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // intermediate_layers.clear(); // interface_layers.clear(); -#ifdef SLIC3R_DEBUG - SupportGeneratorLayersPtr layers_sorted = -#endif // SLIC3R_DEBUG - generate_support_layers(object, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); + // Install support layers into the object. + // A support layer installed on a PrintObject has a unique print_z. + MyLayersPtr layers_sorted; + layers_sorted.reserve(raft_layers.size() + bottom_contacts.size() + top_contacts.size() + intermediate_layers.size() + interface_layers.size() + base_interface_layers.size()); + layers_append(layers_sorted, raft_layers); + layers_append(layers_sorted, bottom_contacts); + layers_append(layers_sorted, top_contacts); + layers_append(layers_sorted, intermediate_layers); + layers_append(layers_sorted, interface_layers); + layers_append(layers_sorted, base_interface_layers); + // Sort the layers lexicographically by a raising print_z and a decreasing height. + std::sort(layers_sorted.begin(), layers_sorted.end(), [](auto *l1, auto *l2) { return *l1 < *l2; }); + + // BBS: MusangKing - erase mini layer heights (< 0.08mm) arised by top/bottom_z_distance & top_contacts under variable layer height + if (this->synchronize_layers() && !object.slicing_parameters().soluble_interface) { + auto thres = m_support_params.support_layer_height_min - EPSILON; + for (size_t i = 1; i < layers_sorted.size() - 1; ++i) { + auto& lowr = layers_sorted[i - 1]; + auto& curr = layers_sorted[i]; + auto& higr = layers_sorted[i + 1]; + // "Rounding" suspicious top/bottom contacts + if (curr->layer_type == sltTopContact || curr->layer_type == sltBottomContact) { + // Check adjacent-layer print_z diffs + coordf_t height_low = curr->print_z - lowr->print_z; + coordf_t height_high = higr->print_z - curr->print_z; + if (height_low < thres || height_high < thres) { + // Mark to-be-deleted layer as Unknown type + curr->layer_type = sltUnknown; + } + } + } + // Retains the order + layers_sorted.erase(std::remove_if(layers_sorted.begin(), layers_sorted.end(), [](MyLayer* l) {return l->layer_type == sltUnknown; }), layers_sorted.end()); + } + + int layer_id = 0; + int layer_id_interface = 0; + assert(object.support_layers().empty()); + for (size_t i = 0; i < layers_sorted.size();) { + // Find the last layer with roughly the same print_z, find the minimum layer height of all. + // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. + size_t j = i + 1; + coordf_t zmax = layers_sorted[i]->print_z + EPSILON; + for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) ; + // Assign an average print_z to the set of layers with nearly equal print_z. + coordf_t zavg = 0.5 * (layers_sorted[i]->print_z + layers_sorted[j - 1]->print_z); + coordf_t height_min = layers_sorted[i]->height; + bool empty = true; + // For snug supports, layers where the direction of the support interface shall change are accounted for. + size_t num_interfaces = 0; + size_t num_top_contacts = 0; + double top_contact_bottom_z = 0; + for (size_t u = i; u < j; ++u) { + MyLayer &layer = *layers_sorted[u]; + if (! layer.polygons.empty()) { + empty = false; + num_interfaces += one_of(layer.layer_type, support_types_interface); + if (layer.layer_type == sltTopContact) { + ++ num_top_contacts; + assert(num_top_contacts <= 1); + // All top contact layers sharing this print_z shall also share bottom_z. + //assert(num_top_contacts == 1 || (top_contact_bottom_z - layer.bottom_z) < EPSILON); + top_contact_bottom_z = layer.bottom_z; + } + } + layer.print_z = zavg; + height_min = std::min(height_min, layer.height); + } + if (! empty) { + // Here the upper_layer and lower_layer pointers are left to null at the support layers, + // as they are never used. These pointers are candidates for removal. + bool this_layer_contacts_only = num_top_contacts > 0 && num_top_contacts == num_interfaces; + size_t this_layer_id_interface = layer_id_interface; + if (this_layer_contacts_only) { + // Find a supporting layer for its interface ID. + for (auto it = object.support_layers().rbegin(); it != object.support_layers().rend(); ++ it) + if (const SupportLayer &other_layer = **it; std::abs(other_layer.print_z - top_contact_bottom_z) < EPSILON) { + // other_layer supports this top contact layer. Assign a different support interface direction to this layer + // from the layer that supports it. + this_layer_id_interface = other_layer.interface_id() + 1; + } + } + object.add_support_layer(layer_id ++, this_layer_id_interface, height_min, zavg); + if (num_interfaces && ! this_layer_contacts_only) + ++ layer_id_interface; + } + i = j; + } BOOST_LOG_TRIVIAL(info) << "Support generator - Generating tool paths"; @@ -389,7 +702,7 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. int j = i + 1; coordf_t zmax = layers_sorted[i]->print_z + EPSILON; - bool empty = layers_sorted[i]->polygons.empty(); + bool empty = true; for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) if (!layers_sorted[j]->polygons.empty()) empty = false; @@ -408,8 +721,20 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) } #endif /* SLIC3R_DEBUG */ +#if 0 // #ifdef SLIC3R_DEBUG + // check bounds + std::ofstream out; + out.open("./SVG/ns_support_layers.txt"); + if (out.is_open()) { + out << "### Support Layers ###" << std::endl; + for (auto& i : object.support_layers()) { + out << i->print_z << std::endl; + } + } +#endif /* SLIC3R_DEBUG */ + // Generate the actual toolpaths and save them into each layer. - generate_support_toolpaths(object.support_layers(), *m_object_config, m_support_params, m_slicing_params, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); + this->generate_toolpaths(object.support_layers(), raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); #ifdef SLIC3R_DEBUG { @@ -419,7 +744,7 @@ void PrintObjectSupportMaterial::generate(PrintObject &object) // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. int j = i + 1; coordf_t zmax = layers_sorted[i]->print_z + EPSILON; - bool empty = layers_sorted[i]->polygons.empty(); + bool empty = true; for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) if (! layers_sorted[j]->polygons.empty()) empty = false; @@ -477,8 +802,8 @@ struct SupportGridParams { grid_resolution(object_config.support_base_pattern_spacing.value + support_material_flow.spacing()), support_angle(Geometry::deg2rad(object_config.support_angle.value)), extrusion_width(support_material_flow.spacing()), - // support_material_closing_radius(object_config.support_material_closing_radius.value), - support_material_closing_radius(2.0), + //support_closing_radius(object_config.support_closing_radius.value), + support_closing_radius(2.0), expansion_to_slice(coord_t(support_material_flow.scaled_spacing() / 2 + 5)), expansion_to_propagate(-3) {} @@ -486,7 +811,7 @@ struct SupportGridParams { double grid_resolution; double support_angle; double extrusion_width; - double support_material_closing_radius; + double support_closing_radius; coord_t expansion_to_slice; coord_t expansion_to_propagate; }; @@ -504,8 +829,9 @@ class SupportGridPattern m_support_polygons(support_polygons), m_trimming_polygons(trimming_polygons), m_support_spacing(params.grid_resolution), m_support_angle(params.support_angle), m_extrusion_width(params.extrusion_width), - m_support_material_closing_radius(params.support_material_closing_radius) + m_support_material_closing_radius(params.support_closing_radius) { + if (m_style != smsSnug) m_style = smsGrid; switch (m_style) { case smsGrid: { @@ -671,31 +997,24 @@ class SupportGridPattern if (!support_polygons_simplified.empty()) bbox.merge(get_extents(support_polygons_simplified)); SVG svg(debug_out_path("extract_support_from_grid_trimmed-%s-%d-%d-%lf.svg", step_name, iRun, layer_id, print_z).c_str(), bbox); - svg.draw(union_ex(support_polygons_simplified), "gray", 0.25f); - svg.draw(islands, "red", 0.5f); - svg.draw(union_ex(out), "green", 0.5f); - svg.draw(union_ex(*m_support_polygons), "blue", 0.5f); - svg.draw_outline(islands, "red", "red", scale_(0.05)); - svg.draw_outline(union_ex(out), "green", "green", scale_(0.05)); - svg.draw_outline(union_ex(*m_support_polygons), "blue", "blue", scale_(0.05)); - for (const Point &pt : samples) - svg.draw(pt, "black", coord_t(scale_(0.15))); - svg.Close(); + if (svg.is_opened()) { + svg.draw(union_ex(support_polygons_simplified), "gray", 0.25f); + svg.draw(islands, "red", 0.5f); + svg.draw(union_ex(out), "green", 0.5f); + svg.draw(union_ex(*m_support_polygons), "blue", 0.5f); + svg.draw_outline(islands, "red", "red", scale_(0.05)); + svg.draw_outline(union_ex(out), "green", "green", scale_(0.05)); + svg.draw_outline(union_ex(*m_support_polygons), "blue", "blue", scale_(0.05)); + for (const Point& pt : samples) + svg.draw(pt, "black", coord_t(scale_(0.15))); + svg.Close(); + } #endif /* SLIC3R_DEBUG */ if (m_support_angle != 0.) polygons_rotate(out, m_support_angle); return out; } - case smsTreeSlim: - case smsTreeStrong: - case smsTreeHybrid: - - // Orca: use organic as default - case smsDefault: - case smsOrganic: -// assert(false); - [[fallthrough]]; case smsSnug: // Merge the support polygons by applying morphological closing and inwards smoothing. auto closing_distance = scaled(m_support_material_closing_radius); @@ -981,7 +1300,7 @@ namespace SupportMaterialInternal { static inline bool has_bridging_perimeters(const ExtrusionLoop &loop) { for (const ExtrusionPath &ep : loop.paths) - if (ep.role() == ExtrusionRole::erOverhangPerimeter && ! ep.polyline.empty()) + if (ep.role() == erOverhangPerimeter && ! ep.polyline.empty()) return int(ep.size()) >= (ep.is_closed() ? 3 : 2); return false; } @@ -1007,7 +1326,7 @@ namespace SupportMaterialInternal { for (const ExtrusionEntity *ee2 : static_cast(ee)->entities) { assert(! ee2->is_collection()); assert(! ee2->is_loop()); - if (ee2->role() == ExtrusionRole::erBridgeInfill) + if (ee2->role() == erBridgeInfill || ee2->role() == erInternalBridgeInfill) return true; } } @@ -1028,7 +1347,7 @@ namespace SupportMaterialInternal { { assert(expansion_scaled >= 0.f); for (const ExtrusionPath &ep : loop.paths) - if (ep.role() == ExtrusionRole::erOverhangPerimeter && ! ep.polyline.empty()) { + if (ep.role() == erOverhangPerimeter && ! ep.polyline.empty()) { float exp = 0.5f * (float)scale_(ep.width) + expansion_scaled; if (ep.is_closed()) { if (ep.size() >= 3) { @@ -1063,6 +1382,89 @@ namespace SupportMaterialInternal { collect_bridging_perimeter_areas(*static_cast(ee), expansion_scaled, out); } } + + static void remove_bridges_from_contacts( + const PrintConfig &print_config, + const Layer &lower_layer, + const Polygons &lower_layer_polygons, + const LayerRegion &layerm, + float fw, + Polygons &contact_polygons) + { + // compute the area of bridging perimeters + Polygons bridges; + { + // Surface supporting this layer, expanded by 0.5 * nozzle_diameter, as we consider this kind of overhang to be sufficiently supported. + Polygons lower_grown_slices = expand(lower_layer_polygons, + //FIXME to mimic the decision in the perimeter generator, we should use half the external perimeter width. + 0.5f * float(scale_(print_config.nozzle_diameter.get_at(layerm.region().config().wall_filament-1))), + SUPPORT_SURFACES_OFFSET_PARAMETERS); + // Collect perimeters of this layer. + //FIXME split_at_first_point() could split a bridge mid-way + #if 0 + Polylines overhang_perimeters = layerm.perimeters.as_polylines(); + // workaround for Clipper bug, see Slic3r::Polygon::clip_as_polyline() + for (Polyline &polyline : overhang_perimeters) + polyline.points[0].x += 1; + // Trim the perimeters of this layer by the lower layer to get the unsupported pieces of perimeters. + overhang_perimeters = diff_pl(overhang_perimeters, lower_grown_slices); + #else + Polylines overhang_perimeters = diff_pl(layerm.perimeters.as_polylines(), lower_grown_slices); + #endif + + // only consider straight overhangs + // only consider overhangs having endpoints inside layer's slices + // convert bridging polylines into polygons by inflating them with their thickness + // since we're dealing with bridges, we can't assume width is larger than spacing, + // so we take the largest value and also apply safety offset to be ensure no gaps + // are left in between + // BBS + const PrintObjectConfig& object_config = layerm.layer()->object()->config(); + Flow perimeter_bridge_flow = layerm.bridging_flow(frPerimeter, object_config.thick_bridges); + //FIXME one may want to use a maximum of bridging flow width and normal flow width, as the perimeters are calculated using the normal flow + // and then turned to bridging flow, thus their centerlines are derived from non-bridging flow and expanding them by a bridging flow + // may not expand them to the edge of their respective islands. + const float w = float(0.5 * std::max(perimeter_bridge_flow.scaled_width(), perimeter_bridge_flow.scaled_spacing())) + scaled(0.001); + for (Polyline &polyline : overhang_perimeters) + if (polyline.is_straight()) { + // This is a bridge + polyline.extend_start(fw); + polyline.extend_end(fw); + // Is the straight perimeter segment supported at both sides? + Point pts[2] = { polyline.first_point(), polyline.last_point() }; + bool supported[2] = { false, false }; + for (size_t i = 0; i < lower_layer.lslices.size() && ! (supported[0] && supported[1]); ++ i) + for (int j = 0; j < 2; ++ j) + if (! supported[j] && lower_layer.lslices_bboxes[i].contains(pts[j]) && lower_layer.lslices[i].contains(pts[j])) + supported[j] = true; + if (supported[0] && supported[1]) + // Offset a polyline into a thick line. + polygons_append(bridges, offset(polyline, w)); + } + bridges = union_(bridges); + } + // remove the entire bridges and only support the unsupported edges + //FIXME the brided regions are already collected as layerm.bridged. Use it? + for (const Surface &surface : layerm.fill_surfaces.surfaces) + if (surface.surface_type == stBottomBridge && surface.bridge_angle >= 0.0) + polygons_append(bridges, surface.expolygon); + //FIXME add the gap filled areas. Extrude the gaps with a bridge flow? + // Remove the unsupported ends of the bridges from the bridged areas. + //FIXME add supports at regular intervals to support long bridges! + bridges = diff(bridges, + // Offset unsupported edges into polygons. + offset(layerm.unsupported_bridge_edges, scale_(SUPPORT_MATERIAL_MARGIN), SUPPORT_SURFACES_OFFSET_PARAMETERS)); + // Remove bridged areas from the supported areas. + contact_polygons = diff(contact_polygons, bridges, ApplySafetyOffset::Yes); + + #ifdef SLIC3R_DEBUG + static int iRun = 0; + SVG::export_expolygons(debug_out_path("support-top-contacts-remove-bridges-run%d.svg", iRun ++), + { { { union_ex(offset(layerm.unsupported_bridge_edges, scale_(SUPPORT_MATERIAL_MARGIN), SUPPORT_SURFACES_OFFSET_PARAMETERS)) }, { "unsupported_bridge_edges", "orange", 0.5f } }, + { { union_ex(contact_polygons) }, { "contact_polygons", "blue", 0.5f } }, + { { union_ex(bridges) }, { "bridges", "red", "black", "", scaled(0.1f), 0.5f } } }); + #endif /* SLIC3R_DEBUG */ + } } std::vector PrintObjectSupportMaterial::buildplate_covered(const PrintObject &object) const @@ -1118,16 +1520,22 @@ struct SlicesMarginCache Polygons all_polygons; }; +// BBS +static const double length_thresh_well_supported = scale_(6); // min: 6mm +static const double area_thresh_well_supported = SQ(length_thresh_well_supported); // min: 6x6=36mm^2 +static const double sharp_tail_xy_gap = 0.2f; +static const double no_overlap_xy_gap = 0.2f; +static const double sharp_tail_max_support_height = 16.f; + // Tuple: overhang_polygons, contact_polygons, enforcer_polygons, no_interface_offset // no_interface_offset: minimum of external perimeter widths -static inline std::tuple detect_overhangs( +static inline ExPolygons detect_overhangs( const Layer &layer, const size_t layer_id, - const Polygons &lower_layer_polygons, + Polygons &lower_layer_polygons, const PrintConfig &print_config, const PrintObjectConfig &object_config, SupportAnnotations &annotations, - SlicesMarginCache &slices_margin, const double gap_xy #ifdef SLIC3R_DEBUG , size_t iRun @@ -1136,63 +1544,50 @@ static inline std::tuple detect_overhangs( { // Snug overhang polygons. Polygons overhang_polygons; - // Expanded for stability, trimmed by gap_xy. - Polygons contact_polygons; - // Enforcers projected to overhangs, trimmed - Polygons enforcer_polygons; - const bool support_auto = object_config.enable_support.value && is_auto(object_config.support_type.value); + // BBS. + const bool auto_normal_support = object_config.support_type.value == stNormalAuto; const bool buildplate_only = ! annotations.buildplate_covered.empty(); // If user specified a custom angle threshold, convert it to radians. // Zero means automatic overhang detection. // +1 makes the threshold inclusive double thresh_angle = object_config.support_threshold_angle.value > 0 ? object_config.support_threshold_angle.value + 1 : 0; thresh_angle = std::min(thresh_angle, 89.); // BBS should be smaller than 90 - const double threshold_rad = Geometry::deg2rad(thresh_angle); - float no_interface_offset = 0.f; + const double threshold_rad = Geometry::deg2rad(thresh_angle); + const coordf_t max_bridge_length = scale_(object_config.max_bridge_length.value); + const bool bridge_no_support = object_config.bridge_no_support.value; + const coordf_t xy_expansion = scale_(object_config.support_expansion.value); - if (layer_id == 0) + if (layer_id == 0) { - // This is the first object layer, so the object is being printed on a raft and - // we're here just to get the object footprint for the raft. -#if 0 - // The following line was filling excessive holes in the raft, see GH #430 - overhang_polygons = collect_slices_outer(layer); -#else // Don't fill in the holes. The user may apply a higher raft_expansion if one wants a better 1st layer adhesion. overhang_polygons = to_polygons(layer.lslices); -#endif - // Expand for better stability. - contact_polygons = object_config.raft_expansion.value > 0 ? expand(overhang_polygons, scaled(object_config.raft_expansion.value)) : overhang_polygons; + + for (auto& slice : layer.lslices) { + auto bbox_size = get_extents(slice).size(); + if (g_config_support_sharp_tails && + !(bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) + { + layer.sharp_tails.push_back(slice); + layer.sharp_tails_height.insert({ &slice, layer.height }); + } + } } else if (! layer.regions().empty()) { // Generate overhang / contact_polygons for non-raft layers. const Layer &lower_layer = *layer.lower_layer; - const bool has_enforcer = ! annotations.enforcers_layers.empty() && ! annotations.enforcers_layers[layer_id].empty(); - - // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. - auto slices_margin_update = - [&slices_margin, &lower_layer, &lower_layer_polygons, buildplate_only, has_enforcer, &annotations, layer_id] - (float slices_margin_offset, float no_interface_offset) { - if (slices_margin.offset != slices_margin_offset) { - slices_margin.offset = slices_margin_offset; - slices_margin.polygons = (slices_margin_offset == 0.f) ? - lower_layer_polygons : - // What is the purpose of no_interface_offset? Likely to not trim the contact layer by lower layer regions that are too thin to extrude? - offset2(lower_layer.lslices, -no_interface_offset * 0.5f, slices_margin_offset + no_interface_offset * 0.5f, SUPPORT_SURFACES_OFFSET_PARAMETERS); - if (buildplate_only && !annotations.buildplate_covered[layer_id].empty()) { - if (has_enforcer) - // Make a backup of trimming polygons before enforcing "on build plate only". - slices_margin.all_polygons = slices_margin.polygons; - // Trim the inflated contact surfaces by the top surfaces as well. - slices_margin.polygons = union_(slices_margin.polygons, annotations.buildplate_covered[layer_id]); - } + const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); + // Can't directly use lower_layer.lslices, or we'll miss some very sharp tails. + // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! + // FIXME if there are multiple regions with different extrusion width, the following code may not be right. + float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); + ExPolygons lower_layer_expolys; + for (const ExPolygon& expoly : lower_layer.lslices) { + if (!offset_ex(expoly, -fw / 2).empty()) { + lower_layer_expolys.emplace_back(expoly); } - }; - - no_interface_offset = std::accumulate(layer.regions().begin(), layer.regions().end(), FLT_MAX, - [](float acc, const LayerRegion *layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); + } float lower_layer_offset = 0; for (LayerRegion *layerm : layer.regions()) { @@ -1219,26 +1614,12 @@ static inline std::tuple detect_overhangs( // This step is done before the contact surface is calculated by growing the overhang region. diff_polygons = diff(diff_polygons, annotations.buildplate_covered[layer_id]); } - } else if (support_auto) { + } else if (auto_normal_support) { // Get the regions needing a suport, collapse very tiny spots. //FIXME cache the lower layer offset if this layer has multiple regions. -#if 0 - //FIXME this solution will trigger stupid supports for sharp corners, see GH #4874 - diff_polygons = opening( - diff(layerm_polygons, - // Likely filtering out thin regions from the lower layer, that will not be covered by perimeters, thus they - // are not supporting this layer. - // However this may lead to a situation where regions at the current layer that are narrow thus not extrudable will generate unnecessary supports. - // For example, see GH issue #3094 - opening(lower_layer_polygons, 0.5f * fw, lower_layer_offset + 0.5f * fw, SUPPORT_SURFACES_OFFSET_PARAMETERS)), - //FIXME This opening is targeted to reduce very thin regions to support, but it may lead to - // no support at all for not so steep overhangs. - 0.1f * fw); -#else diff_polygons = diff(layerm_polygons, expand(lower_layer_polygons, lower_layer_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); -#endif if (buildplate_only && ! annotations.buildplate_covered[layer_id].empty()) { // Don't support overhangs above the top surfaces. // This step is done before the contact surface is calculated by growing the overhang region. @@ -1248,58 +1629,160 @@ static inline std::tuple detect_overhangs( // Offset the support regions back to a full overhang, restrict them to the full overhang. // This is done to increase size of the supporting columns below, as they are calculated by // propagating these contact surfaces downwards. - diff_polygons = diff( - intersection(expand(diff_polygons, lower_layer_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS), layerm_polygons), - lower_layer_polygons); + diff_polygons = diff(intersection(expand(diff_polygons, lower_layer_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS), layerm_polygons), lower_layer_polygons); + if (xy_expansion != 0) { diff_polygons = expand(diff_polygons, xy_expansion, SUPPORT_SURFACES_OFFSET_PARAMETERS); } } //FIXME add user defined filtering here based on minimal area or minimum radius or whatever. + + // BBS + if (g_config_support_sharp_tails) { + for (ExPolygon& expoly : layerm->raw_slices) { + if (offset_ex(expoly, -0.5 * fw).empty()) continue; + bool is_sharp_tail = false; + float accum_height = layer.height; + + // 1. nothing below + // Check whether this is a sharp tail region. + // Should use lower_layer_expolys without any offset. Otherwise, it may missing sharp tails near the main body. + if (!overlaps(offset_ex(expoly, 0.5 * fw), lower_layer_expolys)) { + is_sharp_tail = expoly.area() < area_thresh_well_supported && !offset_ex(expoly, -0.1 * fw).empty(); + } + + if (is_sharp_tail) { + ExPolygons overhang = diff_ex({ expoly }, lower_layer_expolys); + layer.sharp_tails.push_back(expoly); + layer.sharp_tails_height.insert({ &expoly, accum_height }); + overhang = offset_ex(overhang, 0.05 * fw); + polygons_append(diff_polygons, to_polygons(overhang)); + } + } + } } if (diff_polygons.empty()) continue; // Apply the "support blockers". - if (! annotations.blockers_layers.empty() && ! annotations.blockers_layers[layer_id].empty()) { + if (!annotations.blockers_layers.empty() && !annotations.blockers_layers[layer_id].empty()) { // Expand the blocker a bit. Custom blockers produce strips // spanning just the projection between the two slices. // Subtracting them as they are may leave unwanted narrow // residues of diff_polygons that would then be supported. diff_polygons = diff(diff_polygons, - expand(union_(annotations.blockers_layers[layer_id]), float(1000.*SCALED_EPSILON))); + expand(union_(annotations.blockers_layers[layer_id]), float(1000. * SCALED_EPSILON))); } - #ifdef SLIC3R_DEBUG - { - ::Slic3r::SVG svg(debug_out_path("support-top-contacts-raw-run%d-layer%d-region%d.svg", - iRun, layer_id, - std::find_if(layer.regions().begin(), layer.regions().end(), [layerm](const LayerRegion* other){return other == layerm;}) - layer.regions().begin()), - get_extents(diff_polygons)); - Slic3r::ExPolygons expolys = union_ex(diff_polygons); - svg.draw(expolys); + if (bridge_no_support) { + //FIXME Expensive, potentially not precise enough. Misses gap fill extrusions, which bridge. + SupportMaterialInternal::remove_bridges_from_contacts( + print_config, lower_layer, lower_layer_polygons, *layerm, fw, diff_polygons); + } + + if (diff_polygons.empty() || offset(diff_polygons, -0.1 * fw).empty()) + continue; + + polygons_append(overhang_polygons, diff_polygons); + } // for each layer.region + } + + ExPolygons overhang_areas = union_ex(overhang_polygons); + // check cantilever + if (layer.lower_layer) { + for (ExPolygon& poly : overhang_areas) { + float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); + auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, scale_(0.5))); + Polygons cluster_boundary = to_polygons(cluster_boundary_ex); + if (cluster_boundary.empty()) continue; + double dist_max = 0; + for (auto& pt : poly.contour.points) { + double dist_pt = std::numeric_limits::max(); + for (auto& ply : cluster_boundary) { + double d = ply.distance_to(pt); + dist_pt = std::min(dist_pt, d); + } + dist_max = std::max(dist_max, dist_pt); + } + if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base + layer.cantilevers.emplace_back(poly); + } + } + } + + return overhang_areas; +} + +// Tuple: overhang_polygons, contact_polygons, enforcer_polygons, no_interface_offset +// no_interface_offset: minimum of external perimeter widths +static inline std::tuple detect_contacts( + const Layer& layer, + const size_t layer_id, + Polygons& overhang_polygons, + Polygons& lower_layer_polygons, + const PrintConfig& print_config, + const PrintObjectConfig& object_config, + SupportAnnotations& annotations, + SlicesMarginCache& slices_margin, + const double gap_xy +#ifdef SLIC3R_DEBUG + , size_t iRun +#endif // SLIC3R_DEBUG +) +{ + // Expanded for stability, trimmed by gap_xy. + Polygons contact_polygons; + // Enforcers projected to overhangs, trimmed + Polygons enforcer_polygons; + + // BBS. + const bool auto_normal_support = object_config.support_type.value == stNormalAuto; + const bool buildplate_only = !annotations.buildplate_covered.empty(); + float no_interface_offset = 0.f; + + if (layer_id == 0) + { + // Expand for better stability. + contact_polygons = object_config.raft_expansion.value > 0 ? expand(overhang_polygons, scaled(object_config.raft_expansion.value)) : overhang_polygons; + } + else if (!layer.regions().empty()) + { + // Generate overhang / contact_polygons for non-raft layers. + const Layer& lower_layer = *layer.lower_layer; + const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); + const ExPolygons& lower_layer_expolys = lower_layer.lslices; + const ExPolygons& lower_layer_sharptails = lower_layer.sharp_tails; + + // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. + auto slices_margin_update = + [&slices_margin, &layer, &lower_layer, &lower_layer_polygons, buildplate_only, has_enforcer, &annotations, layer_id] + (float slices_margin_offset, float no_interface_offset) { + if (slices_margin.offset != slices_margin_offset) { + slices_margin.offset = slices_margin_offset; + slices_margin.polygons = (slices_margin_offset == 0.f) ? + lower_layer_polygons : + // What is the purpose of no_interface_offset? Likely to not trim the contact layer by lower layer regions that are too thin to extrude? + offset2(lower_layer.lslices, -no_interface_offset * 0.5f, slices_margin_offset + no_interface_offset * 0.5f, SUPPORT_SURFACES_OFFSET_PARAMETERS); + if (buildplate_only && !annotations.buildplate_covered[layer_id].empty()) { + if (has_enforcer) + // Make a backup of trimming polygons before enforcing "on build plate only". + slices_margin.all_polygons = slices_margin.polygons; + // Trim the inflated contact surfaces by the top surfaces as well. + slices_margin.polygons = union_(slices_margin.polygons, annotations.buildplate_covered[layer_id]); + } } - #endif /* SLIC3R_DEBUG */ + }; + + no_interface_offset = std::accumulate(layer.regions().begin(), layer.regions().end(), FLT_MAX, + [](float acc, const LayerRegion* layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); - // if (object_config.dont_support_bridges) - // //FIXME Expensive, potentially not precise enough. Misses gap fill extrusions, which bridge. - // remove_bridges_from_contacts(print_config, lower_layer, *layerm, fw, diff_polygons); + float lower_layer_offset = 0; + for (LayerRegion* layerm : layer.regions()) { + Polygons layerm_polygons = to_polygons(layerm->slices.surfaces); + // Overhang polygons for this layer and region. + Polygons diff_polygons = intersection(overhang_polygons, layerm_polygons); if (diff_polygons.empty()) continue; - #ifdef SLIC3R_DEBUG - Slic3r::SVG::export_expolygons( - debug_out_path("support-top-contacts-filtered-run%d-layer%d-region%d-z%f.svg", - iRun, layer_id, - std::find_if(layer.regions().begin(), layer.regions().end(), [layerm](const LayerRegion* other){return other == layerm;}) - layer.regions().begin(), - layer.print_z), - union_ex(diff_polygons)); - #endif /* SLIC3R_DEBUG */ - - //FIXME the overhang_polygons are used to construct the support towers as well. - //if (this->has_contact_loops()) - // Store the exact contour of the overhang for the contact loops. - polygons_append(overhang_polygons, diff_polygons); - // Let's define the required contact area by using a max gap of half the upper // extrusion width and extending the area according to the configured margin. // We increment the area in steps because we don't want our support to overflow @@ -1330,44 +1813,45 @@ static inline std::tuple detect_overhangs( } // for each layer.region if (has_enforcer) - if (const Polygons &enforcer_polygons_src = annotations.enforcers_layers[layer_id]; ! enforcer_polygons_src.empty()) { + if (const Polygons& enforcer_polygons_src = annotations.enforcers_layers[layer_id]; !enforcer_polygons_src.empty()) { // Enforce supports (as if with 90 degrees of slope) for the regions covered by the enforcer meshes. - #ifdef SLIC3R_DEBUG +#ifdef SLIC3R_DEBUG ExPolygons enforcers_united = union_ex(enforcer_polygons_src); - #endif // SLIC3R_DEBUG +#endif // SLIC3R_DEBUG enforcer_polygons = diff(intersection(layer.lslices, enforcer_polygons_src), // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - #ifdef SLIC3R_DEBUG +#ifdef SLIC3R_DEBUG SVG::export_expolygons(debug_out_path("support-top-contacts-enforcers-run%d-layer%d-z%f.svg", iRun, layer_id, layer.print_z), { { layer.lslices, { "layer.lslices", "gray", 0.2f } }, { { union_ex(lower_layer_polygons) }, { "lower_layer_polygons", "green", 0.5f } }, { enforcers_united, { "enforcers", "blue", 0.5f } }, { { union_safety_offset_ex(enforcer_polygons) }, { "new_contacts", "red", "black", "", scaled(0.1f), 0.5f } } }); - #endif /* SLIC3R_DEBUG */ - if (! enforcer_polygons.empty()) { +#endif /* SLIC3R_DEBUG */ + if (!enforcer_polygons.empty()) { polygons_append(overhang_polygons, enforcer_polygons); slices_margin_update(std::min(lower_layer_offset, float(scale_(gap_xy))), no_interface_offset); polygons_append(contact_polygons, diff(enforcer_polygons, slices_margin.all_polygons.empty() ? slices_margin.polygons : slices_margin.all_polygons)); } } - } + } - return std::make_tuple(std::move(overhang_polygons), std::move(contact_polygons), std::move(enforcer_polygons), no_interface_offset); + return std::make_tuple(std::move(contact_polygons), std::move(enforcer_polygons), no_interface_offset); } // Allocate one, possibly two support contact layers. // For "thick" overhangs, one support layer will be generated to support normal extrusions, the other to support the "thick" extrusions. -static inline std::pair new_contact_layer( +static inline std::pair new_contact_layer( const PrintConfig &print_config, const PrintObjectConfig &object_config, const SlicingParameters &slicing_params, const coordf_t support_layer_height_min, const Layer &layer, - SupportGeneratorLayerStorage &layer_storage) + std::deque &layer_storage, + tbb::spin_mutex &layer_storage_mutex) { double print_z, bottom_z, height; - SupportGeneratorLayer* bridging_layer = nullptr; + PrintObjectSupportMaterial::MyLayer* bridging_layer = nullptr; assert(layer.id() >= slicing_params.raft_layers()); size_t layer_id = layer.id() - slicing_params.raft_layers(); @@ -1385,15 +1869,15 @@ static inline std::pair new_cont bottom_z = (layer_id == 1) ? slicing_params.object_print_z_min : layer.lower_layer->lower_layer->print_z; } else { print_z = layer.bottom_z() - slicing_params.gap_support_object; - bottom_z = print_z; - height = 0.; + height = print_config.independent_support_layer_height ? 0. : layer.lower_layer->height/*object_config.layer_height*/; // BBS: need to consider adaptive layer heights + bottom_z = print_z - height; // Ignore this contact area if it's too low. // Don't want to print a layer below the first layer height as it may not stick well. //FIXME there may be a need for a single layer support, then one may decide to print it either as a bottom contact or a top contact // and it may actually make sense to do it with a thinner layer than the first layer height. if (print_z < slicing_params.first_print_layer_height - EPSILON) { // This contact layer is below the first layer height, therefore not printable. Don't support this surface. - return std::pair(nullptr, nullptr); + return std::pair(nullptr, nullptr); } const bool has_raft = slicing_params.raft_layers() > 1; const coordf_t min_print_z = has_raft ? slicing_params.raft_contact_top_z : slicing_params.first_print_layer_height; @@ -1415,6 +1899,9 @@ static inline std::pair new_cont for (const LayerRegion* region : layer.regions()) bridging_height += region->region().bridging_height_avg(print_config); bridging_height /= coordf_t(layer.regions().size()); + // BBS: align bridging height + if (!print_config.independent_support_layer_height) + bridging_height = std::ceil(bridging_height / object_config.layer_height - EPSILON) * object_config.layer_height; coordf_t bridging_print_z = layer.print_z - bridging_height - slicing_params.gap_support_object; if (bridging_print_z >= min_print_z) { // Not below the first layer height means this layer is printable. @@ -1424,23 +1911,25 @@ static inline std::pair new_cont } if (bridging_print_z < print_z - EPSILON) { // Allocate the new layer. - bridging_layer = &layer_storage.allocate(SupporLayerType::TopContact); + bridging_layer = &layer_allocate(layer_storage, layer_storage_mutex, PrintObjectSupportMaterial::sltTopContact); bridging_layer->idx_object_layer_above = layer_id; bridging_layer->print_z = bridging_print_z; if (bridging_print_z == slicing_params.first_print_layer_height) { bridging_layer->bottom_z = 0; bridging_layer->height = slicing_params.first_print_layer_height; } else { + // BBS: if independent_support_layer_height is not enabled, the support layer_height should be the same as layer height. + // Note that for this case, adaptive layer height must be disabled. + bridging_layer->height = print_config.independent_support_layer_height ? 0. : object_config.layer_height; // Don't know the height yet. - bridging_layer->bottom_z = bridging_print_z; - bridging_layer->height = 0; + bridging_layer->bottom_z = bridging_print_z - bridging_layer->height; } } } } } - SupportGeneratorLayer &new_layer = layer_storage.allocate(SupporLayerType::TopContact); + PrintObjectSupportMaterial::MyLayer &new_layer = layer_allocate(layer_storage, layer_storage_mutex, PrintObjectSupportMaterial::sltTopContact); new_layer.idx_object_layer_above = layer_id; new_layer.print_z = print_z; new_layer.bottom_z = bottom_z; @@ -1449,7 +1938,7 @@ static inline std::pair new_cont } static inline void fill_contact_layer( - SupportGeneratorLayer &new_layer, + PrintObjectSupportMaterial::MyLayer &new_layer, size_t layer_id, const SlicingParameters &slicing_params, const PrintObjectConfig &object_config, @@ -1486,7 +1975,7 @@ static inline void fill_contact_layer( #endif // SLIC3R_DEBUG )); // 2) infill polygons, expand them by half the extrusion width + a tiny bit of extra. - bool reduce_interfaces = object_config.support_style.value == smsGrid && layer_id > 0 && !slicing_params.soluble_interface; + bool reduce_interfaces = object_config.support_style.value != smsSnug && layer_id > 0 && !slicing_params.soluble_interface; if (reduce_interfaces) { // Reduce the amount of dense interfaces: Do not generate dense interfaces below overhangs with 60% overhang of the extrusions. Polygons dense_interface_polygons = diff(overhang_polygons, lower_layer_polygons_for_dense_interface()); @@ -1601,10 +2090,10 @@ static inline void fill_contact_layer( // Merge close contact layers conservatively: If two layers are closer than the minimum allowed print layer height (the min_layer_height parameter), // the top contact layer is merged into the bottom contact layer. -static void merge_contact_layers(const SlicingParameters &slicing_params, double support_layer_height_min, SupportGeneratorLayersPtr &layers) +static void merge_contact_layers(const SlicingParameters &slicing_params, double support_layer_height_min, PrintObjectSupportMaterial::MyLayersPtr &layers) { // Sort the layers, as one layer may produce bridging and non-bridging contact layers with different print_z. - std::sort(layers.begin(), layers.end(), [](const SupportGeneratorLayer *l1, const SupportGeneratorLayer *l2) { return l1->print_z < l2->print_z; }); + std::sort(layers.begin(), layers.end(), [](const PrintObjectSupportMaterial::MyLayer *l1, const PrintObjectSupportMaterial::MyLayer *l2) { return l1->print_z < l2->print_z; }); int i = 0; int k = 0; @@ -1614,7 +2103,7 @@ static void merge_contact_layers(const SlicingParameters &slicing_params, double for (; j < (int)layers.size() && layers[j]->print_z < slicing_params.first_print_layer_height + support_layer_height_min - EPSILON; ++ j); if (j > 0) { // Merge the layers layers (0) to (j - 1) into the layers[0]. - SupportGeneratorLayer &dst = *layers.front(); + PrintObjectSupportMaterial::MyLayer &dst = *layers.front(); for (int u = 1; u < j; ++ u) dst.merge(std::move(*layers[u])); // Snap the first layer to the 1st layer height. @@ -1632,7 +2121,7 @@ static void merge_contact_layers(const SlicingParameters &slicing_params, double for (; j < (int)layers.size() && layers[j]->print_z < zmax; ++ j) ; if (i + 1 < j) { // Merge the layers layers (i + 1) to (j - 1) into the layers[i]. - SupportGeneratorLayer &dst = *layers[i]; + PrintObjectSupportMaterial::MyLayer &dst = *layers[i]; for (int u = i + 1; u < j; ++ u) dst.merge(std::move(*layers[u])); } @@ -1644,11 +2133,80 @@ static void merge_contact_layers(const SlicingParameters &slicing_params, double layers.erase(layers.begin() + k, layers.end()); } + +struct OverhangCluster { + std::map> layer_overhangs; + ExPolygons merged_overhangs_dilated; + int min_layer = 1e7; + int max_layer = 0; + coordf_t offset_scaled = 0; + bool is_cantilever = false; + bool is_sharp_tail = false; + bool is_small_overhang = false; + + OverhangCluster(ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { + this->offset_scaled = offset_scaled; + insert(overhang, layer_nr); + } + + void insert(ExPolygon* overhang_new, int layer_nr) { + if (layer_overhangs.find(layer_nr) != layer_overhangs.end()) { + layer_overhangs[layer_nr].push_back(overhang_new); + } + else { + layer_overhangs.emplace(layer_nr, std::vector{ overhang_new }); + } + ExPolygons overhang_dilated = offset_scaled > EPSILON ? offset_ex(*overhang_new, offset_scaled) : ExPolygons{ *overhang_new }; + if (!overhang_dilated.empty()) + merged_overhangs_dilated = union_ex(merged_overhangs_dilated, overhang_dilated); + min_layer = std::min(min_layer, layer_nr); + max_layer = std::max(max_layer, layer_nr); + } + + int height() { + return max_layer - min_layer + 1; + } + + bool intersects(const ExPolygon& overhang_new, int layer_nr) { + if (layer_nr < 1) + return false; + + //auto it = layer_overhangs.find(layer_nr - 1); + //if (it == layer_overhangs.end()) + // return false; + //ExPolygons overhangs_lower; + //for (ExPolygon* poly : it->second) { + // overhangs_lower.push_back(*poly); + //} + if (layer_nrmax_layer + 1) + return false; + const ExPolygons overhang_dilated = offset_ex(overhang_new, offset_scaled); + return overlaps(overhang_dilated, merged_overhangs_dilated); + } +}; + +static OverhangCluster* add_overhang(std::vector& clusters, ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { + OverhangCluster* cluster = nullptr; + bool found = false; + for (int i = 0; i < clusters.size(); i++) { + auto cluster_i = &clusters[i]; + if (cluster_i->intersects(*overhang, layer_nr)) { + cluster_i->insert(overhang, layer_nr); + cluster = cluster_i; + break; + } + } + if (!cluster) { + cluster = &clusters.emplace_back(overhang, layer_nr, offset_scaled); + } + return cluster; +}; + // Generate top contact layers supporting overhangs. // For a soluble interface material synchronize the layer heights with the object, otherwise leave the layer height undefined. // If supports over bed surface only are requested, don't generate contact layers over an object. -SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( - const PrintObject &object, const std::vector &buildplate_covered, SupportGeneratorLayerStorage &layer_storage) const +PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_layers( + const PrintObject &object, const std::vector &buildplate_covered, MyLayerStorage &layer_storage) const { #ifdef SLIC3R_DEBUG static int iRun = 0; @@ -1656,11 +2214,17 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( #define SLIC3R_IRUN , iRun #endif /* SLIC3R_DEBUG */ + // BBS: tree support is selected so normal supports need not be generated. + // Note we still need to go through the following steps if support is disabled but raft is enabled. + if (m_object_config->enable_support.value && (m_object_config->support_type.value != stNormalAuto && m_object_config->support_type.value != stNormal)) { + return MyLayersPtr(); + } + // Slice support enforcers / support blockers. SupportAnnotations annotations(object, buildplate_covered); // Output layers, sorted by top Z. - SupportGeneratorLayersPtr contact_out; + MyLayersPtr contact_out; BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::top_contact_layers() in parallel - start"; // Determine top contact areas. @@ -1672,76 +2236,261 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::top_contact_layers( // For each overhang layer, two supporting layers may be generated: One for the overhangs extruded with a bridging flow, // and the other for the overhangs extruded with a normal flow. contact_out.assign(num_layers * 2, nullptr); - tbb::parallel_for(tbb::blocked_range(this->has_raft() ? 0 : 1, num_layers), - [this, &object, &annotations, &layer_storage, &contact_out] - (const tbb::blocked_range& range) { - for (size_t layer_id = range.begin(); layer_id < range.end(); ++ layer_id) - { - const Layer &layer = *object.layers()[layer_id]; + tbb::spin_mutex layer_storage_mutex; + + std::vector overhangs_per_layers(num_layers); + size_t layer_id_start = this->has_raft() ? 0 : 1; + // main part of overhang detection can be parallel + tbb::parallel_for(tbb::blocked_range(layer_id_start, num_layers), + [&](const tbb::blocked_range& range) { + for (size_t layer_id = range.begin(); layer_id < range.end(); layer_id++) { + const Layer& layer = *object.layers()[layer_id]; Polygons lower_layer_polygons = (layer_id == 0) ? Polygons() : to_polygons(object.layers()[layer_id - 1]->lslices); - SlicesMarginCache slices_margin; - - auto [overhang_polygons, contact_polygons, enforcer_polygons, no_interface_offset] = - detect_overhangs(layer, layer_id, lower_layer_polygons, *m_print_config, *m_object_config, annotations, slices_margin, m_support_params.gap_xy - #ifdef SLIC3R_DEBUG - , iRun - #endif // SLIC3R_DEBUG - ); - - // Now apply the contact areas to the layer where they need to be made. - if (! contact_polygons.empty() || ! overhang_polygons.empty()) { - // Allocate the two empty layers. - auto [new_layer, bridging_layer] = new_contact_layer(*m_print_config, *m_object_config, m_slicing_params, m_support_params.support_layer_height_min, layer, layer_storage); - if (new_layer) { - // Fill the non-bridging layer with polygons. - fill_contact_layer(*new_layer, layer_id, m_slicing_params, - *m_object_config, slices_margin, overhang_polygons, contact_polygons, enforcer_polygons, lower_layer_polygons, - m_support_params.support_material_flow, no_interface_offset - #ifdef SLIC3R_DEBUG - , iRun, layer - #endif // SLIC3R_DEBUG - ); - // Insert new layer even if there is no interface generated: Likely the support angle is not steep enough to require dense interface, - // however generating a sparse support will be useful for the object stability. - // if (! new_layer->polygons.empty()) - contact_out[layer_id * 2] = new_layer; - if (bridging_layer != nullptr) { - bridging_layer->polygons = new_layer->polygons; - bridging_layer->contact_polygons = std::make_unique(*new_layer->contact_polygons); - bridging_layer->overhang_polygons = std::make_unique(*new_layer->overhang_polygons); - if (new_layer->enforcer_polygons) - bridging_layer->enforcer_polygons = std::make_unique(*new_layer->enforcer_polygons); - contact_out[layer_id * 2 + 1] = bridging_layer; - } - } - } - } - }); - // Compress contact_out, remove the nullptr items. - remove_nulls(contact_out); + overhangs_per_layers[layer_id] = detect_overhangs(layer, layer_id, lower_layer_polygons, *m_print_config, *m_object_config, annotations, m_support_params.gap_xy +#ifdef SLIC3R_DEBUG + , iRun +#endif // SLIC3R_DEBUG + ); - // Merge close contact layers conservatively: If two layers are closer than the minimum allowed print layer height (the min_layer_height parameter), - // the top contact layer is merged into the bottom contact layer. - merge_contact_layers(m_slicing_params, m_support_params.support_layer_height_min, contact_out); + if (object.print()->canceled()) + break; + } + } + ); // end tbb::parallel_for + + if (object.print()->canceled()) + return MyLayersPtr(); + + // check if the sharp tails should be extended higher + bool detect_first_sharp_tail_only = false; + const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(object.print()->config().nozzle_diameter.get_at(object.config().support_interface_filament-1)); + const coordf_t extrusion_width_scaled = scale_(extrusion_width); + if (is_auto(m_object_config->support_type.value) && g_config_support_sharp_tails && !detect_first_sharp_tail_only) { + for (size_t layer_nr = layer_id_start; layer_nr < num_layers; layer_nr++) { + if (object.print()->canceled()) + break; - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::top_contact_layers() in parallel - end"; + const Layer* layer = object.get_layer(layer_nr); + const Layer* lower_layer = layer->lower_layer; + if (!lower_layer) + continue; - return contact_out; -} + // BBS detect sharp tail + const ExPolygons& lower_layer_sharptails = lower_layer->sharp_tails; + const auto& lower_layer_sharptails_height = lower_layer->sharp_tails_height; + for (const ExPolygon& expoly : layer->lslices) { + bool is_sharp_tail = false; + float accum_height = layer->height; + do { + // 2. something below + // check whether this is above a sharp tail region. + + // 2.1 If no sharp tail below, this is considered as common region. + ExPolygons supported_by_lower = intersection_ex({ expoly }, lower_layer_sharptails); + if (supported_by_lower.empty()) { + is_sharp_tail = false; + break; + } -// Find the bottom contact layers above the top surfaces of this layer. -static inline SupportGeneratorLayer* detect_bottom_contacts( - const SlicingParameters &slicing_params, - const SupportParameters &support_params, - const PrintObject &object, - const Layer &layer, - // Existing top contact layers, to which this newly created bottom contact layer will be snapped to guarantee a minimum layer height. - const SupportGeneratorLayersPtr &top_contacts, - // First top contact layer index overlapping with this new bottom interface layer. - size_t contact_idx, + // 2.2 If sharp tail below, check whether it support this region enough. +#if 0 + // judge by area isn't reliable, failure cases include 45 degree rotated cube + float supported_area = area(supported_by_lower); + if (supported_area > area_thresh_well_supported) { + is_sharp_tail = false; + break; + } +#endif + BoundingBox bbox = get_extents(supported_by_lower); + if (bbox.size().x() > length_thresh_well_supported && bbox.size().y() > length_thresh_well_supported) { + is_sharp_tail = false; + break; + } + + // 2.3 check whether sharp tail exceed the max height + for (const auto& lower_sharp_tail_height : lower_layer_sharptails_height) { + if (lower_sharp_tail_height.first->overlaps(expoly)) { + accum_height += lower_sharp_tail_height.second; + break; + } + } + if (accum_height > sharp_tail_max_support_height) { + is_sharp_tail = false; + break; + } + + // 2.4 if the area grows fast than threshold, it get connected to other part or + // it has a sharp slop and will be auto supported. + ExPolygons new_overhang_expolys = diff_ex({ expoly }, lower_layer_sharptails); + Point size_diff = get_extents(new_overhang_expolys).size() - get_extents(lower_layer_sharptails).size(); + if (size_diff.both_comp(Point(scale_(5), scale_(5)), ">") || !offset_ex(new_overhang_expolys, -5.0 * extrusion_width_scaled).empty()) { + is_sharp_tail = false; + break; + } + + // 2.5 mark the expoly as sharptail + is_sharp_tail = true; + } while (0); + + if (is_sharp_tail) { + ExPolygons overhang = diff_ex({ expoly }, lower_layer->lslices); + layer->sharp_tails.push_back(expoly); + layer->sharp_tails_height.insert({ &expoly, accum_height }); + append(overhangs_per_layers[layer_nr], overhang); +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + SVG svg(get_svg_filename(std::to_string(layer->print_z), "sharp_tail"), object.bounding_box()); + if (svg.is_opened()) svg.draw(overhang, "yellow"); +#endif + } + + } + } + } + + if (object.print()->canceled()) + return MyLayersPtr(); + + // BBS group overhang clusters + const bool config_remove_small_overhangs = m_object_config->support_remove_small_overhang.value; + if (config_remove_small_overhangs) { + std::vector clusters; + double fw_scaled = scale_(extrusion_width); + std::set removed_overhang; + + for (size_t layer_id = layer_id_start; layer_id < num_layers; layer_id++) { + const Layer* layer = object.get_layer(layer_id); + for (auto& overhang : overhangs_per_layers[layer_id]) { + OverhangCluster* cluster = add_overhang(clusters, &overhang, layer_id, fw_scaled); + if (overlaps({ overhang }, layer->cantilevers)) + cluster->is_cantilever = true; + } + } + + for (OverhangCluster& cluster : clusters) { + // 3. check whether the small overhang is sharp tail + cluster.is_sharp_tail = false; + for (size_t layer_id = cluster.min_layer; layer_id <= cluster.max_layer; layer_id++) { + const Layer* layer = object.get_layer(layer_id); + if (overlaps(layer->sharp_tails, cluster.merged_overhangs_dilated)) { + cluster.is_sharp_tail = true; + break; + } + } + + if (!cluster.is_sharp_tail && !cluster.is_cantilever) { + // 2. check overhang cluster size is small + cluster.is_small_overhang = false; + auto erode1 = offset_ex(cluster.merged_overhangs_dilated, -1.0 * fw_scaled); + Point bbox_sz = get_extents(erode1).size(); + if (bbox_sz.x() < 2 * fw_scaled || bbox_sz.y() < 2 * fw_scaled) { + cluster.is_small_overhang = true; + } + } + +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + const Layer* layer1 = object.get_layer(cluster.min_layer); + BoundingBox bbox = get_extents(cluster.merged_overhangs_dilated); + bbox.merge(get_extents(layer1->lslices)); + SVG svg(format("SVG/overhangCluster_%s_%s_tail=%s_cantilever=%s_small=%s.svg", cluster.min_layer, layer1->print_z, cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang), bbox); + if (svg.is_opened()) { + svg.draw(layer1->lslices, "red"); + svg.draw(cluster.merged_overhangs_dilated, "blue"); + } +#endif + + // 5. remove small overhangs + if (cluster.is_small_overhang) { + for (auto overhangs : cluster.layer_overhangs) { + for (auto* poly : overhangs.second) + removed_overhang.insert(poly); + } + } + } + + for (size_t layer_id = layer_id_start; layer_id < num_layers; layer_id++) { + auto& layer_overhangs = overhangs_per_layers[layer_id]; + if (layer_overhangs.empty()) + continue; + + for (int poly_idx = 0; poly_idx < layer_overhangs.size(); poly_idx++) { + auto* overhang = &layer_overhangs[poly_idx]; + if (removed_overhang.find(overhang) != removed_overhang.end()) { + overhang->clear(); + } + } + } + } + + if (object.print()->canceled()) + return MyLayersPtr(); + + for (size_t layer_id = layer_id_start; layer_id < num_layers; layer_id++) { + const Layer& layer = *object.layers()[layer_id]; + Polygons overhang_polygons = to_polygons(overhangs_per_layers[layer_id]); + Polygons lower_layer_polygons = (layer_id == 0) ? Polygons() : to_polygons(object.layers()[layer_id - 1]->lslices); + SlicesMarginCache slices_margin; + + auto [contact_polygons, enforcer_polygons, no_interface_offset] = + detect_contacts(layer, layer_id, overhang_polygons, lower_layer_polygons, *m_print_config, *m_object_config, annotations, slices_margin, m_support_params.gap_xy +#ifdef SLIC3R_DEBUG + , iRun +#endif // SLIC3R_DEBUG + ); + + // Now apply the contact areas to the layer where they need to be made. + if (!contact_polygons.empty() || !overhang_polygons.empty()) { + // Allocate the two empty layers. + auto [new_layer, bridging_layer] = new_contact_layer(*m_print_config, *m_object_config, m_slicing_params, m_support_params.support_layer_height_min, layer, layer_storage, layer_storage_mutex); + if (new_layer) { + // Fill the non-bridging layer with polygons. + fill_contact_layer(*new_layer, layer_id, m_slicing_params, + *m_object_config, slices_margin, overhang_polygons, contact_polygons, enforcer_polygons, lower_layer_polygons, + m_support_params.support_material_flow, no_interface_offset +#ifdef SLIC3R_DEBUG + , iRun, layer +#endif // SLIC3R_DEBUG + ); + // Insert new layer even if there is no interface generated: Likely the support angle is not steep enough to require dense interface, + // however generating a sparse support will be useful for the object stability. + // if (! new_layer->polygons.empty()) + contact_out[layer_id * 2] = new_layer; + if (bridging_layer != nullptr) { + bridging_layer->polygons = new_layer->polygons; + bridging_layer->contact_polygons = std::make_unique(*new_layer->contact_polygons); + bridging_layer->overhang_polygons = std::make_unique(*new_layer->overhang_polygons); + if (new_layer->enforcer_polygons) + bridging_layer->enforcer_polygons = std::make_unique(*new_layer->enforcer_polygons); + contact_out[layer_id * 2 + 1] = bridging_layer; + } + } + } + } + + // Compress contact_out, remove the nullptr items. + remove_nulls(contact_out); + + // Merge close contact layers conservatively: If two layers are closer than the minimum allowed print layer height (the min_layer_height parameter), + // the top contact layer is merged into the bottom contact layer. + merge_contact_layers(m_slicing_params, m_support_params.support_layer_height_min, contact_out); + + BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::top_contact_layers() in parallel - end"; + + return contact_out; +} + +// Find the bottom contact layers above the top surfaces of this layer. +static inline PrintObjectSupportMaterial::MyLayer* detect_bottom_contacts( + const SlicingParameters &slicing_params, + const PrintObjectSupportMaterial::SupportParams &support_params, + const PrintObject &object, + const Layer &layer, + // Existing top contact layers, to which this newly created bottom contact layer will be snapped to guarantee a minimum layer height. + const PrintObjectSupportMaterial::MyLayersPtr &top_contacts, + // First top contact layer index overlapping with this new bottom interface layer. + size_t contact_idx, // To allocate a new layer from. - SupportGeneratorLayerStorage &layer_storage, + std::deque &layer_storage, // To trim the support areas above this bottom interface layer with this newly created bottom interface layer. std::vector &layer_support_areas, // Support areas projected from top to bottom, starting with top support interfaces. @@ -1776,13 +2525,13 @@ static inline SupportGeneratorLayer* detect_bottom_contacts( size_t layer_id = layer.id() - slicing_params.raft_layers(); // Allocate a new bottom contact layer. - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::BottomContact); + PrintObjectSupportMaterial::MyLayer &layer_new = layer_allocate(layer_storage, PrintObjectSupportMaterial::sltBottomContact); // Grow top surfaces so that interface and support generation are generated // with some spacing from object - it looks we don't need the actual // top shapes so this can be done here //FIXME calculate layer height based on the actual thickness of the layer: // If the layer is extruded with no bridging flow, support just the normal extrusions. - layer_new.height = slicing_params.soluble_interface ? + layer_new.height = slicing_params.soluble_interface || !object.print()->config().independent_support_layer_height ? // Align the interface layer with the object's layer height. layer.upper_layer->height : // Place a bridge flow interface layer or the normal flow interface layer over the top surface. @@ -1805,12 +2554,18 @@ static inline SupportGeneratorLayer* detect_bottom_contacts( // A top layer has been found, which is close to the new bottom layer. coordf_t diff = layer_new.print_z - top_contacts[top_idx]->print_z; assert(std::abs(diff) <= support_params.support_layer_height_min + EPSILON); - if (diff > 0.) { - // The top contact layer is below this layer. Make the bridging layer thinner to align with the existing top layer. - assert(diff < layer_new.height + EPSILON); - assert(layer_new.height - diff >= support_params.support_layer_height_min - EPSILON); - layer_new.print_z = top_contacts[top_idx]->print_z; - layer_new.height -= diff; + if (diff > 0.F) { + if (layer_new.height - diff > support_params.support_layer_height_min) { + // The top contact layer is below this layer. Make the bridging layer thinner to align with the existing top layer. + assert(diff < layer_new.height + EPSILON); + assert(layer_new.height - diff >= support_params.support_layer_height_min - EPSILON); + layer_new.print_z = top_contacts[top_idx]->print_z; + layer_new.height -= diff; + } + else { + // BBS: The trimmed layer height is smaller than support_layer_height_min. Walk to the next top contact layer. + continue; + } } else { // The top contact layer is above this layer. One may either make this layer thicker or thinner. @@ -1938,12 +2693,12 @@ static inline std::pair project_support_to_grid(const Layer // Generate bottom contact layers supporting the top contact layers. // For a soluble interface material synchronize the layer heights with the object, // otherwise set the layer height to a bridging flow of a support interface nozzle. -SupportGeneratorLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_layer_support_areas( - const PrintObject &object, const SupportGeneratorLayersPtr &top_contacts, std::vector &buildplate_covered, - SupportGeneratorLayerStorage &layer_storage, std::vector &layer_support_areas) const +PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_layer_support_areas( + const PrintObject &object, const MyLayersPtr &top_contacts, std::vector &buildplate_covered, + MyLayerStorage &layer_storage, std::vector &layer_support_areas) const { if (top_contacts.empty()) - return SupportGeneratorLayersPtr(); + return MyLayersPtr(); #ifdef SLIC3R_DEBUG static size_t s_iRun = 0; @@ -1960,7 +2715,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_ // find object top surfaces // we'll use them to clip our support and detect where does it stick - SupportGeneratorLayersPtr bottom_contacts; + MyLayersPtr bottom_contacts; // There is some support to be built, if there are non-empty top surfaces detected. // Sum of unsupported contact areas above the current layer.print_z. @@ -1979,7 +2734,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_ Polygons enforcers_new; #endif // SLIC3R_DEBUG for (; contact_idx >= 0 && top_contacts[contact_idx]->print_z > layer.print_z - EPSILON; -- contact_idx) { - SupportGeneratorLayer &top_contact = *top_contacts[contact_idx]; + MyLayer &top_contact = *top_contacts[contact_idx]; #ifndef SLIC3R_DEBUG Polygons polygons_new; Polygons enforcers_new; @@ -2021,7 +2776,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_ #endif // SLIC3R_DEBUG ] { // Find the bottom contact layers above the top surfaces of this layer. - SupportGeneratorLayer *layer_new = detect_bottom_contacts( + MyLayer *layer_new = detect_bottom_contacts( m_slicing_params, m_support_params, object, layer, top_contacts, contact_idx, layer_storage, layer_support_areas, overhangs_for_bottom_contacts #ifdef SLIC3R_DEBUG , iRun, polygons_new @@ -2080,21 +2835,64 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_ return bottom_contacts; } +template +IndexType idx_higher_or_equal(const std::vector& vec, IndexType idx, FN_HIGHER_EQUAL fn_higher_equal) +{ + return Layer::idx_higher_or_equal(vec.begin(), vec.end(), idx, fn_higher_equal); +} + +// FN_LOWER_EQUAL: the provided object pointer has a Z value <= of an internal threshold. +// Find the first item with Z value <= of an internal threshold of fn_lower_equal. +// If no vec item with Z value <= of an internal threshold of fn_lower_equal is found, return -1. +// If the initial idx is < -1, then use binary search. +// Otherwise search linearly downwards. +template +int idx_lower_or_equal(IT begin, IT end, int idx, FN_LOWER_EQUAL fn_lower_equal) +{ + auto size = int(end - begin); + if (size == 0) { + idx = -1; + } else if (idx < -1) { + // First of the batch of layers per thread pool invocation. Use binary search. + int idx_low = 0; + int idx_high = std::max(0, size - 1); + while (idx_low + 1 < idx_high) { + int idx_mid = (idx_low + idx_high) / 2; + if (fn_lower_equal(begin[idx_mid])) + idx_low = idx_mid; + else + idx_high = idx_mid; + } + idx = fn_lower_equal(begin[idx_high]) ? idx_high : + (fn_lower_equal(begin[idx_low ]) ? idx_low : -1); + } else { + // For the other layers of this batch of layers, search incrementally, which is cheaper than the binary search. + while (idx >= 0 && ! fn_lower_equal(begin[idx])) + -- idx; + } + return idx; +} +template +int idx_lower_or_equal(const std::vector &vec, int idx, FN_LOWER_EQUAL fn_lower_equal) +{ + return idx_lower_or_equal(vec.begin(), vec.end(), idx, fn_lower_equal); +} + // Trim the top_contacts layers with the bottom_contacts layers if they overlap, so there would not be enough vertical space for both of them. void PrintObjectSupportMaterial::trim_top_contacts_by_bottom_contacts( - const PrintObject &object, const SupportGeneratorLayersPtr &bottom_contacts, SupportGeneratorLayersPtr &top_contacts) const + const PrintObject &object, const MyLayersPtr &bottom_contacts, MyLayersPtr &top_contacts) const { tbb::parallel_for(tbb::blocked_range(0, int(top_contacts.size())), [&bottom_contacts, &top_contacts](const tbb::blocked_range& range) { int idx_bottom_overlapping_first = -2; // For all top contact layers, counting downwards due to the way idx_higher_or_equal caches the last index to avoid repeated binary search. for (int idx_top = range.end() - 1; idx_top >= range.begin(); -- idx_top) { - SupportGeneratorLayer &layer_top = *top_contacts[idx_top]; + MyLayer &layer_top = *top_contacts[idx_top]; // Find the first bottom layer overlapping with layer_top. - idx_bottom_overlapping_first = idx_lower_or_equal(bottom_contacts, idx_bottom_overlapping_first, [&layer_top](const SupportGeneratorLayer *layer_bottom){ return layer_bottom->bottom_print_z() - EPSILON <= layer_top.bottom_z; }); + idx_bottom_overlapping_first = idx_lower_or_equal(bottom_contacts, idx_bottom_overlapping_first, [&layer_top](const MyLayer *layer_bottom){ return layer_bottom->bottom_print_z() - EPSILON <= layer_top.bottom_z; }); // For all top contact layers overlapping with the thick bottom contact layer: for (int idx_bottom_overlapping = idx_bottom_overlapping_first; idx_bottom_overlapping >= 0; -- idx_bottom_overlapping) { - const SupportGeneratorLayer &layer_bottom = *bottom_contacts[idx_bottom_overlapping]; + const MyLayer &layer_bottom = *bottom_contacts[idx_bottom_overlapping]; assert(layer_bottom.bottom_print_z() - EPSILON <= layer_top.bottom_z); if (layer_top.print_z < layer_bottom.print_z + EPSILON) { // Layers overlap. Trim layer_top with layer_bottom. @@ -2106,16 +2904,16 @@ void PrintObjectSupportMaterial::trim_top_contacts_by_bottom_contacts( }); } -SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_support_layers( +PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_support_layers( const PrintObject &object, - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayerStorage &layer_storage) const + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + MyLayerStorage &layer_storage) const { - SupportGeneratorLayersPtr intermediate_layers; + MyLayersPtr intermediate_layers; // Collect and sort the extremes (bottoms of the top contacts and tops of the bottom contacts). - SupportGeneratorLayersPtr extremes; + MyLayersPtr extremes; extremes.reserve(top_contacts.size() + bottom_contacts.size()); for (size_t i = 0; i < top_contacts.size(); ++ i) // Bottoms of the top contact layers. In case of non-soluble supports, @@ -2127,18 +2925,18 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp if (extremes.empty()) return intermediate_layers; - auto layer_extreme_lower = [](const SupportGeneratorLayer *l1, const SupportGeneratorLayer *l2) { + auto layer_extreme_lower = [](const MyLayer *l1, const MyLayer *l2) { coordf_t z1 = l1->extreme_z(); coordf_t z2 = l2->extreme_z(); // If the layers are aligned, return the top contact surface first. - return z1 < z2 || (z1 == z2 && l1->layer_type == SupporLayerType::TopContact && l2->layer_type == SupporLayerType::BottomContact); + return z1 < z2 || (z1 == z2 && l1->layer_type == PrintObjectSupportMaterial::sltTopContact && l2->layer_type == PrintObjectSupportMaterial::sltBottomContact); }; std::sort(extremes.begin(), extremes.end(), layer_extreme_lower); assert(extremes.empty() || (extremes.front()->extreme_z() > m_slicing_params.raft_interface_top_z - EPSILON && (m_slicing_params.raft_layers() == 1 || // only raft contact layer - extremes.front()->layer_type == SupporLayerType::TopContact || // first extreme is a top contact layer + extremes.front()->layer_type == sltTopContact || // first extreme is a top contact layer extremes.front()->extreme_z() > m_slicing_params.first_print_layer_height - EPSILON))); bool synchronize = this->synchronize_layers(); @@ -2150,32 +2948,32 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp extremes[i]->extreme_z() - extremes[i-1]->extreme_z() > m_support_params.support_layer_height_min - EPSILON); assert(extremes[i]->extreme_z() - extremes[i-1]->extreme_z() > 0. || extremes[i]->layer_type == extremes[i-1]->layer_type || - (extremes[i]->layer_type == SupporLayerType::BottomContact && extremes[i - 1]->layer_type == SupporLayerType::TopContact)); + (extremes[i]->layer_type == sltBottomContact && extremes[i - 1]->layer_type == sltTopContact)); } #endif // Generate intermediate layers. // The first intermediate layer is the same as the 1st layer if there is no raft, // or the bottom of the first intermediate layer is aligned with the bottom of the raft contact layer. - // Intermediate layers are always printed with a normal etrusion flow (non-bridging). + // Intermediate layers are always printed with a normal extrusion flow (non-bridging). size_t idx_layer_object = 0; size_t idx_extreme_first = 0; if (! extremes.empty() && std::abs(extremes.front()->extreme_z() - m_slicing_params.raft_interface_top_z) < EPSILON) { // This is a raft contact layer, its height has been decided in this->top_contact_layers(). // Ignore this layer when calculating the intermediate support layers. - assert(extremes.front()->layer_type == SupporLayerType::TopContact); + assert(extremes.front()->layer_type == sltTopContact); ++ idx_extreme_first; } for (size_t idx_extreme = idx_extreme_first; idx_extreme < extremes.size(); ++ idx_extreme) { - SupportGeneratorLayer *extr2 = extremes[idx_extreme]; + MyLayer *extr2 = extremes[idx_extreme]; coordf_t extr2z = extr2->extreme_z(); if (std::abs(extr2z - m_slicing_params.first_print_layer_height) < EPSILON) { // This is a bottom of a synchronized (or soluble) top contact layer, its height has been decided in this->top_contact_layers(). - assert(extr2->layer_type == SupporLayerType::TopContact); - assert(extr2->bottom_z == m_slicing_params.first_print_layer_height); + assert(extr2->layer_type == sltTopContact); + assert(std::abs(extr2->bottom_z - m_slicing_params.first_print_layer_height) < EPSILON); assert(extr2->print_z >= m_slicing_params.first_print_layer_height + m_support_params.support_layer_height_min - EPSILON); if (intermediate_layers.empty() || intermediate_layers.back()->print_z < m_slicing_params.first_print_layer_height) { - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::Intermediate); + MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); layer_new.bottom_z = 0.; layer_new.print_z = m_slicing_params.first_print_layer_height; layer_new.height = m_slicing_params.first_print_layer_height; @@ -2185,11 +2983,11 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp } assert(extr2z >= m_slicing_params.raft_interface_top_z + EPSILON); assert(extr2z >= m_slicing_params.first_print_layer_height + EPSILON); - SupportGeneratorLayer *extr1 = (idx_extreme == idx_extreme_first) ? nullptr : extremes[idx_extreme - 1]; + MyLayer *extr1 = (idx_extreme == idx_extreme_first) ? nullptr : extremes[idx_extreme - 1]; // Fuse a support layer firmly to the raft top interface (not to the raft contacts). coordf_t extr1z = (extr1 == nullptr) ? m_slicing_params.raft_interface_top_z : extr1->extreme_z(); assert(extr2z >= extr1z); - assert(extr2z > extr1z || (extr1 != nullptr && extr2->layer_type == SupporLayerType::BottomContact)); + assert(extr2z > extr1z || (extr1 != nullptr && extr2->layer_type == sltBottomContact)); if (std::abs(extr1z) < EPSILON) { // This layer interval starts with the 1st layer. Print the 1st layer using the prescribed 1st layer thickness. // assert(! m_slicing_params.has_raft()); RaftingEdition: unclear where the issue is: assert fails with 1-layer raft & base supports @@ -2197,7 +2995,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp // At this point only layers above first_print_layer_heigth + EPSILON are expected as the other cases were captured earlier. assert(extr2z >= m_slicing_params.first_print_layer_height + EPSILON); // Generate a new intermediate layer. - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::Intermediate); + MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); layer_new.bottom_z = 0.; layer_new.print_z = extr1z = m_slicing_params.first_print_layer_height; layer_new.height = extr1z; @@ -2217,7 +3015,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp ++ idx_layer_object; if (idx_layer_object == 0 && extr1z == m_slicing_params.raft_interface_top_z) { // Insert one base support layer below the object. - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::Intermediate); + MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); layer_new.print_z = m_slicing_params.object_print_z_min; layer_new.bottom_z = m_slicing_params.raft_interface_top_z; layer_new.height = layer_new.print_z - layer_new.bottom_z; @@ -2225,7 +3023,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp } // Emit all intermediate support layers synchronized with object layers up to extr2z. for (; idx_layer_object < object.layers().size() && object.layers()[idx_layer_object]->print_z < extr2z + EPSILON; ++ idx_layer_object) { - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::Intermediate); + MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); layer_new.print_z = object.layers()[idx_layer_object]->print_z; layer_new.height = object.layers()[idx_layer_object]->height; layer_new.bottom_z = (idx_layer_object > 0) ? object.layers()[idx_layer_object - 1]->print_z : (layer_new.print_z - layer_new.height); @@ -2237,13 +3035,13 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp size_t n_layers_extra = size_t(ceil(dist / m_slicing_params.max_suport_layer_height)); assert(n_layers_extra > 0); coordf_t step = dist / coordf_t(n_layers_extra); - if (extr1 != nullptr && extr1->layer_type == SupporLayerType::TopContact && + if (extr1 != nullptr && extr1->layer_type == sltTopContact && extr1->print_z + m_support_params.support_layer_height_min > extr1->bottom_z + step) { // The bottom extreme is a bottom of a top surface. Ensure that the gap // between the 1st intermediate layer print_z and extr1->print_z is not too small. assert(extr1->bottom_z + m_support_params.support_layer_height_min < extr1->print_z + EPSILON); // Generate the first intermediate layer. - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::Intermediate); + MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); layer_new.bottom_z = extr1->bottom_z; layer_new.print_z = extr1z = extr1->print_z; layer_new.height = extr1->height; @@ -2255,7 +3053,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp // Continue printing the other layers up to extr2z. step = dist / coordf_t(n_layers_extra); } - if (! m_slicing_params.soluble_interface && extr2->layer_type == SupporLayerType::TopContact) { + if (! m_slicing_params.soluble_interface && extr2->layer_type == sltTopContact) { // This is a top interface layer, which does not have a height assigned yet. Do it now. assert(extr2->height == 0.); assert(extr1z > m_slicing_params.first_print_layer_height - EPSILON); @@ -2267,7 +3065,7 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp coordf_t extr2z_large_steps = extr2z; // Take the largest allowed step in the Z axis until extr2z_large_steps is reached. for (size_t i = 0; i < n_layers_extra; ++ i) { - SupportGeneratorLayer &layer_new = layer_storage.allocate_unguarded(SupporLayerType::Intermediate); + MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); if (i + 1 == n_layers_extra) { // Last intermediate layer added. Align the last entered layer with extr2z_large_steps exactly. layer_new.bottom_z = (i == 0) ? extr1z : intermediate_layers.back()->print_z; @@ -2291,6 +3089,36 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp assert(top_contacts[i]->height > 0.); #endif /* _DEBUG */ +#if 0 // #ifdef SLIC3R_DEBUG + // check bounds + std::ofstream out; + out.open("./SVG/ns_bounds.txt"); + if (out.is_open()) { + if (!top_contacts.empty()) { + out << "### Top Contacts ###" << std::endl; + for (auto& t : top_contacts) { + out << t->print_z << std::endl; + } + } + if (!bottom_contacts.empty()) { + out << "### Bottome Contacts ###" << std::endl; + for (auto& b : bottom_contacts) { + out << b->print_z << std::endl; + } + } + if (!intermediate_layers.empty()) { + out << "### Intermediate Layers ###" << std::endl; + for (auto& i : intermediate_layers) { + out << i->print_z << std::endl; + } + } + out << "### Slice Layers ###" << std::endl; + for (size_t j = 0; j < object.layers().size(); ++j) { + out << object.layers()[j]->print_z << std::endl; + } + } +#endif /* SLIC3R_DEBUG */ + return intermediate_layers; } @@ -2298,9 +3126,9 @@ SupportGeneratorLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_supp // Also the bottom/top_contacts shall have a layer thickness assigned already. void PrintObjectSupportMaterial::generate_base_layers( const PrintObject &object, - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + MyLayersPtr &intermediate_layers, const std::vector &layer_support_areas) const { #ifdef SLIC3R_DEBUG @@ -2324,7 +3152,7 @@ void PrintObjectSupportMaterial::generate_base_layers( { BOOST_LOG_TRIVIAL(trace) << "Support generator - generate_base_layers - creating layer " << idx_intermediate << " of " << intermediate_layers.size(); - SupportGeneratorLayer &layer_intermediate = *intermediate_layers[idx_intermediate]; + MyLayer &layer_intermediate = *intermediate_layers[idx_intermediate]; // Layers must be sorted by print_z. assert(idx_intermediate == 0 || layer_intermediate.print_z >= intermediate_layers[idx_intermediate - 1]->print_z); @@ -2347,10 +3175,10 @@ void PrintObjectSupportMaterial::generate_base_layers( // 4) base.print_z > top.bottom_z && base.bottom_z < top.bottom_z -> Base overlaps with top.bottom_z. This must not happen. // 5) base.print_z <= top.print_z && base.bottom_z >= top.bottom_z -> Base is fully inside top. Trim base by top. idx_top_contact_above = idx_lower_or_equal(top_contacts, idx_top_contact_above, - [&layer_intermediate](const SupportGeneratorLayer *layer){ return layer->bottom_z <= layer_intermediate.print_z - EPSILON; }); + [&layer_intermediate](const MyLayer *layer){ return layer->bottom_z <= layer_intermediate.print_z - EPSILON; }); // Collect all the top_contact layer intersecting with this layer. for (int idx_top_contact_overlapping = idx_top_contact_above; idx_top_contact_overlapping >= 0; -- idx_top_contact_overlapping) { - SupportGeneratorLayer &layer_top_overlapping = *top_contacts[idx_top_contact_overlapping]; + MyLayer &layer_top_overlapping = *top_contacts[idx_top_contact_overlapping]; if (layer_top_overlapping.print_z < layer_intermediate.bottom_z + EPSILON) break; // Base must not overlap with top.bottom_z. @@ -2367,7 +3195,7 @@ void PrintObjectSupportMaterial::generate_base_layers( polygons_new = layer_support_areas.front(); double first_layer_z = object.layers().front()->print_z; for (int i = idx_top_contact_above + 1; i < int(top_contacts.size()); ++ i) { - SupportGeneratorLayer &contacts = *top_contacts[i]; + MyLayer &contacts = *top_contacts[i]; if (contacts.print_z > first_layer_z + EPSILON) break; assert(contacts.bottom_z > layer_intermediate.print_z - EPSILON); @@ -2384,10 +3212,10 @@ void PrintObjectSupportMaterial::generate_base_layers( // 4) base.print_z > bottom.print_z && base.bottom_z >= bottom.print_z -> Base overlaps with bottom.print_z. This must not happen. // 5) base.print_z <= bottom.print_z && base.bottom_z >= bottom.bottom_z -> Base is fully inside top. Trim base by top. idx_bottom_contact_overlapping = idx_lower_or_equal(bottom_contacts, idx_bottom_contact_overlapping, - [&layer_intermediate](const SupportGeneratorLayer *layer){ return layer->bottom_print_z() <= layer_intermediate.print_z - EPSILON; }); + [&layer_intermediate](const MyLayer *layer){ return layer->bottom_print_z() <= layer_intermediate.print_z - EPSILON; }); // Collect all the bottom_contacts layer intersecting with this layer. for (int i = idx_bottom_contact_overlapping; i >= 0; -- i) { - SupportGeneratorLayer &layer_bottom_overlapping = *bottom_contacts[i]; + MyLayer &layer_bottom_overlapping = *bottom_contacts[i]; if (layer_bottom_overlapping.print_z < layer_intermediate.bottom_print_z() + EPSILON) break; // Base must not overlap with bottom.top_z. @@ -2417,10 +3245,10 @@ void PrintObjectSupportMaterial::generate_base_layers( polygons_new, polygons_trimming, ApplySafetyOffset::Yes); // safety offset to merge the touching source polygons - layer_intermediate.layer_type = SupporLayerType::Base; + layer_intermediate.layer_type = sltBase; #if 0 - // coordf_t fillet_radius_scaled = scale_(m_object_config->support_material_spacing); + // coordf_t fillet_radius_scaled = scale_(m_object_config->support_base_pattern_spacing); // Fillet the base polygons and trim them again with the top, interface and contact layers. $base->{$i} = diff( offset2( @@ -2439,7 +3267,7 @@ void PrintObjectSupportMaterial::generate_base_layers( BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_base_layers() in parallel - end"; #ifdef SLIC3R_DEBUG - for (SupportGeneratorLayersPtr::const_iterator it = intermediate_layers.begin(); it != intermediate_layers.end(); ++it) + for (MyLayersPtr::const_iterator it = intermediate_layers.begin(); it != intermediate_layers.end(); ++it) ::Slic3r::SVG::export_expolygons( debug_out_path("support-intermediate-layers-untrimmed-%d-%lf.svg", iRun, (*it)->print_z), union_ex((*it)->polygons)); @@ -2451,7 +3279,7 @@ void PrintObjectSupportMaterial::generate_base_layers( void PrintObjectSupportMaterial::trim_support_layers_by_object( const PrintObject &object, - SupportGeneratorLayersPtr &support_layers, + MyLayersPtr &support_layers, const coordf_t gap_extra_above, const coordf_t gap_extra_below, const coordf_t gap_xy) const @@ -2460,10 +3288,10 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( // Collect non-empty layers to be processed in parallel. // This is a good idea as pulling a thread from a thread pool for an empty task is expensive. - SupportGeneratorLayersPtr nonempty_layers; + MyLayersPtr nonempty_layers; nonempty_layers.reserve(support_layers.size()); for (size_t idx_layer = 0; idx_layer < support_layers.size(); ++ idx_layer) { - SupportGeneratorLayer *support_layer = support_layers[idx_layer]; + MyLayer *support_layer = support_layers[idx_layer]; if (! support_layer->polygons.empty() && support_layer->print_z >= m_slicing_params.raft_contact_top_z + EPSILON) // Non-empty support layer and not a raft layer. nonempty_layers.push_back(support_layer); @@ -2475,13 +3303,27 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( tbb::blocked_range(0, nonempty_layers.size()), [this, &object, &nonempty_layers, gap_extra_above, gap_extra_below, gap_xy_scaled](const tbb::blocked_range& range) { size_t idx_object_layer_overlapping = size_t(-1); + + auto is_layers_overlap = [](const MyLayer& support_layer, const Layer& object_layer, coordf_t bridging_height = 0.f) -> bool { + if (std::abs(support_layer.print_z - object_layer.print_z) < EPSILON) + return true; + + coordf_t object_lh = bridging_height > EPSILON ? bridging_height : object_layer.height; + if (support_layer.print_z < object_layer.print_z && support_layer.print_z > object_layer.print_z - object_lh) + return true; + + if (support_layer.print_z > object_layer.print_z && support_layer.bottom_z < object_layer.print_z - EPSILON) + return true; + + return false; + }; for (size_t idx_layer = range.begin(); idx_layer < range.end(); ++ idx_layer) { - SupportGeneratorLayer &support_layer = *nonempty_layers[idx_layer]; + MyLayer &support_layer = *nonempty_layers[idx_layer]; // BOOST_LOG_TRIVIAL(trace) << "Support generator - trim_support_layers_by_object - trimmming non-empty layer " << idx_layer << " of " << nonempty_layers.size(); assert(! support_layer.polygons.empty() && support_layer.print_z >= m_slicing_params.raft_contact_top_z + EPSILON); // Find the overlapping object layers including the extra above / below gap. coordf_t z_threshold = support_layer.bottom_print_z() - gap_extra_below + EPSILON; - idx_object_layer_overlapping = idx_higher_or_equal( + idx_object_layer_overlapping = Layer::idx_higher_or_equal( object.layers().begin(), object.layers().end(), idx_object_layer_overlapping, [z_threshold](const Layer *layer){ return layer->print_z >= z_threshold; }); // Collect all the object layers intersecting with this layer. @@ -2491,7 +3333,16 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( const Layer &object_layer = *object.layers()[i]; if (object_layer.bottom_z() > support_layer.print_z + gap_extra_above - EPSILON) break; - polygons_append(polygons_trimming, offset(object_layer.lslices, gap_xy_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + + bool is_overlap = is_layers_overlap(support_layer, object_layer); + for (const ExPolygon& expoly : object_layer.lslices) { + // BBS + bool is_sharptail = !intersection_ex({ expoly }, object_layer.sharp_tails).empty(); + coordf_t trimming_offset = is_sharptail ? scale_(sharp_tail_xy_gap) : + is_overlap ? gap_xy_scaled : + scale_(no_overlap_xy_gap); + polygons_append(polygons_trimming, offset({ expoly }, trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + } } if (! m_slicing_params.soluble_interface && m_object_config->thick_bridges) { // Collect all bottom surfaces, which will be extruded with a bridging flow. @@ -2503,8 +3354,11 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( if (object_layer.print_z - bridging_height > support_layer.print_z + gap_extra_above - EPSILON) break; some_region_overlaps = true; + + bool is_overlap = is_layers_overlap(support_layer, object_layer, bridging_height); + coordf_t trimming_offset = is_overlap ? gap_xy_scaled : scale_(no_overlap_xy_gap); polygons_append(polygons_trimming, - offset(region->fill_surfaces.filter_by_type(stBottomBridge), gap_xy_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + offset(region->fill_surfaces.filter_by_type(stBottomBridge), trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); if (region->region().config().detect_overhang_wall.value) // Add bridging perimeters. SupportMaterialInternal::collect_bridging_perimeter_areas(region->perimeters, gap_xy_scaled, polygons_trimming); @@ -2513,6 +3367,7 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( break; } } + // $layer->slices contains the full shape of layer, thus including // perimeter's width. $support contains the full shape of support // material, thus including the width of its foremost extrusion. @@ -2523,6 +3378,1483 @@ void PrintObjectSupportMaterial::trim_support_layers_by_object( BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::trim_support_layers_by_object() in parallel - end"; } +PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::generate_raft_base( + const PrintObject &object, + const MyLayersPtr &top_contacts, + const MyLayersPtr &interface_layers, + const MyLayersPtr &base_interface_layers, + const MyLayersPtr &base_layers, + MyLayerStorage &layer_storage) const +{ + // If there is brim to be generated, calculate the trimming regions. + Polygons brim; + if (object.has_brim()) { + // Calculate the area covered by the brim. + const BrimType brim_type = object.config().brim_type; + const bool brim_outer = brim_type == btOuterOnly || brim_type == btOuterAndInner; + const bool brim_inner = brim_type == btInnerOnly || brim_type == btOuterAndInner; + // BBS: the pattern of raft and brim are the same, thus the brim can be serpated by support raft. + const auto brim_object_gap = scaled(object.config().brim_object_gap.value); + //const auto brim_object_gap = scaled(object.config().brim_object_gap.value + object.config().brim_width.value); + for (const ExPolygon &ex : object.layers().front()->lslices) { + if (brim_outer && brim_inner) + polygons_append(brim, offset(ex, brim_object_gap)); + else { + if (brim_outer) + polygons_append(brim, offset(ex.contour, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1)))); + else + brim.emplace_back(ex.contour); + if (brim_inner) { + Polygons holes = ex.holes; + polygons_reverse(holes); + holes = shrink(holes, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1))); + polygons_reverse(holes); + polygons_append(brim, std::move(holes)); + } else + polygons_append(brim, ex.holes); + } + } + brim = union_(brim); + } + + // How much to inflate the support columns to be stable. This also applies to the 1st layer, if no raft layers are to be printed. + const float inflate_factor_fine = float(scale_((m_slicing_params.raft_layers() > 1) ? 0.5 : EPSILON)); + const float inflate_factor_1st_layer = std::max(0.f, float(scale_(object.config().raft_first_layer_expansion)) - inflate_factor_fine); + MyLayer *contacts = top_contacts .empty() ? nullptr : top_contacts .front(); + MyLayer *interfaces = interface_layers .empty() ? nullptr : interface_layers .front(); + MyLayer *base_interfaces = base_interface_layers.empty() ? nullptr : base_interface_layers.front(); + MyLayer *columns_base = base_layers .empty() ? nullptr : base_layers .front(); + if (contacts != nullptr && contacts->print_z > std::max(m_slicing_params.first_print_layer_height, m_slicing_params.raft_contact_top_z) + EPSILON) + // This is not the raft contact layer. + contacts = nullptr; + if (interfaces != nullptr && interfaces->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) + // This is not the raft column base layer. + interfaces = nullptr; + if (base_interfaces != nullptr && base_interfaces->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) + // This is not the raft column base layer. + base_interfaces = nullptr; + if (columns_base != nullptr && columns_base->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) + // This is not the raft interface layer. + columns_base = nullptr; + + Polygons interface_polygons; + if (contacts != nullptr && ! contacts->polygons.empty()) + polygons_append(interface_polygons, expand(contacts->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + if (interfaces != nullptr && ! interfaces->polygons.empty()) + polygons_append(interface_polygons, expand(interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + if (base_interfaces != nullptr && ! base_interfaces->polygons.empty()) + polygons_append(interface_polygons, expand(base_interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + + // Output vector. + MyLayersPtr raft_layers; + + if (m_slicing_params.raft_layers() > 1) { + Polygons base; + Polygons columns; + if (columns_base != nullptr) { + base = columns_base->polygons; + columns = base; + if (! interface_polygons.empty()) + // Trim the 1st layer columns with the inflated interface polygons. + columns = diff(columns, interface_polygons); + } + if (! interface_polygons.empty()) { + // Merge the untrimmed columns base with the expanded raft interface, to be used for the support base and interface. + base = union_(base, interface_polygons); + } + // Do not add the raft contact layer, only add the raft layers below the contact layer. + // Insert the 1st layer. + { + MyLayer &new_layer = layer_allocate(layer_storage, (m_slicing_params.base_raft_layers > 0) ? sltRaftBase : sltRaftInterface); + raft_layers.push_back(&new_layer); + new_layer.print_z = m_slicing_params.first_print_layer_height; + new_layer.height = m_slicing_params.first_print_layer_height; + new_layer.bottom_z = 0.; + new_layer.polygons = inflate_factor_1st_layer > 0 ? expand(base, inflate_factor_1st_layer) : base; + } + // Insert the base layers. + for (size_t i = 1; i < m_slicing_params.base_raft_layers; ++ i) { + coordf_t print_z = raft_layers.back()->print_z; + MyLayer &new_layer = layer_allocate(layer_storage, sltRaftBase); + raft_layers.push_back(&new_layer); + new_layer.print_z = print_z + m_slicing_params.base_raft_layer_height; + new_layer.height = m_slicing_params.base_raft_layer_height; + new_layer.bottom_z = print_z; + new_layer.polygons = base; + } + // Insert the interface layers. + for (size_t i = 1; i < m_slicing_params.interface_raft_layers; ++ i) { + coordf_t print_z = raft_layers.back()->print_z; + MyLayer &new_layer = layer_allocate(layer_storage, sltRaftInterface); + raft_layers.push_back(&new_layer); + new_layer.print_z = print_z + m_slicing_params.interface_raft_layer_height; + new_layer.height = m_slicing_params.interface_raft_layer_height; + new_layer.bottom_z = print_z; + new_layer.polygons = interface_polygons; + //FIXME misusing contact_polygons for support columns. + new_layer.contact_polygons = std::make_unique(columns); + } + } else { + if (columns_base != nullptr) { + // Expand the bases of the support columns in the 1st layer. + Polygons &raft = columns_base->polygons; + Polygons trimming; + // BBS: if first layer of support is intersected with object island, it must have the same function as brim unless in nobrim mode. + if (object.has_brim()) + trimming = offset(m_object->layers().front()->lslices, (float)scale_(object.config().brim_object_gap.value), SUPPORT_SURFACES_OFFSET_PARAMETERS); + else + trimming = offset(m_object->layers().front()->lslices, (float)scale_(m_support_params.gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS); + if (inflate_factor_1st_layer > SCALED_EPSILON) { + // Inflate in multiple steps to avoid leaking of the support 1st layer through object walls. + auto nsteps = std::max(5, int(ceil(inflate_factor_1st_layer / m_support_params.first_layer_flow.scaled_width()))); + float step = inflate_factor_1st_layer / nsteps; + for (int i = 0; i < nsteps; ++ i) + raft = diff(expand(raft, step), trimming); + } else + raft = diff(raft, trimming); + if (! interface_polygons.empty()) + columns_base->polygons = diff(columns_base->polygons, interface_polygons); + } + if (! brim.empty()) { + if (columns_base) + columns_base->polygons = diff(columns_base->polygons, brim); + if (contacts) + contacts->polygons = diff(contacts->polygons, brim); + if (interfaces) + interfaces->polygons = diff(interfaces->polygons, brim); + if (base_interfaces) + base_interfaces->polygons = diff(base_interfaces->polygons, brim); + } + } + + return raft_layers; +} + +// Convert some of the intermediate layers into top/bottom interface layers as well as base interface layers. +std::pair PrintObjectSupportMaterial::generate_interface_layers( + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + MyLayersPtr &intermediate_layers, + MyLayerStorage &layer_storage) const +{ +// my $area_threshold = $self->interface_flow->scaled_spacing ** 2; + + std::pair base_and_interface_layers; + MyLayersPtr &interface_layers = base_and_interface_layers.first; + MyLayersPtr &base_interface_layers = base_and_interface_layers.second; + + // distinguish between interface and base interface layers + // Contact layer is considered an interface layer, therefore run the following block only if support_interface_top_layers > 1. + // Contact layer needs a base_interface layer, therefore run the following block if support_interface_top_layers > 0, has soluble support and extruders are different. + bool soluble_interface_non_soluble_base = + // Zero z-gap between the overhangs and the support interface. + m_slicing_params.soluble_interface && + // Interface extruder soluble. + m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && + // Base extruder: Either "print with active extruder" not soluble. + (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); + bool snug_supports = m_object_config->support_style.value == smsSnug; + // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion + bool differnt_support_interface_filament = m_object_config->support_interface_filament.value != m_object_config->support_filament.value; + int num_base_interface_layers_top = differnt_support_interface_filament ? 1 : 0; + int num_base_interface_layers_bottom = differnt_support_interface_filament ? 1 : 0; + int num_interface_layers_top = m_object_config->support_interface_top_layers + num_base_interface_layers_top; + int num_interface_layers_bottom = m_object_config->support_interface_bottom_layers + num_base_interface_layers_bottom; + if (num_interface_layers_bottom < 0) + num_interface_layers_bottom = num_interface_layers_top; + + if (! intermediate_layers.empty() && (num_interface_layers_top > 1 || num_interface_layers_bottom > 1)) { + // For all intermediate layers, collect top contact surfaces, which are not further than support_interface_top_layers. + BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - start"; + // Since the intermediate layer index starts at zero the number of interface layer needs to be reduced by 1. + -- num_interface_layers_top; + -- num_interface_layers_bottom; + int num_interface_layers_only_top = num_interface_layers_top - num_base_interface_layers_top; + int num_interface_layers_only_bottom = num_interface_layers_bottom - num_base_interface_layers_bottom; + interface_layers.assign(intermediate_layers.size(), nullptr); + if (num_base_interface_layers_top || num_base_interface_layers_bottom) + base_interface_layers.assign(intermediate_layers.size(), nullptr); + auto smoothing_distance = m_support_params.support_material_interface_flow.scaled_spacing() * 1.5; + auto minimum_island_radius = m_support_params.support_material_interface_flow.scaled_spacing() / m_support_params.interface_density; + auto closing_distance = smoothing_distance; // scaled(m_object_config->support_closing_radius.value); + tbb::spin_mutex layer_storage_mutex; + // Insert a new layer into base_interface_layers, if intersection with base exists. + auto insert_layer = [&layer_storage, &layer_storage_mutex, snug_supports, closing_distance, smoothing_distance, minimum_island_radius]( + MyLayer &intermediate_layer, Polygons &bottom, Polygons &&top, const Polygons *subtract, SupporLayerType type) -> MyLayer* { + assert(! bottom.empty() || ! top.empty()); + // Merge top into bottom, unite them with a safety offset. + append(bottom, std::move(top)); + // Merge top / bottom interfaces. For snug supports, merge using closing distance and regularize (close concave corners). + bottom = intersection( + snug_supports ? + smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : + union_safety_offset(std::move(bottom)), + intermediate_layer.polygons); + if (! bottom.empty()) { + //FIXME Remove non-printable tiny islands, let them be printed using the base support. + //bottom = opening(std::move(bottom), minimum_island_radius); + if (! bottom.empty()) { + MyLayer &layer_new = layer_allocate(layer_storage, layer_storage_mutex, type); + layer_new.polygons = std::move(bottom); + layer_new.print_z = intermediate_layer.print_z; + layer_new.bottom_z = intermediate_layer.bottom_z; + layer_new.height = intermediate_layer.height; + layer_new.bridging = intermediate_layer.bridging; + // Subtract the interface from the base regions. + intermediate_layer.polygons = diff(intermediate_layer.polygons, layer_new.polygons); + if (subtract) + // Trim the base interface layer with the interface layer. + layer_new.polygons = diff(std::move(layer_new.polygons), *subtract); + //FIXME filter layer_new.polygons islands by a minimum area? + // $interface_area = [ grep abs($_->area) >= $area_threshold, @$interface_area ]; + return &layer_new; + } + } + return nullptr; + }; + tbb::parallel_for(tbb::blocked_range(0, int(intermediate_layers.size())), + [&bottom_contacts, &top_contacts, &intermediate_layers, &insert_layer, + num_interface_layers_top, num_interface_layers_bottom, num_base_interface_layers_top, num_base_interface_layers_bottom, num_interface_layers_only_top, num_interface_layers_only_bottom, + snug_supports, &interface_layers, &base_interface_layers](const tbb::blocked_range& range) { + // Gather the top / bottom contact layers intersecting with num_interface_layers resp. num_interface_layers_only intermediate layers above / below + // this intermediate layer. + // Index of the first top contact layer intersecting the current intermediate layer. + auto idx_top_contact_first = -1; + // Index of the first bottom contact layer intersecting the current intermediate layer. + auto idx_bottom_contact_first = -1; + auto num_intermediate = int(intermediate_layers.size()); + for (int idx_intermediate_layer = range.begin(); idx_intermediate_layer < range.end(); ++ idx_intermediate_layer) { + MyLayer &intermediate_layer = *intermediate_layers[idx_intermediate_layer]; + Polygons polygons_top_contact_projected_interface; + Polygons polygons_top_contact_projected_base; + Polygons polygons_bottom_contact_projected_interface; + Polygons polygons_bottom_contact_projected_base; + if (num_interface_layers_top > 0) { + // Top Z coordinate of a slab, over which we are collecting the top / bottom contact surfaces + coordf_t top_z = intermediate_layers[std::min(num_intermediate - 1, idx_intermediate_layer + num_interface_layers_top - 1)]->print_z; + coordf_t top_inteface_z = std::numeric_limits::max(); + if (num_base_interface_layers_top > 0) + // Some top base interface layers will be generated. + top_inteface_z = num_interface_layers_only_top == 0 ? + // Only base interface layers to generate. + - std::numeric_limits::max() : + intermediate_layers[std::min(num_intermediate - 1, idx_intermediate_layer + num_interface_layers_only_top - 1)]->print_z; + // Move idx_top_contact_first up until above the current print_z. + idx_top_contact_first = idx_higher_or_equal(top_contacts, idx_top_contact_first, [&intermediate_layer](const MyLayer *layer){ return layer->print_z >= intermediate_layer.print_z; }); // - EPSILON + // Collect the top contact areas above this intermediate layer, below top_z. + for (int idx_top_contact = idx_top_contact_first; idx_top_contact < int(top_contacts.size()); ++ idx_top_contact) { + const MyLayer &top_contact_layer = *top_contacts[idx_top_contact]; + //FIXME maybe this adds one interface layer in excess? + if (top_contact_layer.bottom_z - EPSILON > top_z) + break; + polygons_append(top_contact_layer.bottom_z - EPSILON > top_inteface_z ? polygons_top_contact_projected_base : polygons_top_contact_projected_interface, + // For snug supports, project the overhang polygons covering the whole overhang, so that they will merge without a gap with support polygons of the other layers. + // For grid supports, merging of support regions will be performed by the projection into grid. + snug_supports ? *top_contact_layer.overhang_polygons : top_contact_layer.polygons); + } + } + if (num_interface_layers_bottom > 0) { + // Bottom Z coordinate of a slab, over which we are collecting the top / bottom contact surfaces + coordf_t bottom_z = intermediate_layers[std::max(0, idx_intermediate_layer - num_interface_layers_bottom + 1)]->bottom_z; + coordf_t bottom_interface_z = - std::numeric_limits::max(); + if (num_base_interface_layers_bottom > 0) + // Some bottom base interface layers will be generated. + bottom_interface_z = num_interface_layers_only_bottom == 0 ? + // Only base interface layers to generate. + std::numeric_limits::max() : + intermediate_layers[std::max(0, idx_intermediate_layer - num_interface_layers_only_bottom)]->bottom_z; + // Move idx_bottom_contact_first up until touching bottom_z. + idx_bottom_contact_first = idx_higher_or_equal(bottom_contacts, idx_bottom_contact_first, [bottom_z](const MyLayer *layer){ return layer->print_z >= bottom_z - EPSILON; }); + // Collect the top contact areas above this intermediate layer, below top_z. + for (int idx_bottom_contact = idx_bottom_contact_first; idx_bottom_contact < int(bottom_contacts.size()); ++ idx_bottom_contact) { + const MyLayer &bottom_contact_layer = *bottom_contacts[idx_bottom_contact]; + if (bottom_contact_layer.print_z - EPSILON > intermediate_layer.bottom_z) + break; + polygons_append(bottom_contact_layer.print_z - EPSILON > bottom_interface_z ? polygons_bottom_contact_projected_interface : polygons_bottom_contact_projected_base, bottom_contact_layer.polygons); + } + } + MyLayer *interface_layer = nullptr; + if (! polygons_bottom_contact_projected_interface.empty() || ! polygons_top_contact_projected_interface.empty()) { + interface_layer = insert_layer( + intermediate_layer, polygons_bottom_contact_projected_interface, std::move(polygons_top_contact_projected_interface), nullptr, + polygons_top_contact_projected_interface.empty() ? sltBottomInterface : sltTopInterface); + interface_layers[idx_intermediate_layer] = interface_layer; + } + if (! polygons_bottom_contact_projected_base.empty() || ! polygons_top_contact_projected_base.empty()) + base_interface_layers[idx_intermediate_layer] = insert_layer( + intermediate_layer, polygons_bottom_contact_projected_base, std::move(polygons_top_contact_projected_base), + interface_layer ? &interface_layer->polygons : nullptr, sltBase); + } + }); + + // Compress contact_out, remove the nullptr items. + remove_nulls(interface_layers); + remove_nulls(base_interface_layers); + BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - end"; + } + + return base_and_interface_layers; +} + +static inline void fill_expolygon_generate_paths( + ExtrusionEntitiesPtr &dst, + ExPolygon &&expolygon, + Fill *filler, + const FillParams &fill_params, + ExtrusionRole role, + const Flow &flow) +{ + Surface surface(stInternal, std::move(expolygon)); + Polylines polylines; + try { + polylines = filler->fill_surface(&surface, fill_params); + } catch (InfillFailedException &) { + } + extrusion_entities_append_paths( + dst, + std::move(polylines), + role, + flow.mm3_per_mm(), flow.width(), flow.height()); +} + +static inline void fill_expolygons_generate_paths( + ExtrusionEntitiesPtr &dst, + ExPolygons &&expolygons, + Fill *filler, + const FillParams &fill_params, + ExtrusionRole role, + const Flow &flow) +{ + for (ExPolygon &expoly : expolygons) + fill_expolygon_generate_paths(dst, std::move(expoly), filler, fill_params, role, flow); +} + +static inline void fill_expolygons_generate_paths( + ExtrusionEntitiesPtr &dst, + ExPolygons &&expolygons, + Fill *filler, + float density, + ExtrusionRole role, + const Flow &flow) +{ + FillParams fill_params; + fill_params.density = density; + fill_params.dont_adjust = true; + fill_expolygons_generate_paths(dst, std::move(expolygons), filler, fill_params, role, flow); +} + +static inline void fill_expolygons_with_sheath_generate_paths( + ExtrusionEntitiesPtr &dst, + const Polygons &polygons, + Fill *filler, + float density, + ExtrusionRole role, + const Flow &flow, + bool with_sheath, + bool no_sort) +{ + if (polygons.empty()) + return; + + if (! with_sheath) { + fill_expolygons_generate_paths(dst, closing_ex(polygons, float(SCALED_EPSILON)), filler, density, role, flow); + return; + } + + FillParams fill_params; + fill_params.density = density; + fill_params.dont_adjust = true; + + double spacing = flow.scaled_spacing(); + // Clip the sheath path to avoid the extruder to get exactly on the first point of the loop. + double clip_length = spacing * 0.15; + + for (ExPolygon &expoly : closing_ex(polygons, float(SCALED_EPSILON), float(SCALED_EPSILON + 0.5*flow.scaled_width()))) { + // Don't reorder the skirt and its infills. + std::unique_ptr eec; + if (no_sort) { + eec = std::make_unique(); + eec->no_sort = true; + } + ExtrusionEntitiesPtr &out = no_sort ? eec->entities : dst; + // Draw the perimeters. + Polylines polylines; + polylines.reserve(expoly.holes.size() + 1); + for (size_t i = 0; i <= expoly.holes.size(); ++ i) { + Polyline pl(i == 0 ? expoly.contour.points : expoly.holes[i - 1].points); + pl.points.emplace_back(pl.points.front()); + pl.clip_end(clip_length); + polylines.emplace_back(std::move(pl)); + } + extrusion_entities_append_paths(out, polylines, erSupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height()); + // Fill in the rest. + fill_expolygons_generate_paths(out, offset_ex(expoly, float(-0.4 * spacing)), filler, fill_params, role, flow); + if (no_sort && ! eec->empty()) + dst.emplace_back(eec.release()); + } +} + +// Support layers, partially processed. +struct MyLayerExtruded +{ + MyLayerExtruded& operator=(MyLayerExtruded &&rhs) { + this->layer = rhs.layer; + this->extrusions = std::move(rhs.extrusions); + m_polygons_to_extrude = std::move(rhs.m_polygons_to_extrude); + rhs.layer = nullptr; + return *this; + } + + bool empty() const { + return layer == nullptr || layer->polygons.empty(); + } + + void set_polygons_to_extrude(Polygons &&polygons) { + if (m_polygons_to_extrude == nullptr) + m_polygons_to_extrude = std::make_unique(std::move(polygons)); + else + *m_polygons_to_extrude = std::move(polygons); + } + Polygons& polygons_to_extrude() { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } + const Polygons& polygons_to_extrude() const { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } + + bool could_merge(const MyLayerExtruded &other) const { + return ! this->empty() && ! other.empty() && + std::abs(this->layer->height - other.layer->height) < EPSILON && + this->layer->bridging == other.layer->bridging; + } + + // Merge regions, perform boolean union over the merged polygons. + void merge(MyLayerExtruded &&other) { + assert(this->could_merge(other)); + // 1) Merge the rest polygons to extrude, if there are any. + if (other.m_polygons_to_extrude != nullptr) { + if (m_polygons_to_extrude == nullptr) { + // This layer has no extrusions generated yet, if it has no m_polygons_to_extrude (its area to extrude was not reduced yet). + assert(this->extrusions.empty()); + m_polygons_to_extrude = std::make_unique(this->layer->polygons); + } + Slic3r::polygons_append(*m_polygons_to_extrude, std::move(*other.m_polygons_to_extrude)); + *m_polygons_to_extrude = union_safety_offset(*m_polygons_to_extrude); + other.m_polygons_to_extrude.reset(); + } else if (m_polygons_to_extrude != nullptr) { + assert(other.m_polygons_to_extrude == nullptr); + // The other layer has no extrusions generated yet, if it has no m_polygons_to_extrude (its area to extrude was not reduced yet). + assert(other.extrusions.empty()); + Slic3r::polygons_append(*m_polygons_to_extrude, other.layer->polygons); + *m_polygons_to_extrude = union_safety_offset(*m_polygons_to_extrude); + } + // 2) Merge the extrusions. + this->extrusions.insert(this->extrusions.end(), other.extrusions.begin(), other.extrusions.end()); + other.extrusions.clear(); + // 3) Merge the infill polygons. + Slic3r::polygons_append(this->layer->polygons, std::move(other.layer->polygons)); + this->layer->polygons = union_safety_offset(this->layer->polygons); + other.layer->polygons.clear(); + } + + void polygons_append(Polygons &dst) const { + if (layer != NULL && ! layer->polygons.empty()) + Slic3r::polygons_append(dst, layer->polygons); + } + + // The source layer. It carries the height and extrusion type (bridging / non bridging, extrusion height). + PrintObjectSupportMaterial::MyLayer *layer { nullptr }; + // Collect extrusions. They will be exported sorted by the bottom height. + ExtrusionEntitiesPtr extrusions; + +private: + // In case the extrusions are non-empty, m_polygons_to_extrude may contain the rest areas yet to be filled by additional support. + // This is useful mainly for the loop interfaces, which are generated before the zig-zag infills. + std::unique_ptr m_polygons_to_extrude; +}; + +typedef std::vector MyLayerExtrudedPtrs; + +struct LoopInterfaceProcessor +{ + LoopInterfaceProcessor(coordf_t circle_r) : + n_contact_loops(0), + circle_radius(circle_r), + circle_distance(circle_r * 3.) + { + // Shape of the top contact area. + circle.points.reserve(6); + for (size_t i = 0; i < 6; ++ i) { + double angle = double(i) * M_PI / 3.; + circle.points.push_back(Point(circle_radius * cos(angle), circle_radius * sin(angle))); + } + } + + // Generate loop contacts at the top_contact_layer, + // trim the top_contact_layer->polygons with the areas covered by the loops. + void generate(MyLayerExtruded &top_contact_layer, const Flow &interface_flow_src) const; + + int n_contact_loops; + coordf_t circle_radius; + coordf_t circle_distance; + Polygon circle; +}; + +void LoopInterfaceProcessor::generate(MyLayerExtruded &top_contact_layer, const Flow &interface_flow_src) const +{ + if (n_contact_loops == 0 || top_contact_layer.empty()) + return; + + Flow flow = interface_flow_src.with_height(top_contact_layer.layer->height); + + Polygons overhang_polygons; + if (top_contact_layer.layer->overhang_polygons != nullptr) + overhang_polygons = std::move(*top_contact_layer.layer->overhang_polygons); + + // Generate the outermost loop. + // Find centerline of the external loop (or any other kind of extrusions should the loop be skipped) + ExPolygons top_contact_expolygons = offset_ex(union_ex(top_contact_layer.layer->polygons), - 0.5f * flow.scaled_width()); + + // Grid size and bit shifts for quick and exact to/from grid coordinates manipulation. + coord_t circle_grid_resolution = 1; + coord_t circle_grid_powerof2 = 0; + { + // epsilon to account for rounding errors + coord_t circle_grid_resolution_non_powerof2 = coord_t(2. * circle_distance + 3.); + while (circle_grid_resolution < circle_grid_resolution_non_powerof2) { + circle_grid_resolution <<= 1; + ++ circle_grid_powerof2; + } + } + + struct PointAccessor { + const Point* operator()(const Point &pt) const { return &pt; } + }; + typedef ClosestPointInRadiusLookup ClosestPointLookupType; + + Polygons loops0; + { + // find centerline of the external loop of the contours + // Only consider the loops facing the overhang. + Polygons external_loops; + // Holes in the external loops. + Polygons circles; + Polygons overhang_with_margin = offset(union_ex(overhang_polygons), 0.5f * flow.scaled_width()); + for (ExPolygons::iterator it_contact_expoly = top_contact_expolygons.begin(); it_contact_expoly != top_contact_expolygons.end(); ++ it_contact_expoly) { + // Store the circle centers placed for an expolygon into a regular grid, hashed by the circle centers. + ClosestPointLookupType circle_centers_lookup(coord_t(circle_distance - SCALED_EPSILON)); + Points circle_centers; + Point center_last; + // For each contour of the expolygon, start with the outer contour, continue with the holes. + for (size_t i_contour = 0; i_contour <= it_contact_expoly->holes.size(); ++ i_contour) { + Polygon &contour = (i_contour == 0) ? it_contact_expoly->contour : it_contact_expoly->holes[i_contour - 1]; + const Point *seg_current_pt = nullptr; + coordf_t seg_current_t = 0.; + if (! intersection_pl(contour.split_at_first_point(), overhang_with_margin).empty()) { + // The contour is below the overhang at least to some extent. + //FIXME ideally one would place the circles below the overhang only. + // Walk around the contour and place circles so their centers are not closer than circle_distance from each other. + if (circle_centers.empty()) { + // Place the first circle. + seg_current_pt = &contour.points.front(); + seg_current_t = 0.; + center_last = *seg_current_pt; + circle_centers_lookup.insert(center_last); + circle_centers.push_back(center_last); + } + for (Points::const_iterator it = contour.points.begin() + 1; it != contour.points.end(); ++it) { + // Is it possible to place a circle on this segment? Is it not too close to any of the circles already placed on this contour? + const Point &p1 = *(it-1); + const Point &p2 = *it; + // Intersection of a ray (p1, p2) with a circle placed at center_last, with radius of circle_distance. + const Vec2d v_seg(coordf_t(p2(0)) - coordf_t(p1(0)), coordf_t(p2(1)) - coordf_t(p1(1))); + const Vec2d v_cntr(coordf_t(p1(0) - center_last(0)), coordf_t(p1(1) - center_last(1))); + coordf_t a = v_seg.squaredNorm(); + coordf_t b = 2. * v_seg.dot(v_cntr); + coordf_t c = v_cntr.squaredNorm() - circle_distance * circle_distance; + coordf_t disc = b * b - 4. * a * c; + if (disc > 0.) { + // The circle intersects a ray. Avoid the parts of the segment inside the circle. + coordf_t t1 = (-b - sqrt(disc)) / (2. * a); + coordf_t t2 = (-b + sqrt(disc)) / (2. * a); + coordf_t t0 = (seg_current_pt == &p1) ? seg_current_t : 0.; + // Take the lowest t in , excluding . + coordf_t t; + if (t0 <= t1) + t = t0; + else if (t2 <= 1.) + t = t2; + else { + // Try the following segment. + seg_current_pt = nullptr; + continue; + } + seg_current_pt = &p1; + seg_current_t = t; + center_last = Point(p1(0) + coord_t(v_seg(0) * t), p1(1) + coord_t(v_seg(1) * t)); + // It has been verified that the new point is far enough from center_last. + // Ensure, that it is far enough from all the centers. + std::pair circle_closest = circle_centers_lookup.find(center_last); + if (circle_closest.first != nullptr) { + -- it; + continue; + } + } else { + // All of the segment is outside the circle. Take the first point. + seg_current_pt = &p1; + seg_current_t = 0.; + center_last = p1; + } + // Place the first circle. + circle_centers_lookup.insert(center_last); + circle_centers.push_back(center_last); + } + external_loops.push_back(std::move(contour)); + for (const Point ¢er : circle_centers) { + circles.push_back(circle); + circles.back().translate(center); + } + } + } + } + // Apply a pattern to the external loops. + loops0 = diff(external_loops, circles); + } + + Polylines loop_lines; + { + // make more loops + Polygons loop_polygons = loops0; + for (int i = 1; i < n_contact_loops; ++ i) + polygons_append(loop_polygons, + opening( + loops0, + i * flow.scaled_spacing() + 0.5f * flow.scaled_spacing(), + 0.5f * flow.scaled_spacing())); + // Clip such loops to the side oriented towards the object. + // Collect split points, so they will be recognized after the clipping. + // At the split points the clipped pieces will be stitched back together. + loop_lines.reserve(loop_polygons.size()); + std::unordered_map map_split_points; + for (Polygons::const_iterator it = loop_polygons.begin(); it != loop_polygons.end(); ++ it) { + assert(map_split_points.find(it->first_point()) == map_split_points.end()); + map_split_points[it->first_point()] = -1; + loop_lines.push_back(it->split_at_first_point()); + } + loop_lines = intersection_pl(loop_lines, expand(overhang_polygons, scale_(SUPPORT_MATERIAL_MARGIN))); + // Because a closed loop has been split to a line, loop_lines may contain continuous segments split to 2 pieces. + // Try to connect them. + for (int i_line = 0; i_line < int(loop_lines.size()); ++ i_line) { + Polyline &polyline = loop_lines[i_line]; + auto it = map_split_points.find(polyline.first_point()); + if (it != map_split_points.end()) { + // This is a stitching point. + // If this assert triggers, multiple source polygons likely intersected at this point. + assert(it->second != -2); + if (it->second < 0) { + // First occurence. + it->second = i_line; + } else { + // Second occurence. Join the lines. + Polyline &polyline_1st = loop_lines[it->second]; + assert(polyline_1st.first_point() == it->first || polyline_1st.last_point() == it->first); + if (polyline_1st.first_point() == it->first) + polyline_1st.reverse(); + polyline_1st.append(std::move(polyline)); + it->second = -2; + } + continue; + } + it = map_split_points.find(polyline.last_point()); + if (it != map_split_points.end()) { + // This is a stitching point. + // If this assert triggers, multiple source polygons likely intersected at this point. + assert(it->second != -2); + if (it->second < 0) { + // First occurence. + it->second = i_line; + } else { + // Second occurence. Join the lines. + Polyline &polyline_1st = loop_lines[it->second]; + assert(polyline_1st.first_point() == it->first || polyline_1st.last_point() == it->first); + if (polyline_1st.first_point() == it->first) + polyline_1st.reverse(); + polyline.reverse(); + polyline_1st.append(std::move(polyline)); + it->second = -2; + } + } + } + // Remove empty lines. + remove_degenerate(loop_lines); + } + + // add the contact infill area to the interface area + // note that growing loops by $circle_radius ensures no tiny + // extrusions are left inside the circles; however it creates + // a very large gap between loops and contact_infill_polygons, so maybe another + // solution should be found to achieve both goals + // Store the trimmed polygons into a separate polygon set, so the original infill area remains intact for + // "modulate by layer thickness". + top_contact_layer.set_polygons_to_extrude(diff(top_contact_layer.layer->polygons, offset(loop_lines, float(circle_radius * 1.1)))); + + // Transform loops into ExtrusionPath objects. + extrusion_entities_append_paths( + top_contact_layer.extrusions, + std::move(loop_lines), + erSupportMaterialInterface, flow.mm3_per_mm(), flow.width(), flow.height()); +} + +#ifdef SLIC3R_DEBUG +static std::string dbg_index_to_color(int idx) +{ + if (idx < 0) + return "yellow"; + idx = idx % 3; + switch (idx) { + case 0: return "red"; + case 1: return "green"; + default: return "blue"; + } +} +#endif /* SLIC3R_DEBUG */ + +// When extruding a bottom interface layer over an object, the bottom interface layer is extruded in a thin air, therefore +// it is being extruded with a bridging flow to not shrink excessively (the die swell effect). +// Tiny extrusions are better avoided and it is always better to anchor the thread to an existing support structure if possible. +// Therefore the bottom interface spots are expanded a bit. The expanded regions may overlap with another bottom interface layers, +// leading to over extrusion, where they overlap. The over extrusion is better avoided as it often makes the interface layers +// to stick too firmly to the object. +// +// Modulate thickness (increase bottom_z) of extrusions_in_out generated for this_layer +// if they overlap with overlapping_layers, whose print_z is above this_layer.bottom_z() and below this_layer.print_z. +void modulate_extrusion_by_overlapping_layers( + // Extrusions generated for this_layer. + ExtrusionEntitiesPtr &extrusions_in_out, + const PrintObjectSupportMaterial::MyLayer &this_layer, + // Multiple layers overlapping with this_layer, sorted bottom up. + const PrintObjectSupportMaterial::MyLayersPtr &overlapping_layers) +{ + size_t n_overlapping_layers = overlapping_layers.size(); + if (n_overlapping_layers == 0 || extrusions_in_out.empty()) + // The extrusions do not overlap with any other extrusion. + return; + + // Get the initial extrusion parameters. + ExtrusionPath *extrusion_path_template = dynamic_cast(extrusions_in_out.front()); + assert(extrusion_path_template != nullptr); + ExtrusionRole extrusion_role = extrusion_path_template->role(); + float extrusion_width = extrusion_path_template->width; + + struct ExtrusionPathFragment + { + ExtrusionPathFragment() : mm3_per_mm(-1), width(-1), height(-1) {}; + ExtrusionPathFragment(double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height) {}; + + Polylines polylines; + double mm3_per_mm; + float width; + float height; + }; + + // Split the extrusions by the overlapping layers, reduce their extrusion rate. + // The last path_fragment is from this_layer. + std::vector path_fragments( + n_overlapping_layers + 1, + ExtrusionPathFragment(extrusion_path_template->mm3_per_mm, extrusion_path_template->width, extrusion_path_template->height)); + // Don't use it, it will be released. + extrusion_path_template = nullptr; + +#ifdef SLIC3R_DEBUG + static int iRun = 0; + ++ iRun; + BoundingBox bbox; + for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { + const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; + bbox.merge(get_extents(overlapping_layer.polygons)); + } + for (ExtrusionEntitiesPtr::const_iterator it = extrusions_in_out.begin(); it != extrusions_in_out.end(); ++ it) { + ExtrusionPath *path = dynamic_cast(*it); + assert(path != nullptr); + bbox.merge(get_extents(path->polyline)); + } + SVG svg(debug_out_path("support-fragments-%d-%lf.svg", iRun, this_layer.print_z).c_str(), bbox); + const float transparency = 0.5f; + // Filled polygons for the overlapping regions. + svg.draw(union_ex(this_layer.polygons), dbg_index_to_color(-1), transparency); + for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { + const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; + svg.draw(union_ex(overlapping_layer.polygons), dbg_index_to_color(int(i_overlapping_layer)), transparency); + } + // Contours of the overlapping regions. + svg.draw(to_polylines(this_layer.polygons), dbg_index_to_color(-1), scale_(0.2)); + for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { + const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; + svg.draw(to_polylines(overlapping_layer.polygons), dbg_index_to_color(int(i_overlapping_layer)), scale_(0.1)); + } + // Fill extrusion, the source. + for (ExtrusionEntitiesPtr::const_iterator it = extrusions_in_out.begin(); it != extrusions_in_out.end(); ++ it) { + ExtrusionPath *path = dynamic_cast(*it); + std::string color_name; + switch ((it - extrusions_in_out.begin()) % 9) { + case 0: color_name = "magenta"; break; + case 1: color_name = "deepskyblue"; break; + case 2: color_name = "coral"; break; + case 3: color_name = "goldenrod"; break; + case 4: color_name = "orange"; break; + case 5: color_name = "olivedrab"; break; + case 6: color_name = "blueviolet"; break; + case 7: color_name = "brown"; break; + default: color_name = "orchid"; break; + } + svg.draw(path->polyline, color_name, scale_(0.2)); + } +#endif /* SLIC3R_DEBUG */ + + // End points of the original paths. + std::vector> path_ends; + // Collect the paths of this_layer. + { + Polylines &polylines = path_fragments.back().polylines; + for (ExtrusionEntity *ee : extrusions_in_out) { + ExtrusionPath *path = dynamic_cast(ee); + assert(path != nullptr); + polylines.emplace_back(Polyline(std::move(path->polyline))); + path_ends.emplace_back(std::pair(polylines.back().points.front(), polylines.back().points.back())); + } + } + // Destroy the original extrusion paths, their polylines were moved to path_fragments already. + // This will be the destination for the new paths. + extrusions_in_out.clear(); + + // Fragment the path segments by overlapping layers. The overlapping layers are sorted by an increasing print_z. + // Trim by the highest overlapping layer first. + for (int i_overlapping_layer = int(n_overlapping_layers) - 1; i_overlapping_layer >= 0; -- i_overlapping_layer) { + const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; + ExtrusionPathFragment &frag = path_fragments[i_overlapping_layer]; + Polygons polygons_trimming = offset(union_ex(overlapping_layer.polygons), float(scale_(0.5*extrusion_width))); + frag.polylines = intersection_pl(path_fragments.back().polylines, polygons_trimming); + path_fragments.back().polylines = diff_pl(path_fragments.back().polylines, polygons_trimming); + // Adjust the extrusion parameters for a reduced layer height and a non-bridging flow (nozzle_dmr = -1, does not matter). + assert(this_layer.print_z > overlapping_layer.print_z); + frag.height = float(this_layer.print_z - overlapping_layer.print_z); + frag.mm3_per_mm = Flow(frag.width, frag.height, -1.f).mm3_per_mm(); +#ifdef SLIC3R_DEBUG + svg.draw(frag.polylines, dbg_index_to_color(i_overlapping_layer), scale_(0.1)); +#endif /* SLIC3R_DEBUG */ + } + +#ifdef SLIC3R_DEBUG + svg.draw(path_fragments.back().polylines, dbg_index_to_color(-1), scale_(0.1)); + svg.Close(); +#endif /* SLIC3R_DEBUG */ + + // Now chain the split segments using hashing and a nearly exact match, maintaining the order of segments. + // Create a single ExtrusionPath or ExtrusionEntityCollection per source ExtrusionPath. + // Map of fragment start/end points to a pair of + // Because a non-exact matching is used for the end points, a multi-map is used. + // As the clipper library may reverse the order of some clipped paths, store both ends into the map. + struct ExtrusionPathFragmentEnd + { + ExtrusionPathFragmentEnd(size_t alayer_idx, size_t apolyline_idx, bool ais_start) : + layer_idx(alayer_idx), polyline_idx(apolyline_idx), is_start(ais_start) {} + size_t layer_idx; + size_t polyline_idx; + bool is_start; + }; + class ExtrusionPathFragmentEndPointAccessor { + public: + ExtrusionPathFragmentEndPointAccessor(const std::vector &path_fragments) : m_path_fragments(path_fragments) {} + // Return an end point of a fragment, or nullptr if the fragment has been consumed already. + const Point* operator()(const ExtrusionPathFragmentEnd &fragment_end) const { + const Polyline &polyline = m_path_fragments[fragment_end.layer_idx].polylines[fragment_end.polyline_idx]; + return polyline.points.empty() ? nullptr : + (fragment_end.is_start ? &polyline.points.front() : &polyline.points.back()); + } + private: + ExtrusionPathFragmentEndPointAccessor& operator=(const ExtrusionPathFragmentEndPointAccessor&) { + return *this; + } + + const std::vector &m_path_fragments; + }; + const coord_t search_radius = 7; + ClosestPointInRadiusLookup map_fragment_starts( + search_radius, ExtrusionPathFragmentEndPointAccessor(path_fragments)); + for (size_t i_overlapping_layer = 0; i_overlapping_layer <= n_overlapping_layers; ++ i_overlapping_layer) { + const Polylines &polylines = path_fragments[i_overlapping_layer].polylines; + for (size_t i_polyline = 0; i_polyline < polylines.size(); ++ i_polyline) { + // Map a starting point of a polyline to a pair of + if (polylines[i_polyline].points.size() >= 2) { + map_fragment_starts.insert(ExtrusionPathFragmentEnd(i_overlapping_layer, i_polyline, true)); + map_fragment_starts.insert(ExtrusionPathFragmentEnd(i_overlapping_layer, i_polyline, false)); + } + } + } + + // For each source path: + for (size_t i_path = 0; i_path < path_ends.size(); ++ i_path) { + const Point &pt_start = path_ends[i_path].first; + const Point &pt_end = path_ends[i_path].second; + Point pt_current = pt_start; + // Find a chain of fragments with the original / reduced print height. + ExtrusionMultiPath multipath; + for (;;) { + // Find a closest end point to pt_current. + std::pair end_and_dist2 = map_fragment_starts.find(pt_current); + // There may be a bug in Clipper flipping the order of two last points in a fragment? + // assert(end_and_dist2.first != nullptr); + assert(end_and_dist2.first == nullptr || end_and_dist2.second < search_radius * search_radius); + if (end_and_dist2.first == nullptr) { + // New fragment connecting to pt_current was not found. + // Verify that the last point found is close to the original end point of the unfragmented path. + //const double d2 = (pt_end - pt_current).cast.squaredNorm(); + //assert(d2 < coordf_t(search_radius * search_radius)); + // End of the path. + break; + } + const ExtrusionPathFragmentEnd &fragment_end_min = *end_and_dist2.first; + // Fragment to consume. + ExtrusionPathFragment &frag = path_fragments[fragment_end_min.layer_idx]; + Polyline &frag_polyline = frag.polylines[fragment_end_min.polyline_idx]; + // Path to append the fragment to. + ExtrusionPath *path = multipath.paths.empty() ? nullptr : &multipath.paths.back(); + if (path != nullptr) { + // Verify whether the path is compatible with the current fragment. + assert(this_layer.layer_type == PrintObjectSupportMaterial::sltBottomContact || path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm); + if (path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm) { + path = nullptr; + } + // Merging with the previous path. This can only happen if the current layer was reduced by a base layer, which was split into a base and interface layer. + } + if (path == nullptr) { + // Allocate a new path. + multipath.paths.push_back(ExtrusionPath(extrusion_role, frag.mm3_per_mm, frag.width, frag.height)); + path = &multipath.paths.back(); + } + // The Clipper library may flip the order of the clipped polylines arbitrarily. + // Reverse the source polyline, if connecting to the end. + if (! fragment_end_min.is_start) + frag_polyline.reverse(); + // Enforce exact overlap of the end points of successive fragments. + assert(frag_polyline.points.front() == pt_current); + frag_polyline.points.front() = pt_current; + // Don't repeat the first point. + if (! path->polyline.points.empty()) + path->polyline.points.pop_back(); + // Consume the fragment's polyline, remove it from the input fragments, so it will be ignored the next time. + path->polyline.append(std::move(frag_polyline)); + frag_polyline.points.clear(); + pt_current = path->polyline.points.back(); + if (pt_current == pt_end) { + // End of the path. + break; + } + } + if (!multipath.paths.empty()) { + if (multipath.paths.size() == 1) { + // This path was not fragmented. + extrusions_in_out.push_back(new ExtrusionPath(std::move(multipath.paths.front()))); + } else { + // This path was fragmented. Copy the collection as a whole object, so the order inside the collection will not be changed + // during the chaining of extrusions_in_out. + extrusions_in_out.push_back(new ExtrusionMultiPath(std::move(multipath))); + } + } + } + // If there are any non-consumed fragments, add them separately. + //FIXME this shall not happen, if the Clipper works as expected and all paths split to fragments could be re-connected. + for (auto it_fragment = path_fragments.begin(); it_fragment != path_fragments.end(); ++ it_fragment) + extrusion_entities_append_paths(extrusions_in_out, std::move(it_fragment->polylines), extrusion_role, it_fragment->mm3_per_mm, it_fragment->width, it_fragment->height); +} + +void PrintObjectSupportMaterial::generate_toolpaths( + SupportLayerPtrs &support_layers, + const MyLayersPtr &raft_layers, + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + const MyLayersPtr &intermediate_layers, + const MyLayersPtr &interface_layers, + const MyLayersPtr &base_interface_layers) const +{ + // loop_interface_processor with a given circle radius. + LoopInterfaceProcessor loop_interface_processor(1.5 * m_support_params.support_material_interface_flow.scaled_width()); + loop_interface_processor.n_contact_loops = this->has_contact_loops() ? 1 : 0; + + std::vector angles { m_support_params.base_angle }; + if (m_object_config->support_base_pattern == smpRectilinearGrid) + angles.push_back(m_support_params.interface_angle); + + BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); + +// const coordf_t link_max_length_factor = 3.; + const coordf_t link_max_length_factor = 0.; + + float raft_angle_1st_layer = 0.f; + float raft_angle_base = 0.f; + float raft_angle_interface = 0.f; + if (m_slicing_params.base_raft_layers > 1) { + // There are all raft layer types (1st layer, base, interface & contact layers) available. + raft_angle_1st_layer = m_support_params.interface_angle; + raft_angle_base = m_support_params.base_angle; + raft_angle_interface = m_support_params.interface_angle; + } else if (m_slicing_params.base_raft_layers == 1 || m_slicing_params.interface_raft_layers > 1) { + // 1st layer, interface & contact layers available. + raft_angle_1st_layer = m_support_params.base_angle; + if (this->has_support()) + // Print 1st layer at 45 degrees from both the interface and base angles as both can land on the 1st layer. + raft_angle_1st_layer += 0.7854f; + raft_angle_interface = m_support_params.interface_angle; + } else if (m_slicing_params.interface_raft_layers == 1) { + // Only the contact raft layer is non-empty, which will be printed as the 1st layer. + assert(m_slicing_params.base_raft_layers == 0); + assert(m_slicing_params.interface_raft_layers == 1); + assert(m_slicing_params.raft_layers() == 1 && raft_layers.size() == 0); + } else { + // No raft. + assert(m_slicing_params.base_raft_layers == 0); + assert(m_slicing_params.interface_raft_layers == 0); + assert(m_slicing_params.raft_layers() == 0 && raft_layers.size() == 0); + } + + // Insert the raft base layers. + size_t n_raft_layers = size_t(std::max(0, int(m_slicing_params.raft_layers()) - 1)); + tbb::parallel_for(tbb::blocked_range(0, n_raft_layers), + [this, &support_layers, &raft_layers, + &bbox_object, raft_angle_1st_layer, raft_angle_base, raft_angle_interface, link_max_length_factor] + (const tbb::blocked_range& range) { + for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) + { + assert(support_layer_id < raft_layers.size()); + SupportLayer &support_layer = *support_layers[support_layer_id]; + assert(support_layer.support_fills.entities.empty()); + MyLayer &raft_layer = *raft_layers[support_layer_id]; + + std::unique_ptr filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.interface_fill_pattern)); + std::unique_ptr filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); + filler_interface->set_bounding_box(bbox_object); + filler_support->set_bounding_box(bbox_object); + + // Print the support base below the support columns, or the support base for the support columns plus the contacts. + if (support_layer_id > 0) { + const Polygons &to_infill_polygons = (support_layer_id < m_slicing_params.base_raft_layers) ? + raft_layer.polygons : + //FIXME misusing contact_polygons for support columns. + ((raft_layer.contact_polygons == nullptr) ? Polygons() : *raft_layer.contact_polygons); + if (! to_infill_polygons.empty()) { + assert(! raft_layer.bridging); + Flow flow(float(m_support_params.support_material_flow.width()), float(raft_layer.height), m_support_params.support_material_flow.nozzle_diameter()); + Fill * filler = filler_support.get(); + filler->angle = raft_angle_base; + filler->spacing = m_support_params.support_material_flow.spacing(); + filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.support_density)); + fill_expolygons_with_sheath_generate_paths( + // Destination + support_layer.support_fills.entities, + // Regions to fill + to_infill_polygons, + // Filler and its parameters + filler, float(m_support_params.support_density), + // Extrusion parameters + erSupportMaterial, flow, + m_support_params.with_sheath, false); + } + } + + Fill *filler = filler_interface.get(); + Flow flow = m_support_params.first_layer_flow; + float density = 0.f; + if (support_layer_id == 0) { + // Base flange. + filler->angle = raft_angle_1st_layer; + filler->spacing = m_support_params.first_layer_flow.spacing(); + density = float(m_object_config->raft_first_layer_density.value * 0.01); + } else if (support_layer_id >= m_slicing_params.base_raft_layers) { + filler->angle = raft_angle_interface; + // We don't use $base_flow->spacing because we need a constant spacing + // value that guarantees that all layers are correctly aligned. + filler->spacing = m_support_params.support_material_flow.spacing(); + assert(! raft_layer.bridging); + flow = Flow(float(m_support_params.support_material_interface_flow.width()), float(raft_layer.height), m_support_params.support_material_flow.nozzle_diameter()); + density = float(m_support_params.interface_density); + } else + continue; + filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); + fill_expolygons_with_sheath_generate_paths( + // Destination + support_layer.support_fills.entities, + // Regions to fill + raft_layer.polygons, + // Filler and its parameters + filler, density, + // Extrusion parameters + (support_layer_id < m_slicing_params.base_raft_layers) ? erSupportMaterial : erSupportMaterialInterface, flow, + // sheath at first layer + support_layer_id == 0, support_layer_id == 0); + } + }); + + struct LayerCacheItem { + LayerCacheItem(MyLayerExtruded *layer_extruded = nullptr) : layer_extruded(layer_extruded) {} + MyLayerExtruded *layer_extruded; + std::vector overlapping; + }; + struct LayerCache { + MyLayerExtruded bottom_contact_layer; + MyLayerExtruded top_contact_layer; + MyLayerExtruded base_layer; + MyLayerExtruded interface_layer; + MyLayerExtruded base_interface_layer; + boost::container::static_vector nonempty; + + void add_nonempty_and_sort() { + for (MyLayerExtruded *item : { &bottom_contact_layer, &top_contact_layer, &interface_layer, &base_interface_layer, &base_layer }) + if (! item->empty()) + this->nonempty.emplace_back(item); + // Sort the layers with the same print_z coordinate by their heights, thickest first. + std::stable_sort(this->nonempty.begin(), this->nonempty.end(), [](const LayerCacheItem &lc1, const LayerCacheItem &lc2) { return lc1.layer_extruded->layer->height > lc2.layer_extruded->layer->height; }); + } + }; + std::vector layer_caches(support_layers.size()); + + tbb::parallel_for(tbb::blocked_range(n_raft_layers, support_layers.size()), + [this, &support_layers, &bottom_contacts, &top_contacts, &intermediate_layers, &interface_layers, &base_interface_layers, &layer_caches, &loop_interface_processor, + &bbox_object, &angles, link_max_length_factor] + (const tbb::blocked_range& range) { + // Indices of the 1st layer in their respective container at the support layer height. + size_t idx_layer_bottom_contact = size_t(-1); + size_t idx_layer_top_contact = size_t(-1); + size_t idx_layer_intermediate = size_t(-1); + size_t idx_layer_interface = size_t(-1); + size_t idx_layer_base_interface = size_t(-1); + // BBS + const auto fill_type_first_layer = ipConcentric; + auto filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); + // Filler for the 1st layer interface, if different from filler_interface. + auto filler_first_layer_ptr = std::unique_ptr(range.begin() == 0 && m_support_params.contact_fill_pattern != fill_type_first_layer ? Fill::new_from_type(fill_type_first_layer) : nullptr); + // Pointer to the 1st layer interface filler. + auto filler_first_layer = filler_first_layer_ptr ? filler_first_layer_ptr.get() : filler_interface.get(); + // Filler for the base interface (to be used for soluble interface / non soluble base, to produce non soluble interface layer below soluble interface layer). + auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : + Fill::new_from_type(m_support_params.interface_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase)); + auto filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); + filler_interface->set_bounding_box(bbox_object); + if (filler_first_layer_ptr) + filler_first_layer_ptr->set_bounding_box(bbox_object); + if (filler_base_interface) + filler_base_interface->set_bounding_box(bbox_object); + filler_support->set_bounding_box(bbox_object); + for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) + { + SupportLayer &support_layer = *support_layers[support_layer_id]; + LayerCache &layer_cache = layer_caches[support_layer_id]; + float interface_angle_delta = m_object_config->support_style.value == smsSnug ? + (support_layer.interface_id() & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.) : + 0; + + // Find polygons with the same print_z. + MyLayerExtruded &bottom_contact_layer = layer_cache.bottom_contact_layer; + MyLayerExtruded &top_contact_layer = layer_cache.top_contact_layer; + MyLayerExtruded &base_layer = layer_cache.base_layer; + MyLayerExtruded &interface_layer = layer_cache.interface_layer; + MyLayerExtruded &base_interface_layer = layer_cache.base_interface_layer; + // Increment the layer indices to find a layer at support_layer.print_z. + { + auto fun = [&support_layer](const MyLayer *l){ return l->print_z >= support_layer.print_z - EPSILON; }; + idx_layer_bottom_contact = idx_higher_or_equal(bottom_contacts, idx_layer_bottom_contact, fun); + idx_layer_top_contact = idx_higher_or_equal(top_contacts, idx_layer_top_contact, fun); + idx_layer_intermediate = idx_higher_or_equal(intermediate_layers, idx_layer_intermediate, fun); + idx_layer_interface = idx_higher_or_equal(interface_layers, idx_layer_interface, fun); + idx_layer_base_interface = idx_higher_or_equal(base_interface_layers, idx_layer_base_interface,fun); + } + // Copy polygons from the layers. + if (idx_layer_bottom_contact < bottom_contacts.size() && bottom_contacts[idx_layer_bottom_contact]->print_z < support_layer.print_z + EPSILON) + bottom_contact_layer.layer = bottom_contacts[idx_layer_bottom_contact]; + if (idx_layer_top_contact < top_contacts.size() && top_contacts[idx_layer_top_contact]->print_z < support_layer.print_z + EPSILON) + top_contact_layer.layer = top_contacts[idx_layer_top_contact]; + if (idx_layer_interface < interface_layers.size() && interface_layers[idx_layer_interface]->print_z < support_layer.print_z + EPSILON) + interface_layer.layer = interface_layers[idx_layer_interface]; + if (idx_layer_base_interface < base_interface_layers.size() && base_interface_layers[idx_layer_base_interface]->print_z < support_layer.print_z + EPSILON) + base_interface_layer.layer = base_interface_layers[idx_layer_base_interface]; + if (idx_layer_intermediate < intermediate_layers.size() && intermediate_layers[idx_layer_intermediate]->print_z < support_layer.print_z + EPSILON) + base_layer.layer = intermediate_layers[idx_layer_intermediate]; + + if (m_object_config->support_interface_top_layers == 0) { + // If no top interface layers were requested, we treat the contact layer exactly as a generic base layer. + if (m_support_params.can_merge_support_regions) { + if (base_layer.could_merge(top_contact_layer)) + base_layer.merge(std::move(top_contact_layer)); + else if (base_layer.empty()) + base_layer = std::move(top_contact_layer); + } + } else { + loop_interface_processor.generate(top_contact_layer, m_support_params.support_material_interface_flow); + // If no loops are allowed, we treat the contact layer exactly as a generic interface layer. + // Merge interface_layer into top_contact_layer, as the top_contact_layer is not synchronized and therefore it will be used + // to trim other layers. + if (top_contact_layer.could_merge(interface_layer)) + top_contact_layer.merge(std::move(interface_layer)); + } + if ((m_object_config->support_interface_top_layers == 0 || m_object_config->support_interface_bottom_layers == 0) && m_support_params.can_merge_support_regions) { + if (base_layer.could_merge(bottom_contact_layer)) + base_layer.merge(std::move(bottom_contact_layer)); + else if (base_layer.empty() && ! bottom_contact_layer.empty() && ! bottom_contact_layer.layer->bridging) + base_layer = std::move(bottom_contact_layer); + } else if (bottom_contact_layer.could_merge(top_contact_layer)) + top_contact_layer.merge(std::move(bottom_contact_layer)); + else if (bottom_contact_layer.could_merge(interface_layer)) + bottom_contact_layer.merge(std::move(interface_layer)); + +#if 0 + if ( ! interface_layer.empty() && ! base_layer.empty()) { + // turn base support into interface when it's contained in our holes + // (this way we get wider interface anchoring) + //FIXME The intention of the code below is unclear. One likely wanted to just merge small islands of base layers filling in the holes + // inside interface layers, but the code below fills just too much, see GH #4570 + Polygons islands = top_level_islands(interface_layer.layer->polygons); + polygons_append(interface_layer.layer->polygons, intersection(base_layer.layer->polygons, islands)); + base_layer.layer->polygons = diff(base_layer.layer->polygons, islands); + } +#endif + + // Calculate top interface angle + float angle_of_biggest_bridge = -1.f; + do + { + // Currently only works when thick_bridges is off + if (m_object->config().thick_bridges) + break; + + coordf_t object_layer_bottom_z = support_layer.print_z + m_slicing_params.gap_support_object; + const Layer* object_layer = m_object->get_layer_at_bottomz(object_layer_bottom_z, 10.0 * EPSILON); + if (object_layer == nullptr) + break; + + if (object_layer != nullptr) { + float biggest_bridge_area = 0.f; + const Polygons& top_contact_polys = top_contact_layer.polygons_to_extrude(); + for (auto layerm : object_layer->regions()) { + for (auto bridge_surface : layerm->fill_surfaces.filter_by_type(stBottomBridge)) { + float bs_area = bridge_surface->area(); + if (bs_area <= biggest_bridge_area || bridge_surface->bridge_angle < 0.f) + continue; + + angle_of_biggest_bridge = bridge_surface->bridge_angle; + biggest_bridge_area = bs_area; + } + } + } + } while (0); + + auto calc_included_angle_degree = [](int degree_a, int degree_b) { + int iad = std::abs(degree_b - degree_a); + return std::min(iad, 180 - iad); + }; + + // Top and bottom contacts, interface layers. + for (size_t i = 0; i < 3; ++ i) { + MyLayerExtruded &layer_ex = (i == 0) ? top_contact_layer : (i == 1 ? bottom_contact_layer : interface_layer); + if (layer_ex.empty() || layer_ex.polygons_to_extrude().empty()) + continue; + bool interface_as_base = m_object_config->support_interface_top_layers.value == 0 || + (m_object_config->support_interface_bottom_layers == 0 && &layer_ex == &bottom_contact_layer); + //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore + // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) + Flow interface_flow; + if (layer_ex.layer->bridging) + interface_flow = Flow::bridging_flow(layer_ex.layer->height, m_support_params.support_material_bottom_interface_flow.nozzle_diameter()); + else if (layer_ex.layer->bottom_z < EPSILON) { + interface_flow = m_support_params.first_layer_flow; + }else + interface_flow = (interface_as_base ? &m_support_params.support_material_flow : &m_support_params.support_material_interface_flow)->with_height(float(layer_ex.layer->height)); + filler_interface->angle = interface_as_base ? + // If zero interface layers are configured, use the same angle as for the base layers. + angles[support_layer_id % angles.size()] : + // Use interface angle for the interface layers. + m_support_params.interface_angle + interface_angle_delta; + + // BBS + bool can_adjust_top_interface_angle = (m_object_config->support_interface_top_layers.value > 1 && &layer_ex == &top_contact_layer); + if (can_adjust_top_interface_angle && angle_of_biggest_bridge >= 0.f) { + int bridge_degree = (int)Geometry::rad2deg(angle_of_biggest_bridge); + int support_intf_degree = (int)Geometry::rad2deg(filler_interface->angle); + int max_included_degree = 0; + int step = 90; + for (int add_on_degree = 0; add_on_degree < 180; add_on_degree += step) { + int degree_to_try = support_intf_degree + add_on_degree; + int included_degree = calc_included_angle_degree(bridge_degree, degree_to_try); + if (included_degree > max_included_degree) { + max_included_degree = included_degree; + filler_interface->angle = Geometry::deg2rad((float)degree_to_try); + } + } + } + double density = interface_as_base ? m_support_params.support_density : m_support_params.interface_density; + filler_interface->spacing = interface_as_base ? m_support_params.support_material_flow.spacing() : m_support_params.support_material_interface_flow.spacing(); + filler_interface->link_max_length = coord_t(scale_(filler_interface->spacing * link_max_length_factor / density)); + // BBS support more interface patterns + FillParams fill_params; + fill_params.density = density; + fill_params.dont_adjust = true; + if (m_object_config->support_interface_pattern == smipGrid) { + filler_interface->angle = Geometry::deg2rad(m_support_params.base_angle); + fill_params.dont_sort = true; + } + if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) + filler_interface->layer_id = support_layer.interface_id(); + fill_expolygons_generate_paths( + // Destination + layer_ex.extrusions, + // Regions to fill + union_safety_offset_ex(layer_ex.polygons_to_extrude()), + // Filler and its parameters + filler_interface.get(), fill_params, + // Extrusion parameters + erSupportMaterialInterface, interface_flow); + } + + // Base interface layers under soluble interfaces + if ( ! base_interface_layer.empty() && ! base_interface_layer.polygons_to_extrude().empty()) { + Fill *filler = filler_base_interface.get(); + //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore + // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) + assert(! base_interface_layer.layer->bridging); + Flow interface_flow = m_support_params.support_material_flow.with_height(float(base_interface_layer.layer->height)); + filler->angle = m_support_params.interface_angle + interface_angle_delta; + filler->spacing = m_support_params.support_material_interface_flow.spacing(); + filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.interface_density)); + fill_expolygons_generate_paths( + // Destination + base_interface_layer.extrusions, + //base_layer_interface.extrusions, + // Regions to fill + union_safety_offset_ex(base_interface_layer.polygons_to_extrude()), + // Filler and its parameters + filler, float(m_support_params.interface_density), + // Extrusion parameters + erSupportMaterial, interface_flow); + } + + // Base support or flange. + if (! base_layer.empty() && ! base_layer.polygons_to_extrude().empty()) { + Fill *filler = filler_support.get(); + filler->angle = angles[support_layer_id % angles.size()]; + // We don't use $base_flow->spacing because we need a constant spacing + // value that guarantees that all layers are correctly aligned. + assert(! base_layer.layer->bridging); + auto flow = m_support_params.support_material_flow.with_height(float(base_layer.layer->height)); + filler->spacing = m_support_params.support_material_flow.spacing(); + filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.support_density)); + float density = float(m_support_params.support_density); + bool sheath = m_support_params.with_sheath; + bool no_sort = false; + if (base_layer.layer->bottom_z < EPSILON) { + // Base flange (the 1st layer). + filler = filler_first_layer; + // BBS: the 1st layer use the same fill direction as other layers(in rectilinear) to avoid + // that 2nd layer detaches from the 1st layer. + //filler->angle = Geometry::deg2rad(float(m_object_config->support_angle.value + 90.)); + density = float(m_object_config->raft_first_layer_density.value * 0.01); + flow = m_support_params.first_layer_flow; + // use the proper spacing for first layer as we don't need to align + // its pattern to the other layers + //FIXME When paralellizing, each thread shall have its own copy of the fillers. + filler->spacing = flow.spacing(); + filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); + sheath = true; + no_sort = true; + } + fill_expolygons_with_sheath_generate_paths( + // Destination + base_layer.extrusions, + // Regions to fill + base_layer.polygons_to_extrude(), + // Filler and its parameters + filler, density, + // Extrusion parameters + erSupportMaterial, flow, + sheath, no_sort); + + } + + // Merge base_interface_layers to base_layers to avoid unneccessary retractions + if (! base_layer.empty() && ! base_interface_layer.empty() && ! base_layer.polygons_to_extrude().empty() && ! base_interface_layer.polygons_to_extrude().empty() && + base_layer.could_merge(base_interface_layer)) + base_layer.merge(std::move(base_interface_layer)); + + layer_cache.add_nonempty_and_sort(); + + // Collect the support areas with this print_z into islands, as there is no need + // for retraction over these islands. + Polygons polys; + // Collect the extrusions, sorted by the bottom extrusion height. + for (LayerCacheItem &layer_cache_item : layer_cache.nonempty) { + // Collect islands to polys. + layer_cache_item.layer_extruded->polygons_append(polys); + // The print_z of the top contact surfaces and bottom_z of the bottom contact surfaces are "free" + // in a sense that they are not synchronized with other support layers. As the top and bottom contact surfaces + // are inflated to achieve a better anchoring, it may happen, that these surfaces will at least partially + // overlap in Z with another support layers, leading to over-extrusion. + // Mitigate the over-extrusion by modulating the extrusion rate over these regions. + // The print head will follow the same print_z, but the layer thickness will be reduced + // where it overlaps with another support layer. + //FIXME When printing a briging path, what is an equivalent height of the squished extrudate of the same width? + // Collect overlapping top/bottom surfaces. + layer_cache_item.overlapping.reserve(20); + coordf_t bottom_z = layer_cache_item.layer_extruded->layer->bottom_print_z() + EPSILON; + auto add_overlapping = [&layer_cache_item, bottom_z](const MyLayersPtr &layers, size_t idx_top) { + for (int i = int(idx_top) - 1; i >= 0 && layers[i]->print_z > bottom_z; -- i) + layer_cache_item.overlapping.push_back(layers[i]); + }; + add_overlapping(top_contacts, idx_layer_top_contact); + if (layer_cache_item.layer_extruded->layer->layer_type == sltBottomContact) { + // Bottom contact layer may overlap with a base layer, which may be changed to interface layer. + add_overlapping(intermediate_layers, idx_layer_intermediate); + add_overlapping(interface_layers, idx_layer_interface); + add_overlapping(base_interface_layers, idx_layer_base_interface); + } + // Order the layers by lexicographically by an increasing print_z and a decreasing layer height. + std::stable_sort(layer_cache_item.overlapping.begin(), layer_cache_item.overlapping.end(), [](auto *l1, auto *l2) { return *l1 < *l2; }); + } + if (! polys.empty()) + expolygons_append(support_layer.support_islands, union_ex(polys)); + } // for each support_layer_id + }); + + // Now modulate the support layer height in parallel. + tbb::parallel_for(tbb::blocked_range(n_raft_layers, support_layers.size()), + [&support_layers, &layer_caches] + (const tbb::blocked_range& range) { + for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) { + SupportLayer &support_layer = *support_layers[support_layer_id]; + LayerCache &layer_cache = layer_caches[support_layer_id]; + // For all extrusion types at this print_z, ordered by decreasing layer height: + for (LayerCacheItem &layer_cache_item : layer_cache.nonempty) { + // Trim the extrusion height from the bottom by the overlapping layers. + modulate_extrusion_by_overlapping_layers(layer_cache_item.layer_extruded->extrusions, *layer_cache_item.layer_extruded->layer, layer_cache_item.overlapping); + support_layer.support_fills.append(std::move(layer_cache_item.layer_extruded->extrusions)); + } + } + }); + +#ifndef NDEBUG + struct Test { + static bool verify_nonempty(const ExtrusionEntityCollection *collection) { + for (const ExtrusionEntity *ee : collection->entities) { + if (const ExtrusionPath *path = dynamic_cast(ee)) + assert(! path->empty()); + else if (const ExtrusionMultiPath *multipath = dynamic_cast(ee)) + assert(! multipath->empty()); + else if (const ExtrusionEntityCollection *eecol = dynamic_cast(ee)) { + assert(! eecol->empty()); + return verify_nonempty(eecol); + } else + assert(false); + } + return true; + } + }; + for (const SupportLayer *support_layer : support_layers) + assert(Test::verify_nonempty(&support_layer->support_fills)); +#endif // NDEBUG +} + /* void PrintObjectSupportMaterial::clip_by_pillars( const PrintObject &object, diff --git a/src/libslic3r/Support/SupportMaterial.hpp b/src/libslic3r/Support/SupportMaterial.hpp index f626150f04d..861126fcbdc 100644 --- a/src/libslic3r/Support/SupportMaterial.hpp +++ b/src/libslic3r/Support/SupportMaterial.hpp @@ -1,16 +1,15 @@ #ifndef slic3r_SupportMaterial_hpp_ #define slic3r_SupportMaterial_hpp_ -#include "../Flow.hpp" -#include "../PrintConfig.hpp" -#include "../Slicing.hpp" - -#include "SupportLayer.hpp" -#include "SupportParameters.hpp" +#include "Flow.hpp" +#include "PrintConfig.hpp" +#include "Slicing.hpp" namespace Slic3r { class PrintObject; +class PrintConfig; +class PrintObjectConfig; // This class manages raft and supports for a single PrintObject. // Instantiated by Slic3r::Print::Object->_support_material() @@ -18,6 +17,142 @@ class PrintObject; // the parameters of the raft to determine the 1st layer height and thickness. class PrintObjectSupportMaterial { +public: + // Support layer type to be used by MyLayer. This type carries a much more detailed information + // about the support layer type than the final support layers stored in a PrintObject. + enum SupporLayerType { + sltUnknown = 0, + // Ratft base layer, to be printed with the support material. + sltRaftBase, + // Raft interface layer, to be printed with the support interface material. + sltRaftInterface, + // Bottom contact layer placed over a top surface of an object. To be printed with a support interface material. + sltBottomContact, + // Dense interface layer, to be printed with the support interface material. + // This layer is separated from an object by an sltBottomContact layer. + sltBottomInterface, + // Sparse base support layer, to be printed with a support material. + sltBase, + // Dense interface layer, to be printed with the support interface material. + // This layer is separated from an object with sltTopContact layer. + sltTopInterface, + // Top contact layer directly supporting an overhang. To be printed with a support interface material. + sltTopContact, + // Some undecided type yet. It will turn into sltBase first, then it may turn into sltBottomInterface or sltTopInterface. + sltIntermediate, + }; + + // A support layer type used internally by the SupportMaterial class. This class carries a much more detailed + // information about the support layer than the layers stored in the PrintObject, mainly + // the MyLayer is aware of the bridging flow and the interface gaps between the object and the support. + class MyLayer + { + public: + void reset() { + *this = MyLayer(); + } + + bool operator==(const MyLayer &layer2) const { + return print_z == layer2.print_z && height == layer2.height && bridging == layer2.bridging; + } + + // Order the layers by lexicographically by an increasing print_z and a decreasing layer height. + bool operator<(const MyLayer &layer2) const { + if (print_z < layer2.print_z) { + return true; + } else if (print_z == layer2.print_z) { + if (height > layer2.height) + return true; + else if (height == layer2.height) { + // Bridging layers first. + return bridging && ! layer2.bridging; + } else + return false; + } else + return false; + } + + void merge(MyLayer &&rhs) { + // The union_() does not support move semantic yet, but maybe one day it will. + this->polygons = union_(this->polygons, std::move(rhs.polygons)); + auto merge = [](std::unique_ptr &dst, std::unique_ptr &src) { + if (! dst || dst->empty()) + dst = std::move(src); + else if (src && ! src->empty()) + *dst = union_(*dst, std::move(*src)); + }; + merge(this->contact_polygons, rhs.contact_polygons); + merge(this->overhang_polygons, rhs.overhang_polygons); + merge(this->enforcer_polygons, rhs.enforcer_polygons); + rhs.reset(); + } + + // For the bridging flow, bottom_print_z will be above bottom_z to account for the vertical separation. + // For the non-bridging flow, bottom_print_z will be equal to bottom_z. + coordf_t bottom_print_z() const { return print_z - height; } + + // To sort the extremes of top / bottom interface layers. + coordf_t extreme_z() const { return (this->layer_type == sltTopContact) ? this->bottom_z : this->print_z; } + + SupporLayerType layer_type { sltUnknown }; + // Z used for printing, in unscaled coordinates. + coordf_t print_z { 0 }; + // Bottom Z of this layer. For soluble layers, bottom_z + height = print_z, + // otherwise bottom_z + gap + height = print_z. + coordf_t bottom_z { 0 }; + // Layer height in unscaled coordinates. + coordf_t height { 0 }; + // Index of a PrintObject layer_id supported by this layer. This will be set for top contact layers. + // If this is not a contact layer, it will be set to size_t(-1). + size_t idx_object_layer_above { size_t(-1) }; + // Index of a PrintObject layer_id, which supports this layer. This will be set for bottom contact layers. + // If this is not a contact layer, it will be set to size_t(-1). + size_t idx_object_layer_below { size_t(-1) }; + // Use a bridging flow when printing this support layer. + bool bridging { false }; + + // Polygons to be filled by the support pattern. + Polygons polygons; + // Currently for the contact layers only. + std::unique_ptr contact_polygons; + std::unique_ptr overhang_polygons; + // Enforcers need to be propagated independently in case the "support on build plate only" option is enabled. + std::unique_ptr enforcer_polygons; + }; + + struct SupportParams { + Flow first_layer_flow; + Flow support_material_flow; + Flow support_material_interface_flow; + Flow support_material_bottom_interface_flow; + // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? + bool can_merge_support_regions; + + coordf_t support_layer_height_min; + // coordf_t support_layer_height_max; + + coordf_t gap_xy; + + float base_angle; + float interface_angle; + coordf_t interface_spacing; + coordf_t support_expansion; + coordf_t interface_density; + coordf_t support_spacing; + coordf_t support_density; + + InfillPattern base_fill_pattern; + InfillPattern interface_fill_pattern; + InfillPattern contact_fill_pattern; + bool with_sheath; + }; + + // Layers are allocated and owned by a deque. Once a layer is allocated, it is maintained + // up to the end of a generate() method. The layer storage may be replaced by an allocator class in the future, + // which would allocate layers by multiple chunks. + typedef std::deque MyLayerStorage; + typedef std::vector MyLayersPtr; + public: PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params); @@ -26,8 +161,8 @@ class PrintObjectSupportMaterial // Has any support? bool has_support() const { return m_object_config->enable_support.value || m_object_config->enforce_support_layers; } bool build_plate_only() const { return this->has_support() && m_object_config->support_on_build_plate_only.value; } - - bool synchronize_layers() const { return m_slicing_params.soluble_interface && m_print_config->independent_support_layer_height.value; } + // BBS + bool synchronize_layers() const { return /*m_slicing_params.soluble_interface && */!m_print_config->independent_support_layer_height.value; } bool has_contact_loops() const { return m_object_config->support_interface_loop_pattern.value; } // Generate support material for the object. @@ -36,47 +171,63 @@ class PrintObjectSupportMaterial void generate(PrintObject &object); private: - using SupportGeneratorLayersPtr = FFFSupport::SupportGeneratorLayersPtr; - using SupportGeneratorLayerStorage = FFFSupport::SupportGeneratorLayerStorage; - using SupportParameters = FFFSupport::SupportParameters; - std::vector buildplate_covered(const PrintObject &object) const; // Generate top contact layers supporting overhangs. // For a soluble interface material synchronize the layer heights with the object, otherwise leave the layer height undefined. // If supports over bed surface only are requested, don't generate contact layers over an object. - SupportGeneratorLayersPtr top_contact_layers(const PrintObject &object, const std::vector &buildplate_covered, SupportGeneratorLayerStorage &layer_storage) const; + MyLayersPtr top_contact_layers(const PrintObject &object, const std::vector &buildplate_covered, MyLayerStorage &layer_storage) const; // Generate bottom contact layers supporting the top contact layers. // For a soluble interface material synchronize the layer heights with the object, // otherwise set the layer height to a bridging flow of a support interface nozzle. - SupportGeneratorLayersPtr bottom_contact_layers_and_layer_support_areas( - const PrintObject &object, const SupportGeneratorLayersPtr &top_contacts, std::vector &buildplate_covered, - SupportGeneratorLayerStorage &layer_storage, std::vector &layer_support_areas) const; + MyLayersPtr bottom_contact_layers_and_layer_support_areas( + const PrintObject &object, const MyLayersPtr &top_contacts, std::vector &buildplate_covered, + MyLayerStorage &layer_storage, std::vector &layer_support_areas) const; // Trim the top_contacts layers with the bottom_contacts layers if they overlap, so there would not be enough vertical space for both of them. - void trim_top_contacts_by_bottom_contacts(const PrintObject &object, const SupportGeneratorLayersPtr &bottom_contacts, SupportGeneratorLayersPtr &top_contacts) const; + void trim_top_contacts_by_bottom_contacts(const PrintObject &object, const MyLayersPtr &bottom_contacts, MyLayersPtr &top_contacts) const; // Generate raft layers and the intermediate support layers between the bottom contact and top contact surfaces. - SupportGeneratorLayersPtr raft_and_intermediate_support_layers( + MyLayersPtr raft_and_intermediate_support_layers( const PrintObject &object, - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayerStorage &layer_storage) const; + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + MyLayerStorage &layer_storage) const; // Fill in the base layers with polygons. void generate_base_layers( const PrintObject &object, - const SupportGeneratorLayersPtr &bottom_contacts, - const SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + MyLayersPtr &intermediate_layers, const std::vector &layer_support_areas) const; + // Generate raft layers, also expand the 1st support layer + // in case there is no raft layer to improve support adhesion. + MyLayersPtr generate_raft_base( + const PrintObject &object, + const MyLayersPtr &top_contacts, + const MyLayersPtr &interface_layers, + const MyLayersPtr &base_interface_layers, + const MyLayersPtr &base_layers, + MyLayerStorage &layer_storage) const; + + // Turn some of the base layers into base interface layers. + // For soluble interfaces with non-soluble bases, print maximum two first interface layers with the base + // extruder to improve adhesion of the soluble filament to the base. + std::pair generate_interface_layers( + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + MyLayersPtr &intermediate_layers, + MyLayerStorage &layer_storage) const; + + // Trim support layers by an object to leave a defined gap between // the support volume and the object. void trim_support_layers_by_object( const PrintObject &object, - SupportGeneratorLayersPtr &support_layers, + MyLayersPtr &support_layers, const coordf_t gap_extra_above, const coordf_t gap_extra_below, const coordf_t gap_xy) const; @@ -86,14 +237,25 @@ class PrintObjectSupportMaterial void clip_with_shape(); */ + // Produce the actual G-code. + void generate_toolpaths( + SupportLayerPtrs &support_layers, + const MyLayersPtr &raft_layers, + const MyLayersPtr &bottom_contacts, + const MyLayersPtr &top_contacts, + const MyLayersPtr &intermediate_layers, + const MyLayersPtr &interface_layers, + const MyLayersPtr &base_interface_layers) const; + // Following objects are not owned by SupportMaterial class. + const PrintObject *m_object; const PrintConfig *m_print_config; const PrintObjectConfig *m_object_config; // Pre-calculated parameters shared between the object slicer and the support generator, // carrying information on a raft, 1st layer height, 1st object layer height, gap between the raft and object etc. SlicingParameters m_slicing_params; // Various precomputed support parameters to be shared with external functions. - SupportParameters m_support_params; + SupportParams m_support_params; }; } // namespace Slic3r diff --git a/src/libslic3r/Support/SupportParameters.cpp b/src/libslic3r/Support/SupportParameters.cpp deleted file mode 100644 index 8508206cb9f..00000000000 --- a/src/libslic3r/Support/SupportParameters.cpp +++ /dev/null @@ -1,144 +0,0 @@ -#include "../Print.hpp" -#include "../PrintConfig.hpp" -#include "../Slicing.hpp" -#include "SupportParameters.hpp" - -namespace Slic3r::FFFSupport { - -SupportParameters::SupportParameters(const PrintObject &object) -{ - const PrintConfig &print_config = object.print()->config(); - const PrintObjectConfig &object_config = object.config(); - const SlicingParameters &slicing_params = object.slicing_parameters(); - - this->soluble_interface = slicing_params.soluble_interface; - this->soluble_interface_non_soluble_base = - // Zero z-gap between the overhangs and the support interface. - slicing_params.soluble_interface && - // Interface extruder soluble. - object_config.support_interface_filament.value > 0 && print_config.filament_soluble.get_at(object_config.support_interface_filament.value - 1) && - // Base extruder: Either "print with active extruder" not soluble. - (object_config.support_filament.value == 0 || ! print_config.filament_soluble.get_at(object_config.support_filament.value - 1)); - - { - int num_top_interface_layers = std::max(0, object_config.support_interface_top_layers.value); - int num_bottom_interface_layers = object_config.support_interface_bottom_layers < 0 ? - num_top_interface_layers : object_config.support_interface_bottom_layers; - this->has_top_contacts = num_top_interface_layers > 0; - this->has_bottom_contacts = num_bottom_interface_layers > 0; - this->num_top_interface_layers = this->has_top_contacts ? size_t(num_top_interface_layers - 1) : 0; - this->num_bottom_interface_layers = this->has_bottom_contacts ? size_t(num_bottom_interface_layers - 1) : 0; - if (this->soluble_interface_non_soluble_base) { - // Try to support soluble dense interfaces with non-soluble dense interfaces. - this->num_top_base_interface_layers = size_t(std::min(num_top_interface_layers / 2, 2)); - this->num_bottom_base_interface_layers = size_t(std::min(num_bottom_interface_layers / 2, 2)); - } else { - this->num_top_base_interface_layers = 0; - this->num_bottom_base_interface_layers = 0; - } - } - - this->first_layer_flow = Slic3r::support_material_1st_layer_flow(&object, float(slicing_params.first_print_layer_height)); - this->support_material_flow = Slic3r::support_material_flow(&object, float(slicing_params.layer_height)); - this->support_material_interface_flow = Slic3r::support_material_interface_flow(&object, float(slicing_params.layer_height)); - this->raft_interface_flow = support_material_interface_flow; - - // Calculate a minimum support layer height as a minimum over all extruders, but not smaller than 10um. - this->support_layer_height_min = scaled(0.01); - for (auto lh : print_config.min_layer_height.values) - this->support_layer_height_min = std::min(this->support_layer_height_min, std::max(0.01, lh)); - for (auto layer : object.layers()) - this->support_layer_height_min = std::min(this->support_layer_height_min, std::max(0.01, layer->height)); - - if (object_config.support_interface_top_layers.value == 0) { - // No interface layers allowed, print everything with the base support pattern. - this->support_material_interface_flow = this->support_material_flow; - } - - // Evaluate the XY gap between the object outer perimeters and the support structures. - // Evaluate the XY gap between the object outer perimeters and the support structures. - coordf_t external_perimeter_width = 0.; - coordf_t bridge_flow_ratio = 0; - for (size_t region_id = 0; region_id < object.num_printing_regions(); ++ region_id) { - const PrintRegion ®ion = object.printing_region(region_id); - external_perimeter_width = std::max(external_perimeter_width, coordf_t(region.flow(object, frExternalPerimeter, slicing_params.layer_height).width())); - bridge_flow_ratio += region.config().bridge_flow; - } - this->gap_xy = object_config.support_object_xy_distance;//.get_abs_value(external_perimeter_width); - bridge_flow_ratio /= object.num_printing_regions(); - - this->support_material_bottom_interface_flow = slicing_params.soluble_interface || ! object_config.thick_bridges ? - this->support_material_interface_flow.with_flow_ratio(bridge_flow_ratio) : - Flow::bridging_flow(bridge_flow_ratio * this->support_material_interface_flow.nozzle_diameter(), this->support_material_interface_flow.nozzle_diameter()); - - this->can_merge_support_regions = object_config.support_filament.value == object_config.support_interface_filament.value; - if (!this->can_merge_support_regions && (object_config.support_filament.value == 0 || object_config.support_interface_filament.value == 0)) { - // One of the support extruders is of "don't care" type. - auto object_extruders = object.object_extruders(); - if (object_extruders.size() == 1 && - *object_extruders.begin() == std::max(object_config.support_filament.value, object_config.support_interface_filament.value)) - // Object is printed with the same extruder as the support. - this->can_merge_support_regions = true; - } - - double interface_spacing = object_config.support_interface_spacing.value + this->support_material_interface_flow.spacing(); - this->interface_density = std::min(1., this->support_material_interface_flow.spacing() / interface_spacing); - double raft_interface_spacing = object_config.support_interface_spacing.value + this->raft_interface_flow.spacing(); - this->raft_interface_density = std::min(1., this->raft_interface_flow.spacing() / raft_interface_spacing); - double support_spacing = object_config.support_base_pattern_spacing.value + this->support_material_flow.spacing(); - this->support_density = std::min(1., this->support_material_flow.spacing() / support_spacing); - if (object_config.support_interface_top_layers.value == 0) { - // No interface layers allowed, print everything with the base support pattern. - this->interface_density = this->support_density; - } - - SupportMaterialPattern support_pattern = object_config.support_base_pattern; - this->with_sheath = false;//object_config.support_material_with_sheath; - this->base_fill_pattern = - support_pattern == smpHoneycomb ? ipHoneycomb : - this->support_density > 0.95 || this->with_sheath ? ipRectilinear : ipSupportBase; - this->interface_fill_pattern = (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); - this->raft_interface_fill_pattern = this->raft_interface_density > 0.95 ? ipRectilinear : ipSupportBase; - this->contact_fill_pattern = - (object_config.support_interface_pattern == smipAuto && slicing_params.soluble_interface) || - object_config.support_interface_pattern == smipConcentric ? - ipConcentric : - (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); - - this->base_angle = Geometry::deg2rad(float(object_config.support_angle.value)); - this->interface_angle = Geometry::deg2rad(float(object_config.support_angle.value + 90.)); - this->raft_angle_1st_layer = 0.f; - this->raft_angle_base = 0.f; - this->raft_angle_interface = 0.f; - if (slicing_params.base_raft_layers > 1) { - assert(slicing_params.raft_layers() >= 4); - // There are all raft layer types (1st layer, base, interface & contact layers) available. - this->raft_angle_1st_layer = this->interface_angle; - this->raft_angle_base = this->base_angle; - this->raft_angle_interface = this->interface_angle; - if ((slicing_params.interface_raft_layers & 1) == 0) - // Allign the 1st raft interface layer so that the object 1st layer is hatched perpendicularly to the raft contact interface. - this->raft_angle_interface += float(0.5 * M_PI); - } else if (slicing_params.base_raft_layers == 1 || slicing_params.interface_raft_layers > 1) { - assert(slicing_params.raft_layers() == 2 || slicing_params.raft_layers() == 3); - // 1st layer, interface & contact layers available. - this->raft_angle_1st_layer = this->base_angle; - this->raft_angle_interface = this->interface_angle + 0.5 * M_PI; - } else if (slicing_params.interface_raft_layers == 1) { - // Only the contact raft layer is non-empty, which will be printed as the 1st layer. - assert(slicing_params.base_raft_layers == 0); - assert(slicing_params.interface_raft_layers == 1); - assert(slicing_params.raft_layers() == 1); - this->raft_angle_1st_layer = float(0.5 * M_PI); - this->raft_angle_interface = this->raft_angle_1st_layer; - } else { - // No raft. - assert(slicing_params.base_raft_layers == 0); - assert(slicing_params.interface_raft_layers == 0); - assert(slicing_params.raft_layers() == 0); - } - - this->tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(object_config.tree_support_branch_diameter_double_wall.value)) * M_PI; -} - -} // namespace Slic3r diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 8a63d9f3f02..e240504c23c 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -9,10 +9,142 @@ namespace Slic3r { class PrintObject; enum InfillPattern : int; -namespace FFFSupport { - struct SupportParameters { - SupportParameters(const PrintObject &object); + SupportParameters(const PrintObject &object) + { + const PrintConfig &print_config = object.print()->config(); + const PrintObjectConfig &object_config = object.config(); + const SlicingParameters &slicing_params = object.slicing_parameters(); + + this->soluble_interface = slicing_params.soluble_interface; + this->soluble_interface_non_soluble_base = + // Zero z-gap between the overhangs and the support interface. + slicing_params.soluble_interface && + // Interface extruder soluble. + object_config.support_interface_filament.value > 0 && print_config.filament_soluble.get_at(object_config.support_interface_filament.value - 1) && + // Base extruder: Either "print with active extruder" not soluble. + (object_config.support_filament.value == 0 || ! print_config.filament_soluble.get_at(object_config.support_filament.value - 1)); + + { + int num_top_interface_layers = std::max(0, object_config.support_interface_top_layers.value); + int num_bottom_interface_layers = object_config.support_interface_bottom_layers < 0 ? + num_top_interface_layers : object_config.support_interface_bottom_layers; + this->has_top_contacts = num_top_interface_layers > 0; + this->has_bottom_contacts = num_bottom_interface_layers > 0; + this->num_top_interface_layers = this->has_top_contacts ? size_t(num_top_interface_layers - 1) : 0; + this->num_bottom_interface_layers = this->has_bottom_contacts ? size_t(num_bottom_interface_layers - 1) : 0; + if (this->soluble_interface_non_soluble_base) { + // Try to support soluble dense interfaces with non-soluble dense interfaces. + this->num_top_base_interface_layers = size_t(std::min(num_top_interface_layers / 2, 2)); + this->num_bottom_base_interface_layers = size_t(std::min(num_bottom_interface_layers / 2, 2)); + } else { + this->num_top_base_interface_layers = 0; + this->num_bottom_base_interface_layers = 0; + } + } + + this->first_layer_flow = Slic3r::support_material_1st_layer_flow(&object, float(slicing_params.first_print_layer_height)); + this->support_material_flow = Slic3r::support_material_flow(&object, float(slicing_params.layer_height)); + this->support_material_interface_flow = Slic3r::support_material_interface_flow(&object, float(slicing_params.layer_height)); + this->raft_interface_flow = support_material_interface_flow; + + // Calculate a minimum support layer height as a minimum over all extruders, but not smaller than 10um. + this->support_layer_height_min = scaled(0.01); + for (auto lh : print_config.min_layer_height.values) + this->support_layer_height_min = std::min(this->support_layer_height_min, std::max(0.01, lh)); + for (auto layer : object.layers()) + this->support_layer_height_min = std::min(this->support_layer_height_min, std::max(0.01, layer->height)); + + if (object_config.support_interface_top_layers.value == 0) { + // No interface layers allowed, print everything with the base support pattern. + this->support_material_interface_flow = this->support_material_flow; + } + + // Evaluate the XY gap between the object outer perimeters and the support structures. + // Evaluate the XY gap between the object outer perimeters and the support structures. + coordf_t external_perimeter_width = 0.; + coordf_t bridge_flow_ratio = 0; + for (size_t region_id = 0; region_id < object.num_printing_regions(); ++ region_id) { + const PrintRegion ®ion = object.printing_region(region_id); + external_perimeter_width = std::max(external_perimeter_width, coordf_t(region.flow(object, frExternalPerimeter, slicing_params.layer_height).width())); + bridge_flow_ratio += region.config().bridge_flow; + } + this->gap_xy = object_config.support_object_xy_distance;//.get_abs_value(external_perimeter_width); + bridge_flow_ratio /= object.num_printing_regions(); + + this->support_material_bottom_interface_flow = slicing_params.soluble_interface || ! object_config.thick_bridges ? + this->support_material_interface_flow.with_flow_ratio(bridge_flow_ratio) : + Flow::bridging_flow(bridge_flow_ratio * this->support_material_interface_flow.nozzle_diameter(), this->support_material_interface_flow.nozzle_diameter()); + + this->can_merge_support_regions = object_config.support_filament.value == object_config.support_interface_filament.value; + if (!this->can_merge_support_regions && (object_config.support_filament.value == 0 || object_config.support_interface_filament.value == 0)) { + // One of the support extruders is of "don't care" type. + auto object_extruders = object.object_extruders(); + if (object_extruders.size() == 1 && + *object_extruders.begin() == std::max(object_config.support_filament.value, object_config.support_interface_filament.value)) + // Object is printed with the same extruder as the support. + this->can_merge_support_regions = true; + } + + double interface_spacing = object_config.support_interface_spacing.value + this->support_material_interface_flow.spacing(); + this->interface_density = std::min(1., this->support_material_interface_flow.spacing() / interface_spacing); + double raft_interface_spacing = object_config.support_interface_spacing.value + this->raft_interface_flow.spacing(); + this->raft_interface_density = std::min(1., this->raft_interface_flow.spacing() / raft_interface_spacing); + double support_spacing = object_config.support_base_pattern_spacing.value + this->support_material_flow.spacing(); + this->support_density = std::min(1., this->support_material_flow.spacing() / support_spacing); + if (object_config.support_interface_top_layers.value == 0) { + // No interface layers allowed, print everything with the base support pattern. + this->interface_density = this->support_density; + } + + SupportMaterialPattern support_pattern = object_config.support_base_pattern; + this->with_sheath = false;//object_config.support_material_with_sheath; + this->base_fill_pattern = + support_pattern == smpHoneycomb ? ipHoneycomb : + this->support_density > 0.95 || this->with_sheath ? ipRectilinear : ipSupportBase; + this->interface_fill_pattern = (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); + this->raft_interface_fill_pattern = this->raft_interface_density > 0.95 ? ipRectilinear : ipSupportBase; + this->contact_fill_pattern = + (object_config.support_interface_pattern == smipAuto && slicing_params.soluble_interface) || + object_config.support_interface_pattern == smipConcentric ? + ipConcentric : + (this->interface_density > 0.95 ? ipRectilinear : ipSupportBase); + + this->base_angle = Geometry::deg2rad(float(object_config.support_angle.value)); + this->interface_angle = Geometry::deg2rad(float(object_config.support_angle.value + 90.)); + this->raft_angle_1st_layer = 0.f; + this->raft_angle_base = 0.f; + this->raft_angle_interface = 0.f; + if (slicing_params.base_raft_layers > 1) { + assert(slicing_params.raft_layers() >= 4); + // There are all raft layer types (1st layer, base, interface & contact layers) available. + this->raft_angle_1st_layer = this->interface_angle; + this->raft_angle_base = this->base_angle; + this->raft_angle_interface = this->interface_angle; + if ((slicing_params.interface_raft_layers & 1) == 0) + // Allign the 1st raft interface layer so that the object 1st layer is hatched perpendicularly to the raft contact interface. + this->raft_angle_interface += float(0.5 * M_PI); + } else if (slicing_params.base_raft_layers == 1 || slicing_params.interface_raft_layers > 1) { + assert(slicing_params.raft_layers() == 2 || slicing_params.raft_layers() == 3); + // 1st layer, interface & contact layers available. + this->raft_angle_1st_layer = this->base_angle; + this->raft_angle_interface = this->interface_angle + 0.5 * M_PI; + } else if (slicing_params.interface_raft_layers == 1) { + // Only the contact raft layer is non-empty, which will be printed as the 1st layer. + assert(slicing_params.base_raft_layers == 0); + assert(slicing_params.interface_raft_layers == 1); + assert(slicing_params.raft_layers() == 1); + this->raft_angle_1st_layer = float(0.5 * M_PI); + this->raft_angle_interface = this->raft_angle_1st_layer; + } else { + // No raft. + assert(slicing_params.base_raft_layers == 0); + assert(slicing_params.interface_raft_layers == 0); + assert(slicing_params.raft_layers() == 0); + } + + this->tree_branch_diameter_double_wall_area_scaled = 0.25 * sqr(scaled(object_config.tree_support_branch_diameter_double_wall.value)) * M_PI; + } // Both top / bottom contacts and interfaces are soluble. bool soluble_interface; @@ -89,8 +221,6 @@ struct SupportParameters { { return this->raft_angle_interface + ((interface_id & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.)); } }; -} // namespace FFFSupport - } // namespace Slic3r #endif /* slic3r_SupportParameters_hpp_ */ diff --git a/src/libslic3r/SupportSpotsGenerator.cpp b/src/libslic3r/Support/SupportSpotsGenerator.cpp similarity index 100% rename from src/libslic3r/SupportSpotsGenerator.cpp rename to src/libslic3r/Support/SupportSpotsGenerator.cpp diff --git a/src/libslic3r/SupportSpotsGenerator.hpp b/src/libslic3r/Support/SupportSpotsGenerator.hpp similarity index 100% rename from src/libslic3r/SupportSpotsGenerator.hpp rename to src/libslic3r/Support/SupportSpotsGenerator.hpp diff --git a/src/libslic3r/Support/TreeModelVolumes.cpp b/src/libslic3r/Support/TreeModelVolumes.cpp index d77400309b1..f082115ea30 100644 --- a/src/libslic3r/Support/TreeModelVolumes.cpp +++ b/src/libslic3r/Support/TreeModelVolumes.cpp @@ -26,7 +26,7 @@ #include #include -namespace Slic3r::FFFTreeSupport +namespace Slic3r::TreeSupport3D { using namespace std::literals; @@ -871,4 +871,4 @@ std::vector +#include "MinimumSpanningTree.hpp" #include "TreeSupport.hpp" -#include "TreeSupportCommon.hpp" -#include "SupportCommon.hpp" -#include "OrganicSupport.hpp" - -#include "../AABBTreeIndirect.hpp" -#include "../BuildVolume.hpp" -#include "../ClipperUtils.hpp" -#include "../EdgeGrid.hpp" -#include "../Fill/Fill.hpp" -#include "../Layer.hpp" -#include "../Print.hpp" -#include "../MultiPoint.hpp" -#include "../Polygon.hpp" -#include "../Polyline.hpp" -#include "../MutablePolygon.hpp" -#include "libslic3r.h" - -#include -#include -#include -#include -#include -#include -#include +#include "Print.hpp" +#include "Layer.hpp" +#include "Fill/FillBase.hpp" +#include "Fill/FillConcentric.hpp" +#include "CurveAnalyzer.hpp" +#include "SVG.hpp" +#include "ShortestPath.hpp" +#include "I18N.hpp" +#include #include - +#include #include -// #define TREESUPPORT_DEBUG_SVG +#define _L(s) Slic3r::I18N::translate(s) -using namespace Slic3r::FFFSupport; +#define USE_PLAN_LAYER_HEIGHTS 1 -namespace Slic3r -{ +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif +#ifndef SIGN +#define SIGN(x) (x>=0?1:-1) +#endif +#define TAU (2.0 * M_PI) +#define NO_INDEX (std::numeric_limits::max()) -namespace FFFTreeSupport -{ +// #define SUPPORT_TREE_DEBUG_TO_SVG -enum class LineStatus +#ifdef SUPPORT_TREE_DEBUG_TO_SVG +#include "nlohmann/json.hpp" +#endif +namespace Slic3r { - INVALID, - TO_MODEL, - TO_MODEL_GRACIOUS, - TO_MODEL_GRACIOUS_SAFE, - TO_BP, - TO_BP_SAFE -}; - -using LineInformation = std::vector>; -using LineInformations = std::vector; -using namespace std::literals; +#define unscale_(val) ((val) * SCALING_FACTOR) -static inline void validate_range(const Point &pt) +inline unsigned int round_divide(unsigned int dividend, unsigned int divisor) //!< Return dividend divided by divisor rounded to the nearest integer { - static constexpr const int32_t hi = 65536 * 16384; - if (pt.x() > hi || pt.y() > hi || -pt.x() > hi || -pt.y() > hi) - throw ClipperLib::clipperException("Coordinate outside allowed range"); + return (dividend + divisor / 2) / divisor; } - -static inline void validate_range(const Points &points) +inline unsigned int round_up_divide(unsigned int dividend, unsigned int divisor) //!< Return dividend divided by divisor rounded to the nearest integer { - for (const Point &p : points) - validate_range(p); + return (dividend + divisor - 1) / divisor; } -static inline void validate_range(const MultiPoint &mp) +inline double dot_with_unscale(const Point a, const Point b) { - validate_range(mp.points); + return unscale_(a(0)) * unscale_(b(0)) + unscale_(a(1)) * unscale_(b(1)); } -static inline void validate_range(const Polygons &polygons) +inline double vsize2_with_unscale(const Point pt) { - for (const Polygon &p : polygons) - validate_range(p); + return dot_with_unscale(pt, pt); } -static inline void validate_range(const Polylines &polylines) +inline Point turn90_ccw(const Point pt) { - for (const Polyline &p : polylines) - validate_range(p); -} + Point ret; -static inline void validate_range(const LineInformation &lines) -{ - for (const auto& p : lines) - validate_range(p.first); + ret(0) = -pt(1); + ret(1) = pt(0); + return ret; } -static inline void validate_range(const LineInformations &lines) +inline Point normal(Point pt, double scale) { - for (const LineInformation &l : lines) - validate_range(l); -} + double length = scale_(sqrt(vsize2_with_unscale(pt))); -static inline void check_self_intersections(const Polygons &polygons, const std::string_view message) -{ -#ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 - if (!intersecting_edges(polygons).empty()) - ::MessageBoxA(nullptr, (std::string("TreeSupport infill self intersections: ") + std::string(message)).c_str(), "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); -#endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 -} -static inline void check_self_intersections(const ExPolygon &expoly, const std::string_view message) -{ -#ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 - check_self_intersections(to_polygons(expoly), message); -#endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 + return pt * (scale / length); } -static std::vector>> group_meshes(const Print &print, const std::vector &print_object_ids) +enum TreeSupportStage { + STAGE_DETECT_OVERHANGS, + STAGE_GENERATE_CONTACT_NODES, + STAGE_DROP_DOWN_NODES, + STAGE_DRAW_CIRCLES, + STAGE_GENERATE_TOOLPATHS, + STAGE_MinimumSpanningTree, + STAGE_GET_AVOIDANCE, + STAGE_projection_onto_ex, + STAGE_get_collision, + STAGE_intersection_ln, + STAGE_total, + NUM_STAGES +}; + +class TreeSupportProfiler { - std::vector>> grouped_meshes; +public: + uint32_t stage_durations[NUM_STAGES]; + uint32_t stage_index = 0; + boost::posix_time::ptime tic_time; + boost::posix_time::ptime toc_time; - //FIXME this is ugly, it does not belong here. - for (size_t object_id : print_object_ids) { - const PrintObject &print_object = *print.get_object(object_id); - const PrintObjectConfig &object_config = print_object.config(); - if (object_config.support_top_z_distance < EPSILON) - // || min_feature_size < scaled(0.1) that is the minimum line width - TreeSupportSettings::soluble = true; + TreeSupportProfiler() + { + for (uint32_t& item : stage_durations) { + item = 0; + } } - size_t largest_printed_mesh_idx = 0; + void stage_start(TreeSupportStage stage) + { + if (stage > NUM_STAGES) + return; - // Group all meshes that can be processed together. NOTE this is different from mesh-groups! Only one setting object is needed per group, - // as different settings in the same group may only occur in the tip, which uses the original settings objects from the meshes. - for (size_t object_id : print_object_ids) { - const PrintObject &print_object = *print.get_object(object_id); + m_stage_start_times[stage] = boost::posix_time::microsec_clock::local_time(); + } - bool found_existing_group = false; - TreeSupportSettings next_settings{ TreeSupportMeshGroupSettings{ print_object }, print_object.slicing_parameters() }; - //FIXME for now only a single object per group is enabled. -#if 0 - for (size_t idx = 0; idx < grouped_meshes.size(); ++ idx) - if (next_settings == grouped_meshes[idx].first) { - found_existing_group = true; - grouped_meshes[idx].second.emplace_back(object_id); - // handle some settings that are only used for performance reasons. This ensures that a horrible set setting intended to improve performance can not reduce it drastically. - grouped_meshes[idx].first.performance_interface_skip_layers = std::min(grouped_meshes[idx].first.performance_interface_skip_layers, next_settings.performance_interface_skip_layers); - } -#endif - if (! found_existing_group) - grouped_meshes.emplace_back(next_settings, std::vector{ object_id }); + void stage_finish(TreeSupportStage stage) + { + if (stage > NUM_STAGES) + return; - // no need to do this per mesh group as adaptive layers and raft setting are not setable per mesh. - if (print.get_object(largest_printed_mesh_idx)->layers().back()->print_z < print_object.layers().back()->print_z) - largest_printed_mesh_idx = object_id; + boost::posix_time::ptime time = boost::posix_time::microsec_clock::local_time(); + stage_durations[stage] = (time - m_stage_start_times[stage]).total_milliseconds(); } -#if 0 + void tic() { tic_time = boost::posix_time::microsec_clock::local_time(); } + void toc() { toc_time = boost::posix_time::microsec_clock::local_time(); } + void stage_add(TreeSupportStage stage, bool do_toc = false) { - std::vector known_z(storage.meshes[largest_printed_mesh_idx].layers.size()); - for (size_t z = 0; z < storage.meshes[largest_printed_mesh_idx].layers.size(); z++) - known_z[z] = storage.meshes[largest_printed_mesh_idx].layers[z].printZ; - for (size_t idx = 0; idx < grouped_meshes.size(); ++ idx) - grouped_meshes[idx].first.setActualZ(known_z); + if (stage > NUM_STAGES) + return; + if(do_toc) + toc_time = boost::posix_time::microsec_clock::local_time(); + stage_durations[stage] += (toc_time - tic_time).total_milliseconds(); } -#endif - - return grouped_meshes; -} -#if 0 -// todo remove as only for debugging relevant -[[nodiscard]] static std::string getPolygonAsString(const Polygons& poly) -{ - std::string ret; - for (auto path : poly) - for (Point p : path) { - if (ret != "") - ret += ","; - ret += "(" + std::to_string(p.x()) + "," + std::to_string(p.y()) + ")"; - } - return ret; -} -#endif + std::string report() + { + std::stringstream ss; + ss << "total overhange cost: " << stage_durations[STAGE_total] + << "; STAGE_DETECT_OVERHANGS: " << stage_durations[STAGE_DETECT_OVERHANGS] + << "; STAGE_GENERATE_CONTACT_NODES: " << stage_durations[STAGE_GENERATE_CONTACT_NODES] + << "; STAGE_DROP_DOWN_NODES: " << stage_durations[STAGE_DROP_DOWN_NODES] + << "; STAGE_DRAW_CIRCLES: " << stage_durations[STAGE_DRAW_CIRCLES] + << "; STAGE_GENERATE_TOOLPATHS: " << stage_durations[STAGE_GENERATE_TOOLPATHS] + << "; STAGE_MinimumSpanningTree: " << stage_durations[STAGE_MinimumSpanningTree] + << "; STAGE_GET_AVOIDANCE: " << stage_durations[STAGE_GET_AVOIDANCE] + << "; STAGE_projection_onto_ex: " << stage_durations[STAGE_projection_onto_ex] + << "; STAGE_get_collision: " << stage_durations[STAGE_get_collision] + << "; STAGE_intersection_ln: " << stage_durations[STAGE_intersection_ln]; + + return ss.str(); + } +private: + boost::posix_time::ptime m_stage_start_times[NUM_STAGES]; +}; +TreeSupportProfiler profiler; -[[nodiscard]] static const std::vector generate_overhangs(const TreeSupportSettings &settings, const PrintObject &print_object, std::function throw_on_cancel) +Lines spanning_tree_to_lines(const std::vector& spanning_trees) { - const size_t num_raft_layers = settings.raft_layers.size(); - const size_t num_object_layers = print_object.layer_count(); - const size_t num_layers = num_object_layers + num_raft_layers; - std::vector out(num_layers, Polygons{}); - - const PrintConfig &print_config = print_object.print()->config(); - const PrintObjectConfig &config = print_object.config(); - const bool support_auto = config.enable_support.value && is_auto(config.support_type.value); - const int support_enforce_layers = config.enforce_support_layers.value; - std::vector enforcers_layers{ print_object.slice_support_enforcers() }; - std::vector blockers_layers{ print_object.slice_support_blockers() }; - print_object.project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers_layers); - print_object.project_and_append_custom_facets(false, EnforcerBlockerType::BLOCKER, blockers_layers); - const int support_threshold = config.support_threshold_angle.value; - const bool support_threshold_auto = support_threshold == 0; - // +1 makes the threshold inclusive - double tan_threshold = support_threshold_auto ? 0. : tan(M_PI * double(support_threshold + 1) / 180.); - //FIXME this is a fudge constant! - auto enforcer_overhang_offset = scaled(config.tree_support_tip_diameter.value); - - size_t num_overhang_layers = support_auto ? num_object_layers : std::min(num_object_layers, std::max(size_t(support_enforce_layers), enforcers_layers.size())); - tbb::parallel_for(tbb::blocked_range(1, num_overhang_layers), - [&print_object, &config, &print_config, &enforcers_layers, &blockers_layers, - support_auto, support_enforce_layers, support_threshold_auto, tan_threshold, enforcer_overhang_offset, num_raft_layers, &throw_on_cancel, &out] - (const tbb::blocked_range &range) { - for (LayerIndex layer_id = range.begin(); layer_id < range.end(); ++ layer_id) { - const Layer ¤t_layer = *print_object.get_layer(layer_id); - const Layer &lower_layer = *print_object.get_layer(layer_id - 1); - // Full overhangs with zero lower_layer_offset and no blockers applied. - Polygons raw_overhangs; - bool raw_overhangs_calculated = false; - // Final overhangs. - Polygons overhangs; - // For how many layers full overhangs shall be supported. - const bool enforced_layer = layer_id < support_enforce_layers; - if (support_auto || enforced_layer) { - float lower_layer_offset; - if (enforced_layer) - lower_layer_offset = 0; - else if (support_threshold_auto) { - float external_perimeter_width = 0; - for (const LayerRegion *layerm : lower_layer.regions()) - external_perimeter_width += layerm->flow(frExternalPerimeter).scaled_width(); - external_perimeter_width /= lower_layer.region_count(); - lower_layer_offset = float(0.5 * external_perimeter_width); - } else - lower_layer_offset = scaled(lower_layer.height / tan_threshold); - overhangs = lower_layer_offset == 0 ? - diff(current_layer.lslices, lower_layer.lslices) : - diff(current_layer.lslices, offset(lower_layer.lslices, lower_layer_offset)); - if (lower_layer_offset == 0) { - raw_overhangs = overhangs; - raw_overhangs_calculated = true; - } - if (! (enforced_layer || blockers_layers.empty() || blockers_layers[layer_id].empty())) { - Polygons &blocker = blockers_layers[layer_id]; - // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, - // which are not valid polygons, and will be removed by offset. union_ can make these polygons right. - overhangs = diff(overhangs, offset(union_(blocker), scale_(g_config_tree_support_collision_resolution)), ApplySafetyOffset::Yes); - } - if (config.bridge_no_support) { - for (const LayerRegion *layerm : current_layer.regions()) - remove_bridges_from_contacts(print_config, lower_layer, *layerm, - float(layerm->flow(frExternalPerimeter).scaled_width()), overhangs); - } - } - //check_self_intersections(overhangs, "generate_overhangs1"); - if (! enforcers_layers.empty() && ! enforcers_layers[layer_id].empty()) { - // Has some support enforcers at this layer, apply them to the overhangs, don't apply the support threshold angle. - //enforcers_layers[layer_id] = union_(enforcers_layers[layer_id]); - //check_self_intersections(enforcers_layers[layer_id], "generate_overhangs - enforcers"); - //check_self_intersections(to_polygons(lower_layer.lslices), "generate_overhangs - lowerlayers"); - if (Polygons enforced_overhangs = intersection(raw_overhangs_calculated ? raw_overhangs : diff(current_layer.lslices, lower_layer.lslices), enforcers_layers[layer_id] /*, ApplySafetyOffset::Yes */); - ! enforced_overhangs.empty()) { - //FIXME this is a hack to make enforcers work on steep overhangs. - //check_self_intersections(enforced_overhangs, "generate_overhangs - enforced overhangs1"); - //Polygons enforced_overhangs_prev = enforced_overhangs; - //check_self_intersections(to_polygons(union_ex(enforced_overhangs)), "generate_overhangs - enforced overhangs11"); - //check_self_intersections(offset(union_ex(enforced_overhangs), - //FIXME enforcer_overhang_offset is a fudge constant! - enforced_overhangs = diff(offset(union_ex(enforced_overhangs), enforcer_overhang_offset), - lower_layer.lslices); -#ifdef TREESUPPORT_DEBUG_SVG -// if (! intersecting_edges(enforced_overhangs).empty()) - { - static int irun = 0; - SVG::export_expolygons(debug_out_path("treesupport-self-intersections-%d.svg", ++irun), - { { { current_layer.lslices }, { "current_layer.lslices", "yellow", 0.5f } }, - { { lower_layer.lslices }, { "lower_layer.lslices", "gray", 0.5f } }, - { { union_ex(enforced_overhangs) }, { "enforced_overhangs", "red", "black", "", scaled(0.1f), 0.5f } } }); - } -#endif // TREESUPPORT_DEBUG_SVG - //check_self_intersections(enforced_overhangs, "generate_overhangs - enforced overhangs2"); - overhangs = overhangs.empty() ? std::move(enforced_overhangs) : union_(overhangs, enforced_overhangs); - //check_self_intersections(overhangs, "generate_overhangs - enforcers"); - } - } - out[layer_id + num_raft_layers] = std::move(overhangs); - throw_on_cancel(); - } - }); - -#if 0 - if (num_raft_layers > 0) { - const Layer &first_layer = *print_object.get_layer(0); - // Final overhangs. - Polygons overhangs = - // Don't apply blockes on raft layer. - //(! blockers_layers.empty() && ! blockers_layers[layer_id].empty() ? - // diff(first_layer.lslices, blockers_layers[layer_id], ApplySafetyOffset::Yes) : - to_polygons(first_layer.lslices); -#if 0 - if (! enforcers_layers.empty() && ! enforcers_layers[layer_id].empty()) { - if (Polygons enforced_overhangs = intersection(first_layer.lslices, enforcers_layers[layer_id] /*, ApplySafetyOffset::Yes */); - ! enforced_overhangs.empty()) { - //FIXME this is a hack to make enforcers work on steep overhangs. - //FIXME enforcer_overhang_offset is a fudge constant! - enforced_overhangs = offset(union_ex(enforced_overhangs), enforcer_overhang_offset); - overhangs = overhangs.empty() ? std::move(enforced_overhangs) : union_(overhangs, enforced_overhangs); - } - } -#endif - out[num_raft_layers] = std::move(overhangs); - throw_on_cancel(); - } -#endif + Lines polylines; + for (const MinimumSpanningTree& mst : spanning_trees) { + std::vector points = mst.vertices(); + std::unordered_set to_ignore; + for (Point pt1 : points) { + if (to_ignore.find(pt1) != to_ignore.end()) + continue; - return out; -} + const std::vector& neighbours = mst.adjacent_nodes(pt1); + if (neighbours.empty()) + continue; -/*! - * \brief Precalculates all avoidances, that could be required. - * - * \param storage[in] Background storage to access meshes. - * \param currently_processing_meshes[in] Indexes of all meshes that are processed in this iteration - */ -[[nodiscard]] static LayerIndex precalculate(const Print &print, const std::vector &overhangs, const TreeSupportSettings &config, const std::vector &object_ids, TreeModelVolumes &volumes, std::function throw_on_cancel) -{ - // calculate top most layer that is relevant for support - LayerIndex max_layer = 0; - for (size_t object_id : object_ids) { - const PrintObject &print_object = *print.get_object(object_id); - const int num_raft_layers = int(config.raft_layers.size()); - const int num_layers = int(print_object.layer_count()) + num_raft_layers; - int max_support_layer_id = 0; - for (int layer_id = std::max(num_raft_layers, 1); layer_id < num_layers; ++ layer_id) - if (! overhangs[layer_id].empty()) - max_support_layer_id = layer_id; - max_layer = std::max(max_support_layer_id - int(config.z_distance_top_layers), 0); - } - if (max_layer > 0) - // The actual precalculation happens in TreeModelVolumes. - volumes.precalculate(*print.get_object(object_ids.front()), max_layer, throw_on_cancel); - return max_layer; -} + for (Point pt2 : neighbours) { + if (to_ignore.find(pt2) != to_ignore.end()) + continue; -/*! - * \brief Converts a Polygons object representing a line into the internal format. - * - * \param polylines[in] The Polyline that will be converted. - * \param layer_idx[in] The current layer. - * \return All lines of the \p polylines object, with information for each point regarding in which avoidance it is currently valid in. - */ -// Called by generate_initial_areas() -[[nodiscard]] static LineInformations convert_lines_to_internal( - const TreeModelVolumes &volumes, const TreeSupportSettings &config, - const Polylines &polylines, LayerIndex layer_idx) -{ - const bool min_xy_dist = config.xy_distance > config.xy_min_distance; - - LineInformations result; - // Also checks if the position is valid, if it is NOT, it deletes that point - for (const Polyline &line : polylines) { - LineInformation res_line; - for (Point p : line) { - if (! contains(volumes.getAvoidance(config.getRadius(0), layer_idx, TreeModelVolumes::AvoidanceType::FastSafe, false, min_xy_dist), p)) - res_line.emplace_back(p, LineStatus::TO_BP_SAFE); - else if (! contains(volumes.getAvoidance(config.getRadius(0), layer_idx, TreeModelVolumes::AvoidanceType::Fast, false, min_xy_dist), p)) - res_line.emplace_back(p, LineStatus::TO_BP); - else if (config.support_rests_on_model && ! contains(volumes.getAvoidance(config.getRadius(0), layer_idx, TreeModelVolumes::AvoidanceType::FastSafe, true, min_xy_dist), p)) - res_line.emplace_back(p, LineStatus::TO_MODEL_GRACIOUS_SAFE); - else if (config.support_rests_on_model && ! contains(volumes.getAvoidance(config.getRadius(0), layer_idx, TreeModelVolumes::AvoidanceType::Fast, true, min_xy_dist), p)) - res_line.emplace_back(p, LineStatus::TO_MODEL_GRACIOUS); - else if (config.support_rests_on_model && ! contains(volumes.getCollision(config.getRadius(0), layer_idx, min_xy_dist), p)) - res_line.emplace_back(p, LineStatus::TO_MODEL); - else if (!res_line.empty()) { - result.emplace_back(res_line); - res_line.clear(); + Line line(pt1, pt2); + polylines.push_back(line); } - } - if (!res_line.empty()) { - result.emplace_back(res_line); - res_line.clear(); + + to_ignore.insert(pt1); } } - - validate_range(result); - return result; + return polylines; } -#if 0 -/*! - * \brief Converts lines in internal format into a Polygons object representing these lines. - * - * \param lines[in] The lines that will be converted. - * \return All lines of the \p lines object as a Polygons object. - */ -[[nodiscard]] static Polylines convert_internal_to_lines(LineInformations lines) -{ - Polylines result; - for (LineInformation line : lines) { - Polyline path; - for (auto point_data : line) - path.points.emplace_back(point_data.first); - result.emplace_back(std::move(path)); - } - validate_range(result); - return result; -} -#endif -/*! - * \brief Evaluates if a point has to be added now. Required for a split_lines call in generate_initial_areas(). - * - * \param current_layer[in] The layer on which the point lies, point and its status. - * \return whether the point is valid. - */ -[[nodiscard]] static bool evaluate_point_for_next_layer_function( - const TreeModelVolumes &volumes, const TreeSupportSettings &config, - size_t current_layer, const std::pair &p) +#ifdef SUPPORT_TREE_DEBUG_TO_SVG +static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag = "bbl_ts") { - using AvoidanceType = TreeModelVolumes::AvoidanceType; - const bool min_xy_dist = config.xy_distance > config.xy_min_distance; - if (! contains(volumes.getAvoidance(config.getRadius(0), current_layer - 1, p.second == LineStatus::TO_BP_SAFE ? AvoidanceType::FastSafe : AvoidanceType::Fast, false, min_xy_dist), p.first)) - return true; - if (config.support_rests_on_model && (p.second != LineStatus::TO_BP && p.second != LineStatus::TO_BP_SAFE)) - return ! contains( - p.second == LineStatus::TO_MODEL_GRACIOUS || p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE ? - volumes.getAvoidance(config.getRadius(0), current_layer - 1, p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE ? AvoidanceType::FastSafe : AvoidanceType::Fast, true, min_xy_dist) : - volumes.getCollision(config.getRadius(0), current_layer - 1, min_xy_dist), - p.first); - return false; -} + static bool rand_init = false; -/*! - * \brief Evaluates which points of some lines are not valid one layer below and which are. Assumes all points are valid on the current layer. Validity is evaluated using supplied lambda. - * - * \param lines[in] The lines that have to be evaluated. - * \param evaluatePoint[in] The function used to evaluate the points. - * \return A pair with which points are still valid in the first slot and which are not in the second slot. - */ -template -[[nodiscard]] static std::pair split_lines(const LineInformations &lines, EvaluatePointFn evaluatePoint) -{ - // assumes all Points on the current line are valid - - LineInformations keep; - LineInformations set_free; - for (const std::vector> &line : lines) { - bool current_keep = true; - LineInformation resulting_line; - for (const std::pair &me : line) { - if (evaluatePoint(me) != current_keep) { - if (! resulting_line.empty()) - (current_keep ? &keep : &set_free)->emplace_back(std::move(resulting_line)); - current_keep = !current_keep; - } - resulting_line.emplace_back(me); - } - if (! resulting_line.empty()) - (current_keep ? &keep : &set_free)->emplace_back(std::move(resulting_line)); + if (!rand_init) { + srand(time(NULL)); + rand_init = true; } - validate_range(keep); - validate_range(set_free); - return std::pair>>, std::vector>>>(keep, set_free); + + int rand_num = rand() % 1000000; + //makedir("./SVG"); + std::string prefix = "./SVG/"; + std::string suffix = ".svg"; + return prefix + tag + "_" + layer_nr_or_z /*+ "_" + std::to_string(rand_num)*/ + suffix; } -// Ported from CURA's PolygonUtils::getNextPointWithDistance() -// Sample a next point at distance "dist" from start_pt on polyline segment (start_idx, start_idx + 1). -// Returns sample point and start index of its segment on polyline if such sample exists. -static std::optional> polyline_sample_next_point_at_distance(const Points &polyline, const Point &start_pt, size_t start_idx, double dist) +static void draw_contours_and_nodes_to_svg +( + std::string layer_nr_or_z, + const ExPolygons &overhangs, + const ExPolygons &overhangs_after_offset, + const ExPolygons &outlines_below, + const std::vector &layer_nodes, + const std::vector &lower_layer_nodes, + std::string name_prefix, + std::vector legends = { "overhang","avoid","outlines" }, std::vector colors = { "blue","red","yellow" } +) { - const double dist2 = sqr(dist); - const auto dist2i = int64_t(dist2); - const auto eps = scaled(0.01); - - for (size_t i = start_idx + 1; i < polyline.size(); ++ i) { - const Point p1 = polyline[i]; - if ((p1 - start_pt).cast().squaredNorm() >= dist2i) { - // The end point is outside the circle with center "start_pt" and radius "dist". - const Point p0 = polyline[i - 1]; - Vec2d v = (p1 - p0).cast(); - double l2v = v.squaredNorm(); - if (l2v < sqr(eps)) { - // Very short segment. - Point c = (p0 + p1) / 2; - if (std::abs((start_pt - c).cast().norm() - dist) < eps) - return std::pair{ c, i - 1 }; - else - continue; - } - Vec2d p0f = (start_pt - p0).cast(); - // Foot point of start_pt into v. - Vec2d foot_pt = v * (p0f.dot(v) / l2v); - // Vector from foot point of "start_pt" to "start_pt". - Vec2d xf = p0f - foot_pt; - // Squared distance of "start_pt" from the ray (p0, p1). - double l2_from_line = xf.squaredNorm(); - // Squared distance of an intersection point of a circle with center at the foot point. - if (double l2_intersection = dist2 - l2_from_line; - l2_intersection > - SCALED_EPSILON) { - // The ray (p0, p1) touches or intersects a circle centered at "start_pt" with radius "dist". - // Distance of the circle intersection point from the foot point. - l2_intersection = std::max(l2_intersection, 0.); - if ((v - foot_pt).cast().squaredNorm() >= l2_intersection) { - // Intersection of the circle with the segment (p0, p1) is on the right side (close to p1) from the foot point. - Point p = p0 + (foot_pt + v * sqrt(l2_intersection / l2v)).cast(); - validate_range(p); - return std::pair{ p, i - 1 }; - } - } - } + BoundingBox bbox = get_extents(overhangs); + bbox.merge(get_extents(overhangs_after_offset)); + bbox.merge(get_extents(outlines_below)); + Points layer_pts; + for (TreeSupport::Node* node : layer_nodes) { + layer_pts.push_back(node->position); } - return {}; -} + bbox.merge(get_extents(layer_pts)); + bbox.inflated(scale_(1)); + bbox.max.x() = std::max(bbox.max.x(), (coord_t)scale_(10)); + bbox.max.y() = std::max(bbox.max.y(), (coord_t)scale_(10)); + + SVG svg; + if(!layer_nr_or_z.empty()) + svg.open(get_svg_filename(layer_nr_or_z, name_prefix), bbox); + else + svg.open(name_prefix, bbox); + if (!svg.is_opened()) return; -/*! - * \brief Eensures that every line segment is about distance in length. The resulting lines may differ from the original but all points are on the original - * - * \param input[in] The lines on which evenly spaced points should be placed. - * \param distance[in] The distance the points should be from each other. - * \param min_points[in] The amount of points that have to be placed. If not enough can be placed the distance will be reduced to place this many points. - * \return A Polygons object containing the evenly spaced points. Does not represent an area, more a collection of points on lines. - */ -[[nodiscard]] static Polylines ensure_maximum_distance_polyline(const Polylines &input, double distance, size_t min_points) -{ - Polylines result; - for (Polyline part : input) { - if (part.empty()) - continue; + // draw grid + svg.draw_grid(bbox, "gray", coord_t(scale_(0.05))); - double len = length(part.points); - Polyline line; - double current_distance = std::max(distance, scaled(0.1)); - if (len < 2 * distance && min_points <= 1) - { - // Insert the opposite point of the first one. - //FIXME pretty expensive - Polyline pl(part); - pl.clip_end(len / 2); - line.points.emplace_back(pl.points.back()); - } - else - { - size_t optimal_end_index = part.size() - 1; - - if (part.front() == part.back()) { - size_t optimal_start_index = 0; - // If the polyline was a polygon, there is a high chance it was an overhang. Overhangs that are <60� tend to be very thin areas, so lets get the beginning and end of them and ensure that they are supported. - // The first point of the line will always be supported, so rotate the order of points in this polyline that one of the two corresponding points that are furthest from each other is in the beginning. - // The other will be manually added (optimal_end_index) - coord_t max_dist2_between_vertecies = 0; - for (size_t idx = 0; idx < part.size() - 1; ++ idx) { - for (size_t inner_idx = 0; inner_idx < part.size() - 1; inner_idx++) { - if ((part[idx] - part[inner_idx]).cast().squaredNorm() > max_dist2_between_vertecies) { - optimal_start_index = idx; - optimal_end_index = inner_idx; - max_dist2_between_vertecies = (part[idx] - part[inner_idx]).cast().squaredNorm(); - } - } - } - std::rotate(part.begin(), part.begin() + optimal_start_index, part.end() - 1); - part[part.size() - 1] = part[0]; // restore that property that this polyline ends where it started. - optimal_end_index = (part.size() + optimal_end_index - optimal_start_index - 1) % (part.size() - 1); - } + // draw overhang areas + svg.draw_outline(union_ex(overhangs), colors[0]); + svg.draw_outline(union_ex(overhangs_after_offset), colors[1]); + svg.draw_outline(outlines_below, colors[2]); - while (line.size() < min_points && current_distance >= scaled(0.1)) - { - line.clear(); - Point current_point = part[0]; - line.points.emplace_back(part[0]); - if (min_points > 1 || (part[0] - part[optimal_end_index]).cast().norm() > current_distance) - line.points.emplace_back(part[optimal_end_index]); - size_t current_index = 0; - std::optional> next_point; - double next_distance = current_distance; - // Get points so that at least min_points are added and they each are current_distance away from each other. If that is impossible, decrease current_distance a bit. - // The input are lines, that means that the line from the last to the first vertex does not have to exist, so exclude all points that are on this line! - while ((next_point = polyline_sample_next_point_at_distance(part.points, current_point, current_index, next_distance))) { - // Not every point that is distance away, is valid, as it may be much closer to another point. This is especially the case when the overhang is very thin. - // So this ensures that the points are actually a certain distance from each other. - // This assurance is only made on a per polygon basis, as different but close polygon may not be able to use support below the other polygon. - double min_distance_to_existing_point = std::numeric_limits::max(); - for (Point p : line) - min_distance_to_existing_point = std::min(min_distance_to_existing_point, (p - next_point->first).cast().norm()); - if (min_distance_to_existing_point >= current_distance) { - // viable point was found. Add to possible result. - line.points.emplace_back(next_point->first); - current_point = next_point->first; - current_index = next_point->second; - next_distance = current_distance; - } else { - if (current_point == next_point->first) { - // In case a fixpoint is encountered, better aggressively overcompensate so the code does not become stuck here... - BOOST_LOG_TRIVIAL(warning) << "Tree Support: Encountered a fixpoint in polyline_sample_next_point_at_distance. This is expected to happen if the distance (currently " << next_distance << - ") is smaller than 100"; - tree_supports_show_error("Encountered issue while placing tips. Some tips may be missing."sv, true); - if (next_distance > 2 * current_distance) - // This case should never happen, but better safe than sorry. - break; - next_distance += current_distance; - continue; - } - // if the point was too close, the next possible viable point is at least distance-min_distance_to_existing_point away from the one that was just checked. - next_distance = std::max(current_distance - min_distance_to_existing_point, scaled(0.1)); - current_point = next_point->first; - current_index = next_point->second; - } - } - current_distance *= 0.9; - } - } - result.emplace_back(std::move(line)); + // draw legend + if (!lower_layer_nodes.empty()) { + svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), format("nPoints: %1%->%2%",layer_nodes.size(), lower_layer_nodes.size()).c_str(), "green", 2); } - validate_range(result); - return result; -} + else { + svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), ("nPoints: " + std::to_string(layer_nodes.size())).c_str(), "green", 2); + } + svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), legends[0].c_str(), colors[0].c_str(), 2); + svg.draw_text(bbox.min + Point(scale_(0), scale_(4)), legends[1].c_str(), colors[1].c_str(), 2); + svg.draw_text(bbox.min + Point(scale_(0), scale_(6)), legends[2].c_str(), colors[2].c_str(), 2); -/*! - * \brief Returns Polylines representing the (infill) lines that will result in slicing the given area - * - * \param area[in] The area that has to be filled with infill. - * \param roof[in] Whether the roofing or regular support settings should be used. - * \param layer_idx[in] The current layer index. - * \param support_infill_distance[in] The distance that should be between the infill lines. - * - * \return A Polygons object that represents the resulting infill lines. - */ -[[nodiscard]] static Polylines generate_support_infill_lines( - // Polygon to fill in with a zig-zag pattern supporting an overhang. - const Polygons &polygon, - const SupportParameters &support_params, - bool roof, LayerIndex layer_idx, coord_t support_infill_distance) -{ + // draw layer nodes + svg.draw(layer_pts, "green", coord_t(scale_(0.1))); #if 0 - Polygons gaps; - // as we effectivly use lines to place our supportPoints we may use the Infill class for it, while not made for it it works perfect - - const EFillMethod pattern = roof ? config.roof_pattern : config.support_pattern; - -// const bool zig_zaggify_infill = roof ? pattern == EFillMethod::ZIG_ZAG : config.zig_zaggify_support; - const bool connect_polygons = false; - constexpr coord_t support_roof_overlap = 0; - constexpr size_t infill_multiplier = 1; - constexpr coord_t outline_offset = 0; - const int support_shift = roof ? 0 : support_infill_distance / 2; - const size_t wall_line_count = include_walls && !roof ? config.support_wall_count : 0; - const Point infill_origin; - constexpr Polygons* perimeter_gaps = nullptr; - constexpr bool use_endpieces = true; - const bool connected_zigzags = roof ? false : config.connect_zigzags; - const size_t zag_skip_count = roof ? 0 : config.zag_skip_count; - constexpr coord_t pocket_size = 0; - std::vector angles = roof ? config.support_roof_angles : config.support_infill_angles; - std::vector toolpaths; - - const coord_t z = config.getActualZ(layer_idx); - int divisor = static_cast(angles.size()); - int index = ((layer_idx % divisor) + divisor) % divisor; - const AngleRadians fill_angle = angles[index]; - Infill roof_computation(pattern, true /* zig_zaggify_infill */, connect_polygons, polygon, - roof ? config.support_roof_line_width : config.support_line_width, support_infill_distance, support_roof_overlap, infill_multiplier, - fill_angle, z, support_shift, config.resolution, wall_line_count, infill_origin, - perimeter_gaps, connected_zigzags, use_endpieces, false /* skip_some_zags */, zag_skip_count, pocket_size); - Polygons polygons; - Polygons lines; - roof_computation.generate(toolpaths, polygons, lines, config.settings); - append(lines, to_polylines(polygons)); - return lines; -#else -// const bool connected_zigzags = roof ? false : config.connect_zigzags; -// const int support_shift = roof ? 0 : support_infill_distance / 2; - - const Flow &flow = roof ? support_params.support_material_interface_flow : support_params.support_material_flow; - std::unique_ptr filler = std::unique_ptr(Fill::new_from_type(roof ? support_params.interface_fill_pattern : support_params.base_fill_pattern)); - FillParams fill_params; - - filler->layer_id = layer_idx; - filler->spacing = flow.spacing(); - filler->angle = roof ? - //fixme support_layer.interface_id() instead of layer_idx - (support_params.interface_angle + (layer_idx & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.)) : - support_params.base_angle; - - fill_params.density = float(roof ? support_params.interface_density : scaled(filler->spacing) / (scaled(filler->spacing) + float(support_infill_distance))); - fill_params.dont_adjust = true; + // lower layer points + layer_pts.clear(); + for (TreeSupport::Node *node : lower_layer_nodes) { + layer_pts.push_back(node->position); + } + svg.draw(layer_pts, "black", coord_t(scale_(0.1))); - Polylines out; - for (ExPolygon &expoly : union_ex(polygon)) { - // The surface type does not matter. - assert(area(expoly) > 0.); -#ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 - if (area(expoly) <= 0.) - ::MessageBoxA(nullptr, "TreeSupport infill negative area", "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); -#endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 - assert(intersecting_edges(to_polygons(expoly)).empty()); - check_self_intersections(expoly, "generate_support_infill_lines"); - Surface surface(stInternal, std::move(expoly)); - try { - Polylines pl = filler->fill_surface(&surface, fill_params); - assert(pl.empty() || get_extents(surface.expolygon).inflated(SCALED_EPSILON).contains(get_extents(pl))); -#ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 - if (! pl.empty() && ! get_extents(surface.expolygon).inflated(SCALED_EPSILON).contains(get_extents(pl))) - ::MessageBoxA(nullptr, "TreeSupport infill failure", "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); -#endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 - append(out, std::move(pl)); - } catch (InfillFailedException &) { - } - } - validate_range(out); - return out; + // higher layer points + layer_pts.clear(); + for (TreeSupport::Node* node : layer_nodes) { + if(node->parent) + layer_pts.push_back(node->parent->position); + } + svg.draw(layer_pts, "blue", coord_t(scale_(0.1))); #endif } -/*! - * \brief Unions two Polygons. Ensures that if the input is non empty that the output also will be non empty. - * \param first[in] The first Polygon. - * \param second[in] The second Polygon. - * \return The union of both Polygons - */ -[[nodiscard]] static Polygons safe_union(const Polygons first, const Polygons second = {}) +static void draw_layer_mst +(const std::string &layer_nr_or_z, + const std::vector &spanning_trees, + const ExPolygons& outline +) { - // unionPolygons can slowly remove Polygons under certain circumstances, because of rounding issues (Polygons that have a thin area). - // This does not cause a problem when actually using it on large areas, but as influence areas (representing centerpoints) can be very thin, this does occur so this ugly workaround is needed - // Here is an example of a Polygons object that will loose vertices when unioning, and will be gone after a few times unionPolygons was called: - /* - Polygons example; - Polygon exampleInner; - exampleInner.add(Point(120410,83599));//A - exampleInner.add(Point(120384,83643));//B - exampleInner.add(Point(120399,83618));//C - exampleInner.add(Point(120414,83591));//D - exampleInner.add(Point(120423,83570));//E - exampleInner.add(Point(120419,83580));//F - example.add(exampleInner); - for(int i=0;i<10;i++){ - log("Iteration %d Example area: %f\n",i,area(example)); - example=example.unionPolygons(); - } -*/ - - Polygons result; - if (! first.empty() || ! second.empty()) { - result = union_(first, second); - if (result.empty()) { - BOOST_LOG_TRIVIAL(debug) << "Caught an area destroying union, enlarging areas a bit."; - // just take the few lines we have, and offset them a tiny bit. Needs to be offsetPolylines, as offset may aleady have problems with the area. - result = union_(offset(to_polylines(first), scaled(0.002), jtMiter, 1.2), offset(to_polylines(second), scaled(0.002), jtMiter, 1.2)); - } + auto lines = spanning_tree_to_lines(spanning_trees); + BoundingBox bbox = get_extents(lines); + for (auto& poly : outline) + { + BoundingBox bb = poly.contour.bounding_box(); + bbox.merge(bb); } - - return result; -} - -/*! - * \brief Offsets (increases the area of) a polygons object in multiple steps to ensure that it does not lag through over a given obstacle. - * \param me[in] Polygons object that has to be offset. - * \param distance[in] The distance by which me should be offset. Expects values >=0. - * \param collision[in] The area representing obstacles. - * \param last_step_offset_without_check[in] The most it is allowed to offset in one step. - * \param min_amount_offset[in] How many steps have to be done at least. As this uses round offset this increases the amount of vertices, which may be required if Polygons get very small. Required as arcTolerance is not exposed in offset, which should result with a similar result. - * \return The resulting Polygons object. - */ -[[nodiscard]] static Polygons safe_offset_inc(const Polygons& me, coord_t distance, const Polygons& collision, coord_t safe_step_size, coord_t last_step_offset_without_check, size_t min_amount_offset) -{ - bool do_final_difference = last_step_offset_without_check == 0; - Polygons ret = safe_union(me); // ensure sane input - - // Trim the collision polygons with the region of interest for diff() efficiency. - Polygons collision_trimmed_buffer; - auto collision_trimmed = [&collision_trimmed_buffer, &collision, &ret, distance]() -> const Polygons& { - if (collision_trimmed_buffer.empty() && ! collision.empty()) - collision_trimmed_buffer = ClipperUtils::clip_clipper_polygons_with_subject_bbox(collision, get_extents(ret).inflated(std::max((coord_t)0, distance) + SCALED_EPSILON)); - return collision_trimmed_buffer; - }; - if (distance == 0) - return do_final_difference ? diff(ret, collision_trimmed()) : union_(ret); - if (safe_step_size < 0 || last_step_offset_without_check < 0) { - BOOST_LOG_TRIVIAL(error) << "Offset increase got invalid parameter!"; - tree_supports_show_error("Negative offset distance... How did you manage this ?"sv, true); - return do_final_difference ? diff(ret, collision_trimmed()) : union_(ret); - } + SVG svg(get_svg_filename(layer_nr_or_z, "mstree").c_str(), bbox); + if (!svg.is_opened()) return; - coord_t step_size = safe_step_size; - int steps = distance > last_step_offset_without_check ? (distance - last_step_offset_without_check) / step_size : 0; - if (distance - steps * step_size > last_step_offset_without_check) { - if ((steps + 1) * step_size <= distance) - // This will be the case when last_step_offset_without_check >= safe_step_size - ++ steps; - else - do_final_difference = true; - } - if (steps + (distance < last_step_offset_without_check || (distance % step_size) != 0) < int(min_amount_offset) && min_amount_offset > 1) { - // yes one can add a bool as the standard specifies that a result from compare operators has to be 0 or 1 - // reduce the stepsize to ensure it is offset the required amount of times - step_size = distance / min_amount_offset; - if (step_size >= safe_step_size) { - // effectivly reduce last_step_offset_without_check - step_size = safe_step_size; - steps = min_amount_offset; - } else - steps = distance / step_size; - } - // offset in steps - for (int i = 0; i < steps; ++ i) { - ret = diff(offset(ret, step_size, ClipperLib::jtRound, scaled(0.01)), collision_trimmed()); - // ensure that if many offsets are done the performance does not suffer extremely by the new vertices of jtRound. - if (i % 10 == 7) - ret = polygons_simplify(ret, scaled(0.015), polygons_strictly_simple); - } - // offset the remainder - float last_offset = distance - steps * step_size; - if (last_offset > SCALED_EPSILON) - ret = offset(ret, distance - steps * step_size, ClipperLib::jtRound, scaled(0.01)); - ret = polygons_simplify(ret, scaled(0.015), polygons_strictly_simple); - - if (do_final_difference) - ret = diff(ret, collision_trimmed()); - return union_(ret); + svg.draw(lines, "blue", coord_t(scale_(0.05))); + svg.draw_outline(outline, "yellow"); + for (auto &spanning_tree : spanning_trees) + svg.draw(spanning_tree.vertices(), "black", coord_t(scale_(0.1))); } -class RichInterfacePlacer : public InterfacePlacer { -public: - RichInterfacePlacer( - const InterfacePlacer &interface_placer, - const TreeModelVolumes &volumes, - bool force_tip_to_roof, - size_t num_support_layers, - std::vector &move_bounds) - : - InterfacePlacer(interface_placer), - volumes(volumes), force_tip_to_roof(force_tip_to_roof), move_bounds(move_bounds) - { - m_already_inserted.assign(num_support_layers, {}); - this->min_xy_dist = this->config.xy_distance > this->config.xy_min_distance; - m_base_radius = scaled(0.01); - m_base_circle = Polygon{ make_circle(m_base_radius, SUPPORT_TREE_CIRCLE_RESOLUTION) }; - - } - const TreeModelVolumes &volumes; - // Radius of the tree tip is large enough to be covered by an interface. - const bool force_tip_to_roof; - bool min_xy_dist; +static void draw_two_overhangs_to_svg(SupportLayer* ts_layer, const ExPolygons& overhangs1, const ExPolygons& overhangs2) +{ + if (overhangs1.empty() && overhangs2.empty()) + return; + BoundingBox bbox1 = get_extents(overhangs1); + BoundingBox bbox2 = get_extents(overhangs2); + bbox1.merge(bbox2); -public: - // called by sample_overhang_area() - void add_points_along_lines( - // Insert points (tree tips or top contact interfaces) along these lines. - LineInformations lines, - // Start at this layer. - LayerIndex insert_layer_idx, - // Insert this number of interface layers. - size_t roof_tip_layers, - // True if an interface is already generated above these lines. - size_t supports_roof_layers, - // The element tries to not move until this dtt is reached. - size_t dont_move_until) - { - validate_range(lines); - // Add tip area as roof (happens when minimum roof area > minimum tip area) if possible - size_t dtt_roof_tip; - for (dtt_roof_tip = 0; dtt_roof_tip < roof_tip_layers && insert_layer_idx - dtt_roof_tip >= 1; ++ dtt_roof_tip) { - size_t this_layer_idx = insert_layer_idx - dtt_roof_tip; - auto evaluateRoofWillGenerate = [&](const std::pair &p) { - //FIXME Vojtech: The circle is just shifted, it has a known size, the infill should fit all the time! - #if 0 - Polygon roof_circle; - for (Point corner : base_circle) - roof_circle.points.emplace_back(p.first + corner * config.min_radius); - return !generate_support_infill_lines({ roof_circle }, config, true, insert_layer_idx - dtt_roof_tip, config.support_roof_line_distance).empty(); - #else - return true; - #endif - }; + SVG svg(get_svg_filename(std::to_string(ts_layer->print_z), "two_overhangs"), bbox1); + if (!svg.is_opened()) return; - { - std::pair split = - // keep all lines that are still valid on the next layer - split_lines(lines, [this, this_layer_idx](const std::pair &p) - { return evaluate_point_for_next_layer_function(volumes, config, this_layer_idx, p); }); - LineInformations points = std::move(split.second); - // Not all roofs are guaranteed to actually generate lines, so filter these out and add them as points. - split = split_lines(split.first, evaluateRoofWillGenerate); - lines = std::move(split.first); - append(points, split.second); - // add all points that would not be valid - for (const LineInformation &line : points) - for (const std::pair &point_data : line) - add_point_as_influence_area(point_data, this_layer_idx, - // don't move until - roof_tip_layers - dtt_roof_tip, - // supports roof - dtt_roof_tip + supports_roof_layers > 0, - // disable ovalization - false); - } + svg.draw(union_ex(overhangs1), "blue"); + svg.draw(union_ex(overhangs2), "red"); +} - // add all tips as roof to the roof storage - Polygons new_roofs; - for (const LineInformation &line : lines) - //FIXME sweep the tip radius along the line? - for (const std::pair &p : line) { - Polygon roof_circle{ m_base_circle }; - roof_circle.scale(config.min_radius / m_base_radius); - roof_circle.translate(p.first); - new_roofs.emplace_back(std::move(roof_circle)); - } - this->add_roof(std::move(new_roofs), this_layer_idx, dtt_roof_tip + supports_roof_layers); - } +static void draw_polylines(SupportLayer* ts_layer, Polylines& polylines) +{ + if (polylines.empty()) + return; + BoundingBox bbox = get_extents(polylines); - for (const LineInformation &line : lines) { - // If a line consists of enough tips, the assumption is that it is not a single tip, but part of a simulated support pattern. - // Ovalisation should be disabled for these to improve the quality of the lines when tip_diameter=line_width - bool disable_ovalistation = config.min_radius < 3 * config.support_line_width && roof_tip_layers == 0 && dtt_roof_tip == 0 && line.size() > 5; - for (const std::pair &point_data : line) - add_point_as_influence_area(point_data, insert_layer_idx - dtt_roof_tip, - // don't move until - dont_move_until > dtt_roof_tip ? dont_move_until - dtt_roof_tip : 0, - // supports roof - dtt_roof_tip + supports_roof_layers > 0, - disable_ovalistation); - } - } + SVG svg(get_svg_filename(std::to_string(ts_layer->print_z), "lightnings"), bbox); + if (!svg.is_opened()) return; -private: - // called by this->add_points_along_lines() - void add_point_as_influence_area(std::pair p, LayerIndex insert_layer, size_t dont_move_until, bool roof, bool skip_ovalisation) + int id = 0; + for (Polyline& pline : polylines) { - bool to_bp = p.second == LineStatus::TO_BP || p.second == LineStatus::TO_BP_SAFE; - bool gracious = to_bp || p.second == LineStatus::TO_MODEL_GRACIOUS || p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE; - bool safe_radius = p.second == LineStatus::TO_BP_SAFE || p.second == LineStatus::TO_MODEL_GRACIOUS_SAFE; - if (! config.support_rests_on_model && ! to_bp) { - BOOST_LOG_TRIVIAL(warning) << "Tried to add an invalid support point"; - tree_supports_show_error("Unable to add tip. Some overhang may not be supported correctly."sv, true); - return; - } - Polygons circle{ m_base_circle }; - circle.front().translate(p.first); + int i1, i2; + for (size_t i = 0; i < pline.size() - 1; i++) { - Point hash_pos = p.first / ((config.min_radius + 1) / 10); - std::lock_guard critical_section_movebounds(m_mutex_movebounds); - if (!m_already_inserted[insert_layer].count(hash_pos)) { - // normalize the point a bit to also catch points which are so close that inserting it would achieve nothing - m_already_inserted[insert_layer].emplace(hash_pos); - static constexpr const size_t dtt = 0; - SupportElementState state; - state.target_height = insert_layer; - state.target_position = p.first; - state.next_position = p.first; - state.layer_idx = insert_layer; - state.effective_radius_height = dtt; - state.to_buildplate = to_bp; - state.distance_to_top = dtt; - state.result_on_layer = p.first; - assert(state.result_on_layer_is_set()); - state.increased_to_model_radius = 0; - state.to_model_gracious = gracious; - state.elephant_foot_increases = 0; - state.use_min_xy_dist = min_xy_dist; - state.supports_roof = roof; - state.dont_move_until = dont_move_until; - state.can_use_safe_radius = safe_radius; - state.missing_roof_layers = force_tip_to_roof ? dont_move_until : 0; - state.skip_ovalisation = skip_ovalisation; - move_bounds[insert_layer].emplace_back(state, std::move(circle)); - } - } - } - - // Outputs - std::vector &move_bounds; - - // Temps - coord_t m_base_radius; - Polygon m_base_circle; - - // Mutexes, guards - std::mutex m_mutex_movebounds; - std::vector> m_already_inserted; -}; - -int generate_raft_contact( - const PrintObject &print_object, - const TreeSupportSettings &config, - InterfacePlacer &interface_placer) -{ - int raft_contact_layer_idx = -1; - if (print_object.has_raft() && print_object.layer_count() > 0) { - // Produce raft contact layer outside of the tree support loop, so that no trees will be generated for the raft contact layer. - // Raft layers supporting raft contact interface will be produced by the classic raft generator. - // Find the raft contact layer. - raft_contact_layer_idx = int(config.raft_layers.size()) - 1; - while (raft_contact_layer_idx > 0 && config.raft_layers[raft_contact_layer_idx] > print_object.slicing_parameters().raft_contact_top_z + EPSILON) - -- raft_contact_layer_idx; - // Create the raft contact layer. - const ExPolygons &lslices = print_object.get_layer(0)->lslices; - double expansion = print_object.config().raft_expansion.value; - interface_placer.add_roof_unguarded(expansion > 0 ? expand(lslices, scaled(expansion)) : to_polygons(lslices), raft_contact_layer_idx, 0); - } - return raft_contact_layer_idx; -} - -void finalize_raft_contact( - const PrintObject &print_object, - const int raft_contact_layer_idx, - SupportGeneratorLayersPtr &top_contacts, - std::vector &move_bounds) -{ - if (raft_contact_layer_idx >= 0) { - const size_t first_tree_layer = print_object.slicing_parameters().raft_layers() - 1; - // Remove tree tips that start below the raft contact, - // remove interface layers below the raft contact. - for (size_t i = 0; i < first_tree_layer; ++i) { - top_contacts[i] = nullptr; - move_bounds[i].clear(); - } - if (raft_contact_layer_idx >= 0 && print_object.config().raft_expansion.value > 0) { - // If any tips at first_tree_layer now are completely inside the expanded raft layer, remove them as well before they are propagated to the ground. - Polygons &raft_polygons = top_contacts[raft_contact_layer_idx]->polygons; - EdgeGrid::Grid grid(get_extents(raft_polygons).inflated(SCALED_EPSILON)); - grid.create(raft_polygons, Polylines{}, coord_t(scale_(10.))); - SupportElements &first_layer_move_bounds = move_bounds[first_tree_layer]; - double threshold = scaled(print_object.config().raft_expansion.value) * 2.; - first_layer_move_bounds.erase(std::remove_if(first_layer_move_bounds.begin(), first_layer_move_bounds.end(), - [&grid, threshold](const SupportElement &el) { - coordf_t dist; - if (grid.signed_distance_edges(el.state.result_on_layer, threshold, dist)) { - assert(std::abs(dist) < threshold + SCALED_EPSILON); - // Support point is inside the expanded raft, remove it. - return dist < - 0.; - } - return false; - }), first_layer_move_bounds.end()); - #if 0 - // Remove the remaining tips from the raft: Closing operation on tip circles. - if (! first_layer_move_bounds.empty()) { - const double eps = 0.1; - // All tips supporting this layer are expected to have the same radius. - double radius = support_element_radius(config, first_layer_move_bounds.front()); - // Connect the tips with the following closing radius. - double closing_distance = radius; - Polygon circle = make_circle(radius + closing_distance, eps); - Polygons circles; - circles.reserve(first_layer_move_bounds.size()); - for (const SupportElement &el : first_layer_move_bounds) { - circles.emplace_back(circle); - circles.back().translate(el.state.result_on_layer); - } - raft_polygons = diff(raft_polygons, offset(union_(circles), - closing_distance)); - } - #endif + i1 = i; + i2 = i + 1; + svg.draw(Line(pline.points[i1], pline.points[i2]), "blue"); + svg.draw(pline.points[i1], "red"); + id++; + svg.draw_text(pline.points[i1], std::to_string(id).c_str(), "black", 1); } + svg.draw(pline.points[i2], "red"); + id++; + svg.draw_text(pline.points[i2], std::to_string(id).c_str(), "black", 1); } } +#endif -// Called by generate_initial_areas(), used in parallel by multiple layers. -// Produce -// 1) Maximum num_support_roof_layers roof (top interface & contact) layers. -// 2) Tree tips supporting either the roof layers or the object itself. -// num_support_roof_layers should always be respected: -// If num_support_roof_layers contact layers could not be produced, then the tree tip -// is augmented with SupportElementState::missing_roof_layers -// and the top "missing_roof_layers" of such particular tree tips are supposed to be coverted to -// roofs aka interface layers by the tool path generator. -void sample_overhang_area( - // Area to support - Polygons &&overhang_area, - // If true, then the overhang_area is likely large and wide, thus it is worth to try - // to cover it with continuous interfaces supported by zig-zag patterned tree tips. - const bool large_horizontal_roof, - // Index of the top suport layer generated by this function. - const size_t layer_idx, - // Maximum number of roof (contact, interface) layers between the overhang and tree tips to be generated. - const size_t num_support_roof_layers, - // - const coord_t connect_length, - // Configuration classes - const TreeSupportMeshGroupSettings &mesh_group_settings, - // Configuration & Output - RichInterfacePlacer &interface_placer) +// Move point from inside polygon if distance>0, outside if distance<0. +// Special case: distance=0 means find the nearest point of from on the polygon contour. +// The max move distance should not excceed max_move_distance. +static unsigned int move_inside_expoly(const ExPolygon &polygon, Point& from, double distance = 0, double max_move_distance = std::numeric_limits::max()) { - // Assumption is that roof will support roof further up to avoid a lot of unnecessary branches. Each layer down it is checked whether the roof area - // is still large enough to be a roof and aborted as soon as it is not. This part was already reworked a few times, and there could be an argument - // made to change it again if there are actual issues encountered regarding supporting roofs. - // Main problem is that some patterns change each layer, so just calculating points and checking if they are still valid an layer below is not useful, - // as the pattern may be different one layer below. Same with calculating which points are now no longer being generated as result from - // a decreasing roof, as there is no guarantee that a line will be above these points. Implementing a separate roof support behavior - // for each pattern harms maintainability as it very well could be >100 LOC - auto generate_roof_lines = [&interface_placer, &mesh_group_settings](const Polygons &area, LayerIndex layer_idx) -> Polylines { - return generate_support_infill_lines(area, interface_placer.support_parameters, true, layer_idx, mesh_group_settings.support_roof_line_distance); - }; + //TODO: This is copied from the moveInside of Polygons. + /* + We'd like to use this function as subroutine in moveInside(Polygons...), but + then we'd need to recompute the distance of the point to the polygon, which + is expensive. Or we need to return the distance. We need the distance there + to compare with the distance to other polygons. + */ + Point ret = from; + double bestDist2 = std::numeric_limits::max(); + bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary + const Polygon &contour = polygon.contour; - LineInformations overhang_lines; - // Track how many top contact / interface layers were already generated. - size_t dtt_roof = 0; - size_t layer_generation_dtt = 0; - - if (large_horizontal_roof) { - assert(num_support_roof_layers > 0); - // Sometimes roofs could be empty as the pattern does not generate lines if the area is narrow enough (i am looking at you, concentric infill). - // To catch these cases the added roofs are saved to be evaluated later. - std::vector added_roofs(num_support_roof_layers); - Polygons last_overhang = overhang_area; - for (dtt_roof = 0; dtt_roof < num_support_roof_layers && layer_idx - dtt_roof >= 1; ++ dtt_roof) { - // here the roof is handled. If roof can not be added the branches will try to not move instead - Polygons forbidden_next; - { - const bool min_xy_dist = interface_placer.config.xy_distance > interface_placer.config.xy_min_distance; - const Polygons &forbidden_next_raw = interface_placer.config.support_rests_on_model ? - interface_placer.volumes.getCollision(interface_placer.config.getRadius(0), layer_idx - (dtt_roof + 1), min_xy_dist) : - interface_placer.volumes.getAvoidance(interface_placer.config.getRadius(0), layer_idx - (dtt_roof + 1), TreeModelVolumes::AvoidanceType::Fast, false, min_xy_dist); - // prevent rounding errors down the line - //FIXME maybe use SafetyOffset::Yes at the following diff() instead? - forbidden_next = offset(union_ex(forbidden_next_raw), scaled(0.005), jtMiter, 1.2); - } - Polygons overhang_area_next = diff(overhang_area, forbidden_next); - if (area(overhang_area_next) < mesh_group_settings.minimum_roof_area) { - // Next layer down the roof area would be to small so we have to insert our roof support here. - if (dtt_roof > 0) { - size_t dtt_before = dtt_roof - 1; - // Produce support head points supporting an interface layer: First produce the interface lines, then sample them. - overhang_lines = split_lines( - convert_lines_to_internal(interface_placer.volumes, interface_placer.config, - ensure_maximum_distance_polyline(generate_roof_lines(last_overhang, layer_idx - dtt_before), connect_length, 1), layer_idx - dtt_before), - [&interface_placer, layer_idx, dtt_before](const std::pair &p) - { return evaluate_point_for_next_layer_function(interface_placer.volumes, interface_placer.config, layer_idx - dtt_before, p); }) - .first; - } - break; - } - added_roofs[dtt_roof] = overhang_area; - last_overhang = std::move(overhang_area); - overhang_area = std::move(overhang_area_next); - } - - layer_generation_dtt = std::max(dtt_roof, size_t(1)) - 1; // 1 inside max and -1 outside to avoid underflow. layer_generation_dtt=dtt_roof-1 if dtt_roof!=0; - // if the roof should be valid, check that the area does generate lines. This is NOT guaranteed. - if (overhang_lines.empty() && dtt_roof != 0 && generate_roof_lines(overhang_area, layer_idx - layer_generation_dtt).empty()) - for (size_t idx = 0; idx < dtt_roof; idx++) { - // check for every roof area that it has resulting lines. Remember idx 1 means the 2. layer of roof => higher idx == lower layer - if (generate_roof_lines(added_roofs[idx], layer_idx - idx).empty()) { - dtt_roof = idx; - layer_generation_dtt = std::max(dtt_roof, size_t(1)) - 1; - break; - } - } - added_roofs.erase(added_roofs.begin() + dtt_roof, added_roofs.end()); - interface_placer.add_roofs(std::move(added_roofs), layer_idx); - } - - if (overhang_lines.empty()) { - // support_line_width to form a line here as otherwise most will be unsupported. Technically this violates branch distance, but not only is this the only reasonable choice, - // but it ensures consistant behaviour as some infill patterns generate each line segment as its own polyline part causing a similar line forming behaviour. - // This is not doen when a roof is above as the roof will support the model and the trees only need to support the roof - bool supports_roof = dtt_roof > 0; - bool continuous_tips = ! supports_roof && large_horizontal_roof; - Polylines polylines = ensure_maximum_distance_polyline( - generate_support_infill_lines(overhang_area, interface_placer.support_parameters, supports_roof, layer_idx - layer_generation_dtt, - supports_roof ? mesh_group_settings.support_roof_line_distance : mesh_group_settings.support_tree_branch_distance), - continuous_tips ? interface_placer.config.min_radius / 2 : connect_length, 1); - size_t point_count = 0; - for (const Polyline &poly : polylines) - point_count += poly.size(); - const size_t min_support_points = std::max(coord_t(1), std::min(coord_t(3), coord_t(total_length(overhang_area) / connect_length))); - if (point_count <= min_support_points) { - // add the outer wall (of the overhang) to ensure it is correct supported instead. Try placing the support points in a way that they fully support the outer wall, instead of just the with half of the the support line width. - // I assume that even small overhangs are over one line width wide, so lets try to place the support points in a way that the full support area generated from them - // will support the overhang (if this is not done it may only be half). This WILL NOT be the case when supporting an angle of about < 60� so there is a fallback, - // as some support is better than none. - Polygons reduced_overhang_area = offset(union_ex(overhang_area), - interface_placer.config.support_line_width / 2.2, jtMiter, 1.2); - polylines = ensure_maximum_distance_polyline( - to_polylines( - ! reduced_overhang_area.empty() && - area(offset(diff_ex(overhang_area, reduced_overhang_area), std::max(interface_placer.config.support_line_width, connect_length), jtMiter, 1.2)) < sqr(scaled(0.001)) ? - reduced_overhang_area : - overhang_area), - connect_length, min_support_points); - } - overhang_lines = convert_lines_to_internal(interface_placer.volumes, interface_placer.config, polylines, layer_idx - dtt_roof); - } - - assert(dtt_roof <= layer_idx); - if (dtt_roof >= layer_idx && large_horizontal_roof) - // Reached buildplate when generating contact, interface and base interface layers. - interface_placer.add_roof_build_plate(std::move(overhang_area), dtt_roof); - else { - // normal trees have to be generated - const bool roof_enabled = num_support_roof_layers > 0; - interface_placer.add_points_along_lines( - // Sample along these lines - overhang_lines, - // First layer index to insert the tree tips or interfaces. - layer_idx - dtt_roof, - // Remaining roof tip layers. - interface_placer.force_tip_to_roof ? num_support_roof_layers - dtt_roof : 0, - // Supports roof already? How many roof layers were already produced above these tips? - dtt_roof, - // Don't move until the following distance to top is reached. - roof_enabled ? num_support_roof_layers - dtt_roof : 0); + if (contour.points.size() < 2) + { + return 0; } -} - -/*! - * \brief Creates the initial influence areas (that can later be propagated down) by placing them below the overhang. - * - * Generates Points where the Model should be supported and creates the areas where these points have to be placed. - * - * \param mesh[in] The mesh that is currently processed. - * \param move_bounds[out] Storage for the influence areas. - * \param storage[in] Background storage, required for adding roofs. - */ -static void generate_initial_areas( - const PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &overhangs, - std::vector &move_bounds, - InterfacePlacer &interface_placer, - std::function throw_on_cancel) -{ - using AvoidanceType = TreeModelVolumes::AvoidanceType; - TreeSupportMeshGroupSettings mesh_group_settings(print_object); - - // To ensure z_distance_top_layers are left empty between the overhang (zeroth empty layer), the support has to be added z_distance_top_layers+1 layers below - const size_t z_distance_delta = config.z_distance_top_layers + 1; - - const bool min_xy_dist = config.xy_distance > config.xy_min_distance; - -#if 0 - if (mesh.overhang_areas.size() <= z_distance_delta) - return; -#endif - - const coord_t connect_length = (config.support_line_width * 100. / mesh_group_settings.support_tree_top_rate) + std::max(2. * config.min_radius - 1.0 * config.support_line_width, 0.0); - // As r*r=x*x+y*y (circle equation): If a circle with center at (0,0) the top most point is at (0,r) as in y=r. - // This calculates how far one has to move on the x-axis so that y=r-support_line_width/2. - // In other words how far does one need to move on the x-axis to be support_line_width/2 away from the circle line. - // As a circle is round this length is identical for every axis as long as the 90 degrees angle between both remains. - const coord_t circle_length_to_half_linewidth_change = config.min_radius < config.support_line_width ? - config.min_radius / 2 : - scale_(sqrt(sqr(unscale(config.min_radius)) - sqr(unscale(config.min_radius - config.support_line_width / 2)))); - // Extra support offset to compensate for larger tip radiis. Also outset a bit more when z overwrites xy, because supporting something with a part of a support line is better than not supporting it at all. - //FIXME Vojtech: This is not sufficient for support enforcers to work. - //FIXME There is no account for the support overhang angle. - //FIXME There is no account for the width of the collision regions. - const coord_t extra_outset = std::max(coord_t(0), config.min_radius - config.support_line_width / 2) + (min_xy_dist ? config.support_line_width / 2 : 0) - //FIXME this is a heuristic value for support enforcers to work. -// + 10 * config.support_line_width; - ; - const size_t num_support_roof_layers = mesh_group_settings.support_roof_layers; - const bool roof_enabled = num_support_roof_layers > 0; - const bool force_tip_to_roof = roof_enabled && (interface_placer.support_parameters.soluble_interface || sqr(config.min_radius) * M_PI > mesh_group_settings.minimum_roof_area); - // cap for how much layer below the overhang a new support point may be added, as other than with regular support every new inserted point - // may cause extra material and time cost. Could also be an user setting or differently calculated. Idea is that if an overhang - // does not turn valid in double the amount of layers a slope of support angle would take to travel xy_distance, nothing reasonable will come from it. - // The 2*z_distance_delta is only a catch for when the support angle is very high. - // Used only if not min_xy_dist. - coord_t max_overhang_insert_lag = 0; - if (config.z_distance_top_layers > 0) { - max_overhang_insert_lag = 2 * config.z_distance_top_layers; - if (mesh_group_settings.support_angle > EPSILON && mesh_group_settings.support_angle < 0.5 * M_PI - EPSILON) { - //FIXME mesh_group_settings.support_angle does not apply to enforcers and also it does not apply to automatic support angle (by half the external perimeter width). - //used by max_overhang_insert_lag, only if not min_xy_dist. - const auto max_overhang_speed = coord_t(tan(mesh_group_settings.support_angle) * config.layer_height); - max_overhang_insert_lag = std::max(max_overhang_insert_lag, round_up_divide(config.xy_distance, max_overhang_speed / 2)); - } - } - - size_t num_support_layers; - int raft_contact_layer_idx; - // Layers with their overhang regions. - std::vector> raw_overhangs; - + Point p0 = contour.points[polygon.contour.size() - 2]; + Point p1 = contour.points.back(); + // because we compare with vsize2_with_unscale here (no division by zero), we also need to compare by vsize2_with_unscale inside the loop + // to avoid integer rounding edge cases + bool projected_p_beyond_prev_segment = dot_with_unscale(p1 - p0, from - p0) >= vsize2_with_unscale(p1 - p0); + for(const Point& p2 : polygon.contour.points) { - const size_t num_raft_layers = config.raft_layers.size(); - const size_t first_support_layer = std::max(int(num_raft_layers) - int(z_distance_delta), 1); - num_support_layers = size_t(std::max(0, int(print_object.layer_count()) + int(num_raft_layers) - int(z_distance_delta))); - raft_contact_layer_idx = generate_raft_contact(print_object, config, interface_placer); - // Enumerate layers for which the support tips may be generated from overhangs above. - raw_overhangs.reserve(num_support_layers - first_support_layer); - for (size_t layer_idx = first_support_layer; layer_idx < num_support_layers; ++ layer_idx) - if (const size_t overhang_idx = layer_idx + z_distance_delta; ! overhangs[overhang_idx].empty()) - raw_overhangs.push_back({ layer_idx, &overhangs[overhang_idx] }); - } - - RichInterfacePlacer rich_interface_placer{ interface_placer, volumes, force_tip_to_roof, num_support_layers, move_bounds }; - - tbb::parallel_for(tbb::blocked_range(0, raw_overhangs.size()), - [&volumes, &config, &raw_overhangs, &mesh_group_settings, - min_xy_dist, roof_enabled, num_support_roof_layers, extra_outset, circle_length_to_half_linewidth_change, connect_length, - &rich_interface_placer, &throw_on_cancel](const tbb::blocked_range &range) { - for (size_t raw_overhang_idx = range.begin(); raw_overhang_idx < range.end(); ++ raw_overhang_idx) { - size_t layer_idx = raw_overhangs[raw_overhang_idx].first; - const Polygons &overhang_raw = *raw_overhangs[raw_overhang_idx].second; - - // take the least restrictive avoidance possible - Polygons relevant_forbidden; - { - const Polygons &relevant_forbidden_raw = config.support_rests_on_model ? - volumes.getCollision(config.getRadius(0), layer_idx, min_xy_dist) : - volumes.getAvoidance(config.getRadius(0), layer_idx, AvoidanceType::Fast, false, min_xy_dist); - // prevent rounding errors down the line, points placed directly on the line of the forbidden area may not be added otherwise. - relevant_forbidden = offset(union_ex(relevant_forbidden_raw), scaled(0.005), jtMiter, 1.2); - } + // X = A + Normal(B-A) * (((B-A) dot_with_unscale (P-A)) / VSize(B-A)); + // = A + (B-A) * ((B-A) dot_with_unscale (P-A)) / VSize2(B-A); + // X = P projected on AB + const Point& a = p1; + const Point& b = p2; + const Point& p = from; + Point ab = b - a; + Point ap = p - a; + double ab_length2 = vsize2_with_unscale(ab); + if(ab_length2 <= 0) //A = B, i.e. the input polygon had two adjacent points on top of each other. + { + p1 = p2; //Skip only one of the points. + continue; + } + double dot_prod = dot_with_unscale(ab, ap); + if (dot_prod <= 0) // x is projected to before ab + { + if (projected_p_beyond_prev_segment) + { // case which looks like: > . + projected_p_beyond_prev_segment = false; + Point& x = p1; - // every overhang has saved if a roof should be generated for it. This can NOT be done in the for loop as an area may NOT have a roof - // even if it is larger than the minimum_roof_area when it is only larger because of the support horizontal expansion and - // it would not have a roof if the overhang is offset by support roof horizontal expansion instead. (At least this is the current behavior of the regular support) - Polygons overhang_regular; - { - // When support_offset = 0 safe_offset_inc will only be the difference between overhang_raw and relevant_forbidden, that has to be calculated anyway. - overhang_regular = safe_offset_inc(overhang_raw, mesh_group_settings.support_offset, relevant_forbidden, config.min_radius * 1.75 + config.xy_min_distance, 0, 1); - //check_self_intersections(overhang_regular, "overhang_regular1"); - - // offset ensures that areas that could be supported by a part of a support line, are not considered unsupported overhang - Polygons remaining_overhang = intersection( - diff(mesh_group_settings.support_offset == 0 ? - overhang_raw : - offset(union_ex(overhang_raw), mesh_group_settings.support_offset, jtMiter, 1.2), - offset(union_ex(overhang_regular), config.support_line_width * 0.5, jtMiter, 1.2)), - relevant_forbidden); - - // Offset the area to compensate for large tip radiis. Offset happens in multiple steps to ensure the tip is as close to the original overhang as possible. - //+config.support_line_width / 80 to avoid calculating very small (useless) offsets because of rounding errors. - //FIXME likely a better approach would be to find correspondences between the full overhang and the trimmed overhang - // and if there is no correspondence, project the missing points to the clipping curve. - for (coord_t extra_total_offset_acc = 0; ! remaining_overhang.empty() && extra_total_offset_acc + config.support_line_width / 8 < extra_outset; ) { - const coord_t offset_current_step = std::min( - extra_total_offset_acc + 2 * config.support_line_width > config.min_radius ? - config.support_line_width / 8 : - circle_length_to_half_linewidth_change, - extra_outset - extra_total_offset_acc); - extra_total_offset_acc += offset_current_step; - const Polygons &raw_collision = volumes.getCollision(0, layer_idx, true); - const coord_t offset_step = config.xy_min_distance + config.support_line_width; - // Reducing the remaining overhang by the areas already supported. - //FIXME 1.5 * extra_total_offset_acc seems to be too much, it may remove some remaining overhang without being supported at all. - remaining_overhang = diff(remaining_overhang, safe_offset_inc(overhang_regular, 1.5 * extra_total_offset_acc, raw_collision, offset_step, 0, 1)); - // Extending the overhangs by the inflated remaining overhangs. - overhang_regular = union_(overhang_regular, diff(safe_offset_inc(remaining_overhang, extra_total_offset_acc, raw_collision, offset_step, 0, 1), relevant_forbidden)); - //check_self_intersections(overhang_regular, "overhang_regular2"); - } -#if 0 - // If the xy distance overrides the z distance, some support needs to be inserted further down. - //=> Analyze which support points do not fit on this layer and check if they will fit a few layers down (while adding them an infinite amount of layers down would technically be closer the the setting description, it would not produce reasonable results. ) - if (! min_xy_dist) { - LineInformations overhang_lines; + double dist2 = vsize2_with_unscale(x - p); + if (dist2 < bestDist2) + { + bestDist2 = dist2; + if (distance == 0) { - //Vojtech: Generate support heads at support_tree_branch_distance spacing by producing a zig-zag infill at support_tree_branch_distance spacing, - // which is then resmapled - // support_line_width to form a line here as otherwise most will be unsupported. Technically this violates branch distance, - // mbut not only is this the only reasonable choice, but it ensures consistent behavior as some infill patterns generate - // each line segment as its own polyline part causing a similar line forming behavior. Also it is assumed that - // the area that is valid a layer below is to small for support roof. - Polylines polylines = ensure_maximum_distance_polyline( - generate_support_infill_lines(remaining_overhang, support_params, false, layer_idx, mesh_group_settings.support_tree_branch_distance), - config.min_radius, 1); - if (polylines.size() <= 3) - // add the outer wall to ensure it is correct supported instead - polylines = ensure_maximum_distance_polyline(to_polylines(remaining_overhang), connect_length, 3); - for (const auto &line : polylines) { - LineInformation res_line; - for (Point p : line) - res_line.emplace_back(p, LineStatus::INVALID); - overhang_lines.emplace_back(res_line); - } - validate_range(overhang_lines); + ret = x; } - for (size_t lag_ctr = 1; lag_ctr <= max_overhang_insert_lag && !overhang_lines.empty() && layer_idx - coord_t(lag_ctr) >= 1; lag_ctr++) { - // get least restricted avoidance for layer_idx-lag_ctr - const Polygons &relevant_forbidden_below = config.support_rests_on_model ? - volumes.getCollision(config.getRadius(0), layer_idx - lag_ctr, min_xy_dist) : - volumes.getAvoidance(config.getRadius(0), layer_idx - lag_ctr, AvoidanceType::Fast, false, min_xy_dist); - // it is not required to offset the forbidden area here as the points wont change: If points here are not inside the forbidden area neither will they be later when placing these points, as these are the same points. - auto evaluatePoint = [&](std::pair p) { return contains(relevant_forbidden_below, p.first); }; - - std::pair split = split_lines(overhang_lines, evaluatePoint); // keep all lines that are invalid - overhang_lines = split.first; - // Set all now valid lines to their correct LineStatus. Easiest way is to just discard Avoidance information for each point and evaluate them again. - LineInformations fresh_valid_points = convert_lines_to_internal(volumes, config, convert_internal_to_lines(split.second), layer_idx - lag_ctr); - validate_range(fresh_valid_points); - - rich_interface_placer.add_points_along_lines(fresh_valid_points, (force_tip_to_roof && lag_ctr <= num_support_roof_layers) ? num_support_roof_layers : 0, layer_idx - lag_ctr, false, roof_enabled ? num_support_roof_layers : 0); + else + { + // TODO: check whether it needs scale_() + Point inward_dir = turn90_ccw(normal(ab, 10.0) + normal(p1 - p0, 10.0)); // inward direction irrespective of sign of [distance] + // MM2INT(10.0) to retain precision for the eventual normalization + ret = x + normal(inward_dir, scale_(distance)); + is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) * distance >= 0; } } -#endif } + else + { + projected_p_beyond_prev_segment = false; + p0 = p1; + p1 = p2; + continue; + } + } + else if (dot_prod >= ab_length2) // x is projected to beyond ab + { + projected_p_beyond_prev_segment = true; + p0 = p1; + p1 = p2; + continue; + } + else + { // x is projected to a point properly on the line segment (not onto a vertex). The case which looks like | . + projected_p_beyond_prev_segment = false; + Point x = a + ab * (dot_prod / ab_length2); - throw_on_cancel(); - - if (roof_enabled) { - // Try to support the overhangs by dense interfaces for num_support_roof_layers, cover the bottom most interface with tree tips. - static constexpr const coord_t support_roof_offset = 0; - Polygons overhang_roofs = safe_offset_inc(overhang_raw, support_roof_offset, relevant_forbidden, config.min_radius * 2 + config.xy_min_distance, 0, 1); - if (mesh_group_settings.minimum_support_area > 0) - remove_small(overhang_roofs, mesh_group_settings.minimum_roof_area); - overhang_regular = diff(overhang_regular, overhang_roofs, ApplySafetyOffset::Yes); - //check_self_intersections(overhang_regular, "overhang_regular3"); - for (ExPolygon &roof_part : union_ex(overhang_roofs)) { - sample_overhang_area(to_polygons(std::move(roof_part)), true, layer_idx, num_support_roof_layers, connect_length, - mesh_group_settings, rich_interface_placer); - throw_on_cancel(); + double dist2 = vsize2_with_unscale(p - x); + if (dist2 < bestDist2) + { + bestDist2 = dist2; + if (distance == 0) + { + ret = x; + } + else + { + Point inward_dir = turn90_ccw(normal(ab, scale_(distance))); // inward or outward depending on the sign of [distance] + ret = x + inward_dir; + is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) >= 0; } - } - // Either the roof is not enabled, then these are all the overhangs to be supported, - // or roof is enabled and these are the thin overhangs at object slopes (not horizontal overhangs). - if (mesh_group_settings.minimum_support_area > 0) - remove_small(overhang_regular, mesh_group_settings.minimum_support_area); - for (ExPolygon &support_part : union_ex(overhang_regular)) { - sample_overhang_area(to_polygons(std::move(support_part)), - false, layer_idx, num_support_roof_layers, connect_length, - mesh_group_settings, rich_interface_placer); - throw_on_cancel(); } } - }); - finalize_raft_contact(print_object, raft_contact_layer_idx, interface_placer.top_contacts_mutable(), move_bounds); + p0 = p1; + p1 = p2; + } + + if (is_already_on_correct_side_of_boundary) // when the best point is already inside and we're moving inside, or when the best point is already outside and we're moving outside + { + // BBS. Remove this condition. + if (bestDist2 < distance * distance) + { + from = ret; + } + } + else if (bestDist2 < max_move_distance * max_move_distance) + { + from = ret; + } + return 0; } -static unsigned int move_inside(const Polygons &polygons, Point &from, int distance = 0, int64_t maxDist2 = std::numeric_limits::max()) +/* + * Implementation assumes moving inside, but moving outside should just as well be possible. + */ +static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) { - Point ret = from; + Point from0 = from; + Point ret = from; + std::vector valid_pts; double bestDist2 = std::numeric_limits::max(); - auto bestPoly = static_cast(-1); - bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary - for (unsigned int poly_idx = 0; poly_idx < polygons.size(); ++ poly_idx) { - const Polygon &poly = polygons[poly_idx]; - if (poly.size() < 2) + unsigned int bestPoly = NO_INDEX; + bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary + Point inward_dir; + for (unsigned int poly_idx = 0; poly_idx < polygons.size(); poly_idx++) + { + const ExPolygon poly = polygons[poly_idx]; + if (poly.contour.size() < 2) continue; - Point p0 = poly[poly.size() - 2]; - Point p1 = poly.back(); - // because we compare with vSize2 here (no division by zero), we also need to compare by vSize2 inside the loop + Point p0 = poly.contour[poly.contour.size()-2]; + Point p1 = poly.contour.points.back(); + // because we compare with vsize2_with_unscale here (no division by zero), we also need to compare by vsize2_with_unscale inside the loop // to avoid integer rounding edge cases - bool projected_p_beyond_prev_segment = (p1 - p0).cast().dot((from - p0).cast()) >= (p1 - p0).cast().squaredNorm(); - for (const Point& p2 : poly) { - // X = A + Normal(B-A) * (((B-A) dot (P-A)) / VSize(B-A)); - // = A + (B-A) * ((B-A) dot (P-A)) / VSize2(B-A); + bool projected_p_beyond_prev_segment = dot_with_unscale(p1 - p0, from - p0) >= vsize2_with_unscale(p1 - p0); + for(const Point& p2 : poly.contour.points) + { + // X = A + Normal(B-A) * (((B-A) dot_with_unscale (P-A)) / VSize(B-A)); + // = A + (B-A) * ((B-A) dot_with_unscale (P-A)) / VSize2(B-A); // X = P projected on AB - const Point& a = p1; - const Point& b = p2; - const Point& p = from; - auto ab = (b - a).cast(); - auto ap = (p - a).cast(); - int64_t ab_length2 = ab.squaredNorm(); - if (ab_length2 <= 0) { //A = B, i.e. the input polygon had two adjacent points on top of each other. + Point a = p1; + Point b = p2; + Point p = from; + Point ab = b - a; + Point ap = p - a; + double ab_length2 = vsize2_with_unscale(ab); + if(ab_length2 <= 0) //A = B, i.e. the input polygon had two adjacent points on top of each other. + { p1 = p2; //Skip only one of the points. continue; } - int64_t dot_prod = ab.dot(ap); - if (dot_prod <= 0) { // x is projected to before ab - if (projected_p_beyond_prev_segment) { - // case which looks like: > . + double dot_prod = dot_with_unscale(ab, ap); + if (dot_prod <= 0) // x is projected to before ab + { + if (projected_p_beyond_prev_segment) + { // case which looks like: > . projected_p_beyond_prev_segment = false; Point& x = p1; - auto dist2 = (x - p).cast().squaredNorm(); - if (dist2 < bestDist2) { + double dist2 = vsize2_with_unscale(x - p); + if (dist2 < bestDist2) + { bestDist2 = dist2; bestPoly = poly_idx; - if (distance == 0) - ret = x; - else { - Vec2d abd = ab.cast(); - Vec2d p1p2 = (p1 - p0).cast(); - double lab = abd.norm(); - double lp1p2 = p1p2.norm(); - // inward direction irrespective of sign of [distance] - auto inward_dir = perp(abd * (scaled(10.0) / lab) + p1p2 * (scaled(10.0) / lp1p2)); + if (distance == 0) { ret = x; } + else + { + inward_dir = turn90_ccw(normal(ab, 10.0) + normal(p1 - p0, 10.0)); // inward direction irrespective of sign of [distance] // MM2INT(10.0) to retain precision for the eventual normalization - ret = x + (inward_dir * (distance / inward_dir.norm())).cast(); - is_already_on_correct_side_of_boundary = inward_dir.dot((p - x).cast()) * distance >= 0; + ret = x + normal(inward_dir, scale_(distance)); + is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) * distance >= 0; + if (is_already_on_correct_side_of_boundary && dist2 < distance * distance) + valid_pts.push_back(ret-from0); } } - } else { - projected_p_beyond_prev_segment = false; + } + else + { + projected_p_beyond_prev_segment = false; p0 = p1; p1 = p2; continue; } - } else if (dot_prod >= ab_length2) { - // x is projected to beyond ab + } + else if (dot_prod >= ab_length2) // x is projected to beyond ab + { projected_p_beyond_prev_segment = true; p0 = p1; p1 = p2; continue; - } else { - // x is projected to a point properly on the line segment (not onto a vertex). The case which looks like | . + } + else + { // x is projected to a point properly on the line segment (not onto a vertex). The case which looks like | . projected_p_beyond_prev_segment = false; - Point x = a + (ab.cast() * (double(dot_prod) / double(ab_length2))).cast(); - auto dist2 = (p - x).cast().squaredNorm(); - if (dist2 < bestDist2) { + Point x = a + ab * (dot_prod / ab_length2); + + double dist2 = vsize2_with_unscale(p - x); + if (dist2 < bestDist2) + { bestDist2 = dist2; bestPoly = poly_idx; - if (distance == 0) - ret = x; - else { - Vec2d abd = ab.cast(); - Vec2d inward_dir = perp(abd * (distance / abd.norm())); // inward or outward depending on the sign of [distance] - ret = x + inward_dir.cast(); - is_already_on_correct_side_of_boundary = inward_dir.dot((p - x).cast()) >= 0; + if (distance == 0) { ret = x; } + else + { + inward_dir = turn90_ccw(normal(ab, scale_(distance))); // inward or outward depending on the sign of [distance] + ret = x + inward_dir; + is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) >= 0; + if (is_already_on_correct_side_of_boundary && dist2 1) { + // std::sort(valid_pts.begin(), valid_pts.end()); + // Point v_combine = valid_pts[0] + valid_pts[1]; + // if(vsize2_with_unscale(v_combine)::max()) -{ - if (! contains(polygons, from)) - move_inside(polygons, from); - return from; + return false; } -/*! - * \brief Checks if an influence area contains a valid subsection and returns the corresponding metadata and the new Influence area. - * - * Calculates an influence areas of the layer below, based on the influence area of one element on the current layer. - * Increases every influence area by maximum_move_distance_slow. If this is not enough, as in we would change our gracious or to_buildplate status the influence areas are instead increased by maximum_move_distance_slow. - * Also ensures that increasing the radius of a branch, does not cause it to change its status (like to_buildplate ). If this were the case, the radius is not increased instead. - * - * Warning: The used format inside this is different as the SupportElement does not have a valid area member. Instead this area is saved as value of the dictionary. This was done to avoid not needed heap allocations. - * - * \param settings[in] Which settings have to be used to check validity. - * \param layer_idx[in] Number of the current layer. - * \param parent[in] The metadata of the parents influence area. - * \param relevant_offset[in] The maximal possible influence area. No guarantee regarding validity with current layer collision required, as it is ensured in-function! - * \param to_bp_data[out] The part of the Influence area that can reach the buildplate. - * \param to_model_data[out] The part of the Influence area that do not have to reach the buildplate. This has overlap with new_layer_data. - * \param increased[out] Area than can reach all further up support points. No assurance is made that the buildplate or the model can be reached in accordance to the user-supplied settings. - * \param overspeed[in] How much should the already offset area be offset again. Usually this is 0. - * \param mergelayer[in] Will the merge method be called on this layer. This information is required as some calculation can be avoided if they are not required for merging. - * \return A valid support element for the next layer regarding the calculated influence areas. Empty if no influence are can be created using the supplied influence area and settings. - */ -[[nodiscard]] static std::optional increase_single_area( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const AreaIncreaseSettings &settings, - const LayerIndex layer_idx, - const SupportElement &parent, - const Polygons &relevant_offset, - Polygons &to_bp_data, - Polygons &to_model_data, - Polygons &increased, - const coord_t overspeed, - const bool mergelayer) +static Point find_closest_ex(Point from, const ExPolygons& polygons) { - SupportElementState current_elem{ SupportElementState::propagate_down(parent.state) }; - Polygons check_layer_data; - if (settings.increase_radius) - current_elem.effective_radius_height += 1; - coord_t radius = support_element_collision_radius(config, current_elem); - - const auto _tiny_area_threshold = tiny_area_threshold(); - if (settings.move) { - increased = relevant_offset; - if (overspeed > 0) { - const coord_t safe_movement_distance = - (current_elem.use_min_xy_dist ? config.xy_min_distance : config.xy_distance) + - (std::min(config.z_distance_top_layers, config.z_distance_bottom_layers) > 0 ? config.min_feature_size : 0); - // The difference to ensure that the result not only conforms to wall_restriction, but collision/avoidance is done later. - // The higher last_safe_step_movement_distance comes exactly from the fact that the collision will be subtracted later. - increased = safe_offset_inc(increased, overspeed, volumes.getWallRestriction(support_element_collision_radius(config, parent.state), layer_idx, parent.state.use_min_xy_dist), - safe_movement_distance, safe_movement_distance + radius, 1); - } - if (settings.no_error && settings.move) - // as ClipperLib::jtRound has to be used for offsets this simplify is VERY important for performance. - polygons_simplify(increased, scaled(0.025), polygons_strictly_simple); - } else - // if no movement is done the areas keep parent area as no move == offset(0) - increased = parent.influence_area; - - if (mergelayer || current_elem.to_buildplate) { - to_bp_data = safe_union(diff_clipped(increased, volumes.getAvoidance(radius, layer_idx - 1, settings.type, false, settings.use_min_distance))); - if (! current_elem.to_buildplate && area(to_bp_data) > _tiny_area_threshold) { - // mostly happening in the tip, but with merges one should check every time, just to be sure. - current_elem.to_buildplate = true; // sometimes nodes that can reach the buildplate are marked as cant reach, tainting subtrees. This corrects it. - BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong to model value on layer " << layer_idx - 1 << " targeting " << - current_elem.target_height << " with radius " << radius; - } - } - if (config.support_rests_on_model) { - if (mergelayer || current_elem.to_model_gracious) - to_model_data = safe_union(diff_clipped(increased, volumes.getAvoidance(radius, layer_idx - 1, settings.type, true, settings.use_min_distance))); - - if (!current_elem.to_model_gracious) { - if (mergelayer && area(to_model_data) >= _tiny_area_threshold) { - current_elem.to_model_gracious = true; - BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong non gracious value on layer " << layer_idx - 1 << " targeting " << - current_elem.target_height << " with radius " << radius; - } else - // Cannot route to gracious areas. Push the tree away from object and route it down anyways. - to_model_data = safe_union(diff_clipped(increased, volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance))); - } - } - - check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; - - if (settings.increase_radius && area(check_layer_data) > _tiny_area_threshold) { - auto validWithRadius = [&](coord_t next_radius) { - if (volumes.ceilRadius(next_radius, settings.use_min_distance) <= volumes.ceilRadius(radius, settings.use_min_distance)) - return true; - - Polygons to_bp_data_2; - if (current_elem.to_buildplate) - // regular union as output will not be used later => this area should always be a subset of the safe_union one (i think) - to_bp_data_2 = diff_clipped(increased, volumes.getAvoidance(next_radius, layer_idx - 1, settings.type, false, settings.use_min_distance)); - Polygons to_model_data_2; - if (config.support_rests_on_model && !current_elem.to_buildplate) - to_model_data_2 = diff_clipped(increased, - current_elem.to_model_gracious ? - volumes.getAvoidance(next_radius, layer_idx - 1, settings.type, true, settings.use_min_distance) : - volumes.getCollision(next_radius, layer_idx - 1, settings.use_min_distance)); - Polygons check_layer_data_2 = current_elem.to_buildplate ? to_bp_data_2 : to_model_data_2; - return area(check_layer_data_2) > _tiny_area_threshold; - }; - coord_t ceil_radius_before = volumes.ceilRadius(radius, settings.use_min_distance); - - if (support_element_collision_radius(config, current_elem) < config.increase_radius_until_radius && support_element_collision_radius(config, current_elem) < support_element_radius(config, current_elem)) { - coord_t target_radius = std::min(support_element_radius(config, current_elem), config.increase_radius_until_radius); - coord_t current_ceil_radius = volumes.getRadiusNextCeil(radius, settings.use_min_distance); - - while (current_ceil_radius < target_radius && validWithRadius(volumes.getRadiusNextCeil(current_ceil_radius + 1, settings.use_min_distance))) - current_ceil_radius = volumes.getRadiusNextCeil(current_ceil_radius + 1, settings.use_min_distance); - size_t resulting_eff_dtt = current_elem.effective_radius_height; - while (resulting_eff_dtt + 1 < current_elem.distance_to_top && - config.getRadius(resulting_eff_dtt + 1, current_elem.elephant_foot_increases) <= current_ceil_radius && - config.getRadius(resulting_eff_dtt + 1, current_elem.elephant_foot_increases) <= support_element_radius(config, current_elem)) - ++ resulting_eff_dtt; - current_elem.effective_radius_height = resulting_eff_dtt; - } - radius = support_element_collision_radius(config, current_elem); - - const coord_t foot_radius_increase = std::max(config.bp_radius_increase_per_layer - config.branch_radius_increase_per_layer, 0.0); - // Is nearly all of the time 1, but sometimes an increase of 1 could cause the radius to become bigger than recommendedMinRadius, - // which could cause the radius to become bigger than precalculated. - double planned_foot_increase = std::min(1.0, double(config.recommendedMinRadius(layer_idx - 1) - support_element_radius(config, current_elem)) / foot_radius_increase); -//FIXME - bool increase_bp_foot = planned_foot_increase > 0 && current_elem.to_buildplate; -// bool increase_bp_foot = false; - - if (increase_bp_foot && support_element_radius(config, current_elem) >= config.branch_radius && support_element_radius(config, current_elem) >= config.increase_radius_until_radius) - if (validWithRadius(config.getRadius(current_elem.effective_radius_height, current_elem.elephant_foot_increases + planned_foot_increase))) { - current_elem.elephant_foot_increases += planned_foot_increase; - radius = support_element_collision_radius(config, current_elem); - } - - if (ceil_radius_before != volumes.ceilRadius(radius, settings.use_min_distance)) { - if (current_elem.to_buildplate) - to_bp_data = safe_union(diff_clipped(increased, volumes.getAvoidance(radius, layer_idx - 1, settings.type, false, settings.use_min_distance))); - if (config.support_rests_on_model && (!current_elem.to_buildplate || mergelayer)) - to_model_data = safe_union(diff_clipped(increased, - current_elem.to_model_gracious ? - volumes.getAvoidance(radius, layer_idx - 1, settings.type, true, settings.use_min_distance) : - volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance) - )); - check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; - if (area(check_layer_data) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << - volumes.ceilRadius(support_element_collision_radius(config, current_elem), settings.use_min_distance); - tree_supports_show_error("Area lost catching up radius. May not cause visible malformation."sv, true); + Point closest_pt; + double min_dist2 = std::numeric_limits::max(); + + for (const ExPolygon &poly : polygons) { + for (int i = 0; i < poly.num_contours(); i++) { + const Point* candidate = poly.contour_or_hole(i).closest_point(from); + double dist2 = vsize2_with_unscale(*candidate - from); + if (dist2 < min_dist2) { + closest_pt = *candidate; + min_dist2 = dist2; } } } - return area(check_layer_data) > _tiny_area_threshold ? std::optional(current_elem) : std::optional(); + return closest_pt; } -struct SupportElementInfluenceAreas { - // All influence areas: both to build plate and model. - Polygons influence_areas; - // Influence areas just to build plate. - Polygons to_bp_areas; - // Influence areas just to model. - Polygons to_model_areas; +static bool move_outside_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) +{ + return move_inside_expolys(polygons, from, -distance, -max_move_distance); +} + +static bool is_inside_ex(const ExPolygon &polygon, const Point &pt) +{ + if (!get_extents(polygon).contains(pt)) + return false; + + return polygon.contains(pt); +} - void clear() { - this->influence_areas.clear(); - this->to_bp_areas.clear(); - this->to_model_areas.clear(); +static bool is_inside_ex(const ExPolygons &polygons, const Point &pt) +{ + for (const ExPolygon &poly : polygons) { + if (is_inside_ex(poly, pt)) + return true; } -}; -struct SupportElementMerging { - SupportElementState state; - /*! - * \brief All elements in the layer above the current one that are supported by this element - */ - SupportElement::ParentIndices parents; - - SupportElementInfluenceAreas areas; - // Bounding box of all influence areas. - Eigen::AlignedBox bbox_data; - - const Eigen::AlignedBox& bbox() const { return bbox_data;} - const Point centroid() const { return (bbox_data.min() + bbox_data.max()) / 2; } - void set_bbox(const BoundingBox& abbox) - { Point eps { coord_t(SCALED_EPSILON), coord_t(SCALED_EPSILON) }; bbox_data = { abbox.min - eps, abbox.max + eps }; } - - // Called by the AABBTree builder to get an index into the vector of source elements. - // Not needed, thus zero is returned. - static size_t idx() { return 0; } -}; + return false; +} -/*! - * \brief Increases influence areas as far as required. - * - * Calculates influence areas of the layer below, based on the influence areas of the current layer. - * Increases every influence area by maximum_move_distance_slow. If this is not enough, as in it would change the gracious or to_buildplate status, the influence areas are instead increased by maximum_move_distance. - * Also ensures that increasing the radius of a branch, does not cause it to change its status (like to_buildplate ). If this were the case, the radius is not increased instead. - * - * Warning: The used format inside this is different as the SupportElement does not have a valid area member. Instead this area is saved as value of the dictionary. This was done to avoid not needed heap allocations. - * - * \param to_bp_areas[out] Influence areas that can reach the buildplate - * \param to_model_areas[out] Influence areas that do not have to reach the buildplate. This has overlap with new_layer_data, as areas that can reach the buildplate are also considered valid areas to the model. - * This redundancy is required if a to_buildplate influence area is allowed to merge with a to model influence area. - * \param influence_areas[out] Area than can reach all further up support points. No assurance is made that the buildplate or the model can be reached in accordance to the user-supplied settings. - * \param bypass_merge_areas[out] Influence areas ready to be added to the layer below that do not need merging. - * \param last_layer[in] Influence areas of the current layer. - * \param layer_idx[in] Number of the current layer. - * \param mergelayer[in] Will the merge method be called on this layer. This information is required as some calculation can be avoided if they are not required for merging. - */ -static void increase_areas_one_layer( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - // New areas at the layer below layer_idx - std::vector &merging_areas, - // Layer above merging_areas. - const LayerIndex layer_idx, - // Layer elements above merging_areas. - SupportElements &layer_elements, - // If false, the merging_areas will not be merged for performance reasons. - const bool mergelayer, - std::function throw_on_cancel) +static bool move_out_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) { - using AvoidanceType = TreeModelVolumes::AvoidanceType; - - tbb::parallel_for(tbb::blocked_range(0, merging_areas.size(), 1), - [&](const tbb::blocked_range &range) { - for (size_t merging_area_idx = range.begin(); merging_area_idx < range.end(); ++ merging_area_idx) { - SupportElementMerging &merging_area = merging_areas[merging_area_idx]; - assert(merging_area.parents.size() == 1); - SupportElement &parent = layer_elements[merging_area.parents.front()]; - SupportElementState elem = SupportElementState::propagate_down(parent.state); - const Polygons &wall_restriction = - // Abstract representation of the model outline. If an influence area would move through it, it could teleport through a wall. - volumes.getWallRestriction(support_element_collision_radius(config, parent.state), layer_idx, parent.state.use_min_xy_dist); - -#ifdef TREESUPPORT_DEBUG_SVG - SVG::export_expolygons(debug_out_path("treesupport-increase_areas_one_layer-%d-%ld.svg", layer_idx, int(merging_area_idx)), - { { { union_ex(wall_restriction) }, { "wall_restricrictions", "gray", 0.5f } }, - { { union_ex(parent.influence_area) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif // TREESUPPORT_DEBUG_SVG - - Polygons to_bp_data, to_model_data; - coord_t radius = support_element_collision_radius(config, elem); - - // When the radius increases, the outer "support wall" of the branch will have been moved farther away from the center (as this is the definition of radius). - // As it is not specified that the support_tree_angle has to be one of the center of the branch, it is here seen as the smaller angle of the outer wall of the branch, to the outer wall of the same branch one layer above. - // As the branch may have become larger the distance between these 2 walls is smaller than the distance of the center points. - // These extra distance is added to the movement distance possible for this layer. - - coord_t extra_speed = 5; // The extra speed is added to both movement distances. Also move 5 microns faster than allowed to avoid rounding errors, this may cause issues at VERY VERY small layer heights. - coord_t extra_slow_speed = 0; // Only added to the slow movement distance. - const coord_t ceiled_parent_radius = volumes.ceilRadius(support_element_collision_radius(config, parent.state), parent.state.use_min_xy_dist); - coord_t projected_radius_increased = config.getRadius(parent.state.effective_radius_height + 1, parent.state.elephant_foot_increases); - coord_t projected_radius_delta = projected_radius_increased - support_element_collision_radius(config, parent.state); - - // When z distance is more than one layer up and down the Collision used to calculate the wall restriction will always include the wall (and not just the xy_min_distance) of the layer above and below like this (d = blocked area because of z distance): - /* - * layer z+1:dddddiiiiiioooo - * layer z+0:xxxxxdddddddddd - * layer z-1:dddddxxxxxxxxxx - * For more detailed visualisation see calculateWallRestrictions - */ - const coord_t safe_movement_distance = - (elem.use_min_xy_dist ? config.xy_min_distance : config.xy_distance) + - (std::min(config.z_distance_top_layers, config.z_distance_bottom_layers) > 0 ? config.min_feature_size : 0); - if (ceiled_parent_radius == volumes.ceilRadius(projected_radius_increased, parent.state.use_min_xy_dist) || - projected_radius_increased < config.increase_radius_until_radius) - // If it is guaranteed possible to increase the radius, the maximum movement speed can be increased, as it is assumed that the maximum movement speed is the one of the slower moving wall - extra_speed += projected_radius_delta; - else - // if a guaranteed radius increase is not possible, only increase the slow speed - // Ensure that the slow movement distance can not become larger than the fast one. - extra_slow_speed += std::min(projected_radius_delta, (config.maximum_move_distance + extra_speed) - (config.maximum_move_distance_slow + extra_slow_speed)); - - if (config.layer_start_bp_radius > layer_idx && - config.recommendedMinRadius(layer_idx - 1) < config.getRadius(elem.effective_radius_height + 1, elem.elephant_foot_increases)) { - // can guarantee elephant foot radius increase - if (ceiled_parent_radius == volumes.ceilRadius(config.getRadius(parent.state.effective_radius_height + 1, parent.state.elephant_foot_increases + 1), parent.state.use_min_xy_dist)) - extra_speed += config.bp_radius_increase_per_layer; - else - extra_slow_speed += std::min(coord_t(config.bp_radius_increase_per_layer), - config.maximum_move_distance - (config.maximum_move_distance_slow + extra_slow_speed)); - } + Point from0 = from; + ExPolygons polys_dilated = union_ex(offset_ex(polygons, scale_(distance))); + Point pt = projection_onto(polys_dilated, from);// find_closest_ex(from, polys_dilated); + Point outward_dir = pt - from; + Point pt_max = from + normal(outward_dir, scale_(max_move_distance)); + double dist2 = vsize2_with_unscale(outward_dir); + if (dist2 > SQ(max_move_distance)) + pt = pt_max; + // case 5: already outside and far enough, no need to move + if (!is_inside_ex(polys_dilated, from)) + return true; + else if (!is_inside_ex(polygons, from)) { + // case 4: already outside but not far enough + from = pt; + return true; + } + else { + bool pt_max_in_poly = is_inside_ex(polygons, pt_max); + if (!pt_max_in_poly) { + from = pt_max; + return true; + } + else { + return false; + } + } +} + +static Point bounding_box_middle(const BoundingBox &bbox) +{ + return (bbox.max + bbox.min) / 2; +} - const coord_t fast_speed = config.maximum_move_distance + extra_speed; - const coord_t slow_speed = config.maximum_move_distance_slow + extra_speed + extra_slow_speed; +TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_params) + : m_object(&object), m_slicing_params(slicing_params), m_object_config(&object.config()) +{ + m_raft_layers = slicing_params.base_raft_layers + slicing_params.interface_raft_layers; + support_type = m_object_config->support_type; + support_style = m_object_config->support_style; + if (support_style == smsDefault) + support_style = smsTreeHybrid; + SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; + if (support_style == smsTreeHybrid && support_pattern == smpDefault) support_pattern = smpRectilinear; + m_support_params.base_fill_pattern = + support_pattern == smpLightning ? ipLightning : + support_pattern == smpHoneycomb ? ipHoneycomb : + m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : + ipSupportBase; + + m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); + if (m_object_config->support_interface_pattern == smipGrid) + m_support_params.contact_fill_pattern = ipGrid; + else if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) + m_support_params.contact_fill_pattern = ipRectilinear; + else + m_support_params.contact_fill_pattern = (m_object_config->support_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || + m_object_config->support_interface_pattern == smipConcentric ? + ipConcentric : + (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); + + const auto nozzle_diameter = object.print()->config().nozzle_diameter.get_at(object.config().support_interface_filament-1); + const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(nozzle_diameter); + const coordf_t support_extrusion_width = m_object_config->support_line_width.get_abs_value(nozzle_diameter); + + m_support_params.support_extrusion_width = support_extrusion_width > 0 ? support_extrusion_width : extrusion_width; + is_slim = is_tree_slim(support_type, support_style); + is_strong = is_tree(support_type) && support_style == smsTreeStrong; + MAX_BRANCH_RADIUS = 10.0; + tree_support_branch_diameter_angle = 5.0;//is_slim ? 10.0 : 5.0; + // by default tree support needs no infill, unless it's tree hybrid which contains normal nodes. + with_infill = support_pattern != smpNone && support_pattern != smpDefault; + const PrintConfig& print_config = m_object->print()->config(); + m_machine_border.contour = get_bed_shape_with_excluded_area(print_config); + Vec3d plate_offset = m_object->print()->get_plate_origin(); + // align with the centered object in current plate (may not be the 1st plate, so need to add the plate offset) + m_machine_border.translate(Point(scale_(plate_offset(0)), scale_(plate_offset(1))) - m_object->instances().front().shift); +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + SVG svg("SVG/machine_boarder.svg", m_object->bounding_box()); + if (svg.is_opened()) svg.draw(m_machine_border, "yellow"); +#endif +} - Polygons offset_slow, offset_fast; - bool add = false; - bool bypass_merge = false; - constexpr bool increase_radius = true, no_error = true, use_min_radius = true, move = true; // aliases for better readability +#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtSquare, 0. +void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) +{ + // overhangs are already detected + if (m_object->support_layer_count() >= m_object->layer_count()) + return; - // Determine in which order configurations are checked if they result in a valid influence area. Check will stop if a valid area is found - std::vector order; - auto insertSetting = [&](AreaIncreaseSettings settings, bool back) { - if (std::find(order.begin(), order.end(), settings) == order.end()) { - if (back) - order.emplace_back(settings); - else - order.insert(order.begin(), settings); - } - }; - - const bool parent_moved_slow = elem.last_area_increase.increase_speed < config.maximum_move_distance; - const bool avoidance_speed_mismatch = parent_moved_slow && elem.last_area_increase.type != AvoidanceType::Slow; - if (elem.last_area_increase.move && elem.last_area_increase.no_error && elem.can_use_safe_radius && !mergelayer && - !avoidance_speed_mismatch && (elem.distance_to_top >= config.tip_layers || parent_moved_slow)) { - // assume that the avoidance type that was best for the parent is best for me. Makes this function about 7% faster. - insertSetting({ elem.last_area_increase.type, elem.last_area_increase.increase_speed < config.maximum_move_distance ? slow_speed : fast_speed, - increase_radius, elem.last_area_increase.no_error, !use_min_radius, elem.last_area_increase.move }, true); - insertSetting({ elem.last_area_increase.type, elem.last_area_increase.increase_speed < config.maximum_move_distance ? slow_speed : fast_speed, - !increase_radius, elem.last_area_increase.no_error, !use_min_radius, elem.last_area_increase.move }, true); + // Clear and create Tree Support Layers + m_object->clear_support_layers(); + m_object->clear_tree_support_preview_cache(); + create_tree_support_layers(); + + const PrintObjectConfig& config = m_object->config(); + SupportType stype = support_type; + const coordf_t radius_sample_resolution = g_config_tree_support_collision_resolution; + const double nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(0); + const coordf_t extrusion_width = config.get_abs_value("line_width", nozzle_diameter); + const coordf_t extrusion_width_scaled = scale_(extrusion_width); + const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); + const bool bridge_no_support = max_bridge_length > 0; + const bool support_critical_regions_only = config.support_critical_regions_only.value; + const bool config_remove_small_overhangs = config.support_remove_small_overhang.value; + const int enforce_support_layers = config.enforce_support_layers.value; + const double area_thresh_well_supported = SQ(scale_(6)); + const double length_thresh_well_supported = scale_(6); + static const double sharp_tail_max_support_height = 16.f; + // a region is considered well supported if the number of layers below it exceeds this threshold + const int thresh_layers_below = 10 / config.layer_height; + double obj_height = m_object->size().z(); + // +1 makes the threshold inclusive + double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; + thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 + const double threshold_rad = Geometry::deg2rad(thresh_angle); + + // for small overhang removal + struct OverhangCluster { + std::map layer_overhangs; + ExPolygons merged_poly; + BoundingBox merged_bbox; + int min_layer = 1e7; + int max_layer = 0; + coordf_t offset = 0; + bool is_cantilever = false; + bool is_sharp_tail = false; + bool is_small_overhang = false; + OverhangCluster(const ExPolygon* expoly, int layer_nr) { + push_back(expoly, layer_nr); + } + void push_back(const ExPolygon* expoly, int layer_nr) { + layer_overhangs.emplace(layer_nr, expoly); + auto dilate1 = offset_ex(*expoly, offset); + if (!dilate1.empty()) + merged_poly = union_ex(merged_poly, dilate1); + min_layer = std::min(min_layer, layer_nr); + max_layer = std::max(max_layer, layer_nr); + merged_bbox.merge(get_extents(dilate1)); + } + int height() { + return max_layer - min_layer + 1; + } + bool intersects(const ExPolygon& region, int layer_nr, coordf_t offset) { + if (layer_nr < 1) return false; + auto it = layer_overhangs.find(layer_nr - 1); + if (it == layer_overhangs.end()) return false; + const ExPolygon* overhang = it->second; + + this->offset = offset; + auto dilate1 = offset_ex(region, offset); + BoundingBox bbox = get_extents(dilate1); + if (!merged_bbox.overlap(bbox)) + return false; + return overlaps({ *overhang }, dilate1); + } + // it's basically the combination of push_back and intersects, but saves an offset_ex + bool push_back_if_intersects(const ExPolygon& region, int layer_nr, coordf_t offset) { + bool is_intersect = false; + ExPolygons dilate1; + BoundingBox bbox; + do { + if (layer_nr < 1) break; + auto it = layer_overhangs.find(layer_nr - 1); + if (it == layer_overhangs.end()) break; + const ExPolygon* overhang = it->second; + + this->offset = offset; + dilate1 = offset_ex(region, offset); + if (dilate1.empty()) break; + bbox = get_extents(dilate1); + if (!merged_bbox.overlap(bbox)) + break; + is_intersect = overlaps({ *overhang }, dilate1); + } while (0); + if (is_intersect) { + layer_overhangs.emplace(layer_nr, ®ion); + merged_poly = union_ex(merged_poly, dilate1); + min_layer = std::min(min_layer, layer_nr); + max_layer = std::max(max_layer, layer_nr); + merged_bbox.merge(bbox); } - // branch may still go though a hole, so a check has to be done whether the hole was already passed, and the regular avoidance can be used. - if (!elem.can_use_safe_radius) { - // if the radius until which it is always increased can not be guaranteed, move fast. This is to avoid holes smaller than the real branch radius. - // This does not guarantee the avoidance of such holes, but ensures they are avoided if possible. - // order.emplace_back(AvoidanceType::Slow,!increase_radius,no_error,!use_min_radius,move); - insertSetting({ AvoidanceType::Slow, slow_speed, increase_radius, no_error, !use_min_radius, !move }, true); // did we go through the hole - // in many cases the definition of hole is overly restrictive, so to avoid unnecessary fast movement in the tip, it is ignored there for a bit. - // This CAN cause a branch to go though a hole it otherwise may have avoided. - if (elem.distance_to_top < round_up_divide(config.tip_layers, size_t(2))) - insertSetting({ AvoidanceType::Fast, slow_speed, increase_radius, no_error, !use_min_radius, !move }, true); - insertSetting({ AvoidanceType::FastSafe, fast_speed, increase_radius, no_error, !use_min_radius, !move }, true); // did we manage to avoid the hole - insertSetting({ AvoidanceType::FastSafe, fast_speed, !increase_radius, no_error, !use_min_radius, move }, true); - insertSetting({ AvoidanceType::Fast, fast_speed, !increase_radius, no_error, !use_min_radius, move }, true); - } else { - insertSetting({ AvoidanceType::Slow, slow_speed, increase_radius, no_error, !use_min_radius, move }, true); - // while moving fast to be able to increase the radius (b) may seems preferable (over a) this can cause the a sudden skip in movement, - // which looks similar to a layer shift and can reduce stability. - // as such idx have chosen to only use the user setting for radius increases as a friendly recommendation. - insertSetting({ AvoidanceType::Slow, slow_speed, !increase_radius, no_error, !use_min_radius, move }, true); // a - if (elem.distance_to_top < config.tip_layers) - insertSetting({ AvoidanceType::FastSafe, slow_speed, increase_radius, no_error, !use_min_radius, move }, true); - insertSetting({ AvoidanceType::FastSafe, fast_speed, increase_radius, no_error, !use_min_radius, move }, true); // b - insertSetting({ AvoidanceType::FastSafe, fast_speed, !increase_radius, no_error, !use_min_radius, move }, true); + return is_intersect; + } + }; + std::vector overhangClusters; + + auto find_and_insert_cluster = [](auto ®ionClusters, const ExPolygon ®ion, int layer_nr, coordf_t offset) { + OverhangCluster *cluster = nullptr; + for (int i = 0; i < regionClusters.size(); i++) { + auto cluster_i = ®ionClusters[i]; + if (cluster_i->push_back_if_intersects(region, layer_nr, offset)) { + cluster = cluster_i; + break; } + } + if (!cluster) { + cluster = ®ionClusters.emplace_back(®ion, layer_nr); + } + return cluster; + }; + + if (!is_tree(stype)) return; + + max_cantilever_dist = 0; + + // main part of overhang detection can be parallel + tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), + [&](const tbb::blocked_range& range) { + for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { + if (m_object->print()->canceled()) + break; + + if (!is_auto(stype) && layer_nr > enforce_support_layers) + continue; + + Layer* layer = m_object->get_layer(layer_nr); - if (elem.use_min_xy_dist) { - std::vector new_order; - // if the branch currently has to use min_xy_dist check if the configuration would also be valid - // with the regular xy_distance before checking with use_min_radius (Only happens when Support Distance priority is z overrides xy ) - for (AreaIncreaseSettings settings : order) { - new_order.emplace_back(settings); - new_order.push_back({ settings.type, settings.increase_speed, settings.increase_radius, settings.no_error, use_min_radius, settings.move }); + if (layer->lower_layer == nullptr) { + for (auto& slice : layer->lslices) { + auto bbox_size = get_extents(slice).size(); + if (!((bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) + && g_config_support_sharp_tails) { + layer->sharp_tails.push_back(slice); + layer->sharp_tails_height.insert({ &slice, layer->height }); + } + } + continue; } - order = new_order; - } - if (elem.to_buildplate || (elem.to_model_gracious && intersection(parent.influence_area, volumes.getPlaceableAreas(radius, layer_idx, throw_on_cancel)).empty())) { - // error case - // it is normal that we wont be able to find a new area at some point in time if we wont be able to reach layer 0 aka have to connect with the model - insertSetting({ AvoidanceType::Fast, fast_speed, !increase_radius, !no_error, elem.use_min_xy_dist, move }, true); - } - if (elem.distance_to_top < elem.dont_move_until && elem.can_use_safe_radius) // only do not move when holes would be avoided in every case. - // Only do not move when already in a no hole avoidance with the regular xy distance. - insertSetting({ AvoidanceType::Slow, 0, increase_radius, no_error, !use_min_radius, !move }, false); - - Polygons inc_wo_collision; - // Check whether it is faster to calculate the area increased with the fast speed independently from the slow area, or time could be saved by reusing the slow area to calculate the fast one. - // Calculated by comparing the steps saved when calcualting idependently with the saved steps when not. - bool offset_independant_faster = radius / safe_movement_distance - int(config.maximum_move_distance + extra_speed < radius + safe_movement_distance) > - round_up_divide((extra_speed + extra_slow_speed + config.maximum_move_distance_slow), safe_movement_distance); - for (const AreaIncreaseSettings &settings : order) { - if (settings.move) { - if (offset_slow.empty() && (settings.increase_speed == slow_speed || ! offset_independant_faster)) { - // offsetting in 2 steps makes our offsetted area rounder preventing (rounding) errors created by to pointy areas. At this point one can see that the Polygons class - // was never made for precision in the single digit micron range. - offset_slow = safe_offset_inc(parent.influence_area, extra_speed + extra_slow_speed + config.maximum_move_distance_slow, - wall_restriction, safe_movement_distance, offset_independant_faster ? safe_movement_distance + radius : 0, 2); -#ifdef TREESUPPORT_DEBUG_SVG - SVG::export_expolygons(debug_out_path("treesupport-increase_areas_one_layer-slow-%d-%ld.svg", layer_idx, int(merging_area_idx)), - { { { union_ex(wall_restriction) }, { "wall_restricrictions", "gray", 0.5f } }, - { { union_ex(offset_slow) }, { "offset_slow", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif // TREESUPPORT_DEBUG_SVG + + Layer* lower_layer = layer->lower_layer; + coordf_t lower_layer_offset = layer_nr < enforce_support_layers ? -0.15 * extrusion_width : (float)lower_layer->height / tan(threshold_rad); + coordf_t support_offset_scaled = scale_(lower_layer_offset); + // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! + ExPolygons lower_polys; + for (const ExPolygon& expoly : lower_layer->lslices) { + if (!offset_ex(expoly, -extrusion_width_scaled / 2).empty()) { + lower_polys.emplace_back(expoly); } - if (offset_fast.empty() && settings.increase_speed != slow_speed) { - if (offset_independant_faster) - offset_fast = safe_offset_inc(parent.influence_area, extra_speed + config.maximum_move_distance, - wall_restriction, safe_movement_distance, offset_independant_faster ? safe_movement_distance + radius : 0, 1); - else { - const coord_t delta_slow_fast = config.maximum_move_distance - (config.maximum_move_distance_slow + extra_slow_speed); - offset_fast = safe_offset_inc(offset_slow, delta_slow_fast, wall_restriction, safe_movement_distance, safe_movement_distance + radius, offset_independant_faster ? 2 : 1); + } + ExPolygons curr_polys; + std::vector curr_poly_ptrs; + for (const ExPolygon& expoly : layer->lslices) { + if (!offset_ex(expoly, -extrusion_width_scaled / 2).empty()) { + curr_polys.emplace_back(expoly); + curr_poly_ptrs.emplace_back(&expoly); + } + } + + // normal overhang + ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); + ExPolygons overhang_areas = diff_ex(curr_polys, lower_layer_offseted); + + overhang_areas.erase(std::remove_if(overhang_areas.begin(), overhang_areas.end(), + [extrusion_width_scaled](ExPolygon& area) { return offset_ex(area, -0.1 * extrusion_width_scaled).empty(); }), + overhang_areas.end()); + + + if (is_auto(stype) && g_config_support_sharp_tails) + { + // BBS detect sharp tail + for (const ExPolygon* expoly : curr_poly_ptrs) { + bool is_sharp_tail = false; + // 1. nothing below + // this is a sharp tail region if it's small but non-ignorable + if (!overlaps(offset_ex(*expoly, 0.5 * extrusion_width_scaled), lower_polys)) { + is_sharp_tail = expoly->area() < area_thresh_well_supported && !offset_ex(*expoly, -0.1 * extrusion_width_scaled).empty(); } -#ifdef TREESUPPORT_DEBUG_SVG - SVG::export_expolygons(debug_out_path("treesupport-increase_areas_one_layer-fast-%d-%ld.svg", layer_idx, int(merging_area_idx)), - { { { union_ex(wall_restriction) }, { "wall_restricrictions", "gray", 0.5f } }, - { { union_ex(offset_fast) }, { "offset_fast", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif // TREESUPPORT_DEBUG_SVG + + if (is_sharp_tail) { + ExPolygons overhang = diff_ex({ *expoly }, lower_polys); + layer->sharp_tails.push_back(*expoly); + layer->sharp_tails_height.insert({ expoly, layer->height }); + append(overhang_areas, overhang); + + if (!overhang.empty()) { + has_sharp_tails = true; +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + SVG svg(format("SVG/sharp_tail_orig_%.02f.svg", layer->print_z), m_object->bounding_box()); + if (svg.is_opened()) svg.draw(overhang, "red"); +#endif + } + } } } - std::optional result; - inc_wo_collision.clear(); - if (!settings.no_error) { - // ERROR CASE - // if the area becomes for whatever reason something that clipper sees as a line, offset would stop working, so ensure that even if if wrongly would be a line, it still actually has an area that can be increased - Polygons lines_offset = offset(to_polylines(parent.influence_area), scaled(0.005), jtMiter, 1.2); - Polygons base_error_area = union_(parent.influence_area, lines_offset); - result = increase_single_area(volumes, config, settings, layer_idx, parent, - base_error_area, to_bp_data, to_model_data, inc_wo_collision, (config.maximum_move_distance + extra_speed) * 1.5, mergelayer); -#ifdef TREE_SUPPORT_SHOW_ERRORS - BOOST_LOG_TRIVIAL(error) -#else // TREE_SUPPORT_SHOW_ERRORS - BOOST_LOG_TRIVIAL(warning) -#endif // TREE_SUPPORT_SHOW_ERRORS - << "Influence area could not be increased! Data about the Influence area: " - "Radius: " << radius << " at layer: " << layer_idx - 1 << " NextTarget: " << elem.layer_idx << " Distance to top: " << elem.distance_to_top << - " Elephant foot increases " << elem.elephant_foot_increases << " use_min_xy_dist " << elem.use_min_xy_dist << " to buildplate " << elem.to_buildplate << - " gracious " << elem.to_model_gracious << " safe " << elem.can_use_safe_radius << " until move " << elem.dont_move_until << " \n " - "Parent " << &parent << ": Radius: " << support_element_collision_radius(config, parent.state) << " at layer: " << layer_idx << " NextTarget: " << parent.state.layer_idx << - " Distance to top: " << parent.state.distance_to_top << " Elephant foot increases " << parent.state.elephant_foot_increases << " use_min_xy_dist " << parent.state.use_min_xy_dist << - " to buildplate " << parent.state.to_buildplate << " gracious " << parent.state.to_model_gracious << " safe " << parent.state.can_use_safe_radius << " until move " << parent.state.dont_move_until; - tree_supports_show_error("Potentially lost branch!"sv, true); -#ifdef TREE_SUPPORTS_TRACK_LOST - if (result) - result->lost = true; -#endif // TREE_SUPPORTS_TRACK_LOST - } else - result = increase_single_area(volumes, config, settings, layer_idx, parent, - settings.increase_speed == slow_speed ? offset_slow : offset_fast, to_bp_data, to_model_data, inc_wo_collision, 0, mergelayer); - - if (result) { - elem = *result; - radius = support_element_collision_radius(config, elem); - elem.last_area_increase = settings; - add = true; - // do not merge if the branch should not move or the priority has to be to get farther away from the model. - bypass_merge = !settings.move || (settings.use_min_distance && elem.distance_to_top < config.tip_layers); - if (settings.move) - elem.dont_move_until = 0; - else - elem.result_on_layer = parent.state.result_on_layer; - - elem.can_use_safe_radius = settings.type != AvoidanceType::Fast; - - if (!settings.use_min_distance) - elem.use_min_xy_dist = false; - if (!settings.no_error) -#ifdef TREE_SUPPORT_SHOW_ERRORS - BOOST_LOG_TRIVIAL(error) -#else // TREE_SUPPORT_SHOW_ERRORS - BOOST_LOG_TRIVIAL(info) -#endif // TREE_SUPPORT_SHOW_ERRORS - << "Trying to keep area by moving faster than intended: Success"; - break; - } else if (!settings.no_error) - BOOST_LOG_TRIVIAL(error) << "Trying to keep area by moving faster than intended: FAILURE! WRONG BRANCHES LIKLY!"; - } - if (add) { - // Union seems useless, but some rounding errors somewhere can cause to_bp_data to be slightly bigger than it should be. - assert(! inc_wo_collision.empty() || ! to_bp_data.empty() || ! to_model_data.empty()); - Polygons max_influence_area = safe_union( - diff_clipped(inc_wo_collision, volumes.getCollision(radius, layer_idx - 1, elem.use_min_xy_dist)), - safe_union(to_bp_data, to_model_data)); - merging_area.state = elem; - assert(!max_influence_area.empty()); - merging_area.set_bbox(get_extents(max_influence_area)); - merging_area.areas.influence_areas = std::move(max_influence_area); - if (! bypass_merge) { - if (elem.to_buildplate) - merging_area.areas.to_bp_areas = std::move(to_bp_data); - if (config.support_rests_on_model) - merging_area.areas.to_model_areas = std::move(to_model_data); + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + for (ExPolygon& poly : overhang_areas) { + if (offset_ex(poly, -0.1 * extrusion_width_scaled).empty()) continue; + ts_layer->overhang_areas.emplace_back(poly); + + // check cantilever + { + auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_layer->lslices, scale_(0.5))); + Polygons cluster_boundary = to_polygons(cluster_boundary_ex); + if (cluster_boundary.empty()) continue; + double dist_max = 0; + for (auto& pt : poly.contour.points) { + double dist_pt = std::numeric_limits::max(); + for (auto& ply : cluster_boundary) { + double d = ply.distance_to(pt); + dist_pt = std::min(dist_pt, d); + } + dist_max = std::max(dist_max, dist_pt); + } + if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base + max_cantilever_dist = std::max(max_cantilever_dist, dist_max); + layer->cantilevers.emplace_back(poly); + BOOST_LOG_TRIVIAL(debug) << "found a cantilever cluster. layer_nr=" << layer_nr << dist_max; + has_cantilever = true; + } + } } - } else { - // If the bottom most point of a branch is set, later functions will assume that the position is valid, and ignore it. - // But as branches connecting with the model that are to small have to be culled, the bottom most point has to be not set. - // A point can be set on the top most tip layer (maybe more if it should not move for a few layers). - parent.state.result_on_layer_reset(); - parent.state.to_model_gracious = false; -#ifdef TREE_SUPPORTS_TRACK_LOST - parent.state.verylost = true; -#endif // TREE_SUPPORTS_TRACK_LOST } - - throw_on_cancel(); } - }, tbb::simple_partitioner()); -} + ); // end tbb::parallel_for -[[nodiscard]] static SupportElementState merge_support_element_states( - const SupportElementState &first, const SupportElementState &second, const Point &next_position, const coord_t layer_idx, - const TreeSupportSettings &config) -{ - SupportElementState out; - out.next_position = next_position; - out.layer_idx = layer_idx; - out.use_min_xy_dist = first.use_min_xy_dist || second.use_min_xy_dist; - out.supports_roof = first.supports_roof || second.supports_roof; - out.dont_move_until = std::max(first.dont_move_until, second.dont_move_until); - out.can_use_safe_radius = first.can_use_safe_radius || second.can_use_safe_radius; - out.missing_roof_layers = std::min(first.missing_roof_layers, second.missing_roof_layers); - out.skip_ovalisation = false; - if (first.target_height > second.target_height) { - out.target_height = first.target_height; - out.target_position = first.target_position; - } else { - out.target_height = second.target_height; - out.target_position = second.target_position; - } - out.effective_radius_height = std::max(first.effective_radius_height, second.effective_radius_height); - out.distance_to_top = std::max(first.distance_to_top, second.distance_to_top); + BOOST_LOG_TRIVIAL(info) << "max_cantilever_dist=" << max_cantilever_dist; + + // check if the sharp tails should be extended higher + if (is_auto(stype) && g_config_support_sharp_tails && !detect_first_sharp_tail_only) { + for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { + if (m_object->print()->canceled()) + break; - out.to_buildplate = first.to_buildplate && second.to_buildplate; - out.to_model_gracious = first.to_model_gracious && second.to_model_gracious; // valid as we do not merge non-gracious with gracious + Layer* layer = m_object->get_layer(layer_nr); + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + Layer* lower_layer = layer->lower_layer; + if (!lower_layer) + continue; - out.elephant_foot_increases = 0; - if (config.bp_radius_increase_per_layer > 0) { - coord_t foot_increase_radius = std::abs(std::max(support_element_collision_radius(config, second), support_element_collision_radius(config, first)) - support_element_collision_radius(config, out)); - // elephant_foot_increases has to be recalculated, as when a smaller tree with a larger elephant_foot_increases merge with a larger branch - // the elephant_foot_increases may have to be lower as otherwise the radius suddenly increases. This results often in a non integer value. - out.elephant_foot_increases = foot_increase_radius / (config.bp_radius_increase_per_layer - config.branch_radius_increase_per_layer); - } + // BBS detect sharp tail + const ExPolygons& lower_layer_sharptails = lower_layer->sharp_tails; + const auto& lower_layer_sharptails_height = lower_layer->sharp_tails_height; + for (ExPolygon& expoly : layer->lslices) { + bool is_sharp_tail = false; + float accum_height = layer->height; + do { + // 2. something below + // check whether this is above a sharp tail region. + + // 2.1 If no sharp tail below, this is considered as common region. + ExPolygons supported_by_lower = intersection_ex({ expoly }, lower_layer_sharptails); + if (supported_by_lower.empty()) { + is_sharp_tail = false; + break; + } - // set last settings to the best out of both parents. If this is wrong, it will only cause a small performance penalty instead of weird behavior. - out.last_area_increase = { - std::min(first.last_area_increase.type, second.last_area_increase.type), - std::min(first.last_area_increase.increase_speed, second.last_area_increase.increase_speed), - first.last_area_increase.increase_radius || second.last_area_increase.increase_radius, - first.last_area_increase.no_error || second.last_area_increase.no_error, - first.last_area_increase.use_min_distance && second.last_area_increase.use_min_distance, - first.last_area_increase.move || second.last_area_increase.move }; + // 2.2 If sharp tail below, check whether it support this region enough. +#if 0 + // judge by area isn't reliable, failure cases include 45 degree rotated cube + float supported_area = area(supported_by_lower); + if (supported_area > area_thresh_well_supported) { + is_sharp_tail = false; + break; + } +#endif + BoundingBox bbox = get_extents(supported_by_lower); + if (bbox.size().x() > length_thresh_well_supported && bbox.size().y() > length_thresh_well_supported) { + is_sharp_tail = false; + break; + } - return out; -} + // 2.3 check whether sharp tail exceed the max height + for (const auto& lower_sharp_tail_height : lower_layer_sharptails_height) { + if (lower_sharp_tail_height.first->overlaps(expoly)) { + accum_height += lower_sharp_tail_height.second; + break; + } + } + if (accum_height > sharp_tail_max_support_height) { + is_sharp_tail = false; + break; + } -static bool merge_influence_areas_two_elements( - const TreeModelVolumes &volumes, const TreeSupportSettings &config, const LayerIndex layer_idx, - SupportElementMerging &dst, SupportElementMerging &src) -{ - // Don't merge gracious with a non gracious area as bad placement could negatively impact reliability of the whole subtree. - const bool merging_gracious_and_non_gracious = dst.state.to_model_gracious != src.state.to_model_gracious; - // Could cause some issues with the increase of one area, as it is assumed that if the smaller is increased - // by the delta to the larger it is engulfed by it already. But because a different collision - // may be removed from the in draw_area() generated circles, this assumption could be wrong. - const bool merging_min_and_regular_xy = dst.state.use_min_xy_dist != src.state.use_min_xy_dist; - - if (merging_gracious_and_non_gracious || merging_min_and_regular_xy) - return false; + // 2.4 if the area grows fast than threshold, it get connected to other part or + // it has a sharp slop and will be auto supported. + ExPolygons new_overhang_expolys = diff_ex({ expoly }, lower_layer_sharptails); + if ((get_extents(new_overhang_expolys).size() - get_extents(lower_layer_sharptails).size()).both_comp(Point(scale_(5), scale_(5)), ">") || !offset_ex(new_overhang_expolys, -5.0 * extrusion_width_scaled).empty()) { + is_sharp_tail = false; + break; + } - const bool dst_radius_bigger = support_element_collision_radius(config, dst.state) > support_element_collision_radius(config, src.state); - const SupportElementMerging &smaller_rad = dst_radius_bigger ? src : dst; - const SupportElementMerging &bigger_rad = dst_radius_bigger ? dst : src; - const coord_t real_radius_delta = std::abs(support_element_radius(config, bigger_rad.state) - support_element_radius(config, smaller_rad.state)); - { - // Testing intersection of bounding boxes. - // Expand the smaller radius branch bounding box to match the lambda intersect_small_with_bigger() below. - // Because the lambda intersect_small_with_bigger() applies a rounded offset, a snug offset of the bounding box - // is sufficient. On the other side, if a mitered offset was used by the lambda, - // the bounding box expansion would have to account for the mitered extension of the sharp corners. - Eigen::AlignedBox smaller_bbox = smaller_rad.bbox(); - smaller_bbox.min() -= Point{ real_radius_delta, real_radius_delta }; - smaller_bbox.max() += Point{ real_radius_delta, real_radius_delta }; - if (! smaller_bbox.intersects(bigger_rad.bbox())) - return false; - } + // 2.5 mark the expoly as sharptail + is_sharp_tail = true; + } while (0); + + if (is_sharp_tail) { + ExPolygons overhang = diff_ex({ expoly }, lower_layer->lslices); + layer->sharp_tails.push_back(expoly); + layer->sharp_tails_height.insert({ &expoly, accum_height }); + append(ts_layer->overhang_areas, overhang); + + if (!overhang.empty()) + has_sharp_tails = true; +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + SVG svg(format("SVG/sharp_tail_%.02f.svg",layer->print_z), m_object->bounding_box()); + if (svg.is_opened()) svg.draw(overhang, "red"); +#endif + } - // Accumulator of a radius increase of a "to model" branch by merging in a "to build plate" branch. - coord_t increased_to_model_radius = 0; - const bool merging_to_bp = dst.state.to_buildplate && src.state.to_buildplate; - if (! merging_to_bp) { - // Get the real radius increase as the user does not care for the collision model. - if (dst.state.to_buildplate != src.state.to_buildplate) { - // Merging a "to build plate" branch with a "to model" branch. - // Don't allow merging a thick "to build plate" branch into a thinner "to model" branch. - const coord_t rdst = support_element_radius(config, dst.state); - const coord_t rsrc = support_element_radius(config, src.state); - if (dst.state.to_buildplate) { - if (rsrc < rdst) - increased_to_model_radius = src.state.increased_to_model_radius + rdst - rsrc; - } else { - if (rsrc > rdst) - increased_to_model_radius = dst.state.increased_to_model_radius + rsrc - rdst; - } - if (increased_to_model_radius > config.max_to_model_radius_increase) - return false; + } + } + } + + // group overhang clusters + for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { + if (m_object->print()->canceled()) + break; + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + Layer* layer = m_object->get_layer(layer_nr); + for (auto& overhang : ts_layer->overhang_areas) { + OverhangCluster* cluster = find_and_insert_cluster(overhangClusters, overhang, layer_nr, extrusion_width_scaled); + if (overlaps({ overhang },layer->cantilevers)) + cluster->is_cantilever = true; } - // if a merge could place a stable branch on unstable ground, would be increasing the radius further - // than allowed to when merging to model and to_bp trees or would merge to model before it is known - // they will even been drawn the merge is skipped - if (! dst.state.supports_roof && ! src.state.supports_roof && - std::max(src.state.distance_to_top, dst.state.distance_to_top) < config.min_dtt_to_model) - return false; } - // Area of the bigger radius is used to ensure correct placement regarding the relevant avoidance, - // so if that would change an invalid area may be created. - if (! bigger_rad.state.can_use_safe_radius && smaller_rad.state.can_use_safe_radius) - return false; + auto enforcers = m_object->slice_support_enforcers(); + auto blockers = m_object->slice_support_blockers(); + m_object->project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers); + m_object->project_and_append_custom_facets(false, EnforcerBlockerType::BLOCKER, blockers); + if (is_auto(stype) && config_remove_small_overhangs) { + if (blockers.size() < m_object->layer_count()) + blockers.resize(m_object->layer_count()); + for (auto& cluster : overhangClusters) { + // 3. check whether the small overhang is sharp tail + cluster.is_sharp_tail = false; + for (size_t layer_id = cluster.min_layer; layer_id <= cluster.max_layer; layer_id++) { + Layer* layer = m_object->get_layer(layer_id); + if (overlaps(layer->sharp_tails, cluster.merged_poly)) { + cluster.is_sharp_tail = true; + break; + } + } - // the bigger radius is used to verify that the area is still valid after the increase with the delta. - // If there were a point where the big influence area could be valid with can_use_safe_radius - // the element would already be can_use_safe_radius. - // the smaller radius, which gets increased by delta may reach into the area where use_min_xy_dist is no longer required. - const bool use_min_radius = bigger_rad.state.use_min_xy_dist && smaller_rad.state.use_min_xy_dist; - - // The idea is that the influence area with the smaller collision radius is increased by the radius difference. - // If this area has any intersections with the influence area of the larger collision radius, a branch (of the larger collision radius) placed in this intersection, has already engulfed the branch of the smaller collision radius. - // Because of this a merge may happen even if the influence areas (that represent possible center points of branches) do not intersect yet. - // Remember that collision radius <= real radius as otherwise this assumption would be false. - const coord_t smaller_collision_radius = support_element_collision_radius(config, smaller_rad.state); - const Polygons &collision = volumes.getCollision(smaller_collision_radius, layer_idx - 1, use_min_radius); - auto intersect_small_with_bigger = [real_radius_delta, smaller_collision_radius, &collision, &config](const Polygons &small, const Polygons &bigger) { - return intersection( - safe_offset_inc( - small, real_radius_delta, collision, - // -3 avoids possible rounding errors - 2 * (config.xy_distance + smaller_collision_radius - 3), 0, 0), - bigger); - }; -//#define TREES_MERGE_RATHER_LATER - Polygons intersect = -#ifdef TREES_MERGE_RATHER_LATER - intersection( -#else - intersect_small_with_bigger( + if (!cluster.is_sharp_tail && !cluster.is_cantilever) { + // 2. check overhang cluster size is smaller than 3.0 * fw_scaled + auto erode1 = offset_ex(cluster.merged_poly, -1 * extrusion_width_scaled); + Point bbox_sz = get_extents(erode1).size(); + if (bbox_sz.x() < 2 * extrusion_width_scaled || bbox_sz.y() < 2 * extrusion_width_scaled) { + cluster.is_small_overhang = true; + } + } + +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + const Layer* layer1 = m_object->get_layer(cluster.min_layer); + BoundingBox bbox = cluster.merged_bbox; + bbox.merge(get_extents(layer1->lslices)); + SVG svg(format("SVG/overhangCluster_%s-%s_%s-%s_tail=%s_cantilever=%s_small=%s.svg", + cluster.min_layer, cluster.max_layer, layer1->print_z, m_object->get_layer(cluster.max_layer)->print_z, + cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang), bbox); + if (svg.is_opened()) { + svg.draw(layer1->lslices, "red"); + svg.draw(cluster.merged_poly, "blue"); + svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), "lslices", "red", 2); + svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), "overhang", "blue", 2); + } #endif - merging_to_bp ? smaller_rad.areas.to_bp_areas : smaller_rad.areas.to_model_areas, - merging_to_bp ? bigger_rad.areas.to_bp_areas : bigger_rad.areas.to_model_areas); - const auto _tiny_area_threshold = tiny_area_threshold(); - // dont use empty as a line is not empty, but for this use-case it very well may be (and would be one layer down as union does not keep lines) - // check if the overlap is large enough (Small ares tend to attract rounding errors in clipper). - if (area(intersect) <= _tiny_area_threshold) - return false; + if (!cluster.is_small_overhang) + continue; - // While 0.025 was guessed as enough, i did not have reason to change it. - if (area(offset(intersect, scaled(-0.025), jtMiter, 1.2)) <= _tiny_area_threshold) - return false; + for (auto it = cluster.layer_overhangs.begin(); it != cluster.layer_overhangs.end(); it++) { + int layer_nr = it->first; + auto p_overhang = it->second; + blockers[layer_nr].push_back(p_overhang->contour); + } + } + } -#ifdef TREES_MERGE_RATHER_LATER - intersect = - intersect_small_with_bigger( - merging_to_bp ? smaller_rad.areas.to_bp_areas : smaller_rad.areas.to_model_areas, - merging_to_bp ? bigger_rad.areas.to_bp_areas : bigger_rad.areas.to_model_areas); -#endif + has_overhangs = false; + for (int layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { + if (m_object->print()->canceled()) + break; - // Do the actual merge now that the branches are confirmed to be able to intersect. - // calculate which point is closest to the point of the last merge (or tip center if no merge above it has happened) - // used at the end to estimate where to best place the branch on the bottom most layer - // could be replaced with a random point inside the new area - Point new_pos = move_inside_if_outside(intersect, dst.state.next_position); - - SupportElementState new_state = merge_support_element_states(dst.state, src.state, new_pos, layer_idx - 1, config); - new_state.increased_to_model_radius = increased_to_model_radius == 0 ? - // increased_to_model_radius was not set yet. Propagate maximum. - std::max(dst.state.increased_to_model_radius, src.state.increased_to_model_radius) : - increased_to_model_radius; - - // Rather unioning with "intersect" due to some rounding errors. - Polygons influence_areas = safe_union( - intersect_small_with_bigger(smaller_rad.areas.influence_areas, bigger_rad.areas.influence_areas), - intersect); - - Polygons to_model_areas; - if (merging_to_bp && config.support_rests_on_model) - to_model_areas = new_state.to_model_gracious ? - // Rather unioning with "intersect" due to some rounding errors. - safe_union( - intersect_small_with_bigger(smaller_rad.areas.to_model_areas, bigger_rad.areas.to_model_areas), - intersect) : - influence_areas; - - dst.parents.insert(dst.parents.end(), src.parents.begin(), src.parents.end()); - dst.state = new_state; - dst.areas.influence_areas = std::move(influence_areas); - dst.areas.to_bp_areas.clear(); - dst.areas.to_model_areas.clear(); - if (merging_to_bp) { - dst.areas.to_bp_areas = std::move(intersect); - if (config.support_rests_on_model) - dst.areas.to_model_areas = std::move(to_model_areas); - } else - dst.areas.to_model_areas = std::move(intersect); - // Update the bounding box. - BoundingBox bbox(get_extents(dst.areas.influence_areas)); - bbox.merge(get_extents(dst.areas.to_bp_areas)); - bbox.merge(get_extents(dst.areas.to_model_areas)); - dst.set_bbox(bbox); - // Clear the source data. - src.areas.clear(); - src.parents.clear(); - return true; -} + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + auto layer = m_object->get_layer(layer_nr); + auto lower_layer = layer->lower_layer; + if (support_critical_regions_only && is_auto(stype)) { + ts_layer->overhang_areas.clear(); + if (lower_layer == nullptr) + ts_layer->overhang_areas = layer->sharp_tails; + else + ts_layer->overhang_areas = diff_ex(layer->sharp_tails, lower_layer->lslices); -/*! - * \brief Merges Influence Areas if possible. - * - * Branches which do overlap have to be merged. This helper merges all elements in input with the elements into reduced_new_layer. - * Elements in input_aabb are merged together if possible, while elements reduced_new_layer_aabb are not checked against each other. - * - * \param reduced_aabb[in,out] The already processed elements. - * \param input_aabb[in] Not yet processed elements - * \param to_bp_areas[in] The Elements of the current Layer that will reach the buildplate. Value is the influence area where the center of a circle of support may be placed. - * \param to_model_areas[in] The Elements of the current Layer that do not have to reach the buildplate. Also contains main as every element that can reach the buildplate is not forced to. - * Value is the influence area where the center of a circle of support may be placed. - * \param influence_areas[in] The influence areas without avoidance removed. - * \param insert_bp_areas[out] Elements to be inserted into the main dictionary after the Helper terminates. - * \param insert_model_areas[out] Elements to be inserted into the secondary dictionary after the Helper terminates. - * \param insert_influence[out] Elements to be inserted into the dictionary containing the largest possibly valid influence area (ignoring if the area may not be there because of avoidance) - * \param erase[out] Elements that should be deleted from the above dictionaries. - * \param layer_idx[in] The Index of the current Layer. - */ + append(ts_layer->overhang_areas, layer->cantilevers); + } -static SupportElementMerging* merge_influence_areas_leaves( - const TreeModelVolumes &volumes, const TreeSupportSettings &config, const LayerIndex layer_idx, - SupportElementMerging * const dst_begin, SupportElementMerging *dst_end) -{ - // Merging at the lowest level of the AABB tree. Checking one against each other, O(n^2). - assert(dst_begin < dst_end); - for (SupportElementMerging *i = dst_begin; i + 1 < dst_end;) { - for (SupportElementMerging *j = i + 1; j != dst_end;) - if (merge_influence_areas_two_elements(volumes, config, layer_idx, *i, *j)) { - // i was merged with j, j is empty. - if (j != -- dst_end) - *j = std::move(*dst_end); - goto merged; - } else - ++ j; - // not merged - ++ i; - merged: - ; - } - return dst_end; -} + if (layer_nr < blockers.size()) { + Polygons& blocker = blockers[layer_nr]; + // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, + // which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right. + ts_layer->overhang_areas = diff_ex(ts_layer->overhang_areas, offset_ex(union_(blocker), scale_(radius_sample_resolution))); + } -static SupportElementMerging* merge_influence_areas_two_sets( - const TreeModelVolumes &volumes, const TreeSupportSettings &config, const LayerIndex layer_idx, - SupportElementMerging * const dst_begin, SupportElementMerging * dst_end, - SupportElementMerging * src_begin, SupportElementMerging * const src_end) -{ - // Merging src into dst. - // Areas of src should not overlap with areas of another elements of src. - // Areas of dst should not overlap with areas of another elements of dst. - // The memory from dst_begin to src_end is reserved for the merging operation, - // src follows dst. - assert(src_begin < src_end); - assert(dst_begin < dst_end); - assert(dst_end <= src_begin); - for (SupportElementMerging *src = src_begin; src != src_end; ++ src) { - SupportElementMerging *dst = dst_begin; - SupportElementMerging *merged = nullptr; - for (; dst != dst_end; ++ dst) - if (merge_influence_areas_two_elements(volumes, config, layer_idx, *dst, *src)) { - merged = dst ++; - if (src != src_begin) - // Compactify src. - *src = std::move(*src_begin); - ++ src_begin; - break; + if (max_bridge_length > 0 && ts_layer->overhang_areas.size() > 0 && lower_layer) { + // do not break bridge for normal part in TreeHybrid + bool break_bridge = !(support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang); + m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &ts_layer->overhang_areas, max_bridge_length, break_bridge); + } + + for (auto &area : ts_layer->overhang_areas) { + ts_layer->overhang_types.emplace(&area, SupportLayer::Detected); + } + // enforcers now follow same logic as normal support. See STUDIO-3692 + if (layer_nr < enforcers.size() && lower_layer) { + float no_interface_offset = std::accumulate(layer->regions().begin(), layer->regions().end(), FLT_MAX, + [](float acc, const LayerRegion* layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); + Polygons lower_layer_polygons = (layer_nr == 0) ? Polygons() : to_polygons(lower_layer->lslices); + Polygons& enforcer = enforcers[layer_nr]; + if (!enforcer.empty()) { + ExPolygons enforcer_polygons = diff_ex(intersection_ex(layer->lslices, enforcer), + // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. + expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + append(ts_layer->overhang_areas, enforcer_polygons); + ts_layer->overhang_types.emplace(&ts_layer->overhang_areas.back(), SupportLayer::Enforced); } - for (; dst != dst_end;) - if (merge_influence_areas_two_elements(volumes, config, layer_idx, *merged, *dst)) { - // Compactify dst. - if (dst != -- dst_end) - *dst = std::move(*dst_end); - } else - ++ dst; - } - // Compactify src elements that were not merged with dst to the end of dst. - assert(dst_end <= src_begin); - if (dst_end == src_begin) - dst_end = src_end; - else - while (src_begin != src_end) - *dst_end ++ = std::move(*src_begin ++); + } - return dst_end; -} + if (!ts_layer->overhang_areas.empty()) has_overhangs = true; + if (!layer->cantilevers.empty()) has_cantilever = true; + } -/*! - * \brief Merges Influence Areas at one layer if possible. - * - * Branches which do overlap have to be merged. This manages the helper and uses a divide and conquer approach to parallelize this problem. This parallelization can at most accelerate the merging by a factor of 2. - * - * \param to_bp_areas[in] The Elements of the current Layer that will reach the buildplate. - * Value is the influence area where the center of a circle of support may be placed. - * \param to_model_areas[in] The Elements of the current Layer that do not have to reach the buildplate. Also contains main as every element that can reach the buildplate is not forced to. - * Value is the influence area where the center of a circle of support may be placed. - * \param influence_areas[in] The Elements of the current Layer without avoidances removed. This is the largest possible influence area for this layer. - * Value is the influence area where the center of a circle of support may be placed. - * \param layer_idx[in] The current layer. - */ -static void merge_influence_areas( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const LayerIndex layer_idx, - std::vector &influence_areas, - std::function throw_on_cancel) -{ - const size_t input_size = influence_areas.size(); - if (input_size == 0) - return; +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + for (const SupportLayer* layer : m_object->support_layers()) { + if (layer->overhang_areas.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty())) + continue; - // Merging by divide & conquer. - // The majority of time is consumed by Clipper polygon operations, intersection is accelerated by bounding boxes. - // Sorting input into an AABB tree helps to perform most of the intersections at first iterations, - // thus reducing computation when merging larger subtrees. - // The actual merge logic is found in merge_influence_areas_two_sets. - - // Build an AABB tree over the influence areas. - //FIXME A full tree does not need to be built, the lowest level branches will be always bucketed. - // However the additional time consumed is negligible. - AABBTreeIndirect::Tree<2, coord_t> tree; - // Sort influence_areas in place. - tree.build_modify_input(influence_areas); - - throw_on_cancel(); - - // Prepare the initial buckets as ranges of influence areas. The initial buckets contain power of 2 influence areas to follow - // the branching of the AABB tree. - // Vectors of ranges of influence areas, following the branching of the AABB tree: - std::vector> buckets; - // Initial number of buckets for 1st round of merging. - size_t num_buckets_initial; - { - // How many buckets per first merge iteration? - const size_t num_threads = tbb::this_task_arena::max_concurrency(); - // 4 buckets per thread if possible, - const size_t num_buckets_min = (input_size + 2) / 4; - // 2 buckets per thread otherwise. - const size_t num_buckets_max = input_size / 2; - num_buckets_initial = num_buckets_min >= num_threads ? num_buckets_min : num_buckets_max; - const size_t bucket_size = num_buckets_min >= num_threads ? 4 : 2; - // Fill in the buckets. - SupportElementMerging *it = influence_areas.data(); - // Reserve one more bucket to keep a single influence area which will not be merged in the first iteration. - buckets.reserve(num_buckets_initial + 1); - for (size_t i = 0; i < num_buckets_initial; ++ i, it += bucket_size) - buckets.emplace_back(std::make_pair(it, it + bucket_size)); - SupportElementMerging *it_end = influence_areas.data() + influence_areas.size(); - if (buckets.back().second >= it_end) { - // Last bucket is less than size 4, but bigger than size 1. - buckets.back().second = std::min(buckets.back().second, it_end); - } else { - // Last bucket is size 1, it will not be merged in the first iteration. - assert(it + 1 == it_end); - buckets.emplace_back(std::make_pair(it, it_end)); - } - } - - // 1st merge iteration, merge one with each other. - tbb::parallel_for(tbb::blocked_range(0, num_buckets_initial), - [&](const tbb::blocked_range &range) { - for (size_t idx = range.begin(); idx < range.end(); ++ idx) { - // Merge bucket_count adjacent to each other, merging uneven bucket numbers into even buckets - buckets[idx].second = merge_influence_areas_leaves(volumes, config, layer_idx, buckets[idx].first, buckets[idx].second); - throw_on_cancel(); - } - }); - - // Further merge iterations, merging one AABB subtree with another one, hopefully minimizing intersections between the elements - // of each of the subtree. - while (buckets.size() > 1) { - tbb::parallel_for(tbb::blocked_range(0, buckets.size() / 2), - [&](const tbb::blocked_range &range) { - for (size_t idx = range.begin(); idx < range.end(); ++ idx) { - const size_t bucket_pair_idx = idx * 2; - // Merge bucket_count adjacent to each other, merging uneven bucket numbers into even buckets - buckets[bucket_pair_idx].second = merge_influence_areas_two_sets(volumes, config, layer_idx, - buckets[bucket_pair_idx].first, buckets[bucket_pair_idx].second, - buckets[bucket_pair_idx + 1].first, buckets[bucket_pair_idx + 1].second); - throw_on_cancel(); + SVG svg(format("SVG/overhang_areas_%s.svg", layer->print_z), m_object->bounding_box()); + if (svg.is_opened()) { + svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); + svg.draw(layer->overhang_areas, "orange"); + if (blockers.size() > layer->id()) + svg.draw(blockers[layer->id()], "red"); + } + if (enforcers.size() > layer->id()) { + SVG svg(format("SVG/enforcer_%s.svg", layer->print_z), m_object->bounding_box()); + if (svg.is_opened()) { + svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); + svg.draw(enforcers[layer->id()], "red"); } - }); - // Remove odd buckets, which were merged into even buckets. - size_t new_size = (buckets.size() + 1) / 2; - for (size_t i = 1; i < new_size; ++ i) - buckets[i] = std::move(buckets[i * 2]); - buckets.erase(buckets.begin() + new_size, buckets.end()); + } + if (blockers.size() > layer->id()) { + SVG svg(format("SVG/blocker_%s.svg", layer->print_z), m_object->bounding_box()); + if (svg.is_opened()) { + svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); + svg.draw(blockers[layer->id()], "red"); + } + } } +#endif } -/*! - * \brief Propagates influence downwards, and merges overlapping ones. - * - * \param move_bounds[in,out] All currently existing influence areas - */ -static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupportSettings &config, std::vector &move_bounds, std::function throw_on_cancel) +void TreeSupport::create_tree_support_layers() { -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - const double data_size_inverse = 1 / double(move_bounds.size()); - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - auto dur_inc = std::chrono::duration_values::zero(); - auto dur_total = std::chrono::duration_values::zero(); - - LayerIndex last_merge_layer_idx = move_bounds.size(); - bool new_element = false; - const auto _tiny_area_threshold = tiny_area_threshold(); - - // Ensures at least one merge operation per 3mm height, 50 layers, 1 mm movement of slow speed or 5mm movement of fast speed (whatever is lowest). Values were guessed. - size_t max_merge_every_x_layers = std::min(std::min(5000 / (std::max(config.maximum_move_distance, coord_t(100))), 1000 / std::max(config.maximum_move_distance_slow, coord_t(20))), 3000 / config.layer_height); - size_t merge_every_x_layers = 1; - // Calculate the influence areas for each layer below (Top down) - // This is done by first increasing the influence area by the allowed movement distance, and merging them with other influence areas if possible - for (int layer_idx = int(move_bounds.size()) - 1; layer_idx > 0; -- layer_idx) - if (SupportElements &prev_layer = move_bounds[layer_idx]; ! prev_layer.empty()) { - // merging is expensive and only parallelized to a max speedup of 2. As such it may be useful in some cases to only merge every few layers to improve performance. - bool had_new_element = new_element; - const bool merge_this_layer = had_new_element || size_t(last_merge_layer_idx - layer_idx) >= merge_every_x_layers; - if (had_new_element) - merge_every_x_layers = 1; - const auto ta = std::chrono::high_resolution_clock::now(); - - // ### Increase the influence areas by the allowed movement distance - std::vector influence_areas; - influence_areas.reserve(prev_layer.size()); - for (int32_t element_idx = 0; element_idx < int32_t(prev_layer.size()); ++ element_idx) { - SupportElement &el = prev_layer[element_idx]; - assert(!el.influence_area.empty()); - SupportElement::ParentIndices parents; - parents.emplace_back(element_idx); - influence_areas.push_back({ el.state, parents }); - } - increase_areas_one_layer(volumes, config, influence_areas, layer_idx, prev_layer, merge_this_layer, throw_on_cancel); - - // Place already fully constructed elements to the output, remove them from influence_areas. - SupportElements &this_layer = move_bounds[layer_idx - 1]; - influence_areas.erase(std::remove_if(influence_areas.begin(), influence_areas.end(), - [&this_layer, &_tiny_area_threshold, layer_idx](SupportElementMerging &elem) { - if (elem.areas.influence_areas.empty()) - // This area was removed completely due to collisions. - return true; - if (elem.areas.to_bp_areas.empty() && elem.areas.to_model_areas.empty()) { - if (area(elem.areas.influence_areas) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Insert Error of Influence area bypass on layer " << layer_idx - 1; - tree_supports_show_error("Insert error of area after bypassing merge.\n"sv, true); - } - // Move the area to output. - this_layer.emplace_back(elem.state, std::move(elem.parents), std::move(elem.areas.influence_areas)); - return true; - } - // Keep the area. - return false; - }), - influence_areas.end()); - - dur_inc += std::chrono::high_resolution_clock::now() - ta; - new_element = ! move_bounds[layer_idx - 1].empty(); - if (merge_this_layer) { - bool reduced_by_merging = false; - if (size_t count_before_merge = influence_areas.size(); count_before_merge > 1) { - // ### Calculate which influence areas overlap, and merge them into a new influence area (simplified: an intersection of influence areas that have such an intersection) - merge_influence_areas(volumes, config, layer_idx, influence_areas, throw_on_cancel); - reduced_by_merging = count_before_merge > influence_areas.size(); - } - last_merge_layer_idx = layer_idx; - if (! reduced_by_merging && ! had_new_element) - merge_every_x_layers = std::min(max_merge_every_x_layers, merge_every_x_layers + 1); - } - - dur_total += std::chrono::high_resolution_clock::now() - ta; + int layer_id = 0; + coordf_t raft_print_z = 0.f; + coordf_t raft_slice_z = 0.f; + for (; layer_id < m_slicing_params.base_raft_layers; layer_id++) { + raft_print_z += m_slicing_params.base_raft_layer_height; + raft_slice_z = raft_print_z - m_slicing_params.base_raft_layer_height / 2; + m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); + } - // Save calculated elements to output, and allocate Polygons on heap, as they will not be changed again. - for (SupportElementMerging &elem : influence_areas) - if (! elem.areas.influence_areas.empty()) { - Polygons new_area = safe_union(elem.areas.influence_areas); - if (area(new_area) < _tiny_area_threshold) { - BOOST_LOG_TRIVIAL(error) << "Insert Error of Influence area on layer " << layer_idx - 1 << ". Origin of " << elem.parents.size() << " areas. Was to bp " << elem.state.to_buildplate; - tree_supports_show_error("Insert error of area after merge.\n"sv, true); - } - this_layer.emplace_back(elem.state, std::move(elem.parents), std::move(new_area)); - } + for (; layer_id < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; layer_id++) { + raft_print_z += m_slicing_params.interface_raft_layer_height; + raft_slice_z = raft_print_z - m_slicing_params.interface_raft_layer_height / 2; + m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); + } - #ifdef SLIC3R_TREESUPPORTS_PROGRESS - progress_total += data_size_inverse * TREE_PROGRESS_AREA_CALC; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); - #endif - throw_on_cancel(); + for (Layer *layer : m_object->layers()) { + SupportLayer* ts_layer = m_object->add_tree_support_layer(layer->id(), layer->height, layer->print_z, layer->slice_z); + if (ts_layer->id() > m_raft_layers) { + SupportLayer* lower_layer = m_object->get_support_layer(ts_layer->id() - 1); + lower_layer->upper_layer = ts_layer; + ts_layer->lower_layer = lower_layer; } - - BOOST_LOG_TRIVIAL(info) << "Time spent with creating influence areas' subtasks: Increasing areas " << dur_inc.count() / 1000000 << - " ms merging areas: " << (dur_total - dur_inc).count() / 1000000 << " ms"; + } } -/*! - * \brief Sets the result_on_layer for all parents based on the SupportElement supplied. - * - * \param elem[in] The SupportElements, which parent's position should be determined. - */ -static void set_points_on_areas(const SupportElement &elem, SupportElements *layer_above) +static inline BoundingBox fill_expolygon_generate_paths( + ExtrusionEntitiesPtr &dst, + ExPolygon &&expolygon, + Fill *filler, + const FillParams &fill_params, + ExtrusionRole role, + const Flow &flow) { - assert(!elem.state.deleted); - assert(layer_above != nullptr || elem.parents.empty()); + Surface surface(stInternal, std::move(expolygon)); + Polylines polylines; + try { + polylines = filler->fill_surface(&surface, fill_params); + } catch (InfillFailedException &) { + } - // Based on the branch center point of the current layer, the point on the next (further up) layer is calculated. - if (! elem.state.result_on_layer_is_set()) { - BOOST_LOG_TRIVIAL(error) << "Uninitialized support element"; - tree_supports_show_error("Uninitialized support element. A branch may be missing.\n"sv, true); - return; + BoundingBox fill_bbox; + if (!polylines.empty()) { + fill_bbox = polylines[0].bounding_box(); + for (auto& polyline : polylines) + fill_bbox.merge(polyline.bounding_box()); } - if (layer_above) - for (int32_t next_elem_idx : elem.parents) { - assert(next_elem_idx >= 0); - SupportElement &next_elem = (*layer_above)[next_elem_idx]; - assert(! next_elem.state.deleted); - // if the value was set somewhere else it it kept. This happens when a branch tries not to move after being unable to create a roof. - if (! next_elem.state.result_on_layer_is_set()) { - // Move inside has edgecases (see tests) so DONT use Polygons.inside to confirm correct move, Error with distance 0 is <= 1 - // it is not required to check if how far this move moved a point as is can be larger than maximum_movement_distance. - // While this seems like a problem it may for example occur after merges. - next_elem.state.result_on_layer = move_inside_if_outside(next_elem.influence_area, elem.state.result_on_layer); - // do not call recursive because then amount of layers would be restricted by the stack size - } - // Mark the parent element as accessed from a valid child element. - next_elem.state.marked = true; - } + extrusion_entities_append_paths(dst, std::move(polylines), role, flow.mm3_per_mm(), flow.width(), flow.height()); + + return fill_bbox; } -static void set_to_model_contact_simple(SupportElement &elem) +static inline std::vector fill_expolygons_generate_paths( + ExtrusionEntitiesPtr &dst, + ExPolygons &&expolygons, + Fill *filler, + const FillParams &fill_params, + ExtrusionRole role, + const Flow &flow) { - const Point best = move_inside_if_outside(elem.influence_area, elem.state.next_position); - elem.state.result_on_layer = best; - BOOST_LOG_TRIVIAL(debug) << "Added NON gracious Support On Model Point (" << best.x() << "," << best.y() << "). The current layer is " << elem.state.layer_idx; + std::vector fill_boxes; + for (ExPolygon& expoly : expolygons) { + auto box = fill_expolygon_generate_paths(dst, std::move(expoly), filler, fill_params, role, flow); + fill_boxes.emplace_back(box); + } + return fill_boxes; } -/*! - * \brief Get the best point to connect to the model and set the result_on_layer of the relevant SupportElement accordingly. - * - * \param move_bounds[in,out] All currently existing influence areas - * \param first_elem[in,out] SupportElement that did not have its result_on_layer set meaning that it does not have a child element. - * \param layer_idx[in] The current layer. - */ -static void set_to_model_contact_to_model_gracious( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - SupportElement &first_elem, - std::function throw_on_cancel) +static void _make_loops(ExtrusionEntitiesPtr& loops_entities, ExPolygons &support_area, ExtrusionRole role, size_t wall_count, const Flow &flow) { - SupportElement *last_successfull_layer = nullptr; + Polygons loops; + std::map depth_per_expoly; + std::list expoly_list; - // check for every layer upwards, up to the point where this influence area was created (either by initial insert or merge) if the branch could be placed on it, and highest up layer index. - { - SupportElement *elem = &first_elem; - for (LayerIndex layer_check = elem->state.layer_idx; - ! intersection(elem->influence_area, volumes.getPlaceableAreas(support_element_collision_radius(config, elem->state), layer_check, throw_on_cancel)).empty(); - elem = &move_bounds[++ layer_check][elem->parents.front()]) { - assert(elem->state.layer_idx == layer_check); - assert(! elem->state.deleted); - assert(elem->state.to_model_gracious); - last_successfull_layer = elem; - if (elem->parents.size() != 1) - // Reached merge point. - break; - } + for (ExPolygon &expoly : support_area) { + expoly_list.emplace_back(std::move(expoly)); + depth_per_expoly.insert({&expoly_list.back(), 0}); } + if (expoly_list.empty()) return; - // Could not find valid placement, even though it should exist => error handling - if (last_successfull_layer == nullptr) { - BOOST_LOG_TRIVIAL(warning) << "No valid placement found for to model gracious element on layer " << first_elem.state.layer_idx; - tree_supports_show_error("Could not fine valid placement on model! Just placing it down anyway. Could cause floating branches."sv, true); - first_elem.state.to_model_gracious = false; - set_to_model_contact_simple(first_elem); - } else { - // Found a gracious area above first_elem. Remove all below last_successfull_layer. - { - LayerIndex parent_layer_idx = first_elem.state.layer_idx; - for (SupportElement *elem = &first_elem; elem != last_successfull_layer; elem = &move_bounds[++ parent_layer_idx][elem->parents.front()]) { - assert(! elem->state.deleted); - elem->state.deleted = true; + while (!expoly_list.empty()) { + polygons_append(loops, to_polygons(expoly_list.front())); + + auto first_iter = expoly_list.begin(); + auto depth_iter = depth_per_expoly.find(&expoly_list.front()); + if (depth_iter->second + 1 < wall_count) { + //ExPolygons expolys_new = offset_ex(expoly_list.front(), -float(flow.scaled_spacing()), jtSquare); + // shrink and then dilate to prevent overlapping and overflow + ExPolygons expolys_new = offset2_ex({expoly_list.front()}, -1.4 * float(flow.scaled_spacing()), .4 * float(flow.scaled_spacing())); + + for (ExPolygon &expoly : expolys_new) { + auto new_iter = expoly_list.insert(expoly_list.begin(), expoly); + depth_per_expoly.insert({&*new_iter, depth_iter->second + 1}); } } - // Guess a point inside the influence area, in which the branch will be placed in. - const Point best = move_inside_if_outside(last_successfull_layer->influence_area, last_successfull_layer->state.next_position); - last_successfull_layer->state.result_on_layer = best; - BOOST_LOG_TRIVIAL(debug) << "Added gracious Support On Model Point (" << best.x() << "," << best.y() << "). The current layer is " << last_successfull_layer; + depth_per_expoly.erase(depth_iter); + expoly_list.erase(first_iter); } -} -// Remove elements marked as "deleted", update indices to parents. -static void remove_deleted_elements(std::vector &move_bounds) -{ - std::vector map_parents; - std::vector map_current; - for (LayerIndex layer_idx = LayerIndex(move_bounds.size()) - 1; layer_idx >= 0; -- layer_idx) { - SupportElements &layer = move_bounds[layer_idx]; - map_current.clear(); - for (int32_t i = 0; i < int32_t(layer.size());) { - SupportElement &element = layer[i]; - if (element.state.deleted) { - if (map_current.empty()) { - // Initialize with identity map. - map_current.assign(layer.size(), 0); - std::iota(map_current.begin(), map_current.end(), 0); - } - // Delete all "deleted" elements from the end of the layer vector. - while (i < int32_t(layer.size()) && layer.back().state.deleted) { - layer.pop_back(); - // Mark as deleted in the map. - map_current[layer.size()] = -1; - } - assert(i == layer.size() || i + 1 < layer.size()); - if (i + 1 < int32_t(layer.size())) { - element = std::move(layer.back()); - layer.pop_back(); - // Mark the current element as deleted. - map_current[i] = -1; - // Mark the moved element as moved to index i. - map_current[layer.size()] = i; - } + // draw connected loops + if (/*wall_count > 1 && wall_count<5*/0) { + // TODO this method may drop some contours + wall_count = std::min(wall_count, loops.size()); + Polylines polylines; + polylines.push_back(Polyline()); + Polyline& polyline = polylines.back(); + Point end_pt; + Point end_dir; + for (int wall_idx = 0; wall_idx < wall_count; wall_idx++) { + Polygon &loop = loops[wall_idx]; + if (loop.size()<3) continue; + // break the closed loop if this is not the last loop, so the next loop can attach to the end_pt + //if (wall_idx != wall_count - 1 && loop.first_point() == loop.last_point()) + // loop.points.pop_back(); + + if (wall_idx == 0) { + polyline.append(loop.points); } else { - // Current element is not deleted. Update its parent indices. - if (! map_parents.empty()) - for (int32_t &parent_idx : element.parents) - parent_idx = map_parents[parent_idx]; - ++ i; + double d = loop.distance_to(end_pt); + if (d < scale_(2)) { // if current loop is close to the previous one + polyline.append(end_pt); + ExtrusionPath expath; + expath.polyline.append(loop.points); + ExtrusionLoop extru_loop(expath); + extru_loop.split_at(end_pt, false); + polyline.append(extru_loop.as_polyline()); + }else{// create a new polylie if they are far away + polylines.push_back(Polyline()); + polyline = polylines.back(); + polyline.append(loop.points); + } } + end_pt = polyline.points.back(); + end_dir = end_pt - polyline.points[polyline.points.size() - 2]; + Point perpendicular_dir = turn90_ccw(end_dir); + end_pt = end_pt + normal(perpendicular_dir, flow.scaled_spacing()); } - std::swap(map_current, map_parents); + + extrusion_entities_append_paths(loops_entities, polylines, role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); + } else { + extrusion_entities_append_loops(loops_entities, std::move(loops), role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); + } } + +static void make_perimeter_and_inner_brim(ExtrusionEntitiesPtr &dst, const ExPolygon &support_area, size_t wall_count, const Flow &flow, ExtrusionRole role) +{ + Polygons loops; + ExPolygons support_area_new = offset_ex(support_area, -0.5f * float(flow.scaled_spacing()), jtSquare); + _make_loops(dst, support_area_new, role, wall_count, flow); } -/*! - * \brief Set the result_on_layer point for all influence areas - * - * \param move_bounds[in,out] All currently existing influence areas - */ -static void create_nodes_from_area( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - std::function throw_on_cancel) +static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const Print& print, const ExPolygon& support_area, size_t wall_count, const Flow& flow, ExtrusionRole role, Fill* filler_support, double support_density, bool infill_first=true) { - // Initialize points on layer 0, with a "random" point in the influence area. - // Point is chosen based on an inaccurate estimate where the branches will split into two, but every point inside the influence area would produce a valid result. - { - SupportElements *layer_above = move_bounds.size() > 1 ? &move_bounds[1] : nullptr; - if (layer_above) { - for (SupportElement &elem : *layer_above) - elem.state.marked = false; - } - for (SupportElement &init : move_bounds.front()) { - init.state.result_on_layer = move_inside_if_outside(init.influence_area, init.state.next_position); - // Also set the parent nodes, as these will be required for the first iteration of the loop below and mark the parent nodes. - set_points_on_areas(init, layer_above); - } - } - - throw_on_cancel(); - - for (LayerIndex layer_idx = 1; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - auto &layer = move_bounds[layer_idx]; - auto *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; - if (layer_above) - for (SupportElement &elem : *layer_above) - elem.state.marked = false; - for (SupportElement &elem : layer) { - assert(! elem.state.deleted); - assert(elem.state.layer_idx == layer_idx); - // check if the resulting center point is not yet set - if (! elem.state.result_on_layer_is_set()) { - if (elem.state.to_buildplate || (elem.state.distance_to_top < config.min_dtt_to_model && ! elem.state.supports_roof)) { - if (elem.state.to_buildplate) { - BOOST_LOG_TRIVIAL(error) << "Uninitialized Influence area targeting " << elem.state.target_position.x() << "," << elem.state.target_position.y() << ") " - "at target_height: " << elem.state.target_height << " layer: " << layer_idx; - tree_supports_show_error("Uninitialized support element! A branch could be missing or exist partially."sv, true); - } - // we dont need to remove yet the parents as they will have a lower dtt and also no result_on_layer set - elem.state.deleted = true; - } else { - // set the point where the branch will be placed on the model - if (elem.state.to_model_gracious) - set_to_model_contact_to_model_gracious(volumes, config, move_bounds, elem, throw_on_cancel); - else - set_to_model_contact_simple(elem); - } - } - if (! elem.state.deleted && ! elem.state.marked && elem.state.target_height == layer_idx) - // Just a tip surface with no supporting element. - elem.state.deleted = true; - if (elem.state.deleted) { - for (int32_t parent_idx : elem.parents) - // When the roof was not able to generate downwards enough, the top elements may have not moved, and have result_on_layer already set. - // As this branch needs to be removed => all parents result_on_layer have to be invalidated. - (*layer_above)[parent_idx].state.result_on_layer_reset(); + Polygons loops; + ExPolygons support_area_new = offset_ex(support_area, -0.5f * float(flow.scaled_spacing()), jtSquare); + + // draw infill + FillParams fill_params; + fill_params.density = support_density; + fill_params.dont_adjust = true; + ExPolygons to_infill = support_area_new; + std::vector fill_boxes = fill_expolygons_generate_paths(dst, std::move(to_infill), filler_support, fill_params, role, flow); + + // allow wall_count to be zero, which means only draw infill + if (wall_count == 0) { + for (auto fill_bbox : fill_boxes) + { + // extend bounding box on x-axis + if (cos(filler_support->angle)>=sin(filler_support->angle)) { + fill_bbox.min[0] -= scale_(10); + fill_bbox.max[0] += scale_(10); } - if (! elem.state.deleted) { - // Element is valid now setting points in the layer above and mark the parent nodes. - set_points_on_areas(elem, layer_above); + else { + fill_bbox.min[1] -= scale_(10); + fill_bbox.max[1] += scale_(10); } + support_area_new = diff_ex(support_area_new, offset_ex(to_expolygons({ fill_bbox.polygon() }), 0.5*flow.scaled_width())); } - throw_on_cancel(); - } - -#ifndef NDEBUG - // Verify the tree connectivity including the branch slopes. - for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++ layer_idx) { - auto &layer = move_bounds[layer_idx]; - auto &above = move_bounds[layer_idx + 1]; - for (SupportElement &elem : layer) - if (! elem.state.deleted) { - for (int32_t iparent : elem.parents) { - SupportElement &parent = above[iparent]; - assert(! parent.state.deleted); - assert(elem.state.result_on_layer_is_set() == parent.state.result_on_layer_is_set()); - if (elem.state.result_on_layer_is_set()) { - double radius_increase = support_element_radius(config, elem) - support_element_radius(config, parent); - assert(radius_increase >= 0); - double shift = (elem.state.result_on_layer - parent.state.result_on_layer).cast().norm(); - //FIXME this assert fails a lot. Is it correct? -// assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); - } - } - } + // filter out small areas + for (auto it = support_area_new.begin(); it != support_area_new.end(); ) { + if (offset_ex(*it, -flow.scaled_width()).empty()) + it = support_area_new.erase(it); + else + it++; } -#endif // NDEBUG - - remove_deleted_elements(move_bounds); - -#ifndef NDEBUG - // Verify the tree connectivity including the branch slopes. - for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++ layer_idx) { - auto &layer = move_bounds[layer_idx]; - auto &above = move_bounds[layer_idx + 1]; - for (SupportElement &elem : layer) { - assert(! elem.state.deleted); - for (int32_t iparent : elem.parents) { - SupportElement &parent = above[iparent]; - assert(! parent.state.deleted); - assert(elem.state.result_on_layer_is_set() == parent.state.result_on_layer_is_set()); - if (elem.state.result_on_layer_is_set()) { - double radius_increase = support_element_radius(config, elem) - support_element_radius(config, parent); - assert(radius_increase >= 0); - double shift = (elem.state.result_on_layer - parent.state.result_on_layer).cast().norm(); - //FIXME this assert fails a lot. Is it correct? -// assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); - } - } + } + + { // draw loops + ExtrusionEntitiesPtr loops_entities; + _make_loops(loops_entities, support_area_new, role, wall_count, flow); + + if (infill_first) + dst.insert(dst.end(), loops_entities.begin(), loops_entities.end()); + else { // loops first + loops_entities.insert(loops_entities.end(), dst.begin(), dst.end()); + dst = std::move(loops_entities); + } + } + if (infill_first) { + // sort regions to reduce travel + Points ordering_points; + for (const auto& area : dst) + ordering_points.push_back(area->first_point()); + std::vector order = chain_points(ordering_points); + ExtrusionEntitiesPtr new_dst; + new_dst.reserve(ordering_points.size()); + for (size_t i : order) + new_dst.emplace_back(dst[i]); + dst = new_dst; + } +} + +void TreeSupport::generate_toolpaths() +{ + const PrintConfig &print_config = m_object->print()->config(); + const PrintObjectConfig &object_config = m_object->config(); + coordf_t support_extrusion_width = m_support_params.support_extrusion_width; + coordf_t nozzle_diameter = print_config.nozzle_diameter.get_at(object_config.support_filament - 1); + 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(); + coordf_t bottom_interface_spacing = object_config.support_bottom_interface_spacing.value + m_support_material_interface_flow.spacing(); + coordf_t interface_density = std::min(1., m_support_material_interface_flow.spacing() / interface_spacing); + coordf_t bottom_interface_density = std::min(1., m_support_material_interface_flow.spacing() / bottom_interface_spacing); + + const coordf_t branch_radius = object_config.tree_support_branch_diameter.value / 2; + const coordf_t branch_radius_scaled = scale_(branch_radius); + + if (m_object->support_layers().empty()) + return; + + // calculate fill areas for raft layers + ExPolygons raft_areas; + if (m_object->layer_count() > 0) { + const Layer *layer = m_object->layers().front(); + for (const ExPolygon &expoly : layer->lslices) { + raft_areas.push_back(expoly); + } + } + + if (m_object->support_layer_count() > m_raft_layers) { + const SupportLayer *ts_layer = m_object->get_support_layer(m_raft_layers); + for (const ExPolygon& expoly : ts_layer->floor_areas) + raft_areas.push_back(expoly); + for (const ExPolygon& expoly : ts_layer->roof_areas) + raft_areas.push_back(expoly); + for (const ExPolygon& expoly : ts_layer->base_areas) + raft_areas.push_back(expoly); + } + + raft_areas = std::move(offset_ex(raft_areas, scale_(object_config.raft_first_layer_expansion))); + + // generate raft tool path + if (m_raft_layers > 0) + { + ExtrusionRole raft_contour_er = m_slicing_params.base_raft_layers > 0 ? erSupportMaterial : erSupportMaterialInterface; + SupportLayer *ts_layer = m_object->support_layers().front(); + Flow flow = m_object->print()->brim_flow(); + + Polygons loops; + for (const ExPolygon& expoly : raft_areas) { + loops.push_back(expoly.contour); + loops.insert(loops.end(), expoly.holes.begin(), expoly.holes.end()); + } + extrusion_entities_append_loops(ts_layer->support_fills.entities, std::move(loops), raft_contour_er, + float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); + raft_areas = offset_ex(raft_areas, -flow.scaled_spacing() / 2.); + } + + for (size_t layer_nr = 0; layer_nr < m_slicing_params.base_raft_layers; layer_nr++) { + SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); + coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); + + Flow support_flow = layer_nr == 0 ? m_object->print()->brim_flow() : Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + Fill* filler_interface = Fill::new_from_type(ipRectilinear); + filler_interface->angle = layer_nr == 0 ? 90 : 0; + filler_interface->spacing = support_extrusion_width; + + FillParams fill_params; + fill_params.density = object_config.raft_first_layer_density * 0.01; + fill_params.dont_adjust = true; + + fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(offset_ex(raft_areas, scale_(expand_offset))), + filler_interface, fill_params, erSupportMaterial, support_flow); + } + + for (size_t layer_nr = m_slicing_params.base_raft_layers; + layer_nr < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; + layer_nr++) + { + SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); + coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); + + Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + Fill* filler_interface = Fill::new_from_type(ipRectilinear); + filler_interface->angle = 0; + filler_interface->spacing = support_extrusion_width; + + FillParams fill_params; + fill_params.density = interface_density; + fill_params.dont_adjust = true; + + fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(offset_ex(raft_areas, scale_(expand_offset))), + filler_interface, fill_params, erSupportMaterialInterface, support_flow); + } + + BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); + + std::shared_ptr filler_interface = std::shared_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); + std::shared_ptr filler_Roof1stLayer = std::shared_ptr(Fill::new_from_type(ipRectilinear)); + filler_interface->set_bounding_box(bbox_object); + filler_Roof1stLayer->set_bounding_box(bbox_object); + filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value + 90.); + filler_Roof1stLayer->angle = Geometry::deg2rad(object_config.support_angle.value + 90.); + + // generate tree support tool paths + tbb::parallel_for( + tbb::blocked_range(m_raft_layers, m_object->support_layer_count()), + [&](const tbb::blocked_range& range) + { + for (size_t layer_id = range.begin(); layer_id < range.end(); layer_id++) { + if (m_object->print()->canceled()) + break; + + m_object->print()->set_status(70, (boost::format(_L("Support: generate toolpath at layer %d")) % layer_id).str()); + + SupportLayer* ts_layer = m_object->get_support_layer(layer_id); + Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); + coordf_t support_spacing = object_config.support_base_pattern_spacing.value + support_flow.spacing(); + coordf_t support_density = std::min(1., support_flow.spacing() / support_spacing); + ts_layer->support_fills.no_sort = false; + + for (auto& area_group : ts_layer->area_groups) { + ExPolygon& poly = *area_group.area; + ExPolygons polys; + FillParams fill_params; + if (area_group.type != SupportLayer::BaseType) { + // interface + if (layer_id == 0) { + Flow flow = m_raft_layers == 0 ? m_object->print()->brim_flow() : support_flow; + make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, wall_count, flow, + area_group.type == SupportLayer::RoofType ? erSupportMaterialInterface : erSupportMaterial); + polys = std::move(offset_ex(poly, -flow.scaled_spacing())); + } else if (area_group.type == SupportLayer::Roof1stLayer) { + polys = std::move(offset_ex(poly, 0.5*support_flow.scaled_width())); + } + else { + polys.push_back(poly); + } + fill_params.density = interface_density; + fill_params.dont_adjust = true; + } + if (area_group.type == SupportLayer::Roof1stLayer) { + // roof_1st_layer + fill_params.density = interface_density; + // Note: spacing means the separation between two lines as if they are tightly extruded + filler_Roof1stLayer->spacing = m_support_material_interface_flow.spacing(); + // generate a perimeter first to support interface better + ExtrusionEntityCollection* temp_support_fills = new ExtrusionEntityCollection(); + make_perimeter_and_infill(temp_support_fills->entities, *m_object->print(), poly, 1, m_support_material_interface_flow, erSupportMaterial, + filler_Roof1stLayer.get(), interface_density, false); + temp_support_fills->no_sort = true; // make sure loops are first + if (!temp_support_fills->entities.empty()) + ts_layer->support_fills.entities.push_back(temp_support_fills); + else + delete temp_support_fills; + } else if (area_group.type == SupportLayer::FloorType) { + // floor_areas + fill_params.density = bottom_interface_density; + filler_interface->spacing = m_support_material_interface_flow.spacing(); + fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), + filler_interface.get(), fill_params, erSupportMaterialInterface, m_support_material_interface_flow); + } else if (area_group.type == SupportLayer::RoofType) { + // roof_areas + fill_params.density = interface_density; + filler_interface->spacing = m_support_material_interface_flow.spacing(); + if (m_object_config->support_interface_pattern == smipGrid) { + filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value); + fill_params.dont_sort = true; + } + if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) + filler_interface->layer_id = round(area_group.dist_to_top / ts_layer->height); + fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), filler_interface.get(), fill_params, erSupportMaterialInterface, + m_support_material_interface_flow); + } + else { + // base_areas + Flow flow = (layer_id == 0 && m_raft_layers == 0) ? m_object->print()->brim_flow() : support_flow; + bool need_infill = with_infill; + if(m_object_config->support_base_pattern==smpDefault) + need_infill &= area_group.need_infill; + if (layer_id>0 && area_group.dist_to_top < 10 && !need_infill && support_style!=smsTreeHybrid) { + if (area_group.dist_to_top < 5) // 1 wall at the top <5mm + make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, 1, flow, erSupportMaterial); + else // at least 2 walls for range [5,10) + make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, std::max(wall_count, size_t(2)), flow, erSupportMaterial); + } + else if (layer_id > 0 && need_infill && m_support_params.base_fill_pattern != ipLightning) { + std::shared_ptr filler_support = std::shared_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); + filler_support->set_bounding_box(bbox_object); + filler_support->spacing = object_config.support_base_pattern_spacing.value * support_density;// constant spacing to align support infill lines + filler_support->angle = Geometry::deg2rad(object_config.support_angle.value); + + // allow infill-only mode if support is thick enough (so min_wall_count is 0); + // otherwise must draw 1 wall + size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; + make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, wall_count), flow, + erSupportMaterial, filler_support.get(), support_density); + } + else { + make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, + layer_id > 0 ? wall_count : std::numeric_limits::max(), flow, erSupportMaterial); + } + + } + } + if (m_support_params.base_fill_pattern == ipLightning) + { + double print_z = ts_layer->print_z; + if (printZ_to_lightninglayer.find(print_z) == printZ_to_lightninglayer.end()) + continue; + //TODO: + //1.the second parameter of convertToLines seems to decide how long the lightning should be trimmed from its root, so that the root wont overlap/detach the support contour. + // whether current value works correctly remained to be tested + //2.related to previous one, that lightning roots need to be trimed more when support has multiple walls + //3.function connect_infill() and variable 'params' helps create connection pattern along contours between two lightning roots, + // strengthen lightnings while it may make support harder. decide to enable it or not. if yes, proper values for params are remained to be tested + auto& lightning_layer = generator->getTreesForLayer(printZ_to_lightninglayer[print_z]); + + Flow flow = (layer_id == 0 && m_raft_layers == 0) ? m_object->print()->brim_flow() :support_flow; + ExPolygons areas = offset_ex(ts_layer->base_areas, -flow.scaled_spacing()); + + for (auto& area : areas) + { + Polylines polylines = lightning_layer.convertToLines(to_polygons(area), 0); + for (auto itr = polylines.begin(); itr != polylines.end();) + { + if (itr->length() < scale_(1.0)) + itr = polylines.erase(itr); + else + itr++; + } + Polylines opt_polylines; +#if 1 + //this wont create connection patterns along contours + append(opt_polylines, chain_polylines(std::move(polylines))); +#else + //this will create connection patterns along contours + FillParams params; + params.anchor_length = float(Fill::infill_anchor * 0.01 * flow.spacing()); + params.anchor_length_max = Fill::infill_anchor_max; + params.anchor_length = std::min(params.anchor_length, params.anchor_length_max); + Fill::connect_infill(std::move(polylines), area, opt_polylines, flow.spacing(), params); +#endif + extrusion_entities_append_paths(ts_layer->support_fills.entities, opt_polylines, erSupportMaterial, + float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); + +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + std::string name = "./SVG/trees_polyline_" + std::to_string(ts_layer->print_z) /*+ "_" + std::to_string(rand_num)*/ + ".svg"; + BoundingBox bbox = get_extents(ts_layer->base_areas); + SVG svg(name, bbox); + if (svg.is_opened()) { + svg.draw(ts_layer->base_areas, "blue"); + svg.draw(generator->Overhangs()[printZ_to_lightninglayer[print_z]], "red"); + for (auto &line : opt_polylines) svg.draw(line, "yellow"); + } +#endif + } + } + + // sort extrusions to reduce travel, also make sure walls go before infills + if(ts_layer->support_fills.no_sort==false) + chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities); + } + } + ); +} + +Polygons TreeSupport::spanning_tree_to_polygon(const std::vector& spanning_trees, Polygons layer_contours, int layer_nr) +{ + Polygons polys; + auto& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; + for (MinimumSpanningTree mst : spanning_trees) { + std::vector points = mst.vertices(); + if (points.size() == 0) + continue; + std::map visited; + for (int i=0;i to_ignore; + for (int i = 0; i < points.size(); i++) { + if (visited[points[i]] == true) + continue; + + Polygon poly; + bool has_next = true; + Point pt1 = points[i]; + poly.points.push_back(pt1); + visited[pt1] = true; + + while (has_next) { + const std::vector& neighbours = mst.adjacent_nodes(pt1); + if (neighbours.empty()) + { + break; + } + + double min_ccw = std::numeric_limits::max(); + Point pt_selected = neighbours[0]; + has_next = false; + for (Point pt2 : neighbours) { + if (to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) { + auto iter = mst_line_x_layer_contour_cache.find({ pt1,pt2 }); + if (iter != mst_line_x_layer_contour_cache.end()) { + if (iter->second) + continue; + } + else { + Polylines pls; + pls.emplace_back(pt1, pt2); + Polylines pls_intersect = intersection_pl(pls, layer_contours); + mst_line_x_layer_contour_cache.insert({ {pt1, pt2}, !pls_intersect.empty() }); + mst_line_x_layer_contour_cache.insert({ {pt2, pt1}, !pls_intersect.empty() }); + if (!pls_intersect.empty()) + continue; + } + + if (poly.points.size() < 2 || visited[pt2]==false) + { + pt_selected = pt2; + has_next = true; + break; + } + double curr_ccw = pt2.ccw(pt1, poly.points.back()); + if (curr_ccw < min_ccw) + { + min_ccw = curr_ccw; + pt_selected = pt2; + has_next = true; + } + } + } + if (has_next) { + poly.points.push_back(pt_selected); + to_ignore.insert(Line(pt1, pt_selected)); + visited[pt_selected] = true; + pt1 = pt_selected; + } + } + polys.emplace_back(std::move(poly)); } } -#endif // NDEBUG + return polys; } -// For producing circular / elliptical areas from SupportElements (one DrawArea per one SupportElement) -// and for smoothing those areas along the tree branches. -struct DrawArea -{ - // Element to be processed. - SupportElement *element; - // Element below, if there is such an element. nullptr if element is a root of a tree. - SupportElement *child_element; - // Polygons to be extruded for this element. - Polygons polygons; -}; +Polygons TreeSupport::contact_nodes_to_polygon(const std::vector& contact_nodes, Polygons layer_contours, int layer_nr, std::vector& radiis, std::vector& is_interface) +{ + Polygons polys; + std::vector spanning_trees; + std::vector radiis_mtree; + std::vector is_interface_mtree; + // generate minimum spanning trees + { + std::map visited; + for (int i = 0; i < contact_nodes.size(); i++) + visited.emplace(contact_nodes[i], false); + std::unordered_set to_ignore; + + // generate minimum spaning trees + for (int i = 0; i < contact_nodes.size(); i++) { + Node* node = contact_nodes[i]; + if (visited[node]) + continue; + + std::vector points_to_mstree; + double radius = 0; + Point pt1 = node->position; + points_to_mstree.push_back(pt1); + visited[node] = true; + radius += node->radius; + + for (int j = i + 1; j < contact_nodes.size(); j++) { + Node* node2 = contact_nodes[j]; + Point pt2 = node2->position; + // connect to this neighbor if: + // 1) both are interface or both are not + // 3) not readly added + // 4) won't cross perimeters: this is not right since we need to check all possible connections + if ((node->support_roof_layers_below > 0) == (node2->support_roof_layers_below > 0) + && to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) + { + points_to_mstree.emplace_back(pt2); + visited[node2] = true; + radius += node2->radius; + } + } + + spanning_trees.emplace_back(points_to_mstree); + radiis_mtree.push_back(radius / points_to_mstree.size()); + is_interface_mtree.push_back(node->support_roof_layers_below > 0); + } + } + auto lines = spanning_tree_to_lines(spanning_trees); +#if 1 + // convert mtree to polygon + for (int k = 0; k < spanning_trees.size(); k++) { + auto& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; + MinimumSpanningTree mst = spanning_trees[k]; + std::vector points = mst.vertices(); + std::map visited; + for (int i = 0; i < points.size(); i++) + visited.emplace(points[i], false); + + std::unordered_set to_ignore; + for (int i = 0; i < points.size(); i++) { + if (visited[points[i]]) + continue; + + Polygon poly; + Point pt1 = points[i]; + poly.points.push_back(pt1); + visited[pt1] = true; + + bool has_next = true; + while (has_next) + { + const std::vector& neighbours = mst.adjacent_nodes(pt1); + double min_ccw = -std::numeric_limits::max(); + Point pt_selected; + has_next = false; + for (Point pt2 : neighbours) { + if (to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) { + auto iter = mst_line_x_layer_contour_cache.find({ pt1,pt2 }); + if (iter != mst_line_x_layer_contour_cache.end()) { + if (iter->second) + continue; + } + else { + Polylines pls; + pls.emplace_back(pt1, pt2); + Polylines pls_intersect = intersection_pl(pls, layer_contours); + mst_line_x_layer_contour_cache.insert({ {pt1, pt2}, !pls_intersect.empty() }); + mst_line_x_layer_contour_cache.insert({ {pt2, pt1}, !pls_intersect.empty() }); + if (!pls_intersect.empty()) + continue; + } + if (poly.points.size() < 2) + { + pt_selected = pt2; + has_next = true; + break; + } + double curr_ccw = pt2.ccw(pt1, poly.points.rbegin()[1]); + if (curr_ccw > min_ccw) + { + has_next = true; + min_ccw = curr_ccw; + pt_selected = pt2; + } + } + } + if (!has_next) + break; + + poly.points.push_back(pt_selected); + to_ignore.insert(Line(pt1, pt_selected)); + visited[pt_selected] = true; + pt1 = pt_selected; + } + polys.emplace_back(std::move(poly)); + radiis.push_back(radiis_mtree[k]); + is_interface.push_back(is_interface_mtree[k]); + } + } +#else + polys = spanning_tree_to_polygon(spanning_trees, layer_contours, layer_nr, radiis); +#endif + return polys; +} + + +void TreeSupport::generate() +{ + bool tree_support_enable = m_object_config->enable_support.value && is_tree(m_object_config->support_type.value); + if (!tree_support_enable) + return; + + std::vector> contact_nodes(m_object->layers().size()); + + profiler.stage_start(STAGE_total); + + // Generate overhang areas + profiler.stage_start(STAGE_DETECT_OVERHANGS); + m_object->print()->set_status(55, _L("Support: detect overhangs")); + detect_overhangs(); + profiler.stage_finish(STAGE_DETECT_OVERHANGS); + + if (!has_overhangs) return; + + m_ts_data = m_object->alloc_tree_support_preview_cache(); + m_ts_data->is_slim = is_slim; + + // Generate contact points of tree support + profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); + m_object->print()->set_status(56, _L("Support: generate contact points")); + generate_contact_points(contact_nodes); + profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); + + //Drop nodes to lower layers. + profiler.stage_start(STAGE_DROP_DOWN_NODES); + m_object->print()->set_status(60, _L("Support: propagate branches")); + drop_nodes(contact_nodes); + profiler.stage_finish(STAGE_DROP_DOWN_NODES); + + smooth_nodes(contact_nodes); + +if (!m_object->config().tree_support_adaptive_layer_height) + // Adjust support layer heights + adjust_layer_heights(contact_nodes); + + + //Generate support areas. + profiler.stage_start(STAGE_DRAW_CIRCLES); + m_object->print()->set_status(65, _L("Support: draw polygons")); + draw_circles(contact_nodes); + profiler.stage_finish(STAGE_DRAW_CIRCLES); + + for (auto& layer : contact_nodes) + { + for (Node* p_node : layer) + { + delete p_node; + } + layer.clear(); + } + contact_nodes.clear(); + + profiler.stage_start(STAGE_GENERATE_TOOLPATHS); + m_object->print()->set_status(69, _L("Support: generate toolpath")); + generate_toolpaths(); + profiler.stage_finish(STAGE_GENERATE_TOOLPATHS); + + profiler.stage_finish(STAGE_total); + BOOST_LOG_TRIVIAL(info) << "tree support time " << profiler.report(); +} + +coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor) +{ + double radius; + if (!is_slim) { + if ((layers_to_top + 1) > tip_layers) { + radius = base_radius + base_radius * (layers_to_top + 1) * diameter_angle_scale_factor; + } else { + radius = base_radius * (layers_to_top + 1) / tip_layers; + } + } else { + if ((layers_to_top + 1) > tip_layers * 2) { + radius = base_radius + base_radius * (layers_to_top + 1) * diameter_angle_scale_factor; + } else { + radius = base_radius * (layers_to_top + 1) / (tip_layers * 2); + } + radius = std::max(radius, MIN_BRANCH_RADIUS); + } + radius = std::min(radius, MAX_BRANCH_RADIUS); + return radius; +} + +coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor) +{ + double radius; + coordf_t tip_height = base_radius;// this is a 45 degree tip + if (mm_to_top > tip_height) + { + radius = base_radius + (mm_to_top-tip_height) * diameter_angle_scale_factor; + } + else + { + radius = mm_to_top;// this is a 45 degree tip + } + + radius = std::max(radius, MIN_BRANCH_RADIUS); + radius = std::min(radius, MAX_BRANCH_RADIUS); + // if have interface layers, radius should be larger + if (m_object_config->support_interface_top_layers.value > 0) + radius = std::max(radius, base_radius); + return radius; +} + +template // RegionType could be ExPolygons or Polygons +ExPolygons avoid_object_remove_extra_small_parts(ExPolygons &expolys, const RegionType&avoid_region) { + ExPolygons expolys_out; + for (auto expoly : expolys) { + auto expolys_avoid = diff_ex(expoly, avoid_region); + int idx_max_area = -1; + float max_area = 0; + for (int i = 0; i < expolys_avoid.size(); ++i) { + auto a = expolys_avoid[i].area(); + if (a > max_area) { + max_area = a; + idx_max_area = i; + } + } + if (idx_max_area >= 0) expolys_out.emplace_back(std::move(expolys_avoid[idx_max_area])); + } + return expolys_out; +} + +Polygons TreeSupport::get_trim_support_regions( + const PrintObject& object, + SupportLayer* support_layer_ptr, + const coordf_t gap_extra_above, + const coordf_t gap_extra_below, + const coordf_t gap_xy) +{ + static const double sharp_tail_xy_gap = 0.2f; + static const double no_overlap_xy_gap = 0.2f; + double gap_xy_scaled = scale_(gap_xy); + SupportLayer& support_layer = *support_layer_ptr; + auto m_print_config = object.print()->config(); + + size_t idx_object_layer_overlapping = size_t(-1); + + auto is_layers_overlap = [](const SupportLayer& support_layer, const Layer& object_layer, coordf_t bridging_height = 0.f) -> bool { + if (std::abs(support_layer.print_z - object_layer.print_z) < EPSILON) + return true; + + coordf_t object_lh = bridging_height > EPSILON ? bridging_height : object_layer.height; + if (support_layer.print_z < object_layer.print_z && support_layer.print_z > object_layer.print_z - object_lh) + return true; + + if (support_layer.print_z > object_layer.print_z && support_layer.bottom_z() < object_layer.print_z - EPSILON) + return true; + + return false; + }; + + // Find the overlapping object layers including the extra above / below gap. + coordf_t z_threshold = support_layer.bottom_z() - gap_extra_below + EPSILON; + idx_object_layer_overlapping = Layer::idx_higher_or_equal( + object.layers().begin(), object.layers().end(), idx_object_layer_overlapping, + [z_threshold](const Layer* layer) { return layer->print_z >= z_threshold; }); + // Collect all the object layers intersecting with this layer. + Polygons polygons_trimming; + size_t i = idx_object_layer_overlapping; + for (; i < object.layers().size(); ++i) { + const Layer& object_layer = *object.layers()[i]; + if (object_layer.bottom_z() > support_layer.print_z + gap_extra_above - EPSILON) + break; + + bool is_overlap = is_layers_overlap(support_layer, object_layer); + for (const ExPolygon& expoly : object_layer.lslices) { + // BBS + bool is_sharptail = !intersection_ex({ expoly }, object_layer.sharp_tails).empty(); + coordf_t trimming_offset = is_sharptail ? scale_(sharp_tail_xy_gap) : + is_overlap ? gap_xy_scaled : + scale_(no_overlap_xy_gap); + polygons_append(polygons_trimming, offset({ expoly }, trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + } + } + if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { + // Collect all bottom surfaces, which will be extruded with a bridging flow. + for (; i < object.layers().size(); ++i) { + const Layer& object_layer = *object.layers()[i]; + bool some_region_overlaps = false; + for (LayerRegion* region : object_layer.regions()) { + coordf_t bridging_height = region->region().bridging_height_avg(m_print_config); + if (object_layer.print_z - bridging_height > support_layer.print_z + gap_extra_above - EPSILON) + break; + some_region_overlaps = true; + + bool is_overlap = is_layers_overlap(support_layer, object_layer, bridging_height); + coordf_t trimming_offset = is_overlap ? gap_xy_scaled : scale_(no_overlap_xy_gap); + polygons_append(polygons_trimming, + offset(region->fill_surfaces.filter_by_type(stBottomBridge), trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); + } + if (!some_region_overlaps) + break; + } + } + + return polygons_trimming; +} + +void TreeSupport::draw_circles(const std::vector>& contact_nodes) +{ + const PrintObjectConfig &config = m_object->config(); + const Print* print = m_object->print(); + bool has_brim = print->has_brim(); + int bottom_gap_layers = round(m_slicing_params.gap_object_support / m_slicing_params.layer_height); + const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2; + const coordf_t branch_radius_scaled = scale_(branch_radius); + bool on_buildplate_only = config.support_on_build_plate_only.value; + Polygon branch_circle; //Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time. + + // Use square support if there are too many nodes per layer because circle support needs much longer time to compute + // Hower circle support can be printed faster, so we prefer circle for fewer nodes case. + const bool SQUARE_SUPPORT = avg_node_per_layer > 200; + const int CIRCLE_RESOLUTION = SQUARE_SUPPORT ? 4 : 100; // The number of vertices in each circle. + + + for (int i = 0; i < CIRCLE_RESOLUTION; i++) + { + double angle; + if (SQUARE_SUPPORT) + angle = (double) i / CIRCLE_RESOLUTION * TAU + PI / 4.0 + nodes_angle; + else + angle = (double) i / CIRCLE_RESOLUTION * TAU; + branch_circle.append(Point(cos(angle) * branch_radius_scaled, sin(angle) * branch_radius_scaled)); + } + + // Performance optimization. Only generate lslices for brim and skirt. + size_t brim_skirt_layers = has_brim ? 1 : 0; + const PrintConfig& print_config = print->config(); + for (const PrintObject* object : print->objects()) + { + size_t skirt_layers = print->has_infinite_skirt() ? object->layer_count() : std::min(size_t(print_config.skirt_height.value), object->layer_count()); + brim_skirt_layers = std::max(brim_skirt_layers, skirt_layers); + } + + // generate areas + const coordf_t layer_height = config.layer_height.value; + const size_t top_interface_layers = config.support_interface_top_layers.value; + const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; + const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle * M_PI / 180.);// * layer_height / branch_radius; //Scale factor per layer to produce the desired angle. + const double nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(0); + const coordf_t line_width = config.get_abs_value("support_line_width", nozzle_diameter); + const coordf_t line_width_scaled = scale_(line_width); + + const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; + coordf_t support_extrusion_width = m_support_params.support_extrusion_width; + const size_t wall_count = config.tree_support_wall_count.value; + + const PrintObjectConfig& object_config = m_object->config(); + BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; + + // coconut: previously std::unordered_map in m_collision_cache is not multi-thread safe which may cause programs stuck, here we change to tbb::concurrent_unordered_map + tbb::parallel_for( + tbb::blocked_range(0, m_object->layer_count()), + [&](const tbb::blocked_range& range) + { + for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) + { + if (print->canceled()) + break; + + const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + assert(ts_layer != nullptr); + + // skip if current layer has no points. This fixes potential crash in get_collision (see jira BBL001-355) + if (curr_layer_nodes.empty()) { + ts_layer->print_z = 0.0; + ts_layer->height = 0.0; + continue; + } + + Node* first_node = curr_layer_nodes.front(); + ts_layer->print_z = first_node->print_z; + ts_layer->height = first_node->height; + if (ts_layer->height < EPSILON) { + continue; + } + + ExPolygons& base_areas = ts_layer->base_areas; + ExPolygons& roof_areas = ts_layer->roof_areas; + ExPolygons& roof_1st_layer = ts_layer->roof_1st_layer; + ExPolygons& floor_areas = ts_layer->floor_areas; + ExPolygons& roof_gap_areas = ts_layer->roof_gap_areas; + coordf_t max_layers_above_base = 0; + coordf_t max_layers_above_roof = 0; + coordf_t max_layers_above_roof1 = 0; + bool has_polygon_node = false; + bool has_circle_node = false; + + BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); + //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. + ts_layer->lslices.reserve(contact_nodes[layer_nr].size()); + for (const Node* p_node : contact_nodes[layer_nr]) + { + if (print->canceled()) + break; + + const Node& node = *p_node; + ExPolygons area; + // Generate directly from overhang polygon if one of the following is true: + // 1) node is a normal part of hybrid support + // 2) node is virtual + if (node.type == ePolygon || node.distance_to_top<0) { + if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1) + area.emplace_back(*node.overhang); + else { + area = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance)); + } + if (node.type == ePolygon) + has_polygon_node = true; + } + else { + Polygon circle; + size_t layers_to_top = node.distance_to_top; + double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor) / branch_radius; + + if (/*is_slim*/1) { // draw ellipse along movement direction + double moveX = node.movement.x() / (scale * branch_radius_scaled); + double moveY = node.movement.y() / (scale * branch_radius_scaled); + const double vsize_inv = 0.5 / (0.01 + std::sqrt(moveX * moveX + moveY * moveY)); + double matrix[2*2] = { + scale * (1 + moveX * moveX * vsize_inv),scale * (0 + moveX * moveY * vsize_inv), + scale * (0 + moveX * moveY * vsize_inv),scale * (1 + moveY * moveY * vsize_inv), + }; + for (auto vertex: branch_circle.points) { + vertex = Point(matrix[0] * vertex.x() + matrix[1] * vertex.y(), matrix[2] * vertex.x() + matrix[3] * vertex.y()); + circle.append(node.position + vertex); + } + } else { + for (auto iter = branch_circle.points.begin(); iter != branch_circle.points.end(); iter++) { + Point corner = (*iter) * scale; + circle.append(node.position + corner); + } + } + if (layer_nr == 0 && m_raft_layers == 0) { + double brim_width = + config.tree_support_auto_brim + ? layers_to_top * layer_height / + (scale * branch_radius) * 0.5 + : config.tree_support_brim_width; + circle = offset(circle, scale_(brim_width))[0]; + } + area.emplace_back(ExPolygon(circle)); + // merge overhang to get a smoother interface surface + // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. + if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only) { + ExPolygons overhang_expanded; + if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1) + overhang_expanded.emplace_back(*node.overhang); + else { + // 对于有缺陷的模型,overhang膨胀以后可能是空的! + overhang_expanded = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance)); + } + append(area, overhang_expanded); + } + has_circle_node = true; + } + + if (node.distance_to_top < 0) + append(roof_gap_areas, area); + else if (node.support_roof_layers_below == 1) + { + append(roof_1st_layer, area); + max_layers_above_roof1 = std::max(max_layers_above_roof1, node.dist_mm_to_top); + } + else if (node.support_roof_layers_below > 0) + { + append(roof_areas, area); + max_layers_above_roof = std::max(max_layers_above_roof, node.dist_mm_to_top); + } + else + { + append(base_areas, area); + max_layers_above_base = std::max(max_layers_above_base, node.dist_mm_to_top); + } + + if (layer_nr < brim_skirt_layers) + append(ts_layer->lslices, area); + } + + ts_layer->lslices = std::move(union_ex(ts_layer->lslices)); + + //Must update bounding box which is used in avoid crossing perimeter + ts_layer->lslices_bboxes.clear(); + ts_layer->lslices_bboxes.reserve(ts_layer->lslices.size()); + for (const ExPolygon &expoly : ts_layer->lslices) + ts_layer->lslices_bboxes.emplace_back(get_extents(expoly)); + ts_layer->backup_untyped_slices(); + + m_object->print()->set_status(65, (boost::format( _L("Support: generate polygons at layer %d")) % layer_nr).str()); + + // join roof segments + double contact_dist_scaled = scale_(0.5);// scale_(m_slicing_params.gap_support_object); + roof_areas = std::move(offset2_ex(roof_areas, contact_dist_scaled, -contact_dist_scaled)); + roof_1st_layer = std::move(offset2_ex(roof_1st_layer, contact_dist_scaled, -contact_dist_scaled)); + + // avoid object + //ExPolygons avoid_region_interface = m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr); + Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_object_support, m_slicing_params.gap_support_object, m_ts_data->m_xy_distance); + if (has_circle_node) { + roof_areas = avoid_object_remove_extra_small_parts(roof_areas, avoid_region_interface); + roof_1st_layer = avoid_object_remove_extra_small_parts(roof_1st_layer, avoid_region_interface); + } + else { + roof_areas = std::move(diff_ex(roof_areas, avoid_region_interface)); + roof_1st_layer = std::move(diff_ex(roof_1st_layer, avoid_region_interface)); + } + roof_areas = intersection_ex(roof_areas, m_machine_border); + + // roof_1st_layer and roof_areas may intersect, so need to subtract roof_areas from roof_1st_layer + roof_1st_layer = std::move(diff_ex(roof_1st_layer, roof_areas)); + roof_1st_layer = intersection_ex(roof_1st_layer, m_machine_border); + + // let supports touch objects when brim is on + auto avoid_region = m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); + base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); + base_areas = std::move(diff_ex(base_areas, roof_areas)); + base_areas = std::move(diff_ex(base_areas, roof_1st_layer)); + base_areas = std::move(diff_ex(base_areas, roof_gap_areas)); + base_areas = intersection_ex(base_areas, m_machine_border); + + if (SQUARE_SUPPORT) { + // simplify support contours + ExPolygons base_areas_simplified; + for (auto &area : base_areas) { area.simplify(scale_(line_width / 2), &base_areas_simplified); } + base_areas = std::move(base_areas_simplified); + } + //Subtract support floors. We can only compute floor_areas here instead of with roof_areas, + // or we'll get much wider floor than necessary. + if (bottom_interface_layers + bottom_gap_layers > 0) + { + if (layer_nr >= bottom_interface_layers + bottom_gap_layers) + { + for (size_t i = 0; i <= bottom_gap_layers; i++) + { + const Layer* below_layer = m_object->get_layer(layer_nr - bottom_interface_layers - i); + ExPolygons bottom_interface = intersection_ex(base_areas, below_layer->lslices); + floor_areas.insert(floor_areas.end(), bottom_interface.begin(), bottom_interface.end()); + } + } + if (floor_areas.empty() == false) { + floor_areas = std::move(diff_ex(floor_areas, avoid_region_interface)); + floor_areas = std::move(offset2_ex(floor_areas, contact_dist_scaled, -contact_dist_scaled)); + base_areas = std::move(diff_ex(base_areas, offset_ex(floor_areas, 10))); + } + } + if (bottom_gap_layers > 0 && layer_nr > bottom_gap_layers) { + const Layer* below_layer = m_object->get_layer(layer_nr - bottom_gap_layers); + ExPolygons bottom_gap_area = intersection_ex(floor_areas, below_layer->lslices); + if (!bottom_gap_area.empty()) { + floor_areas = std::move(diff_ex(floor_areas, bottom_gap_area)); + } + } + auto &area_groups = ts_layer->area_groups; + for (auto& area : ts_layer->base_areas) { + area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); + area_groups.back().need_infill = has_polygon_node; + } + for (auto &area : ts_layer->roof_areas) area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); + for (auto &area : ts_layer->floor_areas) area_groups.emplace_back(&area, SupportLayer::FloorType, 10000); + for (auto &area : ts_layer->roof_1st_layer) area_groups.emplace_back(&area, SupportLayer::Roof1stLayer, max_layers_above_roof1); + + for (auto &area_group : area_groups) { + auto& expoly = area_group.area; + expoly->holes.erase(std::remove_if(expoly->holes.begin(), expoly->holes.end(), + [](auto &hole) { + auto bbox_size = get_extents(hole).size(); + return bbox_size[0] < scale_(2) && bbox_size[1] < scale_(2); + }), + expoly->holes.end()); + } + + } + }); + + + if (with_lightning_infill) + { + const bool global_lightning_infill = true; + + std::vector contours; + std::vector overhangs; + for (int layer_nr = 1; layer_nr < m_object->layer_count(); layer_nr++) { + if (print->canceled()) break; + const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + assert(ts_layer != nullptr); + + // skip if current layer has no points. This fixes potential crash in get_collision (see jira BBL001-355) + if (curr_layer_nodes.empty()) continue; + if (ts_layer->height < EPSILON) continue; + if (ts_layer->area_groups.empty()) continue; + + ExPolygons& base_areas = ts_layer->base_areas; + + int layer_nr_lower = layer_nr - 1; + for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { + if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; + } + if (layer_nr_lower <= 0) continue; + + SupportLayer* lower_layer = m_object->get_support_layer(layer_nr_lower + m_raft_layers); + ExPolygons& base_areas_lower = lower_layer->base_areas; + + ExPolygons overhang; + if (global_lightning_infill) + { + //search overhangs globally + overhang = std::move(diff_ex(offset_ex(base_areas_lower, -2.0 * scale_(support_extrusion_width)), base_areas)); + } + else + { + //search overhangs only on floating islands + for (auto& base_area : base_areas) + for (auto& hole : base_area.holes) + { + Polygon rev_hole = hole; + rev_hole.make_counter_clockwise(); + ExPolygons ex_hole; + ex_hole.emplace_back(std::move(ExPolygon(rev_hole))); + for (auto& other_area : base_areas) + //if (&other_area != &base_area) + ex_hole = std::move(diff_ex(ex_hole, other_area)); + overhang = std::move(union_ex(overhang, ex_hole)); + } + overhang = std::move(intersection_ex(overhang, offset_ex(base_areas_lower, -0.5 * scale_(support_extrusion_width)))); + } + + overhangs.emplace_back(to_polygons(overhang)); + contours.emplace_back(to_polygons(base_areas_lower)); + printZ_to_lightninglayer[lower_layer->print_z] = overhangs.size() - 1; + +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + draw_two_overhangs_to_svg(m_object->get_support_layer(layer_nr_lower + m_raft_layers), base_areas_lower, to_expolygons(overhangs.back())); +#endif + } + + + auto m_support_material_flow = support_material_flow(m_object, m_slicing_params.layer_height); + coordf_t support_spacing = object_config.support_base_pattern_spacing.value + m_support_material_flow.spacing(); + coordf_t support_density = std::min(1., m_support_material_flow.spacing() / support_spacing * 2); // for lightning infill the density is defined differently, so need to double it + generator = std::make_unique(m_object, contours, overhangs, []() {}, support_density); + } + + else if (!with_infill) { + // move the holes to contour so they can be well supported + + // check if poly's contour intersects with expoly's contour + auto intersects_contour = [](Polygon poly, ExPolygon expoly, Point& pt_on_poly, Point& pt_on_expoly, Point& pt_far_on_poly, float dist_thresh = 0.01) { + float min_dist = std::numeric_limits::max(); + float max_dist = 0; + for (auto from : poly.points) { + for (int i = 0; i < expoly.num_contours(); i++) { + const Point* candidate = expoly.contour_or_hole(i).closest_point(from); + double dist2 = vsize2_with_unscale(*candidate - from); + if (dist2 < min_dist) { + min_dist = dist2; + pt_on_poly = from; + pt_on_expoly = *candidate; + } + if (dist2 > max_dist) { + max_dist = dist2; + pt_far_on_poly = from; + } + if (dist2 < dist_thresh) { return true; } + } + } + return false; + }; + + // polygon pointer: depth, direction, farPoint + std::map> holePropagationInfos; + for (int layer_nr = m_object->layer_count() - 1; layer_nr > 0; layer_nr--) { + if (print->canceled()) break; + m_object->print()->set_status(66, (boost::format(_L("Support: fix holes at layer %d")) % layer_nr).str()); + + const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + assert(ts_layer != nullptr); + + // skip if current layer has no points. This fixes potential crash in get_collision (see jira BBL001-355) + if (curr_layer_nodes.empty()) continue; + if (ts_layer->height < EPSILON) continue; + if (ts_layer->area_groups.empty()) continue; + + int layer_nr_lower = layer_nr - 1; + for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { + if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; + } + if (layer_nr_lower < 0) continue; + auto& area_groups_lower = m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups; + + for (const auto& area_group : ts_layer->area_groups) { + if (area_group.type != SupportLayer::BaseType) continue; + const auto& area = area_group.area; + for (const auto& hole : area->holes) { + // auto hole_bbox = get_extents(hole).polygon(); + for (auto& area_group_lower : area_groups_lower) { + if (area_group.type != SupportLayer::BaseType) continue; + auto& base_area_lower = *area_group_lower.area; + Point pt_on_poly, pt_on_expoly, pt_far_on_poly; + // if a hole doesn't intersect with lower layer's contours, add a hole to lower layer and move it slightly to the contour + if (base_area_lower.contour.contains(hole.points.front()) && !intersects_contour(hole, base_area_lower, pt_on_poly, pt_on_expoly, pt_far_on_poly)) { + Polygon hole_lower = hole; + Point direction = normal(pt_on_expoly - pt_on_poly, line_width_scaled / 2); + hole_lower.translate(direction); + // note to expand a hole, we need to do negative offset + auto hole_expanded = offset(hole_lower, -line_width_scaled / 4, ClipperLib::JoinType::jtSquare); + if (!hole_expanded.empty()) { + base_area_lower.holes.push_back(std::move(hole_expanded[0])); + holePropagationInfos.insert({ &base_area_lower.holes.back(), {25, direction, pt_far_on_poly} }); + } + break; + } + else if (holePropagationInfos.find(&hole) != holePropagationInfos.end() && std::get<0>(holePropagationInfos[&hole]) > 0 && + base_area_lower.contour.contains(std::get<2>(holePropagationInfos[&hole]))) { + Polygon hole_lower = hole; + auto&& direction = std::get<1>(holePropagationInfos[&hole]); + hole_lower.translate(direction); + // note to shrink a hole, we need to do positive offset + auto hole_expanded = offset(hole_lower, line_width_scaled / 2, ClipperLib::JoinType::jtSquare); + Point farPoint = std::get<2>(holePropagationInfos[&hole]) + direction * 2; + if (!hole_expanded.empty()) { + base_area_lower.holes.push_back(std::move(hole_expanded[0])); + holePropagationInfos.insert({ &base_area_lower.holes.back(), {std::get<0>(holePropagationInfos[&hole]) - 1, direction, farPoint} }); + } + break; + } + } + { + // if roof1 interface is inside a hole, need to expand the interface + for (auto& roof1 : ts_layer->roof_1st_layer) { + //if (hole.contains(roof1.contour.points.front()) && hole.contains(roof1.contour.bounding_box().center())) + bool is_inside_hole = std::all_of(roof1.contour.points.begin(), roof1.contour.points.end(), [&hole](Point& pt) { return hole.contains(pt); }); + if (is_inside_hole) { + Polygon hole_reoriented = hole; + if (roof1.contour.is_counter_clockwise()) + hole_reoriented.make_counter_clockwise(); + else if (roof1.contour.is_clockwise()) + hole_reoriented.make_clockwise(); + auto tmp = union_({ roof1.contour }, { hole_reoriented }); + if (!tmp.empty()) roof1.contour = tmp[0]; + + // make sure 1) roof1 and object 2) roof1 and roof, won't intersect + // Note: We can't replace roof1 directly, as we have recorded its address. + // So instead we need to replace its members one by one. + auto tmp1 = diff_ex(roof1, m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr)); + tmp1 = diff_ex(tmp1, ts_layer->roof_areas); + if (!tmp1.empty()) { + roof1.contour = std::move(tmp1[0].contour); + roof1.holes = std::move(tmp1[0].holes); + } + break; + } + } + } + } + } + } + } + + +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + for (int layer_nr = m_object->layer_count() - 1; layer_nr >= 0; layer_nr--) { + SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + ExPolygons& base_areas = ts_layer->base_areas; + ExPolygons& roof_areas = ts_layer->roof_areas; + ExPolygons& roof_1st_layer = ts_layer->roof_1st_layer; + ExPolygons& floor_areas = ts_layer->floor_areas; + if (base_areas.empty() && roof_areas.empty() && roof_1st_layer.empty()) continue; + char fname[10]; sprintf(fname, "%d_%.2f", layer_nr, ts_layer->print_z); + draw_contours_and_nodes_to_svg("", base_areas, roof_areas, roof_1st_layer, {}, {}, get_svg_filename(fname, "circles"), {"base", "roof", "roof1st"}); + } +#endif // SUPPORT_TREE_DEBUG_TO_SVG + + SupportLayerPtrs& ts_layers = m_object->support_layers(); + auto iter = std::remove_if(ts_layers.begin(), ts_layers.end(), [](SupportLayer* ts_layer) { return ts_layer->height < EPSILON; }); + ts_layers.erase(iter, ts_layers.end()); + for (int layer_nr = 0; layer_nr < ts_layers.size(); layer_nr++) { + ts_layers[layer_nr]->upper_layer = layer_nr != ts_layers.size() - 1 ? ts_layers[layer_nr + 1] : nullptr; + ts_layers[layer_nr]->lower_layer = layer_nr > 0 ? ts_layers[layer_nr - 1] : nullptr; + } +} + +void TreeSupport::drop_nodes(std::vector>& contact_nodes) +{ + const PrintObjectConfig &config = m_object->config(); + // Use Minimum Spanning Tree to connect the points on each layer and move them while dropping them down. + const coordf_t support_extrusion_width = m_support_params.support_extrusion_width; + const coordf_t layer_height = config.layer_height.value; + const double angle = config.tree_support_branch_angle.value * M_PI / 180.; + const int wall_count = std::max(1, config.tree_support_wall_count.value); + double tan_angle = tan(angle); // when nodes are thick, they can move further. this is the max angle + const coordf_t max_move_distance = (angle < M_PI / 2) ? (coordf_t)(tan_angle * layer_height)*wall_count : std::numeric_limits::max(); + const double max_move_distance2 = max_move_distance * max_move_distance; + const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2; + const size_t tip_layers = branch_radius / layer_height; //The number of layers to be shrinking the circle to create a tip. This produces a 45 degree angle. + const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle * M_PI / 180.);//*layer_height / branch_radius; // Scale factor per layer to produce the desired angle. + const coordf_t radius_sample_resolution = m_ts_data->m_radius_sample_resolution; + const bool support_on_buildplate_only = config.support_on_build_plate_only.value; + const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; + const size_t top_interface_layers = config.support_interface_top_layers.value; + float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm + const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); + const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); + + auto get_branch_angle = [this,&config](coordf_t radius) { + if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; + return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; + }; + auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const Node *node, int power = 1) { + double move_dist = node->max_move_dist; + if (node->max_move_dist == 0) { + if (node->radius == 0) node->radius = calc_branch_radius(branch_radius, node->dist_mm_to_top, diameter_angle_scale_factor); + double angle = config.tree_support_branch_angle.value; + if (angle > 30.0 && node->radius > MIN_BRANCH_RADIUS) + angle = (node->radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; + double tan_angle = tan(angle * M_PI / 180); + int wall_count_ = node->radius > 2 * support_line_width ? wall_count : 1; + node->max_move_dist = (angle < 90) ? (coordf_t) (tan_angle * node->height) * wall_count_ : std::numeric_limits::max(); + node->max_move_dist = std::min(node->max_move_dist, support_extrusion_width); + move_dist = node->max_move_dist; + } + if (power == 2) move_dist = SQ(move_dist); + return move_dist; + }; + + m_ts_data->layer_heights = plan_layer_heights(contact_nodes); + std::vector &layer_heights = m_ts_data->layer_heights; + if (layer_heights.empty()) return; + + std::unordered_set to_free_node_set; + m_spanning_trees.resize(contact_nodes.size()); + //m_mst_line_x_layer_contour_caches.resize(contact_nodes.size()); + + if (0) + {// get outlines below and avoidance area using tbb + // This part only takes very little time, so we disable it. + typedef std::chrono::high_resolution_clock clock_; + typedef std::chrono::duration > second_; + std::chrono::time_point t0{ clock_::now() }; + + // get all the possible radiis + std::vector > all_layer_radius(m_highest_overhang_layer+1); + std::vector> all_layer_node_dist(m_highest_overhang_layer + 1); + for (size_t layer_nr = m_highest_overhang_layer; layer_nr > 0; layer_nr--) + { + if (layer_heights[layer_nr].height < EPSILON) continue; + auto& layer_radius = all_layer_radius[layer_nr]; + auto& layer_node_dist = all_layer_node_dist[layer_nr]; + for (Node *p_node : contact_nodes[layer_nr]) { + layer_node_dist.emplace(p_node->dist_mm_to_top); + } + size_t layer_nr_next = layer_heights[layer_nr].next_layer_nr; + if (layer_nr_next <= m_highest_overhang_layer && layer_nr_next>0) { + for (auto node_dist : layer_node_dist) + all_layer_node_dist[layer_nr_next].emplace(node_dist + layer_heights[layer_nr].height); + } + for (auto node_dist : layer_node_dist) { + layer_radius.emplace(calc_branch_radius(branch_radius, node_dist, diameter_angle_scale_factor)); + } + } + // parallel pre-compute avoidance + //tbb::parallel_for(tbb::blocked_range(1, m_highest_overhang_layer), [&](const tbb::blocked_range &range) { + //for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { + for (size_t layer_nr = 0; layer_nr < all_layer_radius.size(); layer_nr++) { + BOOST_LOG_TRIVIAL(debug) << "pre calculate_avoidance layer=" << layer_nr; + for (auto node_radius : all_layer_radius[layer_nr]) { + m_ts_data->get_avoidance(0, layer_nr); + m_ts_data->get_avoidance(node_radius, layer_nr); + } + } + //}); + + double duration{ std::chrono::duration_cast(clock_::now() - t0).count() }; + BOOST_LOG_TRIVIAL(debug) << "before m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size() + << ", takes " << duration << " secs."; + } + + for (size_t layer_nr = contact_nodes.size() - 1; layer_nr > 0; layer_nr--) // Skip layer 0, since we can't drop down the vertices there. + { + if (m_object->print()->canceled()) + break; + + auto& layer_contact_nodes = contact_nodes[layer_nr]; + if (layer_contact_nodes.empty()) + continue; + + int layer_nr_next = layer_heights[layer_nr].next_layer_nr; + coordf_t print_z_next = layer_heights[layer_nr_next].print_z; + coordf_t height_next = layer_heights[layer_nr_next].height; + + std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. + const Layer* ts_layer = m_object->get_support_layer(layer_nr); + + m_object->print()->set_status(60, (boost::format(_L("Support: propagate branches at layer %d")) % layer_nr).str()); + + Polygons layer_contours = m_ts_data->get_contours_with_holes(layer_nr); + //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; + std::unordered_map mst_line_x_layer_contour_cache; + auto is_line_cut_by_contour = [&mst_line_x_layer_contour_cache,&layer_contours](Point a, Point b) + { + auto iter = mst_line_x_layer_contour_cache.find({ a, b }); + if (iter != mst_line_x_layer_contour_cache.end()) { + if (iter->second) + return true; + } + else { + profiler.tic(); + Line ln(b, a); + Lines pls_intersect = intersection_ln(ln, layer_contours); + mst_line_x_layer_contour_cache.insert({ {a, b}, !pls_intersect.empty() }); + mst_line_x_layer_contour_cache.insert({ ln, !pls_intersect.empty() }); + profiler.stage_add(STAGE_intersection_ln, true); + if (!pls_intersect.empty()) + return true; + } + return false; + }; + + //Group together all nodes for each part. + const ExPolygons& parts = m_ts_data->get_avoidance(0, layer_nr); + std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. + for (Node* p_node : layer_contact_nodes) + { + const Node& node = *p_node; + + if (node.distance_to_top < 0) { + // gap nodes do not merge or move + Node* next_node = new Node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, p_node->to_buildplate, p_node, + print_z_next, height_next); + get_max_move_dist(next_node); + next_node->is_merged = false; + contact_nodes[layer_nr_next].emplace_back(next_node); + continue; + } + if (support_on_buildplate_only && !node.to_buildplate) //Can't rest on model and unable to reach the build plate. Then we must drop the node and leave parts unsupported. + { + unsupported_branch_leaves.push_front({ layer_nr, p_node }); + continue; + } + if (node.to_buildplate || parts.empty()) //It's outside, so make it go towards the build plate. + { + nodes_per_part[0][node.position] = p_node; + continue; + } + + /* Find which part this node is located in and group the nodes in + * the same part together. Since nodes have a radius and the + * avoidance areas are offset by that radius, the set of parts may + * be different per node. Here we consider a node to be inside the + * part that is closest. The node may be inside a bigger part that + * is actually two parts merged together due to an offset. In that + * case we may incorrectly keep two nodes separate, but at least + * every node falls into some group. + */ + coordf_t closest_part_distance2 = std::numeric_limits::max(); + size_t closest_part = -1; + for (size_t part_index = 0; part_index < parts.size(); part_index++) + { + //constexpr bool border_result = true; + if (is_inside_ex(parts[part_index], node.position)) //If it's inside, the distance is 0 and this part is considered the best. + { + closest_part = part_index; + closest_part_distance2 = 0; + break; + } + + Point closest_point = *parts[part_index].contour.closest_point(node.position); + const coordf_t distance2 = vsize2_with_unscale(node.position - closest_point); + if (distance2 < closest_part_distance2) + { + closest_part_distance2 = distance2; + closest_part = part_index; + } + } + //Put it in the best one. + nodes_per_part[closest_part + 1][node.position] = p_node; //Index + 1 because the 0th index is the outside part. + } + + //Create a MST for every part. + profiler.tic(); + //std::vector& spanning_trees = m_spanning_trees[layer_nr]; + std::vector spanning_trees; + for (const std::unordered_map& group : nodes_per_part) + { + std::vector points_to_buildplate; + for (const std::pair& entry : group) + { + points_to_buildplate.emplace_back(entry.first); //Just the position of the node. + } + spanning_trees.emplace_back(points_to_buildplate); + } + profiler.stage_add(STAGE_MinimumSpanningTree,true); -/*! - * \brief Draws circles around result_on_layer points of the influence areas - * - * \param linear_data[in] All currently existing influence areas with the layer they are on - * \param layer_tree_polygons[out] Resulting branch areas with the layerindex they appear on. layer_tree_polygons.size() has to be at least linear_data.size() as each Influence area in linear_data will save have at least one (that's why it's a vector) corresponding branch area in layer_tree_polygons. - * \param inverse_tree_order[in] A mapping that returns the child of every influence area. - */ -static void generate_branch_areas( - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &move_bounds, - std::vector &linear_data, - std::function throw_on_cancel) -{ -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC; - constexpr int progress_report_steps = 10; - const size_t progress_inserts_check_interval = linear_data.size() / progress_report_steps; - std::mutex critical_sections; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - // Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time. - const Polygon branch_circle = make_circle(config.branch_radius, SUPPORT_TREE_CIRCLE_RESOLUTION); - - tbb::parallel_for(tbb::blocked_range(0, linear_data.size()), - [&volumes, &config, &move_bounds, &linear_data, &branch_circle, &throw_on_cancel](const tbb::blocked_range &range) { - for (size_t idx = range.begin(); idx < range.end(); ++ idx) { - DrawArea &draw_area = linear_data[idx]; - const LayerIndex layer_idx = draw_area.element->state.layer_idx; - const coord_t radius = support_element_radius(config, *draw_area.element); - bool parent_uses_min = false; - - // Calculate multiple ovalized circles, to connect with every parent and child. Also generate regular circle for the current layer. Merge all these into one area. - std::vector> movement_directions{ std::pair(Point(0, 0), radius) }; - if (! draw_area.element->state.skip_ovalisation) { - if (draw_area.child_element != nullptr) { - const Point movement = draw_area.child_element->state.result_on_layer - draw_area.element->state.result_on_layer; - movement_directions.emplace_back(movement, radius); - } - const SupportElements *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = (*layer_above)[parent_idx]; - const Point movement = parent.state.result_on_layer - draw_area.element->state.result_on_layer; - //FIXME why max(..., config.support_line_width)? - movement_directions.emplace_back(movement, std::max(support_element_radius(config, parent), config.support_line_width)); - parent_uses_min |= parent.state.use_min_xy_dist; +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + coordf_t branch_radius_temp = 0; + coordf_t max_y = std::numeric_limits::min(); + draw_layer_mst(std::to_string(ts_layer->print_z), spanning_trees, m_object->get_layer(layer_nr)->lslices); +#endif + for (size_t group_index = 0; group_index < nodes_per_part.size(); group_index++) + { + const MinimumSpanningTree& mst = spanning_trees[group_index]; + //In the first pass, merge all nodes that are close together. + std::unordered_set to_delete; + for (const std::pair& entry : nodes_per_part[group_index]) + { + Node* p_node = entry.second; + Node& node = *p_node; + if (to_delete.find(p_node) != to_delete.end()) + { + continue; //Delete this node (don't create a new node for it on the next layer). } - } + const std::vector& neighbours = mst.adjacent_nodes(node.position); + if (node.type == ePolygon) { + // Remove all neighbours that are completely inside the polygon and merge them into this node. + for (const Point &neighbour : neighbours) { + Node * neighbour_node = nodes_per_part[group_index][neighbour]; + coord_t neighbour_radius = scale_(calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top, diameter_angle_scale_factor)); + Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), + pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); + if (is_inside_ex(*node.overhang, neighbour) && is_inside_ex(*node.overhang, pt_north) && is_inside_ex(*node.overhang, pt_south) + && is_inside_ex(*node.overhang, pt_west) && is_inside_ex(*node.overhang, pt_east)){ + node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); + node.support_roof_layers_below = std::max(node.support_roof_layers_below, neighbour_node->support_roof_layers_below); + node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); + node.merged_neighbours.push_front(neighbour_node); + node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); + node.is_merged = true; + to_delete.insert(neighbour_node); + } + } + } + else if (neighbours.size() == 1 && vsize2_with_unscale(neighbours[0] - node.position) < max_move_distance2 && mst.adjacent_nodes(neighbours[0]).size() == 1 && + nodes_per_part[group_index][neighbours[0]]->type!=ePolygon) // We have just two nodes left, and they're very close, and the only neighbor is not ePolygon + { + //Insert a completely new node and let both original nodes fade. + Point next_position = (node.position + neighbours[0]) / 2; //Average position of the two nodes. - const Polygons &collision = volumes.getCollision(0, layer_idx, parent_uses_min || draw_area.element->state.use_min_xy_dist); - auto generateArea = [&collision, &draw_area, &branch_circle, branch_radius = config.branch_radius, support_line_width = config.support_line_width, &movement_directions] - (coord_t aoffset, double &max_speed) { - Polygons poly; - max_speed = 0; - for (std::pair movement : movement_directions) { - max_speed = std::max(max_speed, movement.first.cast().norm()); - - // Visualization: https://jsfiddle.net/0zvcq39L/2/ - // Ovalizes the circle to an ellipse, that contains both old center and new target position. - double used_scale = (movement.second + aoffset) / (1.0 * branch_radius); - Point center_position = draw_area.element->state.result_on_layer + movement.first / 2; - const double moveX = movement.first.x() / (used_scale * branch_radius); - const double moveY = movement.first.y() / (used_scale * branch_radius); - const double vsize_inv = 0.5 / (0.01 + std::sqrt(moveX * moveX + moveY * moveY)); - - double matrix[] = { - used_scale * (1 + moveX * moveX * vsize_inv), - used_scale * (0 + moveX * moveY * vsize_inv), - used_scale * (0 + moveX * moveY * vsize_inv), - used_scale * (1 + moveY * moveY * vsize_inv), - }; - Polygon circle; - for (Point vertex : branch_circle) - circle.points.emplace_back(center_position + Point(matrix[0] * vertex.x() + matrix[1] * vertex.y(), matrix[2] * vertex.x() + matrix[3] * vertex.y())); - poly.emplace_back(std::move(circle)); - } - - // There seem to be some rounding errors, causing a branch to be a tiny bit further away from the model that it has to be. - // This can cause the tip to be slightly further away front the overhang (x/y wise) than optimal. This fixes it, and for every other part, 0.05mm will not be noticed. - poly = diff_clipped(offset(union_(poly), std::min(coord_t(50), support_line_width / 4), jtMiter, 1.2), collision); - return poly; - }; - - // Ensure branch area will not overlap with model/collision. This can happen because of e.g. ovalization or increase_until_radius. - double max_speed; - Polygons polygons = generateArea(0, max_speed); - const bool fast_relative_movement = max_speed > radius * 0.75; - - if (fast_relative_movement || support_element_radius(config, *draw_area.element) - support_element_collision_radius(config, draw_area.element->state) > config.support_line_width) { - // Simulate the path the nozzle will take on the outermost wall. - // If multiple parts exist, the outer line will not go all around the support part potentially causing support material to be printed mid air. - ExPolygons nozzle_path = offset_ex(polygons, - config.support_line_width / 2); - if (nozzle_path.size() > 1) { - // Just try to make the area a tiny bit larger. - polygons = generateArea(config.support_line_width / 2, max_speed); - nozzle_path = offset_ex(polygons, -config.support_line_width / 2); - // If larger area did not fix the problem, all parts off the nozzle path that do not contain the center point are removed, hoping for the best. - if (nozzle_path.size() > 1) { - ExPolygons polygons_with_correct_center; - for (ExPolygon &part : nozzle_path) { - bool drop = false; - if (! part.contains(draw_area.element->state.result_on_layer)) { - // try a fuzzy inside as sometimes the point should be on the border, but is not because of rounding errors... - Point pt = draw_area.element->state.result_on_layer; - move_inside(to_polygons(part), pt, 0); - drop = (draw_area.element->state.result_on_layer - pt).cast().norm() >= scaled(0.025); - } - if (! drop) - polygons_with_correct_center.emplace_back(std::move(part)); + const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); + + auto avoid_layer = m_ts_data->get_avoidance(branch_radius_node, layer_nr_next); + if (group_index == 0) + { + //Avoid collisions. + const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; //100 micron extra for rounding errors. + move_out_expolys(avoid_layer, next_position, radius_sample_resolution + EPSILON, max_move_between_samples); + } + + Node* neighbour = nodes_per_part[group_index][neighbours[0]]; + Node* node_; + if (p_node->parent && neighbour->parent) + node_ = (node.dist_mm_to_top >= neighbour->dist_mm_to_top && p_node->parent) ? p_node : neighbour; + else + node_ = p_node->parent ? p_node : neighbour; + // Make sure the next pass doesn't drop down either of these (since that already happened). + node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); + const bool to_buildplate = !is_inside_ex(m_ts_data->get_avoidance(0, layer_nr_next), next_position); + Node * next_node = new Node(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, + print_z_next, height_next); + next_node->movement = next_position - node.position; + get_max_move_dist(next_node); + next_node->is_merged = true; + contact_nodes[layer_nr_next].push_back(next_node); + + + to_delete.insert(neighbour); + to_delete.insert(p_node); + } + else if (neighbours.size() > 1) //Don't merge leaf nodes because we would then incur movement greater than the maximum move distance. + { + //Remove all neighbours that are too close and merge them into this node. + for (const Point& neighbour : neighbours) + { + if (vsize2_with_unscale(neighbour - node.position) < /*max_move_distance2*/get_max_move_dist(&node,2)) + { + Node* neighbour_node = nodes_per_part[group_index][neighbour]; + if (neighbour_node->type == ePolygon) continue; + + node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); + node.support_roof_layers_below = std::max(node.support_roof_layers_below, neighbour_node->support_roof_layers_below); + node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); + node.merged_neighbours.push_front(neighbour_node); + node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); + node.is_merged = true; + to_delete.insert(neighbour_node); } - // Increase the area again, to ensure the nozzle path when calculated later is very similar to the one assumed above. - assert(contains(polygons, draw_area.element->state.result_on_layer)); - polygons = diff_clipped(offset(polygons_with_correct_center, config.support_line_width / 2, jtMiter, 1.2), - //FIXME Vojtech: Clipping may split the region into multiple pieces again, reversing the fixing effort. - collision); } } } - draw_area.polygons = std::move(polygons); + //In the second pass, move all middle nodes. + for (const std::pair& entry : nodes_per_part[group_index]) + { + Node* p_node = entry.second; + const Node& node = *p_node; + if (to_delete.find(p_node) != to_delete.end()) + { + continue; + } + if (node.type == ePolygon) { + // polygon node do not merge or move + const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], p_node->position); + Node * next_node = new Node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, + p_node, print_z_next, height_next); + next_node->max_move_dist = 0; + next_node->is_merged = false; + contact_nodes[layer_nr_next].emplace_back(next_node); + continue; + } -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - if (idx % progress_inserts_check_interval == 0) { - std::lock_guard critical_section_progress(critical_sections); - progress_total += TREE_PROGRESS_GENERATE_BRANCH_AREAS / progress_report_steps; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); - } -#endif - throw_on_cancel(); - } - }); -} + //If the branch falls completely inside a collision area (the entire branch would be removed by the X/Y offset), delete it. + if (group_index > 0 && is_inside_ex(m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr), node.position)) + { + const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); + Point to_outside = projection_onto(m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr), node.position); + double dist2_to_outside = vsize2_with_unscale(node.position - to_outside); + if (dist2_to_outside >= branch_radius_node * branch_radius_node) //Too far inside. + { + if (support_on_buildplate_only) + { + unsupported_branch_leaves.push_front({ layer_nr, p_node }); + } + else { + Node* pn = p_node; + for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) + pn->support_floor_layers_above = bottom_interface_layers - i + 1; // +1 so the parent node has support_floor_layers_above=2 + to_delete.insert(p_node); + } + continue; + } + // if the link between parent and current is cut by contours, mark current as bottom contact node + if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) + { + Node* pn = p_node->parent; + for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) + pn->support_floor_layers_above = bottom_interface_layers - i + 1; + to_delete.insert(p_node); + continue; + } + } + Point next_layer_vertex = node.position; + Point move_to_neighbor_center; + std::vector moves; + std::vector weights; + const std::vector neighbours = mst.adjacent_nodes(node.position); + // 1. do not merge neighbors under 5mm + // 2. Only merge node with single neighbor in distance between [max_move_distance, 10mm/layer_height] + float dist2_to_first_neighbor = neighbours.empty() ? 0 : vsize2_with_unscale(neighbours[0] - node.position); + if (ts_layer->print_z > DO_NOT_MOVER_UNDER_MM && + (neighbours.size() > 1 || (neighbours.size() == 1 && dist2_to_first_neighbor >= max_move_distance2))) // Only nodes that aren't about to collapse. + { + // Move towards the average position of all neighbours. + Point sum_direction(0, 0); + for (const Point &neighbour : neighbours) { + // do not move to the neighbor to be deleted + Node *neighbour_node = nodes_per_part[group_index][neighbour]; + if (to_delete.find(neighbour_node) != to_delete.end()) continue; + + Point direction = neighbour - node.position; + // do not move to neighbor that's too far away (即使以最大速度移动,在接触热床之前都无法汇聚) + float dist2_to_neighbor = vsize2_with_unscale(direction); + + coordf_t branch_bottom_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top + node.print_z, diameter_angle_scale_factor); + coordf_t neighbour_bottom_radius = calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top + neighbour_node->print_z, diameter_angle_scale_factor); + double max_converge_distance = tan_angle * (ts_layer->print_z - DO_NOT_MOVER_UNDER_MM) + std::max(branch_bottom_radius, neighbour_bottom_radius); + if (dist2_to_neighbor > max_converge_distance * max_converge_distance) continue; + + if (is_line_cut_by_contour(node.position, neighbour)) continue; + + if (!is_strong) + sum_direction += direction * (1 / dist2_to_neighbor); + else + sum_direction += direction; + } -/*! - * \brief Applies some smoothing to the outer wall, intended to smooth out sudden jumps as they can happen when a branch moves though a hole. - * - * \param layer_tree_polygons[in,out] Resulting branch areas with the layerindex they appear on. - */ -static void smooth_branch_areas( - const TreeSupportSettings &config, - std::vector &move_bounds, - std::vector &linear_data, - const std::vector &linear_data_layers, - std::function throw_on_cancel) -{ -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC + TREE_PROGRESS_GENERATE_BRANCH_AREAS; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - const coord_t max_radius_change_per_layer = 1 + config.support_line_width / 2; // this is the upper limit a radius may change per layer. +1 to avoid rounding errors - - // smooth upwards - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()) - 1; ++ layer_idx) { - const size_t processing_base = linear_data_layers[layer_idx]; - const size_t processing_base_above = linear_data_layers[layer_idx + 1]; - const SupportElements &layer_above = move_bounds[layer_idx + 1]; - tbb::parallel_for(tbb::blocked_range(0, processing_base_above - processing_base), - [&](const tbb::blocked_range &range) { - for (size_t processing_idx = range.begin(); processing_idx < range.end(); ++ processing_idx) { - DrawArea &draw_area = linear_data[processing_base + processing_idx]; - assert(draw_area.element->state.layer_idx == layer_idx); - double max_outer_wall_distance = 0; - bool do_something = false; - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = layer_above[parent_idx]; - assert(parent.state.layer_idx == layer_idx + 1); - if (support_element_radius(config, parent) != support_element_collision_radius(config, parent)) { - do_something = true; - max_outer_wall_distance = std::max(max_outer_wall_distance, - (draw_area.element->state.result_on_layer - parent.state.result_on_layer).cast().norm() - (support_element_radius(config, *draw_area.element) - support_element_radius(config, parent))); + if (!is_strong) + move_to_neighbor_center = sum_direction; + else { + if (vsize2_with_unscale(sum_direction) <= max_move_distance2) { + move_to_neighbor_center = sum_direction; + } else { + move_to_neighbor_center = normal(sum_direction, scale_(get_max_move_dist(&node))); + } } } - max_outer_wall_distance += max_radius_change_per_layer; // As this change is a bit larger than what usually appears, lost radius can be slowly reclaimed over the layers. - if (do_something) { - assert(contains(draw_area.polygons, draw_area.element->state.result_on_layer)); - Polygons max_allowed_area = offset(draw_area.polygons, float(max_outer_wall_distance), jtMiter, 1.2); - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = layer_above[parent_idx]; -#ifndef NDEBUG - assert(parent.state.layer_idx == layer_idx + 1); - assert(contains(linear_data[processing_base_above + parent_idx].polygons, parent.state.result_on_layer)); - double radius_increase = support_element_radius(config, *draw_area.element) - support_element_radius(config, parent); - assert(radius_increase >= 0); - double shift = (draw_area.element->state.result_on_layer - parent.state.result_on_layer).cast().norm(); - assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); -#endif // NDEBUG - if (support_element_radius(config, parent) != support_element_collision_radius(config, parent)) { - // No other element on this layer than the current one may be connected to &parent, - // thus it is safe to update parent's DrawArea directly. - Polygons &dst = linear_data[processing_base_above + parent_idx].polygons; -// Polygons orig = dst; - if (! dst.empty()) { - dst = intersection(dst, max_allowed_area); -#if 0 - if (dst.empty()) { - static int irun = 0; - SVG::export_expolygons(debug_out_path("treesupport-extrude_areas-smooth-error-%d.svg", irun ++), - { { { union_ex(max_allowed_area) }, { "max_allowed_area", "yellow", 0.5f } }, - { { union_ex(orig) }, { "orig", "red", "black", "", scaled(0.1f), 0.5f } } }); - ::MessageBoxA(nullptr, "TreeSupport smoothing bug", "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); - } + + const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top/*+node.print_z*/, diameter_angle_scale_factor); +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + if (node.position(1) > max_y) { + max_y = node.position(1); + branch_radius_temp = branch_radius_node; + } #endif - } - } + auto avoid_layer = m_ts_data->get_avoidance(branch_radius_node, layer_nr_next); + + Point to_outside = projection_onto(avoid_layer, node.position); + Point direction_to_outer = to_outside - node.position; + double dist2_to_outer = vsize2_with_unscale(direction_to_outer); + // don't move if + // 1) line of node and to_outside is cut by contour (means supports may intersect with object) + // 2) it's impossible to move to build plate + if (is_line_cut_by_contour(node.position, to_outside) || dist2_to_outer > max_move_distance2 * SQ(layer_nr) || + !is_inside_ex(avoid_layer, node.position)) { + // try move to outside of lower layer instead + Point candidate_vertex = node.position; + const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. + bool is_outside = move_out_expolys(avoid_layer, candidate_vertex, max_move_between_samples, max_move_between_samples); + if (is_outside) { + direction_to_outer = candidate_vertex - node.position; + dist2_to_outer = vsize2_with_unscale(direction_to_outer); + } else { + direction_to_outer = Point(0, 0); + dist2_to_outer = 0; + } + } + // move to the averaged direction of neighbor center and contour edge if they are roughly same direction + Point movement; + if (!is_strong) + movement = move_to_neighbor_center*2 + (dist2_to_outer > EPSILON ? direction_to_outer * (1 / dist2_to_outer) : Point(0, 0)); + else { + if (movement.dot(move_to_neighbor_center) >= 0.2 || move_to_neighbor_center == Point(0, 0)) + movement = direction_to_outer + move_to_neighbor_center; + else + movement = move_to_neighbor_center; // otherwise move to neighbor center first + } + + if (vsize2_with_unscale(movement) > get_max_move_dist(&node,2)) + movement = normal(movement, scale_(get_max_move_dist(&node))); + + // add momentum to force smooth movement + //movement = movement * 0.5 + p_node->movement * 0.5; + + next_layer_vertex += movement; + + if (group_index == 0) { + // Avoid collisions. + const coordf_t max_move_between_samples = get_max_move_dist(&node, 1) + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. + bool is_outside = move_out_expolys(avoid_layer, next_layer_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); + if (!is_outside) { + Point candidate_vertex = node.position; + is_outside = move_out_expolys(avoid_layer, candidate_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); + if (is_outside) { next_layer_vertex = candidate_vertex; } } } - throw_on_cancel(); + + const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], next_layer_vertex);// !is_inside_ex(m_ts_data->get_avoidance(m_ts_data->m_xy_distance, layer_nr - 1), next_layer_vertex); + Node * next_node = new Node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, + print_z_next, height_next); + next_node->movement = movement; + get_max_move_dist(next_node); + next_node->is_merged = false; + contact_nodes[layer_nr_next].push_back(next_node); } - }); - } + } -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - progress_total += TREE_PROGRESS_SMOOTH_BRANCH_AREAS / 2; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); // It is just assumed that both smoothing loops together are one third of the time spent in this function. This was guessed. As the whole function is only 10%, and the smoothing is hard to predict a progress report in the loop may be not useful. +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + if (contact_nodes[layer_nr].empty() == false) { + draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), m_ts_data->get_avoidance(0, layer_nr), + m_ts_data->get_avoidance(branch_radius_temp, layer_nr), + m_ts_data->m_layer_outlines_below[layer_nr], + contact_nodes[layer_nr], contact_nodes[layer_nr_next], "contact_points", { "overhang","avoid","outline" }, { "blue","red","yellow" }); + + BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer " << layer_nr << ", print_z=" << ts_layer->print_z; + for (size_t i = 0; i < std::min(size_t(5), contact_nodes[layer_nr].size()); i++) { + auto &node = contact_nodes[layer_nr][i]; + BOOST_LOG_TRIVIAL(debug) << "\t node " << i << ", pos=" << node->position << ", move = " << node->movement << ", is_merged=" << node->is_merged; + } + } #endif - // smooth downwards - for (auto& element : move_bounds.back()) - element.state.marked = false; - for (int layer_idx = int(move_bounds.size()) - 2; layer_idx >= 0; -- layer_idx) { - const size_t processing_base = linear_data_layers[layer_idx]; - const size_t processing_base_above = linear_data_layers[layer_idx + 1]; - const SupportElements &layer_above = move_bounds[layer_idx + 1]; - tbb::parallel_for(tbb::blocked_range(0, processing_base_above - processing_base), - [&](const tbb::blocked_range &range) { - for (size_t processing_idx = range.begin(); processing_idx < range.end(); ++ processing_idx) { - DrawArea &draw_area = linear_data[processing_base + processing_idx]; - bool do_something = false; - Polygons max_allowed_area; - for (int32_t parent_idx : draw_area.element->parents) { - const SupportElement &parent = layer_above[parent_idx]; - coord_t max_outer_line_increase = max_radius_change_per_layer; - Polygons result = offset(linear_data[processing_base_above + parent_idx].polygons, max_outer_line_increase, jtMiter, 1.2); - Point direction = draw_area.element->state.result_on_layer - parent.state.result_on_layer; - // move the polygons object - for (auto &outer : result) - for (Point& p : outer) - p += direction; - append(max_allowed_area, std::move(result)); - do_something = do_something || parent.state.marked || support_element_collision_radius(config, parent) != support_element_radius(config, parent); - } - if (do_something) { - // Trim the current drawing areas with max_allowed_area. - Polygons result = intersection(max_allowed_area, draw_area.polygons); - if (area(result) < area(draw_area.polygons)) { - // Mark parent as modified to propagate down. - draw_area.element->state.marked = true; - draw_area.polygons = std::move(result); + // Prune all branches that couldn't find support on either the model or the buildplate (resulting in 'mid-air' branches). + for (;! unsupported_branch_leaves.empty(); unsupported_branch_leaves.pop_back()) + { + const auto& entry = unsupported_branch_leaves.back(); + Node* i_node = entry.second; + for (; i_node != nullptr; i_node = i_node->parent) + { + size_t i_layer = i_node->obj_layer_nr; + std::vector::iterator to_erase = std::find(contact_nodes[i_layer].begin(), contact_nodes[i_layer].end(), i_node); + if (to_erase != contact_nodes[i_layer].end()) + { + // update the parent-child chain + if(i_node->parent) + i_node->parent->child = i_node->child; + if(i_node->child) + i_node->child->parent = i_node->parent; + contact_nodes[i_layer].erase(to_erase); + to_free_node_set.insert(i_node); + + for (Node* neighbour : i_node->merged_neighbours) + { + unsupported_branch_leaves.push_front({ i_layer, neighbour }); } } - throw_on_cancel(); } - }); + } } + + BOOST_LOG_TRIVIAL(debug) << "after m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size(); -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - progress_total += TREE_PROGRESS_SMOOTH_BRANCH_AREAS / 2; - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); -#endif + for (Node *node : to_free_node_set) + { + delete node; + } + to_free_node_set.clear(); } -/*! - * \brief Drop down areas that do rest non-gracefully on the model to ensure the branch actually rests on something. - * - * \param layer_tree_polygons[in] Resulting branch areas with the layerindex they appear on. - * \param linear_data[in] All currently existing influence areas with the layer they are on - * \param dropped_down_areas[out] Areas that have to be added to support all non-graceful areas. - * \param inverse_tree_order[in] A mapping that returns the child of every influence area. - */ -static void drop_non_gracious_areas( - const TreeModelVolumes &volumes, - const std::vector &linear_data, - std::vector &support_layer_storage, - std::function throw_on_cancel) +void TreeSupport::smooth_nodes(std::vector> &contact_nodes) { - const auto _tiny_area_threshold = tiny_area_threshold(); - std::vector>> dropped_down_areas(linear_data.size()); - tbb::parallel_for(tbb::blocked_range(0, linear_data.size()), - [&](const tbb::blocked_range &range) { - for (size_t idx = range.begin(); idx < range.end(); ++ idx) { - // If a element has no child, it connects to whatever is below as no support further down for it will exist. - if (const DrawArea &draw_element = linear_data[idx]; ! draw_element.element->state.to_model_gracious && draw_element.child_element == nullptr) { - Polygons rest_support; - const LayerIndex layer_idx_first = draw_element.element->state.layer_idx - 1; - for (LayerIndex layer_idx = layer_idx_first; area(rest_support) > _tiny_area_threshold && layer_idx >= 0; -- layer_idx) { - rest_support = diff_clipped(layer_idx == layer_idx_first ? draw_element.polygons : rest_support, volumes.getCollision(0, layer_idx, false)); - dropped_down_areas[idx].emplace_back(layer_idx, rest_support); + for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { + std::vector &curr_layer_nodes = contact_nodes[layer_nr]; + if (curr_layer_nodes.empty()) continue; + for (Node *node : curr_layer_nodes) { + node->is_processed = false; + if (layer_nr == 0) node->is_merged = true; // nodes on plate are also merged nodes + } + } + + for (int layer_nr = 0; layer_nr< contact_nodes.size(); layer_nr++) { + std::vector &curr_layer_nodes = contact_nodes[layer_nr]; + if (curr_layer_nodes.empty()) continue; + for (Node *node : curr_layer_nodes) { + if (!node->is_processed) { + std::vector pts; + std::vector branch; + Node * p_node = node; + // add a fixed head + if (node->child) { + pts.push_back(p_node->child->position); + branch.push_back(p_node->child); + } + do { + pts.push_back(p_node->position); + branch.push_back(p_node); + p_node = p_node->parent; + } while (p_node && !p_node->is_processed); + if (pts.size() < 3) continue; + + std::vector pts1 = pts; + // TODO here we assume layer height gap is constant. If not true, need to consider height jump + const int iterations = 100; + for (size_t k = 0; k < iterations; k++) { + for (size_t i = 1; i < pts.size() - 1; i++) { + size_t i2 = i >= 2 ? i - 2 : 0; + size_t i3 = i < pts.size() - 2 ? i + 2 : pts.size() - 1; + Point pt = (pts[i2] + pts[i - 1] + pts[i] + pts[i + 1] + pts[i3]) / 5; + pts1[i] = pt; + if (k == iterations - 1) { + branch[i]->position = pt; + branch[i]->movement = (pts[i + 1] - pts[i - 1]) / 2; + branch[i]->is_processed = true; + } + } + if (k < iterations - 1) + std::swap(pts, pts1); } } - throw_on_cancel(); } - }); - - for (coord_t i = 0; i < static_cast(dropped_down_areas.size()); i++) - for (std::pair &pair : dropped_down_areas[i]) - append(support_layer_storage[pair.first], std::move(pair.second)); + } + // save tree structure for viewing in python + auto& tree_nodes = m_ts_data->tree_nodes; + std::map ptr2idx; + std::map idx2ptr; + for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + for (Node* node : curr_layer_nodes) { + ptr2idx.emplace(node, tree_nodes.size()); + idx2ptr.emplace(tree_nodes.size(), node); + tree_nodes.emplace_back(node->position, node->print_z); + } + } + for (size_t i = 0; i < tree_nodes.size(); i++) { + TreeNode& tree_node = tree_nodes[i]; + Node* p_node = idx2ptr[i]; + if (p_node->child) + tree_node.children.push_back(ptr2idx[p_node->child]); + if(p_node->parent) + tree_node.parents.push_back(ptr2idx[p_node->parent]); + } +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + nlohmann::json jj; + for (size_t i = 0; i < tree_nodes.size(); i++) { + nlohmann::json j; + j["pos"] = tree_nodes[i].pos; + j["children"] = tree_nodes[i].children; + j["linked"] = !(tree_nodes[i].pos.z() > 0.205 && tree_nodes[i].children.empty()); + jj.push_back(j); + } + + std::ofstream ofs("tree_nodes.json"); + ofs << jj.dump(); + ofs.close(); +#endif } -/*! - * \brief Generates Support Floor, ensures Support Roof can not cut of branches, and saves the branches as support to storage - * - * \param support_layer_storage[in] Areas where support should be generated. - * \param support_roof_storage[in] Areas where support was replaced with roof. - * \param storage[in,out] The storage where the support should be stored. - */ -static void finalize_interface_and_support_areas( - const PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &overhangs, - std::vector &support_layer_storage, - std::vector &support_roof_storage, - - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - - std::function throw_on_cancel) +void TreeSupport::adjust_layer_heights(std::vector>& contact_nodes) { - assert(std::all_of(bottom_contacts.begin(), bottom_contacts.end(), [](auto *p) { return p == nullptr; })); -// assert(std::all_of(top_contacts.begin(), top_contacts.end(), [](auto* p) { return p == nullptr; })); - assert(std::all_of(intermediate_layers.begin(), intermediate_layers.end(), [](auto* p) { return p == nullptr; })); - - InterfacePreference interface_pref = config.interface_preference; // InterfacePreference::InterfaceAreaOverwritesSupport; - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC + TREE_PROGRESS_GENERATE_BRANCH_AREAS + TREE_PROGRESS_SMOOTH_BRANCH_AREAS; -#endif // SLIC3R_TREESUPPORTS_PROGRESS - - // Iterate over the generated circles in parallel and clean them up. Also add support floor. - tbb::parallel_for(tbb::blocked_range(0, support_layer_storage.size()), - [&](const tbb::blocked_range &range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { - // Subtract support lines of the branches from the roof - SupportGeneratorLayer *support_roof = top_contacts[layer_idx]; - Polygons support_roof_polygons; - - if (Polygons &src = support_roof_storage[layer_idx]; ! src.empty()) { - if (support_roof != nullptr && ! support_roof->polygons.empty()) { - support_roof_polygons = union_(src, support_roof->polygons); - support_roof->polygons.clear(); - } else - support_roof_polygons = std::move(src); - } else if (support_roof != nullptr) { - support_roof_polygons = std::move(support_roof->polygons); - support_roof->polygons.clear(); + if (contact_nodes.empty()) + return; + + const PrintConfig& print_config = m_object->print()->config(); + const PrintObjectConfig& config = m_object->config(); + // don't merge layers for Vine support, or the branches will be unsmooth + // TODO can we merge layers in a way that guaranttees smoothness? + if (!print_config.independent_support_layer_height || is_slim) { + for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + for (Node* node : curr_layer_nodes) { + node->print_z = m_object->get_layer(layer_nr)->print_z; + node->height = m_object->get_layer(layer_nr)->height; } + } + return; + } - assert(intermediate_layers[layer_idx] == nullptr); - Polygons base_layer_polygons = std::move(support_layer_storage[layer_idx]); + // extreme layer_id + std::vector extremes; + const coordf_t layer_height = config.layer_height.value; + const coordf_t max_layer_height = m_slicing_params.max_layer_height; + const size_t bot_intf_layers = config.support_interface_bottom_layers.value; + const size_t top_intf_layers = config.support_interface_top_layers.value; - if (! base_layer_polygons.empty()) { - // Most of the time in this function is this union call. Can take 300+ ms when a lot of areas are to be unioned. - base_layer_polygons = smooth_outward(union_(base_layer_polygons), config.support_line_width); //FIXME was .smooth(50); - //smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : - // simplify a bit, to ensure the output does not contain outrageous amounts of vertices. Should not be necessary, just a precaution. - base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution)), polygons_strictly_simple); - } + // if already using max layer height, no need to adjust + if (layer_height == max_layer_height) return; - if (! support_roof_polygons.empty() && ! base_layer_polygons.empty()) { -// if (area(intersection(base_layer_polygons, support_roof_polygons)) > tiny_area_threshold) - { - switch (interface_pref) { - case InterfacePreference::InterfaceAreaOverwritesSupport: - base_layer_polygons = diff(base_layer_polygons, support_roof_polygons); - break; - case InterfacePreference::SupportAreaOverwritesInterface: - support_roof_polygons = diff(support_roof_polygons, base_layer_polygons); - break; - //FIXME - #if 1 - case InterfacePreference::InterfaceLinesOverwriteSupport: - case InterfacePreference::SupportLinesOverwriteInterface: - assert(false); - [[fallthrough]]; - #else - case InterfacePreference::InterfaceLinesOverwriteSupport: - { - // Hatch the support roof interfaces, offset them by their line width and subtract them from support base. - Polygons interface_lines = offset(to_polylines( - generate_support_infill_lines(support_roof->polygons, true, layer_idx, config.support_roof_line_distance)), - config.support_roof_line_width / 2); - base_layer_polygons = diff(base_layer_polygons, interface_lines); - break; - } - case InterfacePreference::SupportLinesOverwriteInterface: - { - // Hatch the support roof interfaces, offset them by their line width and subtract them from support base. - Polygons tree_lines = union_(offset(to_polylines( - generate_support_infill_lines(base_layer_polygons, false, layer_idx, config.support_line_distance, true)), - config.support_line_width / 2)); - // do not draw roof where the tree is. I prefer it this way as otherwise the roof may cut of a branch from its support below. - support_roof->polygons = diff(support_roof->polygons, tree_lines); - break; - } - #endif - case InterfacePreference::Nothing: - break; - } - } - } + extremes.push_back(0); + for (Node* node : contact_nodes[0]) { + node->print_z = m_object->get_layer(0)->print_z; + node->height = m_object->get_layer(0)->height; + } - // Subtract support floors from the support area and add them to the support floor instead. - if (config.support_bottom_layers > 0 && ! base_layer_polygons.empty()) { - SupportGeneratorLayer*& support_bottom = bottom_contacts[layer_idx]; - Polygons layer_outset = diff_clipped( - config.support_bottom_offset > 0 ? offset(base_layer_polygons, config.support_bottom_offset, jtMiter, 1.2) : base_layer_polygons, - volumes.getCollision(0, layer_idx, false)); - Polygons floor_layer; - size_t layers_below = 0; - while (layers_below <= config.support_bottom_layers) { - // one sample at 0 layers below, another at config.support_bottom_layers. In-between samples at config.performance_interface_skip_layers distance from each other. - const size_t sample_layer = static_cast(std::max(0, (static_cast(layer_idx) - static_cast(layers_below)) - static_cast(config.z_distance_bottom_layers))); - //FIXME subtract the wipe tower - append(floor_layer, intersection(layer_outset, overhangs[sample_layer])); - if (layers_below < config.support_bottom_layers) - layers_below = std::min(layers_below + 1, config.support_bottom_layers); - else - break; - } - if (! floor_layer.empty()) { - if (support_bottom == nullptr) - support_bottom = &layer_allocate(layer_storage, SupporLayerType::BottomContact, print_object.slicing_parameters(), config, layer_idx); - support_bottom->polygons = union_(floor_layer, support_bottom->polygons); - base_layer_polygons = diff_clipped(base_layer_polygons, offset(support_bottom->polygons, scaled(0.01), jtMiter, 1.2)); // Subtract the support floor from the normal support. - } + for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + for (Node* node : curr_layer_nodes) { + if (node->support_roof_layers_below >0 || node->support_floor_layers_above == bot_intf_layers) { + extremes.push_back(layer_nr); + break; } + } - if (! support_roof_polygons.empty()) { - if (support_roof == nullptr) - support_roof = top_contacts[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::TopContact, print_object.slicing_parameters(), config, layer_idx); - support_roof->polygons = union_(support_roof_polygons); - } - if (! base_layer_polygons.empty()) { - SupportGeneratorLayer *base_layer = intermediate_layers[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::Base, print_object.slicing_parameters(), config, layer_idx); - base_layer->polygons = union_(base_layer_polygons); + if (extremes.back() == layer_nr) { + // contact layer use the same print_z and layer height with object layer + for (Node* node : curr_layer_nodes) { + node->print_z = m_object->get_layer(layer_nr)->print_z; + node->height = m_object->get_layer(layer_nr)->height; } + } + } -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - { - std::lock_guard critical_section_progress(critical_sections); - progress_total += TREE_PROGRESS_FINALIZE_BRANCH_AREAS / support_layer_storage.size(); - Progress::messageProgress(Progress::Stage::SUPPORT, progress_total * m_progress_multiplier + m_progress_offset, TREE_PROGRESS_TOTAL); + // schedule new layer heights and print_z + for (size_t idx_extreme = 0; idx_extreme < extremes.size(); idx_extreme++) { + int extr2_layer_nr = extremes[idx_extreme]; + coordf_t extr2z = m_object->get_layer(extr2_layer_nr)->bottom_z(); + int extr1_layer_nr = idx_extreme == 0 ? -1 : extremes[idx_extreme - 1]; + coordf_t extr1z = idx_extreme == 0 ? 0.f : m_object->get_layer(extr1_layer_nr)->print_z; + coordf_t dist = extr2z - extr1z; + + // Insert intermediate layers. + size_t n_layers_extra = size_t(ceil(dist / m_slicing_params.max_suport_layer_height)); + if (n_layers_extra <= 1) + continue; + + coordf_t step = dist / coordf_t(n_layers_extra); + coordf_t print_z = extr1z + step; + assert(step >= layer_height - EPSILON); + for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { + std::vector& curr_layer_nodes = contact_nodes[layer_nr]; + if (curr_layer_nodes.empty()) continue; + + if (std::abs(print_z - curr_layer_nodes[0]->print_z) < step / 2 + EPSILON) { + for (Node* node : curr_layer_nodes) { + node->print_z = print_z; + node->height = step; + } + print_z += step; } -#endif -#if 0 - { - std::lock_guard lock(critical_sections); - if (!storage.support.supportLayers[layer_idx].support_infill_parts.empty() || !storage.support.supportLayers[layer_idx].support_roof.empty()) - storage.support.layer_nr_max_filled_layer = std::max(storage.support.layer_nr_max_filled_layer, static_cast(layer_idx)); + else { + // can't clear curr_layer_nodes, or the model will have empty layers + for (Node* node : curr_layer_nodes) { + node->print_z = 0.0; + node->height = 0.0; + } } -#endif - throw_on_cancel(); } - }); + } } -/*! - * \brief Draws circles around result_on_layer points of the influence areas and applies some post processing. - * - * \param move_bounds[in] All currently existing influence areas - * \param storage[in,out] The storage where the support should be stored. - */ -static void draw_areas( - PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &overhangs, - std::vector &move_bounds, - - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - std::function throw_on_cancel) +std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) { - std::vector support_layer_storage(move_bounds.size()); - std::vector support_roof_storage(move_bounds.size()); - // All SupportElements are put into a layer independent storage to improve parallelization. - std::vector linear_data; - std::vector linear_data_layers; - { - std::vector> map_downwards_old; - std::vector> map_downwards_new; - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - SupportElements *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; - map_downwards_new.clear(); - linear_data_layers.emplace_back(linear_data.size()); - std::sort(map_downwards_old.begin(), map_downwards_old.end(), [](auto &l, auto &r) { return l.first < r.first; }); - for (SupportElement &elem : move_bounds[layer_idx]) { - SupportElement *child = nullptr; - if (layer_idx > 0) { - auto it = std::lower_bound(map_downwards_old.begin(), map_downwards_old.end(), &elem, [](auto &l, const SupportElement *r) { return l.first < r; }); - if (it != map_downwards_old.end() && it->first == &elem) { - child = it->second; - // Only one link points to a node above from below. - assert(! (++ it != map_downwards_old.end() && it->first == &elem)); - } - assert(child ? child->state.result_on_layer_is_set() : elem.state.target_height > layer_idx); - } - for (int32_t parent_idx : elem.parents) { - SupportElement &parent = (*layer_above)[parent_idx]; - if (parent.state.result_on_layer_is_set()) - map_downwards_new.emplace_back(&parent, &elem); - } - linear_data.push_back({ &elem, child }); - } - std::swap(map_downwards_old, map_downwards_new); + const PrintObjectConfig& config = m_object->config(); + const PrintConfig & print_config = m_object->print()->config(); + const coordf_t max_layer_height = m_slicing_params.max_layer_height; + const coordf_t layer_height = config.layer_height.value; + coordf_t z_distance_top = m_slicing_params.gap_support_object; + // BBS: add extra distance if thick bridge is enabled + // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height + if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { + z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; + } + const size_t support_roof_layers = config.support_interface_top_layers.value; + const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; + std::vector layer_heights(contact_nodes.size()); + std::vector bounds; + + if (!config.tree_support_adaptive_layer_height || layer_height == max_layer_height || !print_config.independent_support_layer_height) { + for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { + layer_heights[layer_nr] = {m_object->get_layer(layer_nr)->print_z, m_object->get_layer(layer_nr)->height, layer_nr > 0 ? size_t(layer_nr - 1) : 0}; } - linear_data_layers.emplace_back(linear_data.size()); + return layer_heights; } - throw_on_cancel(); + bounds.push_back(0); + // Keep first layer still + layer_heights[0] = {m_object->get_layer(0)->print_z, m_object->get_layer(0)->height, 0}; + // Collect top contact layers + for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) + { + if (!contact_nodes[layer_nr].empty()) + for (int i = 0; i < support_roof_layers + z_distance_top_layers + 1; i++) { + if (layer_nr - i > 0) { + bounds.push_back(layer_nr - i); + layer_heights[layer_nr - i].print_z = m_object->get_layer(layer_nr - i)->print_z; + layer_heights[layer_nr - i].height = m_object->get_layer(layer_nr - i)->height; + } + else { + break; + } -#ifndef NDEBUG - for (size_t i = 0; i < move_bounds.size(); ++ i) { - size_t begin = linear_data_layers[i]; - size_t end = linear_data_layers[i + 1]; - for (size_t j = begin; j < end; ++ j) - assert(linear_data[j].element == &move_bounds[i][j - begin]); + } } -#endif // NDEBUG - - auto t_start = std::chrono::high_resolution_clock::now(); - // Generate the circles that will be the branches. - generate_branch_areas(volumes, config, move_bounds, linear_data, throw_on_cancel); + std::set s(bounds.begin(), bounds.end()); + bounds.assign(s.begin(), s.end()); + + for (size_t idx_extreme = 0; idx_extreme < bounds.size(); idx_extreme++) { + int extr2_layer_nr = bounds[idx_extreme]; + coordf_t extr2z = m_object->get_layer(extr2_layer_nr)->bottom_z(); + int extr1_layer_nr = idx_extreme == 0 ? -1 : bounds[idx_extreme - 1]; + coordf_t extr1z = idx_extreme == 0 ? 0.f : m_object->get_layer(extr1_layer_nr)->print_z; + coordf_t dist = extr2z - extr1z; + + // Insert intermediate layers. + size_t n_layers_extra = size_t(ceil(dist / (m_slicing_params.max_suport_layer_height + EPSILON))); + int actual_internel_layers = extr2_layer_nr - extr1_layer_nr - 1; + int extr_layers_left = extr2_layer_nr - extr1_layer_nr - n_layers_extra - 1; + if (n_layers_extra < 1) + continue; -#if 0 - assert(linear_data_layers.size() == move_bounds.size() + 1); - for (const auto &draw_area : linear_data) - assert(contains(draw_area.polygons, draw_area.element->state.result_on_layer)); - for (size_t i = 0; i < move_bounds.size(); ++ i) { - size_t begin = linear_data_layers[i]; - size_t end = linear_data_layers[i + 1]; - for (size_t j = begin; j < end; ++ j) { - const auto &draw_area = linear_data[j]; - assert(draw_area.element == &move_bounds[i][j - begin]); - assert(contains(draw_area.polygons, draw_area.element->state.result_on_layer)); + coordf_t step = dist / coordf_t(n_layers_extra); + coordf_t print_z = extr1z + step; + assert(step >= layer_height - EPSILON); + for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { + // if (curr_layer_nodes.empty()) continue; + if (std::abs(print_z - m_object->get_layer(layer_nr)->print_z) < step / 2 + EPSILON || extr_layers_left < 1) { + layer_heights[layer_nr].print_z = print_z; + layer_heights[layer_nr].height = step; + print_z += step; + } + else { + // can't clear curr_layer_nodes, or the model will have empty layers + layer_heights[layer_nr].print_z = 0.0; + layer_heights[layer_nr].height = 0.0; + extr_layers_left--; + } } } -#endif -#if 0 - for (size_t area_layer_idx = 0; area_layer_idx + 1 < linear_data_layers.size(); ++ area_layer_idx) { - size_t begin = linear_data_layers[area_layer_idx]; - size_t end = linear_data_layers[area_layer_idx + 1]; - Polygons polygons; - for (size_t area_idx = begin; area_idx < end; ++ area_idx) { - DrawArea &area = linear_data[area_idx]; - append(polygons, area.polygons); + // fill in next_layer_nr + int i = layer_heights.size() - 1, j = i; + for (; j >= 0; i = j) { + if (layer_heights[i].height < EPSILON) { + j--; + continue; } - SVG::export_expolygons(debug_out_path("treesupport-extrude_areas-raw-%d.svg", area_layer_idx), - { { { union_ex(polygons) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); + for (j = i - 1; j >= 0; j--) { + if (layer_heights[j].height > EPSILON) { + layer_heights[i].next_layer_nr = j; + break; + } + } + BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights print_z, height, layer_nr->next_layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " + << i << "->" << layer_heights[i].next_layer_nr << std::endl; } -#endif - auto t_generate = std::chrono::high_resolution_clock::now(); - // In some edgecases a branch may go though a hole, where the regular radius does not fit. This can result in an apparent jump in branch radius. As such this cases need to be caught and smoothed out. - smooth_branch_areas(config, move_bounds, linear_data, linear_data_layers, throw_on_cancel); + return layer_heights; +} -#if 0 - for (size_t area_layer_idx = 0; area_layer_idx + 1 < linear_data_layers.size(); ++area_layer_idx) { - size_t begin = linear_data_layers[area_layer_idx]; - size_t end = linear_data_layers[area_layer_idx + 1]; - Polygons polygons; - for (size_t area_idx = begin; area_idx < end; ++area_idx) { - DrawArea& area = linear_data[area_idx]; - append(polygons, area.polygons); +void TreeSupport::generate_contact_points(std::vector>& contact_nodes) +{ + const PrintObjectConfig &config = m_object->config(); + const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); + + //First generate grid points to cover the entire area of the print. + BoundingBox bounding_box = m_object->bounding_box(); + const Point bounding_box_size = bounding_box.max - bounding_box.min; + constexpr double rotate_angle = 22.0 / 180.0 * M_PI; + + const auto center = bounding_box_middle(bounding_box); + const auto sin_angle = std::sin(rotate_angle); + const auto cos_angle = std::cos(rotate_angle); + const Point rotated_dims = Point( + bounding_box_size(0) * cos_angle + bounding_box_size(1) * sin_angle, + bounding_box_size(0) * sin_angle + bounding_box_size(1) * cos_angle) / 2; + + std::vector grid_points; + for (auto x = -rotated_dims(0); x < rotated_dims(0); x += point_spread) { + for (auto y = -rotated_dims(1); y < rotated_dims(1); y += point_spread) { + Point pt(x, y); + pt.rotate(cos_angle, sin_angle); + pt += center; + if (bounding_box.contains(pt)) { + grid_points.push_back(pt); + } } - SVG::export_expolygons(debug_out_path("treesupport-extrude_areas-smooth-%d.svg", area_layer_idx), - { { { union_ex(polygons) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); } -#endif - auto t_smooth = std::chrono::high_resolution_clock::now(); - // drop down all trees that connect non gracefully with the model - drop_non_gracious_areas(volumes, linear_data, support_layer_storage, throw_on_cancel); - auto t_drop = std::chrono::high_resolution_clock::now(); + const coordf_t layer_height = config.layer_height.value; + coordf_t z_distance_top = m_slicing_params.gap_support_object; + // BBS: add extra distance if thick bridge is enabled + // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height + if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { + z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; + } + const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. - // Single threaded combining all support areas to the right layers. - { - auto begin = linear_data.begin(); - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - size_t cnt_roofs = 0; - size_t cnt_layers = 0; - auto end = begin; - for (; end != linear_data.end() && end->element->state.layer_idx == layer_idx; ++ end) - ++ (end->element->state.missing_roof_layers > end->element->state.distance_to_top ? cnt_roofs : cnt_layers); - auto &this_roofs = support_roof_storage[layer_idx]; - auto &this_layers = support_layer_storage[layer_idx]; - this_roofs.reserve(this_roofs.size() + cnt_roofs); - this_layers.reserve(this_layers.size() + cnt_layers); - for (auto it = begin; it != end; ++ it) - std::move(std::begin(it->polygons), std::end(it->polygons), std::back_inserter(it->element->state.missing_roof_layers > it->element->state.distance_to_top ? this_roofs : this_layers)); - begin = end; - } - } - - finalize_interface_and_support_areas(print_object, volumes, config, overhangs, support_layer_storage, support_roof_storage, - bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); - auto t_end = std::chrono::high_resolution_clock::now(); - - auto dur_gen_tips = 0.001 * std::chrono::duration_cast(t_generate - t_start).count(); - auto dur_smooth = 0.001 * std::chrono::duration_cast(t_smooth - t_generate).count(); - auto dur_drop = 0.001 * std::chrono::duration_cast(t_drop - t_smooth).count(); - auto dur_finalize = 0.001 * std::chrono::duration_cast(t_end - t_drop).count(); - - BOOST_LOG_TRIVIAL(info) << - "Time used for drawing subfuctions: generate_branch_areas: " << dur_gen_tips << " ms " - "smooth_branch_areas: " << dur_smooth << " ms " - "drop_non_gracious_areas: " << dur_drop << " ms " - "finalize_interface_and_support_areas " << dur_finalize << " ms"; -} + size_t support_roof_layers = config.support_interface_top_layers.value; + if (support_roof_layers > 0) + support_roof_layers += 1; // BBS: add a normal support layer below interface (if we have interface) + coordf_t thresh_angle = std::min(89.f, config.support_threshold_angle.value < EPSILON ? 30.f : config.support_threshold_angle.value); + coordf_t half_overhang_distance = scale_(tan(thresh_angle * M_PI / 180.0) * layer_height / 2); -extern bool g_showed_critical_error; -extern bool g_showed_performance_warning; + // fix bug of generating support for very thin objects + if (m_object->layers().size() <= z_distance_top_layers + 1) + return; -/*! - * \brief Create the areas that need support. - * - * These areas are stored inside the given SliceDataStorage object. - * \param storage The data storage where the mesh data is gotten from and - * where the resulting support areas are stored. - */ -static void generate_support_areas(Print &print, const BuildVolume &build_volume, const std::vector &print_object_ids, std::function throw_on_cancel) -{ - g_showed_critical_error = false; - g_showed_performance_warning = false; + m_highest_overhang_layer = 0; + int nonempty_layers = 0; + std::vector all_nodes; + for (size_t layer_nr = 1; layer_nr < m_object->layers().size(); layer_nr++) + { + if (m_object->print()->canceled()) + break; + auto ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); + const ExPolygons &overhang = ts_layer->overhang_areas; + auto & curr_nodes = contact_nodes[layer_nr]; + if (overhang.empty()) + continue; - // Settings with the indexes of meshes that use these settings. - std::vector>> grouped_meshes = group_meshes(print, print_object_ids); - if (grouped_meshes.empty()) - return; + m_highest_overhang_layer = std::max(m_highest_overhang_layer, layer_nr); + auto print_z = m_object->get_layer(layer_nr)->print_z; + auto height = m_object->get_layer(layer_nr)->height; - size_t counter = 0; + for (const ExPolygon &overhang_part : overhang) + { + BoundingBox overhang_bounds = get_extents(overhang_part); + if (support_style==smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang) { + Point candidate = overhang_bounds.center(); + if (!overhang_part.contains(candidate)) + move_inside_expoly(overhang_part, candidate); + if (!(config.support_on_build_plate_only && is_inside_ex(m_ts_data->m_layer_outlines_below[layer_nr], candidate))) { + Node* contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, Node::NO_PARENT, print_z, + height, z_distance_top); + contact_node->type = ePolygon; + contact_node->overhang = &overhang_part; + curr_nodes.emplace_back(contact_node); + continue; + } + } - // Process every mesh group. These groups can not be processed parallel, as the processing in each group is parallelized, and nested parallelization is disables and slow. - for (std::pair> &processing : grouped_meshes) - { - // process each combination of meshes - // this struct is used to easy retrieve setting. No other function except those in TreeModelVolumes and generate_initial_areas() have knowledge of the existence of multiple meshes being processed. - //FIXME this is a copy - // Contains config settings to avoid loading them in every function. This was done to improve readability of the code. - const TreeSupportSettings &config = processing.first; - BOOST_LOG_TRIVIAL(info) << "Processing support tree mesh group " << counter + 1 << " of " << grouped_meshes.size() << " containing " << grouped_meshes[counter].second.size() << " meshes."; - auto t_start = std::chrono::high_resolution_clock::now(); -#if 0 - std::vector exclude(num_support_layers); - // get all already existing support areas and exclude them - tbb::parallel_for(tbb::blocked_range(0, num_support_layers), - [&](const tbb::blocked_range &range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { - Polygons exlude_at_layer; - append(exlude_at_layer, storage.support.supportLayers[layer_idx].support_bottom); - append(exlude_at_layer, storage.support.supportLayers[layer_idx].support_roof); - for (auto part : storage.support.supportLayers[layer_idx].support_infill_parts) - append(exlude_at_layer, part.outline); - exclude[layer_idx] = union_(exlude_at_layer); + overhang_bounds.inflated(half_overhang_distance); + bool added = false; //Did we add a point this way? + for (Point candidate : grid_points) + { + if (overhang_bounds.contains(candidate)) + { + // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! + bool is_inside = is_inside_ex(overhang_part, candidate); + if (!is_inside) { + constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that + // fall between overhang areas on constant surfaces. + move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); + is_inside = is_inside_ex(overhang_part, candidate); + } + if (is_inside) + { + // collision radius has to be 0 or the supports are too few at curved slopes + //if (!is_inside_ex(m_ts_data->get_collision(0, layer_nr), candidate)) + { + constexpr bool to_buildplate = true; + Node * contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, + Node::NO_PARENT, print_z, height, z_distance_top); + contact_node->overhang = &overhang_part; + curr_nodes.emplace_back(contact_node); + added = true; + } + } + } } - }); -#endif -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - m_progress_multiplier = 1.0 / double(grouped_meshes.size()); - m_progress_offset = counter == 0 ? 0 : TREE_PROGRESS_TOTAL * (double(counter) * m_progress_multiplier); -#endif // SLIC3R_TREESUPPORT_PROGRESS - PrintObject &print_object = *print.get_object(processing.second.front()); - // Generator for model collision, avoidance and internal guide volumes. - TreeModelVolumes volumes{ print_object, build_volume, config.maximum_move_distance, config.maximum_move_distance_slow, processing.second.front(), -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - m_progress_multiplier, m_progress_offset, -#endif // SLIC3R_TREESUPPORTS_PROGRESS - /* additional_excluded_areas */{} }; - - //FIXME generating overhangs just for the furst mesh of the group. - assert(processing.second.size() == 1); - std::vector overhangs = generate_overhangs(config, *print.get_object(processing.second.front()), throw_on_cancel); - - // ### Precalculate avoidances, collision etc. - size_t num_support_layers = precalculate(print, overhangs, processing.first, processing.second, volumes, throw_on_cancel); - bool has_support = num_support_layers > 0; - bool has_raft = config.raft_layers.size() > 0; - num_support_layers = std::max(num_support_layers, config.raft_layers.size()); - - SupportParameters support_params(print_object); - support_params.with_sheath = true; -// Don't override the support density of tree supports, as the support density is used for raft. -// The trees will have the density zeroed in tree_supports_generate_paths() -// support_params.support_density = 0; - - SupportGeneratorLayerStorage layer_storage; - SupportGeneratorLayersPtr top_contacts; - SupportGeneratorLayersPtr bottom_contacts; - SupportGeneratorLayersPtr interface_layers; - SupportGeneratorLayersPtr base_interface_layers; - SupportGeneratorLayersPtr intermediate_layers(num_support_layers, nullptr); - if (support_params.has_top_contacts || has_raft) - top_contacts.assign(num_support_layers, nullptr); - if (support_params.has_bottom_contacts) - bottom_contacts.assign(num_support_layers, nullptr); - if (support_params.has_interfaces() || has_raft) - interface_layers.assign(num_support_layers, nullptr); - if (support_params.has_base_interfaces() || has_raft) - base_interface_layers.assign(num_support_layers, nullptr); - - auto remove_undefined_layers = [&bottom_contacts, &top_contacts, &interface_layers, &base_interface_layers, &intermediate_layers]() { - auto doit = [](SupportGeneratorLayersPtr& layers) { - layers.erase(std::remove_if(layers.begin(), layers.end(), [](const SupportGeneratorLayer* ptr) { return ptr == nullptr; }), layers.end()); - }; - doit(bottom_contacts); - doit(top_contacts); - doit(interface_layers); - doit(base_interface_layers); - doit(intermediate_layers); - }; - InterfacePlacer interface_placer{ - print_object.slicing_parameters(), support_params, config, - // Outputs - layer_storage, top_contacts, interface_layers, base_interface_layers }; - - if (has_support) { - auto t_precalc = std::chrono::high_resolution_clock::now(); - - // value is the area where support may be placed. As this is calculated in CreateLayerPathing it is saved and reused in draw_areas - std::vector move_bounds(num_support_layers); - - // ### Place tips of the support tree - for (size_t mesh_idx : processing.second) - generate_initial_areas(*print.get_object(mesh_idx), volumes, config, overhangs, - move_bounds, interface_placer, throw_on_cancel); - auto t_gen = std::chrono::high_resolution_clock::now(); - - #ifdef TREESUPPORT_DEBUG_SVG - for (size_t layer_idx = 0; layer_idx < move_bounds.size(); ++layer_idx) { - Polygons polys; - for (auto& area : move_bounds[layer_idx]) - append(polys, area.influence_area); - if (auto begin = move_bounds[layer_idx].begin(); begin != move_bounds[layer_idx].end()) - SVG::export_expolygons(debug_out_path("treesupport-initial_areas-%d.svg", layer_idx), - { { { union_ex(volumes.getWallRestriction(support_element_collision_radius(config, begin->state), layer_idx, begin->state.use_min_xy_dist)) }, - { "wall_restricrictions", "gray", 0.5f } }, - { { union_ex(polys) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); + if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. + { + auto bbox = overhang_part.contour.bounding_box(); + Points candidates; + if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) + candidates = {bbox.min, bounding_box_middle(bbox), bbox.max}; + else + candidates = {bounding_box_middle(bbox)}; + + for (Point candidate : candidates) { + if (!overhang_part.contains(candidate)) + move_inside_expoly(overhang_part, candidate); + constexpr bool to_buildplate = true; + Node *contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, Node::NO_PARENT, + print_z, height, z_distance_top); + contact_node->overhang = &overhang_part; + curr_nodes.emplace_back(contact_node); + } + } + // add supports at corners for both auto and manual overhangs, github #2008 + if (/*ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected*/1) { + // add points at corners + auto &points = overhang_part.contour.points; + int nSize = points.size(); + for (int i = 0; i < nSize; i++) { + auto pt = points[i]; + auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); + auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); + if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees + Node *contact_node = new Node(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, Node::NO_PARENT, print_z, + height, z_distance_top); + contact_node->overhang = &overhang_part; + contact_node->is_corner = true; + curr_nodes.emplace_back(contact_node); + } + } + } + if(ts_layer->overhang_types[&overhang_part] == SupportLayer::Enforced || is_slim){ + // remove close points in Enforcers + // auto above_nodes = contact_nodes[layer_nr - 1]; + if (!curr_nodes.empty() /*&& !above_nodes.empty()*/) { + for (auto it = curr_nodes.begin(); it != curr_nodes.end();) { + bool is_duplicate = false; + if (!(*it)->is_corner) { + Slic3r::Vec3f curr_pt((*it)->position(0), (*it)->position(1), scale_((*it)->print_z)); + for (auto &pt : all_nodes) { + auto dif = curr_pt - pt; + if (dif.norm() < point_spread / 2) { + delete (*it); + it = curr_nodes.erase(it); + is_duplicate = true; + break; + } + } + } + if (!is_duplicate) it++; + } + } } - #endif // TREESUPPORT_DEBUG_SVG + } + if (!curr_nodes.empty()) nonempty_layers++; + for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } +#ifdef SUPPORT_TREE_DEBUG_TO_SVG + draw_contours_and_nodes_to_svg(std::to_string(print_z), overhang, m_ts_data->m_layer_outlines_below[layer_nr], {}, + contact_nodes[layer_nr], {}, "init_contact_points", { "overhang","outlines","" }); +#endif + } + int nNodes = all_nodes.size(); + avg_node_per_layer = nodes_angle = 0; + if (nNodes > 0) { + avg_node_per_layer = nNodes / nonempty_layers; + // get orientation of nodes by line fitting + // line: y=kx+b, where + // k=tan(nodes_angle)=(n\sum{xy}-\sum{x}\sum{y})/(n\sum{x^2}-\sum{x}^2) + float mx = 0, my = 0, mxy = 0, mx2 = 0; + for (auto &pt : all_nodes) { + float x = unscale_(pt(0)); + float y = unscale_(pt(1)); + mx += x; + my += y; + mxy += x * y; + mx2 += x * x; + } + nodes_angle = atan2(nNodes * mxy - mx * my, nNodes * mx2 - SQ(mx)); + + BOOST_LOG_TRIVIAL(info) << "avg_node_per_layer=" << avg_node_per_layer << ", nodes_angle=" << nodes_angle; + } +} - // ### Propagate the influence areas downwards. This is an inherently serial operation. - create_layer_pathing(volumes, config, move_bounds, throw_on_cancel); - auto t_path = std::chrono::high_resolution_clock::now(); +void TreeSupport::insert_dropped_node(std::vector& nodes_layer, Node* p_node) +{ + std::vector::iterator conflicting_node_it = std::find(nodes_layer.begin(), nodes_layer.end(), p_node); + if (conflicting_node_it == nodes_layer.end()) //No conflict. + { + nodes_layer.emplace_back(p_node); + return; + } - // ### Set a point in each influence area - create_nodes_from_area(volumes, config, move_bounds, throw_on_cancel); - auto t_place = std::chrono::high_resolution_clock::now(); + Node* conflicting_node = *conflicting_node_it; + conflicting_node->distance_to_top = std::max(conflicting_node->distance_to_top, p_node->distance_to_top); + conflicting_node->support_roof_layers_below = std::max(conflicting_node->support_roof_layers_below, p_node->support_roof_layers_below); +} - // ### draw these points as circles +TreeSupportData::TreeSupportData(const PrintObject &object, coordf_t xy_distance, coordf_t max_move, coordf_t radius_sample_resolution) + : m_xy_distance(xy_distance), m_max_move(max_move), m_radius_sample_resolution(radius_sample_resolution) +{ + for (std::size_t layer_nr = 0; layer_nr < object.layers().size(); ++layer_nr) + { + const Layer* layer = object.get_layer(layer_nr); + m_layer_outlines.push_back(ExPolygons()); + ExPolygons& outline = m_layer_outlines.back(); + for (const ExPolygon& poly : layer->lslices) { + poly.simplify(scale_(m_radius_sample_resolution), &outline); + } - if (print_object.config().support_style.value != smsOrganic && - // Orca: use organic as default - print_object.config().support_style.value != smsDefault) { - draw_areas(*print.get_object(processing.second.front()), volumes, config, overhangs, move_bounds, - bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); - } else { - organic_draw_branches( - *print.get_object(processing.second.front()), volumes, config, move_bounds, - bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, - throw_on_cancel); - } + if (layer_nr == 0) + m_layer_outlines_below.push_back(outline); + else + m_layer_outlines_below.push_back(union_ex(m_layer_outlines_below.end()[-1], outline)); + } +} - remove_undefined_layers(); - - std::tie(interface_layers, base_interface_layers) = generate_interface_layers(print_object.config(), support_params, - bottom_contacts, top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); - - auto t_draw = std::chrono::high_resolution_clock::now(); - auto dur_pre_gen = 0.001 * std::chrono::duration_cast(t_precalc - t_start).count(); - auto dur_gen = 0.001 * std::chrono::duration_cast(t_gen - t_precalc).count(); - auto dur_path = 0.001 * std::chrono::duration_cast(t_path - t_gen).count(); - auto dur_place = 0.001 * std::chrono::duration_cast(t_place - t_path).count(); - auto dur_draw = 0.001 * std::chrono::duration_cast(t_draw - t_place).count(); - auto dur_total = 0.001 * std::chrono::duration_cast(t_draw - t_start).count(); - BOOST_LOG_TRIVIAL(info) << - "Total time used creating Tree support for the currently grouped meshes: " << dur_total << " ms. " - "Different subtasks:\nCalculating Avoidance: " << dur_pre_gen << " ms " - "Creating inital influence areas: " << dur_gen << " ms " - "Influence area creation: " << dur_path << "ms " - "Placement of Points in InfluenceAreas: " << dur_place << "ms " - "Drawing result as support " << dur_draw << " ms"; - // if (config.branch_radius==2121) - // BOOST_LOG_TRIVIAL(error) << "Why ask questions when you already know the answer twice.\n (This is not a real bug, please dont report it.)"; - - move_bounds.clear(); - } else if (generate_raft_contact(print_object, config, interface_placer) >= 0) { - remove_undefined_layers(); - } else - // No raft. - continue; +const ExPolygons& TreeSupportData::get_collision(coordf_t radius, size_t layer_nr) const +{ + profiler.tic(); + radius = ceil_radius(radius); + RadiusLayerPair key{radius, layer_nr}; + const auto it = m_collision_cache.find(key); + const ExPolygons& collision = it != m_collision_cache.end() ? it->second : calculate_collision(key); + profiler.stage_add(STAGE_get_collision, true); + return collision; +} - // Produce the support G-code. - // Used by both classic and tree supports. - SupportGeneratorLayersPtr raft_layers = generate_raft_base(print_object, support_params, print_object.slicing_parameters(), - top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); -#if 1 //#ifdef SLIC3R_DEBUG - SupportGeneratorLayersPtr layers_sorted = -#endif // SLIC3R_DEBUG - generate_support_layers(print_object, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); - // Don't fill in the tree supports, make them hollow with just a single sheath line. - generate_support_toolpaths(print_object.support_layers(), print_object.config(), support_params, print_object.slicing_parameters(), - raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); - - #if 0 -//#ifdef SLIC3R_DEBUG - { - static int iRun = 0; - ++ iRun; - size_t layer_id = 0; - for (int i = 0; i < int(layers_sorted.size());) { - // Find the last layer with roughly the same print_z, find the minimum layer height of all. - // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. - int j = i + 1; - coordf_t zmax = layers_sorted[i]->print_z + EPSILON; - bool empty = layers_sorted[i]->polygons.empty(); - for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) - if (!layers_sorted[j]->polygons.empty()) - empty = false; - if (!empty) { - export_print_z_polygons_to_svg( - debug_out_path("support-%d-%lf.svg", iRun, layers_sorted[i]->print_z).c_str(), - layers_sorted.data() + i, j - i); - export_print_z_polygons_and_extrusions_to_svg( - debug_out_path("support-w-fills-%d-%lf.svg", iRun, layers_sorted[i]->print_z).c_str(), - layers_sorted.data() + i, j - i, - *print_object.support_layers()[layer_id]); - ++layer_id; - } - i = j; - } - } -#endif /* SLIC3R_DEBUG */ +const ExPolygons& TreeSupportData::get_avoidance(coordf_t radius, size_t layer_nr, int recursions) const +{ + profiler.tic(); + radius = ceil_radius(radius); + RadiusLayerPair key{radius, layer_nr, recursions }; + const auto it = m_avoidance_cache.find(key); + const ExPolygons& avoidance = it != m_avoidance_cache.end() ? it->second : calculate_avoidance(key); + + profiler.stage_add(STAGE_GET_AVOIDANCE, true); + return avoidance; +} - ++ counter; +Polygons TreeSupportData::get_contours(size_t layer_nr) const +{ + Polygons contours; + for (const ExPolygon& expoly : m_layer_outlines[layer_nr]) { + contours.push_back(expoly.contour); } -// storage.support.generated = true; + return contours; } -} // namespace FFFTreeSupport +Polygons TreeSupportData::get_contours_with_holes(size_t layer_nr) const +{ + Polygons contours; + for (const ExPolygon& expoly : m_layer_outlines[layer_nr]) { + for(int i=0;i throw_on_cancel) +coordf_t TreeSupportData::ceil_radius(coordf_t radius) const { - size_t idx = 0; - for (const PrintObject *po : print_object.print()->objects()) { - if (po == &print_object) - break; - ++idx; +#if 1 + size_t factor = (size_t)(radius / m_radius_sample_resolution); + coordf_t remains = radius - m_radius_sample_resolution * factor; + if (remains > EPSILON) { + return radius + m_radius_sample_resolution - remains; + } + else { + return radius; + } +#else + coordf_t resolution = m_radius_sample_resolution; + return ceil(radius / resolution) * resolution; +#endif +} + +const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& key) const +{ + assert(key.layer_nr < m_layer_outlines.size()); + + ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius)); + const auto ret = m_collision_cache.insert({ key, std::move(collision_areas) }); + return ret.first->second; +} + +const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& key) const +{ + const auto& radius = key.radius; + const auto& layer_nr = key.layer_nr; + BOOST_LOG_TRIVIAL(debug) << "calculate_avoidance on radius=" << radius << ", layer=" << layer_nr<<", recursion="< 0; layers_below++) { layer_nr_next = layer_heights[layer_nr_next].next_layer_nr; } + // Check if we would exceed the recursion limit by trying to process this layer + if (layers_below >= max_recursion_depth && m_avoidance_cache.find({radius, layer_nr_next}) == m_avoidance_cache.end()) { + // Force the calculation of the layer `max_recursion_depth` below our current one, ignoring the result. + get_avoidance(radius, layer_nr_next, key.recursions + 1); + } + + layer_nr_next = layer_heights[layer_nr].next_layer_nr; + ExPolygons avoidance_areas = offset_ex(get_avoidance(radius, layer_nr_next, key.recursions+1), scale_(-m_max_move)); + const ExPolygons &collision = get_collision(radius, layer_nr); + avoidance_areas.insert(avoidance_areas.end(), collision.begin(), collision.end()); + avoidance_areas = std::move(union_ex(avoidance_areas)); + auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); + //assert(ret.second); + return ret.first->second; + } else { + ExPolygons avoidance_areas = offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius)); + auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); + assert(ret.second); + return ret.first->second; } - FFFTreeSupport::generate_support_areas(*print_object.print(), - BuildVolume(Pointfs{ Vec2d{ -300., -300. }, Vec2d{ -300., +300. }, Vec2d{ +300., +300. }, Vec2d{ +300., -300. } }, 0.), { idx }, - throw_on_cancel); } -} // namespace Slic3r +} //namespace Slic3r diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index c79f1d4a3af..2f3546ed234 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -1,299 +1,511 @@ -// Tree supports by Thomas Rahm, losely based on Tree Supports by CuraEngine. -// Original source of Thomas Rahm's tree supports: -// https://github.com/ThomasRahm/CuraEngine -// -// Original CuraEngine copyright: -// Copyright (c) 2021 Ultimaker B.V. -// CuraEngine is released under the terms of the AGPLv3 or higher. - -#ifndef slic3r_TreeSupport_hpp -#define slic3r_TreeSupport_hpp - -#include "SupportLayer.hpp" -#include "TreeModelVolumes.hpp" -#include "TreeSupportCommon.hpp" - -#include "../BoundingBox.hpp" -#include "../Point.hpp" -#include "../Utils.hpp" - -#include - - -// #define TREE_SUPPORT_SHOW_ERRORS - -#ifdef SLIC3R_TREESUPPORTS_PROGRESS - // The various stages of the process can be weighted differently in the progress bar. - // These weights are obtained experimentally using a small sample size. Sensible weights can differ drastically based on the assumed default settings and model. - #define TREE_PROGRESS_TOTAL 10000 - #define TREE_PROGRESS_PRECALC_COLL TREE_PROGRESS_TOTAL * 0.1 - #define TREE_PROGRESS_PRECALC_AVO TREE_PROGRESS_TOTAL * 0.4 - #define TREE_PROGRESS_GENERATE_NODES TREE_PROGRESS_TOTAL * 0.1 - #define TREE_PROGRESS_AREA_CALC TREE_PROGRESS_TOTAL * 0.3 - #define TREE_PROGRESS_DRAW_AREAS TREE_PROGRESS_TOTAL * 0.1 - #define TREE_PROGRESS_GENERATE_BRANCH_AREAS TREE_PROGRESS_DRAW_AREAS / 3 - #define TREE_PROGRESS_SMOOTH_BRANCH_AREAS TREE_PROGRESS_DRAW_AREAS / 3 - #define TREE_PROGRESS_FINALIZE_BRANCH_AREAS TREE_PROGRESS_DRAW_AREAS / 3 -#endif // SLIC3R_TREESUPPORTS_PROGRESS +#ifndef TREESUPPORT_H +#define TREESUPPORT_H + +#include +#include +#include "ExPolygon.hpp" +#include "Point.hpp" +#include "Slicing.hpp" +#include "MinimumSpanningTree.hpp" +#include "tbb/concurrent_unordered_map.h" +#include "Flow.hpp" +#include "PrintConfig.hpp" +#include "Fill/Lightning/Generator.hpp" + +#ifndef SQ +#define SQ(x) ((x)*(x)) +#endif namespace Slic3r { - -// Forward declarations -class Print; class PrintObject; -struct SlicingParameters; +class TreeSupport; +class SupportLayer; -namespace FFFTreeSupport +struct LayerHeightData { + coordf_t print_z = 0; + coordf_t height = 0; + size_t next_layer_nr = 0; + LayerHeightData() = default; + LayerHeightData(coordf_t z, coordf_t h, size_t next_layer) : print_z(z), height(h), next_layer_nr(next_layer) {} +}; -// The number of vertices in each circle. -static constexpr const size_t SUPPORT_TREE_CIRCLE_RESOLUTION = 25; - -struct AreaIncreaseSettings -{ - AreaIncreaseSettings( - TreeModelVolumes::AvoidanceType type = TreeModelVolumes::AvoidanceType::Fast, coord_t increase_speed = 0, - bool increase_radius = false, bool no_error = false, bool use_min_distance = false, bool move = false) : - increase_speed{ increase_speed }, type{ type }, increase_radius{ increase_radius }, no_error{ no_error }, use_min_distance{ use_min_distance }, move{ move } {} - - coord_t increase_speed; - // Packing for smaller memory footprint of SupportElementState && SupportElementMerging - TreeModelVolumes::AvoidanceType type; - bool increase_radius : 1; - bool no_error : 1; - bool use_min_distance : 1; - bool move : 1; - bool operator==(const AreaIncreaseSettings& other) const - { - return type == other.type && - increase_speed == other.increase_speed && - increase_radius == other.increase_radius && - no_error == other.no_error && - use_min_distance == other.use_min_distance && - move == other.move; +struct TreeNode { + Vec3f pos; + std::vector children; // index of children in the storing vector + std::vector parents; // index of parents in the storing vector + TreeNode(Point pt, float z) { + pos = { float(unscale_(pt.x())),float(unscale_(pt.y())),z }; } }; -#define TREE_SUPPORTS_TRACK_LOST - -// C++17 does not support in place initializers of bit values, thus a constructor zeroing the bits is provided. -struct SupportElementStateBits { - SupportElementStateBits() : - to_buildplate(false), - to_model_gracious(false), - use_min_xy_dist(false), - supports_roof(false), - can_use_safe_radius(false), - skip_ovalisation(false), -#ifdef TREE_SUPPORTS_TRACK_LOST - lost(false), - verylost(false), -#endif // TREE_SUPPORTS_TRACK_LOST - deleted(false), - marked(false) - {} - +/*! + * \brief Lazily generates tree guidance volumes. + * + * \warning This class is not currently thread-safe and should not be accessed in OpenMP blocks + */ +class TreeSupportData +{ +public: + TreeSupportData() = default; /*! - * \brief The element trys to reach the buildplate + * \brief Construct the TreeSupportData object + * + * \param xy_distance The required clearance between the model and the + * tree branches. + * \param max_move The maximum allowable movement between nodes on + * adjacent layers + * \param radius_sample_resolution Sample size used to round requested node radii. + * \param collision_resolution */ - bool to_buildplate : 1; + TreeSupportData(const PrintObject& object, coordf_t max_move, coordf_t radius_sample_resolution, coordf_t collision_resolution); + + TreeSupportData(TreeSupportData&&) = default; + TreeSupportData& operator=(TreeSupportData&&) = default; + + TreeSupportData(const TreeSupportData&) = delete; + TreeSupportData& operator=(const TreeSupportData&) = delete; /*! - * \brief Will the branch be able to rest completely on a flat surface, be it buildplate or model ? + * \brief Creates the areas that have to be avoided by the tree's branches. + * + * The result is a 2D area that would cause nodes of radius \p radius to + * collide with the model. + * + * \param radius The radius of the node of interest + * \param layer The layer of interest + * \return Polygons object */ - bool to_model_gracious : 1; + const ExPolygons& get_collision(coordf_t radius, size_t layer_idx) const; /*! - * \brief Whether the min_xy_distance can be used to get avoidance or similar. Will only be true if support_xy_overrides_z=Z overrides X/Y. + * \brief Creates the areas that have to be avoided by the tree's branches + * in order to reach the build plate. + * + * The result is a 2D area that would cause nodes of radius \p radius to + * collide with the model or be unable to reach the build platform. + * + * The input collision areas are inset by the maximum move distance and + * propagated upwards. + * + * \param radius The radius of the node of interest + * \param layer The layer of interest + * \return Polygons object */ - bool use_min_xy_dist : 1; + const ExPolygons& get_avoidance(coordf_t radius, size_t layer_idx, int recursions=0) const; + Polygons get_contours(size_t layer_nr) const; + Polygons get_contours_with_holes(size_t layer_nr) const; + + std::vector layer_heights; + + std::vector tree_nodes; + +private: /*! - * \brief True if this Element or any parent (element above) provides support to a support roof. + * \brief Convenience typedef for the keys to the caches */ - bool supports_roof : 1; + struct RadiusLayerPair { + coordf_t radius; + size_t layer_nr; + int recursions; + + }; + struct RadiusLayerPairEquality { + constexpr bool operator()(const RadiusLayerPair& _Left, const RadiusLayerPair& _Right) const { + return _Left.radius == _Right.radius && _Left.layer_nr == _Right.layer_nr; + } + }; + struct RadiusLayerPairHash { + size_t operator()(const RadiusLayerPair& elem) const { + return std::hash()(elem.radius) ^ std::hash()(elem.layer_nr * 7919); + } + }; /*! - * \brief An influence area is considered safe when it can use the holefree avoidance <=> It will not have to encounter holes on its way downward. + * \brief Round \p radius upwards to a multiple of m_radius_sample_resolution + * + * \param radius The radius of the node of interest */ - bool can_use_safe_radius : 1; + coordf_t ceil_radius(coordf_t radius) const; /*! - * \brief Skip the ovalisation to parent and children when generating the final circles. + * \brief Calculate the collision areas at the radius and layer indicated + * by \p key. + * + * \param key The radius and layer of the node of interest */ - bool skip_ovalisation : 1; - -#ifdef TREE_SUPPORTS_TRACK_LOST - // Likely a lost branch, debugging information. - bool lost : 1; - bool verylost : 1; -#endif // TREE_SUPPORTS_TRACK_LOST + const ExPolygons& calculate_collision(const RadiusLayerPair& key) const; - // Not valid anymore, to be deleted. - bool deleted : 1; + /*! + * \brief Calculate the avoidance areas at the radius and layer indicated + * by \p key. + * + * \param key The radius and layer of the node of interest + */ + const ExPolygons& calculate_avoidance(const RadiusLayerPair& key) const; - // General purpose flag marking a visited element. - bool marked : 1; -}; -struct SupportElementState : public SupportElementStateBits -{ +public: + bool is_slim = false; /*! - * \brief The layer this support elements wants reach + * \brief The required clearance between the model and the tree branches */ - LayerIndex target_height; + coordf_t m_xy_distance; /*! - * \brief The position this support elements wants to support on layer=target_height + * \brief The maximum distance that the centrepoint of a tree branch may + * move in consequtive layers */ - Point target_position; + coordf_t m_max_move; /*! - * \brief The next position this support elements wants to reach. NOTE: This is mainly a suggestion regarding direction inside the influence area. + * \brief Sample resolution for radius values. + * + * The radius will be rounded (upwards) to multiples of this value before + * calculations are done when collision, avoidance and internal model + * Polygons are requested. */ - Point next_position; + coordf_t m_radius_sample_resolution; /*! - * \brief The next height this support elements wants to reach + * \brief Storage for layer outlines of the meshes. */ - LayerIndex layer_idx; + std::vector m_layer_outlines; + + // union contours of all layers below + std::vector m_layer_outlines_below; /*! - * \brief The Effective distance to top of this element regarding radius increases and collision calculations. + * \brief Caches for the collision, avoidance and internal model polygons + * at given radius and layer indices. + * + * These are mutable to allow modification from const function. This is + * generally considered OK as the functions are still logically const + * (ie there is no difference in behaviour for the user betweeen + * calculating the values each time vs caching the results). + * + * coconut: previously stl::unordered_map is used which seems problematic with tbb::parallel_for. + * So we change to tbb::concurrent_unordered_map */ - uint32_t effective_radius_height; + mutable tbb::concurrent_unordered_map m_collision_cache; + mutable tbb::concurrent_unordered_map m_avoidance_cache; + + friend TreeSupport; +}; +struct LineHash { + size_t operator()(const Line& line) const { + return (std::hash()(line.a(0)) ^ std::hash()(line.b(1))) * 102 + + (std::hash()(line.a(1)) ^ std::hash()(line.b(0))) * 10222; + } +}; + +/*! + * \brief Generates a tree structure to support your models. + */ +class TreeSupport +{ +public: /*! - * \brief The amount of layers this element is below the topmost layer of this branch. + * \brief Creates an instance of the tree support generator. + * + * \param storage The data storage to get global settings from. */ - uint32_t distance_to_top; + TreeSupport(PrintObject& object, const SlicingParameters &slicing_params); /*! - * \brief The resulting center point around which a circle will be drawn later. - * Will be set by setPointsOnAreas + * \brief Create the areas that need support. + * + * These areas are stored inside the given SliceDataStorage object. + * \param storage The data storage where the mesh data is gotten from and + * where the resulting support areas are stored. */ - Point result_on_layer { std::numeric_limits::max(), std::numeric_limits::max() }; - bool result_on_layer_is_set() const { return this->result_on_layer != Point{ std::numeric_limits::max(), std::numeric_limits::max() }; } - void result_on_layer_reset() { this->result_on_layer = Point{ std::numeric_limits::max(), std::numeric_limits::max() }; } + void generate(); + + void detect_overhangs(bool detect_first_sharp_tail_only=false); + + enum NodeType { + eCircle, + eSquare, + ePolygon + }; + /*! - * \brief The amount of extra radius we got from merging branches that could have reached the buildplate, but merged with ones that can not. + * \brief Represents the metadata of a node in the tree. */ - coord_t increased_to_model_radius; // how much to model we increased only relevant for merging + struct Node + { + static constexpr Node* NO_PARENT = nullptr; + + Node() + : distance_to_top(0) + , position(Point(0, 0)) + , obj_layer_nr(0) + , support_roof_layers_below(0) + , support_floor_layers_above(0) + , to_buildplate(true) + , parent(nullptr) + , print_z(0.0) + , height(0.0) + {} + // when dist_mm_to_top_==0, new node's dist_mm_to_top=parent->dist_mm_to_top + parent->height; + Node(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, Node* parent, + coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_=0) + : distance_to_top(distance_to_top) + , position(position) + , obj_layer_nr(obj_layer_nr) + , support_roof_layers_below(support_roof_layers_below) + , support_floor_layers_above(0) + , to_buildplate(to_buildplate) + , parent(parent) + , print_z(print_z_) + , height(height_) + , dist_mm_to_top(dist_mm_to_top_) + { + if (parent) { + type = parent->type; + overhang = parent->overhang; + if (dist_mm_to_top==0) + dist_mm_to_top = parent->dist_mm_to_top + parent->height; + parent->child = this; + for (auto& neighbor : parent->merged_neighbours) + neighbor->child = this; + } + } + +#ifdef DEBUG // Clear the delete node's data so if there's invalid access after, we may get a clue by inspecting that node. + ~Node() + { + parent = nullptr; + merged_neighbours.clear(); + } +#endif // DEBUG + + /*! + * \brief The number of layers to go to the top of this branch. + * Negative value means it's a virtual node between support and overhang, which doesn't need to be extruded. + */ + int distance_to_top; + coordf_t dist_mm_to_top = 0; // dist to bottom contact in mm + + /*! + * \brief The position of this node on the layer. + */ + Point position; + Point movement; // movement towards neighbor center or outline + mutable double radius = 0.0; + mutable double max_move_dist = 0.0; + NodeType type = eCircle; + bool is_merged = false; // this node is generated by merging upper nodes + bool is_corner = false; + bool is_processed = false; + const ExPolygon *overhang = nullptr; // when type==ePolygon, set this value to get original overhang area + + /*! + * \brief The direction of the skin lines above the tip of the branch. + * + * This determines in which direction we should reduce the width of the + * branch. + */ + bool skin_direction; + + /*! + * \brief The number of support roof layers below this one. + * + * When a contact point is created, it is determined whether the mesh + * needs to be supported with support roof or not, since that is a + * per-mesh setting. This is stored in this variable in order to track + * how far we need to extend that support roof downwards. + */ + int support_roof_layers_below; + int support_floor_layers_above; + int obj_layer_nr; + + /*! + * \brief Whether to try to go towards the build plate. + * + * If the node is inside the collision areas, it has no choice but to go + * towards the model. If it is not inside the collision areas, it must + * go towards the build plate to prevent a scar on the surface. + */ + bool to_buildplate; + + /*! + * \brief The originating node for this one, one layer higher. + * + * In order to prune branches that can't have any support (because they + * can't be on the model and the path to the buildplate isn't clear), + * the entire branch needs to be known. + */ + Node *parent; + Node *child = nullptr; + + /*! + * \brief All neighbours (on the same layer) that where merged into this node. + * + * In order to prune branches that can't have any support (because they + * can't be on the model and the path to the buildplate isn't clear), + * the entire branch needs to be known. + */ + std::list merged_neighbours; + + coordf_t print_z; + coordf_t height; + + bool operator==(const Node& other) const + { + return position == other.position; + } + }; + + struct SupportParams + { + Flow first_layer_flow; + Flow support_material_flow; + Flow support_material_interface_flow; + Flow support_material_bottom_interface_flow; + coordf_t support_extrusion_width; + // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? + bool can_merge_support_regions; + + coordf_t support_layer_height_min; + // coordf_t support_layer_height_max; + + coordf_t gap_xy; + + float base_angle; + float interface_angle; + coordf_t interface_spacing; + coordf_t interface_density; + coordf_t support_spacing; + coordf_t support_density; + + InfillPattern base_fill_pattern; + InfillPattern interface_fill_pattern; + InfillPattern contact_fill_pattern; + bool with_sheath; + const double thresh_big_overhang = SQ(scale_(10)); + }; + + int avg_node_per_layer = 0; + float nodes_angle = 0; + bool has_overhangs = false; + bool has_sharp_tails = false; + bool has_cantilever = false; + double max_cantilever_dist = 0; + SupportType support_type; + SupportMaterialStyle support_style; + + std::unique_ptr generator; + std::unordered_map printZ_to_lightninglayer; +private: /*! - * \brief Counter about the times the elephant foot was increased. Can be fractions for merge reasons. + * \brief Generator for model collision, avoidance and internal guide volumes + * + * Lazily computes volumes as needed. + * \warning This class is NOT currently thread-safe and should not be accessed in OpenMP blocks */ - double elephant_foot_increases; + std::shared_ptr m_ts_data; + PrintObject *m_object; + const PrintObjectConfig *m_object_config; + SlicingParameters m_slicing_params; + // Various precomputed support parameters to be shared with external functions. + SupportParams m_support_params; + size_t m_raft_layers = 0; + size_t m_highest_overhang_layer = 0; + std::vector> m_spanning_trees; + std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; + coordf_t MAX_BRANCH_RADIUS = 10.0; + coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; + coordf_t MIN_BRANCH_RADIUS = 0.5; + float tree_support_branch_diameter_angle = 5.0; + bool is_strong = false; + bool is_slim = false; + bool with_infill = false; + /*! - * \brief The element tries to not move until this dtt is reached, is set to 0 if the element had to move. + * \brief Polygons representing the limits of the printable area of the + * machine */ - uint32_t dont_move_until; + ExPolygon m_machine_border; /*! - * \brief Settings used to increase the influence area to its current state. + * \brief Draws circles around each node of the tree into the final support. + * + * This also handles the areas that have to become support roof, support + * bottom, the Z distances, etc. + * + * \param storage[in, out] The settings storage to get settings from and to + * save the resulting support polygons to. + * \param contact_nodes The nodes to draw as support. */ - AreaIncreaseSettings last_area_increase; + void draw_circles(const std::vector>& contact_nodes); /*! - * \brief Amount of roof layers that were not yet added, because the branch needed to move. + * \brief Drops down the nodes of the tree support towards the build plate. + * + * This is where the cleverness of tree support comes in: The nodes stay on + * their 2D layers but on the next layer they are slightly shifted. This + * causes them to move towards each other as they are copied to lower layers + * which ultimately results in a 3D tree. + * + * \param contact_nodes[in, out] The nodes in the space that need to be + * dropped down. The nodes are dropped to lower layers inside the same + * vector of layers. */ - uint32_t missing_roof_layers; - - // called by increase_single_area() and increaseAreas() - [[nodiscard]] static SupportElementState propagate_down(const SupportElementState &src) - { - SupportElementState dst{ src }; - ++ dst.distance_to_top; - -- dst.layer_idx; - // set to invalid as we are a new node on a new layer - dst.result_on_layer_reset(); - dst.skip_ovalisation = false; - return dst; - } + void drop_nodes(std::vector> &contact_nodes); - [[nodiscard]] bool locked() const { return this->distance_to_top < this->dont_move_until; } -}; + void smooth_nodes(std::vector> &contact_nodes); -/*! - * \brief Get the Distance to top regarding the real radius this part will have. This is different from distance_to_top, which is can be used to calculate the top most layer of the branch. - * \param elem[in] The SupportElement one wants to know the effectiveDTT - * \return The Effective DTT. - */ -[[nodiscard]] inline size_t getEffectiveDTT(const TreeSupportSettings &settings, const SupportElementState &elem) -{ - return elem.effective_radius_height < settings.increase_radius_until_layer ? - (elem.distance_to_top < settings.increase_radius_until_layer ? elem.distance_to_top : settings.increase_radius_until_layer) : - elem.effective_radius_height; -} + void adjust_layer_heights(std::vector>& contact_nodes); -/*! - * \brief Get the Radius, that this element will have. - * \param elem[in] The Element. - * \return The radius the element has. - */ -[[nodiscard]] inline coord_t support_element_radius(const TreeSupportSettings &settings, const SupportElementState &elem) -{ - return settings.getRadius(getEffectiveDTT(settings, elem), elem.elephant_foot_increases); -} - -/*! - * \brief Get the collision Radius of this Element. This can be smaller then the actual radius, as the drawAreas will cut off areas that may collide with the model. - * \param elem[in] The Element. - * \return The collision radius the element has. - */ -[[nodiscard]] inline coord_t support_element_collision_radius(const TreeSupportSettings &settings, const SupportElementState &elem) -{ - return settings.getRadius(elem.effective_radius_height, elem.elephant_foot_increases); -} - -struct SupportElement -{ - using ParentIndices = -#ifdef NDEBUG - // To reduce memory allocation in release mode. - boost::container::small_vector; -#else // NDEBUG - // To ease debugging. - std::vector; -#endif // NDEBUG - -// SupportElement(const SupportElementState &state) : SupportElementState(state) {} - SupportElement(const SupportElementState &state, Polygons &&influence_area) : state(state), influence_area(std::move(influence_area)) {} - SupportElement(const SupportElementState &state, ParentIndices &&parents, Polygons &&influence_area) : - state(state), parents(std::move(parents)), influence_area(std::move(influence_area)) {} - - SupportElementState state; + /*! BBS: MusangKing: maximum layer height + * \brief Optimize the generation of tree support by pre-planning the layer_heights + * + */ + std::vector plan_layer_heights(std::vector> &contact_nodes); /*! - * \brief All elements in the layer above the current one that are supported by this element + * \brief Creates points where support contacts the model. + * + * A set of points is created for each layer. + * \param mesh The mesh to get the overhang areas to support of. + * \param contact_nodes[out] A vector of mappings from contact points to + * their tree nodes. + * \param collision_areas For every layer, the areas where a generated + * contact point would immediately collide with the model due to the X/Y + * distance. + * \return For each layer, a list of points where the tree should connect + * with the model. */ - ParentIndices parents; + void generate_contact_points(std::vector>& contact_nodes); /*! - * \brief The resulting influence area. - * Will only be set in the results of createLayerPathing, and will be nullptr inside! + * \brief Add a node to the next layer. + * + * If a node is already at that position in the layer, the nodes are merged. */ - Polygons influence_area; + void insert_dropped_node(std::vector& nodes_layer, Node* node); + void create_tree_support_layers(); + void generate_toolpaths(); + Polygons spanning_tree_to_polygon(const std::vector& spanning_trees, Polygons layer_contours, int layer_nr); + Polygons contact_nodes_to_polygon(const std::vector& contact_nodes, Polygons layer_contours, int layer_nr, std::vector& radiis, std::vector& is_interface); + coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); + coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor); + + // similar to SupportMaterial::trim_support_layers_by_object + Polygons get_trim_support_regions( + const PrintObject& object, + SupportLayer* support_layer_ptr, + const coordf_t gap_extra_above, + const coordf_t gap_extra_below, + const coordf_t gap_xy); }; -using SupportElements = std::deque; - -[[nodiscard]] inline coord_t support_element_radius(const TreeSupportSettings &settings, const SupportElement &elem) -{ - return support_element_radius(settings, elem.state); -} - -[[nodiscard]] inline coord_t support_element_collision_radius(const TreeSupportSettings &settings, const SupportElement &elem) -{ - return support_element_collision_radius(settings, elem.state); } -} // namespace FFFTreeSupport - -void fff_tree_support_generate(PrintObject &print_object, std::function throw_on_cancel = []{}); - -} // namespace Slic3r - -#endif /* slic3r_TreeSupport_hpp */ +#endif /* TREESUPPORT_H */ diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index ba3b1810ce9..8a471fb6e1e 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -7,22 +7,21 @@ // CuraEngine is released under the terms of the AGPLv3 or higher. #include "TreeSupport3D.hpp" -#include "AABBTreeIndirect.hpp" -#include "AABBTreeLines.hpp" -#include "BuildVolume.hpp" -#include "ClipperUtils.hpp" -#include "EdgeGrid.hpp" -#include "Fill/Fill.hpp" -#include "Layer.hpp" -#include "Print.hpp" -#include "MultiPoint.hpp" -#include "Polygon.hpp" -#include "Polyline.hpp" -#include "MutablePolygon.hpp" -#include "SupportMaterial.hpp" -#include "TriangleMeshSlicer.hpp" -#include "TreeSupport.hpp" -#include "I18N.hpp" +#include "TreeSupportCommon.hpp" +#include "SupportCommon.hpp" + +#include "../AABBTreeIndirect.hpp" +#include "../BuildVolume.hpp" +#include "../ClipperUtils.hpp" +#include "../EdgeGrid.hpp" +#include "../Fill/Fill.hpp" +#include "../Layer.hpp" +#include "../Print.hpp" +#include "../MultiPoint.hpp" +#include "../Polygon.hpp" +#include "../Polyline.hpp" +#include "../MutablePolygon.hpp" +#include "libslic3r.h" #include #include @@ -34,10 +33,7 @@ #include -#define TBB_PREVIEW_GLOBAL_CONTROL 1 -#include #include -#include #if defined(TREE_SUPPORT_SHOW_ERRORS) && defined(_WIN32) #define TREE_SUPPORT_SHOW_ERRORS_WIN32 @@ -46,16 +42,12 @@ #define TREE_SUPPORT_ORGANIC_NUDGE_NEW 1 #ifndef TREE_SUPPORT_ORGANIC_NUDGE_NEW - // Old version using OpenVDB, works but it is extremely slow for complex meshes. - #include "OpenVDBUtilsLegacy.hpp" - #include +// Old version using OpenVDB, works but it is extremely slow for complex meshes. +#include "../OpenVDBUtilsLegacy.hpp" +#include #endif // TREE_SUPPORT_ORGANIC_NUDGE_NEW -#ifndef _L -#define _L(s) Slic3r::I18N::translate(s) -#endif - - //#define TREESUPPORT_DEBUG_SVG +// #define TREESUPPORT_DEBUG_SVG namespace Slic3r { @@ -133,8 +125,6 @@ static inline void check_self_intersections(const ExPolygon &expoly, const std:: #endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 } -// static constexpr const auto tiny_area_threshold = sqr(scaled(0.001)); - static std::vector>> group_meshes(const Print &print, const std::vector &print_object_ids) { std::vector>> grouped_meshes; @@ -154,12 +144,6 @@ static std::vector>> group_me // as different settings in the same group may only occur in the tip, which uses the original settings objects from the meshes. for (size_t object_id : print_object_ids) { const PrintObject &print_object = *print.get_object(object_id); -#ifndef NDEBUG - const PrintObjectConfig &object_config = print_object.config(); -#endif // NDEBUG - // Support must be enabled and set to Tree style. - //assert(object_config.support_material); - //assert(object_config.support_material_style == smsTree || object_config.support_material_style == smsOrganic); bool found_existing_group = false; TreeSupportSettings next_settings{ TreeSupportMeshGroupSettings{ print_object }, print_object.slicing_parameters() }; @@ -218,7 +202,7 @@ static std::vector>> group_me const PrintConfig &print_config = print_object.print()->config(); const PrintObjectConfig &config = print_object.config(); - const bool support_auto = is_auto(config.support_type.value); + const bool support_auto = config.enable_support.value && is_auto(config.support_type.value); const int support_enforce_layers = config.enforce_support_layers.value; std::vector enforcers_layers{ print_object.slice_support_enforcers() }; std::vector blockers_layers{ print_object.slice_support_blockers() }; @@ -229,8 +213,7 @@ static std::vector>> group_me // +1 makes the threshold inclusive double tan_threshold = support_threshold_auto ? 0. : tan(M_PI * double(support_threshold + 1) / 180.); //FIXME this is a fudge constant! - double support_tree_tip_diameter = 0.8; - auto enforcer_overhang_offset = scaled(support_tree_tip_diameter); + auto enforcer_overhang_offset = scaled(config.tree_support_tip_diameter.value); size_t num_overhang_layers = support_auto ? num_object_layers : std::min(num_object_layers, std::max(size_t(support_enforce_layers), enforcers_layers.size())); tbb::parallel_for(tbb::blocked_range(1, num_overhang_layers), @@ -266,13 +249,17 @@ static std::vector>> group_me raw_overhangs = overhangs; raw_overhangs_calculated = true; } - if (! (enforced_layer || blockers_layers.empty() || blockers_layers[layer_id].empty())) - overhangs = diff(overhangs, blockers_layers[layer_id], ApplySafetyOffset::Yes); - //if (config.bridge_no_support) { - // for (const LayerRegion *layerm : current_layer.regions()) - // remove_bridges_from_contacts(print_config, lower_layer, *layerm, - // float(layerm->flow(frExternalPerimeter).scaled_width()), overhangs); - //} + if (! (enforced_layer || blockers_layers.empty() || blockers_layers[layer_id].empty())) { + Polygons &blocker = blockers_layers[layer_id]; + // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, + // which are not valid polygons, and will be removed by offset. union_ can make these polygons right. + overhangs = diff(overhangs, offset(union_(blocker), scale_(g_config_tree_support_collision_resolution)), ApplySafetyOffset::Yes); + } + if (config.bridge_no_support) { + for (const LayerRegion *layerm : current_layer.regions()) + remove_bridges_from_contacts(print_config, lower_layer, *layerm, + float(layerm->flow(frExternalPerimeter).scaled_width()), overhangs); + } } //check_self_intersections(overhangs, "generate_overhangs1"); if (! enforcers_layers.empty() && ! enforcers_layers[layer_id].empty()) { @@ -310,21 +297,49 @@ static std::vector>> group_me } }); +#if 0 + if (num_raft_layers > 0) { + const Layer &first_layer = *print_object.get_layer(0); + // Final overhangs. + Polygons overhangs = + // Don't apply blockes on raft layer. + //(! blockers_layers.empty() && ! blockers_layers[layer_id].empty() ? + // diff(first_layer.lslices, blockers_layers[layer_id], ApplySafetyOffset::Yes) : + to_polygons(first_layer.lslices); +#if 0 + if (! enforcers_layers.empty() && ! enforcers_layers[layer_id].empty()) { + if (Polygons enforced_overhangs = intersection(first_layer.lslices, enforcers_layers[layer_id] /*, ApplySafetyOffset::Yes */); + ! enforced_overhangs.empty()) { + //FIXME this is a hack to make enforcers work on steep overhangs. + //FIXME enforcer_overhang_offset is a fudge constant! + enforced_overhangs = offset(union_ex(enforced_overhangs), enforcer_overhang_offset); + overhangs = overhangs.empty() ? std::move(enforced_overhangs) : union_(overhangs, enforced_overhangs); + } + } +#endif + out[num_raft_layers] = std::move(overhangs); + throw_on_cancel(); + } +#endif + return out; } /*! * \brief Precalculates all avoidances, that could be required. + * + * \param storage[in] Background storage to access meshes. + * \param currently_processing_meshes[in] Indexes of all meshes that are processed in this iteration */ [[nodiscard]] static LayerIndex precalculate(const Print &print, const std::vector &overhangs, const TreeSupportSettings &config, const std::vector &object_ids, TreeModelVolumes &volumes, std::function throw_on_cancel) { // calculate top most layer that is relevant for support LayerIndex max_layer = 0; for (size_t object_id : object_ids) { - const PrintObject &print_object = *print.get_object(object_id); + const PrintObject &print_object = *print.get_object(object_id); const int num_raft_layers = int(config.raft_layers.size()); const int num_layers = int(print_object.layer_count()) + num_raft_layers; - int max_support_layer_id = 0; + int max_support_layer_id = 0; for (int layer_id = std::max(num_raft_layers, 1); layer_id < num_layers; ++ layer_id) if (! overhangs[layer_id].empty()) max_support_layer_id = layer_id; @@ -464,7 +479,7 @@ static std::optional> polyline_sample_next_point_at_dis { const double dist2 = sqr(dist); const auto dist2i = int64_t(dist2); - static constexpr const auto eps = scaled(0.01); + const auto eps = scaled(0.01); for (size_t i = start_idx + 1; i < polyline.size(); ++ i) { const Point p1 = polyline[i]; @@ -619,6 +634,7 @@ static std::optional> polyline_sample_next_point_at_dis * \return A Polygons object that represents the resulting infill lines. */ [[nodiscard]] static Polylines generate_support_infill_lines( + // Polygon to fill in with a zig-zag pattern supporting an overhang. const Polygons &polygon, const SupportParameters &support_params, bool roof, LayerIndex layer_idx, coord_t support_infill_distance) @@ -659,6 +675,9 @@ static std::optional> polyline_sample_next_point_at_dis append(lines, to_polylines(polygons)); return lines; #else +// const bool connected_zigzags = roof ? false : config.connect_zigzags; +// const int support_shift = roof ? 0 : support_infill_distance / 2; + const Flow &flow = roof ? support_params.support_material_interface_flow : support_params.support_material_flow; std::unique_ptr filler = std::unique_ptr(Fill::new_from_type(roof ? support_params.interface_fill_pattern : support_params.base_fill_pattern)); FillParams fill_params; @@ -758,7 +777,7 @@ static std::optional> polyline_sample_next_point_at_dis Polygons collision_trimmed_buffer; auto collision_trimmed = [&collision_trimmed_buffer, &collision, &ret, distance]() -> const Polygons& { if (collision_trimmed_buffer.empty() && ! collision.empty()) - collision_trimmed_buffer = ClipperUtils::clip_clipper_polygons_with_subject_bbox(collision, get_extents(ret).inflated(std::max(0, distance) + SCALED_EPSILON)); + collision_trimmed_buffer = ClipperUtils::clip_clipper_polygons_with_subject_bbox(collision, get_extents(ret).inflated(std::max((coord_t)0, distance) + SCALED_EPSILON)); return collision_trimmed_buffer; }; @@ -795,13 +814,13 @@ static std::optional> polyline_sample_next_point_at_dis ret = diff(offset(ret, step_size, ClipperLib::jtRound, scaled(0.01)), collision_trimmed()); // ensure that if many offsets are done the performance does not suffer extremely by the new vertices of jtRound. if (i % 10 == 7) - ret = polygons_simplify(ret, scaled(0.015)); + ret = polygons_simplify(ret, scaled(0.015), polygons_strictly_simple); } // offset the remainder float last_offset = distance - steps * step_size; if (last_offset > SCALED_EPSILON) ret = offset(ret, distance - steps * step_size, ClipperLib::jtRound, scaled(0.01)); - ret = polygons_simplify(ret, scaled(0.015)); + ret = polygons_simplify(ret, scaled(0.015), polygons_strictly_simple); if (do_final_difference) ret = diff(ret, collision_trimmed()); @@ -822,6 +841,9 @@ class RichInterfacePlacer : public InterfacePlacer { { m_already_inserted.assign(num_support_layers, {}); this->min_xy_dist = this->config.xy_distance > this->config.xy_min_distance; + m_base_radius = scaled(0.01); + m_base_circle = Polygon{ make_circle(m_base_radius, SUPPORT_TREE_CIRCLE_RESOLUTION) }; + } const TreeModelVolumes &volumes; // Radius of the tree tip is large enough to be covered by an interface. @@ -957,15 +979,14 @@ class RichInterfacePlacer : public InterfacePlacer { std::vector &move_bounds; // Temps - static constexpr const auto m_base_radius = scaled(0.01); - const Polygon m_base_circle { make_circle(m_base_radius, SUPPORT_TREE_CIRCLE_RESOLUTION) }; + coord_t m_base_radius; + Polygon m_base_circle; // Mutexes, guards std::mutex m_mutex_movebounds; std::vector> m_already_inserted; }; - int generate_raft_contact( const PrintObject &print_object, const TreeSupportSettings &config, @@ -982,7 +1003,7 @@ int generate_raft_contact( // Create the raft contact layer. const ExPolygons &lslices = print_object.get_layer(0)->lslices; double expansion = print_object.config().raft_expansion.value; - interface_placer.add_roof_unguarded(expansion > 0 ? offset(lslices, scaled(expansion)) : to_polygons(lslices), raft_contact_layer_idx, 0); + interface_placer.add_roof_unguarded(expansion > 0 ? expand(lslices, scaled(expansion)) : to_polygons(lslices), raft_contact_layer_idx, 0); } return raft_contact_layer_idx; } @@ -1051,7 +1072,7 @@ void finalize_raft_contact( // roofs aka interface layers by the tool path generator. void sample_overhang_area( // Area to support - Polygons&& overhang_area, + Polygons &&overhang_area, // If true, then the overhang_area is likely large and wide, thus it is worth to try // to cover it with continuous interfaces supported by zig-zag patterned tree tips. const bool large_horizontal_roof, @@ -1062,9 +1083,9 @@ void sample_overhang_area( // const coord_t connect_length, // Configuration classes - const TreeSupportMeshGroupSettings& mesh_group_settings, + const TreeSupportMeshGroupSettings &mesh_group_settings, // Configuration & Output - RichInterfacePlacer& interface_placer) + RichInterfacePlacer &interface_placer) { // Assumption is that roof will support roof further up to avoid a lot of unnecessary branches. Each layer down it is checked whether the roof area // is still large enough to be a roof and aborted as soon as it is not. This part was already reworked a few times, and there could be an argument @@ -1073,13 +1094,13 @@ void sample_overhang_area( // as the pattern may be different one layer below. Same with calculating which points are now no longer being generated as result from // a decreasing roof, as there is no guarantee that a line will be above these points. Implementing a separate roof support behavior // for each pattern harms maintainability as it very well could be >100 LOC - auto generate_roof_lines = [&interface_placer, &mesh_group_settings](const Polygons& area, LayerIndex layer_idx) -> Polylines { + auto generate_roof_lines = [&interface_placer, &mesh_group_settings](const Polygons &area, LayerIndex layer_idx) -> Polylines { return generate_support_infill_lines(area, interface_placer.support_parameters, true, layer_idx, mesh_group_settings.support_roof_line_distance); - }; + }; LineInformations overhang_lines; // Track how many top contact / interface layers were already generated. - size_t dtt_roof = 0; + size_t dtt_roof = 0; size_t layer_generation_dtt = 0; if (large_horizontal_roof) { @@ -1088,12 +1109,12 @@ void sample_overhang_area( // To catch these cases the added roofs are saved to be evaluated later. std::vector added_roofs(num_support_roof_layers); Polygons last_overhang = overhang_area; - for (dtt_roof = 0; dtt_roof < num_support_roof_layers && layer_idx - dtt_roof >= 1; ++dtt_roof) { + for (dtt_roof = 0; dtt_roof < num_support_roof_layers && layer_idx - dtt_roof >= 1; ++ dtt_roof) { // here the roof is handled. If roof can not be added the branches will try to not move instead Polygons forbidden_next; { const bool min_xy_dist = interface_placer.config.xy_distance > interface_placer.config.xy_min_distance; - const Polygons& forbidden_next_raw = interface_placer.config.support_rests_on_model ? + const Polygons &forbidden_next_raw = interface_placer.config.support_rests_on_model ? interface_placer.volumes.getCollision(interface_placer.config.getRadius(0), layer_idx - (dtt_roof + 1), min_xy_dist) : interface_placer.volumes.getAvoidance(interface_placer.config.getRadius(0), layer_idx - (dtt_roof + 1), TreeModelVolumes::AvoidanceType::Fast, false, min_xy_dist); // prevent rounding errors down the line @@ -1109,14 +1130,14 @@ void sample_overhang_area( overhang_lines = split_lines( convert_lines_to_internal(interface_placer.volumes, interface_placer.config, ensure_maximum_distance_polyline(generate_roof_lines(last_overhang, layer_idx - dtt_before), connect_length, 1), layer_idx - dtt_before), - [&interface_placer, layer_idx, dtt_before](const std::pair& p) - { return evaluate_point_for_next_layer_function(interface_placer.volumes, interface_placer.config, layer_idx - dtt_before, p); }) + [&interface_placer, layer_idx, dtt_before](const std::pair &p) + { return evaluate_point_for_next_layer_function(interface_placer.volumes, interface_placer.config, layer_idx - dtt_before, p); }) .first; } break; } added_roofs[dtt_roof] = overhang_area; - last_overhang = std::move(overhang_area); + last_overhang = std::move(overhang_area); overhang_area = std::move(overhang_area_next); } @@ -1139,26 +1160,26 @@ void sample_overhang_area( // support_line_width to form a line here as otherwise most will be unsupported. Technically this violates branch distance, but not only is this the only reasonable choice, // but it ensures consistant behaviour as some infill patterns generate each line segment as its own polyline part causing a similar line forming behaviour. // This is not doen when a roof is above as the roof will support the model and the trees only need to support the roof - bool supports_roof = dtt_roof > 0; - bool continuous_tips = !supports_roof && large_horizontal_roof; + bool supports_roof = dtt_roof > 0; + bool continuous_tips = ! supports_roof && large_horizontal_roof; Polylines polylines = ensure_maximum_distance_polyline( generate_support_infill_lines(overhang_area, interface_placer.support_parameters, supports_roof, layer_idx - layer_generation_dtt, supports_roof ? mesh_group_settings.support_roof_line_distance : mesh_group_settings.support_tree_branch_distance), continuous_tips ? interface_placer.config.min_radius / 2 : connect_length, 1); size_t point_count = 0; - for (const Polyline& poly : polylines) + for (const Polyline &poly : polylines) point_count += poly.size(); const size_t min_support_points = std::max(coord_t(1), std::min(coord_t(3), coord_t(total_length(overhang_area) / connect_length))); if (point_count <= min_support_points) { // add the outer wall (of the overhang) to ensure it is correct supported instead. Try placing the support points in a way that they fully support the outer wall, instead of just the with half of the the support line width. // I assume that even small overhangs are over one line width wide, so lets try to place the support points in a way that the full support area generated from them - // will support the overhang (if this is not done it may only be half). This WILL NOT be the case when supporting an angle of about < 60 degrees so there is a fallback, + // will support the overhang (if this is not done it may only be half). This WILL NOT be the case when supporting an angle of about < 60� so there is a fallback, // as some support is better than none. - Polygons reduced_overhang_area = offset(union_ex(overhang_area), -interface_placer.config.support_line_width / 2.2, jtMiter, 1.2); + Polygons reduced_overhang_area = offset(union_ex(overhang_area), - interface_placer.config.support_line_width / 2.2, jtMiter, 1.2); polylines = ensure_maximum_distance_polyline( to_polylines( - !reduced_overhang_area.empty() && - area(offset(diff_ex(overhang_area, reduced_overhang_area), std::max(interface_placer.config.support_line_width, connect_length), jtMiter, 1.2)) < sqr(scaled(0.001)) ? + ! reduced_overhang_area.empty() && + area(offset(diff_ex(overhang_area, reduced_overhang_area), std::max(interface_placer.config.support_line_width, connect_length), jtMiter, 1.2)) < sqr(scaled(0.001)) ? reduced_overhang_area : overhang_area), connect_length, min_support_points); @@ -1187,16 +1208,6 @@ void sample_overhang_area( } } -inline SupportGeneratorLayer& layer_allocate( - SupportGeneratorLayerStorage& layer_storage, - SupporLayerType layer_type, - const SlicingParameters &slicing_params, - size_t layer_idx) -{ - auto& layer = layer_storage.allocate(layer_type); - return layer_initialize(layer, layer_type, slicing_params, layer_idx); -} - /*! * \brief Creates the initial influence areas (that can later be propagated down) by placing them below the overhang. * @@ -1206,7 +1217,7 @@ inline SupportGeneratorLayer& layer_allocate( * \param move_bounds[out] Storage for the influence areas. * \param storage[in] Background storage, required for adding roofs. */ -void generate_initial_areas( +static void generate_initial_areas( const PrintObject &print_object, const TreeModelVolumes &volumes, const TreeSupportSettings &config, @@ -1218,6 +1229,7 @@ void generate_initial_areas( using AvoidanceType = TreeModelVolumes::AvoidanceType; TreeSupportMeshGroupSettings mesh_group_settings(print_object); + // To ensure z_distance_top_layers are left empty between the overhang (zeroth empty layer), the support has to be added z_distance_top_layers+1 layers below const size_t z_distance_delta = config.z_distance_top_layers + 1; const bool min_xy_dist = config.xy_distance > config.xy_min_distance; @@ -1241,7 +1253,7 @@ void generate_initial_areas( //FIXME There is no account for the width of the collision regions. const coord_t extra_outset = std::max(coord_t(0), config.min_radius - config.support_line_width / 2) + (min_xy_dist ? config.support_line_width / 2 : 0) //FIXME this is a heuristic value for support enforcers to work. -// + 10 * mesh_config.support_line_width; +// + 10 * config.support_line_width; ; const size_t num_support_roof_layers = mesh_group_settings.support_roof_layers; const bool roof_enabled = num_support_roof_layers > 0; @@ -1254,15 +1266,13 @@ void generate_initial_areas( coord_t max_overhang_insert_lag = 0; if (config.z_distance_top_layers > 0) { max_overhang_insert_lag = 2 * config.z_distance_top_layers; - - //FIXME if (mesh_group_settings.support_angle > EPSILON && mesh_group_settings.support_angle < 0.5 * M_PI - EPSILON) { //FIXME mesh_group_settings.support_angle does not apply to enforcers and also it does not apply to automatic support angle (by half the external perimeter width). - // take the least restrictive avoidance possible + //used by max_overhang_insert_lag, only if not min_xy_dist. const auto max_overhang_speed = coord_t(tan(mesh_group_settings.support_angle) * config.layer_height); max_overhang_insert_lag = std::max(max_overhang_insert_lag, round_up_divide(config.xy_distance, max_overhang_speed / 2)); - } } + } size_t num_support_layers; int raft_contact_layer_idx; @@ -1387,6 +1397,7 @@ void generate_initial_areas( throw_on_cancel(); if (roof_enabled) { + // Try to support the overhangs by dense interfaces for num_support_roof_layers, cover the bottom most interface with tree tips. static constexpr const coord_t support_roof_offset = 0; Polygons overhang_roofs = safe_offset_inc(overhang_raw, support_roof_offset, relevant_forbidden, config.min_radius * 2 + config.xy_min_distance, 0, 1); if (mesh_group_settings.minimum_support_area > 0) @@ -1403,7 +1414,6 @@ void generate_initial_areas( // or roof is enabled and these are the thin overhangs at object slopes (not horizontal overhangs). if (mesh_group_settings.minimum_support_area > 0) remove_small(overhang_regular, mesh_group_settings.minimum_support_area); - for (ExPolygon &support_part : union_ex(overhang_regular)) { sample_overhang_area(to_polygons(std::move(support_part)), false, layer_idx, num_support_roof_layers, connect_length, @@ -1565,6 +1575,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di current_elem.effective_radius_height += 1; coord_t radius = support_element_collision_radius(config, current_elem); + const auto _tiny_area_threshold = tiny_area_threshold(); if (settings.move) { increased = relevant_offset; if (overspeed > 0) { @@ -1578,14 +1589,14 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di } if (settings.no_error && settings.move) // as ClipperLib::jtRound has to be used for offsets this simplify is VERY important for performance. - polygons_simplify(increased, scaled(0.025)); + polygons_simplify(increased, scaled(0.025), polygons_strictly_simple); } else // if no movement is done the areas keep parent area as no move == offset(0) increased = parent.influence_area; if (mergelayer || current_elem.to_buildplate) { to_bp_data = safe_union(diff_clipped(increased, volumes.getAvoidance(radius, layer_idx - 1, settings.type, false, settings.use_min_distance))); - if (! current_elem.to_buildplate && area(to_bp_data) > tiny_area_threshold) { + if (! current_elem.to_buildplate && area(to_bp_data) > _tiny_area_threshold) { // mostly happening in the tip, but with merges one should check every time, just to be sure. current_elem.to_buildplate = true; // sometimes nodes that can reach the buildplate are marked as cant reach, tainting subtrees. This corrects it. BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong to model value on layer " << layer_idx - 1 << " targeting " << @@ -1597,18 +1608,19 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di to_model_data = safe_union(diff_clipped(increased, volumes.getAvoidance(radius, layer_idx - 1, settings.type, true, settings.use_min_distance))); if (!current_elem.to_model_gracious) { - if (mergelayer && area(to_model_data) >= tiny_area_threshold) { + if (mergelayer && area(to_model_data) >= _tiny_area_threshold) { current_elem.to_model_gracious = true; BOOST_LOG_TRIVIAL(debug) << "Corrected taint leading to a wrong non gracious value on layer " << layer_idx - 1 << " targeting " << current_elem.target_height << " with radius " << radius; } else + // Cannot route to gracious areas. Push the tree away from object and route it down anyways. to_model_data = safe_union(diff_clipped(increased, volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance))); } } check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; - if (settings.increase_radius && area(check_layer_data) > tiny_area_threshold) { + if (settings.increase_radius && area(check_layer_data) > _tiny_area_threshold) { auto validWithRadius = [&](coord_t next_radius) { if (volumes.ceilRadius(next_radius, settings.use_min_distance) <= volumes.ceilRadius(radius, settings.use_min_distance)) return true; @@ -1624,7 +1636,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di volumes.getAvoidance(next_radius, layer_idx - 1, settings.type, true, settings.use_min_distance) : volumes.getCollision(next_radius, layer_idx - 1, settings.use_min_distance)); Polygons check_layer_data_2 = current_elem.to_buildplate ? to_bp_data_2 : to_model_data_2; - return area(check_layer_data_2) > tiny_area_threshold; + return area(check_layer_data_2) > _tiny_area_threshold; }; coord_t ceil_radius_before = volumes.ceilRadius(radius, settings.use_min_distance); @@ -1667,7 +1679,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di volumes.getCollision(radius, layer_idx - 1, settings.use_min_distance) )); check_layer_data = current_elem.to_buildplate ? to_bp_data : to_model_data; - if (area(check_layer_data) < tiny_area_threshold) { + if (area(check_layer_data) < _tiny_area_threshold) { BOOST_LOG_TRIVIAL(error) << "Lost area by doing catch up from " << ceil_radius_before << " to radius " << volumes.ceilRadius(support_element_collision_radius(config, current_elem), settings.use_min_distance); tree_supports_show_error("Area lost catching up radius. May not cause visible malformation."sv, true); @@ -1675,7 +1687,7 @@ static Point move_inside_if_outside(const Polygons &polygons, Point from, int di } } - return area(check_layer_data) > tiny_area_threshold ? std::optional(current_elem) : std::optional(); + return area(check_layer_data) > _tiny_area_threshold ? std::optional(current_elem) : std::optional(); } struct SupportElementInfluenceAreas { @@ -1936,6 +1948,10 @@ static void increase_areas_one_layer( " Distance to top: " << parent.state.distance_to_top << " Elephant foot increases " << parent.state.elephant_foot_increases << " use_min_xy_dist " << parent.state.use_min_xy_dist << " to buildplate " << parent.state.to_buildplate << " gracious " << parent.state.to_model_gracious << " safe " << parent.state.can_use_safe_radius << " until move " << parent.state.dont_move_until; tree_supports_show_error("Potentially lost branch!"sv, true); +#ifdef TREE_SUPPORTS_TRACK_LOST + if (result) + result->lost = true; +#endif // TREE_SUPPORTS_TRACK_LOST } else result = increase_single_area(volumes, config, settings, layer_idx, parent, settings.increase_speed == slow_speed ? offset_slow : offset_fast, to_bp_data, to_model_data, inc_wo_collision, 0, mergelayer); @@ -1990,7 +2006,11 @@ static void increase_areas_one_layer( // A point can be set on the top most tip layer (maybe more if it should not move for a few layers). parent.state.result_on_layer_reset(); parent.state.to_model_gracious = false; +#ifdef TREE_SUPPORTS_TRACK_LOST + parent.state.verylost = true; +#endif // TREE_SUPPORTS_TRACK_LOST } + throw_on_cancel(); } }, tbb::simple_partitioner()); @@ -2126,19 +2146,33 @@ static bool merge_influence_areas_two_elements( 2 * (config.xy_distance + smaller_collision_radius - 3), 0, 0), bigger); }; - Polygons intersect = intersect_small_with_bigger( +//#define TREES_MERGE_RATHER_LATER + Polygons intersect = +#ifdef TREES_MERGE_RATHER_LATER + intersection( +#else + intersect_small_with_bigger( +#endif merging_to_bp ? smaller_rad.areas.to_bp_areas : smaller_rad.areas.to_model_areas, merging_to_bp ? bigger_rad.areas.to_bp_areas : bigger_rad.areas.to_model_areas); + const auto _tiny_area_threshold = tiny_area_threshold(); // dont use empty as a line is not empty, but for this use-case it very well may be (and would be one layer down as union does not keep lines) // check if the overlap is large enough (Small ares tend to attract rounding errors in clipper). - if (area(intersect) <= tiny_area_threshold) + if (area(intersect) <= _tiny_area_threshold) return false; // While 0.025 was guessed as enough, i did not have reason to change it. - if (area(offset(intersect, scaled(-0.025), jtMiter, 1.2)) <= tiny_area_threshold) + if (area(offset(intersect, scaled(-0.025), jtMiter, 1.2)) <= _tiny_area_threshold) return false; +#ifdef TREES_MERGE_RATHER_LATER + intersect = + intersect_small_with_bigger( + merging_to_bp ? smaller_rad.areas.to_bp_areas : smaller_rad.areas.to_model_areas, + merging_to_bp ? bigger_rad.areas.to_bp_areas : bigger_rad.areas.to_model_areas); +#endif + // Do the actual merge now that the branches are confirmed to be able to intersect. // calculate which point is closest to the point of the last merge (or tip center if no merge above it has happened) // used at the end to estimate where to best place the branch on the bottom most layer @@ -2381,7 +2415,7 @@ static void merge_influence_areas( * * \param move_bounds[in,out] All currently existing influence areas */ -void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupportSettings &config, std::vector &move_bounds, std::function throw_on_cancel) +static void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupportSettings &config, std::vector &move_bounds, std::function throw_on_cancel) { #ifdef SLIC3R_TREESUPPORTS_PROGRESS const double data_size_inverse = 1 / double(move_bounds.size()); @@ -2393,6 +2427,7 @@ void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupportSett LayerIndex last_merge_layer_idx = move_bounds.size(); bool new_element = false; + const auto _tiny_area_threshold = tiny_area_threshold(); // Ensures at least one merge operation per 3mm height, 50 layers, 1 mm movement of slow speed or 5mm movement of fast speed (whatever is lowest). Values were guessed. size_t max_merge_every_x_layers = std::min(std::min(5000 / (std::max(config.maximum_move_distance, coord_t(100))), 1000 / std::max(config.maximum_move_distance_slow, coord_t(20))), 3000 / config.layer_height); @@ -2423,12 +2458,12 @@ void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupportSett // Place already fully constructed elements to the output, remove them from influence_areas. SupportElements &this_layer = move_bounds[layer_idx - 1]; influence_areas.erase(std::remove_if(influence_areas.begin(), influence_areas.end(), - [&this_layer, layer_idx](SupportElementMerging &elem) { + [&this_layer, &_tiny_area_threshold, layer_idx](SupportElementMerging &elem) { if (elem.areas.influence_areas.empty()) // This area was removed completely due to collisions. return true; if (elem.areas.to_bp_areas.empty() && elem.areas.to_model_areas.empty()) { - if (area(elem.areas.influence_areas) < tiny_area_threshold) { + if (area(elem.areas.influence_areas) < _tiny_area_threshold) { BOOST_LOG_TRIVIAL(error) << "Insert Error of Influence area bypass on layer " << layer_idx - 1; tree_supports_show_error("Insert error of area after bypassing merge.\n"sv, true); } @@ -2461,7 +2496,7 @@ void create_layer_pathing(const TreeModelVolumes &volumes, const TreeSupportSett for (SupportElementMerging &elem : influence_areas) if (! elem.areas.influence_areas.empty()) { Polygons new_area = safe_union(elem.areas.influence_areas); - if (area(new_area) < tiny_area_threshold) { + if (area(new_area) < _tiny_area_threshold) { BOOST_LOG_TRIVIAL(error) << "Insert Error of Influence area on layer " << layer_idx - 1 << ". Origin of " << elem.parents.size() << " areas. Was to bp " << elem.state.to_buildplate; tree_supports_show_error("Insert error of area after merge.\n"sv, true); } @@ -2623,7 +2658,7 @@ static void remove_deleted_elements(std::vector &move_bounds) * * \param move_bounds[in,out] All currently existing influence areas */ -void create_nodes_from_area( +static void create_nodes_from_area( const TreeModelVolumes &volumes, const TreeSupportSettings &config, std::vector &move_bounds, @@ -2634,8 +2669,8 @@ void create_nodes_from_area( { SupportElements *layer_above = move_bounds.size() > 1 ? &move_bounds[1] : nullptr; if (layer_above) { - for (SupportElement &elem : *layer_above) - elem.state.marked = false; + for (SupportElement &elem : *layer_above) + elem.state.marked = false; } for (SupportElement &init : move_bounds.front()) { init.state.result_on_layer = move_inside_if_outside(init.influence_area, init.state.next_position); @@ -2706,7 +2741,7 @@ void create_nodes_from_area( assert(radius_increase >= 0); double shift = (elem.state.result_on_layer - parent.state.result_on_layer).cast().norm(); //FIXME this assert fails a lot. Is it correct? - //assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); +// assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); } } } @@ -2731,7 +2766,7 @@ void create_nodes_from_area( assert(radius_increase >= 0); double shift = (elem.state.result_on_layer - parent.state.result_on_layer).cast().norm(); //FIXME this assert fails a lot. Is it correct? - //assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); +// assert(shift < radius_increase + 2. * config.maximum_move_distance_slow); } } } @@ -3026,6 +3061,7 @@ static void drop_non_gracious_areas( std::vector &support_layer_storage, std::function throw_on_cancel) { + const auto _tiny_area_threshold = tiny_area_threshold(); std::vector>> dropped_down_areas(linear_data.size()); tbb::parallel_for(tbb::blocked_range(0, linear_data.size()), [&](const tbb::blocked_range &range) { @@ -3034,7 +3070,7 @@ static void drop_non_gracious_areas( if (const DrawArea &draw_element = linear_data[idx]; ! draw_element.element->state.to_model_gracious && draw_element.child_element == nullptr) { Polygons rest_support; const LayerIndex layer_idx_first = draw_element.element->state.layer_idx - 1; - for (LayerIndex layer_idx = layer_idx_first; area(rest_support) > tiny_area_threshold && layer_idx >= 0; -- layer_idx) { + for (LayerIndex layer_idx = layer_idx_first; area(rest_support) > _tiny_area_threshold && layer_idx >= 0; -- layer_idx) { rest_support = diff_clipped(layer_idx == layer_idx_first ? draw_element.polygons : rest_support, volumes.getCollision(0, layer_idx, false)); dropped_down_areas[idx].emplace_back(layer_idx, rest_support); } @@ -3071,8 +3107,10 @@ static void finalize_interface_and_support_areas( std::function throw_on_cancel) { assert(std::all_of(bottom_contacts.begin(), bottom_contacts.end(), [](auto *p) { return p == nullptr; })); +// assert(std::all_of(top_contacts.begin(), top_contacts.end(), [](auto* p) { return p == nullptr; })); assert(std::all_of(intermediate_layers.begin(), intermediate_layers.end(), [](auto* p) { return p == nullptr; })); - InterfacePreference interface_pref = config.interface_preference; // InterfacePreference::SupportLinesOverwriteInterface; + + InterfacePreference interface_pref = config.interface_preference; // InterfacePreference::InterfaceAreaOverwritesSupport; #ifdef SLIC3R_TREESUPPORTS_PROGRESS double progress_total = TREE_PROGRESS_PRECALC_AVO + TREE_PROGRESS_PRECALC_COLL + TREE_PROGRESS_GENERATE_NODES + TREE_PROGRESS_AREA_CALC + TREE_PROGRESS_GENERATE_BRANCH_AREAS + TREE_PROGRESS_SMOOTH_BRANCH_AREAS; @@ -3083,8 +3121,9 @@ static void finalize_interface_and_support_areas( [&](const tbb::blocked_range &range) { for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { // Subtract support lines of the branches from the roof - SupportGeneratorLayer* support_roof = layer_idx < top_contacts.size() ? top_contacts[layer_idx] : nullptr; + SupportGeneratorLayer *support_roof = top_contacts[layer_idx]; Polygons support_roof_polygons; + if (Polygons &src = support_roof_storage[layer_idx]; ! src.empty()) { if (support_roof != nullptr && ! support_roof->polygons.empty()) { support_roof_polygons = union_(src, support_roof->polygons); @@ -3096,7 +3135,7 @@ static void finalize_interface_and_support_areas( support_roof->polygons.clear(); } - //assert(intermediate_layers[layer_idx] == nullptr); + assert(intermediate_layers[layer_idx] == nullptr); Polygons base_layer_polygons = std::move(support_layer_storage[layer_idx]); if (! base_layer_polygons.empty()) { @@ -3104,8 +3143,9 @@ static void finalize_interface_and_support_areas( base_layer_polygons = smooth_outward(union_(base_layer_polygons), config.support_line_width); //FIXME was .smooth(50); //smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : // simplify a bit, to ensure the output does not contain outrageous amounts of vertices. Should not be necessary, just a precaution. - base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution))); + base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution)), polygons_strictly_simple); } + if (! support_roof_polygons.empty() && ! base_layer_polygons.empty()) { // if (area(intersection(base_layer_polygons, support_roof_polygons)) > tiny_area_threshold) { @@ -3169,7 +3209,7 @@ static void finalize_interface_and_support_areas( } if (! floor_layer.empty()) { if (support_bottom == nullptr) - support_bottom = &layer_allocate(layer_storage, SupporLayerType::sltBottomContact, print_object.slicing_parameters(), config, layer_idx); + support_bottom = &layer_allocate(layer_storage, SupporLayerType::BottomContact, print_object.slicing_parameters(), config, layer_idx); support_bottom->polygons = union_(floor_layer, support_bottom->polygons); base_layer_polygons = diff_clipped(base_layer_polygons, offset(support_bottom->polygons, scaled(0.01), jtMiter, 1.2)); // Subtract the support floor from the normal support. } @@ -3177,11 +3217,11 @@ static void finalize_interface_and_support_areas( if (! support_roof_polygons.empty()) { if (support_roof == nullptr) - support_roof = top_contacts[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::sltTopContact, print_object.slicing_parameters(), config, layer_idx); + support_roof = top_contacts[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::TopContact, print_object.slicing_parameters(), config, layer_idx); support_roof->polygons = union_(support_roof_polygons); } if (! base_layer_polygons.empty()) { - SupportGeneratorLayer *base_layer = intermediate_layers[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::sltBase, print_object.slicing_parameters(), config, layer_idx); + SupportGeneratorLayer *base_layer = intermediate_layers[layer_idx] = &layer_allocate(layer_storage, SupporLayerType::Base, print_object.slicing_parameters(), config, layer_idx); base_layer->polygons = union_(base_layer_polygons); } @@ -3361,28 +3401,6 @@ static void draw_areas( "finalize_interface_and_support_areas " << dur_finalize << " ms"; } -#if 1 -// Test whether two circles, each on its own plane in 3D intersect. -// Circles are considered intersecting, if the lowest point on one circle is below the other circle's plane. -// Assumption: The two planes are oriented the same way. -static bool circles_intersect( - const Vec3d &p1, const Vec3d &n1, const double r1, - const Vec3d &p2, const Vec3d &n2, const double r2) -{ - assert(n1.dot(n2) >= 0); - - const Vec3d z = n1.cross(n2); - const Vec3d dir1 = z.cross(n1); - const Vec3d lowest_point1 = p1 + dir1 * (r1 / dir1.norm()); - assert(n2.dot(p1) >= n2.dot(lowest_point1)); - if (n2.dot(lowest_point1) <= 0) - return true; - const Vec3d dir2 = z.cross(n2); - const Vec3d lowest_point2 = p2 + dir2 * (r2 / dir2.norm()); - assert(n1.dot(p2) >= n1.dot(lowest_point2)); - return n1.dot(lowest_point2) <= 0; -} - template void triangulate_fan(indexed_triangle_set &its, int ifan, int ibegin, int iend) { @@ -3491,28 +3509,13 @@ static std::pair discretize_circle(const Vec3f ¢er, const Vec3f &n return { begin, int(pts.size()) }; } -// Discretize polygon, append to output vector, return ranges of indices of the points added. -static std::pair discretize_polygon(const Vec3f& center, const Polygons& polys, std::vector& pts) -{ - const Polygon& poly = polys.front(); - size_t nsteps = poly.size(); - // Discretize the circle. - int begin = int(pts.size()); - pts.reserve(pts.size() + nsteps); - for (int i = 0; i < nsteps; ++i) { - Vec3f pt(poly.points[i].x(), poly.points[i].y(), center.z()); - pts.emplace_back(pt); - } - return { begin, int(pts.size()) }; -} - // Returns Z span of the generated mesh. static std::pair extrude_branch( - const std::vector&path, - const TreeSupportSettings &config, - const SlicingParameters &slicing_params, - const std::vector &move_bounds, - indexed_triangle_set &result) + const std::vector &path, + const TreeSupportSettings &config, + const SlicingParameters &slicing_params, + const std::vector &move_bounds, + indexed_triangle_set &result) { Vec3d p1, p2, p3; Vec3d v1, v2; @@ -3521,6 +3524,10 @@ static std::pair extrude_branch( assert(path.size() >= 2); static constexpr const float eps = 0.015f; std::pair prev_strip; + +// char fname[2048]; +// static int irun = 0; + float zmin = 0; float zmax = 0; @@ -3542,23 +3549,15 @@ static std::pair extrude_branch( result.vertices.emplace_back((p1 - nprev * radius).cast()); zmin = result.vertices.back().z(); float angle = angle_step; - std::pair strip; - if (current.state.type == TreeSupport::NodeType::ePolygon) { - strip = discretize_polygon(p1.cast(), current.influence_area, result.vertices); + for (int i = 1; i < nsteps; ++ i, angle += angle_step) { + std::pair strip = discretize_circle((p1 - nprev * radius * cos(angle)).cast(), nprev.cast(), radius * sin(angle), eps, result.vertices); + if (i == 1) + triangulate_fan(result, ifan, strip.first, strip.second); + else + triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); +// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); +// its_write_obj(result, fname); prev_strip = strip; - strip = discretize_polygon(p2.cast(), current.influence_area, result.vertices); - } - else { - for (int i = 1; i < nsteps; ++i, angle += angle_step) { - strip = discretize_circle((p1 - nprev * radius * cos(angle)).cast(), nprev.cast(), radius * sin(angle), eps, result.vertices); - if (i == 1) - triangulate_fan(result, ifan, strip.first, strip.second); - else - triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); - // sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); - // its_write_obj(result, fname); - prev_strip = strip; - } } } if (ipath + 1 == path.size()) { @@ -3570,25 +3569,19 @@ static std::pair extrude_branch( auto nsteps = int(ceil(M_PI / (2. * angle_step))); angle_step = M_PI / (2. * nsteps); auto angle = float(M_PI / 2.); - std::pair strip; - if (current.state.type == TreeSupport::NodeType::ePolygon) { - strip = discretize_polygon(p2.cast(), current.influence_area, result.vertices); - } - else { - for (int i = 0; i < nsteps; ++i, angle -= angle_step) { - strip = discretize_circle((p2 + ncurrent * radius * cos(angle)).cast(), ncurrent.cast(), radius * sin(angle), eps, result.vertices); - triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); - // sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); - // its_write_obj(result, fname); - prev_strip = strip; - } - int ifan = int(result.vertices.size()); - result.vertices.emplace_back((p2 + ncurrent * radius).cast()); - zmax = result.vertices.back().z(); - triangulate_fan(result, ifan, prev_strip.first, prev_strip.second); - // sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); - // its_write_obj(result, fname); + for (int i = 0; i < nsteps; ++ i, angle -= angle_step) { + std::pair strip = discretize_circle((p2 + ncurrent * radius * cos(angle)).cast(), ncurrent.cast(), radius * sin(angle), eps, result.vertices); + triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); +// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); +// its_write_obj(result, fname); + prev_strip = strip; } + int ifan = int(result.vertices.size()); + result.vertices.emplace_back((p2 + ncurrent * radius).cast()); + zmax = result.vertices.back().z(); + triangulate_fan(result, ifan, prev_strip.first, prev_strip.second); +// sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++ irun); +// its_write_obj(result, fname); } else { const SupportElement &next = *path[ipath + 1]; assert(current.state.layer_idx + 1 == next.state.layer_idx); @@ -3596,13 +3589,7 @@ static std::pair extrude_branch( v2 = (p3 - p2).normalized(); ncurrent = (v1 + v2).normalized(); float radius = unscaled(support_element_radius(config, current)); - std::pair strip; - if (current.state.type == TreeSupport::NodeType::ePolygon) { - strip = discretize_polygon(p2.cast(), current.influence_area, result.vertices); - } - else { - strip = discretize_circle(p2.cast(), ncurrent.cast(), radius, eps, result.vertices); - } + std::pair strip = discretize_circle(p2.cast(), ncurrent.cast(), radius, eps, result.vertices); triangulate_strip(result, prev_strip.first, prev_strip.second, strip.first, strip.second); prev_strip = strip; // sprintf(fname, "d:\\temp\\meshes\\tree-partial-%d.obj", ++irun); @@ -3622,14 +3609,16 @@ static std::pair extrude_branch( return std::make_pair(zmin, zmax); } -#endif + #ifdef TREE_SUPPORT_ORGANIC_NUDGE_NEW + // New version using per layer AABB trees of lines for nudging spheres away from an object. -void organic_smooth_branches_avoid_collisions( +static void organic_smooth_branches_avoid_collisions( const PrintObject &print_object, const TreeModelVolumes &volumes, const TreeSupportSettings &config, + std::vector &move_bounds, const std::vector> &elements_with_link_down, const std::vector &linear_data_layers, std::function throw_on_cancel) @@ -3649,7 +3638,7 @@ void organic_smooth_branches_avoid_collisions( LayerIndex layer_idx = element.first->state.layer_idx; if (size_t num_layers = layer_idx + 1; num_layers > layer_collision_cache.size()) { if (num_layers > layer_collision_cache.capacity()) - layer_collision_cache.reserve(next_highest_power_of_2(num_layers)); + reserve_power_of_2(layer_collision_cache, num_layers); layer_collision_cache.resize(num_layers, {}); } auto& l = layer_collision_cache[layer_idx]; @@ -3763,8 +3752,6 @@ void organic_smooth_branches_avoid_collisions( // Calculate collision of multiple 2D layers against a collision sphere. collision_sphere.last_collision_depth = - std::numeric_limits::max(); for (uint32_t layer_id = collision_sphere.layer_begin; layer_id != collision_sphere.layer_end; ++ layer_id) { - if(layer_id>= layer_collision_cache.size()) - continue; double dz = (layer_id - collision_sphere.element.state.layer_idx) * slicing_params.layer_height; if (double r2 = sqr(collision_sphere.radius) - sqr(dz); r2 > 0) { if (const LayerCollisionCache &layer_collision_cache_item = layer_collision_cache[layer_id]; ! layer_collision_cache_item.empty()) { @@ -3795,6 +3782,7 @@ void organic_smooth_branches_avoid_collisions( } // Laplacian smoothing Vec2d avg{ 0, 0 }; + //const SupportElements &above = move_bounds[collision_sphere.element.state.layer_idx + 1]; const size_t offset_above = linear_data_layers[collision_sphere.element.state.layer_idx + 1]; double weight = 0.; for (auto iparent : collision_sphere.element.parents) { @@ -3804,7 +3792,7 @@ void organic_smooth_branches_avoid_collisions( } if (collision_sphere.element_below_id != -1) { const size_t offset_below = linear_data_layers[collision_sphere.element.state.layer_idx - 1]; - const double w = weight; + const double w = weight; // support_element_radius(config, move_bounds[element.state.layer_idx - 1][below]); avg += w * to_2d(collision_spheres[offset_below + collision_sphere.element_below_id].prev_position.cast()); weight += w; } @@ -3909,7 +3897,7 @@ static void organic_smooth_branches_avoid_collisions( size_t cnt = element.parents.size(); if (below != -1) { const size_t offset_below = linear_data_layers[element.state.layer_idx - 1]; - const double w = weight; // config.getRadius(move_bounds[element.state.layer_idx - 1][below].state); + const double w = weight; // support_element_radius(config, move_bounds[element.state.layer_idx - 1][below]); avg.x() += w * prev[offset_below + below].x(); avg.y() += w * prev[offset_below + below].y(); ++ cnt; @@ -3941,188 +3929,8 @@ static void organic_smooth_branches_avoid_collisions( } #endif // TREE_SUPPORT_ORGANIC_NUDGE_NEW -// Organic specific: Smooth branches and produce one cummulative mesh to be sliced. -indexed_triangle_set draw_branches( - PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - std::vector &move_bounds, - std::function throw_on_cancel) -{ - static int irun = 0; - - // All SupportElements are put into a layer independent storage to improve parallelization. - std::vector> elements_with_link_down; - std::vector linear_data_layers; - { - std::vector> map_downwards_old; - std::vector> map_downwards_new; - linear_data_layers.emplace_back(0); - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { - SupportElements *layer_above = layer_idx + 1 < move_bounds.size() ? &move_bounds[layer_idx + 1] : nullptr; - map_downwards_new.clear(); - std::sort(map_downwards_old.begin(), map_downwards_old.end(), [](auto& l, auto& r) { return l.first < r.first; }); - SupportElements &layer = move_bounds[layer_idx]; - for (size_t elem_idx = 0; elem_idx < layer.size(); ++ elem_idx) { - SupportElement &elem = layer[elem_idx]; - int child = -1; - if (layer_idx > 0) { - auto it = std::lower_bound(map_downwards_old.begin(), map_downwards_old.end(), &elem, [](auto& l, const SupportElement* r) { return l.first < r; }); - if (it != map_downwards_old.end() && it->first == &elem) { - child = it->second; - // Only one link points to a node above from below. - assert(!(++it != map_downwards_old.end() && it->first == &elem)); - } - const SupportElement *pchild = child == -1 ? nullptr : &move_bounds[layer_idx - 1][child]; - assert(pchild ? pchild->state.result_on_layer_is_set() : elem.state.target_height > layer_idx); - } - for (int32_t parent_idx : elem.parents) { - SupportElement &parent = (*layer_above)[parent_idx]; - if (parent.state.result_on_layer_is_set()) - map_downwards_new.emplace_back(&parent, elem_idx); - } - - elements_with_link_down.push_back({ &elem, int(child) }); - } - std::swap(map_downwards_old, map_downwards_new); - linear_data_layers.emplace_back(elements_with_link_down.size()); - } - } - - throw_on_cancel(); - - organic_smooth_branches_avoid_collisions(print_object, volumes, config, elements_with_link_down, linear_data_layers, throw_on_cancel); - - // Unmark all nodes. - for (SupportElements &elements : move_bounds) - for (SupportElement &element : elements) - element.state.marked = false; - - // Traverse all nodes, generate tubes. - // Traversal stack with nodes and thier current parent - const SlicingParameters &slicing_params = print_object.slicing_parameters(); - std::vector path; - indexed_triangle_set cummulative_mesh; - indexed_triangle_set partial_mesh; - indexed_triangle_set temp_mesh; - for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++ layer_idx) { - SupportElements &layer = move_bounds[layer_idx]; - SupportElements &layer_above = move_bounds[layer_idx + 1]; - - for (SupportElement &start_element : layer) - if (! start_element.state.marked && ! start_element.parents.empty()) { - // Collect elements up to a bifurcation above. - start_element.state.marked = true; - for (size_t parent_idx = 0; parent_idx < start_element.parents.size(); ++ parent_idx) { - path.clear(); - path.emplace_back(&start_element); - // Traverse each branch until it branches again. - SupportElement &first_parent = layer_above[start_element.parents[parent_idx]]; - assert(path.back()->state.layer_idx + 1 == first_parent.state.layer_idx); - path.emplace_back(&first_parent); - if (first_parent.parents.size() < 2) - first_parent.state.marked = true; - if (first_parent.parents.size() == 1) { - for (SupportElement *parent = &first_parent;;) { - SupportElement &next_parent = move_bounds[parent->state.layer_idx + 1][parent->parents.front()]; - assert(path.back()->state.layer_idx + 1 == next_parent.state.layer_idx); - path.emplace_back(&next_parent); - if (next_parent.parents.size() > 1) - break; - next_parent.state.marked = true; - if (next_parent.parents.size() == 0) - break; - parent = &next_parent; - } - } - // Triangulate the tube. - partial_mesh.clear(); - extrude_branch(path, config, slicing_params, move_bounds, partial_mesh); -#if 1 - char fname[2048]; - sprintf(fname, "SVG\\tree-raw-%d.obj", ++ irun); - its_write_obj(partial_mesh, fname); -#if 0 - temp_mesh.clear(); - cut_mesh(partial_mesh, layer_z(slicing_params, path.back()->state.layer_idx) + EPSILON, nullptr, &temp_mesh, false); - sprintf(fname, "d:\\temp\\meshes\\tree-trimmed1-%d.obj", irun); - its_write_obj(temp_mesh, fname); - partial_mesh.clear(); - cut_mesh(temp_mesh, layer_z(slicing_params, path.front()->state.layer_idx) - EPSILON, &partial_mesh, nullptr, false); - sprintf(fname, "d:\\temp\\meshes\\tree-trimmed2-%d.obj", irun); - its_write_obj(partial_mesh, fname); -#endif -#endif - its_merge(cummulative_mesh, partial_mesh); - } - throw_on_cancel(); - } - } - return cummulative_mesh; -} - -// Organic specific: Slice the cummulative mesh produced by draw_branches(). -void slice_branches( - PrintObject &print_object, - const TreeModelVolumes &volumes, - const TreeSupportSettings &config, - const std::vector &overhangs, - std::vector &move_bounds, - const indexed_triangle_set &cummulative_mesh, - - SupportGeneratorLayersPtr &bottom_contacts, - SupportGeneratorLayersPtr &top_contacts, - SupportGeneratorLayersPtr &intermediate_layers, - SupportGeneratorLayerStorage &layer_storage, - - std::function throw_on_cancel) -{ - const SlicingParameters &slicing_params = print_object.slicing_parameters(); - std::vector slice_z; - for (size_t layer_idx = 0; layer_idx < move_bounds.size(); ++ layer_idx) { - double print_z = slicing_params.object_print_z_min + slicing_params.first_object_layer_height + layer_idx * slicing_params.layer_height; - double layer_height = layer_idx == 0 ? slicing_params.first_object_layer_height : slicing_params.layer_height; - slice_z.emplace_back(float(print_z - layer_height * 0.5)); - } - // Remove the trailing slices. - while (! slice_z.empty()) - if (move_bounds[slice_z.size() - 1].empty()) - slice_z.pop_back(); - else - break; - -#if 0 - its_write_obj(cummulative_mesh, "d:\\temp\\meshes\\tree.obj"); -#endif - - MeshSlicingParamsEx params; - params.closing_radius = float(print_object.config().slice_closing_radius.value); - params.mode = MeshSlicingParams::SlicingMode::Positive; - std::vector slices = slice_mesh_ex(cummulative_mesh, slice_z, params, throw_on_cancel); - for (size_t layer_idx = 0; layer_idx < slice_z.size(); ++ layer_idx) - if (! slices[layer_idx].empty()) { - SupportGeneratorLayer *&l = intermediate_layers[layer_idx]; - if (l == nullptr) - l = &layer_allocate(layer_storage, SupporLayerType::sltBase, slicing_params, layer_idx); - append(l->polygons, to_polygons(std::move(slices[layer_idx]))); - } - - // Trim the slices. - tbb::parallel_for(tbb::blocked_range(0, intermediate_layers.size()), - [&](const tbb::blocked_range &range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) - if (SupportGeneratorLayer *layer = intermediate_layers[layer_idx]; layer) { - Polygons &poly = intermediate_layers[layer_idx]->polygons; - poly = diff_clipped(poly, volumes.getCollision(0, layer_idx, true)); - poly = intersection(poly, volumes.m_bed_area); - } - }); - - std::vector support_layer_storage(move_bounds.size()); - std::vector support_roof_storage(move_bounds.size()); - finalize_interface_and_support_areas(print_object, volumes, config, overhangs, support_layer_storage, support_roof_storage, - bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); -} +extern bool g_showed_critical_error; +extern bool g_showed_performance_warning; /*! * \brief Create the areas that need support. @@ -4131,8 +3939,11 @@ void slice_branches( * \param storage The data storage where the mesh data is gotten from and * where the resulting support areas are stored. */ -static void generate_support_areas(Print &print, TreeSupport* tree_support, const BuildVolume &build_volume, const std::vector &print_object_ids, std::function throw_on_cancel) +static void generate_support_areas(Print &print, const BuildVolume &build_volume, const std::vector &print_object_ids, std::function throw_on_cancel) { + g_showed_critical_error = false; + g_showed_performance_warning = false; + // Settings with the indexes of meshes that use these settings. std::vector>> grouped_meshes = group_meshes(print, print_object_ids); if (grouped_meshes.empty()) @@ -4147,10 +3958,24 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons // this struct is used to easy retrieve setting. No other function except those in TreeModelVolumes and generate_initial_areas() have knowledge of the existence of multiple meshes being processed. //FIXME this is a copy // Contains config settings to avoid loading them in every function. This was done to improve readability of the code. - TreeSupportSettings &config = processing.first; + const TreeSupportSettings &config = processing.first; BOOST_LOG_TRIVIAL(info) << "Processing support tree mesh group " << counter + 1 << " of " << grouped_meshes.size() << " containing " << grouped_meshes[counter].second.size() << " meshes."; auto t_start = std::chrono::high_resolution_clock::now(); - +#if 0 + std::vector exclude(num_support_layers); + // get all already existing support areas and exclude them + tbb::parallel_for(tbb::blocked_range(0, num_support_layers), + [&](const tbb::blocked_range &range) { + for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++ layer_idx) { + Polygons exlude_at_layer; + append(exlude_at_layer, storage.support.supportLayers[layer_idx].support_bottom); + append(exlude_at_layer, storage.support.supportLayers[layer_idx].support_roof); + for (auto part : storage.support.supportLayers[layer_idx].support_infill_parts) + append(exlude_at_layer, part.outline); + exclude[layer_idx] = union_(exlude_at_layer); + } + }); +#endif #ifdef SLIC3R_TREESUPPORTS_PROGRESS m_progress_multiplier = 1.0 / double(grouped_meshes.size()); m_progress_offset = counter == 0 ? 0 : TREE_PROGRESS_TOTAL * (double(counter) * m_progress_multiplier); @@ -4163,41 +3988,21 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons #endif // SLIC3R_TREESUPPORTS_PROGRESS /* additional_excluded_areas */{} }; - //FIXME generating overhangs just for the first mesh of the group. + //FIXME generating overhangs just for the furst mesh of the group. assert(processing.second.size() == 1); - - print.set_status(55, _L("Support: detect overhangs")); -#if 0 - std::vector overhangs; - tree_support->detect_overhangs(); - const int num_raft_layers = int(config.raft_layers.size()); - const int num_layers = int(print_object.layer_count()) + num_raft_layers; - overhangs.resize(num_layers); - for (size_t i = 0; i < print_object.layer_count(); i++) - { - overhangs[i + num_raft_layers] = to_polygons(print_object.get_support_layer(i)->overhang_areas); - } - print_object.clear_support_layers(); -#else std::vector overhangs = generate_overhangs(config, *print.get_object(processing.second.front()), throw_on_cancel); -#endif + // ### Precalculate avoidances, collision etc. size_t num_support_layers = precalculate(print, overhangs, processing.first, processing.second, volumes, throw_on_cancel); - bool has_support = num_support_layers > 0; - bool has_raft = config.raft_layers.size() > 0; + bool has_raft = config.raft_layers.size() > 0; num_support_layers = std::max(num_support_layers, config.raft_layers.size()); - if (num_support_layers == 0) - continue; - SupportParameters support_params(print_object); support_params.with_sheath = true; - // organic support default pattern is none. - if (config.support_pattern == smpDefault) { - config.support_pattern = smpNone; - support_params.support_density = 0; - } +// Don't override the support density of tree supports, as the support density is used for raft. +// The trees will have the density zeroed in tree_supports_generate_paths() +// support_params.support_density = 0; SupportGeneratorLayerStorage layer_storage; SupportGeneratorLayersPtr top_contacts; @@ -4217,36 +4022,32 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons auto remove_undefined_layers = [&bottom_contacts, &top_contacts, &interface_layers, &base_interface_layers, &intermediate_layers]() { auto doit = [](SupportGeneratorLayersPtr& layers) { layers.erase(std::remove_if(layers.begin(), layers.end(), [](const SupportGeneratorLayer* ptr) { return ptr == nullptr; }), layers.end()); - }; + }; doit(bottom_contacts); doit(top_contacts); doit(interface_layers); doit(base_interface_layers); doit(intermediate_layers); - }; + }; InterfacePlacer interface_placer{ print_object.slicing_parameters(), support_params, config, // Outputs layer_storage, top_contacts, interface_layers, base_interface_layers }; - if (has_support) { auto t_precalc = std::chrono::high_resolution_clock::now(); + // value is the area where support may be placed. As this is calculated in CreateLayerPathing it is saved and reused in draw_areas std::vector move_bounds(num_support_layers); - + // ### Place tips of the support tree for (size_t mesh_idx : processing.second) - generate_initial_areas(*print.get_object(mesh_idx), volumes, config, overhangs, + generate_initial_areas(*print.get_object(mesh_idx), volumes, config, overhangs, move_bounds, interface_placer, throw_on_cancel); auto t_gen = std::chrono::high_resolution_clock::now(); - // save num of points to log - for (size_t i = 0; i < move_bounds.size(); i++) - BOOST_LOG_TRIVIAL(info) << "Number of points in move_bound: " << move_bounds[i].size() << " in layer " << i; - -#ifdef TREESUPPORT_DEBUG_SVG + #ifdef TREESUPPORT_DEBUG_SVG for (size_t layer_idx = 0; layer_idx < move_bounds.size(); ++layer_idx) { Polygons polys; for (auto& area : move_bounds[layer_idx]) @@ -4254,13 +4055,12 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons if (auto begin = move_bounds[layer_idx].begin(); begin != move_bounds[layer_idx].end()) SVG::export_expolygons(debug_out_path("treesupport-initial_areas-%d.svg", layer_idx), { { { union_ex(volumes.getWallRestriction(support_element_collision_radius(config, begin->state), layer_idx, begin->state.use_min_xy_dist)) }, - { "wall_restricrictions", "gray", 0.5f } }, - { { union_ex(polys) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); + { "wall_restricrictions", "gray", 0.5f } }, + { { union_ex(polys) }, { "parent", "red", "black", "", scaled(0.1f), 0.5f } } }); } -#endif // TREESUPPORT_DEBUG_SVG + #endif // TREESUPPORT_DEBUG_SVG // ### Propagate the influence areas downwards. This is an inherently serial operation. - print.set_status(60, _L("Support: propagate branches")); create_layer_pathing(volumes, config, move_bounds, throw_on_cancel); auto t_path = std::chrono::high_resolution_clock::now(); @@ -4269,18 +4069,18 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons auto t_place = std::chrono::high_resolution_clock::now(); // ### draw these points as circles - indexed_triangle_set branches = draw_branches(*print.get_object(processing.second.front()), volumes, config, move_bounds, throw_on_cancel); - // Reduce memory footprint. After this point only slice_branches() will use volumes and from that only collisions with zero radius will be used. - volumes.clear_all_but_object_collision(); - slice_branches(*print.get_object(processing.second.front()), volumes, config, overhangs, move_bounds, branches, - bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); - - // this new function may cause bad_function_call exception - //organic_draw_branches( - // *print.get_object(processing.second.front()), volumes, config, move_bounds, - // bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, - // throw_on_cancel); - + + if (print_object.config().support_style.value != smsOrganic && + // Orca: use organic as default + print_object.config().support_style.value != smsDefault) { + draw_areas(*print.get_object(processing.second.front()), volumes, config, overhangs, move_bounds, + bottom_contacts, top_contacts, intermediate_layers, layer_storage, throw_on_cancel); + } else { + organic_draw_branches( + *print.get_object(processing.second.front()), volumes, config, move_bounds, + bottom_contacts, top_contacts, interface_placer, intermediate_layers, layer_storage, + throw_on_cancel); + } remove_undefined_layers(); @@ -4301,23 +4101,26 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons "Influence area creation: " << dur_path << "ms " "Placement of Points in InfluenceAreas: " << dur_place << "ms " "Drawing result as support " << dur_draw << " ms"; - + // if (config.branch_radius==2121) + // BOOST_LOG_TRIVIAL(error) << "Why ask questions when you already know the answer twice.\n (This is not a real bug, please dont report it.)"; + move_bounds.clear(); - } - else if (generate_raft_contact(print_object, config, interface_placer) >= 0) { + } else if (generate_raft_contact(print_object, config, interface_placer) >= 0) { remove_undefined_layers(); - } - else + } else // No raft. continue; // Produce the support G-code. - SupportGeneratorLayersPtr raft_layers = generate_raft_base(print_object, support_params, print_object.slicing_parameters(), top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); - SupportGeneratorLayersPtr layers_sorted = generate_support_layers(print_object, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); - + // Used by both classic and tree supports. + SupportGeneratorLayersPtr raft_layers = generate_raft_base(print_object, support_params, print_object.slicing_parameters(), + top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); +#if 1 //#ifdef SLIC3R_DEBUG + SupportGeneratorLayersPtr layers_sorted = +#endif // SLIC3R_DEBUG + generate_support_layers(print_object, raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); // Don't fill in the tree supports, make them hollow with just a single sheath line. - print.set_status(69, _L("Support: generate toolpath")); - generate_support_toolpaths(print_object, print_object.support_layers(), print_object.config(), support_params, print_object.slicing_parameters(), + generate_support_toolpaths(print_object.support_layers(), print_object.config(), support_params, print_object.slicing_parameters(), raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); #if 0 @@ -4358,19 +4161,19 @@ static void generate_support_areas(Print &print, TreeSupport* tree_support, cons // Organic specific: Smooth branches and produce one cummulative mesh to be sliced. void organic_draw_branches( - PrintObject& print_object, - TreeModelVolumes& volumes, - const TreeSupportSettings& config, - std::vector& move_bounds, + PrintObject &print_object, + TreeModelVolumes &volumes, + const TreeSupportSettings &config, + std::vector &move_bounds, // I/O: - SupportGeneratorLayersPtr& bottom_contacts, - SupportGeneratorLayersPtr& top_contacts, - InterfacePlacer& interface_placer, + SupportGeneratorLayersPtr &bottom_contacts, + SupportGeneratorLayersPtr &top_contacts, + InterfacePlacer &interface_placer, // Output: - SupportGeneratorLayersPtr& intermediate_layers, - SupportGeneratorLayerStorage& layer_storage, + SupportGeneratorLayersPtr &intermediate_layers, + SupportGeneratorLayerStorage &layer_storage, std::function throw_on_cancel) { @@ -4381,13 +4184,13 @@ void organic_draw_branches( std::vector> map_downwards_old; std::vector> map_downwards_new; linear_data_layers.emplace_back(0); - for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++layer_idx) { - SupportElements* layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; + for (LayerIndex layer_idx = 0; layer_idx < LayerIndex(move_bounds.size()); ++ layer_idx) { + SupportElements *layer_above = layer_idx + 1 < LayerIndex(move_bounds.size()) ? &move_bounds[layer_idx + 1] : nullptr; map_downwards_new.clear(); std::sort(map_downwards_old.begin(), map_downwards_old.end(), [](auto& l, auto& r) { return l.first < r.first; }); - SupportElements& layer = move_bounds[layer_idx]; - for (size_t elem_idx = 0; elem_idx < layer.size(); ++elem_idx) { - SupportElement& elem = layer[elem_idx]; + SupportElements &layer = move_bounds[layer_idx]; + for (size_t elem_idx = 0; elem_idx < layer.size(); ++ elem_idx) { + SupportElement &elem = layer[elem_idx]; int child = -1; if (layer_idx > 0) { auto it = std::lower_bound(map_downwards_old.begin(), map_downwards_old.end(), &elem, [](auto& l, const SupportElement* r) { return l.first < r; }); @@ -4398,13 +4201,13 @@ void organic_draw_branches( } #ifndef NDEBUG { - const SupportElement* pchild = child == -1 ? nullptr : &move_bounds[layer_idx - 1][child]; + const SupportElement *pchild = child == -1 ? nullptr : &move_bounds[layer_idx - 1][child]; assert(pchild ? pchild->state.result_on_layer_is_set() : elem.state.target_height > layer_idx); } #endif // NDEBUG } for (int32_t parent_idx : elem.parents) { - SupportElement& parent = (*layer_above)[parent_idx]; + SupportElement &parent = (*layer_above)[parent_idx]; if (parent.state.result_on_layer_is_set()) map_downwards_new.emplace_back(&parent, elem_idx); } @@ -4418,14 +4221,14 @@ void organic_draw_branches( throw_on_cancel(); - organic_smooth_branches_avoid_collisions(print_object, volumes, config, elements_with_link_down, linear_data_layers, throw_on_cancel); + organic_smooth_branches_avoid_collisions(print_object, volumes, config, move_bounds, elements_with_link_down, linear_data_layers, throw_on_cancel); // Reduce memory footprint. After this point only finalize_interface_and_support_areas() will use volumes and from that only collisions with zero radius will be used. volumes.clear_all_but_object_collision(); // Unmark all nodes. - for (SupportElements& elements : move_bounds) - for (SupportElement& element : elements) + for (SupportElements &elements : move_bounds) + for (SupportElement &element : elements) element.state.marked = false; // Traverse all nodes, generate tubes. @@ -4434,7 +4237,7 @@ void organic_draw_branches( struct Branch { std::vector path; bool has_root{ false }; - bool has_tip{ false }; + bool has_tip { false }; }; struct Slice { @@ -4453,30 +4256,30 @@ void organic_draw_branches( std::vector trees; struct TreeVisitor { - static void visit_recursive(std::vector& move_bounds, SupportElement& start_element, Tree& out) { - assert(!start_element.state.marked && !start_element.parents.empty()); + static void visit_recursive(std::vector &move_bounds, SupportElement &start_element, Tree &out) { + assert(! start_element.state.marked && ! start_element.parents.empty()); // Collect elements up to a bifurcation above. start_element.state.marked = true; // For each branch bifurcating from this point: //SupportElements &layer = move_bounds[start_element.state.layer_idx]; - SupportElements& layer_above = move_bounds[start_element.state.layer_idx + 1]; + SupportElements &layer_above = move_bounds[start_element.state.layer_idx + 1]; bool root = out.branches.empty(); - for (size_t parent_idx = 0; parent_idx < start_element.parents.size(); ++parent_idx) { + for (size_t parent_idx = 0; parent_idx < start_element.parents.size(); ++ parent_idx) { Branch branch; branch.path.emplace_back(&start_element); // Traverse each branch until it branches again. - SupportElement& first_parent = layer_above[start_element.parents[parent_idx]]; - assert(!first_parent.state.marked); + SupportElement &first_parent = layer_above[start_element.parents[parent_idx]]; + assert(! first_parent.state.marked); assert(branch.path.back()->state.layer_idx + 1 == first_parent.state.layer_idx); branch.path.emplace_back(&first_parent); if (first_parent.parents.size() < 2) first_parent.state.marked = true; - SupportElement* next_branch = nullptr; + SupportElement *next_branch = nullptr; if (first_parent.parents.size() == 1) { - for (SupportElement* parent = &first_parent;;) { + for (SupportElement *parent = &first_parent;;) { assert(parent->state.marked); - SupportElement& next_parent = move_bounds[parent->state.layer_idx + 1][parent->parents.front()]; - assert(!next_parent.state.marked); + SupportElement &next_parent = move_bounds[parent->state.layer_idx + 1][parent->parents.front()]; + assert(! next_parent.state.marked); assert(branch.path.back()->state.layer_idx + 1 == next_parent.state.layer_idx); branch.path.emplace_back(&next_parent); if (next_parent.parents.size() > 1) { @@ -4490,14 +4293,13 @@ void organic_draw_branches( break; parent = &next_parent; } - } - else if (first_parent.parents.size() > 1) + } else if (first_parent.parents.size() > 1) // Branching point was reached. next_branch = &first_parent; assert(branch.path.size() >= 2); - assert(next_branch == nullptr || !next_branch->state.marked); + assert(next_branch == nullptr || ! next_branch->state.marked); branch.has_root = root; - branch.has_tip = !next_branch; + branch.has_tip = ! next_branch; out.branches.emplace_back(std::move(branch)); if (next_branch) visit_recursive(move_bounds, *next_branch, out); @@ -4505,8 +4307,8 @@ void organic_draw_branches( } }; - for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++layer_idx) { - // int ielement; + for (LayerIndex layer_idx = 0; layer_idx + 1 < LayerIndex(move_bounds.size()); ++ layer_idx) { +// int ielement; for (SupportElement& start_element : move_bounds[layer_idx]) { if (!start_element.state.marked && !start_element.parents.empty()) { #if 0 @@ -4529,61 +4331,58 @@ void organic_draw_branches( if (start_element.state.lost) { } else if (start_element.state.verylost) { - } - else + } else trees.pop_back(); #endif } - // ++ ielement; +// ++ ielement; } } - const SlicingParameters& slicing_params = print_object.slicing_parameters(); + const SlicingParameters &slicing_params = print_object.slicing_parameters(); MeshSlicingParams mesh_slicing_params; mesh_slicing_params.mode = MeshSlicingParams::SlicingMode::Positive; - tbb::parallel_for(tbb::blocked_range(0, trees.size(), trees.size()), - [&trees, &volumes, &config, &slicing_params, &move_bounds, &mesh_slicing_params, &throw_on_cancel](const tbb::blocked_range& range) { + tbb::parallel_for(tbb::blocked_range(0, trees.size(), 1), + [&trees, &volumes, &config, &slicing_params, &move_bounds, &mesh_slicing_params, &throw_on_cancel](const tbb::blocked_range &range) { indexed_triangle_set partial_mesh; std::vector slice_z; std::vector bottom_contacts; - for (size_t tree_id = range.begin(); tree_id < range.end(); ++tree_id) { - Tree& tree = trees[tree_id]; - for (const Branch& branch : tree.branches) { + for (size_t tree_id = range.begin(); tree_id < range.end(); ++ tree_id) { + Tree &tree = trees[tree_id]; + for (const Branch &branch : tree.branches) { // Triangulate the tube. partial_mesh.clear(); std::pair zspan = extrude_branch(branch.path, config, slicing_params, move_bounds, partial_mesh); LayerIndex layer_begin = branch.has_root ? - branch.path.front()->state.layer_idx : + branch.path.front()->state.layer_idx : std::min(branch.path.front()->state.layer_idx, layer_idx_ceil(slicing_params, config, zspan.first)); - LayerIndex layer_end = (branch.has_tip ? + LayerIndex layer_end = (branch.has_tip ? branch.path.back()->state.layer_idx : std::max(branch.path.back()->state.layer_idx, layer_idx_floor(slicing_params, config, zspan.second))) + 1; slice_z.clear(); - for (LayerIndex layer_idx = layer_begin; layer_idx < layer_end; ++layer_idx) { - const double print_z = layer_z(slicing_params, config, layer_idx); + for (LayerIndex layer_idx = layer_begin; layer_idx < layer_end; ++ layer_idx) { + const double print_z = layer_z(slicing_params, config, layer_idx); const double bottom_z = layer_idx > 0 ? layer_z(slicing_params, config, layer_idx - 1) : 0.; slice_z.emplace_back(float(0.5 * (bottom_z + print_z))); } std::vector slices = slice_mesh(partial_mesh, slice_z, mesh_slicing_params, throw_on_cancel); bottom_contacts.clear(); //FIXME parallelize? - for (LayerIndex i = 0; i < LayerIndex(slices.size()); ++i) + for (LayerIndex i = 0; i < LayerIndex(slices.size()); ++ i) slices[i] = diff_clipped(slices[i], volumes.getCollision(0, layer_begin + i, true)); //FIXME parent_uses_min || draw_area.element->state.use_min_xy_dist); size_t num_empty = 0; if (slices.front().empty()) { // Some of the initial layers are empty. - num_empty = std::find_if(slices.begin(), slices.end(), [](auto& s) { return !s.empty(); }) - slices.begin(); - } - else { + num_empty = std::find_if(slices.begin(), slices.end(), [](auto &s) { return !s.empty(); }) - slices.begin(); + } else { if (branch.has_root) { if (branch.path.front()->state.to_model_gracious) { if (config.settings.support_floor_layers > 0) //FIXME one may just take the whole tree slice as bottom interface. bottom_contacts.emplace_back(intersection_clipped(slices.front(), volumes.getPlaceableAreas(0, layer_begin, [] {}))); - } - else if (layer_begin > 0) { + } else if (layer_begin > 0) { // Drop down areas that do rest non - gracefully on the model to ensure the branch actually rests on something. struct BottomExtraSlice { Polygons polygons; @@ -4595,16 +4394,16 @@ void organic_draw_branches( // Don't propagate further than 1.5 * bottom radius. //LayerIndex layers_propagate_max = 2 * bottom_radius / config.layer_height; LayerIndex layers_propagate_max = 5 * bottom_radius / config.layer_height; - LayerIndex layer_bottommost = branch.path.front()->state.verylost ? + LayerIndex layer_bottommost = branch.path.front()->state.verylost ? // If the tree bottom is hanging in the air, bring it down to some surface. - 0 : + 0 : //FIXME the "verylost" branches should stop when crossing another support. std::max(0, layer_begin - layers_propagate_max); double support_area_min_radius = M_PI * sqr(double(config.branch_radius)); double support_area_stop = std::max(0.2 * M_PI * sqr(double(bottom_radius)), 0.5 * support_area_min_radius); - // Only propagate until the rest area is smaller than this threshold. - //double support_area_min = 0.1 * support_area_min_radius; - for (LayerIndex layer_idx = layer_begin - 1; layer_idx >= layer_bottommost; --layer_idx) { + // Only propagate until the rest area is smaller than this threshold. + //double support_area_min = 0.1 * support_area_min_radius; + for (LayerIndex layer_idx = layer_begin - 1; layer_idx >= layer_bottommost; -- layer_idx) { rest_support = diff_clipped(rest_support.empty() ? slices.front() : rest_support, volumes.getCollision(0, layer_idx, false)); double rest_support_area = area(rest_support); if (rest_support_area < support_area_stop) @@ -4614,7 +4413,7 @@ void organic_draw_branches( } // Now remove those bottom slices that are not supported at all. #if 0 - while (!bottom_extra_slices.empty()) { + while (! bottom_extra_slices.empty()) { Polygons this_bottom_contacts = intersection_clipped( bottom_extra_slices.back().polygons, volumes.getPlaceableAreas(0, layer_begin - LayerIndex(bottom_extra_slices.size()), [] {})); if (area(this_bottom_contacts) < support_area_min) @@ -4629,23 +4428,23 @@ void organic_draw_branches( } #endif if (config.settings.support_floor_layers > 0) - for (int i = int(bottom_extra_slices.size()) - 2; i >= 0; --i) + for (int i = int(bottom_extra_slices.size()) - 2; i >= 0; -- i) bottom_contacts.emplace_back( intersection_clipped(bottom_extra_slices[i].polygons, volumes.getPlaceableAreas(0, layer_begin - i - 1, [] {}))); layer_begin -= LayerIndex(bottom_extra_slices.size()); slices.insert(slices.begin(), bottom_extra_slices.size(), {}); auto it_dst = slices.begin(); - for (auto it_src = bottom_extra_slices.rbegin(); it_src != bottom_extra_slices.rend(); ++it_src) - *it_dst++ = std::move(it_src->polygons); + for (auto it_src = bottom_extra_slices.rbegin(); it_src != bottom_extra_slices.rend(); ++ it_src) + *it_dst ++ = std::move(it_src->polygons); } } - + #if 0 //FIXME branch.has_tip seems to not be reliable. if (branch.has_tip && interface_placer.support_parameters.has_top_contacts) // Add top slices to top contacts / interfaces / base interfaces. - for (int i = int(branch.path.size()) - 1; i >= 0; --i) { - const SupportElement& el = *branch.path[i]; + for (int i = int(branch.path.size()) - 1; i >= 0; -- i) { + const SupportElement &el = *branch.path[i]; if (el.state.missing_roof_layers == 0) break; //FIXME Move or not? @@ -4656,38 +4455,35 @@ void organic_draw_branches( } layer_begin += LayerIndex(num_empty); - while (!slices.empty() && slices.back().empty()) { + while (! slices.empty() && slices.back().empty()) { slices.pop_back(); - --layer_end; + -- layer_end; } if (layer_begin < layer_end) { LayerIndex new_begin = tree.first_layer_id == -1 ? layer_begin : std::min(tree.first_layer_id, layer_begin); - LayerIndex new_end = tree.first_layer_id == -1 ? layer_end : std::max(tree.first_layer_id + LayerIndex(tree.slices.size()), layer_end); - size_t new_size = size_t(new_end - new_begin); + LayerIndex new_end = tree.first_layer_id == -1 ? layer_end : std::max(tree.first_layer_id + LayerIndex(tree.slices.size()), layer_end); + size_t new_size = size_t(new_end - new_begin); if (tree.first_layer_id == -1) { - } - else if (tree.slices.capacity() < new_size) { + } else if (tree.slices.capacity() < new_size) { std::vector new_slices; new_slices.reserve(new_size); if (LayerIndex dif = tree.first_layer_id - new_begin; dif > 0) new_slices.insert(new_slices.end(), dif, {}); append(new_slices, std::move(tree.slices)); tree.slices.swap(new_slices); - } - else if (LayerIndex dif = tree.first_layer_id - new_begin; dif > 0) + } else if (LayerIndex dif = tree.first_layer_id - new_begin; dif > 0) tree.slices.insert(tree.slices.begin(), tree.first_layer_id - new_begin, {}); tree.slices.insert(tree.slices.end(), new_size - tree.slices.size(), {}); layer_begin -= LayerIndex(num_empty); - for (LayerIndex i = layer_begin; i != layer_end; ++i) { + for (LayerIndex i = layer_begin; i != layer_end; ++ i) { int j = i - layer_begin; - if (Polygons& src = slices[j]; !src.empty()) { - Slice& dst = tree.slices[i - new_begin]; - if (++dst.num_branches > 1) { + if (Polygons &src = slices[j]; ! src.empty()) { + Slice &dst = tree.slices[i - new_begin]; + if (++ dst.num_branches > 1) { append(dst.polygons, std::move(src)); if (j < int(bottom_contacts.size())) append(dst.bottom_contacts, std::move(bottom_contacts[j])); - } - else { + } else { dst.polygons = std::move(std::move(src)); if (j < int(bottom_contacts.size())) dst.bottom_contacts = std::move(bottom_contacts[j]); @@ -4701,86 +4497,84 @@ void organic_draw_branches( }, tbb::simple_partitioner()); tbb::parallel_for(tbb::blocked_range(0, trees.size(), 1), - [&trees, &throw_on_cancel](const tbb::blocked_range& range) { - for (size_t tree_id = range.begin(); tree_id < range.end(); ++tree_id) { - Tree& tree = trees[tree_id]; - for (Slice& slice : tree.slices) - if (slice.num_branches > 1) { - slice.polygons = union_(slice.polygons); - slice.bottom_contacts = union_(slice.bottom_contacts); - slice.num_branches = 1; - } - throw_on_cancel(); - } - }, tbb::simple_partitioner()); + [&trees, &throw_on_cancel](const tbb::blocked_range &range) { + for (size_t tree_id = range.begin(); tree_id < range.end(); ++ tree_id) { + Tree &tree = trees[tree_id]; + for (Slice &slice : tree.slices) + if (slice.num_branches > 1) { + slice.polygons = union_(slice.polygons); + slice.bottom_contacts = union_(slice.bottom_contacts); + slice.num_branches = 1; + } + throw_on_cancel(); + } + }, tbb::simple_partitioner()); size_t num_layers = 0; - for (Tree& tree : trees) + for (Tree &tree : trees) if (tree.first_layer_id >= 0) num_layers = std::max(num_layers, size_t(tree.first_layer_id + tree.slices.size())); std::vector slices(num_layers, Slice{}); - for (Tree& tree : trees) + for (Tree &tree : trees) if (tree.first_layer_id >= 0) { - for (LayerIndex i = tree.first_layer_id; i != tree.first_layer_id + LayerIndex(tree.slices.size()); ++i) - if (Slice& src = tree.slices[i - tree.first_layer_id]; !src.polygons.empty()) { - Slice& dst = slices[i]; - if (++dst.num_branches > 1) { - append(dst.polygons, std::move(src.polygons)); + for (LayerIndex i = tree.first_layer_id; i != tree.first_layer_id + LayerIndex(tree.slices.size()); ++ i) + if (Slice &src = tree.slices[i - tree.first_layer_id]; ! src.polygons.empty()) { + Slice &dst = slices[i]; + if (++ dst.num_branches > 1) { + append(dst.polygons, std::move(src.polygons)); append(dst.bottom_contacts, std::move(src.bottom_contacts)); - } - else { - dst.polygons = std::move(src.polygons); + } else { + dst.polygons = std::move(src.polygons); dst.bottom_contacts = std::move(src.bottom_contacts); } } } tbb::parallel_for(tbb::blocked_range(0, std::min(move_bounds.size(), slices.size()), 1), - [&print_object, &config, &slices, &bottom_contacts, &top_contacts, &intermediate_layers, &layer_storage, &throw_on_cancel](const tbb::blocked_range& range) { - for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { - Slice& slice = slices[layer_idx]; - assert(intermediate_layers[layer_idx] == nullptr); - Polygons base_layer_polygons = slice.num_branches > 1 ? union_(slice.polygons) : std::move(slice.polygons); - Polygons bottom_contact_polygons = slice.num_branches > 1 ? union_(slice.bottom_contacts) : std::move(slice.bottom_contacts); - - if (!base_layer_polygons.empty()) { - // Most of the time in this function is this union call. Can take 300+ ms when a lot of areas are to be unioned. - base_layer_polygons = smooth_outward(union_(base_layer_polygons), config.support_line_width); //FIXME was .smooth(50); - //smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : - // simplify a bit, to ensure the output does not contain outrageous amounts of vertices. Should not be necessary, just a precaution. - base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution))); - } + [&print_object, &config, &slices, &bottom_contacts, &top_contacts, &intermediate_layers, &layer_storage, &throw_on_cancel](const tbb::blocked_range &range) { + for (size_t layer_idx = range.begin(); layer_idx < range.end(); ++layer_idx) { + Slice &slice = slices[layer_idx]; + assert(intermediate_layers[layer_idx] == nullptr); + Polygons base_layer_polygons = slice.num_branches > 1 ? union_(slice.polygons) : std::move(slice.polygons); + Polygons bottom_contact_polygons = slice.num_branches > 1 ? union_(slice.bottom_contacts) : std::move(slice.bottom_contacts); - // Subtract top contact layer polygons from support base. - SupportGeneratorLayer* top_contact_layer = top_contacts.empty() ? nullptr : top_contacts[layer_idx]; - if (top_contact_layer && !top_contact_layer->polygons.empty() && !base_layer_polygons.empty()) { - base_layer_polygons = diff(base_layer_polygons, top_contact_layer->polygons); - if (!bottom_contact_polygons.empty()) - //FIXME it may be better to clip bottom contacts with top contacts first after they are propagated to produce interface layers. - bottom_contact_polygons = diff(bottom_contact_polygons, top_contact_layer->polygons); - } - if (!bottom_contact_polygons.empty()) { - base_layer_polygons = diff(base_layer_polygons, bottom_contact_polygons); - SupportGeneratorLayer* bottom_contact_layer = bottom_contacts[layer_idx] = &layer_allocate( - layer_storage, SupporLayerType::sltBottomContact, print_object.slicing_parameters(), config, layer_idx); - bottom_contact_layer->polygons = std::move(bottom_contact_polygons); - } - if (!base_layer_polygons.empty()) { - SupportGeneratorLayer* base_layer = intermediate_layers[layer_idx] = &layer_allocate( - layer_storage, SupporLayerType::sltBase, print_object.slicing_parameters(), config, layer_idx); - base_layer->polygons = union_(base_layer_polygons); - } + if (! base_layer_polygons.empty()) { + // Most of the time in this function is this union call. Can take 300+ ms when a lot of areas are to be unioned. + base_layer_polygons = smooth_outward(union_(base_layer_polygons), config.support_line_width); //FIXME was .smooth(50); + //smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : + // simplify a bit, to ensure the output does not contain outrageous amounts of vertices. Should not be necessary, just a precaution. + base_layer_polygons = polygons_simplify(base_layer_polygons, std::min(scaled(0.03), double(config.resolution)), polygons_strictly_simple); + } - throw_on_cancel(); + // Subtract top contact layer polygons from support base. + SupportGeneratorLayer *top_contact_layer = top_contacts.empty() ? nullptr : top_contacts[layer_idx]; + if (top_contact_layer && ! top_contact_layer->polygons.empty() && ! base_layer_polygons.empty()) { + base_layer_polygons = diff(base_layer_polygons, top_contact_layer->polygons); + if (! bottom_contact_polygons.empty()) + //FIXME it may be better to clip bottom contacts with top contacts first after they are propagated to produce interface layers. + bottom_contact_polygons = diff(bottom_contact_polygons, top_contact_layer->polygons); + } + if (! bottom_contact_polygons.empty()) { + base_layer_polygons = diff(base_layer_polygons, bottom_contact_polygons); + SupportGeneratorLayer *bottom_contact_layer = bottom_contacts[layer_idx] = &layer_allocate( + layer_storage, SupporLayerType::BottomContact, print_object.slicing_parameters(), config, layer_idx); + bottom_contact_layer->polygons = std::move(bottom_contact_polygons); + } + if (! base_layer_polygons.empty()) { + SupportGeneratorLayer *base_layer = intermediate_layers[layer_idx] = &layer_allocate( + layer_storage, SupporLayerType::Base, print_object.slicing_parameters(), config, layer_idx); + base_layer->polygons = union_(base_layer_polygons); } - }, tbb::simple_partitioner()); -} + throw_on_cancel(); + } + }, tbb::simple_partitioner()); +} } // namespace TreeSupport3D -void generate_tree_support_3D(PrintObject &print_object, TreeSupport* tree_support, std::function throw_on_cancel) +void generate_tree_support_3D(PrintObject &print_object, std::function throw_on_cancel) { size_t idx = 0; for (const PrintObject *po : print_object.print()->objects()) { @@ -4788,11 +4582,9 @@ void generate_tree_support_3D(PrintObject &print_object, TreeSupport* tree_suppo break; ++idx; } - - Points bedpts = tree_support->m_machine_border.contour.points; - BuildVolume build_volume{ Pointfs{ unscaled(bedpts[0]), unscaled(bedpts[1]),unscaled(bedpts[2]),unscaled(bedpts[3])}, tree_support->m_print_config->printable_height }; - - TreeSupport3D::generate_support_areas(*print_object.print(), tree_support, build_volume, { idx }, throw_on_cancel); + TreeSupport3D::generate_support_areas(*print_object.print(), + BuildVolume(Pointfs{ Vec2d{ -300., -300. }, Vec2d{ -300., +300. }, Vec2d{ +300., +300. }, Vec2d{ +300., -300. } }, 0.), { idx }, + throw_on_cancel); } } // namespace Slic3r diff --git a/src/libslic3r/Support/TreeSupport3D.hpp b/src/libslic3r/Support/TreeSupport3D.hpp index 7a6d342ff3e..46e81412317 100644 --- a/src/libslic3r/Support/TreeSupport3D.hpp +++ b/src/libslic3r/Support/TreeSupport3D.hpp @@ -9,13 +9,17 @@ #ifndef slic3r_TreeSupport_hpp #define slic3r_TreeSupport_hpp -#include -#include "../Point.hpp" -#include "../BoundingBox.hpp" -#include "../Utils.hpp" +#include "SupportLayer.hpp" #include "TreeModelVolumes.hpp" #include "TreeSupportCommon.hpp" +#include "../BoundingBox.hpp" +#include "../Point.hpp" +#include "../Utils.hpp" + +#include + + // #define TREE_SUPPORT_SHOW_ERRORS #ifdef SLIC3R_TREESUPPORTS_PROGRESS @@ -36,11 +40,9 @@ namespace Slic3r { // Forward declarations -class TreeSupport; class Print; class PrintObject; -class SupportGeneratorLayer; -using SupportGeneratorLayersPtr = std::vector; +struct SlicingParameters; namespace TreeSupport3D { @@ -90,7 +92,7 @@ struct SupportElementStateBits { #endif // TREE_SUPPORTS_TRACK_LOST deleted(false), marked(false) - {} + {} /*! * \brief The element trys to reach the buildplate @@ -108,7 +110,7 @@ struct SupportElementStateBits { bool use_min_xy_dist : 1; /*! - * \brief True if this Element or any parent provides support to a support roof. + * \brief True if this Element or any parent (element above) provides support to a support roof. */ bool supports_roof : 1; @@ -137,10 +139,6 @@ struct SupportElementStateBits { struct SupportElementState : public SupportElementStateBits { - int type = 0; - coordf_t radius = 0; - float print_z = 0; - /*! * \brief The layer this support elements wants reach */ @@ -175,7 +173,7 @@ struct SupportElementState : public SupportElementStateBits * \brief The resulting center point around which a circle will be drawn later. * Will be set by setPointsOnAreas */ - Point result_on_layer{ std::numeric_limits::max(), std::numeric_limits::max() }; + Point result_on_layer { std::numeric_limits::max(), std::numeric_limits::max() }; bool result_on_layer_is_set() const { return this->result_on_layer != Point{ std::numeric_limits::max(), std::numeric_limits::max() }; } void result_on_layer_reset() { this->result_on_layer = Point{ std::numeric_limits::max(), std::numeric_limits::max() }; } /*! @@ -189,7 +187,7 @@ struct SupportElementState : public SupportElementStateBits double elephant_foot_increases; /*! - * \brief The element trys not to move until this dtt is reached, is set to 0 if the element had to move. + * \brief The element tries to not move until this dtt is reached, is set to 0 if the element had to move. */ uint32_t dont_move_until; @@ -204,18 +202,19 @@ struct SupportElementState : public SupportElementStateBits uint32_t missing_roof_layers; // called by increase_single_area() and increaseAreas() - [[nodiscard]] static SupportElementState propagate_down(const SupportElementState& src) + [[nodiscard]] static SupportElementState propagate_down(const SupportElementState &src) { SupportElementState dst{ src }; - ++dst.distance_to_top; - --dst.layer_idx; + ++ dst.distance_to_top; + -- dst.layer_idx; // set to invalid as we are a new node on a new layer dst.result_on_layer_reset(); dst.skip_ovalisation = false; return dst; } -}; + [[nodiscard]] bool locked() const { return this->distance_to_top < this->dont_move_until; } +}; /*! * \brief Get the Distance to top regarding the real radius this part will have. This is different from distance_to_top, which is can be used to calculate the top most layer of the branch. @@ -279,8 +278,6 @@ struct SupportElement Polygons influence_area; }; -void tree_supports_show_error(std::string_view message, bool critical); - using SupportElements = std::deque; [[nodiscard]] inline coord_t support_element_radius(const TreeSupportSettings &settings, const SupportElement &elem) @@ -293,39 +290,27 @@ using SupportElements = std::deque; return support_element_collision_radius(settings, elem.state); } -void create_layer_pathing(const TreeModelVolumes& volumes, const TreeSupportSettings& config, std::vector& move_bounds, std::function throw_on_cancel); - -void create_nodes_from_area(const TreeModelVolumes& volumes, const TreeSupportSettings& config, std::vector& move_bounds, std::function throw_on_cancel); - -void organic_smooth_branches_avoid_collisions(const PrintObject& print_object, const TreeModelVolumes& volumes, const TreeSupportSettings& config, const std::vector>& elements_with_link_down, const std::vector& linear_data_layers, std::function throw_on_cancel); - -indexed_triangle_set draw_branches(PrintObject& print_object, const TreeModelVolumes& volumes, const TreeSupportSettings& config, std::vector& move_bounds, std::function throw_on_cancel); - -void slice_branches(PrintObject& print_object, const TreeModelVolumes& volumes, const TreeSupportSettings& config, const std::vector& overhangs, std::vector& move_bounds, const indexed_triangle_set& cummulative_mesh, SupportGeneratorLayersPtr& bottom_contacts, SupportGeneratorLayersPtr& top_contacts, SupportGeneratorLayersPtr& intermediate_layers, SupportGeneratorLayerStorage& layer_storage, std::function throw_on_cancel); - -void generate_initial_areas(const PrintObject& print_object, const TreeModelVolumes& volumes, const TreeSupportSettings& config, const std::vector& overhangs, std::vector& move_bounds, InterfacePlacer& interface_placer, std::function throw_on_cancel); - // Organic specific: Smooth branches and produce one cummulative mesh to be sliced. void organic_draw_branches( - PrintObject& print_object, - TreeModelVolumes& volumes, - const TreeSupportSettings& config, - std::vector& move_bounds, + PrintObject &print_object, + TreeModelVolumes &volumes, + const TreeSupportSettings &config, + std::vector &move_bounds, // I/O: - SupportGeneratorLayersPtr& bottom_contacts, - SupportGeneratorLayersPtr& top_contacts, - InterfacePlacer& interface_placer, + SupportGeneratorLayersPtr &bottom_contacts, + SupportGeneratorLayersPtr &top_contacts, + InterfacePlacer &interface_placer, // Output: - SupportGeneratorLayersPtr& intermediate_layers, - SupportGeneratorLayerStorage& layer_storage, + SupportGeneratorLayersPtr &intermediate_layers, + SupportGeneratorLayerStorage &layer_storage, std::function throw_on_cancel); } // namespace TreeSupport3D -void generate_tree_support_3D(PrintObject &print_object, TreeSupport* tree_support, std::function throw_on_cancel = []{}); +void generate_tree_support_3D(PrintObject &print_object, std::function throw_on_cancel = []{}); } // namespace Slic3r diff --git a/src/libslic3r/Support/TreeSupportCommon.cpp b/src/libslic3r/Support/TreeSupportCommon.cpp deleted file mode 100644 index 98796784b15..00000000000 --- a/src/libslic3r/Support/TreeSupportCommon.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// Tree supports by Thomas Rahm, losely based on Tree Supports by CuraEngine. -// Original source of Thomas Rahm's tree supports: -// https://github.com/ThomasRahm/CuraEngine -// -// Original CuraEngine copyright: -// Copyright (c) 2021 Ultimaker B.V. -// CuraEngine is released under the terms of the AGPLv3 or higher. - -#include "TreeSupportCommon.hpp" - -namespace Slic3r::FFFTreeSupport { - -TreeSupportMeshGroupSettings::TreeSupportMeshGroupSettings(const PrintObject &print_object) -{ - const PrintConfig &print_config = print_object.print()->config(); - const PrintObjectConfig &config = print_object.config(); - const SlicingParameters &slicing_params = print_object.slicing_parameters(); -// const std::vector printing_extruders = print_object.object_extruders(); - - // Support must be enabled and set to Tree style. - assert(config.enable_support || config.enforce_support_layers > 0); - assert(is_tree(config.support_type)); - - // Calculate maximum external perimeter width over all printing regions, taking into account the default layer height. - coordf_t external_perimeter_width = 0.; - for (size_t region_id = 0; region_id < print_object.num_printing_regions(); ++ region_id) { - const PrintRegion ®ion = print_object.printing_region(region_id); - external_perimeter_width = std::max(external_perimeter_width, region.flow(print_object, frExternalPerimeter, config.layer_height).width()); - } - - this->layer_height = scaled(config.layer_height.value); - this->resolution = scaled(print_config.resolution.value); - // Arache feature - this->min_feature_size = scaled(config.min_feature_size.value); - // +1 makes the threshold inclusive - this->support_angle = 0.5 * M_PI - std::clamp((config.support_threshold_angle + 1) * M_PI / 180., 0., 0.5 * M_PI); - this->support_line_width = support_material_flow(&print_object, config.layer_height).scaled_width(); - this->support_roof_line_width = support_material_interface_flow(&print_object, config.layer_height).scaled_width(); - //FIXME add it to SlicingParameters and reuse in both tree and normal supports? - this->support_bottom_enable = config.support_interface_top_layers.value > 0 && config.support_interface_bottom_layers.value != 0; - this->support_bottom_height = this->support_bottom_enable ? - (config.support_interface_bottom_layers.value > 0 ? - config.support_interface_bottom_layers.value : - config.support_interface_top_layers.value) * this->layer_height : - 0; - this->support_material_buildplate_only = config.support_on_build_plate_only; - this->support_xy_distance = scaled(config.support_object_xy_distance.value); - // Separation of interfaces, it is likely smaller than support_xy_distance. - this->support_xy_distance_overhang = std::min(this->support_xy_distance, scaled(0.5 * external_perimeter_width)); - this->support_top_distance = scaled(slicing_params.gap_support_object); - this->support_bottom_distance = scaled(slicing_params.gap_object_support); -// this->support_interface_skip_height = -// this->support_infill_angles = - this->support_roof_enable = config.support_interface_top_layers.value > 0; - this->support_roof_layers = this->support_roof_enable ? config.support_interface_top_layers.value : 0; - this->support_floor_enable = config.support_interface_top_layers.value > 0 && config.support_interface_bottom_layers.value > 0; - this->support_floor_layers = this->support_floor_enable ? config.support_interface_bottom_layers.value : 0; -// this->minimum_roof_area = -// this->support_roof_angles = - this->support_roof_pattern = config.support_interface_pattern; - this->support_pattern = config.support_base_pattern; - this->support_line_spacing = scaled(config.support_base_pattern_spacing.value); -// this->support_bottom_offset = -// this->support_wall_count = config.support_material_with_sheath ? 1 : 0; - this->support_wall_count = 1; - this->support_roof_line_distance = scaled(config.support_interface_spacing.value) + this->support_roof_line_width; -// this->minimum_support_area = -// this->minimum_bottom_area = -// this->support_offset = - this->support_tree_branch_distance = scaled(config.tree_support_branch_distance_organic.value); - this->support_tree_angle = std::clamp(config.tree_support_branch_angle_organic * M_PI / 180., 0., 0.5 * M_PI - EPSILON); - this->support_tree_angle_slow = std::clamp(config.tree_support_angle_slow * M_PI / 180., 0., this->support_tree_angle - EPSILON); - this->support_tree_branch_diameter = scaled(config.tree_support_branch_diameter_organic.value); - this->support_tree_branch_diameter_angle = std::clamp(config.tree_support_branch_diameter_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON); - this->support_tree_top_rate = config.tree_support_top_rate.value; // percent -// this->support_tree_tip_diameter = this->support_line_width; - this->support_tree_tip_diameter = std::clamp(scaled(config.tree_support_tip_diameter.value), (coord_t)0, this->support_tree_branch_diameter); - - std::cout << "\n---------------\n" - << "layer_height: " << layer_height << "\nresolution: " << resolution << "\nmin_feature_size: " << min_feature_size - << "\nsupport_angle: " << support_angle << "\nconfig.support_threshold_angle: " << config.support_threshold_angle << "\nsupport_line_width: " << support_line_width - << "\nsupport_roof_line_width: " << support_roof_line_width << "\nsupport_bottom_enable: " << support_bottom_enable - << "\nsupport_bottom_height: " << support_bottom_height - << "\nsupport_material_buildplate_only: " << support_material_buildplate_only - << "\nsupport_xy_distance: " << support_xy_distance << "\nsupport_xy_distance_overhang: " << support_xy_distance_overhang - << "\nsupport_top_distance: " << support_top_distance << "\nsupport_bottom_distance: " << support_bottom_distance - << "\nsupport_roof_enable: " << support_roof_enable << "\nsupport_roof_layers: " << support_roof_layers - << "\nsupport_floor_enable: " << support_floor_enable << "\nsupport_floor_layers: " << support_floor_layers - << "\nsupport_roof_pattern: " << support_roof_pattern << "\nsupport_pattern: " << support_pattern - << "\nsupport_line_spacing: " << support_line_spacing << "\nsupport_wall_count: " << support_wall_count - << "\nsupport_roof_line_distance: " << support_roof_line_distance - << "\nsupport_tree_branch_distance: " << support_tree_branch_distance - << "\nsupport_tree_angle_slow: " << support_tree_angle_slow - << "\nsupport_tree_branch_diameter: " << support_tree_branch_diameter - << "\nsupport_tree_branch_diameter_angle: " << support_tree_branch_diameter_angle - << "\nsupport_tree_top_rate: " << support_tree_top_rate << "\nsupport_tree_tip_diameter: " << support_tree_tip_diameter - << "\n---------------\n"; -} - -TreeSupportSettings::TreeSupportSettings(const TreeSupportMeshGroupSettings &mesh_group_settings, const SlicingParameters &slicing_params) - : support_line_width(mesh_group_settings.support_line_width), - layer_height(mesh_group_settings.layer_height), - branch_radius(mesh_group_settings.support_tree_branch_diameter / 2), - min_radius(mesh_group_settings.support_tree_tip_diameter / 2), // The actual radius is 50 microns larger as the resulting branches will be increased by 50 microns to avoid rounding errors effectively increasing the xydistance - maximum_move_distance((mesh_group_settings.support_tree_angle < M_PI / 2.) ? (coord_t)(tan(mesh_group_settings.support_tree_angle) * layer_height) : std::numeric_limits::max()), - maximum_move_distance_slow((mesh_group_settings.support_tree_angle_slow < M_PI / 2.) ? (coord_t)(tan(mesh_group_settings.support_tree_angle_slow) * layer_height) : std::numeric_limits::max()), - support_bottom_layers(mesh_group_settings.support_bottom_enable ? (mesh_group_settings.support_bottom_height + layer_height / 2) / layer_height : 0), - // Ensure lines always stack nicely even if layer height is large. - tip_layers(std::max((branch_radius - min_radius) / (support_line_width / 3), branch_radius / layer_height)), - branch_radius_increase_per_layer(tan(mesh_group_settings.support_tree_branch_diameter_angle) * layer_height), - max_to_model_radius_increase(mesh_group_settings.support_tree_max_diameter_increase_by_merges_when_support_to_model / 2), - min_dtt_to_model(round_up_divide(mesh_group_settings.support_tree_min_height_to_model, layer_height)), - increase_radius_until_radius(mesh_group_settings.support_tree_branch_diameter / 2), - increase_radius_until_layer(increase_radius_until_radius <= branch_radius ? tip_layers * (increase_radius_until_radius / branch_radius) : (increase_radius_until_radius - branch_radius) / branch_radius_increase_per_layer), - support_rests_on_model(! mesh_group_settings.support_material_buildplate_only), - xy_distance(mesh_group_settings.support_xy_distance), - xy_min_distance(std::min(mesh_group_settings.support_xy_distance, mesh_group_settings.support_xy_distance_overhang)), - bp_radius(mesh_group_settings.support_tree_bp_diameter / 2), - // Increase by half a line overlap, but not faster than 40 degrees angle (0 degrees means zero increase in radius). - bp_radius_increase_per_layer(std::min(tan(0.7) * layer_height, 0.5 * support_line_width)), - z_distance_bottom_layers(size_t(round(double(mesh_group_settings.support_bottom_distance) / double(layer_height)))), - z_distance_top_layers(size_t(round(double(mesh_group_settings.support_top_distance) / double(layer_height)))), -// support_infill_angles(mesh_group_settings.support_infill_angles), - support_roof_angles(mesh_group_settings.support_roof_angles), - roof_pattern(mesh_group_settings.support_roof_pattern), - support_pattern(mesh_group_settings.support_pattern), - support_roof_line_width(mesh_group_settings.support_roof_line_width), - support_line_spacing(mesh_group_settings.support_line_spacing), - support_bottom_offset(mesh_group_settings.support_bottom_offset), - support_wall_count(mesh_group_settings.support_wall_count), - resolution(mesh_group_settings.resolution), - support_roof_line_distance(mesh_group_settings.support_roof_line_distance), // in the end the actual infill has to be calculated to subtract interface from support areas according to interface_preference. - settings(mesh_group_settings), - min_feature_size(mesh_group_settings.min_feature_size) -{ - // At least one tip layer must be defined. - assert(tip_layers > 0); - - layer_start_bp_radius = (bp_radius - branch_radius) / bp_radius_increase_per_layer; - - if (TreeSupportSettings::soluble) { - // safeOffsetInc can only work in steps of the size xy_min_distance in the worst case => xy_min_distance has to be a bit larger than 0 in this worst case and should be large enough for performance to not suffer extremely - // When for all meshes the z bottom and top distance is more than one layer though the worst case is xy_min_distance + min_feature_size - // This is not the best solution, but the only one to ensure areas can not lag though walls at high maximum_move_distance. - xy_min_distance = std::max(xy_min_distance, scaled(0.1)); - xy_distance = std::max(xy_distance, xy_min_distance); - } - -// const std::unordered_map interface_map = { { "support_area_overwrite_interface_area", InterfacePreference::SupportAreaOverwritesInterface }, { "interface_area_overwrite_support_area", InterfacePreference::InterfaceAreaOverwritesSupport }, { "support_lines_overwrite_interface_area", InterfacePreference::SupportLinesOverwriteInterface }, { "interface_lines_overwrite_support_area", InterfacePreference::InterfaceLinesOverwriteSupport }, { "nothing", InterfacePreference::Nothing } }; -// interface_preference = interface_map.at(mesh_group_settings.get("support_interface_priority")); -//FIXME this was the default -// interface_preference = InterfacePreference::SupportLinesOverwriteInterface; - //interface_preference = InterfacePreference::SupportAreaOverwritesInterface; - interface_preference = InterfacePreference::InterfaceAreaOverwritesSupport; - - if (slicing_params.raft_layers() > 0) { - // Fill in raft_layers with the heights of the layers below the first object layer. - // First layer - double z = slicing_params.first_print_layer_height; - this->raft_layers.emplace_back(z); - // Raft base layers - for (size_t i = 1; i < slicing_params.base_raft_layers; ++ i) { - z += slicing_params.base_raft_layer_height; - this->raft_layers.emplace_back(z); - } - // Raft interface layers - for (size_t i = 0; i + 1 < slicing_params.interface_raft_layers; ++ i) { - z += slicing_params.interface_raft_layer_height; - this->raft_layers.emplace_back(z); - } - // Raft contact layer - if (slicing_params.raft_layers() > 1) { - z = slicing_params.raft_contact_top_z; - this->raft_layers.emplace_back(z); - } - if (double dist_to_go = slicing_params.object_print_z_min - z; dist_to_go > EPSILON) { - // Layers between the raft contacts and bottom of the object. - auto nsteps = int(ceil(dist_to_go / slicing_params.max_suport_layer_height)); - double step = dist_to_go / nsteps; - for (int i = 0; i < nsteps; ++ i) { - z += step; - this->raft_layers.emplace_back(z); - } - } - } -} - -#if defined(TREE_SUPPORT_SHOW_ERRORS) && defined(_WIN32) - #define TREE_SUPPORT_SHOW_ERRORS_WIN32 - #include -#endif - -// Shared with generate_support_areas() -bool g_showed_critical_error = false; -bool g_showed_performance_warning = false; - -void tree_supports_show_error(std::string_view message, bool critical) -{ // todo Remove! ONLY FOR PUBLIC BETA!! - printf("Error: %s, critical: %d\n", message.data(), int(critical)); -#ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 - static bool showed_critical = false; - static bool showed_performance = false; - auto bugtype = std::string(critical ? " This is a critical bug. It may cause missing or malformed branches.\n" : "This bug should only decrease performance.\n"); - bool show = (critical && !g_showed_critical_error) || (!critical && !g_showed_performance_warning); - (critical ? g_showed_critical_error : g_showed_performance_warning) = true; - if (show) - MessageBoxA(nullptr, std::string("TreeSupport_2 MOD detected an error while generating the tree support.\nPlease report this back to me with profile and model.\nRevision 5.0\n" + std::string(message) + "\n" + bugtype).c_str(), - "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); -#endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 -} - -} // namespace Slic3r::FFFTreeSupport diff --git a/src/libslic3r/Support/TreeSupportCommon.hpp b/src/libslic3r/Support/TreeSupportCommon.hpp index ee7d4b33388..1dc8b309d6c 100644 --- a/src/libslic3r/Support/TreeSupportCommon.hpp +++ b/src/libslic3r/Support/TreeSupportCommon.hpp @@ -15,12 +15,10 @@ #include -using namespace Slic3r::FFFSupport; - namespace Slic3r { -namespace FFFTreeSupport +namespace TreeSupport3D { using LayerIndex = int; @@ -36,7 +34,92 @@ enum class InterfacePreference struct TreeSupportMeshGroupSettings { TreeSupportMeshGroupSettings() = default; - explicit TreeSupportMeshGroupSettings(const PrintObject &print_object); + explicit TreeSupportMeshGroupSettings(const PrintObject &print_object) + { + const PrintConfig &print_config = print_object.print()->config(); + const PrintObjectConfig &config = print_object.config(); + const SlicingParameters &slicing_params = print_object.slicing_parameters(); + // const std::vector printing_extruders = print_object.object_extruders(); + + // Support must be enabled and set to Tree style. + assert(config.enable_support || config.enforce_support_layers > 0); + assert(is_tree(config.support_type)); + + // Calculate maximum external perimeter width over all printing regions, taking into account the default layer height. + coordf_t external_perimeter_width = 0.; + for (size_t region_id = 0; region_id < print_object.num_printing_regions(); ++ region_id) { + const PrintRegion ®ion = print_object.printing_region(region_id); + external_perimeter_width = std::max(external_perimeter_width, region.flow(print_object, frExternalPerimeter, config.layer_height).width()); + } + + this->layer_height = scaled(config.layer_height.value); + this->resolution = scaled(print_config.resolution.value); + // Arache feature + this->min_feature_size = scaled(config.min_feature_size.value); + // +1 makes the threshold inclusive + this->support_angle = 0.5 * M_PI - std::clamp((config.support_threshold_angle + 1) * M_PI / 180., 0., 0.5 * M_PI); + this->support_line_width = support_material_flow(&print_object, config.layer_height).scaled_width(); + this->support_roof_line_width = support_material_interface_flow(&print_object, config.layer_height).scaled_width(); + //FIXME add it to SlicingParameters and reuse in both tree and normal supports? + this->support_bottom_enable = config.support_interface_top_layers.value > 0 && config.support_interface_bottom_layers.value != 0; + this->support_bottom_height = this->support_bottom_enable ? + (config.support_interface_bottom_layers.value > 0 ? + config.support_interface_bottom_layers.value : + config.support_interface_top_layers.value) * this->layer_height : + 0; + this->support_material_buildplate_only = config.support_on_build_plate_only; + this->support_xy_distance = scaled(config.support_object_xy_distance.value); + // Separation of interfaces, it is likely smaller than support_xy_distance. + this->support_xy_distance_overhang = std::min(this->support_xy_distance, scaled(0.5 * external_perimeter_width)); + this->support_top_distance = scaled(slicing_params.gap_support_object); + this->support_bottom_distance = scaled(slicing_params.gap_object_support); + // this->support_interface_skip_height = + // this->support_infill_angles = + this->support_roof_enable = config.support_interface_top_layers.value > 0; + this->support_roof_layers = this->support_roof_enable ? config.support_interface_top_layers.value : 0; + this->support_floor_enable = config.support_interface_top_layers.value > 0 && config.support_interface_bottom_layers.value > 0; + this->support_floor_layers = this->support_floor_enable ? config.support_interface_bottom_layers.value : 0; + // this->minimum_roof_area = + // this->support_roof_angles = + this->support_roof_pattern = config.support_interface_pattern; + this->support_pattern = config.support_base_pattern; + this->support_line_spacing = scaled(config.support_base_pattern_spacing.value); + // this->support_bottom_offset = + // this->support_wall_count = config.support_material_with_sheath ? 1 : 0; + this->support_wall_count = 1; + this->support_roof_line_distance = scaled(config.support_interface_spacing.value) + this->support_roof_line_width; + // this->minimum_support_area = + // this->minimum_bottom_area = + // this->support_offset = + this->support_tree_branch_distance = scaled(config.tree_support_branch_distance_organic.value); + this->support_tree_angle = std::clamp(config.tree_support_branch_angle_organic * M_PI / 180., 0., 0.5 * M_PI - EPSILON); + this->support_tree_angle_slow = std::clamp(config.tree_support_angle_slow * M_PI / 180., 0., this->support_tree_angle - EPSILON); + this->support_tree_branch_diameter = scaled(config.tree_support_branch_diameter_organic.value); + this->support_tree_branch_diameter_angle = std::clamp(config.tree_support_branch_diameter_angle * M_PI / 180., 0., 0.5 * M_PI - EPSILON); + this->support_tree_top_rate = config.tree_support_top_rate.value; // percent + // this->support_tree_tip_diameter = this->support_line_width; + this->support_tree_tip_diameter = std::clamp(scaled(config.tree_support_tip_diameter.value), (coord_t)0, this->support_tree_branch_diameter); + + std::cout << "\n---------------\n" + << "layer_height: " << layer_height << "\nresolution: " << resolution << "\nmin_feature_size: " << min_feature_size + << "\nsupport_angle: " << support_angle << "\nconfig.support_threshold_angle: " << config.support_threshold_angle << "\nsupport_line_width: " << support_line_width + << "\nsupport_roof_line_width: " << support_roof_line_width << "\nsupport_bottom_enable: " << support_bottom_enable + << "\nsupport_bottom_height: " << support_bottom_height + << "\nsupport_material_buildplate_only: " << support_material_buildplate_only + << "\nsupport_xy_distance: " << support_xy_distance << "\nsupport_xy_distance_overhang: " << support_xy_distance_overhang + << "\nsupport_top_distance: " << support_top_distance << "\nsupport_bottom_distance: " << support_bottom_distance + << "\nsupport_roof_enable: " << support_roof_enable << "\nsupport_roof_layers: " << support_roof_layers + << "\nsupport_floor_enable: " << support_floor_enable << "\nsupport_floor_layers: " << support_floor_layers + << "\nsupport_roof_pattern: " << support_roof_pattern << "\nsupport_pattern: " << support_pattern + << "\nsupport_line_spacing: " << support_line_spacing << "\nsupport_wall_count: " << support_wall_count + << "\nsupport_roof_line_distance: " << support_roof_line_distance + << "\nsupport_tree_branch_distance: " << support_tree_branch_distance + << "\nsupport_tree_angle_slow: " << support_tree_angle_slow + << "\nsupport_tree_branch_diameter: " << support_tree_branch_diameter + << "\nsupport_tree_branch_diameter_angle: " << support_tree_branch_diameter_angle + << "\nsupport_tree_top_rate: " << support_tree_top_rate << "\nsupport_tree_tip_diameter: " << support_tree_tip_diameter + << "\n---------------\n"; + } /*********************************************************************/ /* Print parameters, not support specific: */ @@ -209,7 +292,93 @@ struct TreeSupportSettings { public: TreeSupportSettings() = default; // required for the definition of the config variable in the TreeSupportGenerator class. - explicit TreeSupportSettings(const TreeSupportMeshGroupSettings &mesh_group_settings, const SlicingParameters &slicing_params); + explicit TreeSupportSettings(const TreeSupportMeshGroupSettings &mesh_group_settings, const SlicingParameters &slicing_params) + : support_line_width(mesh_group_settings.support_line_width), + layer_height(mesh_group_settings.layer_height), + branch_radius(mesh_group_settings.support_tree_branch_diameter / 2), + min_radius(mesh_group_settings.support_tree_tip_diameter / 2), // The actual radius is 50 microns larger as the resulting branches will be increased by 50 microns to avoid rounding errors effectively increasing the xydistance + maximum_move_distance((mesh_group_settings.support_tree_angle < M_PI / 2.) ? (coord_t)(tan(mesh_group_settings.support_tree_angle) * layer_height) : std::numeric_limits::max()), + maximum_move_distance_slow((mesh_group_settings.support_tree_angle_slow < M_PI / 2.) ? (coord_t)(tan(mesh_group_settings.support_tree_angle_slow) * layer_height) : std::numeric_limits::max()), + support_bottom_layers(mesh_group_settings.support_bottom_enable ? (mesh_group_settings.support_bottom_height + layer_height / 2) / layer_height : 0), + // Ensure lines always stack nicely even if layer height is large. + tip_layers(std::max((branch_radius - min_radius) / (support_line_width / 3), branch_radius / layer_height)), + branch_radius_increase_per_layer(tan(mesh_group_settings.support_tree_branch_diameter_angle) * layer_height), + max_to_model_radius_increase(mesh_group_settings.support_tree_max_diameter_increase_by_merges_when_support_to_model / 2), + min_dtt_to_model(round_up_divide(mesh_group_settings.support_tree_min_height_to_model, layer_height)), + increase_radius_until_radius(mesh_group_settings.support_tree_branch_diameter / 2), + increase_radius_until_layer(increase_radius_until_radius <= branch_radius ? tip_layers * (increase_radius_until_radius / branch_radius) : (increase_radius_until_radius - branch_radius) / branch_radius_increase_per_layer), + support_rests_on_model(! mesh_group_settings.support_material_buildplate_only), + xy_distance(mesh_group_settings.support_xy_distance), + xy_min_distance(std::min(mesh_group_settings.support_xy_distance, mesh_group_settings.support_xy_distance_overhang)), + bp_radius(mesh_group_settings.support_tree_bp_diameter / 2), + // Increase by half a line overlap, but not faster than 40 degrees angle (0 degrees means zero increase in radius). + bp_radius_increase_per_layer(std::min(tan(0.7) * layer_height, 0.5 * support_line_width)), + z_distance_bottom_layers(size_t(round(double(mesh_group_settings.support_bottom_distance) / double(layer_height)))), + z_distance_top_layers(size_t(round(double(mesh_group_settings.support_top_distance) / double(layer_height)))), + // support_infill_angles(mesh_group_settings.support_infill_angles), + support_roof_angles(mesh_group_settings.support_roof_angles), + roof_pattern(mesh_group_settings.support_roof_pattern), + support_pattern(mesh_group_settings.support_pattern), + support_roof_line_width(mesh_group_settings.support_roof_line_width), + support_line_spacing(mesh_group_settings.support_line_spacing), + support_bottom_offset(mesh_group_settings.support_bottom_offset), + support_wall_count(mesh_group_settings.support_wall_count), + resolution(mesh_group_settings.resolution), + support_roof_line_distance(mesh_group_settings.support_roof_line_distance), // in the end the actual infill has to be calculated to subtract interface from support areas according to interface_preference. + settings(mesh_group_settings), + min_feature_size(mesh_group_settings.min_feature_size) + { + // At least one tip layer must be defined. + assert(tip_layers > 0); + + layer_start_bp_radius = (bp_radius - branch_radius) / bp_radius_increase_per_layer; + + if (TreeSupportSettings::soluble) { + // safeOffsetInc can only work in steps of the size xy_min_distance in the worst case => xy_min_distance has to be a bit larger than 0 in this worst case and should be large enough for performance to not suffer extremely + // When for all meshes the z bottom and top distance is more than one layer though the worst case is xy_min_distance + min_feature_size + // This is not the best solution, but the only one to ensure areas can not lag though walls at high maximum_move_distance. + xy_min_distance = std::max(xy_min_distance, scaled(0.1)); + xy_distance = std::max(xy_distance, xy_min_distance); + } + + // const std::unordered_map interface_map = { { "support_area_overwrite_interface_area", InterfacePreference::SupportAreaOverwritesInterface }, { "interface_area_overwrite_support_area", InterfacePreference::InterfaceAreaOverwritesSupport }, { "support_lines_overwrite_interface_area", InterfacePreference::SupportLinesOverwriteInterface }, { "interface_lines_overwrite_support_area", InterfacePreference::InterfaceLinesOverwriteSupport }, { "nothing", InterfacePreference::Nothing } }; + // interface_preference = interface_map.at(mesh_group_settings.get("support_interface_priority")); + //FIXME this was the default + // interface_preference = InterfacePreference::SupportLinesOverwriteInterface; + //interface_preference = InterfacePreference::SupportAreaOverwritesInterface; + interface_preference = InterfacePreference::InterfaceAreaOverwritesSupport; + + if (slicing_params.raft_layers() > 0) { + // Fill in raft_layers with the heights of the layers below the first object layer. + // First layer + double z = slicing_params.first_print_layer_height; + this->raft_layers.emplace_back(z); + // Raft base layers + for (size_t i = 1; i < slicing_params.base_raft_layers; ++ i) { + z += slicing_params.base_raft_layer_height; + this->raft_layers.emplace_back(z); + } + // Raft interface layers + for (size_t i = 0; i + 1 < slicing_params.interface_raft_layers; ++ i) { + z += slicing_params.interface_raft_layer_height; + this->raft_layers.emplace_back(z); + } + // Raft contact layer + if (slicing_params.raft_layers() > 1) { + z = slicing_params.raft_contact_top_z; + this->raft_layers.emplace_back(z); + } + if (double dist_to_go = slicing_params.object_print_z_min - z; dist_to_go > EPSILON) { + // Layers between the raft contacts and bottom of the object. + auto nsteps = int(ceil(dist_to_go / slicing_params.max_suport_layer_height)); + double step = dist_to_go / nsteps; + for (int i = 0; i < nsteps; ++ i) { + z += step; + this->raft_layers.emplace_back(z); + } + } + } + } // some static variables dependent on other meshes that are not currently processed. // Has to be static because TreeSupportConfig will be used in TreeModelVolumes as this reduces redundancy. @@ -450,7 +619,20 @@ static constexpr const bool polygons_strictly_simple = false; inline double tiny_area_threshold() { return sqr(scaled(0.001)); } -void tree_supports_show_error(std::string_view message, bool critical); +void tree_supports_show_error(std::string_view message, bool critical) +{ // todo Remove! ONLY FOR PUBLIC BETA!! + printf("Error: %s, critical: %d\n", message.data(), int(critical)); +#ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 + static bool g_showed_critical_error = false; + static bool g_showed_performance_warning = false; + auto bugtype = std::string(critical ? " This is a critical bug. It may cause missing or malformed branches.\n" : "This bug should only decrease performance.\n"); + bool show = (critical && !g_showed_critical_error) || (!critical && !g_showed_performance_warning); + (critical ? g_showed_critical_error : g_showed_performance_warning) = true; + if (show) + MessageBoxA(nullptr, std::string("TreeSupport_2 MOD detected an error while generating the tree support.\nPlease report this back to me with profile and model.\nRevision 5.0\n" + std::string(message) + "\n" + bugtype).c_str(), + "Bug detected!", MB_OK | MB_SYSTEMMODAL | MB_SETFOREGROUND | MB_ICONWARNING); +#endif // TREE_SUPPORT_SHOW_ERRORS_WIN32 +} inline double layer_z(const SlicingParameters &slicing_params, const TreeSupportSettings &config, const size_t layer_idx) { @@ -584,7 +766,7 @@ class InterfacePlacer { std::mutex m_mutex_layer_storage; }; -} // namespace FFFTreeSupport +} // namespace TreeSupport3D } // namespace Slic3r diff --git a/src/libslic3r/SupportMaterial.cpp b/src/libslic3r/SupportMaterial.cpp deleted file mode 100644 index b022607bf75..00000000000 --- a/src/libslic3r/SupportMaterial.cpp +++ /dev/null @@ -1,4960 +0,0 @@ -#include "ClipperUtils.hpp" -#include "ExtrusionEntity.hpp" -#include "ExtrusionEntityCollection.hpp" -#include "Layer.hpp" -#include "Print.hpp" -#include "SupportMaterial.hpp" -#include "Fill/FillBase.hpp" -#include "Geometry.hpp" -#include "Point.hpp" -#include "MutablePolygon.hpp" - -#include -#include -#include -#include - -#include -#include -#include - -#define SUPPORT_USE_AGG_RASTERIZER - -#ifdef SUPPORT_USE_AGG_RASTERIZER - #include - #include - #include - #include - #include - #include "PNGReadWrite.hpp" -#else - #include "EdgeGrid.hpp" -#endif // SUPPORT_USE_AGG_RASTERIZER - -// #define SLIC3R_DEBUG -// #define SUPPORT_TREE_DEBUG_TO_SVG -// Make assert active if SLIC3R_DEBUG -#if defined(SLIC3R_DEBUG) || defined(SUPPORT_TREE_DEBUG_TO_SVG) - #define DEBUG - #define _DEBUG - #undef NDEBUG - #include "utils.hpp" - #include "SVG.hpp" -#endif - -#ifndef SQ -#define SQ(x) ((x)*(x)) -#endif - -// #undef NDEBUG -#include - -namespace Slic3r { - -// how much we extend support around the actual contact area -//FIXME this should be dependent on the nozzle diameter! -// BBS: change from 1.5 to 1.2 -#define SUPPORT_MATERIAL_MARGIN 1.2 - -// Increment used to reach MARGIN in steps to avoid trespassing thin objects -#define NUM_MARGIN_STEPS 3 - -// Dimensions of a tree-like structure to save material -#define PILLAR_SIZE (2.5) -#define PILLAR_SPACING 10 - -//#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtMiter, 3. -//#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtMiter, 1.5 -#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtSquare, 0. - -static constexpr bool support_with_sheath = false; - -#ifdef SLIC3R_DEBUG -const char* support_surface_type_to_color_name(const PrintObjectSupportMaterial::SupporLayerType surface_type) -{ - switch (surface_type) { - case PrintObjectSupportMaterial::sltTopContact: return "rgb(255,0,0)"; // "red"; - case PrintObjectSupportMaterial::sltTopInterface: return "rgb(0,255,0)"; // "green"; - case PrintObjectSupportMaterial::sltBase: return "rgb(0,0,255)"; // "blue"; - case PrintObjectSupportMaterial::sltBottomInterface:return "rgb(255,255,128)"; // yellow - case PrintObjectSupportMaterial::sltBottomContact: return "rgb(255,0,255)"; // magenta - case PrintObjectSupportMaterial::sltRaftInterface: return "rgb(0,255,255)"; - case PrintObjectSupportMaterial::sltRaftBase: return "rgb(128,128,128)"; - case PrintObjectSupportMaterial::sltUnknown: return "rgb(128,0,0)"; // maroon - default: return "rgb(64,64,64)"; - }; -} - -Point export_support_surface_type_legend_to_svg_box_size() -{ - return Point(scale_(1.+10.*8.), scale_(3.)); -} - -void export_support_surface_type_legend_to_svg(SVG &svg, const Point &pos) -{ - // 1st row - coord_t pos_x0 = pos(0) + scale_(1.); - coord_t pos_x = pos_x0; - coord_t pos_y = pos(1) + scale_(1.5); - coord_t step_x = scale_(10.); - svg.draw_legend(Point(pos_x, pos_y), "top contact" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltTopContact)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "top iface" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltTopInterface)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "base" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltBase)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "bottom iface" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltBottomInterface)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "bottom contact" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltBottomContact)); - // 2nd row - pos_x = pos_x0; - pos_y = pos(1)+scale_(2.8); - svg.draw_legend(Point(pos_x, pos_y), "raft interface" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltRaftInterface)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "raft base" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltRaftBase)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "unknown" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltUnknown)); - pos_x += step_x; - svg.draw_legend(Point(pos_x, pos_y), "intermediate" , support_surface_type_to_color_name(PrintObjectSupportMaterial::sltIntermediate)); -} - -void export_print_z_polygons_to_svg(const char *path, PrintObjectSupportMaterial::MyLayer ** const layers, size_t n_layers) -{ - BoundingBox bbox; - for (int i = 0; i < n_layers; ++ i) - bbox.merge(get_extents(layers[i]->polygons)); - Point legend_size = export_support_surface_type_legend_to_svg_box_size(); - Point legend_pos(bbox.min(0), bbox.max(1)); - bbox.merge(Point(std::max(bbox.min(0) + legend_size(0), bbox.max(0)), bbox.max(1) + legend_size(1))); - SVG svg(path, bbox); - const float transparency = 0.5f; - for (int i = 0; i < n_layers; ++ i) - svg.draw(union_ex(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type), transparency); - for (int i = 0; i < n_layers; ++ i) - svg.draw(to_polylines(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type)); - export_support_surface_type_legend_to_svg(svg, legend_pos); - svg.Close(); -} - -void export_print_z_polygons_and_extrusions_to_svg( - const char *path, - PrintObjectSupportMaterial::MyLayer ** const layers, - size_t n_layers, - SupportLayer &support_layer) -{ - BoundingBox bbox; - for (int i = 0; i < n_layers; ++ i) - bbox.merge(get_extents(layers[i]->polygons)); - Point legend_size = export_support_surface_type_legend_to_svg_box_size(); - Point legend_pos(bbox.min(0), bbox.max(1)); - bbox.merge(Point(std::max(bbox.min(0) + legend_size(0), bbox.max(0)), bbox.max(1) + legend_size(1))); - SVG svg(path, bbox); - const float transparency = 0.5f; - for (int i = 0; i < n_layers; ++ i) - svg.draw(union_ex(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type), transparency); - for (int i = 0; i < n_layers; ++ i) - svg.draw(to_polylines(layers[i]->polygons), support_surface_type_to_color_name(layers[i]->layer_type)); - - Polygons polygons_support, polygons_interface; - support_layer.support_fills.polygons_covered_by_width(polygons_support, float(SCALED_EPSILON)); -// support_layer.support_interface_fills.polygons_covered_by_width(polygons_interface, SCALED_EPSILON); - svg.draw(union_ex(polygons_support), "brown"); - svg.draw(union_ex(polygons_interface), "black"); - - export_support_surface_type_legend_to_svg(svg, legend_pos); - svg.Close(); -} -#endif /* SLIC3R_DEBUG */ - -#ifdef SUPPORT_USE_AGG_RASTERIZER -static std::vector rasterize_polygons(const Vec2i32 &grid_size, const double pixel_size, const Point &left_bottom, const Polygons &polygons) -{ - std::vector data(grid_size.x() * grid_size.y()); - agg::rendering_buffer rendering_buffer(data.data(), unsigned(grid_size.x()), unsigned(grid_size.y()), grid_size.x()); - agg::pixfmt_gray8 pixel_renderer(rendering_buffer); - agg::renderer_base raw_renderer(pixel_renderer); - agg::renderer_scanline_aa_solid> renderer(raw_renderer); - - renderer.color(agg::pixfmt_gray8::color_type(255)); - raw_renderer.clear(agg::pixfmt_gray8::color_type(0)); - - agg::scanline_p8 scanline; - agg::rasterizer_scanline_aa<> rasterizer; - - auto convert_pt = [left_bottom, pixel_size](const Point &pt) { - return Vec2d((pt.x() - left_bottom.x()) / pixel_size, (pt.y() - left_bottom.y()) / pixel_size); - }; - rasterizer.reset(); - for (const Polygon &polygon : polygons) { - agg::path_storage path; - auto it = polygon.points.begin(); - Vec2d pt_front = convert_pt(*it); - path.move_to(pt_front.x(), pt_front.y()); - while (++ it != polygon.points.end()) { - Vec2d pt = convert_pt(*it); - path.line_to(pt.x(), pt.y()); - } - path.line_to(pt_front.x(), pt_front.y()); - rasterizer.add_path(std::move(path)); - } - agg::render_scanlines(rasterizer, scanline, renderer); - return data; -} -// Grid has to have the boundary pixels unset. -static Polygons contours_simplified(const Vec2i32 &grid_size, const double pixel_size, Point left_bottom, const std::vector &grid, coord_t offset, bool fill_holes) -{ - assert(std::abs(2 * offset) < pixel_size - 10); - - // Fill in empty cells, which have a left / right neighbor filled. - // Fill in empty cells, which have the top / bottom neighbor filled. - std::vector cell_inside_data; - const std::vector &cell_inside = fill_holes ? cell_inside_data : grid; - if (fill_holes) { - cell_inside_data = grid; - for (int r = 1; r + 1 < grid_size.y(); ++ r) { - for (int c = 1; c + 1 < grid_size.x(); ++ c) { - int addr = r * grid_size.x() + c; - if ((grid[addr - 1] != 0 && grid[addr + 1] != 0) || - (grid[addr - grid_size.x()] != 0 && grid[addr + grid_size.x()] != 0)) - cell_inside_data[addr] = true; - } - } - } - - // 1) Collect the lines. - std::vector lines; - std::vector> start_point_to_line_idx; - for (int r = 1; r < grid_size.y(); ++ r) { - for (int c = 1; c < grid_size.x(); ++ c) { - int addr = r * grid_size.x() + c; - bool left = cell_inside[addr - 1] != 0; - bool top = cell_inside[addr - grid_size.x()] != 0; - bool current = cell_inside[addr] != 0; - if (left != current) { - lines.push_back( - left ? - Line(Point(c, r+1), Point(c, r )) : - Line(Point(c, r ), Point(c, r+1))); - start_point_to_line_idx.emplace_back(lines.back().a, int(lines.size()) - 1); - } - if (top != current) { - lines.push_back( - top ? - Line(Point(c , r), Point(c+1, r)) : - Line(Point(c+1, r), Point(c , r))); - start_point_to_line_idx.emplace_back(lines.back().a, int(lines.size()) - 1); - } - } - } - std::sort(start_point_to_line_idx.begin(), start_point_to_line_idx.end(), [](const auto &l, const auto &r){ return l.first < r.first; }); - - // 2) Chain the lines. - std::vector line_processed(lines.size(), false); - Polygons out; - for (int i_candidate = 0; i_candidate < int(lines.size()); ++ i_candidate) { - if (line_processed[i_candidate]) - continue; - Polygon poly; - line_processed[i_candidate] = true; - poly.points.push_back(lines[i_candidate].b); - int i_line_current = i_candidate; - for (;;) { - auto line_range = std::equal_range(std::begin(start_point_to_line_idx), std::end(start_point_to_line_idx), - std::make_pair(lines[i_line_current].b, 0), [](const auto& l, const auto& r) { return l.first < r.first; }); - // The interval has to be non empty, there shall be at least one line continuing the current one. - assert(line_range.first != line_range.second); - int i_next = -1; - for (auto it = line_range.first; it != line_range.second; ++ it) { - if (it->second == i_candidate) { - // closing the loop. - goto end_of_poly; - } - if (line_processed[it->second]) - continue; - if (i_next == -1) { - i_next = it->second; - } else { - // This is a corner, where two lines meet exactly. Pick the line, which encloses a smallest angle with - // the current edge. - const Line &line_current = lines[i_line_current]; - const Line &line_next = lines[it->second]; - const Vector v1 = line_current.vector(); - const Vector v2 = line_next.vector(); - int64_t cross = int64_t(v1(0)) * int64_t(v2(1)) - int64_t(v2(0)) * int64_t(v1(1)); - if (cross > 0) { - // This has to be a convex right angle. There is no better next line. - i_next = it->second; - break; - } - } - } - line_processed[i_next] = true; - i_line_current = i_next; - poly.points.push_back(lines[i_line_current].b); - } - end_of_poly: - out.push_back(std::move(poly)); - } - - // 3) Scale the polygons back into world, shrink slightly and remove collinear points. - for (Polygon &poly : out) { - for (Point &p : poly.points) { -#if 0 - p.x() = (p.x() + 1) * pixel_size + left_bottom.x(); - p.y() = (p.y() + 1) * pixel_size + left_bottom.y(); -#else - p *= pixel_size; - p += left_bottom; -#endif - } - // Shrink the contour slightly, so if the same contour gets discretized and simplified again, one will get the same result. - // Remove collinear points. - Points pts; - pts.reserve(poly.points.size()); - for (size_t j = 0; j < poly.points.size(); ++ j) { - size_t j0 = (j == 0) ? poly.points.size() - 1 : j - 1; - size_t j2 = (j + 1 == poly.points.size()) ? 0 : j + 1; - Point v = poly.points[j2] - poly.points[j0]; - if (v(0) != 0 && v(1) != 0) { - // This is a corner point. Copy it to the output contour. - Point p = poly.points[j]; - p(1) += (v(0) < 0) ? - offset : offset; - p(0) += (v(1) > 0) ? - offset : offset; - pts.push_back(p); - } - } - poly.points = std::move(pts); - } - return out; -} -#endif // SUPPORT_USE_AGG_RASTERIZER - -static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag = "bbl_ts") -{ - static bool rand_init = false; - - if (!rand_init) { - srand(time(NULL)); - rand_init = true; - } - - int rand_num = rand() % 1000000; - //makedir("./SVG"); - std::string prefix = "./SVG/"; - std::string suffix = ".svg"; - return prefix + tag + "_" + layer_nr_or_z /*+ "_" + std::to_string(rand_num)*/ + suffix; -} - -PrintObjectSupportMaterial::PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params) : - m_object (object), - m_print_config (&object->print()->config()), - m_object_config (&object->config()), - m_slicing_params (slicing_params) -{ - m_support_params.first_layer_flow = support_material_1st_layer_flow(object, float(slicing_params.first_print_layer_height)); - m_support_params.support_material_flow = support_material_flow(object, float(slicing_params.layer_height)); - m_support_params.support_material_interface_flow = support_material_interface_flow(object, float(slicing_params.layer_height)); - m_support_params.support_layer_height_min = 0.01; - - // Calculate a minimum support layer height as a minimum over all extruders, but not smaller than 10um. - m_support_params.support_layer_height_min = 1000000.; - for (auto lh : m_print_config->min_layer_height.values) - m_support_params.support_layer_height_min = std::min(m_support_params.support_layer_height_min, std::max(0.01, lh)); - for (auto layer : m_object->layers()) - m_support_params.support_layer_height_min = std::min(m_support_params.support_layer_height_min, std::max(0.01, layer->height)); - - if (m_object_config->support_interface_top_layers.value == 0) { - // No interface layers allowed, print everything with the base support pattern. - m_support_params.support_material_interface_flow = m_support_params.support_material_flow; - } - - // Evaluate the XY gap between the object outer perimeters and the support structures. - // Evaluate the XY gap between the object outer perimeters and the support structures. - coordf_t external_perimeter_width = 0.; - coordf_t bridge_flow = 0; - for (size_t region_id = 0; region_id < object->num_printing_regions(); ++ region_id) { - const PrintRegion ®ion = object->printing_region(region_id); - external_perimeter_width = std::max(external_perimeter_width, coordf_t(region.flow(*object, frExternalPerimeter, slicing_params.layer_height).width())); - bridge_flow += region.config().bridge_flow; - } - m_support_params.gap_xy = m_object_config->support_object_xy_distance.value; - bridge_flow /= object->num_printing_regions(); - - m_support_params.support_material_bottom_interface_flow = m_slicing_params.soluble_interface || ! m_object_config->thick_bridges ? - m_support_params.support_material_interface_flow.with_flow_ratio(bridge_flow) : - Flow::bridging_flow(bridge_flow * m_support_params.support_material_interface_flow.nozzle_diameter(), m_support_params.support_material_interface_flow.nozzle_diameter()); - - m_support_params.can_merge_support_regions = m_object_config->support_filament.value == m_object_config->support_interface_filament.value; - if (!m_support_params.can_merge_support_regions && (m_object_config->support_filament.value == 0 || m_object_config->support_interface_filament.value == 0)) { - // One of the support extruders is of "don't care" type. - auto object_extruders = m_object->object_extruders(); - if (object_extruders.size() == 1 && - *object_extruders.begin() == std::max(m_object_config->support_filament.value, m_object_config->support_interface_filament.value)) - // Object is printed with the same extruder as the support. - m_support_params.can_merge_support_regions = true; - } - - - m_support_params.base_angle = Geometry::deg2rad(float(m_object_config->support_angle.value)); - m_support_params.interface_angle = Geometry::deg2rad(float(m_object_config->support_angle.value + 90.)); - m_support_params.interface_spacing = m_object_config->support_interface_spacing.value + m_support_params.support_material_interface_flow.spacing(); - m_support_params.interface_density = std::min(1., m_support_params.support_material_interface_flow.spacing() / m_support_params.interface_spacing); - m_support_params.support_spacing = m_object_config->support_base_pattern_spacing.value + m_support_params.support_material_flow.spacing(); - m_support_params.support_density = std::min(1., m_support_params.support_material_flow.spacing() / m_support_params.support_spacing); - if (m_object_config->support_interface_top_layers.value == 0) { - // No interface layers allowed, print everything with the base support pattern. - m_support_params.interface_spacing = m_support_params.support_spacing; - m_support_params.interface_density = m_support_params.support_density; - } - - SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; - m_support_params.with_sheath = support_with_sheath; - m_support_params.base_fill_pattern = - support_pattern == smpHoneycomb ? ipHoneycomb : - m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase; - m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); - if (m_object_config->support_interface_pattern == smipGrid) - m_support_params.contact_fill_pattern = ipGrid; - else if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - m_support_params.contact_fill_pattern = ipRectilinear; - else - m_support_params.contact_fill_pattern = - (m_object_config->support_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || - m_object_config->support_interface_pattern == smipConcentric ? - ipConcentric : - (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); -} - -// Using the std::deque as an allocator. -inline PrintObjectSupportMaterial::MyLayer& layer_allocate( - std::deque &layer_storage, - PrintObjectSupportMaterial::SupporLayerType layer_type) -{ - layer_storage.push_back(PrintObjectSupportMaterial::MyLayer()); - layer_storage.back().layer_type = layer_type; - return layer_storage.back(); -} - -inline PrintObjectSupportMaterial::MyLayer& layer_allocate( - std::deque &layer_storage, - tbb::spin_mutex &layer_storage_mutex, - PrintObjectSupportMaterial::SupporLayerType layer_type) -{ - layer_storage_mutex.lock(); - layer_storage.push_back(PrintObjectSupportMaterial::MyLayer()); - PrintObjectSupportMaterial::MyLayer *layer_new = &layer_storage.back(); - layer_storage_mutex.unlock(); - layer_new->layer_type = layer_type; - return *layer_new; -} - -inline void layers_append(PrintObjectSupportMaterial::MyLayersPtr &dst, const PrintObjectSupportMaterial::MyLayersPtr &src) -{ - dst.insert(dst.end(), src.begin(), src.end()); -} - -// Support layer that is covered by some form of dense interface. -static constexpr const std::initializer_list support_types_interface { - PrintObjectSupportMaterial::sltRaftInterface, PrintObjectSupportMaterial::sltBottomContact, PrintObjectSupportMaterial::sltBottomInterface, PrintObjectSupportMaterial::sltTopContact, PrintObjectSupportMaterial::sltTopInterface -}; - -void PrintObjectSupportMaterial::generate(PrintObject &object) -{ - BOOST_LOG_TRIVIAL(info) << "Support generator - Start"; - - coordf_t max_object_layer_height = 0.; - for (size_t i = 0; i < object.layer_count(); ++ i) - max_object_layer_height = std::max(max_object_layer_height, object.layers()[i]->height); - - // Layer instances will be allocated by std::deque and they will be kept until the end of this function call. - // The layers will be referenced by various LayersPtr (of type std::vector) - MyLayerStorage layer_storage; - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating top contacts"; - - // Per object layer projection of the object below the layer into print bed. - std::vector buildplate_covered = this->buildplate_covered(object); - - // Determine the top contact surfaces of the support, defined as: - // contact = overhangs - clearance + margin - // This method is responsible for identifying what contact surfaces - // should the support material expose to the object in order to guarantee - // that it will be effective, regardless of how it's built below. - // If raft is to be generated, the 1st top_contact layer will contain the 1st object layer silhouette without holes. - MyLayersPtr top_contacts = this->top_contact_layers(object, buildplate_covered, layer_storage); - if (top_contacts.empty()) - // Nothing is supported, no supports are generated. - return; - - if (object.print()->canceled()) - return; - -#ifdef SLIC3R_DEBUG - static int iRun = 0; - iRun ++; - for (const MyLayer *layer : top_contacts) - Slic3r::SVG::export_expolygons( - debug_out_path("support-top-contacts-%d-%lf.svg", iRun, layer->print_z), - union_ex(layer->polygons)); -#endif /* SLIC3R_DEBUG */ - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating bottom contacts"; - - // Determine the bottom contact surfaces of the supports over the top surfaces of the object. - // Depending on whether the support is soluble or not, the contact layer thickness is decided. - // layer_support_areas contains the per object layer support areas. These per object layer support areas - // may get merged and trimmed by this->generate_base_layers() if the support layers are not synchronized with object layers. - std::vector layer_support_areas; - MyLayersPtr bottom_contacts = this->bottom_contact_layers_and_layer_support_areas( - object, top_contacts, buildplate_covered, - layer_storage, layer_support_areas); - - if (object.print()->canceled()) - return; - -#ifdef SLIC3R_DEBUG - for (size_t layer_id = 0; layer_id < object.layers().size(); ++ layer_id) - Slic3r::SVG::export_expolygons( - debug_out_path("support-areas-%d-%lf.svg", iRun, object.layers()[layer_id]->print_z), - union_ex(layer_support_areas[layer_id])); -#endif /* SLIC3R_DEBUG */ - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating intermediate layers - indices"; - - // Allocate empty layers between the top / bottom support contact layers - // as placeholders for the base and intermediate support layers. - // The layers may or may not be synchronized with the object layers, depending on the configuration. - // For example, a single nozzle multi material printing will need to generate a waste tower, which in turn - // wastes less material, if there are as little tool changes as possible. - MyLayersPtr intermediate_layers = this->raft_and_intermediate_support_layers( - object, bottom_contacts, top_contacts, layer_storage); - - this->trim_support_layers_by_object(object, top_contacts, m_slicing_params.gap_support_object, m_slicing_params.gap_object_support, m_support_params.gap_xy); - -#ifdef SLIC3R_DEBUG - for (const MyLayer *layer : top_contacts) - Slic3r::SVG::export_expolygons( - debug_out_path("support-top-contacts-trimmed-by-object-%d-%lf.svg", iRun, layer->print_z), - union_ex(layer->polygons)); -#endif - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating base layers"; - - // Fill in intermediate layers between the top / bottom support contact layers, trim them by the object. - this->generate_base_layers(object, bottom_contacts, top_contacts, intermediate_layers, layer_support_areas); - -#ifdef SLIC3R_DEBUG - for (MyLayersPtr::const_iterator it = intermediate_layers.begin(); it != intermediate_layers.end(); ++ it) - Slic3r::SVG::export_expolygons( - debug_out_path("support-base-layers-%d-%lf.svg", iRun, (*it)->print_z), - union_ex((*it)->polygons)); -#endif /* SLIC3R_DEBUG */ - - BOOST_LOG_TRIVIAL(info) << "Support generator - Trimming top contacts by bottom contacts"; - - // Because the top and bottom contacts are thick slabs, they may overlap causing over extrusion - // and unwanted strong bonds to the object. - // Rather trim the top contacts by their overlapping bottom contacts to leave a gap instead of over extruding - // top contacts over the bottom contacts. - this->trim_top_contacts_by_bottom_contacts(object, bottom_contacts, top_contacts); - - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating interfaces"; - - // Propagate top / bottom contact layers to generate interface layers - // and base interface layers (for soluble interface / non souble base only) - auto [interface_layers, base_interface_layers] = this->generate_interface_layers(bottom_contacts, top_contacts, intermediate_layers, layer_storage); - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating raft"; - - // If raft is to be generated, the 1st top_contact layer will contain the 1st object layer silhouette with holes filled. - // There is also a 1st intermediate layer containing bases of support columns. - // Inflate the bases of the support columns and create the raft base under the object. - MyLayersPtr raft_layers = this->generate_raft_base(object, top_contacts, interface_layers, base_interface_layers, intermediate_layers, layer_storage); - - if (object.print()->canceled()) - return; - -#ifdef SLIC3R_DEBUG - for (const MyLayer *l : interface_layers) - Slic3r::SVG::export_expolygons( - debug_out_path("support-interface-layers-%d-%lf.svg", iRun, l->print_z), - union_ex(l->polygons)); - for (const MyLayer *l : base_interface_layers) - Slic3r::SVG::export_expolygons( - debug_out_path("support-base-interface-layers-%d-%lf.svg", iRun, l->print_z), - union_ex(l->polygons)); -#endif // SLIC3R_DEBUG - -/* - // Clip with the pillars. - if (! shape.empty()) { - this->clip_with_shape(interface, shape); - this->clip_with_shape(base, shape); - } -*/ - - BOOST_LOG_TRIVIAL(info) << "Support generator - Creating layers"; - -// For debugging purposes, one may want to show only some of the support extrusions. -// raft_layers.clear(); -// bottom_contacts.clear(); -// top_contacts.clear(); -// intermediate_layers.clear(); -// interface_layers.clear(); - - // Install support layers into the object. - // A support layer installed on a PrintObject has a unique print_z. - MyLayersPtr layers_sorted; - layers_sorted.reserve(raft_layers.size() + bottom_contacts.size() + top_contacts.size() + intermediate_layers.size() + interface_layers.size() + base_interface_layers.size()); - layers_append(layers_sorted, raft_layers); - layers_append(layers_sorted, bottom_contacts); - layers_append(layers_sorted, top_contacts); - layers_append(layers_sorted, intermediate_layers); - layers_append(layers_sorted, interface_layers); - layers_append(layers_sorted, base_interface_layers); - // Sort the layers lexicographically by a raising print_z and a decreasing height. - std::sort(layers_sorted.begin(), layers_sorted.end(), [](auto *l1, auto *l2) { return *l1 < *l2; }); - - // BBS: MusangKing - erase mini layer heights (< 0.08mm) arised by top/bottom_z_distance & top_contacts under variable layer height - if (this->synchronize_layers() && !object.slicing_parameters().soluble_interface) { - auto thres = m_support_params.support_layer_height_min - EPSILON; - for (size_t i = 1; i < layers_sorted.size() - 1; ++i) { - auto& lowr = layers_sorted[i - 1]; - auto& curr = layers_sorted[i]; - auto& higr = layers_sorted[i + 1]; - // "Rounding" suspicious top/bottom contacts - if (curr->layer_type == sltTopContact || curr->layer_type == sltBottomContact) { - // Check adjacent-layer print_z diffs - coordf_t height_low = curr->print_z - lowr->print_z; - coordf_t height_high = higr->print_z - curr->print_z; - if (height_low < thres || height_high < thres) { - // Mark to-be-deleted layer as Unknown type - curr->layer_type = sltUnknown; - } - } - } - // Retains the order - layers_sorted.erase(std::remove_if(layers_sorted.begin(), layers_sorted.end(), [](MyLayer* l) {return l->layer_type == sltUnknown; }), layers_sorted.end()); - } - - int layer_id = 0; - int layer_id_interface = 0; - assert(object.support_layers().empty()); - for (size_t i = 0; i < layers_sorted.size();) { - // Find the last layer with roughly the same print_z, find the minimum layer height of all. - // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. - size_t j = i + 1; - coordf_t zmax = layers_sorted[i]->print_z + EPSILON; - for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) ; - // Assign an average print_z to the set of layers with nearly equal print_z. - coordf_t zavg = 0.5 * (layers_sorted[i]->print_z + layers_sorted[j - 1]->print_z); - coordf_t height_min = layers_sorted[i]->height; - bool empty = true; - // For snug supports, layers where the direction of the support interface shall change are accounted for. - size_t num_interfaces = 0; - size_t num_top_contacts = 0; - double top_contact_bottom_z = 0; - for (size_t u = i; u < j; ++u) { - MyLayer &layer = *layers_sorted[u]; - if (! layer.polygons.empty()) { - empty = false; - num_interfaces += one_of(layer.layer_type, support_types_interface); - if (layer.layer_type == sltTopContact) { - ++ num_top_contacts; - assert(num_top_contacts <= 1); - // All top contact layers sharing this print_z shall also share bottom_z. - //assert(num_top_contacts == 1 || (top_contact_bottom_z - layer.bottom_z) < EPSILON); - top_contact_bottom_z = layer.bottom_z; - } - } - layer.print_z = zavg; - height_min = std::min(height_min, layer.height); - } - if (! empty) { - // Here the upper_layer and lower_layer pointers are left to null at the support layers, - // as they are never used. These pointers are candidates for removal. - bool this_layer_contacts_only = num_top_contacts > 0 && num_top_contacts == num_interfaces; - size_t this_layer_id_interface = layer_id_interface; - if (this_layer_contacts_only) { - // Find a supporting layer for its interface ID. - for (auto it = object.support_layers().rbegin(); it != object.support_layers().rend(); ++ it) - if (const SupportLayer &other_layer = **it; std::abs(other_layer.print_z - top_contact_bottom_z) < EPSILON) { - // other_layer supports this top contact layer. Assign a different support interface direction to this layer - // from the layer that supports it. - this_layer_id_interface = other_layer.interface_id() + 1; - } - } - object.add_support_layer(layer_id ++, this_layer_id_interface, height_min, zavg); - if (num_interfaces && ! this_layer_contacts_only) - ++ layer_id_interface; - } - i = j; - } - - BOOST_LOG_TRIVIAL(info) << "Support generator - Generating tool paths"; - -#if 0 // #ifdef SLIC3R_DEBUG - { - size_t layer_id = 0; - for (int i = 0; i < int(layers_sorted.size());) { - // Find the last layer with roughly the same print_z, find the minimum layer height of all. - // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. - int j = i + 1; - coordf_t zmax = layers_sorted[i]->print_z + EPSILON; - bool empty = true; - for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) - if (!layers_sorted[j]->polygons.empty()) - empty = false; - if (!empty) { - export_print_z_polygons_to_svg( - debug_out_path("support-%d-%lf-before.svg", iRun, layers_sorted[i]->print_z).c_str(), - layers_sorted.data() + i, j - i); - export_print_z_polygons_and_extrusions_to_svg( - debug_out_path("support-w-fills-%d-%lf-before.svg", iRun, layers_sorted[i]->print_z).c_str(), - layers_sorted.data() + i, j - i, - *object.support_layers()[layer_id]); - ++layer_id; - } - i = j; - } - } -#endif /* SLIC3R_DEBUG */ - -#if 0 // #ifdef SLIC3R_DEBUG - // check bounds - std::ofstream out; - out.open("./SVG/ns_support_layers.txt"); - if (out.is_open()) { - out << "### Support Layers ###" << std::endl; - for (auto& i : object.support_layers()) { - out << i->print_z << std::endl; - } - } -#endif /* SLIC3R_DEBUG */ - - // Generate the actual toolpaths and save them into each layer. - this->generate_toolpaths(object.support_layers(), raft_layers, bottom_contacts, top_contacts, intermediate_layers, interface_layers, base_interface_layers); - -#ifdef SLIC3R_DEBUG - { - size_t layer_id = 0; - for (int i = 0; i < int(layers_sorted.size());) { - // Find the last layer with roughly the same print_z, find the minimum layer height of all. - // Due to the floating point inaccuracies, the print_z may not be the same even if in theory they should. - int j = i + 1; - coordf_t zmax = layers_sorted[i]->print_z + EPSILON; - bool empty = true; - for (; j < layers_sorted.size() && layers_sorted[j]->print_z <= zmax; ++j) - if (! layers_sorted[j]->polygons.empty()) - empty = false; - if (! empty) { - export_print_z_polygons_to_svg( - debug_out_path("support-%d-%lf.svg", iRun, layers_sorted[i]->print_z).c_str(), - layers_sorted.data() + i, j - i); - export_print_z_polygons_and_extrusions_to_svg( - debug_out_path("support-w-fills-%d-%lf.svg", iRun, layers_sorted[i]->print_z).c_str(), - layers_sorted.data() + i, j - i, - *object.support_layers()[layer_id]); - ++layer_id; - } - i = j; - } - } -#endif /* SLIC3R_DEBUG */ - - BOOST_LOG_TRIVIAL(info) << "Support generator - End"; -} - -// Collect all polygons of all regions in a layer with a given surface type. -Polygons collect_region_slices_by_type(const Layer &layer, SurfaceType surface_type) -{ - // 1) Count the new polygons first. - size_t n_polygons_new = 0; - for (const LayerRegion *region : layer.regions()) - for (const Surface &surface : region->slices.surfaces) - if (surface.surface_type == surface_type) - n_polygons_new += surface.expolygon.holes.size() + 1; - // 2) Collect the new polygons. - Polygons out; - out.reserve(n_polygons_new); - for (const LayerRegion *region : layer.regions()) - for (const Surface &surface : region->slices.surfaces) - if (surface.surface_type == surface_type) - polygons_append(out, surface.expolygon); - return out; -} - -// Collect outer contours of all slices of this layer. -// This is useful for calculating the support base with holes filled. -Polygons collect_slices_outer(const Layer &layer) -{ - Polygons out; - out.reserve(out.size() + layer.lslices.size()); - for (const ExPolygon &expoly : layer.lslices) - out.emplace_back(expoly.contour); - return out; -} - -struct SupportGridParams { - SupportGridParams(const PrintObjectConfig &object_config, const Flow &support_material_flow) : - style(object_config.support_style.value), - grid_resolution(object_config.support_base_pattern_spacing.value + support_material_flow.spacing()), - support_angle(Geometry::deg2rad(object_config.support_angle.value)), - extrusion_width(support_material_flow.spacing()), - //support_closing_radius(object_config.support_closing_radius.value), - support_closing_radius(2.0), - expansion_to_slice(coord_t(support_material_flow.scaled_spacing() / 2 + 5)), - expansion_to_propagate(-3) {} - - SupportMaterialStyle style; - double grid_resolution; - double support_angle; - double extrusion_width; - double support_closing_radius; - coord_t expansion_to_slice; - coord_t expansion_to_propagate; -}; - -class SupportGridPattern -{ -public: - SupportGridPattern( - // Support islands, to be stretched into a grid. Already trimmed with min(lower_layer_offset, m_gap_xy) - const Polygons *support_polygons, - // Trimming polygons, to trim the stretched support islands. support_polygons were already trimmed with trimming_polygons. - const Polygons *trimming_polygons, - const SupportGridParams ¶ms) : - m_style(params.style), - m_support_polygons(support_polygons), m_trimming_polygons(trimming_polygons), - m_support_spacing(params.grid_resolution), m_support_angle(params.support_angle), - m_extrusion_width(params.extrusion_width), - m_support_material_closing_radius(params.support_closing_radius) - { - if (m_style != smsSnug) m_style = smsGrid; - switch (m_style) { - case smsGrid: - { - // Prepare the grid data, it will be reused when extracting support structures. - if (m_support_angle != 0.) { - // Create a copy of the rotated contours. - m_support_polygons_rotated = *support_polygons; - m_trimming_polygons_rotated = *trimming_polygons; - m_support_polygons = &m_support_polygons_rotated; - m_trimming_polygons = &m_trimming_polygons_rotated; - polygons_rotate(m_support_polygons_rotated, - params.support_angle); - polygons_rotate(m_trimming_polygons_rotated, - params.support_angle); - } - - // Resolution of the sparse support grid. - coord_t grid_resolution = coord_t(scale_(m_support_spacing)); - BoundingBox bbox = get_extents(*m_support_polygons); - bbox.offset(20); - // Align the bounding box with the sparse support grid. - bbox.align_to_grid(grid_resolution); - - #ifdef SUPPORT_USE_AGG_RASTERIZER - m_bbox = bbox; - // Oversample the grid to avoid leaking of supports through or around the object walls. - int extrusion_width_scaled = scale_(params.extrusion_width); - int oversampling = std::clamp(int(scale_(m_support_spacing) / (extrusion_width_scaled + 100)), 1, 8); - m_pixel_size = std::max(extrusion_width_scaled + 21, scale_(m_support_spacing / oversampling)); - // Add one empty column / row boundaries. - m_bbox.offset(m_pixel_size); - // Grid size fitting the support polygons plus one pixel boundary around the polygons. - Vec2i32 grid_size_raw(int(ceil((m_bbox.max.x() - m_bbox.min.x()) / m_pixel_size)), - int(ceil((m_bbox.max.y() - m_bbox.min.y()) / m_pixel_size))); - // Overlay macro blocks of (oversampling x oversampling) over the grid. - Vec2i32 grid_blocks((grid_size_raw.x() + oversampling - 1 - 2) / oversampling, - (grid_size_raw.y() + oversampling - 1 - 2) / oversampling); - // and resize the grid to fit the macro blocks + one pixel boundary. - m_grid_size = grid_blocks * oversampling + Vec2i32(2, 2); - assert(m_grid_size.x() >= grid_size_raw.x()); - assert(m_grid_size.y() >= grid_size_raw.y()); - m_grid2 = rasterize_polygons(m_grid_size, m_pixel_size, m_bbox.min, *m_support_polygons); - - seed_fill_block(m_grid2, m_grid_size, - dilate_trimming_region(rasterize_polygons(m_grid_size, m_pixel_size, m_bbox.min, *m_trimming_polygons), m_grid_size), - grid_blocks, oversampling); - - #ifdef SLIC3R_DEBUG - { - static int irun; - Slic3r::png::write_gray_to_file_scaled(debug_out_path("support-rasterizer-%d.png", irun++), m_grid_size.x(), m_grid_size.y(), m_grid2.data(), 4); - } - #endif // SLIC3R_DEBUG - - #else // SUPPORT_USE_AGG_RASTERIZER - // Create an EdgeGrid, initialize it with projection, initialize signed distance field. - m_grid.set_bbox(bbox); - m_grid.create(*m_support_polygons, grid_resolution); - #if 0 - if (m_grid.has_intersecting_edges()) { - // EdgeGrid fails to produce valid signed distance function for self-intersecting polygons. - m_support_polygons_rotated = simplify_polygons(*m_support_polygons); - m_support_polygons = &m_support_polygons_rotated; - m_grid.set_bbox(bbox); - m_grid.create(*m_support_polygons, grid_resolution); - // assert(! m_grid.has_intersecting_edges()); - printf("SupportGridPattern: fixing polygons with intersection %s\n", - m_grid.has_intersecting_edges() ? "FAILED" : "SUCCEEDED"); - } - #endif - m_grid.calculate_sdf(); - #endif // SUPPORT_USE_AGG_RASTERIZER - break; - } - - case smsSnug: - default: - // nothing to prepare - break; - } - } - - // Extract polygons from the grid, offsetted by offset_in_grid, - // and trim the extracted polygons by trimming_polygons. - // Trimming by the trimming_polygons may split the extracted polygons into pieces. - // Remove all the pieces, which do not contain any of the island_samples. - Polygons extract_support(const coord_t offset_in_grid, bool fill_holes -#ifdef SLIC3R_DEBUG - , const char *step_name, int iRun, size_t layer_id, double print_z -#endif - ) - { - switch (m_style) { - case smsGrid: - { - #ifdef SUPPORT_USE_AGG_RASTERIZER - Polygons support_polygons_simplified = contours_simplified(m_grid_size, m_pixel_size, m_bbox.min, m_grid2, offset_in_grid, fill_holes); - #else // SUPPORT_USE_AGG_RASTERIZER - // Generate islands, so each island may be tested for overlap with island_samples. - assert(std::abs(2 * offset_in_grid) < m_grid.resolution()); - Polygons support_polygons_simplified = m_grid.contours_simplified(offset_in_grid, fill_holes); - #endif // SUPPORT_USE_AGG_RASTERIZER - - ExPolygons islands = diff_ex(support_polygons_simplified, *m_trimming_polygons); - - // Extract polygons, which contain some of the island_samples. - Polygons out; - - // Sample a single point per input support polygon, keep it as a reference to maintain corresponding - // polygons if ever these polygons get split into parts by the trimming polygons. - // As offset_in_grid may be negative, m_support_polygons may stick slightly outside of islands. - // Trim ti with islands. - Points samples = island_samples( - offset_in_grid > 0 ? - // Expanding, thus m_support_polygons are all inside islands. - union_ex(*m_support_polygons) : - // Shrinking, thus m_support_polygons may be trimmed a tiny bit by islands. - intersection_ex(*m_support_polygons, islands)); - - std::vector> samples_inside; - for (ExPolygon &island : islands) { - BoundingBox bbox = get_extents(island.contour); - // Samples are sorted lexicographically. - auto it_lower = std::lower_bound(samples.begin(), samples.end(), Point(bbox.min - Point(1, 1))); - auto it_upper = std::upper_bound(samples.begin(), samples.end(), Point(bbox.max + Point(1, 1))); - samples_inside.clear(); - for (auto it = it_lower; it != it_upper; ++ it) - if (bbox.contains(*it)) - samples_inside.push_back(std::make_pair(*it, false)); - if (! samples_inside.empty()) { - // For all samples_inside count the boundary crossing. - for (size_t i_contour = 0; i_contour <= island.holes.size(); ++ i_contour) { - Polygon &contour = (i_contour == 0) ? island.contour : island.holes[i_contour - 1]; - Points::const_iterator i = contour.points.begin(); - Points::const_iterator j = contour.points.end() - 1; - for (; i != contour.points.end(); j = i ++) { - //FIXME this test is not numerically robust. Particularly, it does not handle horizontal segments at y == point(1) well. - // Does the ray with y == point(1) intersect this line segment? - for (auto &sample_inside : samples_inside) { - if (((*i)(1) > sample_inside.first(1)) != ((*j)(1) > sample_inside.first(1))) { - double x1 = (double)sample_inside.first(0); - double x2 = (double)(*i)(0) + (double)((*j)(0) - (*i)(0)) * (double)(sample_inside.first(1) - (*i)(1)) / (double)((*j)(1) - (*i)(1)); - if (x1 < x2) - sample_inside.second = !sample_inside.second; - } - } - } - } - // If any of the sample is inside this island, add this island to the output. - for (auto &sample_inside : samples_inside) - if (sample_inside.second) { - polygons_append(out, std::move(island)); - island.clear(); - break; - } - } - } - - #ifdef SLIC3R_DEBUG - BoundingBox bbox = get_extents(*m_trimming_polygons); - if (! islands.empty()) - bbox.merge(get_extents(islands)); - if (!out.empty()) - bbox.merge(get_extents(out)); - if (!support_polygons_simplified.empty()) - bbox.merge(get_extents(support_polygons_simplified)); - SVG svg(debug_out_path("extract_support_from_grid_trimmed-%s-%d-%d-%lf.svg", step_name, iRun, layer_id, print_z).c_str(), bbox); - if (svg.is_opened()) { - svg.draw(union_ex(support_polygons_simplified), "gray", 0.25f); - svg.draw(islands, "red", 0.5f); - svg.draw(union_ex(out), "green", 0.5f); - svg.draw(union_ex(*m_support_polygons), "blue", 0.5f); - svg.draw_outline(islands, "red", "red", scale_(0.05)); - svg.draw_outline(union_ex(out), "green", "green", scale_(0.05)); - svg.draw_outline(union_ex(*m_support_polygons), "blue", "blue", scale_(0.05)); - for (const Point& pt : samples) - svg.draw(pt, "black", coord_t(scale_(0.15))); - svg.Close(); - } - #endif /* SLIC3R_DEBUG */ - - if (m_support_angle != 0.) - polygons_rotate(out, m_support_angle); - return out; - } - case smsSnug: - // Merge the support polygons by applying morphological closing and inwards smoothing. - auto closing_distance = scaled(m_support_material_closing_radius); - auto smoothing_distance = scaled(m_extrusion_width); -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("extract_support_from_grid_trimmed-%s-%d-%d-%lf.svg", step_name, iRun, layer_id, print_z), - { { { diff_ex(expand(*m_support_polygons, closing_distance), closing(*m_support_polygons, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS)) }, { "closed", "blue", 0.5f } }, - { { union_ex(smooth_outward(closing(*m_support_polygons, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance)) }, { "regularized", "red", "black", "", scaled(0.1f), 0.5f } }, - { { union_ex(*m_support_polygons) }, { "src", "green", 0.5f } }, - }); -#endif /* SLIC3R_DEBUG */ - //FIXME do we want to trim with the object here? On one side the columns will be thinner, on the other side support interfaces may disappear for snug supports. - // return diff(smooth_outward(closing(*m_support_polygons, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance), *m_trimming_polygons); - return smooth_outward(closing(*m_support_polygons, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance); - } - assert(false); - return Polygons(); - } - -#if defined(SLIC3R_DEBUG) && ! defined(SUPPORT_USE_AGG_RASTERIZER) - void serialize(const std::string &path) - { - FILE *file = ::fopen(path.c_str(), "wb"); - ::fwrite(&m_support_spacing, 8, 1, file); - ::fwrite(&m_support_angle, 8, 1, file); - uint32_t n_polygons = m_support_polygons->size(); - ::fwrite(&n_polygons, 4, 1, file); - for (uint32_t i = 0; i < n_polygons; ++ i) { - const Polygon &poly = (*m_support_polygons)[i]; - uint32_t n_points = poly.size(); - ::fwrite(&n_points, 4, 1, file); - for (uint32_t j = 0; j < n_points; ++ j) { - const Point &pt = poly.points[j]; - ::fwrite(&pt.x(), sizeof(coord_t), 1, file); - ::fwrite(&pt.y(), sizeof(coord_t), 1, file); - } - } - n_polygons = m_trimming_polygons->size(); - ::fwrite(&n_polygons, 4, 1, file); - for (uint32_t i = 0; i < n_polygons; ++ i) { - const Polygon &poly = (*m_trimming_polygons)[i]; - uint32_t n_points = poly.size(); - ::fwrite(&n_points, 4, 1, file); - for (uint32_t j = 0; j < n_points; ++ j) { - const Point &pt = poly.points[j]; - ::fwrite(&pt.x(), sizeof(coord_t), 1, file); - ::fwrite(&pt.y(), sizeof(coord_t), 1, file); - } - } - ::fclose(file); - } - - static SupportGridPattern deserialize(const std::string &path, int which = -1) - { - SupportGridPattern out; - out.deserialize_(path, which); - return out; - } - - // Deserialization constructor - bool deserialize_(const std::string &path, int which = -1) - { - FILE *file = ::fopen(path.c_str(), "rb"); - if (file == nullptr) - return false; - - m_support_polygons = &m_support_polygons_deserialized; - m_trimming_polygons = &m_trimming_polygons_deserialized; - - ::fread(&m_support_spacing, 8, 1, file); - ::fread(&m_support_angle, 8, 1, file); - //FIXME - //m_support_spacing *= 0.01 / 2; - uint32_t n_polygons; - ::fread(&n_polygons, 4, 1, file); - m_support_polygons_deserialized.reserve(n_polygons); - int32_t scale = 1; - for (uint32_t i = 0; i < n_polygons; ++ i) { - Polygon poly; - uint32_t n_points; - ::fread(&n_points, 4, 1, file); - poly.points.reserve(n_points); - for (uint32_t j = 0; j < n_points; ++ j) { - coord_t x, y; - ::fread(&x, sizeof(coord_t), 1, file); - ::fread(&y, sizeof(coord_t), 1, file); - poly.points.emplace_back(Point(x * scale, y * scale)); - } - if (which == -1 || which == i) - m_support_polygons_deserialized.emplace_back(std::move(poly)); - printf("Polygon %d, area: %lf\n", i, area(poly.points)); - } - ::fread(&n_polygons, 4, 1, file); - m_trimming_polygons_deserialized.reserve(n_polygons); - for (uint32_t i = 0; i < n_polygons; ++ i) { - Polygon poly; - uint32_t n_points; - ::fread(&n_points, 4, 1, file); - poly.points.reserve(n_points); - for (uint32_t j = 0; j < n_points; ++ j) { - coord_t x, y; - ::fread(&x, sizeof(coord_t), 1, file); - ::fread(&y, sizeof(coord_t), 1, file); - poly.points.emplace_back(Point(x * scale, y * scale)); - } - m_trimming_polygons_deserialized.emplace_back(std::move(poly)); - } - ::fclose(file); - - m_support_polygons_deserialized = simplify_polygons(m_support_polygons_deserialized, false); - //m_support_polygons_deserialized = to_polygons(union_ex(m_support_polygons_deserialized, false)); - - // Create an EdgeGrid, initialize it with projection, initialize signed distance field. - coord_t grid_resolution = coord_t(scale_(m_support_spacing)); - BoundingBox bbox = get_extents(*m_support_polygons); - bbox.offset(20); - bbox.align_to_grid(grid_resolution); - m_grid.set_bbox(bbox); - m_grid.create(*m_support_polygons, grid_resolution); - m_grid.calculate_sdf(); - return true; - } - - const Polygons& support_polygons() const { return *m_support_polygons; } - const Polygons& trimming_polygons() const { return *m_trimming_polygons; } - const EdgeGrid::Grid& grid() const { return m_grid; } - -#endif // defined(SLIC3R_DEBUG) && ! defined(SUPPORT_USE_AGG_RASTERIZER) - -private: - SupportGridPattern() {} - SupportGridPattern& operator=(const SupportGridPattern &rhs); - -#ifdef SUPPORT_USE_AGG_RASTERIZER - // Dilate the trimming region (unmask the boundary pixels). - static std::vector dilate_trimming_region(const std::vector &trimming, const Vec2i32 &grid_size) - { - std::vector dilated(trimming.size(), 0); - for (int r = 1; r + 1 < grid_size.y(); ++ r) - for (int c = 1; c + 1 < grid_size.x(); ++ c) { - //int addr = c + r * m_grid_size.x(); - // 4-neighborhood is not sufficient. - // dilated[addr] = trimming[addr] != 0 && trimming[addr - 1] != 0 && trimming[addr + 1] != 0 && trimming[addr - m_grid_size.x()] != 0 && trimming[addr + m_grid_size.x()] != 0; - // 8-neighborhood - int addr = c + (r - 1) * grid_size.x(); - bool b = trimming[addr - 1] != 0 && trimming[addr] != 0 && trimming[addr + 1] != 0; - addr += grid_size.x(); - b = b && trimming[addr - 1] != 0 && trimming[addr] != 0 && trimming[addr + 1] != 0; - addr += grid_size.x(); - b = b && trimming[addr - 1] != 0 && trimming[addr] != 0 && trimming[addr + 1] != 0; - dilated[addr - grid_size.x()] = b; - } - return dilated; - } - - // Seed fill each of the (oversampling x oversampling) block up to the dilated trimming region. - static void seed_fill_block(std::vector &grid, Vec2i32 grid_size, const std::vector &trimming,const Vec2i32 &grid_blocks, int oversampling) - { - int size = oversampling; - int stride = grid_size.x(); - for (int block_r = 0; block_r < grid_blocks.y(); ++ block_r) - for (int block_c = 0; block_c < grid_blocks.x(); ++ block_c) { - // Propagate the support pixels over the macro cell up to the trimming mask. - int addr = block_c * size + 1 + (block_r * size + 1) * stride; - unsigned char *grid_data = grid.data() + addr; - const unsigned char *mask_data = trimming.data() + addr; - // Top to bottom propagation. - #define PROPAGATION_STEP(offset) \ - do { \ - int addr = r * stride + c; \ - int addr2 = addr + offset; \ - if (grid_data[addr2] && ! mask_data[addr] && ! mask_data[addr2]) \ - grid_data[addr] = 1; \ - } while (0); - for (int r = 0; r < size; ++ r) { - if (r > 0) - for (int c = 0; c < size; ++ c) - PROPAGATION_STEP(- stride); - for (int c = 1; c < size; ++ c) - PROPAGATION_STEP(- 1); - for (int c = size - 2; c >= 0; -- c) - PROPAGATION_STEP(+ 1); - } - // Bottom to top propagation. - for (int r = size - 2; r >= 0; -- r) { - for (int c = 0; c < size; ++ c) - PROPAGATION_STEP(+ stride); - for (int c = 1; c < size; ++ c) - PROPAGATION_STEP(- 1); - for (int c = size - 2; c >= 0; -- c) - PROPAGATION_STEP(+ 1); - } - #undef PROPAGATION_STEP - } - } -#endif // SUPPORT_USE_AGG_RASTERIZER - -#if 0 - // Get some internal point of an expolygon, to be used as a representative - // sample to test, whether this island is inside another island. - //FIXME this was quick, but not sufficiently robust. - static Point island_sample(const ExPolygon &expoly) - { - // Find the lowest point lexicographically. - const Point *pt_min = &expoly.contour.points.front(); - for (size_t i = 1; i < expoly.contour.points.size(); ++ i) - if (expoly.contour.points[i] < *pt_min) - pt_min = &expoly.contour.points[i]; - - // Lowest corner will always be convex, in worst case denegenerate with zero angle. - const Point &p1 = (pt_min == &expoly.contour.points.front()) ? expoly.contour.points.back() : *(pt_min - 1); - const Point &p2 = *pt_min; - const Point &p3 = (pt_min == &expoly.contour.points.back()) ? expoly.contour.points.front() : *(pt_min + 1); - - Vector v = (p3 - p2) + (p1 - p2); - double l2 = double(v(0))*double(v(0))+double(v(1))*double(v(1)); - if (l2 == 0.) - return p2; - double coef = 20. / sqrt(l2); - return Point(p2(0) + coef * v(0), p2(1) + coef * v(1)); - } -#endif - - // Sample one internal point per expolygon. - // FIXME this is quite an overkill to calculate a complete offset just to get a single point, but at least it is robust. - static Points island_samples(const ExPolygons &expolygons) - { - Points pts; - pts.reserve(expolygons.size()); - for (const ExPolygon &expoly : expolygons) - if (expoly.contour.points.size() > 2) { - #if 0 - pts.push_back(island_sample(expoly)); - #else - Polygons polygons = offset(expoly, - 20.f); - for (const Polygon &poly : polygons) - if (! poly.points.empty()) { - // Take a small fixed number of samples of this polygon for robustness. - int num_points = int(poly.points.size()); - int num_samples = std::min(num_points, 4); - int stride = num_points / num_samples; - for (int i = 0; i < num_points; i += stride) - pts.push_back(poly.points[i]); - break; - } - #endif - } - // Sort the points lexicographically, so a binary search could be used to locate points inside a bounding box. - std::sort(pts.begin(), pts.end()); - return pts; - } - - SupportMaterialStyle m_style; - const Polygons *m_support_polygons; - const Polygons *m_trimming_polygons; - Polygons m_support_polygons_rotated; - Polygons m_trimming_polygons_rotated; - // Angle in radians, by which the whole support is rotated. - coordf_t m_support_angle; - // X spacing of the support lines parallel with the Y axis. - coordf_t m_support_spacing; - coordf_t m_extrusion_width; - // For snug supports: Morphological closing of support areas. - coordf_t m_support_material_closing_radius; - -#ifdef SUPPORT_USE_AGG_RASTERIZER - Vec2i32 m_grid_size; - double m_pixel_size; - BoundingBox m_bbox; - std::vector m_grid2; -#else // SUPPORT_USE_AGG_RASTERIZER - Slic3r::EdgeGrid::Grid m_grid; -#endif // SUPPORT_USE_AGG_RASTERIZER - -#ifdef SLIC3R_DEBUG - // support for deserialization of m_support_polygons, m_trimming_polygons - Polygons m_support_polygons_deserialized; - Polygons m_trimming_polygons_deserialized; -#endif /* SLIC3R_DEBUG */ -}; - -namespace SupportMaterialInternal { - static inline bool has_bridging_perimeters(const ExtrusionLoop &loop) - { - for (const ExtrusionPath &ep : loop.paths) - if (ep.role() == erOverhangPerimeter && ! ep.polyline.empty()) - return int(ep.size()) >= (ep.is_closed() ? 3 : 2); - return false; - } - static bool has_bridging_perimeters(const ExtrusionEntityCollection &perimeters) - { - for (const ExtrusionEntity *ee : perimeters.entities) { - if (ee->is_collection()) { - for (const ExtrusionEntity *ee2 : static_cast(ee)->entities) { - assert(! ee2->is_collection()); - if (ee2->is_loop()) - if (has_bridging_perimeters(*static_cast(ee2))) - return true; - } - } else if (ee->is_loop() && has_bridging_perimeters(*static_cast(ee))) - return true; - } - return false; - } - static bool has_bridging_fills(const ExtrusionEntityCollection &fills) - { - for (const ExtrusionEntity *ee : fills.entities) { - assert(ee->is_collection()); - for (const ExtrusionEntity *ee2 : static_cast(ee)->entities) { - assert(! ee2->is_collection()); - assert(! ee2->is_loop()); - if (ee2->role() == erBridgeInfill || ee2->role() == erInternalBridgeInfill) - return true; - } - } - return false; - } - static bool has_bridging_extrusions(const Layer &layer) - { - for (const LayerRegion *region : layer.regions()) { - if (SupportMaterialInternal::has_bridging_perimeters(region->perimeters)) - return true; - if (region->fill_surfaces.has(stBottomBridge) && has_bridging_fills(region->fills)) - return true; - } - return false; - } - - static inline void collect_bridging_perimeter_areas(const ExtrusionLoop &loop, const float expansion_scaled, Polygons &out) - { - assert(expansion_scaled >= 0.f); - for (const ExtrusionPath &ep : loop.paths) - if (ep.role() == erOverhangPerimeter && ! ep.polyline.empty()) { - float exp = 0.5f * (float)scale_(ep.width) + expansion_scaled; - if (ep.is_closed()) { - if (ep.size() >= 3) { - // This is a complete loop. - // Add the outer contour first. - Polygon poly; - poly.points = ep.polyline.points; - poly.points.pop_back(); - if (poly.area() < 0) - poly.reverse(); - polygons_append(out, offset(poly, exp, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - Polygons holes = offset(poly, - exp, SUPPORT_SURFACES_OFFSET_PARAMETERS); - polygons_reverse(holes); - polygons_append(out, holes); - } - } else if (ep.size() >= 2) { - // Offset the polyline. - polygons_append(out, offset(ep.polyline, exp, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - } - } - } - static void collect_bridging_perimeter_areas(const ExtrusionEntityCollection &perimeters, const float expansion_scaled, Polygons &out) - { - for (const ExtrusionEntity *ee : perimeters.entities) { - if (ee->is_collection()) { - for (const ExtrusionEntity *ee2 : static_cast(ee)->entities) { - assert(! ee2->is_collection()); - if (ee2->is_loop()) - collect_bridging_perimeter_areas(*static_cast(ee2), expansion_scaled, out); - } - } else if (ee->is_loop()) - collect_bridging_perimeter_areas(*static_cast(ee), expansion_scaled, out); - } - } - - static void remove_bridges_from_contacts( - const PrintConfig &print_config, - const Layer &lower_layer, - const Polygons &lower_layer_polygons, - const LayerRegion &layerm, - float fw, - Polygons &contact_polygons) - { - // compute the area of bridging perimeters - Polygons bridges; - { - // Surface supporting this layer, expanded by 0.5 * nozzle_diameter, as we consider this kind of overhang to be sufficiently supported. - Polygons lower_grown_slices = expand(lower_layer_polygons, - //FIXME to mimic the decision in the perimeter generator, we should use half the external perimeter width. - 0.5f * float(scale_(print_config.nozzle_diameter.get_at(layerm.region().config().wall_filament-1))), - SUPPORT_SURFACES_OFFSET_PARAMETERS); - // Collect perimeters of this layer. - //FIXME split_at_first_point() could split a bridge mid-way - #if 0 - Polylines overhang_perimeters = layerm.perimeters.as_polylines(); - // workaround for Clipper bug, see Slic3r::Polygon::clip_as_polyline() - for (Polyline &polyline : overhang_perimeters) - polyline.points[0].x += 1; - // Trim the perimeters of this layer by the lower layer to get the unsupported pieces of perimeters. - overhang_perimeters = diff_pl(overhang_perimeters, lower_grown_slices); - #else - Polylines overhang_perimeters = diff_pl(layerm.perimeters.as_polylines(), lower_grown_slices); - #endif - - // only consider straight overhangs - // only consider overhangs having endpoints inside layer's slices - // convert bridging polylines into polygons by inflating them with their thickness - // since we're dealing with bridges, we can't assume width is larger than spacing, - // so we take the largest value and also apply safety offset to be ensure no gaps - // are left in between - // BBS - const PrintObjectConfig& object_config = layerm.layer()->object()->config(); - Flow perimeter_bridge_flow = layerm.bridging_flow(frPerimeter, object_config.thick_bridges); - //FIXME one may want to use a maximum of bridging flow width and normal flow width, as the perimeters are calculated using the normal flow - // and then turned to bridging flow, thus their centerlines are derived from non-bridging flow and expanding them by a bridging flow - // may not expand them to the edge of their respective islands. - const float w = float(0.5 * std::max(perimeter_bridge_flow.scaled_width(), perimeter_bridge_flow.scaled_spacing())) + scaled(0.001); - for (Polyline &polyline : overhang_perimeters) - if (polyline.is_straight()) { - // This is a bridge - polyline.extend_start(fw); - polyline.extend_end(fw); - // Is the straight perimeter segment supported at both sides? - Point pts[2] = { polyline.first_point(), polyline.last_point() }; - bool supported[2] = { false, false }; - for (size_t i = 0; i < lower_layer.lslices.size() && ! (supported[0] && supported[1]); ++ i) - for (int j = 0; j < 2; ++ j) - if (! supported[j] && lower_layer.lslices_bboxes[i].contains(pts[j]) && lower_layer.lslices[i].contains(pts[j])) - supported[j] = true; - if (supported[0] && supported[1]) - // Offset a polyline into a thick line. - polygons_append(bridges, offset(polyline, w)); - } - bridges = union_(bridges); - } - // remove the entire bridges and only support the unsupported edges - //FIXME the brided regions are already collected as layerm.bridged. Use it? - for (const Surface &surface : layerm.fill_surfaces.surfaces) - if (surface.surface_type == stBottomBridge && surface.bridge_angle >= 0.0) - polygons_append(bridges, surface.expolygon); - //FIXME add the gap filled areas. Extrude the gaps with a bridge flow? - // Remove the unsupported ends of the bridges from the bridged areas. - //FIXME add supports at regular intervals to support long bridges! - bridges = diff(bridges, - // Offset unsupported edges into polygons. - offset(layerm.unsupported_bridge_edges, scale_(SUPPORT_MATERIAL_MARGIN), SUPPORT_SURFACES_OFFSET_PARAMETERS)); - // Remove bridged areas from the supported areas. - contact_polygons = diff(contact_polygons, bridges, ApplySafetyOffset::Yes); - - #ifdef SLIC3R_DEBUG - static int iRun = 0; - SVG::export_expolygons(debug_out_path("support-top-contacts-remove-bridges-run%d.svg", iRun ++), - { { { union_ex(offset(layerm.unsupported_bridge_edges, scale_(SUPPORT_MATERIAL_MARGIN), SUPPORT_SURFACES_OFFSET_PARAMETERS)) }, { "unsupported_bridge_edges", "orange", 0.5f } }, - { { union_ex(contact_polygons) }, { "contact_polygons", "blue", 0.5f } }, - { { union_ex(bridges) }, { "bridges", "red", "black", "", scaled(0.1f), 0.5f } } }); - #endif /* SLIC3R_DEBUG */ - } -} - -std::vector PrintObjectSupportMaterial::buildplate_covered(const PrintObject &object) const -{ - // Build support on a build plate only? If so, then collect and union all the surfaces below the current layer. - // Unfortunately this is an inherently serial process. - const bool buildplate_only = this->build_plate_only(); - std::vector buildplate_covered; - if (buildplate_only) { - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::buildplate_covered() - start"; - buildplate_covered.assign(object.layers().size(), Polygons()); - //FIXME prefix sum algorithm, parallelize it! Parallelization will also likely be more numerically stable. - for (size_t layer_id = 1; layer_id < object.layers().size(); ++ layer_id) { - const Layer &lower_layer = *object.layers()[layer_id-1]; - // Merge the new slices with the preceding slices. - // Apply the safety offset to the newly added polygons, so they will connect - // with the polygons collected before, - // but don't apply the safety offset during the union operation as it would - // inflate the polygons over and over. - Polygons &covered = buildplate_covered[layer_id]; - covered = buildplate_covered[layer_id - 1]; - polygons_append(covered, offset(lower_layer.lslices, scale_(0.01))); - covered = union_(covered); - } - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::buildplate_covered() - end"; - } - return buildplate_covered; -} - -struct SupportAnnotations -{ - SupportAnnotations(const PrintObject &object, const std::vector &buildplate_covered) : - enforcers_layers(object.slice_support_enforcers()), - blockers_layers(object.slice_support_blockers()), - buildplate_covered(buildplate_covered) - { - // Append custom supports. - object.project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers_layers); - object.project_and_append_custom_facets(false, EnforcerBlockerType::BLOCKER, blockers_layers); - } - - std::vector enforcers_layers; - std::vector blockers_layers; - const std::vector& buildplate_covered; -}; - -struct SlicesMarginCache -{ - float offset { -1 }; - // Trimming polygons, including possibly the "build plate only" mask. - Polygons polygons; - // Trimming polygons, without the "build plate only" mask. If empty, use polygons. - Polygons all_polygons; -}; - -// BBS -static const double length_thresh_well_supported = scale_(6); // min: 6mm -static const double area_thresh_well_supported = SQ(length_thresh_well_supported); // min: 6x6=36mm^2 -static const double sharp_tail_xy_gap = 0.2f; -static const double no_overlap_xy_gap = 0.2f; -static const double sharp_tail_max_support_height = 16.f; - -// Tuple: overhang_polygons, contact_polygons, enforcer_polygons, no_interface_offset -// no_interface_offset: minimum of external perimeter widths -static inline ExPolygons detect_overhangs( - const Layer &layer, - const size_t layer_id, - Polygons &lower_layer_polygons, - const PrintConfig &print_config, - const PrintObjectConfig &object_config, - SupportAnnotations &annotations, - const double gap_xy -#ifdef SLIC3R_DEBUG - , size_t iRun -#endif // SLIC3R_DEBUG - ) -{ - // Snug overhang polygons. - Polygons overhang_polygons; - - // BBS. - const bool auto_normal_support = object_config.support_type.value == stNormalAuto; - const bool buildplate_only = ! annotations.buildplate_covered.empty(); - // If user specified a custom angle threshold, convert it to radians. - // Zero means automatic overhang detection. - // +1 makes the threshold inclusive - double thresh_angle = object_config.support_threshold_angle.value > 0 ? object_config.support_threshold_angle.value + 1 : 0; - thresh_angle = std::min(thresh_angle, 89.); // BBS should be smaller than 90 - const double threshold_rad = Geometry::deg2rad(thresh_angle); - const coordf_t max_bridge_length = scale_(object_config.max_bridge_length.value); - const bool bridge_no_support = object_config.bridge_no_support.value; - const coordf_t xy_expansion = scale_(object_config.support_expansion.value); - - if (layer_id == 0) - { - // Don't fill in the holes. The user may apply a higher raft_expansion if one wants a better 1st layer adhesion. - overhang_polygons = to_polygons(layer.lslices); - - for (auto& slice : layer.lslices) { - auto bbox_size = get_extents(slice).size(); - if (g_config_support_sharp_tails && - !(bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) - { - layer.sharp_tails.push_back(slice); - layer.sharp_tails_height.insert({ &slice, layer.height }); - } - } - } - else if (! layer.regions().empty()) - { - // Generate overhang / contact_polygons for non-raft layers. - const Layer &lower_layer = *layer.lower_layer; - const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); - // Can't directly use lower_layer.lslices, or we'll miss some very sharp tails. - // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! - // FIXME if there are multiple regions with different extrusion width, the following code may not be right. - float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); - ExPolygons lower_layer_expolys; - for (const ExPolygon& expoly : lower_layer.lslices) { - if (!offset_ex(expoly, -fw / 2).empty()) { - lower_layer_expolys.emplace_back(expoly); - } - } - - float lower_layer_offset = 0; - for (LayerRegion *layerm : layer.regions()) { - // Extrusion width accounts for the roundings of the extrudates. - // It is the maximum widh of the extrudate. - float fw = float(layerm->flow(frExternalPerimeter).scaled_width()); - lower_layer_offset = - (layer_id < (size_t)object_config.enforce_support_layers.value) ? - // Enforce a full possible support, ignore the overhang angle. - 0.f : - (threshold_rad > 0. ? - // Overhang defined by an angle. - float(scale_(lower_layer.height / tan(threshold_rad))) : - // Overhang defined by half the extrusion width. - 0.5f * fw); - // Overhang polygons for this layer and region. - Polygons diff_polygons; - Polygons layerm_polygons = to_polygons(layerm->slices.surfaces); - if (lower_layer_offset == 0.f) { - // Support everything. - diff_polygons = diff(layerm_polygons, lower_layer_polygons); - if (buildplate_only) { - // Don't support overhangs above the top surfaces. - // This step is done before the contact surface is calculated by growing the overhang region. - diff_polygons = diff(diff_polygons, annotations.buildplate_covered[layer_id]); - } - } else if (auto_normal_support) { - // Get the regions needing a suport, collapse very tiny spots. - //FIXME cache the lower layer offset if this layer has multiple regions. - diff_polygons = - diff(layerm_polygons, - expand(lower_layer_polygons, lower_layer_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - if (buildplate_only && ! annotations.buildplate_covered[layer_id].empty()) { - // Don't support overhangs above the top surfaces. - // This step is done before the contact surface is calculated by growing the overhang region. - diff_polygons = diff(diff_polygons, annotations.buildplate_covered[layer_id]); - } - if (! diff_polygons.empty()) { - // Offset the support regions back to a full overhang, restrict them to the full overhang. - // This is done to increase size of the supporting columns below, as they are calculated by - // propagating these contact surfaces downwards. - diff_polygons = diff(intersection(expand(diff_polygons, lower_layer_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS), layerm_polygons), lower_layer_polygons); - if (xy_expansion != 0) { diff_polygons = expand(diff_polygons, xy_expansion, SUPPORT_SURFACES_OFFSET_PARAMETERS); } - } - //FIXME add user defined filtering here based on minimal area or minimum radius or whatever. - - // BBS - if (g_config_support_sharp_tails) { - for (ExPolygon& expoly : layerm->raw_slices) { - if (offset_ex(expoly, -0.5 * fw).empty()) continue; - bool is_sharp_tail = false; - float accum_height = layer.height; - - // 1. nothing below - // Check whether this is a sharp tail region. - // Should use lower_layer_expolys without any offset. Otherwise, it may missing sharp tails near the main body. - if (!overlaps(offset_ex(expoly, 0.5 * fw), lower_layer_expolys)) { - is_sharp_tail = expoly.area() < area_thresh_well_supported && !offset_ex(expoly, -0.1 * fw).empty(); - } - - if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ expoly }, lower_layer_expolys); - layer.sharp_tails.push_back(expoly); - layer.sharp_tails_height.insert({ &expoly, accum_height }); - overhang = offset_ex(overhang, 0.05 * fw); - polygons_append(diff_polygons, to_polygons(overhang)); - } - } - } - } - - if (diff_polygons.empty()) - continue; - - // Apply the "support blockers". - if (!annotations.blockers_layers.empty() && !annotations.blockers_layers[layer_id].empty()) { - // Expand the blocker a bit. Custom blockers produce strips - // spanning just the projection between the two slices. - // Subtracting them as they are may leave unwanted narrow - // residues of diff_polygons that would then be supported. - diff_polygons = diff(diff_polygons, - expand(union_(annotations.blockers_layers[layer_id]), float(1000. * SCALED_EPSILON))); - } - - if (bridge_no_support) { - //FIXME Expensive, potentially not precise enough. Misses gap fill extrusions, which bridge. - SupportMaterialInternal::remove_bridges_from_contacts( - print_config, lower_layer, lower_layer_polygons, *layerm, fw, diff_polygons); - } - - if (diff_polygons.empty() || offset(diff_polygons, -0.1 * fw).empty()) - continue; - - polygons_append(overhang_polygons, diff_polygons); - } // for each layer.region - } - - ExPolygons overhang_areas = union_ex(overhang_polygons); - // check cantilever - if (layer.lower_layer) { - for (ExPolygon& poly : overhang_areas) { - float fw = float(layer.regions().front()->flow(frExternalPerimeter).scaled_width()); - auto cluster_boundary_ex = intersection_ex(poly, offset_ex(layer.lower_layer->lslices, scale_(0.5))); - Polygons cluster_boundary = to_polygons(cluster_boundary_ex); - if (cluster_boundary.empty()) continue; - double dist_max = 0; - for (auto& pt : poly.contour.points) { - double dist_pt = std::numeric_limits::max(); - for (auto& ply : cluster_boundary) { - double d = ply.distance_to(pt); - dist_pt = std::min(dist_pt, d); - } - dist_max = std::max(dist_max, dist_pt); - } - if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base - layer.cantilevers.emplace_back(poly); - } - } - } - - return overhang_areas; -} - -// Tuple: overhang_polygons, contact_polygons, enforcer_polygons, no_interface_offset -// no_interface_offset: minimum of external perimeter widths -static inline std::tuple detect_contacts( - const Layer& layer, - const size_t layer_id, - Polygons& overhang_polygons, - Polygons& lower_layer_polygons, - const PrintConfig& print_config, - const PrintObjectConfig& object_config, - SupportAnnotations& annotations, - SlicesMarginCache& slices_margin, - const double gap_xy -#ifdef SLIC3R_DEBUG - , size_t iRun -#endif // SLIC3R_DEBUG -) -{ - // Expanded for stability, trimmed by gap_xy. - Polygons contact_polygons; - // Enforcers projected to overhangs, trimmed - Polygons enforcer_polygons; - - // BBS. - const bool auto_normal_support = object_config.support_type.value == stNormalAuto; - const bool buildplate_only = !annotations.buildplate_covered.empty(); - float no_interface_offset = 0.f; - - if (layer_id == 0) - { - // Expand for better stability. - contact_polygons = object_config.raft_expansion.value > 0 ? expand(overhang_polygons, scaled(object_config.raft_expansion.value)) : overhang_polygons; - } - else if (!layer.regions().empty()) - { - // Generate overhang / contact_polygons for non-raft layers. - const Layer& lower_layer = *layer.lower_layer; - const bool has_enforcer = !annotations.enforcers_layers.empty() && !annotations.enforcers_layers[layer_id].empty(); - const ExPolygons& lower_layer_expolys = lower_layer.lslices; - const ExPolygons& lower_layer_sharptails = lower_layer.sharp_tails; - - // Cache support trimming polygons derived from lower layer polygons, possible merged with "on build plate only" trimming polygons. - auto slices_margin_update = - [&slices_margin, &layer, &lower_layer, &lower_layer_polygons, buildplate_only, has_enforcer, &annotations, layer_id] - (float slices_margin_offset, float no_interface_offset) { - if (slices_margin.offset != slices_margin_offset) { - slices_margin.offset = slices_margin_offset; - slices_margin.polygons = (slices_margin_offset == 0.f) ? - lower_layer_polygons : - // What is the purpose of no_interface_offset? Likely to not trim the contact layer by lower layer regions that are too thin to extrude? - offset2(lower_layer.lslices, -no_interface_offset * 0.5f, slices_margin_offset + no_interface_offset * 0.5f, SUPPORT_SURFACES_OFFSET_PARAMETERS); - if (buildplate_only && !annotations.buildplate_covered[layer_id].empty()) { - if (has_enforcer) - // Make a backup of trimming polygons before enforcing "on build plate only". - slices_margin.all_polygons = slices_margin.polygons; - // Trim the inflated contact surfaces by the top surfaces as well. - slices_margin.polygons = union_(slices_margin.polygons, annotations.buildplate_covered[layer_id]); - } - } - }; - - no_interface_offset = std::accumulate(layer.regions().begin(), layer.regions().end(), FLT_MAX, - [](float acc, const LayerRegion* layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); - - float lower_layer_offset = 0; - for (LayerRegion* layerm : layer.regions()) { - Polygons layerm_polygons = to_polygons(layerm->slices.surfaces); - - // Overhang polygons for this layer and region. - Polygons diff_polygons = intersection(overhang_polygons, layerm_polygons); - if (diff_polygons.empty()) - continue; - - // Let's define the required contact area by using a max gap of half the upper - // extrusion width and extending the area according to the configured margin. - // We increment the area in steps because we don't want our support to overflow - // on the other side of the object (if it's very thin). - { - //FIMXE 1) Make the offset configurable, 2) Make the Z span configurable. - //FIXME one should trim with the layer span colliding with the support layer, this layer - // may be lower than lower_layer, so the support area needed may need to be actually bigger! - // For the same reason, the non-bridging support area may be smaller than the bridging support area! - slices_margin_update(std::min(lower_layer_offset, float(scale_(gap_xy))), no_interface_offset); - // Offset the contact polygons outside. -#if 0 - for (size_t i = 0; i < NUM_MARGIN_STEPS; ++ i) { - diff_polygons = diff( - offset( - diff_polygons, - scaled(SUPPORT_MATERIAL_MARGIN / NUM_MARGIN_STEPS), - ClipperLib::jtRound, - // round mitter limit - scale_(0.05)), - slices_margin.polygons); - } -#else - diff_polygons = diff(diff_polygons, slices_margin.polygons); -#endif - } - polygons_append(contact_polygons, diff_polygons); - } // for each layer.region - - if (has_enforcer) - if (const Polygons& enforcer_polygons_src = annotations.enforcers_layers[layer_id]; !enforcer_polygons_src.empty()) { - // Enforce supports (as if with 90 degrees of slope) for the regions covered by the enforcer meshes. -#ifdef SLIC3R_DEBUG - ExPolygons enforcers_united = union_ex(enforcer_polygons_src); -#endif // SLIC3R_DEBUG - enforcer_polygons = diff(intersection(layer.lslices, enforcer_polygons_src), - // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. - expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-top-contacts-enforcers-run%d-layer%d-z%f.svg", iRun, layer_id, layer.print_z), - { { layer.lslices, { "layer.lslices", "gray", 0.2f } }, - { { union_ex(lower_layer_polygons) }, { "lower_layer_polygons", "green", 0.5f } }, - { enforcers_united, { "enforcers", "blue", 0.5f } }, - { { union_safety_offset_ex(enforcer_polygons) }, { "new_contacts", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - if (!enforcer_polygons.empty()) { - polygons_append(overhang_polygons, enforcer_polygons); - slices_margin_update(std::min(lower_layer_offset, float(scale_(gap_xy))), no_interface_offset); - polygons_append(contact_polygons, diff(enforcer_polygons, slices_margin.all_polygons.empty() ? slices_margin.polygons : slices_margin.all_polygons)); - } - } - } - - return std::make_tuple(std::move(contact_polygons), std::move(enforcer_polygons), no_interface_offset); -} - -// Allocate one, possibly two support contact layers. -// For "thick" overhangs, one support layer will be generated to support normal extrusions, the other to support the "thick" extrusions. -static inline std::pair new_contact_layer( - const PrintConfig &print_config, - const PrintObjectConfig &object_config, - const SlicingParameters &slicing_params, - const coordf_t support_layer_height_min, - const Layer &layer, - std::deque &layer_storage, - tbb::spin_mutex &layer_storage_mutex) -{ - double print_z, bottom_z, height; - PrintObjectSupportMaterial::MyLayer* bridging_layer = nullptr; - assert(layer.id() >= slicing_params.raft_layers()); - size_t layer_id = layer.id() - slicing_params.raft_layers(); - - if (layer_id == 0) { - // This is a raft contact layer sitting directly on the print bed. - assert(slicing_params.has_raft()); - print_z = slicing_params.raft_contact_top_z; - bottom_z = slicing_params.raft_interface_top_z; - height = slicing_params.contact_raft_layer_height; - } else if (slicing_params.soluble_interface) { - // Align the contact surface height with a layer immediately below the supported layer. - // Interface layer will be synchronized with the object. - print_z = layer.bottom_z(); - height = layer.lower_layer->height; - bottom_z = (layer_id == 1) ? slicing_params.object_print_z_min : layer.lower_layer->lower_layer->print_z; - } else { - print_z = layer.bottom_z() - slicing_params.gap_support_object; - height = print_config.independent_support_layer_height ? 0. : layer.lower_layer->height/*object_config.layer_height*/; // BBS: need to consider adaptive layer heights - bottom_z = print_z - height; - // Ignore this contact area if it's too low. - // Don't want to print a layer below the first layer height as it may not stick well. - //FIXME there may be a need for a single layer support, then one may decide to print it either as a bottom contact or a top contact - // and it may actually make sense to do it with a thinner layer than the first layer height. - if (print_z < slicing_params.first_print_layer_height - EPSILON) { - // This contact layer is below the first layer height, therefore not printable. Don't support this surface. - return std::pair(nullptr, nullptr); - } - const bool has_raft = slicing_params.raft_layers() > 1; - const coordf_t min_print_z = has_raft ? slicing_params.raft_contact_top_z : slicing_params.first_print_layer_height; - if (print_z < min_print_z + support_layer_height_min) { - // Align the layer with the 1st layer height or the raft contact layer. - // With raft active, any contact layer below the raft_contact_top_z will be brought to raft_contact_top_z to extend the raft area. - print_z = min_print_z; - bottom_z = has_raft ? slicing_params.raft_interface_top_z : 0; - height = has_raft ? slicing_params.contact_raft_layer_height : min_print_z; - } else { - // Don't know the height of the top contact layer yet. The top contact layer is printed with a normal flow and - // its height will be set adaptively later on. - } - - // Contact layer will be printed with a normal flow, but - // it will support layers printed with a bridging flow. - if (object_config.thick_bridges && SupportMaterialInternal::has_bridging_extrusions(layer)) { - coordf_t bridging_height = 0.; - for (const LayerRegion* region : layer.regions()) - bridging_height += region->region().bridging_height_avg(print_config); - bridging_height /= coordf_t(layer.regions().size()); - // BBS: align bridging height - if (!print_config.independent_support_layer_height) - bridging_height = std::ceil(bridging_height / object_config.layer_height - EPSILON) * object_config.layer_height; - coordf_t bridging_print_z = layer.print_z - bridging_height - slicing_params.gap_support_object; - if (bridging_print_z >= min_print_z) { - // Not below the first layer height means this layer is printable. - if (print_z < min_print_z + support_layer_height_min) { - // Align the layer with the 1st layer height or the raft contact layer. - bridging_print_z = min_print_z; - } - if (bridging_print_z < print_z - EPSILON) { - // Allocate the new layer. - bridging_layer = &layer_allocate(layer_storage, layer_storage_mutex, PrintObjectSupportMaterial::sltTopContact); - bridging_layer->idx_object_layer_above = layer_id; - bridging_layer->print_z = bridging_print_z; - if (bridging_print_z == slicing_params.first_print_layer_height) { - bridging_layer->bottom_z = 0; - bridging_layer->height = slicing_params.first_print_layer_height; - } else { - // BBS: if independent_support_layer_height is not enabled, the support layer_height should be the same as layer height. - // Note that for this case, adaptive layer height must be disabled. - bridging_layer->height = print_config.independent_support_layer_height ? 0. : object_config.layer_height; - // Don't know the height yet. - bridging_layer->bottom_z = bridging_print_z - bridging_layer->height; - } - } - } - } - } - - PrintObjectSupportMaterial::MyLayer &new_layer = layer_allocate(layer_storage, layer_storage_mutex, PrintObjectSupportMaterial::sltTopContact); - new_layer.idx_object_layer_above = layer_id; - new_layer.print_z = print_z; - new_layer.bottom_z = bottom_z; - new_layer.height = height; - return std::make_pair(&new_layer, bridging_layer); -} - -static inline void fill_contact_layer( - PrintObjectSupportMaterial::MyLayer &new_layer, - size_t layer_id, - const SlicingParameters &slicing_params, - const PrintObjectConfig &object_config, - const SlicesMarginCache &slices_margin, - const Polygons &overhang_polygons, - const Polygons &contact_polygons, - const Polygons &enforcer_polygons, - const Polygons &lower_layer_polygons, - const Flow &support_material_flow, - float no_interface_offset -#ifdef SLIC3R_DEBUG - , size_t iRun, - const Layer &layer -#endif // SLIC3R_DEBUG - ) -{ - const SupportGridParams grid_params(object_config, support_material_flow); - - Polygons lower_layer_polygons_for_dense_interface_cache; - auto lower_layer_polygons_for_dense_interface = [&lower_layer_polygons_for_dense_interface_cache, &lower_layer_polygons, no_interface_offset]() -> const Polygons& { - if (lower_layer_polygons_for_dense_interface_cache.empty()) - lower_layer_polygons_for_dense_interface_cache = - //FIXME no_interface_offset * 0.6f offset is not quite correct, one shall derive it based on an angle thus depending on layer height. - opening(lower_layer_polygons, no_interface_offset * 0.5f, no_interface_offset * (0.6f + 0.5f), SUPPORT_SURFACES_OFFSET_PARAMETERS); - return lower_layer_polygons_for_dense_interface_cache; - }; - - // Stretch support islands into a grid, trim them. - SupportGridPattern support_grid_pattern(&contact_polygons, &slices_margin.polygons, grid_params); - // 1) Contact polygons will be projected down. To keep the interface and base layers from growing, return a contour a tiny bit smaller than the grid cells. - new_layer.contact_polygons = std::make_unique(support_grid_pattern.extract_support(grid_params.expansion_to_propagate, true -#ifdef SLIC3R_DEBUG - , "top_contact_polygons", iRun, layer_id, layer.print_z -#endif // SLIC3R_DEBUG - )); - // 2) infill polygons, expand them by half the extrusion width + a tiny bit of extra. - bool reduce_interfaces = object_config.support_style.value != smsSnug && layer_id > 0 && !slicing_params.soluble_interface; - if (reduce_interfaces) { - // Reduce the amount of dense interfaces: Do not generate dense interfaces below overhangs with 60% overhang of the extrusions. - Polygons dense_interface_polygons = diff(overhang_polygons, lower_layer_polygons_for_dense_interface()); - if (! dense_interface_polygons.empty()) { - dense_interface_polygons = - diff( - // Regularize the contour. - expand(dense_interface_polygons, no_interface_offset * 0.1f), - slices_margin.polygons); - // Support islands, to be stretched into a grid. - //FIXME The regularization of dense_interface_polygons above may stretch dense_interface_polygons outside of the contact polygons, - // thus some dense interface areas may not get supported. Trim the excess with contact_polygons at the following line. - // See for example GH #4874. - Polygons dense_interface_polygons_trimmed = intersection(dense_interface_polygons, *new_layer.contact_polygons); - // Stretch support islands into a grid, trim them. - SupportGridPattern support_grid_pattern(&dense_interface_polygons_trimmed, &slices_margin.polygons, grid_params); - new_layer.polygons = support_grid_pattern.extract_support(grid_params.expansion_to_slice, false -#ifdef SLIC3R_DEBUG - , "top_contact_polygons2", iRun, layer_id, layer.print_z -#endif // SLIC3R_DEBUG - ); - #ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-top-contacts-final1-run%d-layer%d-z%f.svg", iRun, layer_id, layer.print_z), - { { { union_ex(lower_layer_polygons) }, { "lower_layer_polygons", "gray", 0.2f } }, - { { union_ex(*new_layer.contact_polygons) }, { "new_layer.contact_polygons", "yellow", 0.5f } }, - { { union_ex(slices_margin.polygons) }, { "slices_margin_cached", "blue", 0.5f } }, - { { union_ex(dense_interface_polygons) }, { "dense_interface_polygons", "green", 0.5f } }, - { { union_safety_offset_ex(new_layer.polygons) }, { "new_layer.polygons", "red", "black", "", scaled(0.1f), 0.5f } } }); - //support_grid_pattern.serialize(debug_out_path("support-top-contacts-final-run%d-layer%d-z%f.bin", iRun, layer_id, layer.print_z)); - SVG::export_expolygons(debug_out_path("support-top-contacts-final2-run%d-layer%d-z%f.svg", iRun, layer_id, layer.print_z), - { { { union_ex(lower_layer_polygons) }, { "lower_layer_polygons", "gray", 0.2f } }, - { { union_ex(*new_layer.contact_polygons) }, { "new_layer.contact_polygons", "yellow", 0.5f } }, - { { union_ex(contact_polygons) }, { "contact_polygons", "blue", 0.5f } }, - { { union_ex(dense_interface_polygons) }, { "dense_interface_polygons", "green", 0.5f } }, - { { union_safety_offset_ex(new_layer.polygons) }, { "new_layer.polygons", "red", "black", "", scaled(0.1f), 0.5f } } }); - #endif /* SLIC3R_DEBUG */ - } - } else { - new_layer.polygons = support_grid_pattern.extract_support(grid_params.expansion_to_slice, true -#ifdef SLIC3R_DEBUG - , "top_contact_polygons3", iRun, layer_id, layer.print_z -#endif // SLIC3R_DEBUG - ); - } - - if (! enforcer_polygons.empty() && ! slices_margin.all_polygons.empty() && layer_id > 0) { - // Support enforcers used together with support enforcers. The support enforcers need to be handled separately from the rest of the support. - - SupportGridPattern support_grid_pattern(&enforcer_polygons, &slices_margin.all_polygons, grid_params); - // 1) Contact polygons will be projected down. To keep the interface and base layers from growing, return a contour a tiny bit smaller than the grid cells. - new_layer.enforcer_polygons = std::make_unique(support_grid_pattern.extract_support(grid_params.expansion_to_propagate, true -#ifdef SLIC3R_DEBUG - , "top_contact_polygons4", iRun, layer_id, layer.print_z -#endif // SLIC3R_DEBUG - )); - Polygons new_polygons; - bool needs_union = ! new_layer.polygons.empty(); - if (reduce_interfaces) { - // 2) infill polygons, expand them by half the extrusion width + a tiny bit of extra. - // Reduce the amount of dense interfaces: Do not generate dense interfaces below overhangs with 60% overhang of the extrusions. - Polygons dense_interface_polygons = diff(enforcer_polygons, lower_layer_polygons_for_dense_interface()); - if (! dense_interface_polygons.empty()) { - dense_interface_polygons = - diff( - // Regularize the contour. - expand(dense_interface_polygons, no_interface_offset * 0.1f), - slices_margin.all_polygons); - // Support islands, to be stretched into a grid. - //FIXME The regularization of dense_interface_polygons above may stretch dense_interface_polygons outside of the contact polygons, - // thus some dense interface areas may not get supported. Trim the excess with contact_polygons at the following line. - // See for example GH #4874. - Polygons dense_interface_polygons_trimmed = intersection(dense_interface_polygons, *new_layer.enforcer_polygons); - SupportGridPattern support_grid_pattern(&dense_interface_polygons_trimmed, &slices_margin.all_polygons, grid_params); - // Extend the polygons to extrude with the contact polygons of support enforcers. - new_polygons = support_grid_pattern.extract_support(grid_params.expansion_to_slice, false - #ifdef SLIC3R_DEBUG - , "top_contact_polygons5", iRun, layer_id, layer.print_z - #endif // SLIC3R_DEBUG - ); - } - } else { - new_polygons = support_grid_pattern.extract_support(grid_params.expansion_to_slice, true - #ifdef SLIC3R_DEBUG - , "top_contact_polygons6", iRun, layer_id, layer.print_z - #endif // SLIC3R_DEBUG - ); - } - append(new_layer.polygons, std::move(new_polygons)); - if (needs_union) - new_layer.polygons = union_(new_layer.polygons); - } - -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-top-contacts-final0-run%d-layer%d-z%f.svg", iRun, layer_id, layer.print_z), - { { { union_ex(lower_layer_polygons) }, { "lower_layer_polygons", "gray", 0.2f } }, - { { union_ex(*new_layer.contact_polygons) }, { "new_layer.contact_polygons", "yellow", 0.5f } }, - { { union_ex(contact_polygons) }, { "contact_polygons", "blue", 0.5f } }, - { { union_ex(overhang_polygons) }, { "overhang_polygons", "green", 0.5f } }, - { { union_safety_offset_ex(new_layer.polygons) }, { "new_layer.polygons", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - - // Even after the contact layer was expanded into a grid, some of the contact islands may be too tiny to be extruded. - // Remove those tiny islands from new_layer.polygons and new_layer.contact_polygons. - - // Store the overhang polygons. - // The overhang polygons are used in the path generator for planning of the contact loops. - // if (this->has_contact_loops()). Compared to "polygons", "overhang_polygons" are snug. - new_layer.overhang_polygons = std::make_unique(std::move(overhang_polygons)); - if (! enforcer_polygons.empty()) - new_layer.enforcer_polygons = std::make_unique(std::move(enforcer_polygons)); -} - -// Merge close contact layers conservatively: If two layers are closer than the minimum allowed print layer height (the min_layer_height parameter), -// the top contact layer is merged into the bottom contact layer. -static void merge_contact_layers(const SlicingParameters &slicing_params, double support_layer_height_min, PrintObjectSupportMaterial::MyLayersPtr &layers) -{ - // Sort the layers, as one layer may produce bridging and non-bridging contact layers with different print_z. - std::sort(layers.begin(), layers.end(), [](const PrintObjectSupportMaterial::MyLayer *l1, const PrintObjectSupportMaterial::MyLayer *l2) { return l1->print_z < l2->print_z; }); - - int i = 0; - int k = 0; - { - // Find the span of layers, which are to be printed at the first layer height. - int j = 0; - for (; j < (int)layers.size() && layers[j]->print_z < slicing_params.first_print_layer_height + support_layer_height_min - EPSILON; ++ j); - if (j > 0) { - // Merge the layers layers (0) to (j - 1) into the layers[0]. - PrintObjectSupportMaterial::MyLayer &dst = *layers.front(); - for (int u = 1; u < j; ++ u) - dst.merge(std::move(*layers[u])); - // Snap the first layer to the 1st layer height. - dst.print_z = slicing_params.first_print_layer_height; - dst.height = slicing_params.first_print_layer_height; - dst.bottom_z = 0; - ++ k; - } - i = j; - } - for (; i < int(layers.size()); ++ k) { - // Find the span of layers closer than m_support_layer_height_min. - int j = i + 1; - coordf_t zmax = layers[i]->print_z + support_layer_height_min + EPSILON; - for (; j < (int)layers.size() && layers[j]->print_z < zmax; ++ j) ; - if (i + 1 < j) { - // Merge the layers layers (i + 1) to (j - 1) into the layers[i]. - PrintObjectSupportMaterial::MyLayer &dst = *layers[i]; - for (int u = i + 1; u < j; ++ u) - dst.merge(std::move(*layers[u])); - } - if (k < i) - layers[k] = layers[i]; - i = j; - } - if (k < (int)layers.size()) - layers.erase(layers.begin() + k, layers.end()); -} - - -struct OverhangCluster { - std::map> layer_overhangs; - ExPolygons merged_overhangs_dilated; - int min_layer = 1e7; - int max_layer = 0; - coordf_t offset_scaled = 0; - bool is_cantilever = false; - bool is_sharp_tail = false; - bool is_small_overhang = false; - - OverhangCluster(ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { - this->offset_scaled = offset_scaled; - insert(overhang, layer_nr); - } - - void insert(ExPolygon* overhang_new, int layer_nr) { - if (layer_overhangs.find(layer_nr) != layer_overhangs.end()) { - layer_overhangs[layer_nr].push_back(overhang_new); - } - else { - layer_overhangs.emplace(layer_nr, std::vector{ overhang_new }); - } - ExPolygons overhang_dilated = offset_scaled > EPSILON ? offset_ex(*overhang_new, offset_scaled) : ExPolygons{ *overhang_new }; - if (!overhang_dilated.empty()) - merged_overhangs_dilated = union_ex(merged_overhangs_dilated, overhang_dilated); - min_layer = std::min(min_layer, layer_nr); - max_layer = std::max(max_layer, layer_nr); - } - - int height() { - return max_layer - min_layer + 1; - } - - bool intersects(const ExPolygon& overhang_new, int layer_nr) { - if (layer_nr < 1) - return false; - - //auto it = layer_overhangs.find(layer_nr - 1); - //if (it == layer_overhangs.end()) - // return false; - //ExPolygons overhangs_lower; - //for (ExPolygon* poly : it->second) { - // overhangs_lower.push_back(*poly); - //} - if (layer_nrmax_layer + 1) - return false; - const ExPolygons overhang_dilated = offset_ex(overhang_new, offset_scaled); - return overlaps(overhang_dilated, merged_overhangs_dilated); - } -}; - -static OverhangCluster* add_overhang(std::vector& clusters, ExPolygon* overhang, int layer_nr, coordf_t offset_scaled) { - OverhangCluster* cluster = nullptr; - bool found = false; - for (int i = 0; i < clusters.size(); i++) { - auto cluster_i = &clusters[i]; - if (cluster_i->intersects(*overhang, layer_nr)) { - cluster_i->insert(overhang, layer_nr); - cluster = cluster_i; - break; - } - } - if (!cluster) { - cluster = &clusters.emplace_back(overhang, layer_nr, offset_scaled); - } - return cluster; -}; - -// Generate top contact layers supporting overhangs. -// For a soluble interface material synchronize the layer heights with the object, otherwise leave the layer height undefined. -// If supports over bed surface only are requested, don't generate contact layers over an object. -PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::top_contact_layers( - const PrintObject &object, const std::vector &buildplate_covered, MyLayerStorage &layer_storage) const -{ -#ifdef SLIC3R_DEBUG - static int iRun = 0; - ++ iRun; - #define SLIC3R_IRUN , iRun -#endif /* SLIC3R_DEBUG */ - - // BBS: tree support is selected so normal supports need not be generated. - // Note we still need to go through the following steps if support is disabled but raft is enabled. - if (m_object_config->enable_support.value && (m_object_config->support_type.value != stNormalAuto && m_object_config->support_type.value != stNormal)) { - return MyLayersPtr(); - } - - // Slice support enforcers / support blockers. - SupportAnnotations annotations(object, buildplate_covered); - - // Output layers, sorted by top Z. - MyLayersPtr contact_out; - - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::top_contact_layers() in parallel - start"; - // Determine top contact areas. - // If generating raft only (no support), only calculate top contact areas for the 0th layer. - // If having a raft, start with 0th layer, otherwise with 1st layer. - // Note that layer_id < layer->id when raft_layers > 0 as the layer->id incorporates the raft layers. - // So layer_id == 0 means first object layer and layer->id == 0 means first print layer if there are no explicit raft layers. - size_t num_layers = this->has_support() ? object.layer_count() : 1; - // For each overhang layer, two supporting layers may be generated: One for the overhangs extruded with a bridging flow, - // and the other for the overhangs extruded with a normal flow. - contact_out.assign(num_layers * 2, nullptr); - tbb::spin_mutex layer_storage_mutex; - - std::vector overhangs_per_layers(num_layers); - size_t layer_id_start = this->has_raft() ? 0 : 1; - // main part of overhang detection can be parallel - tbb::parallel_for(tbb::blocked_range(layer_id_start, num_layers), - [&](const tbb::blocked_range& range) { - for (size_t layer_id = range.begin(); layer_id < range.end(); layer_id++) { - const Layer& layer = *object.layers()[layer_id]; - Polygons lower_layer_polygons = (layer_id == 0) ? Polygons() : to_polygons(object.layers()[layer_id - 1]->lslices); - - overhangs_per_layers[layer_id] = detect_overhangs(layer, layer_id, lower_layer_polygons, *m_print_config, *m_object_config, annotations, m_support_params.gap_xy -#ifdef SLIC3R_DEBUG - , iRun -#endif // SLIC3R_DEBUG - ); - - if (object.print()->canceled()) - break; - } - } - ); // end tbb::parallel_for - - if (object.print()->canceled()) - return MyLayersPtr(); - - // check if the sharp tails should be extended higher - bool detect_first_sharp_tail_only = false; - const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(object.print()->config().nozzle_diameter.get_at(object.config().support_interface_filament-1)); - const coordf_t extrusion_width_scaled = scale_(extrusion_width); - if (is_auto(m_object_config->support_type.value) && g_config_support_sharp_tails && !detect_first_sharp_tail_only) { - for (size_t layer_nr = layer_id_start; layer_nr < num_layers; layer_nr++) { - if (object.print()->canceled()) - break; - - const Layer* layer = object.get_layer(layer_nr); - const Layer* lower_layer = layer->lower_layer; - if (!lower_layer) - continue; - - // BBS detect sharp tail - const ExPolygons& lower_layer_sharptails = lower_layer->sharp_tails; - const auto& lower_layer_sharptails_height = lower_layer->sharp_tails_height; - for (const ExPolygon& expoly : layer->lslices) { - bool is_sharp_tail = false; - float accum_height = layer->height; - do { - // 2. something below - // check whether this is above a sharp tail region. - - // 2.1 If no sharp tail below, this is considered as common region. - ExPolygons supported_by_lower = intersection_ex({ expoly }, lower_layer_sharptails); - if (supported_by_lower.empty()) { - is_sharp_tail = false; - break; - } - - // 2.2 If sharp tail below, check whether it support this region enough. -#if 0 - // judge by area isn't reliable, failure cases include 45 degree rotated cube - float supported_area = area(supported_by_lower); - if (supported_area > area_thresh_well_supported) { - is_sharp_tail = false; - break; - } -#endif - BoundingBox bbox = get_extents(supported_by_lower); - if (bbox.size().x() > length_thresh_well_supported && bbox.size().y() > length_thresh_well_supported) { - is_sharp_tail = false; - break; - } - - // 2.3 check whether sharp tail exceed the max height - for (const auto& lower_sharp_tail_height : lower_layer_sharptails_height) { - if (lower_sharp_tail_height.first->overlaps(expoly)) { - accum_height += lower_sharp_tail_height.second; - break; - } - } - if (accum_height > sharp_tail_max_support_height) { - is_sharp_tail = false; - break; - } - - // 2.4 if the area grows fast than threshold, it get connected to other part or - // it has a sharp slop and will be auto supported. - ExPolygons new_overhang_expolys = diff_ex({ expoly }, lower_layer_sharptails); - Point size_diff = get_extents(new_overhang_expolys).size() - get_extents(lower_layer_sharptails).size(); - if (size_diff.both_comp(Point(scale_(5), scale_(5)), ">") || !offset_ex(new_overhang_expolys, -5.0 * extrusion_width_scaled).empty()) { - is_sharp_tail = false; - break; - } - - // 2.5 mark the expoly as sharptail - is_sharp_tail = true; - } while (0); - - if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ expoly }, lower_layer->lslices); - layer->sharp_tails.push_back(expoly); - layer->sharp_tails_height.insert({ &expoly, accum_height }); - append(overhangs_per_layers[layer_nr], overhang); -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(get_svg_filename(std::to_string(layer->print_z), "sharp_tail"), object.bounding_box()); - if (svg.is_opened()) svg.draw(overhang, "yellow"); -#endif - } - - } - } - } - - if (object.print()->canceled()) - return MyLayersPtr(); - - // BBS group overhang clusters - const bool config_remove_small_overhangs = m_object_config->support_remove_small_overhang.value; - if (config_remove_small_overhangs) { - std::vector clusters; - double fw_scaled = scale_(extrusion_width); - std::set removed_overhang; - - for (size_t layer_id = layer_id_start; layer_id < num_layers; layer_id++) { - const Layer* layer = object.get_layer(layer_id); - for (auto& overhang : overhangs_per_layers[layer_id]) { - OverhangCluster* cluster = add_overhang(clusters, &overhang, layer_id, fw_scaled); - if (overlaps({ overhang }, layer->cantilevers)) - cluster->is_cantilever = true; - } - } - - for (OverhangCluster& cluster : clusters) { - // 3. check whether the small overhang is sharp tail - cluster.is_sharp_tail = false; - for (size_t layer_id = cluster.min_layer; layer_id <= cluster.max_layer; layer_id++) { - const Layer* layer = object.get_layer(layer_id); - if (overlaps(layer->sharp_tails, cluster.merged_overhangs_dilated)) { - cluster.is_sharp_tail = true; - break; - } - } - - if (!cluster.is_sharp_tail && !cluster.is_cantilever) { - // 2. check overhang cluster size is small - cluster.is_small_overhang = false; - auto erode1 = offset_ex(cluster.merged_overhangs_dilated, -1.0 * fw_scaled); - Point bbox_sz = get_extents(erode1).size(); - if (bbox_sz.x() < 2 * fw_scaled || bbox_sz.y() < 2 * fw_scaled) { - cluster.is_small_overhang = true; - } - } - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - const Layer* layer1 = object.get_layer(cluster.min_layer); - BoundingBox bbox = get_extents(cluster.merged_overhangs_dilated); - bbox.merge(get_extents(layer1->lslices)); - SVG svg(format("SVG/overhangCluster_%s_%s_tail=%s_cantilever=%s_small=%s.svg", cluster.min_layer, layer1->print_z, cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang), bbox); - if (svg.is_opened()) { - svg.draw(layer1->lslices, "red"); - svg.draw(cluster.merged_overhangs_dilated, "blue"); - } -#endif - - // 5. remove small overhangs - if (cluster.is_small_overhang) { - for (auto overhangs : cluster.layer_overhangs) { - for (auto* poly : overhangs.second) - removed_overhang.insert(poly); - } - } - } - - for (size_t layer_id = layer_id_start; layer_id < num_layers; layer_id++) { - auto& layer_overhangs = overhangs_per_layers[layer_id]; - if (layer_overhangs.empty()) - continue; - - for (int poly_idx = 0; poly_idx < layer_overhangs.size(); poly_idx++) { - auto* overhang = &layer_overhangs[poly_idx]; - if (removed_overhang.find(overhang) != removed_overhang.end()) { - overhang->clear(); - } - } - } - } - - if (object.print()->canceled()) - return MyLayersPtr(); - - for (size_t layer_id = layer_id_start; layer_id < num_layers; layer_id++) { - const Layer& layer = *object.layers()[layer_id]; - Polygons overhang_polygons = to_polygons(overhangs_per_layers[layer_id]); - Polygons lower_layer_polygons = (layer_id == 0) ? Polygons() : to_polygons(object.layers()[layer_id - 1]->lslices); - SlicesMarginCache slices_margin; - - auto [contact_polygons, enforcer_polygons, no_interface_offset] = - detect_contacts(layer, layer_id, overhang_polygons, lower_layer_polygons, *m_print_config, *m_object_config, annotations, slices_margin, m_support_params.gap_xy -#ifdef SLIC3R_DEBUG - , iRun -#endif // SLIC3R_DEBUG - ); - - // Now apply the contact areas to the layer where they need to be made. - if (!contact_polygons.empty() || !overhang_polygons.empty()) { - // Allocate the two empty layers. - auto [new_layer, bridging_layer] = new_contact_layer(*m_print_config, *m_object_config, m_slicing_params, m_support_params.support_layer_height_min, layer, layer_storage, layer_storage_mutex); - if (new_layer) { - // Fill the non-bridging layer with polygons. - fill_contact_layer(*new_layer, layer_id, m_slicing_params, - *m_object_config, slices_margin, overhang_polygons, contact_polygons, enforcer_polygons, lower_layer_polygons, - m_support_params.support_material_flow, no_interface_offset -#ifdef SLIC3R_DEBUG - , iRun, layer -#endif // SLIC3R_DEBUG - ); - // Insert new layer even if there is no interface generated: Likely the support angle is not steep enough to require dense interface, - // however generating a sparse support will be useful for the object stability. - // if (! new_layer->polygons.empty()) - contact_out[layer_id * 2] = new_layer; - if (bridging_layer != nullptr) { - bridging_layer->polygons = new_layer->polygons; - bridging_layer->contact_polygons = std::make_unique(*new_layer->contact_polygons); - bridging_layer->overhang_polygons = std::make_unique(*new_layer->overhang_polygons); - if (new_layer->enforcer_polygons) - bridging_layer->enforcer_polygons = std::make_unique(*new_layer->enforcer_polygons); - contact_out[layer_id * 2 + 1] = bridging_layer; - } - } - } - } - - // Compress contact_out, remove the nullptr items. - remove_nulls(contact_out); - - // Merge close contact layers conservatively: If two layers are closer than the minimum allowed print layer height (the min_layer_height parameter), - // the top contact layer is merged into the bottom contact layer. - merge_contact_layers(m_slicing_params, m_support_params.support_layer_height_min, contact_out); - - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::top_contact_layers() in parallel - end"; - - return contact_out; -} - -// Find the bottom contact layers above the top surfaces of this layer. -static inline PrintObjectSupportMaterial::MyLayer* detect_bottom_contacts( - const SlicingParameters &slicing_params, - const PrintObjectSupportMaterial::SupportParams &support_params, - const PrintObject &object, - const Layer &layer, - // Existing top contact layers, to which this newly created bottom contact layer will be snapped to guarantee a minimum layer height. - const PrintObjectSupportMaterial::MyLayersPtr &top_contacts, - // First top contact layer index overlapping with this new bottom interface layer. - size_t contact_idx, - // To allocate a new layer from. - std::deque &layer_storage, - // To trim the support areas above this bottom interface layer with this newly created bottom interface layer. - std::vector &layer_support_areas, - // Support areas projected from top to bottom, starting with top support interfaces. - const Polygons &supports_projected -#ifdef SLIC3R_DEBUG - , size_t iRun - , const Polygons &polygons_new -#endif // SLIC3R_DEBUG - ) -{ - Polygons top = collect_region_slices_by_type(layer, stTop); -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-bottom-layers-raw-%d-%lf.svg", iRun, layer.print_z), - { { { union_ex(top) }, { "top", "blue", 0.5f } }, - { { union_safety_offset_ex(supports_projected) }, { "overhangs", "magenta", 0.5f } }, - { layer.lslices, { "layer.lslices", "green", 0.5f } }, - { { union_safety_offset_ex(polygons_new) }, { "polygons_new", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - - // Now find whether any projection of the contact surfaces above layer.print_z not yet supported by any - // top surfaces above layer.print_z falls onto this top surface. - // Touching are the contact surfaces supported exclusively by this top surfaces. - // Don't use a safety offset as it has been applied during insertion of polygons. - if (top.empty()) - return nullptr; - - Polygons touching = intersection(top, supports_projected); - if (touching.empty()) - return nullptr; - - assert(layer.id() >= slicing_params.raft_layers()); - size_t layer_id = layer.id() - slicing_params.raft_layers(); - - // Allocate a new bottom contact layer. - PrintObjectSupportMaterial::MyLayer &layer_new = layer_allocate(layer_storage, PrintObjectSupportMaterial::sltBottomContact); - // Grow top surfaces so that interface and support generation are generated - // with some spacing from object - it looks we don't need the actual - // top shapes so this can be done here - //FIXME calculate layer height based on the actual thickness of the layer: - // If the layer is extruded with no bridging flow, support just the normal extrusions. - layer_new.height = slicing_params.soluble_interface || !object.print()->config().independent_support_layer_height ? - // Align the interface layer with the object's layer height. - layer.upper_layer->height : - // Place a bridge flow interface layer or the normal flow interface layer over the top surface. - support_params.support_material_bottom_interface_flow.height(); - layer_new.print_z = slicing_params.soluble_interface ? layer.upper_layer->print_z : - layer.print_z + layer_new.height + slicing_params.gap_object_support; - layer_new.bottom_z = layer.print_z; - layer_new.idx_object_layer_below = layer_id; - layer_new.bridging = !slicing_params.soluble_interface && object.config().thick_bridges; - //FIXME how much to inflate the bottom surface, as it is being extruded with a bridging flow? The following line uses a normal flow. - layer_new.polygons = expand(touching, float(support_params.support_material_flow.scaled_width()), SUPPORT_SURFACES_OFFSET_PARAMETERS); - - if (! slicing_params.soluble_interface) { - // Walk the top surfaces, snap the top of the new bottom surface to the closest top of the top surface, - // so there will be no support surfaces generated with thickness lower than m_support_layer_height_min. - for (size_t top_idx = size_t(std::max(0, contact_idx)); - top_idx < top_contacts.size() && top_contacts[top_idx]->print_z < layer_new.print_z + support_params.support_layer_height_min + EPSILON; - ++ top_idx) { - if (top_contacts[top_idx]->print_z > layer_new.print_z - support_params.support_layer_height_min - EPSILON) { - // A top layer has been found, which is close to the new bottom layer. - coordf_t diff = layer_new.print_z - top_contacts[top_idx]->print_z; - assert(std::abs(diff) <= support_params.support_layer_height_min + EPSILON); - if (diff > 0.F) { - if (layer_new.height - diff > support_params.support_layer_height_min) { - // The top contact layer is below this layer. Make the bridging layer thinner to align with the existing top layer. - assert(diff < layer_new.height + EPSILON); - assert(layer_new.height - diff >= support_params.support_layer_height_min - EPSILON); - layer_new.print_z = top_contacts[top_idx]->print_z; - layer_new.height -= diff; - } - else { - // BBS: The trimmed layer height is smaller than support_layer_height_min. Walk to the next top contact layer. - continue; - } - } - else { - // The top contact layer is above this layer. One may either make this layer thicker or thinner. - // By making the layer thicker, one will decrease the number of discrete layers with the price of extruding a bit too thick bridges. - // By making the layer thinner, one adds one more discrete layer. - layer_new.print_z = top_contacts[top_idx]->print_z; - layer_new.height -= diff; - } - break; - } - } - } - -#ifdef SLIC3R_DEBUG - Slic3r::SVG::export_expolygons( - debug_out_path("support-bottom-contacts-%d-%lf.svg", iRun, layer_new.print_z), - union_ex(layer_new.polygons)); -#endif /* SLIC3R_DEBUG */ - - // Trim the already created base layers above the current layer intersecting with the new bottom contacts layer. - //FIXME Maybe this is no more needed, as the overlapping base layers are trimmed by the bottom layers at the final stage? - touching = expand(touching, float(SCALED_EPSILON)); - for (int layer_id_above = layer_id + 1; layer_id_above < int(object.total_layer_count()); ++ layer_id_above) { - const Layer &layer_above = *object.layers()[layer_id_above]; - if (layer_above.print_z > layer_new.print_z - EPSILON) - break; - if (Polygons &above = layer_support_areas[layer_id_above]; ! above.empty()) { -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-support-areas-raw-before-trimming-%d-with-%f-%lf.svg", iRun, layer.print_z, layer_above.print_z), - { { { union_ex(touching) }, { "touching", "blue", 0.5f } }, - { { union_safety_offset_ex(above) }, { "above", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - above = diff(above, touching); -#ifdef SLIC3R_DEBUG - Slic3r::SVG::export_expolygons( - debug_out_path("support-support-areas-raw-after-trimming-%d-with-%f-%lf.svg", iRun, layer.print_z, layer_above.print_z), - union_ex(above)); -#endif /* SLIC3R_DEBUG */ - } - } - - return &layer_new; -} - -// Returns polygons to print + polygons to propagate downwards. -// Called twice: First for normal supports, possibly trimmed by "on build plate only", second for support enforcers not trimmed by "on build plate only". -static inline std::pair project_support_to_grid(const Layer &layer, const SupportGridParams &grid_params, const Polygons &overhangs, Polygons *layer_buildplate_covered -#ifdef SLIC3R_DEBUG - , size_t iRun, size_t layer_id, const char *debug_name -#endif /* SLIC3R_DEBUG */ -) -{ - // Remove the areas that touched from the projection that will continue on next, lower, top surfaces. -// Polygons trimming = union_(to_polygons(layer.slices), touching, true); - Polygons trimming = layer_buildplate_covered ? std::move(*layer_buildplate_covered) : offset(layer.lslices, float(SCALED_EPSILON)); - Polygons overhangs_projection = diff(overhangs, trimming); - -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-support-areas-%s-raw-%d-%lf.svg", debug_name, iRun, layer.print_z), - { { { union_ex(trimming) }, { "trimming", "blue", 0.5f } }, - { { union_safety_offset_ex(overhangs_projection) }, { "overhangs_projection", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - - remove_sticks(overhangs_projection); - remove_degenerate(overhangs_projection); - -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-support-areas-%s-raw-cleaned-%d-%lf.svg", debug_name, iRun, layer.print_z), - { { { union_ex(trimming) }, { "trimming", "blue", 0.5f } }, - { { union_ex(overhangs_projection) }, { "overhangs_projection", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - - SupportGridPattern support_grid_pattern(&overhangs_projection, &trimming, grid_params); - tbb::task_group task_group_inner; - - std::pair out; - - // 1) Cache the slice of a support volume. The support volume is expanded by 1/2 of support material flow spacing - // to allow a placement of suppot zig-zag snake along the grid lines. - task_group_inner.run([&grid_params, &support_grid_pattern, &out -#ifdef SLIC3R_DEBUG - , &layer, layer_id, iRun, debug_name -#endif /* SLIC3R_DEBUG */ - ] { - out.first = support_grid_pattern.extract_support(grid_params.expansion_to_slice, true -#ifdef SLIC3R_DEBUG - , (std::string(debug_name) + "_support_area").c_str(), iRun, layer_id, layer.print_z -#endif // SLIC3R_DEBUG - ); -#ifdef SLIC3R_DEBUG - Slic3r::SVG::export_expolygons( - debug_out_path("support-layer_support_area-gridded-%s-%d-%lf.svg", debug_name, iRun, layer.print_z), - union_ex(out.first)); -#endif /* SLIC3R_DEBUG */ - }); - - // 2) Support polygons will be projected down. To keep the interface and base layers from growing, return a contour a tiny bit smaller than the grid cells. - task_group_inner.run([&grid_params, &support_grid_pattern, &out -#ifdef SLIC3R_DEBUG - , &layer, layer_id, &overhangs_projection, &trimming, iRun, debug_name -#endif /* SLIC3R_DEBUG */ - ] { - out.second = support_grid_pattern.extract_support(grid_params.expansion_to_propagate, true -#ifdef SLIC3R_DEBUG - , "support_projection", iRun, layer_id, layer.print_z -#endif // SLIC3R_DEBUG - ); -#ifdef SLIC3R_DEBUG - Slic3r::SVG::export_expolygons( - debug_out_path("support-projection_new-gridded-%d-%lf.svg", iRun, layer.print_z), - union_ex(out.second)); -#endif /* SLIC3R_DEBUG */ -#ifdef SLIC3R_DEBUG - SVG::export_expolygons(debug_out_path("support-projection_new-gridded-%d-%lf.svg", iRun, layer.print_z), - { { { union_ex(trimming) }, { "trimming", "gray", 0.5f } }, - { { union_safety_offset_ex(overhangs_projection) }, { "overhangs_projection", "blue", 0.5f } }, - { { union_safety_offset_ex(out.second) }, { "projection_new", "red", "black", "", scaled(0.1f), 0.5f } } }); -#endif /* SLIC3R_DEBUG */ - }); - - task_group_inner.wait(); - return out; -} - -// Generate bottom contact layers supporting the top contact layers. -// For a soluble interface material synchronize the layer heights with the object, -// otherwise set the layer height to a bridging flow of a support interface nozzle. -PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::bottom_contact_layers_and_layer_support_areas( - const PrintObject &object, const MyLayersPtr &top_contacts, std::vector &buildplate_covered, - MyLayerStorage &layer_storage, std::vector &layer_support_areas) const -{ - if (top_contacts.empty()) - return MyLayersPtr(); - -#ifdef SLIC3R_DEBUG - static size_t s_iRun = 0; - size_t iRun = s_iRun ++; -#endif /* SLIC3R_DEBUG */ - - //FIXME higher expansion_to_slice here? why? - //const auto expansion_to_slice = m_support_material_flow.scaled_spacing() / 2 + 25; - const SupportGridParams grid_params(*m_object_config, m_support_params.support_material_flow); - const bool buildplate_only = ! buildplate_covered.empty(); - - // Allocate empty surface areas, one per object layer. - layer_support_areas.assign(object.total_layer_count(), Polygons()); - - // find object top surfaces - // we'll use them to clip our support and detect where does it stick - MyLayersPtr bottom_contacts; - - // There is some support to be built, if there are non-empty top surfaces detected. - // Sum of unsupported contact areas above the current layer.print_z. - Polygons overhangs_projection; - // Sum of unsupported enforcer contact areas above the current layer.print_z. - // Only used if "supports on build plate only" is enabled and both automatic and support enforcers are enabled. - Polygons enforcers_projection; - // Last top contact layer visited when collecting the projection of contact areas. - int contact_idx = int(top_contacts.size()) - 1; - for (int layer_id = int(object.total_layer_count()) - 2; layer_id >= 0; -- layer_id) { - BOOST_LOG_TRIVIAL(trace) << "Support generator - bottom_contact_layers - layer " << layer_id; - const Layer &layer = *object.get_layer(layer_id); - // Collect projections of all contact areas above or at the same level as this top surface. -#ifdef SLIC3R_DEBUG - Polygons polygons_new; - Polygons enforcers_new; -#endif // SLIC3R_DEBUG - for (; contact_idx >= 0 && top_contacts[contact_idx]->print_z > layer.print_z - EPSILON; -- contact_idx) { - MyLayer &top_contact = *top_contacts[contact_idx]; -#ifndef SLIC3R_DEBUG - Polygons polygons_new; - Polygons enforcers_new; -#endif // SLIC3R_DEBUG - // Contact surfaces are expanded away from the object, trimmed by the object. - // Use a slight positive offset to overlap the touching regions. -#if 0 - // Merge and collect the contact polygons. The contact polygons are inflated, but not extended into a grid form. - polygons_append(polygons_new, offset(*top_contact.contact_polygons, SCALED_EPSILON)); - if (top_contact.enforcer_polygons) - polygons_append(enforcers_new, offset(*top_contact.enforcer_polygons, SCALED_EPSILON)); -#else - // Consume the contact_polygons. The contact polygons are already expanded into a grid form, and they are a tiny bit smaller - // than the grid cells. - polygons_append(polygons_new, std::move(*top_contact.contact_polygons)); - if (top_contact.enforcer_polygons) - polygons_append(enforcers_new, std::move(*top_contact.enforcer_polygons)); -#endif - // These are the overhang surfaces. They are touching the object and they are not expanded away from the object. - // Use a slight positive offset to overlap the touching regions. - polygons_append(polygons_new, expand(*top_contact.overhang_polygons, float(SCALED_EPSILON))); - polygons_append(overhangs_projection, union_(polygons_new)); - polygons_append(enforcers_projection, enforcers_new); - } - if (overhangs_projection.empty() && enforcers_projection.empty()) - continue; - - // Overhangs_projection will be filled in asynchronously, move it away. - Polygons overhangs_projection_raw = union_(std::move(overhangs_projection)); - Polygons enforcers_projection_raw = union_(std::move(enforcers_projection)); - - tbb::task_group task_group; - const Polygons &overhangs_for_bottom_contacts = buildplate_only ? enforcers_projection_raw : overhangs_projection_raw; - if (! overhangs_for_bottom_contacts.empty()) - // Find the bottom contact layers above the top surfaces of this layer. - task_group.run([this, &object, &layer, &top_contacts, contact_idx, &layer_storage, &layer_support_areas, &bottom_contacts, &overhangs_for_bottom_contacts - #ifdef SLIC3R_DEBUG - , iRun, &polygons_new - #endif // SLIC3R_DEBUG - ] { - // Find the bottom contact layers above the top surfaces of this layer. - MyLayer *layer_new = detect_bottom_contacts( - m_slicing_params, m_support_params, object, layer, top_contacts, contact_idx, layer_storage, layer_support_areas, overhangs_for_bottom_contacts -#ifdef SLIC3R_DEBUG - , iRun, polygons_new -#endif // SLIC3R_DEBUG - ); - if (layer_new) - bottom_contacts.push_back(layer_new); - }); - - Polygons &layer_support_area = layer_support_areas[layer_id]; - Polygons *layer_buildplate_covered = buildplate_covered.empty() ? nullptr : &buildplate_covered[layer_id]; - // Filtering the propagated support columns to two extrusions, overlapping by maximum 20%. -// float column_propagation_filtering_radius = scaled(0.8 * 0.5 * (m_support_params.support_material_flow.spacing() + m_support_params.support_material_flow.width())); - task_group.run([&grid_params, &overhangs_projection, &overhangs_projection_raw, &layer, &layer_support_area, layer_buildplate_covered /* , column_propagation_filtering_radius */ -#ifdef SLIC3R_DEBUG - , iRun, layer_id -#endif /* SLIC3R_DEBUG */ - ] { - // buildplate_covered[layer_id] will be consumed here. - std::tie(layer_support_area, overhangs_projection) = project_support_to_grid(layer, grid_params, overhangs_projection_raw, layer_buildplate_covered -#ifdef SLIC3R_DEBUG - , iRun, layer_id, "general" -#endif /* SLIC3R_DEBUG */ - ); - // When propagating support areas downwards, stop propagating the support column if it becomes too thin to be printable. - //overhangs_projection = opening(overhangs_projection, column_propagation_filtering_radius); - }); - - Polygons layer_support_area_enforcers; - if (! enforcers_projection.empty()) - // Project the enforcers polygons downwards, don't trim them with the "buildplate only" polygons. - task_group.run([&grid_params, &enforcers_projection, &enforcers_projection_raw, &layer, &layer_support_area_enforcers -#ifdef SLIC3R_DEBUG - , iRun, layer_id -#endif /* SLIC3R_DEBUG */ - ]{ - std::tie(layer_support_area_enforcers, enforcers_projection) = project_support_to_grid(layer, grid_params, enforcers_projection_raw, nullptr -#ifdef SLIC3R_DEBUG - , iRun, layer_id, "enforcers" -#endif /* SLIC3R_DEBUG */ - ); - }); - - task_group.wait(); - - if (! layer_support_area_enforcers.empty()) { - if (layer_support_area.empty()) - layer_support_area = std::move(layer_support_area_enforcers); - else - layer_support_area = union_(layer_support_area, layer_support_area_enforcers); - } - } // over all layers downwards - - std::reverse(bottom_contacts.begin(), bottom_contacts.end()); - trim_support_layers_by_object(object, bottom_contacts, m_slicing_params.gap_support_object, m_slicing_params.gap_object_support, m_support_params.gap_xy); - return bottom_contacts; -} - -template -IndexType idx_higher_or_equal(const std::vector& vec, IndexType idx, FN_HIGHER_EQUAL fn_higher_equal) -{ - return Layer::idx_higher_or_equal(vec.begin(), vec.end(), idx, fn_higher_equal); -} - -// FN_LOWER_EQUAL: the provided object pointer has a Z value <= of an internal threshold. -// Find the first item with Z value <= of an internal threshold of fn_lower_equal. -// If no vec item with Z value <= of an internal threshold of fn_lower_equal is found, return -1. -// If the initial idx is < -1, then use binary search. -// Otherwise search linearly downwards. -template -int idx_lower_or_equal(IT begin, IT end, int idx, FN_LOWER_EQUAL fn_lower_equal) -{ - auto size = int(end - begin); - if (size == 0) { - idx = -1; - } else if (idx < -1) { - // First of the batch of layers per thread pool invocation. Use binary search. - int idx_low = 0; - int idx_high = std::max(0, size - 1); - while (idx_low + 1 < idx_high) { - int idx_mid = (idx_low + idx_high) / 2; - if (fn_lower_equal(begin[idx_mid])) - idx_low = idx_mid; - else - idx_high = idx_mid; - } - idx = fn_lower_equal(begin[idx_high]) ? idx_high : - (fn_lower_equal(begin[idx_low ]) ? idx_low : -1); - } else { - // For the other layers of this batch of layers, search incrementally, which is cheaper than the binary search. - while (idx >= 0 && ! fn_lower_equal(begin[idx])) - -- idx; - } - return idx; -} -template -int idx_lower_or_equal(const std::vector &vec, int idx, FN_LOWER_EQUAL fn_lower_equal) -{ - return idx_lower_or_equal(vec.begin(), vec.end(), idx, fn_lower_equal); -} - -// Trim the top_contacts layers with the bottom_contacts layers if they overlap, so there would not be enough vertical space for both of them. -void PrintObjectSupportMaterial::trim_top_contacts_by_bottom_contacts( - const PrintObject &object, const MyLayersPtr &bottom_contacts, MyLayersPtr &top_contacts) const -{ - tbb::parallel_for(tbb::blocked_range(0, int(top_contacts.size())), - [&bottom_contacts, &top_contacts](const tbb::blocked_range& range) { - int idx_bottom_overlapping_first = -2; - // For all top contact layers, counting downwards due to the way idx_higher_or_equal caches the last index to avoid repeated binary search. - for (int idx_top = range.end() - 1; idx_top >= range.begin(); -- idx_top) { - MyLayer &layer_top = *top_contacts[idx_top]; - // Find the first bottom layer overlapping with layer_top. - idx_bottom_overlapping_first = idx_lower_or_equal(bottom_contacts, idx_bottom_overlapping_first, [&layer_top](const MyLayer *layer_bottom){ return layer_bottom->bottom_print_z() - EPSILON <= layer_top.bottom_z; }); - // For all top contact layers overlapping with the thick bottom contact layer: - for (int idx_bottom_overlapping = idx_bottom_overlapping_first; idx_bottom_overlapping >= 0; -- idx_bottom_overlapping) { - const MyLayer &layer_bottom = *bottom_contacts[idx_bottom_overlapping]; - assert(layer_bottom.bottom_print_z() - EPSILON <= layer_top.bottom_z); - if (layer_top.print_z < layer_bottom.print_z + EPSILON) { - // Layers overlap. Trim layer_top with layer_bottom. - layer_top.polygons = diff(layer_top.polygons, layer_bottom.polygons); - } else - break; - } - } - }); -} - -PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::raft_and_intermediate_support_layers( - const PrintObject &object, - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - MyLayerStorage &layer_storage) const -{ - MyLayersPtr intermediate_layers; - - // Collect and sort the extremes (bottoms of the top contacts and tops of the bottom contacts). - MyLayersPtr extremes; - extremes.reserve(top_contacts.size() + bottom_contacts.size()); - for (size_t i = 0; i < top_contacts.size(); ++ i) - // Bottoms of the top contact layers. In case of non-soluble supports, - // the top contact layer thickness is not known yet. - extremes.push_back(top_contacts[i]); - for (size_t i = 0; i < bottom_contacts.size(); ++ i) - // Tops of the bottom contact layers. - extremes.push_back(bottom_contacts[i]); - if (extremes.empty()) - return intermediate_layers; - - auto layer_extreme_lower = [](const MyLayer *l1, const MyLayer *l2) { - coordf_t z1 = l1->extreme_z(); - coordf_t z2 = l2->extreme_z(); - // If the layers are aligned, return the top contact surface first. - return z1 < z2 || (z1 == z2 && l1->layer_type == PrintObjectSupportMaterial::sltTopContact && l2->layer_type == PrintObjectSupportMaterial::sltBottomContact); - }; - std::sort(extremes.begin(), extremes.end(), layer_extreme_lower); - - assert(extremes.empty() || - (extremes.front()->extreme_z() > m_slicing_params.raft_interface_top_z - EPSILON && - (m_slicing_params.raft_layers() == 1 || // only raft contact layer - extremes.front()->layer_type == sltTopContact || // first extreme is a top contact layer - extremes.front()->extreme_z() > m_slicing_params.first_print_layer_height - EPSILON))); - - bool synchronize = this->synchronize_layers(); - -#ifdef _DEBUG - // Verify that the extremes are separated by m_support_layer_height_min. - for (size_t i = 1; i < extremes.size(); ++ i) { - assert(extremes[i]->extreme_z() - extremes[i-1]->extreme_z() == 0. || - extremes[i]->extreme_z() - extremes[i-1]->extreme_z() > m_support_params.support_layer_height_min - EPSILON); - assert(extremes[i]->extreme_z() - extremes[i-1]->extreme_z() > 0. || - extremes[i]->layer_type == extremes[i-1]->layer_type || - (extremes[i]->layer_type == sltBottomContact && extremes[i - 1]->layer_type == sltTopContact)); - } -#endif - - // Generate intermediate layers. - // The first intermediate layer is the same as the 1st layer if there is no raft, - // or the bottom of the first intermediate layer is aligned with the bottom of the raft contact layer. - // Intermediate layers are always printed with a normal extrusion flow (non-bridging). - size_t idx_layer_object = 0; - size_t idx_extreme_first = 0; - if (! extremes.empty() && std::abs(extremes.front()->extreme_z() - m_slicing_params.raft_interface_top_z) < EPSILON) { - // This is a raft contact layer, its height has been decided in this->top_contact_layers(). - // Ignore this layer when calculating the intermediate support layers. - assert(extremes.front()->layer_type == sltTopContact); - ++ idx_extreme_first; - } - for (size_t idx_extreme = idx_extreme_first; idx_extreme < extremes.size(); ++ idx_extreme) { - MyLayer *extr2 = extremes[idx_extreme]; - coordf_t extr2z = extr2->extreme_z(); - if (std::abs(extr2z - m_slicing_params.first_print_layer_height) < EPSILON) { - // This is a bottom of a synchronized (or soluble) top contact layer, its height has been decided in this->top_contact_layers(). - assert(extr2->layer_type == sltTopContact); - assert(std::abs(extr2->bottom_z - m_slicing_params.first_print_layer_height) < EPSILON); - assert(extr2->print_z >= m_slicing_params.first_print_layer_height + m_support_params.support_layer_height_min - EPSILON); - if (intermediate_layers.empty() || intermediate_layers.back()->print_z < m_slicing_params.first_print_layer_height) { - MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); - layer_new.bottom_z = 0.; - layer_new.print_z = m_slicing_params.first_print_layer_height; - layer_new.height = m_slicing_params.first_print_layer_height; - intermediate_layers.push_back(&layer_new); - } - continue; - } - assert(extr2z >= m_slicing_params.raft_interface_top_z + EPSILON); - assert(extr2z >= m_slicing_params.first_print_layer_height + EPSILON); - MyLayer *extr1 = (idx_extreme == idx_extreme_first) ? nullptr : extremes[idx_extreme - 1]; - // Fuse a support layer firmly to the raft top interface (not to the raft contacts). - coordf_t extr1z = (extr1 == nullptr) ? m_slicing_params.raft_interface_top_z : extr1->extreme_z(); - assert(extr2z >= extr1z); - assert(extr2z > extr1z || (extr1 != nullptr && extr2->layer_type == sltBottomContact)); - if (std::abs(extr1z) < EPSILON) { - // This layer interval starts with the 1st layer. Print the 1st layer using the prescribed 1st layer thickness. - // assert(! m_slicing_params.has_raft()); RaftingEdition: unclear where the issue is: assert fails with 1-layer raft & base supports - assert(intermediate_layers.empty() || intermediate_layers.back()->print_z <= m_slicing_params.first_print_layer_height); - // At this point only layers above first_print_layer_heigth + EPSILON are expected as the other cases were captured earlier. - assert(extr2z >= m_slicing_params.first_print_layer_height + EPSILON); - // Generate a new intermediate layer. - MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); - layer_new.bottom_z = 0.; - layer_new.print_z = extr1z = m_slicing_params.first_print_layer_height; - layer_new.height = extr1z; - intermediate_layers.push_back(&layer_new); - // Continue printing the other layers up to extr2z. - } - coordf_t dist = extr2z - extr1z; - assert(dist >= 0.); - if (dist == 0.) - continue; - // The new layers shall be at least m_support_layer_height_min thick. - assert(dist >= m_support_params.support_layer_height_min - EPSILON); - if (synchronize) { - // Emit support layers synchronized with the object layers. - // Find the first object layer, which has its print_z in this support Z range. - while (idx_layer_object < object.layers().size() && object.layers()[idx_layer_object]->print_z < extr1z + EPSILON) - ++ idx_layer_object; - if (idx_layer_object == 0 && extr1z == m_slicing_params.raft_interface_top_z) { - // Insert one base support layer below the object. - MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); - layer_new.print_z = m_slicing_params.object_print_z_min; - layer_new.bottom_z = m_slicing_params.raft_interface_top_z; - layer_new.height = layer_new.print_z - layer_new.bottom_z; - intermediate_layers.push_back(&layer_new); - } - // Emit all intermediate support layers synchronized with object layers up to extr2z. - for (; idx_layer_object < object.layers().size() && object.layers()[idx_layer_object]->print_z < extr2z + EPSILON; ++ idx_layer_object) { - MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); - layer_new.print_z = object.layers()[idx_layer_object]->print_z; - layer_new.height = object.layers()[idx_layer_object]->height; - layer_new.bottom_z = (idx_layer_object > 0) ? object.layers()[idx_layer_object - 1]->print_z : (layer_new.print_z - layer_new.height); - assert(intermediate_layers.empty() || intermediate_layers.back()->print_z < layer_new.print_z + EPSILON); - intermediate_layers.push_back(&layer_new); - } - } else { - // Insert intermediate layers. - size_t n_layers_extra = size_t(ceil(dist / m_slicing_params.max_suport_layer_height)); - assert(n_layers_extra > 0); - coordf_t step = dist / coordf_t(n_layers_extra); - if (extr1 != nullptr && extr1->layer_type == sltTopContact && - extr1->print_z + m_support_params.support_layer_height_min > extr1->bottom_z + step) { - // The bottom extreme is a bottom of a top surface. Ensure that the gap - // between the 1st intermediate layer print_z and extr1->print_z is not too small. - assert(extr1->bottom_z + m_support_params.support_layer_height_min < extr1->print_z + EPSILON); - // Generate the first intermediate layer. - MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); - layer_new.bottom_z = extr1->bottom_z; - layer_new.print_z = extr1z = extr1->print_z; - layer_new.height = extr1->height; - intermediate_layers.push_back(&layer_new); - dist = extr2z - extr1z; - n_layers_extra = size_t(ceil(dist / m_slicing_params.max_suport_layer_height)); - if (n_layers_extra == 0) - continue; - // Continue printing the other layers up to extr2z. - step = dist / coordf_t(n_layers_extra); - } - if (! m_slicing_params.soluble_interface && extr2->layer_type == sltTopContact) { - // This is a top interface layer, which does not have a height assigned yet. Do it now. - assert(extr2->height == 0.); - assert(extr1z > m_slicing_params.first_print_layer_height - EPSILON); - extr2->height = step; - extr2->bottom_z = extr2z = extr2->print_z - step; - if (-- n_layers_extra == 0) - continue; - } - coordf_t extr2z_large_steps = extr2z; - // Take the largest allowed step in the Z axis until extr2z_large_steps is reached. - for (size_t i = 0; i < n_layers_extra; ++ i) { - MyLayer &layer_new = layer_allocate(layer_storage, sltIntermediate); - if (i + 1 == n_layers_extra) { - // Last intermediate layer added. Align the last entered layer with extr2z_large_steps exactly. - layer_new.bottom_z = (i == 0) ? extr1z : intermediate_layers.back()->print_z; - layer_new.print_z = extr2z_large_steps; - layer_new.height = layer_new.print_z - layer_new.bottom_z; - } - else { - // Intermediate layer, not the last added. - layer_new.height = step; - layer_new.bottom_z = extr1z + i * step; - layer_new.print_z = layer_new.bottom_z + step; - } - assert(intermediate_layers.empty() || intermediate_layers.back()->print_z <= layer_new.print_z); - intermediate_layers.push_back(&layer_new); - } - } - } - -#ifdef _DEBUG - for (size_t i = 0; i < top_contacts.size(); ++i) - assert(top_contacts[i]->height > 0.); -#endif /* _DEBUG */ - -#if 0 // #ifdef SLIC3R_DEBUG - // check bounds - std::ofstream out; - out.open("./SVG/ns_bounds.txt"); - if (out.is_open()) { - if (!top_contacts.empty()) { - out << "### Top Contacts ###" << std::endl; - for (auto& t : top_contacts) { - out << t->print_z << std::endl; - } - } - if (!bottom_contacts.empty()) { - out << "### Bottome Contacts ###" << std::endl; - for (auto& b : bottom_contacts) { - out << b->print_z << std::endl; - } - } - if (!intermediate_layers.empty()) { - out << "### Intermediate Layers ###" << std::endl; - for (auto& i : intermediate_layers) { - out << i->print_z << std::endl; - } - } - out << "### Slice Layers ###" << std::endl; - for (size_t j = 0; j < object.layers().size(); ++j) { - out << object.layers()[j]->print_z << std::endl; - } - } -#endif /* SLIC3R_DEBUG */ - - return intermediate_layers; -} - -// At this stage there shall be intermediate_layers allocated between bottom_contacts and top_contacts, but they have no polygons assigned. -// Also the bottom/top_contacts shall have a layer thickness assigned already. -void PrintObjectSupportMaterial::generate_base_layers( - const PrintObject &object, - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - MyLayersPtr &intermediate_layers, - const std::vector &layer_support_areas) const -{ -#ifdef SLIC3R_DEBUG - static int iRun = 0; -#endif /* SLIC3R_DEBUG */ - - if (top_contacts.empty()) - // No top contacts -> no intermediate layers will be produced. - return; - - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_base_layers() in parallel - start"; - tbb::parallel_for( - tbb::blocked_range(0, intermediate_layers.size()), - [&object, &bottom_contacts, &top_contacts, &intermediate_layers, &layer_support_areas](const tbb::blocked_range& range) { - // index -2 means not initialized yet, -1 means intialized and decremented to 0 and then -1. - int idx_top_contact_above = -2; - int idx_bottom_contact_overlapping = -2; - int idx_object_layer_above = -2; - // Counting down due to the way idx_lower_or_equal caches indices to avoid repeated binary search over the complete sequence. - for (int idx_intermediate = int(range.end()) - 1; idx_intermediate >= int(range.begin()); -- idx_intermediate) - { - BOOST_LOG_TRIVIAL(trace) << "Support generator - generate_base_layers - creating layer " << - idx_intermediate << " of " << intermediate_layers.size(); - MyLayer &layer_intermediate = *intermediate_layers[idx_intermediate]; - // Layers must be sorted by print_z. - assert(idx_intermediate == 0 || layer_intermediate.print_z >= intermediate_layers[idx_intermediate - 1]->print_z); - - // Find a top_contact layer touching the layer_intermediate from above, if any, and collect its polygons into polygons_new. - // New polygons for layer_intermediate. - Polygons polygons_new; - - // Use the precomputed layer_support_areas. "idx_object_layer_above": above means above since the last iteration, not above after this call. - idx_object_layer_above = idx_lower_or_equal(object.layers().begin(), object.layers().end(), idx_object_layer_above, - [&layer_intermediate](const Layer* layer) { return layer->print_z <= layer_intermediate.print_z + EPSILON; }); - - // Polygons to trim polygons_new. - Polygons polygons_trimming; - - // Trimming the base layer with any overlapping top layer. - // Following cases are recognized: - // 1) top.bottom_z >= base.top_z -> No overlap, no trimming needed. - // 2) base.bottom_z >= top.print_z -> No overlap, no trimming needed. - // 3) base.print_z > top.print_z && base.bottom_z >= top.bottom_z -> Overlap, which will be solved inside generate_toolpaths() by reducing the base layer height where it overlaps the top layer. No trimming needed here. - // 4) base.print_z > top.bottom_z && base.bottom_z < top.bottom_z -> Base overlaps with top.bottom_z. This must not happen. - // 5) base.print_z <= top.print_z && base.bottom_z >= top.bottom_z -> Base is fully inside top. Trim base by top. - idx_top_contact_above = idx_lower_or_equal(top_contacts, idx_top_contact_above, - [&layer_intermediate](const MyLayer *layer){ return layer->bottom_z <= layer_intermediate.print_z - EPSILON; }); - // Collect all the top_contact layer intersecting with this layer. - for (int idx_top_contact_overlapping = idx_top_contact_above; idx_top_contact_overlapping >= 0; -- idx_top_contact_overlapping) { - MyLayer &layer_top_overlapping = *top_contacts[idx_top_contact_overlapping]; - if (layer_top_overlapping.print_z < layer_intermediate.bottom_z + EPSILON) - break; - // Base must not overlap with top.bottom_z. - assert(! (layer_intermediate.print_z > layer_top_overlapping.bottom_z + EPSILON && layer_intermediate.bottom_z < layer_top_overlapping.bottom_z - EPSILON)); - if (layer_intermediate.print_z <= layer_top_overlapping.print_z + EPSILON && layer_intermediate.bottom_z >= layer_top_overlapping.bottom_z - EPSILON) - // Base is fully inside top. Trim base by top. - polygons_append(polygons_trimming, layer_top_overlapping.polygons); - } - - if (idx_object_layer_above < 0) { - // layer_support_areas are synchronized with object layers and they contain projections of the contact layers above them. - // This intermediate layer is not above any object layer, thus there is no information in layer_support_areas about - // towers supporting contact layers intersecting the first object layer. Project these contact layers now. - polygons_new = layer_support_areas.front(); - double first_layer_z = object.layers().front()->print_z; - for (int i = idx_top_contact_above + 1; i < int(top_contacts.size()); ++ i) { - MyLayer &contacts = *top_contacts[i]; - if (contacts.print_z > first_layer_z + EPSILON) - break; - assert(contacts.bottom_z > layer_intermediate.print_z - EPSILON); - polygons_append(polygons_new, contacts.polygons); - } - } else - polygons_new = layer_support_areas[idx_object_layer_above]; - - // Trimming the base layer with any overlapping bottom layer. - // Following cases are recognized: - // 1) bottom.bottom_z >= base.top_z -> No overlap, no trimming needed. - // 2) base.bottom_z >= bottom.print_z -> No overlap, no trimming needed. - // 3) base.print_z > bottom.bottom_z && base.bottom_z < bottom.bottom_z -> Overlap, which will be solved inside generate_toolpaths() by reducing the bottom layer height where it overlaps the base layer. No trimming needed here. - // 4) base.print_z > bottom.print_z && base.bottom_z >= bottom.print_z -> Base overlaps with bottom.print_z. This must not happen. - // 5) base.print_z <= bottom.print_z && base.bottom_z >= bottom.bottom_z -> Base is fully inside top. Trim base by top. - idx_bottom_contact_overlapping = idx_lower_or_equal(bottom_contacts, idx_bottom_contact_overlapping, - [&layer_intermediate](const MyLayer *layer){ return layer->bottom_print_z() <= layer_intermediate.print_z - EPSILON; }); - // Collect all the bottom_contacts layer intersecting with this layer. - for (int i = idx_bottom_contact_overlapping; i >= 0; -- i) { - MyLayer &layer_bottom_overlapping = *bottom_contacts[i]; - if (layer_bottom_overlapping.print_z < layer_intermediate.bottom_print_z() + EPSILON) - break; - // Base must not overlap with bottom.top_z. - assert(! (layer_intermediate.print_z > layer_bottom_overlapping.print_z + EPSILON && layer_intermediate.bottom_z < layer_bottom_overlapping.print_z - EPSILON)); - if (layer_intermediate.print_z <= layer_bottom_overlapping.print_z + EPSILON && layer_intermediate.bottom_z >= layer_bottom_overlapping.bottom_print_z() - EPSILON) - // Base is fully inside bottom. Trim base by bottom. - polygons_append(polygons_trimming, layer_bottom_overlapping.polygons); - } - - #ifdef SLIC3R_DEBUG - { - BoundingBox bbox = get_extents(polygons_new); - bbox.merge(get_extents(polygons_trimming)); - ::Slic3r::SVG svg(debug_out_path("support-intermediate-layers-raw-%d-%lf.svg", iRun, layer_intermediate.print_z), bbox); - svg.draw(union_ex(polygons_new), "blue", 0.5f); - svg.draw(to_polylines(polygons_new), "blue"); - svg.draw(union_safety_offset_ex(polygons_trimming), "red", 0.5f); - svg.draw(to_polylines(polygons_trimming), "red"); - } - #endif /* SLIC3R_DEBUG */ - - // Trim the polygons, store them. - if (polygons_trimming.empty()) - layer_intermediate.polygons = std::move(polygons_new); - else - layer_intermediate.polygons = diff( - polygons_new, - polygons_trimming, - ApplySafetyOffset::Yes); // safety offset to merge the touching source polygons - layer_intermediate.layer_type = sltBase; - - #if 0 - // coordf_t fillet_radius_scaled = scale_(m_object_config->support_base_pattern_spacing); - // Fillet the base polygons and trim them again with the top, interface and contact layers. - $base->{$i} = diff( - offset2( - $base->{$i}, - $fillet_radius_scaled, - -$fillet_radius_scaled, - # Use a geometric offsetting for filleting. - JT_ROUND, - 0.2*$fillet_radius_scaled), - $trim_polygons, - false); // don't apply the safety offset. - } - #endif - } - }); - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_base_layers() in parallel - end"; - -#ifdef SLIC3R_DEBUG - for (MyLayersPtr::const_iterator it = intermediate_layers.begin(); it != intermediate_layers.end(); ++it) - ::Slic3r::SVG::export_expolygons( - debug_out_path("support-intermediate-layers-untrimmed-%d-%lf.svg", iRun, (*it)->print_z), - union_ex((*it)->polygons)); - ++ iRun; -#endif /* SLIC3R_DEBUG */ - - this->trim_support_layers_by_object(object, intermediate_layers, m_slicing_params.gap_support_object, m_slicing_params.gap_object_support, m_support_params.gap_xy); -} - -void PrintObjectSupportMaterial::trim_support_layers_by_object( - const PrintObject &object, - MyLayersPtr &support_layers, - const coordf_t gap_extra_above, - const coordf_t gap_extra_below, - const coordf_t gap_xy) const -{ - const float gap_xy_scaled = float(scale_(gap_xy)); - - // Collect non-empty layers to be processed in parallel. - // This is a good idea as pulling a thread from a thread pool for an empty task is expensive. - MyLayersPtr nonempty_layers; - nonempty_layers.reserve(support_layers.size()); - for (size_t idx_layer = 0; idx_layer < support_layers.size(); ++ idx_layer) { - MyLayer *support_layer = support_layers[idx_layer]; - if (! support_layer->polygons.empty() && support_layer->print_z >= m_slicing_params.raft_contact_top_z + EPSILON) - // Non-empty support layer and not a raft layer. - nonempty_layers.push_back(support_layer); - } - - // For all intermediate support layers: - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::trim_support_layers_by_object() in parallel - start"; - tbb::parallel_for( - tbb::blocked_range(0, nonempty_layers.size()), - [this, &object, &nonempty_layers, gap_extra_above, gap_extra_below, gap_xy_scaled](const tbb::blocked_range& range) { - size_t idx_object_layer_overlapping = size_t(-1); - - auto is_layers_overlap = [](const MyLayer& support_layer, const Layer& object_layer, coordf_t bridging_height = 0.f) -> bool { - if (std::abs(support_layer.print_z - object_layer.print_z) < EPSILON) - return true; - - coordf_t object_lh = bridging_height > EPSILON ? bridging_height : object_layer.height; - if (support_layer.print_z < object_layer.print_z && support_layer.print_z > object_layer.print_z - object_lh) - return true; - - if (support_layer.print_z > object_layer.print_z && support_layer.bottom_z < object_layer.print_z - EPSILON) - return true; - - return false; - }; - for (size_t idx_layer = range.begin(); idx_layer < range.end(); ++ idx_layer) { - MyLayer &support_layer = *nonempty_layers[idx_layer]; - // BOOST_LOG_TRIVIAL(trace) << "Support generator - trim_support_layers_by_object - trimmming non-empty layer " << idx_layer << " of " << nonempty_layers.size(); - assert(! support_layer.polygons.empty() && support_layer.print_z >= m_slicing_params.raft_contact_top_z + EPSILON); - // Find the overlapping object layers including the extra above / below gap. - coordf_t z_threshold = support_layer.bottom_print_z() - gap_extra_below + EPSILON; - idx_object_layer_overlapping = Layer::idx_higher_or_equal( - object.layers().begin(), object.layers().end(), idx_object_layer_overlapping, - [z_threshold](const Layer *layer){ return layer->print_z >= z_threshold; }); - // Collect all the object layers intersecting with this layer. - Polygons polygons_trimming; - size_t i = idx_object_layer_overlapping; - for (; i < object.layers().size(); ++ i) { - const Layer &object_layer = *object.layers()[i]; - if (object_layer.bottom_z() > support_layer.print_z + gap_extra_above - EPSILON) - break; - - bool is_overlap = is_layers_overlap(support_layer, object_layer); - for (const ExPolygon& expoly : object_layer.lslices) { - // BBS - bool is_sharptail = !intersection_ex({ expoly }, object_layer.sharp_tails).empty(); - coordf_t trimming_offset = is_sharptail ? scale_(sharp_tail_xy_gap) : - is_overlap ? gap_xy_scaled : - scale_(no_overlap_xy_gap); - polygons_append(polygons_trimming, offset({ expoly }, trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - } - } - if (! m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - // Collect all bottom surfaces, which will be extruded with a bridging flow. - for (; i < object.layers().size(); ++ i) { - const Layer &object_layer = *object.layers()[i]; - bool some_region_overlaps = false; - for (LayerRegion *region : object_layer.regions()) { - coordf_t bridging_height = region->region().bridging_height_avg(*m_print_config); - if (object_layer.print_z - bridging_height > support_layer.print_z + gap_extra_above - EPSILON) - break; - some_region_overlaps = true; - - bool is_overlap = is_layers_overlap(support_layer, object_layer, bridging_height); - coordf_t trimming_offset = is_overlap ? gap_xy_scaled : scale_(no_overlap_xy_gap); - polygons_append(polygons_trimming, - offset(region->fill_surfaces.filter_by_type(stBottomBridge), trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - if (region->region().config().detect_overhang_wall.value) - // Add bridging perimeters. - SupportMaterialInternal::collect_bridging_perimeter_areas(region->perimeters, gap_xy_scaled, polygons_trimming); - } - if (! some_region_overlaps) - break; - } - } - - // $layer->slices contains the full shape of layer, thus including - // perimeter's width. $support contains the full shape of support - // material, thus including the width of its foremost extrusion. - // We leave a gap equal to a full extrusion width. - support_layer.polygons = diff(support_layer.polygons, polygons_trimming); - } - }); - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::trim_support_layers_by_object() in parallel - end"; -} - -PrintObjectSupportMaterial::MyLayersPtr PrintObjectSupportMaterial::generate_raft_base( - const PrintObject &object, - const MyLayersPtr &top_contacts, - const MyLayersPtr &interface_layers, - const MyLayersPtr &base_interface_layers, - const MyLayersPtr &base_layers, - MyLayerStorage &layer_storage) const -{ - // If there is brim to be generated, calculate the trimming regions. - Polygons brim; - if (object.has_brim()) { - // Calculate the area covered by the brim. - const BrimType brim_type = object.config().brim_type; - const bool brim_outer = brim_type == btOuterOnly || brim_type == btOuterAndInner; - const bool brim_inner = brim_type == btInnerOnly || brim_type == btOuterAndInner; - // BBS: the pattern of raft and brim are the same, thus the brim can be serpated by support raft. - const auto brim_object_gap = scaled(object.config().brim_object_gap.value); - //const auto brim_object_gap = scaled(object.config().brim_object_gap.value + object.config().brim_width.value); - for (const ExPolygon &ex : object.layers().front()->lslices) { - if (brim_outer && brim_inner) - polygons_append(brim, offset(ex, brim_object_gap)); - else { - if (brim_outer) - polygons_append(brim, offset(ex.contour, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1)))); - else - brim.emplace_back(ex.contour); - if (brim_inner) { - Polygons holes = ex.holes; - polygons_reverse(holes); - holes = shrink(holes, brim_object_gap, ClipperLib::jtRound, float(scale_(0.1))); - polygons_reverse(holes); - polygons_append(brim, std::move(holes)); - } else - polygons_append(brim, ex.holes); - } - } - brim = union_(brim); - } - - // How much to inflate the support columns to be stable. This also applies to the 1st layer, if no raft layers are to be printed. - const float inflate_factor_fine = float(scale_((m_slicing_params.raft_layers() > 1) ? 0.5 : EPSILON)); - const float inflate_factor_1st_layer = std::max(0.f, float(scale_(object.config().raft_first_layer_expansion)) - inflate_factor_fine); - MyLayer *contacts = top_contacts .empty() ? nullptr : top_contacts .front(); - MyLayer *interfaces = interface_layers .empty() ? nullptr : interface_layers .front(); - MyLayer *base_interfaces = base_interface_layers.empty() ? nullptr : base_interface_layers.front(); - MyLayer *columns_base = base_layers .empty() ? nullptr : base_layers .front(); - if (contacts != nullptr && contacts->print_z > std::max(m_slicing_params.first_print_layer_height, m_slicing_params.raft_contact_top_z) + EPSILON) - // This is not the raft contact layer. - contacts = nullptr; - if (interfaces != nullptr && interfaces->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) - // This is not the raft column base layer. - interfaces = nullptr; - if (base_interfaces != nullptr && base_interfaces->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) - // This is not the raft column base layer. - base_interfaces = nullptr; - if (columns_base != nullptr && columns_base->bottom_print_z() > m_slicing_params.raft_interface_top_z + EPSILON) - // This is not the raft interface layer. - columns_base = nullptr; - - Polygons interface_polygons; - if (contacts != nullptr && ! contacts->polygons.empty()) - polygons_append(interface_polygons, expand(contacts->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - if (interfaces != nullptr && ! interfaces->polygons.empty()) - polygons_append(interface_polygons, expand(interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - if (base_interfaces != nullptr && ! base_interfaces->polygons.empty()) - polygons_append(interface_polygons, expand(base_interfaces->polygons, inflate_factor_fine, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - - // Output vector. - MyLayersPtr raft_layers; - - if (m_slicing_params.raft_layers() > 1) { - Polygons base; - Polygons columns; - if (columns_base != nullptr) { - base = columns_base->polygons; - columns = base; - if (! interface_polygons.empty()) - // Trim the 1st layer columns with the inflated interface polygons. - columns = diff(columns, interface_polygons); - } - if (! interface_polygons.empty()) { - // Merge the untrimmed columns base with the expanded raft interface, to be used for the support base and interface. - base = union_(base, interface_polygons); - } - // Do not add the raft contact layer, only add the raft layers below the contact layer. - // Insert the 1st layer. - { - MyLayer &new_layer = layer_allocate(layer_storage, (m_slicing_params.base_raft_layers > 0) ? sltRaftBase : sltRaftInterface); - raft_layers.push_back(&new_layer); - new_layer.print_z = m_slicing_params.first_print_layer_height; - new_layer.height = m_slicing_params.first_print_layer_height; - new_layer.bottom_z = 0.; - new_layer.polygons = inflate_factor_1st_layer > 0 ? expand(base, inflate_factor_1st_layer) : base; - } - // Insert the base layers. - for (size_t i = 1; i < m_slicing_params.base_raft_layers; ++ i) { - coordf_t print_z = raft_layers.back()->print_z; - MyLayer &new_layer = layer_allocate(layer_storage, sltRaftBase); - raft_layers.push_back(&new_layer); - new_layer.print_z = print_z + m_slicing_params.base_raft_layer_height; - new_layer.height = m_slicing_params.base_raft_layer_height; - new_layer.bottom_z = print_z; - new_layer.polygons = base; - } - // Insert the interface layers. - for (size_t i = 1; i < m_slicing_params.interface_raft_layers; ++ i) { - coordf_t print_z = raft_layers.back()->print_z; - MyLayer &new_layer = layer_allocate(layer_storage, sltRaftInterface); - raft_layers.push_back(&new_layer); - new_layer.print_z = print_z + m_slicing_params.interface_raft_layer_height; - new_layer.height = m_slicing_params.interface_raft_layer_height; - new_layer.bottom_z = print_z; - new_layer.polygons = interface_polygons; - //FIXME misusing contact_polygons for support columns. - new_layer.contact_polygons = std::make_unique(columns); - } - } else { - if (columns_base != nullptr) { - // Expand the bases of the support columns in the 1st layer. - Polygons &raft = columns_base->polygons; - Polygons trimming; - // BBS: if first layer of support is intersected with object island, it must have the same function as brim unless in nobrim mode. - if (object.has_brim()) - trimming = offset(m_object->layers().front()->lslices, (float)scale_(object.config().brim_object_gap.value), SUPPORT_SURFACES_OFFSET_PARAMETERS); - else - trimming = offset(m_object->layers().front()->lslices, (float)scale_(m_support_params.gap_xy), SUPPORT_SURFACES_OFFSET_PARAMETERS); - if (inflate_factor_1st_layer > SCALED_EPSILON) { - // Inflate in multiple steps to avoid leaking of the support 1st layer through object walls. - auto nsteps = std::max(5, int(ceil(inflate_factor_1st_layer / m_support_params.first_layer_flow.scaled_width()))); - float step = inflate_factor_1st_layer / nsteps; - for (int i = 0; i < nsteps; ++ i) - raft = diff(expand(raft, step), trimming); - } else - raft = diff(raft, trimming); - if (! interface_polygons.empty()) - columns_base->polygons = diff(columns_base->polygons, interface_polygons); - } - if (! brim.empty()) { - if (columns_base) - columns_base->polygons = diff(columns_base->polygons, brim); - if (contacts) - contacts->polygons = diff(contacts->polygons, brim); - if (interfaces) - interfaces->polygons = diff(interfaces->polygons, brim); - if (base_interfaces) - base_interfaces->polygons = diff(base_interfaces->polygons, brim); - } - } - - return raft_layers; -} - -// Convert some of the intermediate layers into top/bottom interface layers as well as base interface layers. -std::pair PrintObjectSupportMaterial::generate_interface_layers( - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - MyLayersPtr &intermediate_layers, - MyLayerStorage &layer_storage) const -{ -// my $area_threshold = $self->interface_flow->scaled_spacing ** 2; - - std::pair base_and_interface_layers; - MyLayersPtr &interface_layers = base_and_interface_layers.first; - MyLayersPtr &base_interface_layers = base_and_interface_layers.second; - - // distinguish between interface and base interface layers - // Contact layer is considered an interface layer, therefore run the following block only if support_interface_top_layers > 1. - // Contact layer needs a base_interface layer, therefore run the following block if support_interface_top_layers > 0, has soluble support and extruders are different. - bool soluble_interface_non_soluble_base = - // Zero z-gap between the overhangs and the support interface. - m_slicing_params.soluble_interface && - // Interface extruder soluble. - m_object_config->support_interface_filament.value > 0 && m_print_config->filament_soluble.get_at(m_object_config->support_interface_filament.value - 1) && - // Base extruder: Either "print with active extruder" not soluble. - (m_object_config->support_filament.value == 0 || ! m_print_config->filament_soluble.get_at(m_object_config->support_filament.value - 1)); - bool snug_supports = m_object_config->support_style.value == smsSnug; - // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion - bool differnt_support_interface_filament = m_object_config->support_interface_filament.value != m_object_config->support_filament.value; - int num_base_interface_layers_top = differnt_support_interface_filament ? 1 : 0; - int num_base_interface_layers_bottom = differnt_support_interface_filament ? 1 : 0; - int num_interface_layers_top = m_object_config->support_interface_top_layers + num_base_interface_layers_top; - int num_interface_layers_bottom = m_object_config->support_interface_bottom_layers + num_base_interface_layers_bottom; - if (num_interface_layers_bottom < 0) - num_interface_layers_bottom = num_interface_layers_top; - - if (! intermediate_layers.empty() && (num_interface_layers_top > 1 || num_interface_layers_bottom > 1)) { - // For all intermediate layers, collect top contact surfaces, which are not further than support_interface_top_layers. - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - start"; - // Since the intermediate layer index starts at zero the number of interface layer needs to be reduced by 1. - -- num_interface_layers_top; - -- num_interface_layers_bottom; - int num_interface_layers_only_top = num_interface_layers_top - num_base_interface_layers_top; - int num_interface_layers_only_bottom = num_interface_layers_bottom - num_base_interface_layers_bottom; - interface_layers.assign(intermediate_layers.size(), nullptr); - if (num_base_interface_layers_top || num_base_interface_layers_bottom) - base_interface_layers.assign(intermediate_layers.size(), nullptr); - auto smoothing_distance = m_support_params.support_material_interface_flow.scaled_spacing() * 1.5; - auto minimum_island_radius = m_support_params.support_material_interface_flow.scaled_spacing() / m_support_params.interface_density; - auto closing_distance = smoothing_distance; // scaled(m_object_config->support_closing_radius.value); - tbb::spin_mutex layer_storage_mutex; - // Insert a new layer into base_interface_layers, if intersection with base exists. - auto insert_layer = [&layer_storage, &layer_storage_mutex, snug_supports, closing_distance, smoothing_distance, minimum_island_radius]( - MyLayer &intermediate_layer, Polygons &bottom, Polygons &&top, const Polygons *subtract, SupporLayerType type) -> MyLayer* { - assert(! bottom.empty() || ! top.empty()); - // Merge top into bottom, unite them with a safety offset. - append(bottom, std::move(top)); - // Merge top / bottom interfaces. For snug supports, merge using closing distance and regularize (close concave corners). - bottom = intersection( - snug_supports ? - smooth_outward(closing(std::move(bottom), closing_distance + minimum_island_radius, closing_distance, SUPPORT_SURFACES_OFFSET_PARAMETERS), smoothing_distance) : - union_safety_offset(std::move(bottom)), - intermediate_layer.polygons); - if (! bottom.empty()) { - //FIXME Remove non-printable tiny islands, let them be printed using the base support. - //bottom = opening(std::move(bottom), minimum_island_radius); - if (! bottom.empty()) { - MyLayer &layer_new = layer_allocate(layer_storage, layer_storage_mutex, type); - layer_new.polygons = std::move(bottom); - layer_new.print_z = intermediate_layer.print_z; - layer_new.bottom_z = intermediate_layer.bottom_z; - layer_new.height = intermediate_layer.height; - layer_new.bridging = intermediate_layer.bridging; - // Subtract the interface from the base regions. - intermediate_layer.polygons = diff(intermediate_layer.polygons, layer_new.polygons); - if (subtract) - // Trim the base interface layer with the interface layer. - layer_new.polygons = diff(std::move(layer_new.polygons), *subtract); - //FIXME filter layer_new.polygons islands by a minimum area? - // $interface_area = [ grep abs($_->area) >= $area_threshold, @$interface_area ]; - return &layer_new; - } - } - return nullptr; - }; - tbb::parallel_for(tbb::blocked_range(0, int(intermediate_layers.size())), - [&bottom_contacts, &top_contacts, &intermediate_layers, &insert_layer, - num_interface_layers_top, num_interface_layers_bottom, num_base_interface_layers_top, num_base_interface_layers_bottom, num_interface_layers_only_top, num_interface_layers_only_bottom, - snug_supports, &interface_layers, &base_interface_layers](const tbb::blocked_range& range) { - // Gather the top / bottom contact layers intersecting with num_interface_layers resp. num_interface_layers_only intermediate layers above / below - // this intermediate layer. - // Index of the first top contact layer intersecting the current intermediate layer. - auto idx_top_contact_first = -1; - // Index of the first bottom contact layer intersecting the current intermediate layer. - auto idx_bottom_contact_first = -1; - auto num_intermediate = int(intermediate_layers.size()); - for (int idx_intermediate_layer = range.begin(); idx_intermediate_layer < range.end(); ++ idx_intermediate_layer) { - MyLayer &intermediate_layer = *intermediate_layers[idx_intermediate_layer]; - Polygons polygons_top_contact_projected_interface; - Polygons polygons_top_contact_projected_base; - Polygons polygons_bottom_contact_projected_interface; - Polygons polygons_bottom_contact_projected_base; - if (num_interface_layers_top > 0) { - // Top Z coordinate of a slab, over which we are collecting the top / bottom contact surfaces - coordf_t top_z = intermediate_layers[std::min(num_intermediate - 1, idx_intermediate_layer + num_interface_layers_top - 1)]->print_z; - coordf_t top_inteface_z = std::numeric_limits::max(); - if (num_base_interface_layers_top > 0) - // Some top base interface layers will be generated. - top_inteface_z = num_interface_layers_only_top == 0 ? - // Only base interface layers to generate. - - std::numeric_limits::max() : - intermediate_layers[std::min(num_intermediate - 1, idx_intermediate_layer + num_interface_layers_only_top - 1)]->print_z; - // Move idx_top_contact_first up until above the current print_z. - idx_top_contact_first = idx_higher_or_equal(top_contacts, idx_top_contact_first, [&intermediate_layer](const MyLayer *layer){ return layer->print_z >= intermediate_layer.print_z; }); // - EPSILON - // Collect the top contact areas above this intermediate layer, below top_z. - for (int idx_top_contact = idx_top_contact_first; idx_top_contact < int(top_contacts.size()); ++ idx_top_contact) { - const MyLayer &top_contact_layer = *top_contacts[idx_top_contact]; - //FIXME maybe this adds one interface layer in excess? - if (top_contact_layer.bottom_z - EPSILON > top_z) - break; - polygons_append(top_contact_layer.bottom_z - EPSILON > top_inteface_z ? polygons_top_contact_projected_base : polygons_top_contact_projected_interface, - // For snug supports, project the overhang polygons covering the whole overhang, so that they will merge without a gap with support polygons of the other layers. - // For grid supports, merging of support regions will be performed by the projection into grid. - snug_supports ? *top_contact_layer.overhang_polygons : top_contact_layer.polygons); - } - } - if (num_interface_layers_bottom > 0) { - // Bottom Z coordinate of a slab, over which we are collecting the top / bottom contact surfaces - coordf_t bottom_z = intermediate_layers[std::max(0, idx_intermediate_layer - num_interface_layers_bottom + 1)]->bottom_z; - coordf_t bottom_interface_z = - std::numeric_limits::max(); - if (num_base_interface_layers_bottom > 0) - // Some bottom base interface layers will be generated. - bottom_interface_z = num_interface_layers_only_bottom == 0 ? - // Only base interface layers to generate. - std::numeric_limits::max() : - intermediate_layers[std::max(0, idx_intermediate_layer - num_interface_layers_only_bottom)]->bottom_z; - // Move idx_bottom_contact_first up until touching bottom_z. - idx_bottom_contact_first = idx_higher_or_equal(bottom_contacts, idx_bottom_contact_first, [bottom_z](const MyLayer *layer){ return layer->print_z >= bottom_z - EPSILON; }); - // Collect the top contact areas above this intermediate layer, below top_z. - for (int idx_bottom_contact = idx_bottom_contact_first; idx_bottom_contact < int(bottom_contacts.size()); ++ idx_bottom_contact) { - const MyLayer &bottom_contact_layer = *bottom_contacts[idx_bottom_contact]; - if (bottom_contact_layer.print_z - EPSILON > intermediate_layer.bottom_z) - break; - polygons_append(bottom_contact_layer.print_z - EPSILON > bottom_interface_z ? polygons_bottom_contact_projected_interface : polygons_bottom_contact_projected_base, bottom_contact_layer.polygons); - } - } - MyLayer *interface_layer = nullptr; - if (! polygons_bottom_contact_projected_interface.empty() || ! polygons_top_contact_projected_interface.empty()) { - interface_layer = insert_layer( - intermediate_layer, polygons_bottom_contact_projected_interface, std::move(polygons_top_contact_projected_interface), nullptr, - polygons_top_contact_projected_interface.empty() ? sltBottomInterface : sltTopInterface); - interface_layers[idx_intermediate_layer] = interface_layer; - } - if (! polygons_bottom_contact_projected_base.empty() || ! polygons_top_contact_projected_base.empty()) - base_interface_layers[idx_intermediate_layer] = insert_layer( - intermediate_layer, polygons_bottom_contact_projected_base, std::move(polygons_top_contact_projected_base), - interface_layer ? &interface_layer->polygons : nullptr, sltBase); - } - }); - - // Compress contact_out, remove the nullptr items. - remove_nulls(interface_layers); - remove_nulls(base_interface_layers); - BOOST_LOG_TRIVIAL(debug) << "PrintObjectSupportMaterial::generate_interface_layers() in parallel - end"; - } - - return base_and_interface_layers; -} - -static inline void fill_expolygon_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygon &&expolygon, - Fill *filler, - const FillParams &fill_params, - ExtrusionRole role, - const Flow &flow) -{ - Surface surface(stInternal, std::move(expolygon)); - Polylines polylines; - try { - polylines = filler->fill_surface(&surface, fill_params); - } catch (InfillFailedException &) { - } - extrusion_entities_append_paths( - dst, - std::move(polylines), - role, - flow.mm3_per_mm(), flow.width(), flow.height()); -} - -static inline void fill_expolygons_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygons &&expolygons, - Fill *filler, - const FillParams &fill_params, - ExtrusionRole role, - const Flow &flow) -{ - for (ExPolygon &expoly : expolygons) - fill_expolygon_generate_paths(dst, std::move(expoly), filler, fill_params, role, flow); -} - -static inline void fill_expolygons_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygons &&expolygons, - Fill *filler, - float density, - ExtrusionRole role, - const Flow &flow) -{ - FillParams fill_params; - fill_params.density = density; - fill_params.dont_adjust = true; - fill_expolygons_generate_paths(dst, std::move(expolygons), filler, fill_params, role, flow); -} - -static inline void fill_expolygons_with_sheath_generate_paths( - ExtrusionEntitiesPtr &dst, - const Polygons &polygons, - Fill *filler, - float density, - ExtrusionRole role, - const Flow &flow, - bool with_sheath, - bool no_sort) -{ - if (polygons.empty()) - return; - - if (! with_sheath) { - fill_expolygons_generate_paths(dst, closing_ex(polygons, float(SCALED_EPSILON)), filler, density, role, flow); - return; - } - - FillParams fill_params; - fill_params.density = density; - fill_params.dont_adjust = true; - - double spacing = flow.scaled_spacing(); - // Clip the sheath path to avoid the extruder to get exactly on the first point of the loop. - double clip_length = spacing * 0.15; - - for (ExPolygon &expoly : closing_ex(polygons, float(SCALED_EPSILON), float(SCALED_EPSILON + 0.5*flow.scaled_width()))) { - // Don't reorder the skirt and its infills. - std::unique_ptr eec; - if (no_sort) { - eec = std::make_unique(); - eec->no_sort = true; - } - ExtrusionEntitiesPtr &out = no_sort ? eec->entities : dst; - // Draw the perimeters. - Polylines polylines; - polylines.reserve(expoly.holes.size() + 1); - for (size_t i = 0; i <= expoly.holes.size(); ++ i) { - Polyline pl(i == 0 ? expoly.contour.points : expoly.holes[i - 1].points); - pl.points.emplace_back(pl.points.front()); - pl.clip_end(clip_length); - polylines.emplace_back(std::move(pl)); - } - extrusion_entities_append_paths(out, polylines, erSupportMaterial, flow.mm3_per_mm(), flow.width(), flow.height()); - // Fill in the rest. - fill_expolygons_generate_paths(out, offset_ex(expoly, float(-0.4 * spacing)), filler, fill_params, role, flow); - if (no_sort && ! eec->empty()) - dst.emplace_back(eec.release()); - } -} - -// Support layers, partially processed. -struct MyLayerExtruded -{ - MyLayerExtruded& operator=(MyLayerExtruded &&rhs) { - this->layer = rhs.layer; - this->extrusions = std::move(rhs.extrusions); - m_polygons_to_extrude = std::move(rhs.m_polygons_to_extrude); - rhs.layer = nullptr; - return *this; - } - - bool empty() const { - return layer == nullptr || layer->polygons.empty(); - } - - void set_polygons_to_extrude(Polygons &&polygons) { - if (m_polygons_to_extrude == nullptr) - m_polygons_to_extrude = std::make_unique(std::move(polygons)); - else - *m_polygons_to_extrude = std::move(polygons); - } - Polygons& polygons_to_extrude() { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } - const Polygons& polygons_to_extrude() const { return (m_polygons_to_extrude == nullptr) ? layer->polygons : *m_polygons_to_extrude; } - - bool could_merge(const MyLayerExtruded &other) const { - return ! this->empty() && ! other.empty() && - std::abs(this->layer->height - other.layer->height) < EPSILON && - this->layer->bridging == other.layer->bridging; - } - - // Merge regions, perform boolean union over the merged polygons. - void merge(MyLayerExtruded &&other) { - assert(this->could_merge(other)); - // 1) Merge the rest polygons to extrude, if there are any. - if (other.m_polygons_to_extrude != nullptr) { - if (m_polygons_to_extrude == nullptr) { - // This layer has no extrusions generated yet, if it has no m_polygons_to_extrude (its area to extrude was not reduced yet). - assert(this->extrusions.empty()); - m_polygons_to_extrude = std::make_unique(this->layer->polygons); - } - Slic3r::polygons_append(*m_polygons_to_extrude, std::move(*other.m_polygons_to_extrude)); - *m_polygons_to_extrude = union_safety_offset(*m_polygons_to_extrude); - other.m_polygons_to_extrude.reset(); - } else if (m_polygons_to_extrude != nullptr) { - assert(other.m_polygons_to_extrude == nullptr); - // The other layer has no extrusions generated yet, if it has no m_polygons_to_extrude (its area to extrude was not reduced yet). - assert(other.extrusions.empty()); - Slic3r::polygons_append(*m_polygons_to_extrude, other.layer->polygons); - *m_polygons_to_extrude = union_safety_offset(*m_polygons_to_extrude); - } - // 2) Merge the extrusions. - this->extrusions.insert(this->extrusions.end(), other.extrusions.begin(), other.extrusions.end()); - other.extrusions.clear(); - // 3) Merge the infill polygons. - Slic3r::polygons_append(this->layer->polygons, std::move(other.layer->polygons)); - this->layer->polygons = union_safety_offset(this->layer->polygons); - other.layer->polygons.clear(); - } - - void polygons_append(Polygons &dst) const { - if (layer != NULL && ! layer->polygons.empty()) - Slic3r::polygons_append(dst, layer->polygons); - } - - // The source layer. It carries the height and extrusion type (bridging / non bridging, extrusion height). - PrintObjectSupportMaterial::MyLayer *layer { nullptr }; - // Collect extrusions. They will be exported sorted by the bottom height. - ExtrusionEntitiesPtr extrusions; - -private: - // In case the extrusions are non-empty, m_polygons_to_extrude may contain the rest areas yet to be filled by additional support. - // This is useful mainly for the loop interfaces, which are generated before the zig-zag infills. - std::unique_ptr m_polygons_to_extrude; -}; - -typedef std::vector MyLayerExtrudedPtrs; - -struct LoopInterfaceProcessor -{ - LoopInterfaceProcessor(coordf_t circle_r) : - n_contact_loops(0), - circle_radius(circle_r), - circle_distance(circle_r * 3.) - { - // Shape of the top contact area. - circle.points.reserve(6); - for (size_t i = 0; i < 6; ++ i) { - double angle = double(i) * M_PI / 3.; - circle.points.push_back(Point(circle_radius * cos(angle), circle_radius * sin(angle))); - } - } - - // Generate loop contacts at the top_contact_layer, - // trim the top_contact_layer->polygons with the areas covered by the loops. - void generate(MyLayerExtruded &top_contact_layer, const Flow &interface_flow_src) const; - - int n_contact_loops; - coordf_t circle_radius; - coordf_t circle_distance; - Polygon circle; -}; - -void LoopInterfaceProcessor::generate(MyLayerExtruded &top_contact_layer, const Flow &interface_flow_src) const -{ - if (n_contact_loops == 0 || top_contact_layer.empty()) - return; - - Flow flow = interface_flow_src.with_height(top_contact_layer.layer->height); - - Polygons overhang_polygons; - if (top_contact_layer.layer->overhang_polygons != nullptr) - overhang_polygons = std::move(*top_contact_layer.layer->overhang_polygons); - - // Generate the outermost loop. - // Find centerline of the external loop (or any other kind of extrusions should the loop be skipped) - ExPolygons top_contact_expolygons = offset_ex(union_ex(top_contact_layer.layer->polygons), - 0.5f * flow.scaled_width()); - - // Grid size and bit shifts for quick and exact to/from grid coordinates manipulation. - coord_t circle_grid_resolution = 1; - coord_t circle_grid_powerof2 = 0; - { - // epsilon to account for rounding errors - coord_t circle_grid_resolution_non_powerof2 = coord_t(2. * circle_distance + 3.); - while (circle_grid_resolution < circle_grid_resolution_non_powerof2) { - circle_grid_resolution <<= 1; - ++ circle_grid_powerof2; - } - } - - struct PointAccessor { - const Point* operator()(const Point &pt) const { return &pt; } - }; - typedef ClosestPointInRadiusLookup ClosestPointLookupType; - - Polygons loops0; - { - // find centerline of the external loop of the contours - // Only consider the loops facing the overhang. - Polygons external_loops; - // Holes in the external loops. - Polygons circles; - Polygons overhang_with_margin = offset(union_ex(overhang_polygons), 0.5f * flow.scaled_width()); - for (ExPolygons::iterator it_contact_expoly = top_contact_expolygons.begin(); it_contact_expoly != top_contact_expolygons.end(); ++ it_contact_expoly) { - // Store the circle centers placed for an expolygon into a regular grid, hashed by the circle centers. - ClosestPointLookupType circle_centers_lookup(coord_t(circle_distance - SCALED_EPSILON)); - Points circle_centers; - Point center_last; - // For each contour of the expolygon, start with the outer contour, continue with the holes. - for (size_t i_contour = 0; i_contour <= it_contact_expoly->holes.size(); ++ i_contour) { - Polygon &contour = (i_contour == 0) ? it_contact_expoly->contour : it_contact_expoly->holes[i_contour - 1]; - const Point *seg_current_pt = nullptr; - coordf_t seg_current_t = 0.; - if (! intersection_pl(contour.split_at_first_point(), overhang_with_margin).empty()) { - // The contour is below the overhang at least to some extent. - //FIXME ideally one would place the circles below the overhang only. - // Walk around the contour and place circles so their centers are not closer than circle_distance from each other. - if (circle_centers.empty()) { - // Place the first circle. - seg_current_pt = &contour.points.front(); - seg_current_t = 0.; - center_last = *seg_current_pt; - circle_centers_lookup.insert(center_last); - circle_centers.push_back(center_last); - } - for (Points::const_iterator it = contour.points.begin() + 1; it != contour.points.end(); ++it) { - // Is it possible to place a circle on this segment? Is it not too close to any of the circles already placed on this contour? - const Point &p1 = *(it-1); - const Point &p2 = *it; - // Intersection of a ray (p1, p2) with a circle placed at center_last, with radius of circle_distance. - const Vec2d v_seg(coordf_t(p2(0)) - coordf_t(p1(0)), coordf_t(p2(1)) - coordf_t(p1(1))); - const Vec2d v_cntr(coordf_t(p1(0) - center_last(0)), coordf_t(p1(1) - center_last(1))); - coordf_t a = v_seg.squaredNorm(); - coordf_t b = 2. * v_seg.dot(v_cntr); - coordf_t c = v_cntr.squaredNorm() - circle_distance * circle_distance; - coordf_t disc = b * b - 4. * a * c; - if (disc > 0.) { - // The circle intersects a ray. Avoid the parts of the segment inside the circle. - coordf_t t1 = (-b - sqrt(disc)) / (2. * a); - coordf_t t2 = (-b + sqrt(disc)) / (2. * a); - coordf_t t0 = (seg_current_pt == &p1) ? seg_current_t : 0.; - // Take the lowest t in , excluding . - coordf_t t; - if (t0 <= t1) - t = t0; - else if (t2 <= 1.) - t = t2; - else { - // Try the following segment. - seg_current_pt = nullptr; - continue; - } - seg_current_pt = &p1; - seg_current_t = t; - center_last = Point(p1(0) + coord_t(v_seg(0) * t), p1(1) + coord_t(v_seg(1) * t)); - // It has been verified that the new point is far enough from center_last. - // Ensure, that it is far enough from all the centers. - std::pair circle_closest = circle_centers_lookup.find(center_last); - if (circle_closest.first != nullptr) { - -- it; - continue; - } - } else { - // All of the segment is outside the circle. Take the first point. - seg_current_pt = &p1; - seg_current_t = 0.; - center_last = p1; - } - // Place the first circle. - circle_centers_lookup.insert(center_last); - circle_centers.push_back(center_last); - } - external_loops.push_back(std::move(contour)); - for (const Point ¢er : circle_centers) { - circles.push_back(circle); - circles.back().translate(center); - } - } - } - } - // Apply a pattern to the external loops. - loops0 = diff(external_loops, circles); - } - - Polylines loop_lines; - { - // make more loops - Polygons loop_polygons = loops0; - for (int i = 1; i < n_contact_loops; ++ i) - polygons_append(loop_polygons, - opening( - loops0, - i * flow.scaled_spacing() + 0.5f * flow.scaled_spacing(), - 0.5f * flow.scaled_spacing())); - // Clip such loops to the side oriented towards the object. - // Collect split points, so they will be recognized after the clipping. - // At the split points the clipped pieces will be stitched back together. - loop_lines.reserve(loop_polygons.size()); - std::unordered_map map_split_points; - for (Polygons::const_iterator it = loop_polygons.begin(); it != loop_polygons.end(); ++ it) { - assert(map_split_points.find(it->first_point()) == map_split_points.end()); - map_split_points[it->first_point()] = -1; - loop_lines.push_back(it->split_at_first_point()); - } - loop_lines = intersection_pl(loop_lines, expand(overhang_polygons, scale_(SUPPORT_MATERIAL_MARGIN))); - // Because a closed loop has been split to a line, loop_lines may contain continuous segments split to 2 pieces. - // Try to connect them. - for (int i_line = 0; i_line < int(loop_lines.size()); ++ i_line) { - Polyline &polyline = loop_lines[i_line]; - auto it = map_split_points.find(polyline.first_point()); - if (it != map_split_points.end()) { - // This is a stitching point. - // If this assert triggers, multiple source polygons likely intersected at this point. - assert(it->second != -2); - if (it->second < 0) { - // First occurence. - it->second = i_line; - } else { - // Second occurence. Join the lines. - Polyline &polyline_1st = loop_lines[it->second]; - assert(polyline_1st.first_point() == it->first || polyline_1st.last_point() == it->first); - if (polyline_1st.first_point() == it->first) - polyline_1st.reverse(); - polyline_1st.append(std::move(polyline)); - it->second = -2; - } - continue; - } - it = map_split_points.find(polyline.last_point()); - if (it != map_split_points.end()) { - // This is a stitching point. - // If this assert triggers, multiple source polygons likely intersected at this point. - assert(it->second != -2); - if (it->second < 0) { - // First occurence. - it->second = i_line; - } else { - // Second occurence. Join the lines. - Polyline &polyline_1st = loop_lines[it->second]; - assert(polyline_1st.first_point() == it->first || polyline_1st.last_point() == it->first); - if (polyline_1st.first_point() == it->first) - polyline_1st.reverse(); - polyline.reverse(); - polyline_1st.append(std::move(polyline)); - it->second = -2; - } - } - } - // Remove empty lines. - remove_degenerate(loop_lines); - } - - // add the contact infill area to the interface area - // note that growing loops by $circle_radius ensures no tiny - // extrusions are left inside the circles; however it creates - // a very large gap between loops and contact_infill_polygons, so maybe another - // solution should be found to achieve both goals - // Store the trimmed polygons into a separate polygon set, so the original infill area remains intact for - // "modulate by layer thickness". - top_contact_layer.set_polygons_to_extrude(diff(top_contact_layer.layer->polygons, offset(loop_lines, float(circle_radius * 1.1)))); - - // Transform loops into ExtrusionPath objects. - extrusion_entities_append_paths( - top_contact_layer.extrusions, - std::move(loop_lines), - erSupportMaterialInterface, flow.mm3_per_mm(), flow.width(), flow.height()); -} - -#ifdef SLIC3R_DEBUG -static std::string dbg_index_to_color(int idx) -{ - if (idx < 0) - return "yellow"; - idx = idx % 3; - switch (idx) { - case 0: return "red"; - case 1: return "green"; - default: return "blue"; - } -} -#endif /* SLIC3R_DEBUG */ - -// When extruding a bottom interface layer over an object, the bottom interface layer is extruded in a thin air, therefore -// it is being extruded with a bridging flow to not shrink excessively (the die swell effect). -// Tiny extrusions are better avoided and it is always better to anchor the thread to an existing support structure if possible. -// Therefore the bottom interface spots are expanded a bit. The expanded regions may overlap with another bottom interface layers, -// leading to over extrusion, where they overlap. The over extrusion is better avoided as it often makes the interface layers -// to stick too firmly to the object. -// -// Modulate thickness (increase bottom_z) of extrusions_in_out generated for this_layer -// if they overlap with overlapping_layers, whose print_z is above this_layer.bottom_z() and below this_layer.print_z. -void modulate_extrusion_by_overlapping_layers( - // Extrusions generated for this_layer. - ExtrusionEntitiesPtr &extrusions_in_out, - const PrintObjectSupportMaterial::MyLayer &this_layer, - // Multiple layers overlapping with this_layer, sorted bottom up. - const PrintObjectSupportMaterial::MyLayersPtr &overlapping_layers) -{ - size_t n_overlapping_layers = overlapping_layers.size(); - if (n_overlapping_layers == 0 || extrusions_in_out.empty()) - // The extrusions do not overlap with any other extrusion. - return; - - // Get the initial extrusion parameters. - ExtrusionPath *extrusion_path_template = dynamic_cast(extrusions_in_out.front()); - assert(extrusion_path_template != nullptr); - ExtrusionRole extrusion_role = extrusion_path_template->role(); - float extrusion_width = extrusion_path_template->width; - - struct ExtrusionPathFragment - { - ExtrusionPathFragment() : mm3_per_mm(-1), width(-1), height(-1) {}; - ExtrusionPathFragment(double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height) {}; - - Polylines polylines; - double mm3_per_mm; - float width; - float height; - }; - - // Split the extrusions by the overlapping layers, reduce their extrusion rate. - // The last path_fragment is from this_layer. - std::vector path_fragments( - n_overlapping_layers + 1, - ExtrusionPathFragment(extrusion_path_template->mm3_per_mm, extrusion_path_template->width, extrusion_path_template->height)); - // Don't use it, it will be released. - extrusion_path_template = nullptr; - -#ifdef SLIC3R_DEBUG - static int iRun = 0; - ++ iRun; - BoundingBox bbox; - for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { - const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - bbox.merge(get_extents(overlapping_layer.polygons)); - } - for (ExtrusionEntitiesPtr::const_iterator it = extrusions_in_out.begin(); it != extrusions_in_out.end(); ++ it) { - ExtrusionPath *path = dynamic_cast(*it); - assert(path != nullptr); - bbox.merge(get_extents(path->polyline)); - } - SVG svg(debug_out_path("support-fragments-%d-%lf.svg", iRun, this_layer.print_z).c_str(), bbox); - const float transparency = 0.5f; - // Filled polygons for the overlapping regions. - svg.draw(union_ex(this_layer.polygons), dbg_index_to_color(-1), transparency); - for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { - const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - svg.draw(union_ex(overlapping_layer.polygons), dbg_index_to_color(int(i_overlapping_layer)), transparency); - } - // Contours of the overlapping regions. - svg.draw(to_polylines(this_layer.polygons), dbg_index_to_color(-1), scale_(0.2)); - for (size_t i_overlapping_layer = 0; i_overlapping_layer < n_overlapping_layers; ++ i_overlapping_layer) { - const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - svg.draw(to_polylines(overlapping_layer.polygons), dbg_index_to_color(int(i_overlapping_layer)), scale_(0.1)); - } - // Fill extrusion, the source. - for (ExtrusionEntitiesPtr::const_iterator it = extrusions_in_out.begin(); it != extrusions_in_out.end(); ++ it) { - ExtrusionPath *path = dynamic_cast(*it); - std::string color_name; - switch ((it - extrusions_in_out.begin()) % 9) { - case 0: color_name = "magenta"; break; - case 1: color_name = "deepskyblue"; break; - case 2: color_name = "coral"; break; - case 3: color_name = "goldenrod"; break; - case 4: color_name = "orange"; break; - case 5: color_name = "olivedrab"; break; - case 6: color_name = "blueviolet"; break; - case 7: color_name = "brown"; break; - default: color_name = "orchid"; break; - } - svg.draw(path->polyline, color_name, scale_(0.2)); - } -#endif /* SLIC3R_DEBUG */ - - // End points of the original paths. - std::vector> path_ends; - // Collect the paths of this_layer. - { - Polylines &polylines = path_fragments.back().polylines; - for (ExtrusionEntity *ee : extrusions_in_out) { - ExtrusionPath *path = dynamic_cast(ee); - assert(path != nullptr); - polylines.emplace_back(Polyline(std::move(path->polyline))); - path_ends.emplace_back(std::pair(polylines.back().points.front(), polylines.back().points.back())); - } - } - // Destroy the original extrusion paths, their polylines were moved to path_fragments already. - // This will be the destination for the new paths. - extrusions_in_out.clear(); - - // Fragment the path segments by overlapping layers. The overlapping layers are sorted by an increasing print_z. - // Trim by the highest overlapping layer first. - for (int i_overlapping_layer = int(n_overlapping_layers) - 1; i_overlapping_layer >= 0; -- i_overlapping_layer) { - const PrintObjectSupportMaterial::MyLayer &overlapping_layer = *overlapping_layers[i_overlapping_layer]; - ExtrusionPathFragment &frag = path_fragments[i_overlapping_layer]; - Polygons polygons_trimming = offset(union_ex(overlapping_layer.polygons), float(scale_(0.5*extrusion_width))); - frag.polylines = intersection_pl(path_fragments.back().polylines, polygons_trimming); - path_fragments.back().polylines = diff_pl(path_fragments.back().polylines, polygons_trimming); - // Adjust the extrusion parameters for a reduced layer height and a non-bridging flow (nozzle_dmr = -1, does not matter). - assert(this_layer.print_z > overlapping_layer.print_z); - frag.height = float(this_layer.print_z - overlapping_layer.print_z); - frag.mm3_per_mm = Flow(frag.width, frag.height, -1.f).mm3_per_mm(); -#ifdef SLIC3R_DEBUG - svg.draw(frag.polylines, dbg_index_to_color(i_overlapping_layer), scale_(0.1)); -#endif /* SLIC3R_DEBUG */ - } - -#ifdef SLIC3R_DEBUG - svg.draw(path_fragments.back().polylines, dbg_index_to_color(-1), scale_(0.1)); - svg.Close(); -#endif /* SLIC3R_DEBUG */ - - // Now chain the split segments using hashing and a nearly exact match, maintaining the order of segments. - // Create a single ExtrusionPath or ExtrusionEntityCollection per source ExtrusionPath. - // Map of fragment start/end points to a pair of - // Because a non-exact matching is used for the end points, a multi-map is used. - // As the clipper library may reverse the order of some clipped paths, store both ends into the map. - struct ExtrusionPathFragmentEnd - { - ExtrusionPathFragmentEnd(size_t alayer_idx, size_t apolyline_idx, bool ais_start) : - layer_idx(alayer_idx), polyline_idx(apolyline_idx), is_start(ais_start) {} - size_t layer_idx; - size_t polyline_idx; - bool is_start; - }; - class ExtrusionPathFragmentEndPointAccessor { - public: - ExtrusionPathFragmentEndPointAccessor(const std::vector &path_fragments) : m_path_fragments(path_fragments) {} - // Return an end point of a fragment, or nullptr if the fragment has been consumed already. - const Point* operator()(const ExtrusionPathFragmentEnd &fragment_end) const { - const Polyline &polyline = m_path_fragments[fragment_end.layer_idx].polylines[fragment_end.polyline_idx]; - return polyline.points.empty() ? nullptr : - (fragment_end.is_start ? &polyline.points.front() : &polyline.points.back()); - } - private: - ExtrusionPathFragmentEndPointAccessor& operator=(const ExtrusionPathFragmentEndPointAccessor&) { - return *this; - } - - const std::vector &m_path_fragments; - }; - const coord_t search_radius = 7; - ClosestPointInRadiusLookup map_fragment_starts( - search_radius, ExtrusionPathFragmentEndPointAccessor(path_fragments)); - for (size_t i_overlapping_layer = 0; i_overlapping_layer <= n_overlapping_layers; ++ i_overlapping_layer) { - const Polylines &polylines = path_fragments[i_overlapping_layer].polylines; - for (size_t i_polyline = 0; i_polyline < polylines.size(); ++ i_polyline) { - // Map a starting point of a polyline to a pair of - if (polylines[i_polyline].points.size() >= 2) { - map_fragment_starts.insert(ExtrusionPathFragmentEnd(i_overlapping_layer, i_polyline, true)); - map_fragment_starts.insert(ExtrusionPathFragmentEnd(i_overlapping_layer, i_polyline, false)); - } - } - } - - // For each source path: - for (size_t i_path = 0; i_path < path_ends.size(); ++ i_path) { - const Point &pt_start = path_ends[i_path].first; - const Point &pt_end = path_ends[i_path].second; - Point pt_current = pt_start; - // Find a chain of fragments with the original / reduced print height. - ExtrusionMultiPath multipath; - for (;;) { - // Find a closest end point to pt_current. - std::pair end_and_dist2 = map_fragment_starts.find(pt_current); - // There may be a bug in Clipper flipping the order of two last points in a fragment? - // assert(end_and_dist2.first != nullptr); - assert(end_and_dist2.first == nullptr || end_and_dist2.second < search_radius * search_radius); - if (end_and_dist2.first == nullptr) { - // New fragment connecting to pt_current was not found. - // Verify that the last point found is close to the original end point of the unfragmented path. - //const double d2 = (pt_end - pt_current).cast.squaredNorm(); - //assert(d2 < coordf_t(search_radius * search_radius)); - // End of the path. - break; - } - const ExtrusionPathFragmentEnd &fragment_end_min = *end_and_dist2.first; - // Fragment to consume. - ExtrusionPathFragment &frag = path_fragments[fragment_end_min.layer_idx]; - Polyline &frag_polyline = frag.polylines[fragment_end_min.polyline_idx]; - // Path to append the fragment to. - ExtrusionPath *path = multipath.paths.empty() ? nullptr : &multipath.paths.back(); - if (path != nullptr) { - // Verify whether the path is compatible with the current fragment. - assert(this_layer.layer_type == PrintObjectSupportMaterial::sltBottomContact || path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm); - if (path->height != frag.height || path->mm3_per_mm != frag.mm3_per_mm) { - path = nullptr; - } - // Merging with the previous path. This can only happen if the current layer was reduced by a base layer, which was split into a base and interface layer. - } - if (path == nullptr) { - // Allocate a new path. - multipath.paths.push_back(ExtrusionPath(extrusion_role, frag.mm3_per_mm, frag.width, frag.height)); - path = &multipath.paths.back(); - } - // The Clipper library may flip the order of the clipped polylines arbitrarily. - // Reverse the source polyline, if connecting to the end. - if (! fragment_end_min.is_start) - frag_polyline.reverse(); - // Enforce exact overlap of the end points of successive fragments. - assert(frag_polyline.points.front() == pt_current); - frag_polyline.points.front() = pt_current; - // Don't repeat the first point. - if (! path->polyline.points.empty()) - path->polyline.points.pop_back(); - // Consume the fragment's polyline, remove it from the input fragments, so it will be ignored the next time. - path->polyline.append(std::move(frag_polyline)); - frag_polyline.points.clear(); - pt_current = path->polyline.points.back(); - if (pt_current == pt_end) { - // End of the path. - break; - } - } - if (!multipath.paths.empty()) { - if (multipath.paths.size() == 1) { - // This path was not fragmented. - extrusions_in_out.push_back(new ExtrusionPath(std::move(multipath.paths.front()))); - } else { - // This path was fragmented. Copy the collection as a whole object, so the order inside the collection will not be changed - // during the chaining of extrusions_in_out. - extrusions_in_out.push_back(new ExtrusionMultiPath(std::move(multipath))); - } - } - } - // If there are any non-consumed fragments, add them separately. - //FIXME this shall not happen, if the Clipper works as expected and all paths split to fragments could be re-connected. - for (auto it_fragment = path_fragments.begin(); it_fragment != path_fragments.end(); ++ it_fragment) - extrusion_entities_append_paths(extrusions_in_out, std::move(it_fragment->polylines), extrusion_role, it_fragment->mm3_per_mm, it_fragment->width, it_fragment->height); -} - -void PrintObjectSupportMaterial::generate_toolpaths( - SupportLayerPtrs &support_layers, - const MyLayersPtr &raft_layers, - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - const MyLayersPtr &intermediate_layers, - const MyLayersPtr &interface_layers, - const MyLayersPtr &base_interface_layers) const -{ - // loop_interface_processor with a given circle radius. - LoopInterfaceProcessor loop_interface_processor(1.5 * m_support_params.support_material_interface_flow.scaled_width()); - loop_interface_processor.n_contact_loops = this->has_contact_loops() ? 1 : 0; - - std::vector angles { m_support_params.base_angle }; - if (m_object_config->support_base_pattern == smpRectilinearGrid) - angles.push_back(m_support_params.interface_angle); - - BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); - -// const coordf_t link_max_length_factor = 3.; - const coordf_t link_max_length_factor = 0.; - - float raft_angle_1st_layer = 0.f; - float raft_angle_base = 0.f; - float raft_angle_interface = 0.f; - if (m_slicing_params.base_raft_layers > 1) { - // There are all raft layer types (1st layer, base, interface & contact layers) available. - raft_angle_1st_layer = m_support_params.interface_angle; - raft_angle_base = m_support_params.base_angle; - raft_angle_interface = m_support_params.interface_angle; - } else if (m_slicing_params.base_raft_layers == 1 || m_slicing_params.interface_raft_layers > 1) { - // 1st layer, interface & contact layers available. - raft_angle_1st_layer = m_support_params.base_angle; - if (this->has_support()) - // Print 1st layer at 45 degrees from both the interface and base angles as both can land on the 1st layer. - raft_angle_1st_layer += 0.7854f; - raft_angle_interface = m_support_params.interface_angle; - } else if (m_slicing_params.interface_raft_layers == 1) { - // Only the contact raft layer is non-empty, which will be printed as the 1st layer. - assert(m_slicing_params.base_raft_layers == 0); - assert(m_slicing_params.interface_raft_layers == 1); - assert(m_slicing_params.raft_layers() == 1 && raft_layers.size() == 0); - } else { - // No raft. - assert(m_slicing_params.base_raft_layers == 0); - assert(m_slicing_params.interface_raft_layers == 0); - assert(m_slicing_params.raft_layers() == 0 && raft_layers.size() == 0); - } - - // Insert the raft base layers. - size_t n_raft_layers = size_t(std::max(0, int(m_slicing_params.raft_layers()) - 1)); - tbb::parallel_for(tbb::blocked_range(0, n_raft_layers), - [this, &support_layers, &raft_layers, - &bbox_object, raft_angle_1st_layer, raft_angle_base, raft_angle_interface, link_max_length_factor] - (const tbb::blocked_range& range) { - for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) - { - assert(support_layer_id < raft_layers.size()); - SupportLayer &support_layer = *support_layers[support_layer_id]; - assert(support_layer.support_fills.entities.empty()); - MyLayer &raft_layer = *raft_layers[support_layer_id]; - - std::unique_ptr filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.interface_fill_pattern)); - std::unique_ptr filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_interface->set_bounding_box(bbox_object); - filler_support->set_bounding_box(bbox_object); - - // Print the support base below the support columns, or the support base for the support columns plus the contacts. - if (support_layer_id > 0) { - const Polygons &to_infill_polygons = (support_layer_id < m_slicing_params.base_raft_layers) ? - raft_layer.polygons : - //FIXME misusing contact_polygons for support columns. - ((raft_layer.contact_polygons == nullptr) ? Polygons() : *raft_layer.contact_polygons); - if (! to_infill_polygons.empty()) { - assert(! raft_layer.bridging); - Flow flow(float(m_support_params.support_material_flow.width()), float(raft_layer.height), m_support_params.support_material_flow.nozzle_diameter()); - Fill * filler = filler_support.get(); - filler->angle = raft_angle_base; - filler->spacing = m_support_params.support_material_flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.support_density)); - fill_expolygons_with_sheath_generate_paths( - // Destination - support_layer.support_fills.entities, - // Regions to fill - to_infill_polygons, - // Filler and its parameters - filler, float(m_support_params.support_density), - // Extrusion parameters - erSupportMaterial, flow, - m_support_params.with_sheath, false); - } - } - - Fill *filler = filler_interface.get(); - Flow flow = m_support_params.first_layer_flow; - float density = 0.f; - if (support_layer_id == 0) { - // Base flange. - filler->angle = raft_angle_1st_layer; - filler->spacing = m_support_params.first_layer_flow.spacing(); - density = float(m_object_config->raft_first_layer_density.value * 0.01); - } else if (support_layer_id >= m_slicing_params.base_raft_layers) { - filler->angle = raft_angle_interface; - // We don't use $base_flow->spacing because we need a constant spacing - // value that guarantees that all layers are correctly aligned. - filler->spacing = m_support_params.support_material_flow.spacing(); - assert(! raft_layer.bridging); - flow = Flow(float(m_support_params.support_material_interface_flow.width()), float(raft_layer.height), m_support_params.support_material_flow.nozzle_diameter()); - density = float(m_support_params.interface_density); - } else - continue; - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); - fill_expolygons_with_sheath_generate_paths( - // Destination - support_layer.support_fills.entities, - // Regions to fill - raft_layer.polygons, - // Filler and its parameters - filler, density, - // Extrusion parameters - (support_layer_id < m_slicing_params.base_raft_layers) ? erSupportMaterial : erSupportMaterialInterface, flow, - // sheath at first layer - support_layer_id == 0, support_layer_id == 0); - } - }); - - struct LayerCacheItem { - LayerCacheItem(MyLayerExtruded *layer_extruded = nullptr) : layer_extruded(layer_extruded) {} - MyLayerExtruded *layer_extruded; - std::vector overlapping; - }; - struct LayerCache { - MyLayerExtruded bottom_contact_layer; - MyLayerExtruded top_contact_layer; - MyLayerExtruded base_layer; - MyLayerExtruded interface_layer; - MyLayerExtruded base_interface_layer; - boost::container::static_vector nonempty; - - void add_nonempty_and_sort() { - for (MyLayerExtruded *item : { &bottom_contact_layer, &top_contact_layer, &interface_layer, &base_interface_layer, &base_layer }) - if (! item->empty()) - this->nonempty.emplace_back(item); - // Sort the layers with the same print_z coordinate by their heights, thickest first. - std::stable_sort(this->nonempty.begin(), this->nonempty.end(), [](const LayerCacheItem &lc1, const LayerCacheItem &lc2) { return lc1.layer_extruded->layer->height > lc2.layer_extruded->layer->height; }); - } - }; - std::vector layer_caches(support_layers.size()); - - tbb::parallel_for(tbb::blocked_range(n_raft_layers, support_layers.size()), - [this, &support_layers, &bottom_contacts, &top_contacts, &intermediate_layers, &interface_layers, &base_interface_layers, &layer_caches, &loop_interface_processor, - &bbox_object, &angles, link_max_length_factor] - (const tbb::blocked_range& range) { - // Indices of the 1st layer in their respective container at the support layer height. - size_t idx_layer_bottom_contact = size_t(-1); - size_t idx_layer_top_contact = size_t(-1); - size_t idx_layer_intermediate = size_t(-1); - size_t idx_layer_interface = size_t(-1); - size_t idx_layer_base_interface = size_t(-1); - // BBS - const auto fill_type_first_layer = ipConcentric; - auto filler_interface = std::unique_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); - // Filler for the 1st layer interface, if different from filler_interface. - auto filler_first_layer_ptr = std::unique_ptr(range.begin() == 0 && m_support_params.contact_fill_pattern != fill_type_first_layer ? Fill::new_from_type(fill_type_first_layer) : nullptr); - // Pointer to the 1st layer interface filler. - auto filler_first_layer = filler_first_layer_ptr ? filler_first_layer_ptr.get() : filler_interface.get(); - // Filler for the base interface (to be used for soluble interface / non soluble base, to produce non soluble interface layer below soluble interface layer). - auto filler_base_interface = std::unique_ptr(base_interface_layers.empty() ? nullptr : - Fill::new_from_type(m_support_params.interface_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase)); - auto filler_support = std::unique_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_interface->set_bounding_box(bbox_object); - if (filler_first_layer_ptr) - filler_first_layer_ptr->set_bounding_box(bbox_object); - if (filler_base_interface) - filler_base_interface->set_bounding_box(bbox_object); - filler_support->set_bounding_box(bbox_object); - for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) - { - SupportLayer &support_layer = *support_layers[support_layer_id]; - LayerCache &layer_cache = layer_caches[support_layer_id]; - float interface_angle_delta = m_object_config->support_style.value == smsSnug ? - (support_layer.interface_id() & 1) ? float(- M_PI / 4.) : float(+ M_PI / 4.) : - 0; - - // Find polygons with the same print_z. - MyLayerExtruded &bottom_contact_layer = layer_cache.bottom_contact_layer; - MyLayerExtruded &top_contact_layer = layer_cache.top_contact_layer; - MyLayerExtruded &base_layer = layer_cache.base_layer; - MyLayerExtruded &interface_layer = layer_cache.interface_layer; - MyLayerExtruded &base_interface_layer = layer_cache.base_interface_layer; - // Increment the layer indices to find a layer at support_layer.print_z. - { - auto fun = [&support_layer](const MyLayer *l){ return l->print_z >= support_layer.print_z - EPSILON; }; - idx_layer_bottom_contact = idx_higher_or_equal(bottom_contacts, idx_layer_bottom_contact, fun); - idx_layer_top_contact = idx_higher_or_equal(top_contacts, idx_layer_top_contact, fun); - idx_layer_intermediate = idx_higher_or_equal(intermediate_layers, idx_layer_intermediate, fun); - idx_layer_interface = idx_higher_or_equal(interface_layers, idx_layer_interface, fun); - idx_layer_base_interface = idx_higher_or_equal(base_interface_layers, idx_layer_base_interface,fun); - } - // Copy polygons from the layers. - if (idx_layer_bottom_contact < bottom_contacts.size() && bottom_contacts[idx_layer_bottom_contact]->print_z < support_layer.print_z + EPSILON) - bottom_contact_layer.layer = bottom_contacts[idx_layer_bottom_contact]; - if (idx_layer_top_contact < top_contacts.size() && top_contacts[idx_layer_top_contact]->print_z < support_layer.print_z + EPSILON) - top_contact_layer.layer = top_contacts[idx_layer_top_contact]; - if (idx_layer_interface < interface_layers.size() && interface_layers[idx_layer_interface]->print_z < support_layer.print_z + EPSILON) - interface_layer.layer = interface_layers[idx_layer_interface]; - if (idx_layer_base_interface < base_interface_layers.size() && base_interface_layers[idx_layer_base_interface]->print_z < support_layer.print_z + EPSILON) - base_interface_layer.layer = base_interface_layers[idx_layer_base_interface]; - if (idx_layer_intermediate < intermediate_layers.size() && intermediate_layers[idx_layer_intermediate]->print_z < support_layer.print_z + EPSILON) - base_layer.layer = intermediate_layers[idx_layer_intermediate]; - - if (m_object_config->support_interface_top_layers == 0) { - // If no top interface layers were requested, we treat the contact layer exactly as a generic base layer. - if (m_support_params.can_merge_support_regions) { - if (base_layer.could_merge(top_contact_layer)) - base_layer.merge(std::move(top_contact_layer)); - else if (base_layer.empty()) - base_layer = std::move(top_contact_layer); - } - } else { - loop_interface_processor.generate(top_contact_layer, m_support_params.support_material_interface_flow); - // If no loops are allowed, we treat the contact layer exactly as a generic interface layer. - // Merge interface_layer into top_contact_layer, as the top_contact_layer is not synchronized and therefore it will be used - // to trim other layers. - if (top_contact_layer.could_merge(interface_layer)) - top_contact_layer.merge(std::move(interface_layer)); - } - if ((m_object_config->support_interface_top_layers == 0 || m_object_config->support_interface_bottom_layers == 0) && m_support_params.can_merge_support_regions) { - if (base_layer.could_merge(bottom_contact_layer)) - base_layer.merge(std::move(bottom_contact_layer)); - else if (base_layer.empty() && ! bottom_contact_layer.empty() && ! bottom_contact_layer.layer->bridging) - base_layer = std::move(bottom_contact_layer); - } else if (bottom_contact_layer.could_merge(top_contact_layer)) - top_contact_layer.merge(std::move(bottom_contact_layer)); - else if (bottom_contact_layer.could_merge(interface_layer)) - bottom_contact_layer.merge(std::move(interface_layer)); - -#if 0 - if ( ! interface_layer.empty() && ! base_layer.empty()) { - // turn base support into interface when it's contained in our holes - // (this way we get wider interface anchoring) - //FIXME The intention of the code below is unclear. One likely wanted to just merge small islands of base layers filling in the holes - // inside interface layers, but the code below fills just too much, see GH #4570 - Polygons islands = top_level_islands(interface_layer.layer->polygons); - polygons_append(interface_layer.layer->polygons, intersection(base_layer.layer->polygons, islands)); - base_layer.layer->polygons = diff(base_layer.layer->polygons, islands); - } -#endif - - // Calculate top interface angle - float angle_of_biggest_bridge = -1.f; - do - { - // Currently only works when thick_bridges is off - if (m_object->config().thick_bridges) - break; - - coordf_t object_layer_bottom_z = support_layer.print_z + m_slicing_params.gap_support_object; - const Layer* object_layer = m_object->get_layer_at_bottomz(object_layer_bottom_z, 10.0 * EPSILON); - if (object_layer == nullptr) - break; - - if (object_layer != nullptr) { - float biggest_bridge_area = 0.f; - const Polygons& top_contact_polys = top_contact_layer.polygons_to_extrude(); - for (auto layerm : object_layer->regions()) { - for (auto bridge_surface : layerm->fill_surfaces.filter_by_type(stBottomBridge)) { - float bs_area = bridge_surface->area(); - if (bs_area <= biggest_bridge_area || bridge_surface->bridge_angle < 0.f) - continue; - - angle_of_biggest_bridge = bridge_surface->bridge_angle; - biggest_bridge_area = bs_area; - } - } - } - } while (0); - - auto calc_included_angle_degree = [](int degree_a, int degree_b) { - int iad = std::abs(degree_b - degree_a); - return std::min(iad, 180 - iad); - }; - - // Top and bottom contacts, interface layers. - for (size_t i = 0; i < 3; ++ i) { - MyLayerExtruded &layer_ex = (i == 0) ? top_contact_layer : (i == 1 ? bottom_contact_layer : interface_layer); - if (layer_ex.empty() || layer_ex.polygons_to_extrude().empty()) - continue; - bool interface_as_base = m_object_config->support_interface_top_layers.value == 0 || - (m_object_config->support_interface_bottom_layers == 0 && &layer_ex == &bottom_contact_layer); - //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore - // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) - Flow interface_flow; - if (layer_ex.layer->bridging) - interface_flow = Flow::bridging_flow(layer_ex.layer->height, m_support_params.support_material_bottom_interface_flow.nozzle_diameter()); - else if (layer_ex.layer->bottom_z < EPSILON) { - interface_flow = m_support_params.first_layer_flow; - }else - interface_flow = (interface_as_base ? &m_support_params.support_material_flow : &m_support_params.support_material_interface_flow)->with_height(float(layer_ex.layer->height)); - filler_interface->angle = interface_as_base ? - // If zero interface layers are configured, use the same angle as for the base layers. - angles[support_layer_id % angles.size()] : - // Use interface angle for the interface layers. - m_support_params.interface_angle + interface_angle_delta; - - // BBS - bool can_adjust_top_interface_angle = (m_object_config->support_interface_top_layers.value > 1 && &layer_ex == &top_contact_layer); - if (can_adjust_top_interface_angle && angle_of_biggest_bridge >= 0.f) { - int bridge_degree = (int)Geometry::rad2deg(angle_of_biggest_bridge); - int support_intf_degree = (int)Geometry::rad2deg(filler_interface->angle); - int max_included_degree = 0; - int step = 90; - for (int add_on_degree = 0; add_on_degree < 180; add_on_degree += step) { - int degree_to_try = support_intf_degree + add_on_degree; - int included_degree = calc_included_angle_degree(bridge_degree, degree_to_try); - if (included_degree > max_included_degree) { - max_included_degree = included_degree; - filler_interface->angle = Geometry::deg2rad((float)degree_to_try); - } - } - } - double density = interface_as_base ? m_support_params.support_density : m_support_params.interface_density; - filler_interface->spacing = interface_as_base ? m_support_params.support_material_flow.spacing() : m_support_params.support_material_interface_flow.spacing(); - filler_interface->link_max_length = coord_t(scale_(filler_interface->spacing * link_max_length_factor / density)); - // BBS support more interface patterns - FillParams fill_params; - fill_params.density = density; - fill_params.dont_adjust = true; - if (m_object_config->support_interface_pattern == smipGrid) { - filler_interface->angle = Geometry::deg2rad(m_support_params.base_angle); - fill_params.dont_sort = true; - } - if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - filler_interface->layer_id = support_layer.interface_id(); - fill_expolygons_generate_paths( - // Destination - layer_ex.extrusions, - // Regions to fill - union_safety_offset_ex(layer_ex.polygons_to_extrude()), - // Filler and its parameters - filler_interface.get(), fill_params, - // Extrusion parameters - erSupportMaterialInterface, interface_flow); - } - - // Base interface layers under soluble interfaces - if ( ! base_interface_layer.empty() && ! base_interface_layer.polygons_to_extrude().empty()) { - Fill *filler = filler_base_interface.get(); - //FIXME Bottom interfaces are extruded with the briding flow. Some bridging layers have its height slightly reduced, therefore - // the bridging flow does not quite apply. Reduce the flow to area of an ellipse? (A = pi * a * b) - assert(! base_interface_layer.layer->bridging); - Flow interface_flow = m_support_params.support_material_flow.with_height(float(base_interface_layer.layer->height)); - filler->angle = m_support_params.interface_angle + interface_angle_delta; - filler->spacing = m_support_params.support_material_interface_flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.interface_density)); - fill_expolygons_generate_paths( - // Destination - base_interface_layer.extrusions, - //base_layer_interface.extrusions, - // Regions to fill - union_safety_offset_ex(base_interface_layer.polygons_to_extrude()), - // Filler and its parameters - filler, float(m_support_params.interface_density), - // Extrusion parameters - erSupportMaterial, interface_flow); - } - - // Base support or flange. - if (! base_layer.empty() && ! base_layer.polygons_to_extrude().empty()) { - Fill *filler = filler_support.get(); - filler->angle = angles[support_layer_id % angles.size()]; - // We don't use $base_flow->spacing because we need a constant spacing - // value that guarantees that all layers are correctly aligned. - assert(! base_layer.layer->bridging); - auto flow = m_support_params.support_material_flow.with_height(float(base_layer.layer->height)); - filler->spacing = m_support_params.support_material_flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / m_support_params.support_density)); - float density = float(m_support_params.support_density); - bool sheath = m_support_params.with_sheath; - bool no_sort = false; - if (base_layer.layer->bottom_z < EPSILON) { - // Base flange (the 1st layer). - filler = filler_first_layer; - // BBS: the 1st layer use the same fill direction as other layers(in rectilinear) to avoid - // that 2nd layer detaches from the 1st layer. - //filler->angle = Geometry::deg2rad(float(m_object_config->support_angle.value + 90.)); - density = float(m_object_config->raft_first_layer_density.value * 0.01); - flow = m_support_params.first_layer_flow; - // use the proper spacing for first layer as we don't need to align - // its pattern to the other layers - //FIXME When paralellizing, each thread shall have its own copy of the fillers. - filler->spacing = flow.spacing(); - filler->link_max_length = coord_t(scale_(filler->spacing * link_max_length_factor / density)); - sheath = true; - no_sort = true; - } - fill_expolygons_with_sheath_generate_paths( - // Destination - base_layer.extrusions, - // Regions to fill - base_layer.polygons_to_extrude(), - // Filler and its parameters - filler, density, - // Extrusion parameters - erSupportMaterial, flow, - sheath, no_sort); - - } - - // Merge base_interface_layers to base_layers to avoid unneccessary retractions - if (! base_layer.empty() && ! base_interface_layer.empty() && ! base_layer.polygons_to_extrude().empty() && ! base_interface_layer.polygons_to_extrude().empty() && - base_layer.could_merge(base_interface_layer)) - base_layer.merge(std::move(base_interface_layer)); - - layer_cache.add_nonempty_and_sort(); - - // Collect the support areas with this print_z into islands, as there is no need - // for retraction over these islands. - Polygons polys; - // Collect the extrusions, sorted by the bottom extrusion height. - for (LayerCacheItem &layer_cache_item : layer_cache.nonempty) { - // Collect islands to polys. - layer_cache_item.layer_extruded->polygons_append(polys); - // The print_z of the top contact surfaces and bottom_z of the bottom contact surfaces are "free" - // in a sense that they are not synchronized with other support layers. As the top and bottom contact surfaces - // are inflated to achieve a better anchoring, it may happen, that these surfaces will at least partially - // overlap in Z with another support layers, leading to over-extrusion. - // Mitigate the over-extrusion by modulating the extrusion rate over these regions. - // The print head will follow the same print_z, but the layer thickness will be reduced - // where it overlaps with another support layer. - //FIXME When printing a briging path, what is an equivalent height of the squished extrudate of the same width? - // Collect overlapping top/bottom surfaces. - layer_cache_item.overlapping.reserve(20); - coordf_t bottom_z = layer_cache_item.layer_extruded->layer->bottom_print_z() + EPSILON; - auto add_overlapping = [&layer_cache_item, bottom_z](const MyLayersPtr &layers, size_t idx_top) { - for (int i = int(idx_top) - 1; i >= 0 && layers[i]->print_z > bottom_z; -- i) - layer_cache_item.overlapping.push_back(layers[i]); - }; - add_overlapping(top_contacts, idx_layer_top_contact); - if (layer_cache_item.layer_extruded->layer->layer_type == sltBottomContact) { - // Bottom contact layer may overlap with a base layer, which may be changed to interface layer. - add_overlapping(intermediate_layers, idx_layer_intermediate); - add_overlapping(interface_layers, idx_layer_interface); - add_overlapping(base_interface_layers, idx_layer_base_interface); - } - // Order the layers by lexicographically by an increasing print_z and a decreasing layer height. - std::stable_sort(layer_cache_item.overlapping.begin(), layer_cache_item.overlapping.end(), [](auto *l1, auto *l2) { return *l1 < *l2; }); - } - if (! polys.empty()) - expolygons_append(support_layer.support_islands, union_ex(polys)); - } // for each support_layer_id - }); - - // Now modulate the support layer height in parallel. - tbb::parallel_for(tbb::blocked_range(n_raft_layers, support_layers.size()), - [&support_layers, &layer_caches] - (const tbb::blocked_range& range) { - for (size_t support_layer_id = range.begin(); support_layer_id < range.end(); ++ support_layer_id) { - SupportLayer &support_layer = *support_layers[support_layer_id]; - LayerCache &layer_cache = layer_caches[support_layer_id]; - // For all extrusion types at this print_z, ordered by decreasing layer height: - for (LayerCacheItem &layer_cache_item : layer_cache.nonempty) { - // Trim the extrusion height from the bottom by the overlapping layers. - modulate_extrusion_by_overlapping_layers(layer_cache_item.layer_extruded->extrusions, *layer_cache_item.layer_extruded->layer, layer_cache_item.overlapping); - support_layer.support_fills.append(std::move(layer_cache_item.layer_extruded->extrusions)); - } - } - }); - -#ifndef NDEBUG - struct Test { - static bool verify_nonempty(const ExtrusionEntityCollection *collection) { - for (const ExtrusionEntity *ee : collection->entities) { - if (const ExtrusionPath *path = dynamic_cast(ee)) - assert(! path->empty()); - else if (const ExtrusionMultiPath *multipath = dynamic_cast(ee)) - assert(! multipath->empty()); - else if (const ExtrusionEntityCollection *eecol = dynamic_cast(ee)) { - assert(! eecol->empty()); - return verify_nonempty(eecol); - } else - assert(false); - } - return true; - } - }; - for (const SupportLayer *support_layer : support_layers) - assert(Test::verify_nonempty(&support_layer->support_fills)); -#endif // NDEBUG -} - -/* -void PrintObjectSupportMaterial::clip_by_pillars( - const PrintObject &object, - LayersPtr &bottom_contacts, - LayersPtr &top_contacts, - LayersPtr &intermediate_contacts); - -{ - // this prevents supplying an empty point set to BoundingBox constructor - if (top_contacts.empty()) - return; - - coord_t pillar_size = scale_(PILLAR_SIZE); - coord_t pillar_spacing = scale_(PILLAR_SPACING); - - // A regular grid of pillars, filling the 2D bounding box. - Polygons grid; - { - // Rectangle with a side of 2.5x2.5mm. - Polygon pillar; - pillar.points.push_back(Point(0, 0)); - pillar.points.push_back(Point(pillar_size, 0)); - pillar.points.push_back(Point(pillar_size, pillar_size)); - pillar.points.push_back(Point(0, pillar_size)); - - // 2D bounding box of the projection of all contact polygons. - BoundingBox bbox; - for (LayersPtr::const_iterator it = top_contacts.begin(); it != top_contacts.end(); ++ it) - bbox.merge(get_extents((*it)->polygons)); - grid.reserve(size_t(ceil(bb.size()(0) / pillar_spacing)) * size_t(ceil(bb.size()(1) / pillar_spacing))); - for (coord_t x = bb.min(0); x <= bb.max(0) - pillar_size; x += pillar_spacing) { - for (coord_t y = bb.min(1); y <= bb.max(1) - pillar_size; y += pillar_spacing) { - grid.push_back(pillar); - for (size_t i = 0; i < pillar.points.size(); ++ i) - grid.back().points[i].translate(Point(x, y)); - } - } - } - - // add pillars to every layer - for my $i (0..n_support_z) { - $shape->[$i] = [ @$grid ]; - } - - // build capitals - for my $i (0..n_support_z) { - my $z = $support_z->[$i]; - - my $capitals = intersection( - $grid, - $contact->{$z} // [], - ); - - // work on one pillar at time (if any) to prevent the capitals from being merged - // but store the contact area supported by the capital because we need to make - // sure nothing is left - my $contact_supported_by_capitals = []; - foreach my $capital (@$capitals) { - // enlarge capital tops - $capital = offset([$capital], +($pillar_spacing - $pillar_size)/2); - push @$contact_supported_by_capitals, @$capital; - - for (my $j = $i-1; $j >= 0; $j--) { - my $jz = $support_z->[$j]; - $capital = offset($capital, -$self->interface_flow->scaled_width/2); - last if !@$capitals; - push @{ $shape->[$j] }, @$capital; - } - } - - // Capitals will not generally cover the whole contact area because there will be - // remainders. For now we handle this situation by projecting such unsupported - // areas to the ground, just like we would do with a normal support. - my $contact_not_supported_by_capitals = diff( - $contact->{$z} // [], - $contact_supported_by_capitals, - ); - if (@$contact_not_supported_by_capitals) { - for (my $j = $i-1; $j >= 0; $j--) { - push @{ $shape->[$j] }, @$contact_not_supported_by_capitals; - } - } - } -} - -sub clip_with_shape { - my ($self, $support, $shape) = @_; - - foreach my $i (keys %$support) { - // don't clip bottom layer with shape so that we - // can generate a continuous base flange - // also don't clip raft layers - next if $i == 0; - next if $i < $self->object_config->raft_layers; - $support->{$i} = intersection( - $support->{$i}, - $shape->[$i], - ); - } -} -*/ - -} // namespace Slic3r diff --git a/src/libslic3r/SupportMaterial.hpp b/src/libslic3r/SupportMaterial.hpp deleted file mode 100644 index 861126fcbdc..00000000000 --- a/src/libslic3r/SupportMaterial.hpp +++ /dev/null @@ -1,263 +0,0 @@ -#ifndef slic3r_SupportMaterial_hpp_ -#define slic3r_SupportMaterial_hpp_ - -#include "Flow.hpp" -#include "PrintConfig.hpp" -#include "Slicing.hpp" - -namespace Slic3r { - -class PrintObject; -class PrintConfig; -class PrintObjectConfig; - -// This class manages raft and supports for a single PrintObject. -// Instantiated by Slic3r::Print::Object->_support_material() -// This class is instantiated before the slicing starts as Object.pm will query -// the parameters of the raft to determine the 1st layer height and thickness. -class PrintObjectSupportMaterial -{ -public: - // Support layer type to be used by MyLayer. This type carries a much more detailed information - // about the support layer type than the final support layers stored in a PrintObject. - enum SupporLayerType { - sltUnknown = 0, - // Ratft base layer, to be printed with the support material. - sltRaftBase, - // Raft interface layer, to be printed with the support interface material. - sltRaftInterface, - // Bottom contact layer placed over a top surface of an object. To be printed with a support interface material. - sltBottomContact, - // Dense interface layer, to be printed with the support interface material. - // This layer is separated from an object by an sltBottomContact layer. - sltBottomInterface, - // Sparse base support layer, to be printed with a support material. - sltBase, - // Dense interface layer, to be printed with the support interface material. - // This layer is separated from an object with sltTopContact layer. - sltTopInterface, - // Top contact layer directly supporting an overhang. To be printed with a support interface material. - sltTopContact, - // Some undecided type yet. It will turn into sltBase first, then it may turn into sltBottomInterface or sltTopInterface. - sltIntermediate, - }; - - // A support layer type used internally by the SupportMaterial class. This class carries a much more detailed - // information about the support layer than the layers stored in the PrintObject, mainly - // the MyLayer is aware of the bridging flow and the interface gaps between the object and the support. - class MyLayer - { - public: - void reset() { - *this = MyLayer(); - } - - bool operator==(const MyLayer &layer2) const { - return print_z == layer2.print_z && height == layer2.height && bridging == layer2.bridging; - } - - // Order the layers by lexicographically by an increasing print_z and a decreasing layer height. - bool operator<(const MyLayer &layer2) const { - if (print_z < layer2.print_z) { - return true; - } else if (print_z == layer2.print_z) { - if (height > layer2.height) - return true; - else if (height == layer2.height) { - // Bridging layers first. - return bridging && ! layer2.bridging; - } else - return false; - } else - return false; - } - - void merge(MyLayer &&rhs) { - // The union_() does not support move semantic yet, but maybe one day it will. - this->polygons = union_(this->polygons, std::move(rhs.polygons)); - auto merge = [](std::unique_ptr &dst, std::unique_ptr &src) { - if (! dst || dst->empty()) - dst = std::move(src); - else if (src && ! src->empty()) - *dst = union_(*dst, std::move(*src)); - }; - merge(this->contact_polygons, rhs.contact_polygons); - merge(this->overhang_polygons, rhs.overhang_polygons); - merge(this->enforcer_polygons, rhs.enforcer_polygons); - rhs.reset(); - } - - // For the bridging flow, bottom_print_z will be above bottom_z to account for the vertical separation. - // For the non-bridging flow, bottom_print_z will be equal to bottom_z. - coordf_t bottom_print_z() const { return print_z - height; } - - // To sort the extremes of top / bottom interface layers. - coordf_t extreme_z() const { return (this->layer_type == sltTopContact) ? this->bottom_z : this->print_z; } - - SupporLayerType layer_type { sltUnknown }; - // Z used for printing, in unscaled coordinates. - coordf_t print_z { 0 }; - // Bottom Z of this layer. For soluble layers, bottom_z + height = print_z, - // otherwise bottom_z + gap + height = print_z. - coordf_t bottom_z { 0 }; - // Layer height in unscaled coordinates. - coordf_t height { 0 }; - // Index of a PrintObject layer_id supported by this layer. This will be set for top contact layers. - // If this is not a contact layer, it will be set to size_t(-1). - size_t idx_object_layer_above { size_t(-1) }; - // Index of a PrintObject layer_id, which supports this layer. This will be set for bottom contact layers. - // If this is not a contact layer, it will be set to size_t(-1). - size_t idx_object_layer_below { size_t(-1) }; - // Use a bridging flow when printing this support layer. - bool bridging { false }; - - // Polygons to be filled by the support pattern. - Polygons polygons; - // Currently for the contact layers only. - std::unique_ptr contact_polygons; - std::unique_ptr overhang_polygons; - // Enforcers need to be propagated independently in case the "support on build plate only" option is enabled. - std::unique_ptr enforcer_polygons; - }; - - struct SupportParams { - Flow first_layer_flow; - Flow support_material_flow; - Flow support_material_interface_flow; - Flow support_material_bottom_interface_flow; - // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? - bool can_merge_support_regions; - - coordf_t support_layer_height_min; - // coordf_t support_layer_height_max; - - coordf_t gap_xy; - - float base_angle; - float interface_angle; - coordf_t interface_spacing; - coordf_t support_expansion; - coordf_t interface_density; - coordf_t support_spacing; - coordf_t support_density; - - InfillPattern base_fill_pattern; - InfillPattern interface_fill_pattern; - InfillPattern contact_fill_pattern; - bool with_sheath; - }; - - // Layers are allocated and owned by a deque. Once a layer is allocated, it is maintained - // up to the end of a generate() method. The layer storage may be replaced by an allocator class in the future, - // which would allocate layers by multiple chunks. - typedef std::deque MyLayerStorage; - typedef std::vector MyLayersPtr; - -public: - PrintObjectSupportMaterial(const PrintObject *object, const SlicingParameters &slicing_params); - - // Is raft enabled? - bool has_raft() const { return m_slicing_params.has_raft(); } - // Has any support? - bool has_support() const { return m_object_config->enable_support.value || m_object_config->enforce_support_layers; } - bool build_plate_only() const { return this->has_support() && m_object_config->support_on_build_plate_only.value; } - // BBS - bool synchronize_layers() const { return /*m_slicing_params.soluble_interface && */!m_print_config->independent_support_layer_height.value; } - bool has_contact_loops() const { return m_object_config->support_interface_loop_pattern.value; } - - // Generate support material for the object. - // New support layers will be added to the object, - // with extrusion paths and islands filled in for each support layer. - void generate(PrintObject &object); - -private: - std::vector buildplate_covered(const PrintObject &object) const; - - // Generate top contact layers supporting overhangs. - // For a soluble interface material synchronize the layer heights with the object, otherwise leave the layer height undefined. - // If supports over bed surface only are requested, don't generate contact layers over an object. - MyLayersPtr top_contact_layers(const PrintObject &object, const std::vector &buildplate_covered, MyLayerStorage &layer_storage) const; - - // Generate bottom contact layers supporting the top contact layers. - // For a soluble interface material synchronize the layer heights with the object, - // otherwise set the layer height to a bridging flow of a support interface nozzle. - MyLayersPtr bottom_contact_layers_and_layer_support_areas( - const PrintObject &object, const MyLayersPtr &top_contacts, std::vector &buildplate_covered, - MyLayerStorage &layer_storage, std::vector &layer_support_areas) const; - - // Trim the top_contacts layers with the bottom_contacts layers if they overlap, so there would not be enough vertical space for both of them. - void trim_top_contacts_by_bottom_contacts(const PrintObject &object, const MyLayersPtr &bottom_contacts, MyLayersPtr &top_contacts) const; - - // Generate raft layers and the intermediate support layers between the bottom contact and top contact surfaces. - MyLayersPtr raft_and_intermediate_support_layers( - const PrintObject &object, - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - MyLayerStorage &layer_storage) const; - - // Fill in the base layers with polygons. - void generate_base_layers( - const PrintObject &object, - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - MyLayersPtr &intermediate_layers, - const std::vector &layer_support_areas) const; - - // Generate raft layers, also expand the 1st support layer - // in case there is no raft layer to improve support adhesion. - MyLayersPtr generate_raft_base( - const PrintObject &object, - const MyLayersPtr &top_contacts, - const MyLayersPtr &interface_layers, - const MyLayersPtr &base_interface_layers, - const MyLayersPtr &base_layers, - MyLayerStorage &layer_storage) const; - - // Turn some of the base layers into base interface layers. - // For soluble interfaces with non-soluble bases, print maximum two first interface layers with the base - // extruder to improve adhesion of the soluble filament to the base. - std::pair generate_interface_layers( - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - MyLayersPtr &intermediate_layers, - MyLayerStorage &layer_storage) const; - - - // Trim support layers by an object to leave a defined gap between - // the support volume and the object. - void trim_support_layers_by_object( - const PrintObject &object, - MyLayersPtr &support_layers, - const coordf_t gap_extra_above, - const coordf_t gap_extra_below, - const coordf_t gap_xy) const; - -/* - void generate_pillars_shape(); - void clip_with_shape(); -*/ - - // Produce the actual G-code. - void generate_toolpaths( - SupportLayerPtrs &support_layers, - const MyLayersPtr &raft_layers, - const MyLayersPtr &bottom_contacts, - const MyLayersPtr &top_contacts, - const MyLayersPtr &intermediate_layers, - const MyLayersPtr &interface_layers, - const MyLayersPtr &base_interface_layers) const; - - // Following objects are not owned by SupportMaterial class. - const PrintObject *m_object; - const PrintConfig *m_print_config; - const PrintObjectConfig *m_object_config; - // Pre-calculated parameters shared between the object slicer and the support generator, - // carrying information on a raft, 1st layer height, 1st object layer height, gap between the raft and object etc. - SlicingParameters m_slicing_params; - // Various precomputed support parameters to be shared with external functions. - SupportParams m_support_params; -}; - -} // namespace Slic3r - -#endif /* slic3r_SupportMaterial_hpp_ */ diff --git a/src/libslic3r/TreeSupport.cpp b/src/libslic3r/TreeSupport.cpp deleted file mode 100644 index dc4f9998ff0..00000000000 --- a/src/libslic3r/TreeSupport.cpp +++ /dev/null @@ -1,3716 +0,0 @@ -#include - -#include "MinimumSpanningTree.hpp" -#include "TreeSupport.hpp" -#include "Print.hpp" -#include "Layer.hpp" -#include "Fill/FillBase.hpp" -#include "Fill/FillConcentric.hpp" -#include "CurveAnalyzer.hpp" -#include "SVG.hpp" -#include "ShortestPath.hpp" -#include "I18N.hpp" -#include - -#include -#include -#include - -#define _L(s) Slic3r::I18N::translate(s) - -#define USE_PLAN_LAYER_HEIGHTS 1 - -#ifndef M_PI -#define M_PI 3.1415926535897932384626433832795 -#endif -#ifndef SIGN -#define SIGN(x) (x>=0?1:-1) -#endif -#define TAU (2.0 * M_PI) -#define NO_INDEX (std::numeric_limits::max()) - -// #define SUPPORT_TREE_DEBUG_TO_SVG - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG -#include "nlohmann/json.hpp" -#endif -namespace Slic3r -{ -#define unscale_(val) ((val) * SCALING_FACTOR) - -inline unsigned int round_divide(unsigned int dividend, unsigned int divisor) //!< Return dividend divided by divisor rounded to the nearest integer -{ - return (dividend + divisor / 2) / divisor; -} -inline unsigned int round_up_divide(unsigned int dividend, unsigned int divisor) //!< Return dividend divided by divisor rounded to the nearest integer -{ - return (dividend + divisor - 1) / divisor; -} - -inline double dot_with_unscale(const Point a, const Point b) -{ - return unscale_(a(0)) * unscale_(b(0)) + unscale_(a(1)) * unscale_(b(1)); -} - -inline double vsize2_with_unscale(const Point pt) -{ - return dot_with_unscale(pt, pt); -} - -inline Point turn90_ccw(const Point pt) -{ - Point ret; - - ret(0) = -pt(1); - ret(1) = pt(0); - return ret; -} - -inline Point normal(Point pt, double scale) -{ - double length = scale_(sqrt(vsize2_with_unscale(pt))); - - return pt * (scale / length); -} - -enum TreeSupportStage { - STAGE_DETECT_OVERHANGS, - STAGE_GENERATE_CONTACT_NODES, - STAGE_DROP_DOWN_NODES, - STAGE_DRAW_CIRCLES, - STAGE_GENERATE_TOOLPATHS, - STAGE_MinimumSpanningTree, - STAGE_GET_AVOIDANCE, - STAGE_projection_onto_ex, - STAGE_get_collision, - STAGE_intersection_ln, - STAGE_total, - NUM_STAGES -}; - -class TreeSupportProfiler -{ -public: - uint32_t stage_durations[NUM_STAGES]; - uint32_t stage_index = 0; - boost::posix_time::ptime tic_time; - boost::posix_time::ptime toc_time; - - TreeSupportProfiler() - { - for (uint32_t& item : stage_durations) { - item = 0; - } - } - - void stage_start(TreeSupportStage stage) - { - if (stage > NUM_STAGES) - return; - - m_stage_start_times[stage] = boost::posix_time::microsec_clock::local_time(); - } - - void stage_finish(TreeSupportStage stage) - { - if (stage > NUM_STAGES) - return; - - boost::posix_time::ptime time = boost::posix_time::microsec_clock::local_time(); - stage_durations[stage] = (time - m_stage_start_times[stage]).total_milliseconds(); - } - - void tic() { tic_time = boost::posix_time::microsec_clock::local_time(); } - void toc() { toc_time = boost::posix_time::microsec_clock::local_time(); } - void stage_add(TreeSupportStage stage, bool do_toc = false) - { - if (stage > NUM_STAGES) - return; - if(do_toc) - toc_time = boost::posix_time::microsec_clock::local_time(); - stage_durations[stage] += (toc_time - tic_time).total_milliseconds(); - } - - std::string report() - { - std::stringstream ss; - ss << "total overhange cost: " << stage_durations[STAGE_total] - << "; STAGE_DETECT_OVERHANGS: " << stage_durations[STAGE_DETECT_OVERHANGS] - << "; STAGE_GENERATE_CONTACT_NODES: " << stage_durations[STAGE_GENERATE_CONTACT_NODES] - << "; STAGE_DROP_DOWN_NODES: " << stage_durations[STAGE_DROP_DOWN_NODES] - << "; STAGE_DRAW_CIRCLES: " << stage_durations[STAGE_DRAW_CIRCLES] - << "; STAGE_GENERATE_TOOLPATHS: " << stage_durations[STAGE_GENERATE_TOOLPATHS] - << "; STAGE_MinimumSpanningTree: " << stage_durations[STAGE_MinimumSpanningTree] - << "; STAGE_GET_AVOIDANCE: " << stage_durations[STAGE_GET_AVOIDANCE] - << "; STAGE_projection_onto_ex: " << stage_durations[STAGE_projection_onto_ex] - << "; STAGE_get_collision: " << stage_durations[STAGE_get_collision] - << "; STAGE_intersection_ln: " << stage_durations[STAGE_intersection_ln]; - - return ss.str(); - } -private: - boost::posix_time::ptime m_stage_start_times[NUM_STAGES]; -}; -TreeSupportProfiler profiler; - -Lines spanning_tree_to_lines(const std::vector& spanning_trees) -{ - Lines polylines; - for (const MinimumSpanningTree& mst : spanning_trees) { - std::vector points = mst.vertices(); - std::unordered_set to_ignore; - for (Point pt1 : points) { - if (to_ignore.find(pt1) != to_ignore.end()) - continue; - - const std::vector& neighbours = mst.adjacent_nodes(pt1); - if (neighbours.empty()) - continue; - - for (Point pt2 : neighbours) { - if (to_ignore.find(pt2) != to_ignore.end()) - continue; - - Line line(pt1, pt2); - polylines.push_back(line); - } - - to_ignore.insert(pt1); - } - } - return polylines; -} - - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG -static std::string get_svg_filename(std::string layer_nr_or_z, std::string tag = "bbl_ts") -{ - static bool rand_init = false; - - if (!rand_init) { - srand(time(NULL)); - rand_init = true; - } - - int rand_num = rand() % 1000000; - //makedir("./SVG"); - std::string prefix = "./SVG/"; - std::string suffix = ".svg"; - return prefix + tag + "_" + layer_nr_or_z /*+ "_" + std::to_string(rand_num)*/ + suffix; -} - -static void draw_contours_and_nodes_to_svg -( - std::string layer_nr_or_z, - const ExPolygons &overhangs, - const ExPolygons &overhangs_after_offset, - const ExPolygons &outlines_below, - const std::vector &layer_nodes, - const std::vector &lower_layer_nodes, - std::string name_prefix, - std::vector legends = { "overhang","avoid","outlines" }, std::vector colors = { "blue","red","yellow" } -) -{ - BoundingBox bbox = get_extents(overhangs); - bbox.merge(get_extents(overhangs_after_offset)); - bbox.merge(get_extents(outlines_below)); - Points layer_pts; - for (TreeSupport::Node* node : layer_nodes) { - layer_pts.push_back(node->position); - } - bbox.merge(get_extents(layer_pts)); - bbox.inflated(scale_(1)); - bbox.max.x() = std::max(bbox.max.x(), (coord_t)scale_(10)); - bbox.max.y() = std::max(bbox.max.y(), (coord_t)scale_(10)); - - SVG svg; - if(!layer_nr_or_z.empty()) - svg.open(get_svg_filename(layer_nr_or_z, name_prefix), bbox); - else - svg.open(name_prefix, bbox); - if (!svg.is_opened()) return; - - // draw grid - svg.draw_grid(bbox, "gray", coord_t(scale_(0.05))); - - // draw overhang areas - svg.draw_outline(union_ex(overhangs), colors[0]); - svg.draw_outline(union_ex(overhangs_after_offset), colors[1]); - svg.draw_outline(outlines_below, colors[2]); - - // draw legend - if (!lower_layer_nodes.empty()) { - svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), format("nPoints: %1%->%2%",layer_nodes.size(), lower_layer_nodes.size()).c_str(), "green", 2); - } - else { - svg.draw_text(bbox.min + Point(scale_(0), scale_(0)), ("nPoints: " + std::to_string(layer_nodes.size())).c_str(), "green", 2); - } - svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), legends[0].c_str(), colors[0].c_str(), 2); - svg.draw_text(bbox.min + Point(scale_(0), scale_(4)), legends[1].c_str(), colors[1].c_str(), 2); - svg.draw_text(bbox.min + Point(scale_(0), scale_(6)), legends[2].c_str(), colors[2].c_str(), 2); - - // draw layer nodes - svg.draw(layer_pts, "green", coord_t(scale_(0.1))); -#if 0 - // lower layer points - layer_pts.clear(); - for (TreeSupport::Node *node : lower_layer_nodes) { - layer_pts.push_back(node->position); - } - svg.draw(layer_pts, "black", coord_t(scale_(0.1))); - - // higher layer points - layer_pts.clear(); - for (TreeSupport::Node* node : layer_nodes) { - if(node->parent) - layer_pts.push_back(node->parent->position); - } - svg.draw(layer_pts, "blue", coord_t(scale_(0.1))); -#endif -} - -static void draw_layer_mst -(const std::string &layer_nr_or_z, - const std::vector &spanning_trees, - const ExPolygons& outline -) -{ - auto lines = spanning_tree_to_lines(spanning_trees); - BoundingBox bbox = get_extents(lines); - for (auto& poly : outline) - { - BoundingBox bb = poly.contour.bounding_box(); - bbox.merge(bb); - } - - SVG svg(get_svg_filename(layer_nr_or_z, "mstree").c_str(), bbox); - if (!svg.is_opened()) return; - - svg.draw(lines, "blue", coord_t(scale_(0.05))); - svg.draw_outline(outline, "yellow"); - for (auto &spanning_tree : spanning_trees) - svg.draw(spanning_tree.vertices(), "black", coord_t(scale_(0.1))); -} - -static void draw_two_overhangs_to_svg(SupportLayer* ts_layer, const ExPolygons& overhangs1, const ExPolygons& overhangs2) -{ - if (overhangs1.empty() && overhangs2.empty()) - return; - BoundingBox bbox1 = get_extents(overhangs1); - BoundingBox bbox2 = get_extents(overhangs2); - bbox1.merge(bbox2); - - SVG svg(get_svg_filename(std::to_string(ts_layer->print_z), "two_overhangs"), bbox1); - if (!svg.is_opened()) return; - - svg.draw(union_ex(overhangs1), "blue"); - svg.draw(union_ex(overhangs2), "red"); -} - -static void draw_polylines(SupportLayer* ts_layer, Polylines& polylines) -{ - if (polylines.empty()) - return; - BoundingBox bbox = get_extents(polylines); - - SVG svg(get_svg_filename(std::to_string(ts_layer->print_z), "lightnings"), bbox); - if (!svg.is_opened()) return; - - int id = 0; - for (Polyline& pline : polylines) - { - int i1, i2; - for (size_t i = 0; i < pline.size() - 1; i++) - { - i1 = i; - i2 = i + 1; - svg.draw(Line(pline.points[i1], pline.points[i2]), "blue"); - svg.draw(pline.points[i1], "red"); - id++; - svg.draw_text(pline.points[i1], std::to_string(id).c_str(), "black", 1); - } - svg.draw(pline.points[i2], "red"); - id++; - svg.draw_text(pline.points[i2], std::to_string(id).c_str(), "black", 1); - } -} -#endif - -// Move point from inside polygon if distance>0, outside if distance<0. -// Special case: distance=0 means find the nearest point of from on the polygon contour. -// The max move distance should not excceed max_move_distance. -static unsigned int move_inside_expoly(const ExPolygon &polygon, Point& from, double distance = 0, double max_move_distance = std::numeric_limits::max()) -{ - //TODO: This is copied from the moveInside of Polygons. - /* - We'd like to use this function as subroutine in moveInside(Polygons...), but - then we'd need to recompute the distance of the point to the polygon, which - is expensive. Or we need to return the distance. We need the distance there - to compare with the distance to other polygons. - */ - Point ret = from; - double bestDist2 = std::numeric_limits::max(); - bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary - const Polygon &contour = polygon.contour; - - if (contour.points.size() < 2) - { - return 0; - } - Point p0 = contour.points[polygon.contour.size() - 2]; - Point p1 = contour.points.back(); - // because we compare with vsize2_with_unscale here (no division by zero), we also need to compare by vsize2_with_unscale inside the loop - // to avoid integer rounding edge cases - bool projected_p_beyond_prev_segment = dot_with_unscale(p1 - p0, from - p0) >= vsize2_with_unscale(p1 - p0); - for(const Point& p2 : polygon.contour.points) - { - // X = A + Normal(B-A) * (((B-A) dot_with_unscale (P-A)) / VSize(B-A)); - // = A + (B-A) * ((B-A) dot_with_unscale (P-A)) / VSize2(B-A); - // X = P projected on AB - const Point& a = p1; - const Point& b = p2; - const Point& p = from; - Point ab = b - a; - Point ap = p - a; - double ab_length2 = vsize2_with_unscale(ab); - if(ab_length2 <= 0) //A = B, i.e. the input polygon had two adjacent points on top of each other. - { - p1 = p2; //Skip only one of the points. - continue; - } - double dot_prod = dot_with_unscale(ab, ap); - if (dot_prod <= 0) // x is projected to before ab - { - if (projected_p_beyond_prev_segment) - { // case which looks like: > . - projected_p_beyond_prev_segment = false; - Point& x = p1; - - double dist2 = vsize2_with_unscale(x - p); - if (dist2 < bestDist2) - { - bestDist2 = dist2; - if (distance == 0) - { - ret = x; - } - else - { - // TODO: check whether it needs scale_() - Point inward_dir = turn90_ccw(normal(ab, 10.0) + normal(p1 - p0, 10.0)); // inward direction irrespective of sign of [distance] - // MM2INT(10.0) to retain precision for the eventual normalization - ret = x + normal(inward_dir, scale_(distance)); - is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) * distance >= 0; - } - } - } - else - { - projected_p_beyond_prev_segment = false; - p0 = p1; - p1 = p2; - continue; - } - } - else if (dot_prod >= ab_length2) // x is projected to beyond ab - { - projected_p_beyond_prev_segment = true; - p0 = p1; - p1 = p2; - continue; - } - else - { // x is projected to a point properly on the line segment (not onto a vertex). The case which looks like | . - projected_p_beyond_prev_segment = false; - Point x = a + ab * (dot_prod / ab_length2); - - double dist2 = vsize2_with_unscale(p - x); - if (dist2 < bestDist2) - { - bestDist2 = dist2; - if (distance == 0) - { - ret = x; - } - else - { - Point inward_dir = turn90_ccw(normal(ab, scale_(distance))); // inward or outward depending on the sign of [distance] - ret = x + inward_dir; - is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) >= 0; - } - } - } - - p0 = p1; - p1 = p2; - } - - if (is_already_on_correct_side_of_boundary) // when the best point is already inside and we're moving inside, or when the best point is already outside and we're moving outside - { - // BBS. Remove this condition. - if (bestDist2 < distance * distance) - { - from = ret; - } - } - else if (bestDist2 < max_move_distance * max_move_distance) - { - from = ret; - } - return 0; -} - -/* - * Implementation assumes moving inside, but moving outside should just as well be possible. - */ -static bool move_inside_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) -{ - Point from0 = from; - Point ret = from; - std::vector valid_pts; - double bestDist2 = std::numeric_limits::max(); - unsigned int bestPoly = NO_INDEX; - bool is_already_on_correct_side_of_boundary = false; // whether [from] is already on the right side of the boundary - Point inward_dir; - for (unsigned int poly_idx = 0; poly_idx < polygons.size(); poly_idx++) - { - const ExPolygon poly = polygons[poly_idx]; - if (poly.contour.size() < 2) - continue; - Point p0 = poly.contour[poly.contour.size()-2]; - Point p1 = poly.contour.points.back(); - // because we compare with vsize2_with_unscale here (no division by zero), we also need to compare by vsize2_with_unscale inside the loop - // to avoid integer rounding edge cases - bool projected_p_beyond_prev_segment = dot_with_unscale(p1 - p0, from - p0) >= vsize2_with_unscale(p1 - p0); - for(const Point& p2 : poly.contour.points) - { - // X = A + Normal(B-A) * (((B-A) dot_with_unscale (P-A)) / VSize(B-A)); - // = A + (B-A) * ((B-A) dot_with_unscale (P-A)) / VSize2(B-A); - // X = P projected on AB - Point a = p1; - Point b = p2; - Point p = from; - Point ab = b - a; - Point ap = p - a; - double ab_length2 = vsize2_with_unscale(ab); - if(ab_length2 <= 0) //A = B, i.e. the input polygon had two adjacent points on top of each other. - { - p1 = p2; //Skip only one of the points. - continue; - } - double dot_prod = dot_with_unscale(ab, ap); - if (dot_prod <= 0) // x is projected to before ab - { - if (projected_p_beyond_prev_segment) - { // case which looks like: > . - projected_p_beyond_prev_segment = false; - Point& x = p1; - - double dist2 = vsize2_with_unscale(x - p); - if (dist2 < bestDist2) - { - bestDist2 = dist2; - bestPoly = poly_idx; - if (distance == 0) { ret = x; } - else - { - inward_dir = turn90_ccw(normal(ab, 10.0) + normal(p1 - p0, 10.0)); // inward direction irrespective of sign of [distance] - // MM2INT(10.0) to retain precision for the eventual normalization - ret = x + normal(inward_dir, scale_(distance)); - is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) * distance >= 0; - if (is_already_on_correct_side_of_boundary && dist2 < distance * distance) - valid_pts.push_back(ret-from0); - } - } - } - else - { - projected_p_beyond_prev_segment = false; - p0 = p1; - p1 = p2; - continue; - } - } - else if (dot_prod >= ab_length2) // x is projected to beyond ab - { - projected_p_beyond_prev_segment = true; - p0 = p1; - p1 = p2; - continue; - } - else - { // x is projected to a point properly on the line segment (not onto a vertex). The case which looks like | . - projected_p_beyond_prev_segment = false; - Point x = a + ab * (dot_prod / ab_length2); - - double dist2 = vsize2_with_unscale(p - x); - if (dist2 < bestDist2) - { - bestDist2 = dist2; - bestPoly = poly_idx; - if (distance == 0) { ret = x; } - else - { - inward_dir = turn90_ccw(normal(ab, scale_(distance))); // inward or outward depending on the sign of [distance] - ret = x + inward_dir; - is_already_on_correct_side_of_boundary = dot_with_unscale(inward_dir, p - x) >= 0; - if (is_already_on_correct_side_of_boundary && dist2 1) { - // std::sort(valid_pts.begin(), valid_pts.end()); - // Point v_combine = valid_pts[0] + valid_pts[1]; - // if(vsize2_with_unscale(v_combine)::max(); - - for (const ExPolygon &poly : polygons) { - for (int i = 0; i < poly.num_contours(); i++) { - const Point* candidate = poly.contour_or_hole(i).closest_point(from); - double dist2 = vsize2_with_unscale(*candidate - from); - if (dist2 < min_dist2) { - closest_pt = *candidate; - min_dist2 = dist2; - } - } - } - - return closest_pt; -} - -static bool move_outside_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) -{ - return move_inside_expolys(polygons, from, -distance, -max_move_distance); -} - -static bool is_inside_ex(const ExPolygon &polygon, const Point &pt) -{ - if (!get_extents(polygon).contains(pt)) - return false; - - return polygon.contains(pt); -} - -static bool is_inside_ex(const ExPolygons &polygons, const Point &pt) -{ - for (const ExPolygon &poly : polygons) { - if (is_inside_ex(poly, pt)) - return true; - } - - return false; -} - -static bool move_out_expolys(const ExPolygons& polygons, Point& from, double distance, double max_move_distance) -{ - Point from0 = from; - ExPolygons polys_dilated = union_ex(offset_ex(polygons, scale_(distance))); - Point pt = projection_onto(polys_dilated, from);// find_closest_ex(from, polys_dilated); - Point outward_dir = pt - from; - Point pt_max = from + normal(outward_dir, scale_(max_move_distance)); - double dist2 = vsize2_with_unscale(outward_dir); - if (dist2 > SQ(max_move_distance)) - pt = pt_max; - // case 5: already outside and far enough, no need to move - if (!is_inside_ex(polys_dilated, from)) - return true; - else if (!is_inside_ex(polygons, from)) { - // case 4: already outside but not far enough - from = pt; - return true; - } - else { - bool pt_max_in_poly = is_inside_ex(polygons, pt_max); - if (!pt_max_in_poly) { - from = pt_max; - return true; - } - else { - return false; - } - } -} - -static Point bounding_box_middle(const BoundingBox &bbox) -{ - return (bbox.max + bbox.min) / 2; -} - -TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_params) - : m_object(&object), m_slicing_params(slicing_params), m_object_config(&object.config()) -{ - m_raft_layers = slicing_params.base_raft_layers + slicing_params.interface_raft_layers; - support_type = m_object_config->support_type; - support_style = m_object_config->support_style; - if (support_style == smsDefault) - support_style = smsTreeHybrid; - SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; - if (support_style == smsTreeHybrid && support_pattern == smpDefault) support_pattern = smpRectilinear; - m_support_params.base_fill_pattern = - support_pattern == smpLightning ? ipLightning : - support_pattern == smpHoneycomb ? ipHoneycomb : - m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : - ipSupportBase; - - m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); - if (m_object_config->support_interface_pattern == smipGrid) - m_support_params.contact_fill_pattern = ipGrid; - else if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - m_support_params.contact_fill_pattern = ipRectilinear; - else - m_support_params.contact_fill_pattern = (m_object_config->support_interface_pattern == smipAuto && m_slicing_params.soluble_interface) || - m_object_config->support_interface_pattern == smipConcentric ? - ipConcentric : - (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); - - const auto nozzle_diameter = object.print()->config().nozzle_diameter.get_at(object.config().support_interface_filament-1); - const coordf_t extrusion_width = m_object_config->line_width.get_abs_value(nozzle_diameter); - const coordf_t support_extrusion_width = m_object_config->support_line_width.get_abs_value(nozzle_diameter); - - m_support_params.support_extrusion_width = support_extrusion_width > 0 ? support_extrusion_width : extrusion_width; - is_slim = is_tree_slim(support_type, support_style); - is_strong = is_tree(support_type) && support_style == smsTreeStrong; - MAX_BRANCH_RADIUS = 10.0; - tree_support_branch_diameter_angle = 5.0;//is_slim ? 10.0 : 5.0; - // by default tree support needs no infill, unless it's tree hybrid which contains normal nodes. - with_infill = support_pattern != smpNone && support_pattern != smpDefault; - const PrintConfig& print_config = m_object->print()->config(); - m_machine_border.contour = get_bed_shape_with_excluded_area(print_config); - Vec3d plate_offset = m_object->print()->get_plate_origin(); - // align with the centered object in current plate (may not be the 1st plate, so need to add the plate offset) - m_machine_border.translate(Point(scale_(plate_offset(0)), scale_(plate_offset(1))) - m_object->instances().front().shift); -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg("SVG/machine_boarder.svg", m_object->bounding_box()); - if (svg.is_opened()) svg.draw(m_machine_border, "yellow"); -#endif -} - - -#define SUPPORT_SURFACES_OFFSET_PARAMETERS ClipperLib::jtSquare, 0. -void TreeSupport::detect_overhangs(bool detect_first_sharp_tail_only) -{ - // overhangs are already detected - if (m_object->support_layer_count() >= m_object->layer_count()) - return; - - // Clear and create Tree Support Layers - m_object->clear_support_layers(); - m_object->clear_tree_support_preview_cache(); - create_tree_support_layers(); - - const PrintObjectConfig& config = m_object->config(); - SupportType stype = support_type; - const coordf_t radius_sample_resolution = g_config_tree_support_collision_resolution; - const double nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(0); - const coordf_t extrusion_width = config.get_abs_value("line_width", nozzle_diameter); - const coordf_t extrusion_width_scaled = scale_(extrusion_width); - const coordf_t max_bridge_length = scale_(config.max_bridge_length.value); - const bool bridge_no_support = max_bridge_length > 0; - const bool support_critical_regions_only = config.support_critical_regions_only.value; - const bool config_remove_small_overhangs = config.support_remove_small_overhang.value; - const int enforce_support_layers = config.enforce_support_layers.value; - const double area_thresh_well_supported = SQ(scale_(6)); - const double length_thresh_well_supported = scale_(6); - static const double sharp_tail_max_support_height = 16.f; - // a region is considered well supported if the number of layers below it exceeds this threshold - const int thresh_layers_below = 10 / config.layer_height; - double obj_height = m_object->size().z(); - // +1 makes the threshold inclusive - double thresh_angle = config.support_threshold_angle.value > EPSILON ? config.support_threshold_angle.value + 1 : 30; - thresh_angle = std::min(thresh_angle, 89.); // should be smaller than 90 - const double threshold_rad = Geometry::deg2rad(thresh_angle); - - // for small overhang removal - struct OverhangCluster { - std::map layer_overhangs; - ExPolygons merged_poly; - BoundingBox merged_bbox; - int min_layer = 1e7; - int max_layer = 0; - coordf_t offset = 0; - bool is_cantilever = false; - bool is_sharp_tail = false; - bool is_small_overhang = false; - OverhangCluster(const ExPolygon* expoly, int layer_nr) { - push_back(expoly, layer_nr); - } - void push_back(const ExPolygon* expoly, int layer_nr) { - layer_overhangs.emplace(layer_nr, expoly); - auto dilate1 = offset_ex(*expoly, offset); - if (!dilate1.empty()) - merged_poly = union_ex(merged_poly, dilate1); - min_layer = std::min(min_layer, layer_nr); - max_layer = std::max(max_layer, layer_nr); - merged_bbox.merge(get_extents(dilate1)); - } - int height() { - return max_layer - min_layer + 1; - } - bool intersects(const ExPolygon& region, int layer_nr, coordf_t offset) { - if (layer_nr < 1) return false; - auto it = layer_overhangs.find(layer_nr - 1); - if (it == layer_overhangs.end()) return false; - const ExPolygon* overhang = it->second; - - this->offset = offset; - auto dilate1 = offset_ex(region, offset); - BoundingBox bbox = get_extents(dilate1); - if (!merged_bbox.overlap(bbox)) - return false; - return overlaps({ *overhang }, dilate1); - } - // it's basically the combination of push_back and intersects, but saves an offset_ex - bool push_back_if_intersects(const ExPolygon& region, int layer_nr, coordf_t offset) { - bool is_intersect = false; - ExPolygons dilate1; - BoundingBox bbox; - do { - if (layer_nr < 1) break; - auto it = layer_overhangs.find(layer_nr - 1); - if (it == layer_overhangs.end()) break; - const ExPolygon* overhang = it->second; - - this->offset = offset; - dilate1 = offset_ex(region, offset); - if (dilate1.empty()) break; - bbox = get_extents(dilate1); - if (!merged_bbox.overlap(bbox)) - break; - is_intersect = overlaps({ *overhang }, dilate1); - } while (0); - if (is_intersect) { - layer_overhangs.emplace(layer_nr, ®ion); - merged_poly = union_ex(merged_poly, dilate1); - min_layer = std::min(min_layer, layer_nr); - max_layer = std::max(max_layer, layer_nr); - merged_bbox.merge(bbox); - } - return is_intersect; - } - }; - std::vector overhangClusters; - - auto find_and_insert_cluster = [](auto ®ionClusters, const ExPolygon ®ion, int layer_nr, coordf_t offset) { - OverhangCluster *cluster = nullptr; - for (int i = 0; i < regionClusters.size(); i++) { - auto cluster_i = ®ionClusters[i]; - if (cluster_i->push_back_if_intersects(region, layer_nr, offset)) { - cluster = cluster_i; - break; - } - } - if (!cluster) { - cluster = ®ionClusters.emplace_back(®ion, layer_nr); - } - return cluster; - }; - - if (!is_tree(stype)) return; - - max_cantilever_dist = 0; - - // main part of overhang detection can be parallel - tbb::parallel_for(tbb::blocked_range(0, m_object->layer_count()), - [&](const tbb::blocked_range& range) { - for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { - if (m_object->print()->canceled()) - break; - - if (!is_auto(stype) && layer_nr > enforce_support_layers) - continue; - - Layer* layer = m_object->get_layer(layer_nr); - - if (layer->lower_layer == nullptr) { - for (auto& slice : layer->lslices) { - auto bbox_size = get_extents(slice).size(); - if (!((bbox_size.x() > length_thresh_well_supported && bbox_size.y() > length_thresh_well_supported)) - && g_config_support_sharp_tails) { - layer->sharp_tails.push_back(slice); - layer->sharp_tails_height.insert({ &slice, layer->height }); - } - } - continue; - } - - Layer* lower_layer = layer->lower_layer; - coordf_t lower_layer_offset = layer_nr < enforce_support_layers ? -0.15 * extrusion_width : (float)lower_layer->height / tan(threshold_rad); - coordf_t support_offset_scaled = scale_(lower_layer_offset); - // Filter out areas whose diameter that is smaller than extrusion_width. Do not use offset2() for this purpose! - ExPolygons lower_polys; - for (const ExPolygon& expoly : lower_layer->lslices) { - if (!offset_ex(expoly, -extrusion_width_scaled / 2).empty()) { - lower_polys.emplace_back(expoly); - } - } - ExPolygons curr_polys; - std::vector curr_poly_ptrs; - for (const ExPolygon& expoly : layer->lslices) { - if (!offset_ex(expoly, -extrusion_width_scaled / 2).empty()) { - curr_polys.emplace_back(expoly); - curr_poly_ptrs.emplace_back(&expoly); - } - } - - // normal overhang - ExPolygons lower_layer_offseted = offset_ex(lower_polys, support_offset_scaled, SUPPORT_SURFACES_OFFSET_PARAMETERS); - ExPolygons overhang_areas = diff_ex(curr_polys, lower_layer_offseted); - - overhang_areas.erase(std::remove_if(overhang_areas.begin(), overhang_areas.end(), - [extrusion_width_scaled](ExPolygon& area) { return offset_ex(area, -0.1 * extrusion_width_scaled).empty(); }), - overhang_areas.end()); - - - if (is_auto(stype) && g_config_support_sharp_tails) - { - // BBS detect sharp tail - for (const ExPolygon* expoly : curr_poly_ptrs) { - bool is_sharp_tail = false; - // 1. nothing below - // this is a sharp tail region if it's small but non-ignorable - if (!overlaps(offset_ex(*expoly, 0.5 * extrusion_width_scaled), lower_polys)) { - is_sharp_tail = expoly->area() < area_thresh_well_supported && !offset_ex(*expoly, -0.1 * extrusion_width_scaled).empty(); - } - - if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ *expoly }, lower_polys); - layer->sharp_tails.push_back(*expoly); - layer->sharp_tails_height.insert({ expoly, layer->height }); - append(overhang_areas, overhang); - - if (!overhang.empty()) { - has_sharp_tails = true; -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(format("SVG/sharp_tail_orig_%.02f.svg", layer->print_z), m_object->bounding_box()); - if (svg.is_opened()) svg.draw(overhang, "red"); -#endif - } - } - } - } - - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - for (ExPolygon& poly : overhang_areas) { - if (offset_ex(poly, -0.1 * extrusion_width_scaled).empty()) continue; - ts_layer->overhang_areas.emplace_back(poly); - - // check cantilever - { - auto cluster_boundary_ex = intersection_ex(poly, offset_ex(lower_layer->lslices, scale_(0.5))); - Polygons cluster_boundary = to_polygons(cluster_boundary_ex); - if (cluster_boundary.empty()) continue; - double dist_max = 0; - for (auto& pt : poly.contour.points) { - double dist_pt = std::numeric_limits::max(); - for (auto& ply : cluster_boundary) { - double d = ply.distance_to(pt); - dist_pt = std::min(dist_pt, d); - } - dist_max = std::max(dist_max, dist_pt); - } - if (dist_max > scale_(3)) { // is cantilever if the farmost point is larger than 3mm away from base - max_cantilever_dist = std::max(max_cantilever_dist, dist_max); - layer->cantilevers.emplace_back(poly); - BOOST_LOG_TRIVIAL(debug) << "found a cantilever cluster. layer_nr=" << layer_nr << dist_max; - has_cantilever = true; - } - } - } - } - } - ); // end tbb::parallel_for - - BOOST_LOG_TRIVIAL(info) << "max_cantilever_dist=" << max_cantilever_dist; - - // check if the sharp tails should be extended higher - if (is_auto(stype) && g_config_support_sharp_tails && !detect_first_sharp_tail_only) { - for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { - if (m_object->print()->canceled()) - break; - - Layer* layer = m_object->get_layer(layer_nr); - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - Layer* lower_layer = layer->lower_layer; - if (!lower_layer) - continue; - - // BBS detect sharp tail - const ExPolygons& lower_layer_sharptails = lower_layer->sharp_tails; - const auto& lower_layer_sharptails_height = lower_layer->sharp_tails_height; - for (ExPolygon& expoly : layer->lslices) { - bool is_sharp_tail = false; - float accum_height = layer->height; - do { - // 2. something below - // check whether this is above a sharp tail region. - - // 2.1 If no sharp tail below, this is considered as common region. - ExPolygons supported_by_lower = intersection_ex({ expoly }, lower_layer_sharptails); - if (supported_by_lower.empty()) { - is_sharp_tail = false; - break; - } - - // 2.2 If sharp tail below, check whether it support this region enough. -#if 0 - // judge by area isn't reliable, failure cases include 45 degree rotated cube - float supported_area = area(supported_by_lower); - if (supported_area > area_thresh_well_supported) { - is_sharp_tail = false; - break; - } -#endif - BoundingBox bbox = get_extents(supported_by_lower); - if (bbox.size().x() > length_thresh_well_supported && bbox.size().y() > length_thresh_well_supported) { - is_sharp_tail = false; - break; - } - - // 2.3 check whether sharp tail exceed the max height - for (const auto& lower_sharp_tail_height : lower_layer_sharptails_height) { - if (lower_sharp_tail_height.first->overlaps(expoly)) { - accum_height += lower_sharp_tail_height.second; - break; - } - } - if (accum_height > sharp_tail_max_support_height) { - is_sharp_tail = false; - break; - } - - // 2.4 if the area grows fast than threshold, it get connected to other part or - // it has a sharp slop and will be auto supported. - ExPolygons new_overhang_expolys = diff_ex({ expoly }, lower_layer_sharptails); - if ((get_extents(new_overhang_expolys).size() - get_extents(lower_layer_sharptails).size()).both_comp(Point(scale_(5), scale_(5)), ">") || !offset_ex(new_overhang_expolys, -5.0 * extrusion_width_scaled).empty()) { - is_sharp_tail = false; - break; - } - - // 2.5 mark the expoly as sharptail - is_sharp_tail = true; - } while (0); - - if (is_sharp_tail) { - ExPolygons overhang = diff_ex({ expoly }, lower_layer->lslices); - layer->sharp_tails.push_back(expoly); - layer->sharp_tails_height.insert({ &expoly, accum_height }); - append(ts_layer->overhang_areas, overhang); - - if (!overhang.empty()) - has_sharp_tails = true; -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - SVG svg(format("SVG/sharp_tail_%.02f.svg",layer->print_z), m_object->bounding_box()); - if (svg.is_opened()) svg.draw(overhang, "red"); -#endif - } - - } - } - } - - // group overhang clusters - for (size_t layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { - if (m_object->print()->canceled()) - break; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - Layer* layer = m_object->get_layer(layer_nr); - for (auto& overhang : ts_layer->overhang_areas) { - OverhangCluster* cluster = find_and_insert_cluster(overhangClusters, overhang, layer_nr, extrusion_width_scaled); - if (overlaps({ overhang },layer->cantilevers)) - cluster->is_cantilever = true; - } - } - - auto enforcers = m_object->slice_support_enforcers(); - auto blockers = m_object->slice_support_blockers(); - m_object->project_and_append_custom_facets(false, EnforcerBlockerType::ENFORCER, enforcers); - m_object->project_and_append_custom_facets(false, EnforcerBlockerType::BLOCKER, blockers); - if (is_auto(stype) && config_remove_small_overhangs) { - if (blockers.size() < m_object->layer_count()) - blockers.resize(m_object->layer_count()); - for (auto& cluster : overhangClusters) { - // 3. check whether the small overhang is sharp tail - cluster.is_sharp_tail = false; - for (size_t layer_id = cluster.min_layer; layer_id <= cluster.max_layer; layer_id++) { - Layer* layer = m_object->get_layer(layer_id); - if (overlaps(layer->sharp_tails, cluster.merged_poly)) { - cluster.is_sharp_tail = true; - break; - } - } - - if (!cluster.is_sharp_tail && !cluster.is_cantilever) { - // 2. check overhang cluster size is smaller than 3.0 * fw_scaled - auto erode1 = offset_ex(cluster.merged_poly, -1 * extrusion_width_scaled); - Point bbox_sz = get_extents(erode1).size(); - if (bbox_sz.x() < 2 * extrusion_width_scaled || bbox_sz.y() < 2 * extrusion_width_scaled) { - cluster.is_small_overhang = true; - } - } - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - const Layer* layer1 = m_object->get_layer(cluster.min_layer); - BoundingBox bbox = cluster.merged_bbox; - bbox.merge(get_extents(layer1->lslices)); - SVG svg(format("SVG/overhangCluster_%s-%s_%s-%s_tail=%s_cantilever=%s_small=%s.svg", - cluster.min_layer, cluster.max_layer, layer1->print_z, m_object->get_layer(cluster.max_layer)->print_z, - cluster.is_sharp_tail, cluster.is_cantilever, cluster.is_small_overhang), bbox); - if (svg.is_opened()) { - svg.draw(layer1->lslices, "red"); - svg.draw(cluster.merged_poly, "blue"); - svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), "lslices", "red", 2); - svg.draw_text(bbox.min + Point(scale_(0), scale_(2)), "overhang", "blue", 2); - } -#endif - - if (!cluster.is_small_overhang) - continue; - - for (auto it = cluster.layer_overhangs.begin(); it != cluster.layer_overhangs.end(); it++) { - int layer_nr = it->first; - auto p_overhang = it->second; - blockers[layer_nr].push_back(p_overhang->contour); - } - } - } - - has_overhangs = false; - for (int layer_nr = 0; layer_nr < m_object->layer_count(); layer_nr++) { - if (m_object->print()->canceled()) - break; - - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - auto layer = m_object->get_layer(layer_nr); - auto lower_layer = layer->lower_layer; - if (support_critical_regions_only && is_auto(stype)) { - ts_layer->overhang_areas.clear(); - if (lower_layer == nullptr) - ts_layer->overhang_areas = layer->sharp_tails; - else - ts_layer->overhang_areas = diff_ex(layer->sharp_tails, lower_layer->lslices); - - append(ts_layer->overhang_areas, layer->cantilevers); - } - - if (layer_nr < blockers.size()) { - Polygons& blocker = blockers[layer_nr]; - // Arthur: union_ is a must because after mirroring, the blocker polygons are in left-hand coordinates, ie clockwise, - // which are not valid polygons, and will be removed by offset_ex. union_ can make these polygons right. - ts_layer->overhang_areas = diff_ex(ts_layer->overhang_areas, offset_ex(union_(blocker), scale_(radius_sample_resolution))); - } - - if (max_bridge_length > 0 && ts_layer->overhang_areas.size() > 0 && lower_layer) { - // do not break bridge for normal part in TreeHybrid - bool break_bridge = !(support_style == smsTreeHybrid && area(ts_layer->overhang_areas) > m_support_params.thresh_big_overhang); - m_object->remove_bridges_from_contacts(lower_layer, layer, extrusion_width_scaled, &ts_layer->overhang_areas, max_bridge_length, break_bridge); - } - - for (auto &area : ts_layer->overhang_areas) { - ts_layer->overhang_types.emplace(&area, SupportLayer::Detected); - } - // enforcers now follow same logic as normal support. See STUDIO-3692 - if (layer_nr < enforcers.size() && lower_layer) { - float no_interface_offset = std::accumulate(layer->regions().begin(), layer->regions().end(), FLT_MAX, - [](float acc, const LayerRegion* layerm) { return std::min(acc, float(layerm->flow(frExternalPerimeter).scaled_width())); }); - Polygons lower_layer_polygons = (layer_nr == 0) ? Polygons() : to_polygons(lower_layer->lslices); - Polygons& enforcer = enforcers[layer_nr]; - if (!enforcer.empty()) { - ExPolygons enforcer_polygons = diff_ex(intersection_ex(layer->lslices, enforcer), - // Inflate just a tiny bit to avoid intersection of the overhang areas with the object. - expand(lower_layer_polygons, 0.05f * no_interface_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - append(ts_layer->overhang_areas, enforcer_polygons); - ts_layer->overhang_types.emplace(&ts_layer->overhang_areas.back(), SupportLayer::Enforced); - } - } - - if (!ts_layer->overhang_areas.empty()) has_overhangs = true; - if (!layer->cantilevers.empty()) has_cantilever = true; - } - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - for (const SupportLayer* layer : m_object->support_layers()) { - if (layer->overhang_areas.empty() && (blockers.size()<=layer->id() || blockers[layer->id()].empty())) - continue; - - SVG svg(format("SVG/overhang_areas_%s.svg", layer->print_z), m_object->bounding_box()); - if (svg.is_opened()) { - svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); - svg.draw(layer->overhang_areas, "orange"); - if (blockers.size() > layer->id()) - svg.draw(blockers[layer->id()], "red"); - } - if (enforcers.size() > layer->id()) { - SVG svg(format("SVG/enforcer_%s.svg", layer->print_z), m_object->bounding_box()); - if (svg.is_opened()) { - svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); - svg.draw(enforcers[layer->id()], "red"); - } - } - if (blockers.size() > layer->id()) { - SVG svg(format("SVG/blocker_%s.svg", layer->print_z), m_object->bounding_box()); - if (svg.is_opened()) { - svg.draw_outline(m_object->get_layer(layer->id())->lslices, "yellow"); - svg.draw(blockers[layer->id()], "red"); - } - } - } -#endif -} - -void TreeSupport::create_tree_support_layers() -{ - int layer_id = 0; - coordf_t raft_print_z = 0.f; - coordf_t raft_slice_z = 0.f; - for (; layer_id < m_slicing_params.base_raft_layers; layer_id++) { - raft_print_z += m_slicing_params.base_raft_layer_height; - raft_slice_z = raft_print_z - m_slicing_params.base_raft_layer_height / 2; - m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); - } - - for (; layer_id < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; layer_id++) { - raft_print_z += m_slicing_params.interface_raft_layer_height; - raft_slice_z = raft_print_z - m_slicing_params.interface_raft_layer_height / 2; - m_object->add_tree_support_layer(layer_id, m_slicing_params.base_raft_layer_height, raft_print_z, raft_slice_z); - } - - for (Layer *layer : m_object->layers()) { - SupportLayer* ts_layer = m_object->add_tree_support_layer(layer->id(), layer->height, layer->print_z, layer->slice_z); - if (ts_layer->id() > m_raft_layers) { - SupportLayer* lower_layer = m_object->get_support_layer(ts_layer->id() - 1); - lower_layer->upper_layer = ts_layer; - ts_layer->lower_layer = lower_layer; - } - } -} - -static inline BoundingBox fill_expolygon_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygon &&expolygon, - Fill *filler, - const FillParams &fill_params, - ExtrusionRole role, - const Flow &flow) -{ - Surface surface(stInternal, std::move(expolygon)); - Polylines polylines; - try { - polylines = filler->fill_surface(&surface, fill_params); - } catch (InfillFailedException &) { - } - - BoundingBox fill_bbox; - if (!polylines.empty()) { - fill_bbox = polylines[0].bounding_box(); - for (auto& polyline : polylines) - fill_bbox.merge(polyline.bounding_box()); - } - - extrusion_entities_append_paths(dst, std::move(polylines), role, flow.mm3_per_mm(), flow.width(), flow.height()); - - return fill_bbox; -} - -static inline std::vector fill_expolygons_generate_paths( - ExtrusionEntitiesPtr &dst, - ExPolygons &&expolygons, - Fill *filler, - const FillParams &fill_params, - ExtrusionRole role, - const Flow &flow) -{ - std::vector fill_boxes; - for (ExPolygon& expoly : expolygons) { - auto box = fill_expolygon_generate_paths(dst, std::move(expoly), filler, fill_params, role, flow); - fill_boxes.emplace_back(box); - } - return fill_boxes; -} - -static void _make_loops(ExtrusionEntitiesPtr& loops_entities, ExPolygons &support_area, ExtrusionRole role, size_t wall_count, const Flow &flow) -{ - Polygons loops; - std::map depth_per_expoly; - std::list expoly_list; - - for (ExPolygon &expoly : support_area) { - expoly_list.emplace_back(std::move(expoly)); - depth_per_expoly.insert({&expoly_list.back(), 0}); - } - if (expoly_list.empty()) return; - - while (!expoly_list.empty()) { - polygons_append(loops, to_polygons(expoly_list.front())); - - auto first_iter = expoly_list.begin(); - auto depth_iter = depth_per_expoly.find(&expoly_list.front()); - if (depth_iter->second + 1 < wall_count) { - //ExPolygons expolys_new = offset_ex(expoly_list.front(), -float(flow.scaled_spacing()), jtSquare); - // shrink and then dilate to prevent overlapping and overflow - ExPolygons expolys_new = offset2_ex({expoly_list.front()}, -1.4 * float(flow.scaled_spacing()), .4 * float(flow.scaled_spacing())); - - for (ExPolygon &expoly : expolys_new) { - auto new_iter = expoly_list.insert(expoly_list.begin(), expoly); - depth_per_expoly.insert({&*new_iter, depth_iter->second + 1}); - } - } - depth_per_expoly.erase(depth_iter); - expoly_list.erase(first_iter); - } - - // draw connected loops - if (/*wall_count > 1 && wall_count<5*/0) { - // TODO this method may drop some contours - wall_count = std::min(wall_count, loops.size()); - Polylines polylines; - polylines.push_back(Polyline()); - Polyline& polyline = polylines.back(); - Point end_pt; - Point end_dir; - for (int wall_idx = 0; wall_idx < wall_count; wall_idx++) { - Polygon &loop = loops[wall_idx]; - if (loop.size()<3) continue; - // break the closed loop if this is not the last loop, so the next loop can attach to the end_pt - //if (wall_idx != wall_count - 1 && loop.first_point() == loop.last_point()) - // loop.points.pop_back(); - - if (wall_idx == 0) { - polyline.append(loop.points); - } else { - double d = loop.distance_to(end_pt); - if (d < scale_(2)) { // if current loop is close to the previous one - polyline.append(end_pt); - ExtrusionPath expath; - expath.polyline.append(loop.points); - ExtrusionLoop extru_loop(expath); - extru_loop.split_at(end_pt, false); - polyline.append(extru_loop.as_polyline()); - }else{// create a new polylie if they are far away - polylines.push_back(Polyline()); - polyline = polylines.back(); - polyline.append(loop.points); - } - } - end_pt = polyline.points.back(); - end_dir = end_pt - polyline.points[polyline.points.size() - 2]; - Point perpendicular_dir = turn90_ccw(end_dir); - end_pt = end_pt + normal(perpendicular_dir, flow.scaled_spacing()); - } - - extrusion_entities_append_paths(loops_entities, polylines, role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - } else { - extrusion_entities_append_loops(loops_entities, std::move(loops), role, float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - } - } - -static void make_perimeter_and_inner_brim(ExtrusionEntitiesPtr &dst, const ExPolygon &support_area, size_t wall_count, const Flow &flow, ExtrusionRole role) -{ - Polygons loops; - ExPolygons support_area_new = offset_ex(support_area, -0.5f * float(flow.scaled_spacing()), jtSquare); - _make_loops(dst, support_area_new, role, wall_count, flow); -} - -static void make_perimeter_and_infill(ExtrusionEntitiesPtr& dst, const Print& print, const ExPolygon& support_area, size_t wall_count, const Flow& flow, ExtrusionRole role, Fill* filler_support, double support_density, bool infill_first=true) -{ - Polygons loops; - ExPolygons support_area_new = offset_ex(support_area, -0.5f * float(flow.scaled_spacing()), jtSquare); - - // draw infill - FillParams fill_params; - fill_params.density = support_density; - fill_params.dont_adjust = true; - ExPolygons to_infill = support_area_new; - std::vector fill_boxes = fill_expolygons_generate_paths(dst, std::move(to_infill), filler_support, fill_params, role, flow); - - // allow wall_count to be zero, which means only draw infill - if (wall_count == 0) { - for (auto fill_bbox : fill_boxes) - { - // extend bounding box on x-axis - if (cos(filler_support->angle)>=sin(filler_support->angle)) { - fill_bbox.min[0] -= scale_(10); - fill_bbox.max[0] += scale_(10); - } - else { - fill_bbox.min[1] -= scale_(10); - fill_bbox.max[1] += scale_(10); - } - support_area_new = diff_ex(support_area_new, offset_ex(to_expolygons({ fill_bbox.polygon() }), 0.5*flow.scaled_width())); - } - // filter out small areas - for (auto it = support_area_new.begin(); it != support_area_new.end(); ) { - if (offset_ex(*it, -flow.scaled_width()).empty()) - it = support_area_new.erase(it); - else - it++; - } - } - - { // draw loops - ExtrusionEntitiesPtr loops_entities; - _make_loops(loops_entities, support_area_new, role, wall_count, flow); - - if (infill_first) - dst.insert(dst.end(), loops_entities.begin(), loops_entities.end()); - else { // loops first - loops_entities.insert(loops_entities.end(), dst.begin(), dst.end()); - dst = std::move(loops_entities); - } - } - if (infill_first) { - // sort regions to reduce travel - Points ordering_points; - for (const auto& area : dst) - ordering_points.push_back(area->first_point()); - std::vector order = chain_points(ordering_points); - ExtrusionEntitiesPtr new_dst; - new_dst.reserve(ordering_points.size()); - for (size_t i : order) - new_dst.emplace_back(dst[i]); - dst = new_dst; - } -} - -void TreeSupport::generate_toolpaths() -{ - const PrintConfig &print_config = m_object->print()->config(); - const PrintObjectConfig &object_config = m_object->config(); - coordf_t support_extrusion_width = m_support_params.support_extrusion_width; - coordf_t nozzle_diameter = print_config.nozzle_diameter.get_at(object_config.support_filament - 1); - 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(); - coordf_t bottom_interface_spacing = object_config.support_bottom_interface_spacing.value + m_support_material_interface_flow.spacing(); - coordf_t interface_density = std::min(1., m_support_material_interface_flow.spacing() / interface_spacing); - coordf_t bottom_interface_density = std::min(1., m_support_material_interface_flow.spacing() / bottom_interface_spacing); - - const coordf_t branch_radius = object_config.tree_support_branch_diameter.value / 2; - const coordf_t branch_radius_scaled = scale_(branch_radius); - - if (m_object->support_layers().empty()) - return; - - // calculate fill areas for raft layers - ExPolygons raft_areas; - if (m_object->layer_count() > 0) { - const Layer *layer = m_object->layers().front(); - for (const ExPolygon &expoly : layer->lslices) { - raft_areas.push_back(expoly); - } - } - - if (m_object->support_layer_count() > m_raft_layers) { - const SupportLayer *ts_layer = m_object->get_support_layer(m_raft_layers); - for (const ExPolygon& expoly : ts_layer->floor_areas) - raft_areas.push_back(expoly); - for (const ExPolygon& expoly : ts_layer->roof_areas) - raft_areas.push_back(expoly); - for (const ExPolygon& expoly : ts_layer->base_areas) - raft_areas.push_back(expoly); - } - - raft_areas = std::move(offset_ex(raft_areas, scale_(object_config.raft_first_layer_expansion))); - - // generate raft tool path - if (m_raft_layers > 0) - { - ExtrusionRole raft_contour_er = m_slicing_params.base_raft_layers > 0 ? erSupportMaterial : erSupportMaterialInterface; - SupportLayer *ts_layer = m_object->support_layers().front(); - Flow flow = m_object->print()->brim_flow(); - - Polygons loops; - for (const ExPolygon& expoly : raft_areas) { - loops.push_back(expoly.contour); - loops.insert(loops.end(), expoly.holes.begin(), expoly.holes.end()); - } - extrusion_entities_append_loops(ts_layer->support_fills.entities, std::move(loops), raft_contour_er, - float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - raft_areas = offset_ex(raft_areas, -flow.scaled_spacing() / 2.); - } - - for (size_t layer_nr = 0; layer_nr < m_slicing_params.base_raft_layers; layer_nr++) { - SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); - coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); - - Flow support_flow = layer_nr == 0 ? m_object->print()->brim_flow() : Flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - Fill* filler_interface = Fill::new_from_type(ipRectilinear); - filler_interface->angle = layer_nr == 0 ? 90 : 0; - filler_interface->spacing = support_extrusion_width; - - FillParams fill_params; - fill_params.density = object_config.raft_first_layer_density * 0.01; - fill_params.dont_adjust = true; - - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(offset_ex(raft_areas, scale_(expand_offset))), - filler_interface, fill_params, erSupportMaterial, support_flow); - } - - for (size_t layer_nr = m_slicing_params.base_raft_layers; - layer_nr < m_slicing_params.base_raft_layers + m_slicing_params.interface_raft_layers; - layer_nr++) - { - SupportLayer *ts_layer = m_object->get_support_layer(layer_nr); - coordf_t expand_offset = (layer_nr == 0 ? 0. : -1.); - - Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - Fill* filler_interface = Fill::new_from_type(ipRectilinear); - filler_interface->angle = 0; - filler_interface->spacing = support_extrusion_width; - - FillParams fill_params; - fill_params.density = interface_density; - fill_params.dont_adjust = true; - - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(offset_ex(raft_areas, scale_(expand_offset))), - filler_interface, fill_params, erSupportMaterialInterface, support_flow); - } - - BoundingBox bbox_object(Point(-scale_(1.), -scale_(1.0)), Point(scale_(1.), scale_(1.))); - - std::shared_ptr filler_interface = std::shared_ptr(Fill::new_from_type(m_support_params.contact_fill_pattern)); - std::shared_ptr filler_Roof1stLayer = std::shared_ptr(Fill::new_from_type(ipRectilinear)); - filler_interface->set_bounding_box(bbox_object); - filler_Roof1stLayer->set_bounding_box(bbox_object); - filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value + 90.); - filler_Roof1stLayer->angle = Geometry::deg2rad(object_config.support_angle.value + 90.); - - // generate tree support tool paths - tbb::parallel_for( - tbb::blocked_range(m_raft_layers, m_object->support_layer_count()), - [&](const tbb::blocked_range& range) - { - for (size_t layer_id = range.begin(); layer_id < range.end(); layer_id++) { - if (m_object->print()->canceled()) - break; - - m_object->print()->set_status(70, (boost::format(_L("Support: generate toolpath at layer %d")) % layer_id).str()); - - SupportLayer* ts_layer = m_object->get_support_layer(layer_id); - Flow support_flow(support_extrusion_width, ts_layer->height, nozzle_diameter); - coordf_t support_spacing = object_config.support_base_pattern_spacing.value + support_flow.spacing(); - coordf_t support_density = std::min(1., support_flow.spacing() / support_spacing); - ts_layer->support_fills.no_sort = false; - - for (auto& area_group : ts_layer->area_groups) { - ExPolygon& poly = *area_group.area; - ExPolygons polys; - FillParams fill_params; - if (area_group.type != SupportLayer::BaseType) { - // interface - if (layer_id == 0) { - Flow flow = m_raft_layers == 0 ? m_object->print()->brim_flow() : support_flow; - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, wall_count, flow, - area_group.type == SupportLayer::RoofType ? erSupportMaterialInterface : erSupportMaterial); - polys = std::move(offset_ex(poly, -flow.scaled_spacing())); - } else if (area_group.type == SupportLayer::Roof1stLayer) { - polys = std::move(offset_ex(poly, 0.5*support_flow.scaled_width())); - } - else { - polys.push_back(poly); - } - fill_params.density = interface_density; - fill_params.dont_adjust = true; - } - if (area_group.type == SupportLayer::Roof1stLayer) { - // roof_1st_layer - fill_params.density = interface_density; - // Note: spacing means the separation between two lines as if they are tightly extruded - filler_Roof1stLayer->spacing = m_support_material_interface_flow.spacing(); - // generate a perimeter first to support interface better - ExtrusionEntityCollection* temp_support_fills = new ExtrusionEntityCollection(); - make_perimeter_and_infill(temp_support_fills->entities, *m_object->print(), poly, 1, m_support_material_interface_flow, erSupportMaterial, - filler_Roof1stLayer.get(), interface_density, false); - temp_support_fills->no_sort = true; // make sure loops are first - if (!temp_support_fills->entities.empty()) - ts_layer->support_fills.entities.push_back(temp_support_fills); - else - delete temp_support_fills; - } else if (area_group.type == SupportLayer::FloorType) { - // floor_areas - fill_params.density = bottom_interface_density; - filler_interface->spacing = m_support_material_interface_flow.spacing(); - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), - filler_interface.get(), fill_params, erSupportMaterialInterface, m_support_material_interface_flow); - } else if (area_group.type == SupportLayer::RoofType) { - // roof_areas - fill_params.density = interface_density; - filler_interface->spacing = m_support_material_interface_flow.spacing(); - if (m_object_config->support_interface_pattern == smipGrid) { - filler_interface->angle = Geometry::deg2rad(object_config.support_angle.value); - fill_params.dont_sort = true; - } - if (m_object_config->support_interface_pattern == smipRectilinearInterlaced) - filler_interface->layer_id = round(area_group.dist_to_top / ts_layer->height); - fill_expolygons_generate_paths(ts_layer->support_fills.entities, std::move(polys), filler_interface.get(), fill_params, erSupportMaterialInterface, - m_support_material_interface_flow); - } - else { - // base_areas - Flow flow = (layer_id == 0 && m_raft_layers == 0) ? m_object->print()->brim_flow() : support_flow; - bool need_infill = with_infill; - if(m_object_config->support_base_pattern==smpDefault) - need_infill &= area_group.need_infill; - if (layer_id>0 && area_group.dist_to_top < 10 && !need_infill && support_style!=smsTreeHybrid) { - if (area_group.dist_to_top < 5) // 1 wall at the top <5mm - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, 1, flow, erSupportMaterial); - else // at least 2 walls for range [5,10) - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, std::max(wall_count, size_t(2)), flow, erSupportMaterial); - } - else if (layer_id > 0 && need_infill && m_support_params.base_fill_pattern != ipLightning) { - std::shared_ptr filler_support = std::shared_ptr(Fill::new_from_type(m_support_params.base_fill_pattern)); - filler_support->set_bounding_box(bbox_object); - filler_support->spacing = object_config.support_base_pattern_spacing.value * support_density;// constant spacing to align support infill lines - filler_support->angle = Geometry::deg2rad(object_config.support_angle.value); - - // allow infill-only mode if support is thick enough (so min_wall_count is 0); - // otherwise must draw 1 wall - size_t min_wall_count = offset(poly, -scale_(support_spacing * 1.5)).empty() ? 1 : 0; - make_perimeter_and_infill(ts_layer->support_fills.entities, *m_object->print(), poly, std::max(min_wall_count, wall_count), flow, - erSupportMaterial, filler_support.get(), support_density); - } - else { - make_perimeter_and_inner_brim(ts_layer->support_fills.entities, poly, - layer_id > 0 ? wall_count : std::numeric_limits::max(), flow, erSupportMaterial); - } - - } - } - if (m_support_params.base_fill_pattern == ipLightning) - { - double print_z = ts_layer->print_z; - if (printZ_to_lightninglayer.find(print_z) == printZ_to_lightninglayer.end()) - continue; - //TODO: - //1.the second parameter of convertToLines seems to decide how long the lightning should be trimmed from its root, so that the root wont overlap/detach the support contour. - // whether current value works correctly remained to be tested - //2.related to previous one, that lightning roots need to be trimed more when support has multiple walls - //3.function connect_infill() and variable 'params' helps create connection pattern along contours between two lightning roots, - // strengthen lightnings while it may make support harder. decide to enable it or not. if yes, proper values for params are remained to be tested - auto& lightning_layer = generator->getTreesForLayer(printZ_to_lightninglayer[print_z]); - - Flow flow = (layer_id == 0 && m_raft_layers == 0) ? m_object->print()->brim_flow() :support_flow; - ExPolygons areas = offset_ex(ts_layer->base_areas, -flow.scaled_spacing()); - - for (auto& area : areas) - { - Polylines polylines = lightning_layer.convertToLines(to_polygons(area), 0); - for (auto itr = polylines.begin(); itr != polylines.end();) - { - if (itr->length() < scale_(1.0)) - itr = polylines.erase(itr); - else - itr++; - } - Polylines opt_polylines; -#if 1 - //this wont create connection patterns along contours - append(opt_polylines, chain_polylines(std::move(polylines))); -#else - //this will create connection patterns along contours - FillParams params; - params.anchor_length = float(Fill::infill_anchor * 0.01 * flow.spacing()); - params.anchor_length_max = Fill::infill_anchor_max; - params.anchor_length = std::min(params.anchor_length, params.anchor_length_max); - Fill::connect_infill(std::move(polylines), area, opt_polylines, flow.spacing(), params); -#endif - extrusion_entities_append_paths(ts_layer->support_fills.entities, opt_polylines, erSupportMaterial, - float(flow.mm3_per_mm()), float(flow.width()), float(flow.height())); - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - std::string name = "./SVG/trees_polyline_" + std::to_string(ts_layer->print_z) /*+ "_" + std::to_string(rand_num)*/ + ".svg"; - BoundingBox bbox = get_extents(ts_layer->base_areas); - SVG svg(name, bbox); - if (svg.is_opened()) { - svg.draw(ts_layer->base_areas, "blue"); - svg.draw(generator->Overhangs()[printZ_to_lightninglayer[print_z]], "red"); - for (auto &line : opt_polylines) svg.draw(line, "yellow"); - } -#endif - } - } - - // sort extrusions to reduce travel, also make sure walls go before infills - if(ts_layer->support_fills.no_sort==false) - chain_and_reorder_extrusion_entities(ts_layer->support_fills.entities); - } - } - ); -} - -Polygons TreeSupport::spanning_tree_to_polygon(const std::vector& spanning_trees, Polygons layer_contours, int layer_nr) -{ - Polygons polys; - auto& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; - for (MinimumSpanningTree mst : spanning_trees) { - std::vector points = mst.vertices(); - if (points.size() == 0) - continue; - std::map visited; - for (int i=0;i to_ignore; - for (int i = 0; i < points.size(); i++) { - if (visited[points[i]] == true) - continue; - - Polygon poly; - bool has_next = true; - Point pt1 = points[i]; - poly.points.push_back(pt1); - visited[pt1] = true; - - while (has_next) { - const std::vector& neighbours = mst.adjacent_nodes(pt1); - if (neighbours.empty()) - { - break; - } - - double min_ccw = std::numeric_limits::max(); - Point pt_selected = neighbours[0]; - has_next = false; - for (Point pt2 : neighbours) { - if (to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) { - auto iter = mst_line_x_layer_contour_cache.find({ pt1,pt2 }); - if (iter != mst_line_x_layer_contour_cache.end()) { - if (iter->second) - continue; - } - else { - Polylines pls; - pls.emplace_back(pt1, pt2); - Polylines pls_intersect = intersection_pl(pls, layer_contours); - mst_line_x_layer_contour_cache.insert({ {pt1, pt2}, !pls_intersect.empty() }); - mst_line_x_layer_contour_cache.insert({ {pt2, pt1}, !pls_intersect.empty() }); - if (!pls_intersect.empty()) - continue; - } - - if (poly.points.size() < 2 || visited[pt2]==false) - { - pt_selected = pt2; - has_next = true; - break; - } - double curr_ccw = pt2.ccw(pt1, poly.points.back()); - if (curr_ccw < min_ccw) - { - min_ccw = curr_ccw; - pt_selected = pt2; - has_next = true; - } - } - } - if (has_next) { - poly.points.push_back(pt_selected); - to_ignore.insert(Line(pt1, pt_selected)); - visited[pt_selected] = true; - pt1 = pt_selected; - } - } - polys.emplace_back(std::move(poly)); - } - } - return polys; -} - -Polygons TreeSupport::contact_nodes_to_polygon(const std::vector& contact_nodes, Polygons layer_contours, int layer_nr, std::vector& radiis, std::vector& is_interface) -{ - Polygons polys; - std::vector spanning_trees; - std::vector radiis_mtree; - std::vector is_interface_mtree; - // generate minimum spanning trees - { - std::map visited; - for (int i = 0; i < contact_nodes.size(); i++) - visited.emplace(contact_nodes[i], false); - std::unordered_set to_ignore; - - // generate minimum spaning trees - for (int i = 0; i < contact_nodes.size(); i++) { - Node* node = contact_nodes[i]; - if (visited[node]) - continue; - - std::vector points_to_mstree; - double radius = 0; - Point pt1 = node->position; - points_to_mstree.push_back(pt1); - visited[node] = true; - radius += node->radius; - - for (int j = i + 1; j < contact_nodes.size(); j++) { - Node* node2 = contact_nodes[j]; - Point pt2 = node2->position; - // connect to this neighbor if: - // 1) both are interface or both are not - // 3) not readly added - // 4) won't cross perimeters: this is not right since we need to check all possible connections - if ((node->support_roof_layers_below > 0) == (node2->support_roof_layers_below > 0) - && to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) - { - points_to_mstree.emplace_back(pt2); - visited[node2] = true; - radius += node2->radius; - } - } - - spanning_trees.emplace_back(points_to_mstree); - radiis_mtree.push_back(radius / points_to_mstree.size()); - is_interface_mtree.push_back(node->support_roof_layers_below > 0); - } - } - auto lines = spanning_tree_to_lines(spanning_trees); -#if 1 - // convert mtree to polygon - for (int k = 0; k < spanning_trees.size(); k++) { - auto& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; - MinimumSpanningTree mst = spanning_trees[k]; - std::vector points = mst.vertices(); - std::map visited; - for (int i = 0; i < points.size(); i++) - visited.emplace(points[i], false); - - std::unordered_set to_ignore; - for (int i = 0; i < points.size(); i++) { - if (visited[points[i]]) - continue; - - Polygon poly; - Point pt1 = points[i]; - poly.points.push_back(pt1); - visited[pt1] = true; - - bool has_next = true; - while (has_next) - { - const std::vector& neighbours = mst.adjacent_nodes(pt1); - double min_ccw = -std::numeric_limits::max(); - Point pt_selected; - has_next = false; - for (Point pt2 : neighbours) { - if (to_ignore.find(Line(pt1, pt2)) == to_ignore.end()) { - auto iter = mst_line_x_layer_contour_cache.find({ pt1,pt2 }); - if (iter != mst_line_x_layer_contour_cache.end()) { - if (iter->second) - continue; - } - else { - Polylines pls; - pls.emplace_back(pt1, pt2); - Polylines pls_intersect = intersection_pl(pls, layer_contours); - mst_line_x_layer_contour_cache.insert({ {pt1, pt2}, !pls_intersect.empty() }); - mst_line_x_layer_contour_cache.insert({ {pt2, pt1}, !pls_intersect.empty() }); - if (!pls_intersect.empty()) - continue; - } - if (poly.points.size() < 2) - { - pt_selected = pt2; - has_next = true; - break; - } - double curr_ccw = pt2.ccw(pt1, poly.points.rbegin()[1]); - if (curr_ccw > min_ccw) - { - has_next = true; - min_ccw = curr_ccw; - pt_selected = pt2; - } - } - } - if (!has_next) - break; - - poly.points.push_back(pt_selected); - to_ignore.insert(Line(pt1, pt_selected)); - visited[pt_selected] = true; - pt1 = pt_selected; - } - polys.emplace_back(std::move(poly)); - radiis.push_back(radiis_mtree[k]); - is_interface.push_back(is_interface_mtree[k]); - } - } -#else - polys = spanning_tree_to_polygon(spanning_trees, layer_contours, layer_nr, radiis); -#endif - return polys; -} - - -void TreeSupport::generate() -{ - bool tree_support_enable = m_object_config->enable_support.value && is_tree(m_object_config->support_type.value); - if (!tree_support_enable) - return; - - std::vector> contact_nodes(m_object->layers().size()); - - profiler.stage_start(STAGE_total); - - // Generate overhang areas - profiler.stage_start(STAGE_DETECT_OVERHANGS); - m_object->print()->set_status(55, _L("Support: detect overhangs")); - detect_overhangs(); - profiler.stage_finish(STAGE_DETECT_OVERHANGS); - - if (!has_overhangs) return; - - m_ts_data = m_object->alloc_tree_support_preview_cache(); - m_ts_data->is_slim = is_slim; - - // Generate contact points of tree support - profiler.stage_start(STAGE_GENERATE_CONTACT_NODES); - m_object->print()->set_status(56, _L("Support: generate contact points")); - generate_contact_points(contact_nodes); - profiler.stage_finish(STAGE_GENERATE_CONTACT_NODES); - - //Drop nodes to lower layers. - profiler.stage_start(STAGE_DROP_DOWN_NODES); - m_object->print()->set_status(60, _L("Support: propagate branches")); - drop_nodes(contact_nodes); - profiler.stage_finish(STAGE_DROP_DOWN_NODES); - - smooth_nodes(contact_nodes); - -if (!m_object->config().tree_support_adaptive_layer_height) - // Adjust support layer heights - adjust_layer_heights(contact_nodes); - - - //Generate support areas. - profiler.stage_start(STAGE_DRAW_CIRCLES); - m_object->print()->set_status(65, _L("Support: draw polygons")); - draw_circles(contact_nodes); - profiler.stage_finish(STAGE_DRAW_CIRCLES); - - for (auto& layer : contact_nodes) - { - for (Node* p_node : layer) - { - delete p_node; - } - layer.clear(); - } - contact_nodes.clear(); - - profiler.stage_start(STAGE_GENERATE_TOOLPATHS); - m_object->print()->set_status(69, _L("Support: generate toolpath")); - generate_toolpaths(); - profiler.stage_finish(STAGE_GENERATE_TOOLPATHS); - - profiler.stage_finish(STAGE_total); - BOOST_LOG_TRIVIAL(info) << "tree support time " << profiler.report(); -} - -coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor) -{ - double radius; - if (!is_slim) { - if ((layers_to_top + 1) > tip_layers) { - radius = base_radius + base_radius * (layers_to_top + 1) * diameter_angle_scale_factor; - } else { - radius = base_radius * (layers_to_top + 1) / tip_layers; - } - } else { - if ((layers_to_top + 1) > tip_layers * 2) { - radius = base_radius + base_radius * (layers_to_top + 1) * diameter_angle_scale_factor; - } else { - radius = base_radius * (layers_to_top + 1) / (tip_layers * 2); - } - radius = std::max(radius, MIN_BRANCH_RADIUS); - } - radius = std::min(radius, MAX_BRANCH_RADIUS); - return radius; -} - -coordf_t TreeSupport::calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor) -{ - double radius; - coordf_t tip_height = base_radius;// this is a 45 degree tip - if (mm_to_top > tip_height) - { - radius = base_radius + (mm_to_top-tip_height) * diameter_angle_scale_factor; - } - else - { - radius = mm_to_top;// this is a 45 degree tip - } - - radius = std::max(radius, MIN_BRANCH_RADIUS); - radius = std::min(radius, MAX_BRANCH_RADIUS); - // if have interface layers, radius should be larger - if (m_object_config->support_interface_top_layers.value > 0) - radius = std::max(radius, base_radius); - return radius; -} - -template // RegionType could be ExPolygons or Polygons -ExPolygons avoid_object_remove_extra_small_parts(ExPolygons &expolys, const RegionType&avoid_region) { - ExPolygons expolys_out; - for (auto expoly : expolys) { - auto expolys_avoid = diff_ex(expoly, avoid_region); - int idx_max_area = -1; - float max_area = 0; - for (int i = 0; i < expolys_avoid.size(); ++i) { - auto a = expolys_avoid[i].area(); - if (a > max_area) { - max_area = a; - idx_max_area = i; - } - } - if (idx_max_area >= 0) expolys_out.emplace_back(std::move(expolys_avoid[idx_max_area])); - } - return expolys_out; -} - -Polygons TreeSupport::get_trim_support_regions( - const PrintObject& object, - SupportLayer* support_layer_ptr, - const coordf_t gap_extra_above, - const coordf_t gap_extra_below, - const coordf_t gap_xy) -{ - static const double sharp_tail_xy_gap = 0.2f; - static const double no_overlap_xy_gap = 0.2f; - double gap_xy_scaled = scale_(gap_xy); - SupportLayer& support_layer = *support_layer_ptr; - auto m_print_config = object.print()->config(); - - size_t idx_object_layer_overlapping = size_t(-1); - - auto is_layers_overlap = [](const SupportLayer& support_layer, const Layer& object_layer, coordf_t bridging_height = 0.f) -> bool { - if (std::abs(support_layer.print_z - object_layer.print_z) < EPSILON) - return true; - - coordf_t object_lh = bridging_height > EPSILON ? bridging_height : object_layer.height; - if (support_layer.print_z < object_layer.print_z && support_layer.print_z > object_layer.print_z - object_lh) - return true; - - if (support_layer.print_z > object_layer.print_z && support_layer.bottom_z() < object_layer.print_z - EPSILON) - return true; - - return false; - }; - - // Find the overlapping object layers including the extra above / below gap. - coordf_t z_threshold = support_layer.bottom_z() - gap_extra_below + EPSILON; - idx_object_layer_overlapping = Layer::idx_higher_or_equal( - object.layers().begin(), object.layers().end(), idx_object_layer_overlapping, - [z_threshold](const Layer* layer) { return layer->print_z >= z_threshold; }); - // Collect all the object layers intersecting with this layer. - Polygons polygons_trimming; - size_t i = idx_object_layer_overlapping; - for (; i < object.layers().size(); ++i) { - const Layer& object_layer = *object.layers()[i]; - if (object_layer.bottom_z() > support_layer.print_z + gap_extra_above - EPSILON) - break; - - bool is_overlap = is_layers_overlap(support_layer, object_layer); - for (const ExPolygon& expoly : object_layer.lslices) { - // BBS - bool is_sharptail = !intersection_ex({ expoly }, object_layer.sharp_tails).empty(); - coordf_t trimming_offset = is_sharptail ? scale_(sharp_tail_xy_gap) : - is_overlap ? gap_xy_scaled : - scale_(no_overlap_xy_gap); - polygons_append(polygons_trimming, offset({ expoly }, trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - } - } - if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - // Collect all bottom surfaces, which will be extruded with a bridging flow. - for (; i < object.layers().size(); ++i) { - const Layer& object_layer = *object.layers()[i]; - bool some_region_overlaps = false; - for (LayerRegion* region : object_layer.regions()) { - coordf_t bridging_height = region->region().bridging_height_avg(m_print_config); - if (object_layer.print_z - bridging_height > support_layer.print_z + gap_extra_above - EPSILON) - break; - some_region_overlaps = true; - - bool is_overlap = is_layers_overlap(support_layer, object_layer, bridging_height); - coordf_t trimming_offset = is_overlap ? gap_xy_scaled : scale_(no_overlap_xy_gap); - polygons_append(polygons_trimming, - offset(region->fill_surfaces.filter_by_type(stBottomBridge), trimming_offset, SUPPORT_SURFACES_OFFSET_PARAMETERS)); - } - if (!some_region_overlaps) - break; - } - } - - return polygons_trimming; -} - -void TreeSupport::draw_circles(const std::vector>& contact_nodes) -{ - const PrintObjectConfig &config = m_object->config(); - const Print* print = m_object->print(); - bool has_brim = print->has_brim(); - int bottom_gap_layers = round(m_slicing_params.gap_object_support / m_slicing_params.layer_height); - const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2; - const coordf_t branch_radius_scaled = scale_(branch_radius); - bool on_buildplate_only = config.support_on_build_plate_only.value; - Polygon branch_circle; //Pre-generate a circle with correct diameter so that we don't have to recompute those (co)sines every time. - - // Use square support if there are too many nodes per layer because circle support needs much longer time to compute - // Hower circle support can be printed faster, so we prefer circle for fewer nodes case. - const bool SQUARE_SUPPORT = avg_node_per_layer > 200; - const int CIRCLE_RESOLUTION = SQUARE_SUPPORT ? 4 : 100; // The number of vertices in each circle. - - - for (int i = 0; i < CIRCLE_RESOLUTION; i++) - { - double angle; - if (SQUARE_SUPPORT) - angle = (double) i / CIRCLE_RESOLUTION * TAU + PI / 4.0 + nodes_angle; - else - angle = (double) i / CIRCLE_RESOLUTION * TAU; - branch_circle.append(Point(cos(angle) * branch_radius_scaled, sin(angle) * branch_radius_scaled)); - } - - // Performance optimization. Only generate lslices for brim and skirt. - size_t brim_skirt_layers = has_brim ? 1 : 0; - const PrintConfig& print_config = print->config(); - for (const PrintObject* object : print->objects()) - { - size_t skirt_layers = print->has_infinite_skirt() ? object->layer_count() : std::min(size_t(print_config.skirt_height.value), object->layer_count()); - brim_skirt_layers = std::max(brim_skirt_layers, skirt_layers); - } - - // generate areas - const coordf_t layer_height = config.layer_height.value; - const size_t top_interface_layers = config.support_interface_top_layers.value; - const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; - const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle * M_PI / 180.);// * layer_height / branch_radius; //Scale factor per layer to produce the desired angle. - const double nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(0); - const coordf_t line_width = config.get_abs_value("support_line_width", nozzle_diameter); - const coordf_t line_width_scaled = scale_(line_width); - - const bool with_lightning_infill = m_support_params.base_fill_pattern == ipLightning; - coordf_t support_extrusion_width = m_support_params.support_extrusion_width; - const size_t wall_count = config.tree_support_wall_count.value; - - const PrintObjectConfig& object_config = m_object->config(); - BOOST_LOG_TRIVIAL(info) << "draw_circles for object: " << m_object->model_object()->name; - - // coconut: previously std::unordered_map in m_collision_cache is not multi-thread safe which may cause programs stuck, here we change to tbb::concurrent_unordered_map - tbb::parallel_for( - tbb::blocked_range(0, m_object->layer_count()), - [&](const tbb::blocked_range& range) - { - for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) - { - if (print->canceled()) - break; - - const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - assert(ts_layer != nullptr); - - // skip if current layer has no points. This fixes potential crash in get_collision (see jira BBL001-355) - if (curr_layer_nodes.empty()) { - ts_layer->print_z = 0.0; - ts_layer->height = 0.0; - continue; - } - - Node* first_node = curr_layer_nodes.front(); - ts_layer->print_z = first_node->print_z; - ts_layer->height = first_node->height; - if (ts_layer->height < EPSILON) { - continue; - } - - ExPolygons& base_areas = ts_layer->base_areas; - ExPolygons& roof_areas = ts_layer->roof_areas; - ExPolygons& roof_1st_layer = ts_layer->roof_1st_layer; - ExPolygons& floor_areas = ts_layer->floor_areas; - ExPolygons& roof_gap_areas = ts_layer->roof_gap_areas; - coordf_t max_layers_above_base = 0; - coordf_t max_layers_above_roof = 0; - coordf_t max_layers_above_roof1 = 0; - bool has_polygon_node = false; - bool has_circle_node = false; - - BOOST_LOG_TRIVIAL(debug) << "circles at layer " << layer_nr << " contact nodes size=" << contact_nodes[layer_nr].size(); - //Draw the support areas and add the roofs appropriately to the support roof instead of normal areas. - ts_layer->lslices.reserve(contact_nodes[layer_nr].size()); - for (const Node* p_node : contact_nodes[layer_nr]) - { - if (print->canceled()) - break; - - const Node& node = *p_node; - ExPolygons area; - // Generate directly from overhang polygon if one of the following is true: - // 1) node is a normal part of hybrid support - // 2) node is virtual - if (node.type == ePolygon || node.distance_to_top<0) { - if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1) - area.emplace_back(*node.overhang); - else { - area = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance)); - } - if (node.type == ePolygon) - has_polygon_node = true; - } - else { - Polygon circle; - size_t layers_to_top = node.distance_to_top; - double scale = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor) / branch_radius; - - if (/*is_slim*/1) { // draw ellipse along movement direction - double moveX = node.movement.x() / (scale * branch_radius_scaled); - double moveY = node.movement.y() / (scale * branch_radius_scaled); - const double vsize_inv = 0.5 / (0.01 + std::sqrt(moveX * moveX + moveY * moveY)); - double matrix[2*2] = { - scale * (1 + moveX * moveX * vsize_inv),scale * (0 + moveX * moveY * vsize_inv), - scale * (0 + moveX * moveY * vsize_inv),scale * (1 + moveY * moveY * vsize_inv), - }; - for (auto vertex: branch_circle.points) { - vertex = Point(matrix[0] * vertex.x() + matrix[1] * vertex.y(), matrix[2] * vertex.x() + matrix[3] * vertex.y()); - circle.append(node.position + vertex); - } - } else { - for (auto iter = branch_circle.points.begin(); iter != branch_circle.points.end(); iter++) { - Point corner = (*iter) * scale; - circle.append(node.position + corner); - } - } - if (layer_nr == 0 && m_raft_layers == 0) { - double brim_width = - config.tree_support_auto_brim - ? layers_to_top * layer_height / - (scale * branch_radius) * 0.5 - : config.tree_support_brim_width; - circle = offset(circle, scale_(brim_width))[0]; - } - area.emplace_back(ExPolygon(circle)); - // merge overhang to get a smoother interface surface - // Do not merge when buildplate_only is on, because some underneath nodes may have been deleted. - if (top_interface_layers > 0 && node.support_roof_layers_below > 0 && !on_buildplate_only) { - ExPolygons overhang_expanded; - if (node.overhang->contour.size() > 100 || node.overhang->holes.size()>1) - overhang_expanded.emplace_back(*node.overhang); - else { - // 对于有缺陷的模型,overhang膨胀以后可能是空的! - overhang_expanded = offset_ex({ *node.overhang }, scale_(m_ts_data->m_xy_distance)); - } - append(area, overhang_expanded); - } - has_circle_node = true; - } - - if (node.distance_to_top < 0) - append(roof_gap_areas, area); - else if (node.support_roof_layers_below == 1) - { - append(roof_1st_layer, area); - max_layers_above_roof1 = std::max(max_layers_above_roof1, node.dist_mm_to_top); - } - else if (node.support_roof_layers_below > 0) - { - append(roof_areas, area); - max_layers_above_roof = std::max(max_layers_above_roof, node.dist_mm_to_top); - } - else - { - append(base_areas, area); - max_layers_above_base = std::max(max_layers_above_base, node.dist_mm_to_top); - } - - if (layer_nr < brim_skirt_layers) - append(ts_layer->lslices, area); - } - - ts_layer->lslices = std::move(union_ex(ts_layer->lslices)); - - //Must update bounding box which is used in avoid crossing perimeter - ts_layer->lslices_bboxes.clear(); - ts_layer->lslices_bboxes.reserve(ts_layer->lslices.size()); - for (const ExPolygon &expoly : ts_layer->lslices) - ts_layer->lslices_bboxes.emplace_back(get_extents(expoly)); - ts_layer->backup_untyped_slices(); - - m_object->print()->set_status(65, (boost::format( _L("Support: generate polygons at layer %d")) % layer_nr).str()); - - // join roof segments - double contact_dist_scaled = scale_(0.5);// scale_(m_slicing_params.gap_support_object); - roof_areas = std::move(offset2_ex(roof_areas, contact_dist_scaled, -contact_dist_scaled)); - roof_1st_layer = std::move(offset2_ex(roof_1st_layer, contact_dist_scaled, -contact_dist_scaled)); - - // avoid object - //ExPolygons avoid_region_interface = m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr); - Polygons avoid_region_interface = get_trim_support_regions(*m_object, ts_layer, m_slicing_params.gap_object_support, m_slicing_params.gap_support_object, m_ts_data->m_xy_distance); - if (has_circle_node) { - roof_areas = avoid_object_remove_extra_small_parts(roof_areas, avoid_region_interface); - roof_1st_layer = avoid_object_remove_extra_small_parts(roof_1st_layer, avoid_region_interface); - } - else { - roof_areas = std::move(diff_ex(roof_areas, avoid_region_interface)); - roof_1st_layer = std::move(diff_ex(roof_1st_layer, avoid_region_interface)); - } - roof_areas = intersection_ex(roof_areas, m_machine_border); - - // roof_1st_layer and roof_areas may intersect, so need to subtract roof_areas from roof_1st_layer - roof_1st_layer = std::move(diff_ex(roof_1st_layer, roof_areas)); - roof_1st_layer = intersection_ex(roof_1st_layer, m_machine_border); - - // let supports touch objects when brim is on - auto avoid_region = m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr); - base_areas = avoid_object_remove_extra_small_parts(base_areas, avoid_region); - base_areas = std::move(diff_ex(base_areas, roof_areas)); - base_areas = std::move(diff_ex(base_areas, roof_1st_layer)); - base_areas = std::move(diff_ex(base_areas, roof_gap_areas)); - base_areas = intersection_ex(base_areas, m_machine_border); - - if (SQUARE_SUPPORT) { - // simplify support contours - ExPolygons base_areas_simplified; - for (auto &area : base_areas) { area.simplify(scale_(line_width / 2), &base_areas_simplified); } - base_areas = std::move(base_areas_simplified); - } - //Subtract support floors. We can only compute floor_areas here instead of with roof_areas, - // or we'll get much wider floor than necessary. - if (bottom_interface_layers + bottom_gap_layers > 0) - { - if (layer_nr >= bottom_interface_layers + bottom_gap_layers) - { - for (size_t i = 0; i <= bottom_gap_layers; i++) - { - const Layer* below_layer = m_object->get_layer(layer_nr - bottom_interface_layers - i); - ExPolygons bottom_interface = intersection_ex(base_areas, below_layer->lslices); - floor_areas.insert(floor_areas.end(), bottom_interface.begin(), bottom_interface.end()); - } - } - if (floor_areas.empty() == false) { - floor_areas = std::move(diff_ex(floor_areas, avoid_region_interface)); - floor_areas = std::move(offset2_ex(floor_areas, contact_dist_scaled, -contact_dist_scaled)); - base_areas = std::move(diff_ex(base_areas, offset_ex(floor_areas, 10))); - } - } - if (bottom_gap_layers > 0 && layer_nr > bottom_gap_layers) { - const Layer* below_layer = m_object->get_layer(layer_nr - bottom_gap_layers); - ExPolygons bottom_gap_area = intersection_ex(floor_areas, below_layer->lslices); - if (!bottom_gap_area.empty()) { - floor_areas = std::move(diff_ex(floor_areas, bottom_gap_area)); - } - } - auto &area_groups = ts_layer->area_groups; - for (auto& area : ts_layer->base_areas) { - area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); - area_groups.back().need_infill = has_polygon_node; - } - for (auto &area : ts_layer->roof_areas) area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); - for (auto &area : ts_layer->floor_areas) area_groups.emplace_back(&area, SupportLayer::FloorType, 10000); - for (auto &area : ts_layer->roof_1st_layer) area_groups.emplace_back(&area, SupportLayer::Roof1stLayer, max_layers_above_roof1); - - for (auto &area_group : area_groups) { - auto& expoly = area_group.area; - expoly->holes.erase(std::remove_if(expoly->holes.begin(), expoly->holes.end(), - [](auto &hole) { - auto bbox_size = get_extents(hole).size(); - return bbox_size[0] < scale_(2) && bbox_size[1] < scale_(2); - }), - expoly->holes.end()); - } - - } - }); - - - if (with_lightning_infill) - { - const bool global_lightning_infill = true; - - std::vector contours; - std::vector overhangs; - for (int layer_nr = 1; layer_nr < m_object->layer_count(); layer_nr++) { - if (print->canceled()) break; - const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - assert(ts_layer != nullptr); - - // skip if current layer has no points. This fixes potential crash in get_collision (see jira BBL001-355) - if (curr_layer_nodes.empty()) continue; - if (ts_layer->height < EPSILON) continue; - if (ts_layer->area_groups.empty()) continue; - - ExPolygons& base_areas = ts_layer->base_areas; - - int layer_nr_lower = layer_nr - 1; - for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { - if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; - } - if (layer_nr_lower <= 0) continue; - - SupportLayer* lower_layer = m_object->get_support_layer(layer_nr_lower + m_raft_layers); - ExPolygons& base_areas_lower = lower_layer->base_areas; - - ExPolygons overhang; - if (global_lightning_infill) - { - //search overhangs globally - overhang = std::move(diff_ex(offset_ex(base_areas_lower, -2.0 * scale_(support_extrusion_width)), base_areas)); - } - else - { - //search overhangs only on floating islands - for (auto& base_area : base_areas) - for (auto& hole : base_area.holes) - { - Polygon rev_hole = hole; - rev_hole.make_counter_clockwise(); - ExPolygons ex_hole; - ex_hole.emplace_back(std::move(ExPolygon(rev_hole))); - for (auto& other_area : base_areas) - //if (&other_area != &base_area) - ex_hole = std::move(diff_ex(ex_hole, other_area)); - overhang = std::move(union_ex(overhang, ex_hole)); - } - overhang = std::move(intersection_ex(overhang, offset_ex(base_areas_lower, -0.5 * scale_(support_extrusion_width)))); - } - - overhangs.emplace_back(to_polygons(overhang)); - contours.emplace_back(to_polygons(base_areas_lower)); - printZ_to_lightninglayer[lower_layer->print_z] = overhangs.size() - 1; - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - draw_two_overhangs_to_svg(m_object->get_support_layer(layer_nr_lower + m_raft_layers), base_areas_lower, to_expolygons(overhangs.back())); -#endif - } - - - auto m_support_material_flow = support_material_flow(m_object, m_slicing_params.layer_height); - coordf_t support_spacing = object_config.support_base_pattern_spacing.value + m_support_material_flow.spacing(); - coordf_t support_density = std::min(1., m_support_material_flow.spacing() / support_spacing * 2); // for lightning infill the density is defined differently, so need to double it - generator = std::make_unique(m_object, contours, overhangs, []() {}, support_density); - } - - else if (!with_infill) { - // move the holes to contour so they can be well supported - - // check if poly's contour intersects with expoly's contour - auto intersects_contour = [](Polygon poly, ExPolygon expoly, Point& pt_on_poly, Point& pt_on_expoly, Point& pt_far_on_poly, float dist_thresh = 0.01) { - float min_dist = std::numeric_limits::max(); - float max_dist = 0; - for (auto from : poly.points) { - for (int i = 0; i < expoly.num_contours(); i++) { - const Point* candidate = expoly.contour_or_hole(i).closest_point(from); - double dist2 = vsize2_with_unscale(*candidate - from); - if (dist2 < min_dist) { - min_dist = dist2; - pt_on_poly = from; - pt_on_expoly = *candidate; - } - if (dist2 > max_dist) { - max_dist = dist2; - pt_far_on_poly = from; - } - if (dist2 < dist_thresh) { return true; } - } - } - return false; - }; - - // polygon pointer: depth, direction, farPoint - std::map> holePropagationInfos; - for (int layer_nr = m_object->layer_count() - 1; layer_nr > 0; layer_nr--) { - if (print->canceled()) break; - m_object->print()->set_status(66, (boost::format(_L("Support: fix holes at layer %d")) % layer_nr).str()); - - const std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - assert(ts_layer != nullptr); - - // skip if current layer has no points. This fixes potential crash in get_collision (see jira BBL001-355) - if (curr_layer_nodes.empty()) continue; - if (ts_layer->height < EPSILON) continue; - if (ts_layer->area_groups.empty()) continue; - - int layer_nr_lower = layer_nr - 1; - for (layer_nr_lower; layer_nr_lower >= 0; layer_nr_lower--) { - if (!m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups.empty()) break; - } - if (layer_nr_lower < 0) continue; - auto& area_groups_lower = m_object->get_support_layer(layer_nr_lower + m_raft_layers)->area_groups; - - for (const auto& area_group : ts_layer->area_groups) { - if (area_group.type != SupportLayer::BaseType) continue; - const auto& area = area_group.area; - for (const auto& hole : area->holes) { - // auto hole_bbox = get_extents(hole).polygon(); - for (auto& area_group_lower : area_groups_lower) { - if (area_group.type != SupportLayer::BaseType) continue; - auto& base_area_lower = *area_group_lower.area; - Point pt_on_poly, pt_on_expoly, pt_far_on_poly; - // if a hole doesn't intersect with lower layer's contours, add a hole to lower layer and move it slightly to the contour - if (base_area_lower.contour.contains(hole.points.front()) && !intersects_contour(hole, base_area_lower, pt_on_poly, pt_on_expoly, pt_far_on_poly)) { - Polygon hole_lower = hole; - Point direction = normal(pt_on_expoly - pt_on_poly, line_width_scaled / 2); - hole_lower.translate(direction); - // note to expand a hole, we need to do negative offset - auto hole_expanded = offset(hole_lower, -line_width_scaled / 4, ClipperLib::JoinType::jtSquare); - if (!hole_expanded.empty()) { - base_area_lower.holes.push_back(std::move(hole_expanded[0])); - holePropagationInfos.insert({ &base_area_lower.holes.back(), {25, direction, pt_far_on_poly} }); - } - break; - } - else if (holePropagationInfos.find(&hole) != holePropagationInfos.end() && std::get<0>(holePropagationInfos[&hole]) > 0 && - base_area_lower.contour.contains(std::get<2>(holePropagationInfos[&hole]))) { - Polygon hole_lower = hole; - auto&& direction = std::get<1>(holePropagationInfos[&hole]); - hole_lower.translate(direction); - // note to shrink a hole, we need to do positive offset - auto hole_expanded = offset(hole_lower, line_width_scaled / 2, ClipperLib::JoinType::jtSquare); - Point farPoint = std::get<2>(holePropagationInfos[&hole]) + direction * 2; - if (!hole_expanded.empty()) { - base_area_lower.holes.push_back(std::move(hole_expanded[0])); - holePropagationInfos.insert({ &base_area_lower.holes.back(), {std::get<0>(holePropagationInfos[&hole]) - 1, direction, farPoint} }); - } - break; - } - } - { - // if roof1 interface is inside a hole, need to expand the interface - for (auto& roof1 : ts_layer->roof_1st_layer) { - //if (hole.contains(roof1.contour.points.front()) && hole.contains(roof1.contour.bounding_box().center())) - bool is_inside_hole = std::all_of(roof1.contour.points.begin(), roof1.contour.points.end(), [&hole](Point& pt) { return hole.contains(pt); }); - if (is_inside_hole) { - Polygon hole_reoriented = hole; - if (roof1.contour.is_counter_clockwise()) - hole_reoriented.make_counter_clockwise(); - else if (roof1.contour.is_clockwise()) - hole_reoriented.make_clockwise(); - auto tmp = union_({ roof1.contour }, { hole_reoriented }); - if (!tmp.empty()) roof1.contour = tmp[0]; - - // make sure 1) roof1 and object 2) roof1 and roof, won't intersect - // Note: We can't replace roof1 directly, as we have recorded its address. - // So instead we need to replace its members one by one. - auto tmp1 = diff_ex(roof1, m_ts_data->get_collision((layer_nr == 0 && has_brim) ? config.brim_object_gap : m_ts_data->m_xy_distance, layer_nr)); - tmp1 = diff_ex(tmp1, ts_layer->roof_areas); - if (!tmp1.empty()) { - roof1.contour = std::move(tmp1[0].contour); - roof1.holes = std::move(tmp1[0].holes); - } - break; - } - } - } - } - } - } - } - - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - for (int layer_nr = m_object->layer_count() - 1; layer_nr >= 0; layer_nr--) { - SupportLayer* ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - ExPolygons& base_areas = ts_layer->base_areas; - ExPolygons& roof_areas = ts_layer->roof_areas; - ExPolygons& roof_1st_layer = ts_layer->roof_1st_layer; - ExPolygons& floor_areas = ts_layer->floor_areas; - if (base_areas.empty() && roof_areas.empty() && roof_1st_layer.empty()) continue; - char fname[10]; sprintf(fname, "%d_%.2f", layer_nr, ts_layer->print_z); - draw_contours_and_nodes_to_svg("", base_areas, roof_areas, roof_1st_layer, {}, {}, get_svg_filename(fname, "circles"), {"base", "roof", "roof1st"}); - } -#endif // SUPPORT_TREE_DEBUG_TO_SVG - - SupportLayerPtrs& ts_layers = m_object->support_layers(); - auto iter = std::remove_if(ts_layers.begin(), ts_layers.end(), [](SupportLayer* ts_layer) { return ts_layer->height < EPSILON; }); - ts_layers.erase(iter, ts_layers.end()); - for (int layer_nr = 0; layer_nr < ts_layers.size(); layer_nr++) { - ts_layers[layer_nr]->upper_layer = layer_nr != ts_layers.size() - 1 ? ts_layers[layer_nr + 1] : nullptr; - ts_layers[layer_nr]->lower_layer = layer_nr > 0 ? ts_layers[layer_nr - 1] : nullptr; - } -} - -void TreeSupport::drop_nodes(std::vector>& contact_nodes) -{ - const PrintObjectConfig &config = m_object->config(); - // Use Minimum Spanning Tree to connect the points on each layer and move them while dropping them down. - const coordf_t support_extrusion_width = m_support_params.support_extrusion_width; - const coordf_t layer_height = config.layer_height.value; - const double angle = config.tree_support_branch_angle.value * M_PI / 180.; - const int wall_count = std::max(1, config.tree_support_wall_count.value); - double tan_angle = tan(angle); // when nodes are thick, they can move further. this is the max angle - const coordf_t max_move_distance = (angle < M_PI / 2) ? (coordf_t)(tan_angle * layer_height)*wall_count : std::numeric_limits::max(); - const double max_move_distance2 = max_move_distance * max_move_distance; - const coordf_t branch_radius = config.tree_support_branch_diameter.value / 2; - const size_t tip_layers = branch_radius / layer_height; //The number of layers to be shrinking the circle to create a tip. This produces a 45 degree angle. - const double diameter_angle_scale_factor = tan(tree_support_branch_diameter_angle * M_PI / 180.);//*layer_height / branch_radius; // Scale factor per layer to produce the desired angle. - const coordf_t radius_sample_resolution = m_ts_data->m_radius_sample_resolution; - const bool support_on_buildplate_only = config.support_on_build_plate_only.value; - const size_t bottom_interface_layers = config.support_interface_bottom_layers.value; - const size_t top_interface_layers = config.support_interface_top_layers.value; - float DO_NOT_MOVER_UNDER_MM = is_slim ? 0 : 5; // do not move contact points under 5mm - const auto nozzle_diameter = m_object->print()->config().nozzle_diameter.get_at(m_object->config().support_interface_filament-1); - const auto support_line_width = config.support_line_width.get_abs_value(nozzle_diameter); - - auto get_branch_angle = [this,&config](coordf_t radius) { - if (config.tree_support_branch_angle.value < 30.0) return config.tree_support_branch_angle.value; - return (radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; - }; - auto get_max_move_dist = [this, &config, branch_radius, tip_layers, diameter_angle_scale_factor, wall_count, support_extrusion_width, support_line_width](const Node *node, int power = 1) { - double move_dist = node->max_move_dist; - if (node->max_move_dist == 0) { - if (node->radius == 0) node->radius = calc_branch_radius(branch_radius, node->dist_mm_to_top, diameter_angle_scale_factor); - double angle = config.tree_support_branch_angle.value; - if (angle > 30.0 && node->radius > MIN_BRANCH_RADIUS) - angle = (node->radius - MIN_BRANCH_RADIUS) / (MAX_BRANCH_RADIUS - MIN_BRANCH_RADIUS) * (config.tree_support_branch_angle.value - 30.0) + 30.0; - double tan_angle = tan(angle * M_PI / 180); - int wall_count_ = node->radius > 2 * support_line_width ? wall_count : 1; - node->max_move_dist = (angle < 90) ? (coordf_t) (tan_angle * node->height) * wall_count_ : std::numeric_limits::max(); - node->max_move_dist = std::min(node->max_move_dist, support_extrusion_width); - move_dist = node->max_move_dist; - } - if (power == 2) move_dist = SQ(move_dist); - return move_dist; - }; - - m_ts_data->layer_heights = plan_layer_heights(contact_nodes); - std::vector &layer_heights = m_ts_data->layer_heights; - if (layer_heights.empty()) return; - - std::unordered_set to_free_node_set; - m_spanning_trees.resize(contact_nodes.size()); - //m_mst_line_x_layer_contour_caches.resize(contact_nodes.size()); - - if (0) - {// get outlines below and avoidance area using tbb - // This part only takes very little time, so we disable it. - typedef std::chrono::high_resolution_clock clock_; - typedef std::chrono::duration > second_; - std::chrono::time_point t0{ clock_::now() }; - - // get all the possible radiis - std::vector > all_layer_radius(m_highest_overhang_layer+1); - std::vector> all_layer_node_dist(m_highest_overhang_layer + 1); - for (size_t layer_nr = m_highest_overhang_layer; layer_nr > 0; layer_nr--) - { - if (layer_heights[layer_nr].height < EPSILON) continue; - auto& layer_radius = all_layer_radius[layer_nr]; - auto& layer_node_dist = all_layer_node_dist[layer_nr]; - for (Node *p_node : contact_nodes[layer_nr]) { - layer_node_dist.emplace(p_node->dist_mm_to_top); - } - size_t layer_nr_next = layer_heights[layer_nr].next_layer_nr; - if (layer_nr_next <= m_highest_overhang_layer && layer_nr_next>0) { - for (auto node_dist : layer_node_dist) - all_layer_node_dist[layer_nr_next].emplace(node_dist + layer_heights[layer_nr].height); - } - for (auto node_dist : layer_node_dist) { - layer_radius.emplace(calc_branch_radius(branch_radius, node_dist, diameter_angle_scale_factor)); - } - } - // parallel pre-compute avoidance - //tbb::parallel_for(tbb::blocked_range(1, m_highest_overhang_layer), [&](const tbb::blocked_range &range) { - //for (size_t layer_nr = range.begin(); layer_nr < range.end(); layer_nr++) { - for (size_t layer_nr = 0; layer_nr < all_layer_radius.size(); layer_nr++) { - BOOST_LOG_TRIVIAL(debug) << "pre calculate_avoidance layer=" << layer_nr; - for (auto node_radius : all_layer_radius[layer_nr]) { - m_ts_data->get_avoidance(0, layer_nr); - m_ts_data->get_avoidance(node_radius, layer_nr); - } - } - //}); - - double duration{ std::chrono::duration_cast(clock_::now() - t0).count() }; - BOOST_LOG_TRIVIAL(debug) << "before m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size() - << ", takes " << duration << " secs."; - } - - for (size_t layer_nr = contact_nodes.size() - 1; layer_nr > 0; layer_nr--) // Skip layer 0, since we can't drop down the vertices there. - { - if (m_object->print()->canceled()) - break; - - auto& layer_contact_nodes = contact_nodes[layer_nr]; - if (layer_contact_nodes.empty()) - continue; - - int layer_nr_next = layer_heights[layer_nr].next_layer_nr; - coordf_t print_z_next = layer_heights[layer_nr_next].print_z; - coordf_t height_next = layer_heights[layer_nr_next].height; - - std::deque> unsupported_branch_leaves; // All nodes that are leaves on this layer that would result in unsupported ('mid-air') branches. - const Layer* ts_layer = m_object->get_support_layer(layer_nr); - - m_object->print()->set_status(60, (boost::format(_L("Support: propagate branches at layer %d")) % layer_nr).str()); - - Polygons layer_contours = m_ts_data->get_contours_with_holes(layer_nr); - //std::unordered_map& mst_line_x_layer_contour_cache = m_mst_line_x_layer_contour_caches[layer_nr]; - std::unordered_map mst_line_x_layer_contour_cache; - auto is_line_cut_by_contour = [&mst_line_x_layer_contour_cache,&layer_contours](Point a, Point b) - { - auto iter = mst_line_x_layer_contour_cache.find({ a, b }); - if (iter != mst_line_x_layer_contour_cache.end()) { - if (iter->second) - return true; - } - else { - profiler.tic(); - Line ln(b, a); - Lines pls_intersect = intersection_ln(ln, layer_contours); - mst_line_x_layer_contour_cache.insert({ {a, b}, !pls_intersect.empty() }); - mst_line_x_layer_contour_cache.insert({ ln, !pls_intersect.empty() }); - profiler.stage_add(STAGE_intersection_ln, true); - if (!pls_intersect.empty()) - return true; - } - return false; - }; - - //Group together all nodes for each part. - const ExPolygons& parts = m_ts_data->get_avoidance(0, layer_nr); - std::vector> nodes_per_part(1 + parts.size()); //All nodes that aren't inside a part get grouped together in the 0th part. - for (Node* p_node : layer_contact_nodes) - { - const Node& node = *p_node; - - if (node.distance_to_top < 0) { - // gap nodes do not merge or move - Node* next_node = new Node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, p_node->to_buildplate, p_node, - print_z_next, height_next); - get_max_move_dist(next_node); - next_node->is_merged = false; - contact_nodes[layer_nr_next].emplace_back(next_node); - continue; - } - if (support_on_buildplate_only && !node.to_buildplate) //Can't rest on model and unable to reach the build plate. Then we must drop the node and leave parts unsupported. - { - unsupported_branch_leaves.push_front({ layer_nr, p_node }); - continue; - } - if (node.to_buildplate || parts.empty()) //It's outside, so make it go towards the build plate. - { - nodes_per_part[0][node.position] = p_node; - continue; - } - - /* Find which part this node is located in and group the nodes in - * the same part together. Since nodes have a radius and the - * avoidance areas are offset by that radius, the set of parts may - * be different per node. Here we consider a node to be inside the - * part that is closest. The node may be inside a bigger part that - * is actually two parts merged together due to an offset. In that - * case we may incorrectly keep two nodes separate, but at least - * every node falls into some group. - */ - coordf_t closest_part_distance2 = std::numeric_limits::max(); - size_t closest_part = -1; - for (size_t part_index = 0; part_index < parts.size(); part_index++) - { - //constexpr bool border_result = true; - if (is_inside_ex(parts[part_index], node.position)) //If it's inside, the distance is 0 and this part is considered the best. - { - closest_part = part_index; - closest_part_distance2 = 0; - break; - } - - Point closest_point = *parts[part_index].contour.closest_point(node.position); - const coordf_t distance2 = vsize2_with_unscale(node.position - closest_point); - if (distance2 < closest_part_distance2) - { - closest_part_distance2 = distance2; - closest_part = part_index; - } - } - //Put it in the best one. - nodes_per_part[closest_part + 1][node.position] = p_node; //Index + 1 because the 0th index is the outside part. - } - - //Create a MST for every part. - profiler.tic(); - //std::vector& spanning_trees = m_spanning_trees[layer_nr]; - std::vector spanning_trees; - for (const std::unordered_map& group : nodes_per_part) - { - std::vector points_to_buildplate; - for (const std::pair& entry : group) - { - points_to_buildplate.emplace_back(entry.first); //Just the position of the node. - } - spanning_trees.emplace_back(points_to_buildplate); - } - profiler.stage_add(STAGE_MinimumSpanningTree,true); - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - coordf_t branch_radius_temp = 0; - coordf_t max_y = std::numeric_limits::min(); - draw_layer_mst(std::to_string(ts_layer->print_z), spanning_trees, m_object->get_layer(layer_nr)->lslices); -#endif - for (size_t group_index = 0; group_index < nodes_per_part.size(); group_index++) - { - const MinimumSpanningTree& mst = spanning_trees[group_index]; - //In the first pass, merge all nodes that are close together. - std::unordered_set to_delete; - for (const std::pair& entry : nodes_per_part[group_index]) - { - Node* p_node = entry.second; - Node& node = *p_node; - if (to_delete.find(p_node) != to_delete.end()) - { - continue; //Delete this node (don't create a new node for it on the next layer). - } - const std::vector& neighbours = mst.adjacent_nodes(node.position); - if (node.type == ePolygon) { - // Remove all neighbours that are completely inside the polygon and merge them into this node. - for (const Point &neighbour : neighbours) { - Node * neighbour_node = nodes_per_part[group_index][neighbour]; - coord_t neighbour_radius = scale_(calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top, diameter_angle_scale_factor)); - Point pt_north = neighbour + Point(0, neighbour_radius), pt_south = neighbour - Point(0, neighbour_radius), - pt_west = neighbour - Point(neighbour_radius, 0), pt_east = neighbour + Point(neighbour_radius, 0); - if (is_inside_ex(*node.overhang, neighbour) && is_inside_ex(*node.overhang, pt_north) && is_inside_ex(*node.overhang, pt_south) - && is_inside_ex(*node.overhang, pt_west) && is_inside_ex(*node.overhang, pt_east)){ - node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); - node.support_roof_layers_below = std::max(node.support_roof_layers_below, neighbour_node->support_roof_layers_below); - node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); - node.merged_neighbours.push_front(neighbour_node); - node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - node.is_merged = true; - to_delete.insert(neighbour_node); - } - } - } - else if (neighbours.size() == 1 && vsize2_with_unscale(neighbours[0] - node.position) < max_move_distance2 && mst.adjacent_nodes(neighbours[0]).size() == 1 && - nodes_per_part[group_index][neighbours[0]]->type!=ePolygon) // We have just two nodes left, and they're very close, and the only neighbor is not ePolygon - { - //Insert a completely new node and let both original nodes fade. - Point next_position = (node.position + neighbours[0]) / 2; //Average position of the two nodes. - - const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); - - auto avoid_layer = m_ts_data->get_avoidance(branch_radius_node, layer_nr_next); - if (group_index == 0) - { - //Avoid collisions. - const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; //100 micron extra for rounding errors. - move_out_expolys(avoid_layer, next_position, radius_sample_resolution + EPSILON, max_move_between_samples); - } - - Node* neighbour = nodes_per_part[group_index][neighbours[0]]; - Node* node_; - if (p_node->parent && neighbour->parent) - node_ = (node.dist_mm_to_top >= neighbour->dist_mm_to_top && p_node->parent) ? p_node : neighbour; - else - node_ = p_node->parent ? p_node : neighbour; - // Make sure the next pass doesn't drop down either of these (since that already happened). - node_->merged_neighbours.push_front(node_ == p_node ? neighbour : p_node); - const bool to_buildplate = !is_inside_ex(m_ts_data->get_avoidance(0, layer_nr_next), next_position); - Node * next_node = new Node(next_position, node_->distance_to_top + 1, layer_nr_next, node_->support_roof_layers_below-1, to_buildplate, node_, - print_z_next, height_next); - next_node->movement = next_position - node.position; - get_max_move_dist(next_node); - next_node->is_merged = true; - contact_nodes[layer_nr_next].push_back(next_node); - - - to_delete.insert(neighbour); - to_delete.insert(p_node); - } - else if (neighbours.size() > 1) //Don't merge leaf nodes because we would then incur movement greater than the maximum move distance. - { - //Remove all neighbours that are too close and merge them into this node. - for (const Point& neighbour : neighbours) - { - if (vsize2_with_unscale(neighbour - node.position) < /*max_move_distance2*/get_max_move_dist(&node,2)) - { - Node* neighbour_node = nodes_per_part[group_index][neighbour]; - if (neighbour_node->type == ePolygon) continue; - - node.distance_to_top = std::max(node.distance_to_top, neighbour_node->distance_to_top); - node.support_roof_layers_below = std::max(node.support_roof_layers_below, neighbour_node->support_roof_layers_below); - node.dist_mm_to_top = std::max(node.dist_mm_to_top, neighbour_node->dist_mm_to_top); - node.merged_neighbours.push_front(neighbour_node); - node.merged_neighbours.insert(node.merged_neighbours.end(), neighbour_node->merged_neighbours.begin(), neighbour_node->merged_neighbours.end()); - node.is_merged = true; - to_delete.insert(neighbour_node); - } - } - } - } - - //In the second pass, move all middle nodes. - for (const std::pair& entry : nodes_per_part[group_index]) - { - Node* p_node = entry.second; - const Node& node = *p_node; - if (to_delete.find(p_node) != to_delete.end()) - { - continue; - } - if (node.type == ePolygon) { - // polygon node do not merge or move - const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], p_node->position); - Node * next_node = new Node(p_node->position, p_node->distance_to_top + 1, layer_nr_next, p_node->support_roof_layers_below - 1, to_buildplate, - p_node, print_z_next, height_next); - next_node->max_move_dist = 0; - next_node->is_merged = false; - contact_nodes[layer_nr_next].emplace_back(next_node); - continue; - } - - //If the branch falls completely inside a collision area (the entire branch would be removed by the X/Y offset), delete it. - if (group_index > 0 && is_inside_ex(m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr), node.position)) - { - const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top, diameter_angle_scale_factor); - Point to_outside = projection_onto(m_ts_data->get_collision(m_ts_data->m_xy_distance, layer_nr), node.position); - double dist2_to_outside = vsize2_with_unscale(node.position - to_outside); - if (dist2_to_outside >= branch_radius_node * branch_radius_node) //Too far inside. - { - if (support_on_buildplate_only) - { - unsupported_branch_leaves.push_front({ layer_nr, p_node }); - } - else { - Node* pn = p_node; - for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) - pn->support_floor_layers_above = bottom_interface_layers - i + 1; // +1 so the parent node has support_floor_layers_above=2 - to_delete.insert(p_node); - } - continue; - } - // if the link between parent and current is cut by contours, mark current as bottom contact node - if (p_node->parent && intersection_ln({p_node->position, p_node->parent->position}, layer_contours).empty()==false) - { - Node* pn = p_node->parent; - for (int i = 0; i <= bottom_interface_layers && pn; i++, pn = pn->parent) - pn->support_floor_layers_above = bottom_interface_layers - i + 1; - to_delete.insert(p_node); - continue; - } - } - Point next_layer_vertex = node.position; - Point move_to_neighbor_center; - std::vector moves; - std::vector weights; - const std::vector neighbours = mst.adjacent_nodes(node.position); - // 1. do not merge neighbors under 5mm - // 2. Only merge node with single neighbor in distance between [max_move_distance, 10mm/layer_height] - float dist2_to_first_neighbor = neighbours.empty() ? 0 : vsize2_with_unscale(neighbours[0] - node.position); - if (ts_layer->print_z > DO_NOT_MOVER_UNDER_MM && - (neighbours.size() > 1 || (neighbours.size() == 1 && dist2_to_first_neighbor >= max_move_distance2))) // Only nodes that aren't about to collapse. - { - // Move towards the average position of all neighbours. - Point sum_direction(0, 0); - for (const Point &neighbour : neighbours) { - // do not move to the neighbor to be deleted - Node *neighbour_node = nodes_per_part[group_index][neighbour]; - if (to_delete.find(neighbour_node) != to_delete.end()) continue; - - Point direction = neighbour - node.position; - // do not move to neighbor that's too far away (即使以最大速度移动,在接触热床之前都无法汇聚) - float dist2_to_neighbor = vsize2_with_unscale(direction); - - coordf_t branch_bottom_radius = calc_branch_radius(branch_radius, node.dist_mm_to_top + node.print_z, diameter_angle_scale_factor); - coordf_t neighbour_bottom_radius = calc_branch_radius(branch_radius, neighbour_node->dist_mm_to_top + neighbour_node->print_z, diameter_angle_scale_factor); - double max_converge_distance = tan_angle * (ts_layer->print_z - DO_NOT_MOVER_UNDER_MM) + std::max(branch_bottom_radius, neighbour_bottom_radius); - if (dist2_to_neighbor > max_converge_distance * max_converge_distance) continue; - - if (is_line_cut_by_contour(node.position, neighbour)) continue; - - if (!is_strong) - sum_direction += direction * (1 / dist2_to_neighbor); - else - sum_direction += direction; - } - - if (!is_strong) - move_to_neighbor_center = sum_direction; - else { - if (vsize2_with_unscale(sum_direction) <= max_move_distance2) { - move_to_neighbor_center = sum_direction; - } else { - move_to_neighbor_center = normal(sum_direction, scale_(get_max_move_dist(&node))); - } - } - } - - const coordf_t branch_radius_node = calc_branch_radius(branch_radius, node.dist_mm_to_top/*+node.print_z*/, diameter_angle_scale_factor); -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - if (node.position(1) > max_y) { - max_y = node.position(1); - branch_radius_temp = branch_radius_node; - } -#endif - auto avoid_layer = m_ts_data->get_avoidance(branch_radius_node, layer_nr_next); - - Point to_outside = projection_onto(avoid_layer, node.position); - Point direction_to_outer = to_outside - node.position; - double dist2_to_outer = vsize2_with_unscale(direction_to_outer); - // don't move if - // 1) line of node and to_outside is cut by contour (means supports may intersect with object) - // 2) it's impossible to move to build plate - if (is_line_cut_by_contour(node.position, to_outside) || dist2_to_outer > max_move_distance2 * SQ(layer_nr) || - !is_inside_ex(avoid_layer, node.position)) { - // try move to outside of lower layer instead - Point candidate_vertex = node.position; - const coordf_t max_move_between_samples = max_move_distance + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. - bool is_outside = move_out_expolys(avoid_layer, candidate_vertex, max_move_between_samples, max_move_between_samples); - if (is_outside) { - direction_to_outer = candidate_vertex - node.position; - dist2_to_outer = vsize2_with_unscale(direction_to_outer); - } else { - direction_to_outer = Point(0, 0); - dist2_to_outer = 0; - } - } - // move to the averaged direction of neighbor center and contour edge if they are roughly same direction - Point movement; - if (!is_strong) - movement = move_to_neighbor_center*2 + (dist2_to_outer > EPSILON ? direction_to_outer * (1 / dist2_to_outer) : Point(0, 0)); - else { - if (movement.dot(move_to_neighbor_center) >= 0.2 || move_to_neighbor_center == Point(0, 0)) - movement = direction_to_outer + move_to_neighbor_center; - else - movement = move_to_neighbor_center; // otherwise move to neighbor center first - } - - if (vsize2_with_unscale(movement) > get_max_move_dist(&node,2)) - movement = normal(movement, scale_(get_max_move_dist(&node))); - - // add momentum to force smooth movement - //movement = movement * 0.5 + p_node->movement * 0.5; - - next_layer_vertex += movement; - - if (group_index == 0) { - // Avoid collisions. - const coordf_t max_move_between_samples = get_max_move_dist(&node, 1) + radius_sample_resolution + EPSILON; // 100 micron extra for rounding errors. - bool is_outside = move_out_expolys(avoid_layer, next_layer_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); - if (!is_outside) { - Point candidate_vertex = node.position; - is_outside = move_out_expolys(avoid_layer, candidate_vertex, radius_sample_resolution + EPSILON, max_move_between_samples); - if (is_outside) { next_layer_vertex = candidate_vertex; } - } - } - - const bool to_buildplate = !is_inside_ex(m_ts_data->m_layer_outlines[layer_nr], next_layer_vertex);// !is_inside_ex(m_ts_data->get_avoidance(m_ts_data->m_xy_distance, layer_nr - 1), next_layer_vertex); - Node * next_node = new Node(next_layer_vertex, node.distance_to_top + 1, layer_nr_next, node.support_roof_layers_below - 1, to_buildplate, p_node, - print_z_next, height_next); - next_node->movement = movement; - get_max_move_dist(next_node); - next_node->is_merged = false; - contact_nodes[layer_nr_next].push_back(next_node); - } - } - -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - if (contact_nodes[layer_nr].empty() == false) { - draw_contours_and_nodes_to_svg((boost::format("%.2f") % contact_nodes[layer_nr][0]->print_z).str(), m_ts_data->get_avoidance(0, layer_nr), - m_ts_data->get_avoidance(branch_radius_temp, layer_nr), - m_ts_data->m_layer_outlines_below[layer_nr], - contact_nodes[layer_nr], contact_nodes[layer_nr_next], "contact_points", { "overhang","avoid","outline" }, { "blue","red","yellow" }); - - BOOST_LOG_TRIVIAL(debug) << "drop_nodes layer " << layer_nr << ", print_z=" << ts_layer->print_z; - for (size_t i = 0; i < std::min(size_t(5), contact_nodes[layer_nr].size()); i++) { - auto &node = contact_nodes[layer_nr][i]; - BOOST_LOG_TRIVIAL(debug) << "\t node " << i << ", pos=" << node->position << ", move = " << node->movement << ", is_merged=" << node->is_merged; - } - } -#endif - - // Prune all branches that couldn't find support on either the model or the buildplate (resulting in 'mid-air' branches). - for (;! unsupported_branch_leaves.empty(); unsupported_branch_leaves.pop_back()) - { - const auto& entry = unsupported_branch_leaves.back(); - Node* i_node = entry.second; - for (; i_node != nullptr; i_node = i_node->parent) - { - size_t i_layer = i_node->obj_layer_nr; - std::vector::iterator to_erase = std::find(contact_nodes[i_layer].begin(), contact_nodes[i_layer].end(), i_node); - if (to_erase != contact_nodes[i_layer].end()) - { - // update the parent-child chain - if(i_node->parent) - i_node->parent->child = i_node->child; - if(i_node->child) - i_node->child->parent = i_node->parent; - contact_nodes[i_layer].erase(to_erase); - to_free_node_set.insert(i_node); - - for (Node* neighbour : i_node->merged_neighbours) - { - unsupported_branch_leaves.push_front({ i_layer, neighbour }); - } - } - } - } - } - - BOOST_LOG_TRIVIAL(debug) << "after m_avoidance_cache.size()=" << m_ts_data->m_avoidance_cache.size(); - - for (Node *node : to_free_node_set) - { - delete node; - } - to_free_node_set.clear(); -} - -void TreeSupport::smooth_nodes(std::vector> &contact_nodes) -{ - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector &curr_layer_nodes = contact_nodes[layer_nr]; - if (curr_layer_nodes.empty()) continue; - for (Node *node : curr_layer_nodes) { - node->is_processed = false; - if (layer_nr == 0) node->is_merged = true; // nodes on plate are also merged nodes - } - } - - for (int layer_nr = 0; layer_nr< contact_nodes.size(); layer_nr++) { - std::vector &curr_layer_nodes = contact_nodes[layer_nr]; - if (curr_layer_nodes.empty()) continue; - for (Node *node : curr_layer_nodes) { - if (!node->is_processed) { - std::vector pts; - std::vector branch; - Node * p_node = node; - // add a fixed head - if (node->child) { - pts.push_back(p_node->child->position); - branch.push_back(p_node->child); - } - do { - pts.push_back(p_node->position); - branch.push_back(p_node); - p_node = p_node->parent; - } while (p_node && !p_node->is_processed); - if (pts.size() < 3) continue; - - std::vector pts1 = pts; - // TODO here we assume layer height gap is constant. If not true, need to consider height jump - const int iterations = 100; - for (size_t k = 0; k < iterations; k++) { - for (size_t i = 1; i < pts.size() - 1; i++) { - size_t i2 = i >= 2 ? i - 2 : 0; - size_t i3 = i < pts.size() - 2 ? i + 2 : pts.size() - 1; - Point pt = (pts[i2] + pts[i - 1] + pts[i] + pts[i + 1] + pts[i3]) / 5; - pts1[i] = pt; - if (k == iterations - 1) { - branch[i]->position = pt; - branch[i]->movement = (pts[i + 1] - pts[i - 1]) / 2; - branch[i]->is_processed = true; - } - } - if (k < iterations - 1) - std::swap(pts, pts1); - } - } - } - } - // save tree structure for viewing in python - auto& tree_nodes = m_ts_data->tree_nodes; - std::map ptr2idx; - std::map idx2ptr; - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (Node* node : curr_layer_nodes) { - ptr2idx.emplace(node, tree_nodes.size()); - idx2ptr.emplace(tree_nodes.size(), node); - tree_nodes.emplace_back(node->position, node->print_z); - } - } - for (size_t i = 0; i < tree_nodes.size(); i++) { - TreeNode& tree_node = tree_nodes[i]; - Node* p_node = idx2ptr[i]; - if (p_node->child) - tree_node.children.push_back(ptr2idx[p_node->child]); - if(p_node->parent) - tree_node.parents.push_back(ptr2idx[p_node->parent]); - } -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - nlohmann::json jj; - for (size_t i = 0; i < tree_nodes.size(); i++) { - nlohmann::json j; - j["pos"] = tree_nodes[i].pos; - j["children"] = tree_nodes[i].children; - j["linked"] = !(tree_nodes[i].pos.z() > 0.205 && tree_nodes[i].children.empty()); - jj.push_back(j); - } - - std::ofstream ofs("tree_nodes.json"); - ofs << jj.dump(); - ofs.close(); -#endif -} - -void TreeSupport::adjust_layer_heights(std::vector>& contact_nodes) -{ - if (contact_nodes.empty()) - return; - - const PrintConfig& print_config = m_object->print()->config(); - const PrintObjectConfig& config = m_object->config(); - // don't merge layers for Vine support, or the branches will be unsmooth - // TODO can we merge layers in a way that guaranttees smoothness? - if (!print_config.independent_support_layer_height || is_slim) { - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (Node* node : curr_layer_nodes) { - node->print_z = m_object->get_layer(layer_nr)->print_z; - node->height = m_object->get_layer(layer_nr)->height; - } - } - return; - } - - // extreme layer_id - std::vector extremes; - const coordf_t layer_height = config.layer_height.value; - const coordf_t max_layer_height = m_slicing_params.max_layer_height; - const size_t bot_intf_layers = config.support_interface_bottom_layers.value; - const size_t top_intf_layers = config.support_interface_top_layers.value; - - // if already using max layer height, no need to adjust - if (layer_height == max_layer_height) return; - - extremes.push_back(0); - for (Node* node : contact_nodes[0]) { - node->print_z = m_object->get_layer(0)->print_z; - node->height = m_object->get_layer(0)->height; - } - - for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - for (Node* node : curr_layer_nodes) { - if (node->support_roof_layers_below >0 || node->support_floor_layers_above == bot_intf_layers) { - extremes.push_back(layer_nr); - break; - } - } - - if (extremes.back() == layer_nr) { - // contact layer use the same print_z and layer height with object layer - for (Node* node : curr_layer_nodes) { - node->print_z = m_object->get_layer(layer_nr)->print_z; - node->height = m_object->get_layer(layer_nr)->height; - } - } - } - - // schedule new layer heights and print_z - for (size_t idx_extreme = 0; idx_extreme < extremes.size(); idx_extreme++) { - int extr2_layer_nr = extremes[idx_extreme]; - coordf_t extr2z = m_object->get_layer(extr2_layer_nr)->bottom_z(); - int extr1_layer_nr = idx_extreme == 0 ? -1 : extremes[idx_extreme - 1]; - coordf_t extr1z = idx_extreme == 0 ? 0.f : m_object->get_layer(extr1_layer_nr)->print_z; - coordf_t dist = extr2z - extr1z; - - // Insert intermediate layers. - size_t n_layers_extra = size_t(ceil(dist / m_slicing_params.max_suport_layer_height)); - if (n_layers_extra <= 1) - continue; - - coordf_t step = dist / coordf_t(n_layers_extra); - coordf_t print_z = extr1z + step; - assert(step >= layer_height - EPSILON); - for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - std::vector& curr_layer_nodes = contact_nodes[layer_nr]; - if (curr_layer_nodes.empty()) continue; - - if (std::abs(print_z - curr_layer_nodes[0]->print_z) < step / 2 + EPSILON) { - for (Node* node : curr_layer_nodes) { - node->print_z = print_z; - node->height = step; - } - print_z += step; - } - else { - // can't clear curr_layer_nodes, or the model will have empty layers - for (Node* node : curr_layer_nodes) { - node->print_z = 0.0; - node->height = 0.0; - } - } - } - } -} - -std::vector TreeSupport::plan_layer_heights(std::vector> &contact_nodes) -{ - const PrintObjectConfig& config = m_object->config(); - const PrintConfig & print_config = m_object->print()->config(); - const coordf_t max_layer_height = m_slicing_params.max_layer_height; - const coordf_t layer_height = config.layer_height.value; - coordf_t z_distance_top = m_slicing_params.gap_support_object; - // BBS: add extra distance if thick bridge is enabled - // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height - if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; - } - const size_t support_roof_layers = config.support_interface_top_layers.value; - const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; - std::vector layer_heights(contact_nodes.size()); - std::vector bounds; - - if (!config.tree_support_adaptive_layer_height || layer_height == max_layer_height || !print_config.independent_support_layer_height) { - for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { - layer_heights[layer_nr] = {m_object->get_layer(layer_nr)->print_z, m_object->get_layer(layer_nr)->height, layer_nr > 0 ? size_t(layer_nr - 1) : 0}; - } - return layer_heights; - } - - bounds.push_back(0); - // Keep first layer still - layer_heights[0] = {m_object->get_layer(0)->print_z, m_object->get_layer(0)->height, 0}; - // Collect top contact layers - for (int layer_nr = 1; layer_nr < contact_nodes.size(); layer_nr++) - { - if (!contact_nodes[layer_nr].empty()) - for (int i = 0; i < support_roof_layers + z_distance_top_layers + 1; i++) { - if (layer_nr - i > 0) { - bounds.push_back(layer_nr - i); - layer_heights[layer_nr - i].print_z = m_object->get_layer(layer_nr - i)->print_z; - layer_heights[layer_nr - i].height = m_object->get_layer(layer_nr - i)->height; - } - else { - break; - } - - } - } - std::set s(bounds.begin(), bounds.end()); - bounds.assign(s.begin(), s.end()); - - for (size_t idx_extreme = 0; idx_extreme < bounds.size(); idx_extreme++) { - int extr2_layer_nr = bounds[idx_extreme]; - coordf_t extr2z = m_object->get_layer(extr2_layer_nr)->bottom_z(); - int extr1_layer_nr = idx_extreme == 0 ? -1 : bounds[idx_extreme - 1]; - coordf_t extr1z = idx_extreme == 0 ? 0.f : m_object->get_layer(extr1_layer_nr)->print_z; - coordf_t dist = extr2z - extr1z; - - // Insert intermediate layers. - size_t n_layers_extra = size_t(ceil(dist / (m_slicing_params.max_suport_layer_height + EPSILON))); - int actual_internel_layers = extr2_layer_nr - extr1_layer_nr - 1; - int extr_layers_left = extr2_layer_nr - extr1_layer_nr - n_layers_extra - 1; - if (n_layers_extra < 1) - continue; - - coordf_t step = dist / coordf_t(n_layers_extra); - coordf_t print_z = extr1z + step; - assert(step >= layer_height - EPSILON); - for (int layer_nr = extr1_layer_nr + 1; layer_nr < extr2_layer_nr; layer_nr++) { - // if (curr_layer_nodes.empty()) continue; - if (std::abs(print_z - m_object->get_layer(layer_nr)->print_z) < step / 2 + EPSILON || extr_layers_left < 1) { - layer_heights[layer_nr].print_z = print_z; - layer_heights[layer_nr].height = step; - print_z += step; - } - else { - // can't clear curr_layer_nodes, or the model will have empty layers - layer_heights[layer_nr].print_z = 0.0; - layer_heights[layer_nr].height = 0.0; - extr_layers_left--; - } - } - } - - // fill in next_layer_nr - int i = layer_heights.size() - 1, j = i; - for (; j >= 0; i = j) { - if (layer_heights[i].height < EPSILON) { - j--; - continue; - } - for (j = i - 1; j >= 0; j--) { - if (layer_heights[j].height > EPSILON) { - layer_heights[i].next_layer_nr = j; - break; - } - } - BOOST_LOG_TRIVIAL(trace) << "plan_layer_heights print_z, height, layer_nr->next_layer_nr: " << layer_heights[i].print_z << " " << layer_heights[i].height << " " - << i << "->" << layer_heights[i].next_layer_nr << std::endl; - } - - return layer_heights; -} - -void TreeSupport::generate_contact_points(std::vector>& contact_nodes) -{ - const PrintObjectConfig &config = m_object->config(); - const coordf_t point_spread = scale_(config.tree_support_branch_distance.value); - - //First generate grid points to cover the entire area of the print. - BoundingBox bounding_box = m_object->bounding_box(); - const Point bounding_box_size = bounding_box.max - bounding_box.min; - constexpr double rotate_angle = 22.0 / 180.0 * M_PI; - - const auto center = bounding_box_middle(bounding_box); - const auto sin_angle = std::sin(rotate_angle); - const auto cos_angle = std::cos(rotate_angle); - const Point rotated_dims = Point( - bounding_box_size(0) * cos_angle + bounding_box_size(1) * sin_angle, - bounding_box_size(0) * sin_angle + bounding_box_size(1) * cos_angle) / 2; - - std::vector grid_points; - for (auto x = -rotated_dims(0); x < rotated_dims(0); x += point_spread) { - for (auto y = -rotated_dims(1); y < rotated_dims(1); y += point_spread) { - Point pt(x, y); - pt.rotate(cos_angle, sin_angle); - pt += center; - if (bounding_box.contains(pt)) { - grid_points.push_back(pt); - } - } - } - - const coordf_t layer_height = config.layer_height.value; - coordf_t z_distance_top = m_slicing_params.gap_support_object; - // BBS: add extra distance if thick bridge is enabled - // Note: normal support uses print_z, but tree support uses integer layers, so we need to subtract layer_height - if (!m_slicing_params.soluble_interface && m_object_config->thick_bridges) { - z_distance_top += m_object->layers()[0]->regions()[0]->region().bridging_height_avg(m_object->print()->config()) - layer_height; - } - const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. - - size_t support_roof_layers = config.support_interface_top_layers.value; - if (support_roof_layers > 0) - support_roof_layers += 1; // BBS: add a normal support layer below interface (if we have interface) - coordf_t thresh_angle = std::min(89.f, config.support_threshold_angle.value < EPSILON ? 30.f : config.support_threshold_angle.value); - coordf_t half_overhang_distance = scale_(tan(thresh_angle * M_PI / 180.0) * layer_height / 2); - - // fix bug of generating support for very thin objects - if (m_object->layers().size() <= z_distance_top_layers + 1) - return; - - m_highest_overhang_layer = 0; - int nonempty_layers = 0; - std::vector all_nodes; - for (size_t layer_nr = 1; layer_nr < m_object->layers().size(); layer_nr++) - { - if (m_object->print()->canceled()) - break; - auto ts_layer = m_object->get_support_layer(layer_nr + m_raft_layers); - const ExPolygons &overhang = ts_layer->overhang_areas; - auto & curr_nodes = contact_nodes[layer_nr]; - if (overhang.empty()) - continue; - - m_highest_overhang_layer = std::max(m_highest_overhang_layer, layer_nr); - auto print_z = m_object->get_layer(layer_nr)->print_z; - auto height = m_object->get_layer(layer_nr)->height; - - for (const ExPolygon &overhang_part : overhang) - { - BoundingBox overhang_bounds = get_extents(overhang_part); - if (support_style==smsTreeHybrid && overhang_part.area() > m_support_params.thresh_big_overhang) { - Point candidate = overhang_bounds.center(); - if (!overhang_part.contains(candidate)) - move_inside_expoly(overhang_part, candidate); - if (!(config.support_on_build_plate_only && is_inside_ex(m_ts_data->m_layer_outlines_below[layer_nr], candidate))) { - Node* contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, Node::NO_PARENT, print_z, - height, z_distance_top); - contact_node->type = ePolygon; - contact_node->overhang = &overhang_part; - curr_nodes.emplace_back(contact_node); - continue; - } - } - - overhang_bounds.inflated(half_overhang_distance); - bool added = false; //Did we add a point this way? - for (Point candidate : grid_points) - { - if (overhang_bounds.contains(candidate)) - { - // BBS: move_inside_expoly shouldn't be used if candidate is already inside, as it moves point to boundary and the inside is not well supported! - bool is_inside = is_inside_ex(overhang_part, candidate); - if (!is_inside) { - constexpr coordf_t distance_inside = 0; // Move point towards the border of the polygon if it is closer than half the overhang distance: Catch points that - // fall between overhang areas on constant surfaces. - move_inside_expoly(overhang_part, candidate, distance_inside, half_overhang_distance); - is_inside = is_inside_ex(overhang_part, candidate); - } - if (is_inside) - { - // collision radius has to be 0 or the supports are too few at curved slopes - //if (!is_inside_ex(m_ts_data->get_collision(0, layer_nr), candidate)) - { - constexpr bool to_buildplate = true; - Node * contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, - Node::NO_PARENT, print_z, height, z_distance_top); - contact_node->overhang = &overhang_part; - curr_nodes.emplace_back(contact_node); - added = true; - } - } - } - } - - if (!added) //If we didn't add any points due to bad luck, we want to add one anyway such that loose parts are also supported. - { - auto bbox = overhang_part.contour.bounding_box(); - Points candidates; - if (ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected) - candidates = {bbox.min, bounding_box_middle(bbox), bbox.max}; - else - candidates = {bounding_box_middle(bbox)}; - - for (Point candidate : candidates) { - if (!overhang_part.contains(candidate)) - move_inside_expoly(overhang_part, candidate); - constexpr bool to_buildplate = true; - Node *contact_node = new Node(candidate, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, to_buildplate, Node::NO_PARENT, - print_z, height, z_distance_top); - contact_node->overhang = &overhang_part; - curr_nodes.emplace_back(contact_node); - } - } - // add supports at corners for both auto and manual overhangs, github #2008 - if (/*ts_layer->overhang_types[&overhang_part] == SupportLayer::Detected*/1) { - // add points at corners - auto &points = overhang_part.contour.points; - int nSize = points.size(); - for (int i = 0; i < nSize; i++) { - auto pt = points[i]; - auto v1 = (pt - points[(i - 1 + nSize) % nSize]).cast().normalized(); - auto v2 = (pt - points[(i + 1) % nSize]).cast().normalized(); - if (v1.dot(v2) > -0.7) { // angle smaller than 135 degrees - Node *contact_node = new Node(pt, -z_distance_top_layers, layer_nr, support_roof_layers + z_distance_top_layers, true, Node::NO_PARENT, print_z, - height, z_distance_top); - contact_node->overhang = &overhang_part; - contact_node->is_corner = true; - curr_nodes.emplace_back(contact_node); - } - } - } - if(ts_layer->overhang_types[&overhang_part] == SupportLayer::Enforced || is_slim){ - // remove close points in Enforcers - // auto above_nodes = contact_nodes[layer_nr - 1]; - if (!curr_nodes.empty() /*&& !above_nodes.empty()*/) { - for (auto it = curr_nodes.begin(); it != curr_nodes.end();) { - bool is_duplicate = false; - if (!(*it)->is_corner) { - Slic3r::Vec3f curr_pt((*it)->position(0), (*it)->position(1), scale_((*it)->print_z)); - for (auto &pt : all_nodes) { - auto dif = curr_pt - pt; - if (dif.norm() < point_spread / 2) { - delete (*it); - it = curr_nodes.erase(it); - is_duplicate = true; - break; - } - } - } - if (!is_duplicate) it++; - } - } - } - } - if (!curr_nodes.empty()) nonempty_layers++; - for (auto node : curr_nodes) { all_nodes.emplace_back(node->position(0), node->position(1), scale_(node->print_z)); } -#ifdef SUPPORT_TREE_DEBUG_TO_SVG - draw_contours_and_nodes_to_svg(std::to_string(print_z), overhang, m_ts_data->m_layer_outlines_below[layer_nr], {}, - contact_nodes[layer_nr], {}, "init_contact_points", { "overhang","outlines","" }); -#endif - } - int nNodes = all_nodes.size(); - avg_node_per_layer = nodes_angle = 0; - if (nNodes > 0) { - avg_node_per_layer = nNodes / nonempty_layers; - // get orientation of nodes by line fitting - // line: y=kx+b, where - // k=tan(nodes_angle)=(n\sum{xy}-\sum{x}\sum{y})/(n\sum{x^2}-\sum{x}^2) - float mx = 0, my = 0, mxy = 0, mx2 = 0; - for (auto &pt : all_nodes) { - float x = unscale_(pt(0)); - float y = unscale_(pt(1)); - mx += x; - my += y; - mxy += x * y; - mx2 += x * x; - } - nodes_angle = atan2(nNodes * mxy - mx * my, nNodes * mx2 - SQ(mx)); - - BOOST_LOG_TRIVIAL(info) << "avg_node_per_layer=" << avg_node_per_layer << ", nodes_angle=" << nodes_angle; - } -} - -void TreeSupport::insert_dropped_node(std::vector& nodes_layer, Node* p_node) -{ - std::vector::iterator conflicting_node_it = std::find(nodes_layer.begin(), nodes_layer.end(), p_node); - if (conflicting_node_it == nodes_layer.end()) //No conflict. - { - nodes_layer.emplace_back(p_node); - return; - } - - Node* conflicting_node = *conflicting_node_it; - conflicting_node->distance_to_top = std::max(conflicting_node->distance_to_top, p_node->distance_to_top); - conflicting_node->support_roof_layers_below = std::max(conflicting_node->support_roof_layers_below, p_node->support_roof_layers_below); -} - -TreeSupportData::TreeSupportData(const PrintObject &object, coordf_t xy_distance, coordf_t max_move, coordf_t radius_sample_resolution) - : m_xy_distance(xy_distance), m_max_move(max_move), m_radius_sample_resolution(radius_sample_resolution) -{ - for (std::size_t layer_nr = 0; layer_nr < object.layers().size(); ++layer_nr) - { - const Layer* layer = object.get_layer(layer_nr); - m_layer_outlines.push_back(ExPolygons()); - ExPolygons& outline = m_layer_outlines.back(); - for (const ExPolygon& poly : layer->lslices) { - poly.simplify(scale_(m_radius_sample_resolution), &outline); - } - - if (layer_nr == 0) - m_layer_outlines_below.push_back(outline); - else - m_layer_outlines_below.push_back(union_ex(m_layer_outlines_below.end()[-1], outline)); - } -} - -const ExPolygons& TreeSupportData::get_collision(coordf_t radius, size_t layer_nr) const -{ - profiler.tic(); - radius = ceil_radius(radius); - RadiusLayerPair key{radius, layer_nr}; - const auto it = m_collision_cache.find(key); - const ExPolygons& collision = it != m_collision_cache.end() ? it->second : calculate_collision(key); - profiler.stage_add(STAGE_get_collision, true); - return collision; -} - -const ExPolygons& TreeSupportData::get_avoidance(coordf_t radius, size_t layer_nr, int recursions) const -{ - profiler.tic(); - radius = ceil_radius(radius); - RadiusLayerPair key{radius, layer_nr, recursions }; - const auto it = m_avoidance_cache.find(key); - const ExPolygons& avoidance = it != m_avoidance_cache.end() ? it->second : calculate_avoidance(key); - - profiler.stage_add(STAGE_GET_AVOIDANCE, true); - return avoidance; -} - -Polygons TreeSupportData::get_contours(size_t layer_nr) const -{ - Polygons contours; - for (const ExPolygon& expoly : m_layer_outlines[layer_nr]) { - contours.push_back(expoly.contour); - } - - return contours; -} - -Polygons TreeSupportData::get_contours_with_holes(size_t layer_nr) const -{ - Polygons contours; - for (const ExPolygon& expoly : m_layer_outlines[layer_nr]) { - for(int i=0;i EPSILON) { - return radius + m_radius_sample_resolution - remains; - } - else { - return radius; - } -#else - coordf_t resolution = m_radius_sample_resolution; - return ceil(radius / resolution) * resolution; -#endif -} - -const ExPolygons& TreeSupportData::calculate_collision(const RadiusLayerPair& key) const -{ - assert(key.layer_nr < m_layer_outlines.size()); - - ExPolygons collision_areas = offset_ex(m_layer_outlines[key.layer_nr], scale_(key.radius)); - const auto ret = m_collision_cache.insert({ key, std::move(collision_areas) }); - return ret.first->second; -} - -const ExPolygons& TreeSupportData::calculate_avoidance(const RadiusLayerPair& key) const -{ - const auto& radius = key.radius; - const auto& layer_nr = key.layer_nr; - BOOST_LOG_TRIVIAL(debug) << "calculate_avoidance on radius=" << radius << ", layer=" << layer_nr<<", recursion="< 0; layers_below++) { layer_nr_next = layer_heights[layer_nr_next].next_layer_nr; } - // Check if we would exceed the recursion limit by trying to process this layer - if (layers_below >= max_recursion_depth && m_avoidance_cache.find({radius, layer_nr_next}) == m_avoidance_cache.end()) { - // Force the calculation of the layer `max_recursion_depth` below our current one, ignoring the result. - get_avoidance(radius, layer_nr_next, key.recursions + 1); - } - - layer_nr_next = layer_heights[layer_nr].next_layer_nr; - ExPolygons avoidance_areas = offset_ex(get_avoidance(radius, layer_nr_next, key.recursions+1), scale_(-m_max_move)); - const ExPolygons &collision = get_collision(radius, layer_nr); - avoidance_areas.insert(avoidance_areas.end(), collision.begin(), collision.end()); - avoidance_areas = std::move(union_ex(avoidance_areas)); - auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); - //assert(ret.second); - return ret.first->second; - } else { - ExPolygons avoidance_areas = offset_ex(m_layer_outlines_below[layer_nr], scale_(m_xy_distance + radius)); - auto ret = m_avoidance_cache.insert({ key, std::move(avoidance_areas) }); - assert(ret.second); - return ret.first->second; - } -} - -} //namespace Slic3r diff --git a/src/libslic3r/TreeSupport.hpp b/src/libslic3r/TreeSupport.hpp deleted file mode 100644 index 2f3546ed234..00000000000 --- a/src/libslic3r/TreeSupport.hpp +++ /dev/null @@ -1,511 +0,0 @@ -#ifndef TREESUPPORT_H -#define TREESUPPORT_H - -#include -#include -#include "ExPolygon.hpp" -#include "Point.hpp" -#include "Slicing.hpp" -#include "MinimumSpanningTree.hpp" -#include "tbb/concurrent_unordered_map.h" -#include "Flow.hpp" -#include "PrintConfig.hpp" -#include "Fill/Lightning/Generator.hpp" - -#ifndef SQ -#define SQ(x) ((x)*(x)) -#endif - -namespace Slic3r -{ -class PrintObject; -class TreeSupport; -class SupportLayer; - -struct LayerHeightData -{ - coordf_t print_z = 0; - coordf_t height = 0; - size_t next_layer_nr = 0; - LayerHeightData() = default; - LayerHeightData(coordf_t z, coordf_t h, size_t next_layer) : print_z(z), height(h), next_layer_nr(next_layer) {} -}; - -struct TreeNode { - Vec3f pos; - std::vector children; // index of children in the storing vector - std::vector parents; // index of parents in the storing vector - TreeNode(Point pt, float z) { - pos = { float(unscale_(pt.x())),float(unscale_(pt.y())),z }; - } -}; - -/*! - * \brief Lazily generates tree guidance volumes. - * - * \warning This class is not currently thread-safe and should not be accessed in OpenMP blocks - */ -class TreeSupportData -{ -public: - TreeSupportData() = default; - /*! - * \brief Construct the TreeSupportData object - * - * \param xy_distance The required clearance between the model and the - * tree branches. - * \param max_move The maximum allowable movement between nodes on - * adjacent layers - * \param radius_sample_resolution Sample size used to round requested node radii. - * \param collision_resolution - */ - TreeSupportData(const PrintObject& object, coordf_t max_move, coordf_t radius_sample_resolution, coordf_t collision_resolution); - - TreeSupportData(TreeSupportData&&) = default; - TreeSupportData& operator=(TreeSupportData&&) = default; - - TreeSupportData(const TreeSupportData&) = delete; - TreeSupportData& operator=(const TreeSupportData&) = delete; - - /*! - * \brief Creates the areas that have to be avoided by the tree's branches. - * - * The result is a 2D area that would cause nodes of radius \p radius to - * collide with the model. - * - * \param radius The radius of the node of interest - * \param layer The layer of interest - * \return Polygons object - */ - const ExPolygons& get_collision(coordf_t radius, size_t layer_idx) const; - - /*! - * \brief Creates the areas that have to be avoided by the tree's branches - * in order to reach the build plate. - * - * The result is a 2D area that would cause nodes of radius \p radius to - * collide with the model or be unable to reach the build platform. - * - * The input collision areas are inset by the maximum move distance and - * propagated upwards. - * - * \param radius The radius of the node of interest - * \param layer The layer of interest - * \return Polygons object - */ - const ExPolygons& get_avoidance(coordf_t radius, size_t layer_idx, int recursions=0) const; - - Polygons get_contours(size_t layer_nr) const; - Polygons get_contours_with_holes(size_t layer_nr) const; - - std::vector layer_heights; - - std::vector tree_nodes; - -private: - /*! - * \brief Convenience typedef for the keys to the caches - */ - struct RadiusLayerPair { - coordf_t radius; - size_t layer_nr; - int recursions; - - }; - struct RadiusLayerPairEquality { - constexpr bool operator()(const RadiusLayerPair& _Left, const RadiusLayerPair& _Right) const { - return _Left.radius == _Right.radius && _Left.layer_nr == _Right.layer_nr; - } - }; - struct RadiusLayerPairHash { - size_t operator()(const RadiusLayerPair& elem) const { - return std::hash()(elem.radius) ^ std::hash()(elem.layer_nr * 7919); - } - }; - - /*! - * \brief Round \p radius upwards to a multiple of m_radius_sample_resolution - * - * \param radius The radius of the node of interest - */ - coordf_t ceil_radius(coordf_t radius) const; - - /*! - * \brief Calculate the collision areas at the radius and layer indicated - * by \p key. - * - * \param key The radius and layer of the node of interest - */ - const ExPolygons& calculate_collision(const RadiusLayerPair& key) const; - - /*! - * \brief Calculate the avoidance areas at the radius and layer indicated - * by \p key. - * - * \param key The radius and layer of the node of interest - */ - const ExPolygons& calculate_avoidance(const RadiusLayerPair& key) const; - - -public: - bool is_slim = false; - /*! - * \brief The required clearance between the model and the tree branches - */ - coordf_t m_xy_distance; - - /*! - * \brief The maximum distance that the centrepoint of a tree branch may - * move in consequtive layers - */ - coordf_t m_max_move; - - /*! - * \brief Sample resolution for radius values. - * - * The radius will be rounded (upwards) to multiples of this value before - * calculations are done when collision, avoidance and internal model - * Polygons are requested. - */ - coordf_t m_radius_sample_resolution; - - /*! - * \brief Storage for layer outlines of the meshes. - */ - std::vector m_layer_outlines; - - // union contours of all layers below - std::vector m_layer_outlines_below; - - /*! - * \brief Caches for the collision, avoidance and internal model polygons - * at given radius and layer indices. - * - * These are mutable to allow modification from const function. This is - * generally considered OK as the functions are still logically const - * (ie there is no difference in behaviour for the user betweeen - * calculating the values each time vs caching the results). - * - * coconut: previously stl::unordered_map is used which seems problematic with tbb::parallel_for. - * So we change to tbb::concurrent_unordered_map - */ - mutable tbb::concurrent_unordered_map m_collision_cache; - mutable tbb::concurrent_unordered_map m_avoidance_cache; - - friend TreeSupport; -}; - -struct LineHash { - size_t operator()(const Line& line) const { - return (std::hash()(line.a(0)) ^ std::hash()(line.b(1))) * 102 + - (std::hash()(line.a(1)) ^ std::hash()(line.b(0))) * 10222; - } -}; - -/*! - * \brief Generates a tree structure to support your models. - */ -class TreeSupport -{ -public: - /*! - * \brief Creates an instance of the tree support generator. - * - * \param storage The data storage to get global settings from. - */ - TreeSupport(PrintObject& object, const SlicingParameters &slicing_params); - - /*! - * \brief Create the areas that need support. - * - * These areas are stored inside the given SliceDataStorage object. - * \param storage The data storage where the mesh data is gotten from and - * where the resulting support areas are stored. - */ - void generate(); - - void detect_overhangs(bool detect_first_sharp_tail_only=false); - - enum NodeType { - eCircle, - eSquare, - ePolygon - }; - - /*! - * \brief Represents the metadata of a node in the tree. - */ - struct Node - { - static constexpr Node* NO_PARENT = nullptr; - - Node() - : distance_to_top(0) - , position(Point(0, 0)) - , obj_layer_nr(0) - , support_roof_layers_below(0) - , support_floor_layers_above(0) - , to_buildplate(true) - , parent(nullptr) - , print_z(0.0) - , height(0.0) - {} - - // when dist_mm_to_top_==0, new node's dist_mm_to_top=parent->dist_mm_to_top + parent->height; - Node(const Point position, const int distance_to_top, const int obj_layer_nr, const int support_roof_layers_below, const bool to_buildplate, Node* parent, - coordf_t print_z_, coordf_t height_, coordf_t dist_mm_to_top_=0) - : distance_to_top(distance_to_top) - , position(position) - , obj_layer_nr(obj_layer_nr) - , support_roof_layers_below(support_roof_layers_below) - , support_floor_layers_above(0) - , to_buildplate(to_buildplate) - , parent(parent) - , print_z(print_z_) - , height(height_) - , dist_mm_to_top(dist_mm_to_top_) - { - if (parent) { - type = parent->type; - overhang = parent->overhang; - if (dist_mm_to_top==0) - dist_mm_to_top = parent->dist_mm_to_top + parent->height; - parent->child = this; - for (auto& neighbor : parent->merged_neighbours) - neighbor->child = this; - } - } - -#ifdef DEBUG // Clear the delete node's data so if there's invalid access after, we may get a clue by inspecting that node. - ~Node() - { - parent = nullptr; - merged_neighbours.clear(); - } -#endif // DEBUG - - /*! - * \brief The number of layers to go to the top of this branch. - * Negative value means it's a virtual node between support and overhang, which doesn't need to be extruded. - */ - int distance_to_top; - coordf_t dist_mm_to_top = 0; // dist to bottom contact in mm - - /*! - * \brief The position of this node on the layer. - */ - Point position; - Point movement; // movement towards neighbor center or outline - mutable double radius = 0.0; - mutable double max_move_dist = 0.0; - NodeType type = eCircle; - bool is_merged = false; // this node is generated by merging upper nodes - bool is_corner = false; - bool is_processed = false; - const ExPolygon *overhang = nullptr; // when type==ePolygon, set this value to get original overhang area - - /*! - * \brief The direction of the skin lines above the tip of the branch. - * - * This determines in which direction we should reduce the width of the - * branch. - */ - bool skin_direction; - - /*! - * \brief The number of support roof layers below this one. - * - * When a contact point is created, it is determined whether the mesh - * needs to be supported with support roof or not, since that is a - * per-mesh setting. This is stored in this variable in order to track - * how far we need to extend that support roof downwards. - */ - int support_roof_layers_below; - int support_floor_layers_above; - int obj_layer_nr; - - /*! - * \brief Whether to try to go towards the build plate. - * - * If the node is inside the collision areas, it has no choice but to go - * towards the model. If it is not inside the collision areas, it must - * go towards the build plate to prevent a scar on the surface. - */ - bool to_buildplate; - - /*! - * \brief The originating node for this one, one layer higher. - * - * In order to prune branches that can't have any support (because they - * can't be on the model and the path to the buildplate isn't clear), - * the entire branch needs to be known. - */ - Node *parent; - Node *child = nullptr; - - /*! - * \brief All neighbours (on the same layer) that where merged into this node. - * - * In order to prune branches that can't have any support (because they - * can't be on the model and the path to the buildplate isn't clear), - * the entire branch needs to be known. - */ - std::list merged_neighbours; - - coordf_t print_z; - coordf_t height; - - bool operator==(const Node& other) const - { - return position == other.position; - } - }; - - struct SupportParams - { - Flow first_layer_flow; - Flow support_material_flow; - Flow support_material_interface_flow; - Flow support_material_bottom_interface_flow; - coordf_t support_extrusion_width; - // Is merging of regions allowed? Could the interface & base support regions be printed with the same extruder? - bool can_merge_support_regions; - - coordf_t support_layer_height_min; - // coordf_t support_layer_height_max; - - coordf_t gap_xy; - - float base_angle; - float interface_angle; - coordf_t interface_spacing; - coordf_t interface_density; - coordf_t support_spacing; - coordf_t support_density; - - InfillPattern base_fill_pattern; - InfillPattern interface_fill_pattern; - InfillPattern contact_fill_pattern; - bool with_sheath; - const double thresh_big_overhang = SQ(scale_(10)); - }; - - int avg_node_per_layer = 0; - float nodes_angle = 0; - bool has_overhangs = false; - bool has_sharp_tails = false; - bool has_cantilever = false; - double max_cantilever_dist = 0; - SupportType support_type; - SupportMaterialStyle support_style; - - std::unique_ptr generator; - std::unordered_map printZ_to_lightninglayer; -private: - /*! - * \brief Generator for model collision, avoidance and internal guide volumes - * - * Lazily computes volumes as needed. - * \warning This class is NOT currently thread-safe and should not be accessed in OpenMP blocks - */ - std::shared_ptr m_ts_data; - PrintObject *m_object; - const PrintObjectConfig *m_object_config; - SlicingParameters m_slicing_params; - // Various precomputed support parameters to be shared with external functions. - SupportParams m_support_params; - size_t m_raft_layers = 0; - size_t m_highest_overhang_layer = 0; - std::vector> m_spanning_trees; - std::vector< std::unordered_map> m_mst_line_x_layer_contour_caches; - coordf_t MAX_BRANCH_RADIUS = 10.0; - coordf_t MAX_BRANCH_RADIUS_FIRST_LAYER = 12.0; - coordf_t MIN_BRANCH_RADIUS = 0.5; - float tree_support_branch_diameter_angle = 5.0; - bool is_strong = false; - bool is_slim = false; - bool with_infill = false; - - - /*! - * \brief Polygons representing the limits of the printable area of the - * machine - */ - ExPolygon m_machine_border; - - /*! - * \brief Draws circles around each node of the tree into the final support. - * - * This also handles the areas that have to become support roof, support - * bottom, the Z distances, etc. - * - * \param storage[in, out] The settings storage to get settings from and to - * save the resulting support polygons to. - * \param contact_nodes The nodes to draw as support. - */ - void draw_circles(const std::vector>& contact_nodes); - - /*! - * \brief Drops down the nodes of the tree support towards the build plate. - * - * This is where the cleverness of tree support comes in: The nodes stay on - * their 2D layers but on the next layer they are slightly shifted. This - * causes them to move towards each other as they are copied to lower layers - * which ultimately results in a 3D tree. - * - * \param contact_nodes[in, out] The nodes in the space that need to be - * dropped down. The nodes are dropped to lower layers inside the same - * vector of layers. - */ - void drop_nodes(std::vector> &contact_nodes); - - void smooth_nodes(std::vector> &contact_nodes); - - void adjust_layer_heights(std::vector>& contact_nodes); - - /*! BBS: MusangKing: maximum layer height - * \brief Optimize the generation of tree support by pre-planning the layer_heights - * - */ - - std::vector plan_layer_heights(std::vector> &contact_nodes); - /*! - * \brief Creates points where support contacts the model. - * - * A set of points is created for each layer. - * \param mesh The mesh to get the overhang areas to support of. - * \param contact_nodes[out] A vector of mappings from contact points to - * their tree nodes. - * \param collision_areas For every layer, the areas where a generated - * contact point would immediately collide with the model due to the X/Y - * distance. - * \return For each layer, a list of points where the tree should connect - * with the model. - */ - void generate_contact_points(std::vector>& contact_nodes); - - /*! - * \brief Add a node to the next layer. - * - * If a node is already at that position in the layer, the nodes are merged. - */ - void insert_dropped_node(std::vector& nodes_layer, Node* node); - void create_tree_support_layers(); - void generate_toolpaths(); - Polygons spanning_tree_to_polygon(const std::vector& spanning_trees, Polygons layer_contours, int layer_nr); - Polygons contact_nodes_to_polygon(const std::vector& contact_nodes, Polygons layer_contours, int layer_nr, std::vector& radiis, std::vector& is_interface); - coordf_t calc_branch_radius(coordf_t base_radius, size_t layers_to_top, size_t tip_layers, double diameter_angle_scale_factor); - coordf_t calc_branch_radius(coordf_t base_radius, coordf_t mm_to_top, double diameter_angle_scale_factor); - - // similar to SupportMaterial::trim_support_layers_by_object - Polygons get_trim_support_regions( - const PrintObject& object, - SupportLayer* support_layer_ptr, - const coordf_t gap_extra_above, - const coordf_t gap_extra_below, - const coordf_t gap_xy); -}; - -} - -#endif /* TREESUPPORT_H */ From ff265745c6b79dc72e0c5f212478ca3f3ef13d1e Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 30 Sep 2024 13:45:29 +0800 Subject: [PATCH 26/64] Update `PrintObject::_generate_support_material()` to match BBS --- src/libslic3r/PrintObject.cpp | 21 ++++++++------------- src/libslic3r/Support/TreeSupport.cpp | 17 ++++++++++------- src/libslic3r/Support/TreeSupport.hpp | 2 ++ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index ce9536d708c..528a72e7086 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -11,7 +11,6 @@ #include "Support/SupportMaterial.hpp" #include "Support/SupportSpotsGenerator.hpp" #include "Support/TreeSupport.hpp" -#include "Support/TreeSupport3D.hpp" #include "Surface.hpp" #include "Slicing.hpp" #include "Tesselate.hpp" @@ -3521,18 +3520,14 @@ void PrintObject::combine_infill() void PrintObject::_generate_support_material() { - PrintObjectSupportMaterial support_material(this, m_slicing_params); - support_material.generate(*this); - - if (this->config().enable_support.value && is_tree(this->config().support_type.value)) { - if (this->config().support_style.value == smsOrganic || - // Orca: use organic as default - this->config().support_style.value == smsDefault) { - generate_tree_support_3D(*this, std::function([this]() { this->throw_if_canceled(); })); - } else { - TreeSupport tree_support(*this, m_slicing_params); - tree_support.generate(); - } + if (is_tree(m_config.support_type.value)) { + TreeSupport tree_support(*this, m_slicing_params); + tree_support.throw_on_cancel = [this]() { this->throw_if_canceled(); }; + tree_support.generate(); + } + else { + PrintObjectSupportMaterial support_material(this, m_slicing_params); + support_material.generate(*this); } } diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index dc4f9998ff0..a0440bfcaf7 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -11,6 +11,7 @@ #include "ShortestPath.hpp" #include "I18N.hpp" #include +#include "TreeSupport3D.hpp" #include #include @@ -672,14 +673,15 @@ TreeSupport::TreeSupport(PrintObject& object, const SlicingParameters &slicing_p support_type = m_object_config->support_type; support_style = m_object_config->support_style; if (support_style == smsDefault) - support_style = smsTreeHybrid; + // Orca: use organic as default + support_style = smsOrganic; SupportMaterialPattern support_pattern = m_object_config->support_base_pattern; - if (support_style == smsTreeHybrid && support_pattern == smpDefault) support_pattern = smpRectilinear; - m_support_params.base_fill_pattern = + if (support_style == smsTreeHybrid && support_pattern == smpDefault) + support_pattern = smpRectilinear; + m_support_params.base_fill_pattern = support_pattern == smpLightning ? ipLightning : support_pattern == smpHoneycomb ? ipHoneycomb : - m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : - ipSupportBase; + m_support_params.support_density > 0.95 || m_support_params.with_sheath ? ipRectilinear : ipSupportBase; m_support_params.interface_fill_pattern = (m_support_params.interface_density > 0.95 ? ipRectilinear : ipSupportBase); if (m_object_config->support_interface_pattern == smipGrid) @@ -1879,9 +1881,10 @@ Polygons TreeSupport::contact_nodes_to_polygon(const std::vector& contact void TreeSupport::generate() { - bool tree_support_enable = m_object_config->enable_support.value && is_tree(m_object_config->support_type.value); - if (!tree_support_enable) + if (support_style == smsOrganic) { + generate_tree_support_3D(*m_object, this->throw_on_cancel); return; + } std::vector> contact_nodes(m_object->layers().size()); diff --git a/src/libslic3r/Support/TreeSupport.hpp b/src/libslic3r/Support/TreeSupport.hpp index 2f3546ed234..17e146ddcd6 100644 --- a/src/libslic3r/Support/TreeSupport.hpp +++ b/src/libslic3r/Support/TreeSupport.hpp @@ -401,6 +401,8 @@ class TreeSupport std::unique_ptr generator; std::unordered_map printZ_to_lightninglayer; + + std::function throw_on_cancel; private: /*! * \brief Generator for model collision, avoidance and internal guide volumes From ebed03ea92928c43b31fd5f13654b71072842ba6 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 30 Sep 2024 14:18:30 +0800 Subject: [PATCH 27/64] Fix compile warning --- src/libslic3r/Support/TreeSupportCommon.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/Support/TreeSupportCommon.hpp b/src/libslic3r/Support/TreeSupportCommon.hpp index 1dc8b309d6c..50ca626fa3f 100644 --- a/src/libslic3r/Support/TreeSupportCommon.hpp +++ b/src/libslic3r/Support/TreeSupportCommon.hpp @@ -619,7 +619,7 @@ static constexpr const bool polygons_strictly_simple = false; inline double tiny_area_threshold() { return sqr(scaled(0.001)); } -void tree_supports_show_error(std::string_view message, bool critical) +inline void tree_supports_show_error(std::string_view message, bool critical) { // todo Remove! ONLY FOR PUBLIC BETA!! printf("Error: %s, critical: %d\n", message.data(), int(critical)); #ifdef TREE_SUPPORT_SHOW_ERRORS_WIN32 From cedb939f4ea072ef490720feec9691f55918dd2e Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Mon, 30 Sep 2024 14:31:22 +0800 Subject: [PATCH 28/64] Fix compile error --- src/libslic3r/Support/TreeSupport3D.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/libslic3r/Support/TreeSupport3D.cpp b/src/libslic3r/Support/TreeSupport3D.cpp index 8a471fb6e1e..c96801e008d 100644 --- a/src/libslic3r/Support/TreeSupport3D.cpp +++ b/src/libslic3r/Support/TreeSupport3D.cpp @@ -3929,9 +3929,6 @@ static void organic_smooth_branches_avoid_collisions( } #endif // TREE_SUPPORT_ORGANIC_NUDGE_NEW -extern bool g_showed_critical_error; -extern bool g_showed_performance_warning; - /*! * \brief Create the areas that need support. * @@ -3941,9 +3938,6 @@ extern bool g_showed_performance_warning; */ static void generate_support_areas(Print &print, const BuildVolume &build_volume, const std::vector &print_object_ids, std::function throw_on_cancel) { - g_showed_critical_error = false; - g_showed_performance_warning = false; - // Settings with the indexes of meshes that use these settings. std::vector>> grouped_meshes = group_meshes(print, print_object_ids); if (grouped_meshes.empty()) From 5bb42bc0d59e30f4486df3fcb887c5240034f143 Mon Sep 17 00:00:00 2001 From: Ioannis Giannakas <59056762+igiannakas@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:54:14 +0100 Subject: [PATCH 29/64] Fix wipe tower issues with SEMM and ramming turned off (#6934) * Fix wipe tower issues with SEMM and ramming turned off * Purge tower last layer collision potential fix (for SEMM) * Revert "Purge tower last layer collision potential fix (for SEMM)" This reverts commit 9fc465c2d914adf58a74b0e5167dfb04646ef939. --- src/libslic3r/GCode/WipeTower2.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index bb8a7d471ef..67ffb9eb513 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -893,7 +893,8 @@ void WipeTower2::toolchange_Unload( float remaining = xr - xl ; // keeps track of distance to the next turnaround float e_done = 0; // measures E move done from each segment - const bool do_ramming = m_semm || m_filpar[m_current_tool].multitool_ramming; + // Orca: Do ramming when SEMM and ramming is enabled or when multi tool head when ramming is enabled on the multi tool. + const bool do_ramming = (m_semm && m_enable_filament_ramming) || m_filpar[m_current_tool].multitool_ramming; const bool cold_ramming = m_is_mk4mmu3; if (do_ramming) { @@ -1544,7 +1545,8 @@ void WipeTower2::plan_toolchange(float z_par, float layer_height_par, unsigned i float length_to_extrude = volume_to_length(0.25f * std::accumulate(m_filpar[old_tool].ramming_speed.begin(), m_filpar[old_tool].ramming_speed.end(), 0.f), m_perimeter_width * m_filpar[old_tool].ramming_line_width_multiplicator, layer_height_par); - float ramming_depth = (int(length_to_extrude / width) + 1) * (m_perimeter_width * m_filpar[old_tool].ramming_line_width_multiplicator * m_filpar[old_tool].ramming_step_multiplicator) * m_extra_spacing_ramming; + // Orca: Set ramming depth to 0 if ramming is disabled. + float ramming_depth = m_enable_filament_ramming ? ((int(length_to_extrude / width) + 1) * (m_perimeter_width * m_filpar[old_tool].ramming_line_width_multiplicator * m_filpar[old_tool].ramming_step_multiplicator) * m_extra_spacing_ramming) : 0; float first_wipe_line = - (width*((length_to_extrude / width)-int(length_to_extrude / width)) - width); float first_wipe_volume = length_to_volume(first_wipe_line, m_perimeter_width * m_extra_flow, layer_height_par); From a5d2fa1aed96b2d2d069ea3682c513480d3f579b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 1 Oct 2024 23:28:24 +0800 Subject: [PATCH 30/64] Fix an issue that wrong z value was used if a new layer is started with wipe tower extrusions. --- src/libslic3r/GCode.cpp | 16 ++++++++-------- src/libslic3r/GCode.hpp | 4 +--- src/libslic3r/GCodeWriter.hpp | 3 ++- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 572bbcc55b7..167a7987a7c 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -767,10 +767,10 @@ static std::vector get_path_of_change_filament(const Print& print) toolchange_gcode_str = gcodegen.set_extruder(new_extruder_id, tcr.print_z); // TODO: toolchange_z vs print_z if (gcodegen.config().enable_prime_tower) { deretraction_str += gcodegen.writer().travel_to_z(z, "restore layer Z"); - Vec3d position{gcodegen.writer().get_position()}; - position.z() = z; - gcodegen.writer().set_position(position); - deretraction_str += gcodegen.unretract(); + Vec3d position{gcodegen.writer().get_position()}; + position.z() = z; + gcodegen.writer().set_position(position); + deretraction_str += gcodegen.unretract(); } } @@ -4521,7 +4521,7 @@ std::string GCode::change_layer(coordf_t print_z) m_need_change_layer_lift_z = true; } - m_nominal_z = z; + m_writer.get_position().z() = z; // forget last wiping path as wiping after raising Z is pointless // BBS. Dont forget wiping path to reduce stringing. @@ -5095,7 +5095,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, const auto get_sloped_z = [&sloped, this](double z_ratio) { const auto height = sloped->height; - return lerp(m_nominal_z - height, m_nominal_z, z_ratio); + return lerp(m_writer.get_position().z() - height, m_writer.get_position().z(), z_ratio); }; // go to first point of extrusion path @@ -6011,7 +6011,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string if (travel.size() == 2) { // No extra movements emitted by avoid_crossing_perimeters, simply move to the end point with z change const auto& dest2d = this->point_to_gcode(travel.points.back()); - Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_nominal_z : z); + Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_writer.get_position().z() : z); gcode += m_writer.travel_to_xyz(dest3d, comment + " travel_to_xyz"); } else { // Extra movements emitted by avoid_crossing_perimeters, lift the z to normal height at the beginning, then apply the z @@ -6020,7 +6020,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string if (i == 1) { // Lift to normal z at beginning Vec2d dest2d = this->point_to_gcode(travel.points[i]); - Vec3d dest3d(dest2d(0), dest2d(1), m_nominal_z); + Vec3d dest3d(dest2d(0), dest2d(1), m_writer.get_position().z()); gcode += m_writer.travel_to_xyz(dest3d, comment + " travel_to_xyz"); } else if (z != DBL_MAX && i == travel.size() - 1) { // Apply z_ratio for the very last point diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index 843b4a39dad..eaf2c81b64a 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -184,8 +184,7 @@ class GCode { m_silent_time_estimator_enabled(false), m_last_obj_copy(nullptr, Point(std::numeric_limits::max(), std::numeric_limits::max())), // BBS - m_toolchange_count(0), - m_nominal_z(0.) + m_toolchange_count(0) {} ~GCode() = default; @@ -591,7 +590,6 @@ class GCode { // BBS Print* m_curr_print = nullptr; unsigned int m_toolchange_count; - coordf_t m_nominal_z; bool m_need_change_layer_lift_z = false; int m_start_gcode_filament = -1; diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index 28569e909de..5e5182014ef 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -81,7 +81,8 @@ class GCodeWriter { std::string unretract(); std::string lift(LiftType lift_type = LiftType::NormalLift, bool spiral_vase = false); std::string unlift(); - Vec3d get_position() const { return m_pos; } + const Vec3d& get_position() const { return m_pos; } + Vec3d& get_position() { return m_pos; } void set_position(const Vec3d& in) { m_pos = in; } double get_zhop() const { return m_lifted; } From d52e2cc1b2eb85c23892ab25d33ec731c66bbc92 Mon Sep 17 00:00:00 2001 From: azio25134 Date: Wed, 2 Oct 2024 15:37:49 -0700 Subject: [PATCH 31/64] making all four corners of the grid sharp instead of round --- src/slic3r/GUI/PartPlate.cpp | 54 ++---------------------------------- 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 5617700105e..db8b4856a52 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2541,59 +2541,9 @@ void PartPlate::generate_print_polygon(ExPolygon &print_polygon) } }; - int points_count = 8; - if (m_shape.size() == 4) - { - //rectangle case - for (int i = 0; i < 4; i++) - { - const Vec2d& p = m_shape[i]; - Vec2d center; - double start_angle, stop_angle, radius_x, radius_y, radius; - switch (i) { - case 0: - radius = 5.f; - center(0) = p(0) + radius; - center(1) = p(1) + radius; - start_angle = PI; - stop_angle = 1.5 * PI; - compute_points(center, radius, start_angle, stop_angle, points_count); - break; - case 1: - print_polygon.contour.append({ scale_(p(0)), scale_(p(1)) }); - break; - case 2: - radius_x = (int)(p(0)) % 10; - radius_y = (int)(p(1)) % 10; - radius = (radius_x > radius_y)?radius_y: radius_x; - if (radius < 5.0) - radius = 5.f; - center(0) = p(0) - radius; - center(1) = p(1) - radius; - start_angle = 0; - stop_angle = 0.5 * PI; - compute_points(center, radius, start_angle, stop_angle, points_count); - break; - case 3: - radius_x = (int)(p(0)) % 10; - radius_y = (int)(p(1)) % 10; - radius = (radius_x > radius_y)?radius_y: radius_x; - if (radius < 5.0) - radius = 5.f; - center(0) = p(0) + radius; - center(1) = p(1) - radius; - start_angle = 0.5 * PI; - stop_angle = PI; - compute_points(center, radius, start_angle, stop_angle, points_count); - break; - } - } - } - else { - for (const Vec2d& p : m_shape) { - print_polygon.contour.append({ scale_(p(0)), scale_(p(1)) }); + for (const Vec2d& p : m_shape) { + print_polygon.contour.append({scale_(p(0)), scale_(p(1))}); } - } } void PartPlate::generate_exclude_polygon(ExPolygon &exclude_polygon) From cffa0033cbeda560114d547138017a5aaa4ffdac Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Wed, 2 Oct 2024 18:57:45 -0400 Subject: [PATCH 32/64] Initial add of K1 SE --- resources/profiles/Creality.json | 12 ++ .../Creality/Creality K1 SE_cover.png | Bin 0 -> 29072 bytes .../creality_k1se_buildplate_model.stl | Bin 0 -> 316484 bytes .../creality_k1se_buildplate_texture.png | Bin 0 -> 9240 bytes .../Creality Generic ABS @K1-all.json | 3 +- .../Creality Generic ASA @K1-all.json | 3 +- .../Creality Generic PA-CF @K1-all.json | 1 + .../filament/Creality Generic PC @K1-all.json | 1 + .../Creality Generic PETG @K1-all.json | 3 +- .../Creality Generic PLA @K1-all.json | 3 +- ...eality Generic PLA High Speed @K1-all.json | 1 + .../Creality Generic PLA Matte @K1-all.json | 1 + .../Creality Generic PLA Silk @K1-all.json | 1 + .../Creality Generic PLA-CF @K1-all.json | 1 + .../Creality Generic TPU @K1-all.json | 3 +- .../machine/Creality K1 SE 0.4 nozzle.json | 134 ++++++++++++++++++ .../Creality/machine/Creality K1 SE.json | 12 ++ .../Creality/machine/fdm_machine_common.json | 2 - .../0.20mm Fast @Creality K1 SE 0.4.json | 110 ++++++++++++++ 19 files changed, 284 insertions(+), 7 deletions(-) create mode 100644 resources/profiles/Creality/Creality K1 SE_cover.png create mode 100644 resources/profiles/Creality/creality_k1se_buildplate_model.stl create mode 100644 resources/profiles/Creality/creality_k1se_buildplate_texture.png create mode 100644 resources/profiles/Creality/machine/Creality K1 SE 0.4 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality K1 SE.json create mode 100644 resources/profiles/Creality/process/0.20mm Fast @Creality K1 SE 0.4.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index b3786f6eb34..db39cb75139 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -107,6 +107,10 @@ { "name": "Creality K1 Max", "sub_path": "machine/Creality K1 Max.json" + }, + { + "name": "Creality K1 SE", + "sub_path": "machine/Creality K1 SE.json" } ], "process_list": [ @@ -698,6 +702,10 @@ "name": "0.20mm Standard @Creality K1Max (0.4 nozzle)", "sub_path": "process/0.20mm Standard @Creality K1Max (0.4 nozzle).json" }, + { + "name": "0.20mm Fast @Creality K1 SE 0.4", + "sub_path": "process/0.20mm Fast @Creality K1 SE 0.4.json" + }, { "name": "0.24mm Draft @Creality Ender3 0.2", "sub_path": "process/0.24mm Draft @Creality Ender3 0.2.json" @@ -1437,6 +1445,10 @@ { "name": "Creality K1 Max (0.8 nozzle)", "sub_path": "machine/Creality K1 Max (0.8 nozzle).json" + }, + { + "name": "Creality K1 SE 0.4 nozzle", + "sub_path": "machine/Creality K1 SE 0.4 nozzle.json" } ] } \ No newline at end of file diff --git a/resources/profiles/Creality/Creality K1 SE_cover.png b/resources/profiles/Creality/Creality K1 SE_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..85737cce6d8f59e03a891bbd5de16fac4405129c GIT binary patch literal 29072 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/creality_k1se_buildplate_texture.png b/resources/profiles/Creality/creality_k1se_buildplate_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..cde0238078136a3c608abada5ff0ed60f6a1f5de GIT binary patch literal 9240 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 Date: Thu, 3 Oct 2024 23:35:05 +0800 Subject: [PATCH 33/64] Fix issue that `z` is not properly set in some cases when clipping polygon (#6955) Fix issue that `z` is not properly set in some cases when clipping the polygon (SoftFever/OrcaSlicer#6933) Apply the patch from https://sourceforge.net/p/polyclipping/bugs/160/ --- src/clipper/clipper.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/clipper/clipper.cpp b/src/clipper/clipper.cpp index cdab3591666..4f926ff4b5b 100644 --- a/src/clipper/clipper.cpp +++ b/src/clipper/clipper.cpp @@ -2290,7 +2290,11 @@ void Clipper::ProcessHorizontal(TEdge *horzEdge) if (horzEdge->OutIdx >= 0 && !IsOpen) //note: may be done multiple times { - op1 = AddOutPt(horzEdge, e->Curr); +#ifdef CLIPPERLIB_USE_XYZ + if (dir == dLeftToRight) SetZ(e->Curr, *horzEdge, *e); + else SetZ(e->Curr, *e, *horzEdge); +#endif + op1 = AddOutPt(horzEdge, e->Curr); TEdge* eNextHorz = m_SortedEdges; while (eNextHorz) { @@ -2614,7 +2618,10 @@ void Clipper::ProcessEdgesAtTopOfScanbeam(const cInt topY) { e->Curr.x() = TopX( *e, topY ); e->Curr.y() = topY; - } +#ifdef CLIPPERLIB_USE_XYZ + e->Curr.z() = topY == e->Top.y() ? e->Top.z() : (topY == e->Bot.y() ? e->Bot.z() : 0); +#endif + } //When StrictlySimple and 'e' is being touched by another edge, then //make sure both edges have a vertex here ... From 71aa30f41fc74db09b08ae0e2786ee5fc1ea7929 Mon Sep 17 00:00:00 2001 From: Carlos Francisco Caruncho Serrano Date: Thu, 3 Oct 2024 17:36:12 +0200 Subject: [PATCH 34/64] Fix Spanish String (#6946) * Update OrcaSlicer_es.po --- localization/i18n/es/OrcaSlicer_es.po | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index e5c16dd34b6..645858d74ce 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -4891,7 +4891,7 @@ msgid "Show object overhang highlight in 3D scene" msgstr "Mostrar resalte de voladizos de objeto en escena 3D" msgid "Show Selected Outline (Experimental)" -msgstr "Mostrar esquema seleccionado (Experimental)" +msgstr "Mostrar Contorno Seleccionado (Experimental)" msgid "Show outline around selected object in 3D scene" msgstr "Mostrar el contorno alrededor del objeto seleccionado en la escena 3D" @@ -7987,7 +7987,7 @@ 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 "" -"Temperatura del lecho cuando la Bandeja PEI Texturizada está instalada. El " +"Temperatura de la cama cuando la Bandeja PEI Texturizada está instalada. El " "valor 0 significa que el filamento no es compatible para imprimir en la " "Bandeja PEI Texturizada" @@ -15180,13 +15180,14 @@ msgstr "Tamaño del cuadro delimitador de la primera capa" msgid "Bottom-left corner of print bed bounding box" msgstr "" -"Esquina inferior izquierda del cuadro delimitador del lecho de impresión" +"Esquina inferior izquierda del cuadro delimitador de la cama de impresión" msgid "Top-right corner of print bed bounding box" -msgstr "Esquina superior derecha del cuadro delimitador del lecho de impresión" +msgstr "" +"Esquina superior derecha del cuadro delimitador de la cama de impresión" msgid "Size of the print bed bounding box" -msgstr "Tamaño del cuadro delimitador del lecho de impresión" +msgstr "Tamaño del cuadro delimitador de la cama de impresión" msgid "Timestamp" msgstr "Marca de tiempo" @@ -17729,7 +17730,7 @@ msgid "" msgstr "" "Evite la deformación\n" "Sabías que al imprimir materiales propensos a la deformación como el ABS, " -"aumentar adecuadamente la temperatura del lecho térmico puede reducir la " +"aumentar adecuadamente la temperatura de la cama térmica puede reducir la " "probabilidad de deformaciones." #~ msgid "Cool Plate" From ec94b9086f5e843d30afea7e2178463af2de2ac8 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 3 Oct 2024 22:36:38 +0700 Subject: [PATCH 35/64] Russian translation update (#6939) * Russian translation update The next russian translation update OrcaSlicer V2.1.1 Official Release. The work done to improve translation, corrected errors. Thx. * Russian translation update The next russian translation update OrcaSlicer v2.2.0-beta2. The work done to improve translation, corrected errors. Thx. * Russian translation update The next russian translation update OrcaSlicer V2.2.0-beta2 + 3 lines in text.js The work done to improve translation, corrected errors. Thx. --- localization/i18n/ru/OrcaSlicer_ru.po | 2181 +++++++++++-------------- resources/web/data/text.js | 3 + 2 files changed, 932 insertions(+), 1252 deletions(-) diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index f29f53320e1..f40ed733b24 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -2,23 +2,22 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# EDITOR , YEAR. # msgid "" msgstr "" -"Project-Id-Version: OrcaSlicer V2.0.0 Official Release\n" +"Project-Id-Version: OrcaSlicer V2.2.0-beta2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-25 19:57+0800\n" -"PO-Revision-Date: 2024-09-15 13:34+0300\n" +"PO-Revision-Date: 2024-09-25 22:36+0700\n" "Last-Translator: \n" -"Language-Team: andylg@yandex.ru\n" +"Language-Team: Andylg \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.4.2\n" +"X-Generator: Poedit 3.5\n" msgid "Supports Painting" msgstr "Рисование поддержек" @@ -142,7 +141,7 @@ msgid "Edge detection" msgstr "Обнаружение граней" msgid "Triangles" -msgstr "Треугольников" +msgstr "Треугольники" msgid "Filaments" msgstr "Прутки" @@ -416,6 +415,7 @@ msgstr "Удалить соединение из выбранного" msgid "Select all connectors" msgstr "Выбрать все соединения" +# Разный перевод одного слова -Одно название действия Разрезать в другой в Правке -> Вырезать msgid "Cut" msgstr "Разрезать" @@ -605,17 +605,19 @@ msgstr "Показывать каркас" msgid "%1%" msgstr "%1%" +# ??? msgid "Can't apply when process preview." -msgstr "Невозможно применить при предпросмотре." +msgstr "Невозможно применить при предпросмотре нарезки." msgid "Operation already cancelling. Please wait few seconds." msgstr "Операция уже отменена. Пожалуйста, подождите несколько секунд." msgid "Face recognition" -msgstr "Распознавание лицевых граней" +msgstr "Распознавание граней" +# ??? Выполнить распознавание msgid "Perform Recognition" -msgstr "Выполнить распознавание" +msgstr "Выполнение распознавания" msgid "Brush size" msgstr "Размер кисти" @@ -1275,7 +1277,7 @@ msgstr "Парсер NanoSVG не может прочитать файл (%1%)." #, boost-format msgid "SVG file does NOT contain a single path to be embossed (%1%)." -msgstr "Файл SVG не содержит ни одного пути для рельефного текта (%1%)." +msgstr "Файл SVG не содержит ни одного контура для рельефного текста (%1%)." msgid "Vertex" msgstr "Вершина" @@ -1302,7 +1304,7 @@ msgid "Center of circle" msgstr "Центр окружности" msgid "ShiftLeft mouse button" -msgstr "Shift + Левая кнопка мыши" +msgstr "Левая кнопка мыши" msgid "Select feature" msgstr "Выбрать элемент" @@ -1310,6 +1312,7 @@ msgstr "Выбрать элемент" msgid "Select point" msgstr "Выбрать точку" +# ?????? В двух местах - в одном месте действие в другом кнопка, как быть? msgid "Delete" msgstr "Удалить" @@ -1323,7 +1326,7 @@ msgid "Unselect" msgstr "Отменить выбор" msgid "Measure" -msgstr "Измерение" +msgstr "Измерения" msgid "Edit to scale" msgstr "Редактировать масштаб" @@ -1378,11 +1381,13 @@ msgstr "Возможно, эта конфигурация создана в бо msgid "Some values have been replaced. Please check them:" msgstr "Некоторые значения были заменены. Пожалуйста, проверьте их:" +# ?????6 В одном месте юзается? msgid "Process" -msgstr "Процесс" +msgstr "Профиль процесса" +# ?????6 В одном месте юзается? msgid "Filament" -msgstr "Пруток" +msgstr "Профиль прутка" msgid "Machine" msgstr "Принтер" @@ -1436,7 +1441,7 @@ msgstr "Неверный пароль" #, c-format, boost-format msgid "Connect %s failed! [SN:%s, code=%s]" -msgstr "Сбой подключения к %s! [Серийный №:%s, код=%s]" +msgstr "Сбой подключения к %s [Серийный №:%s, код=%s]!" msgid "" "Orca Slicer requires the Microsoft WebView2 Runtime to operate certain " @@ -1632,13 +1637,13 @@ msgid "Strength" msgstr "Прочность" msgid "Top Solid Layers" -msgstr "Верхних сплошных слоёв" +msgstr "Сплошных слоёв сверху" msgid "Top Minimum Shell Thickness" msgstr "Минимальная толщина оболочки сверху" msgid "Bottom Solid Layers" -msgstr "Нижних сплошных слоёв" +msgstr "Сплошных слоёв снизу" msgid "Bottom Minimum Shell Thickness" msgstr "Минимальная толщина оболочки снизу" @@ -1802,10 +1807,10 @@ msgid "Reload the selected parts from disk" msgstr "Перезагрузить выбранные модели с диска" msgid "Replace with STL" -msgstr "Заменить на другой STL" +msgstr "Заменить на другую модель" msgid "Replace the selected part with new STL" -msgstr "Заменить выбранный объект другим STL файлом" +msgstr "Заменить выбранную модель другой" msgid "Change filament" msgstr "Сменить пруток" @@ -1856,6 +1861,7 @@ msgstr "Преобразовать размеры из метров" msgid "Restore to meter" msgstr "Восстановить размеры в метры" +# при выборе на столе msgid "Assemble" msgstr "Объединить в сборку" @@ -1990,7 +1996,7 @@ msgid "Center" msgstr "По центру" msgid "Drop" -msgstr "Сбросить" +msgstr "Опустить на стол" msgid "Edit Process Settings" msgstr "Редактировать настройки процесса печати" @@ -2086,15 +2092,15 @@ 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 "Удаление соединения из модели, которое является частью разреза" @@ -2178,15 +2184,15 @@ 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 "" -"Если первый выбранный элемент является частью, то второй должен быть частью " -"той же модели." +"Если первый выбранный элемент является частью модели, то второй должен быть " +"частью той же модели." msgid "The type of the last solid object part is not to be changed." msgstr "Вы не можете изменить тип последнего твердотельного элемента модели." @@ -2214,15 +2220,15 @@ msgstr "Переименование" msgid "Following model object has been repaired" msgid_plural "Following model objects have been repaired" -msgstr[0] "Следующая часть модели успешно отремонтирована" -msgstr[1] "Следующие части модели успешно отремонтированы" -msgstr[2] "Следующие части модели успешно отремонтированы" +msgstr[0] "Следующая модель были успешно починена" +msgstr[1] "Следующие модели были успешно починены" +msgstr[2] "Следующие модели были успешно починены" msgid "Failed to repair following model object" msgid_plural "Failed to repair following model objects" -msgstr[0] "Не удалось починить следующую часть модели" -msgstr[1] "Не удалось починить следующие части модели" -msgstr[2] "Не удалось починить следующие части модели" +msgstr[0] "Не удалось починить следующую модель" +msgstr[1] "Не удалось починить следующие модели" +msgstr[2] "Не удалось починить следующие модели" msgid "Repairing was canceled" msgstr "Ремонт был отменён" @@ -2332,7 +2338,7 @@ msgid "Pause:" msgstr "Пауза:" msgid "Custom Template:" -msgstr "Пользовательский шаблон:" +msgstr "Шаблон пользовательского G-кода:" msgid "Custom G-code:" msgstr "Пользовательский G-код:" @@ -2362,10 +2368,10 @@ msgid "Insert custom G-code at the beginning of this layer." msgstr "Вставить пользовательский G-код в начале этого слоя." msgid "Add Custom Template" -msgstr "Добавить пользовательский шаблон" +msgstr "Добавить шаблон пользовательского G-кода" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "Вставить пользовательский шаблон G-кода в начале этого слоя." +msgstr "Вставить шаблон пользовательского G-кода в начале этого слоя." msgid "Filament " msgstr "Пруток " @@ -2377,7 +2383,7 @@ msgid "Delete Pause" msgstr "Удалить паузу печати" msgid "Delete Custom Template" -msgstr "Удалить пользовательский шаблон" +msgstr "Удалить шаблон пользовательского G-кода" msgid "Edit Custom G-code" msgstr "Изменить пользовательский G-код" @@ -2411,7 +2417,7 @@ msgstr "" "Для просмотра состояния статуса сервиса нажмите на вышерасположенную ссылку" msgid "Failed to connect to the printer" -msgstr "Не удалось подключиться к принтеру." +msgstr "Не удалось подключиться к принтеру" msgid "Connection to printer failed" msgstr "Не удалось подключиться к принтеру" @@ -2435,18 +2441,18 @@ msgid "AMS" msgstr "АСПП" msgid "Auto Refill" -msgstr "Дозаправка" +msgstr "Автодозаправка" msgid "AMS not connected" msgstr "АСПП не подключена" -# Загрузить +# ???? кнопка в интерфейсе? Extrude - Выдавить - Load msgid "Load" -msgstr "Втянуть" +msgstr "Выдавить" -# Выгрузить +# ???? кнопка в интерфейсе? retract - Втянуть - Unload (Выгрузить, Вырузка) msgid "Unload" -msgstr "Выдавить" +msgstr "Втянуть" msgid "Ext Spool" msgstr "Внеш. катушка" @@ -2630,14 +2636,15 @@ msgid "Cloud service connection failed. Please try again." msgstr "" "Не удалось подключиться к облачному сервису. Пожалуйста, попробуйте ещё раз." +# Print file - речь про g-код msgid "Print file not found. please slice again." -msgstr "Файл для печати не найден, нарежьте ещё раз." +msgstr "Файл печати не найден, нарежьте ещё раз." msgid "" "The print file exceeds the maximum allowable size (1GB). Please simplify the " "model and slice again." msgstr "" -"Файл для печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, " +"Файл печати превышает максимально допустимый размер (1 ГБ). Пожалуйста, " "упростите модель и нарежьте ещё раз." msgid "Failed to send the print job. Please try again." @@ -2662,7 +2669,7 @@ msgstr "" msgid "Print file not found, Please slice it again and send it for printing." msgstr "" -"Файл для печати не найден. Пожалуйста, нарежьте его ещё раз и отправьте на " +"Файл печати не найден. Пожалуйста, нарежьте его ещё раз и отправьте на " "печать." msgid "" @@ -2806,8 +2813,7 @@ 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." +msgstr "Bambu Studio основана на PrusaSlicer от компании PrusaResearch." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "PrusaSlicer основан на проекте Slic3r от Alessandro Ranellucci." @@ -2903,7 +2909,7 @@ msgid "" "results. Please fill in the same values as the actual printing. They can be " "auto-filled by selecting a filament preset." msgstr "" -"Температура сопла и максимальная объёмная скорость влияют на результаты " +"Температура сопла и максимальный объёмный расход влияют на результаты " "калибровки. Введите те же значения, которые вы используете при фактической " "печати. Их можно заполнить автоматически, выбрав существующий профиль " "пластиковой нити." @@ -2921,7 +2927,7 @@ msgid "Bed Temperature" msgstr "Температура стола" msgid "Max volumetric speed" -msgstr "Макс. объёмная скорость" +msgstr "Макс. объёмный расход" msgid "℃" msgstr "℃" @@ -2932,8 +2938,9 @@ msgstr "Температура стола" msgid "mm³" msgstr "мм³" +# Если короче - Запуск калибровки msgid "Start calibration" -msgstr "Запуск калибровки" +msgstr "Запустить калибровку" msgid "Next" msgstr "Далее" @@ -2976,9 +2983,10 @@ msgstr "Шаг" msgid "AMS Slots" msgstr "Слоты АСПП" +# Примечание: выбор слотов ограничен одним типом материала. msgid "" "Note: Only the AMS slots loaded with the same material type can be selected." -msgstr "Примечание: выбор слотов АСПП ограничен одинаковым типом материала." +msgstr "Примечание: можно выбирать только слоты с одинаковым типом материала." msgid "Enable AMS" msgstr "Включить АСПП" @@ -3015,11 +3023,13 @@ msgstr "" msgid "Filament used in this print job" msgstr "Пруток используемый в этом задании" +# убрал АСПП ибо длинно msgid "AMS slot used for this filament" -msgstr "Слот АСПП используемый для этого прутка" +msgstr "Слот используемый для этого прутка" +# убрал АСПП ибо длинно msgid "Click to select AMS slot manually" -msgstr "Нажмите, чтобы выбрать слот АСПП вручную" +msgstr "Нажмите, чтобы выбрать слот вручную" msgid "Do not Enable AMS" msgstr "Не включать АСПП" @@ -3075,6 +3085,7 @@ msgstr "ВЛАЖНЫЙ" msgid "AMS Settings" msgstr "Настройки АСПП" +# ??? Обновление при вставке материала, Обновлять данные о материале при вставке msgid "Insertion update" msgstr "Обновлять данные при вставке материала" @@ -3100,6 +3111,7 @@ msgstr "" "информацию о ней, оставляя поле пустым, чтобы пользователь мог ввести данные " "о ней вручную." +# ??? Обновление при включении принтера, Обновлять данные о материале при включении принтера msgid "Power on update" msgstr "Обновлять данные при включении принтера" @@ -3108,7 +3120,7 @@ msgid "" "start-up. It will take about 1 minute.The reading process will roll filament " "spools." msgstr "" -"При каждом включении принтера АСПП будет автоматически считывать информация " +"При каждом включении принтера АСПП будет автоматически считывать информацию " "о вставленных материалах. Это занимает приблизительно одну минуту. В " "процессе считывания информации о материале катушка вращается." @@ -3129,9 +3141,9 @@ msgid "" "info is updated. During printing, remaining capacity will be updated " "automatically." msgstr "" -"АСПП считывает информацию о расходном материале Bambu и рассчитывает его " -"остаточную ёмкость на катушке. Остаточная ёмкость обновляется автоматически " -"в процессе печати." +"АСПП считывает информацию о материале Bambu и рассчитывает его остаточную " +"ёмкость на катушке. Остаточная ёмкость обновляется автоматически в процессе " +"печати." msgid "AMS filament backup" msgstr "Резервирование материала АСПП" @@ -3174,7 +3186,7 @@ msgstr "" "или не удалён антивирусом." msgid "click here to see more info" -msgstr "нажмите здесь, чтобы увидеть больше информации" +msgstr "Нажмите здесь, чтобы увидеть больше информации" msgid "Please home all axes (click " msgstr "Пожалуйста, припаркуйте все оси в начало координат (нажав " @@ -3233,7 +3245,7 @@ msgid "Successfully executed post-processing script" msgstr "Скрипт постобработки успешно выполнен." msgid "Unknown error occurred during exporting G-code." -msgstr "При экспорте G-кода произошла неизвестная ошибка." +msgstr "При экспорте в G-код произошла неизвестная ошибка." #, boost-format msgid "" @@ -3415,9 +3427,8 @@ msgstr "Ошибка отправки" msgid "Print Success" msgstr "Успешно напечатано" -# ??? Ошибка печати msgid "Print Failed" -msgstr "Печать не удалась" +msgstr "Ошибка печати" msgid "Removed" msgstr "Удалено" @@ -3458,9 +3469,11 @@ msgstr "Неправильные данные файла печати. Пожа msgid "There is no device available to send printing." msgstr "Отсутствует устройство для отправки на печать." -# ??? +# ??? для начала печати необходимо, чтобы хотя бы один принтер был активен? msgid "The number of printers in use simultaneously cannot be equal to 0." -msgstr "Количество одновременно используемых принтеров не может быть равно 0." +msgstr "" +"Необходимость наличия хотя бы одного работающего принтера для выполнения " +"задач печати." msgid "Use External Spool" msgstr "Исп. внешнюю катушку" @@ -3508,9 +3521,9 @@ msgid "" "minute each batch.(It depends on how long it takes to complete the heating.)" msgstr "" "минут для отправки каждого пакета заданий (зависит от того, сколько времени " -"требуется для завершения нагрева перед началом печати.)" +"требуется для завершения нагрева перед началом печати)." -# ??? +# ??????? Используется в двух местах или уже исправили? msgid "Send" msgstr "Отправить G-код стола на SD-карту" @@ -3643,8 +3656,8 @@ msgid "" "Too small max volumetric speed.\n" "Reset to 0.5" msgstr "" -"Слишком маленькая максимальная объёмная скорость.\n" -"Сбросьте до 0,5." +"Слишком маленький максимальный объёмный расход.\n" +"Значение будет сброшено на 0,5." #, c-format, boost-format msgid "" @@ -3652,8 +3665,8 @@ msgid "" "it may result in material softening and clogging.The maximum safe " "temperature for the material is %d" msgstr "" -"Текущая температура в камере превышает безопасную температуру для этого " -"материала, что может привести к размягчению материала или засорению " +"Текущая температура внутри термокамеры превышает безопасную температуру для " +"этого материала, что может привести к размягчению материала или засорению " "экструдера. Безопасная температура текущего материала составляет %d." msgid "" @@ -3661,14 +3674,14 @@ msgid "" "Reset to 0.2" msgstr "" "Слишком маленькая высота слоя.\n" -"Сбросьте до 0,2." +"Значение будет сброшено на 0,2." msgid "" "Too small ironing spacing.\n" "Reset to 0.1" msgstr "" "Слишком маленькое расстояние между линиями разглаживания.\n" -"Сбросьте до 0,1." +"Значение будет сброшено на 0,1." msgid "" "Zero initial layer height is invalid.\n" @@ -3878,17 +3891,20 @@ msgstr "Печать приостановлена из-за потери свя msgid "Paused due to low speed of the heat break fan" msgstr "" -"Печать приостановлена из-за низкой скорости вращения вентилятора головы" +"Печать приостановлена из-за низкой скорости вентилятора обдува радиатора " +"головы" msgid "Paused due to chamber temperature control error" -msgstr "Печать приостановлена из-за ошибки контроля температуры в камере" +msgstr "" +"Печать приостановлена из-за ошибки контроля температуры внутри термокамеры" msgid "Cooling chamber" -msgstr "Охлаждение камеры" +msgstr "Охлаждение термокамеры" msgid "Paused by the Gcode inserted by user" msgstr "Печать приостановлена G-кодом, вставленным пользователем" +# ??? Демонстрация шума двигателя msgid "Motor noise showoff" msgstr "Результат калибровки шума двигателя" @@ -3933,9 +3949,9 @@ msgid "" "45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" "TPU) is not allowed to be loaded." msgstr "" -"Текущая температура в камере или целевая температура в камере превышает 45℃. " -"Чтобы избежать засорения экструдера, запрещается загрузка низкотемпературной " -"печатной нити (PLA/PETG/TPU)." +"Текущая температура или целевая температура внутри термокамеры превышает " +"45℃. Чтобы избежать засорения экструдера, запрещается загрузка " +"низкотемпературной печатной нити (PLA/PETG/TPU)." msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " @@ -3943,16 +3959,16 @@ msgid "" "above 45℃." msgstr "" "В экструдер загружается низкотемпературная пластиковая нить (PLA/PETG/TPU). " -"Чтобы избежать засорения экструдера, запрещается устанавливать температуру в " -"камере выше 45℃." +"Чтобы избежать засорения экструдера, запрещается устанавливать температуру " +"внутри термокамеры выше 45℃." msgid "" "When you set the chamber temperature below 40℃, the chamber temperature " "control will not be activated. And the target chamber temperature will " "automatically be set to 0℃." msgstr "" -"Если вы установили температура в камере ниже 40℃, то контроль температуры в " -"камере не запустится, а целевая температура в ней будет автоматически " +"Если вы установили температура внутри термокамеры ниже 40℃, то контроль " +"температуры не запустится, а целевая температура в ней будет автоматически " "установлена на 0℃." msgid "Failed to start printing job" @@ -4134,7 +4150,7 @@ msgid "Layer Time" msgstr "Время печати слоя" msgid "Layer Time (log)" -msgstr "Время печати слоя (log)" +msgstr "Время печати слоя (логарифмич.)" msgid "Height: " msgstr "Высота: " @@ -4178,8 +4194,9 @@ msgstr "Очищено" msgid "Tower" msgstr "Башня" +# ???? было Общее msgid "Total" -msgstr "Общее" +msgstr "Всего" msgid "Total Estimation" msgstr "Общая оценка" @@ -4227,7 +4244,7 @@ msgid "Temperature (°C)" msgstr "Температура (°C)" msgid "Volumetric flow rate (mm³/s)" -msgstr "Объёмная скорость потока (мм³/с)" +msgstr "Объёмный расход (мм³/с)" msgid "Travel" msgstr "Перемещения" @@ -4268,6 +4285,7 @@ msgstr "Смена цвета" msgid "Print" msgstr "Печать" +# ?????6 msgid "Printer" msgstr "Профиль принтера" @@ -4463,10 +4481,10 @@ msgid "An object is layed over the boundary of plate." msgstr "Модель выходить за границы печатного стола." msgid "A G-code path goes beyond the max print height." -msgstr "Траектория G-кода выходит за пределы максимальной высоты печати." +msgstr "Траектория перемещения в G-коде превышает высоту области печати." msgid "A G-code path goes beyond the boundary of plate." -msgstr "Путь G-кода выходит за пределы области печати." +msgstr "Траектория перемещения в G-коде выходит за границы печатного стола." msgid "Only the object being edit is visible." msgstr "При редактировании, те модели с которыми вы не работаете скрываются." @@ -4482,7 +4500,7 @@ msgstr "" "построения." msgid "Calibration step selection" -msgstr "Выбор шагов калибровки" +msgstr "Выбор шага калибровки" msgid "Micro lidar calibration" msgstr "Калибровка микролидаром" @@ -4496,8 +4514,9 @@ msgstr "Компенсация вибрации" msgid "Motor noise cancellation" msgstr "Шумоподавление двигателя" +# ??? О калибровке msgid "Calibration program" -msgstr "О программе калибровке" +msgstr "Программа калибровки" msgid "" "The calibration program detects the status of your device automatically to " @@ -4511,8 +4530,9 @@ msgstr "" msgid "Calibration Flow" msgstr "Калибровка потока" +# Если короче - Запуск калибровки msgid "Start Calibration" -msgstr "Запуск калибровки" +msgstr "Запустить калибровку" msgid "Completed" msgstr "Завершено" @@ -4529,9 +4549,9 @@ msgstr "Автозапись мониторинга" msgid "Go Live" msgstr "Запустить трансляцию" -# ??? Повторить попытку просмотра в реальном времени +# ??? Повторить попытку просмотра , Попробовать перезапустить видеотрансляцию msgid "Liveview Retry" -msgstr "Повторить попытку просмотра" +msgstr "Перезапустить видеотрансляцию" msgid "Resolution" msgstr "Разрешение" @@ -4542,9 +4562,9 @@ msgstr "Включить" msgid "Hostname or IP" msgstr "Имя хоста или IP-адрес" -# ??? Пользовательская камера +# ??? Пользовательский источник камеры msgid "Custom camera source" -msgstr "Пользовательский источник камеры" +msgstr "Пользовательская камера" msgid "Show \"Live Video\" guide page." msgstr "Показать страницу руководства «Прямая трансляция»." @@ -4561,12 +4581,13 @@ 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 "Неверный ввод." @@ -4589,8 +4610,9 @@ msgstr "Авторизация" msgid "Preview" msgstr "Предпросмотр нарезки" +# ??? Управ. принтерами, Управ. устройствами, менеджер устройств, Диспетчер устройств, Принтеры msgid "Multi-device" -msgstr "Управ. устройствами" +msgstr "Принтеры" msgid "Project" msgstr "Проект" @@ -4737,10 +4759,10 @@ msgid "Load a model" msgstr "Загрузка модели" msgid "Import Zip Archive" -msgstr "Импорт zip-архива" +msgstr "Импортировать ZIP-архив" msgid "Load models contained within a zip archive" -msgstr "Загрузка моделей, содержащихся в zip-архиве" +msgstr "Загрузка моделей, содержащихся в ZIP-архиве" msgid "Import Configs" msgstr "Импортировать конфигурацию" @@ -4827,10 +4849,10 @@ msgid "Clone copies of selections" msgstr "Сделать копию выбранного" msgid "Duplicate Current Plate" -msgstr "Дублировать текущий стол" +msgstr "Дублировать печатную пластину" msgid "Duplicate the current plate" -msgstr "Дублировать текущий стол" +msgstr "Дублировать текущую печатную пластину." msgid "Select all" msgstr "Выбрать всё" @@ -4861,7 +4883,7 @@ msgstr "Показать навигационный куб" msgid "Show 3D navigator in Prepare and Preview scene" msgstr "" -"Показать навигационный куб в режиме подготовки и предварительного просмотра." +"Показать навигационный куб в режиме подготовки и предварительного просмотра" msgid "Reset Window Layout" msgstr "Сбросить настройки окон" @@ -4879,13 +4901,14 @@ msgid "Show &Overhang" msgstr "Показать &нависания" msgid "Show object overhang highlight in 3D scene" -msgstr "Подсвечивать нависания у модели в 3D-сцене" +msgstr "Подсвечивать нависания у модели в окне подготовки" +# ??? Показать контур выбранного msgid "Show Selected Outline (Experimental)" -msgstr "Показать выбранный контур (эксперим.)" +msgstr "Показать контур выбранной модели" msgid "Show outline around selected object in 3D scene" -msgstr "Показать конткур вокруг выбранного объекта в 3D сцене" +msgstr "Отображение контура вокруг выбранных моделей в окне подготовки." msgid "Preferences" msgstr "Параметры" @@ -4909,16 +4932,16 @@ msgid "Flow rate test - Pass 2" msgstr "Тест скорости потока - 2-ой проход" msgid "YOLO (Recommended)" -msgstr "YOLO (Рекомендуется)" +msgstr "YOLO (рекомендуется)" msgid "Orca YOLO flowrate calibration, 0.01 step" -msgstr "Калибровка расхода Orca YOLO с шагом 0.01" +msgstr "Калибровка скорости потока YOLO (шаг 0.01)" msgid "YOLO (perfectionist version)" -msgstr "YOLO (версия перфекциониста)" +msgstr "YOLO (версия для перфекционистов)" msgid "Orca YOLO flowrate calibration, 0.005 step" -msgstr "Калибровка расхода Orca YOLO с шагом 0.005" +msgstr "Калибровка скорости потока YOLO (шаг 0.005)" msgid "Flow rate" msgstr "Скорость потока" @@ -4933,7 +4956,7 @@ msgid "Orca Tolerance Test" msgstr "Тест допусков от Orca" msgid "Max flowrate" -msgstr "Макс. скорость потока" +msgstr "Макс. объёмный расход" msgid "VFA" msgstr "Тест на вертикальные артефакты (VFA)" @@ -5060,7 +5083,7 @@ msgid "" "3. The Printer presets" msgstr "" "Вы хотите синхронизировать свои данные с Bambu Cloud? \n" -"В облаке содержится следующая информация:\n" +"В облаке храниться следующая информация:\n" "1. Профили процессов печати\n" "2. Профили пластиковых нитей\n" "3. Профили принтеров" @@ -5079,8 +5102,8 @@ msgstr "" msgid "The player is not loaded, please click \"play\" button to retry." msgstr "" -"Проигрыватель не загружается, пожалуйста, нажмите кнопку «Воспроизвести», " -"чтобы повторить попытку." +"Проигрыватель не загружается. Нажмите кнопку «Воспроизвести», чтобы " +"повторить попытку." msgid "Please confirm if the printer is connected." msgstr "Пожалуйста, проверьте, подключен ли принтер." @@ -5098,12 +5121,13 @@ msgstr "" "Возникла проблема. Пожалуйста, обновите прошивку принтера и повторите " "попытку." -# ??? Просмотр в режиме «Только LAN» отключён +# ??? Видеотрансляция, Трансляция с видеокамеры +# ??? Прямая трансляция для локальной сети отключена. Пожалуйста, включите её с экрана принтера. msgid "" "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" -"Просмотр в реальном времени для локальной сети отключён. Пожалуйста, " -"включите его на экране принтера." +"Видеотрансляция для режима «Только LAN» отключена. Пожалуйста, включите её с " +"экрана принтера." msgid "Please enter the IP of printer to connect." msgstr "Введите IP-адрес принтера для подключения." @@ -5116,24 +5140,26 @@ msgstr "" "Не удалось установить соединение. Пожалуйста, проверьте сеть и повторите " "попытку" +# ??? Проверить влезает ли теперь. Или ещё короче - Проверьте сеть и повторите попытку. Если не помогло, перезагрузите или обновите принтер. msgid "" "Please check the network and try again, You can restart or update the " "printer if the issue persists." msgstr "" -"Пожалуйста, проверьте сеть и повторите попытку. Если проблема не устранена, " -"попробуйте перезагрузить или обновить принтер." +"Проверьте сеть и повторите попытку. Если не помогло, попробуйте " +"перезагрузить или обновить принтер." -# ??? Принтер разлогинился и не может подключиться. +# ??? Принтер разлогинился и не может подключиться msgid "The printer has been logged out and cannot connect." msgstr "Принтер вышел из системы и не может подключиться." +# ??? Трансляция, видеотрансляция остановлена msgid "Stopped." -msgstr "Остановлено." +msgstr "Трансляция с камеры остановлена." +# ??? Сбой подключения к локальной сети (не удалось запустить просмотр в реальном времени msgid "LAN Connection Failed (Failed to start liveview)" msgstr "" -"Сбой подключения к локальной сети (не удалось запустить просмотр в реальном " -"времени)" +"Сбой подключения к локальной сети (не удалось запустить видеотрансляцию)" msgid "" "Virtual Camera Tools is required for this task!\n" @@ -5244,7 +5270,6 @@ msgstr "" "На текущей версии прошивки просмотр файлов на SD-карте не поддерживается. " "Пожалуйста, обновите прошивку принтера." -# ??? Ошибка загрузки (хранилище недоступно, вставьте SD-карту)! msgid "Initialize failed (Storage unavailable, insert SD card.)!" msgstr "Ошибка инициализации (хранилище недоступно, вставьте SD-карту)!" @@ -5295,8 +5320,8 @@ msgid "" "The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " "and export a new .gcode.3mf file." msgstr "" -"Файл .gcode.3mf не содержит G-кода. Пожалуйста, нарежьте его в программе " -"Orca Slicer и экспортируйте новый файл .gcode.3mf." +"Файл .gcode.3mf не содержит данных G-кода. Используя Orca Slicer нарежьте " +"его и экспортируйте в новый файл .gcode.3mf." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5404,16 +5429,17 @@ msgid "" "You have completed printing the mall model, \n" "but the synchronization of rating information has failed." msgstr "" -"Вы завершили печать модели торгового центра, \n" -"но не удалось синхронизировать информацию о рейтинге." +"Печать модели из Makerworld успешно завершена, \n" +"но синхронизировать информацию о рейтинге не удалось." +# т.е. по сути g-код. На сколько вы оцениваете этот файл печати?" msgid "How do you like this printing file?" -msgstr "На сколько вы оцениваете этот напечатанный файл?" +msgstr "На сколько вы оцениваете этот файл печати?" msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" -msgstr "(Модели уже присвоен рейтинг. Ваш рейтинг перезапишет предыдущий.)" +msgstr "(Модель уже была оценена. Ваша оценка перезапишет предыдущую оценку.)" msgid "Rate" msgstr "Оценка" @@ -5558,11 +5584,12 @@ msgstr "" "\n" "Ошибка получения конфигурации OSS." +# ??? или Загрузка оставить? msgid "Upload Pictures" msgstr "Отправка изображений" msgid "Number of images successfully uploaded" -msgstr "Количество успешно загруженных изображений" +msgstr "Количество успешно отправленных изображений" msgid " upload failed" msgstr " ошибка отправки" @@ -5893,14 +5920,14 @@ msgstr "Разрешить звуковые уведомления" msgid "Filament Tangle Detect" msgstr "Обнаружение запутывания прутка" -# ??? Обнаружение засорения сопла, протечки, Обнаружение образование сгустков на сопле +# ???протечки, засорения msgid "Nozzle Clumping Detection" msgstr "Обнаружение сгустков на сопле" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "" "Обнаружение накапливания на сопле материала в результате засорения/протечки " -"сопла, или других причин." +"сопла или других причин." msgid "Nozzle Type" msgstr "Тип сопла" @@ -5909,7 +5936,7 @@ msgid "Stainless Steel" msgstr "Нержавеющая сталь" msgid "Hardened Steel" -msgstr "Закаленная сталь" +msgstr "Закалённая сталь" #, c-format, boost-format msgid "%.1f" @@ -5931,7 +5958,7 @@ msgid "View all object's settings" msgstr "Просмотр всех настроек модели" msgid "Material settings" -msgstr "Свойства материала" +msgstr "Параметры материала" msgid "Remove current plate (if not last one)" msgstr "Удалить текущую печатную пластину (кроме последней)" @@ -5952,7 +5979,7 @@ msgid "Edit current plate name" msgstr "Изменить имя текущей пластины" msgid "Move plate to the front" -msgstr "" +msgstr "Переместить пластину вперед" msgid "Customize current plate" msgstr "Настроить текущую печатную пластину" @@ -6074,7 +6101,7 @@ msgid "Ejecting of device %s(%s) has failed." msgstr "Не удалось извлечь устройство %s(%s)." msgid "Previous unsaved project detected, do you want to restore it?" -msgstr "Обнаружен предыдущий несохраненный проект. Хотите восстановить его?" +msgstr "Обнаружен предыдущий несохранённый проект. Хотите восстановить его?" msgid "Restore" msgstr "Восстановить" @@ -6094,7 +6121,7 @@ msgid "" "filament, otherwise, the nozzle will be attrited or damaged." msgstr "" "Твердость сопла, установленного по умолчанию, не достаточна для печати " -"данной пластиковой нитью. Замените сопло на закаленное или смените " +"данной пластиковой нитью. Замените сопло на закалённое или смените " "пластиковую нить. В противном случае сопло будет изношено или повреждено." msgid "" @@ -6170,7 +6197,7 @@ msgid "" "Please confirm that the G-codes within these presets are safe to prevent any " "damage to the machine!" msgstr "" -"Во избежание повреждение принтера убедитесь, что G-код в этих профилях " +"Во избежание повреждения принтера убедитесь, что G-код в этих профилях " "безопасен!" msgid "Customized Preset" @@ -6408,7 +6435,7 @@ msgstr "Ошибка при загрузке файла G-кода" #. TRN %1% is archive path #, boost-format msgid "Loading of a ZIP archive on path %1% has failed." -msgstr "Не удалось загрузить zip-архив расположенный по пути %1%." +msgstr "Не удалось загрузить ZIP-архив расположенный по пути %1%." #. TRN: First argument = path to file, second argument = error description #, boost-format @@ -6639,16 +6666,16 @@ msgid "Associate" msgstr "Ассоциация" msgid "with OrcaSlicer so that Orca can open models from" -msgstr "с OrcaSlicer, чтобы Orca могла открывать модели из" +msgstr "с OrcaSlicer, чтобы она могла открывать модели сразу с" msgid "Current Association: " msgstr "Текущая ассоциация: " msgid "Current Instance" -msgstr "Текущий экземпляр" +msgstr "Текущая копия" msgid "Current Instance Path: " -msgstr "Путь текущего экземпляра: " +msgstr "Путь к текущей копии: " msgid "General Settings" msgstr "Общие настройки" @@ -6745,9 +6772,9 @@ msgid "" "Touchpad: Alt+move for rotation, Shift+move for panning." msgstr "" "Выбор стиля управления камерой.\n" -"По умолчанию: Лев. кн. мыши+перемещение для вращения, Прав./Сред. кн. мыши " -"для перемещения камеры.\n" -"Сенсорная панель: Alt+перемещение для вращения, Shift+перемещение для " +"По умолчанию: ЛКМ+перемещение для вращения, ПК/СК мыши для перемещения " +"камеры.\n" +"Сенсорная панель: Alt + перемещение для вращения, Shift + перемещение для " "перемещения камеры." msgid "Zoom to mouse position" @@ -6795,7 +6822,7 @@ msgstr "Объём очистки: автопересчёт при каждом msgid "If enabled, auto-calculate every time the color changed." msgstr "" -"Если включено, выполняется автоматический перерасчет объёма очистки при " +"Если включено, выполняется автоматический перерасчёт объёма очистки при " "каждом изменении цвета." msgid "" @@ -6828,10 +6855,10 @@ msgstr "" "задания на печать на несколько устройств одновременно." msgid "Auto arrange plate after cloning" -msgstr "Авто расстановка стола после клонирования" +msgstr "Авторасстановка моделей при клонировании" msgid "Auto arrange plate after object cloning" -msgstr "Авто расстановка стола после клонирования объектов" +msgstr "Авторасстановка моделей на печатной пластине при клонировании." msgid "Network" msgstr "Сеть" @@ -7059,12 +7086,12 @@ msgstr "Создать принтер" msgid "The selected preset is null!" msgstr "Выбранный профиль пуст!" -# ??? Только клавиша? +# ?????? В двух местах - в одном месте кнопка в другом Конечный слой msgid "End" msgstr "End" msgid "Customize" -msgstr "Настроить" +msgstr "Настройка" # ??? layer? msgid "Other layer filament sequence" @@ -7352,7 +7379,6 @@ msgstr "" msgid "An SD card needs to be inserted before printing." msgstr "Перед печатью необходимо вставить SD-карту." -# ??? Выбранный принтер (%s) несовместим с выбранным профилем принтера в слайсере (%s) #, c-format, boost-format msgid "" "The selected printer (%s) is incompatible with the chosen printer profile in " @@ -7465,7 +7491,7 @@ msgstr "Автокалибровка потока с помощью микрол msgid "Modifying the device name" msgstr "Изменение имени принтера" -# # не длинно? +# не длинно? msgid "Bind with Pin Code" msgstr "Привязать с помощью пин-кода" @@ -7512,7 +7538,7 @@ msgid "Failed to post ticket to server" msgstr "Не удалось отправить заявку на сервер" msgid "Failed to parse login report reason" -msgstr "Не удалось разобрать причину ошибки входа" +msgstr "Не удалось обработать причину ошибки входа" msgid "Receive login report timeout" msgstr "Таймаут получения отчета о входе" @@ -7564,12 +7590,12 @@ msgid "" "Use(collectively, the \"Terms\"). If you do not comply with or agree to the " "Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" -"Перед использованием устройства Bambu Lab ознакомьтесь с правилами и " -"условиями. Нажимая на кнопку \"Согласие на использование устройства Bambu " -"Lab\", вы соглашаетесь соблюдать Политику конфиденциальности и Условия " -"использования (далее - \"Условия\"). Если вы не соблюдаете или не согласны с " -"Политикой конфиденциальности Bambu Lab, пожалуйста, не пользуйтесь " -"оборудованием и услугами Bambu Lab." +"Благодарим вас за покупку устройства Bambu Lab. Перед использованием " +"устройства Bambu Lab ознакомьтесь с правилами и условиями. Нажимая на кнопку " +"«Согласие на использование устройства Bambu Lab», вы соглашаетесь соблюдать " +"Политику конфиденциальности и Условия использования (далее - «Условия»). " +"Если вы не соблюдаете или не согласны с Политикой конфиденциальности Bambu " +"Lab, пожалуйста, не пользуйтесь оборудованием и услугами Bambu Lab." msgid "and" msgstr "и" @@ -7850,16 +7876,16 @@ msgid "Tree supports" msgstr "Древовидная поддержка" msgid "Multimaterial" -msgstr "Экструдер ММ" +msgstr "ММ принтер" msgid "Prime tower" msgstr "Черновая башня" msgid "Filament for Features" -msgstr "Филамент для функций" +msgstr "Пруток для элементов" msgid "Ooze prevention" -msgstr "Предотвращение осадков" +msgstr "Предотвращение течи материала" msgid "Skirt" msgstr "Юбка" @@ -7890,15 +7916,15 @@ msgid_plural "" "estimation." msgstr[0] "" "Следующая строка %s содержит зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"Удалите их, иначе может возникнуть проблемы при визуализации G-кода и оценка " "времени печати." msgstr[1] "" "Следующие строки %s содержат зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"Удалите их, иначе может возникнуть проблемы при визуализации G-кода и оценка " "времени печати." msgstr[2] "" "Следующие строки %s содержат зарезервированные ключевые слова.\n" -"Пожалуйста, удалите их, иначе будет нарушена визуализация G-кода и оценка " +"Удалите их, иначе может возникнуть проблемы при визуализации G-кода и оценка " "времени печати." msgid "Reserved keywords found" @@ -7922,7 +7948,7 @@ msgstr "" "значит не задано." msgid "Flow ratio and Pressure Advance" -msgstr "Объём расхода и давление" +msgstr "Коэффициент потока и Pressure Advance" msgid "Print chamber temperature" msgstr "Температура в камере" @@ -7943,16 +7969,20 @@ msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Cool Plate" msgstr "" -"Температура не подогреваемого стола. 0 означает, что пластиковая нить не " -"поддерживает печать на этой печатной пластине." +"Температура стола при установленной не нагреваемой пластине. 0 означает, что " +"пластиковая нить не поддерживает печать на этой печатной пластине." +# ??????? Текстурированная не нагреваемая пластина Bambu, Текстурированная пластина Bambu msgid "Textured Cool plate" -msgstr "" +msgstr "Не нагреваемая текстур. пластина Bambu" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " "does not support to print on the Textured Cool Plate" msgstr "" +"Температура стола при установленной не нагреваемой текстурированной пластине " +"Bambu. 0 означает, что пластиковая нить не поддерживает печать на этой " +"печатной пластине." msgid "Engineering plate" msgstr "Инженерная пластина" @@ -7966,7 +7996,7 @@ msgstr "" "пластине." msgid "Smooth PEI Plate / High Temp Plate" -msgstr "Гладкая PEI/высокотемпер. пластина" +msgstr "Гладкая PEI/высокотемп. пластина" msgid "" "Bed temperature when Smooth PEI Plate/High temperature plate is installed. " @@ -8031,11 +8061,13 @@ msgstr "Вспомогательный вентилятор для охлажд msgid "Exhaust fan" msgstr "Вытяжной вентилятор" +# ??? Скорость во время печати msgid "During print" -msgstr "Скорость во время печати" +msgstr "Скорость вентилятора во время печати" +# ??? Скорость после завершения печати msgid "Complete print" -msgstr "Скорость после завершения печати" +msgstr "Скорость вентилятора после завершения печати" msgid "Filament start G-code" msgstr "Стартовый G-код прутка" @@ -8055,7 +8087,7 @@ msgstr "Настройки рэмминга" msgid "Toolchange parameters with multi extruder MM printers" msgstr "" -"Параметры смены инструмента в мультиэкструдерных мультиматериальных принтерах" +"Параметры смены инструмента в многоэкструдерных мультиматериальных принтерах" msgid "Printable space" msgstr "Область печати" @@ -8093,28 +8125,28 @@ msgid "Machine end G-code" msgstr "Завершающий G-код принтера" msgid "Printing by object G-code" -msgstr "G-код поочерёдной печати" +msgstr "G-код между моделями (для последовательной печати)" msgid "Before layer change G-code" -msgstr "G-код выполняемый перед сменой слоя" +msgstr "G-код перед сменой слоя" msgid "Layer change G-code" -msgstr "G-код выполняемый при смене слоя" +msgstr "G-код после смены слоя" msgid "Time lapse G-code" msgstr "G-код таймлапса" msgid "Change filament G-code" -msgstr "G-код выполняемый при смене прутка" +msgstr "G-код смены прутка" msgid "Change extrusion role G-code" -msgstr "G-код выполняемый при смене роли экструзии" +msgstr "G-код смены роли экструзии" msgid "Pause G-code" msgstr "G-код паузы печати" msgid "Template Custom G-code" -msgstr "Пользовательский шаблон G-кода" +msgstr "Шаблон пользовательского G-кода" msgid "Motion ability" msgstr "Ограничения принтера" @@ -8123,19 +8155,20 @@ msgid "Normal" msgstr "Обычный" msgid "Speed limitation" -msgstr "Максимальная скорость" +msgstr "Максимальные скорости перемещения" msgid "Acceleration limitation" -msgstr "Ограничение ускорений" +msgstr "Максимальные ускорения" msgid "Jerk limitation" -msgstr "Ограничение рывка" +msgstr "Максимальные рывки" +# ????2 msgid "Single extruder multi-material setup" -msgstr "Мультиматериальный одиночный экструдер" +msgstr "Характеристики одноэкструдерного мультиматериального принтера" msgid "Number of extruders of the printer." -msgstr "Количество экструдеров принтера" +msgstr "Количество экструдеров у принтера." msgid "" "Single Extruder Multi Material is selected, \n" @@ -8143,10 +8176,10 @@ msgid "" "Do you want to change the diameter for all extruders to first extruder " "nozzle diameter value?" msgstr "" -"При активации нескольких материалов на одном экструдере, \n" -"все экструдеры должны иметь одинаковый диаметрХотите ли Вы изменить диаметр " -"для всех экструдеров \n" -"на значение диаметра сопла первого экструдера?" +"Выбран одноэкструдерный мультиматериальный принтер, \n" +"поэтому все экструдеры должны иметь одинаковый диаметр.\n" +"Изменить диаметр всех экструдеров на значение диаметра сопла первого " +"экструдера?" msgid "Nozzle diameter" msgstr "Диаметр сопла" @@ -8154,15 +8187,19 @@ msgstr "Диаметр сопла" msgid "Wipe tower" msgstr "Черновая башня" +# ????2 Параметры замены материала в одноэкструдерном ММ принтере +# ???? Параметры экструдера в одноэкструдерном мультиматериальном принтере +# ???? Параметры для экструдера в одноэкструдерном мультиматериальном принтере +# ???? Параметры для одноэкструдерной мультиматериальном печати msgid "Single extruder multi-material parameters" -msgstr "Параметры мультиматериального одиночного экструдера" +msgstr "Параметры одноэкструдерного мультиматериального принтера" msgid "" "This is a single extruder multi-material printer, diameters of all extruders " "will be set to the new value. Do you want to proceed?" msgstr "" -"Это мультиматериальный принтер с одним экструдером, диаметры которых будут " -"установлены на новое значение. Вы хотите продолжить?" +"Это одноэкструдерный мультиматериальный принтер, диаметры всех экструдеров " +"будут установлены на новое значение. Продолжить?" msgid "Layer height limits" msgstr "Ограничение высоты слоя" @@ -8194,13 +8231,12 @@ msgid "" "presets would be deleted if the printer is deleted." msgstr "" "К этому принтеру прикреплено: \n" -"профилей прутка -%dшт. и профилей процесса печати - %dшт.\n" +"профилей прутка -%d шт. и профилей процесса печати - %d шт.\n" "При удалении принтера эти профили так же будут удалены." msgid "Presets inherited by other presets can not be deleted!" msgstr "Профили на которых основаны другие профили не могут быть удалены!" -# ???The following preset inherits this preset. - Нижеуказанный профиль наследуется от текущего профиля msgid "The following presets inherit this preset." msgid_plural "The following preset inherits this preset." msgstr[0] "Профиль указанный ниже, наследуется от текущего профиля." @@ -8231,7 +8267,7 @@ msgstr "" msgid "Are you sure to %1% the selected preset?" msgstr "%1% выбранный профиль?" -# Все??? +# в Обеспечивать верт. толщину оболочки msgid "All" msgstr "Везде" @@ -8329,7 +8365,6 @@ msgstr "" msgid "You have changed some settings of preset \"%1%\". " msgstr "Вы изменили некоторые параметры профиля \"%1%\". " -# ??? msgid "" "\n" "You can save or discard the preset values you have modified." @@ -8478,7 +8513,7 @@ msgid "Obj file Import color" msgstr "Импорт цветного obj-файла" msgid "Specify number of colors:" -msgstr "Укажите количество цветов:" +msgstr "Количество цветов:" #, c-format, boost-format msgid "The color count should be in range [%d, %d]." @@ -8490,7 +8525,6 @@ msgstr "рекомендуется" msgid "Current filament colors:" msgstr "Текущие цвета прутков:" -# ??? Быстрый набор msgid "Quick set:" msgstr "Быстрый выбор:" @@ -8498,15 +8532,14 @@ msgstr "Быстрый выбор:" msgid "Color match" msgstr "Подбор цвета" -# ??? Приблизительное сопоставление по цвету. msgid "Approximate color matching." -msgstr "Приблизительный подбор по цвету." +msgstr "Приблизительный подбор по цвету прутков." # ??? msgid "Append" msgstr "Добавить" -# ??? +# ?????? Добавить используемый экструдер после существующих экструдеров, Добавьте новый экструдер после существующих экструдеров, Добавить экструдер с расходным материалом после существующих экструдеров. msgid "Add consumable extruder after existing extruders." msgstr "" "Добавить экструдер с расходными материалами после существующих экструдеров." @@ -8515,11 +8548,10 @@ msgstr "" msgid "Reset mapped extruders." msgstr "Сброс сопоставленных экструдеров." -# кластер цветов msgid "Cluster colors" msgstr "Цветовой кластер" -# ??? Карта прутка, Цвет прутков, цветовая карта прутков, выбранные цвета прутков, цветовая карта, раскладка материалов, Выбранная раскладка цветов +# ??? Цвет прутка msgid "Map Filament" msgstr "Выбранные цвета" @@ -8534,7 +8566,7 @@ msgid "" "Waring:The count of newly added and \n" " current extruders exceeds 16." msgstr "" -"Предупреждение: Количество новых \n" +"Предупреждение: количество новых \n" " и текущих экструдеров превышает 16." msgid "Ramming customization" @@ -8592,7 +8624,8 @@ msgid "" "changed. You could disable the auto-calculate in Orca Slicer > Preferences" msgstr "" "Программа будет пересчитывать объёмы очистки каждый раз при изменении цвета " -"пластиковых нитей. Это можно отключить в меню Orca Slicer > Параметры." +"пластиковой нити или её смены. Это можно отключить в меню Orca Slicer > " +"Параметры." msgid "Flushing volume (mm³) for each filament pair." msgstr "" @@ -8644,7 +8677,7 @@ msgid "" "install BambuStudio or seek after-sales help." msgstr "" "Отсутствует компонент BambuSource зарегистрированный для воспроизведения " -"медиафайлов! Переустановите BambuStudio или обратитесь за помощью в службу " +"медиафайлов! Переустановите BambuStutio или обратитесь за помощью в службу " "поддержки." msgid "" @@ -8652,7 +8685,7 @@ msgid "" "correctly! Press Yes to fix it." msgstr "" "Используя компоненты BambuSource из другого инсталлятора воспроизведение " -"видео может работать некорректно! Нажмите кнопку «Да», чтобы исправить это." +"видео может работать некорректно! Нажмите «Да», чтобы исправить это." msgid "" "Your system is missing H.264 codecs for GStreamer, which are required to " @@ -8734,7 +8767,7 @@ msgid "" "objects, it just orientates the selected ones.Otherwise, it will orientates " "all objects in the current disk." msgstr "" -"Автоориентация моделей: ориентируются выбранные, иначе все на текущем столе." +"Автоориентация моделей (ориентация выбранного, иначе всего на текущем столе)" msgid "Shift+Tab" msgstr "Shift+Tab" @@ -8872,22 +8905,22 @@ msgid "Move: press to snap by 1mm" msgstr "Перемещение: Фиксация перемещения на 1 мм" msgid "⌘+Mouse wheel" -msgstr "⌘ + Колесо мыши" +msgstr "⌘+Колесо мыши" msgid "Support/Color Painting: adjust pen radius" msgstr "Рисование поддержки/Шва/Покраски: регулировка радиуса кисти" msgid "⌥+Mouse wheel" -msgstr "⌥ + Колесо мыши" +msgstr "⌥+Колесо мыши" msgid "Support/Color Painting: adjust section position" msgstr "Рисование поддержки/Шва/Покраски: регулировка положения сечения" msgid "Ctrl+Mouse wheel" -msgstr "Ctrl + Колесо мыши" +msgstr "Ctrl+Колесо мыши" msgid "Alt+Mouse wheel" -msgstr "Alt + Колесо мыши" +msgstr "Alt+Колесо мыши" msgid "Gizmo" msgstr "Гизмо" @@ -8902,10 +8935,10 @@ msgid "Select the object/part and press space to change the name" msgstr "Выберите модель/часть и нажмите пробел, чтобы изменить имя" msgid "Mouse click" -msgstr "Щелчок мышью" +msgstr "Щелчок кнопкой мыши" msgid "Select the object/part and mouse click to change the name" -msgstr "Выберите модель/часть и щёлкните клавишей мыши, чтобы изменить имя" +msgstr "Выберите модель/часть и нажмите клавишу мыши, чтобы изменить имя" msgid "Objects List" msgstr "Список моделей" @@ -8986,7 +9019,7 @@ msgstr "Остановить печать" # ??? Перейти к помощнику, Помощник по проверке msgid "Check Assistant" -msgstr "Помощник проверки" +msgstr "Ассистент проверки" msgid "Filament Extruded, Continue" msgstr "Пруток выдавлен, Продолжить" @@ -8994,18 +9027,20 @@ msgstr "Пруток выдавлен, Продолжить" msgid "Not Extruded Yet, Retry" msgstr "Пруток ещё не выдавлен, Повторить" +# ????? Готово msgid "Finished, Continue" -msgstr "Готово, Продолжить" +msgstr "Завершено, Продолжить" +# кнопка в интерфейсе msgid "Load Filament" msgstr "Загрузить" msgid "Filament Loaded, Resume" msgstr "Пруток загружен, Повторить" -# ??? Просморт камеры, Посмотреть прямую трансляцию +# ??? Просмотр камеры, Посмотреть, Открыть прямую трансляцию msgid "View Liveview" -msgstr "Открыть прямую трансляцию" +msgstr "Открыть видеотрансляцию" msgid "Confirm and Update Nozzle" msgstr "Подтвердить и обновить сопло" @@ -9181,7 +9216,7 @@ msgid "" "bottom or enable supports." msgstr "" "Одна модель имеет пустой начальный слой и не может быть напечатана. " -"Пожалуйста, обрежьте нижнюю часть или включите поддержки." +"Пожалуйста, обрежьте нижнюю часть или включите поддержку." #, boost-format msgid "Object can't be printed for empty layer between %1% and %2%." @@ -9205,8 +9240,8 @@ msgid "" "Your print is very close to the priming regions. Make sure there is no " "collision." msgstr "" -"Объект печати находится слишком близко друг к другу. Убедитесь что нет " -"столкновения объектов." +"Модель(-и) находится очень близко к области предзарядки (область подготовки " +"экструдера). Убедитесь, что не произойдёт столкновения." msgid "" "Failed to generate gcode for invalid custom G-code.\n" @@ -9442,8 +9477,8 @@ msgid "" "While the object %1% itself fits the build volume, it exceeds the maximum " "build volume height because of material shrinkage compensation." msgstr "" -"Несмотря на то, что объём объекта %1% помещается в область сборки, он " -"превышает максимальную высоту из-за компенсации усадки материала." +"После применения компенсации усадки, модель %1% начинает превышать " +"максимальную высоту области построения." #, boost-format msgid "The object %1% exceeds the maximum build volume height." @@ -9466,16 +9501,16 @@ msgstr "" msgid "Variable layer height is not supported with Organic supports." msgstr "" -"Функция переменной высоты слоя не совместима органическими поддержками." +"Функция переменной высоты слоя не совместима с органическими поддержками." msgid "" "Different nozzle diameters and different filament diameters may not work " "well when the prime tower is enabled. It's very experimental, so please " "proceed with caution." msgstr "" -"Разные диаметры сопел и нитей могут плохо работать при включённой основной " -"башне. Это ранняя экспериментальная функция, поэтому используйте с " -"осторожностью." +"Использование разных диаметров сопла и разных диаметров пластиковых нити " +"может привести к некорректной нарезке при включенной черновой башни. Этот " +"метод работы экспериментальный, поэтому, будьте осторожны при использовании." msgid "" "The Wipe Tower is currently only supported with the relative extruder " @@ -9488,8 +9523,8 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" -"Предотвращение образования пузырей поддерживается только при использовании " -"башни стирания, когда 'single_extruder_multi_material' выключен" +"Предотвращение течи материала с помощью черновой башни поддерживается только " +"когда параметр «Одноэкструдерный мультиматериальный принтер» отключён." msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " @@ -9664,14 +9699,14 @@ msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " "filaments differs significantly." msgstr "" -"Усадка нити не используется, так как она значительно отличается для " -"используемых филаментов." +"Компенсация усадка материала не будет использоваться, поскольку усадка " +"используемых материалов существенно отличается." msgid "Generating skirt & brim" msgstr "Генерация юбки и каймы" msgid "Exporting G-code" -msgstr "Экспорт G-кода" +msgstr "Экспорт в G-код" msgid "Generating G-code" msgstr "Генерация G-кода" @@ -9743,8 +9778,9 @@ msgstr "Максимальная высота печати, которая ог msgid "Preferred orientation" msgstr "Предпочтительная ориентация" +# Автоориентация stl файлов по оси Z при первоначальном импорте. msgid "Automatically orient stls on the Z-axis upon initial import" -msgstr "Автоориентация stl файлов по оси Z при первоначальном импорте." +msgstr "Автоориентация моделей относительно оси Z при первоначальном импорте." msgid "Printer preset names" msgstr "Имена профиля принтера" @@ -9787,7 +9823,7 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicerможет загружать файл G-кода на хост принтера. Это поле должно " +"Orca Slicer может загружать файл G-кода на хост принтера. Это поле должно " "содержать API ключ или пароль, необходимые для проверки подлинности." msgid "Name of the printer" @@ -9844,7 +9880,7 @@ msgstr "" "дефектов на поверхности модели." msgid "Avoid crossing wall - Max detour length" -msgstr "Избегать пересечения периметров - Макс. длина обхода" +msgstr "Максимальная длина обхода" msgid "" "Maximum detour distance for avoiding crossing wall. Don't detour if the " @@ -9878,6 +9914,8 @@ msgid "" "Bed temperature for layers except the initial one. Value 0 means the " "filament does not support to print on the Textured Cool Plate" msgstr "" +"Температура стола для всех слоёв, кроме первого. 0 означает, что пластиковая " +"нить не поддерживает печать на этой печатной пластине." msgid "" "Bed temperature for layers except the initial one. Value 0 means the " @@ -9917,6 +9955,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured Cool Plate" msgstr "" +"Температура стола для первого слоя. 0 означает, что пластиковая нить не " +"поддерживает печать на этой печатной пластине." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -9943,16 +9983,16 @@ msgid "Bed types supported by the printer" msgstr "Типы столов, поддерживаемые принтером" msgid "Smooth Cool Plate" -msgstr "" +msgstr "Не нагреваемая гладкая пластина Bambu" msgid "Engineering Plate" msgstr "Инженерная пластина" msgid "Smooth High Temp Plate" -msgstr "" +msgstr "Высокотемп. гладкая пластина" msgid "Textured Cool Plate" -msgstr "" +msgstr "Не нагреваемая текстур. пластина Bambu" msgid "First layer print sequence" msgstr "Последовательность печати первого слоя" @@ -9960,7 +10000,7 @@ msgstr "Последовательность печати первого сло msgid "Other layers print sequence" msgstr "Последовательность печати других слоёв" -# ???? Количество слоёв при последовательной печати остальных слоёв, Количество других слоёв последовательной печати, Количество других слоёв в последовательной печати +# ??? Количество слоёв при последовательной печати остальных слоёв, Количество других слоёв в последовательной печати msgid "The number of other layers print sequence" msgstr "Количество других слоёв при последовательной печати" @@ -9969,8 +10009,8 @@ msgstr "Последовательность прутков на других с msgid "This G-code is inserted at every layer change before lifting z" msgstr "" -"Этот G-код вставляется при каждой смене слоя, непосредственно перед " -"перемещения оси Z." +"Команды в G-коде, которые выполняются каждый раз перед сменой слоя, то есть " +"перед поднятием оси Z." msgid "Bottom shell layers" msgstr "Сплошных слоёв снизу" @@ -10004,8 +10044,9 @@ msgstr "" "слоёв снизу." msgid "Apply gap fill" -msgstr "Заполнять пробелы" +msgstr "Заполнять щели" +# ??? Чет все сумбурно описано в анг. версии как-то msgid "" "Enables gap fill for the selected solid surfaces. The minimum gap length " "that will be filled can be controlled from the filter out tiny gaps option " @@ -10033,33 +10074,25 @@ msgid "" "generator and use this option to control whether the cosmetic top and bottom " "surface gap fill is generated" msgstr "" -"Включает заполнение зазоров для выбранных твёрдых поверхностей. Минимальную " -"длину зазора заполнения можно контролировать с помощью параметра фильтрации " -"мелких зазоров, расположенного ниже.\n" -"\n" -"Параметры:\n" -"1. Везде: Заполняет зазоры на верхней, нижней и внутренней твёрдых " -"поверхностях для обеспечения максимальной прочности;\n" -"2. Верхние и нижние поверхности: Применяет заполнение зазоров только к " -"верхней и нижней поверхностям, балансируя скорость печати путём уменьшения " -"потенциальной избыточной эструзии в сплошном заполнении, обеспечивая " -"отсутствие зазоров между ними;\n" -"3. Нигде: Отключает заполнение пробелов для всех областей сплошной " -"заливки. \n" +"Включает заполнение щелей (пробелов) для выбранных сплошных поверхностей. " +"Минимальной длиной пробела, который будет заполнен, можно управлять с " +"помощью нижерасположенной опции «Игнорировать небольшие щели».\n" "\n" -"Обратите внимание, что при использовании классического генератора периметра " -"между периметрами также могут образовываться промежутки, если между ними не " -"помещается линия полной ширины. \n" +"Опции:\n" +"1. Везде (заполнение будет применяется к верхним, нижним и внутренним " +"сплошным поверхностях)\n" +"2. Верхняя и нижняя поверхности (заполнение будет применяется только к " +"верхней и нижней поверхностям)\n" +"3. Нигде (заполнение будет отключено)\n" "\n" -"Если Вы хотите, чтобы все промежутки, включая сгенерированные классическим " -"генератором периметра, были удалены, установите значение параметра " -"фильтрации маленьких промежутков на большое число, например, 999999. \n" +"Если хотите чтобы все заполнения щелей, в том числе сгенерированные " +"классическим генератором периметров, были удалены (т.е. не печатались), " +"установите высокое значение параметра «Игнорировать небольшие щели», " +"например, 999999. \n" "\n" -"Однако этого делать не рекомендуется, поскольку заполнение зазоров между " -"периметрами влияет на прочность модели. Для некоторых моделей, в которых " -"между периметрами образуются чрезмерные зазоры, лучшим вариантом будет " -"переключение на генератор паутинных стен с использованием опции для " -"управления косметическими зазорами на верхней и нижней поверхностях." +"Однако это не рекомендуется, так как заполнение щелей между периметрами " +"делает модель прочнее. Если слишком много заполнений появляется между " +"периметрами, лучше переключиться на генератор периметров Arachne." msgid "Everywhere" msgstr "Везде" @@ -10095,7 +10128,6 @@ msgstr "" msgid "Cooling overhang threshold" msgstr "Порог включения обдува на нависаниях" -#, fuzzy, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " "exceeds this value. Expressed as percentage which indicates how much width " @@ -10128,8 +10160,9 @@ msgstr "" "Плотность наружных мостов. 100% - сплошной мост. По умолчанию задано 100%." msgid "Bridge flow ratio" -msgstr "Коэффициент подачи пластика при печати мостов" +msgstr "Коэффициент потока мостов" +# ???1 msgid "" "Decrease this value slightly(for example 0.9) to reduce the amount of " "material for bridge, to improve sag. \n" @@ -10137,15 +10170,19 @@ msgid "" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Немного уменьшите это значение (например, 0.9), чтобы уменьшенть количество " -"материала для моста и улучшить прогиб. \n" +"Параметр задаёт количество пластика, затрачиваемое для построения мостов. В " +"большинстве случаев настроек по умолчанию достаточно, тем не менее, при " +"печати некоторых моделей уменьшение параметра может сократить провисание " +"пластика при печати мостов.\n" "\n" -"Фактический расход моста рассчитывается путем умножения этого значения на " -"коэффициент расхода нити и, если задано, на коэффициент расхода объекта." +"Фактический поток для моста рассчитывается путем умножения введенного здесь " +"значения на коэффициент потока прутка, и если он задан, на коэффициент " +"потока модели." msgid "Internal bridge flow ratio" -msgstr "Поток внутреннего моста" +msgstr "Коэффициент потока внутреннего моста" +# ???1 msgid "" "This value governs the thickness of the internal bridge layer. This is the " "first layer over sparse infill. Decrease this value slightly (for example " @@ -10155,17 +10192,19 @@ msgid "" "with the bridge flow ratio, the filament flow ratio, and if set, the " "object's flow ratio." msgstr "" -"Это значение определяет толщину внутреннего мостового слоя. Это первый слой " -"над разрежённым наполнителем. Немного уменьшите это значение (например, " -"0,9), чтобы улучшить качество поверхности поверх редкого наполнителя.\n" +"Это значение определяет толщину слоя внутреннего моста, печатаемого поверх " +"разреженного заполнения. Немного уменьшите это значение (например 0,9), " +"чтобы улучшить качество поверхности печатаемой поверх разреженного " +"заполнения.\n" "\n" -"Фактический внутренний расход моста рассчитывается путём умножения этого " -"значения на коэффициент расхода моста, коэффициент расхода нити и, если " -"задано, коэффициент расхода объекта." +"Фактический поток для внутреннего моста рассчитывается путем умножения " +"введенного здесь значения на коэффициент потока прутка, и если он задан, на " +"коэффициент потока модели." msgid "Top surface flow ratio" msgstr "Коэффициент потока на верхней поверхности" +# ???1 msgid "" "This factor affects the amount of material for top solid infill. You can " "decrease it slightly to have smooth surface finish. \n" @@ -10173,28 +10212,30 @@ msgid "" "The actual top surface flow used is calculated by multiplying this value " "with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Этот фактор влияет на количество материала для верхнего сплошного " -"наполнения. Вы можете немного уменьшить его для получения гладкой " -"поверхности.\n" -"Фактический расход на верхней поверхности рассчитывается путём умножения " -"этого значения на коэффициент расхода нити и, если задано, на коэффициент " -"расхода объекта." +"Этот параметр задаёт количество выдавливаемого материала для верхнего " +"сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы получить " +"более гладкую поверхность.\n" +"\n" +"Фактический поток для сплошного заполнения нижней поверхности рассчитывается " +"путем умножения введенного здесь значения на коэффициент потока прутка, и " +"если он задан, на коэффициент потока модели." msgid "Bottom surface flow ratio" msgstr "Коэффициент потока на нижней поверхности" +# ???1 msgid "" "This factor affects the amount of material for bottom solid infill. \n" "\n" "The actual bottom solid infill flow used is calculated by multiplying this " "value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Этот фактор влияет на количество материала для нижнего сплошного " -"наполнения. \n" +"Этот параметр задаёт количество выдавливаемого материала для нижнего " +"сплошного слоя заполнения.\n" "\n" -"Фактический расход нижнего твердого наполнителя рассчитывается путём " -"умножения этого значения на коэффициент расхода нити и, если задано, на " -"коэффициент расхода объекта." +"Фактический поток для сплошного заполнения нижней поверхности рассчитывается " +"путем умножения введенного здесь значения на коэффициент потока прутка, и " +"если он задан, на коэффициент потока модели." msgid "Precise wall" msgstr "Точные периметры" @@ -10264,8 +10305,9 @@ msgstr "" "Создание дополнительных дорожек по периметру над крутыми нависаниями и " "участками, где мосты не могут быть закреплены. " +# ??? Реверс на чётных слоях нависаний msgid "Reverse on even" -msgstr "Реверс по чётным" +msgstr "Реверс на чётных слоях" msgid "Overhang reversal" msgstr "Реверс на нависаниях" @@ -10278,12 +10320,11 @@ msgid "" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." msgstr "" -"Выдавливание периметров, которые имеют часть над свесом, в обратном " -"направлении на чётных слоях. Такое чередование может значительно улучшить " -"крутые свесы.\n" +"Печать нависающих периметров в обратном направлении на чётных слоях. Такое " +"чередование может значительно улучшить качество печати крутых нависаний.\n" "\n" -"Эта настройка также может помочь уменьшить деформации детали благодаря " -"снижению напряжений в стенках детали." +"Эта настройка также может помочь уменьшить деформацию детали за счёт " +"уменьшения напряжений в её стенках." msgid "Reverse only internal perimeters" msgstr "Реверс только для внутренних периметров" @@ -10302,18 +10343,20 @@ msgid "" "Reverse Threshold to 0 so that all internal walls print in alternating " "directions on even layers irrespective of their overhang degree." msgstr "" -"Применяйте логику обратных периметров только к внутренним периметрам.\n" +"Применяется логика реверса печати периметров только для внутренних " +"периметров.\n" +"\n" +"Эта настройка значительно снижает напряжения в деталях, поскольку теперь они " +"распределяются в чередующихся направлениях. Это должно уменьшить деформацию " +"детали, сохраняя при этом качество внешнего периметра. Эта функция может " +"быть очень полезна для материалов, склонных к деформации, таких как ABS/ASA, " +"а также для эластичных материалов, таких как TPU и Silk PLA. Это также может " +"помочь уменьшить деформацию нависающих над поддержкой частей.\n" "\n" -"Эта настройка значительно снижает напряжения в детали, поскольку теперь они " -"распределяются в противоположных направлениях. Это должно уменьшить " -"деформацию детали, сохраняя при этом качество внешних стенок. Эта функция " -"может быть очень полезна для материалов, склонных к деформации, таких как " -"ABS/ASA, а также для эластичных нитей, таких как TPU и Silk PLA. Она также " -"может помочь уменьшить деформацию плавающих областей над опорами.\n" "Чтобы эта настройка была наиболее эффективной, рекомендуется установить " -"порог Reverse Threshold на 0, чтобы все внутренние стены печатались в " -"чередующихся направлениях на ровных слоях, независимо от степени их " -"нависания." +"параметр «Порог для реверса» равным 0, чтобы все внутренние периметры " +"печатались в чередующихся направлениях на чётных слоях независимо от степени " +"их нависания." msgid "Bridge counterbore holes" msgstr "Мост для зенкованных отверстий" @@ -10345,16 +10388,17 @@ msgstr "Порог для реверса" msgid "Overhang reversal threshold" msgstr "Порог разворота на свесах" +# ??? Если установлено 0, то изменение направления будет происходить на каждом чётном слое, независимо от величина (длины ) свеса. #, no-c-format, no-boost-format msgid "" "Number of mm the overhang need to be for the reversal to be considered " "useful. Can be a % of the perimeter width.\n" "Value 0 enables reversal on every even layers regardless." msgstr "" -"Количество миллиметров свеса, которое должно быть, чтобы разворот считался " -"полезным, может составлять % от ширины периметра.\n" -"Значение 0 включает разворот на всех чётных слоях независимо от этого " -"параметра." +"Величина свеса периметра при которой она считается достаточной для активации " +"функции реверса печати нависаний. Может быть в мм или в % от ширины " +"периметра.\n" +"При нуле разворот будет на каждом чётном слое, независимо от величина свеса." msgid "Classic mode" msgstr "Классический режим" @@ -10371,6 +10415,7 @@ msgstr "Включение динамического управления ск msgid "Slow down for curled perimeters" msgstr "Замедляться на изогнутых периметрах" +# ??? , скорость печати нависаний будет 100%-ая. #, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have " @@ -10391,22 +10436,23 @@ msgid "" "overhanging, with no wall supporting them from underneath, the 100% overhang " "speed will be applied." msgstr "" -"Включите эту опцию, чтобы замедлить печать в местах, где периметр может " -"загибаться вверх. Например, дополнительное замедление будет применяться при " -"печати выступов на острых углах, таких как передняя часть корпуса Бенчи, " -"уменьшая скручивание, которое увеличивается в течение нескольких слоев.\n" +"Включите эту опцию для замедления печати в тех областях, где периметры могут " +"закручиваться вверх. Например, при печати нависаний на острых углах, таких " +"как передняя часть корпуса кораблика Benchy. Будет применено дополнительное " +"замедление, что уменьшит закручивание, которое накапливается за несколько " +"слоёв.\n" "\n" -"Обычно рекомендуется включать эту опцию, только если охлаждение принтера " -"недостаточно мощное или скорость печати не настолько низкая, что скручивание " -"по периметру не происходит. При печати с высокой скоростью по внешнему " -"периметру этот параметр может вносить небольшие артефакты при замедлении из-" -"за большого разброса скоростей печати. Если Вы заметили артефакты, " -"убедитесь, что опережение давления настроено правильно.\n" +"Рекомендуется включать эту параметр, если система охлаждения вашего принтера " +"слабая или скорость печати слишком высокая. При печати внешнего периметра с " +"высокой скоростью, этот параметр может вызвать небольшие артефакты при " +"замедлении из-за большой вариативности в скоростях печати. Если вы заметите " +"артефакты, проверьте, правильно ли задан коэффициент Pressure advance.\n" "\n" -"Примечание: Когда эта опция включена, периметры нависаний рассматриваются " -"как нависания, то есть скорость нависания применяется, даже если периметр " -"нависания является частью моста. Например, если периметр нависает на 100%, а " -"снизу его не поддерживает стена, будет применяться скорость нависания 100%." +"Примечание: когда включено, нависающие периметры обрабатываются как " +"нависания, что означает что к ним будет применяться скорость печати " +"нависаний, даже если они является частью моста. Например, когда периметры " +"полностью нависают, не имея стенки, поддерживающей их снизу, будет " +"применяться 100%-ая скорость нависания." msgid "mm/s or %" msgstr "мм/с или %" @@ -10414,6 +10460,7 @@ msgstr "мм/с или %" msgid "External" msgstr "Внешние" +# ??? msgid "" "Speed of the externally visible bridge extrusions. \n" "\n" @@ -10422,12 +10469,12 @@ msgid "" "are supported by less than 13%, whether they are part of a bridge or an " "overhang." msgstr "" -"Скорость видимых снаружи экструзий моста.\n" +"Скорость печати наружных периметров моста.\n" "\n" -"Кроме того, если отключена функция замедления для скрученных периметров или " -"включен режим классического свеса, то скорость печати будет соответствовать " -"скорости печати стен свесов, опирающихся менее чем на 13%, независимо от " -"того, являются ли они частью моста или свеса." +"Кроме того, если отключена опция «Замедляться на изогнутых периметрах» или " +"включён «Классический режим» печати нависаний, то скорость печати будет " +"какой же, что и для нависающих периметров, которые имеют поддержку менее " +"13%, независимо от того, являются ли они частью моста или нависания." msgid "mm/s" msgstr "мм/с" @@ -10439,8 +10486,9 @@ msgid "" "Speed of internal bridges. If the value is expressed as a percentage, it " "will be calculated based on the bridge_speed. Default value is 150%." msgstr "" -"Скорость внутренних мостов. Если значение выражено в процентах, оно будет " -"рассчитано на основе bridge_speed. Значение по умолчанию - 150%." +"Скорость печати внутреннего моста. Если задано в процентах, то значение " +"вычисляться относительно скорости внешнего моста (bridge_speed). Значение по " +"умолчанию равно 150%." msgid "Brim width" msgstr "Ширина каймы" @@ -10525,7 +10573,6 @@ msgstr "По очереди" msgid "Intra-layer order" msgstr "Порядок печати слоёв" -# ??? Указания порядка печати слоёв внутри каждого слоя, Последовательность печати слоёв внутри каждого слоя msgid "Print order within a single layer" msgstr "Последовательность печати слоёв в пределах одного слоя." @@ -10577,7 +10624,7 @@ msgstr "Вкл. вытяжной вентилятор" msgid "Activate for better air filtration. G-code command: M106 P3 S(0-255)" msgstr "" -"Включение вытяжного вентилятора для лучшего охлаждения области внутри " +"Включение вытяжного вентилятора для лучшего охлаждения внутренней области " "принтера. G-код команда: M106 P3 S(0-255)" msgid "Fan speed" @@ -10600,9 +10647,8 @@ 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 "Don't support bridges" msgstr "Не печатать поддержки под мостами" @@ -10622,9 +10668,9 @@ msgid "" "look worse. If disabled, bridges look better but are reliable just for " "shorter bridged distances." msgstr "" -"Если включено, мосты печатаются более надежные и на большие расстояния. Если " -"отключено, мосты выглядят лучше, но они надежны только на коротких " -"расстояниях." +"Если включено, мосты печатаются более надёжные и на большие расстояния, но " +"могут выглядеть хуже. Если отключено, мосты выглядят лучше, но они надёжны " +"только на коротких расстояниях." msgid "Thick internal bridges" msgstr "Толстые внутренние мосты" @@ -10638,8 +10684,9 @@ msgstr "" "рекомендуется включить эту функцию. Однако при использовании сопел больших " "диаметров рекомендуется отключить эту опцию." +# ??? Фильтрация небольших внутренних мостов msgid "Filter out small internal bridges (beta)" -msgstr "Фильтрация небольших внутренних мостов (бета)" +msgstr "Отфильтровать небольшие внутренние мосты (beta)" msgid "" "This option can help reducing pillowing on top surfaces in heavily slanted " @@ -10669,37 +10716,34 @@ msgid "" "overhang. This option is useful for heavily slanted top surface models. " "However, in most cases it creates too many unnecessary bridges." msgstr "" -"Эта опция может помочь уменьшить заваливание верхних поверхностей в сильно " -"наклонных или изогнутых моделях.\n" -"\n" -"По-умолчанию небольшие внутренние мосты подвергаются фильтрации, а " -"внутренняя сплошная заливка печатается непосредственно поверх разреженной " -"заливки. В большинстве случаев это хорошо работает, ускоряя печать без " -"особого ущерба для качества верхней поверхности.\n" +"Эта опция может помочь уменьшить образование эффекта «дырявой подушки» на " +"верхних сильно наклонных поверхностях или изогнутых моделях.\n" "\n" -"Однако в сильно наклонных или изогнутых моделях, особенно если используется " -"слишком низкая плотность разреженной заливки, это может привести к " -"скручиванию незакреплённой сплошной заливки, вызывая заваливание.\n" +"По умолчанию, маленькие внутренние мосты отфильтровываются, а внутреннее " +"сплошное заполнение печатается непосредственно поверх разреженного " +"заполнения. В большинстве случаев это хорошо работает, ускоряя печать без " +"особого ущерба для качества верхней поверхности. Однако, на сильно наклонных " +"поверхностях или изогнутых моделях, особенно при низкой плотности " +"заполнения, это может привести к скручиванию неподдерживаемого сплошного " +"заполнения и образованию эффекта «дырявой подушки».\n" "\n" -"Отключение этой опции приведет к печати внутреннего мостового слоя поверх " -"слегка незакреплённого внутреннего сплошного наполнителя. Приведенные ниже " -"параметры регулируют степень фильтрации, т.е. количество создаваемых " -"внутренних мостиков.\n" +"Отключение позволит печатать слой внутреннего моста над слабо поддерживаемым " +"внутренним сплошным заполнением. Приведённые ниже параметры управляют " +"степенью фильтрации, т.е. количеством создаваемых внутренних мостов.\n" "\n" -"Фильтр - включите эту опцию. Это поведение по умолчанию, и оно хорошо " -"работает в большинстве случаев.\n" +"Фильтрация включена по умолчанию и хорошо работает в большинстве случаев.\n" "\n" -"Ограниченная фильтрация - создает внутренние мостики на сильно наклонных " -"поверхностях, избегая при этом создания ненужных внутренних мостиков. Это " -"хорошо работает для большинства сложных моделей.\n" +"Ограниченная фильтрация - создаёт внутренние мосты на сильно наклонных " +"поверхностях, при этом избегая создания ненужных внутренних мостов. Это " +"хорошо работает на большинстве сложных моделях.\n" "\n" -"Без фильтрации - создаёт внутренние мосты на каждом потенциальном внутреннем " -"выступе. Этот вариант полезен для моделей с сильно наклоненной верхней " -"поверхностью. Однако в большинстве случаев он создаёт слишком много ненужных " -"мостов." +"Без фильтрации - мосты создаются над каждым потенциально внутреннем " +"нависании. Этот вариант полезен для моделей с сильно наклонной верхней " +"поверхностью. Однако в большинстве случаев этот вариант создаёт слишком " +"много ненужных мостов." msgid "Filter" -msgstr "Фильтр" +msgstr "Фильтровать" msgid "Limited filtering" msgstr "Ограниченная фильтрация" @@ -10723,20 +10767,22 @@ msgid "End G-code" msgstr "Завершающий G-код" msgid "End G-code when finish the whole printing" -msgstr "Завершающий G-код при окончании всей печати." +msgstr "Команды в G-коде, которые выполняются в самом конце печати." msgid "Between Object Gcode" -msgstr "G-код выполняемый между моделями" +msgstr "G-код между моделями" msgid "" "Insert Gcode between objects. This parameter will only come into effect when " "you print your models object by object" msgstr "" -"G-код выполняемый между моделями. Этот код будет действовать только при " -"печати моделей «По очереди»." +"Команды в G-коде, которые выполняются каждый раз перед сменой модели. " +"Действует только при печати моделей «По очереди»." msgid "End G-code when finish the printing of this filament" -msgstr "Завершающий G-код при окончании печати этой пластиковой нитью." +msgstr "" +"Команды в G-коде, которые выполняются при окончании печатью этой пластиковой " +"нитью." msgid "Ensure vertical shell thickness" msgstr "Обеспечивать верт. толщину оболочки" @@ -10915,7 +10961,6 @@ msgstr "Внутренний/Внешний/Внутренний" msgid "Print infill first" msgstr "Сначала печатать заполнение" -# ??? msgid "" "Order of wall/infill. When the tickbox is unchecked the walls are printed " "first, which works best in most cases.\n" @@ -10949,15 +10994,10 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" -"Направление, в котором выдавливаются петли стены, если смотреть сверху " -"вниз.\n" -"\n" -"По-умолчанию все стены выдавливаются против часовой стрелки, если не включен " -"параметр реверса по чётным. Если установить для этого параметра значение, " -"отличное от Auto, направление стены будет задано независимо от реверса по " -"чётным.\n" -"\n" -"Эта опция будет отключена, если включён режим спиральной вазы." +"По умолчанию все периметры выдавливаются против часовой стрелки, если не " +"включена опция «Реверс на чётных слоях». При установке этого параметра в " +"значение, отличное от автоматического, направление периметров будет " +"задаваться независимо от опция «Реверс на чётных слоях»." msgid "Counter clockwise" msgstr "Против часовой стрелки" @@ -11074,11 +11114,12 @@ msgstr "" "Используется только в качестве визуальной помощи в пользовательском " "интерфейсе" +# ??? Смещение экструдера по осям X/Y msgid "Extruder offset" -msgstr "Смещение экструдера по осям X/Y" +msgstr "Смещение координат экструдера" msgid "Flow ratio" -msgstr "Коэффициент потока" +msgstr "Коэффициент потока модели" msgid "" "The material may have volumetric change after switching between molten state " @@ -11092,6 +11133,7 @@ msgstr "" "При небольшом переливе или недоливе на поверхности, корректировка этого " "параметра поможет получить хорошую гладкую поверхность." +# ???1 Конечная величина потока модели - это введённое здесь значение, умноженное на коэффициент потока прутка. msgid "" "The material may have volumetric change after switching between molten state " "and crystalline state. This setting changes all extrusion flow of this " @@ -11102,14 +11144,13 @@ msgid "" "The final object flow ratio is this value multiplied by the filament flow " "ratio." msgstr "" -"Материал может иметь объёмные изменения после перехода из расплавленного " -"состояния в кристаллическое. Эта настройка пропорционально изменяет весь " -"экструзионный поток этой нити в gcode. Рекомендуемый диапазон значений - от " -"0,95 до 1,05. Возможно, вы можете настроить это значение для получения " -"хорошей плоской поверхности при небольшом переливе или недоливе.\n" +"Коэффициент пропорционального изменения величины потока подаваемого " +"пластика. Рекомендуемый диапазон значений от 0,95 до 1,05.\n" +"При небольшом переливе или недоливе на поверхности, корректировка этого " +"параметра поможет получить хорошую гладкую поверхность.\n" "\n" -"Конечный коэффициент расхода объекта равен этому значению, умноженному на " -"коэффициент расхода филамента." +"Фактический поток модели рассчитывается путем умножения введенного здесь " +"значения на коэффициент потока прутка." msgid "Enable pressure advance" msgstr "Включить Pressure advance" @@ -11118,18 +11159,18 @@ msgid "" "Enable pressure advance, auto calibration result will be overwritten once " "enabled." msgstr "" -"Включить Pressure advance (Прогнозирование давления). Результат " +"Включить Pressure advance (прогнозирование давления). Результат " "автокалибровки будет перезаписан после включения." msgid "Pressure advance(Klipper) AKA Linear advance factor(Marlin)" msgstr "" -"Pressure advance (Прогнозирование давления) в прошивки Klipper, это одно и " +"Pressure advance (прогнозирование давления) в прошивки Klipper, это одно и " "тоже что Linear advance в прошивке Marlin." msgid "Enable adaptive pressure advance (beta)" -msgstr "Включить адаптивный pressure advance (бета)" +msgstr "Включить адаптивное Pressure advance (beta)" -#, fuzzy, no-c-format, no-boost-format +#, no-c-format, no-boost-format msgid "" "With increasing print speeds (and hence increasing volumetric flow through " "the nozzle) and increasing accelerations, it has been observed that the " @@ -11150,29 +11191,29 @@ msgid "" "and for when tool changing.\n" "\n" msgstr "" -"Было замечено, что с увеличением скорости печати (и, следовательно, " -"увеличением объёмного потока через сопло) и ускорения эффективное значение " -"PA обычно уменьшается. Это означает, что одно значение PA не всегда на 100% " -"оптимально для всех элементов, и обычно используется компромиссное значение, " -"которое не вызывает слишком сильных выпуклостей на элементах с меньшей " -"скоростью потока и ускорениями и в то же время не вызывает зазоров на более " -"быстрых элементах.\n" +"Было замечено, что с увеличением скорости печати (а следовательно, " +"увеличением потока через сопло) и увеличением ускорений, эффективное " +"значение Pressure advance обычно уменьшается. Это означает, что одинаковое " +"значение коэффициента PA не всегда на 100% оптимально для всех элементов, и " +"обычно используется компромиссное значение, которое не вызывает слишком " +"сильных выпуклостей на элементах с более низкой скоростью потока и " +"ускорениями, а также не вызывает пробелов на более быстрых элементах.\n" "\n" "Данная функция призвана устранить это ограничение путем моделирования " "реакции экструзионной системы вашего принтера в зависимости от объёмной " -"скорости потока и ускорения, с которыми он печатает. Внутри системы " -"генерируется модель, позволяющая экстраполировать необходимое значение " -"pressure advance для любой заданной скорости потока и ускорения, которое " -"затем передается принтеру в зависимости от текущих условий печати.\n" +"скорости потока и ускорения, с которыми происходит печать. Внутри системы " +"генерируется модель, которая позволяет экстраполировать необходимое значение " +"Pressure advance для любой заданной объёмной скорости потока и ускорения, " +"которое затем подаётся на принтер в зависимости от текущих условий печати.\n" "\n" -"Когда эта функция включена, значение pressure advance, указанное выше, " -"отменяется. Однако настоятельно рекомендуется использовать разумное значение " -"по умолчанию, чтобы использовать его в качестве запасного варианта и при " -"смене инструмента.\n" +"Если включено, значение Pressure advance, указанное выше, переопределяется. " +"Однако настоятельно рекомендуется использовать разумное значение по " +"умолчанию, указанное выше, в качестве запасного варианта и при смене " +"инструмента.\n" "\n" msgid "Adaptive pressure advance measurements (beta)" -msgstr "Адаптивные измерения pressure advance (бета)" +msgstr "Измеренные значения адаптивного Pressure advance (beta)" #, no-c-format, no-boost-format msgid "" @@ -11204,40 +11245,38 @@ msgid "" "your filament profile\n" "\n" msgstr "" -"Добавьте наборы значений pressure advance (PA), объемных скоростей потока и " -"ускорений, при которых они были измерены, через запятую. Один набор значений " -"на строку. Например:\n" -"\n" +"Впишите через запятую наборы значений Pressure advance, объёмных скоростей " +"потока (далее просто поток) и ускорений, при которых они были измерены. По " +"одному набору значений в строке. Например\n" "0.04,3.96,3000\n" "0.033,3.96,10000\n" "0.029,7.91,3000\n" "0.026,7.91,10000\n" "\n" -"\n" "Как выполнить калибровку:\n" -"\n" -"1. Проведите тест на опережение давления не менее чем на 3 скоростях для " +"1. Проведите тест Pressure advance не менее чем на трёх скоростях для " "каждого значения ускорения. Рекомендуется выполнить тест как минимум для " "скорости внешних периметров, скорости внутренних периметров и самой высокой " -"скорости печати элементов в вашем профиле (обычно это разреженная или " -"сплошная заливка). Затем прогоните их на тех же скоростях для самого " -"медленного и самого быстрого ускорения печати, но не быстрее " -"рекомендованного максимального ускорения, указанного входным формирователем " -"Klipper.\n" -"\n" -"2. Запишите оптимальное значение PA для каждой скорости объемного потока и " -"ускорения. Номер потока можно найти, выбрав поток в раскрывающемся меню " -"цветовой схемы и переместив горизонтальный ползунок над линиями шаблона PA. " -"Число должно быть видно в нижней части страницы. Идеальное значение PA " -"должно уменьшаться тем больше, чем выше объемный расход. Чем медленнее и с " -"меньшим ускорением вы печатаете, тем больше диапазон допустимых значений PA. " -"Если разница не видна, используйте значение PA из более быстрого теста.3. " -"Введите триплеты значений PA, расхода и ускорения в текстовое поле здесь и " -"сохраните профиль филамента.\n" +"скорости печати элементов в вашем профиле (обычно это разреженное или " +"сплошное заполнение). \n" +"Затем выполните тесты для тех же скоростей при самых медленных и самых " +"быстрых ускорениях печати, но не быстрее рекомендуемого максимального " +"ускорения, указанного в конфиге Klipper-а.\n" +"2. Запишите оптимальное значение Pressure advance для потока и ускорения. " +"Значение потока можно увидеть, выбрав «Поток» в раскрывающемся меню цветовой " +"схемы. Значение потока будет отображаться внизу на экране предпросмотра " +"нарезки. Идеальное значение PA должно уменьшаться с увеличением объёмного " +"потока. Если это не так, убедитесь, что ваш экструдер функционирует " +"правильно. Чем медленнее и с меньшим ускорением вы печатаете, тем больше " +"диапазон допустимых значений PA. Если разница не видна, используйте значение " +"PA из более быстрого теста.\n" +"3. Введите в текстовое поле здесь через запятую три значения - коэффициент " +"Pressure advance, значения потока и ускорения. Впишите столько наборов " +"значений сколько считаете нужным и сохраните профиль прутка. \n" "\n" msgid "Enable adaptive pressure advance for overhangs (beta)" -msgstr "Включение pressure advance для свесов (бета)" +msgstr "Включить адаптивное Pressure advance на нависаниях (beta)" msgid "" "Enable adaptive PA for overhangs as well as when flow changes within the " @@ -11245,13 +11284,13 @@ msgid "" "set accurately, it will cause uniformity issues on the external surfaces " "before and after overhangs.\n" msgstr "" -"Включите адаптивный PA для выступов, а также при изменении потока в пределах " -"одного элемента. Это экспериментальная опция, так как если профиль PA задан " -"неточно, это приведёт к проблемам с однородностью внешних поверхностей до и " -"после выступов.\n" +"Включить адаптивное Pressure advance на нависаниях, а также при изменении " +"потока в пределах одного и того же элемента. Это экспериментальная опция, " +"так как неточное заданное значение PA может привести к проблемам с " +"однородностью на внешних поверхностях до и после нависаний.\n" msgid "Pressure advance for bridges" -msgstr "Pressure advance для мостов" +msgstr "Коэф. Pressure advance для мостов" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" @@ -11261,12 +11300,12 @@ msgid "" "pressure drop in the nozzle when printing in the air and a lower PA helps " "counteract this." msgstr "" -"Значение pressure advance для мостов. Для отключения установките 0.\n" +"Коэффициент Pressure advance для мостов. Установите 0 для отключения.\n" "\n" -"Более низкое значение PA при печати мостов помогает уменьшить появление " -"небольшой недоэкструзии сразу после мостов. Это вызвано перепадом давления в " -"сопле при печати на воздухе, и более низкое значение PA помогает " -"противостоять этому." +"Более низкое значение Pressure advance при печати мостов помогает уменьшить " +"появление небольшой недоэкструзии сразу после мостов. Это вызвано падением " +"давления в сопле при печати в воздухе, и более низкое значение Pressure " +"advance помогает предотвратить это." msgid "" "Default line width if other line widths are set to 0. If expressed as a %, " @@ -11336,7 +11375,7 @@ msgid "Filament notes" msgstr "Примечание о прутке" msgid "You can put your notes regarding the filament here." -msgstr "Здесь вы можете написать свои замечания для текущей пластиковой нити." +msgstr "Здесь вы можете написать свои заметки для текущей пластиковой нити." msgid "Required nozzle HRC" msgstr "Необходимая твёрдость сопла" @@ -11354,8 +11393,8 @@ msgid "" "case of too high and unreasonable speed setting. Can't be zero" msgstr "" "Этот параметр определяет, какой объём материала может быть расплавлен и " -"выдавлен в секунду. Скорость печати ограничена максимальной объёмной " -"скоростью в случае слишком высокой и необоснованной установки скорости. " +"выдавлен в секунду. Скорость печати ограничена максимальным объёмным " +"расходом в случае слишком высокой и необоснованной установки скорости. " "Параметр не может быть нулевым." msgid "mm³/s" @@ -11369,10 +11408,10 @@ msgid "" "single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" -"Время загрузки новой нити при переключении нити. Обычно применяется для " -"одноэкструдерных машин с несколькими материалами. Для станков со сменой " -"инструмента или многоинструментальных станков это значение обычно равно 0. " -"Только для статистики" +"Время загрузки новой пластиковой нити при её смене. Применяется для " +"одноэкструдерных мультиматериальных принтеров. Для принтеров со сменой " +"инструмента или многоинструментальных принтеров оно обычно равно 0. Это " +"необходимо только для отображения статистической информации." msgid "Filament unload time" msgstr "Время выгрузки прутка" @@ -11382,23 +11421,23 @@ msgid "" "for single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" -"Время выгрузки старой нити при смене нити. Обычно применяется для " -"одноэкструдерных машин с несколькими материалами. Для станков со сменой " -"инструмента или многоинструментальных станков оно обычно равно 0. Только для " -"статистики" +"Время выгрузки старой пластиковой нити при её смене. Применяется для " +"одноэкструдерных мультиматериальных принтеров. Для принтеров со сменой " +"инструмента или многоинструментальных принтеров оно обычно равно 0. Это " +"необходимо только для отображения статистической информации." msgid "Tool change time" -msgstr "Инструмент изменения времени" +msgstr "Время смены инструмента" msgid "" "Time taken to switch tools. It's usually applicable for tool changers or " "multi-tool machines. For single-extruder multi-material machines, it's " "typically 0. For statistics only" msgstr "" -"Время, необходимое для переключения инструментов. Обычно применяется для " -"станков со сменой инструмента или многоинструментальных станков. Для " -"одноэкструдерных станков с несколькими материалами он обычно равен 0. Только " -"для статистики" +"Время, необходимое для переключения инструмента. Обычно применяется для " +"принтеров со сменой инструментов или многоинструментальных принтеров. Для " +"одноэкструдерных мультиматериальных принтеров значение обычно равно 0. Это " +"необходимо только для отображения статистической информации." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11408,8 +11447,9 @@ msgstr "" "важен и должен быть точным" msgid "Pellet flow coefficient" -msgstr "Коэффициент расхода гранул" +msgstr "Коэф. потока гранул" +# ??????? PI это π? msgid "" "Pellet flow coefficient is empirically derived and allows for volume " "calculation for pellet printers.\n" @@ -11419,16 +11459,16 @@ msgid "" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" -"Коэффициент расхода гранул получен эмпирическим путем и позволяет " -"рассчитывать объем для гранульных принтеров.\n" +"Коэффициент потока гранул определяется эмпирическим путем и позволяет " +"рассчитать объём для гранульных принтеров.\n" "\n" -"Внутри системы он преобразуется в filament_diameter. Все остальные расчёты " -"объема остаются прежними.\n" +"Внутри коэффициент преобразуется в диаметр прутка ('filament_diameter'). Все " +"остальные расчёты объёма остаются прежними.\n" "\n" -"filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" +"диаметр прутка = √( (4 * коэф. потока гранул) / π )" msgid "Shrinkage (XY)" -msgstr "Усадка (XY)" +msgstr "Компенсация усадки по XY" #, no-c-format, no-boost-format msgid "" @@ -11440,14 +11480,14 @@ msgid "" msgstr "" "Введите процент усадки пластиковой нити, которую получит она после " "охлаждения (пишите 94%, если вы намерили 94 мм, вместо 100 мм). Для " -"компенсации усадки деталь будет отмасштабирована по оси XY. При этом " +"компенсации усадки деталь будет отмасштабированна по оси XY. При этом " "учитывается только пластиковая нить, используемая для печати внешнего " -"\"периметра.\n" +"периметра.\n" "Убедитесь, что между моделями достаточно места, так как эта компенсация " "выполняется после проверок." msgid "Shrinkage (Z)" -msgstr "Усадка (Z)" +msgstr "Компенсация усадки по Z" #, no-c-format, no-boost-format msgid "" @@ -11455,9 +11495,9 @@ msgid "" "if you measure 94mm instead of 100mm). The part will be scaled in Z to " "compensate." msgstr "" -"Введите процент усадки, который получит нить после охлаждения (94%, если Вы " -"измеряете 94 мм, а не 100 мм). Деталь будет масштабироваться по Z для " -"компенсации." +"Введите процент усадки пластиковой нити, которую получит она после " +"охлаждения (пишите 94%, если вы намерили 94 мм, вместо 100 мм). Для " +"компенсации усадки деталь будет отмасштабированна по оси Z." msgid "Loading speed" msgstr "Скорость загрузки" @@ -11511,22 +11551,23 @@ msgstr "" "Укажите желаемое количество таких движений." msgid "Stamping loading speed" -msgstr "Скорость загрузки теснения" +msgstr "Скорость загрузки при утрамбовке" msgid "Speed used for stamping." -msgstr "Скорость, используемая для тиснения." +msgstr "Скорость, используемая для утрамбовки." msgid "Stamping distance measured from the center of the cooling tube" -msgstr "Расстояние теснения измеряется от центра охлаждающей трубки" +msgstr "" +"Расстояние от места формования конца, измеренное от центра охлаждающей трубки" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " "individual cooling moves (\"stamping\"). This option configures how long " "this movement should be before the filament is retracted again." msgstr "" -"Если установлено ненулевое значение, нить перемещается к соплу между " -"отдельными движениями охлаждения («теснение»). Этот параметр определяет, как " -"долго должно продолжаться это движение, прежде чем нить снова будет втянута." +"Если задано ненулевое значение, пруток перемещается к соплу между отдельными " +"охлаждающими движениями (\"утрамбовка\"). Эта опция определяет, как долго " +"должно продолжаться это движение, прежде чем пруток снова будет втянут." msgid "Speed of the first cooling move" msgstr "Скорость первого охлаждающего движения" @@ -11568,7 +11609,7 @@ msgstr "" "параметры." msgid "Enable ramming for multi-tool setups" -msgstr "Включить рэмминг для мультиинструментальных устройств" +msgstr "Включить рэмминг для многоинструментального принтера" msgid "" "Perform ramming when using multi-tool printer (i.e. when the 'Single " @@ -11576,20 +11617,20 @@ msgid "" "small amount of filament is rapidly extruded on the wipe tower just before " "the toolchange. This option is only used when the wipe tower is enabled." msgstr "" -"Выполнять рэмминг при использовании мультиинструментального принтера (т. е. " -"когда в настройках принтера снят флажок «Мультиматериальный одиночный " -"экструдер»). При включении этой опции, небольшое количество материала быстро " -"выдавливается на черновую башню непосредственно перед сменой инструмента. " -"Эта опция используется только в том случае, если включена черновая башня." +"Выполнять рэмминг при использовании многоинструментального принтера (т. е. " +"когда в настройках принтера снят флажок «Одноэкструдерный ММ принтер»). При " +"включении этой опции, небольшое количество материала быстро выдавливается на " +"черновую башню непосредственно перед сменой инструмента. Эта опция " +"используется только в том случае, если включена черновая башня." msgid "Multi-tool ramming volume" -msgstr "Объём рэмминга мультиинструмента" +msgstr "Объём рэмминга многоинструментального принтера" msgid "The volume to be rammed before the toolchange." msgstr "Объём рэмминга перед сменой инструмента." msgid "Multi-tool ramming flow" -msgstr "Поток рэмминга мультиинструмента" +msgstr "Поток рэмминга многоинструментального принтера" msgid "Flow used for ramming the filament before the toolchange." msgstr "Поток рэмминга пластиковой нити перед сменой инструмента." @@ -11598,7 +11639,9 @@ msgid "Density" msgstr "Плотность" msgid "Filament density. For statistics only" -msgstr "Плотность пластиковой нити (только для статистики)" +msgstr "" +"Плотность пластиковой нити. Это необходимо только для отображения " +"статистической информации." msgid "g/cm³" msgstr "г/см³" @@ -11640,7 +11683,9 @@ msgid "Price" msgstr "Стоимость" msgid "Filament price. For statistics only" -msgstr "Стоимость пластиковой нити (только для статистики)" +msgstr "" +"Стоимость пластиковой нити. Это необходимо только для отображения " +"статистической информации." msgid "money/kg" msgstr "цена/кг" @@ -11649,13 +11694,15 @@ msgid "Vendor" msgstr "Производитель" msgid "Vendor of filament. For show only" -msgstr "Производитель пластиковой нити (только для статистики)." +msgstr "" +"Производитель пластиковой нити. Это необходимо только для отображения " +"статистической информации." msgid "(Undefined)" msgstr "(Не указано)" msgid "Sparse infill direction" -msgstr "Направление разреженного заполнения" +msgstr "Угол разреженного заполнения" msgid "" "Angle for sparse infill pattern, which controls the start or main direction " @@ -11665,7 +11712,7 @@ msgstr "" "или основное направление линий." msgid "Solid infill direction" -msgstr "Направление сплошного заполнения" +msgstr "Угол сплошного заполнения" msgid "" "Angle for solid infill pattern, which controls the start or main direction " @@ -11704,16 +11751,16 @@ msgid "Line" msgstr "Линии" msgid "Cubic" -msgstr "Кубический" +msgstr "Куб" msgid "Tri-hexagon" msgstr "Звёзды" msgid "Gyroid" -msgstr "Гироидный" +msgstr "Гироид" msgid "Honeycomb" -msgstr "Медовые соты" +msgstr "Соты" msgid "Adaptive Cubic" msgstr "Динамический куб" @@ -11727,7 +11774,6 @@ msgstr "Динам. куб. поддержка" msgid "Lightning" msgstr "Молния" -# Перекрестная штриховка, Решётка??? msgid "Cross Hatch" msgstr "Перекрестная решётка" @@ -11851,13 +11897,13 @@ msgstr "Вкл. ограничение ускорения зигзагов" msgid "Klipper's max_accel_to_decel will be adjusted automatically" msgstr "" -"Значение max_accel_to_decel (ограничение ускорения зигзагов) в Klipper будет " +"Значение ограничение ускорения зигзагов (max_accel_to_decel) в Klipper будет " "скорректировано автоматически.\n" "\n" "Параметр предназначен для ограничения влияния экстремальных переходов от " "ускорения к замедлению, типичных для коротких зигзагообразных перемещений." -# ??? Ускорение к замедлению, Ускорение торможения, Скорость торможения, Скорость торможения перед поворотом, Соотношение ускорения к замедлению, Скорость движения при переходе от ускорения к замедлению и наоборот +# ??? Ускорение к замедлению, Ускорение торможения, Скорость торможения, Скорость торможения перед поворотом, Соотношение ускорения к замедлению msgid "accel_to_decel" msgstr "Ограничение ускорение зигзагов" @@ -11865,7 +11911,7 @@ msgstr "Ограничение ускорение зигзагов" msgid "" "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" -"Значение max_accel_to_decel (ограничение ускорения зигзагов) в Klipper будет " +"Значение ограничение ускорения зигзагов (max_accel_to_decel) в Klipper будет " "скорректировано на заданный процент ускорения." msgid "Jerk of outer walls" @@ -11975,7 +12021,7 @@ msgid "" "look. This setting controls the fuzzy position" msgstr "" "Случайное дрожание сопла при печати внешнего периметра для создания эффекта " -"шероховатой поверхности. Эта настройка определяет положение нечетной " +"шероховатой поверхности. Эта настройка определяет положение нечёткой " "оболочки." msgid "Contour" @@ -11994,18 +12040,21 @@ msgid "" "The width within which to jitter. It's advised to be below outer wall line " "width" msgstr "" -"Ширина, в пределах которой будет происходить дрожание. Желательно, чтобы она " -"была меньше ширины линии внешнего периметра." +"Величина амплитуды дрожания (т.е. в обои направления) измеряемая " +"перпендикулярно печатаемому периметру. Желательно, чтобы она была меньше " +"ширины внешнего периметра." msgid "Fuzzy skin point distance" -msgstr "Расстояние «дрожания» при печати нечёткой оболочки" +msgstr "Расстояние между точками нечёткой оболочки" msgid "" "The average distance between the random points introduced on each line " "segment" msgstr "" -"Среднее расстояние между случайно вставленными точками при генерации " -"нечётной оболочки." +"Среднее расстояние между случайными точками, которые вносятся в каждый " +"сегмент линии периметра. Уменьшение расстояния между точками нечёткой " +"оболочки, увеличит число случайно смещённых точек на стенке периметра, т.е. " +"увеличит их плотность." msgid "Apply fuzzy skin to first layer" msgstr "Нечёткая оболочки на первом слое" @@ -12013,21 +12062,23 @@ msgstr "Нечёткая оболочки на первом слое" msgid "Whether to apply fuzzy skin on the first layer" msgstr "Применять ли нечёткую оболочку к первому слою." +# Или пробелы оставить??? msgid "Filter out tiny gaps" -msgstr "Игнорировать небольшие пробелы" +msgstr "Игнорировать небольшие щели" msgid "Layers and Perimeters" msgstr "Слои и периметры" +# ??? msgid "" "Don't print gap fill with a length is smaller than the threshold specified " "(in mm). This setting applies to top, bottom and solid infill and, if using " "the classic perimeter generator, to wall gap fill. " msgstr "" -"Не печатать заливку с зазором, длина которого меньше указанного порога (в " -"мм). Эта настройка применяется к верхнему, нижнему и сплошному заполнению, а " -"при использовании классического генератора периметра - к заполнению зазоров " -"в стене. " +"Не заполнять щели, длина которого меньше указанного порога (в мм). Эта " +"настройка применяется к верхнему, нижнему и сплошному заполнению, а при " +"использовании классического генератора периметров - к заполнению щелей " +"стенок." msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " @@ -12049,7 +12100,7 @@ msgstr "" "последних нескольких слоёв." msgid "Arc fitting" -msgstr "Поддержка движения по дуге окружности" +msgstr "Аппроксимация дугами" msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " @@ -12061,9 +12112,10 @@ msgid "" "quality as line segments are converted to arcs by the slicer and then back " "to line segments by the firmware." msgstr "" -"Включите, если хотите использовать в G-коде команды перемещения по дуге " -"окружности G2/G3. Значение допуска траектории такое же как разрешение G-кода " -"выше.\n" +"Включите, если хотите чтобы программа пыталась заменить последовательности " +"из коротких прямолинейных участков дугами (используя команды G2 и G3). " +"Функция должна поддерживаться прошивкой принтера. Значение допуска " +"траектории такое же как разрешение G-кода. \n" "\n" "Примечание: для устройств с прошивкой Klipper рекомендуется отключить эту " "опцию. Klipper не получает преимуществ от этой опции, поскольку прошивка " @@ -12085,7 +12137,8 @@ msgstr "Проверка первого слоя" msgid "" "Enable this to enable the camera on printer to check the quality of first " "layer" -msgstr "При включении, камера принтера будет проверять качество первого слоя." +msgstr "" +"При включении, камера принтера будет проверять качество печати первого слоя." msgid "Nozzle type" msgstr "Тип сопла" @@ -12101,7 +12154,7 @@ msgid "Undefine" msgstr "Не задано" msgid "Hardened steel" -msgstr "Закаленная сталь" +msgstr "Закалённая сталь" msgid "Stainless steel" msgstr "Нержавеющая сталь" @@ -12169,7 +12222,7 @@ msgstr "" "Запуск вентилятора на указанное количество секунд раньше целевого времени " "запуска (поддерживаются доли секунды). При этом предполагается бесконечное " "ускорение для оценки этого времени, и учёт только перемещений G1 и G0 " -"(Поддержка движения по дуге окружности не поддерживается).\n" +"(Аппроксимация дугами).\n" "Это не приведёт к сдвигу команд вентилятора из пользовательских G-кодов (они " "действуют как своего рода барьер).\n" "Это не приведёт к сдвигу команд вентилятора в стартовом G-коде, если " @@ -12215,8 +12268,8 @@ msgid "" "This option is enabled if machine support controlling chamber temperature\n" "G-code command: M141 S(0-255)" msgstr "" -"Если принтер поддерживает контроль температуры в камере, включите эту " -"опцию.\n" +"Если принтер поддерживает контроль температуры внутри термокамеры принтера, " +"включите эту опцию.\n" "G-код команда: M141 S(0-255)" msgid "Support air filtration" @@ -12227,8 +12280,8 @@ msgid "" "G-code command: M106 P3 S(0-255)" msgstr "" "Если в принтере имеется вытяжной вентилятор и вам требуется дополнительное " -"охлаждение области внутри принтера, включите эту опцию. G-код команда: M106 " -"P3 S(0-255)" +"охлаждение внутренней области принтера, включите эту опцию. G-код команда: " +"M106 P3 S(0-255)" msgid "G-code flavor" msgstr "Тип G-кода" @@ -12240,10 +12293,12 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "Модифицированный принтер для гранул" +msgstr "Гранульная модификация принтера" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "Включите эту опцию, если ваш принтер использует гранулы вместо нитей." +msgstr "" +"Включите, если для печати вместо пластиковых нитей используются пластиковые " +"гранулы." msgid "Support multi bed types" msgstr "Поддержка нескольких типов столов" @@ -12251,19 +12306,24 @@ msgstr "Поддержка нескольких типов столов" msgid "Enable this option if you want to use multiple bed types" msgstr "Включите, если хотите использовать несколько типов столов." +# ?????? Название моделей msgid "Label objects" -msgstr "Название моделей" +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-код с указанием того, к " "какой модели он принадлежит, что полезно для плагина Octoprint CancelObject. " -"Эта настройка не совместима с настройкой «Мультиматериальный одиночный " -"экструдер» и «Очистка в модель» / «Очистка в заполнение модели»." +"Эта настройка не совместима с настройкой «Одноэкструдерный " +"мультиматериальный принтер» и «Очистка в модель» / «Очистка в заполнение " +"модели»." msgid "Exclude objects" msgstr "Исключить модели" @@ -12271,7 +12331,7 @@ msgstr "Исключить модели" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" msgstr "" "Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключения " -"моделей) в G-код." +"моделей) в G-код для принтера с прошивкой Klipper." msgid "Verbose G-code" msgstr "Подробный G-код" @@ -12293,12 +12353,13 @@ msgid "" "reduce time. Wall is still printed with original layer height." msgstr "" "Для сокращения времени печати есть возможность печатать заполнение не на " -"каждом слое, а на двух слоях сразу. \n" +"каждом слое, а на нескольких слоях сразу. \n" "Периметры по-прежнему печатаются с исходной высотой слоя." msgid "Infill combination - Max layer height" -msgstr "Комбинация наполнителей - Максимальная высота слоя" +msgstr "Максимальная высота слоя (КЗ)" +# ??? maximize sparse infill strength msgid "" "Maximum layer height for the combined sparse infill. \n" "\n" @@ -12311,18 +12372,18 @@ msgid "" "Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values " "(eg 80%). This value must not be larger than the nozzle diameter." msgstr "" -"Максимальная высота слоя для комбинированной разреженной заливки.\n" +"Максимальная высота слоя для комбинированного разреженного заполнения. \n" "\n" -"Установите значение 0 или 100%, чтобы использовать диаметр сопла (для " -"максимального сокращения времени печати), или значение ~ 80%, чтобы " -"максимизировать прочность разреженной заливки.\n" +"Установите 0 или 100%, чтобы использовать значение диаметра сопла (для " +"максимального сокращения времени печати), или значение ~80% для увеличения " +"прочности разреженного заполнения. \n" "\n" -"Количество слоев, на которых комбинируется заливка, определяется путем " -"деления этого значения на высоту слоя и округляется до ближайшего " -"десятичного значения.\n" +"Количество слоёв, для которых объединяется заполнение, получается путем " +"деления этого значения на высоту слоя и округления до ближайшего десятичного " +"знака.\n" "\n" -"Используйте либо абсолютные значения в мм (например, 0,32 мм для насадки 0,4 " -"мм), либо значения в % (например, 80 %). Это значение не должно быть больше " +"Используйте либо абсолютные значения в мм (например, 0,32 мм для сопла 0,4 " +"мм), либо значения в % (например, 80%). Это значение не должно быть больше " "диаметра сопла." msgid "Filament to print internal sparse infill." @@ -12335,7 +12396,7 @@ msgstr "" "Ширина экструзии для заполнения. Если задано в процентах, то значение " "вычисляться относительно диаметра сопла." -# ??? придется сократить Перекрытие линий заполнения с линиями периметра +# Придется сократить «Перекрытие линий заполнения с линиями периметра» msgid "Infill/Wall overlap" msgstr "Перекрытие заполнения с периметром" @@ -12378,10 +12439,9 @@ msgid "" "Useful for multi-extruder prints with translucent materials or manual " "soluble support material" msgstr "" -"Принудительное создание замкнутых (сплошных) оболочек между смежными " -"материалами/объёмами. Полезно для многоэкструдерных принтеров при печати " -"полупрозрачными материалами или растворимой поддержкой. Помогает избежать " -"диффузию материалов." +"Принудительное создание сплошных оболочек между смежными материалами/" +"объёмами. Полезно для многоэкструдерной печати полупрозрачными материалами " +"или растворимой поддержки." msgid "Maximum width of a segmented region" msgstr "Максимальная ширина сегментированной области" @@ -12392,7 +12452,7 @@ msgstr "" "этой функции." msgid "Interlocking depth of a segmented region" -msgstr "Глубина взаимосвязи сегментированной области" +msgstr "Глубина переплетения окрашенной области" msgid "" "Interlocking depth of a segmented region. It will be ignored if " @@ -12400,66 +12460,65 @@ msgid "" "\"mmu_segmented_region_interlocking_depth\"is bigger then " "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"Глубина блокировки сегментированного региона. Игнорируется, если " -"\"mmu_segmented_region_max_width\" равен нулю или если " -"\"mmu_segmented_region_interlocking_depth\" больше, чем " -"\"mmu_segmented_region_max_width\". Ноль отключает эту функцию." +"Глубина взаимного переплетения окрашенной области с основной моделью. Это " +"значительно увеличивает прочность соединения между частями детали при " +"мультиматериальной покраске.\n" +"При 0 и если «Глубина переплетения окрашенной области» будет больше значения " +"«Глубина проникновения окрашенной области», то переплетения не будет." msgid "Use beam interlocking" -msgstr "Использовать блокировку балок" +msgstr "Создать взаимосвязанную структуру" msgid "" "Generate interlocking beam structure at the locations where different " "filaments touch. This improves the adhesion between filaments, especially " "models printed in different materials." msgstr "" -"Создайте взаимосвязанную балочную структуру в местах соприкосновения " -"различных \n" -"нити соприкасаются. Это улучшает сцепление между нитями, особенно \n" -"моделей, напечатанных из разных материалов." +"Создать взаимосвязанную структуру балок в местах соприкосновения моделей. " +"Это улучшит адгезию между моделями, особенно моделями из разных материалов." msgid "Interlocking beam width" -msgstr "Ширина блокирующей балки" +msgstr "Ширина взаимосвязанных балок" msgid "The width of the interlocking structure beams." -msgstr "Ширина балок взаимосвязанной структуры." +msgstr "Ширина балок взаимосвязанной конструкции." msgid "Interlocking direction" -msgstr "Направление блокировки" +msgstr "Направление взаимосвязанных балок" msgid "Orientation of interlock beams." -msgstr "Ориентация межблочных балок." +msgstr "Направление балок взаимосвязанной конструкции." msgid "Interlocking beam layers" -msgstr "Взаимосвязанные слои балок" +msgstr "Количество слоёв взаимосвязанных балок" msgid "" "The height of the beams of the interlocking structure, measured in number of " "layers. Less layers is stronger, but more prone to defects." msgstr "" -"Высота балок межблочной конструкции, измеряемая в количестве слоев. Меньшее " -"количество слоёв прочнее, но более подвержено дефектам." +"Высота балок взаимосвязанной структуры, измеряемая в количестве слоев. Чем " +"меньше слоев, тем она будет прочнее, но более подвержена дефектам." msgid "Interlocking depth" -msgstr "Глубина блокировки" +msgstr "Глубина взаимосвязанной структуры" msgid "" "The distance from the boundary between filaments to generate interlocking " "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" -"Расстояние от границы между филаментами до образования взаимосвязанной " -"структуры, измеряется в клетках. Слишком малое количество ячеек приводит к " -"плохой адгезии." +"Расстояние от границы между моделями для создания взаимосвязанной структуры, " +"измеряемое в ячейках. Слишком малое количество ячеек приведет к плохой " +"адгезии." msgid "Interlocking boundary avoidance" -msgstr "Избегание перечечения границ" +msgstr "Избегание границ взаимосвязанной структуры" msgid "" "The distance from the outside of a model where interlocking structures will " "not be generated, measured in cells." msgstr "" -"Расстояние от внешней стороны модели, на котором не будут создаваться \n" -"взаимосвязанные структуры, измеряется в ячейках." +"Расстояние от внешней стороны модели, где взаимосвязанные структуры не будут " +"создаваться, измеряемое в ячейках." msgid "Ironing Type" msgstr "Тип разглаживания" @@ -12468,9 +12527,11 @@ 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 "Без разглаживания" @@ -12524,7 +12585,8 @@ msgstr "" msgid "This gcode part is inserted at every layer change after lift z" msgstr "" -"Этот G-код вставляется при каждой смене слоя, сразу после перемещения оси Z." +"Команды в G-коде, которые выполняются каждый раз после смены слоя, то есть " +"после поднятия оси Z." msgid "Supports silent mode" msgstr "Поддержка тихого режима" @@ -12533,8 +12595,9 @@ msgid "" "Whether the machine supports silent mode in which machine use lower " "acceleration to print" msgstr "" -"Поддержка тихого режима, в котором принтер использует меньшее ускорение " -"печати для уменьшения уровня шума." +"Поддержка тихого режима, в котором принтер использует более низкие ускорения " +"печати для уменьшения уровня шума. Прошивка принтера должна поддерживать " +"данную возможность." msgid "Emit limits to G-code" msgstr "Отправлять в G-код" @@ -12553,11 +12616,14 @@ 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-код паузы в просмотрщике G-кода." +"Команды в G-коде, которые выполняются при ручной постановке паузы печати. " +"Пользователь может вставить её в окне предпросмотра нарезки." +# используется для пользовательского шаблона msgid "This G-code will be used as a custom code" -msgstr "Этот G-код будет использоваться для пользовательского кода." +msgstr "" +"Команды в G-коде, которые выполняются при вставке его в окне предпросмотра " +"нарезки (ПКМ по полосе выбора слоя)." msgid "Small area flow compensation (beta)" msgstr "Компенсация потока небольших областей (beta)" @@ -12588,7 +12654,7 @@ msgid "Maximum speed Z" msgstr "Максимальная скорость перемещения по Z" msgid "Maximum speed E" -msgstr "Максимальная скорость подачи у экструдера (E)" +msgstr "Максимальная скорость подачи у экструдера" msgid "Maximum X speed" msgstr "Максимальная скорость перемещения по X" @@ -12600,7 +12666,7 @@ msgid "Maximum Z speed" msgstr "Максимальная скорость перемещения по Z" msgid "Maximum E speed" -msgstr "Максимальная скорость подачи у экструдера (E)" +msgstr "Максимальная скорость подачи у экструдера" msgid "Maximum acceleration X" msgstr "Максимальное ускорение по X" @@ -12612,7 +12678,7 @@ msgid "Maximum acceleration Z" msgstr "Максимальное ускорение по Z" msgid "Maximum acceleration E" -msgstr "Максимальное ускорение подачи экструдера (E)" +msgstr "Максимальное ускорение подачи у экструдера" msgid "Maximum acceleration of the X axis" msgstr "Максимальное ускорение по оси X." @@ -12624,7 +12690,7 @@ msgid "Maximum acceleration of the Z axis" msgstr "Максимальное ускорение по оси Z." msgid "Maximum acceleration of the E axis" -msgstr "Максимальное ускорение подачи у экструдера (E)." +msgstr "Максимальное ускорение подачи у экструдера." msgid "Maximum jerk X" msgstr "Максимальный рывок по X" @@ -12636,7 +12702,7 @@ msgid "Maximum jerk Z" msgstr "Максимальный рывок по Z" msgid "Maximum jerk E" -msgstr "Максимальный рывок у экструдера (E)" +msgstr "Максимальный рывок у экструдера" msgid "Maximum jerk of the X axis" msgstr "Максимальный рывок по оси X." @@ -12648,7 +12714,7 @@ msgid "Maximum jerk of the Z axis" msgstr "Максимальный рывок по оси Z." msgid "Maximum jerk of the E axis" -msgstr "Максимальный рывок у экструдера (E)." +msgstr "Максимальный рывок у экструдера." msgid "Minimum speed for extruding" msgstr "Минимальная скорость перемещения при печати" @@ -12657,7 +12723,7 @@ msgid "Minimum speed for extruding (M205 S)" msgstr "Минимальная скорость перемещения при печати (M205 S)" msgid "Minimum travel speed" -msgstr "Минимальная скорость перемещения без печати" +msgstr "Минимальная скорость холостых перемещений" msgid "Minimum travel speed (M205 T)" msgstr "Минимальная скорость перемещения без печати (M205 T)" @@ -12675,12 +12741,12 @@ msgid "Maximum acceleration for retracting (M204 R)" msgstr "Максимальное ускорение отката (M204 R)" msgid "Maximum acceleration for travel" -msgstr "Максимальное ускорение при перемещении" +msgstr "Максимальное ускорение холостых перемещений" msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "" -"Максимальное ускорение при перемещении (M204 T), применяемое только для " -"Marlin 2" +"Максимальное ускорение при перемещении без печати (M204 T), применяемое " +"только для Marlin 2." msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " @@ -12691,7 +12757,7 @@ msgstr "" "для охлаждения моделей." msgid "Max" -msgstr "Макс." +msgstr "Максимальная" msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " @@ -12700,9 +12766,11 @@ msgstr "" "Это наибольшая высота печатаемого слоя для этого экструдера, которая " "используется для ограничения функции «Переменная высота слоёв»." +# ????? msgid "Extrusion rate smoothing" msgstr "Сглаживание скорости экструзии" +# ????? проверить Pressure equalizer msgid "" "This parameter smooths out sudden extrusion rate changes that happen when " "the printer transitions from printing a high flow (high speed/larger width) " @@ -12737,8 +12805,8 @@ msgstr "" "меньшая ширина) и наоборот.\n" "\n" "Параметр задаёт максимальную скорость, с которой объёмный расход " -"экструдируемого материала может изменяться с течением времени (мм³/с). Более " -"высокие значения означают, что допускаются более высокие изменения скорости " +"экструдируемого материала может изменяться с течением времени. Более высокие " +"значения означают, что допускаются более высокие изменения скорости " "экструзии, что приводит к более быстрому переключению скоростей.\n" "\n" "Значение 0 отключает эту функцию. \n" @@ -12757,10 +12825,10 @@ msgstr "" "10-15 мм³/с² является хорошей отправной точкой для экструдеров с прямым " "приводом и 5-10 мм³/с² для боуден экструдеров.\n" "\n" -"В Prusa Slicer эта функция известна как «Выравнивание давления» (Pressure " +"В Prusa Slicer эта функция известна как «Сглаживание расхода» (Pressure " "equalizer).\n" "\n" -"Примечание: этот параметр отключает поддержку движения по дуге окружности." +"Примечание: этот параметр отключает аппроксимацию дугами." msgid "mm³/s²" msgstr "мм³/с²" @@ -12806,7 +12874,7 @@ msgstr "" "G-код команда: M106 P2 S(0-255)." msgid "Min" -msgstr "Мин." +msgstr "Минимальная" msgid "" "The lowest printable layer height for extruder. Used tp limits the minimum " @@ -12837,8 +12905,8 @@ msgid "" "You can put here your personal notes. This text will be added to the G-code " "header comments." msgstr "" -"Здесь вы можете написать свои замечания для текущего профиля. Этот текст " -"будет добавлен к комментариям в заголовок G-кода." +"Здесь вы можете написать свои заметки для текущего профиля. Этот текст будет " +"добавлен к комментариям в заголовок G-кода." msgid "Host Type" msgstr "Тип хоста" @@ -12859,6 +12927,7 @@ msgstr "Объём сопла между резцом прутка и кончи msgid "Cooling tube position" msgstr "Позиция охлаждающей трубки" +# ????? до кончика сопла может быть? msgid "Distance of the center-point of the cooling tube from the extruder tip." msgstr "" "Расстояние между центральной точкой охлаждающей трубки и кончиком экструдера." @@ -12883,6 +12952,7 @@ msgstr "" "замены прутка, чтобы быстро увеличить скорость подачи и преодолеть " "сопротивление при загрузке прутка с плохой формой кончика." +# ??? Положение прутка при парковке msgid "Filament parking position" msgstr "Положение парковки прутка" @@ -12930,8 +13000,8 @@ msgid "" "This option will drop the temperature of the inactive extruders to prevent " "oozing." msgstr "" -"Эта опция снижает температуру неактивных экструдеров, чтобы предотвратить \n" -"образование сочащейся жидкости." +"Эта опция снижает температуру неактивных экструдеров для предотвращения течи " +"материала." msgid "Filename format" msgstr "Формат имени файла" @@ -12983,7 +13053,7 @@ msgstr "" "скорость печати. Для 100%%-го свеса используется скорость печати мостов." msgid "Filament to print walls" -msgstr "Материал для печати стен" +msgstr "Пластиковая нить для печати периметров." msgid "" "Line width of inner wall. If expressed as a %, it will be computed over the " @@ -13045,18 +13115,18 @@ msgid "Printer notes" msgstr "Примечания к принтеру" msgid "You can put your notes regarding the printer here." -msgstr "Здесь вы можете написать свои замечания о текущем принтере." +msgstr "Здесь вы можете написать свои заметки о текущем принтере." msgid "Printer variant" -msgstr "Вариант принтера" +msgstr "Модификация принтера" msgid "Raft contact Z distance" -msgstr "Расстояние от подложки до модели по вертикали" +msgstr "Зазор между подложкой и моделью" msgid "Z gap between object and raft. Ignored for soluble interface" msgstr "" -"Зазор между моделью и подложкой. Значение игнорируется при выборе " -"растворимого материала." +"Вертикальное расстояние между подложкой и моделью. Значение игнорируется при " +"выборе растворимого материала." msgid "Raft expansion" msgstr "Расширение подложки" @@ -13068,7 +13138,9 @@ msgid "Initial layer density" msgstr "Плотность первого слоя" msgid "Density of the first raft or support layer" -msgstr "Плотность первого слоя подложки или первого слоя поддержки." +msgstr "" +"Плотность первого слоя поддержки или первого слоя подложки, если она " +"включена." msgid "Initial layer expansion" msgstr "Расширение первого слоя" @@ -13094,9 +13166,13 @@ msgid "" "much points and gcode lines in gcode file. Smaller value means higher " "resolution and more time to slice" msgstr "" -"Разрешение G-кода. Путь G-кода создаётся после упрощения контура модели, " -"чтобы избежать слишком большого количества точек и линий в G-коде. Меньшее " -"значение означает более высокое разрешение и больше времени для нарезки." +"Разрешение G-кода. Максимальное отклонение экспортируемых в G-код путей до и " +"после упрощения. Для нарезки и предпросмотра G-кода с очень высоким " +"разрешением требуется большой объём оперативной памяти. Также при печати " +"принтер может подвисать, не имея возможности своевременно обрабатывать такой " +"G-код. Увеличение значения разрешения G-кода снижает нагрузку на электронику " +"принтера. Но слишком высокие значения приводят к видимым артефактам, типа " +"эффекта низкополигональной модели." msgid "Travel distance threshold" msgstr "Порог перемещения для отката" @@ -13202,14 +13278,14 @@ msgid "Spiral" msgstr "Спиральный" msgid "Traveling angle" -msgstr "Угол поворота" +msgstr "Угол подъёма" msgid "" "Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " "in Normal Lift" msgstr "" -"Угол перемещения для прыжков типа Slope и Spiral Z. Если установить значение " -"90°, то получится Нормальный подъём" +"Угол для наклонного и спирального подъёма оси Z. При 90° получаем «обычный» " +"подъём." msgid "Only lift Z above" msgstr "Приподнимать ось Z только выше" @@ -13324,7 +13400,7 @@ msgid "Nearest" msgstr "Ближайшая" msgid "Aligned" -msgstr "По краю" +msgstr "Выровненная" msgid "Back" msgstr "Сзади" @@ -13340,7 +13416,9 @@ msgid "" "depth, forming a zigzag pattern." msgstr "" "Этот параметр заставляет внутренние швы смещаться назад в зависимости от их " -"глубины, образуя зигзагообразный рисунок." +"глубины, образуя зигзагообразный рисунок. Таким образом местоположение швов " +"разных внутренних периметров не будет совпадать, тем самым делая деталь " +"прочнее. Это также может помочь улучшить водонепроницаемость модели." msgid "Seam gap" msgstr "Зазор шва" @@ -13357,7 +13435,7 @@ msgstr "" "диаметра сопла. Значение по умолчанию - 10%." msgid "Scarf joint seam (beta)" -msgstr "Клиновидный шов (beta)" +msgstr "Клиновидный шов" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" @@ -13367,13 +13445,12 @@ msgstr "" msgid "Conditional scarf joint" msgstr "Условие для клиновидного шва" -# ??? Использовать клиновидный шов только на гладких периметрах, где традиционные швы не могут быть эффективно скрыты. msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." msgstr "" -"Использовать клиновидный шов только на гладких периметрах, где без острого " -"угла невозможно эффективно скрыть традиционный шов." +"Использовать клиновидный шов только на гладких периметрах, где традиционные " +"швы не могут быть эффективно скрыты." msgid "Conditional angle threshold" msgstr "Пороговый угол для клиновидного шва" @@ -13548,9 +13625,9 @@ msgid "" "Angle from the object center to skirt start point. Zero is the most right " "position, counter clockwise is positive angle." msgstr "" -"Угол от центра объекта до начальной точки юбки. Ноль - самое правое " -"положение, \n" -"против часовой стрелки - положительный угол." +"Угол между центром модели и начальной точкой юбки. Угол 0 соответствует " +"самой правой позиции, положительный угол отсчитывается против часовой " +"стрелки." msgid "Skirt height" msgstr "Слоёв юбки" @@ -13572,17 +13649,16 @@ msgid "" "distance from the object. Therefore, if brims are active it may intersect " "with them. To avoid this, increase the skirt distance value.\n" msgstr "" -"Защита от сквозняка необходима для защиты отпечатков ABS или ASA от " -"деформации и отсоединения от печатной основы под воздействием ветра. Обычно " -"он необходим только для принтеров с открытой рамой, т. е. без кожуха.\n" +"Защитный кожух полезен для защиты материалов типа ABS, ASA от деформации и " +"отрыва от стола из-за внешнего воздушного потока. Обычно защитный кожух " +"необходим только для принтеров без термокамеры.\n" "\n" -"Включено = высота юбки равна высоте самого высокого напечатанного объекта. В " -"противном случае используется значение 'Высота юбки'.\n" -"\n" -"Примечание: При активной защите от сквозняка юбка будет печататься на " -"расстоянии юбки от объекта. Поэтому, если активны ободки, она может " -"пересекаться с ними. Чтобы избежать этого, увеличьте значение расстояния до " -"юбки.\n" +"Если включено, то высота юбки будет равна высоте самой высокой модели, иначе " +"используется значение «Слоёв юбки».\n" +"Примечание: при включённом защитном кожухе, юбка будет печататься на " +"расстоянии от модели, которое задаётся параметром «Расстояние до юбки». Если " +"активна кайма, она может пересекаться с юбкой. Чтобы избежать этого, " +"увеличьте значение «Расстояние до юбки».\n" msgid "Disabled" msgstr "Отключено" @@ -13597,20 +13673,20 @@ msgid "" "Combined - single skirt for all objects, Per object - individual object " "skirt." msgstr "" -"Combined - единая юбка для всех объектов, Per object - юбка для отдельных " -"объектов." +"Выбор типа печатаемой юбки - одна общая для всех моделей или отдельные юбки " +"для каждой модели." msgid "Combined" -msgstr "Комбинированный" +msgstr "Общая" msgid "Per object" -msgstr "Для каждого объекта" +msgstr "Для каждой модели" msgid "Skirt loops" -msgstr "Юбок вокруг модели" +msgstr "Петель юбки" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "Количество юбок вокруг модели. 0 - отключение юбки." +msgstr "Количество линий юбки вокруг модели. 0 - отключение юбки." msgid "Skirt speed" msgstr "Скорость печати юбки" @@ -13621,6 +13697,7 @@ msgstr "Скорость печати юбки (мм/с). 0 - скорость msgid "Skirt minimum extrusion length" msgstr "Мин. длина экструзии юбки" +# ??? Конечное число петель юбки не учитывается при расстановке или проверке расстояния между моделями, поэтому если их недостаточно, то увеличьте их количество. msgid "" "Minimum filament extrusion length in mm when printing the skirt. Zero means " "this feature is disabled.\n" @@ -13630,13 +13707,13 @@ msgid "" "Final number of loops is not taling into account whli arranging or " "validating objects distance. Increase loop number in such case. " msgstr "" -"Минимальная длина экструзии нити в мм при печати юбки. Нулевое значение " -"означает, что эта функция отключена.\n" +"Минимальное количество пластика, которое должно быть выдавлено при печати " +"юбки в миллиметрах. 0 - функция отключена.\n" "\n" -"Использование ненулевого значения полезно, если принтер настроен на печать " -"без основной линии.\n" -"Конечное число петель не учитывается при расстановке или проверке расстояния " -"между объектами. В этом случае увеличьте количество петель." +"Необходимо, если принтер настроен на печать без стартовой линии очистки " +"сопла.\n" +"При расстановке или проверке расстояния между моделями игнорируется конечное " +"число петель юбки, поэтому если их недостаточно, то увеличьте их количество." msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -13660,7 +13737,7 @@ msgid "Solid infill" msgstr "Сплошное заполнение" msgid "Filament to print solid infill" -msgstr "Материал для печати сплошного заполнения" +msgstr "Пластиковая нить для печати сплошного заполнения." msgid "" "Line width of internal solid infill. If expressed as a %, it will be " @@ -13679,10 +13756,10 @@ msgid "" "model into a single walled print with solid bottom layers. The final " "generated model has no seam" msgstr "" -"Печать спиральных и пустотелых, а также тонкостенных моделей. Модель " -"печатается в одну стенку без верхней поверхности, заполнения и поддержки. " -"При этом сопло движется вдоль периметра непрерывно постепенно поднимаясь, " -"так получаются ровные красивые вазы без видимых швов." +"Печать пустотелых и тонкостенных моделей по спирали. Модель печатается в " +"одну стенку без верхней поверхности, заполнения и поддержки. При этом сопло " +"при печати движется непрерывно по спирали вверх, что создаёт ровное и " +"эстетически привлекательное изделие без шва." msgid "Smooth Spiral" msgstr "Сглаживать спиральные контуры" @@ -13736,11 +13813,12 @@ msgid "" "zero value." msgstr "" "Разница температур, которая будет применяться, когда экструдер не активен. " -"Значение не используется, если для параметра 'idle_temperature' в настройках " -"филамента установлено ненулевое значение." +"Значение не используется, если для параметра «Температура ожидания» " +"('idle_temperature') в настройках пластиковой нити установлено ненулевое " +"значение." msgid "Preheat time" -msgstr "Время разогрева" +msgstr "Время преднагрева" msgid "" "To reduce the waiting time after tool change, Orca can preheat the next tool " @@ -13749,33 +13827,33 @@ msgid "" "the tool in advance." msgstr "" "Чтобы сократить время ожидания после смены инструмента, Orca может " -"предварительно нагреть следующий инструмент, пока текущий инструмент еще " -"используется. Эта настройка задает время в секундах для предварительного " -"нагрева следующего инструмента. Orca вставит команду M104 для " -"предварительного нагрева инструмента." +"предварительно нагреть следующий инструмент, пока используется текущий. Эта " +"настройка задает время в секундах для преднагрева следующего инструмента. " +"Orca вставит команду M104 для преднагрева инструмента." msgid "Preheat steps" -msgstr "Шаги преднагрева" +msgstr "Шагов преднагрева" msgid "" "Insert multiple preheat commands(e.g. M104.1). Only useful for Prusa XL. For " "other printers, please set it to 1." msgstr "" -"Вставьте несколько команд предварительного нагрева (например, M104.1). " -"Пригодится только для Prusa XL. Для других принтеров установите значение 1." +"Задание нескольких команд преднагрева (например, M104.1). Полезно только для " +"Prusa XL. Для других принтеров установите значение 1." msgid "Start G-code" msgstr "Стартовый G-код" msgid "Start G-code when start the whole printing" -msgstr "G-код выполняемый при каждом запуске печати." +msgstr "Команды в G-коде, которые выполняются в самом начале печати." msgid "Start G-code when start the printing of this filament" msgstr "" -"Стартовый G-код выполняемый при запуске печати с текущей пластиковой нитью." +"Команды в G-коде, которые выполняются при запуске печати с этой пластиковой " +"нитью." msgid "Single Extruder Multi Material" -msgstr "Мультиматериальный одиночный экструдер" +msgstr "Одноэкструдерный ММ принтер" msgid "Use single nozzle to print multi filament" msgstr "" @@ -13783,7 +13861,7 @@ msgstr "" "цветами пластика." msgid "Manual Filament Change" -msgstr "Ручная замена прутка" +msgstr "Ручная смена прутка" msgid "" "Enable this option to omit the custom Change filament G-code only at the " @@ -13792,11 +13870,11 @@ msgid "" "printing, where we use M600/PAUSE to trigger the manual filament change " "action." msgstr "" -"Включите эту опцию, если хотите пропустить пользовательский G-код смены " -"прутка только в начале печати. Команда смены инструмента (например, T0) " -"будет пропускаться на протяжении всей печати. Это полезно при ручной " -"мультиматериальной печати, где для запуска операции ручной смены прутка " -"используется команда M600." +"Включите этот параметр, чтобы пропустить пользовательский G-код смены " +"пластиковой нити с самого начала печати. Команда смены инструмента будет " +"пропускаться на протяжении всей печати. Полезно при мультиматериальной " +"печати при ручной замене пластиковой нити, где для этого используются " +"команды M600/PAUSE." msgid "Purge in prime tower" msgstr "Очистка в черновую башню" @@ -13807,7 +13885,6 @@ msgstr "Очистка сопла от остатков материала в ч msgid "Enable filament ramming" msgstr "Включить рэмминг прутка" -# ???Отсутствие разреженных слоёв (beta), Черновая башня без разреженных слоёв msgid "No sparse layers (beta)" msgstr "Без разреженных слоёв (beta)" @@ -13839,17 +13916,18 @@ msgstr "" "подготавливаться на переднем крае стола." msgid "Slice gap closing radius" -msgstr "Радиус закрытия пробелов при нарезке" +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 "Режим нарезки" @@ -13858,8 +13936,13 @@ msgid "" "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " "close all holes in the model." msgstr "" -"Режим нарезки «чётный-нечётный» используется для моделей самолетов с ресурса " -"3DLabPrint. А «Закрытие отверстий» для закрытия всех отверстий в модели." +"Режим нарезки «Чётный-нечётный» применяется для незамкнутых пустотелых " +"моделей с тонкими внутренними ребрами усиления, таких как модели самолетов с " +"ресурса 3DLabPrint.\n" +"\n" +"Режим нарезки «Закрытие отверстий» применяется для закрытия всех " +"вертикальных отверстий в модели. Чаще всего используется для создания мастер-" +"моделей под литьё." msgid "Regular" msgstr "Обычный" @@ -13879,9 +13962,12 @@ msgid "" "example, if your endstop zero actually leaves the nozzle 0.3mm far from the " "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -"Это значение будет прибавлено (или вычтено) из всех Z координат в выходном G-" -"коде. Это, например, используется для компенсации неправильного положения " -"концевика оси Z." +"Это значение будет прибавлено ко всем координатам оси Z в выходном G-код " +"файле, тем самым смещая всю печатаемую деталь выше (если значение " +"положительное, например 0.3) или ниже (если значение отрицательное, например " +"-0.3) относительно стола 3D принтера. Используется для компенсации слишком " +"малого или слишком большого расстояния от сопла до стола на первом слое, вне " +"зависимости от причины почему оно такое большое или маленькое." msgid "Enable support" msgstr "Включить поддержку" @@ -13918,7 +14004,7 @@ msgid "XY separation between an object and its support" msgstr "Зазор между моделью и поддержкой по осям XY." msgid "Pattern angle" -msgstr "Угол печати шаблона поддержки" +msgstr "Угол шаблона поддержки" msgid "Use this setting to rotate the support pattern on the horizontal plane." msgstr "" @@ -13954,16 +14040,14 @@ msgstr "Зазор поддержки сверху" msgid "The z gap between the top support interface and object" msgstr "" -"Вертикальное расстояние между верхней частью модели и связующим слоем " -"поддержки." +"Вертикальное расстояние между связующим слоем поддержки сверху и моделью." msgid "Bottom Z distance" msgstr "Зазор поддержки снизу" msgid "The z gap between the bottom support interface and object" msgstr "" -"Вертикальное расстояние между нижней частью модели и связующим слоем " -"поддержки." +"Вертикальное расстояние между связующим слоем поддержки снизу и моделью." msgid "Support/raft base" msgstr "Базовая поддержка/подложка" @@ -14108,7 +14192,7 @@ msgstr "" "обычную поддержкой при больших плоских нависаниях." msgid "Default (Grid/Organic" -msgstr "По-умолчанию (сетка/органика)" +msgstr "По умолчанию (сетка/органический)" msgid "Snug" msgstr "Аккуратный" @@ -14169,9 +14253,9 @@ msgid "" "model. Use a lower angle to make them more vertical and more stable. Use a " "higher angle for branches to merge faster." msgstr "" -"Предпочтительный угол ответвления ветвей, при котором не нужно избегать " -"модель. При указании меньшего угла поддержка будет более вертикальной и " -"устойчивой. Для получения большего охвата указывайте более высокий угол." +"Предпочтительный угол ответвления ветвей, когда им не нужно избегать модель. " +"При указании меньшего угла поддержка будет более вертикальной и устойчивой. " +"Используйте больший угол, чтобы ветки сливались быстрее." msgid "Tree support branch distance" msgstr "Расстояние между ветвями древовидной поддержки" @@ -14298,19 +14382,21 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" -"Включите эту опцию для автоматического контроля температуры в камере. Эта " -"опция активирует подачу команды M191 перед \"machine_start_gcode\", которая " -"устанавливает температуру в камере и ждет, пока она не будет достигнута. " -"Кроме того, в конце печати подается команда M141 для выключения нагревателя " -"камеры, если он есть.\n" +"Для автоматического поддержания температуры внутри термокамеры принтера " +"включите эту опцию. Эта опция активирует отправку команды M191 перед " +"стартовым G-кодом принтера (machine_start_gcode)\", которая устанавливает " +"температуру внутри термокамеры и ждёт её достижения. Так же, она отправляет " +"команду M141 в конце печати, чтобы отключить нагреватель камеры, если он " +"есть.\n" "\n" -"Эта опция зависит от встроенного программного обеспечения, поддерживающего " -"команды M191 и M141 либо с помощью макросов, либо нативно, и обычно " -"используется, когда установлен активный нагреватель камеры." +"Эта опция зависит от поддержки прошивкой команд M191 и M141, либо через " +"макросы, либо нативно, и обычно используется, когда имеется активный " +"нагреватель камеры." msgid "Chamber temperature" -msgstr "Температура термокамеры" +msgstr "Температура в термокамере" +# ??? msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " "temperature can help suppress or reduce warping and potentially lead to " @@ -14331,24 +14417,25 @@ msgid "" "heater is installed." msgstr "" "Для высокотемпературных материалов, таких как ABS, ASA, PC и PA, более " -"высокая температура камеры может помочь подавить или уменьшить коробление и " -"потенциально привести к повышению прочности межслойного соединения. Однако в " -"то же время более высокая температура камеры снижает эффективность " -"фильтрации воздуха для ABS и ASA.\n" +"высокая температура внутри термокамеры может помочь уменьшить или даже " +"исключить коробление материала, и потенциально привести к повышению " +"прочности межслойного соединения. Однако в то же время более высокая " +"температура камеры снижает эффективность фильтрации воздуха при печати ABS и " +"ASA. \n" "\n" "Для PLA, PETG, TPU, PVA и других низкотемпературных материалов этот параметр " -"следует отключить (установить значение 0), поскольку температура камеры " -"должна быть низкой, чтобы избежать засорения экструдера из-за размягчения " -"материала при терморазрыве.\n" +"следует отключить , поскольку температура внутри термокамеры должна быть " +"низкой, чтобы избежать засорения хотэнда из-за размягчения материала в " +"термобарьере.\n" "\n" -"Если этот параметр включен, он также устанавливает переменную gcode с именем " +"Если параметр включён, он также устанавливает переменную с именем " "chamber_temperature, которая может быть использована для передачи желаемой " -"температуры камеры макросу запуска печати или макросу тепловой выдержки, " -"например, такому: PRINT_START (другие переменные) " +"температуры камеры в ваш макрос начала печати или макрос тепловой выдержки, " +"например, так: PRINT_START (другие переменные) " "CHAMBER_TEMP=[chamber_temperature]. Это может быть полезно, если ваш принтер " "не поддерживает команды M141/M191, или если вы хотите управлять тепловой " -"выдержкой в макросе запуска печати, если не установлен активный нагреватель " -"камеры." +"выдержки в макросе начала печати, если активный нагреватель термокамеры не " +"установлен." msgid "Nozzle temperature for layers after the initial one" msgstr "Температура сопла при печати для слоёв после первого." @@ -14368,11 +14455,13 @@ msgid "" "This gcode is inserted when change filament, including T command to trigger " "tool change" msgstr "" -"Этот G-код вставляется при смене материала, включая команду T для запуска " -"смены инструмента." +"Команды в G-коде, которые выполняются для ручной смены пластиковой нити " +"(цвета\\типа), включая команду T для запуска смены инструмента." msgid "This gcode is inserted when the extrusion role is changed" -msgstr "Этот G-код вставляется при смене роли экструзии." +msgstr "" +"Команды в G-коде, которые выполняются при смене роли экструзии (т.е. " +"например, от печати периметра к заполнению)." msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -14397,7 +14486,7 @@ msgstr "" "сверху, количество сплошных слоёв сверху будет увеличено." msgid "Top solid layers" -msgstr "Верхних сплошных слоёв" +msgstr "Сплошных слоёв сверху" msgid "Top shell thickness" msgstr "Толщина оболочки сверху" @@ -14427,10 +14516,12 @@ 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 "Расстояние очистки" @@ -14461,9 +14552,11 @@ msgid "" "stabilize the chamber pressure inside the nozzle, in order to avoid " "appearance defects when printing objects." msgstr "" -"Башня очистки используется для очистки сопла от остатков материала и " -"стабилизации давления внутри сопла, чтобы избежать дефектов снаружи " -"печатаемой модели." +"Этот параметр включает печать черновой башни - специальной структуры, " +"которая используется для очистки сопла от остатков материала и стабилизации " +"давления внутри сопла при смене экструдера, чтобы избежать дефектов на " +"поверхности печатаемой модели. В основном она используется для многоцветной " +"и мультиматериальной печати в многоинструментальных принтерах." msgid "Purging volumes" msgstr "Объём очистки" @@ -14486,7 +14579,10 @@ msgstr "" "Объём выдавленного материала для заправки экструдера на черновой башне." msgid "Width of prime tower" -msgstr "Ширина черновой башни." +msgstr "" +"Размер черновой башни по оси X. Размер по оси Y будет автоматически вычислен " +"исходя из необходимого объёма очистки и ширины башни. Таким образом, " +"увеличивая ширину башни вы уменьшаете её длину и наоборот." msgid "Wipe tower rotation angle" msgstr "Угол поворота черновой башни" @@ -14506,8 +14602,9 @@ msgstr "" "широкое основание конуса." msgid "Maximum wipe tower print speed" -msgstr "Максимальная скорость печати черновой башни" +msgstr "Макс. скорость печати черновой башни" +# ?????? msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe " "tower sparse layers. When purging, if the sparse infill speed or calculated " @@ -14591,9 +14688,10 @@ msgstr "" msgid "Maximal bridging distance" msgstr "Максимальное длина моста" +# ??? Максимальное расстояние между опорами на разряженных участках заполнения. msgid "Maximal distance between supports on sparse infill sections." msgstr "" -"Максимальное расстояние между опорами на разряженных участках заполнения." +"Максимальное расстояние моста черновой башни на её разряженных участках." msgid "Wipe tower purge lines spacing" msgstr "Расстояние между линиями очистки черновой башни" @@ -14602,32 +14700,31 @@ msgid "Spacing of purge lines on the wipe tower." msgstr "Расстояние между линиями очистки на черновой башне." msgid "Extra flow for purging" -msgstr "Дополнительный поток для продувки" +msgstr "Дополнительный поток для очистки" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " "purging lines thicker or narrower than they normally would be. The spacing " "is adjusted automatically." msgstr "" -"Дополнительный поток, используемый для продувочных линий на протирочной " -"башне. В результате продувочные линии становятся толще или уже, чем обычно. " -"Расстояние между ними регулируется автоматически." +"Дополнительный поток, используемый для линий очистки на черновой башне. В " +"результате линии очистки становятся толще или уже, чем обычно. Расстояние " +"между ними регулируется автоматически." msgid "Idle temperature" -msgstr "Температура в ожидании" +msgstr "Температура ожидания" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." "This is only used when 'Ooze prevention' is active in Print Settings. Set to " "0 to disable." msgstr "" -"Температура сопла, когда инструмент в данный момент не используется в " -"многоинструментальных установках. Этот параметр используется только в том " -"случае, если в настройках печати активна опция «Предотвращение образования " -"наплывов». Установите значение 0, чтобы отключить." +"Температура сопла в момент, когда для печати используется другое сопло. Этот " +"параметр используется только в том случае, если в настройках печати активна " +"функция «Предотвращение течи материала». Установите 0 для отключения." msgid "X-Y hole compensation" -msgstr "Коррекция размеров отверстий по XY" +msgstr "Компенсация размера отверстий по XY" msgid "" "Holes of object will be grown or shrunk in XY plane by the configured value. " @@ -14640,7 +14737,7 @@ msgstr "" "когда возникают проблемы со сборкой." msgid "X-Y contour compensation" -msgstr "Коррекция размеров модели по XY" +msgstr "Компенсация размера модели по XY" msgid "" "Contour of object will be grown or shrunk in XY plane by the configured " @@ -14648,10 +14745,10 @@ msgid "" "smaller. This function is used to adjust size slightly when the object has " "assembling issue" msgstr "" -"Параметр отвечает за смещение границы контура печатаемой модели в плоскости " -"XY на заданное значение. Положительное значение увеличивает контур. " -"Отрицательное значение уменьшает контур. Эта функция используется для " -"небольшой корректировки размера, когда возникают проблемы со сборкой." +"Параметр отвечает за смещение всех полигонов модели в плоскости XY на " +"заданное значение. Положительное значение увеличивает модель, отрицательное " +"- уменьшает. Эта функция используется для небольшой корректировки размера, " +"когда возникают проблемы со сборкой." msgid "Convert holes to polyholes" msgstr "Многогранные отверстия" @@ -14711,7 +14808,7 @@ msgstr "" "размера, QOI для прошивки с малым объемом памяти." msgid "Use relative E distances" -msgstr "Исп. относительные координаты для экструдера" +msgstr "Относительные координаты экструдера" msgid "" "Relative extrusion is recommended when using \"label_objects\" option.Some " @@ -14719,8 +14816,8 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" -"Относительная экструзия рекомендуется при использовании опции «Название " -"моделей». Некоторые экструдеры работают лучше при отключении этой опции " +"Относительная экструзия рекомендуется при использовании опции «Помечать " +"объекты». Некоторые экструдеры работают лучше при отключении этой опции " "(абсолютный режим экструзии). Черновая башня совместима только с " "относительной экструзии. Рекомендуется включить для большинства принтеров " "(по умолчанию включено)." @@ -14731,9 +14828,10 @@ msgid "" "variable extrusion width" msgstr "" "Движок классического генератора периметров создаёт их с постоянной шириной " -"экструзии, а для очень тонких участков используется параметр «Заполнение " -"пробелов». Движок Arachne же создает периметры с переменной шириной " -"экструзии." +"экструзии, а для очень тонких участков используется параметр «Заполнять " +"щели». Движок Arachne же создаёт периметры с переменной шириной экструзии, " +"что позволяет печатать без щелей, лучше пропечатывать мелкие элементы (при " +"условии, что у вас правильно откалиброван LA/PA)." msgid "Classic" msgstr "Классический" @@ -14831,16 +14929,16 @@ msgid "" "above the default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Отрегулируйте это значение, чтобы предотвратить печать коротких незамкнутых " -"периметров, что может увеличить временя печати. Более высокие значения " -"удаляют большие и более длинные периметры.\n" +"периметров, что может увеличить время печати. Более высокие значения удаляют " +"большие и более длинные периметры.\n" "\n" "Примечание: нижние и верхние поверхности не будут затронуты этим значением, " -"чтобы избежать визуальных пробелов с наружной стороны модели. Настройте " +"чтобы избежать визуальных пробелов на наружной стороне модели. Настройте " "параметр «Порог одного периметра» в расширенных настройках ниже, чтобы " "настроить чувствительность определения верхней поверхности. «Порог одного " "периметра» будет отображаться только в том случае, если этот параметр " "установлен выше значения по умолчанию, равным 0,5 или если включён параметр " -"«Только один периметр на верхней поверхности»." +"«Только один периметр на верхней поверхности».ы" msgid "First layer minimum wall width" msgstr "Минимальная ширина периметра первого слоя" @@ -14967,8 +15065,7 @@ msgstr "" "Положение экструдера в начале пользовательского G-кода. Если " "пользовательский G-код перемещает экструдер в другое место, то информация о " "его новом положении должна записываться в данную переменную, чтобы " -"PrusaSlicer знал, откуда он перемещается, когда управление возвращается " -"назад." +"OrcaSlicer знал, откуда он перемещается, когда управление возвращается назад." msgid "" "Retraction state at the beginning of the custom G-code block. If the custom " @@ -14987,7 +15084,7 @@ msgid "Currently planned extra extruder priming after de-retraction." msgstr "Запланированная дополнительная предзарядка экструдера после подачи." msgid "Absolute E position" -msgstr "Абсолютная E позиция" +msgstr "Абсолютные координаты экструдера" msgid "" "Current position of the extruder axis. Only used with absolute extruder " @@ -15044,16 +15141,16 @@ msgstr "Используется ли экструдер?" msgid "" "Vector of booleans stating whether a given extruder is used in the print." msgstr "" -"Вектор логических значений, указывающий, используется ли данный экструдер в " -"печати." +"Вектор логического значения, указывающий, используется ли данный " +"экструдер при печати." msgid "Has single extruder MM priming" -msgstr "Имеет один экструдер MM priming" +msgstr "Имеется предзарядка для одноэкструдерного ММ принтера" msgid "Are the extra multi-material priming regions used in this print?" msgstr "" -"Используются ли в этой печати дополнительные области грунтовки для " -"нескольких материалов?" +"Используется ли в этой печати дополнительная область предзарядки для " +"одноэкструдерного ММ принтера?" msgid "Volume per extruder" msgstr "Объём для каждого экструдера" @@ -15062,11 +15159,12 @@ msgid "Total filament volume extruded per extruder during the entire print." msgstr "" "Общий объём материала, выдавленного одним экструдером в процесса всей печати." +# ??? Всего смен инструментов msgid "Total toolchanges" -msgstr "Всего инструментов" +msgstr "Число смен инструментов" msgid "Number of toolchanges during the print." -msgstr "Число сменных инструментов во время печати." +msgstr "Число смен инструментов в процессе всей печати." msgid "Total volume" msgstr "Общий объём материала" @@ -15258,7 +15356,7 @@ msgid "The current extruder ID. The same as current_extruder." msgstr "Номер текущего экструдера (то же что и current_extruder.)" msgid "Error in zip archive" -msgstr "Ошибка с zip-архивом" +msgstr "Ошибка с ZIP-архивом" msgid "Generating walls" msgstr "Генерация периметров" @@ -15390,8 +15488,9 @@ msgstr "Этот OBJ файл не может быть прочитан, так msgid "Flow Rate Calibration" msgstr "Калибровка скорости потока" +# ????7 msgid "Max Volumetric Speed Calibration" -msgstr "Калибровка макс. объёмной скорости" +msgstr "Калибровка макс. объёмного расхода" msgid "Manage Result" msgstr "Управление результатами" @@ -15451,7 +15550,7 @@ msgid "Flow Rate" msgstr "Скорость потока" msgid "Max Volumetric Speed" -msgstr "Макс. объёмная скорость" +msgstr "Максимальный объёмный расход" #, c-format, boost-format msgid "" @@ -15472,7 +15571,7 @@ msgstr "Имя не может быть пустым." #, c-format, boost-format msgid "The selected preset: %s is not found." -msgstr "Выбранный пофиль %s не найден." +msgstr "Выбранный профиль %s не найден." msgid "The name cannot be the same as the system preset name." msgstr "Имя не должно совпадать с именем системного профиля." @@ -15501,7 +15600,6 @@ msgstr "Пожалуйста, выберите пруток для калибр msgid "The input value size must be 3." msgstr "Размер входного значения должен быть равен 3." -# ??? msgid "" "This machine type can only hold 16 history results per nozzle. You can " "delete the existing historical results and then start calibration. Or you " @@ -15509,7 +15607,7 @@ msgid "" "historical results. \n" "Do you still want to continue the calibration?" msgstr "" -"Этот тип машины может хранить для каждого сопла только 16 последних " +"Этот тип принтера может хранить для каждого сопла только 16 последних " "результатов. Вы можете удалить существующие результаты, а затем запустить " "калибровку. Или вы можете продолжить калибровку, но результаты калибровки не " "будут сохранены. \n" @@ -15538,7 +15636,7 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Этот тип машины может хранить для каждого сопла только %d последних " +"Этот тип принтера может хранить для каждого сопла только %d последних " "результатов. Этот результат не будет сохранён." msgid "Internal Error" @@ -15550,8 +15648,10 @@ msgstr "Выберите хотя бы один пруток для калибр msgid "Flow rate calibration result has been saved to preset" msgstr "Результат калибровки динамики потока был сохранён в профиль" +# не длинно??? msgid "Max volumetric speed calibration result has been saved to preset" -msgstr "Результат калибровки максимальной объёмной скорости сохранен в профиль" +msgstr "" +"Результат калибровки максимального объёмного расхода был сохранён в профиль" msgid "When do you need Flow Dynamics Calibration" msgstr "В каких случаях необходима калибровка динамики потока" @@ -15573,7 +15673,7 @@ msgstr "" "1. При использовании нового материала другого производителя/типа или при " "отсыревании материала;\n" "2. При износе сопла или его замене на новое;\n" -"3. При изменении в настройках материала максимальной объёмной скорости или " +"3. При изменении в настройках материала максимального объёмного расхода или " "температуры печати." msgid "About this calibration" @@ -15612,7 +15712,8 @@ msgstr "" "Обратите внимание, что есть несколько случаев, когда результат калибровки " "будет недостоверным, например, когда у печатной пластины плохая адгезия с " "материалом. Улучшить адгезию можно, помыв печатную пластину или нанеся на " -"неё клей. Более подробную информацию можно найти на нашем вики-сайте.\n" +"неё клей для 3D печати. Более подробную информацию можно найти на нашем вики-" +"сайте.\n" "\n" "По нашим тестам, результаты калибровки имеют погрешность примерно 10%, что " "может приводить к разным результатам при каждой калибровке. Мы продолжаем " @@ -15692,7 +15793,7 @@ msgstr "" "ввиду, что эффективность и точность этого метода может быть снижена при " "использовании определенных типов материалов. В частности, прозрачные или " "полупрозрачные материалы, материалы с блестящими частицами или с " -"высокоотражающим покрытием могут не подойти для данной калибровки и привести " +"светоотражающим покрытием могут не подойти для данной калибровки и привести " "к нежелательным результатам.\n" "\n" "\n" @@ -15706,15 +15807,16 @@ msgstr "" "печати или повреждению принтера. Пожалуйста, внимательно прочитайте и " "поймите суть процесса, прежде чем приступать к его выполнению." +# ????7 калибровка? Может определение? msgid "When you need Max Volumetric Speed Calibration" -msgstr "В каких случаях необходима калибровка максимальной объемной скорости" +msgstr "В каких случаях необходима калибровка максимального объёмного расхода" msgid "Over-extrusion or under extrusion" msgstr "Избыточная или недостаточная экструзия" msgid "Max Volumetric Speed calibration is recommended when you print with:" msgstr "" -"Калибровка максимальной объёмной скорости рекомендуется при печати с " +"Калибровка максимального объёмного расхода рекомендуется при печати с " "использованием:" msgid "material with significant thermal shrinkage/expansion, such as..." @@ -15750,11 +15852,12 @@ msgstr "Введите имя, который хотите сохранить н msgid "The name cannot exceed 40 characters." msgstr "Максимальная длина имени 40 символов." +# ??? msgid "" "Only one of the results with the same name will be saved. Are you sure you " "want to override the other results?" msgstr "" -"Будет сохранён только один из результатов с таким же именем. Вы уверены, что " +"Можно сохранить только один результат с одинаковым именем. Вы уверены, что " "хотите перезаписать другие результаты?" msgid "Please find the best line on your plate" @@ -15813,7 +15916,7 @@ msgid "Please choose a block with smoothest top surface." msgstr "Выберите блок с самой гладкой верхней поверхностью." msgid "Please input a valid value (0 <= Max Volumetric Speed <= 60)" -msgstr "Введите допустимое значение (0 <= Макс. объёмная скорость <= 60)" +msgstr "Введите допустимое значение (0 <= Макс. объёмный расход <= 60)" msgid "Calibration Type" msgstr "Тип калибровки" @@ -15915,7 +16018,7 @@ msgstr "Действие" #, c-format, boost-format msgid "This machine type can only hold %d history results per nozzle." msgstr "" -"Этот тип машины может хранить для каждого сопла только %d последних " +"Этот тип принтера может хранить для каждого сопла только %d последних " "результатов." msgid "Edit Flow Dynamics Calibration" @@ -16054,13 +16157,13 @@ msgstr "" "Начальная температура > Конечная температура + 5)" msgid "Max volumetric speed test" -msgstr "Тест макс. объёмной скорости" +msgstr "Тест макс. объёмного расхода" msgid "Start volumetric speed: " -msgstr "Начальная объёмная скорость: " +msgstr "Начальный объёмный расход: " msgid "End volumetric speed: " -msgstr "Конечная объёмная скорость: " +msgstr "Конечный объёмный расход: " msgid "step: " msgstr "Шаг изменения: " @@ -16183,7 +16286,7 @@ msgid "Source Volume" msgstr "Исходный объём" msgid "Tool Volume" -msgstr "Объём инструмента" +msgstr "" msgid "Subtract from" msgstr "Главный" @@ -16231,10 +16334,10 @@ msgid "Test OrcaSlicer(GitHub):" msgstr "Тест доступности OrcaSlicer(GitHub):" msgid "Test Bing.com" -msgstr "Тест Bing.com" +msgstr "Тест доступности Bing.com" msgid "Test bing.com:" -msgstr "Тест bing.com:" +msgstr "Тест доступности bing.com:" msgid "Log Info" msgstr "Журнал сведений" @@ -16264,7 +16367,7 @@ msgid "Select Vendor" msgstr "Выбор производителя" msgid "Input Custom Vendor" -msgstr "Введите своего производителя" +msgstr "Введите производителя" msgid "Can't find vendor I want" msgstr "Производитель отсутствует в списке" @@ -16302,8 +16405,9 @@ msgstr "" msgid "Filament type is not selected, please reselect type." msgstr "Не выбран тип прутка, пожалуйста, выберите его заново." +# ??? serial? msgid "Filament serial is not entered, please enter serial." -msgstr "Пожалуйста, введите серию прутка." +msgstr "Пожалуйста, введите серию пластиковой нити." msgid "" "There may be escape characters in the vendor or serial input of filament. " @@ -16336,9 +16440,9 @@ msgstr "" "Если продолжить создание, то созданный профиль будет отображаться с полным " "именем. Хотите продолжить?" +# ??? При создании некоторых существующих профилей произошла ошибка, а именно: msgid "Some existing presets have failed to be created, as follows:\n" -msgstr "" -"При создании некоторых имеющихся профилей произошла ошибка, а именно:\n" +msgstr "Не удалось создать некоторые из следующих существующих профилей:\n" msgid "" "\n" @@ -16353,7 +16457,7 @@ msgid "" "To add preset for more printers, Please go to printer selection" msgstr "" "Мы переименуем профиль в \"Производитель Тип Серия @выбранный принтер\".\n" -"Чтобы добавить профиль для других принтеров, перейдите к выбору принтера.\"" +"Чтобы добавить профиль для других принтеров, перейдите к выбору принтера." msgid "Create Printer/Nozzle" msgstr "Создать принтер/сопло" @@ -16386,7 +16490,7 @@ msgid "Select Printer" msgstr "Выбор принтера" msgid "Input Custom Model" -msgstr "Введите свою модель" +msgstr "Введите название модели" msgid "Can't find my printer model" msgstr "Мой принтер отсутствует в списке" @@ -16410,7 +16514,7 @@ msgid "Load svg" msgstr "Загрузить svg" msgid "Max Print Height" -msgstr "Максимальная высота печати" +msgstr "Высота области печати" #, c-format, boost-format msgid "The file exceeds %d MB, please import again." @@ -16424,9 +16528,7 @@ msgstr "" "ещё раз." msgid "Preset path is not find, please reselect vendor." -msgstr "" -"Не найдет путь к предустановленному профилю, пожалуйста, повторно выберите " -"производителя." +msgstr "Путь к профилю не найден, пожалуйста, выберите другого производителя." msgid "The printer model was not found, please reselect." msgstr "Модель принтера не найдена, пожалуйста, выберите заново." @@ -16467,8 +16569,9 @@ msgstr "" "В разделе «Область печати» на первой странице введено недопустимое значение. " "Проверьте введение значение перед созданием." +# ??? "Не введено имя или модель пользовательского принтера, пожалуйста, введите их. msgid "The custom printer or model is not entered, please enter it." -msgstr "Пожалуйста, введите имя пользовательского принтера или модель." +msgstr "Пожалуйста, введите имя пользовательского принтера и модель." msgid "" "The printer preset you created already has a preset with the same name. Do " @@ -16496,8 +16599,9 @@ msgstr "Не удалось создать профиль прутка. Прич msgid "Create process presets failed. As follows:\n" msgstr "Не удалось создать профиль процесса. Причины: \n" +# ??? выберите занова msgid "Vendor is not find, please reselect." -msgstr "Производитель не найден, пожалуйста, выберите заново." +msgstr "Производитель не найден, пожалуйста, выберите другого." msgid "Current vendor has no models, please reselect." msgstr "" @@ -16553,9 +16657,9 @@ msgid "" msgstr "" "При необходимости перейдите в настройку прутка для редактирования настроек " "профиля.\n" -"Обратите внимание, что температура сопла, температура нагреваемого стола и " -"максимальная объёмная \n" -"скорость существенно влияют на качество печати. Пожалуйста, тщательнее " +"Обратите внимание, что на качество печати существенно влияют температура " +"сопла, температура \n" +"нагреваемого стола и максимальный объёмный расход. Пожалуйста, тщательнее " "подбирайте настройки." msgid "" @@ -16577,20 +16681,21 @@ msgstr "" msgid "Printer Setting" msgstr "Настройка принтера" +# ???????8 msgid "Printer config bundle(.orca_printer)" msgstr "Printer config bundle(.orca_printer) - Пакет конфигурации принтера" msgid "Filament bundle(.orca_filament)" -msgstr "Filament bundle(.orca_filament) - Пакет конфигурации прутка" +msgstr "Filament bundle(.orca_filament) - Пакет конфигурации прутков" msgid "Printer presets(.zip)" -msgstr "Printer presets(.zip) - Профили принтера" +msgstr "Printer presets(.zip) - Профили принтеров" msgid "Filament presets(.zip)" -msgstr "Filament presets (.zip) - Профили прутка" +msgstr "Filament presets (.zip) - Профили прутков" msgid "Process presets(.zip)" -msgstr "Process presets (.zip) - Профили процесса" +msgstr "Process presets (.zip) - Профили процессов" msgid "initialize fail" msgstr "ошибка инициализации" @@ -16598,9 +16703,11 @@ msgstr "ошибка инициализации" msgid "add file fail" msgstr "ошибка добавления файла" +# ??? msgid "add bundle structure file fail" msgstr "ошибка добавления файла пакета конфигурации" +# ??? завершилось с ошибкой msgid "finalize fail" msgstr "Ошибка записи" @@ -16624,14 +16731,15 @@ msgid "" "Printer and all the filament&&process presets that belongs to the printer. \n" "Can be shared with others." msgstr "" -"Принтер и все профили прутка и процесса печати относящиеся к принтеру. \n" -"Можно поделиться с другими пользователями" +"Принтер и все профили пластиковых нитей и процессов, принадлежащие " +"выбранному принтеру.\n" +"Можно будет поделиться с другими пользователями." msgid "" "User's filament preset set. \n" "Can be shared with others." msgstr "" -"Набор пользовательских профилей пластиковых нитей. \n" +"Набор пользовательских профилей пластиковых нитей.\n" "Можно будет поделиться с другими пользователями." msgid "" @@ -16693,6 +16801,7 @@ msgstr "" "Примечание: если удаляется единственный профиль для этого материала, \n" "то сам материал также будет удалён после закрытия окна." +# ??? Профили, наследуемые от других профилей, не могут быть удалены. msgid "Presets inherited by other presets can not be deleted" msgstr "Профили на которых основаны другие профили не могут быть удалены." @@ -16764,12 +16873,12 @@ msgid "" "Your nozzle diameter in preset is not consistent with memorized nozzle " "diameter. Did you change your nozzle lately?" msgstr "" -"Диаметр сопла в профиле не соответствует сохранённому диаметру сопла. Вы " -"недавно сменили сопло?" +"Диаметр сопла в профиле не соответствует сохранённому \n" +"в памяти диаметру сопла. Вы недавно сменили сопло?" #, c-format, boost-format msgid "*Printing %s material with %s may cause nozzle damage" -msgstr "*Печать %s материалом %s может привести к повреждению сопла." +msgstr "*Печать %s материалом с %s может привести к повреждению сопла." msgid "Need select printer" msgstr "Нужно выбрать принтер" @@ -16796,7 +16905,7 @@ msgstr "Не удалось получить действительную ссы msgid "Success!" msgstr "Успешно!" -# ??? Вы уверены, что хотите выйти, разлогиниться? +# ??? Вы уверены, что хотите разлогиниться... завершить сеанс? msgid "Are you sure to log out?" msgstr "Вы уверены, что хотите выйти из системы?" @@ -16807,9 +16916,9 @@ msgstr "Обновить принтеры" msgid "View print host webui in Device tab" msgstr "Веб-интерфейс хоста печати на вкладке «Принтер»" -# ??? +# ??? Замена вкладки... msgid "Replace the BambuLab's device tab with print host webui" -msgstr "Заменить вкладку устройств BambuLab на веб-интерфейс хоста печати" +msgstr "Заменить вкладку принтера BambuLab на веб-интерфейс хоста печати" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16850,7 +16959,7 @@ msgid "Mismatched type of print host: %s" msgstr "Несоответствующий тип хоста печати: %s" msgid "Connection to AstroBox works correctly." -msgstr "Соединение с AstroBox успешно установлено." +msgstr "Подключение к AstroBox успешно установлено." msgid "Could not connect to AstroBox" msgstr "Не удалось подключиться к AstroBox" @@ -16859,7 +16968,7 @@ msgid "Note: AstroBox version at least 1.1.0 is required." msgstr "Примечание: требуется версия AstroBox не ниже 1.1.0." msgid "Connection to Duet works correctly." -msgstr "Соединение с Duet успешно установлено." +msgstr "Подключение к Duet успешно установлено." msgid "Could not connect to Duet" msgstr "Не удалось подключиться к Duet" @@ -16876,11 +16985,13 @@ msgstr "Не удалось получить ресурсы для создан msgid "Upload not enabled on FlashAir card." msgstr "Загрузка на карту FlashAir не была включена." +# ????? msgid "Connection to FlashAir works correctly and upload is enabled." -msgstr "Подключение к FlashAir работает корректно. Загрузка на карту включена." +msgstr "" +"Подключение к FlashAir успешно установлено. Загрузка на карту включена." msgid "Could not connect to FlashAir" -msgstr "Не удаётся подключиться к FlashAir" +msgstr "Не удалось подключиться к FlashAir" msgid "" "Note: FlashAir with firmware 2.00.02 or newer and activated upload function " @@ -16896,22 +17007,22 @@ msgid "Could not connect to MKS" msgstr "Не удалось подключиться к MKS" msgid "Connection to OctoPrint works correctly." -msgstr "Соединение с OctoPrint успешно установлено." +msgstr "Подключение к OctoPrint успешно установлено." msgid "Could not connect to OctoPrint" -msgstr "Не удаётся подключиться к OctoPrint" +msgstr "Не удалось подключиться к OctoPrint" msgid "Note: OctoPrint version at least 1.1.0 is required." msgstr "Примечание: требуется версия OctoPrint не ниже 1.1.0." msgid "Connection to Prusa SL1 / SL1S works correctly." -msgstr "Подключение к Prusa SL1 / SL1S установлено." +msgstr "Подключение к Prusa SL1 / SL1S успешно установлено." msgid "Could not connect to Prusa SLA" msgstr "Не удалось подключиться к Prusa SLA" msgid "Connection to PrusaLink works correctly." -msgstr "Подключение к PrusaLink установлено." +msgstr "Подключение к PrusaLink успешно установлено." msgid "Could not connect to PrusaLink" msgstr "Не удалось подключиться к PrusaLink" @@ -16935,7 +17046,7 @@ msgid "Upload has failed. There is no suitable storage found at %1%." msgstr "Ошибка при отправке. Не найдено подходящего хранилища в %1%." msgid "Connection to Prusa Connect works correctly." -msgstr "Подключение к Prusa Connect установлено." +msgstr "Подключение к Prusa Connect успешно установлено." msgid "Could not connect to Prusa Connect" msgstr "Не удалось подключиться к Prusa Connect" @@ -17237,13 +17348,13 @@ msgstr "" "высокому качеству печати, и в некоторых случаях увеличению время печати." msgid "Connected to Obico successfully!" -msgstr "Соединение с Obico успешно установлено." +msgstr "Подключение к Obico успешно установлено." msgid "Could not connect to Obico" msgstr "Не удалось подключиться к Obico" msgid "Connected to SimplyPrint successfully!" -msgstr "Соединение с SimplyPrint успешно установлено." +msgstr "Подключение к SimplyPrint успешно установлено." msgid "Could not connect to SimplyPrint" msgstr "Не удалось подключиться к SimplyPrint" @@ -17260,7 +17371,7 @@ msgstr "" "настройки." msgid "Connection to Flashforge works correctly." -msgstr "Соединение с Flashforge успешно установлено." +msgstr "Подключение к Flashforge успешно установлено." msgid "Could not connect to Flashforge" msgstr "Не удалось подключиться к Flashforge" @@ -17306,9 +17417,9 @@ msgid "" "Chamber temperature\n" "Did you know that OrcaSlicer supports chamber temperature?" msgstr "" -"Температура термокамеры\n" -"Знаете ли вы, что OrcaSlicer поддерживает управление температурой в камере " -"принтера?" +"Температура в термокамере\n" +"Знаете ли вы, что OrcaSlicer поддерживает управление температурой внутри " +"термокамеры принтера?" #: resources/data/hints.ini: [hint:Calibration] msgid "" @@ -17553,7 +17664,7 @@ msgid "" "Did you know that you can print a model even faster, by using the Adaptive " "Layer Height option? Check it out!" msgstr "" -"Ускорение печати с функцией «Перем. высота слоёв»\n" +"Ускорение печати с функцией «Переменная высота слоёв»\n" "Знаете ли вы, что можно печатать ещё быстрее, используя функцию «Переменная " "высота слоёв». Попробуйте!" @@ -17651,10 +17762,11 @@ msgid "" "extruder/hotend clogging when printing lower temperature filament with a " "higher enclosure temperature. More info about this in the Wiki." msgstr "" -"Когда печатать с открытой дверцей принтера?\n" +"Когда необходимо печатать с открытой дверцей принтера?\n" "Знаете ли вы, что при печати низкотемпературным материалом при более высокой " -"температуре в камере, открытие дверцы принтера снижает вероятность засорения " -"экструдера/хотэнда? Более подробную информацию читайте на вики-сайте." +"температуре внутри термокамеры, открытие дверцы принтера снижает вероятность " +"засорения экструдера/хотэнда? Более подробную информацию читайте на вики-" +"сайте." #: resources/data/hints.ini: [hint:Avoid warping] msgid "" @@ -17667,438 +17779,3 @@ msgstr "" "Знаете ли вы, что при печати материалами, склонными к короблению, таких как " "ABS, повышение температуры подогреваемого стола может снизить эту " "вероятность?" - -#~ msgid "Cool Plate" -#~ msgstr "Не нагреваемая пластина" - -#~ msgid "Reverse on odd" -#~ msgstr "Реверс на нависаниях" - -#~ msgid "" -#~ "Extrude perimeters that have a part over an overhang in the reverse " -#~ "direction on odd layers. This alternating pattern can drastically improve " -#~ "steep overhangs.\n" -#~ "\n" -#~ "This setting can also help reduce part warping due to the reduction of " -#~ "stresses in the part walls." -#~ msgstr "" -#~ "Печать нависающих периметров в обратном направлении на нечётных слоях. " -#~ "Такое чередование может значительно улучшить качество печати крутых " -#~ "нависаний.\n" -#~ "\n" -#~ "Эта настройка также может помочь уменьшить деформацию детали за счет " -#~ "уменьшения напряжений в её стенках." - -#~ msgid "" -#~ "Apply the reverse perimeters logic only on internal perimeters. \n" -#~ "\n" -#~ "This setting greatly reduces part stresses as they are now distributed in " -#~ "alternating directions. This should reduce part warping while also " -#~ "maintaining external wall quality. This feature can be very useful for " -#~ "warp prone material, like ABS/ASA, and also for elastic filaments, like " -#~ "TPU and Silk PLA. It can also help reduce warping on floating regions " -#~ "over supports.\n" -#~ "\n" -#~ "For this setting to be the most effective, it is recommended to set the " -#~ "Reverse Threshold to 0 so that all internal walls print in alternating " -#~ "directions on odd layers irrespective of their overhang degree." -#~ msgstr "" -#~ "Применяется логика реверса печати периметров только для внутренних " -#~ "периметров.\n" -#~ "\n" -#~ "Эта настройка значительно снижает напряжения в деталях, поскольку теперь " -#~ "они распределяются в чередующихся направлениях. Это должно уменьшить " -#~ "деформацию детали, сохраняя при этом качество внешнего периметра. Эта " -#~ "функция может быть очень полезна для материалов, склонных к деформации, " -#~ "таких как ABS/ASA, а также для эластичных материалов, таких как TPU и " -#~ "Silk PLA. Это также может помочь уменьшить деформацию нависающих над " -#~ "поддержкой частей.\n" -#~ "\n" -#~ "Чтобы эта настройка была наиболее эффективной, рекомендуется установить " -#~ "параметр «Порог для реверса» равным 0, чтобы все внутренние периметры " -#~ "печатались в чередующихся направлениях на нечётных слоях независимо от " -#~ "степени их нависания." - -#, no-c-format, no-boost-format -#~ msgid "" -#~ "Number of mm the overhang need to be for the reversal to be considered " -#~ "useful. Can be a % of the perimeter width.\n" -#~ "Value 0 enables reversal on every odd layers regardless." -#~ msgstr "" -#~ "Величина свеса периметра при которой она считается достаточной для " -#~ "активации функции реверса печати нависаний.\n" -#~ "Может быть задано как в процентах, так и в миллиметрах от ширины " -#~ "периметра." - -#~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from " -#~ "the top.\n" -#~ "\n" -#~ "By default all walls are extruded in counter-clockwise, unless Reverse on " -#~ "odd is enabled. Set this to any option other than Auto will force the " -#~ "wall direction regardless of the Reverse on odd.\n" -#~ "\n" -#~ "This option will be disabled if spiral vase mode is enabled." -#~ msgstr "" -#~ "Направление, в котором выдавливаются петли периметров при взгляде сверху " -#~ "вниз.\n" -#~ "\n" -#~ "По умолчанию все периметры выдавливаются против часовой стрелки, если не " -#~ "включена опция «Реверс на нависаниях». При установке этого параметра в " -#~ "значение, отличное от автоматического, направление периметров будет " -#~ "задаваться независимо от опция «Реверс на нависаниях».\n" -#~ "\n" -#~ "Эта опция будет отключена, если включен режим спиральной вазы." - -#~ 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 "" -#~ "The geometry will be decimated before dectecting sharp angles. This " -#~ "parameter indicates the minimum length of the deviation for the " -#~ "decimation.\n" -#~ "0 to deactivate" -#~ msgstr "" -#~ "Геометрия модели будет упрощена перед обнаружением острых углов. Этот " -#~ "параметр задаёт минимальную длину отклонения для её упрощения.\n" -#~ "Установите 0 для отключения." - -#~ 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 commands 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" -#~ "Это не приведёт к сдвигу команд вентилятора из пользовательских G-кодов " -#~ "(они действуют как своего рода барьер).\n" -#~ "Это не приведёт к сдвигу команд вентилятора в стартовом G-коде, если " -#~ "активировано «только пользовательский стартовый G-код».\n" -#~ "Установите 0 для отключения." - -#~ msgid "" -#~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only " -#~ "with open frame printers, i.e. without an enclosure. \n" -#~ "\n" -#~ "Options:\n" -#~ "Enabled = skirt is as tall as the highest printed object.\n" -#~ "Limited = skirt is as tall as specified by skirt height.\n" -#~ "\n" -#~ "Note: With the draft shield active, the skirt will be printed at skirt " -#~ "distance from the object. Therefore, if brims are active it may intersect " -#~ "with them. To avoid this, increase the skirt distance value.\n" -#~ msgstr "" -#~ "Защитный кожух полезен для защиты материалов типа ABS, ASA от деформации " -#~ "и отрыва от стола из-за внешнего воздушного потока. Обычно защитный кожух " -#~ "необходим только для принтеров без камеры.\n" -#~ "\n" -#~ "Опции:\n" -#~ "Включено - высота юбки равна высоте самой высокой модели.\n" -#~ "Ограничено - высота юбки задается параметром «Слоёв юбки».\n" -#~ "\n" -#~ "Примечание: при включённом защитном кожухе, юбка будет печататься на " -#~ "расстоянии от модели, которое задаётся параметром «Расстояние до юбки». " -#~ "Если активны кайма, она может пересекаться с юбкой. Чтобы избежать этого, " -#~ "увеличьте значение «Расстояние до юбки».\n" - -#~ msgid "Limited" -#~ msgstr "Ограничено" - -#~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " -#~ "means this feature is disabled.\n" -#~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print " -#~ "without a prime line." -#~ msgstr "" -#~ "Минимальная длина экструзии в мм при печати юбки. 0 - функция отключена.\n" -#~ "\n" -#~ "Использование ненулевого значения полезно, если принтер настроен на " -#~ "печать без стартовой линии очистки сопла." - -#~ msgid "" -#~ "Adjust this value to prevent short, unclosed walls from being printed, " -#~ "which could increase print time. Higher values remove more and longer " -#~ "walls.\n" -#~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to " -#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " -#~ "threshold' in the Advanced settings below to adjust the sensitivity of " -#~ "what is considered a top-surface. 'One wall threshold' is only visible if " -#~ "this setting is set above the default value of 0.5, or if single-wall top " -#~ "surfaces is enabled." -#~ msgstr "" -#~ "Отрегулируйте это значение, чтобы предотвратить печать коротких " -#~ "незамкнутых периметров, что может увеличить временя печати. Более высокие " -#~ "значения удаляют большие и более длинные периметры.\n" -#~ "\n" -#~ "Примечание: нижние и верхние поверхности не будут затронуты этим " -#~ "значением, чтобы избежать визуальных пробелов с наружной стороны модели. " -#~ "Настройте параметр «Порог одного периметра» в расширенных настройках " -#~ "ниже, чтобы настроить чувствительность определения верхней поверхности. " -#~ "«Порог одного периметра» будет отображаться только в том случае, если " -#~ "этот параметр установлен выше значения по умолчанию, равным 0,5 или если " -#~ "включён параметр «Только один периметр на верхней поверхности»." - -#~ msgid "Don't filter out small internal bridges (beta)" -#~ msgstr "Не отфильтровать небольшие внутренние мосты (beta)" - -#~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily " -#~ "slanted or curved models.\n" -#~ "\n" -#~ "By default, small internal bridges are filtered out and the internal " -#~ "solid infill is printed directly over the sparse infill. This works well " -#~ "in most cases, speeding up printing without too much compromise on top " -#~ "surface quality. \n" -#~ "\n" -#~ "However, in heavily slanted or curved models especially where too low " -#~ "sparse infill density is used, this may result in curling of the " -#~ "unsupported solid infill, causing pillowing.\n" -#~ "\n" -#~ "Enabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount " -#~ "of filtering, i.e. the amount of internal bridges created.\n" -#~ "\n" -#~ "Disabled - Disables this option. This is the default behavior and works " -#~ "well in most cases.\n" -#~ "\n" -#~ "Limited filtering - Creates internal bridges on heavily slanted surfaces, " -#~ "while avoiding creating unnecessary internal bridges. This works well for " -#~ "most difficult models.\n" -#~ "\n" -#~ "No filtering - Creates internal bridges on every potential internal " -#~ "overhang. This option is useful for heavily slanted top surface models. " -#~ "However, in most cases it creates too many unnecessary bridges." -#~ msgstr "" -#~ "Эта опция может помочь уменьшить образование эффекта «дырявой подушки» на " -#~ "верхних сильно наклонных поверхностях или изогнутых моделях.\n" -#~ "\n" -#~ "По умолчанию, маленькие внутренние мосты фильтруются и внутреннее " -#~ "сплошное заполнение печатается непосредственно поверх разреженного " -#~ "заполнения. В большинстве случаев это хорошо работает, ускоряя печать без " -#~ "особого ущерба для качества верхней поверхности. Однако, на сильно " -#~ "наклонных поверхностях или изогнутых моделях, особенно при низкой " -#~ "плотности заполнения, это может привести к скручиванию неподдерживаемого " -#~ "сплошного заполнения и образованию эффекта «дырявой подушки».\n" -#~ "\n" -#~ "Включение позволит печатать слой внутреннего моста над слабо " -#~ "поддерживаемым внутренним сплошным заполнением. Приведённые ниже " -#~ "параметры управляют степенью фильтрации, т.е. количеством создаваемых " -#~ "внутренних мостов.\n" -#~ "\n" -#~ "Отключение - отключает эту опцию. Это задано по умолчанию и в большинстве " -#~ "случаев работает хорошо.\n" -#~ "\n" -#~ "Ограниченная фильтрация - создаёт внутренние мосты на сильно наклонных " -#~ "поверхностях, при этом избегая создания ненужных внутренних мостов. Это " -#~ "хорошо работает на большинстве сложных моделях.\n" -#~ "\n" -#~ "Без фильтрации - мосты создаются над каждым потенциально внутреннем " -#~ "нависании. Этот вариант полезен для моделей с сильно наклонной верхней " -#~ "поверхностью. Однако в большинстве случаев этот вариант создаёт слишком " -#~ "много ненужных мостов." - -#~ msgid "Shrinkage" -#~ msgstr "Усадка материала" - -#~ msgid "" -#~ "Enables gap fill for the selected surfaces. The minimum gap length that " -#~ "will be filled can be controlled from the filter out tiny gaps option " -#~ "below.\n" -#~ "\n" -#~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " -#~ "surfaces\n" -#~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -#~ "only\n" -#~ "3. Nowhere: Disables gap fill\n" -#~ msgstr "" -#~ "Включает заполнение пробелов для выбранных поверхностей. Минимальной " -#~ "длиной пробела, который будет заполнен, можно управлять с помощью " -#~ "нижерасположенной опции «Игнорировать небольшие пробелы».\n" -#~ "Доступные режимы:\n" -#~ "1. Везде (заполнение пробелов применяется на верхних, нижних и внутренних " -#~ "сплошных поверхностях)\n" -#~ "2. Верхняя и нижняя поверхности (заполнение пробелов применяется только к " -#~ "верхней и нижней поверхностям)\n" -#~ "3. Нигде (заполнение пробелов отключено)\n" - -#~ msgid "" -#~ "Decrease this value slightly(for example 0.9) to reduce the amount of " -#~ "material for bridge, to improve sag" -#~ msgstr "" -#~ "Параметр задаёт количество пластика, затрачиваемое для построения мостов. " -#~ "В большинстве случаев настроек по умолчанию достаточно, тем не менее, при " -#~ "печати некоторых моделей уменьшение параметра может сократить провисание " -#~ "пластика при печати мостов." - -#~ msgid "" -#~ "This value governs the thickness of the internal bridge layer. This is " -#~ "the first layer over sparse infill. Decrease this value slightly (for " -#~ "example 0.9) to improve surface quality over sparse infill." -#~ msgstr "" -#~ "Это значение определяет толщину слоя внутреннего моста, печатаемого " -#~ "поверх разреженного заполнения. Немного уменьшите это значение (например " -#~ "0,9), чтобы улучшить качество поверхности печатаемой поверх разреженного " -#~ "заполнения." - -#~ msgid "" -#~ "This factor affects the amount of material for top solid infill. You can " -#~ "decrease it slightly to have smooth surface finish" -#~ msgstr "" -#~ "Этот параметр задаёт количество выдавливаемого материала для верхнего " -#~ "сплошного слоя заполнения. Вы можете немного уменьшить его, чтобы " -#~ "получить более гладкую поверхность." - -#~ msgid "This factor affects the amount of material for bottom solid infill" -#~ msgstr "" -#~ "Этот параметр задаёт количество выдавливаемого материала для нижнего " -#~ "сплошного слоя заполнения." - -#~ msgid "" -#~ "Enable this option to slow printing down in areas where potential curled " -#~ "perimeters may exist" -#~ msgstr "" -#~ "Включите эту опцию для замедления печати в тех областях, где потенциально " -#~ "могут возникать изогнутые периметры." - -#~ msgid "Speed of bridge and completely overhang wall" -#~ msgstr "Скорость печати мостов и периметров с полным нависанием." - -#~ msgid "" -#~ "Speed of internal bridge. If the value is expressed as a percentage, it " -#~ "will be calculated based on the bridge_speed. Default value is 150%." -#~ msgstr "" -#~ "Скорость печати внутреннего моста. Если задано в процентах, то значение " -#~ "вычисляться относительно скорости внешнего моста (bridge_speed). Значение " -#~ "по умолчанию равно 150%." - -#~ msgid "Time to load new filament when switch filament. For statistics only" -#~ msgstr "" -#~ "Время загрузки новой пластиковой нити при её смене. Только для статистики." - -#~ msgid "" -#~ "Time to unload old filament when switch filament. For statistics only" -#~ msgstr "" -#~ "Время выгрузки старой пластиковой нити при её смене. Только для " -#~ "статистики." - -#~ msgid "" -#~ "Time for the printer firmware (or the Multi Material Unit 2.0) to load a " -#~ "new filament during a tool change (when executing the T code). This time " -#~ "is added to the total print time by the G-code time estimator." -#~ msgstr "" -#~ "Время за которое прошивка принтера (или Multi Material Unit 2.0) " -#~ "выгружает пруток во время смены инструмента (при выполнении кода Т). Это " -#~ "время добавляется к общему времени печати с помощью алгоритма оценки " -#~ "времени выполнения G-кода." - -#~ msgid "" -#~ "Time for the printer firmware (or the Multi Material Unit 2.0) to unload " -#~ "a filament during a tool change (when executing the T code). This time is " -#~ "added to the total print time by the G-code time estimator." -#~ msgstr "" -#~ "Время за которое прошивка принтера (или Multi Material Unit 2.0) " -#~ "выгружает пруток во время смены инструмента (при выполнении кода Т). Это " -#~ "время добавляется к общему времени печати с помощью алгоритма оценки " -#~ "времени выполнения G-кода." - -#~ msgid "Filter out gaps smaller than the threshold specified" -#~ msgstr "Небольшие промежутки меньше указанного порога не будут заполняться." - -#~ msgid "" -#~ "Enable this option for chamber temperature control. An M191 command will " -#~ "be added before \"machine_start_gcode\"\n" -#~ "G-code commands: M141/M191 S(0-255)" -#~ msgstr "" -#~ "Для контроля температуры в камере принтера включите эту опцию. Команда " -#~ "M191 будет добавлена перед стартовый G-кодом принтера " -#~ "(machine_start_gcode).\n" -#~ "G-код команда: M141/M191 S(0-255)" - -#~ msgid "" -#~ "Higher chamber temperature can help suppress or reduce warping and " -#~ "potentially lead to higher interlayer bonding strength for high " -#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " -#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " -#~ "TPU, PVA and other low temperature materials,the actual chamber " -#~ "temperature should not be high to avoid cloggings, so 0 which stands for " -#~ "turning off is highly recommended" -#~ msgstr "" -#~ "Более высокая температура в камере может помочь уменьшить или даже " -#~ "исключить коробление материала. Так же это улучшает межслойное соединения " -#~ "у высокотемпературных материалов, таких как ABS, ASA, PC, PA и т.д. (в то " -#~ "же время фильтрация воздуха при печати ABS и ASA сделает её хуже). Для " -#~ "низкотемпературных материалов, таких как PLA, PETG, TPU, PVA и т. д., " -#~ "фактическая температура в камере не должна быть слишком высокой, чтобы " -#~ "избежать засорения сопла, поэтому настоятельно рекомендуется установить " -#~ "температуру в камере равной 0°C." - -#~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." -#~ msgstr "" -#~ "При включении черновой башни не допускается использования разных " -#~ "диаметров сопел и разных диаметров пластиковой нити." - -#~ msgid "" -#~ "Ooze prevention is currently not supported with the prime tower enabled." -#~ msgstr "" -#~ "Предотвращение течи материала с помощью черновой башни в настоящее время " -#~ "не поддерживается." - -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." -#~ msgstr "" -#~ "Глубина взаимосвязи сегментированной области. Установите 0 для отключения " -#~ "этой функции." - -#~ msgid "Wipe tower extruder" -#~ msgstr "Экструдер черновой башни" - -#~ msgid "Associate prusaslicer://" -#~ msgstr "Ассоциация c prusaslicer://" - -#~ msgid "Not associated to any application" -#~ msgstr "Нет ассоциации ни с одним приложением" - -#~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" -#~ msgstr "" -#~ "Ассоциировать OrcaSlicer с ссылками prusaslicer://, чтобы она могла " -#~ "открывать модели сразу с printable.com" - -#~ msgid "Associate bambustudio://" -#~ msgstr "Ассоциация c bambustudio://" - -#~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" -#~ msgstr "" -#~ "Ассоциировать OrcaSlicer с ссылками bambustudio://, чтобы она могла " -#~ "открывать модели сразу с makerworld.com" - -#~ msgid "Associate cura://" -#~ msgstr "Ассоциация c cura://" - -#~ msgid "" -#~ "Associate OrcaSlicer with cura:// links so that Orca can open models from " -#~ "thingiverse.com" -#~ msgstr "" -#~ "Ассоциировать OrcaSlicer с ссылками bambustudio://, чтобы она могла " -#~ "открывать модели сразу с thingiverse.com" diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 056a7b85f14..fd9c28df1ab 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -995,6 +995,9 @@ var LangText = { t113: "Вы можете изменить свой выбор в любое время.", orca1: "Редактировать информацию о проекте", orca2: "Информации о модели отсутствует", + orca3: "Режим конфиденциальности", + orca4: "Это остановит передачу данных в облачные сервисы Bambu. Пользователи, которые не используют принтеры Bambu Lab или используют режим «Только LAN», могут безопасно включить эту функцию.", + orca5: "Включить режим конфиденциальности" }, ko_KR: { t1: "Orca Slicer에 오신 것을 환영합니다", From 1992623a506dd6c2f92d72b10c6f1f5e8938534b Mon Sep 17 00:00:00 2001 From: HYzd766 <108379794+HYzd766@users.noreply.github.com> Date: Thu, 3 Oct 2024 23:38:46 +0800 Subject: [PATCH 36/64] Qidi profile updates: latest consumables and machine modifications (#6952) * Qidi.json * Qidi.json * Qidi.json * new change new change --- resources/profiles/Qidi.json | 130 +++++++++++++++++- ... ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json | 2 +- .../QIDI ABS Rapido Metal @0.2 nozzle.json | 35 +++++ .../QIDI ABS Rapido Metal @0.6 nozzle.json | 26 ++++ .../QIDI ABS Rapido Metal @0.8 nozzle.json | 41 ++++++ ... Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json | 52 +++++++ ... Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json | 49 +++++++ ... Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json | 52 +++++++ ... Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json | 52 +++++++ ...apido Metal @Qidi X-Plus 4 0.2 nozzle.json | 52 +++++++ ...apido Metal @Qidi X-Plus 4 0.4 nozzle.json | 52 +++++++ ...apido Metal @Qidi X-Plus 4 0.6 nozzle.json | 52 +++++++ ...apido Metal @Qidi X-Plus 4 0.8 nozzle.json | 52 +++++++ .../Qidi/filament/QIDI ABS Rapido Metal.json | 47 +++++++ .../profiles/Qidi/filament/QIDI PA-Ultra.json | 1 - ...DI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json | 3 - ...DI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json | 3 - ...DI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json | 3 - ...DI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json | 3 - ... PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json | 3 - ... PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json | 3 - ... PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json | 3 - .../QIDI PLA Rapido Metal @0.2 nozzle.json | 29 ++++ .../QIDI PLA Rapido Metal @0.6 nozzle.json | 32 +++++ .../QIDI PLA Rapido Metal @0.8 nozzle.json | 32 +++++ ... Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json | 48 +++++++ ... Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json | 51 +++++++ ... Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json | 48 +++++++ ... Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json | 48 +++++++ ...apido Metal @Qidi X-Plus 4 0.2 nozzle.json | 48 +++++++ ...apido Metal @Qidi X-Plus 4 0.4 nozzle.json | 51 +++++++ ...apido Metal @Qidi X-Plus 4 0.6 nozzle.json | 48 +++++++ ...apido Metal @Qidi X-Plus 4 0.8 nozzle.json | 48 +++++++ .../Qidi/filament/QIDI PLA Rapido Metal.json | 35 +++++ .../QIDI PLA Rapido Silk @0.6 nozzle.json | 32 +++++ ...A Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json | 51 +++++++ ...A Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json | 51 +++++++ ...Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json | 51 +++++++ ...Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json | 51 +++++++ .../Qidi/filament/QIDI PLA Rapido Silk.json | 38 +++++ .../Qidi/filament/QIDI PLA Rapido.json | 3 + .../filament/QIDI PPS-CF @0.6 nozzle.json | 52 +++++++ .../filament/QIDI PPS-CF @0.8 nozzle.json | 52 +++++++ .../QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json | 18 +-- .../QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json | 18 +-- .../QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json | 18 +-- ...QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json | 18 +-- ...QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json | 18 +-- ...QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json | 21 +-- .../profiles/Qidi/filament/QIDI PPS-CF.json | 37 ++--- .../machine/Qidi X-Plus 4 0.4 nozzle.json | 14 +- 51 files changed, 1668 insertions(+), 109 deletions(-) create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index 63c88284722..8c16c41133a 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -1,6 +1,6 @@ { "name": "Qidi", - "version": "02.02.00.01", + "version": "02.02.00.03", "force_update": "0", "description": "Qidi configurations", "machine_model_list": [ @@ -1468,6 +1468,14 @@ "name": "QIDI PPS-CF", "sub_path": "filament/QIDI PPS-CF.json" }, + { + "name": "QIDI PPS-CF @0.6 nozzle", + "sub_path": "filament/QIDI PPS-CF @0.6 nozzle.json" + }, + { + "name": "QIDI PPS-CF @0.8 nozzle", + "sub_path": "filament/QIDI PPS-CF @0.8 nozzle.json" + }, { "name": "QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle", "sub_path": "filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json" @@ -1491,6 +1499,126 @@ { "name": "QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle", "sub_path": "filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal", + "sub_path": "filament/QIDI ABS Rapido Metal.json" + }, + { + "name": "QIDI ABS Rapido Metal @0.2 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @0.6 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @0.8 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal", + "sub_path": "filament/QIDI PLA Rapido Metal.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @0.2 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @0.6 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @0.8 nozzle", + "sub_path": "filament/QIDI PLA Rapido Metal @0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk", + "sub_path": "filament/QIDI PLA Rapido Silk.json" + }, + { + "name": "QIDI PLA Rapido Silk @0.6 nozzle", + "sub_path": "filament/QIDI PLA Rapido Silk @0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json" } ], "machine_list": [ diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json index c3429be1139..2ebbfbdf21e 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json @@ -4,7 +4,7 @@ "setting_id": "GFSA04", "instantiation": "true", "activate_air_filtration":[ - "0" + "1" ], "during_print_exhaust_fan_speed":[ "0" diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json new file mode 100644 index 00000000000..89f92d4f50a --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.2 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "QIDI ABS Rapido Metal @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI ABS Rapido Metal", + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.021" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "fan_max_speed":[ + "80" + ], + "fan_min_speed":[ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 0.2 nozzle", + "Qidi X-Max 0.2 nozzle", + "Qidi X-CF Pro 0.2 nozzle", + "Qidi X-Smart 3 0.2 nozzle", + "Qidi X-Plus 3 0.2 nozzle", + "Qidi X-Max 3 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json new file mode 100644 index 00000000000..040cef4662f --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.6 nozzle.json @@ -0,0 +1,26 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "QIDI ABS Rapido Metal @0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI ABS Rapido Metal", + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.014" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 0.6 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json new file mode 100644 index 00000000000..6430a5aeeaa --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @0.8 nozzle.json @@ -0,0 +1,41 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "QIDI ABS Rapido Metal @0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI ABS Rapido Metal", + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.011" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "nozzle_temperature": [ + "260" + ], + "slow_down_min_speed": [ + "10" + ], + "fan_max_speed":[ + "80" + ], + "fan_min_speed":[ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json new file mode 100644 index 00000000000..d6727c63bcd --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "0" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle", + "nozzle_temperature": [ + "260" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.021" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ +"Qidi Q1 Pro 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json new file mode 100644 index 00000000000..cbf1f27e076 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json @@ -0,0 +1,49 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle", + "nozzle_temperature": [ + "260" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.035" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ +"Qidi Q1 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json new file mode 100644 index 00000000000..d418893ed83 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle", + "nozzle_temperature": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.016" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ +"Qidi Q1 Pro 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json new file mode 100644 index 00000000000..5a77c823962 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle", + "nozzle_temperature": [ + "250" + ], + "overhang_fan_speed": [ + "100" + ], + "pressure_advance": [ + "0.012" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ +"Qidi Q1 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json new file mode 100644 index 00000000000..52e48d48bed --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "0" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle", + "nozzle_temperature": [ + "260" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.03" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ +"Qidi X-Plus 4 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json new file mode 100644 index 00000000000..3ea527d708a --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle", + "nozzle_temperature": [ + "260" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.03" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ +"Qidi X-Plus 4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json new file mode 100644 index 00000000000..50829a126b3 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle", + "nozzle_temperature": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.016" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ +"Qidi X-Plus 4 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json new file mode 100644 index 00000000000..ac39f8c7075 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json @@ -0,0 +1,52 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "instantiation": "true", + "activate_air_filtration":[ + "1" + ], + "during_print_exhaust_fan_speed":[ + "0" + ], + "filament_flow_ratio": [ + "0.95" + ], + "enable_pressure_advance": [ + "1" + ], + "activate_chamber_temp_control": [ + "0" + ], + "chamber_temperature": [ + "55" + ], + "fan_max_speed": [ + "80" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "from": "system", + "hot_plate_temp_initial_layer": [ + "90" + ], + "inherits": "QIDI ABS Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle", + "nozzle_temperature": [ + "250" + ], + "overhang_fan_speed": [ + "80" + ], + "pressure_advance": [ + "0.008" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ +"Qidi X-Plus 4 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json new file mode 100644 index 00000000000..b6cc842dbf2 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal.json @@ -0,0 +1,47 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "QIDI ABS Rapido Metal", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "22" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.035" + ], + "fan_max_speed":[ + "80" + ], + "fan_min_speed":[ + "20" + ], + "overhang_fan_speed": [ + "80" + ], + "filament_density":[ + "1.02" + ], + "chamber_temperature": [ + "55" + ], + "fan_cooling_layer_time": [ + "60" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra.json index 0f8f4fd3d16..4af743f1288 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra.json @@ -77,4 +77,3 @@ "Qidi X-Max 3 0.8 nozzle" ] } - diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json index f2b961f8213..a7f01a12bb9 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "0" - ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json index 7b6125d09eb..fec0acffad8 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "100" - ], "close_fan_the_first_x_layers": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json index 36f5477f39d..f9892fcfb91 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "0" - ], "close_fan_the_first_x_layers": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json index cdeae5e012d..289957fce05 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "0" - ], "close_fan_the_first_x_layers": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json index 61b49535729..3c2e620481d 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "0" - ], "close_fan_the_first_x_layers": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json index 2f7fe7698c8..804ca0c7311 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "0" - ], "close_fan_the_first_x_layers": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json index 2e6983920c7..5ca3d22ba28 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -5,9 +5,6 @@ "activate_air_filtration": [ "1" ], - "additional_cooling_fan_speed": [ - "0" - ], "close_fan_the_first_x_layers": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json new file mode 100644 index 00000000000..7801d6fa4c6 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.2 nozzle.json @@ -0,0 +1,29 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "QIDI PLA Rapido Metal @0.2 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI PLA Rapido Metal", + "filament_flow_ratio": [ + "0.98" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "compatible_printers": [ + "Qidi X-Plus 0.2 nozzle", + "Qidi X-Max 0.2 nozzle", + "Qidi X-CF Pro 0.2 nozzle", + "Qidi X-Smart 3 0.2 nozzle", + "Qidi X-Plus 3 0.2 nozzle", + "Qidi X-Max 3 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json new file mode 100644 index 00000000000..4b0cadd72db --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "QIDI PLA Rapido Metal @0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI PLA Rapido Metal", + "filament_flow_ratio": [ + "0.98" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.02" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 0.6 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json new file mode 100644 index 00000000000..eaf778c9947 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @0.8 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "QIDI PLA Rapido Metal @0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI PLA Rapido Metal", + "filament_flow_ratio": [ + "0.98" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.01" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 0.8 nozzle", + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json new file mode 100644 index 00000000000..51667aad326 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json @@ -0,0 +1,48 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.042" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi Q1 Pro 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json new file mode 100644 index 00000000000..b0d29cc45b5 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json @@ -0,0 +1,51 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.042" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi Q1 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json new file mode 100644 index 00000000000..e8dcb15ce86 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json @@ -0,0 +1,48 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.016" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi Q1 Pro 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json new file mode 100644 index 00000000000..b323f7efbd0 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json @@ -0,0 +1,48 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.008" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi Q1 Pro 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json new file mode 100644 index 00000000000..1b769341f7e --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json @@ -0,0 +1,48 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "2" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.038" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.2 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json new file mode 100644 index 00000000000..e0acc7855a9 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json @@ -0,0 +1,51 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.038" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json new file mode 100644 index 00000000000..8d17a8822c9 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json @@ -0,0 +1,48 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.02" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json new file mode 100644 index 00000000000..14f07e08cd9 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json @@ -0,0 +1,48 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "24.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Metal", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle", + "nozzle_temperature": [ + "210" + ], + "pressure_advance": [ + "0.01" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json new file mode 100644 index 00000000000..dbd6cdc97ff --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "QIDI PLA Rapido Metal", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.038" + ], + "additional_cooling_fan_speed": [ + "100" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json new file mode 100644 index 00000000000..0cfff7515f3 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @0.6 nozzle.json @@ -0,0 +1,32 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "QIDI PLA Rapido Silk @0.6 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "QIDI PLA Rapido Silk", + "filament_flow_ratio": [ + "0.98" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.016" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 0.6 nozzle", + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json new file mode 100644 index 00000000000..51b0a0353a2 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json @@ -0,0 +1,51 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "7.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Silk", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle", + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "pressure_advance": [ + "0.034" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi Q1 Pro 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json new file mode 100644 index 00000000000..258fa3c846e --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json @@ -0,0 +1,51 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "7.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Silk", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle", + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "pressure_advance": [ + "0.024" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi Q1 Pro 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json new file mode 100644 index 00000000000..c5c7f887ca6 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json @@ -0,0 +1,51 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "7.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Silk", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle", + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "pressure_advance": [ + "0.034" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json new file mode 100644 index 00000000000..bdeadfe52e6 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json @@ -0,0 +1,51 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "activate_air_filtration": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "during_print_exhaust_fan_speed": [ + "100" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_max_volumetric_speed": [ + "7.5" + ], + "filament_settings_id": [ + "QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle" + ], + "from": "system", + "full_fan_speed_layer": [ + "3" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "inherits": "QIDI PLA Rapido Silk", + "is_custom_defined": "0", + "name": "QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle", + "nozzle_temperature": [ + "210" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "pressure_advance": [ + "0.021" + ], + "slow_down_min_speed": [ + "20" + ], + "compatible_printers": [ + "Qidi X-Plus 4 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json new file mode 100644 index 00000000000..f755c705625 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json @@ -0,0 +1,38 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "QIDI PLA Rapido Silk", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "7.5" + ], + "slow_down_layer_time": [ + "8" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.031" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature": [ + "220" + ], + "compatible_printers": [ + "Qidi X-Plus 0.4 nozzle", + "Qidi X-Max 0.4 nozzle", + "Qidi X-CF Pro 0.4 nozzle", + "Qidi X-Smart 3 0.4 nozzle", + "Qidi X-Plus 3 0.4 nozzle", + "Qidi X-Max 3 0.4 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido.json index 302d1c5bd41..602a379bac0 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido.json @@ -20,6 +20,9 @@ ], "pressure_advance": [ "0.031" + ], + "additional_cooling_fan_speed": [ + "100" ], "compatible_printers": [ "Qidi X-Plus 0.4 nozzle", diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json new file mode 100644 index 00000000000..8d0057aa7c5 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.6 nozzle.json @@ -0,0 +1,52 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_settings_id": [ + "QIDI PPS-CF @0.6 nozzle" + ], + "from": "system", + "inherits": "QIDI PPS-CF", + "is_custom_defined": "0", + "name": "QIDI PPS-CF @0.6 nozzle", + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "overhang_fan_speed": [ + "40" + ], + "pressure_advance": [ + "0.021" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "compatible_printers": [ + "Qidi X-Max 0.6 nozzle", + "Qidi X-CF Pro 0.6 nozzle", + "Qidi X-Smart 3 0.6 nozzle", + "Qidi X-Plus 3 0.6 nozzle", + "Qidi X-Max 3 0.6 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json new file mode 100644 index 00000000000..388ee3e2c93 --- /dev/null +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @0.8 nozzle.json @@ -0,0 +1,52 @@ +{"type": "filament", +"filament_id": "GFB99", +"setting_id": "GFSA04", +"instantiation": "true", + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "0" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_settings_id": [ + "QIDI PPS-CF @0.8 nozzle" + ], + "from": "system", + "inherits": "QIDI PPS-CF", + "is_custom_defined": "0", + "name": "QIDI PPS-CF @0.8 nozzle", + "nozzle_temperature": [ + "320" + ], + "nozzle_temperature_initial_layer": [ + "320" + ], + "overhang_fan_speed": [ + "40" + ], + "pressure_advance": [ + "0.008" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "nozzle_temperature_range_low": [ + "300" + ], + "compatible_printers": [ + "Qidi X-Max 0.8 nozzle", + "Qidi X-CF Pro 0.8 nozzle", + "Qidi X-Smart 3 0.8 nozzle", + "Qidi X-Plus 3 0.8 nozzle", + "Qidi X-Max 3 0.8 nozzle" + ] +} diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json index c8f030183d3..19d1f2a4a29 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json @@ -3,16 +3,16 @@ "setting_id": "GFSA04", "instantiation": "true", "fan_cooling_layer_time": [ - "10" + "5" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "filament_settings_id": [ "QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle" @@ -22,19 +22,19 @@ "is_custom_defined": "0", "name": "QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle", "nozzle_temperature": [ - "340" + "320" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "overhang_fan_speed": [ - "50" + "40" ], "pressure_advance": [ - "0.032" + "0.03" ], "slow_down_layer_time": [ - "5" + "2" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json index 718770f18d7..90689d9aae7 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json @@ -3,16 +3,16 @@ "setting_id": "GFSA04", "instantiation": "true", "fan_cooling_layer_time": [ - "10" + "5" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "filament_settings_id": [ "QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle" @@ -22,19 +22,19 @@ "is_custom_defined": "0", "name": "QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle", "nozzle_temperature": [ - "340" + "320" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "overhang_fan_speed": [ - "50" + "40" ], "pressure_advance": [ - "0.032" + "0.019" ], "slow_down_layer_time": [ - "5" + "2" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json index a6f74ae2cd6..04747d16c11 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle.json @@ -3,16 +3,16 @@ "setting_id": "GFSA04", "instantiation": "true", "fan_cooling_layer_time": [ - "10" + "5" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "filament_settings_id": [ "QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle" @@ -22,19 +22,19 @@ "is_custom_defined": "0", "name": "QIDI PPS-CF @Qidi Q1 Pro 0.8 nozzle", "nozzle_temperature": [ - "340" + "320" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "overhang_fan_speed": [ - "50" + "40" ], "pressure_advance": [ - "0.032" + "0.008" ], "slow_down_layer_time": [ - "5" + "2" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json index 14265a89601..7dd6cdccef4 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json @@ -3,16 +3,16 @@ "setting_id": "GFSA04", "instantiation": "true", "fan_cooling_layer_time": [ - "10" + "5" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "filament_settings_id": [ "QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle" @@ -22,19 +22,19 @@ "is_custom_defined": "0", "name": "QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle", "nozzle_temperature": [ - "340" + "320" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "overhang_fan_speed": [ - "50" + "40" ], "pressure_advance": [ - "0.032" + "0.03" ], "slow_down_layer_time": [ - "5" + "2" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json index b2d54e415bd..32758f1f100 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json @@ -3,16 +3,16 @@ "setting_id": "GFSA04", "instantiation": "true", "fan_cooling_layer_time": [ - "10" + "5" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "filament_settings_id": [ "QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle" @@ -22,19 +22,19 @@ "is_custom_defined": "0", "name": "QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle", "nozzle_temperature": [ - "340" + "320" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "overhang_fan_speed": [ - "50" + "40" ], "pressure_advance": [ - "0.032" + "0.021" ], "slow_down_layer_time": [ - "5" + "2" ], "slow_down_min_speed": [ "20" diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json index 1a44eaa55fa..b257991d444 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json @@ -3,16 +3,16 @@ "setting_id": "GFSA04", "instantiation": "true", "fan_cooling_layer_time": [ - "10" + "5" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "filament_settings_id": [ "QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle" @@ -22,23 +22,26 @@ "is_custom_defined": "0", "name": "QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle", "nozzle_temperature": [ - "340" + "320" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "overhang_fan_speed": [ - "50" + "40" ], "pressure_advance": [ - "0.032" + "0.008" ], "slow_down_layer_time": [ - "5" + "2" ], "slow_down_min_speed": [ "20" ], + "nozzle_temperature_range_low": [ + "300" + ], "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF.json b/resources/profiles/Qidi/filament/QIDI PPS-CF.json index 25d748c1bea..0e901187b88 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF.json @@ -10,25 +10,25 @@ "PA-CF" ], "nozzle_temperature_initial_layer": [ - "340" + "320" ], "nozzle_temperature": [ - "340" + "320" ], "filament_max_volumetric_speed": [ - "5" + "6" ], "fan_max_speed": [ - "40" + "30" ], "fan_min_speed": [ - "20" + "0" ], "overhang_fan_threshold": [ "0%" ], "overhang_fan_speed": [ - "50" + "40" ], "fan_cooling_layer_time": [ "5" @@ -40,25 +40,25 @@ "1" ], "pressure_advance": [ - "0.01" + "0.03" ], "hot_plate_temp_initial_layer" : [ - "100" + "110" ], "hot_plate_temp" : [ - "100" + "110" ], "slow_down_layer_time": [ - "5" + "2" ], "filament_density":[ - "1.20" + "1.26" ], "chamber_temperature": [ "60" ], "filament_flow_ratio": [ - "0.96" + "0.97" ], "compatible_printers": [ "Qidi X-Plus 0.4 nozzle", @@ -66,17 +66,6 @@ "Qidi X-CF Pro 0.4 nozzle", "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", - "Qidi X-Max 3 0.4 nozzle", - "Qidi X-Max 0.6 nozzle", - "Qidi X-CF Pro 0.6 nozzle", - "Qidi X-Smart 3 0.6 nozzle", - "Qidi X-Plus 3 0.6 nozzle", - "Qidi X-Max 3 0.6 nozzle", - "Qidi X-Plus 0.8 nozzle", - "Qidi X-Max 0.8 nozzle", - "Qidi X-CF Pro 0.8 nozzle", -"Qidi X-Smart 3 0.8 nozzle", -"Qidi X-Plus 3 0.8 nozzle", -"Qidi X-Max 3 0.8 nozzle" + "Qidi X-Max 3 0.4 nozzle" ] } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json index cc96c53a758..ddbeeb27c5c 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json @@ -19,17 +19,17 @@ ], "bed_exclude_area": [ "0x305", - "0x300", - "50x300", - "50x305", + "0x302", + "35x302", + "35x305", "305x305", "305x305", "305x305", - "305x10", - "293x10", + "305x20", + "293x20", "293x0", "305x0", - "305x10", + "305x20", "305x305" ], "printable_height": "280", @@ -88,7 +88,7 @@ "extruder_clearance_height_to_lid": "135", "layer_change_gcode": "G92 E0\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", "machine_end_gcode": "M141 S0\nM104 S0\nM140 S0\nG1 E-3 F1800\nG0 Z{min(max_print_height, max_layer_z + 3)} F600\nG0 X0 Y0 F12000\n{if max_layer_z < max_print_height / 2}G1 Z{max_print_height / 2 + 10} F600{else}G1 Z{min(max_print_height, max_layer_z + 3)}{endif}", - "machine_start_gcode": "PRINT_START BED=[hot_plate_temp_initial_layer] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperature]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[hot_plate_temp_initial_layer]\nM104 S[nozzle_temperature_initial_layer]\nG4 P3000\nG0 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0)} Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0)} Z5 F6000\nG0 Z[initial_layer_print_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0] - 12, first_layer_print_min[0] + 80))} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0)} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0) + 85} E{83 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 5, first_layer_print_min[1] + 80) - 85), 0) + 3} E{82 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 3} Z0\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 6}\nG1 Z1 F600\nSET_PRINT_STATS_INFO CURRENT_LAYER=1\n", + "machine_start_gcode": "PRINT_START BED=[hot_plate_temp_initial_layer] HOTEND=[nozzle_temperature_initial_layer] CHAMBER=[chamber_temperature]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[hot_plate_temp_initial_layer]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG4 P3000\nG0 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0)} Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0)} Z5 F6000\nG0 Z[initial_layer_print_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0] - 12, first_layer_print_min[0] + 80))} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0)} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0) + 85} E{83 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1] - 3, first_layer_print_min[1] + 80) - 85), 0) + 3} E{82 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 3} Z0\nG1 X{max((min(print_bed_max[0] - 12, first_layer_print_min[0] + 80) - 85), 0) + 6}\nG1 Z1 F600\nSET_PRINT_STATS_INFO CURRENT_LAYER=1\n", "thumbnails_format": "PNG", "default_filament_profile": [ "Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle" From 98c540d3c9dfdd813cca409a0e2792a777bd12ce Mon Sep 17 00:00:00 2001 From: Andrey Helldar Date: Thu, 3 Oct 2024 18:40:05 +0300 Subject: [PATCH 37/64] Removed editor's label from Russian translation file (#6962) From 9245a87293fb1c9d0384d43a7c9ddbe2c8b51e16 Mon Sep 17 00:00:00 2001 From: GlauTech <33813227+GlauTechCo@users.noreply.github.com> Date: Thu, 3 Oct 2024 18:40:43 +0300 Subject: [PATCH 38/64] Update TURKISH translations (#6982) --- localization/i18n/tr/OrcaSlicer_tr.po | 3538 ++++++++++++------------- 1 file changed, 1694 insertions(+), 1844 deletions(-) diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 0ba7257d46d..26754c6cd64 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -4,7 +4,7 @@ msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-09-25 19:57+0800\n" -"PO-Revision-Date: 2024-09-23 18:02+0300\n" +"PO-Revision-Date: 2024-10-01 22:31+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" "Language: tr\n" @@ -551,8 +551,8 @@ msgstr "Oranı azalt" #, 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 "" "1 milyondan fazla üçgen içeren '%1%' modelinin işlenmesi yavaş olabilir. " "Modelin basitleştirilmesi önemle tavsiye edilir." @@ -728,8 +728,8 @@ msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." msgstr "" -"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı " -"tipi seçmeyi deneyin." +"Metin seçilen yazı tipi kullanılarak yazılamıyor. Lütfen farklı bir yazı tipi " +"seçmeyi deneyin." msgid "Embossed text cannot contain only white spaces." msgstr "Kabartmalı metin yalnızca beyaz boşluklardan oluşamaz." @@ -1010,12 +1010,12 @@ msgstr "Metni kameraya doğru yönlendirin." #, boost-format msgid "" -"Can't load exactly same font(\"%1%\"). Application selected a similar " -"one(\"%2%\"). You have to specify font for enable edit text." +"Can't load exactly same font(\"%1%\"). Application selected a similar one(\"%2%" +"\"). You have to specify font for enable edit text." msgstr "" -"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir " -"uygulama seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini " -"belirtmeniz gerekir." +"Tam olarak aynı yazı tipi yüklenemiyor(\"%1%\"). Uygulama benzer bir uygulama " +"seçti(\"%2%\"). Metni düzenlemeyi etkinleştirmek için yazı tipini belirtmeniz " +"gerekir." msgid "No symbol" msgstr "Sembol yok" @@ -1131,8 +1131,7 @@ msgid "Path can't be healed from self-intersection and multiple points." msgstr "Yol kendi kendine kesişmeden ve birden fazla noktadan iyileştirilemez." msgid "" -"Final shape contains self-intersection or multiple points with same " -"coordinate." +"Final shape contains self-intersection or multiple points with same coordinate." msgstr "" "Son şekil, kendi kesişimini veya aynı koordinata sahip birden fazla noktayı " "içerir." @@ -1386,8 +1385,8 @@ msgid "" msgstr "\"%1%\" yapılandırma dosyası yüklendi ancak bazı değerler tanınamadı." 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 hafızasının yetersiz olması nedeniyle sonlandırılacak. Bir hata " "olabilir. Sorunu ekibimize bildirirseniz seviniriz." @@ -1467,8 +1466,8 @@ msgstr "Bilgi" msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" -"Please note, application settings will be lost, but printer profiles will " -"not be affected." +"Please note, application settings will be lost, but printer profiles will not " +"be affected." msgstr "" "OrcaSlicer konfigürasyon dosyası bozulmuş olabilir ve ayrıştırılamayabilir.\n" "OrcaSlicer, konfigürasyon dosyasını yeniden oluşturmayı denedi.\n" @@ -1488,8 +1487,7 @@ msgid "Choose one file (3mf):" msgstr "Dosya seçin (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "" -"Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "Bir veya daha fazla dosya seçin (3mf/step/stl/svg/obj/amf):" @@ -1504,8 +1502,8 @@ msgid "Some presets are modified." msgstr "Bazı ön ayarlar değiştirildi." msgid "" -"You can keep the modified presets to the new project, discard or save " -"changes as new presets." +"You can keep the modified presets to the new project, discard or save changes " +"as new presets." msgstr "" "Modifield ön ayarlarını yeni projede tutabilir, değişiklikleri atabilir veya " "yeni ön ayarlar olarak kaydedebilirsiniz." @@ -1514,8 +1512,7 @@ msgid "User logged out" msgstr "Kullanıcı oturumu kapattı" msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" +msgstr "dilimleme işlemi sırasında yeni veya açık proje dosyasına izin verilmez!" msgid "Open Project" msgstr "Projeyi Aç" @@ -1524,8 +1521,8 @@ msgid "" "The version of Orca Slicer is too low and needs to be updated to the latest " "version before it can be used normally" msgstr "" -"Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en " -"son sürüme güncellenmesi gerekiyor" +"Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en son " +"sürüme güncellenmesi gerekiyor" msgid "Privacy Policy Update" msgstr "Gizlilik Politikası Güncellemesi" @@ -1534,8 +1531,8 @@ msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " "newly created user presets can only be used locally." msgstr "" -"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; " -"yeni oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." +"Bulutta önbelleğe alınan kullanıcı ön ayarlarının sayısı üst sınırı aştı; yeni " +"oluşturulan kullanıcı ön ayarları yalnızca yerel olarak kullanılabilir." msgid "Sync user presets" msgstr "Kullanıcı ön ayarlarını senkronize edin" @@ -1738,10 +1735,10 @@ msgid "" "Yes - Change these settings automatically\n" "No - Do not change these settings for me" msgstr "" -"Bu modelin üst yüzeyinde metin kabartması bulunmaktadır. En iyi sonuçları " -"elde etmek amacıyla, 'Üst Yüzeylerde Yalnızca Bir Duvar'ın en iyi şekilde " -"çalışması için 'Tek Duvar Eşiği(min_width_top_surface)' seçeneğini 0'a " -"ayarlamanız önerilir.\n" +"Bu modelin üst yüzeyinde metin kabartması bulunmaktadır. En iyi sonuçları elde " +"etmek amacıyla, 'Üst Yüzeylerde Yalnızca Bir Duvar'ın en iyi şekilde çalışması " +"için 'Tek Duvar Eşiği(min_width_top_surface)' seçeneğini 0'a ayarlamanız " +"önerilir.\n" "Evet - Bu ayarları otomatik olarak değiştir\n" "Hayır - Bu ayarları benim için değiştirme" @@ -2068,8 +2065,7 @@ msgid "Switch to per-object setting mode to edit modifier settings." msgstr "Değiştirici ayarlarını düzenlemek için nesne başına ayar moduna geçin." msgid "" -"Switch to per-object setting mode to edit process settings of selected " -"objects." +"Switch to per-object setting mode to edit process settings of selected objects." msgstr "" "Seçilen nesnelerin işlem ayarlarını düzenlemek için nesne başına ayar moduna " "geçin." @@ -2094,8 +2090,8 @@ 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 information first." +"To manipulate with solid parts or negative volumes you have to invalidate cut " +"information first." msgstr "" "Bu eylem kesilmiş bir yazışmayı bozacaktır.\n" "Bundan sonra model tutarlılığı garanti edilemez.\n" @@ -2158,8 +2154,7 @@ msgstr "İlk seçilen öğe bir nesne ise ikincisi de nesne olmalıdır." msgid "" "If first selected item is a part, the second one should be part in the same " "object." -msgstr "" -"İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." +msgstr "İlk seçilen öğe bir parça ise ikincisi aynı nesnenin parçası olmalıdır." msgid "The type of the last solid object part is not to be changed." msgstr "Son katı nesne parçasının tipi değiştirilNozullidir." @@ -2516,16 +2511,13 @@ msgstr "" msgid "Arranging done." msgstr "Hizalama tamamlandı." -msgid "" -"Arrange failed. Found some exceptions when processing object geometries." +msgid "Arrange failed. Found some exceptions when processing object geometries." msgstr "" -"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar " -"bulundu." +"Hizalama başarısız oldu. Nesne geometrilerini işlerken bazı istisnalar bulundu." #, 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 "" "Hizalama tek plakaya sığmayan aşağıdaki nesneler göz ardı edildi:\n" @@ -2589,8 +2581,8 @@ msgstr "Görev iptal edildi." msgid "Upload task timed out. Please check the network status and try again." msgstr "" -"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve " -"tekrar deneyin." +"Yükleme görevi zaman aşımına uğradı. Lütfen ağ durumunu kontrol edin ve tekrar " +"deneyin." msgid "Cloud service connection failed. Please try again." msgstr "Bulut hizmeti bağlantısı başarısız oldu. Lütfen tekrar deneyin." @@ -2625,15 +2617,14 @@ msgstr "" "deneyin." msgid "Print file not found, Please slice it again and send it for printing." -msgstr "" -"Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." +msgstr "Yazdırma dosyası bulunamadı. Lütfen tekrar dilimleyip baskıya gönderin." msgid "" "Failed to upload print file to FTP. Please check the network status and try " "again." msgstr "" -"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve " -"tekrar deneyin." +"Yazdırma dosyası FTP'ye yüklenemedi. Lütfen ağ durumunu kontrol edin ve tekrar " +"deneyin." msgid "Sending print job over LAN" msgstr "Yazdırma işi LAN üzerinden gönderiliyor" @@ -2682,8 +2673,8 @@ msgid "Importing SLA archive" msgstr "SLA arşivi içe aktarılıyor" 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 "" "SLA arşivi herhangi bir ön ayar içermez. Lütfen SLA arşivini içe aktarmadan " "önce bazı SLA yazıcı ön ayarlarını etkinleştirin." @@ -2695,8 +2686,8 @@ msgid "Importing done." msgstr "İçe aktarma tamamlandı." 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 "" "İçe aktarılan SLA arşivi herhangi bir ön ayar içermiyordu. Geçerli SLA ön " "ayarları geri dönüş olarak kullanıldı." @@ -2753,8 +2744,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait " -"olan açık kaynaklı bileşenleri kullanır" +"Bu yazılım, telif hakkı ve diğer mülkiyet hakları ilgili sahiplerine ait olan " +"açık kaynaklı bileşenleri kullanır" #, c-format, boost-format msgid "About %s" @@ -2768,8 +2759,7 @@ msgstr "OrcaSlicer, BambuStudio, PrusaSlicer ve SuperSlicer'ı temel alır." msgid "BambuStudio is originally based on PrusaSlicer by PrusaResearch." msgstr "" -"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel " -"almaktadır." +"BambuStudio orijinal olarak PrusaResearch'ün PrusaSlicer'ını temel almaktadır." msgid "PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci." msgstr "" @@ -2848,8 +2838,7 @@ msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde)" #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" -msgstr "" -"Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" +msgstr "Lütfen geçerli bir değer girin (K %.1f~%.1f içinde, N %.1f~%.1f içinde)" msgid "Other Color" msgstr "Diğer renk" @@ -2861,9 +2850,9 @@ msgid "Dynamic flow calibration" msgstr "Dinamik akış kalibrasyonu" 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 "" "Nozul sıcaklığı ve maksimum hacimsel hız kalibrasyon sonuçlarını " "etkileyecektir. Lütfen gerçek yazdırmayla aynı değerleri girin. Bir filament " @@ -2900,8 +2889,8 @@ msgid "Next" msgstr "Sonraki" 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 " +"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 "" "Kalibrasyon tamamlandı. Lütfen sıcak yatağınızdaki en düzgün ekstrüzyon " @@ -2967,8 +2956,7 @@ msgstr "" "değiştirildiğinde. nemin emilmesi saatler alır, düşük sıcaklıklar da süreci " "yavaşlatır." -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 "" "Yazdırma işinde kullanılan filament için hangi AMS yuvasının kullanılması " "gerektiğini yapılandırma" @@ -2998,8 +2986,7 @@ msgid "" "When the current material run out, the printer will continue to print in the " "following order." msgstr "" -"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam " -"edecektir." +"Mevcut malzeme bittiğinde yazıcı aşağıdaki sırayla yazdırmaya devam edecektir." msgid "Group" msgstr "Grup" @@ -3007,8 +2994,7 @@ msgstr "Grup" msgid "The printer does not currently support auto refill." msgstr "Yazıcı şu anda otomatik yeniden doldurmayı desteklemiyor." -msgid "" -"AMS filament backup is not enabled, please enable it in the AMS settings." +msgid "AMS filament backup is not enabled, please enable it in the AMS settings." msgstr "" "AMS filament yedekleme özelliği etkin değil, lütfen AMS ayarlarından " "etkinleştirin." @@ -3037,8 +3023,8 @@ msgid "Insertion update" msgstr "Ekleme güncellemesi" 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 "" "AMS, yeni bir Bambu Lab filamenti takıldığında filament bilgilerini otomatik " "olarak okuyacaktır. Bu yaklaşık 20 saniye sürer." @@ -3061,17 +3047,16 @@ msgid "Power on update" msgstr "Güncellemeyi aç" 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 "" "AMS, başlangıçta takılan filamentin bilgilerini otomatik olarak okuyacaktır. " "Yaklaşık 1 dakika sürecektir. Okuma işlemi filament makaralarını saracaktır." 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 "" "AMS, başlatma sırasında takılan filamentden bilgileri otomatik olarak okumaz " "ve son kapatmadan önce kaydedilen bilgileri kullanmaya devam eder." @@ -3085,8 +3070,8 @@ msgid "" "automatically." msgstr "" "AMS, filament bilgisi güncellendikten sonra Bambu filamentin kalan " -"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik " -"olarak güncellenecektir." +"kapasitesini tahmin edecek. Yazdırma sırasında kalan kapasite otomatik olarak " +"güncellenecektir." msgid "AMS filament backup" msgstr "AMS filament yedeklemesi" @@ -3118,8 +3103,8 @@ msgid "" "Failed to download the plug-in. Please check your firewall settings and vpn " "software, check and retry." msgstr "" -"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn " -"yazılımınızı kontrol edin, kontrol edip yeniden deneyin." +"Eklenti indirilemedi. Lütfen güvenlik duvarı ayarlarınızı ve vpn yazılımınızı " +"kontrol edin, kontrol edip yeniden deneyin." msgid "" "Failed to install the plug-in. Please check whether it is blocked or deleted " @@ -3192,8 +3177,8 @@ msgstr "G kodu dışa aktarılırken bilinmeyen bir hata oluştu." #, boost-format msgid "" -"Copying of the temporary G-code to the output G-code failed. Maybe the SD " -"card is write locked?\n" +"Copying of the temporary G-code to the output G-code failed. Maybe the SD card " +"is write locked?\n" "Error message: %1%" msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Belki SD kart " @@ -3207,8 +3192,8 @@ msgid "" "device. The corrupted output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun çıkış G koduna kopyalanması başarısız oldu. Hedef cihazda " -"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz " -"kullanmayı deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." +"sorun olabilir, lütfen tekrar dışa aktarmayı veya farklı bir cihaz kullanmayı " +"deneyin. Bozuk çıktı G kodu %1%.tmp konumunda." #, boost-format msgid "" @@ -3228,8 +3213,8 @@ msgstr "" #, boost-format msgid "" -"Copying of the temporary G-code has finished but the exported code couldn't " -"be opened during copy check. The output G-code is at %1%.tmp." +"Copying of the temporary G-code has finished but the exported code couldn't be " +"opened during copy check. The output G-code is at %1%.tmp." msgstr "" "Geçici G kodunun kopyalanması tamamlandı ancak kopya kontrolü sırasında dışa " "aktarılan kod açılamadı. Çıkış G kodu %1%.tmp konumundadır." @@ -3310,8 +3295,7 @@ msgstr "Cihaz Durumu" msgid "Actions" msgstr "İşlemler" -msgid "" -"Please select the devices you would like to manage here (up to 6 devices)" +msgid "Please select the devices you would like to manage here (up to 6 devices)" msgstr "Lütfen buradan yönetmek istediğiniz cihazları seçin (en fazla 6 cihaz)" msgid "Add" @@ -3441,8 +3425,8 @@ msgid "Send to" msgstr "Gönderildi" msgid "" -"printers at the same time.(It depends on how many devices can undergo " -"heating at the same time.)" +"printers at the same time.(It depends on how many devices can undergo heating " +"at the same time.)" msgstr "" "aynı anda kaç yazıcının ısıtma işleminden geçebileceği, aynı anda " "ısıtılabilecek cihaz sayısına bağlıdır." @@ -3532,8 +3516,7 @@ msgstr "Hata! Geçersiz model" msgid "The selected file contains no geometry." msgstr "Seçilen dosya geometri içermiyor." -msgid "" -"The selected file contains several disjoint areas. This is not supported." +msgid "The selected file contains several disjoint areas. This is not supported." msgstr "Seçilen dosya birkaç ayrık alan içeriyor. Bu desteklenmiyor." msgid "Choose a file to import bed texture from (PNG/SVG):" @@ -3546,11 +3529,11 @@ msgid "Bed Shape" msgstr "Yatak Şekli" msgid "" -"The recommended minimum temperature is less than 190 degree or the " -"recommended maximum temperature is greater than 300 degree.\n" +"The recommended minimum temperature is less than 190 degree or the recommended " +"maximum temperature is greater than 300 degree.\n" msgstr "" -"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum " -"sıcaklık 300 dereceden yüksektir.\n" +"Önerilen minimum sıcaklık 190 dereceden azdır veya önerilen maksimum sıcaklık " +"300 dereceden yüksektir.\n" msgid "" "The recommended minimum temperature cannot be higher than the recommended " @@ -3575,8 +3558,7 @@ msgid "" "Recommended nozzle temperature of this filament type is [%d, %d] degree " "centigrade" msgstr "" -"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece " -"santigrattır" +"Bu filament tipinin tavsiye edilen Nozul sıcaklığı [%d, %d] derece santigrattır" msgid "" "Too small max volumetric speed.\n" @@ -3587,13 +3569,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Current chamber temperature is higher than the material's safe temperature," -"it may result in material softening and clogging.The maximum safe " -"temperature for the material is %d" +"Current chamber temperature is higher than the material's safe temperature,it " +"may result in material softening and clogging.The maximum safe temperature for " +"the material is %d" msgstr "" -"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, " -"malzemenin yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum " -"güvenli sıcaklık %d'dir" +"Mevcut hazne sıcaklığı malzemenin güvenli sıcaklığından yüksektir, malzemenin " +"yumuşamasına ve tıkanmasına neden olabilir Malzeme için maksimum güvenli " +"sıcaklık %d'dir" msgid "" "Too small layer height.\n" @@ -3647,16 +3629,16 @@ msgstr "" "Değer 0'a sıfırlanacaktır." msgid "" -"Alternate extra wall does't work well when ensure vertical shell thickness " -"is set to All. " +"Alternate extra wall does't work well when ensure vertical shell thickness is " +"set to All. " msgstr "" -"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak " -"ayarlandığından emin olunduğunda iyi çalışmaz. " +"Alternatif ekstra duvar, dikey kabuk kalınlığının Tümü olarak ayarlandığından " +"emin olunduğunda iyi çalışmaz. " msgid "" "Change these settings automatically? \n" -"Yes - Change ensure vertical shell thickness to Moderate and enable " -"alternate extra wall\n" +"Yes - Change ensure vertical shell thickness to Moderate and enable alternate " +"extra wall\n" "No - Don't use alternate extra wall" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi? \n" @@ -3717,8 +3699,7 @@ msgstr "" "olduğunda ve timelapse türü geleneksel olduğunda çalışır." msgid " But machines with I3 structure will not generate timelapse videos." -msgstr "" -" Ancak I3 yapısına sahip yazıcılar timelapse videolar oluşturmayacaktır." +msgstr " Ancak I3 yapısına sahip yazıcılar timelapse videolar oluşturmayacaktır." msgid "" "Change these settings automatically? \n" @@ -3726,8 +3707,7 @@ msgid "" "No - Give up using spiral mode this time" msgstr "" "Bu ayarlar otomatik olarak değiştirilsin mi?\n" -"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak " -"etkinleştirin\n" +"Evet - Bu ayarları değiştirin ve spiral modunu otomatik olarak etkinleştirin\n" "Hayır - Bu sefer spiral modunu kullanmaktan vazgeçin" msgid "Auto bed leveling" @@ -3860,9 +3840,9 @@ msgid "Update failed." msgstr "Güncelleme başarısız." msgid "" -"The current chamber temperature or the target chamber temperature exceeds " -"45℃.In order to avoid extruder clogging,low temperature filament(PLA/PETG/" -"TPU) is not allowed to be loaded." +"The current chamber temperature or the target chamber temperature exceeds 45℃." +"In order to avoid extruder clogging,low temperature filament(PLA/PETG/TPU) is " +"not allowed to be loaded." msgstr "" "Mevcut hazne sıcaklığı veya hedef hazne sıcaklığı 45 ° C'yi aşıyor Ekstruder " "tıkanmasını önlemek için düşük sıcaklıkta filament (PLA / PETG / TPU) " @@ -3870,8 +3850,8 @@ msgstr "" msgid "" "Low temperature filament(PLA/PETG/TPU) is loaded in the extruder.In order to " -"avoid extruder clogging,it is not allowed to set the chamber temperature " -"above 45℃." +"avoid extruder clogging,it is not allowed to set the chamber temperature above " +"45℃." msgstr "" "Ekstrudere düşük sıcaklıkta filament (PLA / PETG / TPU) yüklendi. Ekstruder " "tıkanmasını önlemek için hazne sıcaklığının 45 ° C'nin üzerine ayarlanmasına " @@ -3889,8 +3869,7 @@ msgstr "" msgid "Failed to start printing job" msgstr "Yazdırma işi başlatılamadı" -msgid "" -"This calibration does not support the currently selected nozzle diameter" +msgid "This calibration does not support the currently selected nozzle diameter" msgstr "Bu kalibrasyon, şu anda seçilen nozzle çapını desteklememektedir" msgid "Current flowrate cali param is invalid" @@ -3912,15 +3891,15 @@ msgid "Bambu PET-CF/PA6-CF is not supported by AMS." msgstr "Bambu PET-CF/PA6-CF, AMS tarafından desteklenNozulktedir." msgid "" -"Damp PVA will become flexible and get stuck inside AMS,please take care to " -"dry it before use." +"Damp PVA will become flexible and get stuck inside AMS,please take care to dry " +"it before use." msgstr "" -"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan " -"önce kurutmaya dikkat edin." +"Nemli PVA esnekleşecek ve AMS'nin içine sıkışacaktır, lütfen kullanmadan önce " +"kurutmaya dikkat edin." msgid "" -"CF/GF filaments are hard and brittle, It's easy to break or get stuck in " -"AMS, please use with caution." +"CF/GF filaments are hard and brittle, It's easy to break or get stuck in AMS, " +"please use with caution." msgstr "" "CF/GF filamentleri sert ve kırılgandır. AMS'de kırılması veya sıkışması " "kolaydır, lütfen dikkatli kullanın." @@ -4959,8 +4938,8 @@ msgstr[1] "" msgid "" "\n" -"Hint: Make sure you have added the corresponding printer before importing " -"the configs." +"Hint: Make sure you have added the corresponding printer before importing the " +"configs." msgstr "" "\n" "İpucu: Yapılandırmaları içe aktarmadan önce ilgili yazıcıyı eklediğinizden " @@ -5009,10 +4988,8 @@ msgid "Please confirm if the printer is connected." msgstr "Lütfen yazıcının bağlı olup olmadığını onaylayın." msgid "" -"The printer is currently busy downloading. Please try again after it " -"finishes." -msgstr "" -"Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." +"The printer is currently busy downloading. Please try again after it finishes." +msgstr "Yazıcı şu anda indirmeyle meşgul. Lütfen bittikten sonra tekrar deneyin." msgid "Printer camera is malfunctioning." msgstr "Yazıcı kamerası arızalı." @@ -5021,8 +4998,7 @@ msgid "Problem occurred. Please update the printer firmware and try again." msgstr "" "Sorun oluştu. Lütfen yazıcının ürün yazılımını güncelleyin ve tekrar deneyin." -msgid "" -"LAN Only Liveview is off. Please turn on the liveview on printer screen." +msgid "LAN Only Liveview is off. Please turn on the liveview on printer screen." msgstr "" "Yalnızca LAN Canlı İzleme kapalı. Lütfen yazıcı ekranındaki canlı " "görüntülemeyi açın." @@ -5037,8 +5013,8 @@ msgid "Connection Failed. Please check the network and try again" msgstr "Bağlantı Başarısız. Lütfen ağı kontrol edip tekrar deneyin" msgid "" -"Please check the network and try again, You can restart or update the " -"printer if the issue persists." +"Please check the network and try again, You can restart or update the printer " +"if the issue persists." msgstr "" "Lütfen ağı kontrol edip tekrar deneyin. Sorun devam ederse yazıcıyı yeniden " "başlatabilir veya güncelleyebilirsiniz." @@ -5181,8 +5157,7 @@ msgid_plural "" "You are going to delete %u files from printer. Are you sure to continue?" msgstr[0] "" "%u dosyasını yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" -msgstr[1] "" -"%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" +msgstr[1] "%u dosyayı yazıcıdan sileceksiniz. Devam edeceğinizden emin misiniz?" msgid "Delete files" msgstr "Dosyaları sil" @@ -5207,8 +5182,8 @@ msgid "" "The .gcode.3mf file contains no G-code data.Please slice it with Orca Slicer " "and export a new .gcode.3mf file." msgstr "" -".gcode.3mf dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu " -"Studio ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." +".gcode.3mf dosyası hiçbir G kodu verisi içermiyor. Lütfen dosyayı Bambu Studio " +"ile dilimleyin ve yeni bir .gcode.3mf dosyasını dışa aktarın." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -5242,8 +5217,8 @@ msgid "" "Reconnecting the printer, the operation cannot be completed immediately, " "please try again later." msgstr "" -"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha " -"sonra tekrar deneyin." +"Yazıcıyı yeniden bağladığınızda işlem hemen tamamlanamıyor, lütfen daha sonra " +"tekrar deneyin." msgid "File does not exist." msgstr "Dosya bulunmuyor." @@ -5326,8 +5301,8 @@ msgid "" "(The model has already been rated. Your rating will overwrite the previous " "rating.)" msgstr "" -"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki " -"derecelendirmenin üzerine yazılacaktır)" +"(Model zaten derecelendirilmiştir. Derecelendirmeniz önceki derecelendirmenin " +"üzerine yazılacaktır)" msgid "Rate" msgstr "Derecelendir" @@ -5405,8 +5380,8 @@ msgid "" "Please heat the nozzle to above 170 degree before loading or unloading " "filament." msgstr "" -"Filamenti yüklemeden veya boşaltmadan önce lütfen nozulu 170 derecenin " -"üzerine ısıtın." +"Filamenti yüklemeden veya boşaltmadan önce lütfen nozulu 170 derecenin üzerine " +"ısıtın." msgid "Still unload" msgstr "Daha Fazla Boşalt" @@ -5744,8 +5719,7 @@ msgid "Range" msgstr "Aralık" msgid "" -"The application cannot run normally because OpenGL version is lower than " -"2.0.\n" +"The application cannot run normally because OpenGL version is lower than 2.0.\n" msgstr "" "OpenGL sürümü 2.0'dan düşük olduğundan uygulama normal şekilde çalışamıyor.\n" @@ -5784,11 +5758,11 @@ msgid "Enable detection of build plate position" msgstr "Yapı plakası konumunun algılanmasını etkinleştir" msgid "" -"The localization tag of build plate is detected, and printing is paused if " -"the tag is not in predefined range." +"The localization tag of build plate is detected, and printing is paused if the " +"tag is not in predefined range." msgstr "" -"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden " -"tanımlanmış aralıkta değilse yazdırma duraklatılır." +"Baskı plakasının yerelleştirme etiketi algılanır ve etiket önceden tanımlanmış " +"aralıkta değilse yazdırma duraklatılır." msgid "First Layer Inspection" msgstr "Birinci Katman Denetimi" @@ -5860,7 +5834,7 @@ msgid "Edit current plate name" msgstr "Mevcut plaka adını düzenle" msgid "Move plate to the front" -msgstr "" +msgstr "Plakayı öne doğru hareket ettirin" msgid "Customize current plate" msgstr "Mevcut plakayı özelleştir" @@ -5926,8 +5900,8 @@ msgstr "Peletler" msgid "" "No AMS filaments. Please select a printer in 'Device' page to load AMS info." msgstr "" -"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' " -"sayfasında bir yazıcı seçin." +"AMS filamentleri yok. AMS bilgilerini yüklemek için lütfen 'Cihaz' sayfasında " +"bir yazıcı seçin." msgid "Sync filaments with AMS" msgstr "Filamentleri AMS ile senkronize et" @@ -5940,11 +5914,10 @@ msgstr "" "ayarlarını ve renklerini kaldıracaktır. Devam etmek istiyor musun?" msgid "" -"Already did a synchronization, do you want to sync only changes or resync " -"all?" +"Already did a synchronization, do you want to sync only changes or resync all?" msgstr "" -"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek " -"mi yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" +"Zaten bir senkronizasyon yaptınız. Yalnızca değişiklikleri senkronize etmek mi " +"yoksa tümünü yeniden senkronize etmek mi istiyorsunuz?" msgid "Sync" msgstr "Senkronizasyon" @@ -5956,13 +5929,12 @@ msgid "There are no compatible filaments, and sync is not performed." msgstr "Uyumlu filament yok ve senkronizasyon gerçekleştirilmiyor." 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 "" -"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön " -"ayarlarında bir güncelleme olup olmadığını kontrol etmek için lütfen Orca " -"Slicer'ı güncelleyin veya Orca Slicer'ı yeniden başlatın." +"Genel ön ayara eşlenen bazı bilinmeyen filamentler var. Sistem ön ayarlarında " +"bir güncelleme olup olmadığını kontrol etmek için lütfen Orca Slicer'ı " +"güncelleyin veya Orca Slicer'ı yeniden başlatın." #, boost-format msgid "Do you want to save changes to \"%1%\"?" @@ -5987,26 +5959,26 @@ msgid "Restore" msgstr "Geri Yükleme" msgid "" -"The current hot bed temperature is relatively high. The nozzle may be " -"clogged when printing this filament in a closed enclosure. Please open the " -"front door and/or remove the upper glass." +"The current hot bed temperature is relatively high. The nozzle may be clogged " +"when printing this filament in a closed enclosure. Please open the front door " +"and/or remove the upper glass." msgstr "" -"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir " -"muhafaza içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/" -"veya üst camı çıkarın." +"Mevcut sıcak yatak sıcaklığı oldukça yüksek. Bu filamenti kapalı bir muhafaza " +"içinde bastırırken nozzle tıkanabilir. Lütfen ön kapağı açın ve/veya üst camı " +"çıkarı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." +"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 "" "Filamentin gerektirdiği nozul sertliği, yazıcının varsayılan nozul " "sertliğinden daha yüksektir. Lütfen sertleşmiş nozulu veya filamenti " "değiştirin, aksi takdirde nozul aşınır veya hasar görür." msgid "" -"Enabling traditional timelapse photography may cause surface imperfections. " -"It is recommended to change to smooth mode." +"Enabling traditional timelapse photography may cause surface imperfections. It " +"is recommended to change to smooth mode." msgstr "" "Geleneksel timelapse etkinleştirilmesi yüzey kusurlarına neden olabilir. " "Yumuşak moda geçilmesi önerilir." @@ -6023,8 +5995,7 @@ msgstr "Dosya yükleniyor: %s" msgid "The 3mf is not supported by OrcaSlicer, load geometry data only." msgstr "" -"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini " -"yükle." +"OrcaSlicer, 3mf formatını desteklememektedir. Sadece geometri verilerini yükle." msgid "Load 3mf" msgstr "3mf yükle" @@ -6056,8 +6027,8 @@ msgstr "Lütfen bunları parametre sekmelerinde düzeltin" msgid "The 3mf has following modified G-codes in filament or printer presets:" msgstr "" -"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-" -"kodları bulunmaktadır:" +"3mf dosyasında filament veya yazıcı ön ayarlarında şu değiştirilmiş G-kodları " +"bulunmaktadır:" msgid "" "Please confirm that these modified G-codes are safe to prevent any damage to " @@ -6287,15 +6258,15 @@ msgstr "İndirme başarısız oldu, Dosya boyutu sorunlu." #, c-format, boost-format msgid "Project downloaded %d%%" msgstr "" -"Proje %d%% indirildiBambu Studio’ya içe aktarma başarısız oldu. Lütfen " -"dosyayı indirin ve manuel olarak içe aktarın." +"Proje %d%% indirildiBambu Studio’ya içe aktarma başarısız oldu. Lütfen dosyayı " +"indirin ve manuel olarak içe aktarın." msgid "" -"Importing to Orca Slicer failed. Please download the file and manually " -"import it." +"Importing to Orca Slicer failed. Please download the file and manually import " +"it." msgstr "" -"Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel " -"olarak İçe aktarın." +"Orca Slicer'ya aktarma başarısız oldu. Lütfen dosyayı indirin ve manuel olarak " +"İçe aktarın." msgid "Import SLA archive" msgstr "SLA arşivini içe aktar" @@ -6354,8 +6325,8 @@ msgstr "Tüm nesneler kaldırılacak, devam edilsin mi?" msgid "The current project has unsaved changes, save it before continue?" msgstr "" -"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce " -"kaydedilsin mi?" +"Mevcut projede kaydedilmemiş değişiklikler var. Devam etmeden önce kaydedilsin " +"mi?" msgid "Number of copies:" msgstr "Kopya sayısı:" @@ -6380,15 +6351,15 @@ msgstr "Dilimlenmiş dosyayı şu şekilde kaydedin:" #, 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 "" "%s dosyası yazıcının depolama alanına gönderildi ve yazıcıda " "görüntülenebiliyor." msgid "" -"Unable to perform boolean operation on model meshes. Only positive parts " -"will be kept. You may fix the meshes and try again." +"Unable to perform boolean operation on model meshes. Only positive parts will " +"be kept. You may fix the meshes and try again." msgstr "" "Model ağlarında boole işlemi gerçekleştirilemiyor. Yalnızca olumlu kısımlar " "tutulacaktır. Kafesleri düzeltip tekrar deneyebilirsiniz." @@ -6432,8 +6403,8 @@ msgid "" "Suggest to use auto-arrange to avoid collisions when printing." msgstr "" "Nesneye Göre Yazdır:\n" -"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi " -"kullanmanızı önerin." +"Yazdırma sırasında çarpışmaları önlemek için otomatik düzenlemeyi kullanmanızı " +"önerin." msgid "Send G-code" msgstr "G-kodu gönder" @@ -6493,8 +6464,8 @@ msgid "Tips:" msgstr "İpuçları:" 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 "" "\"Modeli Onar\" özelliği şu anda yalnızca Windows'ta bulunmaktadır. Lütfen " "modeli Orca Slicer (windows) veya CAD yazılımlarında onarın." @@ -6502,8 +6473,8 @@ msgstr "" #, 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." +"still want to do this printing, please set this filament's bed temperature to " +"non zero." msgstr "" "Plaka% d: %s'nin %s(%s) filamentinı yazdırmak için kullanılması önerilmez. " "Eğer yine de bu baskıyı yapmak istiyorsanız, lütfen bu filamentin yatak " @@ -6579,8 +6550,8 @@ msgid "Stealth Mode" msgstr "Gizli mod" msgid "" -"This stops the transmission of data to Bambu's cloud services. Users who " -"don't use BBL machines or use LAN mode only can safely turn on this function." +"This stops the transmission of data to Bambu's cloud services. Users who don't " +"use BBL machines or use LAN mode only can safely turn on this function." msgstr "" "Bu, Bambu’nun bulut hizmetlerine veri aktarımını durdurur. BBL makinelerini " "kullanmayan veya yalnızca LAN modunu kullanan kullanıcılar bu işlevi güvenle " @@ -6605,9 +6576,9 @@ msgid "Allow only one OrcaSlicer instance" msgstr "Yalnızca bir OrcaSlicer örneğine izin ver" msgid "" -"On OSX there is always only one instance of app running by default. However " -"it is allowed to run multiple instances of same app from the command line. " -"In such case this settings will allow only one instance." +"On OSX there is always only one instance of app running by default. However it " +"is allowed to run multiple instances of same app from the command line. In " +"such case this settings will allow only one instance." msgstr "" "OSX’te her zaman varsayılan olarak çalışan tek bir uygulama örneği vardır. " "Ancak aynı uygulamanın birden fazla örneğinin komut satırından " @@ -6615,9 +6586,8 @@ msgstr "" "örneğe izin verecektir." msgid "" -"If this is enabled, when starting OrcaSlicer and another instance of the " -"same OrcaSlicer is already running, that instance will be reactivated " -"instead." +"If this is enabled, when starting OrcaSlicer and another instance of the same " +"OrcaSlicer is already running, that instance will be reactivated instead." msgstr "" "Bu etkinleştirilirse, OrcaSlicer başlatıldığında ve aynı OrcaSlicer’ın başka " "bir örneği zaten çalışıyorken, bunun yerine bu örnek yeniden " @@ -6690,8 +6660,7 @@ msgstr "Hacimleri temizleme: Renk her değiştiğinde otomatik olarak hesapla." msgid "If enabled, auto-calculate every time the color changed." msgstr "Etkinleştirilirse, renk her değiştiğinde otomatik hesapla." -msgid "" -"Flushing volumes: Auto-calculate every time when the filament is changed." +msgid "Flushing volumes: Auto-calculate every time when the filament is changed." msgstr "" "Yıkama hacimleri: Filament her değiştirildiğinde otomatik olarak hesaplanır." @@ -6709,12 +6678,11 @@ msgstr "" "hatırlayacak ve otomatik olarak değiştirecektir." msgid "Multi-device Management(Take effect after restarting Orca)." -msgstr "" -"Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." +msgstr "Çoklu Cihaz Yönetimi(Studio yeniden başlatıldıktan sonra geçerli olur)." msgid "" -"With this option enabled, you can send a task to multiple devices at the " -"same time and manage multiple devices." +"With this option enabled, you can send a task to multiple devices at the same " +"time and manage multiple devices." msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza bir görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." @@ -6759,8 +6727,8 @@ msgstr ".stl dosyalarını OrcaSlicer ile ilişkilendirin" msgid "If enabled, sets OrcaSlicer as default application to open .stl files" msgstr "" -"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan " -"uygulama olarak ayarlar" +"Etkinleştirilirse OrcaSlicer'ı .stl dosyalarını açmak için varsayılan uygulama " +"olarak ayarlar" msgid "Associate .step/.stp files to OrcaSlicer" msgstr ".step/.stp dosyalarını OrcaSlicer ile ilişkilendirin" @@ -6791,11 +6759,10 @@ msgstr "Değiştirilmiş G-kodları içeren 3MF dosyalarını yüklerken uyarı msgid "Auto-Backup" msgstr "Otomatik yedekleme" -msgid "" -"Backup your project periodically for restoring from the occasional crash." +msgid "Backup your project periodically for restoring from the occasional crash." msgstr "" -"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi " -"düzenli aralıklarla yedekleyin." +"Ara sıra meydana gelen çökmelerden sonra geri yüklemek için projenizi düzenli " +"aralıklarla yedekleyin." msgid "every" msgstr "her" @@ -7152,8 +7119,7 @@ msgid "Error code" msgstr "Hata kodu" msgid "No login account, only printers in LAN mode are displayed" -msgstr "" -"Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" +msgstr "Oturum açma hesabı yok, yalnızca LAN modundaki yazıcılar görüntüleniyor" msgid "Connecting to server" msgstr "Sunucuya baglanıyor" @@ -7181,8 +7147,8 @@ msgid "" "Filament %s exceeds the number of AMS slots. Please update the printer " "firmware to support AMS slot assignment." msgstr "" -"%s filamenti AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek " -"için lütfen yazıcının ürün yazılımını güncelleyin." +"%s filamenti AMS yuvası sayısını aşıyor. AMS yuvası atamasını desteklemek için " +"lütfen yazıcının ürün yazılımını güncelleyin." msgid "" "Filament exceeds the number of AMS slots. Please update the printer firmware " @@ -7221,8 +7187,7 @@ msgstr "" "desteklemek için lütfen yazıcının ürün yazılımını güncelleyin." msgid "" -"The printer firmware only supports sequential mapping of filament => AMS " -"slot." +"The printer firmware only supports sequential mapping of filament => AMS slot." msgstr "" "Yazıcı ürün yazılımı yalnızca filament => AMS yuvasının sıralı eşlemesini " "destekler." @@ -7283,8 +7248,8 @@ msgstr "" 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." +"they are the required filaments. If they are okay, press \"Confirm\" to start " +"printing." msgstr "" "AMS eşlemelerinde bazı bilinmeyen filamentler var. Lütfen bunların gerekli " "filamentler olup olmadığını kontrol edin. Sorun yoksa, yazdırmayı başlatmak " @@ -7309,15 +7274,13 @@ msgstr "" #, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" +"Printing high temperature material(%s material) with %s may cause nozzle damage" msgstr "" "Yüksek sıcaklıktaki malzemeyi (%s malzeme) %s ile yazdırmak püskürtme ucu " "hasarına neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." -msgstr "" -"Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." +msgstr "Lütfen yukarıdaki hatayı düzeltin, aksi takdirde yazdırma devam edemez." msgid "" "Please click the confirm button if you still want to proceed with printing." @@ -7435,16 +7398,16 @@ msgstr "Şartlar ve koşullar" msgid "" "Thank you for purchasing a Bambu Lab device.Before using your Bambu Lab " -"device, please read the terms and conditions.By clicking to agree to use " -"your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " +"device, please read the terms and conditions.By clicking to agree to use your " +"Bambu Lab device, you agree to abide by the Privacy Policy and Terms of " "Use(collectively, the \"Terms\"). If you do not comply with or agree to the " "Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services." msgstr "" -"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab " -"cihazınızı kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab " -"cihazınızı kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve " -"Kullanım Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul " -"etmiş olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " +"Bir Bambu Lab cihazı satın aldığınız için teşekkür ederiz.Bambu Lab cihazınızı " +"kullanmadan önce lütfen şartlar ve koşulları okuyun.Bambu Lab cihazınızı " +"kullanmayı kabul etmek için tıklayarak, Gizlilik Politikasına ve Kullanım " +"Koşullarına (topluca \"Şartlar\" olarak anılacaktır) uymayı kabul etmiş " +"olursunuz. \"). Bambu Lab Gizlilik Politikasına uymuyorsanız veya bu " "Politikayı kabul etmiyorsanız lütfen Bambu Lab ekipmanlarını ve hizmetlerini " "kullanmayın." @@ -7468,11 +7431,11 @@ msgid "" "successes and failures of the vast number of prints by our users. We are " "training %s 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 Privacy Policy. We will " -"not collect any Personal Data by which an individual can be identified " -"directly or indirectly, including without limitation names, addresses, " -"payment information, or phone numbers. By enabling this service, you agree " -"to these terms and the statement about Privacy Policy." +"logs, which may include information described in Privacy Policy. We will not " +"collect any Personal Data by which an individual can be identified directly or " +"indirectly, including without limitation names, addresses, payment " +"information, or phone numbers. By enabling this service, you agree to these " +"terms and the statement about Privacy Policy." msgstr "" "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı " "düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. " @@ -7523,20 +7486,19 @@ msgid "Click to reset all settings to the last saved preset." msgstr "Tüm ayarları en son kaydedilen ön ayara sıfırlamak için tıklayın." msgid "" -"Prime tower is required for smooth timelapse. 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 timelapse. There may be flaws on the model " +"without prime tower. Are you sure you want to disable prime tower?" msgstr "" "Sorunsuz timeplace için Prime Tower gereklidir. Prime tower olmayan modelde " "kusurlar olabilir. Prime tower'ı devre dışı bırakmak istediğinizden emin " "misiniz?" 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 "" -"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower " -"olmayan modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor " -"musunuz?" +"Sorunsuz hızlandırılmış çekim için Prime Tower gereklidir. Prime tower olmayan " +"modelde kusurlar olabilir. Prime tower'ı etkinleştirmek istiyor musunuz?" msgid "Still print by object?" msgstr "Hala nesneye göre yazdırıyor musunuz?" @@ -7561,12 +7523,12 @@ msgstr "" 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." +"settings: at least 2 interface layers, at least 0.1mm top z distance or using " +"support materials on interface." msgstr "" -"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en " -"az 2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek " -"malzemeleri kullanılması." +"\"Güçlü Ağaç\" ve \"Ağaç Hibrit\" stilleri için şu ayarları öneriyoruz: en az " +"2 arayüz katmanı, en az 0,1 mm üst z mesafesi veya arayüzde destek malzemeleri " +"kullanılması." msgid "" "When using support material for the support interface, We recommend the " @@ -7584,8 +7546,8 @@ msgid "" "precise dimensions or is part of an assembly, it's important to double-check " "whether this change in geometry impacts the functionality of your print." msgstr "" -"Bu seçeneğin etkinleştirilmesi modelin şeklini değiştirecektir. Baskınız " -"kesin boyutlar gerektiriyorsa veya bir montajın parçasıysa geometrideki bu " +"Bu seçeneğin etkinleştirilmesi modelin şeklini değiştirecektir. Baskınız kesin " +"boyutlar gerektiriyorsa veya bir montajın parçasıysa geometrideki bu " "değişikliğin baskınızın işlevselliğini etkileyip etkilemediğini bir kez daha " "kontrol etmeniz önemlidir." @@ -7600,12 +7562,11 @@ msgstr "" "min_layer_height olarak ayarlanacak\n" msgid "" -"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " -"height limits ,this may cause printing quality issues." +"Layer height exceeds the limit in Printer Settings -> Extruder -> Layer height " +"limits ,this may cause printing quality issues." msgstr "" -"Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği " -"sınırları bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına " -"neden olabilir." +"Katman yüksekliği, Yazıcı Ayarları -> Ekstruder -> Katman yüksekliği sınırları " +"bölümündeki sınırı aşıyor bu durum baskı kalitesi sorunlarına neden olabilir." msgid "Adjust to the set range automatically? \n" msgstr "Ayarlanan aralığa otomatik olarak ayarlansın mı? \n" @@ -7619,8 +7580,8 @@ msgstr "Atla" msgid "" "Experimental feature: Retracting and cutting off the filament at a greater " "distance during filament changes to minimize flush.Although it can notably " -"reduce flush, it may also elevate the risk of nozzle clogs or other " -"printing complications." +"reduce flush, it may also elevate the risk of nozzle clogs or other printing " +"complications." msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, floşu en aza indirmek " "için filamanı daha büyük bir mesafeden geri çekmek ve kesmek. Flush’u önemli " @@ -7635,15 +7596,15 @@ msgid "" msgstr "" "Deneysel özellik: Filament değişiklikleri sırasında, filamanın en aza " "indirilmesi için filamanın daha büyük bir mesafeden geri çekilmesi ve " -"kesilmesi. Akmayı önemli ölçüde azaltabilmesine rağmen, aynı zamanda " -"püskürtme uçları tıkanması veya diğer yazdırma komplikasyonları riskini de " -"artırabilir. Lütfen en son yazıcı ürün yazılımını kullanın." +"kesilmesi. Akmayı önemli ölçüde azaltabilmesine rağmen, aynı zamanda püskürtme " +"uçları tıkanması veya diğer yazdırma komplikasyonları riskini de artırabilir. " +"Lütfen en son yazıcı ürün yazılımını kullanın." 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 "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -7687,13 +7648,13 @@ msgid "Overhang speed" msgstr "Çıkıntı Hızı" 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 "" "Bu, çeşitli sarkma dereceleri için hızdır. Çıkıntı dereceleri çizgi " -"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı " -"için yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" +"genişliğinin yüzdesi olarak ifade edilir. 0 hız, sarkma derecesi aralığı için " +"yavaşlamanın olmadığı anlamına gelir ve duvar hızı kullanılır" msgid "Bridge" msgstr "Köprü" @@ -7805,18 +7766,18 @@ msgid "Cool plate" msgstr "Soğuk plaka" 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 "" -"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool " -"Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"Soğutma plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin Cool Plate " +"üzerine yazdırmayı desteklemediği anlamına gelir" msgid "Textured Cool plate" msgstr "Dokulu Soğuk Plaka" msgid "" -"Bed temperature when cool plate is installed. Value 0 means the filament " -"does not support to print on the Textured Cool Plate" +"Bed temperature when cool plate is installed. Value 0 means the filament does " +"not support to print on the Textured Cool Plate" msgstr "" "Soğuk plaka takıldığında yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk " "Plaka üzerine yazdırmayı desteklemediği anlamına gelir." @@ -7869,15 +7830,15 @@ msgid "Min fan speed threshold" msgstr "Minimum fan hızı" 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 "" "Tahmini katman süresi ayardaki katman süresinden uzun olmadığında parça " -"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi " -"eşikten kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve " -"maksimum fan hızı arasında enterpole edilir" +"soğutma fanı hızı minimum hızda çalışmaya başlayacaktır. Katman süresi eşikten " +"kısa olduğunda fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " +"hızı arasında enterpole edilir" msgid "Max fan speed threshold" msgstr "Maksimum fan hızı" @@ -7890,7 +7851,7 @@ msgstr "" "maksimum olacaktır" msgid "Auxiliary part cooling fan" -msgstr "Yardımcı Parça Soğutma Fanı" +msgstr "Yardımcı parça soğutma fanı" msgid "Exhaust fan" msgstr "Egzos Fanı" @@ -8002,13 +7963,13 @@ msgstr "Yazıcının ekstruder sayısı." msgid "" "Single Extruder Multi Material is selected, \n" "and all extruders must have the same diameter.\n" -"Do you want to change the diameter for all extruders to first extruder " -"nozzle diameter value?" +"Do you want to change the diameter for all extruders to first extruder nozzle " +"diameter value?" msgstr "" "Tek Ekstruder Çoklu Malzeme seçilir, \n" "ve tüm ekstrüderlerin aynı çapa sahip olması gerekir.\n" -"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek " -"ister misiniz?" +"Tüm ekstruderlerin çapını ilk ekstruder bozul çapı değerine değiştirmek ister " +"misiniz?" msgid "Nozzle diameter" msgstr "Nozul çapı" @@ -8082,8 +8043,8 @@ msgid "" "please reset the filament information for that slot." msgstr "" "Seçilen ön ayarı silmek istediğinizden emin misiniz? \n" -"Eğer ön ayar, şu anda yazıcınızda kullanılan bir filamente karşılık " -"geliyorsa, lütfen o slot için filament bilgilerini sıfırlayın." +"Eğer ön ayar, şu anda yazıcınızda kullanılan bir filamente karşılık geliyorsa, " +"lütfen o slot için filament bilgilerini sıfırlayın." #, boost-format msgid "Are you sure to %1% the selected preset?" @@ -8169,19 +8130,19 @@ msgstr "\"%1%\" ön ayarı aşağıdaki kaydedilmemiş değişiklikleri içeriyo #, 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 "" "Ön ayar \"%1%\", yeni yazıcı profiliyle uyumlu değil ve aşağıdaki " "kaydedilmemiş değişiklikleri içeriyor:" #, 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 "" -"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki " -"kaydedilmemiş değişiklikleri içeriyor:" +"Ön ayar \"%1%\", yeni işlem profiliyle uyumlu değil ve aşağıdaki kaydedilmemiş " +"değişiklikleri içeriyor:" #, boost-format msgid "You have changed some settings of preset \"%1%\". " @@ -8208,12 +8169,12 @@ msgstr "Daha önce ayarlarınızı değiştirdiniz." msgid "" "\n" -"You can discard the preset values you have modified, or choose to transfer " -"the modified values to the new project" +"You can discard the preset values you have modified, or choose to transfer the " +"modified values to the new project" msgstr "" "\n" -"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri " -"yeni projeye aktarmayı seçebilirsiniz." +"Değiştirdiğiniz ön ayar değerlerini atabilir veya değiştirilen değerleri yeni " +"projeye aktarmayı seçebilirsiniz." msgid "Extruders count" msgstr "Ekstruder sayısı" @@ -8237,19 +8198,19 @@ msgstr "" msgid "" "Transfer the selected options from left preset to the right.\n" -"Note: New modified presets will be selected in settings tabs after close " -"this dialog." +"Note: New modified presets will be selected in settings tabs after close this " +"dialog." msgstr "" "Seçilen seçenekleri sol ön ayardan sağa aktarın.\n" -"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde " -"değiştirilen yeni ön ayarlar seçilecektir." +"Not: Bu iletişim kutusunu kapattıktan sonra ayarlar sekmelerinde değiştirilen " +"yeni ön ayarlar seçilecektir." msgid "Transfer values from left to right" msgstr "Değerleri soldan sağa aktarın" msgid "" -"If enabled, this dialog can be used for transfer selected values from left " -"to right preset." +"If enabled, this dialog can be used for transfer selected values from left to " +"right preset." msgstr "" "Etkinleştirilirse, bu iletişim kutusu seçilen değerleri soldan sağa ön ayara " "aktarmak için kullanılabilir." @@ -8390,22 +8351,22 @@ msgstr "Sıkıştırma özelleştirme" msgid "" "Ramming denotes the rapid extrusion just before a tool change in a single-" -"extruder MM printer. Its purpose is to properly shape the end of the " -"unloaded filament so it does not prevent insertion of the new filament and " -"can itself be reinserted later. This phase is important and different " -"materials can require different extrusion speeds to get the good shape. For " -"this reason, the extrusion rates during ramming are adjustable.\n" +"extruder MM printer. Its purpose is to properly shape the end of the unloaded " +"filament so it does not prevent insertion of the new filament and can itself " +"be reinserted later. This phase is important and different materials can " +"require different extrusion speeds to get the good shape. For this reason, the " +"extrusion rates during ramming are adjustable.\n" "\n" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." msgstr "" "Sıkıştırma, tek ekstruderli bir MM yazıcıda takım değişiminden hemen önce " -"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin " -"yerleştirilmesini engellememesi ve daha sonra yeniden yerleştirilebilmesi " -"için boşaltılmış filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu " -"aşama önemlidir ve farklı malzemeler iyi bir şekil elde etmek için farklı " -"ekstrüzyon hızları gerektirebilir. Bu nedenle, sıkıştırma sırasındaki " -"ekstrüzyon hızları ayarlanabilir.\n" +"yapılan hızlı ekstrüzyonu ifade eder. Amacı, yeni filamentin yerleştirilmesini " +"engellememesi ve daha sonra yeniden yerleştirilebilmesi için boşaltılmış " +"filamentin ucunu düzgün bir şekilde şekillendirmektir. Bu aşama önemlidir ve " +"farklı malzemeler iyi bir şekil elde etmek için farklı ekstrüzyon hızları " +"gerektirebilir. Bu nedenle, sıkıştırma sırasındaki ekstrüzyon hızları " +"ayarlanabilir.\n" "\n" "Bu uzman düzeyinde bir ayardır, yanlış ayarlama muhtemelen sıkışmalara, " "ekstruder tekerleğinin filamente sürtünmesine vb. yol açacaktır." @@ -8472,22 +8433,22 @@ msgid "To" msgstr "İle" msgid "" -"Windows Media Player is required for this task! Do you want to enable " -"'Windows Media Player' for your operation system?" +"Windows Media Player is required for this task! Do you want to enable 'Windows " +"Media Player' for your operation system?" msgstr "" "Bu görev için Windows Media Player gereklidir! İşletim sisteminiz için " "‘Windows Media Player’ı etkinleştirmek istiyor musunuz?" msgid "" -"BambuSource has not correctly been registered for media playing! Press Yes " -"to re-register it. You will be promoted twice" +"BambuSource has not correctly been registered for media playing! Press Yes to " +"re-register it. You will be promoted twice" msgstr "" -"BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden " -"kaydetmek için Evet’e basın." +"BambuSource medya oynatımı için doğru şekilde kaydedilmemiş! Yeniden kaydetmek " +"için Evet’e basın." msgid "" -"Missing BambuSource component registered for media playing! Please re-" -"install BambuStudio or seek after-sales help." +"Missing BambuSource component registered for media playing! Please re-install " +"BambuStudio or seek after-sales help." msgstr "" "Medya oynatma için kayıtlı BambuSource bileşeni eksik! Lütfen BambuStudio’yu " "yeniden yükleyin veya satış sonrası yardım isteyin." @@ -8500,9 +8461,9 @@ msgstr "" "çalışmayabilir! Düzeltmek için Evet’e basın." msgid "" -"Your system is missing H.264 codecs for GStreamer, which are required to " -"play video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-" -"libav packages, then restart Orca Slicer?)" +"Your system is missing H.264 codecs for GStreamer, which are required to play " +"video. (Try installing the gstreamer1.0-plugins-bad or gstreamer1.0-libav " +"packages, then restart Orca Slicer?)" msgstr "" "Sisteminizde video oynatmak için gerekli olan GStreamer H.264 codec " "bileşenleri eksik. (gstreamer1.0-plugins-bad veya gstreamer1.0-libav " @@ -8572,9 +8533,9 @@ 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." +"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 "" "Seçilen nesneleri veya tüm nesneleri otomatik olarak yönlendirir. Seçilen " "nesneler varsa, yalnızca seçilenleri yönlendirir. Aksi takdirde, geçerli " @@ -8797,8 +8758,8 @@ msgstr "Ağ eklentisi güncellemesi" msgid "" "Click OK to update the Network plug-in when Orca Slicer launches next time." msgstr "" -"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek " -"için Tamam'a tıklayın." +"Orca Slicer bir sonraki sefer başlatıldığında Ağ eklentisini güncellemek için " +"Tamam'a tıklayın." #, c-format, boost-format msgid "A new Network plug-in(%s) available, Do you want to install it?" @@ -8855,8 +8816,7 @@ msgstr "Nozulu Onaylayın ve Güncelleyin" msgid "LAN Connection Failed (Sending print file)" msgstr "LAN Bağlantısı Başarısız (Yazdırma dosyası gönderiliyor)" -msgid "" -"Step 1, please confirm Orca Slicer and your printer are in the same LAN." +msgid "Step 1, please confirm Orca Slicer and your printer are in the same LAN." msgstr "" "Adım 1, lütfen Orca Slicer ile yazıcınızın aynı LAN'da olduğunu doğrulayın." @@ -8864,8 +8824,8 @@ msgid "" "Step 2, if the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Adım 2, aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden " -"farklıysa lütfen bunları düzeltin." +"Adım 2, aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden farklıysa " +"lütfen bunları düzeltin." msgid "IP" msgstr "IP" @@ -8925,8 +8885,8 @@ msgid "Updating successful" msgstr "Güncelleme başarılı" 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 "" "Güncellemek istediğinizden emin misiniz? Bu yaklaşık 10 dakika sürecektir. " "Yazıcı güncellenirken gücü kapatmayın." @@ -8945,10 +8905,9 @@ msgid "" "printing. Do you want to update now? You can also update later on printer or " "update next time starting Orca." msgstr "" -"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme " -"yapılması gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra " -"yazıcıda güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda " -"güncelleyebilirsiniz." +"Ürün yazılımı sürümü anormal. Yazdırmadan önce onarım ve güncelleme yapılması " +"gerekir. Şimdi güncellemek istiyor musunuz? Ayrıca daha sonra yazıcıda " +"güncelleyebilir veya stüdyoyu bir sonraki başlatışınızda güncelleyebilirsiniz." msgid "Extension Board" msgstr "Uzatma Kartı" @@ -9020,8 +8979,8 @@ msgid "Open G-code file:" msgstr "G kodu dosyasını açın:" 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 "" "Bir nesnenin başlangıç katmanı boş ve yazdırılamıyor. Lütfen alt kısmı kesin " "veya destekleri etkinleştirin." @@ -9106,8 +9065,8 @@ msgid "Failed to calculate line width of %1%. Can not get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " msgid "" -"Invalid spacing supplied to Flow::with_spacing(), check your layer height " -"and extrusion width" +"Invalid spacing supplied to Flow::with_spacing(), check your layer height and " +"extrusion width" msgstr "" "Flow::with_spacing()'e sağlanan geçersiz boşluk, kat yüksekliğinizi ve " "ekstrüzyon genişliğinizi kontrol edin" @@ -9240,8 +9199,8 @@ msgstr " dışlama alanına çok yakın ve çarpışmalara neden olacak.\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" +"together. Otherwise, the extruder and nozzle may be blocked or damaged during " +"printing" msgstr "" "Birlikte büyük sıcaklık farkına sahip birden fazla filament basılamaz. Aksi " "takdirde baskı sırasında ekstruder ve nozul tıkanabilir veya hasar görebilir" @@ -9257,8 +9216,8 @@ msgstr "" "modu desteklenmez." 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 "" "Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " "göre\" yazdırma sırasını seçin." @@ -9282,8 +9241,8 @@ msgstr "%1% nesnesi maksimum yapı hacmi yüksekliğini aşıyor." #, boost-format msgid "" -"While the object %1% itself fits the build volume, its last layer exceeds " -"the maximum build volume height." +"While the object %1% itself fits the build volume, its last layer exceeds the " +"maximum build volume height." msgstr "" "%1% nesnesinin kendisi yapı hacmine uysa da, son katmanı maksimum yapı hacmi " "yüksekliğini aşıyor." @@ -9299,9 +9258,9 @@ msgid "Variable layer height is not supported with Organic supports." msgstr "Değişken katman yüksekliği Organik desteklerle desteklenmez." msgid "" -"Different nozzle diameters and different filament diameters may not work " -"well when the prime tower is enabled. It's very experimental, so please " -"proceed with caution." +"Different nozzle diameters and different filament diameters may not work well " +"when the prime tower is enabled. It's very experimental, so please proceed " +"with caution." msgstr "" "Farklı püskürtme ucu çapları ve farklı filaman çapları, ana kule " "etkinleştirildiğinde iyi çalışmayabilir. Oldukça deneysel olduğundan lütfen " @@ -9332,11 +9291,11 @@ msgid "The prime tower is not supported in \"By object\" print." msgstr "Prime tower, \"Nesneye göre\" yazdırmada desteklenmez." 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 "" -"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm " -"nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir." +"Uyarlanabilir katman yüksekliği açıkken ana kule desteklenmez. Tüm nesnelerin " +"aynı katman yüksekliğine sahip olmasını gerektirir." msgid "The prime tower requires \"support gap\" to be multiple of layer height" msgstr "" @@ -9344,12 +9303,11 @@ msgstr "" msgid "The prime tower requires that all objects have the same layer heights" msgstr "" -"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını " -"gerektirir" +"Prime tower, tüm nesnelerin aynı katman yüksekliğine sahip olmasını gerektirir" 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 "" "Ana kule, tüm nesnelerin aynı sayıda sal katmanı üzerine yazdırılmasını " "gerektirir" @@ -9362,8 +9320,8 @@ msgstr "" "gerektirir." msgid "" -"The prime tower is only supported if all objects have the same variable " -"layer height" +"The prime tower is only supported if all objects have the same variable layer " +"height" msgstr "" "Prime tower yalnızca tüm nesnelerin aynı değişken katman yüksekliğine sahip " "olması durumunda desteklenir" @@ -9377,8 +9335,7 @@ msgstr "Çok büyük çizgi genişliği" msgid "" "The prime tower requires that support has the same layer height with object." msgstr "" -"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip " -"olmalıdır." +"Prime kulesi için, destek, nesne ile aynı katman yüksekliğine sahip olmalıdır." msgid "" "Organic support tree tip diameter must not be smaller than support material " @@ -9391,8 +9348,8 @@ msgid "" "Organic support branch diameter must not be smaller than 2x support material " "extrusion width." msgstr "" -"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 " -"katından daha küçük olamaz." +"Organik destek dalı çapı, destek malzemesi ekstrüzyon genişliğinin 2 katından " +"daha küçük olamaz." msgid "" "Organic support branch diameter must not be smaller than support tree tip " @@ -9409,34 +9366,32 @@ msgid "Layer height cannot exceed nozzle diameter" msgstr "Katman yüksekliği nozul çapını aşamaz" msgid "" -"Relative extruder addressing requires resetting the extruder position at " -"each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " +"Relative extruder addressing requires resetting the extruder position at each " +"layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek " -"için her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. " -"Layer_gcode'a \"G92 E0\" ekleyin." +"Göreceli ekstruder adreslemesi, kayan nokta doğruluğunun kaybını önlemek için " +"her katmandaki ekstruder konumunun sıfırlanmasını gerektirir. Layer_gcode'a " +"\"G92 E0\" ekleyin." msgid "" "\"G92 E0\" was found in before_layer_gcode, which is incompatible with " "absolute extruder addressing." msgstr "" -"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder " -"adreslemeyle uyumsuzdu." +"Before_layer_gcode'da \"G92 E0\" bulundu ve bu, mutlak ekstruder adreslemeyle " +"uyumsuzdu." msgid "" "\"G92 E0\" was found in layer_gcode, which is incompatible with absolute " "extruder addressing." msgstr "" -"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" " -"bulundu." +"Layer_gcode'da mutlak ekstruder adreslemeyle uyumlu olmayan \"G92 E0\" bulundu." #, c-format, boost-format msgid "Plate %d: %s does not support filament %s" msgstr "Plaka %d: %s, %s filamentini desteklemiyor" -msgid "" -"Setting the jerk speed too low could lead to artifacts on curved surfaces" +msgid "Setting the jerk speed too low could lead to artifacts on curved surfaces" msgstr "" "Sarsıntı hızının çok düşük ayarlanması kavisli yüzeylerde bozulmalara neden " "olabilir" @@ -9446,8 +9401,8 @@ msgid "" "machine_max_jerk_y).\n" "Orca will automatically cap the jerk speed to ensure it doesn't surpass the " "printer's capabilities.\n" -"You can adjust the maximum jerk setting in your printer's configuration to " -"get higher speeds." +"You can adjust the maximum jerk setting in your printer's configuration to get " +"higher speeds." msgstr "" "Sarsıntı ayarı yazıcının maksimum sarsıntısını aşıyor (machine_max_jerk_x/" "machine_max_jerk_y).\n" @@ -9461,8 +9416,8 @@ msgid "" "(machine_max_acceleration_extruding).\n" "Orca will automatically cap the acceleration speed to ensure it doesn't " "surpass the printer's capabilities.\n" -"You can adjust the machine_max_acceleration_extruding value in your " -"printer's configuration to get higher speeds." +"You can adjust the machine_max_acceleration_extruding value in your printer's " +"configuration to get higher speeds." msgstr "" "Hızlanma ayarı yazıcının maksimum hızlanmasını aşıyor " "(machine_max_acceleration_extruding).\n" @@ -9474,8 +9429,8 @@ msgstr "" msgid "" "The travel acceleration setting exceeds the printer's maximum travel " "acceleration (machine_max_acceleration_travel).\n" -"Orca will automatically cap the travel acceleration speed to ensure it " -"doesn't surpass the printer's capabilities.\n" +"Orca will automatically cap the travel acceleration speed to ensure it doesn't " +"surpass the printer's capabilities.\n" "You can adjust the machine_max_acceleration_travel value in your printer's " "configuration to get higher speeds." msgstr "" @@ -9490,8 +9445,8 @@ msgid "" "Filament shrinkage will not be used because filament shrinkage for the used " "filaments differs significantly." msgstr "" -"Filament büzülmesi kullanılmayacaktır çünkü kullanılan filamentlerin " -"filament büzülmesi önemli ölçüde farklılık göstermektedir." +"Filament büzülmesi kullanılmayacaktır çünkü kullanılan filamentlerin filament " +"büzülmesi önemli ölçüde farklılık göstermektedir." msgid "Generating skirt & brim" msgstr "Etek ve kenar oluşturma" @@ -9530,8 +9485,7 @@ msgid "Elephant foot compensation" msgstr "Fil ayağı telafi oranı" msgid "" -"Shrink the initial layer on build plate to compensate for elephant foot " -"effect" +"Shrink the initial layer on build plate to compensate for elephant foot effect" msgstr "" "Fil ayağı etkisini telafi etmek için baskı plakasındaki ilk katmanı küçültün" @@ -9555,8 +9509,8 @@ msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " "more printing time" msgstr "" -"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha " -"doğru ve daha fazla baskı süresi anlamına gelir" +"Her katman için dilimleme yüksekliği. Daha küçük katman yüksekliği, daha doğru " +"ve daha fazla baskı süresi anlamına gelir" msgid "Printable height" msgstr "Yazdırılabilir yükseklik" @@ -9580,8 +9534,8 @@ msgstr "3. taraf yazdırma ana bilgisayarını kullanın" msgid "Allow controlling BambuLab's printer through 3rd party print hosts" msgstr "" -"BambuLab yazıcısının 3. taraf yazdırma ana bilgisayarları aracılığıyla " -"kontrol edilmesine izin ver" +"BambuLab yazıcısının 3. taraf yazdırma ana bilgisayarları aracılığıyla kontrol " +"edilmesine izin ver" msgid "Hostname, IP or URL" msgstr "Ana bilgisayar adı, IP veya URL" @@ -9590,15 +9544,15 @@ msgid "" "Orca Slicer 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/" +"user name and password into the URL in the following format: https://username:" +"password@your-octopi-address/" msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini " -"veya URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu " -"HAProxy'nin arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve " -"parolanın aşağıdaki biçimdeki URL'ye girilmesiyle erişilebilir: https://" -"username:password@your-octopi-address/" +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, yazıcı ana bilgisayar örneğinin ana bilgisayar adını, IP adresini veya " +"URL'sini içermelidir. Temel kimlik doğrulamanın etkin olduğu HAProxy'nin " +"arkasındaki yazdırma ana bilgisayarına, kullanıcı adı ve parolanın aşağıdaki " +"biçimdeki URL'ye girilmesiyle erişilebilir: https://username:password@your-" +"octopi-address/" msgid "Device UI" msgstr "Cihaz kullanıcı arayüzü" @@ -9606,8 +9560,7 @@ msgstr "Cihaz kullanıcı arayüzü" msgid "" "Specify the URL of your device user interface if it's not same as print_host" msgstr "" -"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini " -"belirtin" +"Print_Host ile aynı değilse cihazınızın kullanıcı arayüzünün URL'sini belirtin" msgid "API Key / Password" msgstr "API Anahtarı / Şifre" @@ -9616,9 +9569,8 @@ msgid "" "Orca Slicer can upload G-code files to a printer host. This field should " "contain the API Key or the password required for authentication." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi " -"içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan, kimlik doğrulama için gereken API Anahtarını veya şifreyi içermelidir." msgid "Name of the printer" msgstr "Yazıcı adı" @@ -9628,12 +9580,11 @@ msgstr "HTTPS CA Dosyası" 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." +"in crt/pem format. If left blank, the default OS CA certificate repository is " +"used." msgstr "" -"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika " -"dosyası belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu " -"kullanılır." +"HTTPS OctoPrint bağlantıları için crt/pem formatında özel CA sertifika dosyası " +"belirtilebilir. Boş bırakılırsa varsayılan OS CA sertifika deposu kullanılır." msgid "User" msgstr "Kullanıcı" @@ -9650,8 +9601,8 @@ msgid "" "certificates if connection fails." msgstr "" "Eksik veya çevrimdışı dağıtım noktaları olması durumunda HTTPS sertifikası " -"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden " -"imzalı sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." +"iptal kontrollerini göz ardı edin. Bağlantı başarısız olursa, kendinden imzalı " +"sertifikalar için bu seçeneğin etkinleştirilmesi istenebilir." msgid "Names of presets related to the physical printer" msgstr "Fiziksel yazıcıyla ilgili ön ayarların adları" @@ -9675,15 +9626,15 @@ msgid "Avoid crossing wall - Max detour length" msgstr "Duvarı geçmekten kaçının - maksimum servis yolu uzunluğu" 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 "" -"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma " -"mesafesi bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer " -"olarak veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak " -"belirtilebilir. Devre dışı bırakmak için sıfır" +"Duvarı geçmekten kaçınmak için maksimum sapma mesafesi. Yoldan sapma mesafesi " +"bu değerden büyükse yoldan sapmayın. Yol uzunluğu, mutlak bir değer olarak " +"veya doğrudan seyahat yolunun yüzdesi (örneğin %50) olarak belirtilebilir. " +"Devre dışı bırakmak için sıfır" msgid "mm or %" msgstr "mm veya %" @@ -9692,39 +9643,39 @@ msgid "Other layers" msgstr "Diğer katmanlar" 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 "" -"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " -"Cool Plate üzerine yazdırmayı desteklemediği anlamına gelir" +"İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin Cool " +"Plate üzerine yazdırmayı desteklemediği anlamına gelir" 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 Textured Cool Plate" +"Bed temperature for layers except the initial one. Value 0 means the filament " +"does not support to print on the Textured Cool Plate" msgstr "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu Soğuk Plaka üzerine yazdırmayı desteklemediği anlamına gelir." 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 "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. Değer 0, filamentin " "Mühendislik Plakasına yazdırmayı desteklemediği anlamına gelir" 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 "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 değeri, filamentin " "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" 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 "" "İlk katman dışındaki katmanlar için yatak sıcaklığı. 0 Değeri, filamentin " "Dokulu PEI Plaka üzerine yazdırmayı desteklemediği anlamına gelir" @@ -9746,8 +9697,8 @@ msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " "support to print on the Textured Cool Plate" msgstr "" -"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk Plaka " -"üzerine yazdırmayı desteklemediği anlamına gelir." +"İlk katmanın yatak sıcaklığı. 0 Değeri, filamentin Dokulu Soğuk Plaka üzerine " +"yazdırmayı desteklemediği anlamına gelir." msgid "" "Bed temperature of the initial layer. Value 0 means the filament does not " @@ -9818,57 +9769,55 @@ msgstr "Alt katman kalınlığı" 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 determined by bottom " +"having too thin shell when layer height is small. 0 means that this setting is " +"disabled and thickness of bottom shell is absolutely determined by bottom " "shell layers" msgstr "" -"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " -"ayarın devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk " -"katmanları tarafından belirlendiği anlamına gelir" +"Alt kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında alt katı katmanların sayısı arttırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu ayarın " +"devre dışı olduğu ve alt kabuğun kalınlığının mutlaka alt kabuk katmanları " +"tarafından belirlendiği anlamına gelir" msgid "Apply gap fill" msgstr "Boşluk doldurmayı uygula" msgid "" -"Enables gap fill for the selected solid surfaces. The minimum gap length " -"that will be filled can be controlled from the filter out tiny gaps option " -"below.\n" +"Enables gap fill for the selected solid surfaces. The minimum gap length that " +"will be filled can be controlled from the filter out tiny gaps option below.\n" "\n" "Options:\n" -"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces " -"for maximum strength\n" -"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " -"only, balancing print speed, reducing potential over extrusion in the solid " -"infill and making sure the top and bottom surfaces have no pin hole gaps\n" +"1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces for " +"maximum strength\n" +"2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces only, " +"balancing print speed, reducing potential over extrusion in the solid infill " +"and making sure the top and bottom surfaces have no pin hole gaps\n" "3. Nowhere: Disables gap fill for all solid infill areas. \n" "\n" "Note that if using the classic perimeter generator, gap fill may also be " "generated between perimeters, if a full width line cannot fit between them. " "That perimeter gap fill is not controlled by this setting. \n" "\n" -"If you would like all gap fill, including the classic perimeter generated " -"one, removed, set the filter out tiny gaps value to a large number, like " -"999999. \n" +"If you would like all gap fill, including the classic perimeter generated one, " +"removed, set the filter out tiny gaps value to a large number, like 999999. \n" "\n" -"However this is not advised, as gap fill between perimeters is contributing " -"to the model's strength. For models where excessive gap fill is generated " -"between perimeters, a better option would be to switch to the arachne wall " -"generator and use this option to control whether the cosmetic top and bottom " -"surface gap fill is generated" +"However this is not advised, as gap fill between perimeters is contributing to " +"the model's strength. For models where excessive gap fill is generated between " +"perimeters, a better option would be to switch to the arachne wall generator " +"and use this option to control whether the cosmetic top and bottom surface gap " +"fill is generated" msgstr "" "Seçilen katı yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " "kontrol edilebilir.\n" "\n" "Seçenekler:\n" -"1. Her Yerde: Maksimum dayanıklılık için üst, alt ve iç katı yüzeylere " -"boşluk dolgusu uygular\n" +"1. Her Yerde: Maksimum dayanıklılık için üst, alt ve iç katı yüzeylere boşluk " +"dolgusu uygular\n" "2. Üst ve Alt yüzeyler: Boşluk dolgusunu yalnızca üst ve alt yüzeylere " "uygulayarak baskı hızını dengeler, katı dolgudaki aşırı ekstrüzyon " -"potansiyelini azaltır ve üst ve alt yüzeylerde iğne deliği boşluğu " -"kalmamasını sağlar\n" +"potansiyelini azaltır ve üst ve alt yüzeylerde iğne deliği boşluğu kalmamasını " +"sağlar\n" "3. Hiçbir Yer: Tüm katı dolgu alanları için boşluk doldurmayı devre dışı " "bırakır. \n" "\n" @@ -9877,8 +9826,8 @@ msgstr "" "unutmayın. Bu çevre boşluğu dolgusu bu ayarla kontrol edilmez. \n" "\n" "Oluşturulan klasik çevre de dahil olmak üzere tüm boşluk doldurmanın " -"kaldırılmasını istiyorsanız, filtreyi küçük boşluklar dışında değerini " -"999999 gibi büyük bir sayıya ayarlayın. \n" +"kaldırılmasını istiyorsanız, filtreyi küçük boşluklar dışında değerini 999999 " +"gibi büyük bir sayıya ayarlayın. \n" "\n" "Ancak çevreler arasındaki boşluğun doldurulması modelin gücüne katkıda " "bulunduğundan bu önerilmez. Çevreler arasında aşırı boşluk dolgusunun " @@ -9899,19 +9848,19 @@ msgid "Force cooling for overhang and bridge" msgstr "Çıkıntı ve köprüler için soğutmayı zorla" 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 "" -"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma " -"fanı hızını optimize etmek amacıyla bu seçeneği etkinleştirin" +"Daha iyi soğutma elde etmek amacıyla çıkıntı ve köprü için parça soğutma fanı " +"hızını optimize etmek amacıyla bu seçeneği etkinleştirin" msgid "Fan speed for overhang" msgstr "Çıkıntılar için fan hızı" 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 "" "Çıkıntı derecesi büyük olan köprü veya çıkıntılı duvara baskı yaparken parça " "soğutma fanını bu hızda olmaya zorlayın. Çıkıntı ve köprü için soğutmayı " @@ -9923,14 +9872,14 @@ msgstr "Çıkıntı soğutması" #, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " -"exceeds this value. Expressed as percentage which indicates 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" +"exceeds this value. Expressed as percentage which indicates 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 "" "Yazdırılan parçanın çıkıntı derecesi bu değeri aştığında soğutma fanını " "belirli bir hıza zorlar. Alt katmandan destek almadan çizginin ne kadar " -"genişlediğini gösteren yüzde olarak ifade edilir. 0, çıkıntı derecesi ne " -"kadar olursa olsun tüm dış duvar için soğutmayı zorlamak anlamına gelir" +"genişlediğini gösteren yüzde olarak ifade edilir. 0, çıkıntı derecesi ne kadar " +"olursa olsun tüm dış duvar için soğutmayı zorlamak anlamına gelir" msgid "Bridge infill direction" msgstr "Köprü dolgu açısı" @@ -9956,8 +9905,8 @@ msgid "Bridge flow ratio" msgstr "Köprülerde akış oranı" msgid "" -"Decrease this value slightly(for example 0.9) to reduce the amount of " -"material for bridge, to improve sag. \n" +"Decrease this value slightly(for example 0.9) to reduce the amount of material " +"for bridge, to improve sag. \n" "\n" "The actual bridge flow used is calculated by multiplying this value with the " "filament flow ratio, and if set, the object's flow ratio." @@ -9973,12 +9922,12 @@ msgstr "İç köprü akış oranı" msgid "" "This value governs the thickness of the internal bridge layer. This is the " -"first layer over sparse infill. Decrease this value slightly (for example " -"0.9) to improve surface quality over sparse infill.\n" +"first layer over sparse infill. Decrease this value slightly (for example 0.9) " +"to improve surface quality over sparse infill.\n" "\n" "The actual internal bridge flow used is calculated by multiplying this value " -"with the bridge flow ratio, the filament flow ratio, and if set, the " -"object's flow ratio." +"with the bridge flow ratio, the filament flow ratio, and if set, the object's " +"flow ratio." msgstr "" "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " @@ -9994,8 +9943,8 @@ msgid "" "This factor affects the amount of material for top solid infill. You can " "decrease it slightly to have smooth surface finish. \n" "\n" -"The actual top surface flow used is calculated by multiplying this value " -"with the filament flow ratio, and if set, the object's flow ratio." +"The actual top surface flow used is calculated by multiplying this value with " +"the filament flow ratio, and if set, the object's flow ratio." msgstr "" "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " "elde etmek için bunu biraz azaltabilirsiniz. \n" @@ -10023,8 +9972,8 @@ msgstr "Hassas duvar" msgid "" "Improve shell precision by adjusting outer wall spacing. This also improves " "layer consistency.\n" -"Note: This setting will only take effect if the wall sequence is configured " -"to Inner-Outer" +"Note: This setting will only take effect if the wall sequence is configured to " +"Inner-Outer" msgstr "" "Dış duvar aralığını ayarlayarak kabuk hassasiyetini artırın. Bu aynı zamanda " "katman tutarlılığını da artırır.\n" @@ -10049,17 +9998,17 @@ msgid "" "If a top surface has to be printed and it's partially covered by another " "layer, it won't be considered at a top layer where its width is below this " "value. This can be useful to not let the 'one perimeter on top' trigger on " -"surface that should be covered only by perimeters. This value can be a mm or " -"a % of the perimeter extrusion width.\n" +"surface that should be covered only by perimeters. This value can be a mm or a " +"% of the perimeter extrusion width.\n" "Warning: If enabled, artifacts can be created if you have some thin features " "on the next layer, like letters. Set this setting to 0 to remove these " "artifacts." msgstr "" -"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından " -"kaplıysa layer genişliği bu değerin altında olan bir üst katman olarak " +"Eğer bir üst yüzey basılacaksa ve kısmen başka bir katman tarafından kaplıysa " +"layer genişliği bu değerin altında olan bir üst katman olarak " "değerlendirilmeyecek. Yalnızca çevrelerle kaplanması gereken yüzeyde 'bir " -"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya " -"a % çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" +"çevre üstte' tetiklemesine izin vermemek yararlı olabilir. Bu değer mm veya a " +"% çevre ekstrüzyon genişliğinin bir yüzdesi olabilir.\n" "Uyarı: Etkinleştirilirse bir sonraki katmanda harfler gibi bazı ince " "özelliklerin olması durumunda yapay yapılar oluşturulabilir. Bu yapıları " "kaldırmak için bu ayarı 0 olarak ayarlayın." @@ -10078,22 +10027,22 @@ msgid "Extra perimeters on overhangs" msgstr "Çıkıntılarda ekstra çevre (perimeter)" msgid "" -"Create additional perimeter paths over steep overhangs and areas where " -"bridges cannot be anchored. " +"Create additional perimeter paths over steep overhangs and areas where bridges " +"cannot be anchored. " msgstr "" -"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre " -"yolları (perimeter) oluşturun. " +"Dik çıkıntılar ve köprülerin sabitlenemediği alanlar üzerinde ek çevre yolları " +"(perimeter) oluşturun. " msgid "Reverse on even" -msgstr "Çifteri ters çevirin" +msgstr "Çiftleri ters çevirin" msgid "Overhang reversal" msgstr "Çıkıntıyı tersine çevir" msgid "" -"Extrude perimeters that have a part over an overhang in the reverse " -"direction on even layers. This alternating pattern can drastically improve " -"steep overhangs.\n" +"Extrude perimeters that have a part over an overhang in the reverse direction " +"on even layers. This alternating pattern can drastically improve steep " +"overhangs.\n" "\n" "This setting can also help reduce part warping due to the reduction of " "stresses in the part walls." @@ -10112,11 +10061,10 @@ msgid "" "Apply the reverse perimeters logic only on internal perimeters. \n" "\n" "This setting greatly reduces part stresses as they are now distributed in " -"alternating directions. This should reduce part warping while also " -"maintaining external wall quality. This feature can be very useful for warp " -"prone material, like ABS/ASA, and also for elastic filaments, like TPU and " -"Silk PLA. It can also help reduce warping on floating regions over " -"supports.\n" +"alternating directions. This should reduce part warping while also maintaining " +"external wall quality. This feature can be very useful for warp prone " +"material, like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. " +"It can also help reduce warping on floating regions over supports.\n" "\n" "For this setting to be the most effective, it is recommended to set the " "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -10131,16 +10079,16 @@ msgstr "" "Ayrıca destekler üzerindeki yüzen bölgelerdeki bükülmenin azaltılmasına da " "yardımcı olabilir.\n" "\n" -"Bu ayarın en etkili olması için, Ters Eşiğin 0’a ayarlanması önerilir; " -"böylece tüm iç duvarlar, çıkıntı derecelerine bakılmaksızın eşit katmanlara " -"alternatif yönlerde yazdırılır." +"Bu ayarın en etkili olması için, Ters Eşiğin 0’a ayarlanması önerilir; böylece " +"tüm iç duvarlar, çıkıntı derecelerine bakılmaksızın eşit katmanlara alternatif " +"yönlerde yazdırılır." msgid "Bridge counterbore holes" msgstr "Köprü havşa delikleri" msgid "" -"This option creates bridges for counterbore holes, allowing them to be " -"printed without support. Available modes include:\n" +"This option creates bridges for counterbore holes, allowing them to be printed " +"without support. Available modes include:\n" "1. None: No bridge is created.\n" "2. Partially Bridged: Only a part of the unsupported area will be bridged.\n" "3. Sacrificial Layer: A full sacrificial bridge layer is created." @@ -10148,8 +10096,7 @@ msgstr "" "Bu seçenek, havşa delikleri için köprüler oluşturarak bunların desteksiz " "yazdırılmasına olanak tanır. Mevcut modlar şunları içerir:\n" "1. Yok: Köprü oluşturulmaz.\n" -"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı " -"köprülenecek.\n" +"2. Kısmen Köprülendi: Desteklenmeyen alanın yalnızca bir kısmı köprülenecek.\n" "3. Feda Katman: Tam bir feda köprü katmanı oluşturulur." msgid "Partially bridged" @@ -10166,8 +10113,8 @@ msgstr "Çıkıntıyı tersine çevirme eşiği" #, no-c-format, no-boost-format msgid "" -"Number of mm the overhang need to be for the reversal to be considered " -"useful. Can be a % of the perimeter width.\n" +"Number of mm the overhang need to be for the reversal to be considered useful. " +"Can be a % of the perimeter width.\n" "Value 0 enables reversal on every even layers regardless." msgstr "" "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " @@ -10194,16 +10141,16 @@ msgstr "Kıvrılmış çevre çizgilerinde yavaşlat" #, fuzzy, no-c-format, no-boost-format msgid "" "Enable this option to slow down printing in areas where perimeters may have " -"curled upwards.For example, additional slowdown will be applied when " -"printing overhangs on sharp corners like the front of the Benchy hull, " -"reducing curling which compounds over multiple layers.\n" +"curled upwards.For example, additional slowdown will be applied when printing " +"overhangs on sharp corners like the front of the Benchy hull, reducing curling " +"which compounds over multiple layers.\n" "\n" " It is generally recommended to have this option switched on unless your " "printer cooling is powerful enough or the print speed slow enough that " -"perimeter curling does not happen. If printing with a high external " -"perimeter speed, this parameter may introduce slight artifacts when slowing " -"down due to the large variance in print speeds. If you notice artifacts, " -"ensure your pressure advance is tuned correctly.\n" +"perimeter curling does not happen. If printing with a high external perimeter " +"speed, this parameter may introduce slight artifacts when slowing down due to " +"the large variance in print speeds. If you notice artifacts, ensure your " +"pressure advance is tuned correctly.\n" "\n" "Note: When this option is enabled, overhang perimeters are treated like " "overhangs, meaning the overhang speed is applied even if the overhanging " @@ -10220,14 +10167,14 @@ msgstr "" "kıvrılmasını önleyecek kadar yavaş olmadığı sürece, genellikle bu seçeneğin " "açık olması önerilir. Yüksek harici çevre hızıyla yazdırılıyorsa, bu " "parametre, yazdırma hızlarındaki büyük farklılıklar nedeniyle yavaşlama " -"sırasında hafif bozulmalara neden olabilir. Artefaktlar fark ederseniz " -"basınç ilerlemenizin doğru şekilde ayarlandığından emin olun.\n" +"sırasında hafif bozulmalara neden olabilir. Artefaktlar fark ederseniz basınç " +"ilerlemenizin doğru şekilde ayarlandığından emin olun.\n" "\n" "Not: Bu seçenek etkinleştirildiğinde, çıkıntı çevreleri çıkıntılar gibi ele " -"alınır; bu, çıkıntının çevresi bir köprünün parçası olsa bile çıkıntı " -"hızının uygulandığı anlamına gelir. Örneğin, çevreler 100% çıkıntılı " -"olduğunda ve onları alttan destekleyen bir duvar olmadığında 100% çıkıntı " -"hızı uygulanacaktır." +"alınır; bu, çıkıntının çevresi bir köprünün parçası olsa bile çıkıntı hızının " +"uygulandığı anlamına gelir. Örneğin, çevreler 100% çıkıntılı olduğunda ve " +"onları alttan destekleyen bir duvar olmadığında 100% çıkıntı hızı " +"uygulanacaktır." msgid "mm/s or %" msgstr "mm/s veya %" @@ -10247,8 +10194,8 @@ msgstr "" "\n" "Ayrıca, kıvrılmış çevreler için yavaşlama devre dışı bırakılırsa veya Klasik " "çıkıntı modu etkinleştirilirse, ister bir köprünün ister bir çıkıntının " -"parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma " -"hızı olacaktır." +"parçası olsun, %13’ten daha az desteklenen çıkıntılı duvarların yazdırma hızı " +"olacaktır." msgid "mm/s" msgstr "mm/s" @@ -10257,8 +10204,8 @@ msgid "Internal" msgstr "Dahili" msgid "" -"Speed of internal bridges. If the value is expressed as a percentage, it " -"will be calculated based on the bridge_speed. Default value is 150%." +"Speed of internal bridges. If the value is expressed as a percentage, it will " +"be calculated based on the bridge_speed. Default value is 150%." msgstr "" "İç köprülerin hızı. Değer yüzde olarak ifade edilirse köprü hızına göre " "hesaplanacaktır. Varsayılan değer %150’dir." @@ -10273,8 +10220,8 @@ msgid "Brim type" msgstr "Kenar tipi" msgid "" -"This controls the generation of the brim at outer and/or inner side of " -"models. Auto means the brim width is analyzed and calculated automatically." +"This controls the generation of the brim at outer and/or inner side of models. " +"Auto means the brim width is analyzed and calculated automatically." msgstr "" "Bu, modellerin dış ve/veya iç kısmındaki Kenar oluşumunu kontrol eder. " "Otomatik, kenar genişliğinin otomatik olarak analiz edilip hesaplandığı " @@ -10359,13 +10306,13 @@ msgstr "Daha iyi katman soğutması için baskıyı yavaşlat" 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" +"that layer can be cooled for longer time. This can improve the cooling quality " +"for needle and small details" msgstr "" -"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi " -"eşiğinden kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için " -"bu seçeneği etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, " -"iğne ve küçük detaylar için soğutma kalitesini artırabilir" +"Son katman süresinin \"Maksimum fan hızı eşiği\"ndeki katman süresi eşiğinden " +"kısa olmamasını sağlamak amacıyla yazdırma hızını yavaşlatmak için bu seçeneği " +"etkinleştirin, böylece katman daha uzun süre soğutulabilir. Bu, iğne ve küçük " +"detaylar için soğutma kalitesini artırabilir" msgid "Normal printing" msgstr "Normal baskı" @@ -10374,8 +10321,7 @@ msgid "" "The default acceleration of both normal printing and travel except initial " "layer" msgstr "" -"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan " -"ivmesi" +"İlk katman dışında hem normal yazdırmanın hem de ilerlemenin varsayılan ivmesi" msgid "mm/s²" msgstr "mm/s²" @@ -10419,8 +10365,8 @@ 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 "" -"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı " -"plakası yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" +"İlk belirli katmanlar için tüm soğutma fanını kapatın. Daha iyi baskı plakası " +"yapışması sağlamak için ilk katmanın soğutma fanı kapatılırdı" msgid "Don't support bridges" msgstr "Köprülerde destek olmasın" @@ -10429,16 +10375,16 @@ 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 "" -"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle " -"çok uzun olmasa da destek olmadan doğrudan yazdırılabilir" +"Desteği çok büyük yapan tüm köprü alanını desteklemeyin. Bridge genellikle çok " +"uzun olmasa da destek olmadan doğrudan yazdırılabilir" msgid "Thick bridges" msgstr "Kalın köprüler" 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." +"look worse. If disabled, bridges look better but are reliable just for shorter " +"bridged distances." msgstr "" "Etkinleştirilirse köprüler daha güvenilir olur, daha uzun mesafeler arasında " "köprü kurabilir ancak daha kötü görünebilir. Devre dışı bırakıldığında " @@ -10450,8 +10396,8 @@ msgstr "Kalın iç köprüler" msgid "" "If enabled, thick internal bridges will be used. It's usually recommended to " -"have this feature turned on. However, consider turning it off if you are " -"using large nozzles." +"have this feature turned on. However, consider turning it off if you are using " +"large nozzles." msgstr "" "Etkinleştirilirse kalın iç köprüler kullanılacaktır. Genellikle bu özelliğin " "açık olması önerilir. Ancak büyük nozul uçları kullanıyorsanız kapatmayı " @@ -10461,8 +10407,8 @@ msgid "Filter out small internal bridges (beta)" msgstr "Küçük iç köprüleri filtreleyin (beta)" msgid "" -"This option can help reducing pillowing on top surfaces in heavily slanted " -"or curved models.\n" +"This option can help reducing pillowing on top surfaces in heavily slanted or " +"curved models.\n" "\n" "By default, small internal bridges are filtered out and the internal solid " "infill is printed directly over the sparse infill. This works well in most " @@ -10481,12 +10427,12 @@ msgid "" "most cases.\n" "\n" "Limited filtering - creates internal bridges on heavily slanted surfaces, " -"while avoiding creating unnecessary internal bridges. This works well for " -"most difficult models.\n" +"while avoiding creating unnecessary internal bridges. This works well for most " +"difficult models.\n" "\n" -"No filtering - creates internal bridges on every potential internal " -"overhang. This option is useful for heavily slanted top surface models. " -"However, in most cases it creates too many unnecessary bridges." +"No filtering - creates internal bridges on every potential internal overhang. " +"This option is useful for heavily slanted top surface models. However, in most " +"cases it creates too many unnecessary bridges." msgstr "" "Bu seçenek, aşırı eğimli veya kavisli modellerde üst yüzeylerdeki " "yastıklamanın azaltılmasına yardımcı olabilir.\n" @@ -10638,8 +10584,8 @@ 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 "" -"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek " -"için iç duvar hızından daha yavaş olması kullanılır." +"En dışta görünen ve görünen dış duvarın hızı. Daha iyi kalite elde etmek için " +"iç duvar hızından daha yavaş olması kullanılır." msgid "Small perimeters" msgstr "Küçük çevre (perimeter)" @@ -10647,8 +10593,8 @@ msgstr "Küçük çevre (perimeter)" 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." +"example: 80%) it will be calculated on the outer wall speed setting above. Set " +"to zero for auto." msgstr "" "Bu ayrı ayar, yarıçapı <= küçük_çevre_eşiği olan çevrelerin (genellikle " "delikler) hızını etkileyecektir. Yüzde olarak ifade edilirse (örneğin: %80), " @@ -10668,8 +10614,8 @@ msgstr "Duvar baskı sırası" msgid "" "Print sequence of the internal (inner) and external (outer) walls. \n" "\n" -"Use Inner/Outer for best overhangs. This is because the overhanging walls " -"can adhere to a neighbouring perimeter while printing. However, this option " +"Use Inner/Outer for best overhangs. This is because the overhanging walls can " +"adhere to a neighbouring perimeter while printing. However, this option " "results in slightly reduced surface quality as the external perimeter is " "deformed by being squashed to the internal perimeter.\n" "\n" @@ -10679,13 +10625,12 @@ msgid "" "perimeter to print the external wall against. This option requires a minimum " "of 3 walls to be effective as it prints the internal walls from the 3rd " "perimeter onwards first, then the external perimeter and, finally, the first " -"internal perimeter. This option is recommended against the Outer/Inner " -"option in most cases. \n" +"internal perimeter. This option is recommended against the Outer/Inner option " +"in most cases. \n" "\n" "Use Outer/Inner for the same external wall quality and dimensional accuracy " "benefits of Inner/Outer/Inner option. However, the z seams will appear less " -"consistent as the first extrusion of a new layer starts on a visible " -"surface.\n" +"consistent as the first extrusion of a new layer starts on a visible surface.\n" "\n" " " msgstr "" @@ -10700,14 +10645,14 @@ msgstr "" "kalitesi ve boyutsal doğruluk için İç/Dış/İç seçeneğini kullanın. Ancak, dış " "duvarın üzerine baskı yapılacak bir iç çevre olmadığından sarkma performansı " "düşecektir. Bu seçenek, önce 3. çevreden itibaren iç duvarları, ardından dış " -"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması " -"için en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine " -"karşı önerilir. \n" +"çevreyi ve son olarak da birinci iç çevreyi yazdırdığından etkili olması için " +"en az 3 duvar gerektirir. Bu seçenek çoğu durumda Dış/İç seçeneğine karşı " +"önerilir. \n" "\n" -"İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk " -"avantajları için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir " -"katmanın ilk ekstrüzyonu görünür bir yüzey üzerinde başladığından z " -"dikişleri daha az tutarlı görünecektir.\n" +"İç/Dış/İç seçeneğinin aynı dış duvar kalitesi ve boyutsal doğruluk avantajları " +"için Dış/İç seçeneğini kullanın. Bununla birlikte, yeni bir katmanın ilk " +"ekstrüzyonu görünür bir yüzey üzerinde başladığından z dikişleri daha az " +"tutarlı görünecektir.\n" "\n" " " @@ -10729,18 +10674,17 @@ msgid "" "\n" "Printing infill first may help with extreme overhangs as the walls have the " "neighbouring infill to adhere to. However, the infill will slightly push out " -"the printed walls where it is attached to them, resulting in a worse " -"external surface finish. It can also cause the infill to shine through the " -"external surfaces of the part." +"the printed walls where it is attached to them, resulting in a worse external " +"surface finish. It can also cause the infill to shine through the external " +"surfaces of the part." msgstr "" "Duvar/dolgu sırası. Onay kutusu işaretlenmediğinde duvarlar önce yazdırılır, " "bu çoğu durumda en iyi şekilde çalışır.\n" "\n" "Dolgunun önce yazdırılması, aşırı sarkmalarda yardımcı olabilir, çünkü " -"duvarlar komşu dolgulara yapışır. Ancak, dolgu duvarlara bağlı olduğu " -"yerlerde onları biraz dışarı iterek daha kötü bir dış yüzey bitişine neden " -"olabilir. Ayrıca, dolgunun parçanın dış yüzeylerinden parlamasına da sebep " -"olabilir." +"duvarlar komşu dolgulara yapışır. Ancak, dolgu duvarlara bağlı olduğu yerlerde " +"onları biraz dışarı iterek daha kötü bir dış yüzey bitişine neden olabilir. " +"Ayrıca, dolgunun parçanın dış yüzeylerinden parlamasına da sebep olabilir." msgid "Wall loop direction" msgstr "Duvar döngüsü yönü" @@ -10749,18 +10693,18 @@ msgid "" "The direction which the wall loops are extruded when looking down from the " "top.\n" "\n" -"By default all walls are extruded in counter-clockwise, unless Reverse on " -"even is enabled. Set this to any option other than Auto will force the wall " +"By default all walls are extruded in counter-clockwise, unless Reverse on even " +"is enabled. Set this to any option other than Auto will force the wall " "direction regardless of the Reverse on even.\n" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı yön.\n" "\n" -"Çift yönlü ters çevirme seçeneği etkinleştirilmediği sürece, varsayılan " -"olarak tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik " -"dışında herhangi bir seçeneğe ayarlayın, Ters çevirmeden bağımsız olarak " -"duvar yönünü eşit olarak zorlayacaktır.\n" +"Çift yönlü ters çevirme seçeneği etkinleştirilmediği sürece, varsayılan olarak " +"tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +"herhangi bir seçeneğe ayarlayın, Ters çevirmeden bağımsız olarak duvar yönünü " +"eşit olarak zorlayacaktır.\n" "\n" "Spiral vazo modu etkinse bu seçenek devre dışı bırakılacaktır." @@ -10787,8 +10731,8 @@ msgid "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." msgstr "" -"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." +"Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı önlemek " +"için kullanılır." msgid "" "Clearance radius around extruder. Used for collision avoidance in by-object " @@ -10808,46 +10752,44 @@ msgstr "Minimum yatak ağı" msgid "" "This option sets the min point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (-99999, -99999), which " -"means there are no limits, thus allowing probing across the entire bed." -msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob " -"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " -"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve " -"maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (-99999, -99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"probe's XY offset, most printers are unable to probe the entire bed. To ensure " +"the probe point does not go outside the bed area, the minimum and maximum " +"points of the bed mesh should be set appropriately. OrcaSlicer ensures that " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max " +"points. This information can usually be obtained from your printer " +"manufacturer. The default setting is (-99999, -99999), which means there are " +"no limits, thus allowing probing across the entire bed." +msgstr "" +"Bu seçenek, izin verilen yatak ağ alanı için minimum noktayı ayarlar. Prob XY " +"ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının yatak " +"alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(-99999, -99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına " +"gelir, dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Bed mesh max" msgstr "Maksimum yatak ağı" msgid "" "This option sets the max point for the allowed bed mesh area. Due to the " -"probe's XY offset, most printers are unable to probe the entire bed. To " -"ensure the probe point does not go outside the bed area, the minimum and " -"maximum points of the bed mesh should be set appropriately. OrcaSlicer " -"ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not " -"exceed these min/max points. This information can usually be obtained from " -"your printer manufacturer. The default setting is (99999, 99999), which " -"means there are no limits, thus allowing probing across the entire bed." -msgstr "" -"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. " -"Probun XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob " -"noktasının yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum " -"ve maksimum noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, " -"adaptive_bed_mesh_min/adaptive_bed_mesh_max değerlerinin bu min/maks " -"noktalarını aşmamasını sağlar. Bu bilgi genellikle yazıcınızın üreticisinden " -"edinilebilir. Varsayılan ayar (99999, 99999) şeklindedir; bu, herhangi bir " -"sınırın olmadığı anlamına gelir, dolayısıyla yatağın tamamında problamaya " -"izin verilir." +"probe's XY offset, most printers are unable to probe the entire bed. To ensure " +"the probe point does not go outside the bed area, the minimum and maximum " +"points of the bed mesh should be set appropriately. OrcaSlicer ensures that " +"adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max " +"points. This information can usually be obtained from your printer " +"manufacturer. The default setting is (99999, 99999), which means there are no " +"limits, thus allowing probing across the entire bed." +msgstr "" +"Bu seçenek, izin verilen yatak ağ alanı için maksimum noktayı ayarlar. Probun " +"XY ofseti nedeniyle çoğu yazıcı yatağın tamamını tarayamaz. Prob noktasının " +"yatak alanı dışına çıkmamasını sağlamak için yatak ağının minimum ve maksimum " +"noktaları uygun şekilde ayarlanmalıdır. OrcaSlicer, adaptive_bed_mesh_min/" +"adaptive_bed_mesh_max değerlerinin bu min/maks noktalarını aşmamasını sağlar. " +"Bu bilgi genellikle yazıcınızın üreticisinden edinilebilir. Varsayılan ayar " +"(99999, 99999) şeklindedir; bu, herhangi bir sınırın olmadığı anlamına gelir, " +"dolayısıyla yatağın tamamında problamaya izin verilir." msgid "Probe point distance" msgstr "Prob noktası mesafesi" @@ -10864,8 +10806,8 @@ msgid "Mesh margin" msgstr "Yatak ağı boşluğu" msgid "" -"This option determines the additional distance by which the adaptive bed " -"mesh area should be expanded in the XY directions." +"This option determines the additional distance by which the adaptive bed mesh " +"area should be expanded in the XY directions." msgstr "" "Bu seçenek, uyarlanabilir yatak ağ alanının XY yönlerinde genişletilmesi " "gereken ek mesafeyi belirler." @@ -10885,9 +10827,9 @@ msgstr "Akış oranı" 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" +"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 "" "Malzeme, erimiş hal ile kristal hal arasında geçiş yaptıktan sonra hacimsel " "değişime sahip olabilir. Bu ayar, bu filamentin gcode'daki tüm ekstrüzyon " @@ -10898,9 +10840,9 @@ 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. \n" +"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. \n" "\n" "The final object flow ratio is this value multiplied by the filament flow " "ratio." @@ -10932,19 +10874,19 @@ msgstr "Uyarlanabilir basınç ilerlemesini etkinleştir (beta)" #, no-c-format, no-boost-format msgid "" -"With increasing print speeds (and hence increasing volumetric flow through " -"the nozzle) and increasing accelerations, it has been observed that the " -"effective PA value typically decreases. This means that a single PA value is " -"not always 100% optimal for all features and a compromise value is usually " -"used that does not cause too much bulging on features with lower flow speed " -"and accelerations while also not causing gaps on faster features.\n" +"With increasing print speeds (and hence increasing volumetric flow through the " +"nozzle) and increasing accelerations, it has been observed that the effective " +"PA value typically decreases. This means that a single PA value is not always " +"100% optimal for all features and a compromise value is usually used that does " +"not cause too much bulging on features with lower flow speed and accelerations " +"while also not causing gaps on faster features.\n" "\n" -"This feature aims to address this limitation by modeling the response of " -"your printer's extrusion system depending on the volumetric flow speed and " +"This feature aims to address this limitation by modeling the response of your " +"printer's extrusion system depending on the volumetric flow speed and " "acceleration it is printing at. Internally, it generates a fitted model that " "can extrapolate the needed pressure advance for any given volumetric flow " -"speed and acceleration, which is then emitted to the printer depending on " -"the current print conditions.\n" +"speed and acceleration, which is then emitted to the printer depending on the " +"current print conditions.\n" "\n" "When enabled, the pressure advance value above is overridden. However, a " "reasonable default value above is strongly recommended to act as a fallback " @@ -10953,11 +10895,11 @@ msgid "" msgstr "" "Baskı hızlarının artmasıyla (ve dolayısıyla püskürtme ucunda hacimsel akışın " "artmasıyla) ve hızlanmaların artmasıyla, etkin basınç değerinin tipik olarak " -"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için " -"her zaman 100% optimal olmadığı ve genellikle daha düşük akış hızına ve " -"ivmeye sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda " -"daha hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin " -"kullanıldığı anlamına gelir.\n" +"azaldığı gözlemlenmiştir. Bu, tek bir basınç değerinin tüm özellikler için her " +"zaman 100% optimal olmadığı ve genellikle daha düşük akış hızına ve ivmeye " +"sahip özelliklerde çok fazla çıkıntıya neden olmayan ve aynı zamanda daha " +"hızlı özelliklerde boşluklara neden olmayan bir uzlaşma değerinin kullanıldığı " +"anlamına gelir.\n" "\n" "Bu özellik, yazıcınızın ekstrüzyon sisteminin tepkisini hacimsel akış hızına " "ve baskı yaptığı ivmeye bağlı olarak modelleyerek bu sınırlamayı gidermeyi " @@ -10983,27 +10925,27 @@ msgid "" "0.026,7.91,10000\n" "\n" "How to calibrate:\n" -"1. Run the pressure advance test for at least 3 speeds per acceleration " -"value. It is recommended that the test is run for at least the speed of the " -"external perimeters, the speed of the internal perimeters and the fastest " -"feature print speed in your profile (usually its the sparse or solid " -"infill). Then run them for the same speeds for the slowest and fastest print " -"accelerations,and no faster than the recommended maximum acceleration as " -"given by the Klipper input shaper.\n" +"1. Run the pressure advance test for at least 3 speeds per acceleration value. " +"It is recommended that the test is run for at least the speed of the external " +"perimeters, the speed of the internal perimeters and the fastest feature print " +"speed in your profile (usually its the sparse or solid infill). Then run them " +"for the same speeds for the slowest and fastest print accelerations,and no " +"faster than the recommended maximum acceleration as given by the Klipper input " +"shaper.\n" "2. Take note of the optimal PA value for each volumetric flow speed and " "acceleration. You can find the flow number by selecting flow from the color " -"scheme drop down and move the horizontal slider over the PA pattern lines. " -"The number should be visible at the bottom of the page. The ideal PA value " -"should be decreasing the higher the volumetric flow is. If it is not, " -"confirm that your extruder is functioning correctly.The slower and with less " -"acceleration you print, the larger the range of acceptable PA values. If no " -"difference is visible, use the PA value from the faster test.3. Enter the " -"triplets of PA values, Flow and Accelerations in the text box here and save " -"your filament profile\n" +"scheme drop down and move the horizontal slider over the PA pattern lines. The " +"number should be visible at the bottom of the page. The ideal PA value should " +"be decreasing the higher the volumetric flow is. If it is not, confirm that " +"your extruder is functioning correctly.The slower and with less acceleration " +"you print, the larger the range of acceptable PA values. If no difference is " +"visible, use the PA value from the faster test.3. Enter the triplets of PA " +"values, Flow and Accelerations in the text box here and save your filament " +"profile\n" "\n" msgstr "" -"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını " -"ve ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " +"Basınç ilerlemesi (basınç) değerlerinin setlerini, hacimsel akış hızlarını ve " +"ölçüldükleri ivmeleri virgülle ayırarak ekleyin. Satır başına bir değer " "kümesi. Örneğin\n" "0.04,3.96,3000\n" "0,033,3,96,10000\n" @@ -11011,32 +10953,30 @@ msgstr "" "0.026,7.91,10000\n" "\n" "Nasıl kalibre edilir:\n" -"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini " -"çalıştırın. Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve " -"profilinizdeki en hızlı özellik yazdırma hızı (genellikle seyrek veya katı " -"dolgudur) için çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en " -"hızlı yazdırma hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş " -"şekillendirici tarafından verilen önerilen maksimum hızlanmadan daha hızlı " -"değil.\n" +"1. Hızlanma değeri başına en az 3 hız için basınç ilerleme testini çalıştırın. " +"Testin en azından dış çevrelerin hızı, iç çevrelerin hızı ve profilinizdeki en " +"hızlı özellik yazdırma hızı (genellikle seyrek veya katı dolgudur) için " +"çalıştırılması önerilir. Daha sonra bunları, en yavaş ve en hızlı yazdırma " +"hızlanmaları için aynı hızlarda çalıştırın ve klipper giriş şekillendirici " +"tarafından verilen önerilen maksimum hızlanmadan daha hızlı değil.\n" "2. Her hacimsel akış hızı ve ivme için en uygun PA değerini not edin. Renk " -"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen " -"çizgileri üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara " -"sayfanın altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek " -"olursa o kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde " -"çalıştığını doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, " -"kabul edilebilir PA değerleri aralığı o kadar geniş olur. Hiçbir fark " -"görünmüyorsa, daha hızlı olan testteki PA değerini kullanın.3. Buradaki " -"metin kutusuna PA değerleri, Akış ve Hızlanma üçlüsünü girin ve filament " -"profilinizi kaydedin\n" +"şeması açılır menüsünden akışı seçerek ve yatay kaydırıcıyı PA desen çizgileri " +"üzerinde hareket ettirerek akış numarasını bulabilirsiniz. Numara sayfanın " +"altında görünmelidir. İdeal PA değeri hacimsel akış ne kadar yüksek olursa o " +"kadar azalmalıdır. Değilse, ekstruderinizin doğru şekilde çalıştığını " +"doğrulayın. Ne kadar yavaş ve daha az ivmeyle yazdırırsanız, kabul edilebilir " +"PA değerleri aralığı o kadar geniş olur. Hiçbir fark görünmüyorsa, daha hızlı " +"olan testteki PA değerini kullanın.3. Buradaki metin kutusuna PA değerleri, " +"Akış ve Hızlanma üçlüsünü girin ve filament profilinizi kaydedin\n" msgid "Enable adaptive pressure advance for overhangs (beta)" msgstr "Çıkıntılar için uyarlanabilir basınç ilerlemesini etkinleştirin (beta)" msgid "" -"Enable adaptive PA for overhangs as well as when flow changes within the " -"same feature. This is an experimental option, as if the PA profile is not " -"set accurately, it will cause uniformity issues on the external surfaces " -"before and after overhangs.\n" +"Enable adaptive PA for overhangs as well as when flow changes within the same " +"feature. This is an experimental option, as if the PA profile is not set " +"accurately, it will cause uniformity issues on the external surfaces before " +"and after overhangs.\n" msgstr "" "Aynı özellik içinde akış değiştiğinde ve çıkıntılar için uyarlanabilir PA’yı " "etkinleştirin. Bu deneysel bir seçenektir, sanki basınç profili doğru " @@ -11049,32 +10989,31 @@ msgstr "Köprüler için basınç ilerlemesi" msgid "" "Pressure advance value for bridges. Set to 0 to disable. \n" "\n" -" A lower PA value when printing bridges helps reduce the appearance of " -"slight under extrusion immediately after bridges. This is caused by the " -"pressure drop in the nozzle when printing in the air and a lower PA helps " -"counteract this." +" A lower PA value when printing bridges helps reduce the appearance of slight " +"under extrusion immediately after bridges. This is caused by the pressure drop " +"in the nozzle when printing in the air and a lower PA helps counteract this." msgstr "" "Köprüler için basınç ilerleme değeri. Devre dışı bırakmak için 0’a " "ayarlayın. \n" "\n" " Köprüleri yazdırırken daha düşük bir basınç değeri, köprülerden hemen sonra " -"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, " -"havada yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir " -"basınç, bunu önlemeye yardımcı olur." +"hafif ekstrüzyon görünümünün azaltılmasına yardımcı olur. Bunun nedeni, havada " +"yazdırma sırasında nozuldaki basınç düşüşüdür ve daha düşük bir basınç, bunu " +"önlemeye yardımcı olur." msgid "" -"Default line width if other line widths are set to 0. If expressed as a %, " -"it will be computed over the nozzle diameter." +"Default line width if other line widths are set to 0. If expressed as a %, it " +"will be computed over the nozzle diameter." msgstr "" -"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % " -"olarak ifade edilirse nozul çapı üzerinden hesaplanacaktır." +"Diğer çizgi genişlikleri 0'a ayarlanmışsa varsayılan çizgi genişliği. % olarak " +"ifade edilirse nozul çapı üzerinden hesaplanacaktır." msgid "Keep fan always on" msgstr "Fanı her zaman açık tut" msgid "" -"If enable this setting, part cooling fan will never be stopped and will run " -"at least at minimum speed to reduce the frequency of starting and stopping" +"If enable this setting, part cooling fan will never be stopped and will run at " +"least at minimum speed to reduce the frequency of starting and stopping" msgstr "" "Bu ayarı etkinleştirirseniz, parça soğutma fanı hiçbir zaman durdurulmayacak " "ve başlatma ve durdurma sıklığını azaltmak için en azından minimum hızda " @@ -11110,9 +11049,9 @@ msgid "Layer time" msgstr "Katman süresi" 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 "" "Tahmini süresi bu değerden kısa olan katlarda parça soğutma fanı devreye " "girecektir. Fan hızı, katman yazdırma süresine göre minimum ve maksimum fan " @@ -11141,9 +11080,9 @@ msgstr "" "kontrol edilmediği anlamına gelir." 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 "" "Bu ayar, saniyede ne kadar miktarda filamentin eritilip ekstrude " "edilebileceğini gösterir. Çok yüksek ve makul olmayan hız ayarı durumunda, " @@ -11161,34 +11100,34 @@ msgid "" "machines, it's typically 0. For statistics only" msgstr "" "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Genellikle tek " -"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler " -"veya çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca " -"istatistikler için." +"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler veya " +"çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca istatistikler " +"için." msgid "Filament unload time" msgstr "Filament boşaltma süresi" msgid "" -"Time to unload old filament when switch filament. It's usually applicable " -"for single-extruder multi-material machines. For tool changers or multi-tool " +"Time to unload old filament when switch filament. It's usually applicable for " +"single-extruder multi-material machines. For tool changers or multi-tool " "machines, it's typically 0. For statistics only" msgstr "" "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Genellikle tek " -"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler " -"veya çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca " -"istatistikler için." +"ekstruderli çok malzemeli makineler için geçerlidir. Araç değiştiriciler veya " +"çok takımlı makineler için bu değer genellikle 0’dır. Yalnızca istatistikler " +"için." msgid "Tool change time" msgstr "Takım değiştirme süresi" msgid "" -"Time taken to switch tools. It's usually applicable for tool changers or " -"multi-tool machines. For single-extruder multi-material machines, it's " -"typically 0. For statistics only" +"Time taken to switch tools. It's usually applicable for tool changers or multi-" +"tool machines. For single-extruder multi-material machines, it's typically 0. " +"For statistics only" msgstr "" -"Araç değiştirmek için harcanan zaman. Genellikle araç değiştiriciler veya " -"çok araçlı makineler için geçerlidir. Tek ekstruderli çok malzemeli " -"makineler için bu değer genellikle 0’dır. Yalnızca istatistikler için." +"Araç değiştirmek için harcanan zaman. Genellikle araç değiştiriciler veya çok " +"araçlı makineler için geçerlidir. Tek ekstruderli çok malzemeli makineler için " +"bu değer genellikle 0’dır. Yalnızca istatistikler için." msgid "" "Filament diameter is used to calculate extrusion in gcode, so it's important " @@ -11204,16 +11143,16 @@ msgid "" "Pellet flow coefficient is empirically derived and allows for volume " "calculation for pellet printers.\n" "\n" -"Internally it is converted to filament_diameter. All other volume " -"calculations remain the same.\n" +"Internally it is converted to filament_diameter. All other volume calculations " +"remain the same.\n" "\n" "filament_diameter = sqrt( (4 * pellet_flow_coefficient) / PI )" msgstr "" "Pelet akış katsayısı ampirik olarak türetilir ve pelet yazıcıları için hacim " "hesaplamasına olanak tanır.\n" "\n" -"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları " -"aynı kalır.\n" +"Dahili olarak filament_çapına dönüştürülür. Diğer tüm hacim hesaplamaları aynı " +"kalır.\n" "\n" "filament_çapı = sqrt( (4 * pellet_akış_katsayısı) / PI )" @@ -11228,11 +11167,11 @@ msgid "" "Be sure to allow enough space between objects, as this compensation is done " "after the checks." msgstr "" -"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine " -"94 mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " +"Filamentin soğuduktan sonra alacağı büzülme yüzdesini girin (100 mm yerine 94 " +"mm ölçerseniz 94%). Parça, telafi etmek için xy'de ölçeklendirilecektir. " "Yalnızca çevre için kullanılan filament dikkate alınır.\n" -"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli " -"boşluk bıraktığınızdan emin olun." +"Bu telafi kontrollerden sonra yapıldığından, nesneler arasında yeterli boşluk " +"bıraktığınızdan emin olun." msgid "Shrinkage (Z)" msgstr "Büzülme (Z)" @@ -11243,8 +11182,8 @@ msgid "" "if you measure 94mm instead of 100mm). The part will be scaled in Z to " "compensate." msgstr "" -"Filamentin soğuduktan sonra alacağı çekme yüzdesini girin (100 mm yerine 94 " -"mm ölçerseniz %94). Telafi etmek için parça Z olarak ölçeklendirilecektir." +"Filamentin soğuduktan sonra alacağı çekme yüzdesini girin (100 mm yerine 94 mm " +"ölçerseniz %94). Telafi etmek için parça Z olarak ölçeklendirilecektir." msgid "Loading speed" msgstr "Yükleme hızı" @@ -11292,11 +11231,11 @@ msgid "Number of cooling moves" msgstr "Soğutma hareketi sayısı" msgid "" -"Filament is cooled by being moved back and forth in the cooling tubes. " -"Specify desired number of these moves." +"Filament is cooled by being moved back and forth in the cooling tubes. Specify " +"desired number of these moves." msgstr "" -"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. " -"Bu sayısını belirtin." +"Filament, soğutma tüpleri içinde ileri geri hareket ettirilerek soğutulur. Bu " +"sayısını belirtin." msgid "Stamping loading speed" msgstr "Damgalama yükleme hızı" @@ -11309,8 +11248,8 @@ msgstr "Soğutma tüpünün merkezinden ölçülen damgalama mesafesi" msgid "" "If set to nonzero value, filament is moved toward the nozzle between the " -"individual cooling moves (\"stamping\"). This option configures how long " -"this movement should be before the filament is retracted again." +"individual cooling moves (\"stamping\"). This option configures how long this " +"movement should be before the filament is retracted again." msgstr "" "Sıfırdan farklı bir değere ayarlanırsa filaman bireysel soğutma hareketleri " "arasında (“damgalama”) nüzule doğru hareket ettirilir. Bu seçenek, filamanın " @@ -11329,16 +11268,15 @@ msgstr "Silme kulesi üzerinde minimum boşaltım" 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, Orca Slicer will always prime this amount of material into the wipe " -"tower to produce successive infill or sacrificial object extrusions reliably." +"stable. Before purging the print head into an infill or a sacrificial object, " +"Orca Slicer will always prime this amount of material into the wipe tower to " +"produce successive infill or sacrificial object extrusions reliably." msgstr "" "Bir takım değişiminden sonra, yeni yüklenen filamentin nozul içindeki kesin " "konumu bilinmeyebilir ve filament basıncı muhtemelen henüz stabil değildir. " "Yazdırma kafasını bir dolguya veya kurban nesneye boşaltmadan önce Orca " -"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir " -"şekilde üretmek için her zaman bu miktardaki malzemeyi silme kulesine " -"hazırlayacaktır." +"Slicer, ardışık dolgu veya kurban nesne ekstrüzyonlarını güvenilir bir şekilde " +"üretmek için her zaman bu miktardaki malzemeyi silme kulesine hazırlayacaktır." msgid "Speed of the last cooling move" msgstr "Son soğutma hareketi hızı" @@ -11360,10 +11298,10 @@ msgid "Enable ramming for multi-tool setups" msgstr "Çoklu araç kurulumları için sıkıştırmayı etkinleştirin" msgid "" -"Perform ramming when using multi-tool printer (i.e. when the 'Single " -"Extruder Multimaterial' in Printer Settings is unchecked). When checked, a " -"small amount of filament is rapidly extruded on the wipe tower just before " -"the toolchange. This option is only used when the wipe tower is enabled." +"Perform ramming when using multi-tool printer (i.e. when the 'Single Extruder " +"Multimaterial' in Printer Settings is unchecked). When checked, a small amount " +"of filament is rapidly extruded on the wipe tower just before the toolchange. " +"This option is only used when the wipe tower is enabled." msgstr "" "Çok takımlı yazıcı kullanırken sıkıştırma gerçekleştirin (yani Yazıcı " "Ayarları'ndaki 'Tek Ekstruder Çoklu Malzeme' işaretli olmadığında). " @@ -11398,17 +11336,14 @@ msgstr "Filament malzeme türü" msgid "Soluble material" msgstr "Çözünür malzeme" -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 "" -"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için " -"kullanılır" +"Çözünür malzeme genellikle destek ve destek arayüzünü yazdırmak için kullanılır" msgid "Support material" msgstr "Destek malzemesi" -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 "" "Destek malzemesi yaygın olarak destek ve destek arayüzünü yazdırmak için " "kullanılır" @@ -11417,9 +11352,9 @@ msgid "Softening temperature" msgstr "Yumuşama sıcaklığı" msgid "" -"The material softens at this temperature, so when the bed temperature is " -"equal to or greater than it, it's highly recommended to open the front door " -"and/or remove the upper glass to avoid clogging." +"The material softens at this temperature, so when the bed temperature is equal " +"to or greater than it, it's highly recommended to open the front door and/or " +"remove the upper glass to avoid clogging." msgstr "" "Filament bu sıcaklıkta yumuşar, bu nedenle yatak sıcaklığı bununla eşit veya " "daha yüksekse, tıkanmaları önlemek için ön kapağı açmanız ve/veya üst camı " @@ -11447,8 +11382,8 @@ msgid "Sparse infill direction" msgstr "Seyrek dolgu yönü" msgid "" -"Angle for sparse infill pattern, which controls the start or main direction " -"of line" +"Angle for sparse infill pattern, which controls the start or main direction of " +"line" msgstr "" "Hattın başlangıcını veya ana yönünü kontrol eden seyrek dolgu deseni açısı" @@ -11456,10 +11391,9 @@ msgid "Solid infill direction" msgstr "Katı dolgu yönü" msgid "" -"Angle for solid infill pattern, which controls the start or main direction " -"of line" -msgstr "" -"Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" +"Angle for solid infill pattern, which controls the start or main direction of " +"line" +msgstr "Hattın başlangıcını veya ana yönünü kontrol eden katı dolgu deseni açısı" msgid "Rotate solid infill direction" msgstr "Katı dolgu yönünü döndür" @@ -11475,8 +11409,8 @@ msgid "" "Density of internal sparse infill, 100% turns all sparse infill into solid " "infill and internal solid infill pattern will be used" msgstr "" -"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya " -"dönüştürür ve iç katı dolgu modeli kullanılacaktır" +"İç seyrek dolgunun yoğunluğu, %100 tüm seyrek dolguyu katı dolguya dönüştürür " +"ve iç katı dolgu modeli kullanılacaktır" msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -11523,24 +11457,23 @@ msgstr "Dolgu uzunluğu" 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. Orca Slicer 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" +"calculated over infill extrusion width. Orca Slicer 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 "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle " -"bir çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. infill_anchor_max'tan daha kısa böyle bir " +"çevre segmenti bulunamazsa, dolgu hattı yalnızca bir taraftaki bir çevre " "segmentine bağlanır ve alınan çevre segmentinin uzunluğu bu parametreyle " "sınırlıdır, ancak çapa_uzunluk_max'tan uzun olamaz.\n" -"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için " -"bu parametreyi sıfıra ayarlayın." +"Tek bir dolgu hattına bağlı sabitleme çevrelerini devre dışı bırakmak için bu " +"parametreyi sıfıra ayarlayın." msgid "0 (no open anchors)" msgstr "0 (açık bağlantı yok)" @@ -11554,24 +11487,23 @@ msgstr "Dolgu maksimum uzunluk" 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. Orca Slicer 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" +"calculated over infill extrusion width. Orca Slicer 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 "" "Bir dolgu hattını, ek bir çevrenin kısa bir bölümü ile bir iç çevreye " -"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon " -"genişliği üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir " -"çevre segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre " -"segmenti bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine " -"bağlanır ve alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır " -"ancak bu parametreden daha uzun olamaz.\n" -"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 " -"ve 0 ile aynı sonucu oluşturmalıdır." +"bağlayın. Yüzde olarak ifade edilirse (örnek: %15) dolgu ekstrüzyon genişliği " +"üzerinden hesaplanır. Orca Slicer iki yakın dolgu hattını kısa bir çevre " +"segmentine bağlamaya çalışıyor. Bu parametreden daha kısa bir çevre segmenti " +"bulunamazsa, dolgu hattı sadece bir kenardaki bir çevre segmentine bağlanır ve " +"alınan çevre segmentinin uzunluğu infill_anchor ile sınırlıdır ancak bu " +"parametreden daha uzun olamaz.\n" +"0'a ayarlanırsa dolgu bağlantısı için eski algoritma kullanılacaktır; 1000 ve " +"0 ile aynı sonucu oluşturmalıdır." msgid "0 (Simple connect)" msgstr "0 (Basit bağlantı)" @@ -11589,26 +11521,26 @@ msgid "" "Acceleration of top surface infill. Using a lower value may improve top " "surface quality" msgstr "" -"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması " -"üst yüzey kalitesini iyileştirebilir" +"Üst yüzey dolgusunun hızlandırılması. Daha düşük bir değerin kullanılması üst " +"yüzey kalitesini iyileştirebilir" msgid "Acceleration of outer wall. Using a lower value can improve quality" msgstr "" "Dış duvarın hızlanması. Daha düşük bir değer kullanmak kaliteyi artırabilir" 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 "" -"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), " -"dış duvar ivmesine göre hesaplanacaktır." +"Köprülerin hızlandırılması. Değer yüzde olarak ifade edilirse (örn. %50), dış " +"duvar ivmesine göre hesaplanacaktır." msgid "mm/s² or %" msgstr "mm/s² veya %" 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 "" "Seyrek dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " "%100), varsayılan ivmeye göre hesaplanacaktır." @@ -11638,10 +11570,8 @@ msgid "accel_to_decel" msgstr "Accel_to_decel" #, c-format, boost-format -msgid "" -"Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" -msgstr "" -"Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" +msgid "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" +msgstr "Klipper'ın max_accel_to_decel değeri ivmenin bu %%'sine göre ayarlanacak" msgid "Jerk of outer walls" msgstr "Dış duvar JERK değeri" @@ -11662,8 +11592,8 @@ msgid "Jerk for travel" msgstr "Seyahat için JERK değeri" msgid "" -"Line width of initial layer. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width of initial layer. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" "İlk katmanın çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " "hesaplanacaktır." @@ -11672,8 +11602,8 @@ msgid "Initial layer height" msgstr "Başlangıç katman yüksekliği" msgid "" -"Height of initial layer. Making initial layer height to be thick slightly " -"can improve build plate adhesion" +"Height of initial layer. Making initial layer height to be thick slightly can " +"improve build plate adhesion" msgstr "" "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " "plakasının yapışmasını iyileştirebilir" @@ -11714,17 +11644,16 @@ msgstr "Maksimum fan hızı" 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 "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " -"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, " -"\"close_fan_the_first_x_layers\" + 1 katmanında izin verilen maksimum hızda " -"çalışacaktır." +"\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden düşükse " +"göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers\" + 1 " +"katmanında izin verilen maksimum hızda çalışacaktır." msgid "layer" msgstr "katman" @@ -11733,8 +11662,8 @@ msgid "Support interface fan speed" msgstr "Destekler için fan hızı" 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 overridden by disable_fan_first_layers." msgstr "" @@ -11744,8 +11673,8 @@ msgstr "" "Yalnızca devre dışı_fan_first_layers tarafından geçersiz kılınabilir." 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 "" "Duvara baskı yaparken rastgele titreme, böylece yüzeyin pürüzlü bir görünüme " "sahip olması. Bu ayar bulanık konumu kontrol eder" @@ -11773,10 +11702,8 @@ msgid "Fuzzy skin point distance" msgstr "Bulanık kaplama noktası mesafesi" msgid "" -"The average distance between the random points introduced on each line " -"segment" -msgstr "" -"Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" +"The average distance between the random points introduced on each line segment" +msgstr "Her çizgi parçasına eklenen rastgele noktalar arasındaki ortalama mesafe" msgid "Apply fuzzy skin to first layer" msgstr "Bulanık cildi ilk katmana uygulayın" @@ -11791,9 +11718,9 @@ msgid "Layers and Perimeters" msgstr "Katmanlar ve Çevreler" msgid "" -"Don't print gap fill with a length is smaller than the threshold specified " -"(in mm). This setting applies to top, bottom and solid infill and, if using " -"the classic perimeter generator, to wall gap fill. " +"Don't print gap fill with a length is smaller than the threshold specified (in " +"mm). This setting applies to top, bottom and solid infill and, if using the " +"classic perimeter generator, to wall gap fill. " msgstr "" "Belirtilen eşikten (mm cinsinden) daha küçük bir uzunluğa sahip boşluk " "dolgusunu yazdırmayın. Bu ayar üst, alt ve katı dolgu için ve klasik çevre " @@ -11803,21 +11730,21 @@ msgid "" "Speed of gap infill. Gap usually has irregular line width and should be " "printed more slowly" msgstr "" -"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir " -"ve daha yavaş yazdırılmalıdır" +"Boşluk doldurma hızı. Boşluk genellikle düzensiz çizgi genişliğine sahiptir ve " +"daha yavaş yazdırılmalıdır" msgid "Precise Z height" msgstr "Hassas z yüksekliği" msgid "" "Enable this to get precise z height of object after slicing. It will get the " -"precise object height by fine-tuning the layer heights of the last few " -"layers. Note that this is an experimental parameter." +"precise object height by fine-tuning the layer heights of the last few layers. " +"Note that this is an experimental parameter." msgstr "" "Dilimlemeden sonra nesnenin kesin z yüksekliğini elde etmek için bunu " "etkinleştirin. Son birkaç katmanın katman yüksekliklerine ince ayar yaparak " -"kesin nesne yüksekliğini elde edecektir. Bunun deneysel bir parametre " -"olduğunu unutmayın." +"kesin nesne yüksekliğini elde edecektir. Bunun deneysel bir parametre olduğunu " +"unutmayın." msgid "Arc fitting" msgstr "Ark" @@ -11826,11 +11753,11 @@ msgid "" "Enable this to get a G-code file which has G2 and G3 moves. The fitting " "tolerance is same as the resolution. \n" "\n" -"Note: For Klipper machines, this option is recommended to be disabled. " -"Klipper does not benefit from arc commands as these are split again into " -"line segments by the firmware. This results in a reduction in surface " -"quality as line segments are converted to arcs by the slicer and then back " -"to line segments by the firmware." +"Note: For Klipper machines, this option is recommended to be disabled. Klipper " +"does not benefit from arc commands as these are split again into line segments " +"by the firmware. This results in a reduction in surface quality as line " +"segments are converted to arcs by the slicer and then back to line segments by " +"the firmware." msgstr "" "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " "etkinleştirin. Montaj toleransı çözünürlükle aynıdır. \n" @@ -11839,23 +11766,20 @@ msgstr "" "Klipper, yazılım tarafından tekrar çizgi bölümlerine bölündüğü için yay " "komutlarından faydalanmaz. Bu, çizgi bölümlerinin dilimleyici tarafından " "yaylara dönüştürülmesi ve ardından donanım yazılımı tarafından tekrar çizgi " -"bölümlerine dönüştürülmesi nedeniyle yüzey kalitesinde bir azalmaya neden " -"olur." +"bölümlerine dönüştürülmesi nedeniyle yüzey kalitesinde bir azalmaya neden olur." msgid "Add line number" msgstr "Satır numarası ekle" msgid "Enable this to add line number(Nx) at the beginning of each G-Code line" msgstr "" -"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu " -"etkinleştirin" +"Her G Kodu satırının başına satır numarası (Nx) eklemek için bunu etkinleştirin" msgid "Scan first layer" msgstr "İlk katmanı tara" msgid "" -"Enable this to enable the camera on printer to check the quality of first " -"layer" +"Enable this to enable the camera on printer to check the quality of first layer" msgstr "" "Yazıcıdaki kameranın ilk katmanın kalitesini kontrol etmesini sağlamak için " "bunu etkinleştirin" @@ -11867,8 +11791,8 @@ msgid "" "The metallic material of nozzle. This determines the abrasive resistance of " "nozzle, and what kind of filament can be printed" msgstr "" -"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür " -"filamentin basılabileceğini belirler" +"Nozulnin metalik malzemesi. Bu, nozulun aşınma direncini ve ne tür filamentin " +"basılabileceğini belirler" msgid "Undefine" msgstr "Tanımsız" @@ -11920,8 +11844,8 @@ msgid "Best auto arranging position in range [0,1] w.r.t. bed shape." msgstr "Yatak şekline göre [0,1] aralığında en iyi otomatik düzenleme konumu." msgid "" -"Enable this option if machine has auxiliary part cooling fan. G-code " -"command: M106 P2 S(0-255)." +"Enable this option if machine has auxiliary part cooling fan. G-code command: " +"M106 P2 S(0-255)." msgstr "" "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin. G-code " "komut: M106 P2 S(0-255)." @@ -11940,8 +11864,7 @@ msgstr "" "Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " "yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" -"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " -"görürler).\n" +"Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi görürler).\n" "'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları başlangıç " "gcode'una taşınmayacaktır.\n" "Devre dışı bırakmak için 0'ı kullanın." @@ -11964,8 +11887,8 @@ msgid "" msgstr "" "Soğutma fanını başlatmak için hedef hıza düşmeden önce bu süre boyunca " "maksimum fan hızı komutunu verin.\n" -"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın " -"daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" +"Bu, düşük PWM/gücün fanın durma noktasından dönmeye başlaması veya fanın daha " +"hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." msgid "Time cost" @@ -12008,47 +11931,44 @@ msgid "Klipper" msgstr "Klipper" msgid "Pellet Modded Printer" -msgstr "Pelet Modlu Yazıcı" +msgstr "Pelet modlu yazıcı" msgid "Enable this option if your printer uses pellets instead of filaments" -msgstr "" -"Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" +msgstr "Yazıcınız filament yerine pellet kullanıyorsa bu seçeneği etkinleştirin" msgid "Support multi bed types" msgstr "Çoklu plaka" msgid "Enable this option if you want to use multiple bed types" -msgstr "" -"Birden fazla plaka tipi kullanmak istiyorsanız bu seçeneği etkinleştirin" +msgstr "Birden fazla plaka tipi kullanmak istiyorsanız bu seçeneği etkinleştirin" msgid "Label objects" msgstr "Nesneleri etiketle" 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." +"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 etiketleme yazdırma hareketlerine ait oldukları nesneyle ilgili " -"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject " -"eklentisi için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme " -"kurulumu ve Nesneye Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." +"yorumlar eklemek için bunu etkinleştirin; bu, Octoprint CancelObject eklentisi " +"için kullanışlıdır. Bu ayarlar Tek Ekstruder Çoklu Malzeme kurulumu ve Nesneye " +"Temizleme / Dolguya Temizleme ile uyumlu DEĞİLDİR." msgid "Exclude objects" msgstr "Nesneleri hariç tut" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" -msgstr "" -"G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" +msgstr "G koduna EXCLUDE OBJECT komutunu eklemek için bu seçeneği etkinleştirin" msgid "Verbose G-code" msgstr "Ayrıntılı G kodu" 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." +"descriptive text. If you print from SD card, the additional weight of the file " +"could make your firmware slow down." msgstr "" "Her satırın açıklayıcı bir metinle açıklandığı, yorumlu bir G kodu dosyası " "almak için bunu etkinleştirin. SD karttan yazdırırsanız dosyanın ilave " @@ -12071,14 +11991,14 @@ msgstr "Dolgu kombinasyonu - Maksimum katman yüksekliği" msgid "" "Maximum layer height for the combined sparse infill. \n" "\n" -"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in " -"print time) or a value of ~80% to maximize sparse infill strength.\n" +"Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print " +"time) or a value of ~80% to maximize sparse infill strength.\n" "\n" -"The number of layers over which infill is combined is derived by dividing " -"this value with the layer height and rounded down to the nearest decimal.\n" +"The number of layers over which infill is combined is derived by dividing this " +"value with the layer height and rounded down to the nearest decimal.\n" "\n" -"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values " -"(eg 80%). This value must not be larger than the nozzle diameter." +"Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg " +"80%). This value must not be larger than the nozzle diameter." msgstr "" "Birleşik seyrek dolgu için maksimum katman yüksekliği. \n" "\n" @@ -12089,15 +12009,15 @@ msgstr "" "Dolgunun birleştirildiği katmanların sayısı, bu değerin katman yüksekliğine " "bölünmesiyle elde edilir ve en yakın ondalık sayıya yuvarlanır.\n" "\n" -"Mutlak mm değerlerini (örn. 0,4 mm’lik nozul için 0,32 mm) veya % " -"değerlerini (örn. %80) kullanın. Bu değer nozul çapından büyük olmamalıdır." +"Mutlak mm değerlerini (örn. 0,4 mm’lik nozul için 0,32 mm) veya % değerlerini " +"(örn. %80) kullanın. Bu değer nozul çapından büyük olmamalıdır." msgid "Filament to print internal sparse infill." msgstr "İç seyrek dolguyu yazdırmak için filament." msgid "" -"Line width of internal sparse infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal sparse infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" "İç seyrek dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -12107,15 +12027,15 @@ msgstr "Dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" -"Infill area is enlarged slightly to overlap with wall for better bonding. " -"The percentage value is relative to line width of sparse infill. Set this " -"value to ~10-15% to minimize potential over extrusion and accumulation of " -"material resulting in rough top surfaces." +"Infill area is enlarged slightly to overlap with wall for better bonding. The " +"percentage value is relative to line width of sparse infill. Set this value to " +"~10-15% to minimize potential over extrusion and accumulation of material " +"resulting in rough top surfaces." msgstr "" "Daha iyi yapışma için dolgu alanı duvarla örtüşecek şekilde hafifçe " "genişletilir. Yüzde değeri seyrek dolgunun çizgi genişliğine göredir. Aşırı " -"ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi " -"potansiyelini en aza indirmek için bu değeri ~%10-15’e ayarlayın." +"ekstrüzyon ve pürüzlü üst yüzeylere neden olan malzeme birikmesi potansiyelini " +"en aza indirmek için bu değeri ~%10-15’e ayarlayın." msgid "Top/Bottom solid infill/wall overlap" msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" @@ -12123,8 +12043,8 @@ msgstr "Üst/Alt katı dolgu/Duvar örtüşmesi" #, no-c-format, no-boost-format msgid "" "Top solid infill area is enlarged slightly to overlap with wall for better " -"bonding and to minimize the appearance of pinholes where the top infill " -"meets the walls. A value of 25-30% is a good starting point, minimizing the " +"bonding and to minimize the appearance of pinholes where the top infill meets " +"the walls. A value of 25-30% is a good starting point, minimizing the " "appearance of pinholes. The percentage value is relative to line width of " "sparse infill" msgstr "" @@ -12142,12 +12062,12 @@ msgstr "Arayüz kabukları" msgid "" "Force the generation of solid shells between adjacent materials/volumes. " -"Useful for multi-extruder prints with translucent materials or manual " -"soluble support material" +"Useful for multi-extruder prints with translucent materials or manual soluble " +"support material" msgstr "" "Bitişik malzemeler/hacimler arasında katı kabuk oluşumunu zorlayın. Yarı " -"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu " -"ekstruder baskıları için kullanışlıdır" +"saydam malzemelerle veya elle çözülebilen destek malzemesiyle çoklu ekstruder " +"baskıları için kullanışlıdır" msgid "Maximum width of a segmented region" msgstr "Bölümlere ayrılmış bir bölgenin maksimum genişliği" @@ -12169,8 +12089,7 @@ msgstr "" "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. " "“mmu_segmented_region_max_width” sıfırsa veya " "“mmu_segmented_region_interlocking_length”, “mmu_segmented_region_max_width” " -"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı " -"bırakır." +"değerinden büyükse göz ardı edilecektir. Sıfır bu özelliği devre dışı bırakır." msgid "Use beam interlocking" msgstr "Işın kilitlemeyi kullanın" @@ -12214,8 +12133,7 @@ msgid "" "structure, measured in cells. Too few cells will result in poor adhesion." msgstr "" "Hücrelerde ölçülen, birbirine kenetlenen yapıyı oluşturmak için filamentler " -"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden " -"olur." +"arasındaki sınırdan mesafe. Çok az hücre yapışmanın zayıf olmasına neden olur." msgid "Interlocking boundary avoidance" msgstr "Birbirine kenetlenen sınırdan kaçınma" @@ -12234,9 +12152,9 @@ 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 "" -"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki " -"yüzeye tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi " -"katmanın ütüleneceğini kontrol eder" +"Ütüleme, düz yüzeyi daha pürüzsüz hale getirmek için aynı yükseklikteki yüzeye " +"tekrar baskı yapmak için küçük akış kullanmaktır. Bu ayar hangi katmanın " +"ütüleneceğini kontrol eder" msgid "No ironing" msgstr "Ütüleme yok" @@ -12263,8 +12181,8 @@ 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 "" -"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki " -"akışa göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" +"Ütüleme sırasında çıkacak malzeme miktarı. Normal katman yüksekliğindeki akışa " +"göre. Çok yüksek değer yüzeyde aşırı ekstrüzyona neden olur" msgid "Ironing line spacing" msgstr "Ütüleme çizgi aralığı" @@ -12285,8 +12203,8 @@ msgid "" "The angle ironing is done at. A negative number disables this function and " "uses the default method." msgstr "" -"Köşebent ütüleme işlemi yapılır. Negatif bir sayı bu işlevi devre dışı " -"bırakır ve varsayılan yöntemi kullanır." +"Köşebent ütüleme işlemi yapılır. Negatif bir sayı bu işlevi devre dışı bırakır " +"ve varsayılan yöntemi kullanır." msgid "This gcode part is inserted at every layer change after lift z" msgstr "" @@ -12316,11 +12234,11 @@ msgstr "" "G kodu tadı Klipper olarak ayarlandığında bu seçenek göz ardı edilecektir." 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 "" -"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. " -"Kullanıcı gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" +"Bu G kodu duraklatma yazdırması için bir kod olarak kullanılacaktır. Kullanıcı " +"gcode görüntüleyiciye duraklatma G kodunu ekleyebilir" msgid "This G-code will be used as a custom code" msgstr "Bu G kodu özel kod olarak kullanılacak" @@ -12448,8 +12366,8 @@ msgid "Maximum acceleration for travel (M204 T), it only applies to Marlin 2" msgstr "Seyahat için maksimum ivme (M204 T), yalnızca Marlin 2 için geçerlidir" 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 "" "Otomatik soğutma etkinleştirildiğinde parça soğutma fanı hızı artırılabilir. " "Bu, parça soğutma fanının maksimum hız sınırlamasıdır" @@ -12461,16 +12379,16 @@ msgid "" "The largest printable layer height for extruder. Used tp limits the maximum " "layer hight when enable adaptive layer height" msgstr "" -"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Uyarlanabilir " -"katman yüksekliği etkinleştirildiğinde maksimum katman yüksekliğini " -"sınırlamak için kullanılır" +"Ekstruder için yazdırılabilir en büyük katman yüksekliği. Uyarlanabilir katman " +"yüksekliği etkinleştirildiğinde maksimum katman yüksekliğini sınırlamak için " +"kullanılır" msgid "Extrusion rate smoothing" msgstr "Ekstrüzyon hızını yumuşatma" msgid "" -"This parameter smooths out sudden extrusion rate changes that happen when " -"the printer transitions from printing a high flow (high speed/larger width) " +"This parameter smooths out sudden extrusion rate changes that happen when the " +"printer transitions from printing a high flow (high speed/larger width) " "extrusion to a lower flow (lower speed/smaller width) extrusion and vice " "versa.\n" "\n" @@ -12480,13 +12398,12 @@ msgid "" "\n" "A value of 0 disables the feature. \n" "\n" -"For a high speed, high flow direct drive printer (like the Bambu lab or " -"Voron) this value is usually not needed. However it can provide some " -"marginal benefit in certain cases where feature speeds vary greatly. For " -"example, when there are aggressive slowdowns due to overhangs. In these " -"cases a high value of around 300-350mm3/s2 is recommended as this allows for " -"just enough smoothing to assist pressure advance achieve a smoother flow " -"transition.\n" +"For a high speed, high flow direct drive printer (like the Bambu lab or Voron) " +"this value is usually not needed. However it can provide some marginal benefit " +"in certain cases where feature speeds vary greatly. For example, when there " +"are aggressive slowdowns due to overhangs. In these cases a high value of " +"around 300-350mm3/s2 is recommended as this allows for just enough smoothing " +"to assist pressure advance achieve a smoother flow transition.\n" "\n" "For slower printers without pressure advance, the value should be set much " "lower. A value of 10-15mm3/s2 is a good starting point for direct drive " @@ -12508,13 +12425,13 @@ msgstr "" "\n" "0 değeri özelliği devre dışı bırakır. \n" "\n" -"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab " -"veya Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik " -"hızlarının büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda " -"sağlayabilir. Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. " -"Bu durumlarda 300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, " -"basınç ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı " -"olmak için yeterli yumuşatmaya izin verir.\n" +"Yüksek hızlı, yüksek akışlı doğrudan tahrikli bir yazıcı için (Bambu lab veya " +"Voron gibi) bu değer genellikle gerekli değildir. Ancak özellik hızlarının " +"büyük ölçüde değiştiği bazı durumlarda marjinal bir fayda sağlayabilir. " +"Örneğin, çıkıntılar nedeniyle agresif yavaşlamalar olduğunda. Bu durumlarda " +"300-350mm3/s2 civarında yüksek bir değer önerilir çünkü bu, basınç " +"ilerlemesinin daha yumuşak bir akış geçişi elde etmesine yardımcı olmak için " +"yeterli yumuşatmaya izin verir.\n" "\n" "Basınç avansı olmayan daha yavaş yazıcılar için değer çok daha düşük " "ayarlanmalıdır. Doğrudan tahrikli ekstruderler için 10-15mm3/s2 ve Bowden " @@ -12554,8 +12471,8 @@ msgstr "Parça soğutma fanı için minimum hız" 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.\n" +"during printing except the first several layers which is defined by no cooling " +"layers.\n" "Please enable auxiliary_fan in printer settings to use this feature. G-code " "command: M106 P2 S(0-255)" msgstr "" @@ -12573,20 +12490,20 @@ msgid "" "layer hight when enable adaptive layer height" msgstr "" "Ekstruder için yazdırılabilir en düşük katman yüksekliği. Kullanılan tp, " -"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman " -"yüksekliğini sınırlar" +"uyarlanabilir katman yüksekliğini etkinleştirirken minimum katman yüksekliğini " +"sınırlar" msgid "Min print speed" msgstr "Minimum baskı hızı" msgid "" "The minimum printing speed that the printer will slow down to to attempt to " -"maintain the minimum layer time above, when slow down for better layer " -"cooling is enabled." +"maintain the minimum layer time above, when slow down for better layer cooling " +"is enabled." msgstr "" "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yukarıdaki " -"minimum katman süresini korumaya çalışmak için yazıcının yavaşlayacağı " -"minimum yazdırma hızı." +"minimum katman süresini korumaya çalışmak için yazıcının yavaşlayacağı minimum " +"yazdırma hızı." msgid "Diameter of nozzle" msgstr "Nozul çapı" @@ -12605,11 +12522,11 @@ msgid "Host Type" msgstr "Bağlantı Türü" msgid "" -"Orca Slicer can upload G-code files to a printer host. This field must " -"contain the kind of the host." +"Orca Slicer can upload G-code files to a printer host. This field must contain " +"the kind of the host." msgstr "" -"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. " -"Bu alan ana bilgisayarın türünü içermelidir." +"Orca Slicer, G kodu dosyalarını bir yazıcı ana bilgisayarına yükleyebilir. Bu " +"alan ana bilgisayarın türünü içermelidir." msgid "Nozzle volume" msgstr "Nozul hacmi" @@ -12628,8 +12545,7 @@ msgstr "Soğutma borusu uzunluğu" msgid "Length of the cooling tube to limit space for cooling moves inside it." msgstr "" -"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün " -"uzunluğu." +"İçindeki soğutma hareketleri alanını sınırlamak üzere soğutma tüpünün uzunluğu." msgid "High extruder current on filament swap" msgstr "Filament değişiminde yüksek ekstruder akımı" @@ -12639,9 +12555,9 @@ msgid "" "filament exchange sequence to allow for rapid ramming feed rates and to " "overcome resistance when loading a filament with an ugly shaped tip." msgstr "" -"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament " -"yüklerken direncin üstesinden gelmek için filament değişim sırası sırasında " -"ekstruder motor akımını artırmak faydalı olabilir." +"Hızlı sıkıştırma hızlarına izin vermek ve kötü kesilmiş bir filament yüklerken " +"direncin üstesinden gelmek için filament değişim sırası sırasında ekstruder " +"motor akımını artırmak faydalı olabilir." msgid "Filament parking position" msgstr "Filament park konumu" @@ -12650,8 +12566,8 @@ msgid "" "Distance of the extruder tip from the position where the filament is parked " "when unloaded. This should match the value in printer firmware." msgstr "" -"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan " -"uzaklığı. Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." +"Ekstruder ucunun, boşaltıldığında filamentin park edildiği konumdan uzaklığı. " +"Bu ayar yazıcı ürün yazılımındaki değerle eşleşmelidir." msgid "Extra loading distance" msgstr "Ekstra yükleme mesafesi" @@ -12659,8 +12575,8 @@ msgstr "Ekstra yükleme mesafesi" msgid "" "When set to zero, the distance the filament is moved from parking position " "during load is exactly the same as it was moved back during unload. When " -"positive, it is loaded further, if negative, the loading move is shorter " -"than unloading." +"positive, it is loaded further, if negative, the loading move is shorter than " +"unloading." msgstr "" "Sıfır olarak ayarlandığında, yükleme sırasında filamentin park konumundan " "taşındığı mesafe, boşaltma sırasında geri taşındığı mesafe ile aynıdır. " @@ -12678,13 +12594,13 @@ msgstr "Dolguda geri çekmeyi azalt" 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" +"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 "" "Hareket kesinlikle dolgu alanına girdiğinde geri çekilmeyin. Bu, sızıntının " "görülemeyeceği anlamına gelir. Bu, karmaşık model için geri çekme sürelerini " -"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi " -"ve G kodu oluşturmayı yavaşlatır" +"azaltabilir ve yazdırma süresinden tasarruf sağlayabilir, ancak dilimlemeyi ve " +"G kodu oluşturmayı yavaşlatır" msgid "" "This option will drop the temperature of the inactive extruders to prevent " @@ -12712,22 +12628,22 @@ msgstr "Maksimum yazdırılabilir açı" msgid "" "Maximum angle of overhangs to allow after making more steep overhangs " -"printable.90° will not change the model at all and allow any overhang, while " -"0 will replace all overhangs with conical material." +"printable.90° will not change the model at all and allow any overhang, while 0 " +"will replace all overhangs with conical material." msgstr "" "Daha dik çıkıntıları yazdırılabilir hale getirdikten sonra izin verilen " -"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi " -"bir çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." +"maksimum çıkıntı açısı. 90°, modeli hiçbir şekilde değiştirmez ve herhangi bir " +"çıkıntıya izin vermez, 0 ise tüm çıkıntıları konik malzemeyle değiştirir." msgid "Make overhangs printable - Hole area" msgstr "Yazdırılabilir çıkıntı delik alanı oluşturun" msgid "" -"Maximum area of a hole in the base of the model before it's filled by " -"conical material.A value of 0 will fill all the holes in the model base." +"Maximum area of a hole in the base of the model before it's filled by conical " +"material.A value of 0 will fill all the holes in the model base." msgstr "" -"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " -"maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." +"Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce maksimum " +"alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." msgid "mm²" msgstr "mm²" @@ -12737,11 +12653,11 @@ msgstr "Çıkıntılı duvarı algıla" #, 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 "" -"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için " -"farklı hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." +"Çizgi genişliğine göre çıkıntı yüzdesini tespit edin ve yazdırmak için farklı " +"hızlar kullanın. %%100 çıkıntı için köprü hızı kullanılır." msgid "Filament to print walls" msgstr "Duvarları yazdırmak için filament" @@ -12763,11 +12679,11 @@ msgid "Alternate extra wall" msgstr "Alternatif ekstra duvar" msgid "" -"This setting adds an extra wall to every other layer. This way the infill " -"gets wedged vertically between the walls, resulting in stronger prints. \n" +"This setting adds an extra wall to every other layer. This way the infill gets " +"wedged vertically between the walls, resulting in stronger prints. \n" "\n" -"When this option is enabled, the ensure vertical shell thickness option " -"needs to be disabled. \n" +"When this option is enabled, the ensure vertical shell thickness option needs " +"to be disabled. \n" "\n" "Using lightning infill together with this option is not recommended as there " "is limited infill to anchor the extra perimeters to." @@ -12778,21 +12694,20 @@ msgstr "" "Bu seçenek etkinleştirildiğinde dikey kabuk kalınlığını sağla seçeneğinin " "devre dışı bırakılması gerekir. \n" "\n" -"İlave çevrelerin sabitleneceği dolgu sınırlı olduğundan, bu seçenekle " -"birlikte yıldırım dolgusunun kullanılması önerilmez." +"İlave çevrelerin sabitleneceği dolgu sınırlı olduğundan, bu seçenekle birlikte " +"yıldırım dolgusunun kullanılması önerilmez." 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 Orca Slicer config settings by reading " -"environment variables." +"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 Orca Slicer config settings by reading environment " +"variables." msgstr "" -"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, " -"mutlak yollarını burada listeleyin. Birden fazla betiği noktalı virgülle " -"ayırın. Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır " -"ve ortam değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına " -"erişebilirler." +"Çıktı G-kodunu özel komut dosyaları aracılığıyla işlemek istiyorsanız, mutlak " +"yollarını burada listeleyin. Birden fazla betiği noktalı virgülle ayırın. " +"Betiklere ilk argüman olarak G-code dosyasının mutlak yolu aktarılır ve ortam " +"değişkenlerini okuyarak Orca Slicer yapılandırma ayarlarına erişebilirler." msgid "Printer type" msgstr "Yazıcı türü" @@ -12813,8 +12728,7 @@ msgid "Raft contact Z distance" msgstr "Raft kontak Z mesafesi" msgid "Z gap between object and raft. Ignored for soluble interface" -msgstr "" -"Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" +msgstr "Nesne ve raft arasındaki Z boşluğu. Çözünür arayüz için göz ardı edildi" msgid "Raft expansion" msgstr "Raft genişletme" @@ -12843,8 +12757,8 @@ msgid "" "Object will be raised by this number of support layers. Use this function to " "avoid wrapping when print ABS" msgstr "" -"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS " -"yazdırırken sarmayı önlemek için bu işlevi kullanın" +"Nesne bu sayıdaki destek katmanı tarafından yükseltilecektir. ABS yazdırırken " +"sarmayı önlemek için bu işlevi kullanın" msgid "" "G-code path is generated after simplifying the contour of model to avoid too " @@ -12859,8 +12773,7 @@ msgid "Travel distance threshold" msgstr "Seyahat mesafesi" msgid "" -"Only trigger retraction when the travel distance is longer than this " -"threshold" +"Only trigger retraction when the travel distance is longer than this threshold" msgstr "" "Geri çekmeyi yalnızca hareket mesafesi bu eşikten daha uzun olduğunda " "tetikleyin" @@ -12868,8 +12781,7 @@ msgstr "" msgid "Retract amount before wipe" msgstr "Temizleme işlemi öncesi geri çekme miktarı" -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 "" "Geri çekme uzunluğuna göre, temizlemeden önce hızlı geri çekilmenin uzunluğu" @@ -12960,8 +12872,8 @@ msgid "Traveling angle" msgstr "Seyahat açısı" msgid "" -"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results " -"in Normal Lift" +"Traveling angle for Slope and Spiral Z hop type. Setting it to 90° results in " +"Normal Lift" msgstr "" "Eğim ve Spiral Z atlama tipi için ilerleme açısı. 90°’ye ayarlamak normal " "kaldırmayla sonuçlanır" @@ -12993,8 +12905,8 @@ msgid "" "Enforce Z Hop behavior. This setting is impacted by the above settings (Only " "lift Z above/below)." msgstr "" -"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir " -"(Z'yi yalnızca yukarıya/aşağıya kaldırın)." +"Z Hop davranışını zorunlu kılın. Bu ayar yukarıdaki ayarlardan etkilenir (Z'yi " +"yalnızca yukarıya/aşağıya kaldırın)." msgid "All Surfaces" msgstr "Tüm Yüzeyler" @@ -13019,8 +12931,8 @@ msgstr "" "filament miktarını itecektir. Bu ayara nadiren ihtiyaç duyulur." 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 "" "Takım değiştirildikten sonra geri çekilme telafi edildiğinde, ekstruder bu " "ilave filament miktarını itecektir." @@ -13032,7 +12944,7 @@ msgid "Speed of retractions" msgstr "Geri çekme hızları" msgid "De-retraction Speed" -msgstr "İleri itme Hızı" +msgstr "İleri itme hızı" msgid "" "Speed for reloading filament into extruder. Zero means same speed with " @@ -13089,20 +13001,20 @@ msgid "" "This option causes the inner seams to be shifted backwards based on their " "depth, forming a zigzag pattern." msgstr "" -"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak " -"zikzak desen oluşturulmasına neden olur." +"Bu seçenek, iç dikişlerin derinliklerine göre geriye doğru kaydırılarak zikzak " +"desen oluşturulmasına neden olur." msgid "Seam gap" msgstr "Dikiş boşluğu" 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 10%." +"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 10%." msgstr "" -"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü " -"kesintiye uğrar ve belirli bir miktarda kısaltılır.\n" +"Kapalı döngü ekstrüzyonda dikişin görünürlüğünü azaltmak için döngü kesintiye " +"uğrar ve belirli bir miktarda kısaltılır.\n" "Bu miktar milimetre cinsinden veya mevcut ekstruder çapının yüzdesi olarak " "belirtilebilir. Bu parametrenin varsayılan değeri %10'dur." @@ -13111,8 +13023,8 @@ msgstr "Atkı birleşim dikişi (beta)" msgid "Use scarf joint to minimize seam visibility and increase seam strength." msgstr "" -"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için " -"atkı birleşimini kullanın." +"Dikiş görünürlüğünü en aza indirmek ve dikiş mukavemetini arttırmak için atkı " +"birleşimini kullanın." msgid "Conditional scarf joint" msgstr "Koşullu atkı birleşimi" @@ -13130,9 +13042,9 @@ msgstr "Koşullu açı eşiği" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " "seam.\n" -"If the maximum angle within the perimeter loop exceeds this value " -"(indicating the absence of sharp corners), a scarf joint seam will be used. " -"The default value is 155°." +"If the maximum angle within the perimeter loop exceeds this value (indicating " +"the absence of sharp corners), a scarf joint seam will be used. The default " +"value is 155°." msgstr "" "Bu seçenek, koşullu bir atkı eklem dikişi uygulamak için eşik açısını " "ayarlar.\n" @@ -13147,8 +13059,8 @@ msgstr "Koşullu çıkıntı eşiği" msgid "" "This option determines the overhang threshold for the application of scarf " "joint seams. If the unsupported portion of the perimeter is less than this " -"threshold, scarf joint seams will be applied. The default threshold is set " -"at 40% of the external wall's width. Due to performance considerations, the " +"threshold, scarf joint seams will be applied. The default threshold is set at " +"40% of the external wall's width. Due to performance considerations, the " "degree of overhang is estimated." msgstr "" "Bu seçenek, atkı bağlantı dikişlerinin uygulanması için sarkma eşiğini " @@ -13162,22 +13074,22 @@ msgstr "Atkı birleşim hızı" msgid "" "This option sets the printing speed for scarf joints. It is recommended to " -"print scarf joints at a slow speed (less than 100 mm/s). It's also " -"advisable to enable 'Extrusion rate smoothing' if the set speed varies " -"significantly from the speed of the outer or inner walls. If the speed " -"specified here is higher than the speed of the outer or inner walls, the " -"printer will default to the slower of the two speeds. When specified as a " -"percentage (e.g., 80%), the speed is calculated based on the respective " -"outer or inner wall speed. The default value is set to 100%." -msgstr "" -"Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı " -"bağlantılarının yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye " -"edilir. Ayarlanan hızın dış veya iç duvarların hızından önemli ölçüde farklı " -"olması durumunda 'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi " -"de tavsiye edilir. Burada belirtilen hız, dış veya iç duvarların hızından " -"daha yüksekse, yazıcı varsayılan olarak iki hızdan daha yavaş olanı " -"seçecektir. Yüzde olarak belirtildiğinde (örn. %80), hız, ilgili dış veya iç " -"duvar hızına göre hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." +"print scarf joints at a slow speed (less than 100 mm/s). It's also advisable " +"to enable 'Extrusion rate smoothing' if the set speed varies significantly " +"from the speed of the outer or inner walls. If the speed specified here is " +"higher than the speed of the outer or inner walls, the printer will default to " +"the slower of the two speeds. When specified as a percentage (e.g., 80%), the " +"speed is calculated based on the respective outer or inner wall speed. The " +"default value is set to 100%." +msgstr "" +"Bu seçenek, atkı bağlantılarının yazdırma hızını ayarlar. Atkı bağlantılarının " +"yavaş bir hızda (100 mm/s'den az) yazdırılması tavsiye edilir. Ayarlanan hızın " +"dış veya iç duvarların hızından önemli ölçüde farklı olması durumunda " +"'Ekstrüzyon hızı yumuşatma' seçeneğinin etkinleştirilmesi de tavsiye edilir. " +"Burada belirtilen hız, dış veya iç duvarların hızından daha yüksekse, yazıcı " +"varsayılan olarak iki hızdan daha yavaş olanı seçecektir. Yüzde olarak " +"belirtildiğinde (örn. %80), hız, ilgili dış veya iç duvar hızına göre " +"hesaplanır. Varsayılan değer %100 olarak ayarlanmıştır." msgid "Scarf joint flow ratio" msgstr "Atkı birleşimi akış oranı" @@ -13191,12 +13103,12 @@ msgstr "Atkı başlangıç ​​yüksekliği" msgid "" "Start height of the scarf.\n" -"This amount can be specified in millimeters or as a percentage of the " -"current layer height. The default value for this parameter is 0." +"This amount can be specified in millimeters or as a percentage of the current " +"layer height. The default value for this parameter is 0." msgstr "" "Atkı başlangıç yüksekliği.\n" -"Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi " -"olarak belirtilebilir. Bu parametrenin varsayılan değeri 0'dır." +"Bu miktar milimetre cinsinden veya geçerli katman yüksekliğinin yüzdesi olarak " +"belirtilebilir. Bu parametrenin varsayılan değeri 0'dır." msgid "Scarf around entire wall" msgstr "Tüm duvarın etrafına atkıla" @@ -13211,8 +13123,8 @@ msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan " -"devre dışı bırakır." +"Atkının uzunluğu. Bu parametrenin 0 a ayarlanması atkıyı dolaylı yoldan devre " +"dışı bırakır." msgid "Scarf steps" msgstr "Atkı kademesi" @@ -13234,9 +13146,9 @@ msgid "" "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 "" -"Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış " -"duvar ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme " -"eylemi için dış duvar ekstrüzyonunun hızı kullanılacaktır." +"Temizleme hızı mevcut ekstrüzyon rolünün hızına göre belirlenir; bir dış duvar " +"ekstrüzyonunun hemen ardından bir silme eylemi yürütülürse, silme eylemi için " +"dış duvar ekstrüzyonunun hızı kullanılacaktır." msgid "Wipe on loops" msgstr "Döngülerde temizleme" @@ -13253,15 +13165,15 @@ msgid "Wipe before external loop" msgstr "Harici döngüden önce silin" msgid "" -"To minimize visibility of potential overextrusion at the start of an " -"external perimeter when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order, the de-retraction is performed slightly on the inside from the " -"start of the external perimeter. That way any potential over extrusion is " -"hidden from the outside surface. \n" +"To minimize visibility of potential overextrusion at the start of an external " +"perimeter when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order, the de-retraction is performed slightly on the inside from the start of " +"the external perimeter. That way any potential over extrusion is hidden from " +"the outside surface. \n" "\n" -"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall " -"print order as in these modes it is more likely an external perimeter is " -"printed immediately after a de-retraction move." +"This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print " +"order as in these modes it is more likely an external perimeter is printed " +"immediately after a de-retraction move." msgstr "" "Dış/İç veya İç/Dış/İç duvar baskı sırası ile yazdırırken, dış çevrenin " "başlangıcında olası aşırı çıkıntının görünürlüğünü en aza indirmek için, " @@ -13269,22 +13181,22 @@ msgstr "" "gerçekleştirilir. Bu şekilde herhangi bir aşırı ekstrüzyon potansiyeli dış " "yüzeyden gizlenir. \n" "\n" -"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken " -"kullanışlıdır, çünkü bu modlarda, bir geri çekilme hareketinin hemen " -"ardından bir dış çevrenin yazdırılması daha olasıdır." +"Bu, Dış/İç veya İç/Dış/İç duvar yazdırma sırası ile yazdırırken kullanışlıdır, " +"çünkü bu modlarda, bir geri çekilme hareketinin hemen ardından bir dış " +"çevrenin yazdırılması daha olasıdır." msgid "Wipe speed" msgstr "Temizleme hızı" 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%" +"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 "" "Temizleme hızı, bu konfigürasyonda belirtilen hız ayarına göre belirlenir. " -"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı " -"ayarına göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" +"Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı ayarına " +"göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" msgid "Skirt distance" msgstr "Etek mesafesi" @@ -13319,13 +13231,12 @@ msgid "" "Enabled = skirt is as tall as the highest printed object. Otherwise 'Skirt " "height' is used.\n" "Note: With the draft shield active, the skirt will be printed at skirt " -"distance from the object. Therefore, if brims are active it may intersect " -"with them. To avoid this, increase the skirt distance value.\n" +"distance from the object. Therefore, if brims are active it may intersect with " +"them. To avoid this, increase the skirt distance value.\n" msgstr "" -"Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı " -"yatağından ayrılmasına karşı koruma sağlamak için bir rüzgarlık " -"kullanışlıdır. Genellikle yalnızca açık çerçeveli, yani muhafazasız " -"yazıcılarda gereklidir. \n" +"Rüzgar taslağı nedeniyle ABS veya ASA baskının eğrilmesine ve baskı yatağından " +"ayrılmasına karşı koruma sağlamak için bir rüzgarlık kullanışlıdır. Genellikle " +"yalnızca açık çerçeveli, yani muhafazasız yazıcılarda gereklidir. \n" "\n" "Etkin = etek, yazdırılan en yüksek nesne kadar uzun. Aksi takdirde ‘Etek " "yüksekliği’ kullanılır.\n" @@ -13343,10 +13254,8 @@ msgid "Skirt type" msgstr "Etek tipi" msgid "" -"Combined - single skirt for all objects, Per object - individual object " -"skirt." -msgstr "" -"Birleşik - tüm nesneler için tek etek, Nesneye göre - ayrı nesne eteği." +"Combined - single skirt for all objects, Per object - individual object skirt." +msgstr "Birleşik - tüm nesneler için tek etek, Nesneye göre - ayrı nesne eteği." msgid "Combined" msgstr "Birleşik" @@ -13358,8 +13267,7 @@ msgid "Skirt loops" msgstr "Etek sayısı" msgid "Number of loops for the skirt. Zero means disabling skirt" -msgstr "" -"Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" +msgstr "Etek için ilmek sayısı. Sıfır, eteği devre dışı bırakmak anlamına gelir" msgid "Skirt speed" msgstr "Etek hızı" @@ -13378,16 +13286,16 @@ msgid "" "\n" "Using a non zero value is useful if the printer is set up to print without a " "prime line.\n" -"Final number of loops is not taling into account whli arranging or " -"validating objects distance. Increase loop number in such case. " +"Final number of loops is not taling into account whli arranging or validating " +"objects distance. Increase loop number in such case. " msgstr "" -"Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, " -"bu özelliğin devre dışı olduğu anlamına gelir.\n" +"Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, bu " +"özelliğin devre dışı olduğu anlamına gelir.\n" "\n" "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir değer " "kullanmak yararlı olur.\n" -"Nihai döngü sayısı, nesnelerin mesafesini düzenlerken veya doğrularken " -"dikkate alınmaz. Böyle bir durumda döngü sayısını artırın." +"Nihai döngü sayısı, nesnelerin mesafesini düzenlerken veya doğrularken dikkate " +"alınmaz. Böyle bir durumda döngü sayısını artırın." msgid "" "The printing speed in exported gcode will be slowed down, when the estimated " @@ -13414,33 +13322,33 @@ msgid "Filament to print solid infill" msgstr "Katı dolguyu yazdırmak için filament" msgid "" -"Line width of internal solid infill. If expressed as a %, it will be " -"computed over the nozzle diameter." +"Line width of internal solid infill. If expressed as a %, it will be computed " +"over the nozzle diameter." msgstr "" -"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı " -"üzerinden hesaplanacaktır." +"İç katı dolgunun çizgi genişliği. % olarak ifade edilirse Nozul çapı üzerinden " +"hesaplanacaktır." msgid "Speed of internal solid infill, not the top and bottom surface" msgstr "Üst ve alt yüzeyin değil, iç katı dolgunun hızı" 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" +"model into a single walled print with solid bottom layers. The final generated " +"model has no seam" msgstr "" "Spiralleştirme, dış konturun z hareketlerini yumuşatır. Ve katı bir modeli, " -"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan " -"son modelde dikiş yok." +"katı alt katmanlara sahip tek duvarlı bir baskıya dönüştürür. Oluşturulan son " +"modelde dikiş yok." msgid "Smooth Spiral" msgstr "Pürüzsüz spiral" msgid "" -"Smooth Spiral smooths out X and Y moves as well, resulting in no visible " -"seam at all, even in the XY directions on walls that are not vertical" +"Smooth Spiral smooths out X and Y moves as well, resulting in no visible seam " +"at all, even in the XY directions on walls that are not vertical" msgstr "" -"Pürüzsüz Spiral, X ve Y hareketlerini de yumuşatır ve dikey olmayan " -"duvarlarda XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." +"Pürüzsüz Spiral, X ve Y hareketlerini de yumuşatır ve dikey olmayan duvarlarda " +"XY yönlerinde bile hiçbir görünür ek yeri oluşmamasını sağlar." msgid "Max XY Smoothing" msgstr "Maksimum xy yumuşatma" @@ -13453,14 +13361,13 @@ msgstr "" "maksimum mesafe % olarak ifade edilirse nozül çapı üzerinden hesaplanacaktır." 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 "" "Düzgün veya geleneksel mod seçilirse her baskı için bir hızlandırılmış video " "oluşturulacaktır. Her katman basıldıktan sonra oda kamerasıyla anlık görüntü " @@ -13479,9 +13386,9 @@ msgstr "Sıcaklık değişimi" #. TRN PrintSettings : "Ooze prevention" > "Temperature variation" msgid "" -"Temperature difference to be applied when an extruder is not active. The " -"value is not used when 'idle_temperature' in filament settings is set to non " -"zero value." +"Temperature difference to be applied when an extruder is not active. The value " +"is not used when 'idle_temperature' in filament settings is set to non zero " +"value." msgstr "" "Ekstruder aktif olmadığında uygulanacak sıcaklık farkı. Filament ayarlarında " "‘rölanti sıcaklığı’ sıfır olmayan bir değere ayarlandığında bu değer " @@ -13533,14 +13440,12 @@ msgid "" "Enable this option to omit the custom Change filament G-code only at the " "beginning of the print. The tool change command (e.g., T0) will be skipped " "throughout the entire print. This is useful for manual multi-material " -"printing, where we use M600/PAUSE to trigger the manual filament change " -"action." +"printing, where we use M600/PAUSE to trigger the manual filament change action." msgstr "" "Sadece baskının başında özel Filament Değiştirme G-kodu'nu atlamak için bu " -"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının " -"tamamı boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için " -"kullanışlıdır, burada manuel filament değişim eylemini tetiklemek için M600/" -"PAUSE kullanırız." +"seçeneği etkinleştirin. Aracı değiştirme komutu (örneğin, T0), baskının tamamı " +"boyunca atlanacaktır. Bu, manuel çoklu malzeme baskısı için kullanışlıdır, " +"burada manuel filament değişim eylemini tetiklemek için M600/PAUSE kullanırız." msgid "Purge in prime tower" msgstr "Prime tower'da temizlik" @@ -13555,10 +13460,9 @@ msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" msgid "" -"If enabled, the wipe tower will not be printed on layers with no " -"toolchanges. On layers with a toolchange, extruder will travel downward to " -"print the wipe tower. User is responsible for ensuring there is no collision " -"with the print." +"If enabled, the wipe tower will not be printed on layers with no toolchanges. " +"On layers with a toolchange, extruder will travel downward to print the wipe " +"tower. User is responsible for ensuring there is no collision with the print." msgstr "" "Etkinleştirilirse, silme kulesi araç değişimi olmayan katmanlarda " "yazdırılmayacaktır. Araç değişimi olan katmanlarda, ekstruder silme kulesini " @@ -13579,23 +13483,23 @@ msgid "Slice gap closing radius" msgstr "Dilim aralığı kapanma yarıçapı" 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 "" -"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük " -"çatlaklar doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " +"Üçgen mesh dilimleme sırasında 2x boşluk kapatma yarıçapından küçük çatlaklar " +"doldurulmaktadır. Boşluk kapatma işlemi son yazdırma çözünürlüğünü " "düşürebilir, bu nedenle değerin oldukça düşük tutulması tavsiye edilir." msgid "Slicing Mode" msgstr "Dilimleme modu" 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 "" -"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki " -"tüm delikleri kapatmak için \"Delikleri kapat\"ı kullanın." +"3DLabPrint uçak modelleri için \"Çift-tek\" seçeneğini kullanın. Modeldeki tüm " +"delikleri kapatmak için \"Delikleri kapat\"ı kullanın." msgid "Regular" msgstr "Düzenli" @@ -13615,11 +13519,10 @@ msgid "" "example, if your endstop zero actually leaves the nozzle 0.3mm far from the " "print bed, set this to -0.3 (or fix your endstop)." msgstr "" -"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya " -"çıkarılır).Bu, kötü Z endstop konumunu telafi etmek için kullanılır: " -"örneğin, endstop sıfır noktanız aslında nozulu baskı plakasından 0.3mm " -"uzakta bırakıyorsa, bu değeri -0.3 olarak ayarlayın (veya endstop'unuzu " -"düzeltin)." +"Bu değer, çıkış G-kodu içindeki tüm Z koordinatlarına eklenir (veya çıkarılır)." +"Bu, kötü Z endstop konumunu telafi etmek için kullanılır: örneğin, endstop " +"sıfır noktanız aslında nozulu baskı plakasından 0.3mm uzakta bırakıyorsa, bu " +"değeri -0.3 olarak ayarlayın (veya endstop'unuzu düzeltin)." msgid "Enable support" msgstr "Desteği etkinleştir" @@ -13670,11 +13573,9 @@ msgid "Support critical regions only" msgstr "Yalnızca kritik bölgeleri destekleyin" msgid "" -"Only create support for critical regions including sharp tail, cantilever, " -"etc." +"Only create support for critical regions including sharp tail, cantilever, etc." msgstr "" -"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek " -"oluşturun." +"Yalnızca keskin kuyruk, konsol vb. gibi kritik bölgeler için destek oluşturun." msgid "Remove small overhangs" msgstr "Küçük çıkıntıları kaldır" @@ -13708,11 +13609,9 @@ msgstr "" msgid "Avoid interface filament for base" msgstr "Taban için arayüz filamentini azaltın" -msgid "" -"Avoid using support interface filament to print support base if possible." +msgid "Avoid using support interface filament to print support base if possible." msgstr "" -"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan " -"kaçının" +"Destek tabanını yazdırmak için destek arayüzü filamentini kullanmaktan kaçının" msgid "" "Line width of support. If expressed as a %, it will be computed over the " @@ -13787,8 +13686,8 @@ msgstr "Arayüz deseni" msgid "" "Line pattern of support interface. Default pattern for non-soluble support " -"interface is Rectilinear, while default pattern for soluble support " -"interface is Concentric" +"interface is Rectilinear, while default pattern for soluble support interface " +"is Concentric" msgstr "" "Destek arayüzünün çizgi deseni. Çözünmeyen destek arayüzü için varsayılan " "model Doğrusaldır, çözünebilir destek arayüzü için varsayılan model ise " @@ -13816,19 +13715,18 @@ 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 and organic style will merge branches more " -"aggressively and save a lot of material (default organic), while hybrid " -"style will create similar structure to normal support under large flat " -"overhangs." -msgstr "" -"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara " -"içine projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı " -"zamanda sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki " -"izleri azaltır.\n" +"For tree support, slim and organic style will merge branches more aggressively " +"and save a lot of material (default organic), while hybrid style will create " +"similar structure to normal support under large flat overhangs." +msgstr "" +"Destek stil ve şekli. Normal destek için, destekleri düzenli bir ızgara içine " +"projelendirmek daha stabil destekler oluşturacaktır (varsayılan), aynı zamanda " +"sıkı destek kuleleri malzeme tasarrufu sağlar ve nesne üzerindeki izleri " +"azaltır.\n" "Ağaç destek için, ince ve organik tarz, dalları daha etkili bir şekilde " "birleştirir ve büyük düz çıkıntılarda normal destekle benzer bir yapı " -"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). " -"Hybrid stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı " +"oluştururken birçok malzeme tasarrufu sağlar (varsayılan organik tarz). Hybrid " +"stil, büyük düz çıkıntıların altında normal destekle benzer bir yapı " "oluşturacaktır." msgid "Default (Grid/Organic" @@ -13854,13 +13752,13 @@ msgstr "Bağımsız destek katmanı yüksekliği" 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 customizing z-gap and save print time.This option will be invalid when " +"the prime tower is enabled." msgstr "" "Destek katmanı, nesne katmanından bağımsız olarak katman yüksekliğini " "kullanır. Bu, z aralığının özelleştirilmesine destek olmak ve yazdırma " -"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu " -"seçenek geçersiz olacaktır." +"süresinden tasarruf etmek içindir. Prime tower etkinleştirildiğinde bu seçenek " +"geçersiz olacaktır." msgid "Threshold angle" msgstr "Destek açısı" @@ -13874,9 +13772,9 @@ msgid "Tree support branch angle" msgstr "Ağaç desteği dal açısı" 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 "" "Bu ayar, ağaç desteğinin dallarının oluşmasına izin verilen maksimum çıkıntı " "açısını belirler. Açı artırılırsa, dallar daha yatay olarak basılabilir ve " @@ -13887,13 +13785,13 @@ msgstr "Tercih Edilen Dal Açısı" #. TRN PrintSettings: "Organic supports" > "Preferred Branch Angle" msgid "" -"The preferred angle of the branches, when they do not have to avoid the " -"model. Use a lower angle to make them more vertical and more stable. Use a " -"higher angle for branches to merge faster." +"The preferred angle of the branches, when they do not have to avoid the model. " +"Use a lower angle to make them more vertical and more stable. Use a higher " +"angle for branches to merge faster." msgstr "" "Modelden kaçınmak zorunda olmadıklarında dalların tercih edilen açısı. Daha " -"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların " -"daha hızlı birleşmesi için daha yüksek bir açı kullanın." +"dikey ve daha dengeli olmaları için daha düşük bir açı kullanın. Dalların daha " +"hızlı birleşmesi için daha yüksek bir açı kullanın." msgid "Tree support branch distance" msgstr "Ağaç destek dal mesafesi" @@ -13907,11 +13805,10 @@ msgstr "Dal Yoğunluğu" #. TRN PrintSettings: "Organic supports" > "Branch Density" msgid "" -"Adjusts the density of the support structure used to generate the tips of " -"the branches. A higher value results in better overhangs but the supports " -"are harder to remove, thus it is recommended to enable top support " -"interfaces instead of a high branch density value if dense interfaces are " -"needed." +"Adjusts the density of the support structure used to generate the tips of the " +"branches. A higher value results in better overhangs but the supports are " +"harder to remove, thus it is recommended to enable top support interfaces " +"instead of a high branch density value if dense interfaces are needed." msgstr "" "Dalların uçlarını oluşturmak için kullanılan destek yapısının yoğunluğunu " "ayarlar. Daha yüksek bir değer daha iyi çıkıntılarla sonuçlanır, ancak " @@ -13923,8 +13820,8 @@ msgid "Adaptive layer height" msgstr "Uyarlanabilir katman yüksekliği" 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 "" "Bu seçeneğin etkinleştirilmesi, ilki hariç ağaç destek katmanının " "yüksekliğinin otomatik olarak hesaplanacağı anlamına gelir " @@ -13979,8 +13876,8 @@ msgstr "Çift duvarlı dal çapı" #. TRN PrintSettings: "Organic supports" > "Branch Diameter" msgid "" "Branches with area larger than the area of a circle of this diameter will be " -"printed with double walls for stability. Set this value to zero for no " -"double walls." +"printed with double walls for stability. Set this value to zero for no double " +"walls." msgstr "" "Bu çaptaki bir dairenin alanından daha büyük alana sahip dallar, stabilite " "için çift duvarlı olarak basılacaktır. Çift duvar olmaması için bu değeri " @@ -13999,16 +13896,15 @@ msgid "" "This setting specifies whether to add infill inside large hollows of tree " "support" msgstr "" -"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip " -"eklenmeyeceğini belirtir" +"Bu ayar, ağaç desteğinin büyük oyuklarının içine dolgu eklenip eklenmeyeceğini " +"belirtir" msgid "Activate temperature control" msgstr "Sıcaklık kontrolünü etkinleştirin" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the " -"\"machine_start_gcode\"\n" +"activates the emitting of an M191 command before the \"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14017,8 +13913,8 @@ msgid "" "either via macros or natively and is usually used when an active chamber " "heater is installed." msgstr "" -"Otomatik hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Bu " -"seçenek, “yazıcı başlangıç kodu”ndan önce bir M191 komutunun yayınlanmasını " +"Otomatik hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Bu seçenek, " +"“yazıcı başlangıç kodu”ndan önce bir M191 komutunun yayınlanmasını " "etkinleştirir\n" " oda sıcaklığını ayarlar ve bu sıcaklığa ulaşılıncaya kadar bekler. Ayrıca " "baskı sonunda M141 komutu vererek varsa hazne ısıtıcısının kapatılmasını " @@ -14033,41 +13929,39 @@ msgstr "Bölme sıcaklığı" msgid "" "For high-temperature materials like ABS, ASA, PC, and PA, a higher chamber " -"temperature can help suppress or reduce warping and potentially lead to " -"higher interlayer bonding strength. However, at the same time, a higher " -"chamber temperature will reduce the efficiency of air filtration for ABS and " -"ASA. \n" +"temperature can help suppress or reduce warping and potentially lead to higher " +"interlayer bonding strength. However, at the same time, a higher chamber " +"temperature will reduce the efficiency of air filtration for ABS and ASA. \n" "\n" "For PLA, PETG, TPU, PVA, and other low-temperature materials, this option " "should be disabled (set to 0) as the chamber temperature should be low to " "avoid extruder clogging caused by material softening at the heat break.\n" "\n" "If enabled, this parameter also sets a gcode variable named " -"chamber_temperature, which can be used to pass the desired chamber " -"temperature to your print start macro, or a heat soak macro like this: " -"PRINT_START (other variables) CHAMBER_TEMP=[chamber_temperature]. This may " -"be useful if your printer does not support M141/M191 commands, or if you " -"desire to handle heat soaking in the print start macro if no active chamber " -"heater is installed." +"chamber_temperature, which can be used to pass the desired chamber temperature " +"to your print start macro, or a heat soak macro like this: PRINT_START (other " +"variables) CHAMBER_TEMP=[chamber_temperature]. This may be useful if your " +"printer does not support M141/M191 commands, or if you desire to handle heat " +"soaking in the print start macro if no active chamber heater is installed." msgstr "" "ABS, ASA, PC ve PA gibi yüksek sıcaklıktaki malzemeler için daha yüksek bir " -"oda sıcaklığı, bükülmenin bastırılmasına veya azaltılmasına yardımcı " -"olabilir ve potansiyel olarak daha yüksek katmanlar arası bağlanma " -"mukavemetine yol açabilir. Ancak aynı zamanda daha yüksek oda sıcaklığı, ABS " -"ve ASA için hava filtreleme verimliliğini azaltacaktır. \n" +"oda sıcaklığı, bükülmenin bastırılmasına veya azaltılmasına yardımcı olabilir " +"ve potansiyel olarak daha yüksek katmanlar arası bağlanma mukavemetine yol " +"açabilir. Ancak aynı zamanda daha yüksek oda sıcaklığı, ABS ve ASA için hava " +"filtreleme verimliliğini azaltacaktır. \n" "\n" "PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, ısı " "kırılmasında malzemenin yumuşamasından kaynaklanan ekstrüderin tıkanmasını " -"önlemek için oda sıcaklığının düşük olması gerektiğinden bu seçenek devre " -"dışı bırakılmalıdır (0’a ayarlanmalıdır).\n" +"önlemek için oda sıcaklığının düşük olması gerektiğinden bu seçenek devre dışı " +"bırakılmalıdır (0’a ayarlanmalıdır).\n" "\n" -"Etkinleştirilirse, bu parametre aynı zamanda istenen oda sıcaklığını " -"yazdırma başlatma makronuza veya şuna benzer bir ısı emme makrosuna iletmek " -"için kullanılabilecek Chamber_temperature adlı bir gcode değişkenini de " -"ayarlar: PRINT_START (diğer değişkenler) CHAMBER_TEMP=[chamber_temperature]. " -"Yazıcınız M141/M191 komutlarını desteklemiyorsa veya aktif oda ısıtıcısı " -"takılı değilse yazdırma başlatma makrosunda ısı bekletme işlemini " -"gerçekleştirmek istiyorsanız bu yararlı olabilir." +"Etkinleştirilirse, bu parametre aynı zamanda istenen oda sıcaklığını yazdırma " +"başlatma makronuza veya şuna benzer bir ısı emme makrosuna iletmek için " +"kullanılabilecek Chamber_temperature adlı bir gcode değişkenini de ayarlar: " +"PRINT_START (diğer değişkenler) CHAMBER_TEMP=[chamber_temperature]. Yazıcınız " +"M141/M191 komutlarını desteklemiyorsa veya aktif oda ısıtıcısı takılı değilse " +"yazdırma başlatma makrosunda ısı bekletme işlemini gerçekleştirmek " +"istiyorsanız bu yararlı olabilir." msgid "Nozzle temperature for layers after the initial one" msgstr "İlk katmandan sonraki katmanlar için nozul sıcaklığı" @@ -14093,8 +13987,8 @@ msgid "This gcode is inserted when the extrusion role is changed" msgstr "Bu gcode, ekstrüzyon rolü değiştirildiğinde eklenir" msgid "" -"Line width for top surfaces. If expressed as a %, it will be computed over " -"the nozzle diameter." +"Line width for top surfaces. If expressed as a %, it will be computed over the " +"nozzle diameter." msgstr "" "Üst yüzeyler için çizgi genişliği. % olarak ifade edilirse Nozul çapı " "üzerinden hesaplanacaktır." @@ -14123,15 +14017,15 @@ msgstr "Üst katman kalınlığı" 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 determined by top shell " +"having too thin shell when layer height is small. 0 means that this setting is " +"disabled and thickness of top shell is absolutely determined by top shell " "layers" msgstr "" -"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince " -"ise dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " -"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu " -"ayarın devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk " -"katmanları tarafından belirlendiği anlamına gelir" +"Üst kabuk katmanları tarafından hesaplanan kalınlık bu değerden daha ince ise " +"dilimleme sırasında üst katı katmanların sayısı artırılır. Bu, katman " +"yüksekliği küçük olduğunda kabuğun çok ince olmasını önleyebilir. 0, bu ayarın " +"devre dışı olduğu ve üst kabuğun kalınlığının kesinlikle üst kabuk katmanları " +"tarafından belirlendiği anlamına gelir" msgid "Speed of travel which is faster and without extrusion" msgstr "Daha hızlı ve ekstrüzyonsuz seyahat hızı" @@ -14151,12 +14045,11 @@ msgid "Wipe Distance" msgstr "Temizleme mesafesi" msgid "" -"Describe how long the nozzle will move along the last path when " -"retracting. \n" +"Describe how long the nozzle will move along the last path when retracting. \n" "\n" -"Depending on how long the wipe operation lasts, how fast and long the " -"extruder/filament retraction settings are, a retraction move may be needed " -"to retract the remaining filament. \n" +"Depending on how long the wipe operation lasts, how fast and long the extruder/" +"filament retraction settings are, a retraction move may be needed to retract " +"the remaining filament. \n" "\n" "Setting a value in the retract amount before wipe setting below will perform " "any excess retraction before the wipe, else it will be performed after." @@ -14164,18 +14057,18 @@ msgstr "" "Geri çekilirken nozulun son yol boyunca ne kadar süre hareket edeceğini " "açıklayın. \n" "\n" -"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme " -"ayarlarının ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı " -"geri çekmek için bir geri çekme hareketine ihtiyaç duyulabilir. \n" +"Silme işleminin ne kadar sürdüğüne, ekstruder/filament geri çekme ayarlarının " +"ne kadar hızlı ve uzun olduğuna bağlı olarak, kalan filamanı geri çekmek için " +"bir geri çekme hareketine ihtiyaç duyulabilir. \n" "\n" -"Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, " -"silme işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi " -"takdirde silme işleminden sonra gerçekleştirilecektir." +"Aşağıdaki silme ayarından önce geri çekme miktarına bir değer ayarlamak, silme " +"işleminden önce aşırı geri çekme işlemini gerçekleştirecektir, aksi takdirde " +"silme işleminden sonra gerçekleştirilecektir." 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." +"stabilize the chamber pressure inside the nozzle, in order to avoid appearance " +"defects when printing objects." msgstr "" "Temizleme kulesi, nesneleri yazdırırken görünüm kusurlarını önlemek amacıyla " "nozul üzerindeki kalıntıları temizlemek ve nozul içindeki oda basıncını " @@ -14188,8 +14081,8 @@ msgid "Flush multiplier" msgstr "Temizleme çarpanı" 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 "" "Gerçek temizleme hacimleri, tablodaki temizleme hacimleri ile temizleme " "çarpanının çarpımına eşittir." @@ -14213,11 +14106,11 @@ msgid "Stabilization cone apex angle" msgstr "Stabilizasyon konisi tepe açısı" msgid "" -"Angle at the apex of the cone that is used to stabilize the wipe tower. " -"Larger angle means wider base." +"Angle at the apex of the cone that is used to stabilize the wipe tower. Larger " +"angle means wider base." msgstr "" -"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki " -"açı. Daha büyük açı daha geniş taban anlamına gelir." +"Silme kulesini stabilize etmek için kullanılan koninin tepe noktasındaki açı. " +"Daha büyük açı daha geniş taban anlamına gelir." msgid "Maximum wipe tower print speed" msgstr "Maksimum silme kulesi yazdırma hızı" @@ -14225,16 +14118,16 @@ msgstr "Maksimum silme kulesi yazdırma hızı" msgid "" "The maximum print speed when purging in the wipe tower and printing the wipe " "tower sparse layers. When purging, if the sparse infill speed or calculated " -"speed from the filament max volumetric speed is lower, the lowest will be " -"used instead.\n" +"speed from the filament max volumetric speed is lower, the lowest will be used " +"instead.\n" "\n" -"When printing the sparse layers, if the internal perimeter speed or " -"calculated speed from the filament max volumetric speed is lower, the lowest " -"will be used instead.\n" +"When printing the sparse layers, if the internal perimeter speed or calculated " +"speed from the filament max volumetric speed is lower, the lowest will be used " +"instead.\n" "\n" -"Increasing this speed may affect the tower's stability as well as increase " -"the force with which the nozzle collides with any blobs that may have formed " -"on the wipe tower.\n" +"Increasing this speed may affect the tower's stability as well as increase the " +"force with which the nozzle collides with any blobs that may have formed on " +"the wipe tower.\n" "\n" "Before increasing this parameter beyond the default of 90mm/sec, make sure " "your printer can reliably bridge at the increased speeds and that ooze when " @@ -14244,9 +14137,9 @@ msgid "" "regardless of this setting." msgstr "" "Silme kulesinde temizleme yaparken ve silme kulesi seyrek katmanlarını " -"yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı " -"veya filamanın maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun " -"yerine en düşük olanı kullanılacaktır.\n" +"yazdırırken maksimum yazdırma hızı. Temizleme sırasında seyrek dolum hızı veya " +"filamanın maksimum hacimsel hızından hesaplanan hız daha düşükse, bunun yerine " +"en düşük olanı kullanılacaktır.\n" "\n" "Seyrek katmanları yazdırırken iç çevre hızı veya filamanın maksimum hacimsel " "hızından hesaplanan hız daha düşükse bunun yerine en düşük olanı " @@ -14264,8 +14157,8 @@ msgstr "" "kullanılır." msgid "" -"The extruder to use when printing perimeter of the wipe tower. Set to 0 to " -"use the one that is available (non-soluble would be preferred)." +"The extruder to use when printing perimeter of the wipe tower. Set to 0 to use " +"the one that is available (non-soluble would be preferred)." msgstr "" "Silme kulesinin çevresini yazdırırken kullanılacak ekstruder. Mevcut olanı " "kullanmak için 0 olarak ayarlayın (çözünmeyen tercih edilir)." @@ -14278,9 +14171,9 @@ msgid "" "wipe tower. These values are used to simplify creation of the full purging " "volumes below." msgstr "" -"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için " -"gerekli hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme " -"hacimlerinin oluşturulmasını basitleştirmek için kullanılır." +"Bu vektör, silme kulesinde kullanılan her bir araçtan/araca geçiş için gerekli " +"hacimleri kaydeder. Bu değerler, aşağıdaki tam temizleme hacimlerinin " +"oluşturulmasını basitleştirmek için kullanılır." msgid "" "Purging after filament change will be done inside objects' infills. This may " @@ -14304,13 +14197,13 @@ 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." +"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 "" -"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için " -"filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için filament " +"değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç olarak " +"nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği sürece " +"etkili olmayacaktır." msgid "Maximal bridging distance" msgstr "Maksimum köprüleme mesafesi" @@ -14319,8 +14212,8 @@ msgid "Maximal distance between supports on sparse infill sections." msgstr "" "Bu nesne, filamentten tasarruf etmek ve baskı süresini azaltmak için bir " "filament değişiminden sonra nozulu temizlemek için kullanılacaktır. Sonuç " -"olarak nesnelerin renkleri karıştırılacaktır. Prime tower " -"etkinleştirilmediği sürece etkili olmayacaktır." +"olarak nesnelerin renkleri karıştırılacaktır. Prime tower etkinleştirilmediği " +"sürece etkili olmayacaktır." msgid "Wipe tower purge lines spacing" msgstr "Silme kulesi temizleme hatları aralığı" @@ -14333,20 +14226,20 @@ msgstr "Temizleme için ekstra akış" msgid "" "Extra flow used for the purging lines on the wipe tower. This makes the " -"purging lines thicker or narrower than they normally would be. The spacing " -"is adjusted automatically." +"purging lines thicker or narrower than they normally would be. The spacing is " +"adjusted automatically." msgstr "" -"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, " -"temizleme hatlarının normalde olduğundan daha kalın veya daha dar olmasına " -"neden olur. Aralık otomatik olarak ayarlanır." +"Silme kulesindeki temizleme hatları için ekstra akış kullanılır. Bu, temizleme " +"hatlarının normalde olduğundan daha kalın veya daha dar olmasına neden olur. " +"Aralık otomatik olarak ayarlanır." msgid "Idle temperature" msgstr "Boşta sıcaklık" msgid "" "Nozzle temperature when the tool is currently not used in multi-tool setups." -"This is only used when 'Ooze prevention' is active in Print Settings. Set to " -"0 to disable." +"This is only used when 'Ooze prevention' is active in Print Settings. Set to 0 " +"to disable." msgstr "" "Alet şu anda çoklu alet kurulumlarında kullanılmadığında püskürtme ucu " "sıcaklığı. Bu yalnızca Yazdırma Ayarlarında ‘Sızıntı önleme’ etkin olduğunda " @@ -14361,36 +14254,36 @@ msgid "" "function is used to adjust size slightly when the object has assembling issue" msgstr "" "Nesnenin delikleri XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri " -"küçültür. Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe " -"ayarlamak için kullanılır" +"küçültülür. Pozitif değer delikleri büyütür. Negatif değer delikleri küçültür. " +"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"kullanılır" msgid "X-Y contour compensation" msgstr "X-Y kontur telafisi" 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 "" "Nesnenin konturu XY düzleminde yapılandırılan değer kadar büyütülür veya " -"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. " -"Bu fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " +"küçültülür. Pozitif değer konturu büyütür. Negatif değer konturu küçültür. Bu " +"fonksiyon, nesnenin montaj sorunu olduğunda boyutu hafifçe ayarlamak için " "kullanılır" msgid "Convert holes to polyholes" msgstr "Delikleri çokgen deliklere dönüştür" msgid "" -"Search for almost-circular holes that span more than one layer and convert " -"the geometry to polyholes. Use the nozzle size and the (biggest) diameter to " +"Search for almost-circular holes that span more than one layer and convert the " +"geometry to polyholes. Use the nozzle size and the (biggest) diameter to " "compute the polyhole.\n" "See http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgstr "" -"Birden fazla katmana yayılan neredeyse dairesel delikleri arayın ve " -"geometriyi çoklu deliklere dönüştürün. Çoklu deliği hesaplamak için nozul " -"boyutunu ve (en büyük) çapı kullanın.\n" +"Birden fazla katmana yayılan neredeyse dairesel delikleri arayın ve geometriyi " +"çoklu deliklere dönüştürün. Çoklu deliği hesaplamak için nozul boyutunu ve (en " +"büyük) çapı kullanın.\n" "Bakın http://hydraraptor.blogspot.com/2011/02/polyholes.html" msgid "Polyhole detection margin" @@ -14400,14 +14293,14 @@ msgstr "Çokgen delik tespiti marjı" msgid "" "Maximum defection of a point to the estimated radius of the circle.\n" "As cylinders are often exported as triangles of varying size, points may not " -"be on the circle circumference. This setting allows you some leeway to " -"broaden the detection.\n" +"be on the circle circumference. This setting allows you some leeway to broaden " +"the detection.\n" "In mm or in % of the radius." msgstr "" "Bir noktanın dairenin tahmini yarıçapına göre maksimum sapması.\n" "Silindirler genellikle farklı boyutlarda üçgenler olarak ihraç edildiğinden, " -"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz " -"için size biraz alan sağlar.\n" +"noktalar daire çevresinde olmayabilir. Bu ayar, algılamayı genişletmeniz için " +"size biraz alan sağlar.\n" "inc mm cinsinden veya yarıçapın %'si cinsinden." msgid "Polyhole twist" @@ -14430,11 +14323,11 @@ msgid "Format of G-code thumbnails" msgstr "G kodu küçük resimlerinin formatı" msgid "" -"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, " -"QOI for low memory firmware" +"Format of G-code thumbnails: PNG for best quality, JPG for smallest size, QOI " +"for low memory firmware" msgstr "" -"G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut " -"için JPG, düşük bellekli donanım yazılımı için QOI" +"G kodu küçük resimlerinin formatı: En iyi kalite için PNG, en küçük boyut için " +"JPG, düşük bellekli donanım yazılımı için QOI" msgid "Use relative E distances" msgstr "Göreceli (relative) E mesafelerini kullan" @@ -14446,17 +14339,17 @@ msgid "" "printers. Default is checked" msgstr "" "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " -"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak " -"ekstrüzyon modu). Silme kulesi yalnızca göreceli modla uyumludur. Çoğu " -"yazıcıda önerilir. Varsayılan işaretlendi." +"ekstrüderler bu seçenek işaretlenmediğinde daha iyi çalışır (mutlak ekstrüzyon " +"modu). Silme kulesi yalnızca göreceli modla uyumludur. Çoğu yazıcıda önerilir. " +"Varsayılan işaretlendi." 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" +"very thin areas is used gap-fill. Arachne engine produces walls with variable " +"extrusion width" msgstr "" -"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir " -"ve çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " +"Klasik duvar oluşturucu sabit ekstrüzyon genişliğine sahip duvarlar üretir ve " +"çok ince alanlar için boşluk doldurma kullanılır. Arachne motoru değişken " "ekstrüzyon genişliğine sahip duvarlar üretir" msgid "Classic" @@ -14481,38 +14374,37 @@ msgid "Wall transitioning filter margin" msgstr "Duvar geçiş filtresi oranı" 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 "" -"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu " -"kenar boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar " -"genişliği + kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri " -"aralığını genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da " -"ekstrüzyonun başlama/durma sayısını ve seyahat süresini azaltır. Bununla " -"birlikte, büyük ekstrüzyon genişliği değişimi, yetersiz veya aşırı " -"ekstrüzyon sorunlarına yol açabilir. Nozul çapına göre yüzde olarak ifade " -"edilir" +"Fazladan bir duvar ile bir eksik arasında ileri geri geçişi önleyin. Bu kenar " +"boşluğu, [Minimum duvar genişliği - kenar boşluğu, 2 * Minimum duvar genişliği " +"+ kenar boşluğu] şeklinde takip eden ekstrüzyon genişlikleri aralığını " +"genişletir. Bu marjın arttırılması geçiş sayısını azaltır, bu da ekstrüzyonun " +"başlama/durma sayısını ve seyahat süresini azaltır. Bununla birlikte, büyük " +"ekstrüzyon genişliği değişimi, yetersiz veya aşırı ekstrüzyon sorunlarına yol " +"açabilir. Nozul çapına göre yüzde olarak ifade edilir" msgid "Wall transitioning threshold angle" msgstr "Duvar geçiş açısı" 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" +"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 "" -"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? " -"Bu ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak " -"ve kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu " -"ayarın düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır " -"ancak boşluklara veya aşırı çıkıntıya neden olabilir" +"Çift ve tek sayıdaki duvarlar arasında geçişler ne zaman oluşturulmalıdır? Bu " +"ayardan daha büyük bir açıya sahip bir kama şeklinin geçişleri olmayacak ve " +"kalan alanı dolduracak şekilde ortada hiçbir duvar basılmayacaktır. Bu ayarın " +"düşürülmesi, bu merkez duvarların sayısını ve uzunluğunu azaltır ancak " +"boşluklara veya aşırı çıkıntıya neden olabilir" msgid "Wall distribution count" msgstr "Duvar dağılım sayısı" @@ -14528,10 +14420,10 @@ msgid "Minimum feature size" msgstr "Minimum özellik boyutu" 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 "" "İnce özellikler için minimum kalınlık. Bu değerden daha ince olan model " "özellikleri yazdırılmayacak, Minimum özellik boyutundan daha kalın olan " @@ -14547,31 +14439,30 @@ msgid "" "\n" "NOTE: Bottom and top surfaces will not be affected by this value to prevent " "visual gaps on the outside of the model. Adjust 'One wall threshold' in the " -"Advanced settings below to adjust the sensitivity of what is considered a " -"top-surface. 'One wall threshold' is only visible if this setting is set " -"above the default value of 0.5, or if single-wall top surfaces is enabled." +"Advanced settings below to adjust the sensitivity of what is considered a top-" +"surface. 'One wall threshold' is only visible if this setting is set above the " +"default value of 0.5, or if single-wall top surfaces is enabled." msgstr "" "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların yazdırılmasını " -"önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha " -"uzun duvarları kaldırır.\n" +"önlemek için bu değeri ayarlayın. Daha yüksek değerler daha fazla ve daha uzun " +"duvarları kaldırır.\n" "\n" -"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " -"bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " -"hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " -"eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan " -"0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " -"etkinleştirildiğinde görünür." +"NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler bu " +"değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin hassasiyetini " +"ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar eşiği'ni ayarlayın. " +"'Tek duvar eşiği' yalnızca bu ayar varsayılan değer olan 0,5'in üzerine " +"ayarlandığında veya tek duvarlı üst yüzeyler etkinleştirildiğinde görünür." msgid "First layer minimum wall width" msgstr "İlk katman minimum duvar genişliği" msgid "" -"The minimum wall width that should be used for the first layer is " -"recommended to be set to the same size as the nozzle. This adjustment is " -"expected to enhance adhesion." +"The minimum wall width that should be used for the first layer is recommended " +"to be set to the same size as the nozzle. This adjustment is expected to " +"enhance adhesion." msgstr "" -"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile " -"aynı boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " +"İlk katman için kullanılması gereken minimum duvar genişliğinin nozul ile aynı " +"boyuta ayarlanması tavsiye edilir. Bu ayarlamanın yapışmayı artırması " "beklenmektedir." msgid "Minimum wall width" @@ -14580,21 +14471,21 @@ msgstr "Minimum duvar genişliği" 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" +"thickness of the feature, the wall will become as thick as the feature itself. " +"It's expressed as a percentage over nozzle diameter" msgstr "" "Modelin ince özelliklerinin yerini alacak duvarın genişliği (Minimum özellik " "boyutuna göre). Minimum duvar genişliği özelliğin kalınlığından daha inceyse " -"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde " -"olarak ifade edilir" +"duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde olarak " +"ifade edilir" msgid "Detect narrow internal solid infill" msgstr "Dar iç katı dolguyu tespit et" 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 by default." +"concentric pattern will be used for the area to speed printing up. Otherwise, " +"rectilinear pattern is used by default." msgstr "" "Bu seçenek dar dahili katı dolgu alanını otomatik olarak algılayacaktır. " "Etkinleştirilirse, yazdırmayı hızlandırmak amacıyla alanda eşmerkezli desen " @@ -14640,8 +14531,7 @@ msgstr "Yönlendirme Seçenekleri" msgid "Orient options: 0-disable, 1-enable, others-auto" msgstr "" -"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-" -"otomatik" +"Yönlendirme seçenekleri: 0-devre dışı bırak, 1-etkinleştir, diğerleri-otomatik" msgid "Rotation angle around the Z axis in degrees." msgstr "Z ekseni etrafında derece cinsinden dönüş açısı." @@ -14656,9 +14546,8 @@ msgid "Data directory" msgstr "Veri dizini" 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 "" "Ayarları verilen dizine yükleyin ve saklayın. Bu, farklı profilleri korumak " "veya bir ağ depolama birimindeki yapılandırmaları dahil etmek için " @@ -14681,25 +14570,24 @@ msgid "" "custom G-code travels somewhere else, it should write to this variable so " "OrcaSlicer knows where it travels from when it gets control back." msgstr "" -"Ekstruderin özel G kodu bloğunun başlangıcındaki konumu. Özel G kodu başka " -"bir yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat " +"Ekstruderin özel G kodu bloğunun başlangıcındaki konumu. Özel G kodu başka bir " +"yere seyahat ederse, Slicer'ın kontrolü geri aldığında nereden seyahat " "ettiğini bilmesi için bu değişkene yazması gerekir." msgid "" -"Retraction state at the beginning of the custom G-code block. If the custom " -"G-code moves the extruder axis, it should write to this variable so " -"OrcaSlicer de-retracts correctly when it gets control back." +"Retraction state at the beginning of the custom G-code block. If the custom G-" +"code moves the extruder axis, it should write to this variable so OrcaSlicer " +"de-retracts correctly when it gets control back." msgstr "" "Özel G kodu bloğunun başlangıcındaki geri çekilme durumu. Özel G kodu " -"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında " -"doğru şekilde geri çekme yapması için bu değişkene yazması gerekir." +"ekstruder eksenini hareket ettirirse, Slicer'ın kontrolü geri aldığında doğru " +"şekilde geri çekme yapması için bu değişkene yazması gerekir." msgid "Extra de-retraction" msgstr "Ekstra deretraksiyon" msgid "Currently planned extra extruder priming after de-retraction." -msgstr "" -"Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." +msgstr "Şu anda, geri çekilmeden sonra ekstra ekstruder hazırlaması planlanıyor." msgid "Absolute E position" msgstr "Mutlak E konumu" @@ -14721,8 +14609,7 @@ msgid "Current object index" msgstr "Geçerli nesne dizini" msgid "" -"Specific for sequential printing. Zero-based index of currently printed " -"object." +"Specific for sequential printing. Zero-based index of currently printed object." msgstr "" "Sıralı yazdırmaya özel. Şu anda yazdırılan nesnenin sıfır tabanlı dizini." @@ -14736,8 +14623,7 @@ msgid "Initial extruder" msgstr "İlk ekstruder" msgid "" -"Zero-based index of the first extruder used in the print. Same as " -"initial_tool." +"Zero-based index of the first extruder used in the print. Same as initial_tool." msgstr "" "Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. başlangıç_aracı ile " "aynı." @@ -14749,14 +14635,12 @@ msgid "" "Zero-based index of the first extruder used in the print. Same as " "initial_extruder." msgstr "" -"Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. İlk ekstruder ile " -"aynı." +"Baskıda kullanılan ilk ekstruderin sıfır bazlı indeksi. İlk ekstruder ile aynı." msgid "Is extruder used?" msgstr "Ekstruder kullanılıyor mu?" -msgid "" -"Vector of booleans stating whether a given extruder is used in the print." +msgid "Vector of booleans stating whether a given extruder is used in the print." msgstr "" "Belirli bir ekstruderin baskıda kullanılıp kullanılmadığını belirten bool " "vektörü." @@ -14794,18 +14678,18 @@ msgid "" "Weight per extruder extruded during the entire print. Calculated from " "filament_density value in Filament Settings." msgstr "" -"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. " -"Filament Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." +"Baskının tamamı boyunca ekstrüzyon yapılan ekstruder başına ağırlık. Filament " +"Ayarlarındaki filaman yoğunluğu değerinden hesaplanır." msgid "Total weight" msgstr "Toplam ağırlık" msgid "" -"Total weight of the print. Calculated from filament_density value in " -"Filament Settings." +"Total weight of the print. Calculated from filament_density value in Filament " +"Settings." msgstr "" -"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu " -"değerinden hesaplanır." +"Baskının toplam ağırlığı. Filament Ayarlarındaki filaman yoğunluğu değerinden " +"hesaplanır." msgid "Total layer count" msgstr "Toplam katman sayısı" @@ -14824,8 +14708,7 @@ msgstr "Örnek sayısı" msgid "Total number of object instances in the print, summed over all objects." msgstr "" -"Tüm nesneler üzerinden toplanan, yazdırmadaki nesne örneklerinin toplam " -"sayısı." +"Tüm nesneler üzerinden toplanan, yazdırmadaki nesne örneklerinin toplam sayısı." msgid "Scale per object" msgstr "Nesne başına ölçeklendirme" @@ -14854,8 +14737,8 @@ msgstr "" "cinsindendir." msgid "" -"The vector has two elements: x and y dimension of the bounding box. Values " -"in mm." +"The vector has two elements: x and y dimension of the bounding box. Values in " +"mm." msgstr "" "Vektörün iki öğesi vardır: sınırlayıcı kutunun x ve y boyutu. Değerler mm " "cinsindendir." @@ -14867,8 +14750,8 @@ msgid "" "Vector of points of the first layer convex hull. Each element has the " "following format:'[x, y]' (x and y are floating-point numbers in mm)." msgstr "" -"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu " -"formata sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." +"Birinci katmanın dışbükey gövdesinin noktalarının vektörü. Her öğe şu formata " +"sahiptir:'[x, y]' (x ve y, mm cinsinden kayan noktalı sayılardır)." msgid "Bottom-left corner of first layer bounding box" msgstr "İlk katman sınırlayıcı kutusunun sol alt köşesi" @@ -14935,8 +14818,8 @@ msgid "Number of extruders" msgstr "Ekstruder sayısı" msgid "" -"Total number of extruders, regardless of whether they are used in the " -"current print." +"Total number of extruders, regardless of whether they are used in the current " +"print." msgstr "" "Geçerli baskıda kullanılıp kullanılmadığına bakılmaksızın ekstrüderlerin " "toplam sayısı." @@ -15074,8 +14957,7 @@ msgstr "Sağlanan dosya boş olduğundan okunamadı" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " -"olmalıdır." +"Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı olmalıdır." msgid "Canceled" msgstr "İptal edildi" @@ -15134,8 +15016,7 @@ msgstr "Bitir" msgid "How to use calibration result?" msgstr "Kalibrasyon sonucu nasıl kullanılır?" -msgid "" -"You could change the Flow Dynamics Calibration Factor in material editing" +msgid "You could change the Flow Dynamics Calibration Factor in material editing" msgstr "" "Malzeme düzenlemede Akış Dinamiği Kalibrasyon Faktörünü değiştirebilirsiniz" @@ -15197,8 +15078,7 @@ msgstr "yeni ön ayar oluşturma başarısız oldu." msgid "" "Are you sure to cancel the current calibration and return to the home page?" msgstr "" -"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin " -"misiniz?" +"Mevcut kalibrasyonu iptal edip ana sayfaya dönmek istediğinizden emin misiniz?" msgid "No Printer Connected!" msgstr "Yazıcı Bağlı Değil!" @@ -15213,16 +15093,16 @@ msgid "The input value size must be 3." msgstr "Giriş değeri boyutu 3 olmalıdır." msgid "" -"This machine type can only hold 16 history results per nozzle. You can " -"delete the existing historical results and then start calibration. Or you " -"can continue the calibration, but you cannot create new calibration " -"historical results. \n" +"This machine type can only hold 16 history results per nozzle. You can delete " +"the existing historical results and then start calibration. Or you can " +"continue the calibration, but you cannot create new calibration historical " +"results. \n" "Do you still want to continue the calibration?" msgstr "" "Bu makine tipi, püskürtme ucu başına yalnızca 16 geçmiş sonucu tutabilir. " -"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona " -"başlayabilirsiniz. Veya kalibrasyona devam edebilirsiniz ancak yeni " -"kalibrasyon geçmişi sonuçları oluşturamazsınız.\n" +"Mevcut geçmiş sonuçları silebilir ve ardından kalibrasyona başlayabilirsiniz. " +"Veya kalibrasyona devam edebilirsiniz ancak yeni kalibrasyon geçmişi sonuçları " +"oluşturamazsınız.\n" "Hala kalibrasyona devam etmek istiyor musunuz?" msgid "Connecting to printer..." @@ -15236,9 +15116,9 @@ msgstr "Akış Dinamiği Kalibrasyonu sonucu yazıcıya kaydedildi" #, c-format, boost-format msgid "" -"There is already a historical calibration result with the same name: %s. " -"Only one of the results with the same name is saved. Are you sure you want " -"to override the historical result?" +"There is already a historical calibration result with the same name: %s. Only " +"one of the results with the same name is saved. Are you sure you want to " +"override the historical result?" msgstr "" "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " @@ -15249,8 +15129,8 @@ msgid "" "This machine type can only hold %d history results per nozzle. This result " "will not be saved." msgstr "" -"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. " -"Bu sonuç kaydedilmeyecek." +"Bu makine türü püskürtme ucu başına yalnızca %d geçmiş sonucunu tutabilir. Bu " +"sonuç kaydedilmeyecek." msgid "Internal Error" msgstr "İç hata" @@ -15268,23 +15148,21 @@ msgid "When do you need Flow Dynamics Calibration" msgstr "Akış Dinamiği Kalibrasyonuna ne zaman ihtiyacınız olur" msgid "" -"We now have added the auto-calibration for different filaments, which is " -"fully automated and the result will be saved into the printer for future " -"use. You only need to do the calibration in the following limited cases:\n" -"1. If you introduce a new filament of different brands/models or the " -"filament is damp;\n" +"We now have added the auto-calibration for different filaments, which is fully " +"automated and the result will be saved into the printer for future use. You " +"only need to do the calibration in the following limited cases:\n" +"1. If you introduce a new filament of different brands/models or the filament " +"is damp;\n" "2. if the nozzle is worn out or replaced with a new one;\n" -"3. If the max volumetric speed or print temperature is changed in the " -"filament setting." +"3. If the max volumetric speed or print temperature is changed in the filament " +"setting." msgstr "" "Artık farklı filamentler için tamamen otomatik olan otomatik kalibrasyonu " -"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. " -"Kalibrasyonu yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" -"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament " -"nemliyse;\n" +"ekledik ve sonuç ileride kullanılmak üzere yazıcıya kaydedilecek. Kalibrasyonu " +"yalnızca aşağıdaki sınırlı durumlarda yapmanız gerekir:\n" +"1. Farklı marka/modelde yeni bir filament taktıysanız veya filament nemliyse;\n" "2. Nozul aşınmışsa veya yenisiyle değiştirilmişse;\n" -"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı " -"değiştirilirse." +"3. Filament ayarında maksimum hacimsel hız veya baskı sıcaklığı değiştirilirse." msgid "About this calibration" msgstr "Bu kalibrasyon hakkında" @@ -15292,17 +15170,17 @@ msgstr "Bu kalibrasyon hakkında" msgid "" "Please find the details of Flow Dynamics Calibration from our wiki.\n" "\n" -"Usually the calibration is unnecessary. When you start a single color/" -"material print, with the \"flow dynamics calibration\" option checked in the " -"print start menu, the printer will follow the old way, calibrate the " -"filament before the print; When you start a multi color/material print, the " -"printer will use the default compensation parameter for the filament during " -"every filament switch which will have a good result in most cases.\n" +"Usually the calibration is unnecessary. When you start a single color/material " +"print, with the \"flow dynamics calibration\" option checked in the print " +"start menu, the printer will follow the old way, calibrate the filament before " +"the print; When you start a multi color/material print, the printer will use " +"the default compensation parameter for the filament during every filament " +"switch which will have a good result in most cases.\n" "\n" "Please note that there are a few cases that can make the calibration results " "unreliable, such as insufficient adhesion on the build plate. Improving " -"adhesion can be achieved by washing the build plate or applying glue. For " -"more information on this topic, please refer to our Wiki.\n" +"adhesion can be achieved by washing the build plate or applying glue. For more " +"information on this topic, please refer to our Wiki.\n" "\n" "The calibration results have about 10 percent jitter in our test, which may " "cause the result not exactly the same in each calibration. We are still " @@ -15313,15 +15191,15 @@ msgstr "" "Genellikle kalibrasyon gereksizdir. Baskı başlatma menüsünde \"akış " "dinamikleri kalibrasyonu\" seçeneği işaretliyken tek renkli/malzemeli bir " "baskı başlattığınızda, yazıcı eski yolu izleyecek, baskıdan önce filamenti " -"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı " -"her filament değişimi sırasında filament için varsayılan telafi " -"parametresini kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" +"kalibre edecektir; Çok renkli/malzemeli bir baskı başlattığınızda, yazıcı her " +"filament değişimi sırasında filament için varsayılan telafi parametresini " +"kullanacaktır ve bu da çoğu durumda iyi bir sonuç verecektir.\n" "\n" -"Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını " -"güvenilmez hale getirebilecek birkaç durum olduğunu lütfen unutmayın. " -"Yapıştırma plakası yıkanarak veya yapıştırıcı uygulanarak yapışmanın " -"iyileştirilmesi sağlanabilir. Bu konu hakkında daha fazla bilgi için lütfen " -"Wiki sayfamıza bakın.\n" +"Yapı plakası üzerinde yetersiz yapışma gibi kalibrasyon sonuçlarını güvenilmez " +"hale getirebilecek birkaç durum olduğunu lütfen unutmayın. Yapıştırma plakası " +"yıkanarak veya yapıştırıcı uygulanarak yapışmanın iyileştirilmesi " +"sağlanabilir. Bu konu hakkında daha fazla bilgi için lütfen Wiki sayfamıza " +"bakın.\n" "\n" "Kalibrasyon sonuçları testimizde yaklaşık yüzde 10 titremeye sahiptir, bu da " "sonucun her kalibrasyonda tam olarak aynı olmamasına neden olabilir. Yeni " @@ -15335,8 +15213,8 @@ msgid "" "issues, such as:\n" "1. Over-Extrusion: Excess material on your printed object, forming blobs or " "zits, or the layers seem thicker than expected and not uniform.\n" -"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the " -"top layer of the model, even when printing slowly.\n" +"2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top " +"layer of the model, even when printing slowly.\n" "3. Poor Surface Quality: The surface of your prints seems rough or uneven.\n" "4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as " "they should be." @@ -15365,10 +15243,10 @@ msgstr "" msgid "" "Flow Rate Calibration measures the ratio of expected to actual extrusion " "volumes. The default setting works well in Bambu Lab printers and official " -"filaments as they were pre-calibrated and fine-tuned. For a regular " -"filament, you usually won't need to perform a Flow Rate Calibration unless " -"you still see the listed defects after you have done other calibrations. For " -"more details, please check out the wiki article." +"filaments as they were pre-calibrated and fine-tuned. For a regular filament, " +"you usually won't need to perform a Flow Rate Calibration unless you still see " +"the listed defects after you have done other calibrations. For more details, " +"please check out the wiki article." msgstr "" "Akış Hızı Kalibrasyonu, beklenen ekstrüzyon hacimlerinin gerçek ekstrüzyon " "hacimlerine oranını ölçer. Varsayılan ayar, önceden kalibre edilmiş ve ince " @@ -15383,25 +15261,24 @@ msgid "" "directly measuring the calibration patterns. However, please be advised that " "the efficacy and accuracy of this method may be compromised with specific " "types of materials. Particularly, filaments that are transparent or semi-" -"transparent, sparkling-particled, or have a high-reflective finish may not " -"be suitable for this calibration and can produce less-than-desirable " -"results.\n" +"transparent, sparkling-particled, or have a high-reflective finish may not be " +"suitable for this calibration and can produce less-than-desirable results.\n" "\n" -"The calibration results may vary between each calibration or filament. We " -"are still improving the accuracy and compatibility of this calibration " -"through firmware updates over time.\n" +"The calibration results may vary between each calibration or filament. We are " +"still improving the accuracy and compatibility of this calibration through " +"firmware updates over time.\n" "\n" -"Caution: Flow Rate Calibration is an advanced process, to be attempted only " -"by those who fully understand its purpose and implications. Incorrect usage " -"can lead to sub-par prints or printer damage. Please make sure to carefully " -"read and understand the process before doing it." +"Caution: Flow Rate Calibration is an advanced process, to be attempted only by " +"those who fully understand its purpose and implications. Incorrect usage can " +"lead to sub-par prints or printer damage. Please make sure to carefully read " +"and understand the process before doing it." msgstr "" "Otomatik Akış Hızı Kalibrasyonu, Bambu Lab'ın Mikro-Lidar teknolojisini " "kullanarak kalibrasyon modellerini doğrudan ölçer. Ancak, bu yöntemin " "etkinliğinin ve doğruluğunun belirli malzeme türleriyle tehlikeye " "girebileceğini lütfen unutmayın. Özellikle şeffaf veya yarı şeffaf, parlak " -"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon " -"için uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" +"parçacıklı veya yüksek yansıtıcı yüzeye sahip filamentler bu kalibrasyon için " +"uygun olmayabilir ve arzu edilenden daha az sonuçlar üretebilir.\n" "\n" "Kalibrasyon sonuçları her kalibrasyon veya filament arasında farklılık " "gösterebilir. Zaman içinde ürün yazılımı güncellemeleriyle bu kalibrasyonun " @@ -15410,8 +15287,8 @@ msgstr "" "Dikkat: Akış Hızı Kalibrasyonu, yalnızca amacını ve sonuçlarını tam olarak " "anlayan kişiler tarafından denenmesi gereken gelişmiş bir işlemdir. Yanlış " "kullanım, ortalamanın altında baskılara veya yazıcının zarar görmesine neden " -"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup " -"anladığınızdan emin olun." +"olabilir. Lütfen işlemi yapmadan önce işlemi dikkatlice okuyup anladığınızdan " +"emin olun." msgid "When you need Max Volumetric Speed Calibration" msgstr "Maksimum Hacimsel Hız Kalibrasyonuna ihtiyaç duyduğunuzda" @@ -15433,15 +15310,15 @@ msgid "We found the best Flow Dynamics Calibration Factor" msgstr "En iyi Akış Dinamiği Kalibrasyon Faktörünü bulduk" msgid "" -"Part of the calibration failed! You may clean the plate and retry. The " -"failed test result would be dropped." +"Part of the calibration failed! You may clean the plate and retry. The failed " +"test result would be dropped." msgstr "" "Kalibrasyonun bir kısmı başarısız oldu! Plakayı temizleyip tekrar " "deneyebilirsiniz. Başarısız olan test sonucu görmezden gelinir." msgid "" -"*We recommend you to add brand, materia, type, and even humidity level in " -"the Name" +"*We recommend you to add brand, materia, type, and even humidity level in the " +"Name" msgstr "*İsme marka, malzeme, tür ve hatta nem seviyesini eklemenizi öneririz" msgid "Failed" @@ -16013,8 +15890,8 @@ msgstr "" msgid "All inputs in the custom vendor or serial are spaces. Please re-enter." msgstr "" -"Özel satıcı veya seri numarasındaki tüm girişler boşluklardan oluşuyor. " -"Lütfen tekrar girin." +"Özel satıcı veya seri numarasındaki tüm girişler boşluklardan oluşuyor. Lütfen " +"tekrar girin." msgid "The vendor can not be a number. Please re-enter." msgstr "Üretici bir sayı olamaz. Lütfen tekrar girin." @@ -16030,8 +15907,8 @@ msgid "" "name. Do you want to continue?" msgstr "" "Oluşturduğunuz %s Filament adı zaten mevcut.\n" -"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla " -"görüntülenecektir. Devam etmek istiyor musun?" +"Oluşturmaya devam ederseniz oluşturulan ön ayar tam adıyla görüntülenecektir. " +"Devam etmek istiyor musun?" msgid "Some existing presets have failed to be created, as follows:\n" msgstr "Aşağıdaki gibi bazı mevcut ön ayarlar oluşturulamadı:\n" @@ -16044,8 +15921,7 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you " -"selected\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -16144,25 +16020,25 @@ msgid "Back Page 1" msgstr "Arka Sayfa 1" msgid "" -"You have not yet chosen which printer preset to create based on. Please " -"choose the vendor and model of the printer" +"You have not yet chosen which printer preset to create based on. Please choose " +"the vendor and model of the printer" msgstr "" -"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen " -"yazıcının satıcısını ve modelini seçin" +"Hangi yazıcı ön ayarının temel alınacağını henüz seçmediniz. Lütfen yazıcının " +"satıcısını ve modelini seçin" msgid "" "You have entered an illegal input in the printable area section on the first " "page. Please check before creating it." msgstr "" -"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. " -"Lütfen oluşturmadan önce kontrol edin." +"İlk sayfadaki yazdırılabilir alan kısmına geçersiz bir giriş yaptınız. Lütfen " +"oluşturmadan önce kontrol edin." msgid "The custom printer or model is not entered, please enter it." msgstr "Özel yazıcı veya model girilmedi lütfen giriş yapın." msgid "" -"The printer preset you created already has a preset with the same name. Do " -"you want to overwrite it?\n" +"The printer preset you created already has a preset with the same name. Do you " +"want to overwrite it?\n" "\tYes: Overwrite the printer preset with the same name, and filament and " "process presets with the same preset name will be recreated \n" "and filament and process presets without the same preset name will be " @@ -16172,8 +16048,7 @@ msgstr "" "Oluşturduğunuz yazıcı ön ayarının zaten aynı ada sahip bir ön ayarı var. " "Üzerine yazmak istiyor musunuz?\n" "\tEvet: Aynı adı taşıyan yazıcı ön ayarının üzerine yazın; aynı ön ayar adı " -"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön " -"ayar \n" +"taşıyan filaman ve proses ön ayarları yeniden oluşturulacak ve aynı ön ayar \n" "adı olmayan filament ve işlem ön ayarları rezerve edilecektir.\n" "\tİptal: Ön ayar oluşturmayın, oluşturma arayüzüne dönün." @@ -16219,8 +16094,7 @@ msgstr "" msgid "" "You have not yet selected the printer to replace the nozzle, please choose." -msgstr "" -"Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." +msgstr "Hala nozulu değiştirmek için yazıcı seçmediniz, lütfen bir seçim yapın." msgid "Create Printer Successful" msgstr "Yazıcı Oluşturma Başarılı" @@ -16240,8 +16114,8 @@ msgstr "Filament Oluşturuldu" msgid "" "Please go to filament setting to edit your presets if you need.\n" "Please note that nozzle temperature, hot bed temperature, and maximum " -"volumetric speed has a significant impact on printing quality. Please set " -"them carefully." +"volumetric speed has a significant impact on printing quality. Please set them " +"carefully." msgstr "" "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " "gidin.\n" @@ -16303,13 +16177,13 @@ msgstr "Dışa aktarma başarılı" #, c-format, boost-format msgid "" -"The '%s' folder already exists in the current directory. Do you want to " -"clear it and rebuild it.\n" +"The '%s' folder already exists in the current directory. Do you want to clear " +"it and rebuild it.\n" "If not, a time suffix will be added, and you can modify the name after " "creation." msgstr "" -"'%s' klasörü mevcut dizinde zaten mevcut. Onu temizleyip yeniden oluşturmak " -"mı istiyorsunuz?\n" +"'%s' klasörü mevcut dizinde zaten mevcut. Onu temizleyip yeniden oluşturmak mı " +"istiyorsunuz?\n" "Değilse, bir zaman son eki eklenecektir ve oluşturulduktan sonra adı " "değiştirebilirsiniz." @@ -16343,8 +16217,8 @@ msgid "" "Only printer names with user printer presets will be displayed, and each " "preset you choose will be exported as a zip." msgstr "" -"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek " -"ve seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." +"Yalnızca kullanıcı yazıcı ön ayarlarına sahip yazıcı adları görüntülenecek ve " +"seçtiğiniz her ön ayar zip olarak dışa aktarılacaktır." msgid "" "Only the filament names with user filament presets will be displayed, \n" @@ -16352,13 +16226,13 @@ msgid "" "exported as a zip." msgstr "" "Yalnızca kullanıcı filamenti ön ayarlarına sahip filament adları \n" -"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti " -"ön ayarları zip olarak dışa aktarılacaktır." +"görüntülenecek ve seçtiğiniz her filament adındaki tüm kullanıcı filamenti ön " +"ayarları zip olarak dışa aktarılacaktır." msgid "" "Only printer names with changed process presets will be displayed, \n" -"and all user process presets in each printer name you select will be " -"exported as a zip." +"and all user process presets in each printer name you select will be exported " +"as a zip." msgstr "" "Yalnızca işlem ön ayarları değiştirilen yazıcı adları görüntülenecek \n" "ve seçtiğiniz her yazıcı adındaki tüm kullanıcı işlem ön ayarları zip olarak " @@ -16382,8 +16256,8 @@ msgid "Filament presets under this filament" msgstr "Bu filamentin altındaki filament ön ayarları" msgid "" -"Note: If the only preset under this filament is deleted, the filament will " -"be deleted after exiting the dialog." +"Note: If the only preset under this filament is deleted, the filament will be " +"deleted after exiting the dialog." msgstr "" "Not: Bu filamentin altındaki tek ön ayar silinirse, diyalogdan çıkıldıktan " "sonra filament silinecektir." @@ -16501,8 +16375,7 @@ msgstr "Aygıt sekmesinde yazdırma ana bilgisayarı web arayüzünü görüntü msgid "Replace the BambuLab's device tab with print host webui" msgstr "" -"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle " -"değiştirin" +"BambuLab’ın aygıt sekmesini yazdırma ana bilgisayarı web arayüzüyle değiştirin" msgid "" "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-" @@ -16522,8 +16395,8 @@ msgid "" "On this system, %s uses HTTPS certificates from the system Certificate Store " "or Keychain." msgstr "" -"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan " -"HTTPS sertifikalarını kullanıyor." +"Bu sistemde %s, sistem Sertifika Deposu veya Anahtar Zincirinden alınan HTTPS " +"sertifikalarını kullanıyor." msgid "" "To use a custom CA file, please import your CA file into Certificate Store / " @@ -16578,8 +16451,8 @@ msgid "Could not connect to FlashAir" msgstr "FlashAir'e bağlanılamadı" msgid "" -"Note: FlashAir with firmware 2.00.02 or newer and activated upload function " -"is required." +"Note: FlashAir with firmware 2.00.02 or newer and activated upload function is " +"required." msgstr "" "Not: Firmware 2.00.02 veya daha yeni ve etkinleştirilmiş yükleme işlevine " "sahip FlashAir gereklidir." @@ -16673,36 +16546,34 @@ msgstr "" "Hata: \"%2%\"" msgid "" -"It has a small layer height, and results in almost negligible layer lines " -"and high printing quality. It is suitable for most general printing cases." +"It has a small layer height, and results in almost negligible layer lines and " +"high printing quality. It is suitable for most general printing cases." msgstr "" "Küçük bir katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir katman " "çizgileri ve yüksek baskı kalitesi sağlar. Çoğu genel yazdırma durumu için " "uygundur." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds " -"and acceleration, and the sparse infill pattern is Gyroid. So, it results in " -"much higher printing quality, but a much longer printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has lower speeds and " +"acceleration, and the sparse infill pattern is Gyroid. So, it results in much " +"higher printing quality, but a much longer printing time." msgstr "" "0,2 mm’lik nozülün varsayılan profiliyle karşılaştırıldığında daha düşük hız " -"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha " -"yüksek baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde " -"edilir." +"ve ivmeye sahiptir ve seyrek dolgu deseni Gyroid’dir. Böylece çok daha yüksek " +"baskı kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" -"Compared with the default profile of a 0.2 mm nozzle, it has a slightly " -"bigger layer height, and results in almost negligible layer lines, and " -"slightly shorter printing time." +"Compared with the default profile of a 0.2 mm nozzle, it has a slightly bigger " +"layer height, and results in almost negligible layer lines, and slightly " +"shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir " -"düzeyde katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha büyük katman yüksekliğine sahiptir ve neredeyse ihmal edilebilir düzeyde " +"katman çizgileri ve biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height, and results in slightly visible layer lines, but shorter printing " -"time." +"height, and results in slightly visible layer lines, but shorter printing time." msgstr "" "0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve katman çizgilerinin hafifçe " @@ -16713,15 +16584,15 @@ msgid "" "height, and results in almost invisible layer lines and higher printing " "quality, but shorter printing time." msgstr "" -"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"katman yüksekliği daha küçüktür ve neredeyse görünmez katman çizgileri ve " -"daha yüksek baskı kalitesi, ancak daha kısa yazdırma süresi sağlar." +"0,2 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " +"yüksekliği daha küçüktür ve neredeyse görünmez katman çizgileri ve daha yüksek " +"baskı kalitesi, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in almost invisible layer lines and much higher " -"printing quality, but much longer printing time." +"lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. " +"So, it results in almost invisible layer lines and much higher printing " +"quality, but much longer printing time." msgstr "" "0,2 mm’lik nozulun varsayılan profiliyle karşılaştırıldığında, daha küçük " "katman çizgilerine, daha düşük hızlara ve ivmeye sahiptir ve seyrek dolgu " @@ -16735,14 +16606,14 @@ msgid "" "shorter printing time." msgstr "" "Varsayılan 0,2 mm püskürtme ucu profiliyle karşılaştırıldığında, daha küçük " -"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek " -"baskı kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." +"katman yüksekliğine sahiptir ve minimum katman çizgileri ve daha yüksek baskı " +"kalitesi sağlar, ancak daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " -"lines, lower speeds and acceleration, and the sparse infill pattern is " -"Gyroid. So, it results in minimal layer lines and much higher printing " -"quality, but much longer printing time." +"lines, lower speeds and acceleration, and the sparse infill pattern is Gyroid. " +"So, it results in minimal layer lines and much higher printing quality, but " +"much longer printing time." msgstr "" "0,2 mm’lik nozulun varsayılan profiliyle karşılaştırıldığında, daha küçük " "katman çizgilerine, daha düşük hızlara ve ivmeye sahiptir ve seyrek dolgu " @@ -16750,8 +16621,8 @@ msgstr "" "kalitesi elde edilir, ancak çok daha uzun baskı süresi elde edilir." msgid "" -"It has a general layer height, and results in general layer lines and " -"printing quality. It is suitable for most general printing cases." +"It has a general layer height, and results in general layer lines and printing " +"quality. It is suitable for most general printing cases." msgstr "" "Genel bir katman yüksekliğine sahiptir ve genel katman çizgileri ve baskı " "kalitesiyle sonuçlanır. Çoğu genel yazdırma durumu için uygundur." @@ -16773,8 +16644,7 @@ msgid "" msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve daha belirgin katman çizgileri ve " -"daha düşük baskı kalitesi sağlar, ancak biraz daha kısa yazdırma süresi " -"sağlar." +"daha düşük baskı kalitesi sağlar, ancak biraz daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a bigger layer " @@ -16787,12 +16657,12 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16811,10 +16681,9 @@ msgid "" "height, and results in almost negligible layer lines and higher printing " "quality, but longer printing time." msgstr "" -"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilir katman " -"çizgileri ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma " -"süresi sağlar." +"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " +"yüksekliği daha küçüktür ve neredeyse göz ardı edilebilir katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -16830,12 +16699,11 @@ msgstr "" msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " -"height, and results in almost negligible layer lines and longer printing " -"time." +"height, and results in almost negligible layer lines and longer printing time." msgstr "" -"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"katman yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde " -"katman çizgileri ve daha uzun yazdırma süresi sağlar." +"0,4 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, katman " +"yüksekliği daha küçüktür ve neredeyse göz ardı edilebilecek düzeyde katman " +"çizgileri ve daha uzun yazdırma süresi sağlar." msgid "" "It has a big layer height, and results in apparent layer lines and ordinary " @@ -16866,13 +16734,13 @@ msgstr "" msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a bigger layer " -"height, and results in much more apparent layer lines and much lower " -"printing quality, but shorter printing time in some printing cases." +"height, and results in much more apparent layer lines and much lower printing " +"quality, but shorter printing time in some printing cases." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "büyük bir katman yüksekliğine sahiptir ve çok daha belirgin katman çizgileri " -"ve çok daha düşük baskı kalitesi sağlar, ancak bazı yazdırma durumlarında " -"daha kısa yazdırma süresi sağlar." +"ve çok daha düşük baskı kalitesi sağlar, ancak bazı yazdırma durumlarında daha " +"kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " @@ -16880,25 +16748,25 @@ msgid "" "quality, but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve katman çizgilerinin daha az " -"belirgin olmasına ve biraz daha yüksek baskı kalitesine, ancak daha uzun " -"yazdırma süresine neden olur." +"küçük bir katman yüksekliğine sahiptir ve katman çizgilerinin daha az belirgin " +"olmasına ve biraz daha yüksek baskı kalitesine, ancak daha uzun yazdırma " +"süresine neden olur." msgid "" "Compared with the default profile of a 0.6 mm nozzle, it has a smaller layer " -"height, and results in less apparent layer lines and higher printing " -"quality, but longer printing time." +"height, and results in less apparent layer lines and higher printing quality, " +"but longer printing time." msgstr "" "0,6 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri " -"ve daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." +"küçük bir katman yüksekliğine sahiptir ve daha az görünür katman çizgileri ve " +"daha yüksek baskı kalitesi sağlar, ancak daha uzun yazdırma süresi sağlar." msgid "" -"It has a very big layer height, and results in very apparent layer lines, " -"low printing quality and general printing time." +"It has a very big layer height, and results in very apparent layer lines, low " +"printing quality and general printing time." msgstr "" -"Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman " -"çizgilerine, düşük baskı kalitesine ve genel yazdırma süresine neden olur." +"Çok büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgilerine, " +"düşük baskı kalitesine ve genel yazdırma süresine neden olur." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a bigger layer " @@ -16906,9 +16774,9 @@ msgid "" "quality, but shorter printing time in some printing cases." msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " -"büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve " -"çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " -"durumlarında daha kısa yazdırma süresi sağlar." +"büyük bir katman yüksekliğine sahiptir ve çok belirgin katman çizgileri ve çok " +"daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma durumlarında daha " +"kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a much bigger " @@ -16917,8 +16785,8 @@ msgid "" msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, çok " "daha büyük bir katman yüksekliğine sahiptir ve son derece belirgin katman " -"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı " -"yazdırma durumlarında çok daha kısa yazdırma süresi sağlar." +"çizgileri ve çok daha düşük baskı kalitesiyle sonuçlanır, ancak bazı yazdırma " +"durumlarında çok daha kısa yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a slightly " @@ -16926,15 +16794,15 @@ msgid "" "lines and slightly higher printing quality, but longer printing time in some " "printing cases." msgstr "" -"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, " -"biraz daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine " -"de görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, " -"ancak bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." +"0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, biraz " +"daha küçük bir katman yüksekliğine sahiptir ve biraz daha az ama yine de " +"görünür katman çizgileri ve biraz daha yüksek baskı kalitesi sağlar, ancak " +"bazı yazdırma durumlarında daha uzun yazdırma süresi sağlar." msgid "" "Compared with the default profile of a 0.8 mm nozzle, it has a smaller layer " -"height, and results in less but still apparent layer lines and slightly " -"higher printing quality, but longer printing time in some printing cases." +"height, and results in less but still apparent layer lines and slightly higher " +"printing quality, but longer printing time in some printing cases." msgstr "" "0,8 mm’lik püskürtme ucunun varsayılan profiliyle karşılaştırıldığında, daha " "küçük bir katman yüksekliğine sahiptir ve daha az ama yine de görünür katman " @@ -17001,8 +16869,7 @@ msgid "" msgstr "" "Sandviç modu\n" "Modelinizde çok dik çıkıntılar yoksa hassasiyeti ve katman tutarlılığını " -"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor " -"muydunuz?" +"artırmak için sandviç modunu (iç-dış-iç) kullanabileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -17060,18 +16927,18 @@ msgstr "" #: resources/data/hints.ini: [hint:How to use keyboard shortcuts] msgid "" "How to use keyboard shortcuts\n" -"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " -"3D scene operations." +"Did you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D " +"scene operations." msgstr "" "Klavye kısayolları nasıl kullanılır?\n" -"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri " -"sunduğunu biliyor muydunuz?" +"Orca Slicer'ın çok çeşitli klavye kısayolları ve 3B sahne işlemleri sunduğunu " +"biliyor muydunuz?" #: resources/data/hints.ini: [hint:Reverse on odd] msgid "" "Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Did you know that Reverse on odd feature can significantly improve the " +"surface quality of your overhangs?" msgstr "" "Tersine çevir\n" "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " @@ -17084,8 +16951,8 @@ msgid "" "cutting tool?" msgstr "" "Kesme Aleti\n" -"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi " -"biliyor muydunuz?" +"Kesici aletle bir modeli istediğiniz açıda ve konumda kesebileceğinizi biliyor " +"muydunuz?" #: resources/data/hints.ini: [hint:Fix Model] msgid "" @@ -17094,8 +16961,8 @@ msgid "" "problems on the Windows system?" msgstr "" "Modeli Düzelt\n" -"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D " -"modeli düzeltebileceğinizi biliyor muydunuz?" +"Windows sisteminde birçok dilimleme sorununu önlemek için bozuk bir 3D modeli " +"düzeltebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Timelapse] msgid "" @@ -17121,15 +16988,15 @@ msgid "" "printing by a simple click?" msgstr "" "Otomatik Yönlendirme\n" -"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne " -"döndürebileceğinizi biliyor muydunuz?" +"Basit bir tıklamayla nesneleri yazdırma için en uygun yöne döndürebileceğinizi " +"biliyor muydunuz?" #: 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 "" "Yüzüstü yatır\n" "Bir modeli, yüzlerinden biri baskı yatağına oturacak şekilde hızla " @@ -17139,12 +17006,12 @@ msgstr "" #: 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 "" "Nesne Listesi\n" -"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/" -"parça için ayarları değiştirebileceğinizi biliyor muydunuz?" +"Tüm nesneleri/parçaları bir listede görüntüleyebileceğinizi ve her nesne/parça " +"için ayarları değiştirebileceğinizi biliyor muydunuz?" #: resources/data/hints.ini: [hint:Search Functionality] msgid "" @@ -17216,26 +17083,26 @@ msgstr "" #: 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 "" "Z dikiş konumu\n" "Z dikişinin konumunu kişiselleştirebileceğinizi ve hatta daha az görünür bir " -"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? " -"Bu, modelinizin genel görünümünü iyileştirir. Buna bir bak!" +"konuma getirmek için baskının üzerine boyayabileceğinizi biliyor muydunuz? Bu, " +"modelinizin genel görünümünü iyileştirir. Buna bir bak!" #: 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 "" "Akış hızı için ince ayar\n" "Baskıların daha da iyi görünmesi için akış hızına ince ayar yapılabileceğini " -"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak " -"yazdırılan modelin genel yüzeyini iyileştirebilirsiniz." +"biliyor muydunuz? Malzemeye bağlı olarak, bazı ince ayarlar yaparak yazdırılan " +"modelin genel yüzeyini iyileştirebilirsiniz." #: resources/data/hints.ini: [hint:Split your prints into plates] msgid "" @@ -17257,19 +17124,19 @@ msgid "" "Layer Height option? Check it out!" msgstr "" "Uyarlanabilir Katman Yüksekliği ile baskınızı hızlandırın\n" -"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da " -"hızlı yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" +"Uyarlanabilir Katman Yüksekliği seçeneğini kullanarak bir modeli daha da hızlı " +"yazdırabileceğinizi biliyor muydunuz? Buna bir bak!" #: 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." +"makes it easy to place the support material only on the sections of the model " +"that actually need it." msgstr "" "Destek boyama\n" -"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, " -"destek malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " +"Desteklerinizin yerini boyayabileceğinizi biliyor muydunuz? Bu özellik, destek " +"malzemesinin yalnızca modelin gerçekten ihtiyaç duyulan bölümlerine " "yerleştirilmesini kolaylaştırır." #: resources/data/hints.ini: [hint:Different types of supports] @@ -17293,14 +17160,14 @@ msgid "" msgstr "" "İpek Filament Baskı\n" "İpek filamentin başarılı bir şekilde basılabilmesi için özel dikkat " -"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman " -"daha yüksek sıcaklık ve daha düşük hız önerilir." +"gösterilmesi gerektiğini biliyor muydunuz? En iyi sonuçlar için her zaman daha " +"yüksek sıcaklık ve daha düşük hız önerilir." #: 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 "" "Daha iyi yapışma için kenar\n" "Baskı modellerinde baskı yüzeyi ile küçük bir temas arayüzü bulunduğunda " @@ -17331,14 +17198,14 @@ msgid "" "support/objects/infill during filament change?" msgstr "" "Desteğe/nesnelere/dolguya hizalayın\n" -"Filament değişimi sırasında, boşa harcanan filamenti desteğe/nesnelere/" -"dolguya yıkayarak kurtarabileceğinizi biliyor muydunuz?" +"Filament değişimi sırasında, boşa harcanan filamenti desteğe/nesnelere/dolguya " +"yıkayarak kurtarabileceğinizi biliyor muydunuz?" #: 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 "" "Gücü artırın\n" "Modelin gücünü artırmak için daha fazla duvar halkası ve daha yüksek seyrek " @@ -17385,8 +17252,8 @@ msgstr "" #~ "stresses in the part walls." #~ msgstr "" #~ "Tek katmanlarda ters yönde bir çıkıntının üzerinde bir kısmı bulunan " -#~ "çevreleri ekstrüzyonla çıkarın. Bu alternatif desen, dik çıkıntıları " -#~ "büyük ölçüde iyileştirebilir.\n" +#~ "çevreleri ekstrüzyonla çıkarın. Bu alternatif desen, dik çıkıntıları büyük " +#~ "ölçüde iyileştirebilir.\n" #~ "\n" #~ "Bu ayar aynı zamanda parça duvarlarındaki gerilimin azalması nedeniyle " #~ "parçanın bükülmesinin azaltılmasına da yardımcı olabilir." @@ -17396,10 +17263,10 @@ msgstr "" #~ "\n" #~ "This setting greatly reduces part stresses as they are now distributed in " #~ "alternating directions. This should reduce part warping while also " -#~ "maintaining external wall quality. This feature can be very useful for " -#~ "warp prone material, like ABS/ASA, and also for elastic filaments, like " -#~ "TPU and Silk PLA. It can also help reduce warping on floating regions " -#~ "over supports.\n" +#~ "maintaining external wall quality. This feature can be very useful for warp " +#~ "prone material, like ABS/ASA, and also for elastic filaments, like TPU and " +#~ "Silk PLA. It can also help reduce warping on floating regions over " +#~ "supports.\n" #~ "\n" #~ "For this setting to be the most effective, it is recommended to set the " #~ "Reverse Threshold to 0 so that all internal walls print in alternating " @@ -17407,16 +17274,16 @@ msgstr "" #~ msgstr "" #~ "Ters çevre mantığını yalnızca iç çevrelere uygulayın. \n" #~ "\n" -#~ "Bu ayar, parçalar artık farklı yönlerde dağıtıldığından parça " -#~ "gerilimlerini büyük ölçüde azaltır. Bu, dış duvar kalitesini korurken " -#~ "parçanın bükülmesini de azaltacaktır. Bu özellik, ABS/ASA gibi eğrilmeye " -#~ "yatkın malzemeler ve ayrıca TPU ve İpek PLA gibi elastik filamentler için " -#~ "çok faydalı olabilir. Ayrıca destekler üzerindeki yüzen bölgelerdeki " -#~ "bükülmenin azaltılmasına da yardımcı olabilir.\n" +#~ "Bu ayar, parçalar artık farklı yönlerde dağıtıldığından parça gerilimlerini " +#~ "büyük ölçüde azaltır. Bu, dış duvar kalitesini korurken parçanın " +#~ "bükülmesini de azaltacaktır. Bu özellik, ABS/ASA gibi eğrilmeye yatkın " +#~ "malzemeler ve ayrıca TPU ve İpek PLA gibi elastik filamentler için çok " +#~ "faydalı olabilir. Ayrıca destekler üzerindeki yüzen bölgelerdeki bükülmenin " +#~ "azaltılmasına da yardımcı olabilir.\n" #~ "\n" #~ "Bu ayarın en etkili olması için, tüm iç duvarların çıkıntı derecelerine " -#~ "bakılmaksızın tek katmanlar üzerine değişen yönlerde yazdırılması için " -#~ "Ters Eşiği 0'a ayarlamanız önerilir." +#~ "bakılmaksızın tek katmanlar üzerine değişen yönlerde yazdırılması için Ters " +#~ "Eşiği 0'a ayarlamanız önerilir." #, no-c-format, no-boost-format #~ msgid "" @@ -17424,25 +17291,25 @@ msgstr "" #~ "useful. Can be a % of the perimeter width.\n" #~ "Value 0 enables reversal on every odd layers regardless." #~ msgstr "" -#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması " -#~ "gerekir. Çevre genişliğinin %'si olabilir.\n" +#~ "Ters çevirmenin faydalı sayılması için çıkıntının mm sayısı olması gerekir. " +#~ "Çevre genişliğinin %'si olabilir.\n" #~ "Değer 0 her tek katmanda terslemeyi etkinleştirir." #~ msgid "" -#~ "The direction which the wall loops are extruded when looking down from " -#~ "the top.\n" +#~ "The direction which the wall loops are extruded when looking down from the " +#~ "top.\n" #~ "\n" #~ "By default all walls are extruded in counter-clockwise, unless Reverse on " -#~ "odd is enabled. Set this to any option other than Auto will force the " -#~ "wall direction regardless of the Reverse on odd.\n" +#~ "odd is enabled. Set this to any option other than Auto will force the wall " +#~ "direction regardless of the Reverse on odd.\n" #~ "\n" #~ "This option will be disabled if spiral vase mode is enabled." #~ msgstr "" #~ "Yukarıdan aşağıya bakıldığında duvar döngülerinin ekstrüzyona uğradığı " #~ "yön.\n" #~ "\n" -#~ "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak " -#~ "tüm duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " +#~ "Tek sayıyı ters çevir seçeneği etkinleştirilmedikçe, varsayılan olarak tüm " +#~ "duvarlar saat yönünün tersine ekstrüde edilir. Bunu Otomatik dışında " #~ "herhangi bir seçeneğe ayarlayın, Ters açıklığa bakılmaksızın duvar yönünü " #~ "zorlayacaktır.\n" #~ "\n" @@ -17474,9 +17341,9 @@ 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" +#~ "(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 commands 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 " @@ -17484,9 +17351,8 @@ msgstr "" #~ "Use 0 to deactivate." #~ msgstr "" #~ "Fanı hedef başlangıç zamanından bu kadar saniye önce başlatın (kesirli " -#~ "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar " -#~ "ve yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma " -#~ "desteklenmez).\n" +#~ "saniyeleri kullanabilirsiniz). Bu süre tahmini için sonsuz ivme varsayar ve " +#~ "yalnızca G1 ve G0 hareketlerini hesaba katar (yay uydurma desteklenmez).\n" #~ "Fan komutlarını özel kodlardan taşımaz (bir çeşit 'bariyer' görevi " #~ "görürler).\n" #~ "'Yalnızca özel başlangıç gcode'u etkinleştirilmişse, fan komutları " @@ -17495,8 +17361,8 @@ msgstr "" #~ msgid "" #~ "A draft shield is useful to protect an ABS or ASA print from warping and " -#~ "detaching from print bed due to wind draft. It is usually needed only " -#~ "with open frame printers, i.e. without an enclosure. \n" +#~ "detaching from print bed due to wind draft. It is usually needed only with " +#~ "open frame printers, i.e. without an enclosure. \n" #~ "\n" #~ "Options:\n" #~ "Enabled = skirt is as tall as the highest printed object.\n" @@ -17515,68 +17381,67 @@ msgstr "" #~ "Etkin = etek, yazdırılan en yüksek nesne kadar uzundur.\n" #~ "Sınırlı = etek, etek yüksekliğinin belirttiği kadar uzundur.\n" #~ "\n" -#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. " -#~ "Bu nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için " -#~ "etek mesafesi değerini artırın.\n" +#~ "Not: Rüzgarlık etkinken etek, nesneden etek mesafesinde yazdırılacaktır. Bu " +#~ "nedenle eğer kenarlar aktifse onlarla kesişebilir. Bunu önlemek için etek " +#~ "mesafesi değerini artırın.\n" #~ msgid "Limited" #~ msgstr "Sınırlı" #~ msgid "" -#~ "Minimum filament extrusion length in mm when printing the skirt. Zero " -#~ "means this feature is disabled.\n" +#~ "Minimum filament extrusion length in mm when printing the skirt. Zero means " +#~ "this feature is disabled.\n" #~ "\n" -#~ "Using a non zero value is useful if the printer is set up to print " -#~ "without a prime line." +#~ "Using a non zero value is useful if the printer is set up to print without " +#~ "a prime line." #~ msgstr "" -#~ "Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. " -#~ "Sıfır, bu özelliğin devre dışı olduğu anlamına gelir.\n" +#~ "Etek yazdırılırken mm cinsinden minimum filaman ekstrüzyon uzunluğu. Sıfır, " +#~ "bu özelliğin devre dışı olduğu anlamına gelir.\n" #~ "\n" -#~ "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir " -#~ "değer kullanmak yararlı olur." +#~ "Yazıcı ana hat olmadan yazdırmak üzere ayarlanmışsa sıfır dışında bir değer " +#~ "kullanmak yararlı olur." #~ msgid "" #~ "Adjust this value to prevent short, unclosed walls from being printed, " #~ "which could increase print time. Higher values remove more and longer " #~ "walls.\n" #~ "\n" -#~ "NOTE: Bottom and top surfaces will not be affected by this value to " -#~ "prevent visual gaps on the ouside of the model. Adjust 'One wall " -#~ "threshold' in the Advanced settings below to adjust the sensitivity of " -#~ "what is considered a top-surface. 'One wall threshold' is only visible if " -#~ "this setting is set above the default value of 0.5, or if single-wall top " -#~ "surfaces is enabled." +#~ "NOTE: Bottom and top surfaces will not be affected by this value to prevent " +#~ "visual gaps on the ouside of the model. Adjust 'One wall threshold' in the " +#~ "Advanced settings below to adjust the sensitivity of what is considered a " +#~ "top-surface. 'One wall threshold' is only visible if this setting is set " +#~ "above the default value of 0.5, or if single-wall top surfaces is enabled." #~ msgstr "" #~ "Yazdırma süresini artırabilecek kısa, kapatılmamış duvarların " -#~ "yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler " -#~ "daha fazla ve daha uzun duvarları kaldırır.\n" +#~ "yazdırılmasını önlemek için bu değeri ayarlayın. Daha yüksek değerler daha " +#~ "fazla ve daha uzun duvarları kaldırır.\n" #~ "\n" -#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst " -#~ "yüzeyler bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen " -#~ "şeyin hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek " -#~ "duvar eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan " -#~ "değer olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " +#~ "NOT: Modelin dış kısmında görsel boşluk kalmaması için alt ve üst yüzeyler " +#~ "bu değerden etkilenmeyecektir. Üst yüzey olarak kabul edilen şeyin " +#~ "hassasiyetini ayarlamak için aşağıdaki Gelişmiş ayarlarda 'Tek duvar " +#~ "eşiği'ni ayarlayın. 'Tek duvar eşiği' yalnızca bu ayar varsayılan değer " +#~ "olan 0,5'in üzerine ayarlandığında veya tek duvarlı üst yüzeyler " #~ "etkinleştirildiğinde görünür." #~ msgid "Don't filter out small internal bridges (beta)" #~ msgstr "Küçük iç köprüleri filtrelemeyin (deneysel)" #~ msgid "" -#~ "This option can help reducing pillowing on top surfaces in heavily " -#~ "slanted or curved models.\n" +#~ "This option can help reducing pillowing on top surfaces in heavily slanted " +#~ "or curved models.\n" #~ "\n" -#~ "By default, small internal bridges are filtered out and the internal " -#~ "solid infill is printed directly over the sparse infill. This works well " -#~ "in most cases, speeding up printing without too much compromise on top " -#~ "surface quality. \n" +#~ "By default, small internal bridges are filtered out and the internal solid " +#~ "infill is printed directly over the sparse infill. This works well in most " +#~ "cases, speeding up printing without too much compromise on top surface " +#~ "quality. \n" #~ "\n" #~ "However, in heavily slanted or curved models especially where too low " #~ "sparse infill density is used, this may result in curling of the " #~ "unsupported solid infill, causing pillowing.\n" #~ "\n" #~ "Enabling this option will print internal bridge layer over slightly " -#~ "unsupported internal solid infill. The options below control the amount " -#~ "of filtering, i.e. the amount of internal bridges created.\n" +#~ "unsupported internal solid infill. The options below control the amount of " +#~ "filtering, i.e. the amount of internal bridges created.\n" #~ "\n" #~ "Disabled - Disables this option. This is the default behavior and works " #~ "well in most cases.\n" @@ -17597,9 +17462,8 @@ msgstr "" #~ "yüzey kalitesinden çok fazla ödün vermeden yazdırmayı hızlandırır. \n" #~ "\n" #~ "Bununla birlikte, özellikle çok düşük seyrek dolgu yoğunluğunun " -#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum " -#~ "desteklenmeyen katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına " -#~ "neden olabilir.\n" +#~ "kullanıldığı aşırı eğimli veya kavisli modellerde, bu durum desteklenmeyen " +#~ "katı dolgunun kıvrılmasına ve yastıklanmaya neden olmasına neden olabilir.\n" #~ "\n" #~ "Bu seçeneğin etkinleştirilmesi, iç köprü katmanını hafif desteklenmeyen " #~ "dahili katı dolgu üzerine yazdıracaktır. Aşağıdaki seçenekler filtreleme " @@ -17612,16 +17476,16 @@ msgstr "" #~ "gereksiz iç köprülerin oluşmasını da önler. Bu, çoğu zor modelde işe " #~ "yarar.\n" #~ "\n" -#~ "Filtreleme yok - Her potansiyel dahili çıkıntıda dahili köprüler " -#~ "oluşturur. Bu seçenek, aşırı eğimli üst yüzey modelleri için " -#~ "kullanışlıdır. Ancak çoğu durumda çok fazla gereksiz köprü oluşturur." +#~ "Filtreleme yok - Her potansiyel dahili çıkıntıda dahili köprüler oluşturur. " +#~ "Bu seçenek, aşırı eğimli üst yüzey modelleri için kullanışlıdır. Ancak çoğu " +#~ "durumda çok fazla gereksiz köprü oluşturur." #~ msgid "Shrinkage" #~ msgstr "Büzüşme" #~ msgid "" -#~ "Your object appears to be too large. It will be scaled down to fit the " -#~ "heat bed automatically." +#~ "Your object appears to be too large. It will be scaled down to fit the heat " +#~ "bed automatically." #~ msgstr "" #~ "Nesneniz çok büyük görünüyor. Plakaya otomatik olarak uyacak şekilde " #~ "küçültülecektir." @@ -17638,15 +17502,14 @@ msgstr "" #~ "below.\n" #~ "\n" #~ "Options:\n" -#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid " -#~ "surfaces\n" +#~ "1. Everywhere: Applies gap fill to top, bottom and internal solid surfaces\n" #~ "2. Top and Bottom surfaces: Applies gap fill to top and bottom surfaces " #~ "only\n" #~ "3. Nowhere: Disables gap fill\n" #~ msgstr "" -#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak " -#~ "minimum boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden " -#~ "kontrol edilebilir.\n" +#~ "Seçilen yüzeyler için boşluk doldurmayı etkinleştirir. Doldurulacak minimum " +#~ "boşluk uzunluğu aşağıdaki küçük boşlukları filtrele seçeneğinden kontrol " +#~ "edilebilir.\n" #~ "\n" #~ "Seçenekler:\n" #~ "1. Her Yerde: Üst, alt ve iç katı yüzeylere boşluk doldurma uygular\n" @@ -17662,20 +17525,20 @@ msgstr "" #~ "değeri biraz azaltın (örneğin 0,9)" #~ msgid "" -#~ "This value governs the thickness of the internal bridge layer. This is " -#~ "the first layer over sparse infill. Decrease this value slightly (for " -#~ "example 0.9) to improve surface quality over sparse infill." +#~ "This value governs the thickness of the internal bridge layer. This is the " +#~ "first layer over sparse infill. Decrease this value slightly (for example " +#~ "0.9) to improve surface quality over sparse infill." #~ msgstr "" #~ "Bu değer iç köprü katmanının kalınlığını belirler. Bu, seyrek dolgunun " -#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini " -#~ "iyileştirmek için bu değeri biraz azaltın (örneğin 0,9)." +#~ "üzerindeki ilk katmandır. Seyrek dolguya göre yüzey kalitesini iyileştirmek " +#~ "için bu değeri biraz azaltın (örneğin 0,9)." #~ msgid "" #~ "This factor affects the amount of material for top solid infill. You can " #~ "decrease it slightly to have smooth surface finish" #~ msgstr "" -#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir " -#~ "yüzey elde etmek için biraz azaltabilirsiniz" +#~ "Bu faktör üst katı dolgu için malzeme miktarını etkiler. Pürüzsüz bir yüzey " +#~ "elde etmek için biraz azaltabilirsiniz" #~ msgid "This factor affects the amount of material for bottom solid infill" #~ msgstr "Bu faktör alt katı dolgu için malzeme miktarını etkiler" @@ -17702,16 +17565,15 @@ msgstr "" #~ "Filamenti değiştirdiğinizde yeni filament yükleme zamanı. Yalnızca " #~ "istatistikler için" -#~ msgid "" -#~ "Time to unload old filament when switch filament. For statistics only" +#~ msgid "Time to unload old filament when switch filament. For statistics only" #~ msgstr "" #~ "Filamenti değiştirdiğinizde eski filamenti boşaltma zamanı. Yalnızca " #~ "istatistikler için" #~ msgid "" #~ "Time for the printer firmware (or the Multi Material Unit 2.0) to load a " -#~ "new filament during a tool change (when executing the T code). This time " -#~ "is added to the total print time by the G-code time estimator." +#~ "new filament during a tool change (when executing the T code). This time is " +#~ "added to the total print time by the G-code time estimator." #~ msgstr "" #~ "Yazıcı donanım yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " #~ "değişikliği sırasında (T kodu yürütülürken) yeni bir filament yükleme " @@ -17719,20 +17581,20 @@ msgstr "" #~ "eklenir." #~ msgid "" -#~ "Time for the printer firmware (or the Multi Material Unit 2.0) to unload " -#~ "a filament during a tool change (when executing the T code). This time is " +#~ "Time for the printer firmware (or the Multi Material Unit 2.0) to unload a " +#~ "filament during a tool change (when executing the T code). This time is " #~ "added to the total print time by the G-code time estimator." #~ msgstr "" -#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım " -#~ "değişimi sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu " -#~ "süre, G kodu süre tahmincisi tarafından toplam baskı süresine eklenir." +#~ "Yazıcı ürün yazılımının (veya Çoklu Malzeme Ünitesi 2.0'ın) takım değişimi " +#~ "sırasında (T kodu yürütülürken) filamenti boşaltma süresi. Bu süre, G kodu " +#~ "süre tahmincisi tarafından toplam baskı süresine eklenir." #~ msgid "Filter out gaps smaller than the threshold specified" #~ msgstr "Belirtilen eşikten daha küçük boşlukları filtrele" #~ msgid "" -#~ "Enable this option for chamber temperature control. An M191 command will " -#~ "be added before \"machine_start_gcode\"\n" +#~ "Enable this option for chamber temperature control. An M191 command will be " +#~ "added before \"machine_start_gcode\"\n" #~ "G-code commands: M141/M191 S(0-255)" #~ msgstr "" #~ "Hazne sıcaklığı kontrolü için bu seçeneği etkinleştirin. Önce bir M191 " @@ -17741,24 +17603,24 @@ msgstr "" #~ msgid "" #~ "Higher chamber temperature can help suppress or reduce warping and " -#~ "potentially lead to higher interlayer bonding strength for high " -#~ "temperature materials like ABS, ASA, PC, PA and so on.At the same time, " -#~ "the air filtration of ABS and ASA will get worse.While for PLA, PETG, " -#~ "TPU, PVA and other low temperature materials,the actual chamber " -#~ "temperature should not be high to avoid cloggings, so 0 which stands for " -#~ "turning off is highly recommended" +#~ "potentially lead to higher interlayer bonding strength for high temperature " +#~ "materials like ABS, ASA, PC, PA and so on.At the same time, the air " +#~ "filtration of ABS and ASA will get worse.While for PLA, PETG, TPU, PVA and " +#~ "other low temperature materials,the actual chamber temperature should not " +#~ "be high to avoid cloggings, so 0 which stands for turning off is highly " +#~ "recommended" #~ msgstr "" #~ "Daha yüksek hazne sıcaklığı, eğrilmeyi bastırmaya veya azaltmaya yardımcı " -#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki " -#~ "malzemeler için potansiyel olarak daha yüksek ara katman yapışmasına yol " -#~ "açabilir Aynı zamanda, ABS ve ASA'nın hava filtrasyonu daha da " -#~ "kötüleşecektir. PLA, PETG, TPU, PVA ve diğer düşük sıcaklıktaki " -#~ "malzemeler için, tıkanmaları önlemek için gerçek hazne sıcaklığı yüksek " -#~ "olmamalıdır, bu nedenle kapatma anlamına gelen 0 şiddetle tavsiye edilir" +#~ "olabilir ve ABS, ASA, PC, PA ve benzeri gibi yüksek sıcaklıktaki malzemeler " +#~ "için potansiyel olarak daha yüksek ara katman yapışmasına yol açabilir Aynı " +#~ "zamanda, ABS ve ASA'nın hava filtrasyonu daha da kötüleşecektir. PLA, PETG, " +#~ "TPU, PVA ve diğer düşük sıcaklıktaki malzemeler için, tıkanmaları önlemek " +#~ "için gerçek hazne sıcaklığı yüksek olmamalıdır, bu nedenle kapatma anlamına " +#~ "gelen 0 şiddetle tavsiye edilir" #~ msgid "" -#~ "Different nozzle diameters and different filament diameters is not " -#~ "allowed when prime tower is enabled." +#~ "Different nozzle diameters and different filament diameters is not allowed " +#~ "when prime tower is enabled." #~ msgstr "" #~ "Ana kule etkinleştirildiğinde farklı nozul çaplarına ve farklı filament " #~ "çaplarına izin verilmez." @@ -17771,11 +17633,10 @@ msgstr "" #~ "Height of initial layer. Making initial layer height to be thick slightly " #~ "can improve build plate adhension" #~ msgstr "" -#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, " -#~ "baskı plakasının yapışmasını iyileştirebilir" +#~ "İlk katmanın yüksekliği. İlk katman yüksekliğini biraz kalın yapmak, baskı " +#~ "plakasının yapışmasını iyileştirebilir" -#~ msgid "" -#~ "Interlocking depth of a segmented region. Zero disables this feature." +#~ msgid "Interlocking depth of a segmented region. Zero disables this feature." #~ msgstr "" #~ "Bölümlere ayrılmış bir bölgenin birbirine kenetlenen derinliği. 0 bu " #~ "özelliği devre dışı bırakır." @@ -17793,8 +17654,8 @@ msgstr "" #~ msgstr "Herhangi bir uygulamayla ilişkili değil" #~ msgid "" -#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open " -#~ "models from Printable.com" +#~ "Associate OrcaSlicer with prusaslicer:// links so that Orca can open models " +#~ "from Printable.com" #~ msgstr "" #~ "Orca’nın Printable.com’daki modelleri açabilmesi için OrcaSlicer’ı " #~ "prusaslicer:// bağlantılarıyla ilişkilendirin" @@ -17803,8 +17664,8 @@ msgstr "" #~ msgstr "Bambstudio’yu ilişkilendirin://" #~ msgid "" -#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open " -#~ "models from makerworld.com" +#~ "Associate OrcaSlicer with bambustudio:// links so that Orca can open models " +#~ "from makerworld.com" #~ msgstr "" #~ "Orca’nın makerworld.com’daki modelleri açabilmesi için OrcaSlicer’ı " #~ "bambustudio:// bağlantılarıyla ilişkilendirin" @@ -17851,45 +17712,42 @@ msgstr "" #~ "Usually the calibration is unnecessary. When you start a single color/" #~ "material print, with the \"flow dynamics calibration\" option checked in " #~ "the print start menu, the printer will follow the old way, calibrate the " -#~ "filament before the print; When you start a multi color/material print, " -#~ "the printer will use the default compensation parameter for the filament " -#~ "during every filament switch which will have a good result in most " -#~ "cases.\n" +#~ "filament before the print; When you start a multi color/material print, the " +#~ "printer will use the default compensation parameter for the filament during " +#~ "every filament switch which will have a good result in most cases.\n" #~ "\n" -#~ "Please note there are a few cases that will make the calibration result " -#~ "not reliable: using a texture plate to do the calibration; the build " -#~ "plate does not have good adhesion (please wash the build plate or apply " -#~ "gluestick!) ...You can find more from our wiki.\n" +#~ "Please note there are a few cases that will make the calibration result not " +#~ "reliable: using a texture plate to do the calibration; the build plate does " +#~ "not have good adhesion (please wash the build plate or apply gluestick!) ..." +#~ "You can find more from our wiki.\n" #~ "\n" -#~ "The calibration results have about 10 percent jitter in our test, which " -#~ "may cause the result not exactly the same in each calibration. We are " -#~ "still investigating the root cause to do improvements with new updates." +#~ "The calibration results have about 10 percent jitter in our test, which may " +#~ "cause the result not exactly the same in each calibration. We are still " +#~ "investigating the root cause to do improvements with new updates." #~ msgstr "" #~ "Lütfen Akış Dinamiği Kalibrasyonunun ayrıntılarını wiki'mizden " #~ "bulabilirsiniz.\n" #~ "\n" #~ "Genellikle kalibrasyon gereksizdir. Yazdırma başlat menüsündeki \"akış " -#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme " -#~ "baskısını başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan " -#~ "önce filamenti kalibre edecektir; Çok renkli/malzeme baskısını " -#~ "başlattığınızda, yazıcı her filament değişiminde filament için varsayılan " -#~ "dengeleme parametresini kullanacaktır ve bu çoğu durumda iyi bir sonuç " -#~ "verecektir.\n" +#~ "dinamiği kalibrasyonu\" seçeneği işaretliyken tek renkli/malzeme baskısını " +#~ "başlattığınızda, yazıcı eski yöntemi izleyecek, yazdırmadan önce filamenti " +#~ "kalibre edecektir; Çok renkli/malzeme baskısını başlattığınızda, yazıcı her " +#~ "filament değişiminde filament için varsayılan dengeleme parametresini " +#~ "kullanacaktır ve bu çoğu durumda iyi bir sonuç verecektir.\n" #~ "\n" -#~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum " -#~ "olduğunu lütfen unutmayın: kalibrasyonu yapmak için doku plakası " -#~ "kullanmak; baskı plakasının yapışması iyi değil (lütfen baskı plakasını " -#~ "yıkayın veya yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden " -#~ "bulabilirsiniz.\n" +#~ "Kalibrasyon sonucunun güvenilir olmamasına yol açacak birkaç durum olduğunu " +#~ "lütfen unutmayın: kalibrasyonu yapmak için doku plakası kullanmak; baskı " +#~ "plakasının yapışması iyi değil (lütfen baskı plakasını yıkayın veya " +#~ "yapıştırıcı uygulayın!) ...Daha fazlasını wiki'mizden bulabilirsiniz.\n" #~ "\n" -#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim " -#~ "var ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " -#~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel " -#~ "nedeni araştırıyoruz." +#~ "Testimizde kalibrasyon sonuçlarında yaklaşık yüzde 10'luk bir titreşim var " +#~ "ve bu da sonucun her kalibrasyonda tam olarak aynı olmamasına neden " +#~ "olabilir. Yeni güncellemelerle iyileştirmeler yapmak için hâlâ temel nedeni " +#~ "araştırıyoruz." #~ msgid "" -#~ "Only one of the results with the same name will be saved. Are you sure " -#~ "you want to overrides the other results?" +#~ "Only one of the results with the same name will be saved. Are you sure you " +#~ "want to overrides the other results?" #~ msgstr "" #~ "Aynı ada sahip sonuçlardan yalnızca biri kaydedilecektir. Diğer sonuçları " #~ "geçersiz kılmak istediğinizden emin misiniz?" @@ -17897,11 +17755,11 @@ msgstr "" #, c-format, boost-format #~ msgid "" #~ "There is already a historical calibration result with the same name: %s. " -#~ "Only one of the results with the same name is saved. Are you sure you " -#~ "want to overrides the historical result?" +#~ "Only one of the results with the same name is saved. Are you sure you want " +#~ "to overrides the historical result?" #~ msgstr "" -#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada " -#~ "sahip sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " +#~ "Aynı ada sahip geçmiş bir kalibrasyon sonucu zaten var: %s. Aynı ada sahip " +#~ "sonuçlardan yalnızca biri kaydedilir. Geçmiş sonucu geçersiz kılmak " #~ "istediğinizden emin misiniz?" #~ msgid "Please find the cornor with perfect degree of extrusion" @@ -17924,11 +17782,11 @@ msgstr "" #~ "Order of wall/infill. When the tickbox is unchecked the walls are printed " #~ "first, which works best in most cases.\n" #~ "\n" -#~ "Printing walls first may help with extreme overhangs as the walls have " -#~ "the neighbouring infill to adhere to. However, the infill will slightly " -#~ "push out the printed walls where it is attached to them, resulting in a " -#~ "worse external surface finish. It can also cause the infill to shine " -#~ "through the external surfaces of the part." +#~ "Printing walls first may help with extreme overhangs as the walls have the " +#~ "neighbouring infill to adhere to. However, the infill will slightly push " +#~ "out the printed walls where it is attached to them, resulting in a worse " +#~ "external surface finish. It can also cause the infill to shine through the " +#~ "external surfaces of the part." #~ msgstr "" #~ "Duvar/dolgu sırası. Onay kutusunun işareti kaldırıldığında ilk olarak " #~ "duvarlar yazdırılır ve bu çoğu durumda en iyi sonucu verir.\n" @@ -17936,20 +17794,20 @@ msgstr "" #~ "Duvarların komşu dolgulara yapışması nedeniyle ilk önce duvarların " #~ "basılması aşırı çıkıntılara yardımcı olabilir. Ancak dolgu, baskılı " #~ "duvarları tutturulduğu yerden hafifçe dışarı doğru itecek ve bu da daha " -#~ "kötü bir dış yüzey kalitesine neden olacaktır. Ayrıca dolgunun parçanın " -#~ "dış yüzeylerinden parlamasına da neden olabilir." +#~ "kötü bir dış yüzey kalitesine neden olacaktır. Ayrıca dolgunun parçanın dış " +#~ "yüzeylerinden parlamasına da neden olabilir." #~ msgid "V" #~ msgstr "V" #~ 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, Prusa Research'ün PrusaSlicer'ından Bambulab'ın " -#~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve " -#~ "RepRap topluluğu tarafından hazırlanan Slic3r'dendir" +#~ "BambuStudio'sunu temel alıyor. PrusaSlicer, Alessandro Ranellucci ve RepRap " +#~ "topluluğu tarafından hazırlanan Slic3r'dendir" #~ msgid "Export &Configs" #~ msgstr "Yapılandırmaları Dışa Aktar" @@ -17965,8 +17823,8 @@ msgstr "" #~ msgstr "Dolgu açısı" #~ 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 "" #~ "G2 ve G3 hareketlerine sahip bir G kodu dosyası elde etmek için bunu " #~ "etkinleştirin. Ve montaj toleransı çözünürlükle aynıdır" @@ -18012,20 +17870,19 @@ msgstr "" #~ "switching preset?" #~ msgstr "" #~ "\n" -#~ "Ön ayarı değiştirdikten sonra bu değiştirilen ayarları (değiştirilen " -#~ "değer) korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra bu değiştirilen ayarları (değiştirilen değer) " +#~ "korumak ister misiniz?" #~ msgid "" -#~ "You have previously modified your settings and are about to overwrite " -#~ "them with new ones." +#~ "You have previously modified your settings and are about to overwrite them " +#~ "with new ones." #~ msgstr "" -#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini " -#~ "yazmak üzeresiniz." +#~ "Ayarlarınızı daha önce değiştirdiniz ve bunların üzerine yenilerini yazmak " +#~ "üzeresiniz." #~ msgid "" #~ "\n" -#~ "Do you want to keep your current modified settings, or use preset " -#~ "settings?" +#~ "Do you want to keep your current modified settings, or use preset settings?" #~ msgstr "" #~ "\n" #~ "Geçerli değiştirilen ayarlarınızı korumak mı yoksa önceden ayarlanmış " @@ -18045,8 +17902,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası " -#~ "seçin ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." +#~ "Filamenti otomatik olarak yüklemek veya çıkarmak için bir AMS yuvası seçin " +#~ "ve ardından \"Yükle\" veya \"Boşalt\" düğmesine basın." #~ msgid "MC" #~ msgstr "MC" @@ -18079,15 +17936,15 @@ msgstr "" #~ "Over 4 studio/handy are using remote access, you can close some and try " #~ "again." #~ msgstr "" -#~ "4’ten fazla stüdyo/kullanışlı uzaktan erişim kullanıyor, bazılarını " -#~ "kapatıp tekrar deneyebilirsiniz." +#~ "4’ten fazla stüdyo/kullanışlı uzaktan erişim kullanıyor, bazılarını kapatıp " +#~ "tekrar deneyebilirsiniz." #~ msgid "" #~ "The 3mf file version is in Beta and it is newer than the current Bambu " #~ "Studio version." #~ msgstr "" -#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden " -#~ "daha yenidir." +#~ "3mf dosya sürümü Beta aşamasındadır ve mevcut Bambu Studio sürümünden daha " +#~ "yenidir." #~ msgid "If you would like to try Bambu Studio Beta, you may click to" #~ msgstr "Bambu Studio Beta’yı denemek isterseniz tıklayabilirsiniz." @@ -18111,12 +17968,12 @@ msgstr "" #~ msgstr "Kabin nemi" #~ 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 "" -#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, " -#~ "kırmızı ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar " -#~ "düşükse o kadar iyidir.)" +#~ "Yeşil, AMS neminin normal olduğunu, turuncu nemin yüksek olduğunu, kırmızı " +#~ "ise nemin çok yüksek olduğunu gösterir.(Higrometre: ne kadar düşükse o " +#~ "kadar iyidir.)" #~ msgid "Desiccant status" #~ msgstr "Kurutucu durumu" @@ -18126,18 +17983,18 @@ msgstr "" #~ "inactive. Please change the desiccant.(The bars: higher the better.)" #~ msgstr "" #~ "İki çubuktan daha düşük bir kurutucu durumu, kurutucunun etkin olmadığını " -#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa " -#~ "o kadar iyidir.)" +#~ "gösterir. Lütfen kurutucuyu değiştirin.(Çubuklar: ne kadar yüksek olursa o " +#~ "kadar iyidir.)" #~ 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." +#~ "the process. During this time, the indicator may not represent the chamber " +#~ "accurately." #~ msgstr "" #~ "Not: Kapak açıkken veya kurutucu paketi değiştirildiğinde, nemin emilmesi " -#~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. " -#~ "Bu süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." +#~ "saatler veya bir gece sürebilir. Düşük sıcaklıklar da süreci yavaşlatır. Bu " +#~ "süre zarfında gösterge hazneyi doğru şekilde temsil etmeyebilir." #~ msgid "" #~ "Note: if new filament is inserted during printing, the AMS will not " @@ -18213,8 +18070,8 @@ msgstr "" #~ "preset?" #~ msgstr "" #~ "\"%1%\" ön ayarının bazı ayarlarını değiştirdiniz.\n" -#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) " -#~ "korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " +#~ "ister misiniz?" #~ msgid "" #~ "You have changed some preset settings. \n" @@ -18222,8 +18079,8 @@ msgstr "" #~ "preset?" #~ msgstr "" #~ "Bazı ön ayar ayarlarını değiştirdiniz.\n" -#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) " -#~ "korumak ister misiniz?" +#~ "Ön ayarı değiştirdikten sonra değiştirilen bu ayarları (yeni değer) korumak " +#~ "ister misiniz?" #~ msgid " ℃" #~ msgstr " °C" @@ -18231,14 +18088,14 @@ msgstr "" #~ msgid "" #~ "Please go to filament setting to edit your presets if you need.\n" #~ "Please note that nozzle temperature, hot bed temperature, and maximum " -#~ "volumetric speed have a significant impact on printing quality. Please " -#~ "set them carefully." +#~ "volumetric speed have a significant impact on printing quality. Please set " +#~ "them carefully." #~ msgstr "" -#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament " -#~ "ayarına gidin.\n" +#~ "İhtiyacınız olursa ön ayarlarınızı düzenlemek için lütfen filament ayarına " +#~ "gidin.\n" #~ "Lütfen püskürtme ucu sıcaklığının, sıcak yatak sıcaklığının ve maksimum " -#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip " -#~ "olduğunu unutmayın. Lütfen bunları dikkatlice ayarlayın." +#~ "hacimsel hızın yazdırma kalitesi üzerinde önemli bir etkiye sahip olduğunu " +#~ "unutmayın. Lütfen bunları dikkatlice ayarlayın." #~ msgid "Studio Version:" #~ msgstr "Stüdyo Sürümü:" @@ -18283,19 +18140,19 @@ msgstr "" #~ msgstr "Depolama Yüklemesini Test Etme" #~ msgid "" -#~ "The speed setting exceeds the printer's maximum speed " -#~ "(machine_max_speed_x/machine_max_speed_y).\n" +#~ "The speed setting exceeds the printer's maximum speed (machine_max_speed_x/" +#~ "machine_max_speed_y).\n" #~ "Orca will automatically cap the print speed to ensure it doesn't surpass " #~ "the printer's capabilities.\n" -#~ "You can adjust the maximum speed setting in your printer's configuration " -#~ "to get higher speeds." +#~ "You can adjust the maximum speed setting in your printer's configuration to " +#~ "get higher speeds." #~ msgstr "" #~ "Hız ayarı yazıcının maksimum hızını aşıyor (machine_max_speed_x/" #~ "machine_max_speed_y).\n" -#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma " -#~ "hızını otomatik olarak sınırlayacaktır.\n" -#~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki " -#~ "maksimum hız ayarını yapabilirsiniz." +#~ "Orca, yazıcının yeteneklerini aşmadığından emin olmak için yazdırma hızını " +#~ "otomatik olarak sınırlayacaktır.\n" +#~ "Daha yüksek hızlar elde etmek için yazıcınızın yapılandırmasındaki maksimum " +#~ "hız ayarını yapabilirsiniz." #~ msgid "" #~ "Alternate extra wall only works with ensure vertical shell thickness " @@ -18319,8 +18176,8 @@ msgstr "" #~ "Add solid infill near sloping surfaces to guarantee the vertical shell " #~ "thickness (top+bottom solid layers)" #~ msgstr "" -#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına " -#~ "katı dolgu ekleyin (üst + alt katı katmanlar)" +#~ "Dikey kabuk kalınlığını garanti etmek için eğimli yüzeylerin yakınına katı " +#~ "dolgu ekleyin (üst + alt katı katmanlar)" #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Duvarlardaki katı dolguyu daha da azaltın (deneysel)" @@ -18330,8 +18187,8 @@ msgstr "" #~ "limited infill supporting solid surfaces, make sure that you are using " #~ "adequate number of walls to support the part on sloping surfaces.\n" #~ "\n" -#~ "For heavily sloped surfaces this option is not suitable as it will " -#~ "generate too thin of a top layer and should be disabled." +#~ "For heavily sloped surfaces this option is not suitable as it will generate " +#~ "too thin of a top layer and should be disabled." #~ msgstr "" #~ "Duvarlara uygulanan katı dolguları daha da azaltır. Dolguyu destekleyen " #~ "katı yüzeyler çok sınırlı olacağından, eğimli yüzeylerde parçayı " @@ -18359,8 +18216,8 @@ msgstr "" #~ msgstr "Yapılandırma paketi şu şekilde güncellendi: " #~ 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 "" #~ "Dış duvar aralığını ayarlayarak kabuk hassasiyetini artırın. Bu aynı " #~ "zamanda katman tutarlılığını da artırır." @@ -18369,13 +18226,13 @@ msgstr "" #~ msgstr "Akış telafisi'ni etkinleştir" #~ msgid "" -#~ "The minimum printing speed for the filament when slow down for better " -#~ "layer cooling is enabled, when printing overhangs and when feature speeds " -#~ "are not specified explicitly." +#~ "The minimum printing speed for the filament when slow down for better layer " +#~ "cooling is enabled, when printing overhangs and when feature speeds are not " +#~ "specified explicitly." #~ msgstr "" #~ "Daha iyi katman soğutması için yavaşlama etkinleştirildiğinde, yazdırma " -#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde " -#~ "filament için minimum yazdırma hızı." +#~ "çıkıntıları olduğunda ve özellik hızları açıkça belirtilmediğinde filament " +#~ "için minimum yazdırma hızı." #~ msgid "No sparse layers (EXPERIMENTAL)" #~ msgstr "Seyrek katman yok (DENEYSEL)" @@ -18401,16 +18258,15 @@ msgstr "" #~ msgstr "wiki" #~ msgid "" -#~ "Relative extrusion is recommended when using \"label_objects\" option." -#~ "Some extruders work better with this option unchecked (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 unchecked (absolute extrusion mode). " +#~ "Wipe tower is only compatible with relative mode. It is always enabled on " +#~ "BambuLab printers. Default is checked" #~ msgstr "" -#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. " -#~ "Bazı ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon " -#~ "modu) daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla " -#~ "uyumludur. BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak " -#~ "işaretlendi" +#~ "\"label_objects\" seçeneği kullanılırken göreceli ekstrüzyon önerilir. Bazı " +#~ "ekstruderler bu seçeneğin işareti kaldırıldığında (mutlak ekstrüzyon modu) " +#~ "daha iyi çalışır. Temizleme kulesi yalnızca göreceli modla uyumludur. " +#~ "BambuLab yazıcılarında her zaman etkindir. Varsayılan olarak işaretlendi" #~ msgid "Movement:" #~ msgstr "Hareket:" @@ -18515,8 +18371,8 @@ msgstr "" #~ 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." +#~ "the Simplify mesh feature? Right-click the model and select Simplify model. " +#~ "Read more in the documentation." #~ msgstr "" #~ "Modeli Basitleştir\n" #~ "Mesh basitleştirme özelliğini kullanarak bir ağdaki üçgen sayısını " @@ -18525,15 +18381,15 @@ msgstr "" #~ 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 "" #~ "Bir Parçayı Çıkar\n" #~ "Negatif parça değiştiriciyi kullanarak bir ağı diğerinden " #~ "çıkarabileceğinizi biliyor muydunuz? Bu şekilde örneğin doğrudan Orca " -#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler " -#~ "oluşturabilirsiniz. Daha fazlasını belgelerde okuyun." +#~ "Slicer'da kolayca yeniden boyutlandırılabilen delikler oluşturabilirsiniz. " +#~ "Daha fazlasını belgelerde okuyun." #~ msgid "Filling bed " #~ msgstr "Yatak doldurma " @@ -18549,12 +18405,10 @@ msgstr "" #~ msgstr "" #~ "Doğrusal desene geçilsin mi?\n" #~ "Evet - otomatik olarak doğrusal desene geçin\n" -#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere " -#~ "sıfırlayın" +#~ "Hayır - yoğunluğu otomatik olarak %100 olmayan varsayılan değere sıfırlayın" #~ msgid "Please heat the nozzle to above 170 degree before loading filament." -#~ msgstr "" -#~ "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." +#~ msgstr "Filamenti yüklemeden önce lütfen Nozulu 170 derecenin üzerine ısıtın." #~ msgid "Show g-code window" #~ msgstr "G kodu penceresini göster" @@ -18791,8 +18645,8 @@ msgstr "" #~ "load uptodate process/machine settings from the specified file when using " #~ "uptodate" #~ msgstr "" -#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/" -#~ "yazıcıayarlarını yükle" +#~ "güncellemeyi kullanırken belirtilen dosyadan güncel işlem/yazıcıayarlarını " +#~ "yükle" #~ msgid "Output directory" #~ msgstr "Çıkış dizini" @@ -18807,8 +18661,8 @@ msgstr "" #~ "Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" #~ "trace\n" #~ msgstr "" -#~ "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:" -#~ "bilgi, 4:hata ayıklama, 5:izleme\n" +#~ "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:bilgi, " +#~ "4:hata ayıklama, 5:izleme\n" #, boost-format #~ msgid "The selected preset: %1% is not found." @@ -18839,8 +18693,8 @@ msgstr "" #~ "OrcaSlicer configuration file may be corrupted and is not abled to be " #~ "parsed.Please delete the file and try again." #~ msgstr "" -#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması " -#~ "mümkün olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." +#~ "OrcaSlicer yapılandırma dosyası bozulmuş olabilir ve ayrıştırılması mümkün " +#~ "olmayabilir. Lütfen dosyayı silin ve tekrar deneyin." #~ msgid "Online Models" #~ msgstr "Çevrimiçi Modeller" @@ -18852,10 +18706,10 @@ msgstr "" #~ msgstr "Soğutma için yavaşlama durumunda minimum yazdırma hızı" #~ msgid "" -#~ "There are currently no identical spare consumables available, and " -#~ "automatic replenishment is currently not possible. \n" -#~ "(Currently supporting automatic supply of consumables with the same " -#~ "brand, material type, and color)" +#~ "There are currently no identical spare consumables available, and automatic " +#~ "replenishment is currently not possible. \n" +#~ "(Currently supporting automatic supply of consumables with the same brand, " +#~ "material type, and color)" #~ msgstr "" #~ "Şu anda aynı yedek sarf malzemesi mevcut değildir ve otomatik yenileme şu " #~ "anda mümkün değildir.\n" @@ -18883,12 +18737,11 @@ msgstr "" #~ "Material becomes soft at this temperature. Thus the heatbed cannot be " #~ "hotter than this tempature" #~ msgstr "" -#~ "Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan " -#~ "daha sıcak olamaz" +#~ "Bu sıcaklıkta malzeme yumuşar. Bu nedenle ısıtma yatağı bu sıcaklıktan daha " +#~ "sıcak olamaz" #~ msgid "Enable this option if machine has auxiliary part cooling fan" -#~ msgstr "" -#~ "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" +#~ msgstr "Makinede yardımcı parça soğutma fanı varsa bu seçeneği etkinleştirin" #~ msgid "" #~ "This option is enabled if machine support controlling chamber temperature" @@ -18916,8 +18769,7 @@ msgstr "" #~ "katmanları etkilemez" #~ msgid "Empty layers around bottom are replaced by nearest normal layers." -#~ msgstr "" -#~ "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." +#~ msgstr "Alt kısımdaki boş katmanların yerini en yakın normal katmanlar alır." #~ msgid "The model has too many empty layers." #~ msgstr "Modelde çok fazla boş katman var." @@ -18932,12 +18784,11 @@ msgstr "" #~ msgstr "Tabla" #~ 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 "" -#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, " -#~ "filamentin Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına " -#~ "gelir" +#~ "Yüksek sıcaklık plakası takıldığında yatak sıcaklığı. 0 değeri, filamentin " +#~ "Yüksek Sıcaklık Plakasına yazdırmayı desteklemediği anlamına gelir" #~ msgid "" #~ "Klipper's max_accel_to_decel will be adjusted to this % of acceleration" @@ -18948,17 +18799,16 @@ msgstr "" #~ msgstr "Hareket için maksimum hızlanma (M204 T)" #~ 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 " +#~ "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 "" #~ "Desteğin stili ve şekli. Normal destek için, desteklerin düzenli bir " #~ "ızgaraya yansıtılması daha sağlam destekler oluşturur (varsayılan), rahat " -#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini " -#~ "azaltır.\n" +#~ "destek kuleleri ise malzemeden tasarruf sağlar ve nesne izlerini azaltır.\n" #~ "Ağaç desteği için, ince stil, dalları daha agresif bir şekilde " #~ "birleştirecek ve çok fazla malzeme tasarrufu sağlayacak (varsayılan), " #~ "hibrit stil ise büyük düz çıkıntılar altında normal desteğe benzer yapı " From cac3d396c78e4b00122b1b88835154f188e003d7 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 19:51:04 -0400 Subject: [PATCH 39/64] Initial Add of K2 Plus *Some max speeds/accelerations changes for the 0.4 nozzle was left out as none of the other nozzles had these max speeds/accelerations --- resources/profiles/Creality.json | 144 +++++++++++++++++- .../Creality/Creality K2 Plus_cover.png | Bin 0 -> 19416 bytes .../creality_k2plus_buildplate_model.stl | Bin 0 -> 528184 bytes .../creality_k2plus_buildplate_texture.png | Bin 0 -> 13629 bytes .../Creality Generic ABS @K2-all.json | 26 ++++ .../Creality Generic ASA @K2-all.json | 26 ++++ .../Creality Generic PA-CF @K2-all.json | 23 +++ .../Creality Generic PETG @K2-all.json | 59 +++++++ .../Creality Generic PLA @K2-all.json | 53 +++++++ ...eality Generic PLA High Speed @K2-all.json | 17 +++ .../Creality Generic PLA Matte @K2-all.json | 17 +++ .../Creality Generic PLA Silk @K2-all.json | 17 +++ .../Creality Generic PLA-CF @K2-all.json | 23 +++ .../Creality Generic TPU @K2-all.json | 41 +++++ .../filament/Creality Generic TPU.json | 2 +- .../machine/Creality K2 Plus 0.2 nozzle.json | 134 ++++++++++++++++ .../machine/Creality K2 Plus 0.4 nozzle.json | 134 ++++++++++++++++ .../machine/Creality K2 Plus 0.6 nozzle.json | 134 ++++++++++++++++ .../machine/Creality K2 Plus 0.8 nozzle.json | 134 ++++++++++++++++ .../Creality/machine/Creality K2 Plus.json | 12 ++ ...erDetail @Creality K2 Plus 0.2 nozzle.json | 114 ++++++++++++++ ...erDetail @Creality K2 Plus 0.4 nozzle.json | 114 ++++++++++++++ ...ghDetail @Creality K2 Plus 0.2 nozzle.json | 114 ++++++++++++++ ...m Detail @Creality K2 Plus 0.2 nozzle.json | 114 ++++++++++++++ ...m Detail @Creality K2 Plus 0.4 nozzle.json | 114 ++++++++++++++ ... Optimal @Creality K2 Plus 0.2 nozzle.json | 114 ++++++++++++++ ... Optimal @Creality K2 Plus 0.4 nozzle.json | 114 ++++++++++++++ ...m Detail @Creality K2 Plus 0.6 nozzle.json | 114 ++++++++++++++ ...Standard @Creality K2 Plus 0.4 nozzle.json | 114 ++++++++++++++ ...m Detail @Creality K2 Plus 0.8 nozzle.json | 114 ++++++++++++++ ...mm Draft @Creality K2 Plus 0.4 nozzle.json | 114 ++++++++++++++ ... Optimal @Creality K2 Plus 0.6 nozzle.json | 114 ++++++++++++++ ...perDraft @Creality K2 Plus 0.4 nozzle.json | 114 ++++++++++++++ ...Standard @Creality K2 Plus 0.6 nozzle.json | 114 ++++++++++++++ ... Optimal @Creality K2 Plus 0.8 nozzle.json | 114 ++++++++++++++ ...mm Draft @Creality K2 Plus 0.6 nozzle.json | 114 ++++++++++++++ ...Standard @Creality K2 Plus 0.8 nozzle.json | 114 ++++++++++++++ ...perDraft @Creality K2 Plus 0.6 nozzle.json | 114 ++++++++++++++ ...mm Draft @Creality K2 Plus 0.8 nozzle.json | 114 ++++++++++++++ ...perDraft @Creality K2 Plus 0.8 nozzle.json | 114 ++++++++++++++ 40 files changed, 3273 insertions(+), 3 deletions(-) create mode 100644 resources/profiles/Creality/Creality K2 Plus_cover.png create mode 100644 resources/profiles/Creality/creality_k2plus_buildplate_model.stl create mode 100644 resources/profiles/Creality/creality_k2plus_buildplate_texture.png create mode 100644 resources/profiles/Creality/filament/Creality Generic ABS @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic ASA @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PA-CF @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA High Speed @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA Matte @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA Silk @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic PLA-CF @K2-all.json create mode 100644 resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json create mode 100644 resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality K2 Plus.json create mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json create mode 100644 resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json create mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json create mode 100644 resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json create mode 100644 resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json create mode 100644 resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json create mode 100644 resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json create mode 100644 resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json create mode 100644 resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json create mode 100644 resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json create mode 100644 resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json create mode 100644 resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json create mode 100644 resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json create mode 100644 resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index db39cb75139..cdf9a7627f8 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -111,6 +111,10 @@ { "name": "Creality K1 SE", "sub_path": "machine/Creality K1 SE.json" + }, + { + "name": "Creality K2 Plus", + "sub_path": "machine/Creality K2 Plus.json" } ], "process_list": [ @@ -250,6 +254,14 @@ "name": "0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3", "sub_path": "process/0.08mm SuperDetail @Creality Ender5Pro (2019) 0.3.json" }, + { + "name": "0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json" + }, { "name": "0.10mm HighDetail @Creality CR-6 0.4.json", "sub_path": "process/0.10mm HighDetail @Creality CR-6 0.4.json" @@ -266,6 +278,10 @@ "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.3", "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json" }, + { + "name": "0.10mm HighDetail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json" + }, { "name": "0.12mm Detail @Creality Ender3 0.2", "sub_path": "process/0.12mm Fine @Creality Ender3 0.2.json" @@ -374,6 +390,22 @@ "name": "0.12mm Fine @Creality K1Max (0.4 nozzle)", "sub_path": "process/0.12mm Fine @Creality K1Max (0.4 nozzle).json" }, + { + "name": "0.12mm Detail @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.12mm Detail @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.18mm Detail @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.24mm Detail @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.5", "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json" @@ -534,6 +566,22 @@ "name": "0.16mm Optimal @Creality K1Max (0.4 nozzle)", "sub_path": "process/0.16mm Optimal @Creality K1Max (0.4 nozzle).json" }, + { + "name": "0.14mm Optimal @Creality K2 Plus 0.2 nozzle", + "sub_path": "process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "0.16mm Optimal @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.24mm Optimal @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.32mm Optimal @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.20mm Standard @Creality CR10V2", "sub_path": "process/0.20mm Standard @Creality CR10V2.json" @@ -702,6 +750,18 @@ "name": "0.20mm Standard @Creality K1Max (0.4 nozzle)", "sub_path": "process/0.20mm Standard @Creality K1Max (0.4 nozzle).json" }, + { + "name": "0.20mm Standard @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.30mm Standard @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.40mm Standard @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.20mm Fast @Creality K1 SE 0.4", "sub_path": "process/0.20mm Fast @Creality K1 SE 0.4.json" @@ -834,6 +894,18 @@ "name": "0.24mm Draft @Creality Ender5Pro (2019) 0.8", "sub_path": "process/0.24mm Draft @Creality Ender5Pro (2019) 0.8.json" }, + { + "name": "0.24mm Draft @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.36mm Draft @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.48mm Draft @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.28mm SuperDraft @Creality Ender3 0.2", "sub_path": "process/0.28mm SuperDraft @Creality Ender3 0.2.json" @@ -890,6 +962,18 @@ "name": "0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0", "sub_path": "process/0.28mm SuperDraft @Creality Ender5Pro (2019) 1.0.json" }, + { + "name": "0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle", + "sub_path": "process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle", + "sub_path": "process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle", + "sub_path": "process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json" + }, { "name": "0.32mm Chunky @Creality CR-6 0.6", "sub_path": "process/0.32mm Chunky @Creality CR-6 0.6.json" @@ -1187,6 +1271,46 @@ { "name": "Creality Generic TPU @K1-all", "sub_path": "filament/Creality Generic TPU @K1-all.json" + }, + { + "name": "Creality Generic ABS @K2-all", + "sub_path": "filament/Creality Generic ABS @K2-all.json" + }, + { + "name": "Creality Generic ASA @K2-all", + "sub_path": "filament/Creality Generic ASA @K2-all.json" + }, + { + "name": "Creality Generic PETG @K2-all", + "sub_path": "filament/Creality Generic PETG @K2-all.json" + }, + { + "name": "Creality Generic PLA @K2-all", + "sub_path": "filament/Creality Generic PLA @K2-all.json" + }, + { + "name": "Creality Generic PLA High Speed @K2-all", + "sub_path": "filament/Creality Generic PLA High Speed @K2-all.json" + }, + { + "name": "Creality Generic PLA Matte @K2-all", + "sub_path": "filament/Creality Generic PLA Matte @K2-all.json" + }, + { + "name": "Creality Generic PLA Silk @K2-all", + "sub_path": "filament/Creality Generic PLA Silk @K2-all.json" + }, + { + "name": "Creality Generic TPU @K2-all", + "sub_path": "filament/Creality Generic TPU @K2-all.json" + }, + { + "name": "Creality Generic PLA-CF @K2-all", + "sub_path": "filament/Creality Generic PLA-CF @K2-all.json" + }, + { + "name": "Creality Generic PA-CF @K2-all", + "sub_path": "filament/Creality Generic PA-CF @K2-all.json" } ], "machine_list": [ @@ -1434,6 +1558,10 @@ "name": "Creality K1C 0.8 nozzle", "sub_path": "machine/Creality K1C 0.8 nozzle.json" }, + { + "name": "Creality K1 SE 0.4 nozzle", + "sub_path": "machine/Creality K1 SE 0.4 nozzle.json" + }, { "name": "Creality K1 Max (0.4 nozzle)", "sub_path": "machine/Creality K1 Max (0.4 nozzle).json" @@ -1447,8 +1575,20 @@ "sub_path": "machine/Creality K1 Max (0.8 nozzle).json" }, { - "name": "Creality K1 SE 0.4 nozzle", - "sub_path": "machine/Creality K1 SE 0.4 nozzle.json" + "name": "Creality K2 Plus 0.2 nozzle", + "sub_path": "machine/Creality K2 Plus 0.2 nozzle.json" + }, + { + "name": "Creality K2 Plus 0.4 nozzle", + "sub_path": "machine/Creality K2 Plus 0.4 nozzle.json" + }, + { + "name": "Creality K2 Plus 0.6 nozzle", + "sub_path": "mahcine/Creality K2 Plus 0.6 nozzle.json" + }, + { + "name": "Creality K2 Plus 0.8 nozzle", + "sub_path": "machine/Creality K2 Plus 0.8 nozzle.json" } ] } \ No newline at end of file diff --git a/resources/profiles/Creality/Creality K2 Plus_cover.png b/resources/profiles/Creality/Creality K2 Plus_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..30bc356ba997d97daa45ef73de59c589224e7675 GIT binary patch literal 19416 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%0AGo>1bokMtuN>3m8ffD1;f(`?(T=8Nq-?xj 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 wM7euK0~{gnv)9&u000000000000000000000000000000000000000001#eIN&o-= literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/creality_k2plus_buildplate_model.stl b/resources/profiles/Creality/creality_k2plus_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..ea2d8b07e827446ead6e9e74682bb0ea1c820e74 GIT binary patch literal 528184 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

  2. 4(@{bz6Zk8awOe0M1 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%0D)|Njt} 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[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 gR>{D4T+BZ Date: Thu, 3 Oct 2024 21:25:34 -0400 Subject: [PATCH 40/64] Fix a few things --- .../0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json | 3 +-- .../0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json | 3 +-- .../0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json | 3 +-- .../process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json | 3 +-- .../process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json | 3 +-- .../process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json | 3 +-- .../process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json | 3 +-- .../process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json | 3 +-- .../process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json | 3 +-- .../process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json | 3 +-- .../process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json | 3 +-- .../process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json | 3 +-- .../0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json | 3 +-- .../process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json | 3 +-- .../process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json | 3 +-- .../process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json | 3 +-- .../process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json | 3 +-- .../0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json | 3 +-- .../process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json | 3 +-- .../0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json | 3 +-- 20 files changed, 20 insertions(+), 40 deletions(-) diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json index 0571ea54217..52af889d03b 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json @@ -44,9 +44,8 @@ "infill_wall_overlap": "30", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", + "ironing_flow": "10%", "ironing_spacing": "0.15", - "ironing_pattern": "zig-zag", "ironing_speed": "30", "ironing_type": "no ironing", "layer_height": "0.08", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json index 71993752ada..424a693fbd1 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "350", "interface_shells": "0", - "ironing_flow": "8", - "ironing_pattern": "zig-zag", + "ironing_flow": "8%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json index 13c5307423b..837f79ab84a 100644 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json @@ -44,9 +44,8 @@ "infill_wall_overlap": "30", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", + "ironing_flow": "10%", "ironing_spacing": "0.15", - "ironing_pattern": "zig-zag", "ironing_speed": "30", "ironing_type": "no ironing", "layer_height": "0.1", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json index 785deb1db82..a36600ea0ef 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json @@ -44,9 +44,8 @@ "infill_wall_overlap": "30", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", + "ironing_flow": "10%", "ironing_spacing": "0.15", - "ironing_pattern": "zig-zag", "ironing_speed": "30", "ironing_type": "no ironing", "layer_height": "0.12", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json index eb2d3e1fa2a..a66f05abd61 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "300", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json index 8d191b5895d..57a338f8811 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json @@ -44,9 +44,8 @@ "infill_wall_overlap": "30", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", + "ironing_flow": "10%", "ironing_spacing": "0.15", - "ironing_pattern": "zig-zag", "ironing_speed": "30", "ironing_type": "no ironing", "layer_height": "0.14", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json index 730f08d6f16..8bae9d3ab5a 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "300", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json index 4e8351571b7..f485f586eed 100644 --- a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json index f7f5e534979..0038f9f478d 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "270", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json index 0728485e864..c2dfb9c10f1 100644 --- a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json index 2efbf5cc46d..9d0f09f5ac8 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "250", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json index ced87afd91d..d3e9961f6cc 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json index df24ca69ae4..2e1f8a91c56 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "200", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json index 65b3f923709..c7797c8c4d3 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json index a7bddb29bc6..ad310f8b1c7 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json index 9bca3f975db..e4e901c201a 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json index b7d161415eb..0f1857b81cd 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json index 680a13d30b5..3564732e3ee 100644 --- a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json index a5fee4225c3..65456ceca96 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", diff --git a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json index fc2071b0460..d20e389e146 100644 --- a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json @@ -44,8 +44,7 @@ "infill_wall_overlap": "30%", "sparse_infill_speed": "120", "interface_shells": "0", - "ironing_flow": "10", - "ironing_pattern": "zig-zag", + "ironing_flow": "10%", "ironing_spacing": "0.15", "ironing_speed": "30", "ironing_type": "no ironing", From a5f6f1cd822ed51c9817895c1404d935ecb06b6e Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 21:51:52 -0400 Subject: [PATCH 41/64] Some cleanup & bug fixes --- .../0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json | 4 ---- .../0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json | 4 ---- .../0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json | 4 ---- .../process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json | 4 ---- .../process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json | 4 ---- ....json => 0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json} | 4 ---- .../process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json | 4 ---- .../process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json | 4 ---- .../process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json | 4 ---- .../process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json | 4 ---- .../process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json | 4 ---- .../process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json | 4 ---- .../0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json | 4 ---- .../process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json | 4 ---- .../process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json | 4 ---- .../process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json | 4 ---- .../process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json | 4 ---- .../0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json | 4 ---- .../process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json | 4 ---- .../0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json | 4 ---- 20 files changed, 80 deletions(-) rename resources/profiles/Creality/process/{0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json => 0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json} (96%) diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json index 52af889d03b..37987434961 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.2 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "5", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.2 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.22", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json index 424a693fbd1..7304c173ae0 100644 --- a/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.08mm SuperDetail @Creality K2 Plus 0.4 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "7", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "250", - "spiral_mode": "0", "initial_layer_infill_speed": "105", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json index 837f79ab84a..bffb09ca7c9 100644 --- a/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "5", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.2 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.22", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json index a36600ea0ef..437d4c16e5d 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "5", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.2 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.22", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json index a66f05abd61..2f262bfaeaf 100644 --- a/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.12mm Detail @Creality K2 Plus 0.4 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "5", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "250", - "spiral_mode": "0", "initial_layer_infill_speed": "105", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json similarity index 96% rename from resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json rename to resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json index 57a338f8811..1525dd94f67 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/process/0.14mm Optimal @Creality K2 Plus 0.2 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "5", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.2 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.22", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json index 8bae9d3ab5a..981862606fd 100644 --- a/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.16mm Optimal @Creality K2 Plus 0.4 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "4", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "250", - "spiral_mode": "0", "initial_layer_infill_speed": "105", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json index f485f586eed..4d42a50cbab 100644 --- a/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.18mm Detail @Creality K2 Plus 0.6 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.6 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.62", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json index 0038f9f478d..b90fab60f87 100644 --- a/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality K2 Plus 0.4 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "250", - "spiral_mode": "0", "initial_layer_infill_speed": "105", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json index c2dfb9c10f1..fc3ecfd1038 100644 --- a/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.8 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.82", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json index 9d0f09f5ac8..55e401882c4 100644 --- a/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Draft @Creality K2 Plus 0.4 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "250", - "spiral_mode": "0", "initial_layer_infill_speed": "105", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json index d3e9961f6cc..c15220e405f 100644 --- a/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.24mm Optimal @Creality K2 Plus 0.6 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.6 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.62", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json index 2e1f8a91c56..9a2f65b23c7 100644 --- a/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/process/0.28mm SuperDraft @Creality K2 Plus 0.4 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.4 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.42", "internal_solid_infill_speed": "250", - "spiral_mode": "0", "initial_layer_infill_speed": "105", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json index c7797c8c4d3..9efc66438c4 100644 --- a/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.30mm Standard @Creality K2 Plus 0.6 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.6 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.62", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json index ad310f8b1c7..02f244ad2b6 100644 --- a/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.32mm Optimal @Creality K2 Plus 0.8 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.8 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.82", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json index e4e901c201a..e112eb39c0e 100644 --- a/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.36mm Draft @Creality K2 Plus 0.6 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.6 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.62", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json index 0f1857b81cd..26477340b04 100644 --- a/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.40mm Standard @Creality K2 Plus 0.8 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.8 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.82", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json index 3564732e3ee..4e9594ba20c 100644 --- a/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/process/0.42mm SuperDraft @Creality K2 Plus 0.6 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.6 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.62", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json index 65456ceca96..c420d26892b 100644 --- a/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.48mm Draft @Creality K2 Plus 0.8 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.8 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.82", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", diff --git a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json index d20e389e146..a463fef9692 100644 --- a/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/process/0.56mm SuperDraft @Creality K2 Plus 0.8 nozzle.json @@ -5,8 +5,6 @@ "from": "system", "inherits": "fdm_process_common_klipper", "instantiation": "true", - "adaptive_layer_height": "0", - "reduce_crossing_wall": "0", "max_travel_detour_distance": "0", "bottom_surface_pattern": "monotonic", "bottom_shell_layers": "3", @@ -19,7 +17,6 @@ "compatible_printers": [ "Creality K2 Plus 0.8 nozzle" ], - "print_sequence": "by layer", "default_acceleration": "12000", "bridge_no_support": "0", "draft_shield": "disabled", @@ -68,7 +65,6 @@ "minimum_sparse_infill_area": "15", "internal_solid_infill_line_width": "0.82", "internal_solid_infill_speed": "150", - "spiral_mode": "0", "initial_layer_infill_speed": "60", "standby_temperature_delta": "-5", "enable_support": "0", From 44bb6cd3fc951660795859f8068a99f1fddaab49 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 21:58:58 -0400 Subject: [PATCH 42/64] Some more bug fixes I have no clue how I missed these --- .../profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json | 2 +- resources/profiles/Creality/machine/Creality K2 Plus.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index a83bd0bab72..85a244a1055 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -7,7 +7,7 @@ "inherits": "fdm_creality_common", "printer_model": "Creality K2 Plus", "gcode_flavor": "klipper", - "default_print_profile": "Creality Generic PLA @K2-all", + "default_print_profile": "0.14mm Optimal @Creality K2 Plus 0.2 nozzle", "nozzle_diameter": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index 1989658e2b6..775021736ed 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -7,7 +7,7 @@ "inherits": "fdm_creality_common", "printer_model": "Creality K2 Plus", "gcode_flavor": "klipper", - "default_print_profile": "Creality Generic PLA @K2-all", + "default_print_profile": "0.16mm Optimal @Creality K2 Plus 0.4 nozzle", "nozzle_diameter": [ "0.4" ], diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 744b5881166..3e371a38068 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -7,7 +7,7 @@ "inherits": "fdm_creality_common", "printer_model": "Creality K2 Plus", "gcode_flavor": "klipper", - "default_print_profile": "Creality Generic PLA @K2-all", + "default_print_profile": "0.24mm Optimal @Creality K2 Plus 0.6 nozzle", "nozzle_diameter": [ "0.6" ], diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index c83c071c569..8061aa680de 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -7,7 +7,7 @@ "inherits": "fdm_creality_common", "printer_model": "Creality K2 Plus", "gcode_flavor": "klipper", - "default_print_profile": "Creality Generic PLA @K2-all", + "default_print_profile": "0.32mm Optimal @Creality K2 Plus 0.8 nozzle", "nozzle_diameter": [ "0.8" ], diff --git a/resources/profiles/Creality/machine/Creality K2 Plus.json b/resources/profiles/Creality/machine/Creality K2 Plus.json index 4c96122cb92..7cb68b5a44f 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus.json @@ -8,5 +8,5 @@ "bed_model": "creality_k2plus_buildplate_model.stl", "bed_texture": "creality_k2plus_buildplate_texture.png", "hotend_model": "", - "default_materials": "Creality Generic ABS @K1-all;Creality Generic ASA @K1-all;Creality Generic PETG @K1-all;Creality Generic PLA @K1-all;Creality Generic PLA High Speed @K1-all;Creality Generic PLA Matte @K1-all;Creality Generic PLA Silk @K1-all" + "default_materials": "Creality Generic ABS @K2-all;Creality Generic ASA @K2-all;Creality Generic PETG @K2-all;Creality Generic PLA @K2-all;Creality Generic PLA High Speed @K2-all;Creality Generic PLA Matte @K2-all;Creality Generic PLA Silk @K2-all" } \ No newline at end of file From b23223c0dec829dee3ba7924036d4e5361ad73bb Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 22:04:56 -0400 Subject: [PATCH 43/64] Another bug fix Seriously, how do I miss these --- .../profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json | 2 +- .../profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index 85a244a1055..daa78f2370b 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -120,7 +120,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Creality Generic PLA @K2-all" ], "machine_start_gcode":"M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F1500\nG1 X150 Y0 E15 F1500\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index 775021736ed..d78165b1043 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -120,7 +120,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Creality Generic PLA @K2-all" ], "machine_start_gcode":"M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F1500\nG1 X150 Y0 E15 F1500\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 3e371a38068..1858009bd60 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -120,7 +120,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Creality Generic PLA @K2-all" ], "machine_start_gcode":"M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F1500\nG1 X150 Y0 E15 F1500\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index 8061aa680de..d184ada634b 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -120,7 +120,7 @@ "single_extruder_multi_material": "1", "manual_filament_change": "0", "default_filament_profile": [ - "Creality Generic PLA @K1-all" + "Creality Generic PLA @K2-all" ], "machine_start_gcode":"M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]\nT[initial_no_support_extruder]\nM204 S2000\nG1 Z3 F600\nM83\nG1 Y150 F12000\nG1 X0 F12000\nG1 Z0.2 F600\nG1 X0 Y150 F6000\nG1 X0 Y0 E15 F1500\nG1 X150 Y0 E15 F1500\nG92 E0\nG1 Z1 F600", "machine_end_gcode": "END_PRINT", From 77eb02e722502cce1808b882c18dd7fae68f4e69 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 22:10:27 -0400 Subject: [PATCH 44/64] Hopefully this is the last issue --- .../Creality/machine/Creality K2 Plus 0.2 nozzle.json | 4 ++-- .../Creality/machine/Creality K2 Plus 0.4 nozzle.json | 4 ++-- .../Creality/machine/Creality K2 Plus 0.6 nozzle.json | 6 +++--- .../Creality/machine/Creality K2 Plus 0.8 nozzle.json | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index daa78f2370b..2f9dc1d0dc1 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -128,7 +128,7 @@ "scan_first_layer": "0", "thumbnails_format":"PNG", "thumbnails": [ - "96x96", - "300x300" + "300x300", + "96x96" ] } \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index d78165b1043..66986667d7b 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -128,7 +128,7 @@ "scan_first_layer": "0", "thumbnails_format":"PNG", "thumbnails": [ - "96x96", - "300x300" + "300x300", + "96x96" ] } \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 1858009bd60..265f3b8c4da 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -126,9 +126,9 @@ "machine_end_gcode": "END_PRINT", "machine_pause_gcode": "PAUSE", "scan_first_layer": "0", - "thumbnails_format":"PNG", + "thumbnails_format": "PNG", "thumbnails": [ - "96x96", - "300x300" + "300x300", + "96x96" ] } \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index d184ada634b..470185258c7 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -128,7 +128,7 @@ "scan_first_layer": "0", "thumbnails_format":"PNG", "thumbnails": [ - "96x96", - "300x300" + "300x300", + "96x96" ] } \ No newline at end of file From 08800dc9e3ebc7c755c5fa326a7ec2c8ff7dcde6 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 22:20:17 -0400 Subject: [PATCH 45/64] Trying something --- .../Creality/filament/Creality Generic PETG @K2-all.json | 2 +- .../Creality/filament/Creality Generic PLA @K2-all.json | 2 +- .../Creality/filament/Creality Generic TPU @K2-all.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json b/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json index efe3f28bb7f..f1a84dd70cf 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json @@ -48,7 +48,7 @@ "80" ], "reduce_fan_stop_start_freq": [ - "1" + "0" ], "compatible_printers": [ "Creality K2 Plus 0.2 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json b/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json index 472eef92212..5b311c34d2e 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json @@ -42,7 +42,7 @@ "50" ], "reduce_fan_stop_start_freq": [ - "1" + "0" ], "compatible_printers": [ "Creality K2 Plus 0.2 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json b/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json index 21b4e547a35..5907024db40 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json +++ b/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json @@ -30,7 +30,7 @@ "8" ], "reduce_fan_stop_start_freq": [ - "1" + "0" ], "compatible_printers": [ "Creality K2 Plus 0.2 nozzle", From 201d188ef1d51cdc5c6b7f37e5629d621c69cf4e Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Thu, 3 Oct 2024 23:13:05 -0400 Subject: [PATCH 46/64] Revert "Trying something" This reverts commit 08800dc9e3ebc7c755c5fa326a7ec2c8ff7dcde6. --- .../Creality/filament/Creality Generic PETG @K2-all.json | 2 +- .../Creality/filament/Creality Generic PLA @K2-all.json | 2 +- .../Creality/filament/Creality Generic TPU @K2-all.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json b/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json index f1a84dd70cf..efe3f28bb7f 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json +++ b/resources/profiles/Creality/filament/Creality Generic PETG @K2-all.json @@ -48,7 +48,7 @@ "80" ], "reduce_fan_stop_start_freq": [ - "0" + "1" ], "compatible_printers": [ "Creality K2 Plus 0.2 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json b/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json index 5b311c34d2e..472eef92212 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json +++ b/resources/profiles/Creality/filament/Creality Generic PLA @K2-all.json @@ -42,7 +42,7 @@ "50" ], "reduce_fan_stop_start_freq": [ - "0" + "1" ], "compatible_printers": [ "Creality K2 Plus 0.2 nozzle", diff --git a/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json b/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json index 5907024db40..21b4e547a35 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json +++ b/resources/profiles/Creality/filament/Creality Generic TPU @K2-all.json @@ -30,7 +30,7 @@ "8" ], "reduce_fan_stop_start_freq": [ - "0" + "1" ], "compatible_printers": [ "Creality K2 Plus 0.2 nozzle", From 0e15cccbc51abe9750cb337d96d4e04bfd36de00 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Fri, 4 Oct 2024 18:34:46 +0800 Subject: [PATCH 47/64] update version --- resources/profiles/Snapmaker.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 4e9159c67fe..61bf9abfef3 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.02.00.00", + "version": "02.02.00.02", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ From 29278be7298ded5d8d96dfa0b2b480cea2f72c16 Mon Sep 17 00:00:00 2001 From: dylan <331506+macdylan@users.noreply.github.com> Date: Sat, 5 Oct 2024 00:41:53 +0800 Subject: [PATCH 48/64] fix `prime_volume` --- resources/profiles/Snapmaker.json | 4 ++-- resources/profiles/Snapmaker/machine/fdm_common.json | 2 +- resources/profiles/Snapmaker/process/fdm_process_common.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index 61bf9abfef3..1e782b61b8d 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.02.00.02", + "version": "02.02.02.02", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ @@ -1339,4 +1339,4 @@ "sub_path": "machine/Snapmaker Artisan (0.8 nozzle).json" } ] -} +} \ No newline at end of file diff --git a/resources/profiles/Snapmaker/machine/fdm_common.json b/resources/profiles/Snapmaker/machine/fdm_common.json index 9dde4953b3e..6066188b5c1 100644 --- a/resources/profiles/Snapmaker/machine/fdm_common.json +++ b/resources/profiles/Snapmaker/machine/fdm_common.json @@ -11,7 +11,7 @@ "auxiliary_fan": "0", "remaining_times": "1", "single_extruder_multi_material": "0", - "purge_in_prime_tower": "1", + "purge_in_prime_tower": "0", "enable_filament_ramming": "0", "nozzle_volume": "0", "cooling_tube_retraction": "0", diff --git a/resources/profiles/Snapmaker/process/fdm_process_common.json b/resources/profiles/Snapmaker/process/fdm_process_common.json index c09a7c84458..e5b21d091e9 100644 --- a/resources/profiles/Snapmaker/process/fdm_process_common.json +++ b/resources/profiles/Snapmaker/process/fdm_process_common.json @@ -153,7 +153,7 @@ "brim_object_gap": "0", "enable_prime_tower": "1", "prime_tower_width": "25", - "prime_volume": "7.3", + "prime_volume": "55", "prime_tower_brim_width": "5", "wipe_tower_cone_angle": "25", "wipe_tower_extra_spacing": "150%", From 14467c0e8d8540b850c5421aad4f261156ceff8d Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Fri, 4 Oct 2024 16:59:10 -0400 Subject: [PATCH 49/64] Fix typo --- resources/profiles/Creality.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index cdf9a7627f8..13ef05c20b0 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1584,7 +1584,7 @@ }, { "name": "Creality K2 Plus 0.6 nozzle", - "sub_path": "mahcine/Creality K2 Plus 0.6 nozzle.json" + "sub_path": "machine/Creality K2 Plus 0.6 nozzle.json" }, { "name": "Creality K2 Plus 0.8 nozzle", From 407ea045a2b8d0d3c81bdb51a2dbb2ef6ec96f41 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:48:26 -0400 Subject: [PATCH 50/64] Fix wrong max layer for K2 Plus 0.6 & 0.8 --- .../Creality/machine/Creality K2 Plus 0.6 nozzle.json | 4 ++-- .../Creality/machine/Creality K2 Plus 0.8 nozzle.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index 265f3b8c4da..b7f19e28351 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -84,7 +84,7 @@ "5" ], "max_layer_height": [ - "0.3" + "0.42" ], "min_layer_height": [ "0.08" @@ -131,4 +131,4 @@ "300x300", "96x96" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index 470185258c7..887aa84de3d 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -84,7 +84,7 @@ "5" ], "max_layer_height": [ - "0.3" + "0.56" ], "min_layer_height": [ "0.08" @@ -131,4 +131,4 @@ "300x300", "96x96" ] -} \ No newline at end of file +} From 9d37d1a0840e193c4c128d3c90d074144a2b382f Mon Sep 17 00:00:00 2001 From: vovodroid Date: Sat, 5 Oct 2024 21:48:16 +0300 Subject: [PATCH 51/64] Export negative parts. --- src/libslic3r/CSGMesh/CSGMesh.hpp | 34 +++++++++++++++++ .../CSGMesh/PerformCSGMeshBooleans.hpp | 28 +++++++------- src/slic3r/GUI/Plater.cpp | 37 +++++++++++++++---- 3 files changed, 78 insertions(+), 21 deletions(-) diff --git a/src/libslic3r/CSGMesh/CSGMesh.hpp b/src/libslic3r/CSGMesh/CSGMesh.hpp index 177d3432965..ea16eae52ab 100644 --- a/src/libslic3r/CSGMesh/CSGMesh.hpp +++ b/src/libslic3r/CSGMesh/CSGMesh.hpp @@ -82,6 +82,40 @@ struct CSGPart { {} }; +//Prusa +// Check if there are only positive parts (Union) within the collection. +template bool is_all_positive(const Cont &csgmesh) +{ + bool is_all_pos = + std::all_of(csgmesh.begin(), + csgmesh.end(), + [](auto &part) { + return csg::get_operation(part) == csg::CSGType::Union; + }); + + return is_all_pos; +} + +//Prusa +// Merge all the positive parts of the collection into a single triangle mesh without performing +// any booleans. +template +indexed_triangle_set csgmesh_merge_positive_parts(const Cont &csgmesh) +{ + indexed_triangle_set m; + for (auto &csgpart : csgmesh) { + auto op = csg::get_operation(csgpart); + const indexed_triangle_set * pmesh = csg::get_mesh(csgpart); + if (pmesh && op == csg::CSGType::Union) { + indexed_triangle_set mcpy = *pmesh; + its_transform(mcpy, csg::get_transform(csgpart), true); + its_merge(m, mcpy); + } + } + + return m; +} + }} // namespace Slic3r::csg #endif // CSGMESH_HPP diff --git a/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp b/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp index a9a48b48c02..df4a6033827 100644 --- a/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp +++ b/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp @@ -257,7 +257,7 @@ void perform_csgmesh_booleans_mcut(MeshBoolean::mcut::McutMeshPtr& mcutm, template -std::tuple check_csgmesh_booleans(const Range &csgrange, Visitor &&vfn) +std::tuple check_csgmesh_booleans(const Range &csgrange, Visitor &&vfn) { using namespace detail_cgal; BooleanFailReason fail_reason = BooleanFailReason::OK; @@ -304,23 +304,23 @@ std::tuple check_csgmesh_booleans(const Range }; execution::for_each(ex_tbb, size_t(0), csgrange.size(), check_part); - //It ret = csgrange.end(); - //for (size_t i = 0; i < csgrange.size(); ++i) { - // if (!cgalmeshes[i]) { - // auto it = csgrange.begin(); - // std::advance(it, i); - // vfn(it); + It ret = csgrange.end(); + for (size_t i = 0; i < csgrange.size(); ++i) { + if (!cgalmeshes[i]) { + auto it = csgrange.begin(); + std::advance(it, i); + vfn(it); - // if (ret == csgrange.end()) - // ret = it; - // } - //} + if (ret == csgrange.end()) + ret = it; + } + } - return { fail_reason,fail_part_name }; + return { fail_reason,fail_part_name, ret}; } template -std::tuple check_csgmesh_booleans(const Range &csgrange, bool use_mcut=false) +std::tuple check_csgmesh_booleans(const Range &csgrange, bool use_mcut=false) { if(!use_mcut) return check_csgmesh_booleans(csgrange, [](auto &) {}); @@ -354,7 +354,7 @@ std::tuple check_csgmesh_booleans(const Rangeis_model_part()) { - TriangleMesh vol_mesh(v->mesh()); - vol_mesh.transform(v->get_matrix(), true); - mesh.merge(vol_mesh); - } + + //Prusa export negative parts + std::vector csgmesh; + csgmesh.reserve(2 * mo.volumes.size()); + csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), + csg::mpartsPositive | csg::mpartsNegative | csg::mpartsDoSplits); + + auto csgrange = range(csgmesh); + if (csg::is_all_positive(csgrange)) { + mesh = TriangleMesh{csg::csgmesh_merge_positive_parts(csgrange)}; + } else if (std::get<2>(csg::check_csgmesh_booleans(csgrange)) == csgrange.end()) { + try { + auto cgalm = csg::perform_csgmesh_booleans(csgrange); + mesh = MeshBoolean::cgal::cgal_to_triangle_mesh(*cgalm); + } catch (...) {} + } + + if (mesh.empty()) { + get_notification_manager()->push_plater_error_notification( + _u8L("Unable to perform boolean operation on model meshes. " + "Only positive parts will be exported.")); + + for (const ModelVolume* v : mo.volumes) + if (v->is_model_part()) { + TriangleMesh vol_mesh(v->mesh()); + vol_mesh.transform(v->get_matrix(), true); + mesh.merge(vol_mesh); + } + } if (instance_id == -1) { TriangleMesh vols_mesh(mesh); mesh = TriangleMesh(); From 9f73262b436478c5c6a82f8c8ae0476c2a34a962 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Sat, 5 Oct 2024 18:05:16 -0400 Subject: [PATCH 52/64] Image optimizations --- .../Creality/Creality K1 SE_cover.png | Bin 29072 -> 15689 bytes .../Creality/Creality K2 Plus_cover.png | Bin 19416 -> 17462 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/profiles/Creality/Creality K1 SE_cover.png b/resources/profiles/Creality/Creality K1 SE_cover.png index 85737cce6d8f59e03a891bbd5de16fac4405129c..b855c0b0f5728b90f5aabaf3d1ad9d05cad5f218 100644 GIT binary patch literal 15689 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 literal 29072 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 UA!ihT=Snbmy85}Sb4q9e0O$*?-T(jq literal 19416 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%0AGo>1bokMtuN>3m8ffD1;f(`?(T=8Nq-?xj zZR1keX^W}LF*eltrnlCaP4tN^xk0&!zw=a2H?WA#-Uqb%q?I#F4hXm?mE|Nl+YRfA zxa1U`jQS>w%B^fF1oKNAlfVD1C9P)K>Q+?T95+jP!($f%LOcrs`Hg(tN{ud%rpeAa z`r?4rFWHN#dWsaYc+<$`oMWB%oQ!wR&W&nTEjq6#mqM-g*E$o`#S8Fn>kKdUVn<8G zu6M}x4xk(b@!_$E(?d`RrmInZiBNAv^UfTp-zP((DHubhA+i+rlGFeX<0-TgzeVOO z3XYnq!uI=mxR7et&{Ycg%!NQakIQlId<1mpidmmZeBMV7f$;-%pe3y8LUysnEvwSG zE9`w;*(@D&JX~9So}NN}Byw;pDk(J;VyR-We(X21ctFi2n#9;+TY^;#aeyY}mi0Df zujGy>)){rV}ZdW_vyp%X8=IcW0hrPBB8wtLqW^W@eul*jq z18ZU-za79iXZ-{?##_F3+cftmYwtAuV=LKhH$=0yo!g}J3EY%Xr|Y^cYfE1R zfWQOp&Bl8#LC4(zkM2eX5&(a*`&BMqcQ4sG^c{E1PK4MB<{vc%*7=yel?70!A^zWn z2CUM~Q3@G$rE0e(AH+k8v3Bz4OsS_+;Rx?ufr&tfQ#qs?{-18Ab8o@j}Yp# z@;BfUt*$$n9F(R07=aZ1QbH+izT1oFX3q+JTb#2lFx6tt@vm8!(k9SK&-jF(2P3y*s;Wx$*e+d)9yl2ni$4QbQW%GrS@_zoLLndV`Wvfnmo*+imsnX z<+~v{JG`-sn@p;G;AWB9>7}3SgxtGsp}&`xz7J!Evu%RLDE?671CiRI;U^Va0F}b4 zYv*5vYFxY3kp2{3^O|AD2bSL^=Xr28rT$RCg!I4!8k5`D;{+LVbxh&UKU z_7X8{l>vUl57q2&qB3`3HJh~4mhRpa_{5T=3+9IcFJIE-VYx{SPytGI8zq4VGfkh) zbxOsa6U|0Zy@(}-81B+P%y@*b7QmI3e1IcjvBpN%L-ExkHKQDsrGqW ziPn`BWW=XPC74_2p}=j?9k2;SwBQ@Kw>QKV7`$DB^NwkW`bR7|ocrAz z-CcR0M(X8SPtv37&5)9cZ4 zG=EDKh|TZqcVpm<<-3R{9{p(Y+ZBHfta;HdFndxdXDRbemAgP~ps0ILUaEsS@AG?_ z*_+l8X8R7N2i#j@1-JTf>W2N5(_v*p{q>V^w?i>!8#o!=?LGVxs-W(0Xcsf`W78u# zdRY+NbnL)@iZP8;R%8e-G>R3Go)N~(j;drGtd4hDx%G@Ep$?o`%F`*wz4EQFIaxD^Km7?&k2DTJc|j zal66QsHf-}Fa_wKL$iet8F-4I=hgMX-w74$rAsUz$=q~tgC=^2T>{yZX}H!VffUPm zO9;9xyY>StKZIQbYs6nF31y1@7L(eOuc-^_(^)|}ukd1*ona!rFF7K#RCilQJ;Q+K&^A*maW^xwT7dyhw#{k&q00}kz@M#jFTAeVb} zgTN)YwBJbhxyOAE8u9HM=EvK9cJ|+(fBM-B?^U>YPSD>Y>hHGeer5W{h*vi%w;zXi>hK&S8B^iV}e zC}r`F@RhKlv8wXAd~R5}Dsk~$9|XkN#HvGJbxX_P8al-A*$=UFFc2sfpMv=gZ2DSc)6$?e#f=PgV0^kE zHBkBE&+DzOlh^`Whc1HP7WCW2fv;y>d4)w)GPw^^7F>O-tY94}74GxXs8-YJ_{_6_ zIFZ6)Id7>VN{>fJQ6NWTybGAD^aG~nkq}n37gr5Zf$oy1o&dK@;0EfI>hE9o_f|>L zW1mJ)n3F=?(n5jon3{a?n?F}!i1MO@>bY?3UqcXi1$pU;)R?CR_f?kSJt;hRLiP9a z?>0n{i9&Qu+Al#@;v}pcgPVLmL$T&P$h5jjvmNL49d|GV`ELC7eB0jbp`W)jGbYnN8i3ZWBjGXu#@!Xn?t8O%x9iPpSKEqrd zot!pt$EJS<@1j=QsQnKH1RC2|f>FJo>%fU13H~ui)m(fZ`PE5Sj}1h#t2~kCLX|Sy z>$MNz%MQKSw>2_BxY{|48jt~G)AfB-nMh@wwH8u530u|Q6AmB0E`o>89L{gysJx#R zN2lazbnEgpMO)wJYMv_#Ydi%x%~kq75~eN?G=Jbf(|lOWHA35a zoj*-i0gw4giexxt?&hdz;^`J!Kn%U+>N z%FT*&-`S5>po6|^5SY$n%*cl?9>a7+w<3aW9W*0Ltp}C=8oEGW$Hj7eyY@9+Y^EA0 z)UQ>3p>Q~!sLR`J{TaG->z%oOR5`g~751I8RqB^=1WmuA@!e;bF146_T{$$C9&0BP zN`Qz3_t2k~7soNp&ZA=*4&jL*wD9YXoN)d`PGI%*6!P~hR`Ye~go~S^6RFTi%Y#-Uq;m zs>WI9EMYbfpzhBlUO{_a8h+Toi45KnTfg{rxS$XzXpf27KQDAHej+a*;cBRs9t7G- z4W;P$H7Z>+nUsMq1h}_^UQ8lW_@a0)Gy+k0c$2Yhh5Vw;;3SH(rgbz zRZcHj;%~I^MyB8Q3;esNh~}o1<8!^|Q@#QrhzZb^rts!aqbb+#-=1vJJipf^mDSXT zEbW2S4r4IU8mdY5`M&9KXX`<-jG$_s>GQtF?@4;VF%`7KfrgolZ83FZ=7MudAbFvw ze8U91`CggaF(QO>|Jl|>`%!h$$CRX8m|p4QJQHh2c<*QY|R&9k0hf)AARC zr3{Y6&DH-$lChPeBKYs~9Q+?Ooh0**u;7j2OC#FQ*)}-gqruOEnSp3stF&N~B0cfI zni2N1;hDG0hQ70S_37H|L>CEqm*;wM!M-(n`2nE#R4{FDUg&u#&I9c-Tc@_Lo+!8% z#Q=05w;Mw)`hnIf(0rNdTOFef)-h5Phl+Kh6 zO=ONwt~Zx)<@=KxTkrYNhXuUi-@V-Ad3CO=(Vs%0B1AnRXT;Iz;(5(4FZ~v2*oiMF zw*k9DHu-VR z=C4Lg{0Kda6CWIjMk{f?;_^g@sbaT}Glv681-s!HsS11f(2+BLJOb7L@9Tgg6phJ^E63M z69SO1<%UEt^G5oUI)b@134z;%Q*`7eF>rTnXf5m)+MfzWOsE)OA;}_B?(ZwY^GIux zM1c{5uEckzO~Vq-O!{Cr*cru=q7pudMO7(Es||U)^lfP@JXir%X=bmc`_F>HT|dY{ z@;`oSuc5GypLur}MPB?ar}?0@{u;6a#h6TlPatnyY8N**X=)eyMu{Rc*!bNF3|RD zd-x%6!5(bk21z2Me##)3(e=m@c;j0+{VBEV9RxSJl%U-U!0+*U;}?y-Ls#nCyHWw& zj~!!~^7wn@voz$1SRVkRLUapFkX^{pHkRa~#>>92jU z`5X0oiISU$1(*Hk@KKmHavyw+yH{SoPH+X=k}OSLcFo9RjNLvG5?oe9Ks~Pl-6Gsa3G`=ymeO@N+X9 zlCNWTo=r$mVl70pJ-sr}~X zHY6y_$j^%deslMe%pYg{YHeDBmjoYS4zeeVc+C6$7a!Gn(GA8E~Y+WXYZ6zd5GFZR71dz`)@N&L1jim z>QL8W(VyC+FFsSu*w-S~HK}$vpYSoD)f){~&AW4_a4m6?P*UJa)?Z=52QtY@nQXO_ zcoZH|sMo>Q2#C6{9>!DnzNZEiI5(hwhAojRQc!=I=F4&a{WU{=!qZNmz0xcRYPsQy zVm%n#vXab+DQmbpI@1QGfE0KfX37%8-50wMm#ehgjQj0@Z2ZB)S7p?0wB0a=3Yr0; zDDnmZ1$DoH#QRsN6RqB8lFJ-|E7pN~S+gundQ-PW8p9o8l;JgiTcm;nrDc=sS9&>e zheCJNsyEMJ|8=`GFE_rnI^hWwV6dR_Pds%FCJiHx0Ey>SQz{Ci9YVv6qUDsi?7&YK zc-7Tydm@2lqQQV>0L~_Dql#@c@eTXb-4A$toJ?uJNSRW=X5H{oT@~muHCZ-p+j36c zjhKEsTHQ5^EKJ5o@%(k+)JxV4emO{KrHoImV!g zJBEcSeU9orLtjOz+ek9{v$87c(l!`M5_&KTNt@sx#>nn(GWWY!A~wbu7+kF)i`XDn zq&}I=PM^U}A~dN$psV4%%Ehx7V*y>ga^~+`CsE_-%zQ`Lo@|nJPBpI~rn(*W3vq$p zSy4;gAo$mc8ZI5lbedYxkFhlqny_;e^O4=G%EcDd&J@r zI0xExq1gfVJ+(u9``fp3I7wU>xrB)sNfLJFz;(fVROV9D@0#AfedbOU!aI;v%Ett5 z%OLIj9G<9Xd*2cmpokB47U5dF8JI5oZ6%<_e}W;ifO=cR_2!3e^p2&AdaaPqo5C6h zNm2;>fU{N78Sb<)Ykp8+xmfJ#(_C!J!vnbW_AhCTeqF5lr;6pujBTK#gN$N}6tp&1 zxiLjQpgHjxzX*X6OCxgS?H2}wD4f+6nXq8=%CSD8bzod2=(0C|UDI~EX4Ugp7E3MpG9tj?IR!$z9cPhkkk$no4n%&TLd zEnzsTkL;@C(mO!cSbb8Qx4Cd71>%%&jhkf4yP(`#iPYTs8(~9e3~=+}k=sv(iE78< zZ>bVXs_{>1r^stg6>zzsHIC?(xV^I4mWsXOxXpm~3R0z5kg=QNOc-p^(|t;yfo~&) zVx?02QJK7g8QevUnNyLaDA%by65*KsYe>qk$nTUnBT)^)kGy~Z2?AF6Ym+hpb^+~~ zDai%D-0^j0+giVrTFgTQ!D(dElTV=6juO8)!Gxlum?oU& zI^IkKstmCO6^&Yc>E?kaS`*mq5y1N(klg(s)XNv9{l(-qdx8}A%b>WPfV|1<)N~ce z^Ww^ga8t0Dyj*zOTC;`5FyXC zm8cvA0YgNN-1KnKkB72U3XRCzx>~PcH6!pjOlADEg4bO7c`rh)l3E`&Jkt>)!DYug zttc$k3IN{L5H*QH>;FWYh&Dz7bsu8i^^<>2`W=qi?8FDXmM)+eH&lB4am-6_p0~ztI)s4BNE0_HuZ3Z!TYhT>K|;v)bw2C7 zU6SXvnj942(5n!cx_7^im>2L$MK3@;5<*00X*ms%0p(r*q`qcI>zNcwV!Is=Nhk0 z1Dz|j=061|Fd*YFPw!&>Z0$p1p#hnsG3fk;x$FUD-~B{uVvtgfX1R>XGX^|Ryy1m@ zIO+3VCbzy{{G=S(8AJBhO+0TAfDJ7JnY0|PNaa?dc(F}j>=hZdNH)Hn0037Drl6X@ zjNdm8=2PM|;sPx`z~)D@S^N=9^I{%!*dqnsSS;lF!Ts0MZIdr#Yzoh!^LHB!gR~y& zkwEvL7uvPpjUgt#&9n4Q5hk_x6xvZa@2V;Z`Ezg)(&y06ar?adDsLpyg-FkH_f&s!8t^M7JC+`romsr{`qo6Iapq=mSfS;^z#T60%Dke@)i?>_kC# zpZ(wAVU%sbE+Qme=Mutnd!ixq{cXuygS8+=&G?y^0X&)7E1Aq_QORCeh@(mP0 zSrCU(bcr-r?pRo1EZ5whW}nPl2%Js6kJ9FgQ0B6k3lrZsl(e~s9*c7>7rl#DyL5=X zt1?Oy)v6vXLZf;K6i-ObsBoR(lqF?1HMAQ6R*xK7z!*U(h>H|ikt~(~F%BwgLI&&+ z2~%DN`p-n=;{}+zj%9FyLG{KbLYe=nOKodEHtA*%LjrCTx|xDW{;oN z(GW$!ALRCx$y(_L?KcD~s-oC0(9L#ydQPF?Y_zWS8lc|+G%-SGTe7b`qp(y#@E?Cq zj&At(VSF2-jG|bbfS9S0QfEJHQXA30+20}4D{VlfC45+BxUj2_ATn0KZM>CtyHnGH z?>(P9Q`A5&-T70(3^=+`1r{}dAM|;^;(8!Zroxr_Q6>t-{yV-YX4<2fmUNUX>8gbS z#4^}52@oFq<6QCZ-j#toYl~x4;k+=h9jo8Gm~FEei%2)-!s`K7OJcPv2~}@$g9108 z0s9>DM@Y1pl?XicCV2Rgo93+vN@2cx*0B-5YJe~a0=m1}fF{=h1?)O}?XzSRso_sq zQpqY#M)eBPLmye`dz{~_zN}t2XKPeYU+|m9`N1vUg{xy?jMa0 z7AY6#p|X6>lIDnTNYAe34y#DOwHPO{g8wUIOp{rMQxP|ab<99RYoXT0IBq`}#k3h9 znhCzK2pDv{OZmJjp3?AFOIF9w1v4MFXDWb9X!NQO0tS1F%|g9s@8wpX+rcVv&#GI` zAwVQgh3l$iJ~r#?cN0eLdJ!e}Ha?4(gU<^&7&&Arp699KF{bdchY&aiEP>blMpa}% z^Y0xvX*!oOkBoTfEIr#K1-T9RI5N|=F~`X*Ar2i%AHD5yB>`CW!}4tMZ(h>5b#6I~ zP=JRA?28Wy`V}(6ou+4Qc%T*_=p~-E{&p(@x??SY@5h z!$~BzRFGrEPTOKD4juvel^0|IylF;*t)xp&4+#$DrHz$(wj8+=g`%M=@PfH>McZ+L zlSObPS`xf%oa&LzsAhxv`<}?^1d3m657Th{;oruC&sJoa(x)ZT_hYT7f}YRq8S zDP(Cyt)Ve4OT$4B+^tu=q(FwCQ^oe3=26)Z*;Lk%Gi%rTXaUFT-;h1g%`As6;B5;~ zY`|$va(=G$$~84L(=B{tvnkkt!B;5mpGqlpad28`Uz#gIvR!}3)e>5d@s566C#H2w zp-Mk0a|~UOn$?>WEWM`jp4L}pL>StsNC>EU{ydvbA0+}}p@e&+73yy|6F27j^FRf+ zjiTW|&pr?1i;=YZ*LH$8tExR#mHLovHTo?i9fHvC%F)8vV!4fDRb&Y zPuo9K`^&$GgbIF#zuLsznN7-V%>tCpxt$@cTcyTN3+SOAaCi!Vc`U&dia>q#xD`i3 z1pZRXhyzquaB)7L%FOQZ(Vq5=hLD@-Qi?F1YJ{Cxaxsn@V`Q@R$=A+IL@`-VI_#0` zI`k_c?6f3h_mOVNf-zNRzf)aE41_V!@T=aVc^8?Y3>EA~g+>@S3f#f19LR9Is*R=z z8n}wR!r`ARn)(KaMss5lfGxc&|B!HF+!WiYlRze8v;4y*O#A&#&gG5)7eQA`j8xNK z^tNV)lDS>XdMQY;ngKbXJ1DUmvVnDC6r|(XBGJ1rjl>Mne>0C7M-ZmQC-S$hvZW6x z71HL?dN%{ydwP@!$!6Znu}3kaTYSwVQJY^QCin4trqq;Bo^6mGsOqlk#k>L%Jj>)~ zDZd3C{;xLMHj3#0nFR;f=Xv16_leYX+45 zs~Gd+L}%#Y$9;_tg)5!x%lh)$YItP^Z%LuD0iy6vgqF=2nU0E(yDbQHuq4hNG|+}y z=WPSnlVAghc3u}B_LE`@mz3s$9BLx#5GkD12vK#EtIQYmdo;F*luRl98uMw3KRo9r zp6G>tC?M!oL%l8voEH4eBY#Zhoy8ln^4Y)L=dcrL07vxr^9qCNUS{jV60$AGFyb1W zP7vd<=?6ZC9iM*qabn6C*I9lKNL#8{{D4BXGR$P|31Mdf37N((eoefth%;qfTvRqK z>4aiz&T~NHU=|qqr3hz)#e0O}Q;LRB*fzCfz+a$vnd9unkA`2-Ezy!b#+=NHJ`Wd5r#V{C+$7ujx&>L>f}$J9k+o}D(Z3+ zPf*d&L%cDALp7G0ofk!k2h)d`I)Iv?$mPZ3uV)q*jy3w3p>_U$rDIP%(`n~85fgVoPeAswosP9*0EUj zYc@>doF$MaYF{UTPal}utd(}TLKxds)MN?1HfVlA7^2*`J?w+ty*V4e`Y9OiP%Ocq znrGcZadX!|&VNo2&kLAE?{HT(U3$Qki=BQd81D!})I}@r?Y{o)?^QpU9z_y{sp0(; z>+v(GorWuNaoJj!u~N&wtWu}lpSjf_gLTiLaM)i?2^@0l3fa%>V0rzP6XKn%bGP!< z!|Gr}hd!(u;)s!3h`k7=Qgm_5a`=oa--i`>^@2hZET@dCaBC6OICqPH0+?KeF%Ez`x%_hlyy2Bf2;}%lY)I zNqu$G=`B4saE0xZZm*`ZA6laCP|EaBQsT}~CrJ(;vN9Q)*CrL5jRbz|Qtke!qgS{Q z*jIkcXG+`8R@R}Er|weWZ2^DRYon;=n=po>zkt(x!eg&Q>`d|{#_&wNPP6fcGl9onfVLF|H1_v(Q!bDyCI|LJi^dRj^N9occD>vuXb?ZKDX;27`YonJhD4EdimVz zmbsD#bC-r;Z=UCeX!cIqQNhn6g$DH@mg=FT{aR;v^6kc&v@PE(crNNF&e&Ve`lS>_ z_AWHnPh8(l<%X#0r%fi?%JF{y12Z)uoM{o#a=2!jQ4*AheW*+U}!?S!%CJe8K*O8JGSrC0KE#Boag#wg2Lywc-vIg<%lS`v_8k@C5W9x>vOEB(MoOU54O2QxT z$Qzw<&cgvCxzQUGSj0TflazK^9N=KiUR7k|R#|&kao;K{Sg2W9(CBSQ{RAZOxjN{W zJqw)8N6gPuuPyt3vDD6YGHf26gxSKw7rrh&f_J&YOU--C4?k+0SL=V3I(Mi4enYbr zhGahxK(Nk7vOnpIe7Hyy0ZS@AYe@0u8F5?_ZfzCEC&||>Mk|s?hw2to8(7oJ;pb3f zAxp@jfEfaG;glOsDXx?QS}AKVO)Rp45!X@X6B}c;*g?47`W~r%XM_Ld#*GE_*;PS^;;;zdgkt+HcWm* zs{cRExPUVgdR_w>h&t{u&eA#%Y)niz6hCBM8=H`p`WsHP-d?m?}^og~WA=7}(Zx85(@uBH{b zTEHYIvVbBDJ&RTF3EVC{d)jW-K1xm@M8mGy*6L55=--7yQae>)Dgr!;J;yhe5}eR} zLJSWV#Ta>lQ%!_$8%Dqbq&hz&j5ZmR8g4d8)j8Pw%Z}B>dkEwwd5cKF zgbaIT1{B?_;2Z3aIPNTzk6BwCh@f+Pl^BBODyb+=`!id_uBt3-;V!4~8*YA%kMRO1 z0kH%rKo`Vw6ZF6*C4s+f1|h7F#pXhlNpBGGO2}pIKHr!xtj z*1BSsNs1OjP{ZH*B~Gzr22K_PBA|`L;PNPpnEnu-@1geaZpRBvYATqj2fOvtNDPdO za+#Da`fXr@An+}?2dq`L6SMA9`2ce1u=F1N**k!r$-sE(1a=0gnV<}7v(Ko=aB}yC&$;2mbCJ1E!Gu-Sjj0&P`g$pWY zCu;psGL+eI7i{G+>w4%p?--@(pd^lL%i!JNGK12_MKUQ<5oWtbAxMH=2S|TIa`(~4TsJzTtQ?Y41Jaqqg^~!(9p7^FQvdK6g5|-vQjtU=gx>p121s|i;7Rl9 zcZYw^EihFlSfFqorOHFOHHtNvG_{=e@JOSh0M`q#3tp?AMl5}mxx&GGMu7~b+N8mD zVhcpFx3NX>k&7*B=o&p@Y>pi%NF@;eT~}Hvl4CjNzsu@Uy!Gg32L^J8*G$FKb;L#nt$It-~nH68NKK%?*8V^Pu|eNzP!v z31pkph`*XJgoqWk3^;gAYbF_SVYF2-r2%L0_aE09oR2Ppt4H64bBFcSRhR$Um!`EK z$TI~e|5l%RQ+)*Pw%;Dy5YgX*qQzn+Kv0hPA1MSgb9d%GU-?~L1D3wS=9^IiP$HeM zi`c8!L#}ywmrfb+JEm)3`9&TN?f5^p;QrVm*Z-WnuJiOpnG${M$^?4!I6iU!DXbdf zG-9Tvs6@gj*2fs14AKrcN>21zv|FAGAJw61bC=jVuUi9i@gP-xi~ zk~+qRWPP#_h1TM&n6Y>6ekfJw&2Z4(ALT>8!{uG73Ri2zWCBt`t$Nx0dt6d#)DsCQ z>3Q2j6W+&z5CkJ7oNQD0M50N-!7ugPC`Rlg!S9@~ZRwj; zk1UGc2iomP0~HM@+S7)tD>{euotRGg<)@iXcVtkv3zU`2JZxllxwe#- zZk8nfcUbw$IKz>R^!6Ac?$Oh2ym$1~WYlPX{gS7Ph2F#86P{`>HGjAO000000KFvc wM7euK0~{gnv)9&u000000000000000000000000000000000000000001#eIN&o-= From 6f3c701a32cad5896f6afa93611f55f28325ea8f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 6 Oct 2024 10:49:58 +0800 Subject: [PATCH 53/64] wip --- src/libslic3r/GCode.cpp | 14 ++++++++++---- src/libslic3r/GCodeWriter.hpp | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 167a7987a7c..e91a8e46d04 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -729,6 +729,9 @@ static std::vector get_path_of_change_filament(const Print& print) gcode += gcodegen.writer().unlift(); // Make sure there is no z-hop (in most cases, there isn't). double current_z = gcodegen.writer().get_position().z(); + gcode += gcodegen.writer().travel_to_z(current_z); + + if (z == -1.) // in case no specific z was provided, print at current_z pos z = current_z; @@ -4516,10 +4519,8 @@ std::string GCode::change_layer(coordf_t print_z) comment << "move to next layer (" << m_layer_index << ")"; gcode += m_writer.travel_to_z(z, comment.str()); } - else { - //BBS: set m_need_change_layer_lift_z to be true so that z lift can be done in travel_to() function - m_need_change_layer_lift_z = true; - } + + m_need_change_layer_lift_z = true; m_writer.get_position().z() = z; @@ -6036,6 +6037,11 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string } this->set_last_pos(travel.points.back()); } + if (m_need_change_layer_lift_z) { + gcode += m_writer._travel_to_z(m_writer.get_position().z(), comment + " travel_to_z"); + m_need_change_layer_lift_z = false; + } + return gcode; } diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index 5e5182014ef..78c93cb92eb 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -119,6 +119,7 @@ class GCodeWriter { // Returns whether this flavor supports separate print and travel acceleration. static bool supports_separate_travel_acceleration(GCodeFlavor flavor); + std::string _travel_to_z(double z, const std::string &comment); private: // Extruders are sorted by their ID, so that binary search is possible. std::vector m_extruders; @@ -172,7 +173,6 @@ class GCodeWriter { Print }; - std::string _travel_to_z(double z, const std::string &comment); std::string _spiral_travel_to_z(double z, const Vec2d &ij_offset, const std::string &comment); std::string _retract(double length, double restart_extra, const std::string &comment); std::string set_acceleration_internal(Acceleration type, unsigned int acceleration); From 608e6375e6ae2b859d521537cf20761ae28720f3 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 6 Oct 2024 19:16:15 +0800 Subject: [PATCH 54/64] Fix wrong z when zhop is diabled. --- src/libslic3r/GCode.cpp | 17 +++++++---------- src/libslic3r/GCodeWriter.cpp | 4 ++-- src/libslic3r/GCodeWriter.hpp | 4 ++-- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index e91a8e46d04..6df9b993fab 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -729,7 +729,6 @@ static std::vector get_path_of_change_filament(const Print& print) gcode += gcodegen.writer().unlift(); // Make sure there is no z-hop (in most cases, there isn't). double current_z = gcodegen.writer().get_position().z(); - gcode += gcodegen.writer().travel_to_z(current_z); if (z == -1.) // in case no specific z was provided, print at current_z pos @@ -6006,14 +6005,15 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string if (m_spiral_vase) { // No lazy z lift for spiral vase mode for (size_t i = 1; i < travel.size(); ++i) { - gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment + " travel_to_xy"); + gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment); } } else { if (travel.size() == 2) { // No extra movements emitted by avoid_crossing_perimeters, simply move to the end point with z change const auto& dest2d = this->point_to_gcode(travel.points.back()); Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_writer.get_position().z() : z); - gcode += m_writer.travel_to_xyz(dest3d, comment + " travel_to_xyz"); + gcode += m_writer.travel_to_xyz(dest3d, comment, m_need_change_layer_lift_z); + m_need_change_layer_lift_z = false; } else { // Extra movements emitted by avoid_crossing_perimeters, lift the z to normal height at the beginning, then apply the z // ratio at the last point @@ -6022,25 +6022,22 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string // Lift to normal z at beginning Vec2d dest2d = this->point_to_gcode(travel.points[i]); Vec3d dest3d(dest2d(0), dest2d(1), m_writer.get_position().z()); - gcode += m_writer.travel_to_xyz(dest3d, comment + " travel_to_xyz"); + gcode += m_writer.travel_to_xyz(dest3d, comment, m_need_change_layer_lift_z); + m_need_change_layer_lift_z = false; } else if (z != DBL_MAX && i == travel.size() - 1) { // Apply z_ratio for the very last point Vec2d dest2d = this->point_to_gcode(travel.points[i]); Vec3d dest3d(dest2d(0), dest2d(1), z); - gcode += m_writer.travel_to_xyz(dest3d, comment + " travel_to_xyz"); + gcode += m_writer.travel_to_xyz(dest3d, comment); } else { // For all points in between, no z change - gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment + " travel_to_xy"); + gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment); } } } } this->set_last_pos(travel.points.back()); } - if (m_need_change_layer_lift_z) { - gcode += m_writer._travel_to_z(m_writer.get_position().z(), comment + " travel_to_z"); - m_need_change_layer_lift_z = false; - } return gcode; } diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index ad3ad640c04..d17527d1158 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -440,7 +440,7 @@ std::string GCodeWriter::travel_to_xy(const Vec2d &point, const std::string &com return w.string(); } -std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string &comment) +std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string &comment, bool force_z) { // FIXME: This function was not being used when travel_speed_z was separated (bd6badf). // Calculation of feedrate was not updated accordingly. If you want to use @@ -526,7 +526,7 @@ std::string GCodeWriter::travel_to_xyz(const Vec3d &point, const std::string &co this->set_current_position_clear(true); return slop_move + xy_z_move; } - else if (!this->will_move_z(point(2))) { + else if (!force_z && !this->will_move_z(point(2))) { double nominal_z = m_pos(2) - m_lifted; m_lifted -= (point(2) - nominal_z); // In case that z_hop == layer_height we could end up with almost zero in_m_lifted diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index 78c93cb92eb..038325b446a 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -69,7 +69,7 @@ class GCodeWriter { // SoftFever NOTE: the returned speed is mm/minute double get_current_speed() const { return m_current_speed;} std::string travel_to_xy(const Vec2d &point, const std::string &comment = std::string()); - std::string travel_to_xyz(const Vec3d &point, const std::string &comment = std::string()); + std::string travel_to_xyz(const Vec3d &point, const std::string &comment = std::string(), bool force_z = false); std::string travel_to_z(double z, const std::string &comment = std::string()); bool will_move_z(double z) const; std::string extrude_to_xy(const Vec2d &point, double dE, const std::string &comment = std::string(), bool force_no_extrusion = false); @@ -119,7 +119,6 @@ class GCodeWriter { // Returns whether this flavor supports separate print and travel acceleration. static bool supports_separate_travel_acceleration(GCodeFlavor flavor); - std::string _travel_to_z(double z, const std::string &comment); private: // Extruders are sorted by their ID, so that binary search is possible. std::vector m_extruders; @@ -173,6 +172,7 @@ class GCodeWriter { Print }; + std::string _travel_to_z(double z, const std::string &comment); std::string _spiral_travel_to_z(double z, const Vec2d &ij_offset, const std::string &comment); std::string _retract(double length, double restart_extra, const std::string &comment); std::string set_acceleration_internal(Acceleration type, unsigned int acceleration); From 7b38376e4e887567391978abed9aa6671f7aad56 Mon Sep 17 00:00:00 2001 From: uSyzex <47423686+uSyzex@users.noreply.github.com> Date: Mon, 30 Sep 2024 14:01:28 +0200 Subject: [PATCH 55/64] FIX: CLI: fix an exception when parsing scale params --- src/OrcaSlicer.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index e93533166e2..c0100b3b2f7 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -3575,10 +3575,16 @@ int CLI::run(int argc, char **argv) // this affects volumes: o->rotate(Geometry::deg2rad(m_config.opt_float(opt_key)), Y); } else if (opt_key == "scale") { + float ratio = m_config.opt_float(opt_key); + if (ratio <= 0.f) { + BOOST_LOG_TRIVIAL(error) << boost::format("Invalid params:invalid scale ratio %1%")%ratio; + record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); + flush_and_exit(CLI_INVALID_PARAMS); + } for (auto &model : m_models) for (auto &o : model.objects) // this affects volumes: - o->scale(m_config.get_abs_value(opt_key, 1)); + o->scale(ratio)); } else if (opt_key == "scale_to_fit") { const Vec3d &opt = m_config.opt(opt_key)->value; if (opt.x() <= 0 || opt.y() <= 0 || opt.z() <= 0) { From 7736cd1b3923769127975ac2964f8fd3498e608f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 6 Oct 2024 20:36:00 +0800 Subject: [PATCH 56/64] fixed #6755 --- src/libslic3r/GCode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 6df9b993fab..ad0e236a4db 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -743,7 +743,7 @@ static std::vector get_path_of_change_filament(const Print& print) || !needs_toolchange // this is just finishing the tower with no toolchange || is_ramming); - if (should_travel_to_tower) { + if (should_travel_to_tower || gcodegen.m_need_change_layer_lift_z) { // FIXME: It would be better if the wipe tower set the force_travel flag for all toolchanges, // then we could simplify the condition and make it more readable. gcode += gcodegen.retract(); From cc90d79190a757c23e2e0c2170ee181b634cc7ad Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 6 Oct 2024 23:39:22 +0800 Subject: [PATCH 57/64] Add back m_nominal_z to store main print_z as GcodeWriter::m_pos will be changed after parsing get_last_z_from_gcode --- src/libslic3r/GCode.cpp | 7 ++++--- src/libslic3r/GCode.hpp | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index ad0e236a4db..a5c1a66b080 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -4521,6 +4521,7 @@ std::string GCode::change_layer(coordf_t print_z) m_need_change_layer_lift_z = true; + m_nominal_z = z; m_writer.get_position().z() = z; // forget last wiping path as wiping after raising Z is pointless @@ -5095,7 +5096,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description, const auto get_sloped_z = [&sloped, this](double z_ratio) { const auto height = sloped->height; - return lerp(m_writer.get_position().z() - height, m_writer.get_position().z(), z_ratio); + return lerp(m_nominal_z - height, m_nominal_z, z_ratio); }; // go to first point of extrusion path @@ -6011,7 +6012,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string if (travel.size() == 2) { // No extra movements emitted by avoid_crossing_perimeters, simply move to the end point with z change const auto& dest2d = this->point_to_gcode(travel.points.back()); - Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_writer.get_position().z() : z); + Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_nominal_z : z); gcode += m_writer.travel_to_xyz(dest3d, comment, m_need_change_layer_lift_z); m_need_change_layer_lift_z = false; } else { @@ -6021,7 +6022,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string if (i == 1) { // Lift to normal z at beginning Vec2d dest2d = this->point_to_gcode(travel.points[i]); - Vec3d dest3d(dest2d(0), dest2d(1), m_writer.get_position().z()); + Vec3d dest3d(dest2d(0), dest2d(1), m_nominal_z); gcode += m_writer.travel_to_xyz(dest3d, comment, m_need_change_layer_lift_z); m_need_change_layer_lift_z = false; } else if (z != DBL_MAX && i == travel.size() - 1) { diff --git a/src/libslic3r/GCode.hpp b/src/libslic3r/GCode.hpp index eaf2c81b64a..843b4a39dad 100644 --- a/src/libslic3r/GCode.hpp +++ b/src/libslic3r/GCode.hpp @@ -184,7 +184,8 @@ class GCode { m_silent_time_estimator_enabled(false), m_last_obj_copy(nullptr, Point(std::numeric_limits::max(), std::numeric_limits::max())), // BBS - m_toolchange_count(0) + m_toolchange_count(0), + m_nominal_z(0.) {} ~GCode() = default; @@ -590,6 +591,7 @@ class GCode { // BBS Print* m_curr_print = nullptr; unsigned int m_toolchange_count; + coordf_t m_nominal_z; bool m_need_change_layer_lift_z = false; int m_start_gcode_filament = -1; From 5b241a3982d7c77af197d0d753bcec11d30d8000 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Sun, 6 Oct 2024 12:29:21 -0400 Subject: [PATCH 58/64] Change acceleration & speed values --- .../machine/Creality K2 Plus 0.2 nozzle.json | 36 +++++++++---------- .../machine/Creality K2 Plus 0.4 nozzle.json | 36 +++++++++---------- .../machine/Creality K2 Plus 0.6 nozzle.json | 36 +++++++++---------- .../machine/Creality K2 Plus 0.8 nozzle.json | 36 +++++++++---------- 4 files changed, 72 insertions(+), 72 deletions(-) diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json index 2f9dc1d0dc1..b88686c8c2a 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.2 nozzle.json @@ -28,44 +28,44 @@ "5000" ], "machine_max_acceleration_extruding": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_retracting": [ "5000", "5000" ], "machine_max_acceleration_travel": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_x": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_y": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_z": [ - "500", - "500" + "5000", + "5000" ], "machine_max_speed_e": [ - "100", - "100" + "50", + "50" ], "machine_max_speed_x": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_y": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_z": [ - "30", - "30" + "10", + "10" ], "machine_max_jerk_e": [ "10", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json index 66986667d7b..68417eebeb4 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.4 nozzle.json @@ -28,44 +28,44 @@ "5000" ], "machine_max_acceleration_extruding": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_retracting": [ "5000", "5000" ], "machine_max_acceleration_travel": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_x": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_y": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_z": [ - "500", - "500" + "5000", + "5000" ], "machine_max_speed_e": [ - "100", - "100" + "50", + "50" ], "machine_max_speed_x": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_y": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_z": [ - "30", - "30" + "10", + "10" ], "machine_max_jerk_e": [ "10", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json index b7f19e28351..2ad329e24e7 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.6 nozzle.json @@ -28,44 +28,44 @@ "5000" ], "machine_max_acceleration_extruding": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_retracting": [ "5000", "5000" ], "machine_max_acceleration_travel": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_x": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_y": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_z": [ - "500", - "500" + "5000", + "5000" ], "machine_max_speed_e": [ - "100", - "100" + "50", + "50" ], "machine_max_speed_x": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_y": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_z": [ - "30", - "30" + "10", + "10" ], "machine_max_jerk_e": [ "10", diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index 887aa84de3d..bdd7bb0473c 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -28,44 +28,44 @@ "5000" ], "machine_max_acceleration_extruding": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_retracting": [ "5000", "5000" ], "machine_max_acceleration_travel": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_x": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_y": [ - "20000", - "20000" + "30000", + "30000" ], "machine_max_acceleration_z": [ - "500", - "500" + "5000", + "5000" ], "machine_max_speed_e": [ - "100", - "100" + "50", + "50" ], "machine_max_speed_x": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_y": [ - "1000", - "1000" + "800", + "800" ], "machine_max_speed_z": [ - "30", - "30" + "10", + "10" ], "machine_max_jerk_e": [ "10", From e14428897e348a2f7c551937c995b08b53fab02a Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Sun, 6 Oct 2024 15:21:22 -0400 Subject: [PATCH 59/64] Initial add of CR-M4 --- resources/profiles/Creality.json | 28 ++++- .../Creality/Creality CR-M4_cover.png | Bin 0 -> 31679 bytes .../creality_crm4_buildplate_model.stl | Bin 0 -> 18684 bytes .../creality_crm4_buildplate_texture.png | Bin 0 -> 4268 bytes .../filament/Creality Generic ABS.json | 3 +- .../filament/Creality Generic PETG.json | 3 +- .../filament/Creality Generic PLA.json | 3 +- .../machine/Creality CR-M4 0.4 nozzle.json | 54 +++++++++ .../Creality/machine/Creality CR-M4.json | 12 ++ .../0.10mm HighDetail @Creality CR-M4.json | 103 ++++++++++++++++++ .../0.15mm Detail @Creality CR-M4.json | 103 ++++++++++++++++++ .../0.20mm Standard @Creality CR-M4.json | 103 ++++++++++++++++++ 12 files changed, 405 insertions(+), 7 deletions(-) create mode 100644 resources/profiles/Creality/Creality CR-M4_cover.png create mode 100644 resources/profiles/Creality/creality_crm4_buildplate_model.stl create mode 100644 resources/profiles/Creality/creality_crm4_buildplate_texture.png create mode 100644 resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json create mode 100644 resources/profiles/Creality/machine/Creality CR-M4.json create mode 100644 resources/profiles/Creality/process/0.10mm HighDetail @Creality CR-M4.json create mode 100644 resources/profiles/Creality/process/0.15mm Detail @Creality CR-M4.json create mode 100644 resources/profiles/Creality/process/0.20mm Standard @Creality CR-M4.json diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 13ef05c20b0..780096b2b7c 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -24,6 +24,10 @@ "name": "Creality CR-6 Max", "sub_path": "machine/Creality CR-6 Max.json" }, + { + "name": "Creality CR-M4", + "sub_path": "machine/Creality CR-M4.json" + }, { "name": "Creality Ender-3 V2", "sub_path": "machine/Creality Ender-3 V2.json" @@ -278,6 +282,10 @@ "name": "0.10mm HighDetail @Creality Ender5Pro (2019) 0.3", "sub_path": "process/0.10mm HighDetail @Creality Ender5Pro (2019) 0.3.json" }, + { + "name": "0.10mm HighDetail @Creality CR-M4", + "sub_path": "process/0.10mm HighDetail @Creality CR-M4.json" + }, { "name": "0.10mm HighDetail @Creality K2 Plus 0.2 nozzle", "sub_path": "process/0.10mm HighDetail @Creality K2 Plus 0.2 nozzle.json" @@ -390,6 +398,14 @@ "name": "0.12mm Fine @Creality K1Max (0.4 nozzle)", "sub_path": "process/0.12mm Fine @Creality K1Max (0.4 nozzle).json" }, + { + "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.5", + "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json" + }, + { + "name": "0.15mm Detail @Creality CR-M4", + "sub_path": "process/0.15mm Detail @Creality CR-M4.json" + }, { "name": "0.12mm Detail @Creality K2 Plus 0.2 nozzle", "sub_path": "process/0.12mm Detail @Creality K2 Plus 0.2 nozzle.json" @@ -406,10 +422,6 @@ "name": "0.24mm Detail @Creality K2 Plus 0.8 nozzle", "sub_path": "process/0.24mm Detail @Creality K2 Plus 0.8 nozzle.json" }, - { - "name": "0.12mm Detail @Creality Ender5Pro (2019) 0.5", - "sub_path": "process/0.12mm Detail @Creality Ender5Pro (2019) 0.5.json" - }, { "name": "0.16mm Optimal @Creality CR10V2", "sub_path": "process/0.16mm Optimal @Creality CR10V2.json" @@ -738,6 +750,10 @@ "name": "0.20mm Standard @Creality Ender6", "sub_path": "process/0.20mm Standard @Creality Ender6.json" }, + { + "name": "0.20mm Standard @Creality CR-M4", + "sub_path": "process/0.20mm Standard @Creality CR-M4.json" + }, { "name": "0.20mm Standard @Creality K1 (0.4 nozzle)", "sub_path": "process/0.20mm Standard @Creality K1 (0.4 nozzle).json" @@ -1382,6 +1398,10 @@ "name": "Creality CR-6 Max 0.8 nozzle", "sub_path": "machine/Creality CR-6 Max 0.8 nozzle.json" }, + { + "name": "Creality CR-M4 0.4 nozzle", + "sub_path": "process/Creality CR-M4 0.4 nozzle.json" + }, { "name": "Creality Ender-3 V2 0.4 nozzle", "sub_path": "machine/Creality Ender-3 V2 0.4 nozzle.json" diff --git a/resources/profiles/Creality/Creality CR-M4_cover.png b/resources/profiles/Creality/Creality CR-M4_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..482a2577aba67c8376774009576a1918ff598755 GIT binary patch literal 31679 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 literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/creality_crm4_buildplate_model.stl b/resources/profiles/Creality/creality_crm4_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..fabd185e34ff1a500c19a4c2d5541f7541fc25af GIT binary patch literal 18684 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 Ggnt1MHa;c* literal 0 HcmV?d00001 diff --git a/resources/profiles/Creality/filament/Creality Generic ABS.json b/resources/profiles/Creality/filament/Creality Generic ABS.json index 288cb5dbada..518de656c86 100644 --- a/resources/profiles/Creality/filament/Creality Generic ABS.json +++ b/resources/profiles/Creality/filament/Creality Generic ABS.json @@ -58,6 +58,7 @@ "Creality CR-10 SE 0.2 nozzle", "Creality CR-10 SE 0.4 nozzle", "Creality CR-10 SE 0.6 nozzle", - "Creality CR-10 SE 0.8 nozzle" + "Creality CR-10 SE 0.8 nozzle", + "Creality CR-M4 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic PETG.json b/resources/profiles/Creality/filament/Creality Generic PETG.json index fc48c8a1041..365e513d0e8 100644 --- a/resources/profiles/Creality/filament/Creality Generic PETG.json +++ b/resources/profiles/Creality/filament/Creality Generic PETG.json @@ -68,6 +68,7 @@ "Creality CR-10 SE 0.2 nozzle", "Creality CR-10 SE 0.4 nozzle", "Creality CR-10 SE 0.6 nozzle", - "Creality CR-10 SE 0.8 nozzle" + "Creality CR-10 SE 0.8 nozzle", + "Creality CR-M4 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/filament/Creality Generic PLA.json b/resources/profiles/Creality/filament/Creality Generic PLA.json index e0383bfc989..a81b71ab1ea 100644 --- a/resources/profiles/Creality/filament/Creality Generic PLA.json +++ b/resources/profiles/Creality/filament/Creality Generic PLA.json @@ -59,6 +59,7 @@ "Creality CR-10 SE 0.2 nozzle", "Creality CR-10 SE 0.4 nozzle", "Creality CR-10 SE 0.6 nozzle", - "Creality CR-10 SE 0.8 nozzle" + "Creality CR-10 SE 0.8 nozzle", + "Creality CR-M4 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json new file mode 100644 index 00000000000..5e28d7de6e6 --- /dev/null +++ b/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json @@ -0,0 +1,54 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Creality CR-M4 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_creality_common", + "printer_model": "Creality CR-M4", + "gcode_flavor": "marlin", + "printer_structure": "i3", + "default_filament_profile": [ + "Creality Generic PLA" + ], + "default_print_profile": "", + "nozzle_diameter": [ + "0.4" + ], + "printable_height": "470", + "printable_area": [ + "0x0", + "450x0", + "450x450", + "0x450" + ], + "machine_max_speed_e": [ + "50", + "50" + ], + "machine_max_acceleration_z": [ + "100", + "100" + ], + "machine_max_jerk_x": [ + "10", + "10" + ], + "machine_max_jerk_y": [ + "10", + "10" + ], + "retraction_minimum_travel": [ + "0.8" + ], + "retraction_length": [ + "0.8" + ], + "retraction_speed": [ + "40" + ], + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "machine_start_gcode": "M220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG28 ;Home\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 S[material_print_temperature_layer_0]\nG1 X10.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y145.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 E-1.0000 F1800 ;Retract a bit\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 E0.0000 F1800 ", + "machine_end_gcode": "G91 ;Relative positionning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\nG1 X0 Y0 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\nM84 X Y E ;Disable all steppers but Z" +} diff --git a/resources/profiles/Creality/machine/Creality CR-M4.json b/resources/profiles/Creality/machine/Creality CR-M4.json new file mode 100644 index 00000000000..889591f6eb6 --- /dev/null +++ b/resources/profiles/Creality/machine/Creality CR-M4.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Creality CR-M4", + "model_id": "Creality-CR-M4", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Creality", + "bed_model": "creality_crm4_buildplate_model.stl", + "bed_texture": "creality_crm4_buildplate_texture.png", + "hotend_model": "", + "default_materials": "Creality Generic PLA;Creality Generic PETG;Creality Generic ABS" +} diff --git a/resources/profiles/Creality/process/0.10mm HighDetail @Creality CR-M4.json b/resources/profiles/Creality/process/0.10mm HighDetail @Creality CR-M4.json new file mode 100644 index 00000000000..fe86b26a368 --- /dev/null +++ b/resources/profiles/Creality/process/0.10mm HighDetail @Creality CR-M4.json @@ -0,0 +1,103 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm HighDetail @Creality CR-M4", + "from": "system", + "inherits": "fdm_process_creality_common", + "instantiation": "true", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "bridge_speed": "15", + "brim_width": ".4", + "brim_object_gap": "0.1", + "default_acceleration": "500", + "top_surface_acceleration": "500", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.4", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "500", + "travel_acceleration": "700", + "inner_wall_acceleration": "500", + "initial_layer_line_width": "0.44", + "initial_layer_print_height": "0.1", + "infill_combination": "0", + "sparse_infill_line_width": "0.4", + "infill_wall_overlap": "30%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.1", + "ironing_speed": "20", + "ironing_type": "no ironing", + "layer_height": "0.1", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "35", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.4", + "wall_loops": "2", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "3", + "skirt_height": "1", + "skirt_loops": "1", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.4", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.4", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "1.33", + "support_interface_speed": "25", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "60", + "support_threshold_angle": "60", + "support_object_xy_distance": "0.8", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.4", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "15", + "inital_travel_speed": "25", + "initial_layer_infill_speed": "15", + "outer_wall_speed": "25", + "inner_wall_speed": "25", + "internal_solid_infill_speed": "50", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "50", + "travel_speed": "100", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Creality CR-M4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/process/0.15mm Detail @Creality CR-M4.json b/resources/profiles/Creality/process/0.15mm Detail @Creality CR-M4.json new file mode 100644 index 00000000000..10711b00cfa --- /dev/null +++ b/resources/profiles/Creality/process/0.15mm Detail @Creality CR-M4.json @@ -0,0 +1,103 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Detail @Creality CR-M4", + "from": "system", + "inherits": "fdm_process_creality_common", + "instantiation": "true", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "4", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "bridge_speed": "15", + "brim_width": ".4", + "brim_object_gap": "0.1", + "default_acceleration": "500", + "top_surface_acceleration": "500", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.4", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "500", + "travel_acceleration": "700", + "inner_wall_acceleration": "500", + "initial_layer_line_width": "0.44", + "initial_layer_print_height": "0.15", + "infill_combination": "0", + "sparse_infill_line_width": "0.4", + "infill_wall_overlap": "30%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.1", + "ironing_speed": "20", + "ironing_type": "no ironing", + "layer_height": "0.15", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "35", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.4", + "wall_loops": "2", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "3", + "skirt_height": "1", + "skirt_loops": "1", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.4", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.4", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "1.33", + "support_interface_speed": "25", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "60", + "support_threshold_angle": "60", + "support_object_xy_distance": "0.8", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.4", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "initial_layer_speed": "15", + "inital_travel_speed": "25", + "initial_layer_infill_speed": "15", + "outer_wall_speed": "25", + "inner_wall_speed": "25", + "internal_solid_infill_speed": "50", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "50", + "travel_speed": "100", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Creality CR-M4 0.4 nozzle" + ] +} diff --git a/resources/profiles/Creality/process/0.20mm Standard @Creality CR-M4.json b/resources/profiles/Creality/process/0.20mm Standard @Creality CR-M4.json new file mode 100644 index 00000000000..bf0484a2c9d --- /dev/null +++ b/resources/profiles/Creality/process/0.20mm Standard @Creality CR-M4.json @@ -0,0 +1,103 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Creality CR-M4", + "from": "system", + "inherits": "fdm_process_creality_common", + "instantiation": "true", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "bridge_speed": "15", + "brim_width": ".4", + "brim_object_gap": "0.1", + "default_acceleration": "500", + "top_surface_acceleration": "500", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.4", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_acceleration": "500", + "travel_acceleration": "700", + "inner_wall_acceleration": "500", + "initial_layer_line_width": "0.44", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.4", + "infill_wall_overlap": "30%", + "interface_shells": "0", + "ironing_flow": "10%", + "ironing_spacing": "0.1", + "ironing_speed": "20", + "ironing_type": "no ironing", + "layer_height": "0.2", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "50", + "overhang_3_4_speed": "35", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.4", + "wall_loops": "2", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "3", + "skirt_height": "1", + "skirt_loops": "1", + "minimum_sparse_infill_area": "15", + "internal_solid_infill_line_width": "0.4", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "default", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.2", + "support_filament": "0", + "support_line_width": "0.4", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "2", + "support_interface_bottom_layers": "2", + "support_interface_spacing": "1.33", + "support_interface_speed": "25", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_speed": "60", + "support_threshold_angle": "60", + "support_object_xy_distance": "0.8", + "tree_support_branch_angle": "45", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_surface_line_width": "0.4", + "top_shell_layers": "3", + "top_shell_thickness": "0.8", + "initial_layer_speed": "15", + "inital_travel_speed": "25", + "initial_layer_infill_speed": "15", + "outer_wall_speed": "25", + "inner_wall_speed": "25", + "internal_solid_infill_speed": "50", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "50", + "travel_speed": "100", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Creality CR-M4 0.4 nozzle" + ] +} From fada134391773091155facfbb49764be78cdbba7 Mon Sep 17 00:00:00 2001 From: cochcoder <103969142+cochcoder@users.noreply.github.com> Date: Sun, 6 Oct 2024 15:25:24 -0400 Subject: [PATCH 60/64] Bug fixes --- resources/profiles/Creality.json | 2 +- .../profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/Creality.json b/resources/profiles/Creality.json index 780096b2b7c..068cb4ca82c 100644 --- a/resources/profiles/Creality.json +++ b/resources/profiles/Creality.json @@ -1400,7 +1400,7 @@ }, { "name": "Creality CR-M4 0.4 nozzle", - "sub_path": "process/Creality CR-M4 0.4 nozzle.json" + "sub_path": "machine/Creality CR-M4 0.4 nozzle.json" }, { "name": "Creality Ender-3 V2 0.4 nozzle", diff --git a/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json index 5e28d7de6e6..e552611f8ba 100644 --- a/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-M4 0.4 nozzle.json @@ -11,7 +11,7 @@ "default_filament_profile": [ "Creality Generic PLA" ], - "default_print_profile": "", + "default_print_profile": "0.20mm Standard @Creality CR-M4", "nozzle_diameter": [ "0.4" ], From 0bf2b9dcff69fd3e60dcf3fa28d83cd16d508175 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 7 Oct 2024 14:34:08 +0800 Subject: [PATCH 61/64] respect "Enable Filament ramming" option --- src/libslic3r/GCode/WipeTower2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libslic3r/GCode/WipeTower2.cpp b/src/libslic3r/GCode/WipeTower2.cpp index 67ffb9eb513..9e9e8ea22e8 100644 --- a/src/libslic3r/GCode/WipeTower2.cpp +++ b/src/libslic3r/GCode/WipeTower2.cpp @@ -1127,7 +1127,7 @@ void WipeTower2::toolchange_Load( WipeTowerWriter2 &writer, const WipeTower::box_coordinates &cleaning_box) { - if (m_semm && (m_parking_pos_retraction != 0 || m_extra_loading_move != 0)) { + if (m_semm && m_enable_filament_ramming && (m_parking_pos_retraction != 0 || m_extra_loading_move != 0)) { float xl = cleaning_box.ld.x() + m_perimeter_width * 0.75f; float xr = cleaning_box.rd.x() - m_perimeter_width * 0.75f; float oldx = writer.x(); // the nozzle is in place to do the first wiping moves, we will remember the position From 1c43b2902c2d506b03e7f40693b86548adcbe357 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 7 Oct 2024 18:10:14 +0800 Subject: [PATCH 62/64] fix a build error --- src/OrcaSlicer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index c0100b3b2f7..dc140e26295 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -3584,7 +3584,7 @@ int CLI::run(int argc, char **argv) for (auto &model : m_models) for (auto &o : model.objects) // this affects volumes: - o->scale(ratio)); + o->scale(ratio); } else if (opt_key == "scale_to_fit") { const Vec3d &opt = m_config.opt(opt_key)->value; if (opt.x() <= 0 || opt.y() <= 0 || opt.z() <= 0) { From 2cc44feb66386e58e8c589fa2c2943250dc6c5a4 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 8 Oct 2024 00:03:23 +0800 Subject: [PATCH 63/64] bump version to 2.2.0-rc --- version.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.inc b/version.inc index 07b3c348624..983f3250b79 100644 --- a/version.inc +++ b/version.inc @@ -10,7 +10,7 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "0") endif() -set(SoftFever_VERSION "2.2.0-beta2") +set(SoftFever_VERSION "2.2.0-rc") string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" SoftFever_VERSION_MATCH ${SoftFever_VERSION}) set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) From eb195da54611782c17c2cbf15d47780b4b4d3292 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 8 Oct 2024 18:09:03 +0800 Subject: [PATCH 64/64] Better way to find exe path --- src/slic3r/GUI/GUI_App.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 937d1d9b91b..4415118af5d 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1908,9 +1908,18 @@ void GUI_App::init_app_config() // Mac : "~/Library/Application Support/Slic3r" if (data_dir().empty()) { - // Orca: check if data_dir folder exists in application folder - // use it if it exists - boost::filesystem::path app_data_dir_path = boost::filesystem::current_path() / "data_dir"; + // Orca: check if data_dir folder exists in application folder use it if it exists + // Note:wxStandardPaths::Get().GetExecutablePath() return following paths + // Unix: /usr/local/bin/exename + // Windows: "C:\Programs\AppFolder\exename.exe" + // Mac: /Applications/exename.app/Contents/MacOS/exename + // TODO: have no idea what to do with Linux bundles + auto _app_folder = boost::filesystem::path(wxStandardPaths::Get().GetExecutablePath().ToUTF8().data()).parent_path(); +#ifdef __APPLE__ + // On macOS, the executable is inside the .app bundle. + _app_folder = _app_folder.parent_path().parent_path().parent_path(); +#endif + boost::filesystem::path app_data_dir_path = _app_folder / "data_dir"; if (boost::filesystem::exists(app_data_dir_path)) { set_data_dir(app_data_dir_path.string()); }

  3. #ABOK5~#ev;%==L&U>ef9X3AuX0 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Ėn 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 diff --git a/resources/profiles/Snapmaker/Snapmaker A350 Dual_cover.png b/resources/profiles/Snapmaker/Snapmaker A350 Dual_cover.png index 9400dd45fbaa86a3936d526700fc21a001910d63..eaf572c05286d621dfa238a57f4c73c7e5013c38 100644 GIT binary patch literal 240339 zcmeEt)mvNL_BAz1af+58MG7ri+@VE_7Yhz8!GgO(N-1u|-6cqI_o4xUySoKf0smfe?+Naal>50h$KG}w1b8g)xZEMC!ka-n-w{^=v{cF-F@ zgv`gwzZ{nX*X%=oIVeoY@OZapdMYcPeD4V>$NqvYiy<5KjlMdwWO6auqpb9Bcekjt zh3RS_=(>gPXvuZ?wf1ChRbEkX8})}KPC7bJUzlO@QB&K|g8?mSQUCk>F9QFI!2crf zzX<&Qi-6nBw_|2BwC1PFXJI}QFL5c%59aI2*2NgMxAB~8n@>hI#`f2Yq04(UI?j{a z^K|3sR!!f>86DIlb6Pp_O%%NCEhqG543-y;4I|N?WxIHeBqt>uPC3`rR62k+Ee$>I z?=$ZE%-Dv~Y|&*91s7M-*La~~&(P35eR_uWm#4F7>7uk@x_N65OINq}@gj<@ZWtJs zRJb?g)TGZo?uap| zvy`?Qz~i_bx5s3Z&{49m!v>pU`xlv&>c2P zVYkG~{Y8lfgUEm!U($hR>=u+fwOMD|L!+B;IJXFwqRe4)im7RSGa1#`U0Gdi?Z#PnIF62?E_AX+19F3|-{>UUr)wk6#{>zC=UAFh@hXhIFTkcn-uU zi!LI=ukOhg-L6S)`!cRy=@_(1j;`ssYglx9tk!qPcdq^bY9=7|XU7fdBbtL2aVL!- zX^o|Ma|5(@BUzoaVcXl=hz|cVr^5wp@^EPf5t0>__?z0F=C~b6FStTaib=x^H;l(bz)oS%r@Jbzd>yl=36927gHp1&?eMgKWB8rr?s znrGWpAa1It_lah@&n*IAX0~Mx@(vfhBF(ty;Md~N!cPEVx|plS$&2&I>c+5=4TxMV z$RBx3M~+M2i7A9)dG1gixe0lngc@cVUi)X{)YND+ES~!nl5$+9cUluKA?Q;VHM*RT z)5Lfy_cv#%g*J5-$!Tf%-Q7~|*Y~lrIxpl|hR;<_q)&Lt z)4bFBib!wCqTY(^0nzOpZCnq&0u#EQb8^IjSctb?R|i6$hAF%QM3E1u3hDqp?erqQb9{p!3$&78xsjZDRCvt->XG4$GmL|Q;s|3M}D{75k2 z@HitfQY^0w@?bf++R4{q@9w@%15q|RnMN(nmaPDl=mzPw2CQbP64dfTltpp#R|;8r z@V)phxK{7bz(Aieu8ahGEF;37)F2ZCOV0_U_UQ`U#%WmE+G41gFDY=9qTHTeEKKc` z8gn!c!Rk2_QqRi!sekVLctQ>NB6@uaEY`>naNM<)^m~TXHG~;bqoKXce1f*}$U8M< zsuvWI;I2=Tob#Jk?;!8Jx#H_7l??~~n?6QrwaBxtMI+SrD|g-U2b&(p{CCWiu8oVh zuc!ig)P&U4Vwh6_+OVeLpd0(Bj7>=VoL5D_FYasjKl^`v(I3ZLX|Au?smNlQz(s3<;zN0uPv{0!ti ztU}MoK?OS0^AKK-9DL`SL6@^0S$`c=dRZO#-`DVTDnFjH4=#C~wIBLEyVF(VvJx^A zI&cxGDgOv5m@M*i)>qbGT#9uyH1@{);Z9o%NhWQdO84iRs%H^SMjD0dwsn>Y2hDosH^P<($omq-FAI(1X=XHqMECMfHMp;k@Nok{z*M^@rGQM2B1K{ z@7{+UQd~1sV_jX(S=okEW}P3yX9TQhDyv=7Nv>EF+Tx&9|{F$3&~pUSyneR(1@qn zj@jmeACZ1zL2m9hv}r<~@s%YxzmGxb2=kXwj~yK-e8C@Sf|Ir$_okSc=0n^*&LoRm ztR?wF?n58Xbj6O5SBhRR*VZIlN}xzu{efx?mEW2y z6y8)BI+&O!qBAKdI2BIs^<}@Ao+)xY#90Pgty{vYhGg$jyiXIM@*r+FJm5!9M0`=evNgB<^mfg?6pq}bhh+qwKB zyvc18b<^M9IbANidE;}Oh3EZS{6*i_rpfHXuH3Nu&Bz$W3@A{4yrgbfsjP7mScv9m zOrlJBw#T9UNPRf7-LF<`Gak;js8Hf^AZ9yyd&^{PZ42KqAeo_qh@7Zf_`SxnSdlfg z^vPPBo5>w4!ASy=hz5*}bP*2nKD6EQYXX1%-eLmk-3!R=MF>TV%r7HxAwnr7uB~T* z%Zqy#byPmr?FV>}>rTTqx07>rDiIH&PSU^5fnrM7x_Jv4UOhtA`0ZZpei{y)tMXFt zJe(4wRVn&7akw{|fl019yvCeqwLl$%>J}-Iwc--H{bS9HU<@Y zkeyo)-sGDXj@^u2FfeiG7RIyy$t7Qlz1%^0HTyF8aQYoXZ)SIPh z&rXD0I>aT(oa4%bhdo_dTFTu{7h(uSkhWgCx1n8{&>x|0=zgOq8`p<5ei^88M)ukE zaGx<}Db-o;H!9+RIu)1Os<)=A3rEVt>%Bm17Ta`wRd<3^Q`l=D?y zW%A9M+_+%2U3jNTe-?9IdBhdWD2cBz1pwf@`KTbY5PRe*$U5tlA?O^9OVR9`4nb-s zr&C+=*xY)q?$}`>Tw9s|I0dDOechO0W#7}F(-y%>@ zR)iaw0|4YFH7oj~I`SBA^PW4aqh&b^w#pk+-%K2XA|Y{0XX#g8H15wb9w`)+F7xrI zgzvKk2cgJSJO2CE28SyiYdtM>iw?-YFDgD;fyH2=)fqHIKz4EPS4OVr{U(s?c6jK zi4f_Ptlo&C7g=`YIsp-hx#HcY7bv#{mHVvdDo(oyZK?a7oQF=}5eQ z-wq9deCW+?k1>!_d4z{S*EFLN#Ut*cTjVv?+st-nf6|;lTKxk znS`AHKfdvW1=WWQEnAauy@J3_QH_4+J` zLkqHG+v-`_*ks37ms;*jvhD$p^|s#=;hUSpvIpPxo*QNe?cF_yf~Q}1UpFPLsl*LM z>~xc*+@wIZ`bXOu1g%5V22alP2txUk%I$yb;j$|+&sM7rs51z(roBoU;Nm*t77^K& zy7&_DA!!TRq_%YIAmzq?{_|?zo}l#sS#1^4kZpbNHRXAyeUDjeJxBc}->BDojKRc` z!&%A1p~6?lm~Byt@1udDBbFMA6WF5Y$hM5}=oL#CBctD^tt-rQQ!?5QmbYihUfRh& zp!c3HAP2U|K4;4?}yjYy8bQukPGN|H^976MRE~0~g{^U2g01U7J z)ctk1@hc09RH)Lu6>)q(`}@XhhHFr=WZY3hljq_jC4tF2&eM_wApo2n1a#C&!|l^X!H8ZW>37w0%%i| zk9LjTU>a&0!!iJ3QhL`^Y0NzYF~+?PT(89f?Kclf@#j9&GHcE=H&3)X%dA_7P8Bhw ze^|4qj>~T{eiJbj!p%{hH51GXWHpm)79=Fc0f2Y0e1{KQQW|3@cb(=D-o9mkeVxyL z519}~D(~4AN6p7^eRs%A*;tMc(?oc~tpTA7;{UL>C6T$3 zq2JxbK`TXMN-I_*e}zAGACNuK`%9d~0_^1J2Y(0A*8jnVKJp8A&+iz2MhaZYp3*Wy zlhk;v@fVwa3=gySgIb*sKi$gC4jMV;rOA(@1BAl-A%8oblnO}?0be7`tw-IO&U$&G z%Y>u%)WMzLkP66DVV+#^-{={d3gK1GV)15GjfH}p&Ak&(S&A#g?l-yhu5p;|qsBX9 zGe_6QVf(gebM=xdDR0yL>hZz{qp`WqBmIf_Pzi{!qu*JUrRvSQ6|z6Y{rxz^;y6NY zHal#hs|(jU#8rnaezUxB?jVZyJ?|QL!>zdKuu+pC>cq%vwZq+Gw-8qC8^!+pwa5FH#lE!bZw@+8*F-fW8??7AHAbWCA z2FY<+qZYa(TJ+eX1QRGd6~TdA%R^lxKKbq8lA>ef=M;mjZu^NiqAG?z^Zxa339%-O zexT~E!kM-oDl(x}4=d3r(R*DRe@d2XmjL`jpHEhrodH{43UA}vuxLo<7_)Q$axatO zxrP9YYpuIGJT|3|QS~FL+&WzCw&ywxjbTYBt+wN@Q2&jb5BtN`Gf4dGtGJ15@xZPL zTS&YAwwswn&vh?nt-al|@v*hniWg9@herT#8ffn0ldfZsSmo>|b?^J^CF1&In?5}P z`qqM5|5WLvvI~bO>+;@=kz%>skGMPJ}7l-Bd(sN7C~JR^imWZFxb>6KFgdNa3<1MYC~)PQSk z1eq2;>R>(fAk8Q!lxf%eA|z>Vj)sXNxmtbnCFRw6ZY2dCpJ?aXbPq~p*v$9&Okrz& zT*DQWrPL)3K0ak-;Ty8>0EyuGHDf%It>$k%t61{#p7glv#?x~NRDUWvuadewXT(XO74a;t8aHj|wD-%Dh$TP;Q4>_49K!wi?Nt;$TJXW8=Y+{)o2f z>-cWnLhQodapOgrrla~d4IkDwI$kP^r>3Oj#6S&xg9Es#9LEy7;>@Vd|E@JG?~S8K z?%ke^Mdiz2SfxTmBWHJKn7)CzbuKE}xR*lP)1Kw}+=6f4!9*L4<1m8XD4weEld=L7 zE&k%H@mm#a@=iRZ6;J*7JHDEViG|Dq8@L@*!$%Z$8o0J$HPT@Df4+tOi8!4l|Hh$o zK{_;UbRDizt@GRxNPcPkMatP+*m!lJ_jjHgJ6@e;oS*J{^*jK8d7c5jmKdS7@2F2P zpXN1tTkq7LrQWs&^buufWxQc8#{5T~L=h&OX>c9m<)OeA&-lx`?lM-FU|9M!X3K5* z^yu1{=-h%<&gNujvDqFD(%@2JDp zJ08x_u*<`^fOa*gQg6-m9eb;r_^(S;%>cJfy)-;~Z|{Tq@{$^ReDHqw^jB3NmCsk+ zr&q1FqPs2(1wx}yM->{z9v1QGqPGKD6Nx4A2(otZELl=oixel8 zi11yuqOSHe0=g}16G|#(xc}R!hvHn2q@{GVk@}pvf~K|X`z1n!M#I4!jL6~WRBt)O zFizpTSAIa_nV8gvpD+LO@pyZh%-f`N^4iZ~hnF|AQpsuQR~_fl+GOroYyBg;bDXRL z`#Cii#DYF+?MRJRZ>sI%NV*;CsQCssHW)izqOMC??Qo$?^4+EG<+v(<+ct zBQDyu|GglXLLnhg&(ueGWnHKT9;_8Hx$D4W^da%UEx$QuCh)t{>#V3<7yQey?DuuL zg)l*EAI#xUeAi3&j z2CgNNSM4a6hIKa93Tlt2&U~CRQZ*xL%euAd79@}X!9aRGdeHk9qm)c-EH-<6dp~;ydkN_Cyf)_N$XoOA}D@#V^BArgG$qp!8(fk_REi~Gpp*B zTHpBU&{b(7fVdUEWm$~il*C5y$>nowvAUgH>qAr|I6>oYG7vi0-H|IwRShUsDGR7w_O3fVsK2r#z zRGBxSjNIG3Jr2Al>Qy8x6e}jMHt#FjHe|29jE}jCP2=+61R*k;%WODR>~>=mn*Mf9 z_$D~g$G&pXg7FC@GtBD^^{|zz+%uq77&#PaMBK~Z7F{JaiyoQ~al@-I!%{VZo5jcW z>MXH+UEy3UK|(bQxgK(|$krq@_Um);5td+hd2dt#NO$O$hTwAs^;TBl{}kz=$H6lU zY0{Ic81}Tif28MsX@(8(f_ZS%5*GG*|z5ttg z1jNUafPHMzNfJmF2KLhr9#7jE<3#V0hQ~CiZ;B*`oaek7o4tl?e^KJp)|$_xe-(Nj zx~dZ)RZ0@6*K374x$E`5kvn&y@FTCi`P-wvF@rz(#)Uc5d8bl07l78yXD#%D79Sk4 z6l-k+7WH02YKWg0;+oU6u)8-oBzJL;Yd3TLOI_-Y_cAC$(y~fVKj>pZHU0AFl*!g# zO!q{!jM5cO7?4FK`xeZO3?$I)t%3Cn_-F41S~oJMi`9KCx;nIYUv*XI`uDhfXNB~VHTnWtDw%zy>${WGNE22OfLc$tWoM4!5#amox0uKir_25q8PyOs zx@S*t(9ouzmSw6eO@0yX%Hk2#j5n&~nzfo9@qMMLPX%b$dvR?37As@4xu`xOKu-0N zU7lj8H(#x6V=cEbdn2y#66PJh^^O8=La%wRO&G}8#lR2)3kZA?8t~#d)5wa640N%f zH<(vXKYd4OtoW!YrScEhrSf7A&VCO-(FL9Zp z`EIz`Z-;!(T063k7@3lwW%YM#=tSKU;Za&GyH2`=a};9J&u%Q##Mc>S>)$387sW-~ z$T?<=j}T#Mk5)7eQg^OmP@!6D_2_P!+ysL2zjCo+gac{gYt%B>@fwONvU6Rq6Np(g z-P3pv1xnE5=?r75K1g@UPKJtv4K>c-sk`wkMo965>~uug*C>AK=5V3YPYoBI;%ur_ zcv^nqbK{|1BhUxkH37hg(^4O$$MtsCgmuLIUj|xr)S4a!q02#TGNKo z#AIL@o@@%2R_bIa`!qJWpWP&D9;ri@fcj7>bb?$Kbw8aUU2S>9$KY}FJngTdh0*nK z7=1goTTWDmc?Fp4Uvk|ZdkKL*TbQt=-{k#@Fpt4qTgc_o%sTl>o~r-ipN&L;qwJzh zcrSZ(bO(V*7ws>7L1*SyBy-qgt$fkLAk08V?c7tH4}GLP<~fl)V8n$^iQK7C&f-to z3}qUa#ktby8rVg>w4eEAJL}=c=P=6`a~n#KhA`r)bUEN^I1%n~<@)k{iecl%wR%?{`8|9Y>%b z^`11}-fHXp`l-;*Cn}E z8*vkxRr9)M5jA~@0qv_kQ_aEh`s4l%k|!IAl#dIMmzO0Pl2#MaBj5U}AQrPFRa-)a z;;`^!(+R8E`>m+qzgE_`JL}YsgmViEnd4Apl{UU&LjIKBh{Fzh8;ud55?|V!I^Yjk z95)dIR<&N+EAd2=YU%mDT#4E904~iju2sGv`&d_f4Gs>S=lpqf3A8FXsZY{5iygCZ zH(P8hBsa2T!xyf;azXtPmzStApZ;h6WWGq_5*rmtBl4mT1~iI_ zjF6W2<;^~oh8)K7+nBX#w%nQ_fjRBhMi%BW&J7eI6qCpDjP_ayT;@3+>oyy zj3nFZ68w{gFtNwYWjA>!*U2TG_XghW_HdfWX>DDLpGS+R_ihYC4ssm$*koni;CsB} zxl|zW>yNZ*qmwk_Z2p>ko}Wm#dUVN*;F@-JVs1=8Q6ft?Jjh(&@Ir9x%f3!@{kqF_ zIt(4!%gCUu5XNK~li$=OF`XNmCg<8~|LpKZE0-zYzXbjyc*?nRy;M=qa!ZWuKfBQ)OmPoB-ZU##BkW;=gRnf;ZAWz}c0+z3t*%K&7 z8Uiqivzx?382Yg|kKUlt{FrmykNS2+EHOp@elODJ;5#{X9YV(E9A*x343D4|lLG+u zHoAE(q`5%Zu3aDaHs2}@N+uxD7ct2 zrLv$-k~Q#@1CP=Nz}%^@G2SP${rj8KYBMtw`wK0w0=UtRjjZ6fI>i2t%cR56k$wYp;xK*)qa=P znERz|ZfFeby=LIgA45=^@vaWl)h)!V@PqPw@{q|WrOc^xg(yQ57PHK~lUW}>+c6DA z=DD)k>jUu9`rEn&RbWmqelx|3YAo;|g#_#dv1hp_c%S?3r!yEVrs(1+xFo8yqVVz) z)vxSl>Ixh@d8k6L$}VJrQpD78oFfku<4IZM5?7hp4X|E}P)NJ?|1d|{KO=Xe-4}u4 zw{o?`b|mmnC#q(3ZEuSBfBWI&qj6=4-7_9ftW&t%S+uCNSol;Yal*y@VKYhP3^InG ziWP?{l@h3RPB<-Ff5ltYC~XhjwXCTCI;Fn%2mRnz>_zJ9%glBHwt}zhb0E?(g3X^v zzZE}y>!n_n+s0F`w3K=uDlqeIf^opqhq8U}@wC?li7~k?7Xhz8KAG?RlI5Mu{)M{_}0lU5eH04V>nBsvCdy4 z1PmcB5sfq1(ehsN=K+SvJEHRe!e=uI-}3?b!4#UFxPsUn=CW`Vs$<$v)`kt3X`dC3 zVoUH=2NAkEibW!53#1#bYz?J3B~ ztKa^BgBXkYRCT$TOeZO!WvF)For!rzGi(P8v#aF`}_Eh83sg z(F(PsauS^-C<-!k@>spjIl(WY@8&4BzEqGQpsLHxpDNQZ(Zxh=F-a@j!o@*$_zlu@ z$41YN%=s|^HZ>86MrvspictRbXJTY&V;i>e4H$2@=CUl8dduXv<9ep*Gh32A4g|n;*`4EG#%6)rYzt4 zc^)-93?UgsFM_+Xu{^jO3jseI)ZY&Ni%Odsld16bmYMBU>!c5va{kq#L>! zpT{~PsZ27-qKusW{YbGSBbG@TmBBBD4s11@`!vo8*9K`q8hk>7erfeLYi+EYBcS0j1)2MpIb4lG# zjdU!glm6#VewN8H)ZS|{_s9#FN6dq!vf|ZM`I?C93AQ&v-Y|dOrX__%h0beQc+AQ^2e|#T;dgmR8wC3krkcIhqk*w+r6uN$lk;m>0F8> zPDzQ4YTbC=MUA3+8lS0T6&KbmCNH8lh$DQ;mI+X@0Oa6c1lkwoQJI80S=DqT+T^$o zYZQpX2FWodjN6{u;fA_Fp^C` zp67UCmoUhZK~u97VTxEEy>7n>6(7%-hZ@8hAC(qYe@x>hC3C+6uuZ? z=G`yB`0jLP#vozz8XkL~cbcVjH3o#fp)-zX8!#)!;IPE#Hx!vGt z9=kWAa919Q-PI=iJ=L;pc4(m(%gz?>f4MS(B5*;Q?>}d_}Pq93&@|n=~TL z2aDMKEuJ&zZykc*868>Go1=nC;^olQSz6!bQThSJUq@gX0ocqeW%nnY$-POb{m$Qa z;chy7RQn^h=c!`#4c83zvpjxA^wKDFSvMJD)fY9SfU&cfvv`QTd|d+Zr$X+MhLm1+ zh<-0hEzcV7nOPQHQjLqIljh_vh z|BzAT7o#jdD)Q^b%f7#X$!4~zUmxcQPO0{xu)}t6r0`9Y=WvD?J3txoN404@FPKd; z2WtM^Cz5o^ThQ~eyF%2LUR3{3xwrF{yGY63LZQAdM?zN8q4aw9?#Z^$UQe>fpfvM5 z9c2aUxMV~2pQ|CWq%R^9_Jr0>gdm5aUqweIQei;|uLFO6hwY>&wxQD#b?&s24|k6NMe^ z#Q{@BB@T{s$U^>8PM_EPlFX30kTe6_teCeB;NSEF$6}EnNv2A7j^G;q_RSY&a!hGKd3K{%lLO zrdq84O2xcJCF0!1(R~{A!vGeel5k9|myO`UC?U0;fbf_X>q%L$E;+M%yqNk>BW?;98;*WfMgEFg^X7Wj{_kuC z-B^&tOK_O}u1diesOX#*K)j;V?dEeg0vhc`WUjWr@>9(j32_D5lJ$sAR|RrUR(L1= z+_-HixYvYb{ZoTYqm^Yci1Wo_s*oG}E>>?RwEj@MRj!oh`>wFBSI(rr@Jl!nW}f#& zFiCvH^m zAEj9T@^IF&2uPX3`(-%8T*6Ajii|nrgvZ{gR$kONh0sx9w2HAdh~m+_m_hxw+VH2P z*eyk<60XJ*YxM)A@Z)7CnzI*2Xp>Y>!QXJxVpta)S`sOofP;t?dqSY7IBH+yokL1Y6iP6 z%FRmbj+Y^F_Nhj_b(CG7E=>abYm_F-9lpUKQ#R1CF5maP#lo?lt)dleR4c(4VWHM) zsCKAje3jWS`7DM7u>f_wy_#+wPT33~RVS;uk$G(@pvNGFA<)97DoeQLW04N$dUzdo z`e^DfXZTnE9~In%Tds~kszq;D3V{AjNP6i#tnSAG{(z5}PunV}LDev6a&$#{*>>&h zHdLGV)8vp_+$h@+f;sc1Y?MXMKC^fJ~vT>8CRgniiXZg|HM}RuUEgE zHS%n3CoqXC^$OqMz`DITh)nK%O>k(4D}X$$z49OxN~RGNv||$wIYE{I3Wz_M(DC4W zQ_oeh_uZv438`&r>q*bEs=6f)SO==f#m2%mH0;!rHVdQnbckYZNMnD%y5xaq0(*NaGMwu-+oc2JHNob5<~@(LAdp|9WsIy_RcO6K4b^aj zg$OfY^C0j1yXsk9Egtb`X?{l{N!ARNkg!~fKbNmHWs8*X*PKbVK!7JuV3ARNRvV<0 zHxN^3_+-n%sYH#y?{O9}lE9C?AozdAicO7$#QagRMivE$m)=3Cj_&8Y-KOa}>~t4A zTPKb5>7W$BbIQ$rHPj2F6@mC{%RSdK@oCSRL8)nd8I2S@-B|7e;c-QAvQ0nA?MRc~ zrM7OVb+SE&KRwR);I@1-Kc(u-^ZB+tG<9J_W7BG*Y=AU$=S0vZ_@*j zf^|zSP27vtHZ~*X{Ma~d`?@xNcmaYZ?_eP9Acat~-ArE&S>I2P}>MA2olz=r2#t z2FJWfh(Gs5O;PsRIw^OJ7=Mh}z0P(o@xy&qyDV2GASKp;q62@u;C&hcZy%NjTcT?S zLR^w`&!m{Rs*oq^?=EP1VLnmWTESkdrz?!jEz?k&w!ZQ1uxT$J+=yK6d-l>My_@i?bEj%z=xE$M(1CK*6*Kt1l8<-+FCLp8$q&y9c>Cr=t?(NO?zal%G)A?0J8k zQ-EFl9O0(8^XN1Qe-&rF^r7ijsOmanT% zE)de|Zmr5@>A<)v`PV%7ODE}?mVxyWNS-$1um;4{;wRHE*3N8i^^Ls1sE9k8&m$}N zJ&t2vcvyZA42w?>QD~*K8g%ttmE3o7@H3T)R@WMh|N0zB)A^a$IQ+MfVJ; zEVB2wqK3p1+vd}aF;G{!o&Gd$9%uyu5W@b-_>vfSa%6RkU4HxY?BUxcOiT>z zTd|wI#~3z)<}byT%-kY8ig0)W*u*4hYI-{FR%rDFVql*FWn*t~+8OyiS7%E-I6N3d zx^vnx@nf$W;eWP`Ksi_a)-I^2{8BGI@W$ImLnXPADY*Io6OEJkMQ?(Cm_A7bZKMjj zw2ImWNlc_F;h(QfPqjCW9^&7aNpo?HlRwOiG3Z-koKq`{o#jrC8Kl+;(pu>{3)v8E zc-)YcVIDc!oQ5B9Cf4*F1Fa} zQQZXQc7dCBI;2K~#qxfVsKG3GL!V=Lr}HEzVgNyknCOe)=9q=Ts5~VNTvZVl)H$o) ztiH;6Dex`W5tjTZ9s6f!1?8U1qZQ_B`V=Z3T5UEg+K9+cX|8XTXX@pus#=%vW#&q* zQi|<&fTsN+j_u+O&fHuNd$jiC5U~i4b~EuEyu=~d>j7HS^vA8Iwc#O%j~}syD-O!0 zPXYcK9y?L&eM!{rRaUMhi6MoQX-#fAHqg#1p=7zEXDVHcO`1_S)Q<*Aj|TT=gXILF zvc)FR!~;8?!EsgcaY{O|yWan{p-|n6{(@JauKH-T6hWTzt}F)o9}uY2YE6q-4GjVnI8H+Uc>hjaLk9~+8St4CX^%q` zHdOT@LYHZ|W=3YNcfWRHPluia*5a>x*w$l)-d!H$P+$8}E0l>KlU&>G3`2gHe&;81 zd*Gb`e%FQWoeWnV-w!U|U&&haD4LbCnL8GXD)|iZhUcK>&~O4fIXL!Q>WMB7MLyj( zg}&m?N~TD@4SRzQkCPTa=Qw!rar;AE$5Cc{_#aHm>9J+&96+e~G=|2ZT}oV#74qR2 zgoWcxPka#7LUccoLzC8Kr^CXKkib52J|Vp5aaIiDW!+q6q8bFnf!BH)RgNW7MiSq* zkqXJpzw{}MyEHGr!4~)r4#2OSV~r$!yUc8JOqT{#Im}%g^)SR}NU2KS3ot(w&`i=w zO<>|bCvT)T)f>$tc?_4GfThtpe-ds2@T2_7wd-(dDPJiH_v zhuLZ7UL#7cJBNs8HKzV7JJSVQL^rQ;GP`?wuNMuoW(2?5UxxV6oAbXZ zri4CK?Kc{V&wfi{+l(Ob*wbBB^6{fVnvwJ_oWtUOw||3Uozw=M8rUYYrM7*#!=o4p z>eYGi?%nFZ^g1Y#kMZ+y!06I_MMKSpTB6cqynuP`^9)C)cUVSC7*#Km+P1doB6Gm! zXTH}tDfF#nqLi_beFnB6B&JvB%2lSquyA=fn0@zh7JhGTx)llX`^OlhkBnk!c)_F< z%&dAu660U3MP7fBF3Hcx&yeFb8B|jiRwdU*`bVtjJtyX#|Eoa}8vo9G=`5Cjw1`ux zcWs4^I#SU!$8wOfL?@+J6dX?_k7|q56NPI0ujdQTep=N$rBr?bu-5q_ZbOaos8uyK z&IuqFxKL9g+G#()xygbYqi59mH_h{D`1XTSK}m==jjI6?PRA=x=9*l~LiXMzCnt|F z)G@Uv<&3Zur^*tg{7DFZvz(~`>J-n`H;1;+-J@akqRgGsVo1m8+R6?y`;Cj511ZGZ zt;O-N$7eXLgNsW#TY8&hmE*XMGq2`zMroSf$F_%BU9gP{u&932w6d{ME`iN3_Bn2$ zn{8m&r5dXL83R?ig-=V`-7OafSzj8ImD~*TO@S97RyL*MQ&aK4nv@Df@jiKdULW`C zWdCNWQ}?PO8H&&&C9{slMbk}>X5VlL)v@Kgos##(!_i}%mpG3?ls$Tg2&{1o9&MSm zvmz#IlGIKz+kZjVMEoNEIJk%A#Slpjq^6Q3uJpvpR3hs}xyvzUjmN_Df^CbSB}<1T zrzR8|3}v=A$7Ygry?Id8JSy-A?5_TT-zVz|=C)(==?-xvmT{-+u}Nsy%-7u&vS}K& zT}nS)v-O{9`3q91Z)uTDU_Z;Cr|&pkj_Y=UL4+?R2-hfW>ii}_mD7awjn!tsmn;Va zpIgk1s0zPT^_qUSR=5;>c>)mbP`P-c7~jVz<3c}DAoZ57U4@*}VOn3Nc_b|+zhj4T zE8w%uTjMOIxHXpp>Ujg%E;4NC>eX&mtV5hfFOc7AK56&K-r%63j<$Z(b)({=i0tBV zLJ54^vbv__9q`q>7aakG%=09o&mU5LG11%U>3@u5oYyOveoL6c%6#K_Tz{}6nIX6+ zyQ_TJ6~HOh_QiGCJCgKtUR4EG4e!ieA6M;_pLX&&MpuL?)k6R`K!Rlm#(R9wTADFZ!}lPQ=kNL{)3W2fofTn zr^6~k!7iiE6*ZG26O|s5Iiwb&_2!}$F5S2i+1jUycpZ%8Gpv+C(VKcZ#(oMoz`Q4{ zl@Sa!lDfJq^qP{Ar6ufvku@fB3v3_wC$QZet0ndpS?*GmAXlYom$?wr-PMDFb2agCV^}Q@OvoPb-6juZq~l z%qzQh0TpUQXAkmRM({_fCc=r7)MyGsu#NH%`muE0o|OIcqfJA$FalC%{pda%YK%;V zY_p^{RQ!HKUnrkBF%*03c=dRfk%J=4fj&pi+Sq@JDLk7D&a z0qg3;OXymyDM~-(P9pS9iuOJ#vdl?H+MP|mRx@$M*!D{IUcgcW(SD**B`os0x79FV zx2Vh}dQ<&*xQXA5fF#29>3v--`5V|zyCS{=|D$uQD|7rb-RcTrD-26Z=IUmTsM=aS zdPBFj;hy?s#dTKJ;d#;OW@#O z$=7$NS!2O=B&ZY_5xVF=r&G8yST~kb`6!-;MiU63!*o@6OrtW#fKg*;3fFr3 zZxqvwrQ7?XQtF(-jX4bbcL_sHR3X)I-P0z@H2_kWW@Ht7viI9+fpaoVo<(iVY!$0t zKgFgrXEBwWy94E8A6nVFH$Z&_*;@&5qQKrO#Fy;dqf+sW6 z$I|K4V~H^48=kwkvhg*>xCM(!9V+PlV^W3wWN(W4{`pQ#&-lxFUJOr3rJaRvw-YMt zQt|bVS2CZgmTm&FSPwnHMjC^u5aKqC!8R#vBTnaz(@67%IaG&Dw0xLiLMg=*6eE@j ziLEmoe_bQ*9qHF%!t><~GW(g0{&o3lFR6>BOd9LAh#P6Hj>qFQ3_=RAdz@frD(9bj zTmG&MVU#xj06;+RG9xz{#bLTdOS~p!6r$FJK@VYZu9LUf6yhL8UyW?8LYD?+NyAY8 zVv@$G$Q-?!t`Io1qx$UViYbNhGrVDwg^6M``Fy?h6aAv5_RZ!~r=qO?D?mRL;#T=2Q;7Le7;UR1Bq z#^$OQaN8*kuY^6pT&eE&XXM|J-)ya}E*BF7iHdj*YE>=u{VyDnbZitKHV<>D6j5aiy5ap3JGbvbGzE`J6OUJjV?+4r< z$tD=y#023R>^U;^aAZRcyK|{R9eXdLO(rCSSn z<)PS|CtYdPD&9mKBOC=jd!?oF$>ZqS+@ORP{BGi3XD$b+m^4OSM577AG(_Cl-29og zYK4d#pDGz%HnsnQPIu;Mx<5y>?`FB)>2oLiZH>ggd-8>2bZPm57qoqvn_Hv<2M*DJ z{rkkT+ntz@*Bbkr&z`#|*J1m^RDW7N=U6rtbS?kEUf)_qW!IXGu1PR1Y#zBXD?VKv zS#LFEg2iN%zw8Y*+ItXuz*g-M9LcEDJ#|x271v9@h&U98pLf;Lfhv`5Cc`FGHj%~@ zqql85?sZccewRj@gJYsev{uCEN;z&x2bfU!`^Y9oeHZ)_bv$mXDosgbOU(B6HZ8BL zgoGY#CLHQP#{zpe7!uDy8QGDD?{nwRQsug|yu2XKt+Upl%gY!2rsxtqcl^oFW1*wP zYrhe>eECBA*Z%dt|E^B2KkKFabk%Op`4`g6V6;8o4BbMzT`zV!-97DYho{tZR##S@ zt6S#rR=av=Fc=Q}UCxe1TeJReJ3kl<7X2@Bp=!1E_}|sc9e3P!`qZiCzy9>o&m3P_ zxqRuXUw!cR{cUW%gy@FQ1^_@nzha*0$PT4KrPBdp9&^fNHC9i`x-fRvWl7^SsUvt$ zquBMAY05?ru0;8hu+CVuQ&_cm#D>KvGP2*Z5JxVTqf?Hro=%o%yuwD(q> zSV=Qg7W6cP2YS~l(0tM(Hjxsgjhod9XRyk;u}ze%(QQd)mmkATA|E#^w!J ze`=Z*W|wGdV^hwA?B9Qg?!D{v^wzh2H@)_CM`&?rMyk&7eDB1o$|EmQwvWRj+(N^KJHaa&CSiE)rkG04d3*&Ml9 zZp^K6GDi@?br@_U0ylfaLxH(T4Zo$&S%w@*%0=Ai7`;!mZkQZB7mwvi#d)xOh2N7Y zVkS9ZSq z-rx6(-=NI;$G+s>YZm;k@1lRwPxxQTv1T}Yer@gYbAI3O;>SMrXO|v)@Q*ejumJ!N z(AN=u!E8*5kjwF2E)G$lDhXyDeBC$|)arjWV~H7Ig>76@q;}-&=oDS&ViRGmK=UbD zS5(BD&Hm@HRYwJqoZ(MX5shX&H!1I#n-yc)hK;$tDoBDDlb~``-FEeq43h=vu8FSJ_7%f2W%F?BbB~u}Ov|Z$w=jabKm7Y(73}9X!O%fw>nU z?=|`PvBe^u7^)1VvjUFd5TkJXZEkE+r@cj;PK)}JQ`DL3N@9mJd`e7V%im8+s{7lU z+jMCENjh`pe2T=pymF3KS1w8;=f#Vs589U!M9n!40I7 zJ?i(SWDw89fe=IE>ZK{_$ZFWiE6YnZhetU8TxgY$!7E45ltRaW1!wlh-I$rG}#r z;nk>!u4EE#%-JoopLe8j6#ALc$YyPP())?0yPGBo3LOVrS~@fnSpS0M?Ob)-f^E7GqZBqe`W0w?OEJEwtLF4ZMc^-A%oHZdUJwCTs%@rZ4iZ&<1&{zar`hBn` zS-bmMGSb|rkghayI?eJ+*Gor-9&;h(qloB>gGx+{ht77XimDtUr&4Nc#@#p}E-^n(R-g5H5y4>FY5Cz;YdY(jO%M_v?f{H8zPnmgCTAC*JY#0B7BylaU*$5Z2#fdKfcXn ze_M5nz4hI?-=CUa+PiQ5*4u7>&E&+y+wXhb{cjrhJGgY|((z-*o_+4gCm%m^;K2T~ z?|tuY{RJx2000Q+ml2&#-89=q{D)Zqk_7j<1oD_($#;S8~n(B?$wG`NJ5FLKkC zHuE*HlfFq}IX4Q%?t7Ojai$Q@E)P_Z$LWehX!T%nm57NV+EAX1n7r85r2!3&%ZGl6 zCX}FeS3dhcLX0vrQT*C)y8oGDkJ4-J{SI2+Sf$6Fe30IF|66EsVv0__cucB-2ln46 zubs`!H4#y1Bzru|p)cGjCBp?PPo>UdYqJ;@rvzo+f1Y?rsY1&lOkP)2tkOmy9~&S; zW!uKA@vP#>=@mU(j`W5SmQVv(4hnGwNz z;J^(MA;?u>Zo2IC`clni(a&e1HdeQ2`SOYvt6pGlhm7z|7O>kJa(}fyWLdPb2ff>E z$z#5F@uD=2^1XA~3O6Eh4mWSaL=3O5i$EUuuh~k%B09YPwIueC6Hun6rl~*05rAB= z_K$0-M@xIcDEZ0Bo-~W{ee(0Pd zTlMd~|9AiTCO5WjY={q>g}C1cZ29N^Q~v9Jhj#}600i{Qgf@l5w@UJOtFdaF)uy6R z?5cNpDq$1`!Lu4F(M_CGsH1zM$JJ?veVkjuf;N0;lVTl{1Z)o4h%%rQ5-yztrxZG% z;v%Fvgr66IQst^sNa4r}zsac~hWo(KM7X<%&Mbr;i)pqn@aX3kP93AW?z~@w)!N!+ zdj5r@bmaE?4pP0CwoV1x{EpC!TM`8 z`#Xxu9iw!jB}pr^V&iDkV=re_ta^)^WD&8teN0I-Ri4Bdjs<qLq`!$TweUN`?qI?N6v;(_p1HY$T3ubC<>l2djgdt!Phi~Il*%q!IC#j4q;;s3hixAd6BE?$P1Ee`98FJi z1mG0)`%^SCGewI_OJdz%0n7q*!N}bpM0004fO;-a=)zr0dUKA7&u(5&^e1Ew!pVT9HrJvGKm}AI*m5z+HVB=9$PI(+FP@*@lg@}$ zGW4YiQz&@~Vy7(?WUffpb$BZLSi~;lAIsK8LqjjV*K2+cTl4pQT7D-Six<;WI8Lyt zyZ#M-k~$OFx;BvLy+$h5BmdsP&5!(=D)4x*lmWhkI zO{cz%3R}4)lkFJgbiq)x35zld+>i?3lBkvHk1Kttaqvkwepv6n7{WktD1;WPxuV63 z7p2)RHV6|H-c^e9;v$h>eNpq-eE~gcqQX==jir8nj`r?3NN3K!;04Sk-S(=x=?h=} zGdgqT1RXkfD;<08F*5IynqSLpo3Gc-FrFT(1XV_&B?yzVW@gKwqs zS|@)nZwQ?>Cu+`G*bq8bocJ(l5@6DoQS@-5AlWpEKKg|#9Xb+i5-DUaif9$BFP?sZ z_U${U)(x!=YXhN;uhFQigHn|DJM#$g? z&oOwFR>Nb{t<`}mq57SthQ?|;UzPKpQy+pJlYCLEe)EH2p*ugfNK^eOnx2`Wnduqo zPIRSVFHC+MX@z-68|ysAeNC(v{Joe)!os>Ex!NqQgY|=(4|%#`tpjOfpo(n5!@w3v z`S2gy%*Pes;jobn5m%b6TbExm+ty5;wHWL=`g^PE@VkowKMtocnoN=#IfDZ|G>lgI zH*o1Sl%qf?opC9n7sGpPBhTBv6?O3L004l1ez{bjt5!1{tvPO_p%|H^Dq5xy*zbyXx##8||tu-g|^)T+|BILafWWnO2kf?CBb1zSo?42c!*Mk~QvgDnyA z=PsP_0&-sbxvT3dQcY%y!(&f;mF~R#o=`b$g21m$6!kV`G{>D|Op%cxDRm{8(REbV zv0p(_J=9(itJ;-%nN6PhXH=|5kz8vPJXjd44laq8>mVidXz&K0E>e2Jb>mr~@LnQb zW$`wTXk~eY*4H+?sGbPv7m|F@rMa1DxlUcT#V*3lg?!)JV%r!<#hQC6*uJs3F{IVC zOWNS9afNb*psiM*O6*+WPgUjjipu1eJyWI2l9<)T&X}CSkC&_BuF*mQh3LN^u;Uo^ z*ud#@QxYN=Ne51e!N-mde~M=`$_n(K{^`f*GoSh7<;#~Z9K*W<0008|WkPSh-yA>r zJbm)dKSFPL;0My_Sdju1rNJdtk!(<<@>-6NE3L~`#cUWNVKprwCn$(t*%tmz>$GY# z45PkXl)kBGTnKfo{8f1xTl9}c!ERLSR63HJZ+E1XC3#FHR3`cJ7Qw=?+YAO?!rACg z4u7Nb=TCX@dy$UZ@mgA1+)vM)c#3X&)vM{y!Q1GokA99$o_tnB^wDR(Mo&EX6?*fx ze?Q%L!>#n}^N-Voi)ZQPn~rz^{WP68`3x=0?F}NzGhO~{%4Vs&sr?cly)5Xi@X|mfBvHA5U9-`OX_ign23(wNV#;P>Eu|4C^ z4L8%tQ_qXA-`d)i=C!r;%YHL(3w`mCFVNvbx6t0D{o(hJQa-dAY|1&GVdoeo1ct{i zLry4UOG`svs+5xmPPyE=6Sf-Q|9r|K}B_W*wiq-3ik{EY3 zTBA(rGnkuOqJsx+q~Z2JkHZmfplEev-3#gsslM_?LylK%WVCXoz~sab7aJ~{;5DW^ z@|}gZr1_Xo?Tx>;=ryO5t!;I{i$++cCgXetEN;B%|6=bwgDtzxE3t2%d*8b+$IdyS zbM8h14S)a%3Ivl#iQ}RrjWzOUBqzE`WtYn{RjR4-AA9T{_Me%mk)~>FYE&ax5=D`e z7(fC{afX+F`m*Y+6Z0|4az0d0gshP6N>Y1~_$A0g|b5FQ??e(p1E&2Yi;@pRF z4VBku<&E}05(ogU%$Z2%Y<PtgeAu zw=cu`wcE*|BiOaY_IJj+M1l?#7-a+8(w&}ay|5FEeCt%Ocm*D*aKcaK``F*d# znRCaXr@Id(r^ZOz`_lf;!S~oz0Rl~`gD zu2q#-SgYP1DkresQAEAqGaI?qC~zf^n#%RA27<-|ewAh6|BsE0y7zBofNEtCE>a0( zc-c>zK{10+@tjYB7k%(@587;q#TT+)$a%+YH-c?ECZ?1~I1P}zqhu2gU^DU@*XB(t zuaS9a3(3#WV_G!V%3doz*5+vL-{4~+*_fh=0|waMqA+Hjb@2Do=FM9VyZv$S+_}@m zH%T#yQH%mWKQ-_fYFSTDe>TuRKVssNh%K=piOl<0$UQdbo5{OYQ^}N-&H|IHrF3GL zvk==&E(9WIM)`%7i6L$$RQs_ z0O3!6`qQNg7baVudu~hnjvYIDcWv3w**kx*H%Xd3<#MH`t)=2HU{{X=K3(p}bTyjI z-m#I1?z87E_AHpcsHf7>+S}gM+EbmacGv3FN;4_7R;#trwTIWu^w~48)B#Hmh)DZj z2~=Y2^K}P^5kU9#&4;`9ufv*En_$J#XW;a?L-1(m9xPw}41wtjmruaH-Jc~{$IUyJ zVRU>5)~?(_O@^1RorZ0jo|A=G;y+rzE(-86Z^x*~haQ$$mi|mnPr^X|Jb3u%4!rcj z=b*c@7k>1UZ^N^DUV>FC*Tc8I`%RK54D|KW)6fnL|HjyG+ac48;Fx3;a$S1alUmnV@o~4-M~HhiRvvG( zqC-q;&=?!dNU@1%vGJPcMXHIs{d955;VP2!nPwDP1Ub*_$W25Ru137$l~Qg&d4vs4 zBUBNxVZm+1-3K49?m#S;2|XEE7QU0zVvxR*O3VZ&y2#I%t=EM^La)hx6RWP(GWkyP z5)WhYNvn~TS-~$aG(;Yf;c>*I#X8g)H6jWoC&zfPZXsV?fbiMRpFgwDz2EoTg5vdN zv-xK6HB^jZ6r%vpPr;alBGzDS+a1TqphW{k=i~7bbH#` zD%}nc^<-JI+Z}=)2l{%-E#++NHssD=s!^httTf0@uH^Swsr{K!{Zay>BPktf{6yKA~8BQ1Wr`@e;yHbpvh7R<2kFSFW9hE0Y)Ct1Ewve1KQ3 zcm|H1H~_~^enf!z;iJ3o8iHs@zHgXRI!MjmC|O zoPwD3BywwE4jO^JZyttl-7C69Cm=jdx==64YTC$3K_lOdrlYFFMfBc4)vN}k9HRcZ zhJd&>?S9zL8a3>741mEv76+JX?i$ckOWZe&W{nm^^+we#-fOuC+Ix&%yBXX1@Hx9C%D$xW4(rB33sO%}Ml!;seysMt3jS1K{1boVLTiLY8d(@ff zE``Q2{AnqdO^IgLzk3XDdwY9n-@bj7MT^$94G#9T&CE=7XPN2k?d_g7fBu5O!NGyS zB(eRFnI2P0dRtq|J#OFjG@8vG2V%P$jkM>{!=cUx4<1$8D(z)=e3I(SG#op69Hyrx zVP>`plj9RGg=uTk)1*s9fPi2DT@Vm3RVo$o*6r`_bN}{0XJ-fb>n>Wfi2g=L1WbcN zf8CxQ_jh}Rj-zUe4a9jk>P%ta{@r2F1UyL;p?}sn(ED)c4qUu^0yeGRLk)K~Ze4_x z%QnEucua&#eXX7E|~Jo{K1Z`rzPO@GD>b z4QcLU0NgfMp;tvFy2~vZG`1YK1Dohn@0@#2Wr#@@AhGtAgNks$Nt$PRO6nO>)oJU( zlC{km%EEr^)Oct$Jg6zQeWBS`p=s>0VF}QxJ{nz9Kx7r*o9K+!LTBFk&Pd;Z#ux^l zX_17P#LGr#+Y^Z^HyrAoS_S_=EIqeSVAy+^YzRRCwpdiMCYhtuGhvU(gTB!q&2>uB zu#CO~@SK>f&TzPkyRTNAmHV6iHjQ@Ig*;W@NY|ZkfJ>>Bj$fs{&0P!K?mKgyyPp?{ zEiJ9!t~K)MZm+b#rK@M)qr*Ri;Or7~-O=e58maNX7NZ!&C`JLGpOP^%n;A@q0Pq^Z z*ug-VuaW?1kO?%2Y_xPT*B{6L~GfU$(`9ImOGLbw#fjYR;>%`9hhbHs0}66 ze8Ur@Mn1+gG#hX|GYQh%6JaVfNou!ZEiK=#w5(TDWjwW!0)J zUE8~=VS%E@a8gj-u%=y?d5(OcIygK1}-wYj)xtC9%g zRq_OgFs6NCd>V#_N8rJO`!GH+1~V9lF*QTKBVb>%a+B8|Bk(DSCwE`(JQy5U1h?*9 zAr=~0W|0JJOM!V##0dm4^>&uU zW+{>AZC*X9^!+E@7AWnpoBwZ}>yL|&_H zj4lY!IYYi%)HTN%@1~88EDfqmHHpQ={e)i3)%py%bEFc%jZKNn7IPXPz8?Z&WQGw4 zQ^T@IL~#FB9Kh{p?}XM$8v$V?4bT@F7e*L6PT<)6;P*%ic|@0p%{HRT#`Be$G-*Lo zW?+n8XQdF5g8K^PHoADzuLNW4oT}Yp&4smM>McewictXQr(|?>bZ3vo$Gkg%f?Ev~ z0Bs@?c|}QsAJirbqE>kg0~ZY@K9;PX&^WHC$bVqVeFnpv)1E&?^1kk=PGUG zs(W0Y1E@W%k;7HmZnfd+aFhGMyg_1sySmyb@)#N4m8({8yl`6^0b!I%AUlll!)0NB zBUTI46wr7pLeYo%$(-Fw5QLB)@7OdgW^jAP#wXy>qen14KI(uU0^wk%IG{csdV0HQySp5CU%6rx^tsQ{(bfkaesGk*h=5gWB*XIq z_0Jz1{2|=9eUU(NU(Z>%j5c;l*~ae5_0upm_J~4P@G%!JpM<@;J_GXym%^R4lS$V#lBr7cD3O;YK@NETV5Qc^W%l-qYI;3)`2`@8oG*E=3_H*88thgm|XcR2srl zWD$@`V=Nd6Wueqi-gaHkqRJu@J3P9UZa+0J|Q_wyPl$_u> zgYpsFzwK=u4iL9d1*Fvh;}+WIt+YQ|sajCte`#UZ7CCOnKDLq558h%z@VUg&$T3L> z{OWgJ*5tO!%z=2?cPJCdO8&aSO~&n|iW&s1v+)Z$@JW<5TC^EcY5-)#>|2at6r%vp zPs5mkX*Z|ZR7;8Klgr=fN$~cPhM83KnHnBpRC6pdt4T7MF4!hZ87O6=$y?RB$+wJ? zQVZSo&;hiGsR_7q_clCu_=w#!DEy$wY*I6&MnD92s6E7g8+HDdBYtae?fONya_u6# z^RqW#r2|{LcRdej!;rRiWONi3PEPxd`u0kN80-H2`DVeQf&YE+f)#EuZinT|7Mh;k zP7Zo$qz)X`2r!OMj1ovh069K34kII@YaDp|?9{Xakh3)yA02bAH%r@r`wE#{{6Quc zLnBc4JJ8<`{R4flXz@G(x*ezq?&>1oTM-5rC;k>FZI0HCVxHr8b7fC8w!Ajm zB%82l2l5c0qds|jYyyTHfFBtdCeVknjmhyz`b-#S+>ihYeDAh4x9ycyV(L)BF)+{% zgYySq$>PP#Vq;8lUyr-Ljo3T1ctena8-&Si1hVCQ$3_u=4^cGpeFtzy-M(5dZ>a!g zj$%g0HavU}#;3-}L8G^Oz=7t|1d`FZ?$nu&;Qr7pVx+I#JWKx1&+qvqSh{$PJ6~?P z&oJ)p+Ya|1-hjLJZ@@F|HH-%Tq!3s?AK{(%uUIxn!0g+9{YP|; ze);oX7r>kN#beGJQe_t*k;7~I)t(UnCx@I!rAMU|_}nZce9~t(41`(sWJ0vK=v=r` z#4hOs7Ih(QY;fGs=0j>kG$DaB3KBt=5!8rluo9;ZYPF*cDlKiKBgbY-_J`(*3GO?* z9pw<%a7bF=QaERPQ=^dpD1gY@8E8SkR&%_43})44&Pt$D>h12dVbixInp9%e6PEhW zAxWcsDEljAR-cIj{!R=&(IAU8@Yl1~K$nu7i;#3l7ZQ$Q6r&ggfPQ*Ll7TpA#WAy_ zNVL|Myp7sbS!GYG_n2jNg(nSmn@fnj9CfVW0v*QzkhBcsD`{MacfjZ&;{gPRI( z-ntG44;^bTh(et;xqZK+G*zIzY zd~aVrEMB}2dNw{o;J3Y_oq#Zc%8CP?6eTPTP@!NO(#(PcB1)nGZmL4o5VrxF@^GIK z8$45`IAD@!V56P`zC%N!4sbdkHZe}DeRa0ZW$k8-fB`O2ko850Mprj(BmX`)FbG?> zZYFsLg5M4V!tQqjgak6MF-l^KYqcgF!@AoZ+>ecV3RT>ei5d()eBd5;hvYNWYJ;l) z#GG5GJD@V{7Aqs;!w$5MkVo_I=pzT9hhchllGw)`+nf5jNN0=NXUIriyKxql zIZ(W1(?0m{(2wBi_4C9+qwB`iYiD8cv!92R%QjLo;nd6o$vm)O5N+@nh?$Kv{}2WFpx%4i);$#PfsJFsBM+#7@bcAjaO=(u*s{Ta zeYd#yi@*H8;45GHb@=G;yYzfKzen9?-naJ^IDGUyYGz!zWF>*{q2UL#cixLvDPZGhc7UZQid6{Qi{d}xd`FWLyz zTd78r=^9kV9E(2qUn+o?7e-cqGB#SaaPzW9tHxh%K8jp@tuy`{#wP>@A7~BA!38_X zHH>J(9dJ&3Gp0yY5?P?Q$CU}t8y~X6n)8enG-`i`jndxz#s3XCR@^=DSKa^pTlmEi zv0@aX7{w?6^#9+(0a^(g(^6$^VLvp|Isr#y znh{K*juu%}lnhKwOu^XrB!S7%kx{xWbn_eUL{M)!Ab7J%C0_!)?%%<|<*;Dkd|0_^ zDJ)*P0D5~n2~Z*kM#d`y%7od>>S6*Qg2p-|%%zzT2qtEFd>qiNg0#vQQ;a}(a>7Rz zkByDPumi)Blj8z_Gg>Gh3*6q(=Jri1xmR>`b&-a--GSaN_wSa?o1mw!8~XctJ$sD| zFqZJ^wFd8->1kT5pcJF#Zc7`PB&0cj_h=IC)kX*?C(^)KN?HggwutN?A%_QE6d|a_ z*Qr+Pve3xfF_)`Cg!!SJlfLLjC;6PhDWT6)?TuCk* z>l|ptpAQcHfa1QfnJ_X@^fq;>q1W`m1d`|oMynooRm{vx!CUWsA11~}+&Q__oihvJ z!du^=io_RQ`+M-?pMDp9?eF~#+`4-Wj-NW@!23COtoq!x_rbnBFT?SZAHqWSyoC#w z!nNy{VCC}FzOrMbk*?lgrw0PZi8R^<{49-s07lqvdq1h}i z2dLgGrr=@}qZkE%{yRRZ_a9i>(k63h?DcFtYl9QQ%P+qGgYyRA=;7mV;^fB!1~E+y z!4pnU$eOlQEV0T9<}IN{vcY-tXre%ULHK=Lr*4?YnQevhFHKb_ygjP_O zuAHTbs8vek$fS05wmYDR%{^t({B}A}*+)$9VlMkS5S}3$I@@$0)Dl}d>j3)1-A={y+E2W|tCdKqmSGJptXP)km_;09}c(e5i1 z%QePBnK)h~;tib9!bSr&GGXOF%H{~Z`ui3-u(=E_TslSodi}cHaOA{WaO=)h_xpCZ zgf@0pPs9FwpNB;YR=~Xn*WEca1<$PBM!#Rbc@DO0+~;0rK53>gnGhWl*iJ2kbL58c zxj*3s!EE@vj`l9tyXysb`@J7h6YZ9bJK^DjJ5(Kb|G=BDdBYC+Z1V?~I6!}b^tQP8 z!Rp5F@B_E#>4S%l?!mPi7h&z1O$4wJxa0YH^5es>WbsN`R9wD#9#$+{!&M()JQ1)H)--!~=-YVPBHAvEH2}wzOe}nNBdtid5 zS3xem7u)hR^V)lBg8g1n^8FP4HhSHV5J}r6x?)4V?XBE6X+_TsB_FUtx@huqPKntj zhFlT@8Bp_LfEp1=-eL(9v))@+X9VmBf~EJMTALBj%bIeMkf5x|eea;Gq`$M1&U3uZ zQ0mlz@}1T)$(VRCTc+w5esBHcCqIPpp)wuEfq_A{K<}i_F*NiLrrqL<S}SqLy1JEo0wYN z#M9vbX8&L>EL*+^1_pcFWW$~C-q{19UPS;O9o%R#J32M#fbRGVOpHyF%wckB+yUru zVn7j)Vgg(!ja$((W(0U~;v|sRv}AczYQb$~+bWcapnL3`ZZ$c$eTG+LVn z$0qxxyObw*4ZA4O!l%IuKkm=ecvc=kv+A26YSL2uF;_D(4|dW_n$z5|ShspRJbHA8 zJfG2ZqqC!zfbp^=Ye>q0G2R%7y=lW9xP9*m+1Tya`ho-0%ZYW~uy&Vw-ex#*{B4+- zo^jHoBcUeVC31YInc<`TvwcdGJ`^ zLTFjv05Pp?4s;{qe)s+@cz)lf;pp)X9GHIwR;^e^i<+M9UOJwrhwgNb-|9elf_(u1 z9=LfhZ^dX&sf&RXEZsO>t)VbwLmUEgKg$$%r7RCB2vo|fo+8|)> z?5aRpM?1|#$gECH%{rhyLzZZ$8>NOg)ZsdSj0`xscOWA?HOYUYT!K;u2}owd3gPy$ zM{C8iz~o!p+eu!=1A_xFIEY@yz0ls-PO=G{XmJvpb|83s6r~80qL0oJapf+5* z@Q?^&WC|&MT@&QclB_ItX(BxkOEa}M(|BlRA+-~dfy9D=CGI>L6bZ&QShs2`oH+Bo zI}h(tZ1?rs7vTJ*W3Yek>#%743b=mj9Bke6oCD2U;ei9*_`HqlcfpOD7pNJ{cWqNu7cJ16x0BB-j40djRj?xKLbBxFH^Pl?~RYFQ) z4~OREuecqLEPAN$gPje0^DV2i#AwH)S zJ(1fx38dn6iQfTO$wA2%RxauUgxNL6i00S^!MAVFQy=R@URxRRiUYNMeSK6_>gZ@A zaEu4rRL%EgZ6m1NS`I#VOItw{itndEna-JqcWRbeMdWbzkIR{QIob**C@P&*mrF%6+JMF-DyL(NPUZ5=+CfRj%cM>Z+ zxMBsBNy)=CDU*f~S=~m1{iIPhU7fA5&04KSOf$1kC1H{rP&TdZb2VTn9fPqEX4G5U z{e~KYO3XI4x%Y2(@7*c7%Z!;Mv=rOCdS|F)(VWO7XO4`6B6T51DGid||Qd^f4JD3BOGr!GbKbSTJcv}z9@$nni?SunI-hf+o zF1v--TDW-iBwW050zUJpufeiKYv9)1%MQqnz?RMX;QqTe;oPMouw%=MFn?gNd+aG# zw`MDR=A~cpR%*njC%lMZmQ`g+nfE1DVY`74bU{qId;FG7yD20_7aPMPL-ZVMc%46g zA&j}jV@F#z1<_17uuWdv*c4f-(s3OemSx^xj1Em}ff_GizYf@{|<6Nq3fGM1nFpxc3CWMi+p`%nX1qsFkN1fQ@cvo_u6 z@BB9qWWMJE#=Hh~$|fR|=!iIGf2Urh1|0QQ|FIR#tg zO^jE43^>Ov+sN;hn=1*JN!b>k&)xi46fy!4gR2v_PTl}fDmpi{c^_^KwEzadY34n8 z)hF1O)P>GW36w)fsIvjAQRqe^V@CrGb~cFzKiIsbK{`#_6gE_?$rvmv0QCOg;+WE` zHO1Ae#2JGLx94eKiG`4sM@}d1$40)?BO?z;GPH8pdXhF=a=;m#I#9}S`rJVn8G8tu zHtd4yx6iwui?DO+3uK3P_uh5bx?vxs7=Cc*hj8z~O<1vP9q%`duof9h>`%;qhfDi@ zu_2GO67VxJIs)SktlzwSl`1L^9^50wlWhjeaOBvBZW|W4$Ba{@11ltW{IMw%!QQ;V zg|fhui0Vwxu`Y&K*z8$n()Vf}hlS|)1u&O*z|A--^UQD}?hmT><`ar+CqWi4l7^Q^ zGa^}PI3uK^>f!Ge-D&dKM&vmtN#}uV#fo^t_w%&ugQF>WG>i7|2Fn9*AIP&oeP4a z-bSC;X!6d2elcck&Nf5AdL|3Rk~?3nT)re0h!v7vA(@a!fKar(_=JLiE=DnmQ2^+t zVPsj-dFtdzc<1f6xS?-mMjC{`m$)$n49l(~BSZ8YY@)h;{YoxPOD8X6o|i6N37a?X zgznBh=qSm(>vPs8~4M+i9mPrv`qXd4iupcgSVX5s6U zyE*ks0d7hxW<~&9L2xR~Kq!BhoT$0?ZOqa3f{!ZqAsSJbf$Aj{AZWasTAXDvt8&91 zv$TmOkjX^KfHB~sxRlN%W4w~vglK5P z7lB^U0OO=h35;3hLBC1}h-Fm}VT}i8#56l_gwh1mK_mD^W|QPHP4?o(#<|%V28&FR z)L~+BL|iz=Bp|2iHS<(yKz*vsWWiu5QSkibNg_J+KL`AQxjhT8XY1DN|o|_mW z9`5X$jIXQLk`MWy?c(E}fHo|KAdr%RTv{~pa!*!aUZ>4KTmxS$Y~8*Q_CCAKFHCZ7 z7}n-`8e-Pif4A5?WX)U8nLN_fMXn81hTKBcLf%_4;+1_gI0TzO?+hZFp_ZOun?V-E z`Gi3}hxFVsFyj_h_v#$Llc5M^C|l4-de(3&-L5wM*pG z5hfPn0gBOjxlD%GSk=|pOHKgjDO{ay!ep~1e!hv6ra4K?O2|Q~IzrI^8v$ghE7pnG z15eU(rvC4Uv*Ko}T#_GS7G(T)zG>tX{bZmZ6m6$_W@9djy-;?;-E!Q|AuC^LsuE3+69_OV>Vz zwX3%{Q2i`?aOel_{;LjXKf{e_5F)A-SjC_Vfv*7@la(H>_4f`^zz*uEDFslDeSX%wW<>7dS1RK5yzJ8w$>Yj7F`|JZO*f&>D`SUdLQ@FhP%O^qS<55ArFNEJS@Y}BmHR>_ZiH%Dsmp4b%}@jco>1xa>jq_YBgN$JUKNXwKl{f3@wI<3gt1P~SB_ff zBN`yUj>4$Y>AhKO8sw-46m(Xxb0f&fVO$$K3a(=F0Q?Q~=B-owO-V@SpCd5JmvU$_KX(Kxe%}7d0sFV(QT$Dmw^9{o^JwMuj zxDYWJe>}$sv#m%htLlS~J4aK{Jb-8xuZ$B&)d=exX0Oo*T=^AA8+1kOdEb7Iqb(@E z8J_pPCpmiUVz8>PW+vx>7edTZ|9R?7a87LkM`AfSlbglGlIy zo|yv8D#A(2_R3^%@D$@M5_CuEhflT3>5=89CGK-D1B=y~eg-KTK`HckqQ<6>zXv>X zL6lM3fRG^?1Ff1>(L#AGIgE2rWNJ69QeLa`_gO7Uf5zB|8lt2vmF_liGK>k+b9=MV zs1}ic;*sY7oqKVRVuW!JxMSoLrO|fSHWcOT>rePIFz}4}FarfGuM=Z2=d+*M2PSvL z$HEK;Bu1JRU2ogO+ZmndcM3T{*;}G^sr`q7=m+{aQv#Kx67D`?&TAX%=*Xc0?JF$^q0=(j9%v=O9anS$gQhQ#f?*+$Rd@Pn0DD z!}DiXXedXd+waxwpun609HayzbqyoKi$?Xt4z?JeR`u%kuHYhAeFZhSyl^DWjcsm0 z^y??dYAUiRIBaDa99-aTXV&jMGO|Caq;$B|ER^VwQRg`Y#AkniwEY)^O0NAr8zF9& z>o&YDuP~r^b->wbS1?Zsqw0<%)qT2(-=>YpxVWAW>eYIITW_6TGaF_!%=<+tk9|b% zK*5-vx-@h<0!o$zG18g=N`ZOYpe5gb3+mS$?39IVs68`oVSTVd55@0X@jh&<4&N2M zz0^DMbfePo&plA^J3c?&WBWj*rQG8sa>d$aCBUb{;VAG+J^F*Y(*0#E+bVW!=DgPs zz)k8#5{3#(=_bVr!|LgpKq8-=}iy;P79?s=!%5wylIWR&;cc&I<3K3#Lu zROW&^#U|*wx-bx1wGtKpV0^~@A&v;MO3m1-NRR2Zp3H%{>Orpa5xmM%`Y;GS_&EeZ zVHyp2C5_;x6NBG~MMBTspDMhM&O3a20TGAwj733sNyRR3(Y_~xu~7bfSf9aw(+@BG zAdkD`o|gzo7$G~IW^e(n|HI%hIk-@wgzz*SOrsXGCX9$oxj50zR$N^WXF}9-MJg4w zM#y>ABvcY}i9ndnfR+I>VP0F#SiD@vE(Kld!bafn=ViIdJ}Jf^rPa_J5CkVLG+x+T zgt|JcXxAg&T0j`$Uz55S?)rPg4kNPY6~k@AF2$gwlPNkdBTi-fV^H^a@lVmf1d>(hk?#FH$LOP z=qBqWdyS*B_&-E&S>hC#VSu);K;X;1*WZx6wdTv-Mk~$_G1Mu=fLeg^PldxQA{6@5 z{)3fuYM@*IyA3>G%mPBKm%J3+p3+lc(Ut|zG)ip&oGwHN36va6+WAAsKO*vU{JW?_ z4Hjl9o}Ezqx2%&=lrxasG|H;}9^0};G&za>MJo(a!io<;M;MQ>0jA%l(H;n9JpqG|IKtboMEX$PB4qZmeobW~UG3w@fZs(ISJV zVv8acA+o?|1)gqMS5J?a?A6j^Sy~{m8-vwP%v*wfV8hT%?i@MO2}WKBd4QC`c^UG( zc8hhMJX5m^b;3gK3mK!@uCMk+OlH!BSN~?zFEVoeY^(`F3i`fHZTA)>AhBHq-=##i z4-p2jmvaEI^uJN`EDghUr{72)eG)yxmf`vuilBoP>P?$|8Tn0}2*eTZaSwo5G3afV zDFle$peX^+`vCj=J0)7;LCI{PQcr(2%t26!-HtqX&A@`!w%&7E*@|dvPyVx;`Kj}A z2*;>{LX^TkZ~`mgG6IoOnP}JJtx&Dgfxq;G_qO|7>;glzrJt7j*1@$x@+72IhA8k` zWrXHqp;0tJSG|LB!YQuXmes5z!zl1Axh+t&p1=z3{N6gs8Qu^O zZ3Rb+YYMpm5$$4_aK&oANeQhU4 zA=VS|-5h_9?HrSuMarz>CYV|^WUC!|zly)5P2vU_seYO7+)Jp@V1O#_LU$LjjkTh0 z6ue=4;(_5xsH_f_Fiyj?mN~}i^oNoQiaKL>RV|8zV>45z@gF5D$YM#Jv`BhR5BMlb z24CN+>R)LEA2MtkV@s!rjKT~IPP8WOguo7PlS=9GFZyQ&0&}HI`zE|L7ua&K>ZJ^AXG_{WXQ@^x=V!eXLEh^COO!jln-3#CEax zxB0UMYDL*+mm^cl1X)YCPd$1~stwbENi9)yT`>WDD5RId`-E*Zy*54bvR5~mP{ihF z*K4??+F=zJJ-oJw{dep21LuzySR)iS7OGxiav$JZr7+waJhr>=Wl5lNLxz-2!XAXC zLopFbTqZL%9_G01&d&#`Kc*`8g%rSTZmpYNO9V$4f(d@9Am2+$N^W>;$#0RQG0%|` z!Tql59jyBAcvHLsBJ$7GY?xB7-8Doe`nh1U1g&|S65{ue`|W@cd ztNhgXfvGI|=!(FMVydx~=*tW8*Mi`m6CBrYAt-GAk`>aZj79qTOrqqfnxo~ zO79!tlX0gqR+MW{0(pt)bj?j!4 zS4vpXw|gT_Hv^BU%@AI*;lGj$TKbwbmdZDwpf1|~&7o6C^G1xH>}k>kR`?59S1i_>BHSA9 zrg7j@LDyYGj&DsMx&MM3^~$lDCS^2O&<*|U;hEBC(5Y$C>3*=bgSKnJlgJHb)h3~x z6Rfk&Juc+uw7l%XXe!L#4DKpIO0dE0kM>Hp5m2VOn_J|@u*8oTh+bgO)tnnjbUe9{ z0H`z8|8F{0?rlJ=wds@2(ILh!RZ)m&|N6FJUSw1tYxRVK8Ash5jV8hS2AcFN5)Xy7 z8dsr1e|GwAaLj%_K0b>40qPJ2sabYk(VgBPA9gE-QvUZ7wHlrx%_s zW@cEztA1iL;x4wu6VMi~=p>F$W(H5$50suS0tpvWaQ?Zt{Esj3DTQOsBXmx}5&LXx zENzhCr=w=CB1J@8e2PPEXU@VQYct|6lf#W05oiQ!(~2do`Czg|Jbxm@#&zHyMa_;@kQgX|EsZXvl3C5Lt zVAmtzG}wfMq2E@R-abj>bt6mcL1o?riGJ3rh z{Qnq1t+zsPkFa)n;y8CMKhCbttJJs8UkdDBdkx(^zOZNlP%>cMY}Sz5-Mry8J)hR> z_a1-Owe$LX!r=2i2y}d=Ro7!VQBMC#-BNdZRPA`y0H&VSgg zPb!FZr5^*E43EW_9NJ6x^hEIDYdtzv4A-LAqHj5H|3CN{Si|QvizOIPt^ynA$|2Ya zsokDPxv|!4hw?LORsVNsECy1MCh=h0iuRr^M7)l_jDecqS8H`|#8fw_z&wdPSie3F z1$4MHpJ*m~Wj|KXQi8}&Vdwr^Y4GINC0gb>l#0Wa0J@umT4`cF3MOfpj5rAZ85&4Kpy-;AC7W25OMwD0wjfy`rAe4_j;Pa=`u~+KBBnB+9ctoSDc%O>GL4Ac z+#N*(A}+Zte@Lr^Lj{4tJ9xtIB0`2dU=l}H)Vm<%ZOdt@3vTNr!!AB!@Y|Fb&_}gN zaWa@9`1NFXaVl^BI!@xgv$AAR4LdoC;4mHoSPav@!;dGD&llMgeCra9s@< zWi)qKG?+wjy_s<~Xx%m`qbO8;3mcsuFNsoF9cUULR>iJ=mFuaY*ZM0eSZ23_6qogN zK=LTBgu`l|B7P!70dNMqL^FlVBdcZ1ha+Y}Lc+;fgBG&G(@d|PL7gUx_(~sTk@3!o z3r?|vA$_m2Ld{X(^Wp%B$h`v0!hRDNq}NMO*`oFJ>zvAxZ^N`+rAzC(7#9={sJy&= zhyzcT0)<0+Qxh3W#L0DhYDEPuX&?O5Y}5Z`7o1V1ZR5}K!l6LbTOt3mREtJU_m)VI z;ud>86$=GH$+$(aXVR!yR`l0-L`KwE7Q#{t{Z`@oOajl#0>Lw#QJ&c-lC_laq~XGF zn8bDUdvii_%>kYn(y{=s-j{tQ3<%jn&3C}vw$#6G9@${P~`6G??Unfx|362k|5Av>zCe_p|8oJMtIc-0v}E zyA!z^IVMy9p6T2Rv1*GC`CCFne%rYE_H>})^L!#%6wZtyeRa9sfdOWZ7zvN|{>6vW z2N^KobJm`i#U8|m|J-cVQ~)-~kP`2$sj$n|c&Mkf0Fs@n{voR=I%b4FgtmMp%hkxp zK|oMC6;z3LGorzE+t2yX;krY5rxS+7$QP|BCJ3Ut6e>e)@D`MswZ7737$944!^Y7v zoQ^Q^$~`6MDRMX>0d_^JIJ`Yj@WFmPzb-Jxx5Qx*-(&T2ICwD2dD?B_Y_5=}0RA2E ze|Ogd|Dw@X9M?pSfbOjDjOX^3t`?FjKmwP&<>Ut&i7Dos@ad3Mf6JcDxb#MhV>Xv| z`h9WKsPWS~&T}X~g}|CFrM)TmXvlT`_w@XT{8gU4qD`CPO2a%T-O}8wPY$-oDoEjA zKy1Ygn;^9K7w9+#ow&^1!&Q^~;tz_4oQ;7chNX3 z9mXu-uP$K_serN{6Dh~c2&Gb&QJ!$vCfwv)##}xuvilaRu*`tlfmOY8e9j@WYg}z= z6>I(Zbmg8hEBd9FjKIV;-c&If~yDm#mF*h#)c@Rrl5(?}Y;o&OD!MJV5sI zCFnqW{BFt@s_X4TFw|;^spmft06jaLJN-jMJt=x$h#F1S1erV^BAbs4bO&CMhUX92tBBL-~>Owb2x17v7m$|VZ`X)4H^<7%K2Vl9;TeQ$h${56 zul!Bdi`Dyp+V~_Pb7D7lP9y>p0gtxTDigDvnoLxPe!}1RBG8+&WsOmfn<4_KQ$VC~ zRH{W~8TDS$&`|w=4;YG6Yx;m=&o zNkTo5JCwuJR(quFKRc^?b9~SAd%sm40`pDykIo?b({a${216|C zm6j#`OZo520Y>`NX7UtEvlXrk8}MK7IRN96=Fy+iv>&jiT43s-F5QL%!;fa^%cUSQ zBA6@jBiZ#pyA|w8>q5QV1dC@F^SdnA4_gplujNoCCSjPN#n(i6qZ;|mOvNHtd_iPA z!SUw$%T?ZJ7%SU+r)BfDV!L-ylqxhNsCAA6(-vw9fU@c8D)%qy&E_)t#TmUAG{z01 zCN&$WW2Gp}D*C9>2@Y*`XYcTDkJtER_*5p z)cp7N6}m&2U>ZKVdfH!g+#d#_NfxxQAbMGlpv$9m+U!WiGk21L7cQhF9C??p4&d z@6sEVBZarFVrsum>fc(Kw2!J+on`Dp(!AlMO5?Hk2tXlt8=U-ol*2Y|46=5pH%BKa zh?-lzCsJi?n?u|Xd0$FfV5p{g-+UbZkF`0pTKAz5~ zaa!|r+Vi(G&WqY0B6+hH;%9Ty!64`D4$+%U&iOGh#F%Fo?HCrisr*E_gLfotG7b; zoy@ZU<%Qsz&3QGKS&l-;(=|=2oSsPSDOxMh64Vp_6bCVQQYi0$7rBC5WI96Nzp)AO zAtT_s`1SUVO^f}D@p7vV(SL3WSf#JQr7x>*vj!bL?+eMf*W<6{uXU^IZ%2g{m(wM- z^;X+=%=R-nbUJch+k&>iUFe4W`yTT4ixPN znDqvpR;EKXV~6L5>w+#K!r;IIS;BtLGEQ-3O`iho4$pZ1zanEe5UAZ)w1QjA6?Iz8 z=fxbKHQhd&-RHO(y)7GcO?uq$3&xupptyI@>}AyrCRp!tD%t}9ghyCt-g9m$_bp|k zb7WAM2pkP#Aexq*(4hC|9!JDp;nV|3C}H${Pu@?8h@kE)kT6>KskV;?G?%y=YyKp;S&&e zkfIeGA12qCHQX@J+Sr`)>`=abTdl57&!%Ke8c8nfB_%^PbI8&rrVOq8Kv9~Qmt@ZX zi_59r=_|&%?~e(@O)ss@Z?O8as_wH0@X6k|#vr0EDcR+Aq4t^E4u{-b6A~RR=Mn}5 z>-E%yJbXPSH_>-;j=Ou`xhpbedROTlew$*cT8W+gwewwZ%0hH)?lv0T7|HZnuy!2} z>eq^&?Ozy=7ajuvdz?Fq7v(j6TTH0%AGL47QTKr_vOCi=&4%^b))yNuG|wxNg2CU) z3-5Mk4n7wW(FaY(>#e%7P>(-kmVEyvgBzd4TfDh277|;4oqy&Jq2IIui4?QHsH8z= z;Y@^!P|KiZn4dD7?qZLib?e)_q`*yZ+qdlRtV3BS%erD2aqX;%O(chB9uX)1I2 z=pQ#Cf&QYj7WP!Iu@Oz+MIKosM?#OqlpP`-add!_&#fz~2o??};u!Axh=tP6?Yg|5 z-r*g-;LEa%)QWgmyM{pyt;Stk-Dei|bLo&HBgC{BWr7cjxzBi;d&{J>$Tf=0_xx_$ zu#y!|8u>6iJZ*ZuSQtIGieBK9`(^>cmZ({GCD*f?k5u zquzb5UE??a)#ClY#@GE+|0CC!ua9~$ghLCzsLZbGZVmGn#E&pj%y+W^D{?kzN(B3b zRO^ci z&@}fyh`f?2iJqaDIVsa%Y4dEotL3iQm?E|_V~B;0zGcqh`PG%n3uQ|zOxf7(toF7K zJ_v0FLu)SGI|9EB`5#{Q`epsuEI0pJ7m+Inc1X~`o@IM5aE?q~*O#Kp^u9?GFiRbh zD2Pr-Bs^kpTXWS!^k4}CLO*jeAr1^1SLq+*YN~y*Z0CrnlhXW|kDm$D8Jk69t?(-J zo6)0l-qWN)md4I!}Q35mO+=Yo@&u9#bFVQ;eM$JOWtHjQO14O!;=@sk;H( z+Vgc$Le}^f5wOW|Z@kKq!8;aLm{9hSx1^}X$<%*fo8#Ef-s|Q`R{{QJ@SwioNlIS1DAax(~T$^pLY%ulZd@Xbb z7L*9&f+Rf&zUP523x;mJKWvd9V0Vl27+Fxr5pioPDc<@ig$c<)WRWR2deMY_nIUmE zcO(X;o6Tj4M#cC(O;}TCo!3or-%SF}d*jejRks5q_4=b8}3z0IWrC2X>^J=K`eXFlbWqUvCn9hEy9H1j?gs;gvMVP zqy5i&rEfu1PD!<5NEjSOhwK6KQnMtoUDqEfeqG5@Oo(+#OmVi@PX!#WyLYuKC{uDK zAsPF%dQ@&i^YK%vwL2)FHwcHk#weOxuK zx4S*TL;C-Z2mTXaOKY4s(hrN`oX?f_+XAy8kV9j%tSd=RlD?HV-liX2Vf=mGdFP{DZt z`3UQmD(+J>CXf>82Eab4d>ss;0CQk9pAfH`*PnwNg9MzPC+}$ZV*fTScDoAtfq!i; zbqTw=z~l-xe%&GIbVF>t?GW`XoE;hLy=Gkl^Kx3=HbbgEZteP5%bS%VpQfip-AyN& zxZnN?%2JL5xL#WPxY{y5+BI8f=tkIugi+U<$KwSAv?8^gjB{$&CCDG5gEays|5cDZ zo|!r`AlOe!muxPr4A;s9WefZ*H4TTblm8b1_TcguP3+kLY`>^MDC~DczOZ0cJ^;%J zsAz6^!0vQMLowyMi6^gXluOjL-T64?zyh_SG{Dx}MX03wnJCX@;OU80Y*zg3SlkgJ z#N+L$fq>3HUJ0$*?_qkYZf0-uS5-InkfXOIwWwbAT@q zBTezfe?1A7AkJmd^8Q_8f<6ckXc~+ToSv;Ape|+B|0jz=hQ_ z6_{xzSLmNV1`nqX_It0tI2|VAtJ&%}rs1wzf(E8)C!T{3x%c+c3!Y*?K(P_$!|Ot-+Jqm|0vU)d4R?)!zhF%{5Ldd=V4OXVlESi7{iBb50RCQPk`mcL7c1s)BT)$o zfP5Vjy+2*wM(77~ZoSa8xEw*9FTe6-^85Wj!uN&ObH8MF|0>|z-gxRp?*7R6K(4WR zgSX$F&amHG#8|GqfCQT+%Hf7#;{WovQY66q0n2&&A|6P&J;5E&5T}MEK`V|{WB%ja zgu_k8x?e_QKGv$h5fZdAew05lCV1&zXx&HK*T|WUt*l&pb4*ZwkS|dO82)ygj9h0R zucx2`jPOe^#t8T&mPrW%m|z?}ivN$LAA2r)yL$}n6aeYc)YNO;p35H&fAfn>Mo

    n_hF&NXo}#M4Z!+|1YsFR;>zUD!D+`?J|4I{v+XQhy9WC1VO#t= z3COw-`xC223ul?_iR_EXGzu&=r;C8E?|T?>S4HS)!RmTA&97a?RIjKO6%t=~10YEr z;L9U)!pDF}AI8ww#)#A^m`3(3(F<0jTVtsDsXZ0MRU_{UeFu3n1WIgbV z05$;ZImh(#Z2LZ73;_ZWSNuKrUsLxFYy^iOfWY%w4)1{$j!uC_+9|ang23n~P!nyt zCtnRTDKQd;;jVfJ4cSEGBPS2k%+upCrJg--00J_N_~Ab}5r21=B+$Ap|&M+M%`OpE010je}dq?!%$M*lMH>Fpd*ys9Jp^Z5p#bmTE)C@ZG~NeG*m5!4^7{3?Hf;&z zicfc@=B(Kr@$+LR5of*O_FKRK84J=x#W6w80Cn42f=5f1&SqghuDw4`S)>kuRUxz0 z=#T)vg`Q|c2>mA|K+LaTi?*7%!l2Qn3mt5obqYl_`GFO7@d+1h?>gM-|Y^RcVcgx&>iBQ9wsw-zZk5+UMNoD|K=Z>3W8??BZtWKS=#%!LUz8 zWIb{}mT@uduhT_vLa@@)H>WvT!~0V3ObfPNdeTGqxlGk)xF|d()?-$pk{%6g*JBAV zb=K;sn6!wY)eMmV*m$JirI|-h>eXL(+N4QA98qjG1Ob7d&Uw8dK*-5A$adhhL-Y{_4PkXD|;9` zX&-5JUGEl0m_wiS9yqFvm(f)Q8Wh<N_)b{acZpH`Fe8I*QJY(&a>^e;OGad?ism!NU-kh**Wex5(^o`v z&QroMC%$5e%V?!3d<1ifp1r`z_OZPNsilD+g`qoMnz($ zs*H`$eQhZ)Ol<%->rOR_P1+eXJKb@HKK*@-uNi^TxPx^hMMXAsW0>s_M>Wxx){;|3(llEuGwBL9;iB_hs*e z3rZgfCb1GCehC)Hrzdd7=?$%j+lCA9eHCchgc%hnBvJsF$h55$*WV>bRq5BMUPQUuw`Q*|zHF z8yF!lwxZY}fq#X}-jQeWm`T0lc(=)bjyv6kE+RbpJ>qHiY$BWA7VT`vZCA1G_X6Tb z{kx?~9@1fdG7t>p%f7Go*Z*4x+?b(HLzfRvlpxxiSNV23zqJ~yl-1jn70tWW4@15w zLEZqcR)l@H2AmPJ*kVM@Gu=DqyHL-yS`iGDK!0Dvq87_gSSzq@}2$5u)pC*P4-LH9hH&seAc50 zsQ7v5K1S$iW^Lhip=QhTReC+DRcn{6n}GGy>8HU(!4T=81o-xLWK0Xx+c$~tU(t2P{W)oBJ$XApE|4=Fu@a4od;ju z8IMJHzudTxJf>fYM6ipnLo1mRRF7-D3N4Q5K*=8ybxXE%j4-$vcjm9D<@|DqF!nYX zkGTA^cDyrI*nV>0!1D`CGH!{Ssa+*-2t;ASp7*X{X;1B*q-O+WHoALo)KffiB6EDt z!_fxtYH@)!JFsK6H^?T_NZy|Thk;m--N^`ochuv4)`IhkfY<*;;9jI_t2}RwHn1DP34m_&jIUp8vqwr$-cucYc$DRMd2u_{4UydPQ&_ybzU_wn^KeQ)ibLV30Hw5q8IdydcY<06f~=5gNpVXD_=@!0|1>$?8I_ z$-~R|^{nimYnk7^=%9ExdW3zts;2`^2cWc<;h<3VEC4?o=o&s0hwR-lxyA{LAT_hIiHfs}z=~)qy>FDTx)lC{Vtq=t z{fDHiof=%j$InWwL)2%%xVM2298ibPIwU!{ft$1?AMrYlgk#P6V@f`N-I7b~V?7IJ zonmMpg#R)YfVvf>J<}y($LE}?u4VIPLBElNQ{PP}tQ;MAKeNwF!vqiFxi_gUu(4FH zVud{HR#uoE0@Sn{W&1uP5CoCPK{iQB&5TkAVsurgzp?w{nkO^|l&>+dP)@-T8)=)e z<0dgT;MA^_0yLo3JtdFPs=j~AABAGH_Uax-5H#EK;16)g^0MSLs^FlRd*~wAS;83f zYK=`0tgcR^*h-{Y#xM#P6q95&_E7$DbHK}-$dnSgJsMOIk3ft)+eKNnl7zx5NQhN& zenxikx1b*b!Wnd4U(d0rb#sauSxGaM3$8qW&>)Jj#F)>~XPO~Y^6LGJ{8z2km*K=2xn^gG{xp3Y7jc)DCkO(3WAJBBR~ciPvDIHlH#bH93Z zArcn&pZwwnZ^KRaOm{(F5CV0jQtvIV69=gCQ6aoULAaD6)*a}xlIyj~iMJ?Wt>`HG zM+Pq`<0uzVGUTN+&8ZH9&nsXuwM}X)SD}w_G5elkXh_QL?(Pr3&p(;|uqjL#tkX~c z`{Ugcws#QO_|zoiGtn6Wnt?%MwoEYv87@}hhO8&=X(Ial*j*-DDrt6H>%4OSO8!ea(1@~H5-S>r!v?d@p(9NRTrl zlUaC*^o#<2y$v)`5NGHFO+%CBKYaMW0KB08YTd^<)UR*&wx@-o0NWfn_w1qLX^7jf zY2O>5epFQ#Z(}=OXSbfiGi1B@`fMAGM;iiwprBdgOR1pa&{{X7>qpo+ZEC}c#G-CT z=e6n6)Bagv2n&eqCf_7Vp|qJ2jV|;5*rLx2|Kouv8ib8X>nlg0IJ_iPhA?-936BYi zf@$}R!qUuNh<%>tcaSC>0Cm-^ht3wB1HM*#c2a=#nrykGT~%*%)$ZnS-Ut^Q(=WRF zK&!|B^95)w9#%P@r@Y~un^aPC~f`=XV%*kt2~=$(gj9Cwj@=4Mp< zQ6`?{BMzlayNms*CKX^H)rYI+!rFiu!}qhj*?ssI(D{IBMM0kYMyDfVf7 z{GNB!Cgiwqi~*ELG=T~(5y2QQNor~fy1z;TS$? zhY?Z57b-bR#^_$#JrWmP0bCw&4t}&2HR}#i20ZR1hrS2k&kunhQ*hFJfxziAg`B#Z zY=LI`x#fGReZA3v6X4KowD7 zS(Yq7Kth#30hj*YUQPZjX@=x2Jf|{1-4ODlb5=l{eF2jUn+C(B58XxqQBGfqJ^wsj zYSctZ;eu24@V%%U6BNJTey@TOL3imeF$>Hj$#Lfc&+2xcwMF#5dtbkP{mp-6+OVE1 z2s@DnV6R#DDF>Ob%9l{U89Z6j>v6+BIyDinoAf{5cm>e<)uJ>{{knVnHX*1+-op#0 zGnSm&d>x_BPbVDj%C-7%g`kLDgEA>w-C3}gN`U9)RM@UxPnPyZw$g-w{o;vXT(#m5HjDW`!rk~D;EtbXo6 z%FSWBz7W_ir(|E;T|XN=5gfXOJ=gwi`C=5;HCAWr#(x-fg517&p)@R+orf!{~xNjEF?B0HO!c?gk^Rb?4gHR#T<@{TYQ~@7^XOS!-@>xrD zBz%$xsTuTXvuPX#6p;G_vV;tonqrDEK-a?pIJ;=BpQD3&yStn3ak&he^s&GK5~=D* zd%IsY>dB#BZQ+#t3}K(<<3-TwVE~*z-!O(bWbY5Yny6fdR}^}1z(#}YYX_0|ch6~F zcX@(Smt1+Y0?!@aq|Ilw&aqVgXwLMeb$@PMvUB_ME z^DePRxW)wj3aqS%9aMGsqeG&r?~fMi*5RoQol-r!se4E!zZX%Po97n)FLbajsHF2| zT~J3jBmj1rhYD^V+VYQvaw{-%OVPN$RZop?p3z-+h7+%1fS1&3>dxSE-7CBcfgH@p zcrV`39`DBT_pl^}{Ty*Ty=u~Smxx2ZApRBuk!xsh?uF6AgubZG^ybG;&g74cHHON9J6n`EWrH= zU@s1>#h&^;^X&TiBlZ%~hK5~FkIe8AKhxP`eu$kM9h08fZkpbKj^0K`y$StmxJ6PGlE)-vo!%PVDw4~b@9EXO zRLI%tvuJdXy(r6tUl2jq8L$i|?zrGY*QZWS)$Au^nse+l-CH;M{MCv?LK4?h)4u^> z`Il(+m$j$JlGo5PQtJ)56buH$8s86=Q1;$gY9Mf^^G&T1o_ulC&M1x$FmW0Ab~*Hy z!}m2L5el0kA{w(4cYXPv6V^B-+7&$V58s8LvfO<}5i9aVF=C5k>z}j&C zOj45x7U>KPx9Qx+2w%*MiU-V^r+;%S^5)msBiTvWCZi~eE}z_@0cF%6ad?Fh;d+t) zqcBfEv4b%7Cy69|A&)8%q!X(WLABs{apP6Nl(hMT*Tz$w#^J8=R=zpyOF+POxXxfM zkc1%$iMr)8EAj^6FehMG1Ad=6PGTsJ9b#w15>^eIGeb$ujBr^X?HpklLeYxF!!BK> zp<;hS>h+H=*&`0mz7yMLv@0RDO3-g-a&8kYi~6P{>o|rruk+jnDqyh#3PVlTW@LA7*@QEaTzy-)!ayAJqo4wojUlYY*i!SHS z96a>tFawNvMf4<=T`Wb!BvRn89r;@ZZxdv2HgAt5Wb|99Q=Bu^6DD1;!_1~|8Ele8;>D_ z51fvMj^CGw;(kvY0AC%c4&Fa%URE&*CfBA-_8a`cmT9x24>2nW1Zv zI%0(qCVd#v#h4aEp#L1JP=p0^R-oERecaPOWSE4uWINwZN(xl*C2jS*Yyf4sh}EYm zWz~=@n7U3QTW|lmRcvgNFSkyq4^R4LLdUG@#LmHArQW<|k*aR>q!UAuN*f3PLN(aQZ9m)D6X~DS+|ukUC#khR5)%QJ-D>=kK#?18Y+Z=3hb@=0whA})Hb7>MmUAWdXLYtQGpR-h*QqR zfWAY)Il|-R<>l0ydudVH66eyJ&Bd~J~O{c>^C=xU$=XAmpwhwQpekz{d~wv!w7fj^6_w>5Lc-4CNOU3C z!llklTNozb)`ykxY<^+8(@VGYf@ZVdkx@#kUHI-sFsdliq?qB_}J4FdKsbhz=i>974O^ftE*Ig;@ z2hg9o>-G8NP(^W2)lmwmyh`VvfxYgx@yFN?SuK;^CToj&f9iV%WGg@A72W)N`x!I1 zm$l!DFN~%FCjF^b6)8nKboDwSG^;w!D;4V#HQjHSkCB?++N*m=fC<3{`v+6lBbysQ z|Cpb=M@P!E7*;D3RcnRNWcWG4Grml!U+uhbWysXx6S&#i>B5Ygjm`h9T&ZH~p6g%I zEMf_Js$*Xnvl&j|S}&(f&&0Bej)zF|^r$O?prYg%*n@t|b>PY2`P*(&UESuqfsu#W ziyuh#lkTw&u}w9r2M;HX+%KPQr z-QC*6R3R?+c^S#y7k`uq3`qMh3(k-}35R`6#FXFUJBE}#zINr|dN4ILU1Ou?r=pO` z6&;5HHTGE3NrmeL?QPq8d#>8gr>{^U%V(8;mkYmtziEx(R3FUROV1Dv6UtUAA_7Af z!XGGx@fiC@k5OLNd(-UwEeqxh$c&4RU)QQi>zQInb901{wqhMCk@>JPFciI$8@zDk zaKQl``3S?BSb{n#qb4}?iQ)%z*&!tWm}E8I18StFw@ATfVP~$bT|%d9b{fB63tdp= z>prG$^*MEOI=fn<^)RXG?tZc)@E0lm{-?!m=M*}RWIt=x*OHBjwYRfVL-+{;sWey37;iG0YdI9k#<*)O{?ZF$jsJ-H}tivdXN(5=+BfSxwwg%bKp&{Sz7wmcU zMuFwv+5zJh;qBt}4*2Q%p1f5}}7vIgET&OoJf$nr`60@w4YMIeqh%v9=YXO3Q#oO(QT{@C9_)=$H83m$1$HW!NlV@`mOQs{f`RI+IwLayo*g z9J&Z^%p+%U666mBRQ3SjXm%Z$_ES?pYWx$Z(Md7N*q|CC&)JEipAf!qI>k< z2$?eDmCC(Zb~LvgYJ@Z%K^9k6JENma+G4Db2h81)Nd8XZPA*1r=xG`mt(Z0>3vA5@ z8p#btBij{YX%B`6|GCcJ%tzzQ7rtu=A(iV&z#e0Rfy>lDoPMgHHvWqNjMBu)}=x3VyPz=I|wbPg`|1TW`ie$@8c1Fve zCKi}>ycd(!Gm=+lu_>{zlo-zDQXwXH3lS2LqU~?2m|$1zF~_5vzM?Hk_DR=7Lk%M%-*QW+c0`k!zMf7}jqqsv-BkxHxf`x&(6d zCW4s1d-(bVHzUdi=*Z>dAn%2$W9am8M&mXjWUx^q)z#<~NQyopEnOXpOQU@x(x4tX zX+1IJ`E%}eOd%e^;W}szgoVL7kPvX-y+|(r09gP4(Cz-;{{a9#yi;Cbn*R;;J zZRKRmxJ#qVQw;CSQ}+MUiL^zYsBon|n`^gntKFQ{<10=A0Q%zjcslbdn{N75w}LXk zg9iZcqu`>mrE-lW%Q2B_?}9-C0{}u)8Kp-KX#+Pt1Hk#nm0c5q`(M_o=VQ;)Jm2>K z;I!vwT3)#ryY<4B112sA0L?}MXRa$g6_xocacBmK9TI1qM96^oZqL_gfr$&`b7*Bi znq$tqm@hOI5#WuV4r+B?;n0~^y$+dji1ZmdfIr0Q?PTc<;tmg#en^@B;4@*51n{P# zM)uYtpPW<%q#sRHGk3||e@#OJ%nhZirBcGWvQmO`gU1}w7OVf_t-*zEcHlj8__FKN zcVnv4l>@>L9i?F&&Ab$2@$Ayl;dxAfcYDnePherpQ|jE%FYe&r?$YYqa4uH)=M{N| ze#(+c56rhQYZ#TX@x9E=TYCuryCLR*lnH$rP16Hntm< zsZSEVm3%HvU_5CjcaQ!|g=T#BRP(o~3fqY_fCK#rN(5aePt3z5`VF!4hlTKlI-6D}W` z%EiFC+{Pz&fu1;liQ|-FbpiMag%vKE>Ia2{9R41l zg3l&Q(7tn_e8_L1u1z%XNRwxp*Uw<1ljKzHoxk3!-myhq zJJQzAa*5?mq2o~4ajE-pG>*OO-B8?g^M~}KOqplKFSUk6+3yAP<%}o-&v)? zZmQ1K`k))#`L73Ixv;K1B-5a-=k3S4y@8xFJciZxJP-xdD&xE?C059xz${{}p0>7! ztG|C+PeTKrmagt?=TjFy&EsR%)ZWS{-1+nsBYK-xtyeNa3`5nFxnDLb3up$p>5&t-no zbi7vN&!ii~BJf*l98Ppx1=PQAsl5QgzVkpn)`04oqVn-SC8}ZT!&&cqX$e<-shOn% z<3Ox~)ExaI{w&<{5(R`?*6O1CdriTw>sq)v$d((b$+E~(yjG4EgR1W|8CvKvGT_}? zf#`L)aR28*PCR#O;JUsbf?^oic_-N;sQ7oSIdRo?2#^UhXn3eM>OFUHYM=vQ#16P0 zVT>Gb<>aVoXfQh!7ESN>t6@_-@ooegYKsfLePK{0x(9n`aW@2jVkK7MWzwF+{`^f^ z#bZ1o8teDNa`%;OXy3DZ9Crm$QSVydC63%QB!Eu7iSrpu5U4N|(m=LvPtX=0`!dq% z;Bi2)DTUjPae}Xi@=8$@9yhh=$g$6wGxvs{e6n+L;z{;DbPoPZVQc#EQ6P0NdqJX4 z84=jv?dNTFuy6jobEh?A0q?#k*x4~Cn&f|Fg$b2P9*DCO+vAb?fe3{4-}lfQi>}@! zQTd;hCnO~;ts!(tl-ld^3R(@L-n%9i2WFUh4%x#I?ZRoqL?k5m91RvC42|VA_ynz# z!n-R8$gDm+6e0j_5C}xeConKDgLI4A=#8m8r6dQvs2VPX7MMlwcWUmA9Q-#~G21-l zes5@KpWoh6`@JnKElo|gi;V3(c~8qi(DDHd69G^{;2I>`TG>kukoqL4puZ-4E7PEU z%|x*DC5Skm?J0N7YY3%hj zd?6Zx$GsW=M8*XshzyfTVDUUeYgo{beXi*~C!Xm7{#UI!Z{AE(*Z)4K{1enYkqhsT z#ibx8KmPNWeBsYEMTmW3a%imt1wXAz{NvJu*6wDK^L^}Ig z3=0{N^62P@<9AQamoF}LRe|k;C6xQR8t~W|ZU5$JN5RN$R)9#Q$=X0X>&1-D>(~9I z%Pjf16)P8WPL`Hic`a;RyV6(3p4uJ39mt4+zhMv1rf{hr6-dBFQ1~fiSmo}vYe z?OBjzWpy8bTco?RjmU@c-lM>CZ3LZV&M=3MAcB~1cU6v1pmj8zeDyg~`nwi+`~*`R zGc2N+esL7f<)*NvSzwvCW!x^vy|zaGnYZLcg+L3c<{qRg0rwiy)psOnujSE4`aJx^ zZS7)Z$#d=Ke6?9z^7Z?IMUUe`wapis$xjie;!jEDzoxS8Hi~n-vDOJgMn#OVf1azq zd{OVU=+f4+S6t#Cy}Rd%I~Jy)Y80PaCN!(TfF3~?10iIix6tRIt2ON^os?~vhBrn6 zySc6aP9@NSFd7M2G&1uBN8FY;QtIA*evIn!9s0m!5A7GoE!VV)Z`JL1FsM4 zfO~C9>q!SUi8h^Iek{R0jhT8`TYok?Gs|4*c(~0$)kCx= zB=sxKW6#?c{y(Gq)Ur?z__g^&Agbnu(pAo&Br3 zZ*_HekCJ7dMe=j%e7!aC?B?A!ZC|~@pmA5plSxK|%O*2Ul+*YW+@<7KQ}mX4i(K*N zJHxhbfoPXVm#H*vemU-c3`Jbd1z?!7Snlbjuo77a>QBzR7 zqJkVP?hT6w+4WJR*?V(J%KRJd6&6oG7sotov(mKHPx*2035#AzwyFgji-_Yu5xu@k zJ}#VvYD>W{F2J=jQsTAgv`ZfC?&$17Fx*kv{h3KxnwEo|>(}+nnBTtJP=dkk=Fy_< zhenS*K(ps6zc6g=jW$h;MSlndEp1OO4bwl@%z7klH{-$lE9qL!Vs%Lyh*GoK_rbF} z+?|~GYm()UO@>0nNdle=9+G>Vn8LYTFUz56OIX5cf$Qo!BtsG&v+nn-V8Xx zxI<6Q-4r6&!($P-W!ny4Znb_A_MX9Vf}h?>*=If%-|*Z{BD2PEByMf#o~n!wI;qK9 zW^wGgy>*W#AHebwypVcH6B{Gbi)HgMdlO&&U1uU1Z|>53c@^^#qs<~Y(S_7+k}32E z^29KD(K%N3q5E4$-3qP)ns$nP|Hx;v`JOm!I%VIU>*VCKV4hd}SN;>!va+%?#CJFe zRfU2?JgOe?@$q?B0z2>B-A#}K^q!wyCfm#T{f^C$5=iWqi3rm9C}&p2)4Q(%XL}o_ z0FM4 zQT3Y!>lQHhn@@P@cHX4k98z9ZmJ7M4M{%|2+dVd~L4*g30x&iV&s{DxkK#&t$eUMh zt>aJcA`lG_O|Zy+p>87{cz>Wv z!q{u8oB_j7^v0rn%l%g0xvlP+&3NO2n>eQ%hi;Z1~} z0yd4@Z~jEEPq?mDsH}U;Fyv`U&J{@pH@=iCn@x|aosg2>*K-M@fMD%lU5ol7s(bz- znTl{(s4mg=?_O@QkKfc6g#(AZC#csXOhYu2?qLrX%9+r1rYa-1REN)@XkN9(a6j>$ ziE&(*RgIpdNuj2$EZJiFC6<&vz0tqxI2P3Y1VQrQ)a${*X(z94ai^eB(jU-@|Az5MIByt%^0i9iY!bs z_pXVU!?R_e+_ta3W=;DFEbg_h^}P_zos13#q)GH3o_5gty9~xL1Gt%Q)fn}F_j;oG zr6S3~NwbByvSdi*heAm>Ch_G!|0v zwycu9X~HJ0QntV{p|E|&K;RX**IVU`X9o7^cO^nEzK6U>!r(X95=pU@AM(Q*nGokv z1q<6czhQ*H?XO-Y@}qNK5xj;0l*f!XseY;irGfNrUc>ocZ1-Od4vvQ{%z*7*9a4`=h3H)8?lQ-lMfCD=6ia2GLdEZkVjJdV?C7o z>f(Z+xJ>~O38^HY&~}SGfLo#H!hiF#Z0rHmqH@EE`$8WkT;64=3r`);jMbB+y3V}`cdG~qyV5iL`DO5;O^6?d1f3ew`Z$FI1>ng?bd@uR3=~A3~A*CHuemE*gMeXx>lGL;^j z;G&YrXN4#x(NyVx*^bvKh1iMr$LlVB{@ZfdWgo{UDlR3Wf8LTtRb(MuPf_pg?ZJRk z!~(4;&zQM)Nu*qc61&~6d=}p1x5l2Ie=2G~z7M>Yh{{11{%wx}hj<4Lez>hm{b{4^ zqMb$Q87Fs7y-L7s|8?=`R{33F5!9Ek(3z1IQBo%xL@TA;0eXvxiJ9&~|I;1}e;I@{ z^Wnpd^Qa#2pn=cyL3G^)sk`rLOUuu9N$(FY{eDVHLT)W2(3?yOLA3Wz-#Ej&eIDCq zX!ddZwExxB0zQ^nG!?U-y-S^IBp!4h{g9Z@Y8g~0Y`3WNu8^g*3~l-FES80UM#4)e z1N8P+TzVBr(Ajn9Cfh&352KmqN?)ZEdqoa!vUcuaxw^WJr|s^QyCPwDwhbHaJHZm_ z8*z4Jz+4MT@`%A3VL{=O%MI#JFpa4{gqmz{gpGhu&$oq45q%OOf$;mNe~C|-g&Pa? z;A4wdt@jbU3PTGoh3{vN4|v0*`)Ny}m`RtD`pGQB@K@bTz_yr#%jgZ!%bGL;)H`1> zp&vioH4n=r?Hsna{kn&T?W8%crLPar?#D~yFCG=eaGFIY&6W;1BL-CK2pIBDv_>)&$MVqL$%bd)2c z{?IY{n#53Ct2*(u?HrC)OH}`I8fCao@hB-28rYM@1tGp2k(PGk4acRBmJ$*Wxc08^ zA`-w+j9>o?hiRon5zFa&@g~G&rTK)`-4+_}wx8%0qk17?d|KB%dBx3+k`~5`E9k~H?2AhIvL%AkLN^$ z{DxCTYfU<6%5J!&BJ;zC>Iva82wtF6C#9?#=98Dst&doK6{9o@dus;Ei~>K zsVu%{Vv1kbVpSW3TNLCMa(h_c3j=P7e_rSdjpy}#U7gr(cYPlp$3>OrPp~f^pE;Vb zN-gfoMz|k8FwnOsX!k)qMMlPw9K+pYVO#LN9h=Y|N%!COl&qMdj_LT}AiCqo=Lyso zRJf~V=UlA7G;WiF$Aj2qKK*{Fp*?s{L!OJO?CL72?k&@-?YI@R-M8+jowF>6^;*Ny z9}aVF72dsykGN8#s42wmhD}K=kby(a`->VeFQQ`%zKVPJ6t*pIx=53Th2iqGU6GAs z%+;*;4wKmF8XAs1)%)a~dsi~O5{<&4ebrZzCdYPFu6a*T{ZEPTxKMJ#Ro4{&t9XgW zpwL~`45IxB-T9hmSw5`LXEt{jiHp|~0AI^So2fJ&h*8TTJ0v|lo%8G(UWF{u>04}N zdNcj1T6M9uwt7}Vg{=CYY3DOTNZ_DnXwh>i(IXb5-%;9$eHS17{QV_a+}SN0y$wZ< zo#B$U{xN76xUNdf$^9>$J?ySpKVIL5f2fX+H7snaE!o#qd`^GR6>*LFGjtDuuz2)zYoWf@UI$t&6sO}{?XFc!rg2(}cvcq&KX;S4Ww!lN5|Nby#|yBV*Xt)l zbY7+wZ_kOT9_$_USl!u%Six&F^Yp_iJ_P#;PI@t9;BH)Pcs zcYWN+9feaK>v?(;gNYELTo zp#g$H6xG(```q;sl3O@?kWWHnN9efz(RDK>Kn7p$Dfvn_e}_Z2A@~8WpVY^iTXQ~@g~(& z$Q-};S5?23n%BbGs}y7p9dHy9+)S3_?a4gDzgW>-Pi#ePk41{j-3^~1t#^3BB=$sU zlY2ZvzE56A&mrc*3n}=yphi2dB61O5n&6pP5r369)B0BX2+mJR=HCrBukP?Mo%?ot zEH6t@(ppL{tzSGxA-BsD#LA&%@n*K+1r%d2Q4JZ&=hq#oXBjp1o_bjXKN4|tn5%1f zprH_rSk+2w-Nk245U-R9n~8e*fJQr1KTKbZ~P=?7)LVolrQ_fn3fBqFMA zuD3t~M3Y{NP$@8{v6Ww4qeTdE{nD-45|P}=Fn86>dd@gdYW-H$yMKLO^#Aa5)d5vC z!5%K%4N6LPcVD`@Tclg1Lqb5LK}!14ASK-)Ati8;?uLt$bi+INz4!hCtx!k?fte&6jKkny=fG`J$BzDz`HsC3`Z!JgDlB6i2fV@JNK-&BD*b z30BzNURkt|x3_oi=E*C{__JZTx7*@q_241&vtwt?SZ~8;j%XS96<44#J44%*Z_>H2Y*taPMe08Vs5)P76r0kTEA5uwn(L*G0Uxg4? zf$e;Z{RHdP&20E69Six!IhT4PrsL;U9*qJT$T28=sA|0vwUcXVob;M*#!@{!p_nv4 zI1G^<+N-Pvi1HJmrlzrx3 z$df|tD)G1r_dQ;57=A9ZeQR^zd<+WQu}i zWs%7Xui@-u2_1dIW#7QTOW}sSK&2Mz=?(KA-*lx!#KVM_eH9!g1|Nd{St%I5w4F{1 z6>a?Q=bV+g4QzVvq_&}D>*Jj}ptu-*$lB}pNO-r-F6ipMkUW!p6BeU|2rO7TMHQ8{ zw#IM{I_GP45XGB4>5LZo#d`4W){Zp9<@1tFl@w(4>^<5*$3@Bx?5ok6-k; zYcGmVc%J5^ofhoUk5b4vhAmA`)UX5b%r0mWew@t+N;f9R~J3G6X#IRq#oZ}w_sJAqHQpj>`rACXDjJ%SlOzQ1VOgPcb4|(lI zQ)0bcl`B4HQ|zL9(?vd@U=RPsEV#-$dwRMX)k!af&>p#dhj#D^t( zcLY)7ejlt2=L_2Rngn$SyJH|Or1C@KD-&u>Whl-u;EC7Y3Q^L9b>(R{$`;*w#8R!C zp1Kj)oz(HAC8rKw6%#t6R;S^UlRN7}aI6Rchv<6>7>64dc7w6WZX(;{^3+ogcDofL z0J)6Q9$-&1L8V6XL4V+j>JcoRzbRh}q?}UyY8ULBtLgQeTn)z{kyTPEV`5^%-xqWy zR8O7!`Ss`I zt&B;w-d>zQ941}=Y|Wes?aD%qW6}9FYhTh~9#USQ?w{Z6=R~DRlPGt_vkDa(xp>MLKG13egiLkl66l9CF67fk&6^_o@M$0Fr@L{5?yzRdjC-A0j$ z{I2ZC%yPmmneS0cPBBs|zy*#aA0Y0(DOLwZrDl)_Jp$O*`8t4yuBDEFdT{l~99&2v z-l>zfSzMPOEmYk9;@b;x*CoP~(@4MC3)8wfa{S`RtSr-aTZ4G-?)%WROalz9_ny4y z=w)((qMWaALI8JXtr|q34IDg-8KG@gfi~ulSvxSqCCqt}eS1#zQ}`!omP|vxt34}Y z$YPV*6P*0BH@Ap--u+`5(Kx5XX`ZI_s{BJS(rumRJ~dQ;=DY8javf;-Zd)Q@m?72R z_L83!THCiv8N&pO>(oa0;LjeNMY!V_nL%jjlg{CkUH#>O(h~ zn<=Iv<#ni0i0kV5@$-*n@2&({p}Sn)p4Dj%p)JS<#DIa0u7+{`hacD8LSB!6%77Us zUPF_2E4ElWMtmp&4ZW`x&1MZEWs7u+D^Kzt*)%Dn=;z6UOe4e-J^2qiNVk)~=v@4r zLR<9dPt3_dg*=akqqFAJs))$^XNnNJzCLL-GOp+}w&{_49%}`8U*2kG2M#x{WI=He z_tIv=fQDnI+2%SC>RtegJQ(E3fN652P~Vxv^7o;06T*gcXaGX5sDxe{LkucEfdv^( zGA`|;ufZv`bSbB9j%|-YE|UwiA%S-HKA$T|Y7df#Xcz@&Z(PPBlUAdE`o_p|gX)*$ zb#`J$);x8!>_MjMczCu*B9sL<0OTDa`TgE1156GDo05-qoTnAFPzpkZD?NCOy8fUy z{8jmeTEk+oG015@5sX95_oBySys%P{!LED4Yn&bmrLm(dq;R=0*9aiG!i{U=boy{r!X9*gtnM?O3`Rjg zY3hLiJHndIRDCyljD0H(@ofbu0s6m-V{SdFiiJ6p*7lPszHiNUh4} zhPRanZgN~ke`6{`uEb2^uF@#<_OE3A!GY1chg(ks%SH+9Uk1K;*tZX5iMEKhg!0dk z5EHcXkJpGYA(U4~bb#Ww9rgfRR-U382fB|CmZ_vlL-x_E4kW^Ba?mH<=nZ?r%1*x= z3=!}b68dK~-(XOW2=>&=);LVsmT;vR=nlTy__B>0#l*=;GGb8ZzkQcVuBDei5ajVN*&TFSsadMa-;Z>pH8YTD*C>Ju@4_ijf0c%^PuPhdOtS7fGL@nZ|C ztphMuClge%)nsjl{Tdnz*7zR4o$`gPD`#wY81E&SU{t(>x%qKdnZv?y<{b8!8TxLv z-f#(QK7aSURpe{ysd^E#^UsL|8OdCXC52Jg9J!N!3q&F4mX`;Pr(AqB5Gw^y%i64byP`$y{8709i)EW6V0)npXwZ|5 z*t+Ueebd2LZPcbtNK6z7^k*SWw&7FWa&6MdN@Fvdfz0OXl&BwV89h3`vbBFUH3AsW zDF_qEZwlu93K|>s&Cx}#I9BVWMS-^YdYwxK3T9~%SaNyWp(}Z3JGTONm0X;Kg%!&y zos9GS?Bcw-r0>ZW`4*0BQEx9ssQ*RN-QiatQ3dY$8~AChGtRTK2HYi13|a;=Ma?MZ ziG9@UlrCC$*@kMBR%P~w4%n^`Y*19YzU&qz>%QCjZIhd5+p-UIGIB^vO5TA+;^HFTXJwMxq)M1bH!_I=o{>*Zz2Q4WtFTnpI`uVSUS46+Q zMO^!6&E!G_!f#kK$&BU6RA&g5$yDuysI&a1$g*Adu&j2m60qQmS_pkn5sjdv1!eTE z`)o0AU~57@zYTo2T@FcqrcXm>(x@A77ytzN`&kPYCPEWGqf;sntU0FlGy0)s#e3&K z_yQmHlDj6*Q+(^?PF3Al2Nkt@W4oyU^ZV@L_42*x{hQ2f;VvMIcV+n;xOnXp5*Nu& z3|n`L4F+fSt-lphL_IFoZd5F4SB(FAHAuRXT1i=*BqljuR1YCjvRUoCX z+YQmr&!Zv_jDvyURtp5zvhFd$YmU$-ip!JTrroi64kQQ|)rcuXyxy{o#Wy)qOZTo2 zqM@Jc?}J-WlXEpAQ}eYCElz(L{i+8h zx{u26(kxg)J%>UCAM_zM{?5|m8sCyNrs}lDfwysxL1Us0hNV5Z5W zUukYNurH9*9M7dLe}^z<~0j3hmwuP&;s#u!!az&U)OB0Ent-a8s< zS?|an3H($`DB|~Y;U~0BQli*dUKxjL_Y+h$dDc_P4z{$s8pcy>{-{J3tdAt-XB@9p z@@J}UdS+FuxZxs$r6Gj{`-e>o5`0Mn3KLsGAin9{&m}Ocl7Q#xcdgN zexeV#j}bFA=>`5oBASw}wqw7k?05dE*70|<&jb9FG*CkAFXUH(s~SaRP4)wJ zehHrMA1+SK&kr?ugf5=$d#PZUwO>;luGEom)7AFdvI6&YRLV+9y#c^~_&wd<{`=3z z7tokENeHXUCFK6&YHh>BW@xCW#QlqP0+2yP@;ms49t?!JBm{28L^5d7{|_Op%n^jJ zvXtY};aTrYu?awg)2auF#m4jxAsgDPMCt5XV4sMNv4w@m=6%2x;5u+%tGRTLN}?3h zFQ`1++|v}$lj?XpzMq{xbzR}SgD+et^~PSb$6bR@COptJCp3^`WPwM~WxKch+^ zDbz7GP7tC}x&1j8_5I(3^`qdx$D1_7!`cmxneXcd`gUBF97y&Y%$qyPc{8m~aC@$C zrZPn~M5xaj95@QTQuhqSqo)7ki>Oz37tywx^Oe&5sHAC=?Du>kv^%vZE?$hx{32de z_bdiHQZ2}7<&W%37r@Zq6_oQ2kHNM+2(6{fgj$4B5?4#nlY%UB==|^4_e)s`pUjSy3!LR zccq#5Y^b29;!Acxa7FDr9+1Kh7d!&|vH_uaBOd1pg_k9T&)%h#4#4q*67Tg?9x zcL#&P9yTmYP`)PbVD_ujM6!sb7`HJ+kJ1Kw$Nh)&)taB}AdYKHU&AN19#R;jn$f%2 zbn|}=n+kgP2=dz~7I6Zwm{8cO+eU$!l`GD*Ef}%n^MS+Usy`r~?$)2SFiMZeSpv>he z4%LnJRCQY;WX=xEiTgdQ;C%oqdKE=VgtKU51bn zi6^Y6sure{>nB--?gtU+#x6EaM(UKnhEvL?W@c8zlb`<50#2HF-$e^{E_}zEaLjeq ze8-=!m>_zj;{Qp|5zH8`Vo57#-FdG}KKhkAlx^npGiGV=q3GUJSvBlWgVWT?7{RZe zqJn|=XfKy>iN#e`$V>Ja{%Gcc5duP}NGRGrX@>cNS2wX>TZNj)^#kzio7y_`RKH`@ z7We2hxS}lw9`1Bax|EWg4kzs(3SyFHs*>LtMe#amzD@69pxaNj=0nUv>l(etkNf}@ z!MF$_%=CQlqg_}lTuSWwbL~YT{wx7Er$jlgiOoa;PYao5Dak~C(L(O7sKQ_m@j2i$ z!{LAH2@d23*N+uj5HqA>|9(eTIY=~AK28~zFK%M5SK#v>fk1EsHdWp+r&<2YjQ`a1 z^fva6rtjuYHLaDA!g^*(cnT^>(h1gD(n>8&@Zz__|CIU*p*2MiB4^se&CQ-Ip4{K- zz*}ekH(`!)pz@1NgdXDIaud)Wv2csZ`;zjL<)9=PG-R+YgNzr8H#ie0s?}0`^)z~E9MD_2#6ZtJI)F; zV2gEjWi2h~K)_M_qcCP+uG=#HVTY}?YEb)Qi)4CDbscP2FUCNuP5~n7AV;_0&^ZtX60c)d1wI2hVvWfPa=ys6b@RWl% zqQ~DWnw2^?Nwem+iGgkI16CC7UzM9&AEev7j^(~yN;~=5C`v*c*{e_eZYw58=bmK# z{SA)@s!#u}bbI-<|F8`g z+7lZYo7Zfxao?%VaF^6k7wu4vx#?ro&i%8`pHr3G41~`~Zj#>pHaFjN?S&Q3n~nak z5Sm}YJq+JZwa`OS#xKv$q1=)3mGX$X5=r!L$n)P3lkD+vk#iMjqu9LehFOhgR#?U$ zW4~Q+&v@dzi9qDQ7WQ?&-A~#T(>U5G3Lz;iZ%dOmoprGF(nsp~CH+Rs-TnMQkI~HW z0|^fsHcqr^>Q@65>7KI?qsTz3R7(9?$`T4{&qs;3s-1 z2trQQQae`l5G6Tzei`%SX>LYg`e*{>%XeCfC8Yvx410T=ce3*ub0d}So8Ifr&Qywg zDEQut2zrLRunh3PQKU{VxVj7U;Ao4z33VlhA;1)n}#To7e^{i>_PS;q-fTF|La;QH50 z`c z-t{Uf@+FJIX!GM4=hWn)M*HiCtzj|&8jeFBkv$KQpi{O^O{Pob5nkVdg)K6(CSzqR zdDQ1^7cL}K1JdSyJGgmLTAG%wm)qzi|b8e8KZYWE?DbU}iNiHQ~S^lTd||Ngud`XJ2J?N>|0kr-qwv@XtT=O4b= zJTN0cCKj)c+eLfI#CqpBJopPgJe^%`NIYe{&!?m88@Ch$@UDUr2w-z-7#<3Cj0Ac` zsAu>0V$1EqQlYB>DpW!e+O05lKlk~}I{k8fAU23vUk}Ki>ClJtFwj=ep~3PX;FCg_ zj_r(->gS@Jk7bnqOrsP}KjoYi$}L3#yNvT zz)En=M{K+6dfFa&gTs zfBeHk7Ahzqp)Mn{s%7FI5hWW>b@8|*H0Cwu+9a881P?Hd9z8xeVO3T*d6>_2*vKwi zvH;vO{AYxX6JustQY7{|he*sIHE&))?+DlB+t{oz%RhgP=d4P1Ed;H>$tjldsKn5PjEQDbCHqs4UH|-VnP@?Bm)itkAa*{CN5qU& zx9iNTto(9y#>|%=CIr>h`EO=3S#8ysh*-n?Iv%A)d0s((>lo_FDrm=j=L}iw$w_#~ zl9vrr!G{TIkbwX3Omqc)Iy&wZ5T@scfezma1?0CkHxKIj#K*o@R%Mc|Q#vDcceRF)dCpFNV;s#IuTv){nvOpa?$K(uCO8Q0Di0fC%(k_#!&nf%z^bzkz^ z8DTl|M{b0+U+XxUdxum}`?x84=|=x->pK-vYl)jCU)!Rrl2JJIM;;Gbq3NOK44(7eI3=Nsgy@X_K^ioO#8yJ$K z&@Xl~l6oc=iXz{(r>AExPLeC};Qh|PKU>vOj{f`47opRGpzwuw@%v-?a+No^z1l8J z*L=*Dp64kFIR$E+2GsoC+`o@IP7-SBDoaqhLeE}Vh zgbAgk7<~T0TaXbZ80S#PXc)ub2<^zPMavgsQPu(nwl#O`_Gg z*Lo(}rk_%wZL^~9PXFLw{YJx(7^pGomKaCFm^^}(u^PcntP!?|O{&7rV=;1BnJn6Zkz7;=Q>36XJdejnX_4_c=4vwX*_ zwC^$>5%$;1XvGIx@4H|aF3!zM(PAzy<>Dok7i2mw&TxBJXJ=<~1?bWA3UNx`897I| zmNvX+)MoFv{*A`XCsvGBGSSi=!2XSYoVFlIE0(d6`9BqThr}&~VD~RCP@DUA=#zv5 z*41$1_1shCg;WE9%h$7fOaaYjcUWqrIGHXxw&l|S{cm`Kif6_(93LAO*cJkJzS$S6 zR+(PONtnIUi}GtH8lswh`j}fIt&0u_EkQNpXado%#D1Ck_&V%6)u{5Rd7H04-mWC! zPZ1lVKy>fhABErkSeMnU$Fi&O=`eK?F~51Zr3>P-a!?Vo?s@g^ByG+Vvl=A>Io|&= zEs|Yx*x*0Mf*u_u>noSixO(JTjpcbZ+d$8d31 zN9F1kUbo*Snc3@$w(Uh#9qfjoZ4W4~sQXT+g(K=&o#;ml*yd}UM^Y;%Q>}Mjg{_fF zqlWCf3VU0usr>Q_Zd~dTny}($3eiZHS~*f49kN2Pw%@Le=XdGz>0GqLwwEW@nYmQQ zo4Ustf|5@e-xq`4wfXHUm~cJ*oj`L<;ct+mUE48ny_pK`+#D12a9dy7qZ!!KKC0Cg z8{vpA_FRHa8UHmmw{SmliU%SD-CN>N1$5+km&m_}ttCxeg{8oo6ryK8?iW`daTBvs?W}jX|WX!qyt$DWC;CgX#;!p8FrH@3XIl#ZQACt0ythfK^{X z03~gFTkn}nNW}T{K;&s_EC2Af7f15K&uUcy7%pUXWXy_GZ*sEtSf{!Pb% zk)8y5wd|`zMFF=d_)xAe9sPUYmljqS&nGPSY`uMDOxVfE83?{ZS%>ZI#;f;qX}@iX zf?XX?Eb4;QOC}|4fUE<}{1A_wgsNal#qryU#Z6Xb77o*9MQ|^!`aD5{Hn^$2@%hji zppVd6`;(&+Wns}!TUS*>g8-P1j@1F6r;AC37ghOhk1o0Az-y3e+uk*mQiYWD^ze%juh1D>kIbQ zl-*Ry3#K&wL1_;YQM8Fp0g3#kA~Em1TM4Lx&B`C0j~!}=vj=opGq|&|0wvSGL4H9& zY%C8?srg02QO z!Vy}B^|>Gfxu`J65v2LJvjLG0b2C}2t%49b6jBeH!3wF4zAut^oE?1**V%rbcU+B> zwQ~HyPOc}gj^+UoFBD~xm!~2|hy8-0gGl`@!B3McCu}WZJ^S8IAqb$8tga~%a~~~O zPH1Rv({~`w03NGXh~6ew@7ek}+XHbZMd&D@ zZC=l+{#qYyWzpPJtq7ha%mJ4m+kI&4C{Xd%bzZqGq=rAdy6fuJ`K04@+@uU{OF>@0 z@CSO1t_KI^pgog}RR2N4ySZsia4|~x1kIzAw?dR9XXOSHkWtfH@;YTO>xEj+{?*?^ z+8+3ar87>{W!{w0m0y4256E#8tmte zK0xF-jC(zJ<>sL7S+WdB=j9aHW;VbiX}Hif?_lNdU1mQ-_bK zDWFzSay%SZ5@R@m-+traKe1%XUYnLnLO3Bh0DqEIqAX)s!ZH99eA(()0f>z33!6P2 z(kTI$8<}DJXV@9wV`tZsG#k*efiyT*R8SuHIc?OSh zS%x!Oec%?SC|kC)6S|#Tgudcu!|1whG@X-0x z=>wL0?6Z9iA10YwHC5)7wY&uz5Te1X9lgK`1g!;c05JE!K!L|n%NlF7FrkN-9r?My zf7pq63zodRCio|fj-Rg4)ip}9#Bp;=Xdb$&hzqlGU!oBKv{1AI;26_>TfQ8zesOcM zK5#rsoRu6(CMeF~G5+JnI@v!Z2!sUo>^m`$Los4=!A(e_X!b9LnVGANsUhMQY8f-f z^L12!;y%S@K1c9WGr(@A*8!~{kyNH}6CpnuEx z-BE1V3|P|y93P8@a^4&7{0caxaqZFdT(~ynvqG#Qt&JF%ujJ9fFKj;t~e=bPxBMuDX^~`Fzrv!&Ie&K z|EJ|_x*0N`wTywNC!GbZ6%(Jr%XnK_cHatp%zLRblP-flp~Z!%*ea zlw47pZS58WksR_VVkiLt0D|42w9;3qMV~sy36KG{fWbyP$x#O(RfO2EoRz>s#yVdz zRC~iOTiS27W9){uC)xuU`4G<^a4Kk@_22;NaNOgGs0u#HC4-7DAhfFENiGOY5$UJg z76*Lx@Vo#VgJd>;R}MSyi01-=-~0F4LXg=C`scAuppG|@W5IDhm2<$mR?VClOxLR# zg~+-=CQKv?b&nkYa)L2OQCR6U=efFhyP7ppx}xqevY@YKwAiwQW3bfyJJI zaJ$hT-2>n8@mbX5{FnWqmkY)p2w;Z!2k;%gj7s$N=g&}@*$l6T4rx=SFXIswG{C)Y z)rUF?OyQTIQ{TiPoM!mgFuY8~EB#$5uFR=F~ zf0ekHa3Vcm_jr0ricd^^_G-S+Z8yGml`}qankX#^KN3Cty-cveraQLC9yc|F z^(@y33sG)W=&wxf3RMN% zGfwOkE3nvZwIZLbAy`9A4Q-V-TRkX^5ep9N0Kfe1xC7%t4YG^qp-{pMpB-dSFA0?b z7aU~Oin{88ulkcR{+TWlWME+YpVW$ey1H3Fcp-N?$R4F_nDAyFE`n44=mwF&$DSrx z+jN%($1x!Dp`5oJAB`iOPtzEGxXTXu=iUf~T&}v0gRc;HFGMpn7-6k!wy4+*@lR)Q7Ne&zdw85b=-Xpj=z*|CH`*D0gCCK6;((U>dr~{UdkX?t=iX4Ir4`EBo$wR>E?&}fbeSJ`&9_y))e0aa) zDHa(SFT(pJ)#k7lD99= z4AG19I<|_8k$D&0^3BLtT8-UVy3ejhSJu$=zMW>D z>|42{%}DK~Raywy@4fRFv(Qxp(Vy5LtVdd=A_XQQ17-pS%Z;RX{@W<+O>&^zANRuQ zAa&!!Hy5#$G7h{;*fQZP0|}`nj4m(9BE@9skU%6=<;*Cim=c!Mc;SY}V2)x|B0?~Z zl9l^&7y*t(2`IGyo*yth^Olw}ciQqn9=0EgR;?Gea9d^du5eneA_{0bWF ziYQ|6T@D0Dr|YLbD>#JGcg=%rw>DpwfzypxUp}zBxt4`W_gkDIK(^c4v3M<(Dguri zTn357M7$xKY>c16l2K+LIN2hE>(IfeqHE)HCdYrjUd_uf}v@Wzf&O^?ik z{7>vmZfjSn>M`zK+traMJ`fzud4U}ffr>|hwu#Ww=P$~$apPFB!av$OCl1%$B@s^R z?&~^cg3>xkapOu)7oxuFI%KN=-0WC16UJLKCk{(^{ox#(BKtGfqiIxqSo&nm!WdNN z{RmN$eMfGAh(aP|>H!_n5@{g*p)Kb`npAw5d#>@wr&R4=wU{74FRNxO-EXX_cy!d^ zAE}bPL{6k2NTK(3QmU{2$29i1e?%WL@79;LB!*R-fCyY4!TUfIs+A7Oh=Jwd$TCWA-oD1>;D5yvf6559cj}hkJ^(_u&3RM#0~P+*$*6+s!sY z=y*Xg{t1kr(kw1;q88QPvJA>z^|dx8m9aq;qXM!7nV z^*Na{t{-H6tmwoGq+;$T)R~O^0xNii1Zp$MK%^FdO0%q~qVu$Y{W>$qWO{`IwP95C zOYxwGpSZ_|hm|&i+aeykyDY17zrc{TeV>+Sbenw^8_p-^icQ6A#V%rnzj->(xygxi zUAQn}J4hu73{1ca{msKkNDYO2@Oatbgu0h7;u=z=RFy7Ek`|kDe0)r@VVY*yG;qyX zi@WJGM2OfLN*$J^$IlMYK1`RM_f~vAnN}l4;?zAM1qUY@SCiSXebUH{aM%vUC}T>^ zXiJt3SdmSsq$fnr&bhd=7)1!Y zCtohY_3}t8R1cIBpP(niq7+MMBdwwXTI=RY@>1Q&;q4MTs1Y382x>&{WF`9f(TdyU z7(;#JE6m;>(J(o`q~L_~SZFaN0@`x79~YEQ+)(C#>i73XwMd2;I2XusW*2V47j!|1Xd7IpObnr7v zCz@H@>gCtdT1>OP!c>RTd$ui%bY54^_0qdlw9=TG3$O3Aq{LDdeOi$P!7aIb2U$$v+q{Vl$Ai{NXw^rp+ zsW6DrK%1hL@$7v;X62c$pl032S5$JS{oL}%`cMPB@{~L%M2}IobC)6S0I7&?YoFjv z&0KK8cx8~B$DZ~N&q#Al180{@0H&FswfA&sUFbkX!q%a0?R3TuA^PMG$ccyVUaaz| zrG``f271BKB(;3?Vu8|=Al^!gg0e@I-XVl|q5iz4(}sS_hal_!r9Cn26?%K;MtBdt zzr<&SbqqFsZZOc-e=6^A!T*^{CT}&k`;I1YFeRHNV~DLeD1F$>Kdme)a$tK2JEl0> z)nB!DP6*y2}wb$Mn-B2~4K9{TOu zN3cJfvcu=^KWn9KoTP7X5+)xbm2O0p$=(_E!@4b1pwrTcoqks-S3Q-N9 zb66rh5Y~vKtm{yhYcDrtuW^Q+GKPuW_pbPMD;U|v=5+XbA2<0Q2eP~lWuniE467;@%o$K;Gq@EUDyFAh9FUMJFc3#V z3SYowWJDoTf$WniLP}VjU0i0ZT-+JTE#&9LgR|ti4R!VOevr9!qIGpW!OOTRr)h~C z^~SfP{mLlr4xy{l5*Vk3#H6KN>3VFenRShSj*Z@Bhh}Gs(?N@wN9MX)1=dCzBp zgi0AUGe=&FPG;y_vw!Ok1qI13BWKe}-9;*CYl9I~Kg6$=-4YZxe`YW9r2q0l9}!&H z#n=3$t`P|q6lgk?P(VYIUICez=>W}f<_+zQZy4U}0%=ZU3lhXp)%})Yk_w8%Xjoa& z-{uPyTi-J=DMB6u+%6|L5tc3QG3yf)&=mX_o&e8ix$SA>w~C-D_4wY)y|;g+m|KM0 z;Ym15gT0?_C=cd5^RErZ`aYA*OAGZA8&nMTh$?& znzqj`sPKr!uI<3A=3MAa7?K{M*gk&jQ3jrTyn(SoD=Ew-X`l`->7b{E_Dye-81ODH za9$^o4Mc<$+U$U}m0SJ3Oo9^0#(7E} z`49qcue#P7W>t;X?-&`g!EfpSE?$)%jnP|6bvQZja1%AIuA=#(0A2CRE#%-i*Q@41N?Z zL>OdZVya-mCrE1NJ|6*R%0tS+WSTJRGe0%DzYm$oynFils@!`!PO^BJu&kv>8 ztak491>Q@Pa)VVY!R7j3rSCrwk>wKFGe|hCa2yzUfFd{m5!)_;lY-I1IiD zj?Zuz?Tkq$)o0Mx4rmn~)Aa%>gJF8)M|6Ug7hIoLMFjBT7urCBp>@-s!r~|JjV}QM zgOv7r5o;CCw7oCCm3?luWo`kL#ZgJZ$3O0Ihsu#U6>1gPH0?M0LSw7L{M;_rpN#w6 z|LpJMxE>v?t*;L~W_DP<)L#(i=7fayloe;PyOnPwk$k?^d*QCdF-{v0Zm`)UZjv#MT=ji` zG<+=~;Y78rH7GYeK3;u%dw*X6R0(u*(l-=+e~Rfhs;56KqiB!0)Z$3{E8U-rV9o)h zZkeu(HpSmn1QE= zWWTmBzS?0<^`MKA6_LcT?Z2^6kBD%qp$U16J$34AX~@2EDlaRdXzXL?xxG+-JHj5F z{yl>}R;`k*lsCdHQCeUt8Z+$U8)OA%=L%Y7_}TEPcRa6EGSLt-2IzV!$cMoi!{7mX zeAs6g`$5)8`cdiZaXF-vT!rWI$IaR9MWQ`&)_^5j(9=L0SF2Up51Ls1-=U{!?}6Sj z`FE?iV>w9OV=hN# z!X5G_sV~X!>gwii7hOiaW{sgr%UCI@+EM0imii2>bod7;F-S{s^YTJ7m(Nc}9kHWT@xUt@q5*PAURJUp)wW5%3Uy7A5^t?3B~dFg=Hg=@8v zz>HBXNUcQ;GV3+`j;(KXRY?UGCk5@3N$n3De)((t+1tB`4Yz~Pn}RxAAN;bBNG&~& zEA${zMM4#{Bkto=uZt*dhxxK3K9F8g36)N&eO9}+BDmQ)T&;+`{RHeYNzyclOQlEr z9A65*bC9BEB529l@y)qs&`t69xGFN3D0oRrS?=IbP<5^Jhu3*&Z@y025jX^y8JShj zU6w)mUWcSA1BLxHgI-!JX<$(ik=nB&!J)ErA~k_=8X?_3Ym!g&H~c*p&Vo zXq8?2-!hE5Q)5)=Dv6yxD1gM7``(m7x3~B3U^YTW z3cs<1%(gT;;@i9C^)DY7Baw~>5K<-?XgdC->se~2`3DFLb{L|92BC-<)XK{JF+qtx zXtFJIkslCx|L&LsS$h5!8Q~M%`62GF7uY4U*eGM;iFJK*#~V`bCoR*f2q8j|8{PH$ zAC9iUp|Y=wW^1x-PUhsAY}?jk+xBGFWZO1g*3^Wl-o(jG{O<4TALzV$?zw00wbowC z5idglg*;}HGVdDdi`V7FITn7Z^2`Bd?(nn#N=luIN|vsqv~<14w{MF8p9kA5VI9KC z%t#f&W45uyn(B(!ni~~01T}{dn?@mDyqaIE`-iae>Jfd=?~23DDAjz zt}Z#J0P<;z=9|`*%*JYI7w%dPoIsK2ulX;@wk1Sg)m&-QKm^LZk?Cd29Q=ZmM2^3J zX<~im2TjKEkCio1tn*syscQPfZx!Yy(vun`0{J!7y2P#33{^Yh=o zVbF+m_p)w9r6c*Y)@`AgNq3+ zl%QA89o_Muz1ZTf`n6Tt(Yosz_s{*(#pRBAv(+JRgO;c!ead2h#;>?2>v*ug#p|%r zbRJoYdaW2Bs8pqr?b2bodz;5yfJZ|SQcxMfdW>m9M`wMA$VG`QOU}(QBWin0JJ5*T z&eJwrzw zRU{V5Ll{b(Mw90k>0iDzEV31vpC9I;6*6Ne-5kz#F;i2E_Za_8 zzqB+)tF`4QbdPCCcX(&XXB~}`4#S3osM*H=I zmRjnA(SsvGqZy=pKK}p-zA^XvoE{1e#>876|JP7mrmmXf3?77mnlouT-CTky zjpNMaAi(`3i|Ife8Y)rL*RpK~3&e-kt=tJ*f=}~XQ$CB;CHwmRtNOxYL=W{5tO8^h zXXvhq`T4-7>gbULZSx46Doaa7Hg(zcBa}^;3f2gXes^}UD2IgDKl}D+msX5eIU=@GyL$%+MndB*N_iz_esPzr; zbiWDS1JNTOCxrwLes=M=jTF>&9IVIVvFb{3*)PGNPS--Zr2BU}If+KsOoW7l1-q-V zUd(kho_nSVgWvZSCSYBZ3lzO)ggF`oSbkze)F3IEjQ=WNFs&lg#o5Wi*Me0ijM*tB z!Vlp@-xC@;rTKXbVqzZF6?gm=0|bu9&$x5n{O}l^?Oxvr;n&5)u{Mu4Gs;6M{lT zSDm4C$nMt9iaKO?B=?qSx6E|SQx=c|mHsz||Eecn(;C_kqb|GhHIBsO%;36?WE6bT`r1g5OPCM{8)vx|en zr)+fCh;P$8H>*1;Of`1=a(qwLMfR%*?g6ECaD-CZ$tYY%d_f`Ycb+0yA(s{#F+IeiN(x|YO~^kg6a*H$jA2Be^vmB-&n6gRQ__Uy!~UG2u~+m6qsGjgh@?y zgXCP2sC_{rz<`Z_4B@UFkcbhk^{1MfSvbM4*(I>S2Gepw?UVp1DLVnr$XxHet-Y}@ zz9n$o+PQ$ER5y&78IFB1toZe6@Sq7!@y*}A!FRJUzE%$RQmM8iy-8={U}ogFaG01< zz!5VrEKLf5%M&I9=z3GXnsHbs*Lf@VCMraSihpnkP?`)TM~!DAj(n|M>eI6Y=4b|hl6`Z-voYeAZC7Oa9;GJ%oh$& z-4<-OtY#6xDtCe}BG*iGruIs*=nN;QJ??Ak)GgzSCUsZ2U1W6-`g?j?nId;GBN)$;8`vx7H7?TUNIy zHzOj;jn~`xS8yN{ix{Av|9>HoWSf4X>6MCs`Rw|MKrFl8XAK3V_N<>3&Hg_X>jodi zY@svnA*}D^&uvo|?{MIsg`PuW|FLPNL_*qW29YVhZv>jyrKrEEV`6(1MV$@F*L;-#;4^49x(%9IqFwgi`96nkLWsH!m{xqrEmDsF4@*k?vYMOR*sIOC~3oE6??X`=Z@6+iXud?O{I z(CE!h8o}KlFTh6UcTG2f`|5%{`OME<_vI1-Hc%p9$_zYi;!)BiuM`SZ6_@WWKkNO& zW~b*DWs8W~+Zhqv<6=d5+uUt>b(pG8fma6T-ge`}G(Fx#8pmfSn?bd!8$sPj(Px;L zX=pUj)Y_D#9T1)edw_RQs_-zje{|N%*Zu*Q`@hi$XsCV?cp;a6h&tOnJG)-yy+iu% zwe&H?#g#2yBBLg>l37$$=wYo=T{E2H8LFzPX#j@|Ar8<_s2%1joH@vuJ8bNXYh0Ue zYJ|Dolh^*$(E4i291GWj`Z3CBJ~=riSvbUiu6W8mWO)i_ zI{T8MEc##Gx-`)F8KsOMLQX))mhjQQ2x6%tCa@{*2kA@?$rq)iF6$21)-A+@nbMMZ zNoCRd&?_+;3D3+*kYl`dkh3!wkYgt8{d%E?^2b1s!oVd(?0<*c+y8?qpShJF&xM2* zLuzVQFqjbOl{H0Y@3s!u{@7k@wHfiX3r&mAKhYS%ba#0ipa%I$*GnO^J|2@}iVdsG zm&!br$SlzKl{7xwBzg^t^pgN2n7E)%N zcm4Yj5C9ETXe|-;WW>A4j|E-M!Qp`i#$j3$lQ2ha^?DH3_2GVcjxghm->%Rs!eiAF zgOb6IBm0&p@iw0?81$7^%Cv6tgcv4$bL(eGoM`E1UV9v{RsmE(BWe_V|4$mK_}?oE zmEW!V`74vH3%k0aGC-p6yD`*dK_DNa|9-0sS3B1Kk3$Fj5-eAI z#4sW3GYw2S0Y34XRFUSmJ1^3(+aOF*HBzmsaVZ#CN+c~-@lN}fY5A9qmWPyXY7xO{nE44N#@diQKKWZenr;Mv zwKDC5zl+-~{a_!Y^O+w@oo{GsR6vqP4=pC3I1f86(4%>gu!MwBqC@dZ}1vrOR)KOWqDyR z1e$GdtpayQo&fesF02fp`c1}ZBl&7WIG6ZxHcuO|%dVIZI( z!Yi{mr*aSf^ud)EJpbo_GRlEU#JuccL0QW-KR+M1)EnxSbpAqR(B*2GH}josMDXer zm7~SY$MA>Jyiu(=Fl-r3x&dClwn{hfp`-6-`WBa@Xv6d6W=ZPG(PNs({h}Ze{{# ztTWDydkF22(N~Ce*75ny+{(|!Tab%~TS86ld1Zxi0`W5^F&rtW5w#*r@w89+ zkg71sIg!IBGmdLUdf@Kldt3jMQO9n`_p)P| zxOhs^j-B>V@c+9>2N#?e682RC!pwwAV$xj?B3=A31za#RLZw7%UWqVt{%n3oz53}y zuV%jJ@(?4H=UpOMFM<7*x#5YSioPdE@JHzQI13a_rVGR`5mt#cKHPBwv_R*ab~C=LFY?_T}zxw70Nr z8DVSsT2wQ6eL4+|)h5rn=||~*aDHwlchL^DiIGhzvst1;^2_eGsd8@o9H1PSZrK`9 zFCx%dOomY-$ESZ;&ir2jpnDTV0$;y;t_i{Dx;i@J(@sxX+_YBQ;IZKLvzBkdo0FR1CsYDn?XY>S{+1@IQ}0v4 zw_-7CFS2y)wd&rH%!G?@5ddp`IxI~ZdRQbu5_$PsTABwnH!VjYhrLHDcc$$2@&&1if*f6vB0VPj7{ z7*u{ba^=~77~FTUm2ab;NnjNt!*A+mTk|> zoKypi={x8XGqmuL(!h%Z8-ZwFcw)o&%OpKR+ZDmRI}*jcR4e52NH^`CUhXdt8Si5K zn)LTb+j!_DN(BF;WkEP>`G+#+C%D&*ulrf>k3uLvuCIac$zShhg6o0rmpvaaKAy6O zd{4u1y>O|WU0rFD7^7Svp|Db23MUsqjo9YaU*n!Ra^`pDH`#)5!it20P>)}Z= zn)hSjRaGr~|NBrc&Hb@HZdl)&VWWGtP^p73vu<D*7l)DR)XnL2NOHs3FIjr}8+n3$Z43k8b_ zhq{y21Vf%hZ(BFBixergt9h2@V~V4rk@=R#{*>Yk7uCG@GhIj^E~KKy>Pj^pSOZXd zR5`D(f?j!Qi_QZpWeW%z&DWhG%s(I2K4bwVdP7%NK@j~fmx5XTLWj%BB19h@Na2Si zLhLIrAA$k^;1U`-l;X>U6~5`rC7Hr%LWG*YvUGocpAZ%n2LE^-@O1i{cgyq>yMic7 zC{R1y2%psYv#3%>&MPrqe-7X6hqUR`nlY$t&+MxFt(TcSPk?4lKuTgL0r!>Naer^` zGZEfU9Pn_vwfaQqeprB$LoPLRv7Zy@L4sbtYFuUklPtcZp(Hag*11~d-`Um$A%J}V zCPru@iV|f*sia6SN50efvkl;!E9T_%{ylBI#|0VFMzH5dpwO-T-)BB*7)Hh#*-LMy zP;1>|V1P{b_?YK3v7~@$L&8@Dpcpe963qmm&H_@t)x`jS0uNm9)-#+`h|`${6^Ke23;c2!B)Xpkj5oQG-tI?{r5a#_d${1t z2ndfogYi^LqW;>q4iVTWFT8@HCqG1d`r?!^M&@|gK(ZQduM!k=9SDE|o`P8j7b=X> zrMkFOSLW_?)gD#&k(HG-IX!RI&b^Lz=I2oJEUL<6isd{LeMECC;VegoTIOa^_jL;I zOwHNO)G2)hH4s(rJScSu1%(pO?NSD8mXqe3XiIg zX!9|F7KDBgptFyE4q11fRZ12VpOhgcElnE(E2e{YqEhk^B9uV6QzVaWD?~fE&gL>8 zO5b1Ybg|vInEky>fZtCnu~pPmF+KrnU+3>XE7fsR=YetRlU;zk2EOS>H2$19)u+B~ zO9s)p$3O!O1{djBnfJ=t+Bt@mEV;_eOdi{D`l0KRjHScuGS{Ez_YY0ZPOH8QD=E$# z%!{rAUAT3JEUYg;2htO}0gQjbg#Z2hI?^&CklKeqOekk2hM@&xRT?C|D^?(yQa>Kw zN;Z(`*&h_0p!}q@vxP^*CW%-u;Z`|4e4UE=5&T)FZ+xhh2Mf66XUk3s0-&MU|bD{dJ<@A(jaN$?s zZ{WR)Tc!s&Qzey1em~GAnP+L{tPEx^yF_uqI2P%8Y0Aj({~*XW@yhP6JAEo4kFOO^T5YrjU^V(1&*dn^*do zGN`_*#R=?0exI8%ptg98q2vD$(#oByVDt6$P1ONTsAXBuAZ7yZ(TGm+-06hBp!735 z97(itvVmI1yN~Y+0b^sP-uMtdqmY0AobL;~EPY*Y;yfvRO>JcDxdDc(+6K2d`GFjV zAW|BAM(v;Al#f>f$OvtVo$xId-H6cRZ%J;YNq z_!BYlECpyYj}6RNj+r<=Z*-JDC5;1~AoUa9&vH&AITWfWZ-d3%W;NT(jqK4`_Du*9 zJ~L;WoBL7B1gs}-ko(qSR_03VhAxh4x`3RV?>B5n4zs(9OgOM2K)P@~H=17fI5

!%|H9o|0~UF z>vZdW7r#!}&Mxj=97BYB!D)tukXqkhn2@s8{B}PHvshi^dBGk&_C^WUw-j-Klw+W8JQgY z`AZis|HSC%SSQ11qKl%b{1`*CQe+Q6P+u;)9Ee47p(K1h3Z?V~MQH_@IwJL$y( zFVTU6hj=g~ve3dz2BOwWs#WnG613;v1) zgc1gnHw+(boOwS}VT`%K1|aOgrY>kaP=d(OVn))uvRYuNL))5}Z~+w@OWG8RI|k1z z8!bb(RtAj9;8fv(cAHzwTCu@9a5OYH$Q#M>r8fmVA=x-IQx>Q)N`BRF|G)-Xss$6Q zr?8p9eLxZ%)elseNeS4I2yf5uVc~trowK9I4$}s=fv#S?hLa9&x#czn#~1p~^CZ4V zeez&+hW8A~L%#j6oK?OvI*T$tzV*O?Uc(3TjHDKo&hD6x5@w_*%F^AGhO<0Ih%AJ z)JwbY@z4I;`YwScrsBRt_!HKLtAm$V9^lzefT9z<$GD)zvD>+QH*MOyg`Ro#NxrrZ zyl}`BHN7m-y+YGY3(6k!jb< zCo7u7<$^-Ot@l{xJ;6JE=uApY_2q0EN9uy1U>WNz1{HCP#AekBn661wHDoCMwE-~0 z8DmMCcuNC>*W5aUV~ZhfF6_~bb;ku-am)hLYUinYVK)Z~?cTMMMqSacdCNxHym32y z>?8lm9m6*Ik$1gMJH6HwVYl(HDEnOFoD?=(%W?3P0-=TX0{`ye;cHxIVT~Uh9p!V3 zp+uZ7S7=#xE@s{RcVT*F@`c&anZs9yE+6SV_2T~7+1Wn#pwl-{)(rstivRe9`#%Kh zyN~|Pzx~YbjgF81Ul%W3eB;>Icq@mbWG3xkCM{>GWZvS&yL$C9J@lP#(h cJ16l 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 LlNGHH*7N^=fgqmT literal 57264 zcmeFYWmjBH7dD6{NN{&|3+~W(aEIW*-Q6L$yIbSI-7UC7<8Ddt;2m71xu1FG!+e-u zFs#L**WuK)rMA_s-BBt^GAKxdNKjBvD6(H9)u5nYK<~c@A0SUUv}JOkpmscECB-zn z*8lbgL!Lne0beTcDq!9}{{KJ!UmCEu2oSGk9i)$^d%@AemLyljOX8JeZ; zXKaj9>yMB}nWML*n*Y*DbgAj=jAZ2BUm}*h_)@v>M^hKFwLgD0`S+F}%Kj65n7c(H zgnfU~D6F9=L%pPC;v2aPdH=JDol$yLPUQ)#ti5c@qS=8oAsiGGVCSs}1EWpWr?pZf zJvI5{(*jTx@-moYW5wdYRP$eL$qtQXL}Q2tG!zu*#;$H+%9kciR)DsmGqt7}1!7$J ziwpul-2{b@rYIlroZwhcJlA?N-_Dp9UR~DkBsFJ^zR{3dQ3kwmm zCpo2eUz^M?DW?f55kP*Zsw|_9Yt^mEu_k+GiiUF8)0azoX(ib(KGN5&uEhOa=;}(J zI^^O9ZP_P|8`TZ%IS$CfNAadLeIkre!Oxk>T1(9(24@~mTGOf z_8)rM-oB7fj}R7oYNGLuDt^c;X_)Gsy=5f)?@e1$KJdfL*6cISCjM20ov+JcU7T|J zlFb8G@q_b*trZ%C5Uh1OyMT+0(CqA~@AlWfv;y`R*O?4NvUZM$lPOWQTj~EjRATlCQ>M}Z@GLD4) zIiQAHyr4LtJOOR`V%8yI!^!lI_lq5qYo!K2;ceN~(4)R!QxcdUz^5c%KVE<+RuIIJ zxhQ7QNR#dMgeNEWXd&d7K_a!ZcveO=YqQeDj=||@3ds093bd|_1+#d_VFUlj5gd+Q z&O*Qsx;!}sW^zza3Q6>p1w>%{(bJZ;mo|`z#bFlyIZLY$zz=qQ-=_WMnsey#|l2JU`q=h6R}La`U^A&f;ZFiM7ae_Zfc;&n0VG z6sVtn@T|xlSHmG%$Xvsq{qU?;p&`&4C||u@WngYvTV=?9$jadl1w~t;Uz>;G-<_ck zWI{U$6h_`U{pY~J{%zOZRkcU8FO5W8_;6Df9qxIb8VV`}{lUu>!~%}VsPb4 zyvSy*zAoMHRsUBrWCK&=N*moS@nssPXZ6O(utY3PGG)TV_rBvUXfCPpz`l&_yLc<1 zLItrS`ajF+G_o1>(cm4WXOWniWKto|bXe+sxl5h?dPa^=>kLxG_@6+e2@aaZe-b!li(~6olpDYxV^ptNO{$qPN^Yh^LRtOJHm@#o1yc7d!*mu3- z2t9K7@C86Pz8Y7B#aw%|yq3EP^&(IDHEGQ18&M6<(UR z))gY1h1!6J`bm+c!1HjW-mAefYdMqW*qP;IZQaoTaEuy*ru~T3v2`wjh1{$ZbOr;p zs~;RcyVYS-fpai2L|3l2rG#(k@;Pbt@RYX!z*MT#WB_rJWTo z>#0%bC5fL8KP2m;)H+Fh$e4T?EYPKo9d?OIW(cf=@6ZZxszS4GnYU8kS1%vB3X^{?NnzK>N{(@2}ZNK@Si<*yvTR0tzRw-uLJ%hUEEdo?ums7 zFDYSm|4Uas>08w~B1nDr&>papq0Lt@b}M9VW)|uOC@(1iBU5Nyvl`=v8)uULa$6BL z#|BNa)I8paze!2jdhKU^8@X6-sZw32K9&QKzZD>a`$sN^q#*rGzWpL91ASO-avz>L z^|jr$ZGFde-mo>Hv9UGO3_wR)OGSZ6=v~hKY4EdxlMW-5@hUxet$s&kL72myx#=@B zbLc7pVX9)70~*q)FFA0Qjna=7r(5k=*6=u>>!yRUr44r8@FbDqWvV;s_vWU)i&oc< zijJ`OX0qb=T3%XvQIFh{6C!#Rmbl~;vT_`zUl)?nBl}kl=I@dKf?>ekn*@{aH8C@lPt{Ph)Nt><2OJ+2sdclUVZzp9$vMBq&%fwZ zpQYsHaVoyH3adDcO>m5MWZl>D_18%TOHBN}!OUlf?r0gTZG65+_n$$L(FzSRwUK|V zJV>C)BL5j|WuLa99(l=)grAWt`<9BTSk<3F4pcsjps$y)%pioHtFkC^x2W>A?h}u6 zU+z*VrjfTWK3(oE`D?#1voDn6>vMuaY`o;KgW56rmY7TsBY!)8FnuhRV39K|O+rGl zxUwRXx8+z#j=H*{?Dhcb!!ufHBq=%Mwa?(rv4aHR?GqOHO!hijEal!(tH%reC?5vR zyJJKk^kzY$FaiNy=Xs&lc!v?y5Z!K>Iy)I4A zXQD~lJ)=rFJf&Hv77>GDJv}{KpFabNi;GVTb8e^BniwM$qwX`K_dC26Orko_Nl90j zWQ1*sicFI4E~u+U`kJvQ-PNpC+uj%r9{GlXa@B>rcjRCgJtysPddhM~R*p$6JcF~VsnEsI$^bjqEXGLYh*6>CLXP|P;B3Q|a)@?qUEIn!_1l{NK za6(7_lKXw%p4Nrg#7?9>hkp>wug~OAsM@Wfjdg+bD=88myZf6(CIQ?PV0gm|YS76{ zySO&nEG5&xRAJ~TQd@`$!GsGY`j1NS58~5}I-Szi65k^W;33LupynH+jrnRxm(kj${8Ab&H2QIdiqi``1sS>Z zHbm6X%VXyzS2Ki$UsHPZU(=5aJ2iR$JDu+G4FJJBYYDC;&=1w(aOyGk)E#|Ux54n) zwqYbl?G7c0z`HTij`=;W>o&6ID6icm*ABac)FLVRruSev=S}t|h-$1c)e5QnZmpwNULjbsT`hdQ4=7JF@uRJ4Sdk(^R zZvuQF&z(B3A?y!=4q2Vf;jQZa8&%xylaFh4_W9VFXuU=wDu6)qh^w6GI9D*xxMsX* zSU{)s@4^1QHXA54m$M_<2Z)8KhC(GBo5($yrOVZs$n04786)^S>Oc5)Qp+}7zt)uuk$(8ucU%_5r2d`K>fBXp!^#?_Z>xIrafy;*WE# zM7A6oYV<_Mr@t3}>l1T(BgubJz{QyvS1()21}NvS%l86|66rt?k5!`v(Kh7?KiM^L zB=5RXPdN*%k7l4eRtPgJ*i*Anv=2;`(zED9*WOe_7Lj-;;PAG?Ku%lQ9B zTZ-}8ENWB;8QHGZkAJQvh5!Q^B3J36WrG7VSaD$Nd2&kE`IIE!{!@LH?mfn27KvYFsP= zm4vYp#FL{~iR7Qp9)6PUIrsA$NRdY8HQ|S(dfK|xqQ{(*Li@Nt9;~;PTWnk6-(1c{ zI3M{DEh!jbrT`HlKBprKq4jq?L}yO5npGfiA-YM4x`~MeA5HdkcXyN30=46NP8A3I z(gq}5Vjhd0oHqwBCPRdBsEV zMMcH3tElPezf|J+pw<@MnQ##rVJk7DX3jW=P7dPd+iE1rildB6hax*85Fs$-t2xmZ!;Naj+3JDmhE_dH5GFg`nreNI4 z1p)#BP065jL5uS8^0vVx@W}%54!LnJEydi1R~DTe#~SSwIVh#LoB?wyMKre(0;^P@ zWf<&HX5YVn41x7RPyTa5`Aff)%x9@m^E-mZ!Ovh=yZ-O+hidBT1wS>xCvt9N6&Ri$ zLL3P3gh3WhUZijWJ`-+IMZUlOpt;Wv?0u1a!c}I4K##RSr>)vu97 z1M_;>yk}ChxiUqfD)Ro8T=9vB8ojo2b1p)%Va;2lR{&;@fp`%bV&M56Zag}xE}uym zBj%RrsImqV$lTnVnft|24xTXL2LuF))Mo3l7+d`-$pO-^EXNCNE#Hn6;&^~nPe5~o z9^dyKRbT?CpkWO_eYKC*L5&`CZ1g+ozq}Iqm_?+%@68%@W{;%K{_*(D(<+12fONoM z7wg0uH7$E$u0%G4PKbA8Mqr+Z7lV}FM$sJv6|gtbR21UY^~1tB%tZ``^kuewdJ zAl-aZO8L?kA~-;U0`}Poh+=eWK2)M?j@y+0mNQ}9To+0G7~IN)eKfd3mP7+uaoki{ zhwZ^oW`wL(nFMjgmTBzg$tC;55AZ2P)hA(i#2((E| zD&DrI5vdGf>bv*N4PZ2W)=gusgrK)6*F5`DfyP_Tr`0w^&eT_oB z#LqhzSz`_2FSw|BWQK6-dkSeRojYfuNM=kOd%*J&f47-COMweu{UiEGlwpM6 zgd)zPZ4x8+!p4y{wtm(3ni3>C&d@03x#Rg{jtoBAXiHPryC+trgDl+b1&|fj`%usI zw^s>i6t=()t@F7_8w9%R@l^}AV^~F~w;r9Z-R0Q@m(?r3KIr5jx*fGUHy9fmJ4T-6 z0j>FTpAR4{_@5#4pe$^yglpF-t(w6y%W zK+lVNDHKTg&oiBykI#pqG^m$1 ziG_U3@I2pqfUBuXNmWa7_e@*wZ=}yTVr$@J*g7Wg!eoLd0pO2wq>ogkT$pihx2ZE* zykeUXsZkgcI#FsP48rXah2$qU?;^Y4?G~9}fVzw8ETh%$FFP`g-Qm3=atvuVS^PJ+ z^`yevYMr=~3j_x$^rt zIP}3}DGRhtA19YN%_C|E=d<^VrqSGewALV6mv83J0aAfF4X4G7i9wfp)o~|tsUJO9 z$LWtA+=&(c_E8!(qimgd-IG??QA83nnkNYf=J7_Yj@HvQ4%JH~t5&H^z}S zGVWyhqP?KU1df%KzW&r}gG0|H|59>d>Qp!i+4-_;QR>4Y-3z|fdu8Q_ee`QReI>ug zM>{EEk7`?84~VvR?lL#RE@?)!$7b_SOa_v=A*gGv2a|Y5_JWl-N7vUb>8=N#^d9DH z_Bct${~X~jSGZbwE?c9PVrjish>loCjSx^snyMNbEOClihcSrlI`#JR^D|83ORMh? zU?INM>P7&A+t(V0!BvVm21sr?Is{J#8=v-kg-MNF|NInlcu7A-rD>3g!AT5S>nSh{k~=!XQ0yT7}Q?C@7{E@bC=~JI5gq zu;VM97Iuh%)GAx6Lr(Ige4#nj)s8y>l@m=yPq)lmcErW7jHBt3 z*oGLNFuY(MoxcP0d^F;6X-8>)L3@LLCzh(dOKKlH{ySwBJp80tq}&8aHI3Z1E3P#2 z;0$fgR}MpIg5b1wiRIrDUZM}QQuJr<{rk@It*)jAX2^!Zs{zj2q@*D*PHc_yhxL#fUmKO(zq+@5p22YlQtYRAGV8d3S zaeH=y77Lb1fxKxsIXOnD&iYG^3>Fed3}dFZ(ojS*dVr~d#GIfNL~vuMWFbz7p0$Ir z|4h#l*x2|t9fGU%#fz&1kYA#FL70seM7{iGe(~2Z1?e}Rq4ts#oEW;<);Zhi{;CIW zX_>(yefso)FHysUn+7J+$9^P_a9`O)hRnEsKH71ii)nh*+$LLVQft%tKw1I>|C=lE zYZP|{&-iDN%bujenVa03t9##ozT3wPC;S9<=9$Ao{C>r=_K(vj$J} zJz1C@UzxgbpI|n>&#GjV$M1fkVnLXD3-*T$ml!%+zhJJ?;r2vCFl&)^?O5r>cO>2^ z3$2Z>ZLmSaqZGubRC!8=OWu#L{n@0eT2;U4{U^J>c}i!#rDuNO>#3SKLJ1#yKKjZ2 z$-#ufca<$oF75Q{6Rrn+y$(&bRL#S}8fP@bFp<;R8YS<(2{ubjX%b z&^@7jm1wOt0BdKBjx-r>Ca}{>}4s(pVxHRWDew$rEU) zvCm^fL`W@E15i@JqN-u{6JUht8d41d$w}cQV@nIqXP>9|z zFgWNb=yJeoC2Vn+U^sCwIA7C~z9VN-@toF|cV~9$4($tVldtD2e}V8**Wn#7(HswE zYp0kSWNeI<$uPC2Ydvzp&CtF3rEryhImyEEzQgs9Vv-e8#J)4pwAh?@i#-|=4!lqp z7#Qvr+d%MPu^o!Q5CwxT3!WB)xJT80?GT#bF}kMQ5x`t%8BUukU#;U~vuE2Jo^lHW z{72S?hBPHnZieU8dJkiIiZoywtI6gV7JmR@I7>o4ze9hO2ZrRqoW*7#AJ0rN55nXn zAqKZnLPG~0Q=93C)@VI>qvuR}C`**+BnL82w>w?^I!pd5-19soa)2IEm3^ZL#w~YP#I&+(6U9o-$}{~6^t3R8oXR5m-hNAjGI#MI zKZX`W?B>3ic$od6ry3BV@eBW}5LhVh${-~~&wuK7nwcgIiDL1}RtLH0sNcfaL>djoUWJ(#>ya3n%2n*TMuu zyZ8TWv(7wQTC=h;U|c9ttfCvD(R}_4`T-yt{ZA(h!K4*bAo=v+?AFNh?VB*;;O$p$ z0l4*SnN^Z1bs((n+A|?^X>&|9eN*I=2i8O{@AdY*$%WyeVjvCpr~b@#x9=%B=TGAw#R`lB$;I6E4l0U<>wVy9L~U z=X=C}S3h<(mYyMbx!!%L(S)1oTw>CKL^$tPhMt1JZIa*ssA5Rb6l4zPb3e8YBOGWP z3t{&)knA%v$Xc(h!?RdT|C#KHk+%&Xnq&t6dIJDKeLE~eqobnqlXmEZQ?>imX+tW_ zH@!Y*+1vbcMee+R9?H8f#f=7Gwkp)iWj;f0-l4oE**!d$*+9j%h;EDD;mcTxj7a&c zz5;p6?ZW_i2v;p#w4*x&7)QM?k7>%8Lf*86c9rQ0EK6GH5<05hT3S4!&cEP9{SQ8| zF$&CZHV1BCVN%SBN;f}603hlAQZpE}k_B`#g>?iQ(aXUK(wip-;fgmOU7l(vU zq_Hr=en9172IUEQ1|U!&{ZHQ2NL?6~nFVfp3}Nt+@gU60+5ro?74qKBdSISvFzMw4 z;EOr(WL3xq0vs#VU#@J@??*ewis0Vjd?_Ua*P7J>$*k5$(pQ1mAAqhccqP?T8Hk>Q z--t!J??Aje-Grd^H{W8It&Yi^cMcps5twKI*-SMczEj@~kXfZv)RVlqzD7X?hsU8? zIff_R(;=D{HaJr&Zdx%8t>*dR(}^+bsXz)`2Mu6?vD^E)SO6QHhBnYrdQ}0k7&#sv z??{(j;SlFLBgVXi=n#Op;y;K&9o^BOw)rA=4B)_Sqs%^a7oj`O`{dyh|ckr zl6Q4(DsDfXOEQ&`dafEY5**E2LnI`z(*Q28zxRv0P;zgK7Ih?;$2(z!O)Wwp7Lha{ z4)MGISh!C9D9t6&Ne&|EAISjvr?TGDw-wa0EzBd&a)sbkAMz?uoyn%gCX$`oTz=np zqh7zPop#k4*Qxy1b}ZT1F|HTqu<$SfoTIO?A`nXHct^*a77#V!k_y{M=1Xy5dzRNU5>6e}t;daI>KEv`MrQwBM+~aM|Toc9=aWW&wlXe zo8di|1Plp2{wiuQ7KDnn>IzI7vqwiQAVN83ZZS^deq6nL=t2UhDCzb@6+K^|(weEV z56p6*wgKw3Av(zeH(DG&ve#1GhEnJEa;D&szM!%7xJB)Bd#lT2PA8z>{3HDl5)h~r ziV-Z5kOZ;TpK35YTs%tJK)OEOt!61VMLEX0ii$n=@tdV8ZSU&|P4pw_BKnD!g4~ml2vms`k4?3?5(S);Yjyrqk2aVS*>`J+fo05Bwev9Aqx<-Of zAAgdnG+g$#Kagxup9)~pA*^BorO+yKyHjlSy~!Ustk+ajR=O;@(9#4_2cW^6(Ka+R z+)XsD$Efh=$;YP?DbfTY zH-V*t-?aMW#Z`G~9}mY*z!kA=v=sJ#B{ILXYt`7>i5RQ{o%vY>@|(3Oe}3U>*#WnB{l*@{0ODeyXdkwxKol zkoHT&8C^LJwBml#i++TA{A^+MZfsabnZuKA@IC`2wEPaAVC;8^9itj*ldD6qDjjH2 zHN7TV0xbthJ|Kd3SB&nwt+(5)IcM4EcOku_d4@@=^vErT2);V~mQL9^sWyi#{qd&z zwa-(K=}ahQIuNpH`Uw*F9`QmPn1d+37%!g|dHM|)v|c@SmgycCK~oU$4v#n%|f(50{XvQd2zev!3#OQiW>x@q7b14JCOgf5{{~rFrUCz z{hGwK{4}FiU$6Qe+}6u$Blre4y_Y)<2c=lk(xPakW)`@*xnCZ8ysCr_Js=&IfT@Z1 zEn)$w&OO2iADlIyTZOEi-A0&ap-^h*DA6;42KPlz92hBc{6b>+Iu^!^w!)j58~BDpzAeF^0klcGiiH?^<(6BI)u>FK{AZt z!UW%=!_O!p2x2uYh}VF{A<6Y0ynxr#M*7!WQ!Gr1b$nqSNnYQ1g~!k`M2-!W;00Ba}qrKp@a)3m6F* z+4mDCJA_ife|?q{BsZ1%S)}FwUpuK|3Z@BWah>pV#>fWWB(vcwLqZbFsgKwY08NAWoAK%q?fGPhOx&xygoA6T^so% zR;L!uC-pey?snGm5>gSw;|^(R#{cehqYCioZO^ncH<$22FS&A`>S!zqAb&~d;S99- z75n?L0Awm~=A}@M6q&wWsbQxIJ;#{Jm~YinQ~VE#;_%=*y$tyt5^WM(Gvn^uf={e~ zW_f;1>+1n~P0fl%MU4hVJr&jM#(BJ=Yzht0TFDytW=g0Jux)%Zz>Fryc5&(w*DqiJ z;SvxV#Dl-~?Y8vmD2prIkCv7e(Qyhax4-v@lIWq(dVxRBt7nJ)dy^aix@PI{2EO_0 zN27YWN_fKAq4oKBag?|XbO}lU4vHwbN#@KLgw|!9JN|Q@cWAcb<8SD3Ge3zy+&o=Y zwt2I;58(kl{y74If)D8qPI>`b4%US+czwlNzPFU&lC48#h2{At5)2I1nF$E3t*s8I z|HDCt&7Qmd=$5vGn`(5a*UIDb{ChVZO;q|m^d}CJYkN?@UKsS>@!-sqF_a_O_S5%` z68mJ;B0Wk3nI>66NJijrwZSC<)pZ&G?yO99$zd*Lo(dsmTu0BI__~ znz`~}yyvJO4OrdMxZp(dPU8Inupr@eTSu)TkM*v<%Dn&Hq*kQi!92Ib3o)bQ9 zGKKT}XyFLybB2(BjX{Zu^A+<~+c=W{kz@hx%W*pbPCrGKA|!1rJRO%m`M`mz>Sz!M znY67p`^!12hyAXtSnEs<>B*~Vc;L7o)W}aquWPEz+{@?RW6?e7fLMQ zPXZDwDbti>dhId*wd_~!V$0$+`BR^+orc(vUDV!d8>WMl(eEu%(8Em%g%+a}!1wK~ zfOo6?TM(3gmqGRG_nOn~F=!=RZMnb zzem67KwM)KH_%GTM&8WT|E#MA?Z_h#TG&~QkZ2TI&~L~|x88}O3mXc9ravgZZCAL@ zG%jpd|B`*(Z>qFlP%ZQ$S6e>u|Ji0&mwhhJS4u)`qCu?jfmjluNZQiUq(Z2V_Fou) zma{s4Jni;=mmFF%?{t6E%M-WE=MyQG2~BMpcCb$Ap& z_n1hb4rohi#u};sn3e?oXMamUN~9SB(hg&O4{3ba?4}>GSa2{1R1`Nn=PT5W=9X+% ze)QzgWroSiB#_~qt>^o<_Gtq+39D^!)unUT=z%RhRR5U(!c9;wBtneK7JjlyfYlu- zEt3-|A{E zPZ;r^3!)DNDaj!!0&W~bcoozp1$Z2-ck_`T$FnfHOsS0c0wIQpmeCQ^8-%0RmyZ-a zZ^d+=(gURbID&d%jeo8OrMCKY4C#hEsD)}s`4#*u*v2W5_) z{3CUDckc+{*Vt}%R!_a-V6cyt0gR3&NQ0xRbxqN+LCb_h|3@^3eH1H<3?~Hzc}q0& zE2s4-WP&;4cLiu!@d#@rmm#1kU}i{*-#=MF64 z98;rQ+JylhHY3VD5pu_t0)9=uYwo=*P~B+-Qj|hbW4_llc3i&vrptEG(NRbnLE8^= zbl|hKrp3)og}l5x(thF(^NWN13SM+h&2n>WYq=x!ed-{u&jCq^0(}PU5}A z0Hua{)G%&3thYccoY-hF`;TDGG$qA*v}VQ-Ykq94*_){i?&9;<%I&iUrm*HPlK`5L`GQ0)bPoRcK8u7@lobH$^Vy&{4#&vYOZMZu%fh4SNaBHrWvkdMaC zscS54+mGx2PQk~uTL`;9|A?=td@G@mPgj#35!{^B6Bmc^3`$UPL>T6-*IV$0=PI6- z`A-)JR(m5uBPyFr&H+XlH*~(1cnewtBUd9{rm<0XhM9bwaMXr;tsKF7B2pbc*+`xll;xhI&b}r@0)Zf>cr2WxzT)H zok4sQ;@##$t~aA=G(>%3m+J%Y3f-)Ce(vV9JS>}vwkKO$d+oy1-)f}Ltgs=kgM*`| zDy7cFM^>}1CWP6{Z#`aoSw+RgS)c3DLqiW?n?|0dI-cMj^^Ki(FJh)~6UyHcQ@wZa ztNeGsMta7Me!$A1Qn_34#=Z;kc3wH!guJE?&+n3ZvP@>VpJsOp(j0WxX%v6pPqW-H`BNyy6qqr)GJfH&vXd*9gR zP~N=aHqUXeI5p<8onH=(ew4Qrc=e->r}5fJ>aSn9%^$nH{?YL(RQa2hZh0-;GS1uS z(2`0Ri~b&Qp&}a*MHf4;Wol?DssHP^nvMb0BsU{t)p3m< zkF)7Cew7VOAQ`hbasGeRTO_hufEY9jGjpPN)s&syUfh-QqszCTe`ZYjlyA*W1HKkB zw@9PT2{ryaUZgeT0WyD7wQf&Sld@=#IQ62FeHja)u6)!rO~3zV)f9A~hJL)G_!%YI zN;!;!hX?OYZ`bc1`X16nocv1M=Jdb^jl7mMTDGYc@aR_75dEvJUvaI!OgYTk46Z(W zNaV;e0hYv0 z%pepC*2@%GFA-ej_i7TL6daG-3&==K{oIjeD>niLbG>l=DtdjLG;{QpK}o(#;Dz1B z)?*fLHmnN-{Ex|HUNtQb9ugt9#QfOU)k}VV0h9#xYq-;gq1 zx7Tw~YT0P{zm3qoIIpV+qPwznWHq?#a|?%a)UD2cMErS!i%VPbw=o%u)ZV0y>)rh0 zH_trNNaUb-lghgC*y@z#x1Z3_i7Mvl__8p0o&uuucjCEMasP9ZVt{Cury~en*9!L; zk&9*Ll9!)fN;^-9hx4(>F*n!dx{gl5+Q>coOr7fDdYfB~gw&s3lnynX`SLB|4D+BYHM*X$JheR#aGa+*xYGBolarXER zIQEC_54;EXLe?gV2C|lz;QqZ#xOG8((wDM?+N^V4wfHOaua;lWS z5w&r^92t4e-MDj(12d)WEZG`n)ET}tRSdIma3mZVy7J^`t~Q+&)z_*dpPUCOtk zZJZk_0$UaZPTld2+6WCQ$frHcCU!Ece@^53E`y;4@qN`Sav4+K3Va zH=rEL;?V4ra++gb6mvowd!{PHKubeP0TMN{cPL4ul;|_Cxcboan9~VkhMyaBsq`9_ zHIyJzrKgJ?)1SFwGSZ7Hr-w@?*Bf?{Mp6(%{&V6-M6N!PR@g196F|iL>K|P12l!4| z@W3y%9Z_#Of znbMq7$kOjPkMZmLRf+x2iz!*O@(o_pH0;OwJr#Kt%vLcXSZNO8L|2H$qS?4`?j_WiT;wx1<=g2Ob7dH8iUrCICE`aSRQ0GxP?yg zqWP9rhdOp`|FcJc4T75yU-0(wRd!cB`8Bdf;Lpo;#_3wxyVflp)`|}HFKIDp}av+hw_O~?}N@KbjPo8^_zr)Z_E&97_>8squ)m z9R9t~5>J$~5xqT0W;Gso_Fnma?f&@aH5cT;jFk_#yG2RG!QtI@Q>Vxbe2dtz=H0or ztSKv#PBClqSP4g2Uw1!6w8B5o^3(J{vQqXB*~UUZ{#Zxw&gq?h zeHMweJ=5XdwPim20qB}X!pZ1pPo)A@IJYQyB7>gvpm2xAQM`I}z!NOX`x&xeJ*XB7 z%_^a-u=)p|?=3Sliu#vm!e({A$823hNP&ZJWL(ob6_lUJ$A%8FbsL7EL#0%{{jueN zbab%1tBHIB`69Hd7NlosPB?WCPl$BX|2KEm$3M8S=+{8l9immHxSF4{AiSHco*<-& z@w1#8Saq8F%NO{fXf8E8HT4NXZ!9{y1wwCQ@SUHx-;R5HYHlzFdVVl@`MklmA9W|Z znZ!i$>+nH?#Z?e}t-#MW(p7FM_K|fI%*Y z;jTF)Xp-aj6Vx5ZXqvUM(7)8%zfH3^wUB8=n~o&ScXGGLR^^v)ofX6PzQC?dUkJba z!2v%Z@CzGtwj_Pcj(t4B!Z!_rVP$1y%`%=B?=7VI?eyZNf|)f|HaZ( z21MC4?OnP%q&uX$V<|-m2|*fZq+xVcx zf(Ys4c!(w=)ckLE?ZW>^iir5}0zwEAlK7-%ei)1Y1PA%r)&DRJsV0}^);H5u*gmWUG8#Zk>ygtb9HRw zTY+oCJR#Nr|L=U@Lp_>^xg#JT4oAIx%KlFY$q^IxvQu4!t4M!eGe4QpY z&_u?5^_`@fq8K^bQ+6pHL?KN)B&ZDN+E<3mkrN`{lOn70 zu>i6OVra6I&Tv-7F^zBvD0Q5yH z9X_Pwu7H;*aByo@NjX+12$0L|SO1a-1_cwle$6bu3@!g(Hz*N-?!dyq0zhxn*X`}E zV{%cX$o`NJB3mL*rGh_+|0gk|$j*X<-=uW|Y#fL%Pq`&ZVOm7tqXAd2i69u?)Y|Z& zJQt;{ft#x%=vAJ~Q-Ih5zt;y{VJz|%dVrK-M2%iRjcbblW>OF$&ws%Z21p`{es2!z z0^h9rwSV6RtmdF5B}D3$hNJooO_=`2mR#j)YhwXx9=PxsiXY=U39gAxl1h+%vigI^ zYJf-zHLRLd-J=c`TEvo%jN(5TokH__rRG@6Op1IELb?6b>W)HP;x;$;_yf@3SGM7E zN7ALQa52xD52YjiWQ}YEjg zVH0>;z|!5BBOJ{0{-tKpe{3X0RGaeha;vGs9b+(|kK!#u zS2XS48V*i&jk=GzxakpuvK{gN$@AR&p_7x#Q+k9R8;VqJ77gMgZT(ATZZ7$9p8`aQ z@NhBJZ^VK;$=c^*b6tN!2K91of?v$OG?*Hy>zAw%&RfSIbgQ6<8T_q`@o$x`$~#ewA9r1#1(+kF7yOs6Pd=7D?z(t-P9}^k^0ZQ5xb^Ey4thps2^aPerDnu@+Y6HD6DuCr> zXEVdK#kyA?ZC+?E$#+Z`(;=J-YP(?c|CILb&+7k}^CCQ_!)#Uy!lAPpqYj^24NTO6 zFi1bJgX3eg$+jF_5~X;a?#1bW>2RJyt5#2Z=g3~3Yj28$r zk^^ylEpwsLy}-xSgejGkM~QG}(bo2DIlI2T=1^%&?`G%VXu@ovSaAn9B2s^F-(;+v zFDMKznhMGV^U8&+NO<%AM@&uK660u00W4vX5Sdwr4dqJZJqQc>)4J2tAC+kTJdtjO zfI+hGa48tFROdOjH3QuJ27Oh&lrLlaCgNZT_^e)4t7khA9Eh9z&HohsoVxwO#jsin zGK3F|l~TrHhrJPa@>k{+mEY5tTeTP3{Q6Sx)Lo`Pu&gAYxIU{5+JF@t`+oJl?|-M_ z#m(CKjUMT+4*PRRg9sMN=}v}4@($CBY7hIS%gQb9`{+D}ta@Ex{LA~svLhVRYuspX zkRdnV<+Kk`bhS3+6!W&fH zo1U(}k|@;az`35hL~q=46%vKdRhs@wfWDo25iXhGXjlfL$b&pDLIFFk8U4{0nGQ+%@NdI41M7>|34tTjTQ@{9QFTpZcR#ujm z7O}9d{oetaSy9%MRS8RkXl4^3niRpyi_aka=l7GrW!8|WK4M{1qwBog_4T7;pk3`B zx9?}0nt+?@ITsPahv%s}T+NgL9f}FYpZQ*Ym6%d!R&EXPdFBVjJRcj2(}GM+OpyFD zpV!pwU2Lm( zd`b`up93MQr&f-S4&}*f!vS}0o(AclP?J;QVRUo8|AA`Tkx(a2F-M1J2n7m0!v8Y+ zZ`XlYU-#J*91VEU7AAC-95owTM4e@H?~whQ=X%TlX$kuI`FZ29Y{SAq%X^?{DUA}5 z>+`E_ejd%w4C3Q$NP>v)QNdKoMHAuD)aiK9fYK(P^^*>vtE;OBmKAi*`)4h=yfp2G zn8U!!^73#NS#m7oA~$BENe%iEw*Bk8$}eHI=ujEaFMzc8ZfMEDYsjV+9cvzA|E=u9 zh8|xoQ37KBO%L0?WphgLkQms|PI_P!~apy|LjT=v* zqXU%9yZB5WF0QY?dLNaH-%S1&uMF&(EY`nWKa50?5=;8}5?p0}2<#Z}us#@qbE!tC zu#tVDX*5&x3m0FST_3@RTVXZ!m;|(Ak5~VhAfT;f(~ZZu&AGQP1`Qge0`7E*D2(V| zMiX&rk5H0z2u1M9%o#Nv_({2YQ#-hEt@|)gZE8i0uYAiuJqNtye0JC zAzV}@8#+728|(v9@iP%Tu zL)JgPOBg?-hPfm#$G|7sRaDisJX)psFYiM54HYA=g2E^7ub2IM&y#;jEY!QKT#A8RtZ52Qj`T5!+%0g$9A6-+5RTqr&YJ_^K; zPgV(&8WtV#-nM7nFqe8ifph7mb>EkSl)=lEm3MS83Yb?>*TrmWOj7mThd6?va8v9? zX2*C6H0o>30s}vqG{}_~HFgO5<`njU$T5wnxTekodEdA6Tz;#`ZQ+xNT^%bnFlc5v z#4OKT)i*oD#WAM{#T5TJyy3mdPx04pf=AMA4u|+q#fxWlsoF8RF}>sH(5U}D*Ls<# z#Z|4tuHN^JgTe8f{PUn>r2vR=Z)l!(VB<^<8!Ag1GV#=-Xdx1UYW|es%_~XKC$Iei zu|zV>L^Pzocn0MOtT3y05VUD}vF8y=$j5)g1SzMev+EwK!RN}Gw9uqd-&hwdg#260 zv#cLVhIDaVGi3J*G!eP-IVgcEu)aRLa!NR(LAo z{_4Bi=*fL~O_vOiy}I^^q3E>dlt4ABTUqUQRGHMsp@?#ICI|e~2ZJl6+bEli8r$USp=X?4IL3 zRbFG-adBR(_yx9hYP!}5Av>$j)k^2L&zdd?F-18ETwiw?fB#-{h}!8?D(uB;-TYHL ze1*Eogtmg;z1kb)bM&gx;#Y28UYQ^^lb!a(iZU(vbJauUsdCAW^>cm%=f_H!M>tc{ z5=zvddX$b8ydHdb30k-0mk%SR%FIG^sP@pA9}O@ggER?@Cmd{O??5 zd>Dyhj<5ato`@%_#~RvWiP*=C%}Ykq>nSdHeynHk^QGL1Eq|9BAQz1G5d$PKlENAh zD3{NMlIy7o&xn9fsu9`0#dc}g=|pnppc@?!3-Dr<9jbR8xlZt&-VD6GZ@D&VXwDzrB^4XkcW8tJAvh71x~aM-yw$`& z^+D~ch{!nr@$=I=q$_nvlox|0nzv}j&UWXfrw2ydGIVEWdam>1e7@d9I;`A>aLeQ7 zi-fo#)2u&ERTsJFp9P}JXC>!2Z786(((491YZnPE;;8pu-03`AhO(%TU-%G-vE*1H z$jq*;u8p>|hjZV+W?U$HjxaA;#fe7IPK_DO`u+X=Mch}D;N`K_Ufm@_ET}6TzmHjg zliKHlfundY+IK{|Z+>IRL2*DmV$3O0qkBQEG zffwO5ESicO$(}k33ky^HL?g6!`Q%Y0-6}vhD-z-(7@jm!UV{F*Tvm_s4&#N(jZnIs zCBB3d7U=Depf|1+y(^|LVgk1@DMqKYN$u&k9gWuuMv4W9Vf60DtpEYv0$jA)TzWZ~ zfCcXmO&1$=T$udVZ#C`DA_N{u>pod|ctm0<5qBl4D!|)6MBUvDaaJXejJ)KsVPNd1 z+k$+~)-RKhjF>;L zIZkW-Yc@<#76!IiQR}1P1n9R9&pz9sm{t)JA?XDrWjn>PpEOZ;v{s$}{w-*pPeKqi zn;utQm${G9+2OH#xgG4y%%);E;XWA`_vLpEV(Z#D@hSf(Oz(g$lohe!jfUmv z-0xP@-%BS>vAQT{bvfC$9uE}py@LK*mP4~_kRt97KlT-^bQgrqohcqWwek#C_&wioQj+Y zfST^|gp@FFm(qzX=D#j$NBpMGXC&nJoK__W}F^n+7k|8@GidYhL-ongMQcMDVs@wpLzaRI*D!y#P#P#4DSIndKHAt^P?q8VkM4DErmqlQoj%Ycg@zW52lDJR}k~PI^rKHSsU1@VW_0+A8sTmT5Hi z3v0QNu7z4lAh|X0sk)RTI=q1tNsl8^K#R7>4h9oo;BwG z9HoZ`f*4zG?@UUPBd6PN*=Ri(5quxc+$+~e^bv%_6}nV%&$flJsABAmhMK@C?F zYtE(%w?2PzAICa9cUDf*QkpGn?Mam41cg(1hSgJ?)NE501RHpzooyF2B_p1CmS*;; zmnK=_%xIQMIO_mLv#ax5C4p^U^|>|fPrtk?cgua+7tePN?q{Tq%pA|#$i348FA@DNK=hpv7FCLg78MBzP?Ujs zpSdsu;_S~Ys>$kOd=f{7Xz@_mdBXU3D@5K2CB`Q1pd-HY77z!`ecRkbp}rZzHSrY_ z6C?hfU`5%$-Kkl-JEn6u)NT*`349-kuWf7lwF%T#kPPyxwgl#3jWb&$8SY2%ycz7I zM$mrhXlUTm`tGuQJt@iI%}Uc0M1Bof-Zm3+O$ZfbZT--@Ef@&e+u4z)`6%Igccl%C z!FGV#Dk?HSi(<`jRR&EVbnP6O3B(3%X`1ya`EygIG&ndoff|B+C@3i7C`bZhP$Op; zCWMk0@(R}k??aL!F0XkV-k;#LAc?@+Mx#>A+|XAKCxq8CRV{`hPX+JYt*wuyC2L*D zJi%W|cldHpMatVt^RMb&zR=jfM`-XmqapOMoJ9I5KH6B?P}xpir!%H}g9cbT)%ydG zB$jQ8oSd9Lm`I`(@xYA`dq&jd1!r7X30@<1UBFG~O}0wN&-9iW$^bVcD!xp97Q4jz zQ`U~F2h8Ir8kc&k;)TB4K(3Dt!#s=PE88eq>A892Fc$~soxr&1X*6Kt&DD8xa&^2S z@c}!(+xDyPy4O#JRlWHVYB$d4dzpt}1j4hHrK)WnoSazjFz+J*0e;lwclUUWu&4+Y z@%&&6ztyh5$HRl4_{Ke+E@phRasdXY6DFag9GX2ju5{s@bC12#`t5U8R?+Xp;+&V7 z4}~xaNZv({gWKAgd&BXdT&^&nzCd#c~(;IT;V@w zmIxKy2@arVArZK5dLtF!J&qBrZwDCJN?%Bl!)RJ}Q2EdEr=yg@Z$h zU!e8mEgz)C$9obRva?AHakN~Yj*!L+aeM2Ah`_ksndZr zR~$`K?*-;B)$bTHb3M!CtYcs5g4g6fuyb;n@S}Fpi_#*Jt>0sg z1L|x~;7p&3v26PXd)q(zyoTbr!X`#{-mJLWBip!lS|MrNA90^Rf|q~%aL71juU8U79yI*&~!hpYzF@Y9>M-gw&BEq9&!0=LRizmFCO| zVi6Fm<0CBH*};vPuiwnwMGMszw79xWFyRgjWzJjA*IG!M`0a{f^-^$)@Il8wcHwx0Kix zX&*29toDWx$~)~ALqnIj^env4aLZjg`Y{!i6oH@U+G44xeQkt0!vJISm!W;AetX*9Bwq0xiG`MygcpX?@{l@g zkSBW!3ISV&}WX7VcvV%JB{kEhhBQ?5t;DzX~ zz{yUEFp)D=;WT|y=ik2-_`8Vqx}{-{ts@EV-o6#^eeWNZn8^P?(_Q<;nK5f2vh#-u z$wtuDL+`pU-rx7AP$v`GnvL%XtK@tb2)j&pNBLk0;)l2Z-hyOA?Wm(T-(RJkT=I_} z-w@X>mTFop`!^O6zXK??D8`Ct4+sn#M?+S(g6vJ4lt6)esC1TCd2av^KmWf(#qLZc zhWV4L(4sIKk z^(C8gviwts1OX6Y-Y;ig!cuIpa`H=kTL`Z}z;LCL$Q~=|Zlc`n6Bp|Thggo1x?ydl zc!g%C1rO}7(GB&0khwK~{xmYHe)51yJu-UYf(em*|6ni}%znr%An*a?#}0XX=6JxF zVhEkko8x3+76SjQUc#U>_aH|(Fu`qDMk`AwV9262bPYZGAj8S|i4lN(SndQE+AN7` zKLU9*3K@EW0?Z2wgbfLqreQ~@4A=(h%LaxW-|U!YI`3a^0W&eVKC2Od!C!lS^I42} zO2lm~oX?AImMA*6N$4KkjdLf#P5VjSZvTOC&NM@daU)9pU^e{zD^$wDlF?2CdDOr9 z8%s3(_Sd><(%|w9Bu$Bq)2RxYqQZJla$4GEq*jl6 z0nGv4{7(y1*!EO(E&PKJVnzso9SM?Rmm^N3%KwvK8)(LM`qFlIo^U9UK^(JC+wJc+ zY~TBMaSO|%i~nSm@EyhQ*5;;@?c1BYGR8KmAp$HctWZSlhXx!>`QYHcvJcC)r^m-I z08r#ujC2|pfm8v>qQY?>=F(KY--odK3qI~t1a(2Tr6h40B> z%jyF+GcgX%&=}CG4FnUQ;nY2d3ez-fTcFPLMQ7MT4%zB%glH$ReKJxqPS9~L`#rGhQzJ~21QLmSd zAdy=wZ1|)N9Npx&!(;a4gw=QF-S2%HjtcLa*?qSccE+2$;A=w+!J&5f{=J1S%9=V+ zYr9&x!6JO>w6yf1eojDgo!^rRHZj(ry851vTYF4`FP5U}*%L2SQ{VLfApgtp#LJ29 ziFR4QhnJk3w5%kgq%Bl{Yxdp44!$JaL~mSLit~K7(YvAZUg_sC#7e_zB}~WF^~g0> z29#qn|c#EgZJv5A)X88dA?T%TX9 z3|;a8^G-<*mrKF@omb0t=MB|m6_`B39~gHF`=))+5HpIbB&HJ_U`8Tq2^om%Vq@ys z%=>R#XJ1_C@-huH(-ajfx~Y)kdF^;05pl$C2X8A-d^3L4(D#=kynmEAKMwzQDrb^v z^Y0JqvEbT$aZa2mBfJ>9mhaK=@Dh5|_`5^p-lbYlx3q3GFWCij^%reunHpm%^!8#U z@zs3)&WU1w_)Pn(b;9}mLMsL)shNgWO zsJYe@BEyRO52NwObs-=$loQoB!Muvv4vpSg` zU^4-AjxNz8W_YoV!A#=$7h|~W1Z2hJu=(kIse;Sl0^2+>V zWS+E@e-6BzM8~{(aa7n1B&f4(K{~kvkT?2sh6ISuHfV?)83Ya=%-iRxmKsuorYLB= zL$mEZPI;&;k(_svp!nW724eF9cn53n)M?wq(PN9I-Sa%x!B7DaP@4- zwCZ$*_>MpyKE%y%5odkk3U{o|x@((yV^SB+IKw7#Gm!c6<0RyEPFWD3iLCNQ5rt1o z7!z(Bhbr=*c_o;R+Sm~ay8VRNmVyg!aaxKQ8r>tY+k`1c=4TwT^4IkJ{DIa_k=8gm zGBM?^foB$cf3(x8${MT8jsI!X=%WM*DvLxfw14oBh$dsKH6I3d<6-j|q_0QVY|Wx& zRu?H1ap~cJ{$ftyp%3t2=GY&7GyZLBD6x1Af;MP6{vwD4w}pfJ+A!PFap4&?1{h^x zAbT>uSzIp< z27=Yglw9kyAk}`Va0gtI25or{a#DiC>dHzAg8s)m2)C|brmwb@7P#5s3PF-RR=LZy_I2Z2i%^46Py7jkw*2-_qB zZ*G$tqD@FT-61n2PQ{lXzUmvlf5Y3F%>r|G)L18hfo)#5WR>v!6I!vxBqGYs-cWBP z#grhJx93&J@pp+2F`BR>1n2zL7NO&uvyC1<#r&3HUqq}vu~u7&o9wXp;NWE&>9UsA zJm-9PTb9C^oLFm~13eVv;t&zTIW71`Nf$cV#8kl%Ql=rdc2e zy7wbCH<_6kaB%kL#bPcrzRZeV&{7aQP$B(fK~+xK$sx}W&77#F`n?SBx?hQ@cJOwh zH2kL$B5`L1krn2)tm%6qz1U_ zKqB_!`#vnUeOIcv(<{&{-zimGBIz?3Y+M3Lk+6-cj{ws+w3N#Wur!oGib zV)SFj&oBL5=^3c;`wST@Awk29n&!Dfb|yTz_<8DTLfk7(00R6m*8W3ipUj5|OO$v^ zORMqkkQN$DWV%@AT~(E%5H4Jh#mG?aIVez!g5OZa7B6qE%KZ6TRiUPY^9KMqvf9lT zMiJei!8`ResJ}@QjK~pdC+11Pdwr03?ezNdhz{4s$HWi72f}*>l$;7>JKPh7m$wl(7D%g5Nb$c?gsJ}KnEh6b$~` z%8^E`a-Qsop#hKpgtBd8Ye;2%3MBQ7s5BhEgF1Ox=;FLihc+g-ljt!G0E zW_8@-)~_pqEqC5FDS@CKr?=m~%O^usYGY0ge+bj?YuR20Rdcm) zWrben^{+-gp*);CLfCMibI}Xb=8OSpY4oD*FsN{#2J~|A_Ss69f=1OT{`QGS439`U z_1$9y&Iju0Y2iFI(wJ96gB&Oo-+I9aHSAl}X2hNPWzguAy!XxZxA5oB=mgN={&$$A zg9Q9X5a7b+t~O8vPD8i+o`of~;zK$oCp6S1rMQjMO5giZ9ryV&ibOmSaY&1UgNi4X zuq@jt&I*Wkr;cPj4%tTsg?*S9N!k+1g3th!9_S9(o)$Uwju1d*3c1DS*-@H zi}P}If@9~0nz+*gE$qNOwzKfQxTGX6BRh{cmy0aEZVo_*|CY~1r1%=jgN6|WORSOS zG46VeKZWOpb*|d{GtjAE-9fsw!Fw10Gxu>?Y#dH(;!VUQzztp`gSj}%Uq#4^zuF@M z9d=8{L6WS?5`>ffSTP1-PmxAcEQwbm<|d4*IpftcsdxpOd=2IE7K7N?12OLH9bj!WMy!x@jT^3CLP7E6Jj^A-k zE|^bf0xz@X2dv@Q!DC1WQ$eET3}e@vhQ(BCq|W=B64di@y_|x&GW<*Eg@TF=FB*nQ zy~C3?<4+;{CXF$mBx~OLo?8jdn)W|!k1Q#LZnFoT#H7gb)~0b*n2VE(C=TLK2234+ zOE9DIE1meYt+yO!&QjcU`F^}cTDO2kNwKw=Rem$xC^=mQ$N^SDjVNB2)h^M$WV`=s zsEYR2Z(}eXmx|M$Szv$WPY--4Wo9}tGc|&u*e)BVLgEs6ugK5Mhw8e@_>(JO-2@_% zPRe%8VyL?+ki=JD%R^R;g?J?#QjHPyOdZ93S!_9;7qEo=Xs~Dai3wo{kh0wl86?&A zggFYKJMLL8(_7!g@`8%$&0+>`zlX}Rp`^etk&N5O1*w?1O2f09_xc3sTMvf-Uf~-7 z-^*vJVyvq$SXcPB%|wk>@8dro8x06fu*=xP9DG(`QzunTowzSwax-$bg9@!uOIXQl zDir+p#a>mQLanV)6c~mnZZY?rIJ@ov_g%$WWgRCLlV9GyoxEhUzn_#JgB0ARhY6Rq z1)b+j(5Lc!&szb19~s^WnE3QdG3@h+)Z5^x&P}OLfh#Sbnn}%GaXUsIjk&OB2LL=(>oArl;_^{(+RV+Lluz7Is@#!VTt4Y%X&jq;+ zPY<7~o^HYS>sGUR;)?w&j55sB0r!8gf2v+qM`blx$>v9djFr^E7DRp#g^z!Xih7=; ztnYC!aqrW+J5xF<<+VrFak;q4)U7qLFXeT0yn$OjA3v)D>h)p~J5eYtiN-!wZ78aX z9vU1PY9Vpgme8oJ*UZ>!aD@X9+ZSe7mb!q4DJ+aIH4SXL+eGjFTBY?#v}n9qS%1Xe z!m_iTO5iMfDGPI&YV|YDfdBNgavoj@WeHA1(DtH`&P+Jb&|As0ka~vE%Oj{KOD1z` zxu)zOpxM zroB$UgC<~umIX=S{u-Fbl6SK*^`5v2X<7KcD@`~#xdcbwjO*j}_aLzF662I~)wr## zwa(3AUUi#hq>S6Bb_{rmR^{;uoa zM12hy#ey{V=jM5Ww`~4r>A4+@O{&Z-IKC!cvqBZ9=WH1!@$nT{2dWKKsVwEu`_Gi9gLzZ!joKxI`3t%9P5I! zQ&u#nW^vvF_*2yEnaw*xwsS&)1ux-r!C7T~QL6&CuRReGPW4j5qS0I1+nxpz9(X|P z^V7ekqj;h#Np!X9jC)d?eZ-=JD znqqSs(tFO02S2iAHdv*pfeGi zA@IOG6;4I@7acvSN7KhAl#XQB`!?IAINyrs{yD}Bv!jy8($$~aTfeO;V4(ThXEpF@ z@?AQ?MaCcIchM{R!57)%&%j>0(_UDT9jRyrq(<8M_$U?>XlUX6F&}B17qzxxxGDP+ z=%g7%c<@e7&kEXG@_T+v%r41?%Tfvyh*F) z+MY|Yb5Dq^aJo})KsL}TF6MtW%eGO9oBjRy6#=g(W#FpVw+rak*D%BMS@z`r<#p95 zAXoQh-}NZi?E@)%>Zi7G%_jPUpgXp~O=wS~a<=JxSnr=1yuzsYNeRa==(A_fZhLxq z0O-)S&D9K|ME5s4kD+4+9aI~zD2{FiS__N1uiJ`*oNp|BlrTn!Ydy9~BpnYs-=C$I zS;hHGprE2Mad1$!0Ye7{hmd|NE+C5$xo325X#3jzo#aH6!_wy3@e@Fj;I#!;H#yu8YGDzwMzjYKD#zl6t=lk!n5tMA`by^^~@OQ4kuWyCvZ zPW&m>^2-~O)*>!%Xy^Q$T=O}~gTWgp7J|6!?kc$|h@t@t0sH#8IYo>hej4~F%uxveDmEo{YF+}}D{ z+~9aUTc~byTHva-!dFn}O?spC;cy7sc877)#H>tyG)^b&jgqO7Fx2ZxTbKeT#t;q3 zV@0Z`7r%06REgV9zMSQ1eb3|oZ+93T38efx%GOw7^w4E>B}&;OSvf5(@HyY{2b z(yOEVpj)cyHgN+FJ_(Ue0pqMG_poz8jHzI|w!{!jgv)RL*DJRy&#>;^IPMMz~N+XzcBww2N17(+#oNaH@Gc zslGIfIRnoYd3~my=GO%%_D4ZR#cODZdR^RtrE+NC`)L}3;Ox0j^6=#={9a+4OS5j* zTd_>{pY7vyRzqupIWCdGk9VsAf&M>$^k-pEO&N+PXTGCD-veEK5(<;W`r0$m>=&%< z=JwwqZD^F#Ml{7AU)sz75KW{l%Rxg~yXK8WmLx=wTtymjm*0V7Q(ftNWD0L64P|(= z%^w*>G~Z{D`*n_;)|c@J(+U5Kv$3|cWFe*<_%tw)E6r~iw#Gk*F}&z^56aE@Xs3wL z<~Rr!c&h^Ia#>|)YL)~b8+XJG^m**zRL)FEMuGHxaVt~Wi0(gDkdn` zR)2FTS;#4`Wgbrs+bo)bG?q~w?x#^PY zJBwUluhLsdcAg((s~tO{TQC!-&FlaCvHHsTxu9`VzDfWlB%<&WP`Z-@O5z3X`rzAb zW0#pljL{V;zrR+AvKZ~&+V{2qCD73LKujuC`94TnZV2>i8R&3(_bE>72S2mbuRGn+ zY35JcM=6A0>HDZW<8s@tDa|{2_J-&WJy1eCLqu$|q}%)^Y_quI?XobRWBKu7+8%t5 z_Npy4IcUL9^n2cBGGoU%tFRh4P6*=5|5QfAz&xV}L!K_XJhWwHS?c z&IEziO#YQPr>CdbJgTg7(|}QM6_5qAYbuR;+9@Zg2aXuhK`#`(9qg)FlJQk2Z;xUi zd-1Yy5Wpy8a>SKe<#VFlpL1;-uJiG^f>l;J#YapQ=;>Dcz#ac=^HIxq6)QJ))24Ya zBQ5=sASvUGqNW+so2&(SqFL>+m$k#cQMv#N9i))FLMkm?3X?`PtwBYY%8H>QmyW*b zI_C685z_qHJ`28AtB|%(bCd?6Z4!edRX*1A_=o6S(UQ9-s&n;mP@?V>?~ve^FJIg} zTb<8HV}45%z&2UJg*%%bzm~)~U+Z3K%FAxj;TxfmD7ykqBd3%W`L!-nTAit_Q!*hW z-qfgFMCIr^R3~lso_uqgMZk{Q*(sfi44-sCdrbdQavAnUtH-6uv_Gh;_$F6ESWOba2%W!_KXl*7h#Y=2AKda&?D64`w9--!Fv3!K)k>WfPeewm{!cy969A{_SwX4kn8T@KBu;!=OYS3Mk z0_@=|@XAw;!LOn2uCS(tKLkB`(}-&KC`)C7O+%QX1V9Z9Xdl3cij>VuVV5g&{d;yn zSWosgcXqIMflEeC4t$FdiN$FO$u;fN(l*6KkI*5CX*dR)ghB^qX`CF)(aKMg7?m5e zVFm@;?v(-$T;oSTZui0rO)?VHrpbZ2Y_o)SzIa*tNq&UqKxM6N@kfsYdFH{+|yZCA~KoG6` zGHKU(@6T>jdA1*C5}EMZi9yG2asIn9@11|8PPMoTT`u`2uca`Ha~KdQ!-?czjl z`rT&7XYtp^oja=!%qV2{nmMTYeoHO$t4FL83u3`F-)@5w$ z30$+^;7Lh`ak606U@yJoq##|^9*Ydzphq>N+-+p%*2rGHJ6fq)?Mr^sgOBi%0xege zB0m2_N6N20!hVY72S4ynI8#&85apFNdM{I7`tAGT;V31g=0rI={->8Cs=?#+Q~W~9 zgRC~7!(cJoWd^zo-y{}P4KV`TM$b|jG71XfBq`N*k~X@y-(QkvV>mXH|A4yFPSHhZ zumIzTACvcJ7=)Z{PHk?@&isEuRe~|3Y7iiZxIHS=wc9&Cm>U(CYmzB$8V4%$sh&A) zky2=Oyu8L;WFDty?>qDIx`K$JzoAjErtF8DzftF}RX^v&D`q?JnNnb4x@s7q87fH( z4tnUt%D3LA4eje=ftO}b>@6()9tPY;t@6zB0hv+~tZyO8zGPyt$ocEMS|A|B##YJt zy|3abavO31f)ejwn*wZE4n&m#nOa~#&T7g}hUFi6TQ!_b@fFYTcn#ZtYoo|_?(pDX zF9fhZ|E&7OIe8dzhqzc)#(SB9nxa7T!L&UvV+M4NPB}I=FR}eH^ILDiSF{?>F9{Pa zoL2b?E+NXgMiVY+Tx4yeTiWwHmX^QKD?Qihc8R#jYfdP12&zqWWkVT1-EoIf!&)#mQ0qtq$_{WpJjm<|PU%uFf;s68*O`E$c zHQ&p+y1G`KxSphldjGcQB56LFN7tS@N#Y_>P_*RYF{u5ud0%PV(o4TsrrP5~*7Ab16k z$80gjgl_?Y^qfA>#4(4EfbRFNlKOHIg$1~nlL=wG1~2>aw1d4vBv42H$1ZeoAVjiQ z*IwJ*MSo+~YCW<3{&2A>DU&BtPz*?LEp7&ydX5XVOHTCmG9hN3rxQ3jzO`3gRxn`Z z2D_K|t>^cvGJZEwPJ3?Aq{T_rol3^7_<7*e;_?hNT%Yge=15G+KKff01sJ;8Q|n!! z`~I^Y__l5+AF;SCi@KDSk-@}Dqvzp3{hjRd6g#bIy6utAObM^|g<-*cttuDG6EOukQ&}xD!y=dDT)vT>v%aUSB+(B! zSV?`woII6n20A>iY~8LfOM(SMsQT3Fr+T@VnLP#vGF^eAgo6F-zmMqEm4)#;2 z3ow_tx9LyHFo%d1zbKYW@9vg|`uOyRpkl5?F$DDpD*9Byl9P!mWadgVa@MES?8HeA zTSplR3rQJym@%rC>u_@l3~ah9-qbXVP6|I|!$<4GqIZMp`r$x8{3k>9DSb^Bj z_7yTY+}NcRoq$dXt^4n3Y*!sv%RKmAROTF^w6?L~IcPLF{&KmO{0)!CwTCyier4V0 zq?j0=g~Lj(6SOn-eUY@3Km4GQS4r1wf}Az^qh_E*dA07!t43A9n&RTk7M@Ys?*U_h zI$6Kz!W$QofF7~vxI1jEEX1JvorQ;(lzZ&>DOS^Q z%f$gvvmtR=ij)}LwBq1?8dh!gKoq~Xw;Pd`_Bxb?WEi7Q>Ixqp|M-XQtKRO%d)Gii zTe43Q?xDOAL4+<}*D(l=8fF=@Z3=6=k0ZIb4^A5fA28a^2)&1wXBG}WIoD%G{;;vc zWgTGrF)w8D%IKrPe$#DCq`;k7+&iw1r;$qL-oX=0Q)xr3j zERNfkQRv7~zV<;rc^~;l(EaD}@I9V?IVb55-Xi>$jf>Xp%|i7ajU>)iR-`D*FDRpd z$FFcR*;qo}@rTt+X1-1MESd~|B`&~;RquKF*3CC8l8)CuA`H}?X(%yZV#MD|tn3lZzF!`{ql9QdDgZt@2PVsi27sh^0*PX^^#qWGuGEqFL4YXi>$FXQe- zxZ>pjMXn#@!azyGfD+E_(D;yGh|;LIwweZ952)vA{GF9e$*qY2Q z*K5h*)qPb-^Ay1Pn~!grntSWLO+dLh8Nd#J&KcnZ4Gq(cIDS-FSyTg3>WBxsit2~K zK)u)c>x%55>?xz%{QQJ}+V=Uzn61RJX0k&Jkw6^FK!$VSYuj>U_waXs02h&AQV;4z zn_m`;f2Fz|d?znWnJVI4dtE~_GE#x4(a>@#blCgYHgpzPsEJ9CtaG!PLK4wksXR3d zzu`sWf3BVUngINNOnrk}VC@%eo@~1&+pfuzZQGb^+qP}nw(XjxnvBWrp6_>`=RWuR z1@C#e_gZVO9T1>JX<}|(x3IbeiFyv|tShqAar-N!1(&N2>BHaqr;@~CjyNwbFG5~kU7Kaz&o_p0)=;n6d!Fa?E!P<-&(7&j zZB{E!b==!|t!oHw~O1)~Ra=qzYZ|6-fp zWH*=PJk3k7r~`pf!zHC)C_Q+A8PlDShAWr_lKHY^fO?Sy)G|LrOse&64!6S2cK$WUB9I{wY<0~MV>ANy2tNdf_vcrZkRB$@^y1V{OuV#t zc>uQ;+IR68ynI@k2h;qiGM9f#peJWM^cn=YtwygAlzAMm^L~CG2sIx&UVA>-AoQqs z5EeSa10LO#mFE`*A+A4)VIUxk$imQo7CT2N>c7_;jDb56knWXtLAbiO6yyvQ?CNW1 zaG3yB*rqNB&d#m{2-155qO?`#ExFQ9J>GzIN+>a|p5K9N&DfsH zTo3SH=%sjI7Wm-^gkiN;0&gdRBLaKv&k$g&i9_X;l~PZg!OCTF4d-vl?EuUwM4G^r ztj?=T71($S`#^e9V5o-)qT_yn4&rlO<5r2~5*rh<@sr@@a9IJ%!7FKQL_NaHLuY?@%25TM*okZzmLNcwH#_|Pk_ETO2!MAMdyw%@ zl?T0dj`}vp`#Rj5TV*>p&7ibitF7EAg%!EyeV)H+Y~OdsAm@(>y$BBmRQhxl9OQR| zm~dLz*#_N&LxZs;iU?A=Lh*UtQvv*$H4_gHY(heU>sKf95DozWc!(IP0tbf>pkjht zJ16Xd_|tOU%B=4JLZ{cAxpwgF+fSi8$djwC>)g9JDjtg5{H1}El%%Nhvi0}9k)5DG zZF`iG&9w@i43GnGBTNeT z`1pv)*%8o9G1lpqGfin0Pz|v9yUi{!!=)vHZX>l$@UWM0r5zokqV4kX7?*H^7F=1= z;CKPOJhU)@%zxra)npN6>o9g6@mz)fWG@ygh$2c_odbmX9VNC%dqP`EQQ=nt3r`~m z^Q`>ynRKi~I6C!iLot4tU>34ahXY}RtDe&_ew`s``AN!22w={_O0a9^i@G3|X~ep! zy5Im81OZ4wqzN^G=t0swxY*%Iwv;mRhb)GYAaynsAH` zaG286ja{IX^(iS}qXovc?E83)qs6ia7#OmHR<9r`T+6-hnb&Aryr)|i*Vjea7Ags# ztVb?w&{QU%#)~8(k%lVqER3UuL73Bu$pm<`lRx2-ug4{gYz~XeRT4NKr)TsIqOg7Qt`I*5!z!|%vAMWN9b6vK({=pW>E+M5vI#V0p@IvY<4G_a zGK!MGv^35D+zGp2xOGud=H=CurU>ux)JLkQr~OMb6BZ^${RR|3R3SKEP|{`JpLzfh z+tb}euII7>%jJG!TOIG5?UK+P71Mwq6J!pU2KgH^wCePomS&lifU0P?qYKree=|rMV`ToUguLaVdNaXka53zOqW*SHop(`pXIQWTxU=;Om zQ!rhnvPxZ8-K~y)dxm@V9s>O7wxOZNIzonk%#ns>)_nd(9t*-^nqy7}-2x;Z!}JxT zb5s16K9Y!Mw;CN@Ay$5o5h)OSg>_{$94~E`I>NRzw~CmUpyy3U+J}vnr)z+5FIIbI zBq=K`7)O+>RU=LB@Iz0-4}%%(K(RA9S&d8{DeM`f=D?kA--0P8aBZ3O>rDA`%f`cK zw|NXgV(C~mloXeWceoJ#drUxk-1aN&c|Gs>aIyUepfC!^XEge`kP6@O0^1X>Sww z`!{kCnu@|NDl)Rt@}o8{P9XwIHK}P+vtvPH<*1b=eT_zjtV=I91CZ)t2s1kmPmj#E z?e+Fy;`qXlLO+9bseZoF+D$TvxnSEZKK4iWs@6;av4u>{oNiJPk`tNmxl6EP8Qt$-ItPZT7FTDd z%0xr{`GNpBz^`|QX?b*}YSxEYA!7%hzo2jB8ro6Y3j;Ao=gQ}1>Az9hc~UsFHhq8s z@(UFF^lbw-h4s3gr8pxaW7YOFC*6j2et2`lT>5>5%bnkhSwgxVTd1n%IbHEvMyEI> z#rwDaM57W*5h4^-?OICJ?(3SMJlv`V^OP3{*6kKO-PJ}Eg6hlDlh$LIE4n*A{dPEK zwr>QOgq2S|{~@rE#U;vb73!5(aGlwqKSu>?seZbD56}5tQd}%#t{yiK%54kJAofQ_ z))XTQYZo+OGP0nkY03(XXVrbyv>zWEf7ssxT<=(IC6m31UMsqN{MVLEvu8TQ^y#3@ zdc#oGzy;X0FGmPRe7Oe&1YTa<2Ox_P7&W6~?0auqd0$XmVCDdy+ihwsKo#p45^@qs zP}!+zZ7Q47t6ap#!OLqm24t(aI31rfg;Hq{mL9}GHRjpy`Ty`L7bc8X&Qg%kQ71v? z0hNy_u7581<>^@nKm|bT`aJRLkkkfPLc_qVzWH{0dp8s7u#UG^-n7<<(hOdV00b1X!EQ53opsjakN&;FHEo(YCWsP^8t}Og z*4N)%y#+YIq)^iUqvR3m;<3Sp1`hHWM9(s9p2FihEVef%@J2U0s?}Oc%0xA+h8*d} z*+QeR(bVV&J3kiPiY9xM-m$hmJau8tT9v*pY1>A+|bYEo&)B`q2A;aQ)!?o8Ip3nfCft`YLO@exEPDXWN3A(WFUu9+t1=yk{<; z>;pTotgNjFTW@y{)Y*dT>GSqEH~)i%dhy!xn*jdaVQqP}A!4TyQtEj`xRxp?Ki&X8 z>sR&2xtm<`(#{O-8ip1lvOtcIzLue{?gSly{Chga|*}dVPK4DbTsmMa@nA{yyiVrad@1faC6XX@^Fl zbuqyERiz5K(d!f@OEGh@-i|Y;uDmAk+gt90_QxA!DYUS#FpRS;<$K}a@hnIxakDm_ zl$ja_8&wtx51rj-5FG5nRY3!q?PfDf-4=IBS6Np}Eq!YryBz4k*IQp&U9NeELBt7F zDN>mm+r{bWevdl`HTMkWd}Rk~@I22?0W%y9%%PF`$Hp6^^tcz+M<>QRma(Q0zhe}7 zB^k&myWBR@snkoG{>LP#k`Q_Rhh?YfDwkm0?YSm6FCuL*Zyz`NCq*b1bN9M!y^g>Q z=xt&K0imRaW@|vUn90*&0EI36Tl12An4HXLM>R_(xN5CBP*}2}chQ|o0)>WzIT65q(Cn3=?M{2s($UKxHq|Zdg8SFL2rARt-0R$3e|NE5z%`vND9M& z+xXmRslX8^7(eSW%?1Z{tYR~5F8IA+(ggz}=LE>xc0JP8H2>LM+pptm4>)UpFHQrB z$RD5orL8!8SjK<;*n-t7KMZ=knw1ec>4B=OEDMKij@fWpJI2Pv$O{NmX3`ngG^wMJ zE1e*ieS0PVH)o{yp<-!Sac_#*S+amgBw*7VO6A7*U(s6w*3u)KcXNDRM})DiN~D6G7^yzyL&8hy9xC0OBt z`0Dni*}@xRVlq%$q5o?D1s>( zSKFggIIB~ARNdy-wmqYOS+dn1@V};nghYApiWMqfBF++qY#fb(zgEY`#wY=i%O8Q( z^?hD~@X!yp%Qg#QGeRp_81}AYQLRYb*J)qB6X{X0)XWgiQS`iV5aY2Hjwdd=%|;wD zma79jRo$Pzr|S}7eOuk5R#whA?q+(8B<8&!ZEG#ULONRR>t6^K!IyH0fLTj)&2y?ILTlsB%93D?JHLiR!x7R{PSWEBCnYLh^1#J>R<)dam~O_j z_V0ANz`1*RRN22lg#`->8X&u~Xsmae!mS$Trbr^~Nz3UKBw+qEbw7{({Zc(iYaOFz zKQY7jYXf(2e;&x&8?OVHF5!wmJx;jbB)IqPe%eMVjpSPQ<5|>N#j+ahZ zkLf#RX%mIIf6QCz70YcJsU1lr86V{dFd-#TP>jL`t7V&;o1I>OGa|KG*X`RW7Lza9 z)!7wG6@H>9MF8*9by#DhRaYp`wwVv%H&3-1^PCeEc+McH?-3NBo`lJjEk6Qk41)_6 z9N1;rySlp21%HZ(-GNE!j1XaCbGg+$d>LQU_7`$1)qQO>o)a^fn ziGqB{pMog{_p^|T4tu}|)u3?Hl8 zRZrhj?pyBDCGk8N6BBe-A@{vNWNQW-AVUWF(*v5V_!TEIq*vEC2gehMxoI2RR(yMI zA(G=%p=ZA;h+R)2HjCjq!ThhFgk2wu-=PnE?SI7$cKSU@OMU~riw>d4X~AUQ9I7;f z#UW@?Lr?7 zJGCxOB7X@2T7oO_n|EGb9vr|?pW?)1S}Th2*se|3-Mby7B(4|8n(BBr5mVldsIG_f zWrcO+Uz%ATZ!b;U)p3bpR~u+=s5|V?jl4?YCip(zkWAQg}QaM9^R!dGQFLS;(x zcYBkhI#0jI0=*$sx~$4($17{9mb5yZPrsO!jK>kItgOBSQEN6ZBUu2ZY7`2-% z7E0l;81O|%Kc<>Qaa$JuQvjFO)uk;zUT*CVN1*xtE0GQEsHr;Ub-NmD#K@zikKn+w zFSt0&u-oHs%^1OSNl6!!#v@JEYj$sLCjD*>TSC@@7%PWb2G3}(pQxf>p3ZYz$kPs# zVcc^%2)Tgs$x~q&axlNdFqM@~kWB|KZh(OWl6l$zHHLyOm^&@j*XwDXD8>dRPx|j!A&BgL2=@NGF9|a8!jUJPU#5xAuPUk=B z5CrWkRPCQbNbZmy4N4RkRu-1j>;bO7oKrW>Wv9l?z+x~6veqYReHxed<`}8Kw7tAa zNRsTX2rti+q~o8LMg+Ayp`?_J#^cf%AgG4R#+*k^1N+zJ@_43apqn%nFOJT^zyC@N z7`MsuB~pw}DAZH_+4*;L{K%}NsH&#i328#Vvs-qG)_Q*A4?zj}M373@!E_{~l*4`Q z$Lj{b%;f}g?s=mPjdT)~2M`7Xh2oXel*AG82d-Fu%0~DELOYwxNtAs+TGJ*zn>456 zP29&6*tp{y5%`Jyc?V6jsxgmfMk{P@cLxA}S`Pgl&j<8>7MduhcUTOdp)hP}!b)0YZJLIPTO#He8y!rB!fkG56IGh?OgdJcrQLa1Cy4G^ zo@Q{8q3(+p=f`lHotuX|Brf50%jJrWem+U~**r254-Ze)C}1k3cVfS@+D3Hcwz8E}7~2;&54Dd*3e*`{^L*4=VBeR_LQfJ^fg`zS<3tPxY3P^wlMv zmp$#A)Hp7c$zcX>nSN|Cn|Z}kW)qJC5pzc(67c>t728}@RV6JcDM^5UtJmlI(OezQ z_DR6ydclQ`o=i2TP~fLv+#j*He3LLlLdDidTNe}t!>fKMzj=Bo#`Bqp7&z>?DfK<1cq&@Hl5DD)D4fJ>Gh^kScIC zCIt&8-gC0)lLPtUu(?sOW`A{b&yJ_NlLgyYQtm{Ec#@NqxKhqHZyf()qbB}5Q*TL}@itIG;y49cBlGq~?%nHsY& zP@LZub+8P%bimsJpS^% z)}Z^+9l1jApdqqTc^WI4+Z*-E>ACp4=ItR1fWg&s2h$A_VTq`~iD}p+Q1djCGmpUg z^ezVJV%^6;!`quqg*`%=Jf^p`luTG4^BS-vBf_KGe6+jD#nxjJPu32}%&aV5v$7HZ zt-idNXgQLcy7qX3V7pRwe$zb-OE3BpJkcv2vzSWDOvs}GUR^^O5NEHT%+1{u6dMZz zw6zcO75^h?Ys!!E{vI^2#R;;_=j~g}TibU&0OJ2+zY{0OrG_5q^y3?%u%bhT3Rq5d zYQgy3h0nc-UWo4Berjbizj64ef7{?;2>Jtd&End%1OWj70!K$jcdNC!Z!?!$ZHye9 zzryL<{nhxt^x6nrI{!&6Bp|}Wqz&`(a&_c?RkFJ_-Wvja*Jd!WTo7C)m@=kJ)azRt zpxCJuPd?tBzU}${ruedyw${e3Dv-lelP&fDZ0DIkc^!QNNFv>BMR6_bqaWrqmJO#S zXhr#dak!X||B=J3D6Mmu_-byf3}x$%tnV!vX*~T(O-`YWAR7YX?H}lKNw+Q?KkA{S zt`QW*g?NQ3EjLvy*=MKeHr<2UJ$(?k|5Ud(oX8yth4q{vJ8*E!*cMfztG3DX=^GJb zBDj{4&(G1-4e91Q#3yrFeE)p=`1gT0?9<)2^CgRwkg?%`jFu%q#Hq=&IPdQ0m^pHt z3l7q+@314&|5{MPj&Y4G4TU&FT9oxT;mpk`Un-a7i%bMpDwkvEkLl!RAU@)*=(6Cm zc_yw52?_ZE^xS0t_Ms2I)~0SMMgkypNA&J|XFZAmM~V|SLf*7+SgowSw8^3ul!#9G z=c1qhO;00JSOR6PB6-JzMdm|IUzZPU?SZ1|xMcD8waC)cX@7EE5vr-z+pxh6`TNfq z%-PxN&A>Ns9%rxo>%M=ZT@uAz$j~dtMGSq9%*M+Dt9C|Ba(PKjc-S~`Z}#e&%iTwx zqHdYVxq?|4Sumb;7DUg-KfI=7Lihiik-vJYhK{*dY5i62^NIxl@f&hsg*-R&a-3K) zpB-G3PaBHPXfpND*&SuLqf{=Pxd9YFR*Yuy@T1E2r%T6i>oHd`i?Iuf5^Qo+cp)Jn zkj5r|3+c66ZTkGaK2ZYY%gs$nH|Om-mldRc4_N!r&fVS4 zO${WXPiRj2-DLRtI?b+D+N~RyRk`Zv&C?}zAdAp5D;+j)_6GzaUyu>bKgeb~7sH)J zMMbGlPssspcP9255}^)ow+Og>f_X&IK<-D&UvSOD-H%)m?xN~%FrS^>`sw`%gSC8P zu~bV3mjFFuu{B|dR@>AH6+y(iC7u>tr4ESC=A+6`WWb^`L|HHp*o9J25jT3e^~sP1 z(G#I<^7C02FdXi(%h{z6AElt$yR{&lovpnxFfoA#T0uQG1gjhzQ&92V*xx){&t}N?2wnpBM&-XMP2^$oa1i4BL!(xM!ZM44qc* zH+P47!n0|11xkC$hHhyox$k`sS6pA)m@6@ApN2!o)kV4_i|g-!^xAy^FGP&*4x`oF zFYGQZLm3ZD*ep;`4ey|mcf^*9h&sbDfEu|lL4t9s#d@s``FK z2`8g1(N~y!&{&v+5q?cdrFAKfv}qH1`L%}gI(^m8!rbFti}=5Ic6>PO7Cc-uXR zAVWjNXLD*ju*$J_ex`+S(q1oF{H+8wZGDTz*E zXjRbK+GWjQVCTecFqhx!6YJb%7ZpAviLjm_ zOp+y}iliks`9ndento~V2H=p;@&Y)rX^@`1ke3z5?_!D23IzIvuQ1Z~j(_hoJ<|)@ znw{M(z>zF9R8YSA_w2xWE0dQbrfVLUrkx#AHYKNvboHA}`h{HqZMo&`x$fx)YwVWG- zhXOu9g$!(r7EK4E-TVv|$-ae0#*#0}=-LhR_6ik{JmW`GpJk3?SVpAe(MdmrrAlG` zW6;XlQq=z0_A;Lzg;x^F;kzq?M1YF9Qy@yiK~nJ(`DFNT8S8OfT1IjwJ2|0XvWh2Y zKmq#~39f`_M-gy!;>M{zYXX6`7Eo993ptFyH#y>Ar^Bgu&$O|Mn1ui>4cZcCqdG%P zFhyNWNZbrlilVT8Xeq0^Bx`bF1Je8BgM^I^jQt`bF`xz)Wgo2r67qMT5dB#uZZV3T zSnaO2bOv;@J7uiz$7}1Q7k_QX`6w3vWwka0Ng^^(bvS^)!O@;wwVgi6VBiqIz0Bzh z1Gpm%yT{d!`Y*W4X*2??wkf+sGD=v?1J#@X11ea?qM00ugu~fn7*7JgQ08bhgVp>p z0*w-pB*B*qXj*!WhfBpAA5m+>z9fp8e(^X@D%)I=LO!~RWGh*oiwE{0SNF8(Eh`cV zpL+FTV{#k4*Oav^Btz7f-^zc8rbOLbzR`+^fTV5(W@};dE=&Zs(9pn3Pf!0bZX22A z3>8$sluy3=Q#7_q=|tEdB_~Ih$?a;}VAARx?xzc8ZNeIxRoKN!FJ@%fJPYl0@ z_MMDPp!NCt$MEp*q{^?A_}y0ix9`RB^~=!W(i?$i0uX`z4|50wFbB4Lx&!kD(N~}| zbG_$`R%@^FuZ4L-O;Zds4MXx>GX@seQF&}6tDqGVxz=6pyB#xXr$;nhV%{1^G*yXEc%U8h_<_c5Fr4lF$-nQvoSf2Lz2OmNx^_GcfcfYB z@Pw*>w<>X1UE?GM+ff=_s67{Vw4&(wBoxaZvx@fFkIPG5ZvH@IVBnrBKJOj;-`PVC z_+-s-H_=42VE-RDVYAU#SF6+EsDvr{dbVQC(RU|N1g$q z&+Ee}=50zUNe+{i)}|Y+hwszQQ`f6jrb_{RjSV@jMUsP=td>Qh-TYIx5BTQh+QesF z%~ND&x75$vH^X{qSG(P)%K<$_kD;|W`AApsl5C>U#rV|K@z4*0PZllWK|W`0aXJrF-k!~B;3j7W|x+(6#o%Q3Q1{= z;p+-#ya3;~95=`w%oOv^dC%8Z^mx)24QXjSQ~cQ97iY0Nw+-vMoT2kKC##Jm#mTOF zRr&GACEx!mVPxd+V4&{8L`H8$x%LcYujOY*Af;(DzsbzFe4I* zLA(7I*Fw=UX&}M8cX~VnnWxM*Ep6@dj#QPSLoA6zHUfMCU+H^%-p+~E2K&C=uZ8*L zc1vS>qM+*|E*)j(39-nl!dn{P0CrY^^ZP^B7SeEWan)B=S}g$fQLTGG27sGj*s$uR z-TMh;wEikrAeyO!P*o;lth7C{xVWk`TEMnQM4QgnC*ta2)Y4xg(O9!X=4r!NQ@_!x zqolTR^@f36jSrETNKs|w`58jn0~Ja5^!Na7t&JCvZFy2pLNE*Ny?k60Rar@+jJt+H zI@j&ViXCk?5>F!HNgXT5dAbr^SXek1FTq$*SGV_avpyu#`;s^4PEcb8GYRV6VwrKy-Q_4S2uTl7fsdFDLxM+DCK zL0um`3oA<@nS`zlS}IDgip+M2_!elfJtePiI6{TXJHV>o=0u?63 z4HXY%au3fOjM%KI>-lb8hJcTWzTr|@XmFv&wzkuKFYv=1Qd88ZXJfyXsaMq zxyp(PF^*b-pl?XNLF)EUK?^(XmVncO=Z;um1yi7#4!|rL>FVxG0vZ1G2cXBkiXvZB zuhj|ZJZ(zU4geQPcQ<-^v z4IsPdx1_Hwh&VhDMh9pZy?(2OBSvz1C>{d`U-F><+7uogo3ySK8vGN0OF&#-+5dsr z*ZT*{?3>!zJq~YeRkb?I^!o@VIl{ZY{I?MF2iT!Z7gvibEA0P4dN~3x!ul%uQ0JKseU#-@i}b0S+aHbp9_IT{s_SN?9AxhOw*1o3`ebu$_=~)K9b} zhd})U;*@~(h1}|sgRoB`f;MLox`%c|#264-Jnc?@MH`)$n*t`UM;pGlJm0{$H(&(< zb9GrI0>^2&f(A}F48C=8=0qo#L`O%DnwyxI%w)1#&-^-4ABmEQwLN zW^$y^(KC70RdBVmByx2Jyx$>SyOm37YD9)RG(Fs33v++;t-N92Vlq6ulvh?r4QjEl zIB9*v=JezcTMON~)mp*3C>o@ssta437mL4Zp}V`k4RAI612e(-GqpI0TC3Z&%7*6z z9^lxA;XHPW16DKme}5}K_kz)xMX43{hi|v3tE=n4c8Aki9=Frq6F??%t5N;1Q)}-g z;wS}`q$74#6s1YDqY*kfN`PE}Vqj<);A#`gWOO)ghfnkF|DIv_yACqL_b2Iu`(=yX z%^c@$Ni4h656^?SHnH>(X^tBm;vL1I`Q6Pa>)25gPo7C>H=kxm+XUhiMN*ZqcvD$)+fZ2X**0M3@fBnKm7 zo%8-+2p)q@`@BEFk^V69DUqKyL{^&(x#Jj_y3p%Ma539*)N1buMCQ9~1o5vHMbS+O zZE1oz5)mkA@;=cU3LY-B01VOG2LyQP2IQ$G)|JXP9`9l3iM1X6o)RhgTi8g6p?9_u z)BNF5SrHL}>Cvp9tT5hTN(#5CJSQ0)K5SfE4y`e2-ICH0LG4RGS|DzR#Pv{L>b*t*t5P^t`s0|Evwi17g zs*a=Zxqy?2{UN;gh;o0vh9zm~hs|a|TwZ_jpCS!xkzZ*^;91;)JgwVx5Pp zWAUlPs?f#x{>DwFf7v_m@X5x8GVp`!=ev*k>kh+;J6zS*q%G8=-=E(nq%WRQR-SPi z*Nu+1{j0N>P)G#T%Wo3i!uZYRmYzs}+x+bY+xsjn2as||*<0w$!zZUm@RCGEMwa?M zZkTJ=0(y~9_hxKTpYv5)jrtojiVoPy@e}v)8Cq`?7&ebTy&yXWpG-H@+@o^UDn`|{ z1p#F0Sn%~|R)I><|In%x?yTrxgd1A&f)~Nee>ppXnqxh2M9^EtUsCdLd~_$>nY`lq z$p00aC4hnwf6fl~_YyKvs$9Ib4iO`7m(4aT&Mp>2Hz_Kqk(>x{*9jBy_QoF`7Uis( zNYWh`Gy*$0u>v>SZ8cUdgH2JzuuVAD){w4$2kP!#CJIEtN`J?{5V@BC7a4v%Y5n%j z&d%iIq*<+A&+B;>r+qHg`MSf)Ek?Q;XAtndMJ|4qmZH_C1LOC7cM?gDphFUDlo9m+ z$~D` zAZ#Np*Bed8bKN|w*zhIa5|@QELMMUh8G+sZhdS?cxiLn_vh%r|v7zv0P&}5H|5Z9p ziD*LC{HY|xqoOA7K>~gM41?y$VR^L{hR-bFNTMoGP*nEKj4CTXwk9Qp0L6TnmUqIx z+cO}njnVxDD$rh#33WpO8Xhq$KmHdqVvJ2wpz!w-^PA(Ldg1=HAK2aA?}~jFOBG+| zN0*EZzodmb#Kl@}EuSaCfLK2Her0_m#pikU24!eqXbK$gl!N>6ej~CKtm#cKRyoiW zkqUCdspo?OFD^ee#Z|=|DPbjF4qW^Fz(Rxo*yl#*!tUB|_K79f`^|n)d`1doCfQ%U z6x#XU3Z80+qM{9dJJ}OrgQBbP6NXeL^)b~_`CGQOBiWK3a8J`Dr}(Uzhx0n#4~8h&F!zMHC$xJd7^csi$X%qOvBZ+WApdX$C7g zG8!0@LvMGNz=Fhz!&Lu6LrV)}Hd7%?BRBX3AXL*5>A*oe@06wtm~we#vbp~GjaxUB z#aqB@F-3-lL)TPRYANaK_ucIeg>j0~f!sX*o2z$PvpY+K)h)L4FMA;k-&rMVT};wS z_D)?p346y+O=(e`Tj6^8P+$QmFDw<_G;2(=mVr#x%FN6(FyV`Bp14FcJA-_P?}6`?0F}1j7o6j>OXa#0R@E zh?eTP3*;K%^>lIIN8v#4A$^)CU5XqGIb$OtA}VWZ^&aWLT-@45H1|HBvwAnd6q#WH zG0)qBO{f^^EcS=A5P-J!GT9~QBhYCoe15MM*4kNw-1uAuzd_Cf+a!}Mk>>%R_<|ri zo~g@499O6j_6)>r>r=HvG%>nyQi>0YEU+t#GCeb+@aMe+{$i56dqia>EEf-tpsX!I z_76Y3-NtCGWK)d>x}X7r?i&R~#TVL*9TLe85c|DPxUQv-n>*%7sbY3EHW^e@)IaBE zXKGhlZT5_)r(Q8n0q38%0SXrJKw)b5OmXrAQcT~Y)TN<-a6$+F`HLiju%=oR zx68zgnwq*|sZ9P0jI#gfhwuAy0dP^?{iT0)A21q-;*#W|(Sn~n`imu`;tZB#PTjW2 z%IcK&&4;aI`2ldaWy!MO}%_D6gf-2ucZ`i0R}{eSDtWD*TTkMAh#*yysI4{m+(=H=$c$B~T= zj0}LV?-u{FD@gaR>GKH^2+{4?r~wl;?4mSUg4$md5n5W>tnKaX#1J?vyY^rE!r+Pf z`okJ~1boieEwLS7Xs>_98;WoeYO5;?wq}7d;(U#kxCpdn==_Od0VL$6t(D(p?a(|{ z#dDg9mJa1m%!&F02Uud#pG_o>x#$o2cK)2Ki&`oX-tw!RJ#lg{2r(ogkRBeUqTph} z<}tjX+wJwz*D>5N&W*FMX`}+vg}nof&+!h2h>NITW*OGg^C5aKQ1hRFgkl*!7Zn8w zvAiynfY%LW0L?v$2hbotl$q4?2=Pc1KW|gv#~IV z#?^Y7b-&MeP+{P&O$oUYU7tDD;xog{CH(+Y9}Tc-hR z$O3P7oQbm^2{KjGv>8B!o6CPEMZ3jn1vC2F56ab7yMxl1z?y5Ih9bYdym@0#Peo}o zmO#mriT``JX=7FvOQN}Bpat37;m$URLn&KdyuyYgd!rLgcRfRz(1zfbZ|0vA6|_EYM67p@DytCWsB}d=1-rh?03M zI2UsD`h+JMD>k^GMYu;VxSM{@?~6FwB~ThtXo`O*Ylc!xv0%eP9dM_38T14M$q*ZI6H02 zgOZ}M00~E2pUt?FGarz)QVSf_b))k2bPKA>r(NtGa`;PXS*}em#OLIYCm8B-z*jU`bK9%20bdmt^HW;8pPWr~bDO^Qs%ATsGNG zi6AKfICX`lg0AwLjGHYi!t(x8I#(Or;!0|=n;%5opXV^*-iXBlSWv$DXmIBW}p zl|V%`o9T@41kCd3MBqSt=c>T|yWt=}d6)b~?KZVgEU8lj70)ns%zciru=CjtJ*qo-q*w#1B#Rq)Pyr{!t&7M zCaltu((kAh{dja~bWKbFX@@6{P6vFEwEPT^8#jRiAi#tY(G!XEQ&3g)Nire2oma|A zPuDQOmcCkIN-aVkB^`aWdyCZ-6@)+$X?&TSo=7tCNgEW^l1hLt?N-{)9TdF`Bh!M#j!-y|c_hV2?iQHwzT zt*Gl?YSkMIgdR<$%?Y^Qo>H-)3yeYn!q@%M$$!qooPKG(e1QY zC`9-V4Su8*rb_S)Uv&eFnn>Rm40)E)-7i2mp5hr8XelX?C}x$$iCoTTtE@1@Ujv1O zJGJkki^>8|Hboqo9RL!$o4-wILXJb*S6?6kvMugCT)7Lxl&4>3q@)Nt9)zIMum@;pxX$ z@KOcCf*HuilU5@q835nkKRTOg^Edor(qvtJPY~&0!?6BviF}7-48(Kz>h=-{H1fV4 zx9pJ$j=ets=w(e6&`*p{Oi;%HUvpDamgsSE0d(ihaTEK0yD{07D&dfDIR}$B{$zij z8D~httopyy=RXk-ma&i9!6-s=pB8cY&G0CtPy#yA=?ONXaRSGEYI-7r`iGr{iAh_$ zxw4ZJtN_YJ&0M@!TQ0uxIJ3x{VBVmv$?fJ?G{N^%og#SQg<};Zs1pvTFt!qOGd>+7OVP%!c?}aD?H`jp9Gh%M`-^sow>kf{|`x+9fMq)5J z6OLdLfA=(2xBLXKfO7|_uSy`C+W$koY$Asy<1YcHtEIRxEy6?Dhg?{=A)*DVNj3pz zn>V^Ilc8#&(kvXoy7?mzfVFxU1`_j|qwyPMla153ajI>r4WGjeSx#B15Y!+kDSwvN z)&i}}>aY_~f+HJVQK<^m?VXF&ezv9YlsMl}*H)_74`RAjun z$_;)U8dEA{!Sn5(W%_>)H2>}nI93}{yn;0x37|&aCs}uRE$;309Rp0#?B|VWmtU`* z|Dh>p=ujBBGsNidWTK=`XM2YqGGSI=px{W)5+vJEp=}5|>v(q^+V}T=vMf9y60%_9 z=jcM}@`;X72wHh!0+G--{WKXHTQ)wc$*op|^ZDsH*sbzgKaZ&Uytx=H2W2{b>KqJD*=ZF;>8i z#TgxrF}5^1L*ta&cS3$oXZ7fZ9e@O?V5Mpw%FN!>8Iv-k!vRD;C?ke+m$saVz4N~f z)#L=wQ<6ngW!IdSCa5iyB#9xtgT+KSK6HEynb$Wrg!(>xy2_mhLx(p)@Hu#V0+7-2 z=r)LMZ=>?1b4pR-Sl#Pcx+RIVv~ zfEx5Pb+pzI(9}5qm|k~XT^$zBt<1?qhrh{;M0(f({Ak~a9F|+we`oSvw_D*?><%e7 z^Q(o6%Y#F)*DzD6Y8W6%LCn%b3TC+a@o|scYP%=NVHC(;Og&KF>8izQ`RzsOr)a~2 zuKIhNC0A1CTk~bPwyuVXR3gqCy9z^7|F!raFdR7qy3|+nTw-Kgw0K@`8Io^g<_B4@_l4{RCxW`&&1}DMv7_C zR3ab=`uvZkN2~(~-Q#R-Cl3BC)lv;VFR!-Pj&qLDSOW@vahm7wvrXOHrcC)i(4Y| znjw4T+OAPnR1{rGMn;5d#Z8&lN@Qdw8Q14UeZIeazkk8^{&*kn$GxxjYn^kR&*wSE zwk;OLa46tAt8GmIN>?!!-)16VY6bd`fx8Re^g1N3rhjXL57(Dzs#Gf8-`?@iq5(kN z;I2o7k6wIu!7D8H&9t_mzDhf9dp@Qr<1m+?=Bei9LaoyJCjmHpTvAjANo$_G^iS#Z zYXh_-4V_%t6Yo41KRr2S^{-KdV)E0{(l{6xW+rZ0)>GpbOag`ukN5hpVAM37VVg|; z88-!`4eH?0V%243Wm$?2W*eJbJXKeMcUMj9M#IkOmI7-)-K%`RLr&bCirJ|30{^Awsak$#x(B~q<8n-+p zC^J;;*h$fEIYVD(o1TJmCXYuOHSH8gWgY2jwO z%z_a>&ZwwZuV#Kg2bo{O`*)4unL`fGV&T!gt5nc_&DHh~(AL($@STa`SR#W?_G?~V zjQLlQ78X(LYkZ*muYUr-WFAFC1vh0TLCpo064(ZGTdoPQp675+WJgLy@!mX*I$Rb+{2OiF!S@zUR@fUd0Cf2#%j>P@klRAYz#CztKnBwZ4na@5ph4<+sxYH?G+d*bX4;mQY-LLt-J}o51Xms zJ+Urq{Kf59JsX%*VtILau(kD=JC##?=)tZQ@Wr|wah02C%yQ!>g^g{dLS~XUmE&OA zQmN-kl09}7ES7r)`T;d%yJKm=Y>?Z9&SgMcUrb88ts_%EbQtu#C-W|-uZ&O46t(lqLD{&E4Gl1IGP3zgw zaIrrel8yv*RD(i(j=yOX8mek)3h^L&h&vqA9@Bgrg)U_mUtPSpP;>rt0;pPl43*qE zpYWsSLvoOANnBixNDI`^Tgt#OUp)yNY{3& z?h60?ouyk3j*otmqkNT_JVKG=D)t0)oZ%f#P-~r$@vc^%bd67Hp-id=*e`*2-CV3X zR9Tvd#vn;k$!&0b+^9CTp#gD!`>R1wDL61392|zPfVVQzhn5*h-+i*{Nl%}G_5H0y zY_nhzN57;vU&DC15?ARZ)2n19mLo4S<22Oig^v3Q{tGK;71TJ;FRhG(g^&3x#BZX? zNK~E|aqax-W{W8B5SYO}XE#`S5J>uQ&r5|>$rMGfVS34xjndc+*1bB+#+63|unqiI z1YJtf8B-ZkHbu8^2b?kt&TxXpJS3%#+oR&^ABGc1V~-`kb+*mh01q)hgt^UHae!jD z8W(Y40>$vU0SqF=J=GnJqO7Ff^e zUGNGd)pAZA$@JA!pX$ssm&^E|O=8Pr&&686JI%H}s_8Alr+1lu$4ql0Po%E!neC)} zkBDg7#7N3Kd-3Id;C!4tCJM8v-}1o?QuFm|zFjXC+>S4A4_ndI({pt!4NXW)OqBWA zP9@|gFcA7>c$m;e=sVd}4oyUb66{RjCmxO8hieTUUtXBodQ3G18fx}kl9lBw@u;Gp zU(ys3N}akV{-Fx``a;^|9ktZk&uTE+aBfw5P?S_DP)pN$^SG0myD&)|n20ROKcp8j zaL;_#*ym|~uFjn)>3YN{NAaw@oO&~UGu-~RIwE`+-kjvN;|yf8TTM;M*o`N^o1JXz z^BvN8#BR0jbcFuI|95on0(4H)BAnhFc<#WB&CN~C;Hp5Nf2isjm^LpOH^VefG_GIa zILD%2s$*kvw+_&$&v9_x0Lci5sBw0hS}~%SlP6FXPkJQK8;x}Uu*X>x9VC< zlw*5r0>>Fn)izGu9^ILFY`O+aW>O3Fky8s^k`>5x2km-0TPa>*m1P+I^<$fz`LIlj z7Pc^?;pD;w959W*df{yOE(NLILHGWv=H{EVzwipbCQz_4il38dim59xNK}}%0Lwe z1jwPVO3rd5|7bOBQs=!?F501KWg2VgfVBKmQCZA!@@dZb=0?+_AGfGQT$HWVZLdh+?aLsFvtMwu zdJpcIZEcmw(^KWp?K_HEt-oB|T+tH znUPCTlhY8ZW^g2tfe-Ap7;9}ZFd^cceklSaDJs~aoxV6Xw`KTLGA2elGP{n)%4*C3X`M+S$#~1;sk{|y z{%fbJe&fRy_AalZF$J-}RZ>d27I7CiT4_2=0$ro-29<;WzCDqZzxRoQ5a+zcpov0m z4+vFA{VG2X?XR6icY+{f+FuKMhGtry@tQ6(y+$a#U?!@*%v z?2l1K));_C8}aegek&swfj+Yh1}~6_Cv#rjeb0Zq7IABaE71kdkz)kMAGVfCkc z-Cx{TvjKVx`WP9t-@sI3_>|}+TVp^@TLi3ASY*(Wc>uCl1nAn*CS{#px^gG9^0gv2`PYp?qE67X6Cx93 zt6pNN9UNVtc50Sun{69_S+;izMcTSSwuefdIIJkRg+j6gK3u!Z4tnG?da_kxsF>1m zrHI_8NVGk^wR@C=jAm6bS1SG7_^>bMoemkI_?LZ+eMkl%7f_19hF`hFj#AEZ{fv4Z z8{6ePPVc;$TNDvhud0(M^y+a6?BqHH5#kxyxacMKvrju8>eV$Tf+K7j?+*_idb=87 zT(QTNK$CyNjLd37_ZV?J&rbruA!#c^R&e%jdUtT6?m#y)?kJF9MJ zU$k~IH)ZpK=4xlGpyqwJZVnG0P&N9T`V8G#krHWxHT7Ur0B-GfzDg7a>ezet&q&Ce zjwOkk9zzUWciS5J*v0n~dnL{al!SWE~!PQ(z7(z8Yyl#}9Mu9|$&GakMs2qoo! zJ!1`#s^WvL!xTu5{Bq-qn4J-UA-9@uoGeVl0}`Wf`BZ~!G$H2AOI8*LgxEh4J`V5v zy{rld@A{ajX>E&2E0YvVk|Z!Vcd^WqAYaz7lgs6O5k*3ttN6cRLDZo~E%PCR-0ISR z6X;OKeE74y=&6WYvpY*iL*UPVffPAfm%e;xoTgEp3bmWnX5GMUXpYRf6EXh#b7Qj` zWFRXA1;pEzymVkW6aJqzc4^hp?vj^$>0(-9y?3d+q#_x=2Wx$IS2rL7k&Wh*k%~F! z1573I6VRnXJL^9^rRK#HwErHp>Wo4Up8x%%rN-&+@+CpO?$dqe8vn^CXlrX5%pq~Y zSS|o@aKSmJP;Kv|t%O&$)3cT5Wsj157AFLH=Ed!ASP%mnD7&hye$hF5WOlk-qK5ho zI@v(~Qj~L{8&27|duCc}q0BH^FI%FgwpV|GN1UQ6>^B}c4ENw9Q~(VW6|}|En$cxk zvYHHP{QzVw{`2_&2}yaI&stkMs^`m>FF;A{+`0UvqOSNC{>0_hPLWqL^l&Vv+*!j1 z=TQh95$24tR1A(Q9@Zwg#~JBIKg)@dNcHB?$sXg5)E|aRAG%5pumOkP0XXZ@JcRbP z0c`*;l}T)KuS$Eqc=l{h@$Br<(vo3&7zUFCeXp$a&fy51^3T>J(S`5-Q0P`Ff)=x~ zvHghriljbi;&V@k=bZ#V4u3y>KPzl)1q553xap$4@;cu*9qVPf!spGj@s=U>`A-*64U=sInbaa%n?nCG0*i`4hX%*!tJ%0?td7OLlmvd;gKZSvfhmCu`$xR%~U1-$6eJpJ|@jr|qZ(H}G5s z)@6QY?xUWuvDr8uVt1FCBW#aNb9?!J;it`eSRPfsr-`s8GvL?63I*xRX+obPm%>!*Arc7F{B z=MDz<*NX11G#+exUzRf%8fE6ncX;>|D2vH&=-!km2GYoTLgH0-@NhaU@oi^%sY`Ov z5h5beUVT6v5k*Q3X$2%d91o8KF%^g>LW@c_a zEdUC4Wh)THf^sfAp>*vUuZ&x@En%*He&(VNSH7(z+x%d@4{%Sbqjfo;g5qPIb9cW@ zvJL4gFS<_Ym6fR=6Em1^Q|Ezy1+IoyqT=EO>Ng+&BbYGkmg>AwJZ;+YeMIR?%HMbW zMyg?Al6rPI$h9PPXCw!O%YnILwH8ccS1I<@NU0t1JB8eK;Bpno1p&yAJeqJsBo4Rsp2ElLQ z_}f+Q2&649FMk6^{d4!dxz>oY(xUuNyV4(b4lr5xswH&BY$Vo;3)doDe*_5 zH%jsM`ZPUoR)qTLqv(hq1FUP#G;G1(NB$*dxbW<#`3P@?;;_gu4>IGg=LRx_NEr>b zgdSwU4)*o}Ov#Z)`@b63_-uNh3t`GU`@1X91m*MW>>rBSV;jc(F5(XNz?D}%$-&HIo)m~9{!a&d?*ii|tgV?g+@&i(IoOKiil+*`T~ zchnGsp?RCvfQaa4aXr%SVl)0u{3_jEXr|PZPw0^$UAUvfPyYf&^3B&2l)H*VZr4$% zvd6@U|8q8Jz7zXDzEu>_n5D_luB9v@Dhe^K{bk=#gLf173ZyTT7V;KS-oq5j`UI*xh7%5wu#B!Hm5v~(AuZ9(>*#1ordenKCy{cpc~VOW zDG{e%zr$ge|Bpg4HC~E`4jWN4X0s$R-K``oz5NnAc6R1CG7cguQ>3TQ02G@!uX7{J z(;TleaH(^Rh3Nl3|K|*Z{A?qp1W$w)9# + + + + + + + + + + \ No newline at end of file diff --git a/resources/profiles/Snapmaker/Snapmaker A250 QS+B Kit_cover.png b/resources/profiles/Snapmaker/Snapmaker A250 QS+B Kit_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..4c186581c0256b652627ce853bc55ff0b292e3f1 GIT binary patch literal 217344 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