import { z } from 'zod';

type StringNumber = `${number}`;
type StringBoolean = `${boolean}`;
type NumberRange<start extends number, end extends number, arr extends unknown[] = [], acc extends number = never> = arr["length"] extends end ? acc | start | end : NumberRange<start, end, [
    ...arr,
    1
], arr[start] extends undefined ? acc : acc | arr["length"]>;
type StringNumberRange<F extends number, T extends number> = `${NumberRange<F, T>}`;
/**
 * Valid AMS control actions
 */
declare enum AMSControlAction {
    RESUME = "resume",
    RESET = "reset",
    PAUSE = "pause",
    DONE = "done"
}
type State = "pause" | "resume" | "stop";
type PrintMessageCommands = "push_status" | "ams_control" | State | "gcode_line" | "gcode_file" | "project_file";
type PrintMessageCommand = {
    command: PrintMessageCommands;
    param?: string;
    sequence_id: string;
};
interface PrintMessage {
    print: PrintMessageCommand;
}
declare function isPrintMessage(data: any): data is PrintMessage;
type PrinterStatus = "FINISH" | "FAILED" | "RUNNING" | "IDLE" | "PAUSE" | "PREPARE" | "SLICING";
/**
 * Every stage of a print.
 * Extracted from https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp
 */
declare enum PrintStage {
    "PRINTING" = "Printing",
    "BED_LEVELING" = "Auto bed leveling",
    "HEATBED_PREHEATING" = "Heatbed preheating",
    "XY_MECH_MODE_SWEEP" = "Sweeping XY mech mode",
    "CHANGE_MATERIAL" = "Changing filament",
    "M400_PAUSE" = "M400 pause",
    "FILAMENT_RUNOUT_PAUSE" = "Paused due to filament runout",
    "HOTEND_HEATING" = "Heating hotend",
    "EXTRUDE_COMPENSATION_SCAN" = "Calibrating extrusion",
    "BED_SCAN" = "Scanning bed surface",
    "FIRST_LAYER_SCAN" = "Inspecting first layer",
    "BE_SURFACE_TYPT_IDENTIFICATION" = "Identifying build plate type",
    "SCANNER_EXTRINSIC_PARA_CALI" = "Calibrating Micro Lidar",
    "TOOLHEAD_HOMING" = "Homing toolhead",
    "NOZZLE_TIP_CLEANING" = "Cleaning nozzle tip",
    "EXTRUDER_TEMP_PROTECT_CALI" = "Checking extruder temperature",
    "USER_PAUSE" = "Printing was paused by the user",
    "TOOLHEAD_SHELL_OFF_PAUSE" = "Pause of front cover falling",
    "SCANNER_LASER_PARA_CALI" = "Calibrating the micro lida",
    "EXTRUDER_ABSOLUTE_FLOW_CALI" = "Calibrating extrusion flow",
    "HOTEND_TEMPERATURE_ERROR_PAUSE" = "Paused due to nozzle temperature malfunction",
    "HEATED_BED_TEMPERATURE_ERROR_PAUSE" = "Paused due to heat bed temperature malfunction",
    "FILAMENT_UNLOADING" = "Filament unloading",
    "SKIP_STEP_PAUSE" = "Skip step pause",
    "FILAMENT_LOADING" = "Filament loading",
    "MOTOR_NOISE_CALIBRATION" = "Motor noise calibration",
    "AMS_LOST_PAUSE" = "Paused due to AMS lost",
    "HEAT_BREAK_FAN_PAUSE" = "Paused due to low speed of the heat break fan",
    "CHAMBER_TEMPERATURE_CONTROL_ERROR_PAUSE" = "Paused due to chamber temperature control error",
    "CHAMBER_COOLING" = "Cooling chamber",
    "USER_INSERT_GCODE_PAUSE" = "Paused by the Gcode inserted by user",
    "MOTOR_NOISE_SHOWOFF" = "Motor noise showoff",
    "NOZZLE_FILAMENT_COVERED_DETECTED_PAUSE" = "Nozzle filament covered detected pause",
    "CUTTER_ERROR_PAUSE" = "Cutter error pause",
    "FIRST_LAYER_ERROR_PAUSE" = "First layer error pause",
    "NOZZLE_CLOG_PAUSE" = "Nozzle clog pause"
}
/**
 * Maps numeric stage_curr values to PrintStage enum values
 */
declare const stageCurrToStage: Record<number, PrintStage>;
/**
 * Detailed information about a print stage
 */
interface PrintStageInfo {
    /** The current stage of printing */
    stage: PrintStage;
    /** Progress percentage within the current stage (0-100) */
    progress: number;
    /** Human-readable name of the stage */
    name: string;
    /** Detailed description of what's happening in this stage */
    description: string;
    /** Whether this stage can be controlled (paused/resumed/skipped) */
    controllable: boolean;
    /** Whether this stage is critical for print success */
    critical: boolean;
    /** Estimated time remaining in this stage (seconds) */
    timeRemaining?: number;
}
declare const PrintStageDetails: Record<PrintStage, Partial<PrintStageInfo>>;
/**
 * Speed levels of the printer.
 *
 * Extracted from https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.hpp#L73-L80
 */
declare enum SpeedLevel {
    SILENT = "1",
    NORMAL = "2",
    SPORT = "3",
    LUDICROUS = "4"
}
declare enum FilamentType {
    PLA = "PLA",
    ABS = "ABS",
    TPU = "TPU",
    PC = "PC",
    ASA = "ASA",
    PA_CF = "PA-CF",
    PA6_CF = "PA6-CF",
    PET_CF = "PET-CF",
    PETG = "PETG",
    PETG_CF = "PETG-CF",
    PLA_AERO = "PLA-AERO",
    PLA_CF = "PLA-CF",
    PPA_CF = "PPA-CF",
    PPA_GF = "PPA-GF",
    PA = "PA",
    HIPS = "HIPS",
    PPS = "PPS",
    PPS_CF = "PPS-CF",
    PVA = "PVA",
    PLA_S = "PLA-S",
    PA_S = "PLA-S"
}
/**
 * An AMS tray (filament slot) instance.
 */
interface AMSTray$1 {
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    bed_temp: string;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    bed_temp_type: string;
    /**
     * Unknown. Bambu Studio doesn't even check for it.
     *
     * Probably the temperature required for filament drying.
     */
    drying_temp: string;
    /**
     * Probably the time required for filament drying.
     */
    drying_time: string;
    /**
     * The ID of the tray.
     */
    id: string;
    /**
     * The loaded filament's maximum nozzle temperature.
     */
    nozzle_temp_max: StringNumber;
    /**
     * The loaded filament's minimum nozzle temperature.
     */
    nozzle_temp_min: StringNumber;
    /**
     * The amount filament remaining in %, if enabled and an official Bambu filament is loaded.
     *
     * With non-official Bambu filament:
     * - 0: Tracking is disabled.
     * - -1: Tracking is enabled.
     */
    remain: number;
    /**
     * The UID of the filament's NFC that was scanned.
     *
     * Uses:
     * - Check if filament's manufacturer is Bambu Lab: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1090-L1101
     *
     * TODO: Extract when received from printer / provide helper function to do so.
     */
    tag_uid: string;
    /**
     * The color of the filament loaded in HEX color code.
     */
    tray_color: string;
    /**
     * The diameter of the spool loaded.
     */
    tray_diameter: 1.75;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    tray_id_name: string;
    /**
     * The ID of the base config file for the filament.
     *
     * Uses:
     * - Associate the filament loaded with it's complete brand name. Use the `getFilamentConfig` function for getting the config.
     *
     * Config files can be found here: https://github.com/bambulab/BambuStudio/tree/master/resources/profiles/BBL/filament
     */
    tray_info_idx: string;
    /**
     * No use cases are known.
     */
    tray_sub_brands: "";
    /**
     * The type of filament loaded into the tray (filament slot).
     */
    tray_type: FilamentType;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    tray_uuid: string;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    tray_weight: string;
    /**
     * Information about the AI camera features (?)
     */
    xcam_info: string;
}
/**
 * An AMS instance.
 */
interface AMS {
    humidity: string;
    id: string;
    temp: string;
    tray: [
        AMSTray$1 | undefined,
        AMSTray$1 | undefined,
        AMSTray$1 | undefined,
        AMSTray$1 | undefined
    ];
}
/**
 * Nozzle information from device.nozzle.info array
 * Source: BambuStudio DeviceCore/DevNozzleSystem.cpp ParseV2_0
 */
interface DeviceNozzleInfo {
    /** Nozzle ID (0 for main/right, 1 for left on dual extruder) */
    id: number;
    /** Time-related field (usage unknown) */
    tm: number;
    /** Nozzle type identifier (e.g., "HX01", "HS01") */
    type: string;
    /** Wear indicator */
    wear: number;
    /** Nozzle diameter in mm (e.g., 0.4) */
    diameter: number;
}
/**
 * Nozzle system information from device.nozzle
 * Source: BambuStudio DeviceCore/DevNozzleSystem.h
 */
interface DeviceNozzle {
    /** Array of installed nozzles (1-2 items for single/dual extruder) */
    info: DeviceNozzleInfo[];
    /** Bitmap indicating which nozzles exist */
    exist: number;
    /** Nozzle state: 0=idle, 1=checking */
    state: number;
}
/**
 * Extruder information from device.extruder.info array
 * Source: BambuStudio DeviceCore/DevExtruderSystem.cpp ParseV2_0
 */
interface DeviceExtruderInfo {
    /** Extruder ID (0 for main/right, 1 for left on dual extruder) */
    id: number;
    /** Current nozzle ID installed on this extruder */
    hnow: number;
    /** Previous nozzle ID */
    hpre: number;
    /** Target nozzle ID */
    htar: number;
    /**
     * Info flags (packed bitfield):
     * - Bit 1: extruder has filament
     * - Bit 2: buffer has filament
     * - Bit 3: has nozzle installed
     */
    info: number;
    /**
     * Current slot (packed bitfield):
     * - Bits 0-7: slot ID
     * - Bits 8-15: AMS ID
     * - 65535 (0xFFFF) means no slot/external spool
     */
    snow: number;
    /**
     * Previous slot (packed bitfield):
     * - Bits 0-7: slot ID
     * - Bits 8-15: AMS ID
     * - 255 (0xFF) or 65535 (0xFFFF) means no slot/external spool
     */
    spre: number;
    /**
     * Target slot (packed bitfield):
     * - Bits 0-7: slot ID
     * - Bits 8-15: AMS ID
     * - 255 (0xFF) or 65535 (0xFFFF) means no slot/external spool
     */
    star: number;
    /**
     * Status flags (packed bitfield):
     * - Bits 0-15: AMS status
     * - Bits 16-31: RFID status
     */
    stat: number;
    /**
     * Temperature (packed bitfield):
     * - Bits 0-15: current temperature in Celsius
     * - Bits 16-31: target temperature in Celsius
     */
    temp: number;
    /** Array of filament backup slot indices */
    filam_bak: number[];
}
/**
 * Extruder system information from device.extruder
 * Source: BambuStudio DeviceCore/DevExtruderSystem.h
 */
interface DeviceExtruder {
    /** Array of extruder information (1-2 items for single/dual extruder) */
    info: DeviceExtruderInfo[];
    /**
     * Extruder system state (packed bitfield):
     * - Bits 0-3: total extruder count
     * - Bits 4-7: current extruder ID
     * - Bits 8-11: target extruder ID
     * - Bits 12-14: switch state (0=idle, 1=busy, 2=switching, 3=failed)
     * - Bits 15-18: loading extruder ID
     * - Bit 19: busy for loading
     */
    state: number;
}
/**
 * External spool (tray). This has unused values due to being a copy of the AMS trays.
 * Source: BambuStudio DeviceManager.cpp:3647-3676
 */
interface ExternalTray extends AMSTray$1 {
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    cols: StringNumber[];
    /**
     * The ID of the tray.
     * - "254": VIRTUAL_TRAY_DEPUTY_ID (second extruder external spool)
     * - "255": VIRTUAL_TRAY_MAIN_ID (main extruder external spool)
     */
    id: "254" | "255";
    /**
     * The loaded filament's "k" value (manually set in Bambu Studio).
     */
    k: number;
    /**
     * The loaded filament's "n" value (manually set in Bambu Studio).
     */
    n: number;
}
/**
 * Status of the AMS' RFID reader.
 */
declare enum AmsRFIDStatus {
    IDLE = 0,
    READING = 1,
    GCODE_TRANS = 2,
    GCODE_RUNNING = 3,
    ASSISTANT = 4,
    SWITCH_FILAMENT = 5,
    HAS_FILAMENT = 6
}
/**
 * Bambu Lab's proprietary Health Management System (HMS).
 *
 * More info: https://wiki.bambulab.com/en/x1/troubleshooting/intro-hms
 *
 * All error codes: https://wiki.bambulab.com/en/hms/home
 */
interface HMS {
    attr: number;
    code: number;
}
/**
 * Interior lighting related status instance.
 */
interface LightReport {
    node: "chamber_light" | "work_light";
    mode: "on" | "off" | "flashing";
}
/**
 * The possible progress states of a firmware upgrade.
 *
 * Extracted from https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L3481-L3494
 */
declare enum UpgradeStatusProgressState {
    DOWNLOADING = "DOWNLOADING",
    UPGRADE_REQUEST = "UPGRADE_REQUEST",
    PRE_FLASH_START = "PRE_FLASH_START",
    PRE_FLASH_SUCCESS = "PRE_FLASH_SUCCESS"
}
/**
 * The possible finish states of a firmware upgrade.
 *
 * Extracted from https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L3481-L3494
 */
declare enum UpgradeStatusFinishState {
    UPGRADE_SUCCESS = "UPGRADE_SUCCESS",
    DOWNLOAD_FAIL = "DOWNLOAD_FAIL",
    FLASH_FAIL = "FLASH_FAIL",
    PRE_FLASH_FAIL = "PRE_FLASH_FAIL",
    UPGRADE_FAIL = "UPGRADE_FAIL"
}
/**
 * Error codes thrown by the upgrade.
 */
declare enum UpgradeErrorCode {
    UpgradeNoError = 0,
    UpgradeDownloadFailed = 1,
    UpgradeVerifyFailed = 2,
    UpgradeFlashFailed = 3,
    UpgradePrinting = 4
}
/**
 * The possible states the printer's screen will display.
 */
declare enum UpgradeDisplayState {
    UNAVAILABLE = 0,
    IDLE = 1,
    UPGRADING = 2,
    UPGRADE_FINISHED = 3
}
/**
 * Contains basic data about a filament, which is then extended by the final product.
 */
interface BaseFilamentConfig {
    type: "filament";
    name: string;
    inherits: string;
    from: string;
    instantiation: StringBoolean;
    fan_cooling_layer_time: [StringNumber];
    filament_max_volumetric_speed: [StringNumber];
    filament_density: [StringNumber];
    filament_cost: [StringNumber];
    cool_plate_temp: [StringNumber];
    eng_plate_temp: [StringNumber];
    hot_plate_temp: [StringNumber];
    textured_plate_temp: [StringNumber];
    cool_plate_temp_initial_layer: [StringNumber];
    eng_plate_temp_initial_layer: [StringNumber];
    hot_plate_temp_initial_layer: [StringNumber];
    textured_plate_temp_initial_layer: [StringNumber];
    nozzle_temperature_initial_layer: [StringNumber];
    reduce_fan_stop_start_freq: [StringNumber];
    fan_min_speed: [StringNumber];
    overhang_fan_threshold: [StringNumber];
    close_fan_the_first_x_layers: [StringNumber];
    nozzle_temperature: [StringNumber];
    temperature_vitrification: [StringNumber];
    nozzle_temperature_range_low: [StringNumber];
    nozzle_temperature_range_high: [StringNumber];
    slow_down_min_speed: [StringNumber];
    slow_down_layer_time: [StringNumber];
    additional_cooling_fan_speed: [StringNumber];
    filament_start_gcode: [string];
}
/**
 * The config files ending with @base
 */
interface ExtendedFilamentConfig extends Partial<BaseFilamentConfig> {
    type: "filament";
    name: string;
    inherits: string;
    from: string;
    filament_id: string;
    setting_id: string;
}
/**
 * The final filament config data. Contains the inherited and @base file data.
 */
interface FilamentConfig {
    type: "filament";
    name: string;
    inherits: string;
    from: string;
    filament_id: string;
    instantiation: StringBoolean;
    filament_cost: [StringNumber];
    filament_vendor: [string];
    nozzle_temp_min: string;
    nozzle_temp_max: string;
    bed_temp: string;
    bed_temp_type: string;
}
interface FilamentConfigs {
    [key: string]: FilamentConfig;
}
declare const filamentConfigs: FilamentConfigs;
/**
 * Reports all sensors and statuses of the printer.
 */
interface PushAllResponse extends PrintMessageCommand {
    /**
     * Status of all connected AMSes.
     */
    ams: {
        ams: [] | [AMS] | [AMS, AMS] | [AMS, AMS, AMS] | [AMS, AMS, AMS, AMS];
        /**
         * Unknown.
         *
         * Probably used for checking for new AMSes.
         */
        ams_exist_bits: StringNumber;
        /**
         * Unknown.
         *
         * Could possibly be related to storing whether the filament's data has been read from the AMSes.
         */
        insert_flag: boolean;
        /**
         * Exact definition is unknown, but it appears to be used for checking if all filaments have been read since startup or not.
         */
        power_on_flag: boolean;
        /**
         * Unknown.
         *
         * Probably used for checking for new AMSes.
         */
        tray_exist_bits: StringNumber;
        /**
         * Unknown.
         *
         * Probably used for checking for new AMSes.
         */
        tray_is_bbl_bits: StringNumber;
        /**
         * Current tray selected by all AMSes.
         * - 254: external spool (vt_tray)
         * - otherwise: ((ams_id * 4) + tray_id) for current tray
         *
         * @example Ams 2 tray 2 would be: (1*4)+1 = 5.
         */
        tray_now: StringNumber;
        /**
         * Unknown.
         *
         * Probably used for checking which filament slots (trays) have already been read.
         */
        tray_read_done_bits: StringNumber;
        /**
         * Unknown.
         *
         * Probably used for signalling which filament slots (trays) are currently being read.
         */
        tray_reading_bits: StringNumber;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        tray_tar: StringNumber;
        /**
         * Unknown.
         *
         * Could possibly be related to the AMS UI on the X1 series and in Bambu Studio.
         */
        version: number;
    };
    /**
     * The RFID reader status of the connected AMSes.
     */
    ams_rfid_status: AmsRFIDStatus;
    /**
     * The AMS status.
     *
     * How to extract it: https://github.com/bambulab/BambuStudio/blob/f96b6cd433cf925e9759260925cd2142abf298ef/src/slic3r/GUI/DeviceManager.cpp#L736-L759
     *
     * TODO: Extract when received from printer / provide helper function to do so.
     */
    ams_status: number;
    /**
     * The target temperature of the printing bed in Celsius.
     */
    bed_target_temper: number;
    /**
     * The temperature of the printing bed in Celsius.
     */
    bed_temper: number;
    /**
     * Speed of the auxiliary fan in %.
     */
    big_fan1_speed: StringNumberRange<0, 100>;
    /**
     * Speed of the chamber fan in %.
     */
    big_fan2_speed: StringNumberRange<0, 100>;
    /**
     * Interior chamber temperature.
     */
    chamber_temper: number;
    /**
     * The interior chamber's target temperature.
     *
     * Exists on the X1 series but only used on the X1E.
     */
    ctt: number;
    /**
     * `chamber_temper` doesn't make sense on P1 series (due to it not being enclosed
     * by default) hence the `frame_temper` property.
     *
     * Even though `chamber_temper` exists, there is no physical sensor for it, but it is still included for some reason.
     *
     * The value of `chamber_temper` on the P1 series is a placeholder.
     */
    frame_temper: number;
    /**
     * The command the response corresponds to.
     */
    command: "push_status";
    /**
     * Speed of the part cooling fan in %.
     */
    cooling_fan_speed: StringNumberRange<0, 100>;
    /**
     * Unknown. Bambu Studio doesn't even check for it.
     */
    fail_reason: StringNumber;
    /**
     * Array of filament backup groups. Each number is a bitmap where each bit represents
     * an AMS slot that can be used as backup for that filament group. Compatible slots
     * (same filament type and color) are grouped together.
     *
     * For example, if slots 0 and 4 contain the same filament type and color,
     * they would be in the same group with bitmap value 17 (binary: 0001 0001).
     */
    filam_bak: number[];
    /**
     * Contains the current speed of all the fans
     *
     * How to extract it: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L3273-L3279
     *
     * TODO: Extract when received from printer / provide helper function to do so.
     */
    fan_gear: number;
    /**
     * Something related to the firmware upgrades.
     */
    force_upgrade: boolean;
    /**
     * Name of the GCode file that is currently printing.
     *
     * In most cases it's in the format "/plate_#.gcode", unless printing a
     * gcode file directly (bbl.gcode, or calibration gcodes) instead of a 3mf.
     */
    gcode_file: string;
    /**
     * % of GCode prepared (sliced?)
     */
    gcode_file_prepare_percent: StringNumberRange<0, 100>;
    /**
     * Epoch time when the print started.
     */
    gcode_start_time: StringNumber;
    /**
     * The current status of the printer.
     */
    gcode_state: PrinterStatus;
    /**
     * Fan speed in %
     *
     * Heat break fan: The smaller fan on the hotend itself
     */
    heatbreak_fan_speed: StringNumberRange<0, 100>;
    /**
     * Bambu Lab's proprietary Health Management System (HMS)
     *
     * More info: https://wiki.bambulab.com/en/x1/troubleshooting/intro-hms
     *
     * All error codes: https://wiki.bambulab.com/en/hms/home
     */
    hms: HMS[];
    /**
     * This single property houses a lot of data regarding the printer.
     * There's currently no documentation for it except Bambu Studio's source code:
     *
     * - Check if axes are homed: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1255-L1269
     * - Check if printer is using 220V: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1346-L1351
     * - Check if camera is currently recording: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1353
     * - Check if AI camera detected filament entanglement: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1368
     * - Check if motor noise cancellation has been calibrated: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1376-L1378
     * - Check if the current machine is a P1P and has the enclosure enabled: https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1380-L1387
     * - Check current SD card state (has a lot more info than the sdcard property): https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1389
     * - Check if printer is using wired network (ethernet; X1E exclusive): https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1391
     */
    home_flag: number;
    hw_switch_state: number;
    /**
     * The printer's onboard camera.
     */
    ipcam: {
        /**
         * The IP and path to the LAN liveview, otherwise disabled.
         * @version X1 series exclusive
         */
        liveview: string | "disable";
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         */
        tukt_server: string;
        /**
         * 0: Doesn't have camera
         * 1: Has camera
         */
        ipcam_dev: StringNumberRange<0, 1>;
        /**
         * Whether recording while printing is enabled.
         */
        ipcam_record: "enable" | "disable";
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         */
        mode_bits: 3;
        /**
         * The camera's resolution
         *
         * The value is known to be very weird on the A1 series.
         */
        resolution: "720p" | "1080p" | string;
        /**
         * Whether creating a timelapse while printing is enabled.
         */
        timelapse: "enable" | "disable";
    };
    /**
     * Current layer number while printing.
     */
    layer_num: number;
    /**
     * Probably to differentiate between in-house prototypes and production machines.
     */
    lifecycle: "product" | "engineer";
    /**
     * Internal light states
     */
    lights_report: LightReport[];
    /**
     * Unknown. Bambu Studio doesn't even check for it.
     */
    maintain: number;
    /**
     * % of print done
     */
    mc_percent: NumberRange<0, 100>;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     *
     * Perhaps the current GCode line while printing?
     */
    mc_print_line_number: StringNumber;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    mc_print_error_code: "0" | StringNumber;
    /**
     * Something to do with signalling if calibration is done according to source code
     *
     * https://github.com/bambulab/BambuStudio/blob/master/src/slic3r/GUI/DeviceManager.cpp#L1331-L1342
     */
    mc_print_stage: StringNumberRange<1, 3>;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    mc_print_sub_stage: number;
    /**
     * Remaining time from print.
     */
    mc_remaining_time: number;
    /**
     * Probably to differentiate between in-house prototypes and production machines
     */
    mess_production_state: "active" | "inactive";
    /**
     * - 0: Full (pushAll) message
     * - 1: Partial (pushStatus) "difference" message (only changed properties are sent)
     *
     * @deprecated Unavailable on the X1 series in LAN mode.
     *
     *  You can instead use isPushAllCommand or isPushStatusCommand from /responses or create a new PushAllCommand and PushStatus command from /commands and use their ownsResponse method for consistency.
     */
    msg: NumberRange<0, 1>;
    /**
     * The target temperature of the nozzle in Celsius.
     */
    nozzle_target_temper: number;
    /**
     * The temperature of the nozzle in Celsius.
     */
    nozzle_temper: number;
    /**
     * Signals the status of some components of the printer and/or accessories.
     */
    online: {
        /**
         * Unknown.
         */
        ahb: boolean;
        /**
         * The RFID reader.
         */
        rfid: boolean;
        /**
         * Unknown.
         */
        version: number;
    };
    /**
     * Unknown. Some error code standard which isn't defined in Bambu Studio.
     *
     * These codes can be cleared using `system.clean_print_error` command.
     */
    print_error: number;
    /**
     * Unknown. Bambu Studio doesn't even check for it.
     */
    print_gcode_action: number;
    /**
     * Unknown. Bambu Studio doesn't even check for it.
     */
    print_real_action: number;
    /**
     * Where the print originates from.
     */
    print_type: "cloud" | "system" | "local" | "idle";
    /**
     * Unknown. Something related to what's being printed.
     */
    profile_id: StringNumber;
    /**
     * Unknown. Something related to what's being printed.
     */
    project_id: StringNumber;
    /**
     * Unknown. Something related to a print queue. (?)
     */
    queue_est: number;
    /**
     * Unknown. Something related to a print queue. (?)
     */
    queue_number: number;
    /**
     * Unknown. Something related to a print queue. (?)
     */
    queue_sts: number;
    /**
     * Unknown. Something related to a print queue. (?)
     */
    queue_total: number;
    /**
     * Objects that have been skipped by the printer while printing,
     */
    s_obj: unknown[];
    /**
     * Whether the SD card is inserted.
     */
    sdcard: boolean;
    /**
     * Related to general MQTT commands on all Bambu Lab printers. Incremented by one each response/request.
     */
    sequence_id: StringNumber;
    /**
     * The current speed level.
     */
    spd_lvl: SpeedLevel;
    /**
     * The current speed level in %.
     */
    spd_mag: NumberRange<50, 166>;
    /**
     * An x (unknown) amount of previous stages.
     */
    stg: PrintStage[];
    /**
     * The current print stage.
     */
    stg_cur: PrintStage;
    /**
     * Main purpose is unknown.
     * - 0: printing from SD card
     */
    subtask_id: StringNumber;
    /**
     * The name of the calibration gcode (without file extension), or the project file name (.3mf - with file extension)
     */
    subtask_name: string;
    /**
     * Unknown. Bambu Studio appears to do nothing with it.
     */
    task_id: StringNumber;
    /**
     * Total layer number of the current job.
     */
    total_layer_num: number;
    /**
     * Firmware upgrade status data of the printer.
     */
    upgrade_state: {
        /**
         * Unknown.
         *
         * Some component's new version number.
         */
        ahb_new_version_number: string;
        /**
         * The new version number of the AMS(es).
         */
        ams_new_version_number: string;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        consistency_request: boolean;
        /**
         * What the display should say in the process.
         */
        dis_state: UpgradeDisplayState;
        /**
         * Error codes thrown by the upgrade.
         */
        err_code: UpgradeErrorCode;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         *
         * Probably has something to do with an update the user can't deny. (for ex.: security vulnerabilities)
         */
        force_upgrade: boolean;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        message: string;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        module: string;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        new_ver_list: string;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        new_version_state: number;
        /**
         * Unknown. Bambu Studio appears to do nothing with it.
         */
        ota_new_version_number: string;
        /**
         * The progress of the update in %.
         */
        progress: StringNumberRange<0, 100>;
        /**
         * Incremented by one every time a new status is returned.
         */
        sequence_id: number;
        /**
         * The progress / finish states of the upgrade.
         */
        status: UpgradeStatusProgressState & UpgradeStatusFinishState;
    };
    /**
     * Print file download status data.
     */
    upload: {
        /**
         * Downloaded file size (?)
         */
        file_size: number;
        /**
         * Total file size (?)
         */
        finish_size: number;
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         */
        message: string;
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         */
        oss_url: string;
        /**
         * The progress of the file download in %.
         */
        progress: StringNumberRange<0, 100>;
        /**
         * Incremented by one every time a new status is returned.
         */
        sequence_id: StringNumber;
        /**
         * Download speed in unknown units.
         */
        speed: number;
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         */
        status: "idle" | string;
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         */
        task_id: string;
        /**
         * Time remaining until download completes in unknown units.
         */
        time_remaining: number;
        /**
         * Unknown. Bambu Studio doesn't even check for it.
         *
         * Probably some kind of error code.
         */
        trouble_id: string;
    };
    /**
     * External spool (tray). This has unused values due to being a copy of the AMS trays.
     * @deprecated Legacy field for backward compatibility. Use vir_slot array instead.
     */
    vt_tray: ExternalTray;
    /**
     * Virtual tray slots for external spools (newer format supporting dual extruders).
     * Array can contain 1-2 external trays:
     * - Index 0: Main extruder external spool (id: "255")
     * - Index 1: Second extruder external spool (id: "254")
     *
     * Falls back to vt_tray field if not present (older firmware).
     * Source: BambuStudio DeviceManager.cpp:3647-3676
     */
    vir_slot?: [ExternalTray] | [ExternalTray, ExternalTray];
    /**
     * The signal strength of the Wi-Fi signal which the printer is connected to in dBm.
     */
    wifi_signal: `-${number}dBm`;
    /**
     * Device hardware information (newer firmware format)
     * Contains detailed nozzle and extruder information
     * Source: BambuStudio DeviceManager.cpp device parsing
     */
    device?: {
        /** Nozzle system information (optional, present in newer firmware) */
        nozzle?: DeviceNozzle;
        /** Extruder system information (optional, present in newer firmware) */
        extruder?: DeviceExtruder;
    };
    /**
     * AI-related features of the printer's camera.
     */
    xcam: {
        /**
         * Whether skipping parts setting is enabled.
         */
        allow_skip_parts: boolean;
        /**
         * Whether the printer should detect the correct orientation and type of the buildplate.
         */
        buildplate_marker_detector: boolean;
        /**
         * Whether the first layer inspection is enabled for the printer.
         */
        first_layer_inspector: boolean;
        /**
         * Whether the printer is allowed to stop the print in the event it detects an abnormality.
         */
        print_halt: boolean;
        /**
         * The sensitivity for the spaghetti detector, first layer inspection, etc.
         */
        halt_print_sensitivity: "low" | "medium" | "high";
        /**
         * Whether print monitoring is enabled.
         */
        printing_monitor: boolean;
        /**
         * Whether the spaghetti detector is enabled.
         */
        spaghetti_detector: boolean;
    };
    /**
     * AI-related features' status.
     */
    xcam_status: StringNumber;
}
/**
 * Retrieves the FilamentConfig object associated with the specified ID.
 * @param id - The ID of the FilamentConfig to retrieve.
 * @returns The FilamentConfig object if found, otherwise undefined.
 */
declare function getFilamentConfig(id: string): FilamentConfig | null;
/**
 * Converts a numeric stage_curr value to its corresponding PrintStage enum value
 * @param stageCurr - The numeric stage value (0-35)
 * @returns The corresponding PrintStage enum value, or undefined if not found
 */
declare function getStageFromCurr(stageCurr: number): PrintStage | undefined;
/**
 * Converts an array of numeric stage values to an array of PrintStage enum values
 * @param stages - Array of numeric stage values (0-35)
 * @returns Array of corresponding PrintStage enum values, filtering out any undefined stages
 */
declare function getStagesFromArray(stages: number[]): PrintStage[];
/**
 * Represents a stage with its details and completion status
 */
interface EnrichedStageInfo extends Partial<PrintStageInfo> {
    stage: PrintStage;
    description: string;
    completed: boolean;
    current: boolean;
}
/**
 * Creates an enriched array of stage information with completion status
 * @param currentStage - The current stage number (stage_curr)
 * @param stageHistory - Array of previous stage numbers (stg)
 * @returns Array of stages with their details and completion status
 *
 * @example
 * const stages = getEnrichedStages(4, [2, 13, 24, 4]);
 * // Returns array of EnrichedStageInfo with:
 * // - HEATBED_PREHEATING (completed)
 * // - TOOLHEAD_HOMING (completed)
 * // - FILAMENT_LOADING (completed)
 * // - CHANGE_MATERIAL (current, not completed)
 */
declare function getEnrichedStages(currentStage: number, stageHistory: number[]): EnrichedStageInfo[];
declare function isPushAllCommand(data: PrintMessageCommand): data is PushAllResponse;
/**
 * Pause category enum for user-friendly grouping of pause reasons.
 * Matches @hiv3d/types PauseCategory but duplicated here to avoid circular deps.
 */
declare enum PauseCategory {
    FILAMENT_RUNOUT = "filament_runout",
    USER_PAUSE = "user_pause",
    GCODE_PAUSE = "gcode_pause",
    ERROR = "error",
    DEFAULT = "default"
}
/**
 * Maps numeric stg_cur values to user-friendly pause categories.
 * Used for selecting the appropriate light flash pattern.
 *
 * Category mappings:
 * - FILAMENT_RUNOUT: stage 6 (FILAMENT_RUNOUT_PAUSE)
 * - USER_PAUSE: stage 16 (USER_PAUSE)
 * - GCODE_PAUSE: stages 5 (M400_PAUSE), 30 (USER_INSERT_GCODE_PAUSE)
 * - ERROR: stages 20-21 (temperature errors), 26-28 (AMS/fan/chamber errors),
 *          32-35 (cutter/filament/first-layer/clog errors)
 * - DEFAULT: all other stages
 *
 * @param stgCur - The numeric stage value from printer data
 * @returns The corresponding PauseCategory
 */
declare function stageToPauseCategory(stgCur: number): PauseCategory;

type BambuClientPrinterStatus = "FINISH" | "FAILED" | "RUNNING" | "IDLE" | "PAUSE" | "PREPARE" | "SLICING" | "OFFLINE";
declare enum PrinterModelNamesShort {
    X1C = "X1C",
    X1 = "X1",
    X1E = "X1E",
    P1P = "P1P",
    P1S = "P1S",
    A1 = "A1",
    A1M = "A1M",
    H2D = "H2D",
    H2S = "H2S"
}
declare enum PrinterModelIDs {
    X1C = "BL-P001",
    X1 = "BL-P002",
    P1P = "C11",
    P1S = "C12",
    X1E = "C13",
    A1 = "N2S",
    A1M = "N1",
    H2D = "O1D",
    H2S = "O1S"
}
/**
 * Mapping of printer model IDs to their friendly model names
 * This includes:
 * - Official model IDs from machine profiles (BL-P001, C11, etc.)
 * - Full names (from project_settings.config)
 */
declare const PRINTER_MODEL_MAP: Record<PrinterModelIDs, string>;
/**
 * Mapping of printer model IDs to their full names
 * This includes:
 * - Official model IDs from machine profiles (BL-P001, C11, etc.)
 * - Full names (from project_settings.config)
 */
declare const PRINTER_MODEL_LONG_NAME_MAP: Record<PrinterModelIDs, PrinterLongNames>;
declare const CONNECT_RETURN_CODE_DESC: {
    0: string;
    1: string;
    2: string;
    3: string;
    4: string;
    5: string;
};
type PrinterLongNames = "Bambu Lab X1C" | "Bambu Lab X1" | "Bambu Lab P1S" | "Bambu Lab P1P" | "Bambu Lab A1" | "Bambu Lab A1 Mini" | "Bambu Lab H2D" | "Bambu Lab H2S";
type AMS_PREFIX = "A" | "B" | "C" | "D";
declare const AMS_LETTER_MAP: Record<string, AMS_PREFIX>;

declare const commandSchemas: {
    updateLight: z.ZodObject<{
        light: z.ZodEnum<["chamber_light", "work_light"]>;
        mode: z.ZodEnum<["on", "off", "flashing"]>;
        loopOptions: z.ZodOptional<z.ZodObject<{
            onTime: z.ZodOptional<z.ZodNumber>;
            offTime: z.ZodOptional<z.ZodNumber>;
            loops: z.ZodOptional<z.ZodNumber>;
            interval: z.ZodOptional<z.ZodNumber>;
        }, "strip", z.ZodTypeAny, {
            onTime?: number | undefined;
            offTime?: number | undefined;
            loops?: number | undefined;
            interval?: number | undefined;
        }, {
            onTime?: number | undefined;
            offTime?: number | undefined;
            loops?: number | undefined;
            interval?: number | undefined;
        }>>;
    }, "strip", z.ZodTypeAny, {
        light: "chamber_light" | "work_light";
        mode: "on" | "off" | "flashing";
        loopOptions?: {
            onTime?: number | undefined;
            offTime?: number | undefined;
            loops?: number | undefined;
            interval?: number | undefined;
        } | undefined;
    }, {
        light: "chamber_light" | "work_light";
        mode: "on" | "off" | "flashing";
        loopOptions?: {
            onTime?: number | undefined;
            offTime?: number | undefined;
            loops?: number | undefined;
            interval?: number | undefined;
        } | undefined;
    }>;
    updateFan: z.ZodObject<{
        fan: z.ZodEffects<z.ZodEnum<["1", "2", "3"]>, number, "1" | "2" | "3">;
        speed: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        speed: number;
        fan: number;
    }, {
        speed: number;
        fan: "1" | "2" | "3";
    }>;
    updateSpeed: z.ZodObject<{
        speed: z.ZodEnum<["1", "2", "3", "4"]>;
    }, "strip", z.ZodTypeAny, {
        speed: "1" | "2" | "3" | "4";
    }, {
        speed: "1" | "2" | "3" | "4";
    }>;
    updateTemp: z.ZodObject<{
        part: z.ZodEnum<["bed", "nozzle", "chamber"]>;
        temperature: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        part: "bed" | "nozzle" | "chamber";
        temperature: number;
    }, {
        part: "bed" | "nozzle" | "chamber";
        temperature: number;
    }>;
    updateState: z.ZodObject<{
        state: z.ZodEnum<["pause", "resume", "stop"]>;
    }, "strip", z.ZodTypeAny, {
        state: "resume" | "pause" | "stop";
    }, {
        state: "resume" | "pause" | "stop";
    }>;
    gcode: z.ZodObject<{
        gcodes: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        gcodes: string[];
    }, {
        gcodes: string[];
    }>;
    resume: z.ZodObject<{
        cleanPrintError: z.ZodOptional<z.ZodBoolean>;
        printError: z.ZodOptional<z.ZodNumber>;
        subtaskId: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        subtaskId?: string | undefined;
        printError?: number | undefined;
        cleanPrintError?: boolean | undefined;
    }, {
        subtaskId?: string | undefined;
        printError?: number | undefined;
        cleanPrintError?: boolean | undefined;
    }>;
    ams_control: z.ZodObject<{
        param: z.ZodAny;
    }, "strip", z.ZodTypeAny, {
        param?: any;
    }, {
        param?: any;
    }>;
    refreshPrinterState: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    ams_filament_settings: z.ZodObject<{
        ams_id: z.ZodNumber;
        tray_id: z.ZodNumber;
        filament_id: z.ZodString;
        setting_id: z.ZodString;
        color: z.ZodString;
        filament_type: z.ZodString;
        nozzle_temp_min: z.ZodNumber;
        nozzle_temp_max: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        ams_id: number;
        tray_id: number;
        filament_id: string;
        setting_id: string;
        color: string;
        filament_type: string;
        nozzle_temp_min: number;
        nozzle_temp_max: number;
    }, {
        ams_id: number;
        tray_id: number;
        filament_id: string;
        setting_id: string;
        color: string;
        filament_type: string;
        nozzle_temp_min: number;
        nozzle_temp_max: number;
    }>;
    loadFilament: z.ZodObject<{
        trayId: z.ZodNumber;
        oldTemp: z.ZodOptional<z.ZodNumber>;
        newTemp: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        trayId: number;
        oldTemp?: number | undefined;
        newTemp?: number | undefined;
    }, {
        trayId: number;
        oldTemp?: number | undefined;
        newTemp?: number | undefined;
    }>;
    unloadFilament: z.ZodObject<{
        oldTemp: z.ZodOptional<z.ZodNumber>;
        newTemp: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        oldTemp?: number | undefined;
        newTemp?: number | undefined;
    }, {
        oldTemp?: number | undefined;
        newTemp?: number | undefined;
    }>;
    axisControl: z.ZodObject<{
        axis: z.ZodEnum<["X", "Y", "Z", "E"]>;
        distance: z.ZodNumber;
        unit: z.ZodOptional<z.ZodNumber>;
        speed: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        axis: "X" | "Y" | "Z" | "E";
        distance: number;
        unit?: number | undefined;
        speed?: number | undefined;
    }, {
        axis: "X" | "Y" | "Z" | "E";
        distance: number;
        unit?: number | undefined;
        speed?: number | undefined;
    }>;
    autoLevel: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    goHome: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    cleanPrintError: z.ZodObject<{
        subtaskId: z.ZodString;
        printError: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        subtaskId: string;
        printError: number;
    }, {
        subtaskId: string;
        printError: number;
    }>;
    powerLossRecovery: z.ZodObject<{
        action: z.ZodEnum<["resume", "stop"]>;
        subtaskId: z.ZodString;
        printError: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        subtaskId: string;
        printError: number;
        action: "resume" | "stop";
    }, {
        subtaskId: string;
        printError: number;
        action: "resume" | "stop";
    }>;
    camera: z.ZodObject<{
        operation: z.ZodEnum<["ipcam_record_set", "ipcam_timelapse", "ipcam_resolution_set"]>;
        value: z.ZodUnion<[z.ZodBoolean, z.ZodString]>;
    }, "strip", z.ZodTypeAny, {
        value: string | boolean;
        operation: "ipcam_record_set" | "ipcam_timelapse" | "ipcam_resolution_set";
    }, {
        value: string | boolean;
        operation: "ipcam_record_set" | "ipcam_timelapse" | "ipcam_resolution_set";
    }>;
    taskAbort: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    taskCancel: z.ZodObject<{
        jobId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        jobId: string;
    }, {
        jobId: string;
    }>;
    hmsResume: z.ZodObject<{
        errorCode: z.ZodString;
        jobId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        errorCode: string;
        jobId: string;
    }, {
        errorCode: string;
        jobId: string;
    }>;
    hmsIgnore: z.ZodObject<{
        errorCode: z.ZodString;
        jobId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        errorCode: string;
        jobId: string;
    }, {
        errorCode: string;
        jobId: string;
    }>;
    hmsStop: z.ZodObject<{
        errorCode: z.ZodString;
        jobId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        errorCode: string;
        jobId: string;
    }, {
        errorCode: string;
        jobId: string;
    }>;
    stopBuzzer: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    getAccessCode: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    amsUserSettings: z.ZodObject<{
        amsId: z.ZodNumber;
        startupReadOption: z.ZodBoolean;
        trayReadOption: z.ZodBoolean;
        calibrateRemainFlag: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        amsId: number;
        startupReadOption: boolean;
        trayReadOption: boolean;
        calibrateRemainFlag: boolean;
    }, {
        amsId: number;
        startupReadOption: boolean;
        trayReadOption: boolean;
        calibrateRemainFlag: boolean;
    }>;
    amsCalibrate: z.ZodObject<{
        amsId: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        amsId: number;
    }, {
        amsId: number;
    }>;
    amsRefreshRfid: z.ZodObject<{
        trayId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        trayId: string;
    }, {
        trayId: string;
    }>;
    amsRefreshRfid2: z.ZodObject<{
        amsId: z.ZodNumber;
        slotId: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        amsId: number;
        slotId: number;
    }, {
        amsId: number;
        slotId: number;
    }>;
    amsSelectTray: z.ZodObject<{
        trayId: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        trayId: string;
    }, {
        trayId: string;
    }>;
    amsDryingStop: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    setNozzleTempNew: z.ZodObject<{
        extruderIndex: z.ZodNumber;
        targetTemp: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        extruderIndex: number;
        targetTemp: number;
    }, {
        extruderIndex: number;
        targetTemp: number;
    }>;
    xyzAbsoluteMode: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    printingOptions: z.ZodObject<{
        autoRecovery: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        autoRecovery: boolean;
    }, {
        autoRecovery: boolean;
    }>;
    testLightSequence: z.ZodObject<{
        sequence: z.ZodTuple<[z.ZodBoolean, z.ZodBoolean, z.ZodBoolean, z.ZodBoolean, z.ZodBoolean], null>;
        chamberLight: z.ZodBoolean;
        workLight: z.ZodBoolean;
        loops: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        sequence: [boolean, boolean, boolean, boolean, boolean];
        chamberLight: boolean;
        workLight: boolean;
        loops?: number | undefined;
    }, {
        sequence: [boolean, boolean, boolean, boolean, boolean];
        chamberLight: boolean;
        workLight: boolean;
        loops?: number | undefined;
    }>;
};
type CommandSchemas = typeof commandSchemas;
declare function validateCommandParams<T extends keyof CommandSchemas>(command: T, params: unknown): {
    success: true;
    data: z.infer<CommandSchemas[T]>;
} | {
    success: false;
    error: z.ZodError;
};

type CommandCategory = "info" | "pushing" | "system" | "print";
declare enum LightEffect$1 {
    ON = "on",
    OFF = "off",
    FLASHING = "flashing"
}
declare enum LightNode {
    CHAMBER = "chamber_light",
    WORK = "work_light"
}
interface LightOptions {
    onTime?: number;
    offTime?: number;
    loops?: number;
    interval?: number;
}
declare enum CameraOperation {
    RECORD = "ipcam_record_set",
    TIMELAPSE = "ipcam_timelapse",
    RESOLUTION = "ipcam_resolution_set"
}
declare enum FanType$1 {
    PART_COOLING = 1,
    AUXILIARY = 2,
    CHAMBER = 3
}
type Axis = "X" | "Y" | "Z" | "E";
declare const VALID_COMMANDS: readonly ["updateLight", "updateFan", "updateSpeed", "updateTemp", "updateState", "gcode", "resume", "ams_control", "refreshPrinterState", "ams_filament_settings", "loadFilament", "unloadFilament", "axisControl", "autoLevel", "goHome", "cleanPrintError", "powerLossRecovery", "camera", "taskAbort", "taskCancel", "hmsResume", "hmsIgnore", "hmsStop", "stopBuzzer", "getAccessCode", "amsUserSettings", "amsCalibrate", "amsRefreshRfid", "amsRefreshRfid2", "amsSelectTray", "amsDryingStop", "setNozzleTempNew", "xyzAbsoluteMode", "printingOptions", "testLightSequence"];
type CommandType = (typeof VALID_COMMANDS)[number];
type CommandParams = {
    updateLight: {
        light: LightNode;
        mode: LightEffect$1;
        loopOptions?: LightOptions;
    };
    updateFan: {
        fan: FanType$1;
        speed: NumberRange<0, 100>;
    };
    updateSpeed: {
        speed: SpeedLevel;
    };
    updateTemp: {
        part: "bed" | "nozzle" | "chamber";
        temperature: NumberRange<0, 300>;
    };
    updateState: {
        state: "pause" | "resume" | "stop";
    };
    gcode: {
        gcodes: string[];
    };
    resume: {
        cleanPrintError?: boolean;
        printError?: number;
        subtaskId?: string;
    };
    taskAbort: Record<string, never>;
    taskCancel: {
        jobId: string;
    };
    ams_control: {
        param: AMSControlAction;
    };
    refreshPrinterState: Record<string, never>;
    ams_filament_settings: {
        ams_id: number;
        slot_id: number;
        tray_id: number;
        filament_id: string;
        setting_id: string;
        color: string;
        filament_type: string;
        nozzle_temp_min: number;
        nozzle_temp_max: number;
    };
    loadFilament: {
        trayId: number;
        oldTemp?: number;
        newTemp?: number;
    };
    unloadFilament: {
        oldTemp?: number;
        newTemp?: number;
    };
    axisControl: {
        axis: Axis;
        distance: number;
        unit?: number;
        speed?: number;
    };
    autoLevel: Record<string, never>;
    goHome: Record<string, never>;
    cleanPrintError: {
        subtaskId: string;
        printError: number;
    };
    powerLossRecovery: {
        action: "resume" | "stop";
        subtaskId: string;
        printError: number;
    };
    camera: {
        operation: CameraOperation;
        value: boolean | string;
    };
    hmsResume: {
        errorCode: string;
        jobId: string;
    };
    hmsIgnore: {
        errorCode: string;
        jobId: string;
    };
    hmsStop: {
        errorCode: string;
        jobId: string;
    };
    stopBuzzer: Record<string, never>;
    getAccessCode: Record<string, never>;
    amsUserSettings: {
        amsId: number;
        startupReadOption: boolean;
        trayReadOption: boolean;
        calibrateRemainFlag: boolean;
    };
    amsCalibrate: {
        amsId: number;
    };
    amsRefreshRfid: {
        trayId: string;
    };
    amsRefreshRfid2: {
        amsId: number;
        slotId: number;
    };
    amsSelectTray: {
        trayId: string;
    };
    amsDryingStop: Record<string, never>;
    setNozzleTempNew: {
        extruderIndex: number;
        targetTemp: NumberRange<0, 300>;
    };
    xyzAbsoluteMode: Record<string, never>;
    printingOptions: {
        autoRecovery: boolean;
    };
    testLightSequence: {
        sequence: [boolean, boolean, boolean, boolean, boolean];
        chamberLight: boolean;
        workLight: boolean;
        loops?: number;
    };
};
interface CommandResponse {
    sequence_id?: string;
    status?: "success" | "error";
    error?: string;
}
declare const createCommand: <T extends CommandType>(command: T, params: CommandParams[T]) => {
    command: T;
    params: CommandParams[T];
};
declare const isValidCommand: (command: string) => command is CommandType;

/**
 * HMS (Hardware Management System) Error Code Parser
 * Based on BambuStudio's C++ implementation
 */
declare enum ModuleID {
    MODULE_UKNOWN = 0,
    MODULE_01 = 1,
    MODULE_02 = 2,
    MODULE_MC = 3,// Main Controller
    MODULE_04 = 4,
    MODULE_MAINBOARD = 5,// Main Board
    MODULE_06 = 6,
    MODULE_AMS = 7,// Automatic Material System
    MODULE_TH = 8,// Tool Head
    MODULE_09 = 9,
    MODULE_10 = 10,
    MODULE_11 = 11,
    MODULE_XCAM = 12,// X Camera
    MODULE_13 = 13,
    MODULE_14 = 14,
    MODULE_15 = 15,
    MODULE_MAX = 16
}
declare enum HMSMessageLevel {
    HMS_UNKNOWN = 0,
    HMS_FATAL = 1,
    HMS_SERIOUS = 2,
    HMS_COMMON = 3,
    HMS_INFO = 4,
    HMS_MSG_LEVEL_MAX = 5
}
interface HMSItem$1 {
    module_id: ModuleID;
    module_num: number;
    part_id: number;
    reserved: number;
    msg_level: HMSMessageLevel;
    msg_code: number;
    already_read?: boolean;
}
interface HMSErrorMessage {
    ecode: string;
    intro: string;
}
interface HMSAction {
    ecode: string;
    image: string;
    actions: number[];
    device: string;
}
interface HMSJsonData {
    result: number;
    t: number;
    ver: number;
    data: {
        device_error: {
            ver: number;
            [langCode: string]: HMSErrorMessage[] | number;
        };
    };
}
interface HMSActionJsonData {
    result: number;
    t: number;
    ver: number;
    data: HMSAction[];
}
declare class HMSQuery {
    private hmsInfoJsons;
    private hmsActionJsons;
    private hmsLocalImages;
    private cloudHmsLastUpdateTime;
    /**
     * Load HMS error messages from JSON file
     * @param deviceIdType - Device ID type (e.g., "094")
     * @param langCode - Language code (e.g., "en", "zh-cn")
     * @returns Promise<boolean> - True if loaded successfully
     */
    loadHmsInfo(deviceIdType: string, langCode?: string): Promise<boolean>;
    /**
     * Load HMS actions from JSON file
     * @param deviceIdType - Device ID type (e.g., "094")
     * @returns Promise<boolean> - True if loaded successfully
     */
    loadHmsActions(deviceIdType: string): Promise<boolean>;
    /**
     * Query HMS error message for a given error code
     * @param deviceIdType - Device ID type
     * @param longErrorCode - Long error code (e.g., "07FFC010")
     * @param langCode - Language code (default: "en")
     * @returns Human-readable error message or empty string if not found
     */
    queryHmsMsg(deviceIdType: string, longErrorCode: string, langCode?: string): string;
    /**
     * Query HMS action for a given error code
     * @param deviceIdType - Device ID type
     * @param longErrorCode - Long error code
     * @returns HMS action object or null if not found
     */
    queryHmsAction(deviceIdType: string, longErrorCode: string): HMSAction | null;
    /**
     * Check if an error is internal (has no user-facing message)
     * @param deviceIdType - Device ID type
     * @param longErrorCode - Long error code
     * @param langCode - Language code
     * @returns True if internal error
     */
    isInternalError(deviceIdType: string, longErrorCode: string, langCode?: string): boolean;
    /**
     * Get all available languages for a device
     * @param deviceIdType - Device ID type
     * @returns Array of language codes
     */
    getAvailableLanguages(deviceIdType: string): string[];
    /**
     * Clear all loaded HMS data
     */
    clearHmsInfo(): void;
}
declare const hmsQuery: HMSQuery;
/**
 * Parse HMS info from attribute and code values
 * @param attr - Attribute value (32-bit unsigned integer)
 * @param code - Code value (32-bit unsigned integer)
 * @returns HMSItem object with parsed components
 */
declare function parseHmsInfo(attr: number, code: number): HMSItem$1;
/**
 * Generate long error code string from HMS item
 * @param hmsItem - HMSItem object
 * @returns Formatted error code string (e.g., "07FFC010")
 */
declare function getLongErrorCode(hmsItem: HMSItem$1): string;
/**
 * Generate long error code directly from attribute and code values
 * @param attr - Attribute value
 * @param code - Code value
 * @returns Formatted error code string
 */
declare function getLongErrorCodeFromRaw(attr: number, code: number): string;
/**
 * Get human-readable module name
 * @param moduleId - Module ID
 * @returns Module name string
 */
declare function getModuleName(moduleId: ModuleID): string;
/**
 * Get human-readable message level string
 * @param level - HMS message level
 * @returns Message level string
 */
declare function getHmsMessageLevelString(level: HMSMessageLevel): string;
/**
 * Parse HMS info and return a detailed object with all information
 * @param attr - Attribute value
 * @param code - Code value
 * @returns Detailed HMS info object
 */
declare function parseHmsInfoDetailed(attr: number, code: number): {
    longErrorCode: string;
    moduleName: string;
    messageLevelString: string;
    isFatal: boolean;
    isSerious: boolean;
    isCommon: boolean;
    isInfo: boolean;
    isUnknown: boolean;
    module_id: ModuleID;
    module_num: number;
    part_id: number;
    reserved: number;
    msg_level: HMSMessageLevel;
    msg_code: number;
    already_read?: boolean;
};
/**
 * Validate if a long error code string is properly formatted
 * @param errorCode - Error code string to validate
 * @returns True if valid, false otherwise
 */
declare function isValidLongErrorCode(errorCode: string): boolean;
/**
 * Parse a long error code string back into an HMS item
 * @param longErrorCode - Error code string (e.g., "07FFC010")
 * @returns HMSItem object or null if invalid
 */
declare function parseLongErrorCode(longErrorCode: string): HMSItem$1 | null;
/**
 * Check if an HMS item represents a fatal error
 * @param hmsItem - HMS item to check
 * @returns True if fatal error
 */
declare function isFatalError(hmsItem: HMSItem$1): boolean;
/**
 * Check if an HMS item represents a serious error
 * @param hmsItem - HMS item to check
 * @returns True if serious error
 */
declare function isSeriousError(hmsItem: HMSItem$1): boolean;
/**
 * Check if an HMS item represents a common error
 * @param hmsItem - HMS item to check
 * @returns True if common error
 */
declare function isCommonError(hmsItem: HMSItem$1): boolean;
/**
 * Check if an HMS item represents an informational message
 * @param hmsItem - HMS item to check
 * @returns True if informational
 */
declare function isInfoMessage(hmsItem: HMSItem$1): boolean;
/**
 * Get error severity as a number (higher = more severe)
 * @param hmsItem - HMS item to check
 * @returns Severity number (0-4)
 */
declare function getErrorSeverity(hmsItem: HMSItem$1): number;
/**
 * Check if an HMS item is from a specific module
 * @param hmsItem - HMS item to check
 * @param moduleId - Module ID to check against
 * @returns True if from specified module
 */
declare function isFromModule(hmsItem: HMSItem$1, moduleId: ModuleID): boolean;
/**
 * Check if an HMS item is from the AMS module
 * @param hmsItem - HMS item to check
 * @returns True if from AMS module
 */
declare function isAmsError(hmsItem: HMSItem$1): boolean;
/**
 * Check if an HMS item is from the main controller
 * @param hmsItem - HMS item to check
 * @returns True if from main controller
 */
declare function isMcError(hmsItem: HMSItem$1): boolean;
/**
 * Check if an HMS item is from the tool head
 * @param hmsItem - HMS item to check
 * @returns True if from tool head
 */
declare function isThError(hmsItem: HMSItem$1): boolean;
/**
 * Check if an HMS item is from the X camera
 * @param hmsItem - HMS item to check
 * @returns True if from X camera
 */
declare function isXcamError(hmsItem: HMSItem$1): boolean;
/**
 * Complete HMS error parsing with human-readable message
 * @param deviceIdType - Device ID type (e.g., "094")
 * @param attr - Attribute value
 * @param code - Code value
 * @param langCode - Language code (default: "en")
 * @returns Complete HMS error information
 */
declare function parseHmsErrorComplete(deviceIdType: string, attr: number, code: number, langCode?: string): Promise<{
    hmsItem: HMSItem$1;
    longErrorCode: string;
    errorMessage: string;
    action: HMSAction | null;
    isInternal: boolean;
    moduleName: string;
    messageLevelString: string;
}>;
/**
 * Get HMS error message for a long error code
 * @param deviceIdType - Device ID type
 * @param longErrorCode - Long error code
 * @param langCode - Language code (default: "en")
 * @returns Human-readable error message
 */
declare function getHmsErrorMessage(deviceIdType: string, longErrorCode: string, langCode?: string): Promise<string>;
/**
 * Get HMS action for a long error code
 * @param deviceIdType - Device ID type
 * @param longErrorCode - Long error code
 * @returns HMS action object or null
 */
declare function getHmsAction(deviceIdType: string, longErrorCode: string): Promise<HMSAction | null>;

/**
 * Error codes that indicate a job has failed
 */
declare const ERROR_CODES_JOB_FAILED: readonly [83902466, 83902467, 83902468, 83902469, 83902470, 83902471, 83902472, 83902473, 83902474, 83902475, 117456897, 83902476, 83902477, 83902478, 83902484, 83902485, 83902486, 83902509, 83902510, 83902511, 83902519, 83902520, 83902522, 83918867, 83935248, 83968052, 50348032, 50348033, 50348034, 50348045, 50364424, 50364430, 50364432];
/**
 * Error code for local cancellation
 */
declare const LOCAL_CANCEL_CODE = 50348044;
/**
 * Type for all possible Bambu Lab error codes
 */
type BambuErrorCode = keyof typeof ALL_ERRORS;
/**
 * Complete mapping of Bambu Lab error codes to their descriptions
 */
declare const ALL_ERRORS: {
    readonly 5324857: "Device login has expired, please try to bind again.";
    readonly 50348032: "Printing stopped because homing Z axis failed.";
    readonly 50348033: "The printer timed out waiting for the nozzle to cool down before homing.";
    readonly 50348034: "Printing Stopped because Auto Bed Leveling failed.";
    readonly 50348037: "The nozzle fan speed is abnormal.";
    readonly 50348038: "The nozzle is clogged.";
    readonly 50348040: "The AMS failed to change filament.";
    readonly 50348041: "Homing XY axis failed.";
    readonly 50348042: "Mechanical resonance frequency identification failed.";
    readonly 50348043: "Internal communication exception.";
    readonly 50348044: "Printing was cancelled.";
    readonly 50348045: "Resume failed after power loss.";
    readonly 50348046: "The motor self-check failed.";
    readonly 50364416: "Printing was paused for unknown reason. You can tap \"Resume\" to resume the print job.";
    readonly 50364417: "Printing was paused by the user. You can tap \"Resume\" to resume the print job.";
    readonly 50364418: "First layer defects were detected by the Micro Lidar. Please check the quality of the printed model before continuing your print.";
    readonly 50364419: "Spaghetti defects were detected by the AI Print Monitoring. Please check the quality of the printed model before continuing your print.";
    readonly 50364420: "Filament ran out. Please load new filament.";
    readonly 50364421: "Toolhead front cover fell off. Please remount the front cover and check to make sure your print is going okay.";
    readonly 50364422: "The build plate marker was not detected. Please confirm the build plate is correctly positioned on the heatbed with all four corners aligned, and the maker is clear.";
    readonly 50364423: "There was an unfinished print job when the printer lost power. If the model is still adhered to the build plate, you can try resuming the print job.";
    readonly 50364424: "Printing Stopped because nozzle temperature problem.";
    readonly 50364425: "Heatbed temperature malfunction.";
    readonly 50364426: "A Filament pile-up was detected by the AI Print Monitoring. Please clean the filament from the waste chute.";
    readonly 50364427: "The cutter is stuck. Please make sure the cutter handle is out.";
    readonly 50364428: "Skipping step detected, auto-recover complete; please resume print and check if there are any layer shift problems.";
    readonly 50364429: "Some objects have fallen down, or the extruder is not extruding normally. If the defects are acceptable, click \"Resume\" button to resume the print job.";
    readonly 50364430: "The print file is not available. Please check to see if the storage media has been removed.";
    readonly 50364431: "The door seems to be open, so printing was paused.";
    readonly 50364432: "Printing stopped because the hotend fan speed is abnormal.";
    readonly 50364433: "Detected build plate is not the same as the Gcode file. Please adjust slicer settings or use the correct plate.";
    readonly 50364435: "Printing was paused by the user. You can select \"Resume\" to continue printing.";
    readonly 50364436: "The nozzle is covered with filaments, or the build plate is installed incorrectly. Please cancel this printing and clean the nozzle or adjust the build plate according to the actual status, or tap \"Resume\" button to resume the print job.";
    readonly 50364437: "The filament has run out, please load new filament in the \"filament\" page.";
    readonly 50364438: "The nozzle is clogged up with filaments. Please cancel this printing and clean the nozzle according to the actual status, or tap \"Resume\" button to resume the print job.";
    readonly 50364439: "Foreign objects detected on hotbed, Please check and clean the hotbed, Then tap \"Resume\" button to resume the print job.";
    readonly 50364440: "Chamber temperature malfunction.";
    readonly 50364441: "No build plate is placed.";
    readonly 83902465: "Failed to connect to Bambu Cloud. Please check your network connection.";
    readonly 83902466: "Unsupported print file path or name. Please resend the printing job.";
    readonly 83902467: "Printing stopped because the printer was unable to parse the file. Please resend your print job.";
    readonly 83902468: "The printer can't receive new print jobs while printing. Resend after the current print finishes.";
    readonly 83902469: "Print jobs are not allowed to be sent while updating firmware.";
    readonly 83902470: "There is not enough free storage space for the print job. Restoring to factory settings can release available space.";
    readonly 83902471: "Print jobs are not allowed to be sent while force updating or when repair updating is required.";
    readonly 83902472: "Starting printing failed. please power cycle the printer and resend the print job.";
    readonly 83902473: "Print jobs are not allowed to be sent while updating logs.";
    readonly 83902474: "The file name is not supported. Please rename and restart the printing job.";
    readonly 83902475: "There was a problem downloading a file. Please check you network connection and resend the printing job.";
    readonly 83902476: "Please insert a MicroSD card and restart the printing job.";
    readonly 83902477: "Please run a self-test and restart the printing job.";
    readonly 83902478: "Printing was cancelled.";
    readonly 83902484: "Slicing for the print job failed. Please check your settings and restart the print job.";
    readonly 83902485: "There is not enough free storage space for the print job. Please format or clean MicroSD card to release available space.";
    readonly 83902486: "The MicroSD Card is write-protected. Please replace the MicroSD Card.";
    readonly 83902487: "Binding failed. Please retry or restart the printer and retry.";
    readonly 83902488: "Binding configuration information parsing failed, please try again.";
    readonly 83902489: "The printer has already been bound. Please unbind it and try again.";
    readonly 83902490: "Cloud access failed. Possible reasons include network instability caused by interference, inability to access the internet, or router firewall configuration restrictions. You can try moving the printer closer to the router or checking the router configuration and then try again.";
    readonly 83902491: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902492: "Cloud access is rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902493: "Cloud access failed, which may be caused by network instability due to interference. You can try moving the printer closer to the router before you try again.";
    readonly 83902494: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902495: "Authorization timed out. Please make sure that your phone or PC has access to the internet, and ensure that the Bambu Studio/Bambu Handy APP is running in the foreground during the binding operation.";
    readonly 83902496: "Cloud access rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902497: "Cloud access failed, which may be caused by network instability due to interference. You can try moving the printer closer to the router before you try again.";
    readonly 83902498: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902499: "Cloud access rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902500: "Cloud access failed. Possible reasons include network instability caused by interference, inability to access the internet, or router firewall configuration restrictions. You can try moving the printer closer to the router or checking the router configuration before you try again.";
    readonly 83902501: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902502: "Cloud access rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902503: "Cloud access failed; this may be caused by network instability due to interference. You can try moving the printer closer to the router before you try again.";
    readonly 83902504: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902505: "Cloud access is rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83902506: "Failed to connect to the router, which may be caused by wireless interference or being too far away from the router. Please try again or move the printer closer to the router and try again.";
    readonly 83902507: "Router connection failed due to incorrect password. Please check the password and try again.";
    readonly 83902508: "Failed to obtain IP address, which may be caused by wireless interference resulting in data transmission failure or DHCP address pool of the router being full. Please move the printer closer to the router and try again. If the issue persists, please check router settings to see whether the IP addresses have been exhausted.";
    readonly 83902509: "System exception.";
    readonly 83902510: "The system does not support the file system currently used by the Micro SD card. Please replace the Micro SD card or format the current Micro SD card to FAT32.";
    readonly 83902511: "The Micro SD card sector data is damaged. Please use the SD card repair tool to repair or format it. If it still cannot be identified, please replace the Micro SD card.";
    readonly 83902519: "Your sliced file is not compatible with current printer model. This file can't be printed on this printer.";
    readonly 83902520: "The nozzle diameter in sliced file is not consistent with the current nozzle setting. This file can't be printed.";
    readonly 83902522: "The current temperature is too low. In order to protect you and your printer. Printing task, moving axis and other operations is disabled. Please move the printer to an environment above 10 celsius degree.";
    readonly 83918867: "The print file is not available. Please check to see if the storage media has been removed.";
    readonly 83918902: "Your sliced file is not consistent with the current printer model. Continue?";
    readonly 83935248: "MicroSD Card read/write exception. please reinsert or replace MicroSD Card.";
    readonly 83968023: "Binding failed. Please retry or restart the printer and retry.";
    readonly 83968024: "Binding configuration information parsing failed, please try again.";
    readonly 83968025: "The printer has already been bound. Please unbind it and try again.";
    readonly 83968026: "Cloud access failed. Possible reasons include network instability caused by interference, inability to access the internet, or router firewall configuration restrictions. You can try moving the printer closer to the router or checking the router configuration and then try again.";
    readonly 83968027: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968028: "Cloud access is rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968029: "Cloud access failed, which may be caused by network instability due to interference. You can try moving the printer closer to the router before you try again.";
    readonly 83968030: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968031: "Authorization timed out. Please make sure that your phone or PC has access to the internet, and ensure that the Bambu Studio/Bambu Handy APP is running in the foreground during the binding operation.";
    readonly 83968032: "Cloud access rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968033: "Cloud access failed, which may be caused by network instability due to interference. You can try moving the printer closer to the router before you try again.";
    readonly 83968034: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968035: "Cloud access rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968036: "Cloud access failed. Possible reasons include network instability caused by interference, inability to access the internet, or router firewall configuration restrictions. You can try moving the printer closer to the router or checking the router configuration before you try again.";
    readonly 83968037: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968038: "Cloud access rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968039: "Cloud access failed; this may be caused by network instability due to interference. You can try moving the printer closer to the router before you try again.";
    readonly 83968040: "Cloud response is invalid. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968041: "Cloud access is rejected. If you have tried multiple times and are still failing, please contact customer service.";
    readonly 83968049: "Device discovery binding is in progress, and the QR code cannot be displayed on the screen. You can wait for the binding to finish or abort the device discovery binding process in the APP/Studio and retry scanning the QR code on the screen for binding.";
    readonly 83968050: "QR code binding is in progress, so device discovery binding cannot be performed. You can scan the QR code on the screen for binding or exit the QR code display page on screen and try device discovery binding.";
    readonly 83968051: "Your APP region is not matched with your printer, please download the APP in the corresponding region and register your account again.";
    readonly 83968052: "The slicing progress has not been updated for a long time, and the printing task has exited. Please confirm the parameters and reinitiate printing.";
    readonly 83968053: "The device is in the process of binding and cannot respond to new binding requests.";
    readonly 83968056: "The regional settings do not match the printer, please check the printer's regional settings.";
    readonly 117456897: "The AMS has been disabled for a print, but it still has filament loaded. Please unload the AMS filament , and switch to the spool holder filament for printing.";
    readonly 117473281: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 117473282: "The cutter is stuck. Please make sure the cutter handle is out.";
    readonly 117473283: "Failed to pull out the filament from the extruder. This might be caused by clogged extruder or filament broken inside the extruder.";
    readonly 117473284: "AMS failed to pull back filament. This could be due to a stuck spool or the end of the filament being stuck in the path.";
    readonly 117473285: "The AMS failed to send out filament. You can clip the end of your filament flat, and reinsert. If this message persists, please check the PTFE tubes in AMS for any signs of wear and tear.";
    readonly 117473286: "Unable to feed filament into the extruder. This could be due to entangled filament or a stuck spool. If not, please check if the AMS PTFE tube is connected.";
    readonly 117473287: "Extruding filament failed. The extruder might be clogged.";
    readonly 117473296: "The AMS assist motor is overloaded. This could be due to entangled filament or a stuck spool.";
    readonly 117473297: "AMS filament ran out. Please insert a new filament into the same AMS slot.";
    readonly 117473298: "Failed to get AMS mapping table; please click \"Retry\" to continue.";
    readonly 117473299: "Timeout purging old filament: Please check if the filament is stuck or the extruder is clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 117522433: "Filament is still loaded from the AMS after it has been disabled. Please unload the filament, load from the spool holder, and restart printing.";
    readonly 117538817: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 117538818: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 117538819: "Failed to pull out the filament from the extruder. There may be an extruder clog or broken filament inside the extruder.";
    readonly 117538820: "AMS failed to pull back filament. This could be due to a stuck spool or the end of the filament being stuck in the path.";
    readonly 117538821: "The AMS failed to send filament. You canclip the end of your filament flat, and reinsert. If this message persists, please check the PTFE tubes in AMS for any signs of wear and tear.";
    readonly 117538822: "Unable to feed filament into the extruder. This could be due to entangled filament or a stuck spool.";
    readonly 117538823: "Failed to extrude the filament. Please check if the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 117538832: "The AMS assist motor is overloaded. This could be due to entangled filament or a stuck spool.";
    readonly 117538833: "AMS filament ran out. Please insert a new filament into the same AMS slot.";
    readonly 117538834: "Failed to get AMS mapping table; please click \"Retry\" to continue.";
    readonly 117538835: "Timeout purging old filament: Please check if the filament is stuck or the extruder is clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 117587969: "Filament is still loaded from the AMS after it has been disabled. Please unload the filament, load from the spool holder, and restart printing.";
    readonly 117604353: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 117604354: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 117604355: "Failed to pull out the filament from the extruder. Please check whether the extruder is clogged or whether the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 117604356: "Failed to pull back the filament from the toolhead to AMS. Please check whether the filament or the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117604357: "Failed to feed the filament outside the AMS. Please clip the end of the filament flat and check to see if the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117604358: "Failed to feed the filament into the toolhead. Please check whether the filament or the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117604359: "Failed to extrude the filament. Please check if the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 117604368: "AMS assist motor is overloaded. Please check if the spool or filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117604369: "AMS filament ran out. Please insert a new filament into the same AMS slot.";
    readonly 117604370: "Failed to get AMS mapping table; please click \"Retry\" to continue.";
    readonly 117604371: "Timeout purging old filament: Please check if the filament is stuck or the extruder is clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 117653505: "Filament is still loaded from the AMS after it has been disabled. Please unload the filament, load from the spool holder, and restart printing.";
    readonly 117669889: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 117669890: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 117669891: "Failed to pull out the filament from the extruder. Please check whether the extruder is clogged or whether the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 117669892: "Failed to pull back the filament from the toolhead to AMS. Please check whether the filament or the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117669893: "Failed to feed the filament outside the AMS. Please clip the end of the filament flat and check to see if the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117669894: "Failed to feed the filament into the toolhead. Please check whether the filament or the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117669895: "Failed to extrude the filament. Please check if the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 117669904: "AMS assist motor is overloaded. Please check if the spool or filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 117669905: "AMS filament ran out. Please insert a new filament into the same AMS slot.";
    readonly 117669906: "Failed to get AMS mapping table; please click \"Retry\" to continue.";
    readonly 117669907: "Timeout purging old filament: Please check if the filament is stuck or the extruder is clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 134168577: "Filament is still loaded from the AMS after it has been disabled. Please unload the filament, load from the spool holder, and restart printing.";
    readonly 134184961: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 134184962: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 134184963: "Please pull out the filament on the spool holder. If this message persists, please check to see if there is filament broken in the extruder. (Connect PTFE tube if you are about to use AMS)";
    readonly 134184964: "Failed to pull back the filament from the toolhead to AMS. Please check whether the filament or the spool is stuck. After troubleshooting, click the \"retry\" button.";
    readonly 134184965: "Failed to feed the filament outside the AMS. Please clip the end of the filament flat and check to see if the spool is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 134184966: "Please feed filament into the PTFE tube until it can not be pushed any farther.";
    readonly 134184967: "Please observe the nozzle. If the filament has been extruded, click \"Done\"; if it is not, please push the filament forward slightly and then click \"Retry\".";
    readonly 134184976: "AMS assist motor is overloaded. Please check if the spool or filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 134184977: "AMS filament ran out. Please put a new filament into AMS and click the \"Retry\" button.";
    readonly 134184978: "Failed to get AMS mapping table; please click \"Retry\" to continue.";
    readonly 134184979: "Timeout purging old filament: Please check if the filament is stuck or the extruder is clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 134201347: "Please pull out the filament on the spool holder. If this message persists, please check to see if there is filament broken in the extruder or PTFE Tube. (Connect PTFE tube if you are about to use AMS)";
    readonly 134201350: "Please feed filament into the PTFE tube until it can not be pushed any farther.";
    readonly 201359361: "First layer defects were detected. If the defects are acceptable, click \"Resume\" button to resume the print job.";
    readonly 201359362: "Spaghetti failure was detected.";
    readonly 201359365: "Purged filament has piled up in the waste chute, which may cause a tool head collision.";
    readonly 201359369: "Build plate localization marker was not found.";
    readonly 201359370: "The detected build plate is not the same as in G-code.";
    readonly 201375747: "Possible defects were detected in the first layer.";
    readonly 201375748: "Possible spaghetti failure was detected.";
    readonly 201375750: "Purged filament may have piled up in the waste chute.";
    readonly 268484609: "High bed temperature may lead to filament clogging in the nozzle. Please ensure ventilation for the printer.";
    readonly 268484610: "Printing CF material with stainless steel may cause nozzle damage.";
    readonly 268484611: "Enabling traditional timelapse might lead to defects. Please enable it as needed?";
    readonly 268550145: "Timelapse is not supported because Spiral vase is enabled in slicing presets.";
    readonly 268550146: "Timelapse is not supported because Print sequence is set to \"By object\".";
    readonly 302006273: "Filament is still loaded from the AMS when it has been disabled. Please unload AMS filament, load from spool holder, and restart print job.";
    readonly 302022657: "Cutting the filament failed. Please check to see if the cutter is stuck. Refer to the Assistant for solutions.";
    readonly 302022658: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 302022659: "Failed to pull out the filament from the extruder. Please check whether the extruder is clogged or whether the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302022660: "Failed to pull back the filament from the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302022661: "Failed to feed the filament. Please load the filament, then click the \"Retry\" button.";
    readonly 302022662: "Failed to feed the filament into the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302022663: "Failed to extrude the filament. This might be caused by clogged extruder or stuck filament. Refer to the Assistant for solutions.";
    readonly 302022672: "Filament or spool may be stuck.";
    readonly 302022673: "AMS filament ran out. Please insert a new filament into the same AMS slot.";
    readonly 302022674: "Failed to get AMS mapping table. Please click the \"Retry\" button to continue.";
    readonly 302022675: "Timeout while purging old filament. Please check if the filament is stuck or the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 302022676: "The filament location in the toolhead was not found. Refer to the Assistant for solutions.";
    readonly 302022677: "Failed to pull out the filament from the toolhead. Please check if the filament is stuck, or the filament is broken inside the extruder or PTFE tube.";
    readonly 302022678: "The extruder is not extruding normally, please refer to the HMS. After trouble shooting. If the defects are acceptable, please click \"Retry\" button.";
    readonly 302071809: "Filament is still loaded from the AMS when it has been disabled. Please unload AMS filament, load from spool holder, and restart print job.";
    readonly 302088193: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 302088194: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 302088195: "Failed to pull out the filament from the extruder. Please check whether the extruder is clogged or whether the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302088196: "Failed to pull back the filament from the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302088197: "Failed to feed the filament. Please load the filament and then click the \"Retry\" button.";
    readonly 302088198: "Failed to feed the filament into the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302088199: "Failed to extrude the filament. The extruder may be clogged or the filament may be stuck, please refer to HMS. After troubleshooting, click \"Retry\" button.";
    readonly 302088208: "Please check if the spool or filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302088209: "AMS filament has run out. Please insert a new filament into the AMS and click the \"Retry\" button.";
    readonly 302088210: "Failed to get AMS mapping table; please click the \"Retry\" button to continue.";
    readonly 302088211: "Timeout while purging old filament. Please check if the filament is stuck or the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 302088212: "Failed to check the filament location in the tool head; please refer to the HMS. After troubleshooting, click the \"Retry\" button.";
    readonly 302088213: "Failed to pull back the filament from the toolhead. Please check if the filament is stuck or the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302088214: "The extruder is not extruding normally, please refer to the HMS. After trouble shooting. If the defects are acceptable, please click \"Retry\" button.";
    readonly 302137345: "Filament is still loaded from the AMS when it has been disabled. Please unload AMS filament, load from spool holder, and restart print job.";
    readonly 302153729: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 302153730: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 302153731: "Failed to pull out the filament from the extruder. Please check whether the extruder is clogged or whether the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302153732: "Failed to pull back the filament from the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302153733: "Failed to feed the filament. Please load the filament, then click the \"Retry\" button.";
    readonly 302153734: "Failed to feed the filament into the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302153735: "Failed to extrude the filament. The extruder may be clogged or the filament may be stuck, please refer to HMS. After troubleshooting, click \"Retry\" button.";
    readonly 302153744: "Please check if the spool or filament is stuck. After troublesho";
    readonly 302153745: "AMS filament has run out. Please insert a new filament into the AMS and click the \"Retry\" button.";
    readonly 302153746: "Failed to get AMS mapping table; please click the \"Retry\" button to continue.";
    readonly 302153747: "Timeout while purging old filament. Please check if the filament is stuck or the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 302153748: "Failed to check the filament location in the tool head, please refer to the HMS. After troubleshooting, click the \"Retry\" button.";
    readonly 302153749: "Failed to pull back the filament from the toolhead. Please check if the filament is stuck or is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302153750: "The extruder is not extruding normally, please refer to the HMS. After trouble shooting. If the defects are acceptable, please click \"Retry\" button.";
    readonly 302202881: "Filament is still loaded from the AMS when it has been disabled. Please unload AMS filament, load from spool holder, and restart print job.";
    readonly 302219265: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 302219266: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 302219267: "Failed to pull out the filament from the extruder. Please check whether the extruder is clogged or whether the filament is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302219268: "Failed to pull back the filament from the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302219269: "Failed to feed the filament. Please load the filament, then click the \"Retry\" button.";
    readonly 302219270: "Failed to feed the filament into the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302219271: "Failed to extrude the filament. The extruder may be clogged or the filament may be stuck, please refer to HMS. After troubleshooting, click \"Retry\" button.";
    readonly 302219280: "Please check if the spool or filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 302219281: "AMS filament has run out. Please insert a new filament into the AMS and click the \"Retry\" button.";
    readonly 302219282: "Failed to get AMS mapping table; please click the \"Retry\" button to continue.";
    readonly 302219283: "Timeout while purging old filament. Please check if the filament is stuck or the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 302219284: "Failed to check the filament location in the tool head; please refer to the HMS. After troubleshooting, click the \"Retry\" button.";
    readonly 302219285: "Failed to pull back the filament from the toolhead. Please check if the filament is stuck or is broken inside the extruder. After troubleshooting, click the \"Retry\" button.";
    readonly 302219286: "The extruder is not extruding normally, please refer to the HMS. After trouble shooting. If the defects are acceptable, please click \"Retry\" button.";
    readonly 318717953: "Filament is still loaded from the AMS when it has been disabled. Please unload AMS filament, load from spool holder, and restart print job.";
    readonly 318734337: "Failed to cut the filament. Please check the cutter. After troubleshooting, click the \"Retry\" button.";
    readonly 318734338: "The cutter is stuck. Please pull out the cutter handle and click the \"Retry\" button.";
    readonly 318734339: "Please pull out the filament on the spool holder. If this message persists, please check to see if there is filament broken in the extruder or PTFE Tube. (Connect PTFE tube if you are about to use AMS)";
    readonly 318734340: "Failed to pull back the filament from the toolhead. Please check whether the filament is stuck. After troubleshooting, click the \"Retry\" button.";
    readonly 318734341: "Failed to feed the filament. Please load the filament, then click the \"Retry\" button.";
    readonly 318734342: "Please feed filament into the PTFE tube until it can not be pushed any farther.";
    readonly 318734343: "Check nozzle. Click \"Done\" if filament was extruded, otherwise push filament forward slightly and click \"Retry.\"";
    readonly 318734352: "Please check if the filament or the spool is stuck.";
    readonly 318734353: "AMS filament has run out. Please insert a new filament into the AMS and click the \"Retry\" button.";
    readonly 318734354: "Failed to get AMS mapping table; please click the \"Retry\" button to continue.";
    readonly 318734355: "Timeout while purging old filament. Please check if the filament is stuck or the extruder clogged. After troubleshooting, click the \"Retry\" button.";
    readonly 318750723: "Please pull out the filament on the spool holder. If this message persists, please check to see if there is filament broken in the extruder or PTFE Tube. (Connect PTFE tube if you are about to use AMS)";
    readonly 318750726: "Please feed filament into the PTFE tube until it can not be pushed any farther.";
};
/**
 * Helper function to get error message for a given error code
 */
declare function getErrorMessage(code: BambuErrorCode): string;
/**
 * Check if an error code indicates a job failure
 */
declare function isJobFailureError(code: number): boolean;
/**
 * Check if an error code is a local cancel code
 */
declare function isLocalCancelCode(code: number): boolean;
/**
 * Error categories to distinguish between different types of errors
 */
declare enum ErrorCategory {
    PRINT_ERROR = "print_error",
    HMS_ERROR = "hms_error",
    UNKNOWN = "unknown"
}
/**
 * Structure for HMS error codes
 */
interface HMSErrorInfo {
    moduleId: number;
    moduleNum: number;
    partId: number;
    msgLevel: HMSMessageLevel;
    msgCode: number;
    category: ErrorCategory;
}
/**
 * Parse HMS error code into its components
 * Based on BambuStudio's implementation
 * @param code The numeric HMS error code
 * @returns Parsed HMS error information
 */
declare function parseHMSErrorCode(code: number): HMSErrorInfo;
/**
 * Get the HMS module name based on module ID
 * @param moduleId The module ID from HMS error code
 * @returns Human-readable module name
 */
declare function getHMSModuleName(moduleId: number): string;
/**
 * Get the severity level description
 * @param level HMS message severity level
 * @returns Human-readable severity description
 */
declare function getHMSSeverityName(level: HMSMessageLevel): string;
/**
 * Determine the error category based on the error code
 * @param code The error code
 * @returns The error category
 */
declare function getErrorCategory(code: number): ErrorCategory;

declare const VIRTUAL_TRAY_MAIN_ID = 255;
declare const VIRTUAL_TRAY_DEPUTY_ID = 254;
declare const AMS_SLOTS_PER_UNIT = 4;
declare const MAX_AMS_UNITS = 4;
/** Check if a slot index represents a virtual (external spool) tray */
declare function isVirtualSlot(slot: number): boolean;
/** Check if a slot index is valid (0-15 for AMS, or 254/255 for virtual) */
declare function isValidAmsSlot(slot: number): boolean;
/** Sanitize an AMS mapping array, replacing invalid values with -1 */
declare function sanitizeAmsMapping(mapping: any[]): number[];
declare enum AmsStatusMain {
    AMS_STATUS_MAIN_IDLE = 0,
    AMS_STATUS_MAIN_FILAMENT_CHANGE = 1,
    AMS_STATUS_MAIN_RFID_IDENTIFYING = 2,
    AMS_STATUS_MAIN_ASSIST = 3,
    AMS_STATUS_MAIN_CALIBRATION = 4,
    AMS_STATUS_MAIN_SELF_CHECK = 5,
    AMS_STATUS_MAIN_DEBUG = 6,
    AMS_STATUS_MAIN_UNKNOWN = 7
}
/**
 * Filament change steps during AMS operation
 */
declare enum FilamentStep {
    STEP_IDLE = 0,
    STEP_HEAT_NOZZLE = 2,
    STEP_CUT_FILAMENT = 3,
    STEP_PULL_CURR_FILAMENT = 4,
    STEP_PUSH_NEW_FILAMENT = 5,
    STEP_CONFIRM_EXTRUDED = 6,
    STEP_PURGE_OLD_FILAMENT = 7,
    STEP_CHECK_POSITION = 8
}
/**
 * Type of filament operation being performed
 */
declare enum FilamentOperation {
    LOAD = 0,
    UNLOAD = 1
}
/**
 * Printer architecture types
 */
declare enum PrinterArch {
    ARCH_CORE_XY = 0,
    ARCH_I3 = 1
}
/**
 * Printer series types
 */
declare enum PrinterSeries {
    SERIES_X1 = 0,
    SERIES_P1P = 1,
    SERIES_UNKNOWN = 2
}
/**
 * Printing speed levels
 */
declare enum PrintingSpeedLevel {
    SPEED_LEVEL_INVALID = 0,
    SPEED_LEVEL_SILENCE = 1,
    SPEED_LEVEL_NORMAL = 2,
    SPEED_LEVEL_RAPID = 3,
    SPEED_LEVEL_RAMPAGE = 4,
    SPEED_LEVEL_COUNT = 5
}
/**
 * Light effect types
 */
declare enum LightEffect {
    LIGHT_EFFECT_ON = 0,
    LIGHT_EFFECT_OFF = 1,
    LIGHT_EFFECT_FLASHING = 2,
    LIGHT_EFFECT_UNKNOWN = 3
}
/**
 * Fan types
 */
declare enum FanType {
    COOLING_FAN = 1,
    BIG_COOLING_FAN = 2,
    CHAMBER_FAN = 3,
    EXHAUST_FAN = 4,
    FILTER_FAN = 5
}
/**
 * SD card states
 */
declare enum SdcardState {
    NO_SDCARD = 0,
    HAS_SDCARD_NORMAL = 1,
    HAS_SDCARD_ABNORMAL = 2,
    HAS_SDCARD_READONLY = 3,
    SDCARD_STATE_NUM = 4
}
/**
 * Active state types
 */
declare enum ActiveState {
    NotActive = 0,
    Active = 1,
    UpdateToDate = 2
}
/**
 * Device modes
 */
declare enum DeviceMode {
    DEVICE_MODE_FDM = 1,
    DEVICE_MODE_LASER = 16,
    DEVICE_MODE_CUT = 256
}
/**
 * Door open check states
 */
declare enum DoorOpenCheckState {
    DOOR_OPEN_CHECK_DISABLE = 0,
    DOOR_OPEN_CHECK_ENABLE_WARNING = 1,
    DOOR_OPEN_CHECK_ENABLE_PAUSE_PRINT = 2
}
/**
 * Extruder switch states
 */
declare enum ExtruderSwitchState {
    ES_IDLE = 0,
    ES_BUSY = 1,
    ES_SWITCHING = 2,
    ES_SWITCHING_FAILED = 3
}
/**
 * Nozzle flow types
 */
declare enum NozzleFlowType {
    NONE_FLOWTYPE = 0,
    S_FLOW = 1,
    H_FLOW = 2
}
/**
 * Nozzle tool types
 */
declare enum NozzleToolType {
    NONE_TOOLTYPE = 0,
    H_TOOL = 1,
    C_TOOL = 2
}
/**
 * Nozzle types
 */
declare enum NozzleType {
    ntUndefine = 0,
    ntStainlessSteel = 1,
    ntHardenedSteel = 2,
    ntTungstenCarbide = 5
}
/**
 * Module version information
 */
interface ModuleVersionInfo {
    name: string;
    product_name: string;
    sn: string;
    hw_ver: string;
    sw_ver: string;
    sw_new_ver: string;
    firmware_status: number;
}
/**
 * Extrusion ratio information
 */
interface ExtrusionRatioInfo {
    name: string;
    setting_id: string;
    k: number;
    n: number;
}
/**
 * Firmware information
 */
interface FirmwareInfo {
    module_type: string;
    version: string;
    url: string;
    name: string;
    description: string;
}
/**
 * Nozzle information
 */
interface Nozzle {
    id: number;
    tool_type: NozzleToolType;
    nozzle_flow: NozzleFlowType;
    nozzle_type: NozzleType;
    diameter: number;
    max_temp: number;
    wear: number;
}
/**
 * Nozzle data
 */
interface NozzleData {
    extder_exist: number;
    cut_exist: number;
    state: number;
    nozzles: Nozzle[];
}
/**
 * AMS slot information
 */
interface AmsSlot {
    ams_id: string;
    slot_id: string;
}
/**
 * Extruder information
 */
interface Extder {
    id: number;
    enable_change_nozzle: number;
    ext_has_filament: number;
    buffer_has_filament: number;
    nozzle_exist: number;
    filam_bak: number[];
    temp: number;
    target_temp: number;
    spre: AmsSlot;
    snow: AmsSlot;
    star: AmsSlot;
    ams_stat: number;
    rfid_stat: number;
    nozzle_id: number;
    target_nozzle_id: number;
    current_nozzle_type: NozzleType;
    current_nozzle_diameter: number;
    current_nozzle_flow_type: NozzleFlowType;
}
/**
 * Extruder data
 */
interface ExtderData {
    current_extder_id: number;
    target_extder_id: number;
    total_extder_count: number;
    current_loading_extder_id: number;
    current_busy_for_loading: boolean;
    switch_extder_state: ExtruderSwitchState;
    extders: Extder[];
}
/**
 * Air mode information
 */
interface AirMode {
    id: number;
    ctrl: number[];
    off: number[];
}
/**
 * Air parts information
 */
interface AirParts {
    type: number;
    id: number;
    func: number;
    state: number;
    range_start: number;
    range_end: number;
}
/**
 * Air duct data
 */
interface AirDuctData {
    curren_mode: number;
    modes: Map<number, AirMode>;
    parts: AirParts[];
}
/**
 * HMS item information
 */
interface HMSItem {
    module_id: number;
    module_num: number;
    part_id: number;
    reserved: number;
    msg_level: number;
    msg_code: number;
    already_read: boolean;
}
interface AMSTray {
    id: number;
    tray_color: string;
    tray_type: string;
    tray_sub_brands: string;
    is_bbl: boolean;
    read_done: boolean;
}
interface AMSUnit {
    id: number;
    tray: AMSTray[];
}
declare class MachineObject {
    dev_name: string;
    dev_ip: string;
    dev_id: string;
    dev_connection_type: string;
    dev_connection_name: string;
    local_use_ssl_for_mqtt: boolean;
    local_use_ssl_for_ftp: boolean;
    m_busy_for_select_extruder: boolean;
    subscribe_counter: number;
    printer_thumbnail_img: string;
    monitor_upgrade_printer_img: string;
    product_name: string;
    bind_user_name: string;
    bind_user_id: string;
    bind_state: string;
    bind_sec_link: string;
    bind_ssdp_version: string;
    last_alive: number;
    m_is_online: boolean;
    m_lan_mode_connection_state: boolean;
    m_set_ctt_dlg: boolean;
    parse_msg_count: number;
    keep_alive_count: number;
    last_update_time: number;
    last_utc_time: number;
    last_keep_alive: number;
    last_push_time: number;
    last_request_push: number;
    last_request_start: number;
    m_active_state: number;
    is_tunnel_mqtt: boolean;
    ams_status_main: AmsStatusMain;
    ams_status_sub: number;
    hw_switch_state: number;
    m_tray_now: string;
    m_tray_tar: string;
    m_ams_id: string;
    m_tray_id: string;
    ams_exist_bits: number;
    tray_exist_bits: number;
    tray_is_bbl_bits: number;
    tray_read_done_bits: number;
    tray_reading_bits: number;
    ams_rfid_status: number;
    ams_insert_flag: boolean;
    ams_power_on_flag: boolean;
    ams_calibrate_remain_flag: boolean;
    ams_auto_switch_filament_flag: boolean;
    ams_air_print_status: boolean;
    ams_support_virtual_tray: boolean;
    ams_user_setting_start: number;
    ams_switch_filament_start: number;
    ams_version: number;
    ams_cali_id: number;
    ams_cali_stat: number;
    is_ams_need_update: boolean;
    bed_temp: number;
    bed_temp_target: number;
    chamber_temp: number;
    chamber_temp_target: number;
    chamber_temp_edit_min: number;
    chamber_temp_edit_max: number;
    chamber_temp_switch_heat: number;
    frame_temp: number;
    heatbreak_fan_speed: number;
    cooling_fan_speed: number;
    big_fan1_speed: number;
    big_fan2_speed: number;
    fan_gear: number;
    print_status: string;
    print_type: string;
    nozzle: number;
    is_220V_voltage: boolean;
    mc_print_stage: number;
    mc_print_sub_stage: number;
    mc_print_error_code: number;
    mc_print_line_number: number;
    mc_print_percent: number;
    mc_left_time: number;
    last_mc_print_stage: number;
    home_flag: number;
    print_error: number;
    curr_layer: number;
    total_layers: number;
    is_support_layer_num: boolean;
    nozzle_blob_detection_enabled: boolean;
    nozzle_blob_detection_hold_start: number;
    chamber_light: LightEffect;
    work_light: LightEffect;
    upgrade_force_upgrade: boolean;
    upgrade_new_version: boolean;
    upgrade_consistency_request: boolean;
    upgrade_display_state: number;
    upgrade_display_hold_count: number;
    firmware_type: number;
    lifecycle: number;
    upgrade_progress: string;
    upgrade_message: string;
    upgrade_status: string;
    upgrade_module: string;
    ams_new_version_number: string;
    ota_new_version_number: string;
    ahb_new_version_number: string;
    get_version_retry: number;
    upgrade_err_code: number;
    air_pump_version_info: ModuleVersionInfo;
    laser_version_info: ModuleVersionInfo;
    cutting_module_version_info: ModuleVersionInfo;
    module_vers: Map<string, ModuleVersionInfo>;
    new_ver_list: Map<string, ModuleVersionInfo>;
    extrusion_ratio_map: Map<string, ExtrusionRatioInfo>;
    m_new_ver_list_exist: boolean;
    firmware_list: FirmwareInfo[];
    is_enable_np: boolean;
    is_enable_ams_np: boolean;
    m_extder_data: ExtderData;
    m_nozzle_data: NozzleData;
    m_air_duct_data: AirDuctData;
    wifi_signal: string;
    link_th: string;
    link_ams: string;
    network_wired: boolean;
    has_ipcam: boolean;
    camera_recording: boolean;
    camera_recording_when_printing: boolean;
    camera_timelapse: boolean;
    camera_recording_ctl_start: number;
    camera_timelapse_hold_count: number;
    camera_resolution_hold_count: number;
    camera_resolution: string;
    camera_resolution_supported: string[];
    xcam_first_layer_inspector: boolean;
    xcam_first_layer_hold_start: number;
    local_rtsp_url: string;
    tutk_state: string;
    liveview_local: number;
    liveview_remote: number;
    file_local: number;
    file_remote: number;
    virtual_camera: boolean;
    xcam_ai_monitoring: boolean;
    xcam_ai_monitoring_hold_start: number;
    xcam_ai_monitoring_sensitivity: string;
    xcam_buildplate_marker_detector: boolean;
    xcam_buildplate_marker_hold_start: number;
    xcam_auto_recovery_step_loss: boolean;
    xcam_allow_prompt_sound: boolean;
    xcam_filament_tangle_detect: boolean;
    xcam_auto_recovery_hold_start: number;
    xcam_prompt_sound_hold_start: number;
    xcam_filament_tangle_detect_hold_start: number;
    is_support_chamber_edit: boolean;
    is_support_extrusion_cali: boolean;
    is_support_first_layer_inspect: boolean;
    is_support_ai_monitoring: boolean;
    is_support_lidar_calibration: boolean;
    is_support_build_plate_marker_detect: boolean;
    is_support_pa_calibration: boolean;
    is_support_flow_calibration: boolean;
    is_support_auto_flow_calibration: boolean;
    is_support_print_without_sd: boolean;
    is_support_print_all: boolean;
    is_support_send_to_sdcard: boolean;
    is_support_aux_fan: boolean;
    is_support_chamber_fan: boolean;
    is_support_filament_backup: boolean;
    is_support_show_filament_backup: boolean;
    is_support_timelapse: boolean;
    is_support_update_remain: boolean;
    is_support_bed_leveling: number;
    is_support_auto_recovery_step_loss: boolean;
    is_support_ams_humidity: boolean;
    is_support_prompt_sound: boolean;
    is_support_filament_tangle_detect: boolean;
    is_support_1080dpi: boolean;
    is_support_cloud_print_only: boolean;
    is_support_command_ams_switch: boolean;
    is_support_mqtt_alive: boolean;
    is_support_tunnel_mqtt: boolean;
    is_support_motor_noise_cali: boolean;
    is_support_nozzle_offset_cali: boolean;
    is_support_high_tempbed_cali: boolean;
    is_support_wait_sending_finish: boolean;
    is_support_user_preset: boolean;
    is_support_nozzle_blob_detection: boolean;
    is_support_air_print_detection: boolean;
    is_support_agora: boolean;
    is_support_upgrade_kit: boolean;
    is_support_filament_setting_inprinting: boolean;
    is_support_internal_timelapse: boolean;
    is_support_command_homing: boolean;
    is_support_brtc: boolean;
    is_support_door_open_check: boolean;
    is_support_save_remote_print_file_to_storage: boolean;
    xcam_door_open_check: DoorOpenCheckState;
    xcam_door_open_check_start_time: number;
    xcam__save_remote_print_file_to_storage: boolean;
    xcam__save_remote_print_file_to_storage_start_time: number;
    bed_temperature_limit: number;
    nozzle_temp_range: number[];
    bed_temp_range: number[];
    sdcard_state: SdcardState;
    hms_list: HMSItem[];
    m_device_mode: DeviceMode;
    m_plate_index: number;
    m_gcode_file: string;
    gcode_file_prepare_percent: number;
    request_model_result: number;
    get_model_mall_result_need_retry: boolean;
    obj_subtask_id: string;
    subtask_name: string;
    file_model_download: boolean;
    nozzle_setting_hold_count: number;
    nozzle_selected_count: number;
    flag_update_nozzle: boolean;
    targ_nozzle_id_from_pc: number;
    installed_upgrade_kit: boolean;
    last_cali_version: number;
    cali_version: number;
    cali_selected_nozzle_dia: number;
    cache_flow_ratio: number;
    cali_finished: boolean;
    flow_ratio_calibration_type: number;
    manual_pa_cali_method: number;
    has_get_pa_calib_tab: boolean;
    request_tab_from_bbs: boolean;
    get_pa_calib_result: boolean;
    get_flow_calib_result: boolean;
    stage_list_info: number[];
    stage_curr: number;
    m_push_count: number;
    m_full_msg_count: number;
    calibration_done: boolean;
    online_rfid: boolean;
    online_ahb: boolean;
    online_version: number;
    last_online_version: number;
    m_firmware_valid: boolean;
    nozzle_target_temper: number;
    amsList: AMSUnit[];
    constructor(state?: PushAllResponse);
    /**
     * Check if printer has any AMS units
     */
    hasAms(): boolean;
    /**
     * Get number of AMS units
     */
    getAmsCount(): number;
    /**
     * Check if specific AMS exists
     */
    isAmsExist(ams_id: number): boolean;
    /**
     * Check if tray exists in specific AMS
     */
    isTrayExist(ams_id: number, tray_id: number): boolean;
    /**
     * Check if tray contains Bambu Lab filament
     */
    isBambuFilament(ams_id: number, tray_id: number): boolean;
    /**
     * Check if tray RFID has been read
     */
    isRfidReadDone(ams_id: number, tray_id: number): boolean;
    /**
     * Parse AMS status from raw status value
     * @param ams_status Raw AMS status value from printer
     */
    private _parse_ams_status;
    /**
     * Decode and apply `tray_now` semantics to mirror BambuStudio.
     * - 255 (VIRTUAL_TRAY_MAIN_ID): external spool main
     * - 254 (VIRTUAL_TRAY_DEPUTY_ID): external spool deputy
     * - Otherwise: encode AMS/tray in bits: ams_id = val >> 2, tray_id = val & 0x3
     */
    private _parse_tray_now;
    /**
     * Parse full printer state from PushAllResponse
     * @param state Printer state response
     */
    parseState(state: PushAllResponse): void;
    /**
     * Check if AMS is waiting for filament load confirmation
     * @returns true if waiting for confirmation, false otherwise
     */
    isWaitingFilamentConfirmation(): boolean;
    /**
     * Check if filament is at extruder
     * @returns true if filament is detected at extruder
     */
    isFilamentAtExtruder(): boolean;
    /**
     * Static method to check if printer state indicates waiting for filament confirmation
     * @param state Full printer state response
     * @returns true if waiting for confirmation, false otherwise
     */
    static isWaitingFilamentConfirmation(state: PushAllResponse): boolean;
    /**
     * Get the current filament step
     * @returns Current FilamentStep or STEP_IDLE if not in filament change
     */
    getCurrentFilamentStep(): FilamentStep;
    /**
     * Get human-readable status text for the current filament operation
     * @returns Status text describing current operation
     */
    getFilamentStatusText(): string;
    /**
     * Check if currently performing a filament change operation
     * @returns true if in filament change mode
     */
    isInFilamentChange(): boolean;
    /**
     * Get the current filament operation type
     * @returns FilamentOperation.LOAD or FilamentOperation.UNLOAD
     */
    getFilamentOperation(): FilamentOperation;
    /**
     * Get AMS unit by ID
     * @param ams_id AMS unit ID
     * @returns AMSUnit if found, undefined otherwise
     */
    getAmsUnit(ams_id: number): AMSUnit | undefined;
    /**
     * Get tray by AMS ID and tray ID
     * @param ams_id AMS unit ID
     * @param tray_id Tray ID within the AMS unit
     * @returns AMSTray if found, undefined otherwise
     */
    getTray(ams_id: number, tray_id: number): AMSTray | undefined;
    /**
     * Check if two trays are compatible (same type and color)
     * @param ams_id1 First AMS unit ID
     * @param tray_id1 First tray ID
     * @param ams_id2 Second AMS unit ID
     * @param tray_id2 Second tray ID
     * @returns true if trays are compatible
     */
    areTraysCompatible(ams_id1: number, tray_id1: number, ams_id2: number, tray_id2: number): boolean;
    /**
     * Find all compatible trays for a given tray
     * @param ams_id AMS unit ID
     * @param tray_id Tray ID
     * @returns Array of compatible tray locations
     */
    findCompatibleTrays(ams_id: number, tray_id: number): Array<{
        ams_id: number;
        tray_id: number;
    }>;
    /**
     * Get the state of a specific tray
     * @param ams_id AMS unit ID
     * @param tray_id Tray ID
     * @returns Object containing tray state information
     */
    getTrayState(ams_id: number, tray_id: number): {
        exists: boolean;
        isBambuLab: boolean;
        rfidRead: boolean;
        tray?: AMSTray;
    };
    /**
     * Parses the home_flag bitfield from BambuStudio and returns an object with all extracted flags.
     * @param home_flag The integer bitfield from the printer status (e.g., from pushall response)
     * @returns An object with all extracted flags as booleans or numbers
     */
    static parseHomeFlag(home_flag: number): {
        is220V: boolean;
        xcamAutoRecoveryStepLoss: boolean;
        cameraRecording: boolean;
        amsCalibrateRemain: boolean;
        sdcardState: number;
        amsAutoSwitchFilament: boolean;
        xcamAllowPromptSound: boolean;
        isSupportPromptSound: boolean;
        isSupportFilamentTangleDetect: boolean;
        xcamFilamentTangleDetect: boolean;
        isSupportMotorNoiseCali: boolean;
        isSupportUserPreset: boolean;
        nozzleBlobDetectionEnabled: boolean;
        isSupportNozzleBlobDetection: boolean;
        installedPlus: boolean;
        supportedPlus: boolean;
        amsAirPrintStatus: boolean;
        isSupportAirPrintDetection: boolean;
        isSupportAgora: boolean;
    };
    /**
     * Get the device IP address
     */
    getDevIp(): string;
    /**
     * Set the device IP address
     */
    setDevIp(ip: string): void;
    /**
     * Get the connection type (lan | cloud)
     */
    getConnectionType(): string;
    /**
     * Check if device has access rights
     */
    hasAccessRight(): boolean;
    /**
     * Get access code (placeholder - would need implementation)
     */
    getAccessCode(): string;
    /**
     * Set access code (placeholder - would need implementation)
     */
    setAccessCode(code: string, onlyRefresh?: boolean): void;
    /**
     * Check if printer is in LAN mode
     */
    isLanModePrinter(): boolean;
    /**
     * Check if device is local (has IP address)
     */
    isLocal(): boolean;
    /**
     * Check if device is available (not occupied)
     */
    isAvailable(): boolean;
    /**
     * Set LAN mode connection state
     */
    setLanModeConnectionState(state: boolean): void;
    /**
     * Get LAN mode connection state
     */
    getLanModeConnectionState(): boolean;
    /**
     * Set online state
     */
    setOnlineState(onOff: boolean): void;
    /**
     * Check if device is online
     */
    isOnline(): boolean;
    /**
     * Check if device is connected
     */
    isConnected(): boolean;
    /**
     * Check if device is connecting
     */
    isConnecting(): boolean;
    /**
     * Get printer series
     */
    getPrinterSeries(): PrinterSeries;
    /**
     * Get printer architecture
     */
    getPrinterArch(): PrinterArch;
    /**
     * Check if printer is CoreXY architecture
     */
    isCoreXY(): boolean;
    /**
     * Check if printer is series X1
     */
    isSeriesX1(): boolean;
    /**
     * Check if printer is series P1
     */
    isSeriesP1(): boolean;
    /**
     * Get printer series as string
     */
    getPrinterSeriesStr(): string;
    /**
     * Check if printer is FDM type
     */
    isFdmType(): boolean;
    /**
     * Check if printer can print
     */
    canPrint(): boolean;
    /**
     * Check if printer can resume printing
     */
    canResume(): boolean;
    /**
     * Check if printer can pause printing
     */
    canPause(): boolean;
    /**
     * Check if printer can abort printing
     */
    canAbort(): boolean;
    /**
     * Check if printer is in printing state
     */
    isInPrinting(): boolean;
    /**
     * Check if printer is in printing pause state
     */
    isInPrintingPause(): boolean;
    /**
     * Check if printer is in prepare state
     */
    isInPrepare(): boolean;
    /**
     * Check if printing is finished
     */
    isPrintingFinished(): boolean;
    /**
     * Check if printer is in system printing state
     */
    isSystemPrinting(): boolean;
    /**
     * Set print state
     */
    setPrintState(status: string): void;
    /**
     * Static method to check if status indicates printing
     */
    static isInPrintingStatus(status: string): boolean;
    /**
     * Get bed temperature
     */
    getBedTemp(): number;
    /**
     * Get bed target temperature
     */
    getBedTargetTemp(): number;
    /**
     * Get chamber temperature
     */
    getChamberTemp(): number;
    /**
     * Get chamber target temperature
     */
    getChamberTargetTemp(): number;
    /**
     * Get frame temperature
     */
    getFrameTemp(): number;
    /**
     * Get nozzle temperature
     */
    getNozzleTemp(): number;
    /**
     * Get nozzle target temperature
     */
    getNozzleTargetTemp(): number;
    /**
     * Get heatbreak fan speed
     */
    getHeatbreakFanSpeed(): number;
    /**
     * Get cooling fan speed
     */
    getCoolingFanSpeed(): number;
    /**
     * Get big fan 1 speed
     */
    getBigFan1Speed(): number;
    /**
     * Get big fan 2 speed
     */
    getBigFan2Speed(): number;
    /**
     * Get fan gear
     */
    getFanGear(): number;
    /**
     * Check if AMS is unloading filament
     */
    isAmsUnload(): boolean;
    /**
     * Check if AMS is on setting up
     */
    isAmsOnSettingup(): boolean;
    /**
     * Check if filament is moving
     */
    isFilamentMove(): boolean;
    /**
     * Check if can unload filament
     */
    canUnloadFilament(): boolean;
    /**
     * Check if supports AMS/extruder mix mapping
     */
    isSupportAmxExtMixMapping(): boolean;
    /**
     * Check if only external spool exists
     */
    onlyExistExtSpool(): boolean;
    /**
     * Check if in extrusion calibration
     */
    isInExtrusionCali(): boolean;
    /**
     * Check if extrusion calibration is finished
     */
    isExtrusionCaliFinished(): boolean;
    /**
     * Check if printer has multiple extruders
     */
    isMultiExtruders(): boolean;
    /**
     * Check if main extruder is on left
     */
    isMainExtruderOnLeft(): boolean;
    /**
     * Get current extruder
     */
    getCurrentExtruder(): Extder | undefined;
    /**
     * Get extruder by ID
     */
    getExtruderById(id: number): Extder | undefined;
    /**
     * Check if nozzle flow type is supported
     */
    isNozzleFlowTypeSupported(): boolean;
    /**
     * Get nozzle flow type for extruder
     */
    getNozzleFlowType(extruderId: number): NozzleFlowType;
    /**
     * Check if printer needs SD card
     */
    needSDCard(): boolean;
    /**
     * Get SD card state
     */
    getSdcardState(): SdcardState;
    /**
     * Check if printer supports chamber editing
     */
    isSupportChamberEdit(): boolean;
    /**
     * Check if printer supports extrusion calibration
     */
    isSupportExtrusionCali(): boolean;
    /**
     * Check if printer supports first layer inspection
     */
    isSupportFirstLayerInspect(): boolean;
    /**
     * Check if printer supports AI monitoring
     */
    isSupportAiMonitoring(): boolean;
    /**
     * Check if printer supports bed leveling
     */
    isSupportBedLeveling(): boolean;
    /**
     * Check if printer supports timelapse
     */
    isSupportTimelapse(): boolean;
    /**
     * Check if printer supports auxiliary fan
     */
    isSupportAuxFan(): boolean;
    /**
     * Check if printer supports chamber fan
     */
    isSupportChamberFan(): boolean;
    /**
     * Check if printer has IP camera
     */
    hasIpcam(): boolean;
    /**
     * Check if camera is recording
     */
    isRecording(): boolean;
    /**
     * Check if camera recording is enabled
     */
    isRecordingEnable(): boolean;
    /**
     * Check if timelapse is enabled
     */
    isTimelapse(): boolean;
    /**
     * Get camera resolution
     */
    getCameraResolution(): string;
    /**
     * Get supported camera resolutions
     */
    getResolutionSupported(): string[];
    /**
     * Check if first layer inspector is enabled
     */
    isFirstLayerInspector(): boolean;
    /**
     * Check if AI monitoring is enabled
     */
    isAiMonitoring(): boolean;
    /**
     * Check if buildplate marker detector is enabled
     */
    isBuildplateMarkerDetector(): boolean;
    /**
     * Check if printer is upgrading
     */
    isInUpgrading(): boolean;
    /**
     * Check if upgrade is available
     */
    isUpgradingAvailable(): boolean;
    /**
     * Get upgrade progress percentage
     */
    getUpgradePercent(): number;
    /**
     * Get OTA version
     */
    getOtaVersion(): string;
    /**
     * Check if version is valid
     */
    checkVersionValid(): boolean;
    /**
     * Get firmware type string
     */
    getFirmwareTypeStr(): string;
    /**
     * Get lifecycle type string
     */
    getLifecycleTypeStr(): string;
    /**
     * Get light effect string
     */
    getLightEffectStr(effect: LightEffect): string;
    /**
     * Parse light effect from string
     */
    parseLightEffect(effectStr: string): LightEffect;
    /**
     * Check if door open check is supported
     */
    supportDoorOpenCheck(): boolean;
    /**
     * Get door open check state
     */
    getDoorOpenCheckState(): DoorOpenCheckState;
    /**
     * Reset update time
     */
    resetUpdateTime(): void;
    /**
     * Reset all data
     */
    reset(): void;
    /**
     * Check if printer is at heating mode
     */
    isAtHeatingMode(): boolean;
    /**
     * Check if printer is using 220V
     */
    is220V(): boolean;
    /**
     * Get bed temperature limit
     */
    getBedTemperatureLimit(): number;
    /**
     * Check if filament is installed
     */
    isFilamentInstalled(): boolean;
    /**
     * Check if axis is at home
     */
    isAxisAtHome(axis: string): boolean;
    /**
     * Get current stage
     */
    getCurrStage(): string;
    /**
     * Get current stage index
     */
    getCurrStageIdx(): number;
    /**
     * Check if in calibration
     */
    isInCalibration(): boolean;
    /**
     * Check if calibration is running
     */
    isCalibrationRunning(): boolean;
    /**
     * Check if calibration is done
     */
    isCalibrationDone(): boolean;
    /**
     * Check if SD card printing
     */
    isSdcardPrinting(): boolean;
    /**
     * Get liveview remote
     */
    getLiveviewRemote(): number;
    /**
     * Get file remote
     */
    getFileRemote(): number;
    /**
     * Check if can enable timelapse
     */
    canEnableTimelapse(): boolean;
    /**
     * Get compatible machines
     */
    getCompatibleMachine(): string[];
    /**
     * Get string from fan type
     */
    getStringFromFantype(type: FanType): string;
}
/**
 * Check if AMS is waiting for filament load confirmation
 * @param ams_status The raw ams_status value from printer state
 * @returns true if waiting for confirmation, false otherwise
 *
 * Status format:
 * - High byte (main status): 0x01 = AMS_STATUS_MAIN_FILAMENT_CHANGE
 * - Low byte (sub status): 0x06 = Waiting for confirmation
 * Example: status 260 (0x104) = Waiting for confirmation
 */
declare function isWaitingFilamentConfirmation(ams_status: number): boolean;
/**
 * Calculates filament backup groups based on compatible filaments in AMS slots.
 * Compatible filaments must have the same type and color.
 *
 * @param printerData - The printer data containing AMS information
 * @returns Array of bitmap values where each bit represents an AMS slot in that backup group
 */
interface FilamentBackupGroup {
    slots: number[];
}
/**
 * Parses filam_bak bitmaps to determine which filament slots are compatible backups
 * @param filam_bak Array of bitmaps where each bit represents an AMS slot
 * @returns Array of FilamentBackupGroup objects, each containing compatible slot indices
 *
 * @example
 * // Input: [3, 12]  (binary: 0011 and 1100)
 * // Returns: [
 * //   { slots: [0, 1] },   // Slots 0 and 1 are compatible
 * //   { slots: [2, 3] }    // Slots 2 and 3 are compatible
 * // ]
 */
declare function parseFilamBak(filam_bak: number[]): FilamentBackupGroup[];
interface BackupSlot {
    ams_id: number;
    tray_id: number;
}
interface EnrichedTray {
    ams_id: number;
    tray_id: number;
    type: string;
    color: string;
    backup_slots?: BackupSlot[];
}
interface EnrichedAms {
    id: number;
    trays: EnrichedTray[];
}
declare function getEnrichedAmsData(printerData: PushAllResponse): EnrichedAms[];
declare function calculateFilamBak(printerData: PushAllResponse): number[];
/**
 * Project filament information including nozzle assignment
 */
interface ProjectFilament {
    /** Filament index (0-based) in the project */
    id: number;
    /** Material type (e.g., "PLA", "PETG") */
    type: string;
    /** Color in hex format (#RRGGBB) */
    color: string;
    /** Length of filament used in meters */
    used_m?: number;
    /** Weight of filament used in grams */
    used_g?: number;
    /** Tray info index from the 3MF file */
    tray_info_idx: string;
    /** Nozzle assignment (1 = nozzle 1, 2 = nozzle 2) */
    nozzle: number;
}
/**
 * AMS slot information for mapping
 */
interface AmsSlotInfo {
    /** Slot index (0-15 for up to 4 AMS units) */
    slot: number;
    /** Material type */
    type: string;
    /** Color in hex format */
    color: string;
    /** Slot ID/identifier */
    id: string;
    /** Filament ID */
    filamentId: string;
    /** Optional vendor information */
    vendor?: string;
    /** Optional remaining filament in meters */
    remaining_m?: number;
}
/**
 * AMS setup containing all available slots
 */
interface AmsConfiguration {
    /** Map of slot index to slot information */
    slots: Record<number, AmsSlotInfo>;
}
/**
 * Color matching details for UI display
 */
interface ColorMatchDetails {
    hueDiff: number;
    satDiff: number;
    lightDiff: number;
    totalDistance: number;
    saturationPenalty: number;
}
/**
 * Mapping information for a single filament
 */
interface FilamentMappingInfo {
    /** AMS slot index */
    ams: number;
    /** Target color in the AMS slot */
    targetColor: string;
    /** Filament type in the AMS slot */
    filamentType: string;
    /** Filament ID setting */
    filamentId: string;
    /** Source color from the project */
    sourceColor: string;
    /** Match quality indicator */
    matchQuality: 'exact' | 'color' | 'type' | 'none';
    /** Optional detailed color matching information */
    details?: ColorMatchDetails;
    /** Optional reason for the match */
    reason?: string;
}
/**
 * Complete AMS mapping result
 */
interface AmsMappingResult {
    /** Array where index is filament ID and value is AMS slot (-1 if unmapped) */
    ams_mapping: number[];
    /** Detailed mapping information for each filament */
    ams_mapping_info: FilamentMappingInfo[];
    /** Whether to use AMS for this print */
    task_use_ams: boolean;
}
/**
 * Filaments grouped by nozzle
 */
interface FilamentsByNozzle {
    /** Map of nozzle number to array of filaments */
    [nozzle: number]: ProjectFilament[];
}
/**
 * AMS mapping2 entry - separates AMS unit from slot
 */
interface AmsMapping2Entry {
    /** AMS unit ID (0-3) */
    ams_id: number;
    /** Slot ID within the AMS (0-3) */
    slot_id: number;
}
/**
 * Dual nozzle AMS mapping result
 */
interface DualNozzleAmsMappingResult {
    /** Complete AMS mapping for all filaments */
    ams_mapping: number[];
    /** AMS mapping2 format - array of {ams_id, slot_id} objects */
    ams_mapping2: AmsMapping2Entry[];
    /** Mapping information for each filament */
    ams_mapping_info: FilamentMappingInfo[];
    /** Whether to use AMS */
    task_use_ams: boolean;
    /** Filaments grouped by nozzle */
    filamentsByNozzle: FilamentsByNozzle;
    /** Number of nozzles used (1 or 2) */
    nozzleCount: number;
    /** Whether this is a dual nozzle print */
    isDualNozzle: boolean;
}
/**
 * Slice info plate data containing filament maps
 */
interface SliceInfoPlate {
    index?: number;
    nozzle_diameters?: number | number[];
    filament_maps?: number | number[];
    extruder_type?: string | string[];
    filaments?: Array<{
        id: number;
        type: string;
        color: string;
        tray_info_idx: string;
        used_m?: number;
        used_g?: number;
    }>;
}
/**
 * Parse filament_maps from slice info to determine nozzle assignments
 *
 * @param filament_maps - Can be a number, array of numbers, or space-separated string
 * @returns Array of nozzle assignments where index is filament ID and value is nozzle number
 *
 * @example
 * // Single nozzle (all filaments use nozzle 1)
 * parseFilamentMaps("1 1 1 1") // [1, 1, 1, 1]
 * parseFilamentMaps([1, 1, 1, 1]) // [1, 1, 1, 1]
 *
 * // Dual nozzle (alternating nozzles)
 * parseFilamentMaps("1 2 1 2") // [1, 2, 1, 2]
 * parseFilamentMaps([1, 2, 1, 2]) // [1, 2, 1, 2]
 */
declare function parseFilamentMaps(filament_maps: number | number[] | string | undefined): number[];
/**
 * Group project filaments by nozzle assignment
 *
 * @param filaments - Array of project filaments
 * @param filament_maps - Nozzle assignments for each filament
 * @returns Object with nozzle numbers as keys and arrays of filaments as values
 *
 * @example
 * const filaments = [
 *   { id: 0, type: "PLA", color: "#FF0000", ...otherProps },
 *   { id: 1, type: "PETG", color: "#00FF00", ...otherProps },
 * ];
 * const filament_maps = [1, 2]; // Filament 0 uses nozzle 1, filament 1 uses nozzle 2
 *
 * groupFilamentsByNozzle(filaments, filament_maps);
 * // Returns: {
 * //   1: [{ id: 0, type: "PLA", color: "#FF0000", nozzle: 1, ... }],
 * //   2: [{ id: 1, type: "PETG", color: "#00FF00", nozzle: 2, ... }]
 * // }
 */
declare function groupFilamentsByNozzle(filaments: Array<Omit<ProjectFilament, 'nozzle'>>, filament_maps: number[]): FilamentsByNozzle;
/**
 * Convert global AMS slot index to AMS unit and slot IDs
 *
 * @param globalSlot - Global slot index (0-15 for up to 4 AMS units, 254-255 for virtual trays)
 * @returns Object with ams_id and slot_id
 *
 * @example
 * globalSlotToAmsMapping2Entry(0)   // { ams_id: 0, slot_id: 0 }
 * globalSlotToAmsMapping2Entry(5)   // { ams_id: 1, slot_id: 1 }
 * globalSlotToAmsMapping2Entry(15)  // { ams_id: 3, slot_id: 3 }
 * globalSlotToAmsMapping2Entry(254) // { ams_id: 254, slot_id: 0 } - Virtual tray (external spool)
 * globalSlotToAmsMapping2Entry(255) // { ams_id: 255, slot_id: 0 } - Virtual tray (external spool)
 */
declare function globalSlotToAmsMapping2Entry(globalSlot: number): AmsMapping2Entry;
/**
 * Convert AMS unit and slot IDs to global slot index
 *
 * @param ams_id - AMS unit ID (0-3 for regular AMS, 254-255 for virtual trays)
 * @param slot_id - Slot ID within AMS (0-3)
 * @returns Global slot index (0-15 for regular AMS, 254-255 for virtual trays)
 *
 * @example
 * amsMapping2EntryToGlobalSlot(0, 0)    // 0
 * amsMapping2EntryToGlobalSlot(1, 1)    // 5
 * amsMapping2EntryToGlobalSlot(3, 3)    // 15
 * amsMapping2EntryToGlobalSlot(254, 0)  // 254 - Virtual tray (external spool)
 * amsMapping2EntryToGlobalSlot(255, 0)  // 255 - Virtual tray (external spool)
 */
declare function amsMapping2EntryToGlobalSlot(ams_id: number, slot_id: number): number;
declare const globalSlotFromAms: typeof amsMapping2EntryToGlobalSlot;
/**
 * Convert ams_mapping array to ams_mapping2 format
 *
 * Both arrays must have the same length to match BambuStudio behavior.
 * Unmapped filaments (-1) are converted to {ams_id: 255, slot_id: 255} (VIRTUAL_TRAY_MAIN_ID).
 *
 * @param ams_mapping - Array where index is filament ID and value is global slot
 * @returns Array of AmsMapping2Entry objects with same length as input
 *
 * @example
 * convertToAmsMapping2([0, 5, -1, 15])
 * // [
 * //   { ams_id: 0, slot_id: 0 },
 * //   { ams_id: 1, slot_id: 1 },
 * //   { ams_id: 255, slot_id: 255 },  // unmapped
 * //   { ams_id: 3, slot_id: 3 }
 * // ]
 */
declare function convertToAmsMapping2(ams_mapping: (number | null | undefined)[]): AmsMapping2Entry[];
/**
 * Convert ams_mapping2 format to ams_mapping array
 *
 * Both arrays must have the same length to match BambuStudio behavior.
 * {ams_id: 255, slot_id: 255} represents an unmapped filament and is converted to -1.
 *
 * @param ams_mapping2 - Array of AmsMapping2Entry objects
 * @param totalFilaments - Total number of filaments in the project (deprecated, uses array length)
 * @returns Array where index is filament ID and value is global slot
 *
 * @example
 * convertFromAmsMapping2(
 *   [{ ams_id: 0, slot_id: 0 }, { ams_id: 255, slot_id: 255 }, { ams_id: 1, slot_id: 1 }],
 *   3
 * ) // [0, -1, 5]
 */
declare function convertFromAmsMapping2(ams_mapping2: AmsMapping2Entry[], totalFilaments: number): number[];
/**
 * Find the best AMS slot for a given filament
 *
 * @param filament - Filament to match
 * @param amsSetup - Available AMS slots
 * @param usedSlots - Set of already used slot indices
 * @param colorThreshold - Maximum color distance for a match (default: 15)
 * @returns Object containing slot index and match quality
 */
declare function findBestAmsSlotForFilament(filament: Pick<ProjectFilament, 'type' | 'color'>, amsSetup: AmsConfiguration, usedSlots?: Set<number>, colorThreshold?: number): {
    slot: number;
    matchQuality: FilamentMappingInfo['matchQuality'];
    reason?: string;
};
/**
 * Create AMS mapping for dual nozzle printer
 *
 * This function creates a complete AMS mapping for prints that may use one or two nozzles.
 * It automatically detects whether the print is single or dual nozzle based on filament_maps,
 * groups filaments by nozzle, and creates optimal mappings for each nozzle.
 *
 * @param filaments - Array of filaments from the project (without nozzle assignment)
 * @param filament_maps - Nozzle assignments from slice_info
 * @param amsSetup - Available AMS configuration
 * @param colorThreshold - Maximum color distance for matching (default: 15)
 * @returns Complete dual nozzle AMS mapping result
 *
 * @example
 * // Single nozzle print
 * const singleNozzleResult = createDualNozzleAmsMapping(
 *   [
 *     { id: 0, type: "PLA", color: "#FF0000", tray_info_idx: "0", used_g: 10 },
 *     { id: 1, type: "PLA", color: "#00FF00", tray_info_idx: "1", used_g: 15 },
 *   ],
 *   [1, 1], // Both filaments use nozzle 1
 *   amsSetup
 * );
 *
 * // Dual nozzle print
 * const dualNozzleResult = createDualNozzleAmsMapping(
 *   [
 *     { id: 0, type: "PLA", color: "#FF0000", tray_info_idx: "0", used_g: 10 },
 *     { id: 1, type: "PETG", color: "#00FF00", tray_info_idx: "1", used_g: 15 },
 *     { id: 2, type: "PLA", color: "#0000FF", tray_info_idx: "2", used_g: 8 },
 *   ],
 *   [1, 2, 1], // Filaments 0 and 2 use nozzle 1, filament 1 uses nozzle 2
 *   amsSetup
 * );
 */
declare function createDualNozzleAmsMapping(filaments: Array<Omit<ProjectFilament, 'nozzle'>>, filament_maps: number | number[] | string, amsSetup: AmsConfiguration, colorThreshold?: number): DualNozzleAmsMappingResult;
/**
 * Helper function to extract filament data from slice info and create mappings
 *
 * This is a convenience function that combines parsing slice info with creating AMS mappings.
 *
 * @param sliceInfoPlate - Plate data from slice_info.config
 * @param amsSetup - Available AMS configuration
 * @param colorThreshold - Maximum color distance for matching (default: 15)
 * @returns Complete dual nozzle AMS mapping result
 *
 * @example
 * const sliceInfoPlate = {
 *   filament_maps: "1 2 1",
 *   filaments: [
 *     { id: 0, type: "PLA", color: "#FF0000", tray_info_idx: "0", used_g: 10 },
 *     { id: 1, type: "PETG", color: "#00FF00", tray_info_idx: "1", used_g: 15 },
 *     { id: 2, type: "PLA", color: "#0000FF", tray_info_idx: "2", used_g: 8 },
 *   ]
 * };
 *
 * const result = createAmsMappingFromSliceInfo(sliceInfoPlate, amsSetup);
 */
declare function createAmsMappingFromSliceInfo(sliceInfoPlate: SliceInfoPlate, amsSetup: AmsConfiguration, colorThreshold?: number): DualNozzleAmsMappingResult | null;
/**
 * Get a human-readable summary of the mapping
 *
 * @param mapping - Dual nozzle AMS mapping result
 * @returns Object with summary information
 *
 * @example
 * const summary = getAmsMappingSummary(mappingResult);
 * console.log(summary);
 * // {
 * //   nozzleCount: 2,
 * //   isDualNozzle: true,
 * //   totalFilaments: 3,
 * //   mappedFilaments: 3,
 * //   unmappedFilaments: 0,
 * //   nozzle1Filaments: 2,
 * //   nozzle2Filaments: 1,
 * //   exactMatches: 2,
 * //   colorMatches: 1,
 * //   typeMatches: 0,
 * //   noMatches: 0
 * // }
 */
declare function getAmsMappingSummary(mapping: DualNozzleAmsMappingResult): {
    nozzleCount: number;
    isDualNozzle: boolean;
    totalFilaments: number;
    mappedFilaments: number;
    unmappedFilaments: number;
    nozzle1Filaments: number;
    nozzle2Filaments: number;
    exactMatches: number;
    colorMatches: number;
    typeMatches: number;
    noMatches: number;
};

interface ModelSpecificSettings$1 {
    setting_id?: string;
    compatible_printers?: string[];
    [key: string]: any;
}
type BaseSettingKey = 'activate_air_filtration' | 'additional_cooling_fan_speed' | 'chamber_temperatures' | 'circle_compensation_speed' | 'close_fan_the_first_x_layers' | 'complete_print_exhaust_fan_speed' | 'cool_plate_temp' | 'cool_plate_temp_initial_layer' | 'counter_coef_1' | 'counter_coef_2' | 'counter_coef_3' | 'counter_limit_max' | 'counter_limit_min' | 'description' | 'diameter_limit' | 'during_print_exhaust_fan_speed' | 'eng_plate_temp' | 'eng_plate_temp_initial_layer' | 'fan_cooling_layer_time' | 'fan_max_speed' | 'fan_min_speed' | 'filament_adhesiveness_category' | 'filament_change_length' | 'filament_cost' | 'filament_density' | 'filament_deretraction_speed' | 'filament_diameter' | 'filament_end_gcode' | 'filament_extruder_id' | 'filament_extruder_variant' | 'filament_flow_ratio' | 'filament_flush_temp' | 'filament_flush_volumetric_speed' | 'filament_is_support' | 'filament_long_retractions_when_cut' | 'filament_long_retractions_when_ec' | 'filament_max_volumetric_speed' | 'filament_minimal_purge_on_wipe_tower' | 'filament_pre_cooling_temperature' | 'filament_prime_volume' | 'filament_printable' | 'filament_ramming_travel_time' | 'filament_ramming_volumetric_speed' | 'filament_retract_before_wipe' | 'filament_retract_restart_extra' | 'filament_retract_when_changing_layer' | 'filament_retraction_distances_when_cut' | 'filament_retraction_distances_when_ec' | 'filament_retraction_length' | 'filament_retraction_minimum_travel' | 'filament_retraction_speed' | 'filament_scarf_gap' | 'filament_scarf_height' | 'filament_scarf_length' | 'filament_scarf_seam_type' | 'filament_settings_id' | 'filament_shrink' | 'filament_soluble' | 'filament_start_gcode' | 'filament_type' | 'filament_wipe' | 'filament_wipe_distance' | 'filament_z_hop' | 'filament_z_hop_types' | 'full_fan_speed_layer' | 'hole_coef_1' | 'hole_coef_2' | 'hole_coef_3' | 'hole_limit_max' | 'hole_limit_min' | 'hot_plate_temp' | 'hot_plate_temp_initial_layer' | 'impact_strength_z' | 'instantiation' | 'long_retractions_when_ec' | 'nozzle_temperature' | 'nozzle_temperature_initial_layer' | 'nozzle_temperature_range_high' | 'nozzle_temperature_range_low' | 'overhang_fan_speed' | 'overhang_fan_threshold' | 'reduce_fan_stop_start_freq' | 'required_nozzle_HRC' | 'retraction_distances_when_ec' | 'slow_down_for_layer_cooling' | 'slow_down_layer_time' | 'slow_down_min_speed' | 'supertack_plate_temp' | 'supertack_plate_temp_initial_layer' | 'temperature_vitrification' | 'textured_plate_temp' | 'textured_plate_temp_initial_layer';
type BaseSettingPrimitive = string | number | boolean;
type BaseSettingValue = BaseSettingPrimitive | BaseSettingPrimitive[];
type BaseSettings = Partial<Record<BaseSettingKey, BaseSettingValue>>;
interface FilamentTypeSettings$1 {
    filament_id: string;
    vendor: string;
    materialType: string;
    base_settings: BaseSettings;
    model_settings: {
        [printerModel: string]: ModelSpecificSettings$1;
    };
}
interface FilamentMapping {
    [materialType: string]: FilamentTypeSettings$1;
}
declare const FILAMENT_MAPPINGS: FilamentMapping;
/**
 * Get the filament ID for a given material type
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @returns The filament ID or null if not found
 */
declare function getFilamentId(materialType: string): string | null;
/**
 * Get a reasonable default filament_id for a broad material family (e.g., "PLA", "PETG", "ABS").
 * Preference order:
 * 1) Exact materialType match (case-insensitive)
 * 2) Bambu Lab profile where materialType starts with family + ' ', preferring "Basic" when available
 * 3) Any profile where materialType starts with family + ' '
 * 4) Fallback table of common families
 * Returns empty string if no match found.
 */
declare function getDefaultFilamentIdForMaterialType(materialType: string): string;
/**
 * Get all settings for a material type and printer model
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @param printerModel The printer model (e.g., "X1C", "A1")
 * @returns Combined settings (base + model specific) or null if not found
 */
declare function getMaterialSettings(materialType: string, printerModel: string): any | null;
/**
 * List all compatible materials for a given printer model
 * @param printerModel The printer model (e.g., "X1C", "A1")
 * @returns Array of compatible material types
 */
declare function getCompatibleMaterials(printerModel: string): string[];
/**
 * Get all supported printer models
 * @returns Array of supported printer models
 */
declare function getSupportedPrinters(): string[];
/**
 * Check if a material type exists in the mapping
 * @param materialType The material type to check
 * @returns boolean indicating if the material type exists
 */
declare function isMaterialTypeSupported(materialType: string): boolean;
/**
 * Get the vendor for a given material type
 * @param materialType The material type
 * @returns The vendor name or null if material type not found
 */
declare function getMaterialVendor(materialType: string): string | null;
/**
 * Get base settings for a material type
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @returns Base settings or null if not found
 */
declare function getBaseSettings(materialType: string): any | null;
/**
 * Get settings for a material type and printer model, with fallback to defaults
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @param printerModel The printer model (e.g., "X1C", "A1")
 * @returns Combined settings (model-specific + base) or null if material not found
 */
declare function getFilamentSettings(materialType: string, printerModel: string): any | null;
/**
 * Check if model-specific settings exist for a material and printer combination
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @param printerModel The printer model (e.g., "X1C", "A1")
 * @returns boolean indicating if model-specific settings exist
 */
declare function hasModelSpecificSettings(materialType: string, printerModel: string): boolean;
/**
 * Get a specific setting value for a material and printer combination
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @param printerModel The printer model (e.g., "X1C", "A1")
 * @param settingKey The setting key to retrieve
 * @returns The setting value or null if not found
 */
declare function getFilamentSetting(materialType: string, printerModel: string, settingKey: string): any | null;
/**
 * Get all available setting keys for a material type
 * @param materialType The type of material (e.g., "PLA Basic", "ABS")
 * @returns Array of setting keys or empty array if material not found
 */
declare function getAvailableSettings(materialType: string): string[];

var name$b = "Voxelab";
var version$b = "01.10.00.01";
var force_update$b = "0";
var description$b = "Voxelab configurations";
var machine_model_list$b = [
	{
		name: "Voxelab Aquila X2",
		sub_path: "machine/Voxelab Aquila X2.json"
	}
];
var process_list$b = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "0.16mm Optimal @Voxelab AquilaX2",
		sub_path: "process/0.16mm Optimal @Voxelab AquilaX2.json"
	},
	{
		name: "0.20mm Standard @Voxelab AquilaX2",
		sub_path: "process/0.20mm Standard @Voxelab AquilaX2.json"
	}
];
var filament_list$b = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "Generic ABS @Voxelab",
		sub_path: "filament/Generic ABS @Voxelab.json"
	},
	{
		name: "Generic PETG @Voxelab",
		sub_path: "filament/Generic PETG @Voxelab.json"
	},
	{
		name: "Generic PLA @Voxelab",
		sub_path: "filament/Generic PLA @Voxelab.json"
	}
];
var machine_list$b = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "Voxelab Aquila X2 0.4 nozzle",
		sub_path: "machine/Voxelab Aquila X2 0.4 nozzle.json"
	}
];
var Voxelab = {
	name: name$b,
	version: version$b,
	force_update: force_update$b,
	description: description$b,
	machine_model_list: machine_model_list$b,
	process_list: process_list$b,
	filament_list: filament_list$b,
	machine_list: machine_list$b
};

var name$a = "Voron";
var version$a = "01.10.00.01";
var force_update$a = "0";
var description$a = "Voron configurations";
var machine_model_list$a = [
	{
		name: "Voron 2.4 250",
		sub_path: "machine/Voron 2.4 250.json"
	},
	{
		name: "Voron 2.4 300",
		sub_path: "machine/Voron 2.4 300.json"
	},
	{
		name: "Voron 2.4 350",
		sub_path: "machine/Voron 2.4 350.json"
	},
	{
		name: "Voron Trident 250",
		sub_path: "machine/Voron Trident 250.json"
	},
	{
		name: "Voron Trident 300",
		sub_path: "machine/Voron Trident 300.json"
	},
	{
		name: "Voron Trident 350",
		sub_path: "machine/Voron Trident 350.json"
	},
	{
		name: "Voron 0.1",
		sub_path: "machine/Voron 0.1.json"
	}
];
var process_list$a = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_voron_common",
		sub_path: "process/fdm_process_voron_common.json"
	},
	{
		name: "0.08mm Extra Fine @Voron",
		sub_path: "process/0.08mm Extra Fine @Voron.json"
	},
	{
		name: "0.12mm Fine @Voron",
		sub_path: "process/0.12mm Fine @Voron.json"
	},
	{
		name: "0.15mm Optimal @Voron",
		sub_path: "process/0.15mm Optimal @Voron.json"
	},
	{
		name: "0.20mm Standard @Voron",
		sub_path: "process/0.20mm Standard @Voron.json"
	},
	{
		name: "0.24mm Draft @Voron",
		sub_path: "process/0.24mm Draft @Voron.json"
	},
	{
		name: "0.28mm Extra Draft @Voron",
		sub_path: "process/0.28mm Extra Draft @Voron.json"
	}
];
var filament_list$a = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Voron",
		sub_path: "filament/Generic ABS @Voron.json"
	},
	{
		name: "Generic ASA @Voron",
		sub_path: "filament/Generic ASA @Voron.json"
	},
	{
		name: "Generic PA @Voron",
		sub_path: "filament/Generic PA @Voron.json"
	},
	{
		name: "Generic PA-CF @Voron",
		sub_path: "filament/Generic PA-CF @Voron.json"
	},
	{
		name: "Generic PC @Voron",
		sub_path: "filament/Generic PC @Voron.json"
	},
	{
		name: "Generic PETG @Voron",
		sub_path: "filament/Generic PETG @Voron.json"
	},
	{
		name: "Generic PLA @Voron",
		sub_path: "filament/Generic PLA @Voron.json"
	},
	{
		name: "Generic PLA-CF @Voron",
		sub_path: "filament/Generic PLA-CF @Voron.json"
	},
	{
		name: "Generic PVA @Voron",
		sub_path: "filament/Generic PVA @Voron.json"
	},
	{
		name: "Generic TPU @Voron",
		sub_path: "filament/Generic TPU @Voron.json"
	}
];
var machine_list$a = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_klipper_common",
		sub_path: "machine/fdm_klipper_common.json"
	},
	{
		name: "Voron 2.4 250 0.4 nozzle",
		sub_path: "machine/Voron 2.4 250 0.4 nozzle.json"
	},
	{
		name: "Voron 2.4 300 0.4 nozzle",
		sub_path: "machine/Voron 2.4 300 0.4 nozzle.json"
	},
	{
		name: "Voron 2.4 350 0.4 nozzle",
		sub_path: "machine/Voron 2.4 350 0.4 nozzle.json"
	},
	{
		name: "Voron Trident 250 0.4 nozzle",
		sub_path: "machine/Voron Trident 250 0.4 nozzle.json"
	},
	{
		name: "Voron Trident 300 0.4 nozzle",
		sub_path: "machine/Voron Trident 300 0.4 nozzle.json"
	},
	{
		name: "Voron Trident 350 0.4 nozzle",
		sub_path: "machine/Voron Trident 350 0.4 nozzle.json"
	},
	{
		name: "Voron 0.1 0.4 nozzle",
		sub_path: "machine/Voron 0.1 0.4 nozzle.json"
	}
];
var Voron = {
	name: name$a,
	version: version$a,
	force_update: force_update$a,
	description: description$a,
	machine_model_list: machine_model_list$a,
	process_list: process_list$a,
	filament_list: filament_list$a,
	machine_list: machine_list$a
};

var name$9 = "Vivedino";
var version$9 = "01.10.00.01";
var force_update$9 = "0";
var description$9 = "Vivedino configurations";
var machine_model_list$9 = [
	{
		name: "Troodon 2.0 - RRF",
		sub_path: "machine/Troodon2RRF.json"
	},
	{
		name: "Troodon 2.0 - Klipper",
		sub_path: "machine/Troodon2Klipper.json"
	}
];
var process_list$9 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_klipper_common",
		sub_path: "process/fdm_process_klipper_common.json"
	},
	{
		name: "0.08mm Extra Fine @Troodon2",
		sub_path: "process/0.08mm Extra Fine @Troodon2.json"
	},
	{
		name: "0.12mm Fine @Troodon2",
		sub_path: "process/0.12mm Fine @Troodon2.json"
	},
	{
		name: "0.15mm Optimal @Troodon2",
		sub_path: "process/0.15mm Optimal @Troodon2.json"
	},
	{
		name: "0.20mm Standard @Troodon2",
		sub_path: "process/0.20mm Standard @Troodon2.json"
	},
	{
		name: "0.24mm Draft @Troodon2",
		sub_path: "process/0.24mm Draft @Troodon2.json"
	},
	{
		name: "0.28mm Extra Draft @Troodon2",
		sub_path: "process/0.28mm Extra Draft @Troodon2.json"
	}
];
var filament_list$9 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "Generic PLA @Troodon",
		sub_path: "filament/Generic PLA @Troodon.json"
	},
	{
		name: "Generic PLA-CF @Troodon",
		sub_path: "filament/Generic PLA-CF @Troodon.json"
	},
	{
		name: "Generic TPU @Troodon",
		sub_path: "filament/Generic TPU @Troodon.json"
	},
	{
		name: "Generic PETG @Troodon",
		sub_path: "filament/Generic PETG @Troodon.json"
	},
	{
		name: "Generic ABS @Troodon",
		sub_path: "filament/Generic ABS @Troodon.json"
	},
	{
		name: "Generic PC @Troodon",
		sub_path: "filament/Generic PC @Troodon.json"
	},
	{
		name: "Generic ASA @Troodon",
		sub_path: "filament/Generic ASA @Troodon.json"
	},
	{
		name: "Generic PVA @Troodon",
		sub_path: "filament/Generic PVA @Troodon.json"
	},
	{
		name: "Generic PA @Troodon",
		sub_path: "filament/Generic PA @Troodon.json"
	},
	{
		name: "Generic PA-CF @Troodon",
		sub_path: "filament/Generic PA-CF @Troodon.json"
	}
];
var machine_list$9 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_klipper_common",
		sub_path: "machine/fdm_klipper_common.json"
	},
	{
		name: "fdm_rrf_common",
		sub_path: "machine/fdm_rrf_common.json"
	},
	{
		name: "Troodon 2.0 Klipper 0.4 nozzle",
		sub_path: "machine/Troodon 2.0 Klipper 0.4 nozzle.json"
	},
	{
		name: "Troodon 2.0 RRF 0.4 nozzle",
		sub_path: "machine/Troodon 2.0 RRF 0.4 nozzle.json"
	}
];
var Vivedino = {
	name: name$9,
	version: version$9,
	force_update: force_update$9,
	description: description$9,
	machine_model_list: machine_model_list$9,
	process_list: process_list$9,
	filament_list: filament_list$9,
	machine_list: machine_list$9
};

var name$8 = "Tronxy";
var version$8 = "01.10.00.01";
var force_update$8 = "0";
var description$8 = "Tronxy configurations";
var machine_model_list$8 = [
	{
		name: "Tronxy X5SA 400 Marlin Firmware",
		sub_path: "machine/Tronxy X5SA 400 Marlin Firmware.json"
	}
];
var process_list$8 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "0.08mm Extra Fine @Tronxy",
		sub_path: "process/0.08mm Extra Fine @Tronxy.json"
	},
	{
		name: "0.12mm Fine @Tronxy",
		sub_path: "process/0.12mm Fine @Tronxy.json"
	},
	{
		name: "0.15mm Optimal @Tronxy",
		sub_path: "process/0.15mm Optimal @Tronxy.json"
	},
	{
		name: "0.20mm Standard @Tronxy",
		sub_path: "process/0.20mm Standard @Tronxy.json"
	},
	{
		name: "0.24mm Draft @Tronxy",
		sub_path: "process/0.24mm Draft @Tronxy.json"
	},
	{
		name: "0.28mm Extra Draft @Tronxy",
		sub_path: "process/0.28mm Extra Draft @Tronxy.json"
	}
];
var filament_list$8 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "Generic PLA @Tronxy",
		sub_path: "filament/Generic PLA @Tronxy.json"
	},
	{
		name: "Generic PLA-CF @Tronxy",
		sub_path: "filament/Generic PLA-CF @Tronxy.json"
	},
	{
		name: "Generic TPU @Tronxy",
		sub_path: "filament/Generic TPU @Tronxy.json"
	},
	{
		name: "Generic PETG @Tronxy",
		sub_path: "filament/Generic PETG @Tronxy.json"
	},
	{
		name: "Generic ABS @Tronxy",
		sub_path: "filament/Generic ABS @Tronxy.json"
	},
	{
		name: "Generic PC @Tronxy",
		sub_path: "filament/Generic PC @Tronxy.json"
	},
	{
		name: "Generic ASA @Tronxy",
		sub_path: "filament/Generic ASA @Tronxy.json"
	},
	{
		name: "Generic PVA @Tronxy",
		sub_path: "filament/Generic PVA @Tronxy.json"
	},
	{
		name: "Generic PA @Tronxy",
		sub_path: "filament/Generic PA @Tronxy.json"
	},
	{
		name: "Generic PA-CF @Tronxy",
		sub_path: "filament/Generic PA-CF @Tronxy.json"
	}
];
var machine_list$8 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "Tronxy X5SA 400 0.4 nozzle",
		sub_path: "machine/Tronxy X5SA 400 0.4 nozzle.json"
	}
];
var Tronxy = {
	name: name$8,
	version: version$8,
	force_update: force_update$8,
	description: description$8,
	machine_model_list: machine_model_list$8,
	process_list: process_list$8,
	filament_list: filament_list$8,
	machine_list: machine_list$8
};

var name$7 = "Qidi";
var version$7 = "01.10.00.02";
var force_update$7 = "0";
var description$7 = "Qidi configurations";
var machine_model_list$7 = [
	{
		name: "Qidi X-Plus 4",
		sub_path: "machine/Qidi X-Plus 4.json"
	},
	{
		name: "Qidi Q1 Pro",
		sub_path: "machine/Qidi Q1 Pro.json"
	},
	{
		name: "Qidi X-Max 3",
		sub_path: "machine/Qidi X-Max 3.json"
	},
	{
		name: "Qidi X-Plus 3",
		sub_path: "machine/Qidi X-Plus 3.json"
	},
	{
		name: "Qidi X-Smart 3",
		sub_path: "machine/Qidi X-Smart 3.json"
	},
	{
		name: "Qidi X-Plus",
		sub_path: "machine/Qidi X-Plus.json"
	},
	{
		name: "Qidi X-Max",
		sub_path: "machine/Qidi X-Max.json"
	},
	{
		name: "Qidi X-CF Pro",
		sub_path: "machine/Qidi X-CF Pro.json"
	}
];
var process_list$7 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_qidi_common",
		sub_path: "process/fdm_process_qidi_common.json"
	},
	{
		name: "fdm_process_qidi_x3_common",
		sub_path: "process/fdm_process_qidi_x3_common.json"
	},
	{
		name: "fdm_process_QIDI_0.06_nozzle_0.2",
		sub_path: "process/fdm_process_QIDI_0.06_nozzle_0.2.json"
	},
	{
		name: "fdm_process_QIDI_0.08_nozzle_0.2",
		sub_path: "process/fdm_process_QIDI_0.08_nozzle_0.2.json"
	},
	{
		name: "fdm_process_QIDI_0.10_nozzle_0.2",
		sub_path: "process/fdm_process_QIDI_0.10_nozzle_0.2.json"
	},
	{
		name: "fdm_process_QIDI_0.12_nozzle_0.2",
		sub_path: "process/fdm_process_QIDI_0.12_nozzle_0.2.json"
	},
	{
		name: "fdm_process_QIDI_0.14_nozzle_0.2",
		sub_path: "process/fdm_process_QIDI_0.14_nozzle_0.2.json"
	},
	{
		name: "fdm_process_QIDI_0.18_nozzle_0.6",
		sub_path: "process/fdm_process_QIDI_0.18_nozzle_0.6.json"
	},
	{
		name: "fdm_process_QIDI_0.24_nozzle_0.6",
		sub_path: "process/fdm_process_QIDI_0.24_nozzle_0.6.json"
	},
	{
		name: "fdm_process_QIDI_0.30_nozzle_0.6",
		sub_path: "process/fdm_process_QIDI_0.30_nozzle_0.6.json"
	},
	{
		name: "fdm_process_QIDI_0.36_nozzle_0.6",
		sub_path: "process/fdm_process_QIDI_0.36_nozzle_0.6.json"
	},
	{
		name: "fdm_process_QIDI_0.42_nozzle_0.6",
		sub_path: "process/fdm_process_QIDI_0.42_nozzle_0.6.json"
	},
	{
		name: "fdm_process_QIDI_0.24_nozzle_0.8",
		sub_path: "process/fdm_process_QIDI_0.24_nozzle_0.8.json"
	},
	{
		name: "fdm_process_QIDI_0.32_nozzle_0.8",
		sub_path: "process/fdm_process_QIDI_0.32_nozzle_0.8.json"
	},
	{
		name: "fdm_process_QIDI_0.40_nozzle_0.8",
		sub_path: "process/fdm_process_QIDI_0.40_nozzle_0.8.json"
	},
	{
		name: "fdm_process_QIDI_0.48_nozzle_0.8",
		sub_path: "process/fdm_process_QIDI_0.48_nozzle_0.8.json"
	},
	{
		name: "fdm_process_QIDI_0.56_nozzle_0.8",
		sub_path: "process/fdm_process_QIDI_0.56_nozzle_0.8.json"
	},
	{
		name: "0.12mm Fine @Qidi X3",
		sub_path: "process/0.12mm Fine @Qidi X3.json"
	},
	{
		name: "0.12mm Fine @Qidi XMPlus",
		sub_path: "process/0.12mm Fine @Qidi XPlus.json"
	},
	{
		name: "0.12mm Fine @Qidi XMax",
		sub_path: "process/0.12mm Fine @Qidi XMax.json"
	},
	{
		name: "0.12mm Fine @Qidi XCFPro",
		sub_path: "process/0.12mm Fine @Qidi XCFPro.json"
	},
	{
		name: "0.12mm Fine @Qidi XSmart3",
		sub_path: "process/0.12mm Fine @Qidi XSmart3.json"
	},
	{
		name: "0.12mm Fine @Qidi XPlus3",
		sub_path: "process/0.12mm Fine @Qidi XPlus3.json"
	},
	{
		name: "0.12mm Fine @Qidi XMax3",
		sub_path: "process/0.12mm Fine @Qidi XMax3.json"
	},
	{
		name: "0.12mm Fine @Qidi Q1 Pro",
		sub_path: "process/0.12mm Fine @Qidi Q1 Pro.json"
	},
	{
		name: "0.12mm Fine @Qidi XPlus4",
		sub_path: "process/0.12mm Fine @Qidi XPlus4.json"
	},
	{
		name: "0.16mm Optimal @Qidi X3",
		sub_path: "process/0.16mm Optimal @Qidi X3.json"
	},
	{
		name: "0.16mm Optimal @Qidi XPlus",
		sub_path: "process/0.16mm Optimal @Qidi XPlus.json"
	},
	{
		name: "0.16mm Optimal @Qidi XMax",
		sub_path: "process/0.16mm Optimal @Qidi XMax.json"
	},
	{
		name: "0.16mm Optimal @Qidi XCFPro",
		sub_path: "process/0.16mm Optimal @Qidi XCFPro.json"
	},
	{
		name: "0.16mm Optimal @Qidi XSmart3",
		sub_path: "process/0.16mm Optimal @Qidi XSmart3.json"
	},
	{
		name: "0.16mm Optimal @Qidi XPlus3",
		sub_path: "process/0.16mm Optimal @Qidi XPlus3.json"
	},
	{
		name: "0.16mm Optimal @Qidi XMax3",
		sub_path: "process/0.16mm Optimal @Qidi XMax3.json"
	},
	{
		name: "0.16mm Optimal @Qidi Q1 Pro",
		sub_path: "process/0.16mm Optimal @Qidi Q1 Pro.json"
	},
	{
		name: "0.16mm Optimal @Qidi XPlus4",
		sub_path: "process/0.16mm Optimal @Qidi XPlus4.json"
	},
	{
		name: "0.20mm Standard @Qidi X3",
		sub_path: "process/0.20mm Standard @Qidi X3.json"
	},
	{
		name: "0.20mm Standard @Qidi XPlus",
		sub_path: "process/0.20mm Standard @Qidi XPlus.json"
	},
	{
		name: "0.20mm Standard @Qidi XMax",
		sub_path: "process/0.20mm Standard @Qidi XMax.json"
	},
	{
		name: "0.20mm Standard @Qidi XCFPro",
		sub_path: "process/0.20mm Standard @Qidi XCFPro.json"
	},
	{
		name: "0.20mm Standard @Qidi XSmart3",
		sub_path: "process/0.20mm Standard @Qidi XSmart3.json"
	},
	{
		name: "0.20mm Standard @Qidi XPlus3",
		sub_path: "process/0.20mm Standard @Qidi XPlus3.json"
	},
	{
		name: "0.20mm Standard @Qidi XMax3",
		sub_path: "process/0.20mm Standard @Qidi XMax3.json"
	},
	{
		name: "0.20mm Standard @Qidi Q1 Pro",
		sub_path: "process/0.20mm Standard @Qidi Q1 Pro.json"
	},
	{
		name: "0.20mm Standard @Qidi XPlus4",
		sub_path: "process/0.20mm Standard @Qidi XPlus4.json"
	},
	{
		name: "0.24mm Draft @Qidi X3",
		sub_path: "process/0.24mm Draft @Qidi X3.json"
	},
	{
		name: "0.25mm Draft @Qidi XPlus",
		sub_path: "process/0.25mm Draft @Qidi XPlus.json"
	},
	{
		name: "0.25mm Draft @Qidi XMax",
		sub_path: "process/0.25mm Draft @Qidi XMax.json"
	},
	{
		name: "0.25mm Draft @Qidi XCFPro",
		sub_path: "process/0.25mm Draft @Qidi XCFPro.json"
	},
	{
		name: "0.24mm Draft @Qidi XSmart3",
		sub_path: "process/0.24mm Draft @Qidi XSmart3.json"
	},
	{
		name: "0.24mm Draft @Qidi XPlus3",
		sub_path: "process/0.24mm Draft @Qidi XPlus3.json"
	},
	{
		name: "0.24mm Draft @Qidi XMax3",
		sub_path: "process/0.24mm Draft @Qidi XMax3.json"
	},
	{
		name: "0.24mm Draft @Qidi Q1 Pro",
		sub_path: "process/0.24mm Draft @Qidi Q1 Pro.json"
	},
	{
		name: "0.24mm Draft @Qidi XPlus4",
		sub_path: "process/0.24mm Draft @Qidi XPlus4.json"
	},
	{
		name: "0.28mm Extra Draft @Qidi X3",
		sub_path: "process/0.28mm Extra Draft @Qidi X3.json"
	},
	{
		name: "0.30mm Extra Draft @Qidi XPlus",
		sub_path: "process/0.30mm Extra Draft @Qidi XPlus.json"
	},
	{
		name: "0.30mm Extra Draft @Qidi XMax",
		sub_path: "process/0.30mm Extra Draft @Qidi XMax.json"
	},
	{
		name: "0.30mm Extra Draft @Qidi XCFPro",
		sub_path: "process/0.30mm Extra Draft @Qidi XCFPro.json"
	},
	{
		name: "0.28mm Extra Draft @Qidi XSmart3",
		sub_path: "process/0.28mm Extra Draft @Qidi XSmart3.json"
	},
	{
		name: "0.28mm Extra Draft @Qidi XPlus3",
		sub_path: "process/0.28mm Extra Draft @Qidi XPlus3.json"
	},
	{
		name: "0.28mm Extra Draft @Qidi XMax3",
		sub_path: "process/0.28mm Extra Draft @Qidi XMax3.json"
	},
	{
		name: "0.28mm Extra Draft @Qidi Q1 Pro",
		sub_path: "process/0.28mm Extra Draft @Qidi Q1 Pro.json"
	},
	{
		name: "0.28mm Extra Draft @Qidi XPlus4",
		sub_path: "process/0.28mm Extra Draft @Qidi XPlus4.json"
	},
	{
		name: "0.06mm Standard @Qidi XPlus4 0.2 nozzle",
		sub_path: "process/0.06mm Standard @Qidi XPlus4 0.2 nozzle.json"
	},
	{
		name: "0.08mm Standard @Qidi XPlus4 0.2 nozzle",
		sub_path: "process/0.08mm Standard @Qidi XPlus4 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Qidi XPlus4 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Qidi XPlus4 0.2 nozzle.json"
	},
	{
		name: "0.12mm Standard @Qidi XPlus4 0.2 nozzle",
		sub_path: "process/0.12mm Standard @Qidi XPlus4 0.2 nozzle.json"
	},
	{
		name: "0.14mm Standard @Qidi XPlus4 0.2 nozzle",
		sub_path: "process/0.14mm Standard @Qidi XPlus4 0.2 nozzle.json"
	},
	{
		name: "0.06mm Standard @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "process/0.06mm Standard @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "0.08mm Standard @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "process/0.08mm Standard @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "0.12mm Standard @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "process/0.12mm Standard @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "0.14mm Standard @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "process/0.14mm Standard @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "0.06mm Standard @Qidi XMax3 0.2 nozzle",
		sub_path: "process/0.06mm Standard @Qidi XMax3 0.2 nozzle.json"
	},
	{
		name: "0.08mm Standard @Qidi XMax3 0.2 nozzle",
		sub_path: "process/0.08mm Standard @Qidi XMax3 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Qidi XMax3 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Qidi XMax3 0.2 nozzle.json"
	},
	{
		name: "0.12mm Standard @Qidi XMax3 0.2 nozzle",
		sub_path: "process/0.12mm Standard @Qidi XMax3 0.2 nozzle.json"
	},
	{
		name: "0.14mm Standard @Qidi XMax3 0.2 nozzle",
		sub_path: "process/0.14mm Standard @Qidi XMax3 0.2 nozzle.json"
	},
	{
		name: "0.06mm Standard @Qidi XPlus3 0.2 nozzle",
		sub_path: "process/0.06mm Standard @Qidi XPlus3 0.2 nozzle.json"
	},
	{
		name: "0.08mm Standard @Qidi XPlus3 0.2 nozzle",
		sub_path: "process/0.08mm Standard @Qidi XPlus3 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Qidi XPlus3 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Qidi XPlus3 0.2 nozzle.json"
	},
	{
		name: "0.12mm Standard @Qidi XPlus3 0.2 nozzle",
		sub_path: "process/0.12mm Standard @Qidi XPlus3 0.2 nozzle.json"
	},
	{
		name: "0.14mm Standard @Qidi XPlus3 0.2 nozzle",
		sub_path: "process/0.14mm Standard @Qidi XPlus3 0.2 nozzle.json"
	},
	{
		name: "0.06mm Standard @Qidi XSmart3 0.2 nozzle",
		sub_path: "process/0.06mm Standard @Qidi XSmart3 0.2 nozzle.json"
	},
	{
		name: "0.08mm Standard @Qidi XSmart3 0.2 nozzle",
		sub_path: "process/0.08mm Standard @Qidi XSmart3 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Qidi XSmart3 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Qidi XSmart3 0.2 nozzle.json"
	},
	{
		name: "0.12mm Standard @Qidi XSmart3 0.2 nozzle",
		sub_path: "process/0.12mm Standard @Qidi XSmart3 0.2 nozzle.json"
	},
	{
		name: "0.14mm Standard @Qidi XSmart3 0.2 nozzle",
		sub_path: "process/0.14mm Standard @Qidi XSmart3 0.2 nozzle.json"
	},
	{
		name: "0.18mm Standard @Qidi XPlus4 0.6 nozzle",
		sub_path: "process/0.18mm Standard @Qidi XPlus4 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XPlus4 0.6 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XPlus4 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Qidi XPlus4 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Qidi XPlus4 0.6 nozzle.json"
	},
	{
		name: "0.36mm Standard @Qidi XPlus4 0.6 nozzle",
		sub_path: "process/0.36mm Standard @Qidi XPlus4 0.6 nozzle.json"
	},
	{
		name: "0.42mm Standard @Qidi XPlus4 0.6 nozzle",
		sub_path: "process/0.42mm Standard @Qidi XPlus4 0.6 nozzle.json"
	},
	{
		name: "0.18mm Standard @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "process/0.18mm Standard @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "process/0.24mm Standard @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "0.36mm Standard @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "process/0.36mm Standard @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "0.42mm Standard @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "process/0.42mm Standard @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "0.18mm Standard @Qidi XMax3 0.6 nozzle",
		sub_path: "process/0.18mm Standard @Qidi XMax3 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XMax3 0.6 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XMax3 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Qidi XMax3 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Qidi XMax3 0.6 nozzle.json"
	},
	{
		name: "0.36mm Standard @Qidi XMax3 0.6 nozzle",
		sub_path: "process/0.36mm Standard @Qidi XMax3 0.6 nozzle.json"
	},
	{
		name: "0.42mm Standard @Qidi XMax3 0.6 nozzle",
		sub_path: "process/0.42mm Standard @Qidi XMax3 0.6 nozzle.json"
	},
	{
		name: "0.18mm Standard @Qidi XPlus3 0.6 nozzle",
		sub_path: "process/0.18mm Standard @Qidi XPlus3 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XPlus3 0.6 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XPlus3 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Qidi XPlus3 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Qidi XPlus3 0.6 nozzle.json"
	},
	{
		name: "0.36mm Standard @Qidi XPlus3 0.6 nozzle",
		sub_path: "process/0.36mm Standard @Qidi XPlus3 0.6 nozzle.json"
	},
	{
		name: "0.42mm Standard @Qidi XPlus3 0.6 nozzle",
		sub_path: "process/0.42mm Standard @Qidi XPlus3 0.6 nozzle.json"
	},
	{
		name: "0.18mm Standard @Qidi XSmart3 0.6 nozzle",
		sub_path: "process/0.18mm Standard @Qidi XSmart3 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XSmart3 0.6 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XSmart3 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Qidi XSmart3 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Qidi XSmart3 0.6 nozzle.json"
	},
	{
		name: "0.36mm Standard @Qidi XSmart3 0.6 nozzle",
		sub_path: "process/0.36mm Standard @Qidi XSmart3 0.6 nozzle.json"
	},
	{
		name: "0.42mm Standard @Qidi XSmart3 0.6 nozzle",
		sub_path: "process/0.42mm Standard @Qidi XSmart3 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XPlus4 0.8 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XPlus4 0.8 nozzle.json"
	},
	{
		name: "0.32mm Standard @Qidi XPlus4 0.8 nozzle",
		sub_path: "process/0.32mm Standard @Qidi XPlus4 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Qidi XPlus4 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Qidi XPlus4 0.8 nozzle.json"
	},
	{
		name: "0.48mm Standard @Qidi XPlus4 0.8 nozzle",
		sub_path: "process/0.48mm Standard @Qidi XPlus4 0.8 nozzle.json"
	},
	{
		name: "0.56mm Standard @Qidi XPlus4 0.8 nozzle",
		sub_path: "process/0.56mm Standard @Qidi XPlus4 0.8 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "process/0.24mm Standard @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "0.32mm Standard @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "process/0.32mm Standard @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "0.48mm Standard @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "process/0.48mm Standard @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "0.56mm Standard @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "process/0.56mm Standard @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XMax3 0.8 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XMax3 0.8 nozzle.json"
	},
	{
		name: "0.32mm Standard @Qidi XMax3 0.8 nozzle",
		sub_path: "process/0.32mm Standard @Qidi XMax3 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Qidi XMax3 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Qidi XMax3 0.8 nozzle.json"
	},
	{
		name: "0.48mm Standard @Qidi XMax3 0.8 nozzle",
		sub_path: "process/0.48mm Standard @Qidi XMax3 0.8 nozzle.json"
	},
	{
		name: "0.56mm Standard @Qidi XMax3 0.8 nozzle",
		sub_path: "process/0.56mm Standard @Qidi XMax3 0.8 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XPlus3 0.8 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XPlus3 0.8 nozzle.json"
	},
	{
		name: "0.32mm Standard @Qidi XPlus3 0.8 nozzle",
		sub_path: "process/0.32mm Standard @Qidi XPlus3 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Qidi XPlus3 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Qidi XPlus3 0.8 nozzle.json"
	},
	{
		name: "0.48mm Standard @Qidi XPlus3 0.8 nozzle",
		sub_path: "process/0.48mm Standard @Qidi XPlus3 0.8 nozzle.json"
	},
	{
		name: "0.56mm Standard @Qidi XPlus3 0.8 nozzle",
		sub_path: "process/0.56mm Standard @Qidi XPlus3 0.8 nozzle.json"
	},
	{
		name: "0.24mm Standard @Qidi XSmart3 0.8 nozzle",
		sub_path: "process/0.24mm Standard @Qidi XSmart3 0.8 nozzle.json"
	},
	{
		name: "0.32mm Standard @Qidi XSmart3 0.8 nozzle",
		sub_path: "process/0.32mm Standard @Qidi XSmart3 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Qidi XSmart3 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Qidi XSmart3 0.8 nozzle.json"
	},
	{
		name: "0.48mm Standard @Qidi XSmart3 0.8 nozzle",
		sub_path: "process/0.48mm Standard @Qidi XSmart3 0.8 nozzle.json"
	},
	{
		name: "0.56mm Standard @Qidi XSmart3 0.8 nozzle",
		sub_path: "process/0.56mm Standard @Qidi XSmart3 0.8 nozzle.json"
	}
];
var filament_list$7 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Qidi",
		sub_path: "filament/Generic ABS @Qidi.json"
	},
	{
		name: "Generic ABS @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/Generic ABS @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/Generic ABS @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/Generic ABS @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/Generic ABS @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi 0.2 nozzle",
		sub_path: "filament/Generic ABS @Qidi 0.2 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi 0.6 nozzle",
		sub_path: "filament/Generic ABS @Qidi 0.6 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi 0.8 nozzle",
		sub_path: "filament/Generic ABS @Qidi 0.8 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/Generic ABS @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/Generic ABS @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/Generic ABS @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "Generic ABS @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/Generic ABS @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi",
		sub_path: "filament/Generic PETG @Qidi.json"
	},
	{
		name: "Generic PETG @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/Generic PETG @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/Generic PETG @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/Generic PETG @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/Generic PETG @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi 0.2 nozzle",
		sub_path: "filament/Generic PETG @Qidi 0.2 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/Generic PETG @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/Generic PETG @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/Generic PETG @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "Generic PETG @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/Generic PETG @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi",
		sub_path: "filament/Generic PLA @Qidi.json"
	},
	{
		name: "Generic PLA @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/Generic PLA @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/Generic PLA @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/Generic PLA @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/Generic PLA @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi 0.2 nozzle",
		sub_path: "filament/Generic PLA @Qidi 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi 0.6 nozzle",
		sub_path: "filament/Generic PLA @Qidi 0.6 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi 0.8 nozzle",
		sub_path: "filament/Generic PLA @Qidi 0.8 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/Generic PLA @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/Generic PLA @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/Generic PLA @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "Generic PLA @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/Generic PLA @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi",
		sub_path: "filament/QIDI ABS Odorless @Qidi.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Odorless @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI ABS Odorless @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi",
		sub_path: "filament/QIDI ABS Rapido @Qidi.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI ABS Rapido @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido Metal @Qidi",
		sub_path: "filament/QIDI ABS Rapido Metal @Qidi.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 ABS Rapido Metal @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI ABS Rapido Metal @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido Metal @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI ABS Rapido Metal @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS Rapido Metal @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI ABS Rapido Metal @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS-GF25 @Qidi",
		sub_path: "filament/QIDI ABS-GF25 @Qidi.json"
	},
	{
		name: "QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi",
		sub_path: "filament/QIDI ASA @Qidi.json"
	},
	{
		name: "QIDI ASA @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/QIDI ASA @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ASA @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI ASA @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI ASA @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/QIDI ASA @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI ASA @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI ASA @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI ASA @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI ASA @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI ASA @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI ASA @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI ASA @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI ASA-Aero @Qidi",
		sub_path: "filament/QIDI ASA-Aero @Qidi.json"
	},
	{
		name: "QIDI ASA-Aero @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ASA-Aero @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ASA-Aero @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI ASA-Aero @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi",
		sub_path: "filament/QIDI PAHT-CF @Qidi.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PAHT-CF @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PAHT-CF @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PAHT-CF @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PAHT-CF @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PAHT-CF @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PAHT-CF @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PAHT-CF @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI PET-CF @Qidi",
		sub_path: "filament/QIDI PET-CF @Qidi.json"
	},
	{
		name: "QIDI PET-CF @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PET-CF @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PET-CF @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PET-CF @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PET-CF @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PET-CF @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PET-CF @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PET-CF @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PET-CF @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PET-CF @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PET-CF @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PET-CF @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi",
		sub_path: "filament/QIDI PETG Tough @Qidi.json"
	},
	{
		name: "QIDI PETG Tough @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi",
		sub_path: "filament/QIDI PLA Rapido @Qidi.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Metal @Qidi",
		sub_path: "filament/QIDI PLA Rapido Metal @Qidi.json"
	},
	{
		name: "QIDI PLA Rapido Metal @Qidi 0.2 nozzle",
		sub_path: "filament/QIDI PLA Rapido Metal @Qidi 0.2 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Metal @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido Metal @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA Rapido Metal @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI PLA Rapido Metal @Qidi 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 @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 Silk @Qidi",
		sub_path: "filament/QIDI PLA Rapido Silk @Qidi.json"
	},
	{
		name: "QIDI PLA Rapido Silk @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI PLA Rapido Silk @Qidi 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"
	},
	{
		name: "QIDI PLA-CF @Qidi",
		sub_path: "filament/QIDI PLA-CF @Qidi.json"
	},
	{
		name: "QIDI PLA-CF @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI PLA-CF @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI PLA-CF @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi",
		sub_path: "filament/QIDI PA-Ultra @Qidi.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PA-Ultra @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PA-Ultra @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI PA-Ultra @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PA-Ultra @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PA-Ultra @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PA-Ultra @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PA-Ultra @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS-GF10 @Qidi",
		sub_path: "filament/QIDI ABS-GF10 @Qidi.json"
	},
	{
		name: "QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Generic TPU @Qidi",
		sub_path: "filament/Generic TPU @Qidi.json"
	},
	{
		name: "Generic TPU @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/Generic TPU @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi",
		sub_path: "filament/Generic ASA @Qidi.json"
	},
	{
		name: "Generic ASA @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/Generic ASA @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/Generic ASA @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/Generic ASA @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/Generic ASA @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi 0.2 nozzle",
		sub_path: "filament/Generic ASA @Qidi 0.2 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/Generic ASA @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/Generic ASA @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/Generic ASA @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "Generic ASA @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/Generic ASA @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "Generic PA @Qidi",
		sub_path: "filament/Generic PA @Qidi.json"
	},
	{
		name: "Generic PA-CF @Qidi",
		sub_path: "filament/Generic PA-CF @Qidi.json"
	},
	{
		name: "Generic PC @Qidi",
		sub_path: "filament/Generic PC @Qidi.json"
	},
	{
		name: "Generic PETG-CF @Qidi",
		sub_path: "filament/Generic PETG-CF @Qidi.json"
	},
	{
		name: "Generic PLA Silk @Qidi",
		sub_path: "filament/Generic PLA Silk @Qidi.json"
	},
	{
		name: "Generic PLA Silk @Qidi 0.2 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi 0.2 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi 0.4 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi 0.4 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi 0.6 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi 0.6 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi 0.8 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi 0.8 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi Q1 Pro 0.2 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi X-Plus 4 0.2 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi X-Plus 4 0.2 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "Generic PLA Silk @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/Generic PLA Silk @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "Generic PVA @Qidi",
		sub_path: "filament/Generic PVA @Qidi.json"
	},
	{
		name: "QIDI ABS-GF @Qidi",
		sub_path: "filament/QIDI ABS-GF @Qidi.json"
	},
	{
		name: "QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "Generic PLA-CF @Qidi",
		sub_path: "filament/Generic PLA-CF @Qidi.json"
	},
	{
		name: "QIDI TPU 95A-HF @Qidi",
		sub_path: "filament/QIDI TPU 95A-HF @Qidi.json"
	},
	{
		name: "QIDI TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI TPU 95A-HF @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI TPU 95A-HF @Qidi Q1 Pro 0.8 nozzle",
		sub_path: "filament/QIDI TPU 95A-HF @Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "QIDI PPS-CF @Qidi",
		sub_path: "filament/QIDI PPS-CF @Qidi.json"
	},
	{
		name: "QIDI PPS-CF @Qidi 0.6 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi 0.6 nozzle.json"
	},
	{
		name: "QIDI PPS-CF @Qidi 0.8 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi 0.8 nozzle.json"
	},
	{
		name: "QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		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 PPS-CF @Qidi X-Plus 4 0.4 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle",
		sub_path: "filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json"
	}
];
var machine_list$7 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_qidi_common",
		sub_path: "machine/fdm_qidi_common.json"
	},
	{
		name: "fdm_qidi_x3_common",
		sub_path: "machine/fdm_qidi_x3_common.json"
	},
	{
		name: "Qidi X-Plus 0.4 nozzle",
		sub_path: "machine/Qidi X-Plus 0.4 nozzle.json"
	},
	{
		name: "Qidi X-Max 0.4 nozzle",
		sub_path: "machine/Qidi X-Max 0.4 nozzle.json"
	},
	{
		name: "Qidi X-CF Pro 0.4 nozzle",
		sub_path: "machine/Qidi X-CF Pro 0.4 nozzle.json"
	},
	{
		name: "Qidi X-Smart 3 0.4 nozzle",
		sub_path: "machine/Qidi X-Smart 3 0.4 nozzle.json"
	},
	{
		name: "Qidi X-Plus 3 0.4 nozzle",
		sub_path: "machine/Qidi X-Plus 3 0.4 nozzle.json"
	},
	{
		name: "Qidi X-Max 3 0.4 nozzle",
		sub_path: "machine/Qidi X-Max 3 0.4 nozzle.json"
	},
	{
		name: "Qidi Q1 Pro 0.4 nozzle",
		sub_path: "machine/Qidi Q1 Pro 0.4 nozzle.json"
	},
	{
		name: "Qidi X-Plus 4 0.4 nozzle",
		sub_path: "machine/Qidi X-Plus 4 0.4 nozzle.json"
	},
	{
		name: "Qidi X-Smart 3 0.6 nozzle",
		sub_path: "machine/Qidi X-Smart 3 0.6 nozzle.json"
	},
	{
		name: "Qidi X-Plus 3 0.6 nozzle",
		sub_path: "machine/Qidi X-Plus 3 0.6 nozzle.json"
	},
	{
		name: "Qidi X-Max 3 0.6 nozzle",
		sub_path: "machine/Qidi X-Max 3 0.6 nozzle.json"
	},
	{
		name: "Qidi Q1 Pro 0.6 nozzle",
		sub_path: "machine/Qidi Q1 Pro 0.6 nozzle.json"
	},
	{
		name: "Qidi X-Plus 4 0.6 nozzle",
		sub_path: "machine/Qidi X-Plus 4 0.6 nozzle.json"
	},
	{
		name: "Qidi X-Smart 3 0.8 nozzle",
		sub_path: "machine/Qidi X-Smart 3 0.8 nozzle.json"
	},
	{
		name: "Qidi X-Plus 3 0.8 nozzle",
		sub_path: "machine/Qidi X-Plus 3 0.8 nozzle.json"
	},
	{
		name: "Qidi X-Max 3 0.8 nozzle",
		sub_path: "machine/Qidi X-Max 3 0.8 nozzle.json"
	},
	{
		name: "Qidi Q1 Pro 0.8 nozzle",
		sub_path: "machine/Qidi Q1 Pro 0.8 nozzle.json"
	},
	{
		name: "Qidi X-Plus 4 0.8 nozzle",
		sub_path: "machine/Qidi X-Plus 4 0.8 nozzle.json"
	},
	{
		name: "Qidi X-Smart 3 0.2 nozzle",
		sub_path: "machine/Qidi X-Smart 3 0.2 nozzle.json"
	},
	{
		name: "Qidi X-Plus 3 0.2 nozzle",
		sub_path: "machine/Qidi X-Plus 3 0.2 nozzle.json"
	},
	{
		name: "Qidi X-Max 3 0.2 nozzle",
		sub_path: "machine/Qidi X-Max 3 0.2 nozzle.json"
	},
	{
		name: "Qidi Q1 Pro 0.2 nozzle",
		sub_path: "machine/Qidi Q1 Pro 0.2 nozzle.json"
	},
	{
		name: "Qidi X-Plus 4 0.2 nozzle",
		sub_path: "machine/Qidi X-Plus 4 0.2 nozzle.json"
	}
];
var Qidi = {
	name: name$7,
	version: version$7,
	force_update: force_update$7,
	description: description$7,
	machine_model_list: machine_model_list$7,
	process_list: process_list$7,
	filament_list: filament_list$7,
	machine_list: machine_list$7
};

var name$6 = "Prusa";
var version$6 = "01.10.00.01";
var force_update$6 = "0";
var description$6 = "Prusa configurations";
var machine_model_list$6 = [
	{
		name: "Prusa MK3S",
		sub_path: "machine/Prusa MK3S.json"
	},
	{
		name: "Prusa MINI",
		sub_path: "machine/Prusa MINI.json"
	}
];
var process_list$6 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "0.20mm Standard @MK3S",
		sub_path: "process/0.20mm Standard @MK3S.json"
	},
	{
		name: "0.20mm Standard @MINI",
		sub_path: "process/0.20mm Standard @MINI.json"
	}
];
var filament_list$6 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Prusa",
		sub_path: "filament/Generic ABS @Prusa.json"
	},
	{
		name: "Generic ASA @Prusa",
		sub_path: "filament/Generic ASA @Prusa.json"
	},
	{
		name: "Generic PA @Prusa",
		sub_path: "filament/Generic PA @Prusa.json"
	},
	{
		name: "Generic PA-CF @Prusa",
		sub_path: "filament/Generic PA-CF @Prusa.json"
	},
	{
		name: "Generic PC @Prusa",
		sub_path: "filament/Generic PC @Prusa.json"
	},
	{
		name: "Generic PETG @Prusa",
		sub_path: "filament/Generic PETG @Prusa.json"
	},
	{
		name: "Generic PLA @Prusa",
		sub_path: "filament/Generic PLA @Prusa.json"
	},
	{
		name: "Generic PLA-CF @Prusa",
		sub_path: "filament/Generic PLA-CF @Prusa.json"
	},
	{
		name: "Generic PVA @Prusa",
		sub_path: "filament/Generic PVA @Prusa.json"
	},
	{
		name: "Generic TPU @Prusa",
		sub_path: "filament/Generic TPU @Prusa.json"
	}
];
var machine_list$6 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "Prusa MK3S 0.4 nozzle",
		sub_path: "machine/Prusa MK3S 0.4 nozzle.json"
	},
	{
		name: "Prusa MINI 0.4 nozzle",
		sub_path: "machine/Prusa MINI 0.4 nozzle.json"
	}
];
var Prusa = {
	name: name$6,
	version: version$6,
	force_update: force_update$6,
	description: description$6,
	machine_model_list: machine_model_list$6,
	process_list: process_list$6,
	filament_list: filament_list$6,
	machine_list: machine_list$6
};

var name$5 = "Geeetech";
var version$5 = "01.10.00.01";
var force_update$5 = "0";
var description$5 = "Geeetech configurations";
var machine_model_list$5 = [
	{
		name: "Geeetech Thunder",
		sub_path: "machine/Geeetech Thunder.json"
	},
	{
		name: "Geeetech Mizar M",
		sub_path: "machine/Geeetech Mizar M.json"
	},
	{
		name: "Geeetech Mizar S",
		sub_path: "machine/Geeetech Mizar S.json"
	},
	{
		name: "Geeetech Mizar Pro",
		sub_path: "machine/Geeetech Mizar Pro.json"
	},
	{
		name: "Geeetech Mizar Max",
		sub_path: "machine/Geeetech Mizar Max.json"
	},
	{
		name: "Geeetech Mizar",
		sub_path: "machine/Geeetech Mizar.json"
	},
	{
		name: "Geeetech A10 Pro",
		sub_path: "machine/Geeetech A10 Pro.json"
	},
	{
		name: "Geeetech A10 M",
		sub_path: "machine/Geeetech A10 M.json"
	},
	{
		name: "Geeetech A10 T",
		sub_path: "machine/Geeetech A10 T.json"
	},
	{
		name: "Geeetech A20",
		sub_path: "machine/Geeetech A20.json"
	},
	{
		name: "Geeetech A20 M",
		sub_path: "machine/Geeetech A20 M.json"
	},
	{
		name: "Geeetech A20 T",
		sub_path: "machine/Geeetech A20 T.json"
	},
	{
		name: "Geeetech A30 Pro",
		sub_path: "machine/Geeetech A30 Pro.json"
	},
	{
		name: "Geeetech A30 M",
		sub_path: "machine/Geeetech A30 M.json"
	},
	{
		name: "Geeetech A30 T",
		sub_path: "machine/Geeetech A30 T.json"
	},
	{
		name: "Geeetech M1",
		sub_path: "machine/Geeetech M1.json"
	}
];
var process_list$5 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_geeetech_common",
		sub_path: "process/fdm_process_geeetech_common.json"
	},
	{
		name: "fdm_process_Geeetech_HS",
		sub_path: "process/fdm_process_Geeetech_HS.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.08",
		sub_path: "process/fdm_process_Geeetech_HS_0.08.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.08_nozzle_0.2",
		sub_path: "process/fdm_process_Geeetech_HS_0.08_nozzle_0.2.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.10",
		sub_path: "process/fdm_process_Geeetech_HS_0.10.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.10_nozzle_0.2",
		sub_path: "process/fdm_process_Geeetech_HS_0.10_nozzle_0.2.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.12_nozzle_0.2",
		sub_path: "process/fdm_process_Geeetech_HS_0.12_nozzle_0.2.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.14_nozzle_0.2",
		sub_path: "process/fdm_process_Geeetech_HS_0.14_nozzle_0.2.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.16",
		sub_path: "process/fdm_process_Geeetech_HS_0.16.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.20",
		sub_path: "process/fdm_process_Geeetech_HS_0.20.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.24_nozzle_0.6",
		sub_path: "process/fdm_process_Geeetech_HS_0.24_nozzle_0.6.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.30_nozzle_0.6",
		sub_path: "process/fdm_process_Geeetech_HS_0.30_nozzle_0.6.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.25",
		sub_path: "process/fdm_process_Geeetech_HS_0.25.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.36_nozzle_0.6",
		sub_path: "process/fdm_process_Geeetech_HS_0.36_nozzle_0.6.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.36_nozzle_0.8",
		sub_path: "process/fdm_process_Geeetech_HS_0.36_nozzle_0.8.json"
	},
	{
		name: "fdm_process_Geeetech_HS_0.44_nozzle_0.8",
		sub_path: "process/fdm_process_Geeetech_HS_0.44_nozzle_0.8.json"
	},
	{
		name: "fdm_process_geeetech_0.06_nozzle_0.2",
		sub_path: "process/fdm_process_geeetech_0.06_nozzle_0.2.json"
	},
	{
		name: "fdm_process_geeetech_0.08",
		sub_path: "process/fdm_process_geeetech_0.08.json"
	},
	{
		name: "fdm_process_geeetech_0.08_nozzle_0.2",
		sub_path: "process/fdm_process_geeetech_0.08_nozzle_0.2.json"
	},
	{
		name: "fdm_process_geeetech_0.10_nozzle_0.2",
		sub_path: "process/fdm_process_geeetech_0.10_nozzle_0.2.json"
	},
	{
		name: "fdm_process_geeetech_0.12",
		sub_path: "process/fdm_process_geeetech_0.12.json"
	},
	{
		name: "fdm_process_geeetech_0.12_nozzle_0.2",
		sub_path: "process/fdm_process_geeetech_0.12_nozzle_0.2.json"
	},
	{
		name: "fdm_process_geeetech_0.14_nozzle_0.2",
		sub_path: "process/fdm_process_geeetech_0.14_nozzle_0.2.json"
	},
	{
		name: "fdm_process_geeetech_0.16",
		sub_path: "process/fdm_process_geeetech_0.16.json"
	},
	{
		name: "fdm_process_geeetech_0.18_nozzle_0.6",
		sub_path: "process/fdm_process_geeetech_0.18_nozzle_0.6.json"
	},
	{
		name: "fdm_process_geeetech_0.20",
		sub_path: "process/fdm_process_geeetech_0.20.json"
	},
	{
		name: "fdm_process_geeetech_0.24",
		sub_path: "process/fdm_process_geeetech_0.24.json"
	},
	{
		name: "fdm_process_geeetech_0.24_nozzle_0.6",
		sub_path: "process/fdm_process_geeetech_0.24_nozzle_0.6.json"
	},
	{
		name: "fdm_process_geeetech_0.24_nozzle_0.8",
		sub_path: "process/fdm_process_geeetech_0.24_nozzle_0.8.json"
	},
	{
		name: "fdm_process_geeetech_0.28",
		sub_path: "process/fdm_process_geeetech_0.28.json"
	},
	{
		name: "fdm_process_geeetech_0.30_nozzle_0.6",
		sub_path: "process/fdm_process_geeetech_0.30_nozzle_0.6.json"
	},
	{
		name: "fdm_process_geeetech_0.32_nozzle_0.8",
		sub_path: "process/fdm_process_geeetech_0.32_nozzle_0.8.json"
	},
	{
		name: "fdm_process_geeetech_0.36_nozzle_0.6",
		sub_path: "process/fdm_process_geeetech_0.36_nozzle_0.6.json"
	},
	{
		name: "fdm_process_geeetech_0.40_nozzle_0.8",
		sub_path: "process/fdm_process_geeetech_0.40_nozzle_0.8.json"
	},
	{
		name: "fdm_process_geeetech_0.42_nozzle_0.6",
		sub_path: "process/fdm_process_geeetech_0.42_nozzle_0.6.json"
	},
	{
		name: "fdm_process_geeetech_0.48_nozzle_0.8",
		sub_path: "process/fdm_process_geeetech_0.48_nozzle_0.8.json"
	},
	{
		name: "fdm_process_geeetech_0.56_nozzle_0.8",
		sub_path: "process/fdm_process_geeetech_0.56_nozzle_0.8.json"
	},
	{
		name: "0.06mm Fine @Geeetech common 0.2 nozzle",
		sub_path: "process/0.06mm Fine @Geeetech common 0.2 nozzle.json"
	},
	{
		name: "0.08mm Extra Fine @Geeetech common",
		sub_path: "process/0.08mm Extra Fine @Geeetech common.json"
	},
	{
		name: "0.08mm Extra Fine @Geeetech Thunder",
		sub_path: "process/0.08mm Extra Fine @Geeetech Thunder.json"
	},
	{
		name: "0.08mm Optimal @Geeetech common 0.2 nozzle",
		sub_path: "process/0.08mm Optimal @Geeetech common 0.2 nozzle.json"
	},
	{
		name: "0.08mm Optimal @Geeetech Thunder 0.2 nozzle",
		sub_path: "process/0.08mm Optimal @Geeetech Thunder 0.2 nozzle.json"
	},
	{
		name: "0.10mm Fine @Geeetech Thunder",
		sub_path: "process/0.10mm Fine @Geeetech Thunder.json"
	},
	{
		name: "0.10mm Standard @Geeetech common 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Geeetech common 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Geeetech Thunder 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Geeetech Thunder 0.2 nozzle.json"
	},
	{
		name: "0.12mm Draft @Geeetech common 0.2 nozzle",
		sub_path: "process/0.12mm Draft @Geeetech common 0.2 nozzle.json"
	},
	{
		name: "0.12mm Draft @Geeetech Thunder 0.2 nozzle",
		sub_path: "process/0.12mm Draft @Geeetech Thunder 0.2 nozzle.json"
	},
	{
		name: "0.12mm Fine @Geeetech common",
		sub_path: "process/0.12mm Fine @Geeetech common.json"
	},
	{
		name: "0.14mm Extra Draft @Geeetech common 0.2 nozzle",
		sub_path: "process/0.14mm Extra Draft @Geeetech common 0.2 nozzle.json"
	},
	{
		name: "0.14mm Extra Draft @Geeetech Thunder 0.2 nozzle",
		sub_path: "process/0.14mm Extra Draft @Geeetech Thunder 0.2 nozzle.json"
	},
	{
		name: "0.16mm Optimal @Geeetech common",
		sub_path: "process/0.16mm Optimal @Geeetech common.json"
	},
	{
		name: "0.16mm Optimal @Geeetech Thunder",
		sub_path: "process/0.16mm Optimal @Geeetech Thunder.json"
	},
	{
		name: "0.18mm Fine @Geeetech common 0.6 nozzle",
		sub_path: "process/0.18mm Fine @Geeetech common 0.6 nozzle.json"
	},
	{
		name: "0.20mm Standard @Geeetech common",
		sub_path: "process/0.20mm Standard @Geeetech common.json"
	},
	{
		name: "0.20mm Standard @Geeetech Thunder",
		sub_path: "process/0.20mm Standard @Geeetech Thunder.json"
	},
	{
		name: "0.20mm Strength @Geeetech common",
		sub_path: "process/0.20mm Strength @Geeetech common.json"
	},
	{
		name: "0.24mm Draft @Geeetech common",
		sub_path: "process/0.24mm Draft @Geeetech common.json"
	},
	{
		name: "0.24mm Fine @Geeetech common 0.8 nozzle",
		sub_path: "process/0.24mm Fine @Geeetech common 0.8 nozzle.json"
	},
	{
		name: "0.24mm Optimal @Geeetech common 0.6 nozzle",
		sub_path: "process/0.24mm Optimal @Geeetech common 0.6 nozzle.json"
	},
	{
		name: "0.24mm Optimal @Geeetech Thunder 0.6 nozzle",
		sub_path: "process/0.24mm Optimal @Geeetech Thunder 0.6 nozzle.json"
	},
	{
		name: "0.25mm Draft @Geeetech Thunder",
		sub_path: "process/0.25mm Draft @Geeetech Thunder.json"
	},
	{
		name: "0.28mm Extra Draft @Geeetech common",
		sub_path: "process/0.28mm Extra Draft @Geeetech common.json"
	},
	{
		name: "0.30mm Standard @Geeetech common 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Geeetech common 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Geeetech Thunder 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Geeetech Thunder 0.6 nozzle.json"
	},
	{
		name: "0.30mm Strength @Geeetech common 0.6 nozzle",
		sub_path: "process/0.30mm Strength @Geeetech common 0.6 nozzle.json"
	},
	{
		name: "0.32mm Optimal @Geeetech common 0.8 nozzle",
		sub_path: "process/0.32mm Optimal @Geeetech common 0.8 nozzle.json"
	},
	{
		name: "0.36mm Draft @Geeetech common 0.6 nozzle",
		sub_path: "process/0.36mm Draft @Geeetech common 0.6 nozzle.json"
	},
	{
		name: "0.36mm Draft @Geeetech Thunder 0.6 nozzle",
		sub_path: "process/0.36mm Draft @Geeetech Thunder 0.6 nozzle.json"
	},
	{
		name: "0.36mm Optimal @Geeetech Thunder 0.8 nozzle",
		sub_path: "process/0.36mm Optimal @Geeetech Thunder 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Geeetech common 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Geeetech common 0.8 nozzle.json"
	},
	{
		name: "0.42mm Extra Draft @Geeetech common 0.6 nozzle",
		sub_path: "process/0.42mm Extra Draft @Geeetech common 0.6 nozzle.json"
	},
	{
		name: "0.44mm Draft @Geeetech Thunder 0.8 nozzle",
		sub_path: "process/0.44mm Draft @Geeetech Thunder 0.8 nozzle.json"
	},
	{
		name: "0.48mm Draft @Geeetech common 0.8 nozzle",
		sub_path: "process/0.48mm Draft @Geeetech common 0.8 nozzle.json"
	},
	{
		name: "0.56mm Extra Draft @Geeetech common 0.8 nozzle",
		sub_path: "process/0.56mm Extra Draft @Geeetech common 0.8 nozzle.json"
	},
	{
		name: "0.08mm Extra Fine @Geeetech M1",
		sub_path: "process/0.08mm Extra Fine @Geeetech M1.json"
	},
	{
		name: "0.08mm Optimal @Geeetech M1 0.2 nozzle",
		sub_path: "process/0.08mm Optimal @Geeetech M1 0.2 nozzle.json"
	},
	{
		name: "0.10mm Fine @Geeetech M1",
		sub_path: "process/0.10mm Fine @Geeetech M1.json"
	},
	{
		name: "0.10mm Standard @Geeetech M1 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Geeetech M1 0.2 nozzle.json"
	},
	{
		name: "0.12mm Draft @Geeetech M1 0.2 nozzle",
		sub_path: "process/0.12mm Draft @Geeetech M1 0.2 nozzle.json"
	},
	{
		name: "0.14mm Extra Draft @Geeetech M1 0.2 nozzle",
		sub_path: "process/0.14mm Extra Draft @Geeetech M1 0.2 nozzle.json"
	},
	{
		name: "0.16mm Optimal @Geeetech M1",
		sub_path: "process/0.16mm Optimal @Geeetech M1.json"
	},
	{
		name: "0.20mm Standard @Geeetech M1",
		sub_path: "process/0.20mm Standard @Geeetech M1.json"
	},
	{
		name: "0.24mm Optimal @Geeetech M1 0.6 nozzle",
		sub_path: "process/0.24mm Optimal @Geeetech M1 0.6 nozzle.json"
	},
	{
		name: "0.25mm Draft @Geeetech M1",
		sub_path: "process/0.25mm Draft @Geeetech M1.json"
	},
	{
		name: "0.30mm Standard @Geeetech M1 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Geeetech M1 0.6 nozzle.json"
	},
	{
		name: "0.36mm Draft @Geeetech M1 0.6 nozzle",
		sub_path: "process/0.36mm Draft @Geeetech M1 0.6 nozzle.json"
	},
	{
		name: "0.36mm Optimal @Geeetech M1 0.8 nozzle",
		sub_path: "process/0.36mm Optimal @Geeetech M1 0.8 nozzle.json"
	},
	{
		name: "0.44mm Draft @Geeetech M1 0.8 nozzle",
		sub_path: "process/0.44mm Draft @Geeetech M1 0.8 nozzle.json"
	}
];
var filament_list$5 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Geeetech",
		sub_path: "filament/Generic ABS @Geeetech.json"
	},
	{
		name: "Generic ASA @Geeetech",
		sub_path: "filament/Generic ASA @Geeetech.json"
	},
	{
		name: "Generic PA @Geeetech",
		sub_path: "filament/Generic PA @Geeetech.json"
	},
	{
		name: "Generic PC @Geeetech",
		sub_path: "filament/Generic PC @Geeetech.json"
	},
	{
		name: "Generic PETG @Geeetech",
		sub_path: "filament/Generic PETG @Geeetech.json"
	},
	{
		name: "Generic PLA @Geeetech",
		sub_path: "filament/Generic PLA @Geeetech.json"
	},
	{
		name: "Generic PLA @Geeetech_FastSpeed",
		sub_path: "filament/Generic PLA @Geeetech_FastSpeed.json"
	},
	{
		name: "Generic PLA-CF @Geeetech",
		sub_path: "filament/Generic PLA-CF @Geeetech.json"
	},
	{
		name: "Generic PVA @Geeetech",
		sub_path: "filament/Generic PVA @Geeetech.json"
	},
	{
		name: "Generic TPU @Geeetech",
		sub_path: "filament/Generic TPU @Geeetech.json"
	}
];
var machine_list$5 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_geeetech_common",
		sub_path: "machine/fdm_geeetech_common.json"
	},
	{
		name: "fdm_Geeetech_HS_common",
		sub_path: "machine/fdm_Geeetech_HS_common.json"
	},
	{
		name: "Geeetech Thunder 0.2 nozzle",
		sub_path: "machine/Geeetech Thunder 0.2 nozzle.json"
	},
	{
		name: "Geeetech Thunder 0.4 nozzle",
		sub_path: "machine/Geeetech Thunder 0.4 nozzle.json"
	},
	{
		name: "Geeetech Thunder 0.6 nozzle",
		sub_path: "machine/Geeetech Thunder 0.6 nozzle.json"
	},
	{
		name: "Geeetech Thunder 0.8 nozzle",
		sub_path: "machine/Geeetech Thunder 0.8 nozzle.json"
	},
	{
		name: "Geeetech Mizar 0.2 nozzle",
		sub_path: "machine/Geeetech Mizar 0.2 nozzle.json"
	},
	{
		name: "Geeetech Mizar 0.4 nozzle",
		sub_path: "machine/Geeetech Mizar 0.4 nozzle.json"
	},
	{
		name: "Geeetech Mizar 0.6 nozzle",
		sub_path: "machine/Geeetech Mizar 0.6 nozzle.json"
	},
	{
		name: "Geeetech Mizar 0.8 nozzle",
		sub_path: "machine/Geeetech Mizar 0.8 nozzle.json"
	},
	{
		name: "Geeetech Mizar S 0.2 nozzle",
		sub_path: "machine/Geeetech Mizar S 0.2 nozzle.json"
	},
	{
		name: "Geeetech Mizar S 0.4 nozzle",
		sub_path: "machine/Geeetech Mizar S 0.4 nozzle.json"
	},
	{
		name: "Geeetech Mizar S 0.6 nozzle",
		sub_path: "machine/Geeetech Mizar S 0.6 nozzle.json"
	},
	{
		name: "Geeetech Mizar S 0.8 nozzle",
		sub_path: "machine/Geeetech Mizar S 0.8 nozzle.json"
	},
	{
		name: "Geeetech Mizar Pro 0.2 nozzle",
		sub_path: "machine/Geeetech Mizar Pro 0.2 nozzle.json"
	},
	{
		name: "Geeetech Mizar Pro 0.4 nozzle",
		sub_path: "machine/Geeetech Mizar Pro 0.4 nozzle.json"
	},
	{
		name: "Geeetech Mizar Pro 0.6 nozzle",
		sub_path: "machine/Geeetech Mizar Pro 0.6 nozzle.json"
	},
	{
		name: "Geeetech Mizar Pro 0.8 nozzle",
		sub_path: "machine/Geeetech Mizar Pro 0.8 nozzle.json"
	},
	{
		name: "Geeetech Mizar Max 0.2 nozzle",
		sub_path: "machine/Geeetech Mizar Max 0.2 nozzle.json"
	},
	{
		name: "Geeetech Mizar Max 0.4 nozzle",
		sub_path: "machine/Geeetech Mizar Max 0.4 nozzle.json"
	},
	{
		name: "Geeetech Mizar Max 0.6 nozzle",
		sub_path: "machine/Geeetech Mizar Max 0.6 nozzle.json"
	},
	{
		name: "Geeetech Mizar Max 0.8 nozzle",
		sub_path: "machine/Geeetech Mizar Max 0.8 nozzle.json"
	},
	{
		name: "Geeetech Mizar M 0.4 nozzle",
		sub_path: "machine/Geeetech Mizar M 0.4 nozzle.json"
	},
	{
		name: "Geeetech A10 Pro 0.2 nozzle",
		sub_path: "machine/Geeetech A10 Pro 0.2 nozzle.json"
	},
	{
		name: "Geeetech A10 Pro 0.4 nozzle",
		sub_path: "machine/Geeetech A10 Pro 0.4 nozzle.json"
	},
	{
		name: "Geeetech A10 Pro 0.6 nozzle",
		sub_path: "machine/Geeetech A10 Pro 0.6 nozzle.json"
	},
	{
		name: "Geeetech A10 Pro 0.8 nozzle",
		sub_path: "machine/Geeetech A10 Pro 0.8 nozzle.json"
	},
	{
		name: "Geeetech A10 M 0.4 nozzle",
		sub_path: "machine/Geeetech A10 M 0.4 nozzle.json"
	},
	{
		name: "Geeetech A10 T 0.4 nozzle",
		sub_path: "machine/Geeetech A10 T 0.4 nozzle.json"
	},
	{
		name: "Geeetech A20 0.2 nozzle",
		sub_path: "machine/Geeetech A20 0.2 nozzle.json"
	},
	{
		name: "Geeetech A20 0.4 nozzle",
		sub_path: "machine/Geeetech A20 0.4 nozzle.json"
	},
	{
		name: "Geeetech A20 0.6 nozzle",
		sub_path: "machine/Geeetech A20 0.6 nozzle.json"
	},
	{
		name: "Geeetech A20 0.8 nozzle",
		sub_path: "machine/Geeetech A20 0.8 nozzle.json"
	},
	{
		name: "Geeetech A20 M 0.4 nozzle",
		sub_path: "machine/Geeetech A20 M 0.4 nozzle.json"
	},
	{
		name: "Geeetech A20 T 0.4 nozzle",
		sub_path: "machine/Geeetech A20 T 0.4 nozzle.json"
	},
	{
		name: "Geeetech A30 Pro 0.2 nozzle",
		sub_path: "machine/Geeetech A30 Pro 0.2 nozzle.json"
	},
	{
		name: "Geeetech A30 Pro 0.4 nozzle",
		sub_path: "machine/Geeetech A30 Pro 0.4 nozzle.json"
	},
	{
		name: "Geeetech A30 Pro 0.6 nozzle",
		sub_path: "machine/Geeetech A30 Pro 0.6 nozzle.json"
	},
	{
		name: "Geeetech A30 Pro 0.8 nozzle",
		sub_path: "machine/Geeetech A30 Pro 0.8 nozzle.json"
	},
	{
		name: "Geeetech A30 M 0.4 nozzle",
		sub_path: "machine/Geeetech A30 M 0.4 nozzle.json"
	},
	{
		name: "Geeetech A30 T 0.4 nozzle",
		sub_path: "machine/Geeetech A30 T 0.4 nozzle.json"
	},
	{
		name: "Geeetech M1 0.2 nozzle",
		sub_path: "machine/Geeetech M1 0.2 nozzle.json"
	},
	{
		name: "Geeetech M1 0.4 nozzle",
		sub_path: "machine/Geeetech M1 0.4 nozzle.json"
	},
	{
		name: "Geeetech M1 0.6 nozzle",
		sub_path: "machine/Geeetech M1 0.6 nozzle.json"
	},
	{
		name: "Geeetech M1 0.8 nozzle",
		sub_path: "machine/Geeetech M1 0.8 nozzle.json"
	}
];
var Geeetech = {
	name: name$5,
	version: version$5,
	force_update: force_update$5,
	description: description$5,
	machine_model_list: machine_model_list$5,
	process_list: process_list$5,
	filament_list: filament_list$5,
	machine_list: machine_list$5
};

var name$4 = "Elegoo";
var version$4 = "01.10.00.01";
var force_update$4 = "0";
var description$4 = "Elegoo configurations";
var machine_model_list$4 = [
	{
		name: "Elegoo Neptune",
		sub_path: "machine/Elegoo Neptune.json"
	},
	{
		name: "Elegoo Neptune X",
		sub_path: "machine/Elegoo Neptune X.json"
	},
	{
		name: "Elegoo Neptune 2",
		sub_path: "machine/Elegoo Neptune 2.json"
	},
	{
		name: "Elegoo Neptune 2S",
		sub_path: "machine/Elegoo Neptune 2S.json"
	},
	{
		name: "Elegoo Neptune 2D",
		sub_path: "machine/Elegoo Neptune 2D.json"
	},
	{
		name: "Elegoo Neptune 3",
		sub_path: "machine/Elegoo Neptune 3.json"
	},
	{
		name: "Elegoo Neptune 3 Pro",
		sub_path: "machine/Elegoo Neptune 3 Pro.json"
	},
	{
		name: "Elegoo Neptune 3 Plus",
		sub_path: "machine/Elegoo Neptune 3 Plus.json"
	},
	{
		name: "Elegoo Neptune 3 Max",
		sub_path: "machine/Elegoo Neptune 3 Max.json"
	},
	{
		name: "Elegoo Neptune 4",
		sub_path: "machine/Elegoo Neptune 4.json"
	},
	{
		name: "Elegoo Neptune 4 Max",
		sub_path: "machine/Elegoo Neptune 4 Max.json"
	},
	{
		name: "Elegoo Neptune 4 Plus",
		sub_path: "machine/Elegoo Neptune 4 Plus.json"
	},
	{
		name: "Elegoo Neptune 4 Pro",
		sub_path: "machine/Elegoo Neptune 4 Pro.json"
	}
];
var process_list$4 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_elegoo_common",
		sub_path: "process/fdm_process_elegoo_common.json"
	},
	{
		name: "fdm_process_neptune4_common",
		sub_path: "process/fdm_process_neptune4_common.json"
	},
	{
		name: "fdm_process_neptune4max_common",
		sub_path: "process/fdm_process_neptune4max_common.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo NeptuneX",
		sub_path: "process/0.08mm Extra Fine @Elegoo NeptuneX.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune2",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune2.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune2S",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune2S.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune2D",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune2D.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune3",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune3.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune3Pro",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune3Pro.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune3Plus",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune3Plus.json"
	},
	{
		name: "0.08mm Extra Fine @Elegoo Neptune3Max",
		sub_path: "process/0.08mm Extra Fine @Elegoo Neptune3Max.json"
	},
	{
		name: "0.10mm Standard @Elegoo Neptune4 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Elegoo Neptune4 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Elegoo Neptune4Max 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Elegoo Neptune4Max 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @Elegoo Neptune4 Plus 0.2 nozzle",
		sub_path: "process/0.10mm Standard @Elegoo Neptune4 Plus 0.2 nozzle.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune",
		sub_path: "process/0.12mm Fine @Elegoo Neptune.json"
	},
	{
		name: "0.12mm Fine @Elegoo NeptuneX",
		sub_path: "process/0.12mm Fine @Elegoo NeptuneX.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune2",
		sub_path: "process/0.12mm Fine @Elegoo Neptune2.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune2S",
		sub_path: "process/0.12mm Fine @Elegoo Neptune2S.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune2D",
		sub_path: "process/0.12mm Fine @Elegoo Neptune2D.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune3",
		sub_path: "process/0.12mm Fine @Elegoo Neptune3.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune3Pro",
		sub_path: "process/0.12mm Fine @Elegoo Neptune3Pro.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune3Plus",
		sub_path: "process/0.12mm Fine @Elegoo Neptune3Plus.json"
	},
	{
		name: "0.12mm Fine @Elegoo Neptune3Max",
		sub_path: "process/0.12mm Fine @Elegoo Neptune3Max.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune.json"
	},
	{
		name: "0.16mm Optimal @Elegoo NeptuneX",
		sub_path: "process/0.16mm Optimal @Elegoo NeptuneX.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune2",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune2.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune2S",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune2S.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune2D",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune2D.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune3",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune3.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune3Pro",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune3Pro.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune3Plus",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune3Plus.json"
	},
	{
		name: "0.16mm Optimal @Elegoo Neptune3Max",
		sub_path: "process/0.16mm Optimal @Elegoo Neptune3Max.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune",
		sub_path: "process/0.20mm Standard @Elegoo Neptune.json"
	},
	{
		name: "0.20mm Standard @Elegoo NeptuneX",
		sub_path: "process/0.20mm Standard @Elegoo NeptuneX.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune2",
		sub_path: "process/0.20mm Standard @Elegoo Neptune2.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune2S",
		sub_path: "process/0.20mm Standard @Elegoo Neptune2S.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune2D",
		sub_path: "process/0.20mm Standard @Elegoo Neptune2D.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune3",
		sub_path: "process/0.20mm Standard @Elegoo Neptune3.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune3Pro",
		sub_path: "process/0.20mm Standard @Elegoo Neptune3Pro.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune3Plus",
		sub_path: "process/0.20mm Standard @Elegoo Neptune3Plus.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune3Max",
		sub_path: "process/0.20mm Standard @Elegoo Neptune3Max.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune4 0.4 nozzle",
		sub_path: "process/0.20mm Standard @Elegoo Neptune4 0.4 nozzle.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune4Max 0.4 nozzle",
		sub_path: "process/0.20mm Standard @Elegoo Neptune4Max 0.4 nozzle.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune4 Plus 0.4 nozzle",
		sub_path: "process/0.20mm Standard @Elegoo Neptune4 Plus 0.4 nozzle.json"
	},
	{
		name: "0.20mm Standard @Elegoo Neptune4Pro 0.4 nozzle",
		sub_path: "process/0.20mm Standard @Elegoo Neptune4Pro 0.4 nozzle.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune",
		sub_path: "process/0.24mm Draft @Elegoo Neptune.json"
	},
	{
		name: "0.24mm Draft @Elegoo NeptuneX",
		sub_path: "process/0.24mm Draft @Elegoo NeptuneX.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune2",
		sub_path: "process/0.24mm Draft @Elegoo Neptune2.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune2S",
		sub_path: "process/0.24mm Draft @Elegoo Neptune2S.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune2D",
		sub_path: "process/0.24mm Draft @Elegoo Neptune2D.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune3",
		sub_path: "process/0.24mm Draft @Elegoo Neptune3.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune3Pro",
		sub_path: "process/0.24mm Draft @Elegoo Neptune3Pro.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune3Plus",
		sub_path: "process/0.24mm Draft @Elegoo Neptune3Plus.json"
	},
	{
		name: "0.24mm Draft @Elegoo Neptune3Max",
		sub_path: "process/0.24mm Draft @Elegoo Neptune3Max.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo NeptuneX",
		sub_path: "process/0.28mm Extra Draft @Elegoo NeptuneX.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune2",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune2.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune2S",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune2S.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune2D",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune2D.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune3",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune3.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune3Pro",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune3Pro.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune3Plus",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune3Plus.json"
	},
	{
		name: "0.28mm Extra Draft @Elegoo Neptune3Max",
		sub_path: "process/0.28mm Extra Draft @Elegoo Neptune3Max.json"
	},
	{
		name: "0.30mm Standard @Elegoo Neptune4 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Elegoo Neptune4 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Elegoo Neptune4Max 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Elegoo Neptune4Max 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Elegoo Neptune4 Plus 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Elegoo Neptune4 Plus 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Elegoo Neptune4Pro 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Elegoo Neptune4Pro 0.6 nozzle.json"
	},
	{
		name: "0.40mm Standard @Elegoo Neptune4 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Elegoo Neptune4 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Elegoo Neptune4Max 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Elegoo Neptune4Max 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Elegoo Neptune4 Plus 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Elegoo Neptune4 Plus 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Elegoo Neptune4Pro 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Elegoo Neptune4Pro 0.8 nozzle.json"
	}
];
var filament_list$4 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "Generic ABS @Elegoo",
		sub_path: "filament/Generic ABS @Elegoo.json"
	},
	{
		name: "Generic PETG @Elegoo",
		sub_path: "filament/Generic PETG @Elegoo.json"
	},
	{
		name: "Generic PLA @Elegoo",
		sub_path: "filament/Generic PLA @Elegoo.json"
	}
];
var machine_list$4 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_elegoo_common",
		sub_path: "machine/fdm_elegoo_common.json"
	},
	{
		name: "fdm_neptune_4_common",
		sub_path: "machine/fdm_neptune_4_common.json"
	},
	{
		name: "Elegoo Neptune 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune X 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune X 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 2 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 2 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 2S 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 2S 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 2D 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 2D 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 3 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 3 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 3 Pro 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 3 Pro 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 3 Plus 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 3 Plus 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 3 Max 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 3 Max 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 0.2 nozzle",
		sub_path: "machine/Elegoo Neptune 4 0.2 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 4 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 0.6 nozzle",
		sub_path: "machine/Elegoo Neptune 4 0.6 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 0.8 nozzle",
		sub_path: "machine/Elegoo Neptune 4 0.8 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Max 0.2 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Max 0.2 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Max 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Max 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Max 0.6 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Max 0.6 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Max 0.8 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Max 0.8 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Plus 0.2 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Plus 0.2 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Plus 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Plus 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Plus 0.6 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Plus 0.6 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Plus 0.8 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Plus 0.8 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Pro 0.2 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Pro 0.2 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Pro 0.4 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Pro 0.4 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Pro 0.6 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Pro 0.6 nozzle.json"
	},
	{
		name: "Elegoo Neptune 4 Pro 0.8 nozzle",
		sub_path: "machine/Elegoo Neptune 4 Pro 0.8 nozzle.json"
	}
];
var Elegoo = {
	name: name$4,
	version: version$4,
	force_update: force_update$4,
	description: description$4,
	machine_model_list: machine_model_list$4,
	process_list: process_list$4,
	filament_list: filament_list$4,
	machine_list: machine_list$4
};

var name$3 = "Creality";
var version$3 = "01.10.00.01";
var force_update$3 = "0";
var description$3 = "Creality configurations";
var machine_model_list$3 = [
	{
		name: "Creality CR-10 V2",
		sub_path: "machine/Creality CR-10 V2.json"
	},
	{
		name: "Creality CR-10 Max",
		sub_path: "machine/Creality CR-10 Max.json"
	},
	{
		name: "Creality Ender-3 V2",
		sub_path: "machine/Creality Ender-3 V2.json"
	},
	{
		name: "Creality Ender-3 V3",
		sub_path: "machine/Creality Ender-3 V3.json"
	},
	{
		name: "Creality Ender-3 V3 Plus",
		sub_path: "machine/Creality Ender-3 V3 Plus.json"
	},
	{
		name: "Creality Ender-3 V3 KE",
		sub_path: "machine/Creality Ender-3 V3 KE.json"
	},
	{
		name: "Creality Ender-3 S1",
		sub_path: "machine/Creality Ender-3 S1.json"
	},
	{
		name: "Creality Ender-3 S1 Pro",
		sub_path: "machine/Creality Ender-3 S1 Pro.json"
	},
	{
		name: "Creality Ender-5",
		sub_path: "machine/Creality Ender-5.json"
	},
	{
		name: "Creality Ender-5 Plus",
		sub_path: "machine/Creality Ender-5 Plus.json"
	},
	{
		name: "Creality Ender-5S",
		sub_path: "machine/Creality Ender-5S.json"
	},
	{
		name: "Creality Ender-5 S1",
		sub_path: "machine/Creality Ender-5 S1.json"
	},
	{
		name: "Creality Ender-6",
		sub_path: "machine/Creality Ender-6.json"
	},
	{
		name: "Creality CR-6 SE",
		sub_path: "machine/Creality CR-6 SE.json"
	},
	{
		name: "Creality CR-6 Max",
		sub_path: "machine/Creality CR-6 Max.json"
	},
	{
		name: "Creality K1",
		sub_path: "machine/Creality K1.json"
	},
	{
		name: "Creality K1 Max",
		sub_path: "machine/Creality K1 Max.json"
	},
	{
		name: "Creality K1C",
		sub_path: "machine/Creality K1C.json"
	}
];
var process_list$3 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_creality_common",
		sub_path: "process/fdm_process_creality_common.json"
	},
	{
		name: "fdm_process_common_klipper",
		sub_path: "process/fdm_process_common_klipper.json"
	},
	{
		name: "0.10mm HighDetail @Creality CR-6",
		sub_path: "process/0.10mm HighDetail @Creality CR-6.json"
	},
	{
		name: "0.12mm Detail @Creality CR-6",
		sub_path: "process/0.12mm Detail @Creality CR-6.json"
	},
	{
		name: "0.16mm Opitmal @Creality CR-6",
		sub_path: "process/0.16mm Opitmal @Creality CR-6.json"
	},
	{
		name: "0.16mm Optimal @Creality CR-6 0.2",
		sub_path: "process/0.16mm Optimal @Creality CR-6 0.2.json"
	},
	{
		name: "0.16mm Optimal @Creality CR-6 0.4",
		sub_path: "process/0.16mm Optimal @Creality CR-6 0.4.json"
	},
	{
		name: "0.24mm Draft @Creality CR-6",
		sub_path: "process/0.24mm Draft @Creality CR-6.json"
	},
	{
		name: "0.28mm SuperDraft @Creality CR-6",
		sub_path: "process/0.28mm SuperDraft @Creality CR-6.json"
	},
	{
		name: "0.12mm Fine @Creality CR10Max",
		sub_path: "process/0.12mm Fine @Creality CR10Max.json"
	},
	{
		name: "0.12mm Fine @Creality Ender3V2",
		sub_path: "process/0.12mm Fine @Creality Ender3V2.json"
	},
	{
		name: "0.16mm Optimal @Creality CR10V2",
		sub_path: "process/0.16mm Optimal @Creality CR10V2.json"
	},
	{
		name: "0.15mm Optimal @Creality CR10Max",
		sub_path: "process/0.15mm Optimal @Creality CR10Max.json"
	},
	{
		name: "0.15mm Optimal @Creality Ender3V2",
		sub_path: "process/0.15mm Optimal @Creality Ender3V2.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender3S1",
		sub_path: "process/0.16mm Optimal @Creality Ender3S1.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender3S1Pro",
		sub_path: "process/0.16mm Optimal @Creality Ender3S1Pro.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender5",
		sub_path: "process/0.16mm Optimal @Creality Ender5.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender5Plus",
		sub_path: "process/0.16mm Optimal @Creality Ender5Plus.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender5S",
		sub_path: "process/0.16mm Optimal @Creality Ender5S.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender5S1",
		sub_path: "process/0.16mm Optimal @Creality Ender5S1.json"
	},
	{
		name: "0.16mm Optimal @Creality Ender6",
		sub_path: "process/0.16mm Optimal @Creality Ender6.json"
	},
	{
		name: "0.16mm Optimal @Creality K1 0.4 nozzle",
		sub_path: "process/0.16mm Optimal @Creality K1 0.4 nozzle.json"
	},
	{
		name: "0.16mm Optimal @Creality K1Max 0.4 nozzle",
		sub_path: "process/0.16mm Optimal @Creality K1Max 0.4 nozzle.json"
	},
	{
		name: "0.20mm Normal @Creality CR-6",
		sub_path: "process/0.20mm Normal @Creality CR-6.json"
	},
	{
		name: "0.20mm Standard @Creality CR10V2",
		sub_path: "process/0.20mm Standard @Creality CR10V2.json"
	},
	{
		name: "0.20mm Standard @Creality CR10Max",
		sub_path: "process/0.20mm Standard @Creality CR10Max.json"
	},
	{
		name: "0.20mm Standard @Creality Ender3V2",
		sub_path: "process/0.20mm Standard @Creality Ender3V2.json"
	},
	{
		name: "0.20mm Standard @Creality Ender3V3",
		sub_path: "process/0.20mm Standard @Creality Ender3V3.json"
	},
	{
		name: "0.20mm Standard @Creality Ender3V3Plus",
		sub_path: "process/0.20mm Standard @Creality Ender3V3Plus.json"
	},
	{
		name: "0.20mm Standard @Creality Ender3V3KE",
		sub_path: "process/0.20mm Standard @Creality Ender3V3KE.json"
	},
	{
		name: "0.20mm Standard @Creality Ender3S1",
		sub_path: "process/0.20mm Standard @Creality Ender3S1.json"
	},
	{
		name: "0.20mm Standard @Creality Ender3S1Pro",
		sub_path: "process/0.20mm Standard @Creality Ender3S1Pro.json"
	},
	{
		name: "0.20mm Standard @Creality Ender5",
		sub_path: "process/0.20mm Standard @Creality Ender5.json"
	},
	{
		name: "0.20mm Standard @Creality Ender5Plus",
		sub_path: "process/0.20mm Standard @Creality Ender5Plus.json"
	},
	{
		name: "0.20mm Standard @Creality Ender5S",
		sub_path: "process/0.20mm Standard @Creality Ender5S.json"
	},
	{
		name: "0.20mm Standard @Creality Ender5S1",
		sub_path: "process/0.20mm Standard @Creality Ender5S1.json"
	},
	{
		name: "0.20mm Standard @Creality Ender6",
		sub_path: "process/0.20mm Standard @Creality Ender6.json"
	},
	{
		name: "0.20mm Standard @Creality K1 0.4 nozzle",
		sub_path: "process/0.20mm Standard @Creality K1 0.4 nozzle.json"
	},
	{
		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 K1C",
		sub_path: "process/0.20mm Standard @Creality K1C.json"
	},
	{
		name: "0.24mm Draft @Creality CR10Max",
		sub_path: "process/0.24mm Draft @Creality CR10Max.json"
	},
	{
		name: "0.24mm Draft @Creality K1 0.4 nozzle",
		sub_path: "process/0.24mm Draft @Creality K1 0.4 nozzle.json"
	},
	{
		name: "0.24mm Draft @Creality K1Max 0.4 nozzle",
		sub_path: "process/0.24mm Draft @Creality K1Max 0.4 nozzle.json"
	},
	{
		name: "0.24mm Draft @Creality Ender3V2",
		sub_path: "process/0.24mm Draft @Creality Ender3V2.json"
	},
	{
		name: "0.08mm SuperDetail @Creality CR-6 0.2",
		sub_path: "process/0.08mm SuperDetail @Creality CR-6 0.2.json"
	},
	{
		name: "0.30mm Standard @Creality Ender3V3 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Creality Ender3V3 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Creality Ender3V3Plus 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Creality K1 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Creality K1 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Creality K1Max 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Creality K1Max 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @Creality K1C 0.6 nozzle",
		sub_path: "process/0.30mm Standard @Creality K1C 0.6 nozzle.json"
	},
	{
		name: "0.32mm Chunky @Creality CR-6 0.6",
		sub_path: "process/0.32mm Chunky @Creality CR-6 0.6.json"
	},
	{
		name: "0.36mm SuperChunky @Creality CR-6",
		sub_path: "process/0.36mm SuperChunky @Creality CR-6.json"
	},
	{
		name: "0.40mm Standard @Creality K1 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Creality K1 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Creality K1Max 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Creality K1Max 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @Creality K1C 0.8 nozzle",
		sub_path: "process/0.40mm Standard @Creality K1C 0.8 nozzle.json"
	},
	{
		name: "0.44mm SuperExtraChunky @Creality CR-6",
		sub_path: "process/0.44mm SuperExtraChunky @Creality CR-6.json"
	},
	{
		name: "0.24mm Optimal @Creality CR-6",
		sub_path: "process/0.24mm Optimal @Creality CR-6.json"
	},
	{
		name: "0.32mm Normal @Creality CR-6 0.8",
		sub_path: "process/0.32mm Normal @Creality CR-6 0.8.json"
	},
	{
		name: "0.40mm Draft @Creality CR-6",
		sub_path: "process/0.40mm Draft @Creality CR-6.json"
	},
	{
		name: "0.48mm Chunky @Creality CR-6",
		sub_path: "process/0.48mm Chunky @Creality CR-6.json"
	},
	{
		name: "0.48mm Draft @Creality CR-6",
		sub_path: "process/0.48mm Draft @Creality CR-6.json"
	},
	{
		name: "0.56mm SuperChunky @Creality CR-6",
		sub_path: "process/0.56mm SuperChunky @Creality CR-6.json"
	},
	{
		name: "0.12mm Detail @Creality 0.2 CR-6",
		sub_path: "process/0.12mm Detail @Creality 0.2 CR-6.json"
	},
	{
		name: "0.12mm Detail @Creality 0.4 CR-6",
		sub_path: "process/0.12mm Detail @Creality 0.4 CR-6.json"
	},
	{
		name: "0.24mm Draft @Creality 0.6 CR-6",
		sub_path: "process/0.24mm Draft @Creality 0.6 CR-6.json"
	},
	{
		name: "0.28mm SuperDraft @Creality 0.6 CR-6",
		sub_path: "process/0.28mm SuperDraft @Creality 0.6 CR-6.json"
	},
	{
		name: "0.20mm Normal @Creality CR-6 0.6",
		sub_path: "process/0.20mm Normal @Creality CR-6 0.6.json"
	}
];
var filament_list$3 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Creality",
		sub_path: "filament/Generic ABS @Creality.json"
	},
	{
		name: "Generic ASA @Creality",
		sub_path: "filament/Generic ASA @Creality.json"
	},
	{
		name: "Generic PETG @Creality",
		sub_path: "filament/Generic PETG @Creality.json"
	},
	{
		name: "Generic PLA @Creality",
		sub_path: "filament/Generic PLA @Creality.json"
	},
	{
		name: "Generic TPU @Creality",
		sub_path: "filament/Generic TPU @Creality.json"
	},
	{
		name: "Generic PETG @Creality CR-6",
		sub_path: "filament/Generic PETG @Creality CR-6.json"
	},
	{
		name: "Generic ABS @Creality CR-6",
		sub_path: "filament/Generic ABS @Creality CR-6.json"
	},
	{
		name: "Generic PLA @Creality CR-6",
		sub_path: "filament/Generic PLA @Creality CR-6.json"
	}
];
var machine_list$3 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_creality_common",
		sub_path: "machine/fdm_creality_common.json"
	},
	{
		name: "Creality CR-10 V2 0.4 nozzle",
		sub_path: "machine/Creality CR-10 V2 0.4 nozzle.json"
	},
	{
		name: "Creality CR-10 Max 0.4 nozzle",
		sub_path: "machine/Creality CR-10 Max 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-3 V2 0.4 nozzle",
		sub_path: "machine/Creality Ender-3 V2 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-3 V3 0.4 nozzle",
		sub_path: "machine/Creality Ender-3 V3 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-3 V3 0.6 nozzle",
		sub_path: "machine/Creality Ender-3 V3 0.6 nozzle.json"
	},
	{
		name: "Creality Ender-3 V3 Plus 0.4 nozzle",
		sub_path: "machine/Creality Ender-3 V3 Plus 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-3 V3 Plus 0.6 nozzle",
		sub_path: "machine/Creality Ender-3 V3 Plus 0.6 nozzle.json"
	},
	{
		name: "Creality Ender-3 V3 KE 0.4 nozzle",
		sub_path: "machine/Creality Ender-3 V3 KE 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-3 S1 0.4 nozzle",
		sub_path: "machine/Creality Ender-3 S1 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-3 S1 Pro 0.4 nozzle",
		sub_path: "machine/Creality Ender-3 S1 Pro 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-5 0.4 nozzle",
		sub_path: "machine/Creality Ender-5 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-5 Plus 0.4 nozzle",
		sub_path: "machine/Creality Ender-5 Plus 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-5S 0.4 nozzle",
		sub_path: "machine/Creality Ender-5S 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-5 S1 0.4 nozzle",
		sub_path: "machine/Creality Ender-5 S1 0.4 nozzle.json"
	},
	{
		name: "Creality Ender-6 0.4 nozzle",
		sub_path: "machine/Creality Ender-6 0.4 nozzle.json"
	},
	{
		name: "Creality CR-6 SE 0.2 nozzle",
		sub_path: "machine/Creality CR-6 SE 0.2 nozzle.json"
	},
	{
		name: "Creality CR-6 SE 0.4 nozzle",
		sub_path: "machine/Creality CR-6 SE 0.4 nozzle.json"
	},
	{
		name: "Creality CR-6 SE 0.6 nozzle",
		sub_path: "machine/Creality CR-6 SE 0.6 nozzle.json"
	},
	{
		name: "Creality CR-6 SE 0.8 nozzle",
		sub_path: "machine/Creality CR-6 SE 0.8 nozzle.json"
	},
	{
		name: "Creality CR-6 Max 0.2 nozzle",
		sub_path: "machine/Creality CR-6 Max 0.2 nozzle.json"
	},
	{
		name: "Creality CR-6 Max 0.4 nozzle",
		sub_path: "machine/Creality CR-6 Max 0.4 nozzle.json"
	},
	{
		name: "Creality CR-6 Max 0.6 nozzle",
		sub_path: "machine/Creality CR-6 Max 0.6 nozzle.json"
	},
	{
		name: "Creality CR-6 Max 0.8 nozzle",
		sub_path: "machine/Creality CR-6 Max 0.8 nozzle.json"
	},
	{
		name: "Creality K1 0.4 nozzle",
		sub_path: "machine/Creality K1 0.4 nozzle.json"
	},
	{
		name: "Creality K1 0.6 nozzle",
		sub_path: "machine/Creality K1 0.6 nozzle.json"
	},
	{
		name: "Creality K1 0.8 nozzle",
		sub_path: "machine/Creality K1 0.8 nozzle.json"
	},
	{
		name: "Creality K1 Max 0.4 nozzle",
		sub_path: "machine/Creality K1 Max 0.4 nozzle.json"
	},
	{
		name: "Creality K1 Max 0.6 nozzle",
		sub_path: "machine/Creality K1 Max 0.6 nozzle.json"
	},
	{
		name: "Creality K1 Max 0.8 nozzle",
		sub_path: "machine/Creality K1 Max 0.8 nozzle.json"
	},
	{
		name: "Creality K1C 0.4 nozzle",
		sub_path: "machine/Creality K1C 0.4 nozzle.json"
	},
	{
		name: "Creality K1C 0.6 nozzle",
		sub_path: "machine/Creality K1C 0.6 nozzle.json"
	},
	{
		name: "Creality K1C 0.8 nozzle",
		sub_path: "machine/Creality K1C 0.8 nozzle.json"
	}
];
var Creality = {
	name: name$3,
	version: version$3,
	force_update: force_update$3,
	description: description$3,
	machine_model_list: machine_model_list$3,
	process_list: process_list$3,
	filament_list: filament_list$3,
	machine_list: machine_list$3
};

var name$2 = "Bambulab";
var url = "http://www.bambulab.com/Parameters/vendor/BBL.json";
var version$2 = "02.01.00.13";
var force_update$2 = "0";
var description$2 = "the initial version of BBL configurations";
var machine_model_list$2 = [
	{
		name: "Bambu Lab X1 Carbon",
		sub_path: "machine/Bambu Lab X1 Carbon.json"
	},
	{
		name: "Bambu Lab X1",
		sub_path: "machine/Bambu Lab X1.json"
	},
	{
		name: "Bambu Lab X1E",
		sub_path: "machine/Bambu Lab X1E.json"
	},
	{
		name: "Bambu Lab P1P",
		sub_path: "machine/Bambu Lab P1P.json"
	},
	{
		name: "Bambu Lab P1S",
		sub_path: "machine/Bambu Lab P1S.json"
	},
	{
		name: "Bambu Lab A1 mini",
		sub_path: "machine/Bambu Lab A1 mini.json"
	},
	{
		name: "Bambu Lab A1",
		sub_path: "machine/Bambu Lab A1.json"
	},
	{
		name: "Bambu Lab H2D",
		sub_path: "machine/Bambu Lab H2D.json"
	}
];
var process_list$2 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "fdm_process_dual_common",
		sub_path: "process/fdm_process_dual_common.json"
	},
	{
		name: "fdm_process_dual_0.06_nozzle_0.2",
		sub_path: "process/fdm_process_dual_0.06_nozzle_0.2.json"
	},
	{
		name: "fdm_process_dual_0.08_nozzle_0.2",
		sub_path: "process/fdm_process_dual_0.08_nozzle_0.2.json"
	},
	{
		name: "0.08mm Extra Fine @BBL H2D 0.2 nozzle",
		sub_path: "process/0.08mm Extra Fine @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.08_nozzle_0.4",
		sub_path: "process/fdm_process_dual_0.08_nozzle_0.4.json"
	},
	{
		name: "0.08mm Extra Fine @BBL H2D",
		sub_path: "process/0.08mm Extra Fine @BBL H2D.json"
	},
	{
		name: "fdm_process_dual_0.10_nozzle_0.2",
		sub_path: "process/fdm_process_dual_0.10_nozzle_0.2.json"
	},
	{
		name: "0.10mm Standard @BBL H2D 0.2 nozzle",
		sub_path: "process/0.10mm Standard @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.12_nozzle_0.2",
		sub_path: "process/fdm_process_dual_0.12_nozzle_0.2.json"
	},
	{
		name: "0.12mm Balanced Quality @BBL H2D 0.2 nozzle",
		sub_path: "process/0.12mm Balanced Quality @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.12_nozzle_0.4",
		sub_path: "process/fdm_process_dual_0.12_nozzle_0.4.json"
	},
	{
		name: "0.12mm Fine @BBL H2D",
		sub_path: "process/0.12mm Fine @BBL H2D.json"
	},
	{
		name: "fdm_process_dual_0.14_nozzle_0.2",
		sub_path: "process/fdm_process_dual_0.14_nozzle_0.2.json"
	},
	{
		name: "fdm_process_dual_0.16_nozzle_0.4",
		sub_path: "process/fdm_process_dual_0.16_nozzle_0.4.json"
	},
	{
		name: "0.16mm Balanced Quality @BBL H2D",
		sub_path: "process/0.16mm Balanced Quality @BBL H2D.json"
	},
	{
		name: "0.16mm Standard @BBL H2D",
		sub_path: "process/0.16mm Standard @BBL H2D.json"
	},
	{
		name: "fdm_process_dual_0.18_nozzle_0.6",
		sub_path: "process/fdm_process_dual_0.18_nozzle_0.6.json"
	},
	{
		name: "0.18mm Balanced Quality @BBL H2D 0.6 nozzle",
		sub_path: "process/0.18mm Balanced Quality @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.20_nozzle_0.4",
		sub_path: "process/fdm_process_dual_0.20_nozzle_0.4.json"
	},
	{
		name: "0.20mm Balanced Strength @BBL H2D",
		sub_path: "process/0.20mm Balanced Strength @BBL H2D.json"
	},
	{
		name: "0.20mm Standard @BBL H2D",
		sub_path: "process/0.20mm Standard @BBL H2D.json"
	},
	{
		name: "fdm_process_dual_0.24_nozzle_0.4",
		sub_path: "process/fdm_process_dual_0.24_nozzle_0.4.json"
	},
	{
		name: "0.24mm Standard @BBL H2D",
		sub_path: "process/0.24mm Standard @BBL H2D.json"
	},
	{
		name: "fdm_process_dual_0.24_nozzle_0.6",
		sub_path: "process/fdm_process_dual_0.24_nozzle_0.6.json"
	},
	{
		name: "0.24mm Balanced Strength @BBL H2D 0.6 nozzle",
		sub_path: "process/0.24mm Balanced Strength @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.24_nozzle_0.8",
		sub_path: "process/fdm_process_dual_0.24_nozzle_0.8.json"
	},
	{
		name: "0.24mm Balanced Quality @BBL H2D 0.8 nozzle",
		sub_path: "process/0.24mm Balanced Quality @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.28_nozzle_0.4",
		sub_path: "process/fdm_process_dual_0.28_nozzle_0.4.json"
	},
	{
		name: "fdm_process_dual_0.30_nozzle_0.6",
		sub_path: "process/fdm_process_dual_0.30_nozzle_0.6.json"
	},
	{
		name: "0.30mm Standard @BBL H2D 0.6 nozzle",
		sub_path: "process/0.30mm Standard @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.32_nozzle_0.8",
		sub_path: "process/fdm_process_dual_0.32_nozzle_0.8.json"
	},
	{
		name: "0.32mm Balanced Strength @BBL H2D 0.8 nozzle",
		sub_path: "process/0.32mm Balanced Strength @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.36_nozzle_0.6",
		sub_path: "process/fdm_process_dual_0.36_nozzle_0.6.json"
	},
	{
		name: "fdm_process_dual_0.40_nozzle_0.8",
		sub_path: "process/fdm_process_dual_0.40_nozzle_0.8.json"
	},
	{
		name: "0.40mm Standard @BBL H2D 0.8 nozzle",
		sub_path: "process/0.40mm Standard @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "fdm_process_dual_0.42_nozzle_0.6",
		sub_path: "process/fdm_process_dual_0.42_nozzle_0.6.json"
	},
	{
		name: "fdm_process_dual_0.48_nozzle_0.8",
		sub_path: "process/fdm_process_dual_0.48_nozzle_0.8.json"
	},
	{
		name: "fdm_process_dual_0.56_nozzle_0.8",
		sub_path: "process/fdm_process_dual_0.56_nozzle_0.8.json"
	},
	{
		name: "fdm_process_single_common",
		sub_path: "process/fdm_process_single_common.json"
	},
	{
		name: "fdm_process_single_0.06_nozzle_0.2",
		sub_path: "process/fdm_process_single_0.06_nozzle_0.2.json"
	},
	{
		name: "0.06mm Fine @BBL A1 0.2 nozzle",
		sub_path: "process/0.06mm Fine @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.06mm Fine @BBL A1M 0.2 nozzle",
		sub_path: "process/0.06mm Fine @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.06mm Fine @BBL P1P 0.2 nozzle",
		sub_path: "process/0.06mm Fine @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.06mm High Quality @BBL A1 0.2 nozzle",
		sub_path: "process/0.06mm High Quality @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.06mm High Quality @BBL A1M 0.2 nozzle",
		sub_path: "process/0.06mm High Quality @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.06mm High Quality @BBL P1P 0.2 nozzle",
		sub_path: "process/0.06mm High Quality @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.06mm High Quality @BBL X1C 0.2 nozzle",
		sub_path: "process/0.06mm High Quality @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "0.06mm Standard @BBL X1C 0.2 nozzle",
		sub_path: "process/0.06mm Standard @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_process_single_0.08",
		sub_path: "process/fdm_process_single_0.08.json"
	},
	{
		name: "0.08mm Extra Fine @BBL A1",
		sub_path: "process/0.08mm Extra Fine @BBL A1.json"
	},
	{
		name: "0.08mm Extra Fine @BBL A1M",
		sub_path: "process/0.08mm Extra Fine @BBL A1M.json"
	},
	{
		name: "0.08mm Extra Fine @BBL P1P",
		sub_path: "process/0.08mm Extra Fine @BBL P1P.json"
	},
	{
		name: "0.08mm Extra Fine @BBL X1C",
		sub_path: "process/0.08mm Extra Fine @BBL X1C.json"
	},
	{
		name: "0.08mm High Quality @BBL A1",
		sub_path: "process/0.08mm High Quality @BBL A1.json"
	},
	{
		name: "0.08mm High Quality @BBL A1M",
		sub_path: "process/0.08mm High Quality @BBL A1M.json"
	},
	{
		name: "0.08mm High Quality @BBL P1P",
		sub_path: "process/0.08mm High Quality @BBL P1P.json"
	},
	{
		name: "0.08mm High Quality @BBL X1C",
		sub_path: "process/0.08mm High Quality @BBL X1C.json"
	},
	{
		name: "fdm_process_single_0.08_nozzle_0.2",
		sub_path: "process/fdm_process_single_0.08_nozzle_0.2.json"
	},
	{
		name: "0.08mm High Quality @BBL A1 0.2 nozzle",
		sub_path: "process/0.08mm High Quality @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.08mm High Quality @BBL A1M 0.2 nozzle",
		sub_path: "process/0.08mm High Quality @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.08mm High Quality @BBL P1P 0.2 nozzle",
		sub_path: "process/0.08mm High Quality @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.08mm High Quality @BBL X1C 0.2 nozzle",
		sub_path: "process/0.08mm High Quality @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "0.08mm Optimal @BBL A1 0.2 nozzle",
		sub_path: "process/0.08mm Optimal @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.08mm Optimal @BBL A1M 0.2 nozzle",
		sub_path: "process/0.08mm Optimal @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.08mm Optimal @BBL P1P 0.2 nozzle",
		sub_path: "process/0.08mm Optimal @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.08mm Standard @BBL X1C 0.2 nozzle",
		sub_path: "process/0.08mm Standard @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_process_single_0.10_nozzle_0.2",
		sub_path: "process/fdm_process_single_0.10_nozzle_0.2.json"
	},
	{
		name: "0.10mm High Quality @BBL A1 0.2 nozzle",
		sub_path: "process/0.10mm High Quality @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.10mm High Quality @BBL A1M 0.2 nozzle",
		sub_path: "process/0.10mm High Quality @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.10mm High Quality @BBL P1P 0.2 nozzle",
		sub_path: "process/0.10mm High Quality @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.10mm High Quality @BBL X1C 0.2 nozzle",
		sub_path: "process/0.10mm High Quality @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @BBL A1 0.2 nozzle",
		sub_path: "process/0.10mm Standard @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @BBL P1P 0.2 nozzle",
		sub_path: "process/0.10mm Standard @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @BBL A1M 0.2 nozzle",
		sub_path: "process/0.10mm Standard @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.10mm Standard @BBL X1C 0.2 nozzle",
		sub_path: "process/0.10mm Standard @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_process_single_0.12",
		sub_path: "process/fdm_process_single_0.12.json"
	},
	{
		name: "0.12mm Fine @BBL A1",
		sub_path: "process/0.12mm Fine @BBL A1.json"
	},
	{
		name: "0.12mm Fine @BBL A1M",
		sub_path: "process/0.12mm Fine @BBL A1M.json"
	},
	{
		name: "0.12mm Fine @BBL P1P",
		sub_path: "process/0.12mm Fine @BBL P1P.json"
	},
	{
		name: "0.12mm Fine @BBL X1C",
		sub_path: "process/0.12mm Fine @BBL X1C.json"
	},
	{
		name: "0.12mm High Quality @BBL A1",
		sub_path: "process/0.12mm High Quality @BBL A1.json"
	},
	{
		name: "0.12mm High Quality @BBL A1M",
		sub_path: "process/0.12mm High Quality @BBL A1M.json"
	},
	{
		name: "0.12mm High Quality @BBL P1P",
		sub_path: "process/0.12mm High Quality @BBL P1P.json"
	},
	{
		name: "0.12mm High Quality @BBL X1C",
		sub_path: "process/0.12mm High Quality @BBL X1C.json"
	},
	{
		name: "fdm_process_single_0.12_nozzle_0.2",
		sub_path: "process/fdm_process_single_0.12_nozzle_0.2.json"
	},
	{
		name: "0.12mm Draft @BBL A1 0.2 nozzle",
		sub_path: "process/0.12mm Draft @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.12mm Draft @BBL A1M 0.2 nozzle",
		sub_path: "process/0.12mm Draft @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.12mm Draft @BBL P1P 0.2 nozzle",
		sub_path: "process/0.12mm Draft @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.12mm Standard @BBL X1C 0.2 nozzle",
		sub_path: "process/0.12mm Standard @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_process_single_0.14_nozzle_0.2",
		sub_path: "process/fdm_process_single_0.14_nozzle_0.2.json"
	},
	{
		name: "0.14mm Extra Draft @BBL A1 0.2 nozzle",
		sub_path: "process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json"
	},
	{
		name: "0.14mm Extra Draft @BBL A1M 0.2 nozzle",
		sub_path: "process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "0.14mm Extra Draft @BBL P1P 0.2 nozzle",
		sub_path: "process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "0.14mm Standard @BBL X1C 0.2 nozzle",
		sub_path: "process/0.14mm Standard @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_process_single_0.16",
		sub_path: "process/fdm_process_single_0.16.json"
	},
	{
		name: "0.16mm High Quality @BBL A1",
		sub_path: "process/0.16mm High Quality @BBL A1.json"
	},
	{
		name: "0.16mm High Quality @BBL A1M",
		sub_path: "process/0.16mm High Quality @BBL A1M.json"
	},
	{
		name: "0.16mm High Quality @BBL P1P",
		sub_path: "process/0.16mm High Quality @BBL P1P.json"
	},
	{
		name: "0.16mm High Quality @BBL X1C",
		sub_path: "process/0.16mm High Quality @BBL X1C.json"
	},
	{
		name: "0.16mm Optimal @BBL A1",
		sub_path: "process/0.16mm Optimal @BBL A1.json"
	},
	{
		name: "0.16mm Optimal @BBL A1M",
		sub_path: "process/0.16mm Optimal @BBL A1M.json"
	},
	{
		name: "0.16mm Optimal @BBL P1P",
		sub_path: "process/0.16mm Optimal @BBL P1P.json"
	},
	{
		name: "0.16mm Optimal @BBL X1C",
		sub_path: "process/0.16mm Optimal @BBL X1C.json"
	},
	{
		name: "fdm_process_single_0.18_nozzle_0.6",
		sub_path: "process/fdm_process_single_0.18_nozzle_0.6.json"
	},
	{
		name: "0.18mm Fine @BBL A1 0.6 nozzle",
		sub_path: "process/0.18mm Fine @BBL A1 0.6 nozzle.json"
	},
	{
		name: "0.18mm Fine @BBL A1M 0.6 nozzle",
		sub_path: "process/0.18mm Fine @BBL A1M 0.6 nozzle.json"
	},
	{
		name: "0.18mm Fine @BBL P1P 0.6 nozzle",
		sub_path: "process/0.18mm Fine @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "0.18mm Standard @BBL X1C 0.6 nozzle",
		sub_path: "process/0.18mm Standard @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "fdm_process_single_0.20",
		sub_path: "process/fdm_process_single_0.20.json"
	},
	{
		name: "0.20mm Standard @BBL A1",
		sub_path: "process/0.20mm Standard @BBL A1.json"
	},
	{
		name: "0.20mm Standard @BBL P1P",
		sub_path: "process/0.20mm Standard @BBL P1P.json"
	},
	{
		name: "0.20mm Standard @BBL A1M",
		sub_path: "process/0.20mm Standard @BBL A1M.json"
	},
	{
		name: "0.20mm Standard @BBL X1C",
		sub_path: "process/0.20mm Standard @BBL X1C.json"
	},
	{
		name: "0.20mm Strength @BBL A1",
		sub_path: "process/0.20mm Strength @BBL A1.json"
	},
	{
		name: "0.20mm Strength @BBL P1P",
		sub_path: "process/0.20mm Strength @BBL P1P.json"
	},
	{
		name: "0.20mm Strength @BBL A1M",
		sub_path: "process/0.20mm Strength @BBL A1M.json"
	},
	{
		name: "0.20mm Strength @BBL X1C",
		sub_path: "process/0.20mm Strength @BBL X1C.json"
	},
	{
		name: "fdm_process_single_0.24",
		sub_path: "process/fdm_process_single_0.24.json"
	},
	{
		name: "0.24mm Draft @BBL A1",
		sub_path: "process/0.24mm Draft @BBL A1.json"
	},
	{
		name: "0.24mm Draft @BBL A1M",
		sub_path: "process/0.24mm Draft @BBL A1M.json"
	},
	{
		name: "0.24mm Draft @BBL P1P",
		sub_path: "process/0.24mm Draft @BBL P1P.json"
	},
	{
		name: "0.24mm Draft @BBL X1C",
		sub_path: "process/0.24mm Draft @BBL X1C.json"
	},
	{
		name: "fdm_process_single_0.24_nozzle_0.6",
		sub_path: "process/fdm_process_single_0.24_nozzle_0.6.json"
	},
	{
		name: "0.24mm Optimal @BBL A1 0.6 nozzle",
		sub_path: "process/0.24mm Optimal @BBL A1 0.6 nozzle.json"
	},
	{
		name: "0.24mm Optimal @BBL A1M 0.6 nozzle",
		sub_path: "process/0.24mm Optimal @BBL A1M 0.6 nozzle.json"
	},
	{
		name: "0.24mm Optimal @BBL P1P 0.6 nozzle",
		sub_path: "process/0.24mm Optimal @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "0.24mm Standard @BBL X1C 0.6 nozzle",
		sub_path: "process/0.24mm Standard @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "fdm_process_single_0.24_nozzle_0.8",
		sub_path: "process/fdm_process_single_0.24_nozzle_0.8.json"
	},
	{
		name: "0.24mm Fine @BBL A1 0.8 nozzle",
		sub_path: "process/0.24mm Fine @BBL A1 0.8 nozzle.json"
	},
	{
		name: "0.24mm Fine @BBL A1M 0.8 nozzle",
		sub_path: "process/0.24mm Fine @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "0.24mm Fine @BBL P1P 0.8 nozzle",
		sub_path: "process/0.24mm Fine @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "0.24mm Standard @BBL X1C 0.8 nozzle",
		sub_path: "process/0.24mm Standard @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "fdm_process_single_0.28",
		sub_path: "process/fdm_process_single_0.28.json"
	},
	{
		name: "0.28mm Extra Draft @BBL A1",
		sub_path: "process/0.28mm Extra Draft @BBL A1.json"
	},
	{
		name: "0.28mm Extra Draft @BBL A1M",
		sub_path: "process/0.28mm Extra Draft @BBL A1M.json"
	},
	{
		name: "0.28mm Extra Draft @BBL P1P",
		sub_path: "process/0.28mm Extra Draft @BBL P1P.json"
	},
	{
		name: "0.28mm Extra Draft @BBL X1C",
		sub_path: "process/0.28mm Extra Draft @BBL X1C.json"
	},
	{
		name: "fdm_process_single_0.30_nozzle_0.6",
		sub_path: "process/fdm_process_single_0.30_nozzle_0.6.json"
	},
	{
		name: "0.30mm Standard @BBL A1 0.6 nozzle",
		sub_path: "process/0.30mm Standard @BBL A1 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @BBL P1P 0.6 nozzle",
		sub_path: "process/0.30mm Standard @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @BBL A1M 0.6 nozzle",
		sub_path: "process/0.30mm Standard @BBL A1M 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @BBL X1 0.6 nozzle",
		sub_path: "process/0.30mm Standard @BBL X1 0.6 nozzle.json"
	},
	{
		name: "0.30mm Standard @BBL X1C 0.6 nozzle",
		sub_path: "process/0.30mm Standard @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "0.30mm Strength @BBL A1 0.6 nozzle",
		sub_path: "process/0.30mm Strength @BBL A1 0.6 nozzle.json"
	},
	{
		name: "0.30mm Strength @BBL A1M 0.6 nozzle",
		sub_path: "process/0.30mm Strength @BBL A1M 0.6 nozzle.json"
	},
	{
		name: "0.30mm Strength @BBL P1P 0.6 nozzle",
		sub_path: "process/0.30mm Strength @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "0.30mm Strength @BBL X1C 0.6 nozzle",
		sub_path: "process/0.30mm Strength @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "fdm_process_single_0.32_nozzle_0.8",
		sub_path: "process/fdm_process_single_0.32_nozzle_0.8.json"
	},
	{
		name: "0.32mm Optimal @BBL A1 0.8 nozzle",
		sub_path: "process/0.32mm Optimal @BBL A1 0.8 nozzle.json"
	},
	{
		name: "0.32mm Optimal @BBL A1M 0.8 nozzle",
		sub_path: "process/0.32mm Optimal @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "0.32mm Optimal @BBL P1P 0.8 nozzle",
		sub_path: "process/0.32mm Optimal @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "0.32mm Standard @BBL X1C 0.8 nozzle",
		sub_path: "process/0.32mm Standard @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "fdm_process_single_0.36_nozzle_0.6",
		sub_path: "process/fdm_process_single_0.36_nozzle_0.6.json"
	},
	{
		name: "0.36mm Draft @BBL A1 0.6 nozzle",
		sub_path: "process/0.36mm Draft @BBL A1 0.6 nozzle.json"
	},
	{
		name: "0.36mm Draft @BBL A1M 0.6 nozzle",
		sub_path: "process/0.36mm Draft @BBL A1M 0.6 nozzle.json"
	},
	{
		name: "0.36mm Draft @BBL P1P 0.6 nozzle",
		sub_path: "process/0.36mm Draft @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "0.36mm Standard @BBL X1C 0.6 nozzle",
		sub_path: "process/0.36mm Standard @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "fdm_process_single_0.40_nozzle_0.8",
		sub_path: "process/fdm_process_single_0.40_nozzle_0.8.json"
	},
	{
		name: "0.40mm Standard @BBL A1 0.8 nozzle",
		sub_path: "process/0.40mm Standard @BBL A1 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @BBL P1P 0.8 nozzle",
		sub_path: "process/0.40mm Standard @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @BBL A1M 0.8 nozzle",
		sub_path: "process/0.40mm Standard @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @BBL X1 0.8 nozzle",
		sub_path: "process/0.40mm Standard @BBL X1 0.8 nozzle.json"
	},
	{
		name: "0.40mm Standard @BBL X1C 0.8 nozzle",
		sub_path: "process/0.40mm Standard @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "fdm_process_single_0.42_nozzle_0.6",
		sub_path: "process/fdm_process_single_0.42_nozzle_0.6.json"
	},
	{
		name: "0.42mm Extra Draft @BBL A1 0.6 nozzle",
		sub_path: "process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json"
	},
	{
		name: "0.42mm Extra Draft @BBL A1M 0.6 nozzle",
		sub_path: "process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json"
	},
	{
		name: "0.42mm Extra Draft @BBL P1P 0.6 nozzle",
		sub_path: "process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "0.42mm Standard @BBL X1C 0.6 nozzle",
		sub_path: "process/0.42mm Standard @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "fdm_process_single_0.48_nozzle_0.8",
		sub_path: "process/fdm_process_single_0.48_nozzle_0.8.json"
	},
	{
		name: "0.48mm Draft @BBL A1 0.8 nozzle",
		sub_path: "process/0.48mm Draft @BBL A1 0.8 nozzle.json"
	},
	{
		name: "0.48mm Draft @BBL A1M 0.8 nozzle",
		sub_path: "process/0.48mm Draft @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "0.48mm Draft @BBL P1P 0.8 nozzle",
		sub_path: "process/0.48mm Draft @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "0.48mm Standard @BBL X1C 0.8 nozzle",
		sub_path: "process/0.48mm Standard @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "fdm_process_single_0.56_nozzle_0.8",
		sub_path: "process/fdm_process_single_0.56_nozzle_0.8.json"
	},
	{
		name: "0.56mm Extra Draft @BBL A1 0.8 nozzle",
		sub_path: "process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json"
	},
	{
		name: "0.56mm Extra Draft @BBL A1M 0.8 nozzle",
		sub_path: "process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "0.56mm Extra Draft @BBL P1P 0.8 nozzle",
		sub_path: "process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "0.56mm Standard @BBL X1C 0.8 nozzle",
		sub_path: "process/0.56mm Standard @BBL X1C 0.8 nozzle.json"
	}
];
var filament_list$2 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "Bambu ABS @base",
		sub_path: "filament/Bambu ABS @base.json"
	},
	{
		name: "Bambu ABS @BBL A1",
		sub_path: "filament/Bambu ABS @BBL A1.json"
	},
	{
		name: "Bambu ABS @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu ABS @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL H2D",
		sub_path: "filament/Bambu ABS @BBL H2D.json"
	},
	{
		name: "Bambu ABS @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu ABS @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu ABS @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL P1P",
		sub_path: "filament/P1P/Bambu ABS @BBL P1P.json"
	},
	{
		name: "Bambu ABS @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL X1C",
		sub_path: "filament/Bambu ABS @BBL X1C.json"
	},
	{
		name: "Bambu ABS @BBL X1E",
		sub_path: "filament/Bambu ABS @BBL X1E.json"
	},
	{
		name: "Bambu ABS @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu ABS @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL X1E 0.2 nozzle",
		sub_path: "filament/Bambu ABS @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu ABS @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu ABS @BBL X1E 0.8 nozzle",
		sub_path: "filament/Bambu ABS @BBL X1E 0.8 nozzle.json"
	},
	{
		name: "Bambu ABS-GF @base",
		sub_path: "filament/Bambu ABS-GF @base.json"
	},
	{
		name: "Bambu ABS-GF @BBL A1",
		sub_path: "filament/Bambu ABS-GF @BBL A1.json"
	},
	{
		name: "Bambu ABS-GF @BBL H2D",
		sub_path: "filament/Bambu ABS-GF @BBL H2D.json"
	},
	{
		name: "Bambu ABS-GF @BBL P1P",
		sub_path: "filament/Bambu ABS-GF @BBL P1P.json"
	},
	{
		name: "Bambu ABS-GF @BBL X1C",
		sub_path: "filament/Bambu ABS-GF @BBL X1C.json"
	},
	{
		name: "Bambu Support for ABS @base",
		sub_path: "filament/Bambu Support for ABS @base.json"
	},
	{
		name: "Bambu Support for ABS @BBL A1",
		sub_path: "filament/Bambu Support for ABS @BBL A1.json"
	},
	{
		name: "Bambu Support for ABS @BBL H2D",
		sub_path: "filament/Bambu Support for ABS @BBL H2D.json"
	},
	{
		name: "Bambu Support for ABS @BBL X1C",
		sub_path: "filament/Bambu Support for ABS @BBL X1C.json"
	},
	{
		name: "Generic ABS @base",
		sub_path: "filament/Generic ABS @base.json"
	},
	{
		name: "Generic ABS",
		sub_path: "filament/Generic ABS.json"
	},
	{
		name: "Generic ABS @BBL X1E",
		sub_path: "filament/Generic ABS @BBL X1E.json"
	},
	{
		name: "Generic ABS @0.2 nozzle",
		sub_path: "filament/Generic ABS @0.2 nozzle.json"
	},
	{
		name: "Generic ABS @BBL X1E 0.2 nozzle",
		sub_path: "filament/Generic ABS @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Generic ABS @BBL A1",
		sub_path: "filament/Generic ABS @BBL A1.json"
	},
	{
		name: "Generic ABS @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic ABS @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic ABS @BBL H2D",
		sub_path: "filament/Generic ABS @BBL H2D.json"
	},
	{
		name: "Generic ABS @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic ABS @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic ABS @BBL P1P",
		sub_path: "filament/P1P/Generic ABS @BBL P1P.json"
	},
	{
		name: "Generic ABS @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Generic ABS @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyLite ABS @base",
		sub_path: "filament/PolyLite ABS @base.json"
	},
	{
		name: "PolyLite ABS @BBL A1",
		sub_path: "filament/PolyLite ABS @BBL A1.json"
	},
	{
		name: "PolyLite ABS @BBL A1 0.2 nozzle",
		sub_path: "filament/PolyLite ABS @BBL A1 0.2 nozzle.json"
	},
	{
		name: "PolyLite ABS @BBL H2D",
		sub_path: "filament/PolyLite ABS @BBL H2D.json"
	},
	{
		name: "PolyLite ABS @BBL H2D 0.2 nozzle",
		sub_path: "filament/PolyLite ABS @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "PolyLite ABS @BBL P1P",
		sub_path: "filament/PolyLite ABS @BBL P1P.json"
	},
	{
		name: "PolyLite ABS @BBL P1P 0.2 nozzle",
		sub_path: "filament/PolyLite ABS @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyLite ABS @BBL X1C",
		sub_path: "filament/PolyLite ABS @BBL X1C.json"
	},
	{
		name: "PolyLite ABS @BBL X1C 0.2 nozzle",
		sub_path: "filament/PolyLite ABS @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "PolyLite ABS @BBL X1E 0.2 nozzle",
		sub_path: "filament/PolyLite ABS @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "PolyLite ABS @BBL X1E",
		sub_path: "filament/PolyLite ABS @BBL X1E.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "Bambu ASA @base",
		sub_path: "filament/Bambu ASA @base.json"
	},
	{
		name: "Bambu ASA @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu ASA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL A1 0.4 nozzle",
		sub_path: "filament/Bambu ASA @BBL A1 0.4 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL A1 0.6 nozzle",
		sub_path: "filament/Bambu ASA @BBL A1 0.6 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu ASA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu ASA @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu ASA @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL X1 0.2 nozzle",
		sub_path: "filament/Bambu ASA @BBL X1 0.2 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL X1 0.6 nozzle",
		sub_path: "filament/Bambu ASA @BBL X1 0.6 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL X1C",
		sub_path: "filament/Bambu ASA @BBL X1C.json"
	},
	{
		name: "Bambu ASA @BBL X1E",
		sub_path: "filament/Bambu ASA @BBL X1E.json"
	},
	{
		name: "Bambu ASA @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu ASA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL X1E 0.2 nozzle",
		sub_path: "filament/Bambu ASA @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL X1C 0.4 nozzle",
		sub_path: "filament/Bambu ASA @BBL X1C 0.4 nozzle.json"
	},
	{
		name: "Bambu ASA @BBL X1E 0.4 nozzle",
		sub_path: "filament/Bambu ASA @BBL X1E 0.4 nozzle.json"
	},
	{
		name: "Bambu ASA-Aero @base",
		sub_path: "filament/Bambu ASA-Aero @base.json"
	},
	{
		name: "Bambu ASA-Aero @BBL A1",
		sub_path: "filament/Bambu ASA-Aero @BBL A1.json"
	},
	{
		name: "Bambu ASA-Aero @BBL H2D",
		sub_path: "filament/Bambu ASA-Aero @BBL H2D.json"
	},
	{
		name: "Bambu ASA-Aero @BBL P1P",
		sub_path: "filament/Bambu ASA-Aero @BBL P1P.json"
	},
	{
		name: "Bambu ASA-Aero @BBL X1C",
		sub_path: "filament/Bambu ASA-Aero @BBL X1C.json"
	},
	{
		name: "Bambu ASA-CF @base",
		sub_path: "filament/Bambu ASA-CF @base.json"
	},
	{
		name: "Bambu ASA-CF @BBL A1",
		sub_path: "filament/Bambu ASA-CF @BBL A1.json"
	},
	{
		name: "Bambu ASA-CF @BBL A1 0.6 nozzle",
		sub_path: "filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json"
	},
	{
		name: "Bambu ASA-CF @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu ASA-CF @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu ASA-CF @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu ASA-CF @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu ASA-CF @BBL P1P",
		sub_path: "filament/Bambu ASA-CF @BBL P1P.json"
	},
	{
		name: "Bambu ASA-CF @BBL P1P 0.6 nozzle",
		sub_path: "filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json"
	},
	{
		name: "Bambu ASA-CF @BBL X1C",
		sub_path: "filament/Bambu ASA-CF @BBL X1C.json"
	},
	{
		name: "Bambu ASA-CF @BBL X1C 0.6 nozzle",
		sub_path: "filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "Generic ASA @base",
		sub_path: "filament/Generic ASA @base.json"
	},
	{
		name: "Generic ASA",
		sub_path: "filament/Generic ASA.json"
	},
	{
		name: "Generic ASA @BBL X1E",
		sub_path: "filament/Generic ASA @BBL X1E.json"
	},
	{
		name: "Generic ASA @0.2 nozzle",
		sub_path: "filament/Generic ASA @0.2 nozzle.json"
	},
	{
		name: "Generic ASA @BBL X1E 0.2 nozzle",
		sub_path: "filament/Generic ASA @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Generic ASA @BBL A1",
		sub_path: "filament/Generic ASA @BBL A1.json"
	},
	{
		name: "Generic ASA @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic ASA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic ASA @BBL H2D",
		sub_path: "filament/Generic ASA @BBL H2D.json"
	},
	{
		name: "Generic ASA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic ASA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic ASA @BBL P1P",
		sub_path: "filament/P1P/Generic ASA @BBL P1P.json"
	},
	{
		name: "Generic ASA @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Generic ASA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyLite ASA @base",
		sub_path: "filament/PolyLite ASA @base.json"
	},
	{
		name: "PolyLite ASA @BBL A1",
		sub_path: "filament/PolyLite ASA @BBL A1.json"
	},
	{
		name: "PolyLite ASA @BBL A1 0.2 nozzle",
		sub_path: "filament/PolyLite ASA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "PolyLite ASA @BBL H2D",
		sub_path: "filament/PolyLite ASA @BBL H2D.json"
	},
	{
		name: "PolyLite ASA @BBL H2D 0.2 nozzle",
		sub_path: "filament/PolyLite ASA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "PolyLite ASA @BBL P1P",
		sub_path: "filament/PolyLite ASA @BBL P1P.json"
	},
	{
		name: "PolyLite ASA @BBL P1P 0.2 nozzle",
		sub_path: "filament/PolyLite ASA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyLite ASA @BBL X1C",
		sub_path: "filament/PolyLite ASA @BBL X1C.json"
	},
	{
		name: "PolyLite ASA @BBL X1C 0.2 nozzle",
		sub_path: "filament/PolyLite ASA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "PolyLite ASA @BBL X1E",
		sub_path: "filament/PolyLite ASA @BBL X1E.json"
	},
	{
		name: "PolyLite ASA @BBL X1E 0.2 nozzle",
		sub_path: "filament/PolyLite ASA @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "fdm_filament_bvoh",
		sub_path: "filament/fdm_filament_bvoh.json"
	},
	{
		name: "Generic BVOH @base",
		sub_path: "filament/Generic BVOH @base.json"
	},
	{
		name: "Generic BVOH @BBL A1",
		sub_path: "filament/Generic BVOH @BBL A1.json"
	},
	{
		name: "Generic BVOH @BBL A1M",
		sub_path: "filament/Generic BVOH @BBL A1M.json"
	},
	{
		name: "Generic BVOH @BBL H2D",
		sub_path: "filament/Generic BVOH @BBL H2D.json"
	},
	{
		name: "Generic BVOH @BBL X1C",
		sub_path: "filament/Generic BVOH @BBL X1C.json"
	},
	{
		name: "fdm_filament_eva",
		sub_path: "filament/fdm_filament_eva.json"
	},
	{
		name: "Generic EVA @base",
		sub_path: "filament/Generic EVA @base.json"
	},
	{
		name: "Generic EVA @BBL A1",
		sub_path: "filament/Generic EVA @BBL A1.json"
	},
	{
		name: "Generic EVA @BBL A1M",
		sub_path: "filament/Generic EVA @BBL A1M.json"
	},
	{
		name: "Generic EVA @BBL H2D",
		sub_path: "filament/Generic EVA @BBL H2D.json"
	},
	{
		name: "Generic EVA @BBL X1C",
		sub_path: "filament/Generic EVA @BBL X1C.json"
	},
	{
		name: "fdm_filament_hips",
		sub_path: "filament/fdm_filament_hips.json"
	},
	{
		name: "Generic HIPS @base",
		sub_path: "filament/Generic HIPS @base.json"
	},
	{
		name: "Generic HIPS @BBL A1",
		sub_path: "filament/Generic HIPS @BBL A1.json"
	},
	{
		name: "Generic HIPS @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic HIPS @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic HIPS @BBL A1M",
		sub_path: "filament/Generic HIPS @BBL A1M.json"
	},
	{
		name: "Generic HIPS @BBL A1M 0.2 nozzle",
		sub_path: "filament/Generic HIPS @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Generic HIPS @BBL H2D",
		sub_path: "filament/Generic HIPS @BBL H2D.json"
	},
	{
		name: "Generic HIPS @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic HIPS @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic HIPS @BBL X1C",
		sub_path: "filament/Generic HIPS @BBL X1C.json"
	},
	{
		name: "Generic HIPS @BBL X1C 0.2 nozzle",
		sub_path: "filament/Generic HIPS @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "Bambu PA-CF @base",
		sub_path: "filament/Bambu PA-CF @base.json"
	},
	{
		name: "Bambu PA-CF @BBL A1",
		sub_path: "filament/Bambu PA-CF @BBL A1.json"
	},
	{
		name: "Bambu PA-CF @BBL H2D",
		sub_path: "filament/Bambu PA-CF @BBL H2D.json"
	},
	{
		name: "Bambu PA-CF @BBL P1P",
		sub_path: "filament/P1P/Bambu PA-CF @BBL P1P.json"
	},
	{
		name: "Bambu PA-CF @BBL X1C",
		sub_path: "filament/Bambu PA-CF @BBL X1C.json"
	},
	{
		name: "Bambu PA-CF @BBL X1E",
		sub_path: "filament/Bambu PA-CF @BBL X1E.json"
	},
	{
		name: "Bambu PA6-CF @base",
		sub_path: "filament/Bambu PA6-CF @base.json"
	},
	{
		name: "Bambu PA6-CF @BBL A1",
		sub_path: "filament/Bambu PA6-CF @BBL A1.json"
	},
	{
		name: "Bambu PA6-CF @BBL H2D",
		sub_path: "filament/Bambu PA6-CF @BBL H2D.json"
	},
	{
		name: "Bambu PA6-CF @BBL X1C",
		sub_path: "filament/Bambu PA6-CF @BBL X1C.json"
	},
	{
		name: "Bambu PA6-CF @BBL X1E",
		sub_path: "filament/Bambu PA6-CF @BBL X1E.json"
	},
	{
		name: "Bambu PA6-GF @base",
		sub_path: "filament/Bambu PA6-GF @base.json"
	},
	{
		name: "Bambu PA6-GF @BBL A1",
		sub_path: "filament/Bambu PA6-GF @BBL A1.json"
	},
	{
		name: "Bambu PA6-GF @BBL H2D",
		sub_path: "filament/Bambu PA6-GF @BBL H2D.json"
	},
	{
		name: "Bambu PA6-GF @BBL P1P",
		sub_path: "filament/Bambu PA6-GF @BBL P1P.json"
	},
	{
		name: "Bambu PA6-GF @BBL X1C",
		sub_path: "filament/Bambu PA6-GF @BBL X1C.json"
	},
	{
		name: "Bambu PAHT-CF @base",
		sub_path: "filament/Bambu PAHT-CF @base.json"
	},
	{
		name: "Bambu PAHT-CF @BBL A1",
		sub_path: "filament/Bambu PAHT-CF @BBL A1.json"
	},
	{
		name: "Bambu PAHT-CF @BBL H2D",
		sub_path: "filament/Bambu PAHT-CF @BBL H2D.json"
	},
	{
		name: "Bambu PAHT-CF @BBL P1P",
		sub_path: "filament/P1P/Bambu PAHT-CF @BBL P1P.json"
	},
	{
		name: "Bambu PAHT-CF @BBL X1C",
		sub_path: "filament/Bambu PAHT-CF @BBL X1C.json"
	},
	{
		name: "Bambu Support For PA/PET @base",
		sub_path: "filament/Bambu Support For PA PET @base.json"
	},
	{
		name: "Bambu Support For PA/PET @BBL A1",
		sub_path: "filament/Bambu Support For PA PET @BBL A1.json"
	},
	{
		name: "Bambu Support For PA/PET @BBL H2D",
		sub_path: "filament/Bambu Support For PA PET @BBL H2D.json"
	},
	{
		name: "Bambu Support For PA/PET @BBL P1P",
		sub_path: "filament/P1P/Bambu Support For PA PET @BBL P1P.json"
	},
	{
		name: "Bambu Support For PA/PET @BBL X1C",
		sub_path: "filament/Bambu Support For PA PET @BBL X1C.json"
	},
	{
		name: "Bambu Support G @base",
		sub_path: "filament/Bambu Support G @base.json"
	},
	{
		name: "Bambu Support G @BBL A1",
		sub_path: "filament/Bambu Support G @BBL A1.json"
	},
	{
		name: "Bambu Support G @BBL H2D",
		sub_path: "filament/Bambu Support G @BBL H2D.json"
	},
	{
		name: "Bambu Support G @BBL P1P",
		sub_path: "filament/P1P/Bambu Support G @BBL P1P.json"
	},
	{
		name: "Bambu Support G @BBL X1C",
		sub_path: "filament/Bambu Support G @BBL X1C.json"
	},
	{
		name: "Bambu Support G @BBL X1E",
		sub_path: "filament/Bambu Support G @BBL X1E.json"
	},
	{
		name: "Fiberon PA12-CF @base",
		sub_path: "filament/Fiberon PA12-CF @base.json"
	},
	{
		name: "Fiberon PA12-CF @BBL X1C",
		sub_path: "filament/Fiberon PA12-CF @BBL X1C.json"
	},
	{
		name: "Fiberon PA6-CF @base",
		sub_path: "filament/Fiberon PA6-CF @base.json"
	},
	{
		name: "Fiberon PA6-CF @BBL X1C",
		sub_path: "filament/Fiberon PA6-CF @BBL X1C.json"
	},
	{
		name: "Fiberon PA6-GF @base",
		sub_path: "filament/Fiberon PA6-GF @base.json"
	},
	{
		name: "Fiberon PA6-GF @BBL X1C",
		sub_path: "filament/Fiberon PA6-GF @BBL X1C.json"
	},
	{
		name: "Fiberon PA612-CF @base",
		sub_path: "filament/Fiberon PA612-CF @base.json"
	},
	{
		name: "Fiberon PA612-CF @BBL X1C",
		sub_path: "filament/Fiberon PA612-CF @BBL X1C.json"
	},
	{
		name: "Generic PA @base",
		sub_path: "filament/Generic PA @base.json"
	},
	{
		name: "Generic PA",
		sub_path: "filament/Generic PA.json"
	},
	{
		name: "Generic PA @BBL A1",
		sub_path: "filament/Generic PA @BBL A1.json"
	},
	{
		name: "Generic PA @BBL H2D",
		sub_path: "filament/Generic PA @BBL H2D.json"
	},
	{
		name: "Generic PA @BBL P1P",
		sub_path: "filament/P1P/Generic PA @BBL P1P.json"
	},
	{
		name: "Generic PA-CF @base",
		sub_path: "filament/Generic PA-CF @base.json"
	},
	{
		name: "Generic PA-CF",
		sub_path: "filament/Generic PA-CF.json"
	},
	{
		name: "Generic PA-CF @BBL A1",
		sub_path: "filament/Generic PA-CF @BBL A1.json"
	},
	{
		name: "Generic PA-CF @BBL H2D",
		sub_path: "filament/Generic PA-CF @BBL H2D.json"
	},
	{
		name: "Generic PA-CF @BBL X1E",
		sub_path: "filament/Generic PA-CF @BBL X1E.json"
	},
	{
		name: "Generic PA-CF @BBL P1P",
		sub_path: "filament/P1P/Generic PA-CF @BBL P1P.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "Bambu PC @base",
		sub_path: "filament/Bambu PC @base.json"
	},
	{
		name: "Bambu PC @BBL A1",
		sub_path: "filament/Bambu PC @BBL A1.json"
	},
	{
		name: "Bambu PC @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PC @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PC @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PC @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PC @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PC @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PC @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PC @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PC @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PC @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PC @BBL P1P",
		sub_path: "filament/P1P/Bambu PC @BBL P1P.json"
	},
	{
		name: "Bambu PC @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu PC @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PC @BBL X1C",
		sub_path: "filament/Bambu PC @BBL X1C.json"
	},
	{
		name: "Bambu PC @BBL P1S",
		sub_path: "filament/Bambu PC @BBL P1S.json"
	},
	{
		name: "Bambu PC @BBL X1E",
		sub_path: "filament/Bambu PC @BBL X1E.json"
	},
	{
		name: "Bambu PC @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PC @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PC @BBL P1S 0.2 nozzle",
		sub_path: "filament/Bambu PC @BBL P1S 0.2 nozzle.json"
	},
	{
		name: "Bambu PC @BBL X1E 0.2 nozzle",
		sub_path: "filament/Bambu PC @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Bambu PC @BBL X1C 0.6 nozzle",
		sub_path: "filament/Bambu PC @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "Bambu PC @BBL P1S 0.6 nozzle",
		sub_path: "filament/Bambu PC @BBL P1S 0.6 nozzle.json"
	},
	{
		name: "Bambu PC @BBL X1E 0.6 nozzle",
		sub_path: "filament/Bambu PC @BBL X1E 0.6 nozzle.json"
	},
	{
		name: "Bambu PC @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PC @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PC @BBL P1S 0.8 nozzle",
		sub_path: "filament/Bambu PC @BBL P1S 0.8 nozzle.json"
	},
	{
		name: "Bambu PC @BBL X1E 0.8 nozzle",
		sub_path: "filament/Bambu PC @BBL X1E 0.8 nozzle.json"
	},
	{
		name: "Bambu PC FR @base",
		sub_path: "filament/Bambu PC FR @base.json"
	},
	{
		name: "Bambu PC FR @BBL A1",
		sub_path: "filament/Bambu PC FR @BBL A1.json"
	},
	{
		name: "Bambu PC FR @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PC FR @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PC FR @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PC FR @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PC FR @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PC FR @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL P1P",
		sub_path: "filament/Bambu PC FR @BBL P1P.json"
	},
	{
		name: "Bambu PC FR @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PC FR @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL P1S",
		sub_path: "filament/Bambu PC FR @BBL P1S.json"
	},
	{
		name: "Bambu PC FR @BBL P1S 0.2 nozzle",
		sub_path: "filament/Bambu PC FR @BBL P1S 0.2 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL P1S 0.6 nozzle",
		sub_path: "filament/Bambu PC FR @BBL P1S 0.6 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL P1S 0.8 nozzle",
		sub_path: "filament/Bambu PC FR @BBL P1S 0.8 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL X1C",
		sub_path: "filament/Bambu PC FR @BBL X1C.json"
	},
	{
		name: "Bambu PC FR @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PC FR @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL X1C 0.6 nozzle",
		sub_path: "filament/Bambu PC FR @BBL X1C 0.6 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PC FR @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL X1E",
		sub_path: "filament/Bambu PC FR @BBL X1E.json"
	},
	{
		name: "Bambu PC FR @BBL X1E 0.2 nozzle",
		sub_path: "filament/Bambu PC FR @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL X1E 0.6 nozzle",
		sub_path: "filament/Bambu PC FR @BBL X1E 0.6 nozzle.json"
	},
	{
		name: "Bambu PC FR @BBL X1E 0.8 nozzle",
		sub_path: "filament/Bambu PC FR @BBL X1E 0.8 nozzle.json"
	},
	{
		name: "Generic PC @base",
		sub_path: "filament/Generic PC @base.json"
	},
	{
		name: "Generic PC",
		sub_path: "filament/Generic PC.json"
	},
	{
		name: "Generic PC @BBL P1S",
		sub_path: "filament/Generic PC @BBL P1S.json"
	},
	{
		name: "Generic PC @BBL X1E",
		sub_path: "filament/Generic PC @BBL X1E.json"
	},
	{
		name: "Generic PC @0.2 nozzle",
		sub_path: "filament/Generic PC @0.2 nozzle.json"
	},
	{
		name: "Generic PC @BBL P1S 0.2 nozzle",
		sub_path: "filament/Generic PC @BBL P1S 0.2 nozzle.json"
	},
	{
		name: "Generic PC @BBL X1E 0.2 nozzle",
		sub_path: "filament/Generic PC @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Generic PC @BBL A1",
		sub_path: "filament/Generic PC @BBL A1.json"
	},
	{
		name: "Generic PC @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic PC @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic PC @BBL H2D",
		sub_path: "filament/Generic PC @BBL H2D.json"
	},
	{
		name: "Generic PC @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic PC @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic PC @BBL P1P",
		sub_path: "filament/P1P/Generic PC @BBL P1P.json"
	},
	{
		name: "Generic PC @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Generic PC @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "fdm_filament_pctg",
		sub_path: "filament/fdm_filament_pctg.json"
	},
	{
		name: "Generic PCTG @base",
		sub_path: "filament/Generic PCTG @base.json"
	},
	{
		name: "Generic PCTG @BBL A1",
		sub_path: "filament/Generic PCTG @BBL A1.json"
	},
	{
		name: "Generic PCTG @BBL A1M",
		sub_path: "filament/Generic PCTG @BBL A1M.json"
	},
	{
		name: "Generic PCTG @BBL H2D",
		sub_path: "filament/Generic PCTG @BBL H2D.json"
	},
	{
		name: "Generic PCTG @BBL X1C",
		sub_path: "filament/Generic PCTG @BBL X1C.json"
	},
	{
		name: "fdm_filament_pe",
		sub_path: "filament/fdm_filament_pe.json"
	},
	{
		name: "Generic PE @base",
		sub_path: "filament/Generic PE @base.json"
	},
	{
		name: "Generic PE @BBL A1",
		sub_path: "filament/Generic PE @BBL A1.json"
	},
	{
		name: "Generic PE @BBL A1M",
		sub_path: "filament/Generic PE @BBL A1M.json"
	},
	{
		name: "Generic PE @BBL H2D",
		sub_path: "filament/Generic PE @BBL H2D.json"
	},
	{
		name: "Generic PE @BBL X1C",
		sub_path: "filament/Generic PE @BBL X1C.json"
	},
	{
		name: "Generic PE-CF @base",
		sub_path: "filament/Generic PE-CF @base.json"
	},
	{
		name: "Generic PE-CF @BBL A1",
		sub_path: "filament/Generic PE-CF @BBL A1.json"
	},
	{
		name: "Generic PE-CF @BBL A1M",
		sub_path: "filament/Generic PE-CF @BBL A1M.json"
	},
	{
		name: "Generic PE-CF @BBL H2D",
		sub_path: "filament/Generic PE-CF @BBL H2D.json"
	},
	{
		name: "Generic PE-CF @BBL X1C",
		sub_path: "filament/Generic PE-CF @BBL X1C.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "Bambu PET-CF @base",
		sub_path: "filament/Bambu PET-CF @base.json"
	},
	{
		name: "Bambu PET-CF @BBL A1",
		sub_path: "filament/Bambu PET-CF @BBL A1.json"
	},
	{
		name: "Bambu PET-CF @BBL H2D",
		sub_path: "filament/Bambu PET-CF @BBL H2D.json"
	},
	{
		name: "Bambu PET-CF @BBL P1P",
		sub_path: "filament/P1P/Bambu PET-CF @BBL P1P.json"
	},
	{
		name: "Bambu PET-CF @BBL X1C",
		sub_path: "filament/Bambu PET-CF @BBL X1C.json"
	},
	{
		name: "Bambu PET-CF @BBL X1E",
		sub_path: "filament/Bambu PET-CF @BBL X1E.json"
	},
	{
		name: "Bambu PETG Basic @base",
		sub_path: "filament/Bambu PETG Basic @base.json"
	},
	{
		name: "Bambu PETG Basic @BBL A1",
		sub_path: "filament/Bambu PETG Basic @BBL A1.json"
	},
	{
		name: "Bambu PETG Basic @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL A1 0.8 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL A1 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL X1C",
		sub_path: "filament/Bambu PETG Basic @BBL X1C.json"
	},
	{
		name: "Bambu PETG Basic @BBL A1M 0.4 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG Basic @BBL A1M 0.8 nozzle",
		sub_path: "filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG HF @base",
		sub_path: "filament/Bambu PETG HF @base.json"
	},
	{
		name: "Bambu PETG HF @BBL A1",
		sub_path: "filament/Bambu PETG HF @BBL A1.json"
	},
	{
		name: "Bambu PETG HF @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL A1 0.8 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL A1 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL A1M",
		sub_path: "filament/Bambu PETG HF @BBL A1M.json"
	},
	{
		name: "Bambu PETG HF @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL A1M 0.8 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL X1C",
		sub_path: "filament/Bambu PETG HF @BBL X1C.json"
	},
	{
		name: "Bambu PETG HF @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG HF @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @base",
		sub_path: "filament/Bambu PETG Translucent @base.json"
	},
	{
		name: "Bambu PETG Translucent @BBL A1",
		sub_path: "filament/Bambu PETG Translucent @BBL A1.json"
	},
	{
		name: "Bambu PETG Translucent @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL A1 0.8 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL A1M",
		sub_path: "filament/Bambu PETG Translucent @BBL A1M.json"
	},
	{
		name: "Bambu PETG Translucent @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL A1M 0.8 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL X1C",
		sub_path: "filament/Bambu PETG Translucent @BBL X1C.json"
	},
	{
		name: "Bambu PETG Translucent @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PETG Translucent @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @base",
		sub_path: "filament/Bambu PETG-CF @base.json"
	},
	{
		name: "Bambu PETG-CF @BBL A1 0.4 nozzle",
		sub_path: "filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @BBL A1 0.8 nozzle",
		sub_path: "filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @BBL A1M",
		sub_path: "filament/Bambu PETG-CF @BBL A1M.json"
	},
	{
		name: "Bambu PETG-CF @BBL A1M 0.4 nozzle",
		sub_path: "filament/Bambu PETG-CF @BBL A1M 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PETG-CF @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PETG-CF @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @BBL P1P",
		sub_path: "filament/P1P/Bambu PETG-CF @BBL P1P.json"
	},
	{
		name: "Bambu PETG-CF @BBL P1P 0.4 nozzle",
		sub_path: "filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json"
	},
	{
		name: "Bambu PETG-CF @BBL X1C",
		sub_path: "filament/Bambu PETG-CF @BBL X1C.json"
	},
	{
		name: "Bambu PETG-CF @BBL X1C 0.4 nozzle",
		sub_path: "filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json"
	},
	{
		name: "Fiberon PET-CF @base",
		sub_path: "filament/Fiberon PET-CF @base.json"
	},
	{
		name: "Fiberon PET-CF @BBL X1C",
		sub_path: "filament/Fiberon PET-CF @BBL X1C.json"
	},
	{
		name: "Fiberon PETG-ESD @base",
		sub_path: "filament/Fiberon PETG-ESD @base.json"
	},
	{
		name: "Fiberon PETG-ESD @BBL X1C",
		sub_path: "filament/Fiberon PETG-ESD @BBL X1C.json"
	},
	{
		name: "Fiberon PETG-rCF @base",
		sub_path: "filament/Fiberon PETG-rCF @base.json"
	},
	{
		name: "Fiberon PETG-rCF @BBL X1C",
		sub_path: "filament/Fiberon PETG-rCF @BBL X1C.json"
	},
	{
		name: "Generic PETG @base",
		sub_path: "filament/Generic PETG @base.json"
	},
	{
		name: "Generic PETG",
		sub_path: "filament/Generic PETG.json"
	},
	{
		name: "Generic PETG @0.2 nozzle",
		sub_path: "filament/Generic PETG @0.2 nozzle.json"
	},
	{
		name: "Generic PETG @BBL A1",
		sub_path: "filament/Generic PETG @BBL A1.json"
	},
	{
		name: "Generic PETG @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic PETG @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic PETG @BBL A1M",
		sub_path: "filament/Generic PETG @BBL A1M.json"
	},
	{
		name: "Generic PETG @BBL A1M 0.2 nozzle",
		sub_path: "filament/Generic PETG @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Generic PETG @BBL H2D",
		sub_path: "filament/Generic PETG @BBL H2D.json"
	},
	{
		name: "Generic PETG @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic PETG @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic PETG @BBL P1P",
		sub_path: "filament/P1P/Generic PETG @BBL P1P.json"
	},
	{
		name: "Generic PETG @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Generic PETG @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Generic PETG HF @base",
		sub_path: "filament/Generic PETG HF @base.json"
	},
	{
		name: "Generic PETG HF @BBL A1",
		sub_path: "filament/Generic PETG HF @BBL A1.json"
	},
	{
		name: "Generic PETG HF @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic PETG HF @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic PETG HF @BBL A1M",
		sub_path: "filament/Generic PETG HF @BBL A1M.json"
	},
	{
		name: "Generic PETG HF @BBL A1M 0.2 nozzle",
		sub_path: "filament/Generic PETG HF @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Generic PETG HF @BBL H2D",
		sub_path: "filament/Generic PETG HF @BBL H2D.json"
	},
	{
		name: "Generic PETG HF @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic PETG HF @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic PETG HF @BBL P1P",
		sub_path: "filament/Generic PETG HF @BBL P1P.json"
	},
	{
		name: "Generic PETG HF @BBL P1P 0.2 nozzle",
		sub_path: "filament/Generic PETG HF @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Generic PETG HF @BBL X1C",
		sub_path: "filament/Generic PETG HF @BBL X1C.json"
	},
	{
		name: "Generic PETG HF @BBL X1C 0.2 nozzle",
		sub_path: "filament/Generic PETG HF @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Generic PETG-CF @base",
		sub_path: "filament/Generic PETG-CF @base.json"
	},
	{
		name: "Generic PETG-CF @BBL A1",
		sub_path: "filament/Generic PETG-CF @BBL A1.json"
	},
	{
		name: "Generic PETG-CF @BBL H2D",
		sub_path: "filament/Generic PETG-CF @BBL H2D.json"
	},
	{
		name: "Generic PETG-CF @BBL P1P",
		sub_path: "filament/P1P/Generic PETG-CF @BBL P1P.json"
	},
	{
		name: "Generic PETG-CF @BBL A1M",
		sub_path: "filament/P1P/Generic PETG-CF @BBL A1M.json"
	},
	{
		name: "Generic PETG-CF @BBL X1C",
		sub_path: "filament/Generic PETG-CF @BBL X1C.json"
	},
	{
		name: "PolyLite PETG @base",
		sub_path: "filament/PolyLite PETG @base.json"
	},
	{
		name: "PolyLite PETG @BBL A1",
		sub_path: "filament/PolyLite PETG @BBL A1.json"
	},
	{
		name: "PolyLite PETG @BBL A1 0.2 nozzle",
		sub_path: "filament/PolyLite PETG @BBL A1 0.2 nozzle.json"
	},
	{
		name: "PolyLite PETG @BBL A1M",
		sub_path: "filament/PolyLite PETG @BBL A1M.json"
	},
	{
		name: "PolyLite PETG @BBL A1M 0.2 nozzle",
		sub_path: "filament/PolyLite PETG @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "PolyLite PETG @BBL H2D",
		sub_path: "filament/PolyLite PETG @BBL H2D.json"
	},
	{
		name: "PolyLite PETG @BBL H2D 0.2 nozzle",
		sub_path: "filament/PolyLite PETG @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "PolyLite PETG @BBL P1P",
		sub_path: "filament/PolyLite PETG @BBL P1P.json"
	},
	{
		name: "PolyLite PETG @BBL P1P 0.2 nozzle",
		sub_path: "filament/PolyLite PETG @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyLite PETG @BBL X1C",
		sub_path: "filament/PolyLite PETG @BBL X1C.json"
	},
	{
		name: "PolyLite PETG @BBL X1C 0.2 nozzle",
		sub_path: "filament/PolyLite PETG @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU PETG @base",
		sub_path: "filament/SUNLU/SUNLU PETG @base.json"
	},
	{
		name: "SUNLU PETG @BBL A1",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL A1.json"
	},
	{
		name: "SUNLU PETG @BBL A1 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL A1 0.2 nozzle.json"
	},
	{
		name: "SUNLU PETG @BBL A1 0.8 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL A1 0.8 nozzle.json"
	},
	{
		name: "SUNLU PETG @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL X1C.json"
	},
	{
		name: "SUNLU PETG @BBL A1M 0.4 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL A1M.json"
	},
	{
		name: "SUNLU PETG @BBL X1C 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU PETG @BBL A1M 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "SUNLU PETG @BBL X1C 0.8 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "SUNLU PETG @BBL A1M 0.8 nozzle",
		sub_path: "filament/SUNLU/SUNLU PETG @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "fdm_filament_pha",
		sub_path: "filament/fdm_filament_pha.json"
	},
	{
		name: "Generic PHA @base",
		sub_path: "filament/Generic PHA @base.json"
	},
	{
		name: "Generic PHA @BBL A1",
		sub_path: "filament/Generic PHA @BBL A1.json"
	},
	{
		name: "Generic PHA @BBL A1M",
		sub_path: "filament/Generic PHA @BBL A1M.json"
	},
	{
		name: "Generic PHA @BBL H2D",
		sub_path: "filament/Generic PHA @BBL H2D.json"
	},
	{
		name: "Generic PHA @BBL X1C",
		sub_path: "filament/Generic PHA @BBL X1C.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "Bambu PLA Aero @base",
		sub_path: "filament/Bambu PLA Aero @base.json"
	},
	{
		name: "Bambu PLA Aero @BBL A1",
		sub_path: "filament/Bambu PLA Aero @BBL A1.json"
	},
	{
		name: "Bambu PLA Aero @BBL A1M",
		sub_path: "filament/Bambu PLA Aero @BBL A1M.json"
	},
	{
		name: "Bambu PLA Aero @BBL H2D",
		sub_path: "filament/Bambu PLA Aero @BBL H2D.json"
	},
	{
		name: "Bambu PLA Aero @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Aero @BBL P1P.json"
	},
	{
		name: "Bambu PLA Aero @BBL X1",
		sub_path: "filament/Bambu PLA Aero @BBL X1.json"
	},
	{
		name: "Bambu PLA Aero @BBL X1C",
		sub_path: "filament/Bambu PLA Aero @BBL X1C.json"
	},
	{
		name: "Bambu PLA Basic @base",
		sub_path: "filament/Bambu PLA Basic @base.json"
	},
	{
		name: "Bambu PLA Basic @BBL A1",
		sub_path: "filament/Bambu PLA Basic @BBL A1.json"
	},
	{
		name: "Bambu PLA Basic @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Basic @BBL A1M",
		sub_path: "filament/Bambu PLA Basic @BBL A1M.json"
	},
	{
		name: "Bambu PLA Basic @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Basic @BBL H2D",
		sub_path: "filament/Bambu PLA Basic @BBL H2D.json"
	},
	{
		name: "Bambu PLA Basic @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Basic @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Basic @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Basic @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Basic @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Basic @BBL P1P.json"
	},
	{
		name: "Bambu PLA Basic @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu PLA Basic @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Basic @BBL X1",
		sub_path: "filament/Bambu PLA Basic @BBL X1.json"
	},
	{
		name: "Bambu PLA Basic @BBL X1C",
		sub_path: "filament/Bambu PLA Basic @BBL X1C.json"
	},
	{
		name: "Bambu PLA Basic @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Basic @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Basic @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Basic @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @base",
		sub_path: "filament/Bambu PLA Dynamic @base.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL A1",
		sub_path: "filament/Bambu PLA Dynamic @BBL A1.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL A1M",
		sub_path: "filament/Bambu PLA Dynamic @BBL A1M.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL H2D",
		sub_path: "filament/Bambu PLA Dynamic @BBL H2D.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL P1P",
		sub_path: "filament/Bambu PLA Dynamic @BBL P1P.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL X1C",
		sub_path: "filament/Bambu PLA Dynamic @BBL X1C.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Dynamic @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Dynamic @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @base",
		sub_path: "filament/Bambu PLA Galaxy @base.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL A1",
		sub_path: "filament/Bambu PLA Galaxy @BBL A1.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL A1M",
		sub_path: "filament/Bambu PLA Galaxy @BBL A1M.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL H2D",
		sub_path: "filament/Bambu PLA Galaxy @BBL H2D.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL P1P",
		sub_path: "filament/Bambu PLA Galaxy @BBL P1P.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL X1C",
		sub_path: "filament/Bambu PLA Galaxy @BBL X1C.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Galaxy @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @base",
		sub_path: "filament/Bambu PLA Glow @base.json"
	},
	{
		name: "Bambu PLA Glow @BBL A1",
		sub_path: "filament/Bambu PLA Glow @BBL A1.json"
	},
	{
		name: "Bambu PLA Glow @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @BBL A1M",
		sub_path: "filament/Bambu PLA Glow @BBL A1M.json"
	},
	{
		name: "Bambu PLA Glow @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @BBL H2D",
		sub_path: "filament/Bambu PLA Glow @BBL H2D.json"
	},
	{
		name: "Bambu PLA Glow @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @BBL P1P",
		sub_path: "filament/Bambu PLA Glow @BBL P1P.json"
	},
	{
		name: "Bambu PLA Glow @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @BBL X1",
		sub_path: "filament/Bambu PLA Glow @BBL X1.json"
	},
	{
		name: "Bambu PLA Glow @BBL X1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL X1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @BBL X1C",
		sub_path: "filament/Bambu PLA Glow @BBL X1C.json"
	},
	{
		name: "Bambu PLA Glow @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Glow @BBL X1E",
		sub_path: "filament/Bambu PLA Glow @BBL X1E.json"
	},
	{
		name: "Bambu PLA Glow @BBL X1E 0.2 nozzle",
		sub_path: "filament/Bambu PLA Glow @BBL X1E 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @base",
		sub_path: "filament/Bambu PLA Lite @base.json"
	},
	{
		name: "Bambu PLA Lite @BBL A1",
		sub_path: "filament/Bambu PLA Lite @BBL A1.json"
	},
	{
		name: "Bambu PLA Lite @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @BBL A1M",
		sub_path: "filament/Bambu PLA Lite @BBL A1M.json"
	},
	{
		name: "Bambu PLA Lite @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @BBL H2D",
		sub_path: "filament/Bambu PLA Lite @BBL H2D.json"
	},
	{
		name: "Bambu PLA Lite @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @BBL P1P",
		sub_path: "filament/Bambu PLA Lite @BBL P1P.json"
	},
	{
		name: "Bambu PLA Lite @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @BBL X1C",
		sub_path: "filament/Bambu PLA Lite @BBL X1C.json"
	},
	{
		name: "Bambu PLA Lite @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Lite @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Lite @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Marble @base",
		sub_path: "filament/Bambu PLA Marble @base.json"
	},
	{
		name: "Bambu PLA Marble @BBL A1",
		sub_path: "filament/Bambu PLA Marble @BBL A1.json"
	},
	{
		name: "Bambu PLA Marble @BBL A1M",
		sub_path: "filament/Bambu PLA Marble @BBL A1M.json"
	},
	{
		name: "Bambu PLA Marble @BBL H2D",
		sub_path: "filament/Bambu PLA Marble @BBL H2D.json"
	},
	{
		name: "Bambu PLA Marble @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Marble @BBL P1P.json"
	},
	{
		name: "Bambu PLA Marble @BBL X1",
		sub_path: "filament/Bambu PLA Marble @BBL X1.json"
	},
	{
		name: "Bambu PLA Marble @BBL X1C",
		sub_path: "filament/Bambu PLA Marble @BBL X1C.json"
	},
	{
		name: "Bambu PLA Matte @base",
		sub_path: "filament/Bambu PLA Matte @base.json"
	},
	{
		name: "Bambu PLA Matte @BBL A1",
		sub_path: "filament/Bambu PLA Matte @BBL A1.json"
	},
	{
		name: "Bambu PLA Matte @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Matte @BBL A1M",
		sub_path: "filament/Bambu PLA Matte @BBL A1M.json"
	},
	{
		name: "Bambu PLA Matte @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Matte @BBL H2D",
		sub_path: "filament/Bambu PLA Matte @BBL H2D.json"
	},
	{
		name: "Bambu PLA Matte @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Matte @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Matte @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Matte @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Matte @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Matte @BBL P1P.json"
	},
	{
		name: "Bambu PLA Matte @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Matte @BBL X1",
		sub_path: "filament/Bambu PLA Matte @BBL X1.json"
	},
	{
		name: "Bambu PLA Matte @BBL X1C",
		sub_path: "filament/Bambu PLA Matte @BBL X1C.json"
	},
	{
		name: "Bambu PLA Matte @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Matte @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Metal @base",
		sub_path: "filament/Bambu PLA Metal @base.json"
	},
	{
		name: "Bambu PLA Metal @BBL A1",
		sub_path: "filament/Bambu PLA Metal @BBL A1.json"
	},
	{
		name: "Bambu PLA Metal @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Metal @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Metal @BBL A1M",
		sub_path: "filament/Bambu PLA Metal @BBL A1M.json"
	},
	{
		name: "Bambu PLA Metal @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Metal @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Metal @BBL H2D",
		sub_path: "filament/Bambu PLA Metal @BBL H2D.json"
	},
	{
		name: "Bambu PLA Metal @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Metal @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Metal @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Metal @BBL P1P.json"
	},
	{
		name: "Bambu PLA Metal @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu PLA Metal @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Metal @BBL X1",
		sub_path: "filament/Bambu PLA Metal @BBL X1.json"
	},
	{
		name: "Bambu PLA Metal @BBL X1C",
		sub_path: "filament/Bambu PLA Metal @BBL X1C.json"
	},
	{
		name: "Bambu PLA Metal @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Metal @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk @base",
		sub_path: "filament/Bambu PLA Silk @base.json"
	},
	{
		name: "Bambu PLA Silk @BBL A1",
		sub_path: "filament/Bambu PLA Silk @BBL A1.json"
	},
	{
		name: "Bambu PLA Silk @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk @BBL A1M",
		sub_path: "filament/Bambu PLA Silk @BBL A1M.json"
	},
	{
		name: "Bambu PLA Silk @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk @BBL H2D",
		sub_path: "filament/Bambu PLA Silk @BBL H2D.json"
	},
	{
		name: "Bambu PLA Silk @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Silk @BBL P1P.json"
	},
	{
		name: "Bambu PLA Silk @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu PLA Silk @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk @BBL X1",
		sub_path: "filament/Bambu PLA Silk @BBL X1.json"
	},
	{
		name: "Bambu PLA Silk @BBL X1C",
		sub_path: "filament/Bambu PLA Silk @BBL X1C.json"
	},
	{
		name: "Bambu PLA Silk @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk+ @base",
		sub_path: "filament/Bambu PLA Silk+ @base.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL A1",
		sub_path: "filament/Bambu PLA Silk+ @BBL A1.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk+ @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL A1M",
		sub_path: "filament/Bambu PLA Silk+ @BBL A1M.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk+ @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL H2D",
		sub_path: "filament/Bambu PLA Silk+ @BBL H2D.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk+ @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL P1P",
		sub_path: "filament/Bambu PLA Silk+ @BBL P1P.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk+ @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL X1",
		sub_path: "filament/Bambu PLA Silk+ @BBL X1.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL X1C",
		sub_path: "filament/Bambu PLA Silk+ @BBL X1C.json"
	},
	{
		name: "Bambu PLA Silk+ @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Silk+ @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Sparkle @base",
		sub_path: "filament/Bambu PLA Sparkle @base.json"
	},
	{
		name: "Bambu PLA Sparkle @BBL A1",
		sub_path: "filament/Bambu PLA Sparkle @BBL A1.json"
	},
	{
		name: "Bambu PLA Sparkle @BBL A1M",
		sub_path: "filament/Bambu PLA Sparkle @BBL A1M.json"
	},
	{
		name: "Bambu PLA Sparkle @BBL H2D",
		sub_path: "filament/Bambu PLA Sparkle @BBL H2D.json"
	},
	{
		name: "Bambu PLA Sparkle @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Sparkle @BBL P1P.json"
	},
	{
		name: "Bambu PLA Sparkle @BBL X1",
		sub_path: "filament/Bambu PLA Sparkle @BBL X1.json"
	},
	{
		name: "Bambu PLA Sparkle @BBL X1C",
		sub_path: "filament/Bambu PLA Sparkle @BBL X1C.json"
	},
	{
		name: "Bambu PLA Tough @base",
		sub_path: "filament/Bambu PLA Tough @base.json"
	},
	{
		name: "Bambu PLA Tough @BBL A1",
		sub_path: "filament/Bambu PLA Tough @BBL A1.json"
	},
	{
		name: "Bambu PLA Tough @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Tough @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Tough @BBL A1M",
		sub_path: "filament/Bambu PLA Tough @BBL A1M.json"
	},
	{
		name: "Bambu PLA Tough @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Tough @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Tough @BBL H2D",
		sub_path: "filament/Bambu PLA Tough @BBL H2D.json"
	},
	{
		name: "Bambu PLA Tough @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Tough @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Tough @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA Tough @BBL P1P.json"
	},
	{
		name: "Bambu PLA Tough @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu PLA Tough @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Tough @BBL X1",
		sub_path: "filament/Bambu PLA Tough @BBL X1.json"
	},
	{
		name: "Bambu PLA Tough @BBL X1C",
		sub_path: "filament/Bambu PLA Tough @BBL X1C.json"
	},
	{
		name: "Bambu PLA Tough @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Tough @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @base",
		sub_path: "filament/Bambu PLA Translucent @base.json"
	},
	{
		name: "Bambu PLA Translucent @BBL A1",
		sub_path: "filament/Bambu PLA Translucent @BBL A1.json"
	},
	{
		name: "Bambu PLA Translucent @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL A1 0.8 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL A1 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL A1M",
		sub_path: "filament/Bambu PLA Translucent @BBL A1M.json"
	},
	{
		name: "Bambu PLA Translucent @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL A1M 0.8 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL H2D",
		sub_path: "filament/Bambu PLA Translucent @BBL H2D.json"
	},
	{
		name: "Bambu PLA Translucent @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL P1P",
		sub_path: "filament/Bambu PLA Translucent @BBL P1P.json"
	},
	{
		name: "Bambu PLA Translucent @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL P1P 0.8 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL X1C",
		sub_path: "filament/Bambu PLA Translucent @BBL X1C.json"
	},
	{
		name: "Bambu PLA Translucent @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu PLA Translucent @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Translucent @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Wood @base",
		sub_path: "filament/Bambu PLA Wood @base.json"
	},
	{
		name: "Bambu PLA Wood @BBL A1",
		sub_path: "filament/Bambu PLA Wood @BBL A1.json"
	},
	{
		name: "Bambu PLA Wood @BBL A1M",
		sub_path: "filament/Bambu PLA Wood @BBL A1M.json"
	},
	{
		name: "Bambu PLA Wood @BBL H2D",
		sub_path: "filament/Bambu PLA Wood @BBL H2D.json"
	},
	{
		name: "Bambu PLA Wood @BBL H2D 0.8 nozzle",
		sub_path: "filament/Bambu PLA Wood @BBL H2D 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA Wood @BBL P1P",
		sub_path: "filament/Bambu PLA Wood @BBL P1P.json"
	},
	{
		name: "Bambu PLA Wood @BBL X1",
		sub_path: "filament/Bambu PLA Wood @BBL X1.json"
	},
	{
		name: "Bambu PLA Wood @BBL X1C",
		sub_path: "filament/Bambu PLA Wood @BBL X1C.json"
	},
	{
		name: "Bambu PLA Wood @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA Wood @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA-CF @base",
		sub_path: "filament/Bambu PLA-CF @base.json"
	},
	{
		name: "Bambu PLA-CF @BBL A1",
		sub_path: "filament/Bambu PLA-CF @BBL A1.json"
	},
	{
		name: "Bambu PLA-CF @BBL A1 0.8 nozzle",
		sub_path: "filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA-CF @BBL A1M",
		sub_path: "filament/Bambu PLA-CF @BBL A1M.json"
	},
	{
		name: "Bambu PLA-CF @BBL A1M 0.8 nozzle",
		sub_path: "filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA-CF @BBL H2D 0.4 nozzle",
		sub_path: "filament/Bambu PLA-CF @BBL H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu PLA-CF @BBL H2D 0.6 nozzle",
		sub_path: "filament/Bambu PLA-CF @BBL H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu PLA-CF @BBL P1P",
		sub_path: "filament/P1P/Bambu PLA-CF @BBL P1P.json"
	},
	{
		name: "Bambu PLA-CF @BBL P1P 0.8 nozzle",
		sub_path: "filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json"
	},
	{
		name: "Bambu PLA-CF @BBL X1C",
		sub_path: "filament/Bambu PLA-CF @BBL X1C.json"
	},
	{
		name: "Bambu PLA-CF @BBL X1C 0.8 nozzle",
		sub_path: "filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json"
	},
	{
		name: "Bambu Support For PLA @base",
		sub_path: "filament/Bambu Support For PLA @base.json"
	},
	{
		name: "Bambu Support For PLA @BBL A1",
		sub_path: "filament/Bambu Support For PLA @BBL A1.json"
	},
	{
		name: "Bambu Support For PLA @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA @BBL A1M",
		sub_path: "filament/Bambu Support For PLA @BBL A1M.json"
	},
	{
		name: "Bambu Support For PLA @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA @BBL H2D",
		sub_path: "filament/Bambu Support For PLA @BBL H2D.json"
	},
	{
		name: "Bambu Support For PLA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA @BBL P1P",
		sub_path: "filament/P1P/Bambu Support For PLA @BBL P1P.json"
	},
	{
		name: "Bambu Support For PLA @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu Support For PLA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA @BBL X1C",
		sub_path: "filament/Bambu Support For PLA @BBL X1C.json"
	},
	{
		name: "Bambu Support For PLA @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA/PETG @base",
		sub_path: "filament/Bambu Support For PLA-PETG @base.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL A1",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL A1.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL A1M",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL A1M.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL H2D",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL H2D.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL P1P",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL P1P.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL X1C",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL X1C.json"
	},
	{
		name: "Bambu Support For PLA/PETG @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Bambu Support W @base",
		sub_path: "filament/Bambu Support W @base.json"
	},
	{
		name: "Bambu Support W @BBL A1",
		sub_path: "filament/Bambu Support W @BBL A1.json"
	},
	{
		name: "Bambu Support W @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu Support W @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu Support W @BBL A1M",
		sub_path: "filament/Bambu Support W @BBL A1M.json"
	},
	{
		name: "Bambu Support W @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu Support W @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu Support W @BBL H2D",
		sub_path: "filament/Bambu Support W @BBL H2D.json"
	},
	{
		name: "Bambu Support W @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu Support W @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu Support W @BBL P1P",
		sub_path: "filament/P1P/Bambu Support W @BBL P1P.json"
	},
	{
		name: "Bambu Support W @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Bambu Support W @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu Support W @BBL X1",
		sub_path: "filament/Bambu Support W @BBL X1.json"
	},
	{
		name: "Bambu Support W @BBL X1C",
		sub_path: "filament/Bambu Support W @BBL X1C.json"
	},
	{
		name: "Bambu Support W @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu Support W @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @base",
		sub_path: "filament/Generic PLA @base.json"
	},
	{
		name: "Generic PLA",
		sub_path: "filament/Generic PLA.json"
	},
	{
		name: "Generic PLA @0.2 nozzle",
		sub_path: "filament/Generic PLA @0.2 nozzle.json"
	},
	{
		name: "Generic PLA @BBL A1",
		sub_path: "filament/Generic PLA @BBL A1.json"
	},
	{
		name: "Generic PLA @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic PLA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @BBL A1M",
		sub_path: "filament/Generic PLA @BBL A1M.json"
	},
	{
		name: "Generic PLA @BBL A1M 0.2 nozzle",
		sub_path: "filament/Generic PLA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @BBL H2D",
		sub_path: "filament/Generic PLA @BBL H2D.json"
	},
	{
		name: "Generic PLA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic PLA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic PLA @BBL P1P",
		sub_path: "filament/P1P/Generic PLA @BBL P1P.json"
	},
	{
		name: "Generic PLA @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Generic PLA High Speed @base",
		sub_path: "filament/Generic PLA High Speed @base.json"
	},
	{
		name: "Generic PLA High Speed @BBL A1",
		sub_path: "filament/Generic PLA High Speed @BBL A1.json"
	},
	{
		name: "Generic PLA High Speed @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic PLA High Speed @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic PLA High Speed @BBL A1M",
		sub_path: "filament/Generic PLA High Speed @BBL A1M.json"
	},
	{
		name: "Generic PLA High Speed @BBL A1M 0.2 nozzle",
		sub_path: "filament/Generic PLA High Speed @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Generic PLA High Speed @BBL H2D",
		sub_path: "filament/Generic PLA High Speed @BBL H2D.json"
	},
	{
		name: "Generic PLA High Speed @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic PLA High Speed @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic PLA High Speed @BBL P1P",
		sub_path: "filament/Generic PLA High Speed @BBL P1P.json"
	},
	{
		name: "Generic PLA High Speed @BBL P1P 0.2 nozzle",
		sub_path: "filament/Generic PLA High Speed @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Generic PLA High Speed @BBL X1C",
		sub_path: "filament/Generic PLA High Speed @BBL X1C.json"
	},
	{
		name: "Generic PLA High Speed @BBL X1C 0.2 nozzle",
		sub_path: "filament/Generic PLA High Speed @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Generic PLA Silk @base",
		sub_path: "filament/Generic PLA Silk @base.json"
	},
	{
		name: "Generic PLA Silk",
		sub_path: "filament/Generic PLA Silk.json"
	},
	{
		name: "Generic PLA Silk @BBL A1",
		sub_path: "filament/Generic PLA Silk @BBL A1.json"
	},
	{
		name: "Generic PLA Silk @BBL A1M",
		sub_path: "filament/Generic PLA Silk @BBL A1M.json"
	},
	{
		name: "Generic PLA Silk @BBL H2D",
		sub_path: "filament/Generic PLA Silk @BBL H2D.json"
	},
	{
		name: "Generic PLA Silk @BBL P1P",
		sub_path: "filament/P1P/Generic PLA Silk @BBL P1P.json"
	},
	{
		name: "Generic PLA-CF @base",
		sub_path: "filament/Generic PLA-CF @base.json"
	},
	{
		name: "Generic PLA-CF",
		sub_path: "filament/Generic PLA-CF.json"
	},
	{
		name: "Generic PLA-CF @BBL A1",
		sub_path: "filament/Generic PLA-CF @BBL A1.json"
	},
	{
		name: "Generic PLA-CF @BBL A1M",
		sub_path: "filament/Generic PLA-CF @BBL A1M.json"
	},
	{
		name: "Generic PLA-CF @BBL H2D",
		sub_path: "filament/Generic PLA-CF @BBL H2D.json"
	},
	{
		name: "Generic PLA-CF @BBL P1P",
		sub_path: "filament/P1P/Generic PLA-CF @BBL P1P.json"
	},
	{
		name: "Overture Matte PLA @base",
		sub_path: "filament/Overture Matte PLA @base.json"
	},
	{
		name: "Overture Matte PLA @BBL A1",
		sub_path: "filament/Overture Matte PLA @BBL A1.json"
	},
	{
		name: "Overture Matte PLA @BBL A1 0.2 nozzle",
		sub_path: "filament/Overture Matte PLA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Overture Matte PLA @BBL A1M",
		sub_path: "filament/Overture Matte PLA @BBL A1M.json"
	},
	{
		name: "Overture Matte PLA @BBL A1M 0.2 nozzle",
		sub_path: "filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Overture Matte PLA @BBL H2D",
		sub_path: "filament/Overture Matte PLA @BBL H2D.json"
	},
	{
		name: "Overture Matte PLA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Overture Matte PLA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Overture Matte PLA @BBL P1P",
		sub_path: "filament/Overture Matte PLA @BBL P1P.json"
	},
	{
		name: "Overture Matte PLA @BBL P1P 0.2 nozzle",
		sub_path: "filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Overture Matte PLA @BBL X1",
		sub_path: "filament/Overture Matte PLA @BBL X1.json"
	},
	{
		name: "Overture Matte PLA @BBL X1C",
		sub_path: "filament/Overture Matte PLA @BBL X1C.json"
	},
	{
		name: "Overture Matte PLA @BBL X1C 0.2 nozzle",
		sub_path: "filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Overture PLA @base",
		sub_path: "filament/Overture PLA @base.json"
	},
	{
		name: "Overture PLA @BBL A1",
		sub_path: "filament/Overture PLA @BBL A1.json"
	},
	{
		name: "Overture PLA @BBL A1 0.2 nozzle",
		sub_path: "filament/Overture PLA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Overture PLA @BBL A1M",
		sub_path: "filament/Overture PLA @BBL A1M.json"
	},
	{
		name: "Overture PLA @BBL A1M 0.2 nozzle",
		sub_path: "filament/Overture PLA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Overture PLA @BBL H2D",
		sub_path: "filament/Overture PLA @BBL H2D.json"
	},
	{
		name: "Overture PLA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Overture PLA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Overture PLA @BBL P1P",
		sub_path: "filament/Overture PLA @BBL P1P.json"
	},
	{
		name: "Overture PLA @BBL P1P 0.2 nozzle",
		sub_path: "filament/Overture PLA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Overture PLA @BBL X1",
		sub_path: "filament/Overture PLA @BBL X1.json"
	},
	{
		name: "Overture PLA @BBL X1C",
		sub_path: "filament/Overture PLA @BBL X1C.json"
	},
	{
		name: "Overture PLA @BBL X1C 0.2 nozzle",
		sub_path: "filament/Overture PLA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "PolyLite PLA @base",
		sub_path: "filament/PolyLite PLA @base.json"
	},
	{
		name: "PolyLite PLA @BBL A1",
		sub_path: "filament/PolyLite PLA @BBL A1.json"
	},
	{
		name: "PolyLite PLA @BBL A1 0.2 nozzle",
		sub_path: "filament/PolyLite PLA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "PolyLite PLA @BBL A1M",
		sub_path: "filament/PolyLite PLA @BBL A1M.json"
	},
	{
		name: "PolyLite PLA @BBL A1M 0.2 nozzle",
		sub_path: "filament/PolyLite PLA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "PolyLite PLA @BBL H2D",
		sub_path: "filament/PolyLite PLA @BBL H2D.json"
	},
	{
		name: "PolyLite PLA @BBL H2D 0.2 nozzle",
		sub_path: "filament/PolyLite PLA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "PolyLite PLA @BBL P1P",
		sub_path: "filament/P1P/PolyLite PLA @BBL P1P.json"
	},
	{
		name: "PolyLite PLA @BBL X1",
		sub_path: "filament/PolyLite PLA @BBL X1.json"
	},
	{
		name: "PolyLite PLA @BBL X1C",
		sub_path: "filament/PolyLite PLA @BBL X1C.json"
	},
	{
		name: "PolyLite PLA @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyLite PLA @BBL X1C 0.2 nozzle",
		sub_path: "filament/PolyLite PLA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "PolyTerra PLA @base",
		sub_path: "filament/PolyTerra PLA @base.json"
	},
	{
		name: "PolyTerra PLA @BBL A1",
		sub_path: "filament/PolyTerra PLA @BBL A1.json"
	},
	{
		name: "PolyTerra PLA @BBL A1 0.2 nozzle",
		sub_path: "filament/PolyTerra PLA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "PolyTerra PLA @BBL A1M",
		sub_path: "filament/PolyTerra PLA @BBL A1M.json"
	},
	{
		name: "PolyTerra PLA @BBL A1M 0.2 nozzle",
		sub_path: "filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "PolyTerra PLA @BBL H2D",
		sub_path: "filament/PolyTerra PLA @BBL H2D.json"
	},
	{
		name: "PolyTerra PLA @BBL H2D 0.2 nozzle",
		sub_path: "filament/PolyTerra PLA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "PolyTerra PLA @BBL P1P",
		sub_path: "filament/P1P/PolyTerra PLA @BBL P1P.json"
	},
	{
		name: "PolyTerra PLA @BBL X1",
		sub_path: "filament/PolyTerra PLA @BBL X1.json"
	},
	{
		name: "PolyTerra PLA @BBL X1C",
		sub_path: "filament/PolyTerra PLA @BBL X1C.json"
	},
	{
		name: "PolyTerra PLA @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "PolyTerra PLA @BBL X1C 0.2 nozzle",
		sub_path: "filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA Marble @base",
		sub_path: "filament/SUNLU/SUNLU Marble PLA @base.json"
	},
	{
		name: "SUNLU PLA Marble @BBL A1",
		sub_path: "filament/SUNLU/SUNLU Marble PLA @BBL A1.json"
	},
	{
		name: "SUNLU PLA Marble @BBL A1M",
		sub_path: "filament/SUNLU/SUNLU Marble PLA @BBL A1M.json"
	},
	{
		name: "SUNLU PLA Marble @BBL P1P",
		sub_path: "filament/SUNLU/SUNLU Marble PLA @BBL P1P.json"
	},
	{
		name: "SUNLU PLA Marble @BBL X1",
		sub_path: "filament/SUNLU/SUNLU Marble PLA @BBL X1.json"
	},
	{
		name: "SUNLU PLA Marble @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU Marble PLA @BBL X1C.json"
	},
	{
		name: "SUNLU PLA Matte @base",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @base.json"
	},
	{
		name: "SUNLU PLA Matte @BBL A1",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL A1.json"
	},
	{
		name: "SUNLU PLA Matte @BBL A1 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL A1 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA Matte @BBL A1M",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL A1M.json"
	},
	{
		name: "SUNLU PLA Matte @BBL A1M 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA Matte @BBL P1P",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL P1P.json"
	},
	{
		name: "SUNLU PLA Matte @BBL P1P 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA Matte @BBL X1",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL X1.json"
	},
	{
		name: "SUNLU PLA Matte @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL X1C.json"
	},
	{
		name: "SUNLU PLA Matte @BBL X1C 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA Matte @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @base",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @base.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL A1",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL A1M",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL P1P",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL X1",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C.json"
	},
	{
		name: "SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ 2.0 @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ @base",
		sub_path: "filament/SUNLU/SUNLU PLA+ @base.json"
	},
	{
		name: "SUNLU PLA+ @BBL A1",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL A1.json"
	},
	{
		name: "SUNLU PLA+ @BBL A1 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL A1 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ @BBL A1M",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL A1M.json"
	},
	{
		name: "SUNLU PLA+ @BBL A1M 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ @BBL P1P",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL P1P.json"
	},
	{
		name: "SUNLU PLA+ @BBL P1P 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "SUNLU PLA+ @BBL X1",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL X1.json"
	},
	{
		name: "SUNLU PLA+ @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL X1C.json"
	},
	{
		name: "SUNLU PLA+ @BBL X1C 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU PLA+ @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU Silk PLA+ @base",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @base.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL A1",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL A1.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL A1 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL A1 0.2 nozzle.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL A1M",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL A1M 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL P1P",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL P1P 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL X1",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL X1.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C.json"
	},
	{
		name: "SUNLU Silk PLA+ @BBL X1C 0.2 nozzle",
		sub_path: "filament/SUNLU/SUNLU Silk PLA+ @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "SUNLU Wood PLA @base",
		sub_path: "filament/SUNLU/SUNLU Wood PLA @base.json"
	},
	{
		name: "SUNLU Wood PLA @BBL A1",
		sub_path: "filament/SUNLU/SUNLU Wood PLA @BBL A1.json"
	},
	{
		name: "SUNLU Wood PLA @BBL A1M",
		sub_path: "filament/SUNLU/SUNLU Wood PLA @BBL A1M.json"
	},
	{
		name: "SUNLU Wood PLA @BBL P1P",
		sub_path: "filament/SUNLU/SUNLU Wood PLA @BBL P1P.json"
	},
	{
		name: "SUNLU Wood PLA @BBL X1",
		sub_path: "filament/SUNLU/SUNLU Wood PLA @BBL X1.json"
	},
	{
		name: "SUNLU Wood PLA @BBL X1C",
		sub_path: "filament/SUNLU/SUNLU Wood PLA @BBL X1C.json"
	},
	{
		name: "eSUN PLA+ @base",
		sub_path: "filament/eSUN PLA+ @base.json"
	},
	{
		name: "eSUN PLA+ @BBL A1",
		sub_path: "filament/eSUN PLA+ @BBL A1.json"
	},
	{
		name: "eSUN PLA+ @BBL A1 0.2 nozzle",
		sub_path: "filament/eSUN PLA+ @BBL A1 0.2 nozzle.json"
	},
	{
		name: "eSUN PLA+ @BBL A1M",
		sub_path: "filament/eSUN PLA+ @BBL A1M.json"
	},
	{
		name: "eSUN PLA+ @BBL A1M 0.2 nozzle",
		sub_path: "filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "eSUN PLA+ @BBL H2D",
		sub_path: "filament/eSUN PLA+ @BBL H2D.json"
	},
	{
		name: "eSUN PLA+ @BBL H2D 0.2 nozzle",
		sub_path: "filament/eSUN PLA+ @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "eSUN PLA+ @BBL P1P",
		sub_path: "filament/P1P/eSUN PLA+ @BBL P1P.json"
	},
	{
		name: "eSUN PLA+ @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "eSUN PLA+ @BBL X1",
		sub_path: "filament/eSUN PLA+ @BBL X1.json"
	},
	{
		name: "eSUN PLA+ @BBL X1C",
		sub_path: "filament/eSUN PLA+ @BBL X1C.json"
	},
	{
		name: "eSUN PLA+ @BBL X1C 0.2 nozzle",
		sub_path: "filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "fdm_filament_pp",
		sub_path: "filament/fdm_filament_pp.json"
	},
	{
		name: "Generic PP @base",
		sub_path: "filament/Generic PP @base.json"
	},
	{
		name: "Generic PP @BBL A1",
		sub_path: "filament/Generic PP @BBL A1.json"
	},
	{
		name: "Generic PP @BBL A1M",
		sub_path: "filament/Generic PP @BBL A1M.json"
	},
	{
		name: "Generic PP @BBL H2D",
		sub_path: "filament/Generic PP @BBL H2D.json"
	},
	{
		name: "Generic PP @BBL X1C",
		sub_path: "filament/Generic PP @BBL X1C.json"
	},
	{
		name: "Generic PP-CF @base",
		sub_path: "filament/Generic PP-CF @base.json"
	},
	{
		name: "Generic PP-CF @BBL A1",
		sub_path: "filament/Generic PP-CF @BBL A1.json"
	},
	{
		name: "Generic PP-CF @BBL H2D",
		sub_path: "filament/Generic PP-CF @BBL H2D.json"
	},
	{
		name: "Generic PP-CF @BBL X1C",
		sub_path: "filament/Generic PP-CF @BBL X1C.json"
	},
	{
		name: "Generic PP-GF @base",
		sub_path: "filament/Generic PP-GF @base.json"
	},
	{
		name: "Generic PP-GF @BBL A1",
		sub_path: "filament/Generic PP-GF @BBL A1.json"
	},
	{
		name: "Generic PP-GF @BBL H2D",
		sub_path: "filament/Generic PP-GF @BBL H2D.json"
	},
	{
		name: "Generic PP-GF @BBL X1C",
		sub_path: "filament/Generic PP-GF @BBL X1C.json"
	},
	{
		name: "fdm_filament_ppa",
		sub_path: "filament/fdm_filament_ppa.json"
	},
	{
		name: "Bambu PPA-CF @base",
		sub_path: "filament/Bambu PPA-CF @base.json"
	},
	{
		name: "Bambu PPA-CF @BBL H2D",
		sub_path: "filament/Bambu PPA-CF @BBL H2D.json"
	},
	{
		name: "Bambu PPA-CF @BBL X1C",
		sub_path: "filament/Bambu PPA-CF @BBL X1C.json"
	},
	{
		name: "Bambu PPA-CF @BBL X1E",
		sub_path: "filament/Bambu PPA-CF @BBL X1E.json"
	},
	{
		name: "Bambu PPA-GF @base",
		sub_path: "filament/Bambu PPA-GF @base.json"
	},
	{
		name: "Bambu PPA-GF @BBL H2D",
		sub_path: "filament/Bambu PPA-GF @BBL H2D.json"
	},
	{
		name: "Bambu PPA-GF @BBL X1C",
		sub_path: "filament/Bambu PPA-GF @BBL X1C.json"
	},
	{
		name: "Bambu PPA-GF @BBL X1E",
		sub_path: "filament/Bambu PPA-GF @BBL X1E.json"
	},
	{
		name: "Generic PPA-CF @base",
		sub_path: "filament/Generic PPA-CF @base.json"
	},
	{
		name: "Generic PPA-CF @BBL H2D",
		sub_path: "filament/Generic PPA-CF @BBL H2D.json"
	},
	{
		name: "Generic PPA-CF @BBL X1C",
		sub_path: "filament/Generic PPA-CF @BBL X1C.json"
	},
	{
		name: "Generic PPA-CF @BBL X1E",
		sub_path: "filament/Generic PPA-CF @BBL X1E.json"
	},
	{
		name: "Generic PPA-GF @base",
		sub_path: "filament/Generic PPA-GF @base.json"
	},
	{
		name: "Generic PPA-GF @BBL H2D",
		sub_path: "filament/Generic PPA-GF @BBL H2D.json"
	},
	{
		name: "Generic PPA-GF @BBL X1C",
		sub_path: "filament/Generic PPA-GF @BBL X1C.json"
	},
	{
		name: "Generic PPA-GF @BBL X1E",
		sub_path: "filament/Generic PPA-GF @BBL X1E.json"
	},
	{
		name: "fdm_filament_pps",
		sub_path: "filament/fdm_filament_pps.json"
	},
	{
		name: "Bambu PPS-CF @base",
		sub_path: "filament/Bambu PPS-CF @base.json"
	},
	{
		name: "Bambu PPS-CF @BBL H2D",
		sub_path: "filament/Bambu PPS-CF @BBL H2D.json"
	},
	{
		name: "Bambu PPS-CF @BBL X1E",
		sub_path: "filament/Bambu PPS-CF @BBL X1E.json"
	},
	{
		name: "Generic PPS @base",
		sub_path: "filament/Generic PPS @base.json"
	},
	{
		name: "Generic PPS @BBL H2D",
		sub_path: "filament/Generic PPS @BBL H2D.json"
	},
	{
		name: "Generic PPS @BBL X1E",
		sub_path: "filament/Generic PPS @BBL X1E.json"
	},
	{
		name: "Generic PPS-CF @base",
		sub_path: "filament/Generic PPS-CF @base.json"
	},
	{
		name: "Generic PPS-CF @BBL H2D",
		sub_path: "filament/Generic PPS-CF @BBL H2D.json"
	},
	{
		name: "Generic PPS-CF @BBL X1E",
		sub_path: "filament/Generic PPS-CF @BBL X1E.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "Bambu PVA @base",
		sub_path: "filament/Bambu PVA @base.json"
	},
	{
		name: "Bambu PVA @BBL A1",
		sub_path: "filament/Bambu PVA @BBL A1.json"
	},
	{
		name: "Bambu PVA @BBL A1 0.2 nozzle",
		sub_path: "filament/Bambu PVA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Bambu PVA @BBL A1M",
		sub_path: "filament/Bambu PVA @BBL A1M.json"
	},
	{
		name: "Bambu PVA @BBL A1M 0.2 nozzle",
		sub_path: "filament/Bambu PVA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Bambu PVA @BBL H2D",
		sub_path: "filament/Bambu PVA @BBL H2D.json"
	},
	{
		name: "Bambu PVA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Bambu PVA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu PVA @BBL P1P",
		sub_path: "filament/Bambu PVA @BBL P1P.json"
	},
	{
		name: "Bambu PVA @BBL P1P 0.2 nozzle",
		sub_path: "filament/Bambu PVA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu PVA @BBL X1C",
		sub_path: "filament/Bambu PVA @BBL X1C.json"
	},
	{
		name: "Bambu PVA @BBL X1C 0.2 nozzle",
		sub_path: "filament/Bambu PVA @BBL X1C 0.2 nozzle.json"
	},
	{
		name: "Generic PVA @base",
		sub_path: "filament/Generic PVA @base.json"
	},
	{
		name: "Generic PVA",
		sub_path: "filament/Generic PVA.json"
	},
	{
		name: "Generic PVA @0.2 nozzle",
		sub_path: "filament/Generic PVA @0.2 nozzle.json"
	},
	{
		name: "Generic PVA @BBL A1",
		sub_path: "filament/Generic PVA @BBL A1.json"
	},
	{
		name: "Generic PVA @BBL A1 0.2 nozzle",
		sub_path: "filament/Generic PVA @BBL A1 0.2 nozzle.json"
	},
	{
		name: "Generic PVA @BBL A1M",
		sub_path: "filament/Generic PVA @BBL A1M.json"
	},
	{
		name: "Generic PVA @BBL A1M 0.2 nozzle",
		sub_path: "filament/Generic PVA @BBL A1M 0.2 nozzle.json"
	},
	{
		name: "Generic PVA @BBL H2D",
		sub_path: "filament/Generic PVA @BBL H2D.json"
	},
	{
		name: "Generic PVA @BBL H2D 0.2 nozzle",
		sub_path: "filament/Generic PVA @BBL H2D 0.2 nozzle.json"
	},
	{
		name: "Generic PVA @BBL P1P",
		sub_path: "filament/P1P/Generic PVA @BBL P1P.json"
	},
	{
		name: "Generic PVA @BBL P1P 0.2 nozzle",
		sub_path: "filament/P1P/Generic PVA @BBL P1P 0.2 nozzle.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Bambu TPU 85A @base",
		sub_path: "filament/Bambu TPU 85A @base.json"
	},
	{
		name: "Bambu TPU 85A @BBL H2D",
		sub_path: "filament/Bambu TPU 85A @BBL H2D.json"
	},
	{
		name: "Bambu TPU 85A @BBL P1P",
		sub_path: "filament/Bambu TPU 85A @BBL P1P.json"
	},
	{
		name: "Bambu TPU 85A @BBL X1C",
		sub_path: "filament/Bambu TPU 85A @BBL X1C.json"
	},
	{
		name: "Bambu TPU 90A @base",
		sub_path: "filament/Bambu TPU 90A @base.json"
	},
	{
		name: "Bambu TPU 90A @BBL A1",
		sub_path: "filament/Bambu TPU 90A @BBL A1.json"
	},
	{
		name: "Bambu TPU 90A @BBL A1M",
		sub_path: "filament/Bambu TPU 90A @BBL A1M.json"
	},
	{
		name: "Bambu TPU 90A @BBL H2D",
		sub_path: "filament/Bambu TPU 90A @BBL H2D.json"
	},
	{
		name: "Bambu TPU 90A @BBL P1P",
		sub_path: "filament/Bambu TPU 90A @BBL P1P.json"
	},
	{
		name: "Bambu TPU 90A @BBL X1C",
		sub_path: "filament/Bambu TPU 90A @BBL X1C.json"
	},
	{
		name: "Bambu TPU 95A @base",
		sub_path: "filament/Bambu TPU 95A @base.json"
	},
	{
		name: "Bambu TPU 95A @BBL A1",
		sub_path: "filament/Bambu TPU 95A @BBL A1.json"
	},
	{
		name: "Bambu TPU 95A @BBL A1M",
		sub_path: "filament/Bambu TPU 95A @BBL A1M.json"
	},
	{
		name: "Bambu TPU 95A @BBL H2D",
		sub_path: "filament/Bambu TPU 95A @BBL H2D.json"
	},
	{
		name: "Bambu TPU 95A @BBL P1P",
		sub_path: "filament/P1P/Bambu TPU 95A @BBL P1P.json"
	},
	{
		name: "Bambu TPU 95A @BBL X1",
		sub_path: "filament/Bambu TPU 95A @BBL X1.json"
	},
	{
		name: "Bambu TPU 95A @BBL X1C",
		sub_path: "filament/Bambu TPU 95A @BBL X1C.json"
	},
	{
		name: "Bambu TPU 95A HF @base",
		sub_path: "filament/Bambu TPU 95A HF @base.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL A1",
		sub_path: "filament/Bambu TPU 95A HF @BBL A1.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL A1M",
		sub_path: "filament/Bambu TPU 95A HF @BBL A1M.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL H2D",
		sub_path: "filament/Bambu TPU 95A HF @BBL H2D.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL P1P",
		sub_path: "filament/Bambu TPU 95A HF @BBL P1P.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL P1S",
		sub_path: "filament/Bambu TPU 95A HF @BBL P1S.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL X1",
		sub_path: "filament/Bambu TPU 95A HF @BBL X1.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL X1C",
		sub_path: "filament/Bambu TPU 95A HF @BBL X1C.json"
	},
	{
		name: "Bambu TPU 95A HF @BBL X1E",
		sub_path: "filament/Bambu TPU 95A HF @BBL X1E.json"
	},
	{
		name: "Bambu TPU for AMS @base",
		sub_path: "filament/Bambu TPU for AMS @base.json"
	},
	{
		name: "Bambu TPU for AMS @BBL A1",
		sub_path: "filament/Bambu TPU for AMS @BBL A1.json"
	},
	{
		name: "Bambu TPU for AMS @BBL A1M",
		sub_path: "filament/Bambu TPU for AMS @BBL A1M.json"
	},
	{
		name: "Bambu TPU for AMS @BBL H2D",
		sub_path: "filament/Bambu TPU for AMS @BBL H2D.json"
	},
	{
		name: "Bambu TPU for AMS @BBL P1P",
		sub_path: "filament/Bambu TPU for AMS @BBL P1P.json"
	},
	{
		name: "Bambu TPU for AMS @BBL X1C",
		sub_path: "filament/Bambu TPU for AMS @BBL X1C.json"
	},
	{
		name: "Generic TPU @base",
		sub_path: "filament/Generic TPU @base.json"
	},
	{
		name: "Generic TPU",
		sub_path: "filament/Generic TPU.json"
	},
	{
		name: "Generic TPU @BBL A1",
		sub_path: "filament/Generic TPU @BBL A1.json"
	},
	{
		name: "Generic TPU @BBL A1M",
		sub_path: "filament/Generic TPU @BBL A1M.json"
	},
	{
		name: "Generic TPU @BBL H2D",
		sub_path: "filament/Generic TPU @BBL H2D.json"
	},
	{
		name: "Generic TPU @BBL P1P",
		sub_path: "filament/P1P/Generic TPU @BBL P1P.json"
	},
	{
		name: "Generic TPU for AMS @base",
		sub_path: "filament/Generic TPU for AMS @base.json"
	},
	{
		name: "Generic TPU for AMS @BBL A1",
		sub_path: "filament/Generic TPU for AMS @BBL A1.json"
	},
	{
		name: "Generic TPU for AMS @BBL A1M",
		sub_path: "filament/Generic TPU for AMS @BBL A1M.json"
	},
	{
		name: "Generic TPU for AMS @BBL H2D",
		sub_path: "filament/Generic TPU for AMS @BBL H2D.json"
	},
	{
		name: "Generic TPU for AMS @BBL P1P",
		sub_path: "filament/Generic TPU for AMS @BBL P1P.json"
	},
	{
		name: "Generic TPU for AMS @BBL X1C",
		sub_path: "filament/Generic TPU for AMS @BBL X1C.json"
	},
	{
		name: "fdm_filament_dual_common",
		sub_path: "filament/fdm_filament_dual_common.json"
	}
];
var machine_list$2 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "fdm_bbl_3dp_001_common",
		sub_path: "machine/fdm_bbl_3dp_001_common.json"
	},
	{
		name: "fdm_bbl_3dp_002_common",
		sub_path: "machine/fdm_bbl_3dp_002_common.json"
	},
	{
		name: "Bambu Lab X1 Carbon 0.4 nozzle",
		sub_path: "machine/Bambu Lab X1 Carbon 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab X1 0.4 nozzle",
		sub_path: "machine/Bambu Lab X1 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab P1P 0.4 nozzle",
		sub_path: "machine/Bambu Lab P1P 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab P1S 0.4 nozzle",
		sub_path: "machine/Bambu Lab P1S 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab A1 mini 0.4 nozzle",
		sub_path: "machine/Bambu Lab A1 mini 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab X1E 0.4 nozzle",
		sub_path: "machine/Bambu Lab X1E 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab A1 0.4 nozzle",
		sub_path: "machine/Bambu Lab A1 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab H2D 0.4 nozzle",
		sub_path: "machine/Bambu Lab H2D 0.4 nozzle.json"
	},
	{
		name: "Bambu Lab X1 Carbon 0.2 nozzle",
		sub_path: "machine/Bambu Lab X1 Carbon 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab X1 Carbon 0.6 nozzle",
		sub_path: "machine/Bambu Lab X1 Carbon 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab X1 Carbon 0.8 nozzle",
		sub_path: "machine/Bambu Lab X1 Carbon 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab X1 0.2 nozzle",
		sub_path: "machine/Bambu Lab X1 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab X1 0.8 nozzle",
		sub_path: "machine/Bambu Lab X1 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab X1 0.6 nozzle",
		sub_path: "machine/Bambu Lab X1 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab P1P 0.2 nozzle",
		sub_path: "machine/Bambu Lab P1P 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab P1P 0.6 nozzle",
		sub_path: "machine/Bambu Lab P1P 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab P1P 0.8 nozzle",
		sub_path: "machine/Bambu Lab P1P 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab P1S 0.2 nozzle",
		sub_path: "machine/Bambu Lab P1S 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab P1S 0.6 nozzle",
		sub_path: "machine/Bambu Lab P1S 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab P1S 0.8 nozzle",
		sub_path: "machine/Bambu Lab P1S 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab A1 mini 0.2 nozzle",
		sub_path: "machine/Bambu Lab A1 mini 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab A1 mini 0.6 nozzle",
		sub_path: "machine/Bambu Lab A1 mini 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab A1 mini 0.8 nozzle",
		sub_path: "machine/Bambu Lab A1 mini 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab X1E 0.2 nozzle",
		sub_path: "machine/Bambu Lab X1E 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab X1E 0.6 nozzle",
		sub_path: "machine/Bambu Lab X1E 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab X1E 0.8 nozzle",
		sub_path: "machine/Bambu Lab X1E 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab A1 0.2 nozzle",
		sub_path: "machine/Bambu Lab A1 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab A1 0.6 nozzle",
		sub_path: "machine/Bambu Lab A1 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab A1 0.8 nozzle",
		sub_path: "machine/Bambu Lab A1 0.8 nozzle.json"
	},
	{
		name: "Bambu Lab H2D 0.2 nozzle",
		sub_path: "machine/Bambu Lab H2D 0.2 nozzle.json"
	},
	{
		name: "Bambu Lab H2D 0.6 nozzle",
		sub_path: "machine/Bambu Lab H2D 0.6 nozzle.json"
	},
	{
		name: "Bambu Lab H2D 0.8 nozzle",
		sub_path: "machine/Bambu Lab H2D 0.8 nozzle.json"
	}
];
var BBL = {
	name: name$2,
	url: url,
	version: version$2,
	force_update: force_update$2,
	description: description$2,
	machine_model_list: machine_model_list$2,
	process_list: process_list$2,
	filament_list: filament_list$2,
	machine_list: machine_list$2
};

var name$1 = "Anycubic";
var version$1 = "01.10.00.01";
var force_update$1 = "0";
var description$1 = "Anycubic configurations";
var machine_model_list$1 = [
	{
		name: "Anycubic i3 Mega S",
		sub_path: "machine/Anycubic i3 Mega S.json"
	},
	{
		name: "Anycubic Chiron",
		sub_path: "machine/Anycubic Chiron.json"
	},
	{
		name: "Anycubic Vyper",
		sub_path: "machine/Anycubic Vyper.json"
	},
	{
		name: "Anycubic Kobra Max",
		sub_path: "machine/Anycubic Kobra Max.json"
	},
	{
		name: "Anycubic 4Max Pro",
		sub_path: "machine/Anycubic 4Max Pro.json"
	},
	{
		name: "Anycubic 4Max Pro 2",
		sub_path: "machine/Anycubic 4Max Pro 2.json"
	},
	{
		name: "Anycubic Kobra 2",
		sub_path: "machine/Anycubic Kobra 2.json"
	},
	{
		name: "Anycubic Kobra Plus",
		sub_path: "machine/Anycubic Kobra Plus.json"
	}
];
var process_list$1 = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "0.15mm Optimal @Anycubic i3MegaS",
		sub_path: "process/0.15mm Optimal @Anycubic i3MegaS.json"
	},
	{
		name: "0.15mm Optimal @Anycubic Chiron",
		sub_path: "process/0.15mm Optimal @Anycubic Chiron.json"
	},
	{
		name: "0.15mm Optimal @Anycubic Vyper",
		sub_path: "process/0.15mm Optimal @Anycubic Vyper.json"
	},
	{
		name: "0.15mm Optimal @Anycubic KobraMax",
		sub_path: "process/0.15mm Optimal @Anycubic KobraMax.json"
	},
	{
		name: "0.15mm Optimal @Anycubic 4MaxPro2",
		sub_path: "process/0.15mm Optimal @Anycubic 4MaxPro2.json"
	},
	{
		name: "0.15mm Optimal @Anycubic Kobra2",
		sub_path: "process/0.15mm Optimal @Anycubic Kobra2.json"
	},
	{
		name: "0.20mm Standard @Anycubic i3MegaS",
		sub_path: "process/0.20mm Standard @Anycubic i3MegaS.json"
	},
	{
		name: "0.20mm Standard @Anycubic Chiron",
		sub_path: "process/0.20mm Standard @Anycubic Chiron.json"
	},
	{
		name: "0.20mm Standard @Anycubic Vyper",
		sub_path: "process/0.20mm Standard @Anycubic Vyper.json"
	},
	{
		name: "0.20mm Standard @Anycubic KobraMax",
		sub_path: "process/0.20mm Standard @Anycubic KobraMax.json"
	},
	{
		name: "0.20mm Standard @Anycubic 4MaxPro",
		sub_path: "process/0.20mm Standard @Anycubic 4MaxPro.json"
	},
	{
		name: "0.20mm Standard @Anycubic 4MaxPro2",
		sub_path: "process/0.20mm Standard @Anycubic 4MaxPro2.json"
	},
	{
		name: "0.20mm Standard @Anycubic Kobra2",
		sub_path: "process/0.20mm Standard @Anycubic Kobra2.json"
	},
	{
		name: "0.20mm Standard @Anycubic KobraPlus",
		sub_path: "process/0.20mm Standard @Anycubic KobraPlus.json"
	},
	{
		name: "0.30mm Draft @Anycubic i3MegaS",
		sub_path: "process/0.30mm Draft @Anycubic i3MegaS.json"
	},
	{
		name: "0.30mm Draft @Anycubic Chiron",
		sub_path: "process/0.30mm Draft @Anycubic Chiron.json"
	},
	{
		name: "0.30mm Draft @Anycubic Vyper",
		sub_path: "process/0.30mm Draft @Anycubic Vyper.json"
	},
	{
		name: "0.30mm Draft @Anycubic KobraMax",
		sub_path: "process/0.30mm Draft @Anycubic KobraMax.json"
	},
	{
		name: "0.30mm Draft @Anycubic 4MaxPro2",
		sub_path: "process/0.30mm Draft @Anycubic 4MaxPro2.json"
	},
	{
		name: "0.30mm Draft @Anycubic Kobra2",
		sub_path: "process/0.30mm Draft @Anycubic Kobra2.json"
	}
];
var filament_list$1 = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Anycubic",
		sub_path: "filament/Generic ABS @Anycubic.json"
	},
	{
		name: "Generic ASA @Anycubic",
		sub_path: "filament/Generic ASA @Anycubic.json"
	},
	{
		name: "Generic PA @Anycubic",
		sub_path: "filament/Generic PA @Anycubic.json"
	},
	{
		name: "Generic PA-CF @Anycubic",
		sub_path: "filament/Generic PA-CF @Anycubic.json"
	},
	{
		name: "Generic PC @Anycubic",
		sub_path: "filament/Generic PC @Anycubic.json"
	},
	{
		name: "Generic PETG @Anycubic",
		sub_path: "filament/Generic PETG @Anycubic.json"
	},
	{
		name: "Generic PLA @Anycubic",
		sub_path: "filament/Generic PLA @Anycubic.json"
	},
	{
		name: "Generic PLA-CF @Anycubic",
		sub_path: "filament/Generic PLA-CF @Anycubic.json"
	},
	{
		name: "Generic PVA @Anycubic",
		sub_path: "filament/Generic PVA @Anycubic.json"
	},
	{
		name: "Generic TPU @Anycubic",
		sub_path: "filament/Generic TPU @Anycubic.json"
	}
];
var machine_list$1 = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "Anycubic i3 Mega S 0.4 nozzle",
		sub_path: "machine/Anycubic i3 Mega S 0.4 nozzle.json"
	},
	{
		name: "Anycubic Chiron 0.4 nozzle",
		sub_path: "machine/Anycubic Chiron 0.4 nozzle.json"
	},
	{
		name: "Anycubic Vyper 0.4 nozzle",
		sub_path: "machine/Anycubic Vyper 0.4 nozzle.json"
	},
	{
		name: "Anycubic Kobra Max 0.4 nozzle",
		sub_path: "machine/Anycubic Kobra Max 0.4 nozzle.json"
	},
	{
		name: "Anycubic Kobra Plus 0.4 nozzle",
		sub_path: "machine/Anycubic Kobra Plus 0.4 nozzle.json"
	},
	{
		name: "Anycubic 4Max Pro 0.4 nozzle",
		sub_path: "machine/Anycubic 4Max Pro 0.4 nozzle.json"
	},
	{
		name: "Anycubic 4Max Pro 2 0.4 nozzle",
		sub_path: "machine/Anycubic 4Max Pro 2 0.4 nozzle.json"
	},
	{
		name: "Anycubic Kobra 2 0.4 nozzle",
		sub_path: "machine/Anycubic Kobra 2 0.4 nozzle.json"
	}
];
var Anycubic = {
	name: name$1,
	version: version$1,
	force_update: force_update$1,
	description: description$1,
	machine_model_list: machine_model_list$1,
	process_list: process_list$1,
	filament_list: filament_list$1,
	machine_list: machine_list$1
};

var name = "Anker";
var version = "02.00.00.01";
var force_update = "0";
var description = "Anker configurations";
var machine_model_list = [
	{
		name: "Anker M5",
		sub_path: "machine/Anker M5.json"
	},
	{
		name: "Anker M5C",
		sub_path: "machine/Anker M5C.json"
	}
];
var process_list = [
	{
		name: "fdm_process_common",
		sub_path: "process/fdm_process_common.json"
	},
	{
		name: "0.05mm Ultradetail @Anker",
		sub_path: "process/0.05mm Ultradetail @Anker.json"
	},
	{
		name: "0.10mm Detail @Anker",
		sub_path: "process/0.10mm Detail @Anker.json"
	},
	{
		name: "0.15mm Optimal @Anker",
		sub_path: "process/0.15mm Optimal @Anker.json"
	},
	{
		name: "0.20mm Standard @Anker",
		sub_path: "process/0.20mm Standard @Anker.json"
	},
	{
		name: "0.25mm Draft @Anker",
		sub_path: "process/0.25mm Draft @Anker.json"
	},
	{
		name: "0.30mm Superdraft @Anker",
		sub_path: "process/0.30mm Superdraft @Anker.json"
	},
	{
		name: "0.15mm Fast @Anker",
		sub_path: "process/0.15mm Fast @Anker.json"
	},
	{
		name: "0.20mm Fast @Anker",
		sub_path: "process/0.20mm Fast @Anker.json"
	},
	{
		name: "0.25mm Fast @Anker",
		sub_path: "process/0.25mm Fast @Anker.json"
	}
];
var filament_list = [
	{
		name: "fdm_filament_common",
		sub_path: "filament/fdm_filament_common.json"
	},
	{
		name: "fdm_filament_abs",
		sub_path: "filament/fdm_filament_abs.json"
	},
	{
		name: "fdm_filament_asa",
		sub_path: "filament/fdm_filament_asa.json"
	},
	{
		name: "fdm_filament_pa",
		sub_path: "filament/fdm_filament_pa.json"
	},
	{
		name: "fdm_filament_pc",
		sub_path: "filament/fdm_filament_pc.json"
	},
	{
		name: "fdm_filament_pet",
		sub_path: "filament/fdm_filament_pet.json"
	},
	{
		name: "fdm_filament_pla",
		sub_path: "filament/fdm_filament_pla.json"
	},
	{
		name: "fdm_filament_pva",
		sub_path: "filament/fdm_filament_pva.json"
	},
	{
		name: "fdm_filament_tpu",
		sub_path: "filament/fdm_filament_tpu.json"
	},
	{
		name: "Generic ABS @Anker",
		sub_path: "filament/Generic ABS @Anker.json"
	},
	{
		name: "Generic ASA @Anker",
		sub_path: "filament/Generic ASA @Anker.json"
	},
	{
		name: "Generic PA @Anker",
		sub_path: "filament/Generic PA @Anker.json"
	},
	{
		name: "Generic PA-CF @Anker",
		sub_path: "filament/Generic PA-CF @Anker.json"
	},
	{
		name: "Generic PC @Anker",
		sub_path: "filament/Generic PC @Anker.json"
	},
	{
		name: "Generic PETG @Anker",
		sub_path: "filament/Generic PETG @Anker.json"
	},
	{
		name: "Generic PLA @Anker",
		sub_path: "filament/Generic PLA @Anker.json"
	},
	{
		name: "Generic PLA-CF @Anker",
		sub_path: "filament/Generic PLA-CF @Anker.json"
	},
	{
		name: "Generic PVA @Anker",
		sub_path: "filament/Generic PVA @Anker.json"
	},
	{
		name: "Generic TPU @Anker",
		sub_path: "filament/Generic TPU @Anker.json"
	}
];
var machine_list = [
	{
		name: "fdm_machine_common",
		sub_path: "machine/fdm_machine_common.json"
	},
	{
		name: "Anker M5 0.4 nozzle",
		sub_path: "machine/Anker M5 0.4 nozzle.json"
	},
	{
		name: "Anker M5C 0.4 nozzle",
		sub_path: "machine/Anker M5C 0.4 nozzle.json"
	}
];
var Anker = {
	name: name,
	version: version,
	force_update: force_update,
	description: description,
	machine_model_list: machine_model_list,
	process_list: process_list,
	filament_list: filament_list,
	machine_list: machine_list
};

var filament = [
	"GFSA03"
];
var process = [
	"GP008"
];
var blacklist = {
	filament: filament,
	process: process
};

type Profile = Record<string, any> & {
    name: string;
    inherits?: string;
};
/**
 * Loads a profile by name, resolving inheritance and merging parent/child profiles.
 * @param name The profile name to load (must match the 'name' field in the profile JSON)
 * @param loaded Used internally to detect circular inheritance
 */
declare function loadProfile(name: string, loaded?: Set<string>): Profile;

declare const index_Anker: typeof Anker;
declare const index_Anycubic: typeof Anycubic;
declare const index_BBL: typeof BBL;
declare const index_Creality: typeof Creality;
declare const index_Elegoo: typeof Elegoo;
declare const index_Geeetech: typeof Geeetech;
declare const index_Prusa: typeof Prusa;
declare const index_Qidi: typeof Qidi;
declare const index_Tronxy: typeof Tronxy;
declare const index_Vivedino: typeof Vivedino;
declare const index_Voron: typeof Voron;
declare const index_Voxelab: typeof Voxelab;
declare const index_blacklist: typeof blacklist;
declare const index_loadProfile: typeof loadProfile;
declare namespace index {
  export { index_Anker as Anker, index_Anycubic as Anycubic, index_BBL as BBL, index_Creality as Creality, index_Elegoo as Elegoo, index_Geeetech as Geeetech, index_Prusa as Prusa, index_Qidi as Qidi, index_Tronxy as Tronxy, index_Vivedino as Vivedino, index_Voron as Voron, index_Voxelab as Voxelab, index_blacklist as blacklist, index_loadProfile as loadProfile };
}

type FilamentMappings = typeof FILAMENT_MAPPINGS;
type FilamentTypeSettings = FilamentMappings[keyof FilamentMappings];
type ModelSpecificSettings = FilamentTypeSettings["model_settings"][string];
type FilamentId = keyof FilamentMappings & string;
interface FilamentByIdResult {
    filamentId: FilamentId;
    materialType: string;
    profile: FilamentTypeSettings;
    nozzleTempMinInt: number;
    nozzleTempMaxInt: number;
}
interface ModelSettingsBySettingIdResult {
    filamentId: FilamentId;
    materialType: string;
    printerModel: string;
    settings: ModelSpecificSettings;
    nozzleTempMinInt: number;
    nozzleTempMaxInt: number;
}
/**
 * Find a filament profile by its filament_id (e.g., "GFA05").
 */
declare function findFilamentByFilamentId(filamentId: string): FilamentByIdResult | null;
/**
 * Find model-specific settings by its setting_id (e.g., "GFSA05_03").
 */
declare function findModelSettingsBySettingId(settingId: string): ModelSettingsBySettingIdResult | null;
/**
 * For Bambu profiles, tray_info_idx corresponds to the base config id, i.e., filament_id.
 * So this delegates to findFilamentByFilamentId.
 */
declare function findFilamentByTrayInfoIdx(trayInfoIdx: string): FilamentByIdResult | null;

/**
 * Color utilities for hex normalization, CIE-LAB conversion, and CIE76 distance.
 *
 * Uses the same conversion constants as BambuStudio and amsUtils.ts:
 *   pivotRgb × 100, D65 illuminant (REF_X=95.047, REF_Y=100.0, REF_Z=108.883)
 */
type LAB = {
    L: number;
    a: number;
    b: number;
};
declare function hexToRgb(hex: string): {
    r: number;
    g: number;
    b: number;
};
/**
 * Normalize a hex color string to uppercase "RRGGBB" (no # prefix, no alpha).
 * Returns undefined for empty/invalid input.
 */
declare function normalizeHexColor(input: unknown): string | undefined;
/**
 * Normalize a hex color string to uppercase "RRGGBBAA".
 * If input is 6-char (no alpha), appends "FF".
 * Returns undefined for empty/invalid input.
 */
declare function normalizeHexColorWithAlpha(input: unknown): string | undefined;
declare function rgbToLab(r: number, g: number, b: number): LAB;
declare function hexToLab(hex: string): LAB;
declare function deltaE76(lab1: LAB, lab2: LAB): number;
declare function getColorDistance(hex1: string, hex2: string): number;
declare function isColorWithinThreshold(hex1: string, hex2: string, threshold: number): boolean;

type MatchQuality = 'exact' | 'color' | 'type' | 'none';
interface SlotCandidate {
    slot: number;
    type: string;
    color: string;
    filamentId?: string;
    extruderId?: number;
}
interface MatchFilament {
    type: string;
    color: string;
    nozzle?: number;
}
interface SlotMatchResult {
    slot: number;
    matchQuality: MatchQuality;
    colorDistance?: number;
}
interface MatchOptions {
    colorThreshold?: number;
    allowReuseSlots?: boolean;
}
declare function findBestSlotMatch(filament: MatchFilament, slots: SlotCandidate[], usedSlots?: Set<number>, options?: MatchOptions): SlotMatchResult;
declare function matchAllFilaments(filaments: MatchFilament[], slots: SlotCandidate[], options?: MatchOptions): SlotMatchResult[];

/**
 * Video Stream Types for Bambu Lab Printers
 *
 * These types define the video streaming capabilities and configuration
 * for Bambu Lab 3D printers.
 */
/**
 * Video stream types supported by Bambu Lab printers
 */
declare enum VideoStreamType {
    /** Direct RTSP stream on local network */
    LOCAL_RTSP = "local_rtsp",
    /** Remote stream through Bambu cloud (TUTK protocol) */
    REMOTE_TUTK = "remote_tutk",
    /** Remote stream through Bambu cloud (Agora protocol) */
    REMOTE_AGORA = "remote_agora",
    /** No streaming available */
    NONE = "none"
}
/**
 * Video stream quality settings
 */
declare enum VideoStreamQuality {
    /** 1920x1080 */
    HD_1080P = "1080p",
    /** 1280x720 */
    HD_720P = "720p",
    /** 640x480 */
    SD_480P = "480p"
}
/**
 * Video stream connection status
 */
declare enum VideoStreamStatus {
    /** Stream is not initialized */
    IDLE = "idle",
    /** Stream is connecting */
    CONNECTING = "connecting",
    /** Stream is connected and active */
    ACTIVE = "active",
    /** Stream connection failed */
    ERROR = "error",
    /** Stream was disconnected */
    DISCONNECTED = "disconnected"
}
/**
 * Video stream information
 */
interface VideoStreamInfo {
    /** Stream type */
    type: VideoStreamType;
    /** Stream URL */
    url: string;
    /** Stream quality */
    quality: VideoStreamQuality;
    /** Stream status */
    status: VideoStreamStatus;
    /** Printer ID */
    printerId: string;
    /** Printer name */
    printerName: string;
    /** Printer model */
    printerModel: string;
    /** Camera index (for multi-camera printers like H2S/H2D) */
    cameraIndex?: number;
    /** Last connection timestamp */
    lastConnected?: string;
    /** Last disconnection timestamp */
    lastDisconnected?: string;
    /** Error message if stream failed */
    error?: string;
    /** Additional metadata */
    metadata?: Record<string, any>;
}
/**
 * Video stream configuration
 */
interface VideoStreamConfig {
    /** Printer IP address */
    host: string;
    /** Printer access token (used as password for RTSP) */
    accessToken: string;
    /** RTSP username (default: 'bblp') */
    username?: string;
    /** RTSP URL from printer state (from MQTT ipcam.rtsp_url) - if available, use this instead of generating */
    rtspUrl?: string;
    /** Preferred stream quality */
    quality?: VideoStreamQuality;
    /** Preferred stream type */
    preferredType?: VideoStreamType;
    /** Connection timeout in ms */
    timeout?: number;
    /** Camera index (for multi-camera printers) */
    cameraIndex?: number;
    /** Enable automatic reconnection */
    autoReconnect?: boolean;
}
/**
 * Video stream capabilities for a printer model
 */
interface VideoStreamCapabilities {
    /** Whether this model has a camera */
    hasCamera: boolean;
    /** Whether this model supports multiple cameras */
    multiCamera: boolean;
    /** Number of cameras available */
    cameraCount: number;
    /** Supported stream types */
    supportedTypes: VideoStreamType[];
    /** Supported resolutions */
    supportedResolutions: VideoStreamQuality[];
    /** Default RTSP port */
    rtspPort: number;
    /** Default stream quality */
    defaultQuality: VideoStreamQuality;
}
/**
 * Video stream request
 */
interface VideoStreamRequest {
    /** Printer ID */
    printerId: string;
    /** Desired stream type */
    type?: VideoStreamType;
    /** Desired quality */
    quality?: VideoStreamQuality;
    /** Camera index (for multi-camera printers) */
    cameraIndex?: number;
}
/**
 * Video stream response
 */
interface VideoStreamResponse {
    /** Whether the request was successful */
    success: boolean;
    /** Stream information (if successful) */
    stream?: VideoStreamInfo;
    /** Error message (if failed) */
    error?: string;
    /** Error code (if failed) */
    errorCode?: string;
}
/**
 * Camera control command types
 */
declare enum CameraControlCommand {
    /** Enable/disable recording */
    RECORDING = "ipcam_record_set",
    /** Enable/disable timelapse */
    TIMELAPSE = "ipcam_timelapse",
    /** Set resolution */
    RESOLUTION = "ipcam_resolution_set"
}
/**
 * Camera control request
 */
interface CameraControlRequest {
    /** Command type */
    command: CameraControlCommand;
    /** Control value (enable/disable) */
    control?: 'enable' | 'disable';
    /** Resolution value (for resolution command) */
    resolution?: VideoStreamQuality;
}
/**
 * Camera status information
 */
interface CameraStatus {
    /** Whether camera exists on the printer */
    exists: boolean;
    /** Whether recording is enabled */
    recording: boolean;
    /** Whether recording during print is enabled */
    recordingDuringPrint: boolean;
    /** Whether timelapse is enabled */
    timelapse: boolean;
    /** Current resolution */
    resolution: VideoStreamQuality;
    /** Supported resolutions */
    supportedResolutions: VideoStreamQuality[];
    /** Whether camera is currently busy */
    busy: boolean;
    /** Virtual camera status (if applicable) */
    virtualCamera?: boolean;
}

export { ALL_ERRORS, type AMS, AMSControlAction, type AMSTray$1 as AMSTray, AMS_LETTER_MAP, type AMS_PREFIX, AMS_SLOTS_PER_UNIT, ActiveState, type AirDuctData, type AirMode, type AirParts, type AmsConfiguration, type AmsMapping2Entry, type AmsMappingResult, AmsRFIDStatus, type AmsSlot, type AmsSlotInfo, AmsStatusMain, type Axis, type BackupSlot, type BambuClientPrinterStatus, type BambuErrorCode, type BaseFilamentConfig, CONNECT_RETURN_CODE_DESC, CameraControlCommand, type CameraControlRequest, CameraOperation, type CameraStatus, type ColorMatchDetails, type CommandCategory, type CommandParams, type CommandResponse, type CommandSchemas, type CommandType, type DeviceExtruder, type DeviceExtruderInfo, DeviceMode, type DeviceNozzle, type DeviceNozzleInfo, DoorOpenCheckState, type DualNozzleAmsMappingResult, ERROR_CODES_JOB_FAILED, type EnrichedAms, type EnrichedStageInfo, type EnrichedTray, ErrorCategory, type Extder, type ExtderData, type ExtendedFilamentConfig, type ExternalTray, ExtruderSwitchState, type ExtrusionRatioInfo, FILAMENT_MAPPINGS, FanType$1 as FanType, type FilamentByIdResult, type FilamentConfig, type FilamentConfigs, type FilamentMappingInfo, FilamentOperation, FilamentStep, FilamentType, type FilamentsByNozzle, type FirmwareInfo, type HMS, type HMSAction, type HMSActionJsonData, type HMSErrorInfo, type HMSErrorMessage, type HMSItem$1 as HMSItem, type HMSJsonData, HMSMessageLevel, HMSQuery, type LAB, LOCAL_CANCEL_CODE, LightEffect$1 as LightEffect, LightNode, type LightOptions, type LightReport, MAX_AMS_UNITS, MachineObject, type MatchFilament, type MatchOptions, type MatchQuality, type ModelSettingsBySettingIdResult, ModuleID, type ModuleVersionInfo, type Nozzle, type NozzleData, NozzleFlowType, NozzleToolType, NozzleType, type NumberRange, PRINTER_MODEL_LONG_NAME_MAP, PRINTER_MODEL_MAP, PauseCategory, type PrintMessage, type PrintMessageCommand, type PrintMessageCommands, PrintStage, PrintStageDetails, type PrintStageInfo, PrinterArch, type PrinterLongNames, PrinterModelIDs, PrinterModelNamesShort, PrinterSeries, type PrinterStatus, PrintingSpeedLevel, type ProjectFilament, type PushAllResponse, SdcardState, type SliceInfoPlate, type SlotCandidate, type SlotMatchResult, SpeedLevel, type State, type StringBoolean, type StringNumber, type StringNumberRange, UpgradeDisplayState, UpgradeErrorCode, UpgradeStatusFinishState, UpgradeStatusProgressState, VALID_COMMANDS, VIRTUAL_TRAY_DEPUTY_ID, VIRTUAL_TRAY_MAIN_ID, type VideoStreamCapabilities, type VideoStreamConfig, type VideoStreamInfo, VideoStreamQuality, type VideoStreamRequest, type VideoStreamResponse, VideoStreamStatus, VideoStreamType, amsMapping2EntryToGlobalSlot, calculateFilamBak, commandSchemas, convertFromAmsMapping2, convertToAmsMapping2, createAmsMappingFromSliceInfo, createCommand, createDualNozzleAmsMapping, deltaE76, filamentConfigs, findBestAmsSlotForFilament, findBestSlotMatch, findFilamentByFilamentId, findFilamentByTrayInfoIdx, findModelSettingsBySettingId, getAmsMappingSummary, getAvailableSettings, getBaseSettings, getColorDistance, getCompatibleMaterials, getDefaultFilamentIdForMaterialType, getEnrichedAmsData, getEnrichedStages, getErrorCategory, getErrorMessage, getErrorSeverity, getFilamentConfig, getFilamentId, getFilamentSetting, getFilamentSettings, getHMSModuleName, getHMSSeverityName, getHmsAction, getHmsErrorMessage, getHmsMessageLevelString, getLongErrorCode, getLongErrorCodeFromRaw, getMaterialSettings, getMaterialVendor, getModuleName, getStageFromCurr, getStagesFromArray, getSupportedPrinters, globalSlotFromAms, globalSlotToAmsMapping2Entry, groupFilamentsByNozzle, hasModelSpecificSettings, hexToLab, hexToRgb, hmsQuery, isAmsError, isColorWithinThreshold, isCommonError, isFatalError, isFromModule, isInfoMessage, isJobFailureError, isLocalCancelCode, isMaterialTypeSupported, isMcError, isPrintMessage, isPushAllCommand, isSeriousError, isThError, isValidAmsSlot, isValidCommand, isValidLongErrorCode, isVirtualSlot, isWaitingFilamentConfirmation, isXcamError, matchAllFilaments, normalizeHexColor, normalizeHexColorWithAlpha, parseFilamBak, parseFilamentMaps, parseHMSErrorCode, parseHmsErrorComplete, parseHmsInfo, parseHmsInfoDetailed, parseLongErrorCode, index as profiles, rgbToLab, sanitizeAmsMapping, stageCurrToStage, stageToPauseCategory, validateCommandParams };
