easyeda 0.0.232 → 0.0.233
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/{chunk-U5UUPCU3.js → chunk-CGLWJURY.js} +2 -1
- package/dist/browser/chunk-CGLWJURY.js.map +1 -0
- package/dist/browser/{dist-7RT7ZSAD.js → dist-B53E6C7Z.js} +532 -515
- package/dist/browser/dist-B53E6C7Z.js.map +1 -0
- package/dist/browser/index.js +6 -3
- package/dist/browser/index.js.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/main.cjs +9 -3
- package/dist/main.cjs.map +1 -1
- package/package.json +3 -1
- package/dist/browser/chunk-U5UUPCU3.js.map +0 -1
- package/dist/browser/dist-7RT7ZSAD.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../node_modules/svgson/dist/svgson.umd.js","../../node_modules/circuit-json/src/utils/convert-si-unit-to-number.ts","../../node_modules/circuit-json/src/units/index.ts","../../node_modules/circuit-json/src/common/point.ts","../../node_modules/circuit-json/src/utils/expect-types-match.ts","../../node_modules/circuit-json/src/common/point3.ts","../../node_modules/circuit-json/src/common/size.ts","../../node_modules/circuit-json/src/common/getZodPrefixedIdWithDefault.ts","../../node_modules/circuit-json/src/common/NinePointAnchor.ts","../../node_modules/circuit-json/src/source/source_simple_capacitor.ts","../../node_modules/circuit-json/src/pcb/properties/supplier_name.ts","../../node_modules/circuit-json/src/source/base/source_component_base.ts","../../node_modules/circuit-json/src/source/source_simple_resistor.ts","../../node_modules/circuit-json/src/source/source_simple_diode.ts","../../node_modules/circuit-json/src/source/source_simple_led.ts","../../node_modules/circuit-json/src/source/source_simple_ground.ts","../../node_modules/circuit-json/src/source/source_simple_chip.ts","../../node_modules/circuit-json/src/source/source_simple_power_source.ts","../../node_modules/circuit-json/src/source/any_source_component.ts","../../node_modules/circuit-json/src/source/source_simple_fuse.ts","../../node_modules/circuit-json/src/source/source_simple_battery.ts","../../node_modules/circuit-json/src/source/source_simple_inductor.ts","../../node_modules/circuit-json/src/source/source_simple_push_button.ts","../../node_modules/circuit-json/src/source/source_simple_potentiometer.ts","../../node_modules/circuit-json/src/source/source_simple_crystal.ts","../../node_modules/circuit-json/src/source/source_simple_pin_header.ts","../../node_modules/circuit-json/src/source/source_simple_pinout.ts","../../node_modules/circuit-json/src/source/source_simple_resonator.ts","../../node_modules/circuit-json/src/source/source_simple_transistor.ts","../../node_modules/circuit-json/src/source/source_simple_test_point.ts","../../node_modules/circuit-json/src/source/source_simple_mosfet.ts","../../node_modules/circuit-json/src/source/source_simple_switch.ts","../../node_modules/circuit-json/src/source/source_project_metadata.ts","../../node_modules/circuit-json/src/source/source_missing_property_error.ts","../../node_modules/circuit-json/src/source/source_failed_to_create_component_error.ts","../../node_modules/circuit-json/src/source/source_trace_not_connected_error.ts","../../node_modules/circuit-json/src/source/source_property_ignored_warning.ts","../../node_modules/circuit-json/src/source/source_pin_missing_trace_warning.ts","../../node_modules/circuit-json/src/source/source_simple_voltage_probe.ts","../../node_modules/circuit-json/src/source/source_interconnect.ts","../../node_modules/circuit-json/src/source/source_port.ts","../../node_modules/circuit-json/src/source/source_trace.ts","../../node_modules/circuit-json/src/source/source_group.ts","../../node_modules/circuit-json/src/source/source_net.ts","../../node_modules/circuit-json/src/source/source_board.ts","../../node_modules/circuit-json/src/source/source_pcb_ground_plane.ts","../../node_modules/circuit-json/src/source/source_manually_placed_via.ts","../../node_modules/circuit-json/src/pcb/properties/layer_ref.ts","../../node_modules/circuit-json/src/source/source_pin_must_be_connected_error.ts","../../node_modules/circuit-json/src/source/unknown_error_finding_part.ts","../../node_modules/circuit-json/src/schematic/schematic_box.ts","../../node_modules/circuit-json/src/schematic/schematic_path.ts","../../node_modules/circuit-json/src/schematic/schematic_component.ts","../../node_modules/circuit-json/src/schematic/schematic_line.ts","../../node_modules/circuit-json/src/schematic/schematic_rect.ts","../../node_modules/circuit-json/src/schematic/schematic_circle.ts","../../node_modules/circuit-json/src/schematic/schematic_arc.ts","../../node_modules/circuit-json/src/schematic/schematic_trace.ts","../../node_modules/circuit-json/src/schematic/schematic_text.ts","../../node_modules/circuit-json/src/common/FivePointAnchor.ts","../../node_modules/circuit-json/src/schematic/schematic_port.ts","../../node_modules/circuit-json/src/schematic/schematic_net_label.ts","../../node_modules/circuit-json/src/schematic/schematic_error.ts","../../node_modules/circuit-json/src/schematic/schematic_layout_error.ts","../../node_modules/circuit-json/src/schematic/schematic_debug_object.ts","../../node_modules/circuit-json/src/schematic/schematic_voltage_probe.ts","../../node_modules/circuit-json/src/schematic/schematic_manual_edit_conflict_warning.ts","../../node_modules/circuit-json/src/schematic/schematic_group.ts","../../node_modules/circuit-json/src/schematic/schematic_table.ts","../../node_modules/circuit-json/src/schematic/schematic_table_cell.ts","../../node_modules/circuit-json/src/schematic/schematic_sheet.ts","../../node_modules/circuit-json/src/pcb/properties/brep.ts","../../node_modules/circuit-json/src/pcb/properties/pcb_route_hints.ts","../../node_modules/circuit-json/src/pcb/properties/route_hint_point.ts","../../node_modules/circuit-json/src/pcb/pcb_component.ts","../../node_modules/circuit-json/src/pcb/pcb_hole.ts","../../node_modules/circuit-json/src/pcb/pcb_plated_hole.ts","../../node_modules/circuit-json/src/pcb/pcb_port.ts","../../node_modules/circuit-json/src/pcb/pcb_smtpad.ts","../../node_modules/circuit-json/src/pcb/pcb_solder_paste.ts","../../node_modules/circuit-json/src/pcb/pcb_text.ts","../../node_modules/circuit-json/src/pcb/pcb_trace.ts","../../node_modules/circuit-json/src/pcb/pcb_trace_error.ts","../../node_modules/circuit-json/src/pcb/pcb_trace_missing_error.ts","../../node_modules/circuit-json/src/pcb/pcb_port_not_matched_error.ts","../../node_modules/circuit-json/src/pcb/pcb_port_not_connected_error.ts","../../node_modules/circuit-json/src/pcb/pcb_net.ts","../../node_modules/circuit-json/src/pcb/pcb_via.ts","../../node_modules/circuit-json/src/pcb/pcb_board.ts","../../node_modules/circuit-json/src/pcb/pcb_panel.ts","../../node_modules/circuit-json/src/pcb/pcb_placement_error.ts","../../node_modules/circuit-json/src/pcb/pcb_trace_hint.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_line.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_path.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_text.ts","../../node_modules/circuit-json/src/pcb/pcb_copper_text.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_rect.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_circle.ts","../../node_modules/circuit-json/src/pcb/pcb_silkscreen_oval.ts","../../node_modules/circuit-json/src/pcb/pcb_fabrication_note_text.ts","../../node_modules/circuit-json/src/pcb/pcb_fabrication_note_path.ts","../../node_modules/circuit-json/src/pcb/pcb_fabrication_note_rect.ts","../../node_modules/circuit-json/src/pcb/pcb_fabrication_note_dimension.ts","../../node_modules/circuit-json/src/pcb/pcb_note_text.ts","../../node_modules/circuit-json/src/pcb/pcb_note_rect.ts","../../node_modules/circuit-json/src/pcb/pcb_note_path.ts","../../node_modules/circuit-json/src/pcb/pcb_note_line.ts","../../node_modules/circuit-json/src/pcb/pcb_note_dimension.ts","../../node_modules/circuit-json/src/pcb/pcb_footprint_overlap_error.ts","../../node_modules/circuit-json/src/pcb/pcb_keepout.ts","../../node_modules/circuit-json/src/pcb/pcb_cutout.ts","../../node_modules/circuit-json/src/pcb/pcb_missing_footprint_error.ts","../../node_modules/circuit-json/src/pcb/external_footprint_load_error.ts","../../node_modules/circuit-json/src/pcb/circuit_json_footprint_load_error.ts","../../node_modules/circuit-json/src/pcb/pcb_group.ts","../../node_modules/circuit-json/src/pcb/pcb_autorouting_error.ts","../../node_modules/circuit-json/src/pcb/pcb_manual_edit_conflict_warning.ts","../../node_modules/circuit-json/src/pcb/pcb_breakout_point.ts","../../node_modules/circuit-json/src/pcb/pcb_ground_plane.ts","../../node_modules/circuit-json/src/pcb/pcb_ground_plane_region.ts","../../node_modules/circuit-json/src/pcb/pcb_thermal_spoke.ts","../../node_modules/circuit-json/src/pcb/pcb_copper_pour.ts","../../node_modules/circuit-json/src/pcb/pcb_component_outside_board_error.ts","../../node_modules/circuit-json/src/pcb/pcb_component_invalid_layer_error.ts","../../node_modules/circuit-json/src/pcb/pcb_via_clearance_error.ts","../../node_modules/circuit-json/src/pcb/pcb_courtyard_rect.ts","../../node_modules/circuit-json/src/pcb/pcb_courtyard_outline.ts","../../node_modules/circuit-json/src/pcb/pcb_courtyard_polygon.ts","../../node_modules/circuit-json/src/cad/cad_component.ts","../../node_modules/circuit-json/src/simulation/simulation_voltage_source.ts","../../node_modules/circuit-json/src/simulation/simulation_experiment.ts","../../node_modules/circuit-json/src/simulation/simulation_transient_voltage_graph.ts","../../node_modules/circuit-json/src/simulation/simulation_switch.ts","../../node_modules/circuit-json/src/simulation/simulation_voltage_probe.ts","../../node_modules/circuit-json/src/simulation/simulation_unknown_experiment_error.ts","../../node_modules/circuit-json/src/any_circuit_element.ts","../../node_modules/transformation-matrix/src/applyToPoint.js","../../node_modules/transformation-matrix/src/translate.js","../../node_modules/transformation-matrix/src/transform.js","../../node_modules/transformation-matrix/src/utils.js","../../node_modules/transformation-matrix/src/rotate.js","../../node_modules/transformation-matrix/src/scale.js","../../node_modules/transformation-matrix/src/toString.js","../../node_modules/transformation-matrix/src/inverse.js","../../node_modules/transformation-matrix/src/smoothMatrix.js","../../node_modules/transformation-matrix/src/fromTriangles.js","../../node_modules/transformation-matrix/src/identity.js","../../node_modules/transformation-matrix/src/skew.js","../../node_modules/transformation-matrix/src/fromTransformAttribute.autogenerated.js","../../node_modules/transformation-matrix/src/decompose.js","../../node_modules/transformation-matrix/src/flip.js","../../node_modules/@tscircuit/circuit-json-util/lib/cju.ts","../../node_modules/@tscircuit/circuit-json-util/lib/subtree.ts","../../node_modules/@tscircuit/circuit-json-util/lib/cju-indexed.ts","../../node_modules/@tscircuit/circuit-json-util/lib/transform-soup-elements.ts","../../node_modules/@tscircuit/circuit-json-util/lib/direction-to-vec.ts","../../node_modules/@tscircuit/circuit-json-util/lib/apply-selector.ts","../../node_modules/@tscircuit/circuit-json-util/lib/convert-abbreviation-to-soup-element-type.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-element-id.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-element-by-id.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-pcb-trace.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-pcb-port.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-pcb-smtpad.ts","../../node_modules/@tscircuit/circuit-json-util/lib/readable-name-functions/get-readable-name-for-element.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-bounds-of-pcb-elements.ts","../../node_modules/@tscircuit/circuit-json-util/lib/utils/string-hash.ts","../../node_modules/@tscircuit/circuit-json-util/lib/utils/get-layout-debug-object.ts","../../node_modules/@tscircuit/circuit-json-util/lib/utils/is-truthy.ts","../../node_modules/@tscircuit/circuit-json-util/lib/find-bounds-and-center.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-primary-id.ts","../../node_modules/@tscircuit/circuit-json-util/lib/reposition-pcb-component.ts","../../node_modules/@tscircuit/circuit-json-util/lib/reposition-pcb-group.ts","../../node_modules/@tscircuit/circuit-json-util/lib/reposition-schematic-component.ts","../../node_modules/@tscircuit/circuit-json-util/lib/reposition-schematic-group.ts","../../node_modules/@tscircuit/circuit-json-util/lib/getCircuitJsonTree.ts","../../node_modules/@tscircuit/circuit-json-util/lib/getStringFromCircuitJsonTree.ts","../../node_modules/@tscircuit/circuit-json-util/lib/get-minimum-flex-container.ts","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/applyToPoint.js","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/utils.js","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/translate.js","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/transform.js","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/rotate.js","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/skew.js","../../node_modules/schematic-symbols/node_modules/transformation-matrix/src/fromTransformAttribute.autogenerated.js","../../node_modules/schematic-symbols/drawing/utils/getBoundsOfPrimitives.ts","../../node_modules/schematic-symbols/drawing/rotateSymbol.ts","../../node_modules/schematic-symbols/drawing/modify-symbol/modify-symbol.ts","../../node_modules/schematic-symbols/assets/generated/ac_voltmeter.json","../../node_modules/schematic-symbols/symbols/ac_voltmeter_down.ts","../../node_modules/schematic-symbols/symbols/ac_voltmeter_horz.ts","../../node_modules/schematic-symbols/symbols/ac_voltmeter_left.ts","../../node_modules/schematic-symbols/symbols/ac_voltmeter_right.ts","../../node_modules/schematic-symbols/symbols/ac_voltmeter_up.ts","../../node_modules/schematic-symbols/symbols/ac_voltmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/avalanche_diode.json","../../node_modules/schematic-symbols/symbols/avalanche_diode_down.ts","../../node_modules/schematic-symbols/symbols/avalanche_diode_horz.ts","../../node_modules/schematic-symbols/symbols/avalanche_diode_left.ts","../../node_modules/schematic-symbols/symbols/avalanche_diode_right.ts","../../node_modules/schematic-symbols/symbols/avalanche_diode_up.ts","../../node_modules/schematic-symbols/symbols/avalanche_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/backward_diode.json","../../node_modules/schematic-symbols/symbols/backward_diode_down.ts","../../node_modules/schematic-symbols/symbols/backward_diode_left.ts","../../node_modules/schematic-symbols/symbols/backward_diode_right.ts","../../node_modules/schematic-symbols/symbols/backward_diode_up.ts","../../node_modules/schematic-symbols/drawing/defineSymbol.ts","../../node_modules/schematic-symbols/assets/generated/battery.json","../../node_modules/schematic-symbols/symbols/battery_horz.ts","../../node_modules/schematic-symbols/symbols/battery_vert.ts","../../node_modules/schematic-symbols/assets/generated/boxresistor.json","../../node_modules/schematic-symbols/symbols/boxresistor_down.ts","../../node_modules/schematic-symbols/symbols/boxresistor_left.ts","../../node_modules/schematic-symbols/symbols/boxresistor_right.ts","../../node_modules/schematic-symbols/assets/generated/boxresistor_small.json","../../node_modules/schematic-symbols/symbols/boxresistor_small_down.ts","../../node_modules/schematic-symbols/symbols/boxresistor_small_left.ts","../../node_modules/schematic-symbols/symbols/boxresistor_small_right.ts","../../node_modules/schematic-symbols/symbols/boxresistor_small_up.ts","../../node_modules/schematic-symbols/symbols/boxresistor_up.ts","../../node_modules/schematic-symbols/assets/generated/bridged_ground.json","../../node_modules/schematic-symbols/symbols/bridged_ground_down.ts","../../node_modules/schematic-symbols/symbols/bridged_ground_right.ts","../../node_modules/schematic-symbols/symbols/bridged_ground_left.ts","../../node_modules/schematic-symbols/symbols/bridged_ground_up.ts","../../node_modules/schematic-symbols/assets/generated/capacitor.json","../../node_modules/schematic-symbols/symbols/capacitor_down.ts","../../node_modules/schematic-symbols/symbols/capacitor_left.ts","../../node_modules/schematic-symbols/assets/generated/capacitor_polarized.json","../../node_modules/schematic-symbols/symbols/capacitor_polarized_down.ts","../../node_modules/schematic-symbols/symbols/capacitor_polarized_left.ts","../../node_modules/schematic-symbols/symbols/capacitor_polarized_right.ts","../../node_modules/schematic-symbols/symbols/capacitor_polarized_up.ts","../../node_modules/schematic-symbols/symbols/capacitor_right.ts","../../node_modules/schematic-symbols/symbols/capacitor_up.ts","../../node_modules/schematic-symbols/assets/generated/constant_current_diode.json","../../node_modules/schematic-symbols/symbols/constant_current_diode_down.ts","../../node_modules/schematic-symbols/symbols/constant_current_diode_horz.ts","../../node_modules/schematic-symbols/symbols/constant_current_diode_left.ts","../../node_modules/schematic-symbols/symbols/constant_current_diode_right.ts","../../node_modules/schematic-symbols/symbols/constant_current_diode_up.ts","../../node_modules/schematic-symbols/symbols/constant_current_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/crystal_4pin.json","../../node_modules/schematic-symbols/symbols/crystal_4pin_down.ts","../../node_modules/schematic-symbols/symbols/crystal_4pin_left.ts","../../node_modules/schematic-symbols/symbols/crystal_4pin_right.ts","../../node_modules/schematic-symbols/symbols/crystal_4pin_up.ts","../../node_modules/schematic-symbols/assets/generated/crystal.json","../../node_modules/schematic-symbols/symbols/crystal_down.ts","../../node_modules/schematic-symbols/symbols/crystal_left.ts","../../node_modules/schematic-symbols/symbols/crystal_right.ts","../../node_modules/schematic-symbols/symbols/crystal_up.ts","../../node_modules/schematic-symbols/assets/generated/darlington_pair_transistor.json","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_down.ts","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_left.ts","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_right.ts","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_up.ts","../../node_modules/schematic-symbols/symbols/darlington_pair_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/dc_ammeter.json","../../node_modules/schematic-symbols/symbols/dc_ammeter_horz.ts","../../node_modules/schematic-symbols/symbols/dc_ammeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/dc_voltmeter.json","../../node_modules/schematic-symbols/symbols/dc_voltmeter_down.ts","../../node_modules/schematic-symbols/symbols/dc_voltmeter_horz.ts","../../node_modules/schematic-symbols/symbols/dc_voltmeter_left.ts","../../node_modules/schematic-symbols/symbols/dc_voltmeter_right.ts","../../node_modules/schematic-symbols/symbols/dc_voltmeter_up.ts","../../node_modules/schematic-symbols/symbols/dc_voltmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/diac.json","../../node_modules/schematic-symbols/symbols/diac_down.ts","../../node_modules/schematic-symbols/symbols/diac_horz.ts","../../node_modules/schematic-symbols/symbols/diac_left.ts","../../node_modules/schematic-symbols/symbols/diac_right.ts","../../node_modules/schematic-symbols/symbols/diac_up.ts","../../node_modules/schematic-symbols/symbols/diac_vert.ts","../../node_modules/schematic-symbols/assets/generated/digital_ground.json","../../node_modules/schematic-symbols/symbols/digital_ground_down.ts","../../node_modules/schematic-symbols/symbols/digital_ground_left.ts","../../node_modules/schematic-symbols/symbols/digital_ground_right.ts","../../node_modules/schematic-symbols/symbols/digital_ground_up.ts","../../node_modules/schematic-symbols/assets/generated/diode.json","../../node_modules/schematic-symbols/symbols/diode_right.ts","../../node_modules/schematic-symbols/symbols/diode_down.ts","../../node_modules/schematic-symbols/symbols/diode_left.ts","../../node_modules/schematic-symbols/symbols/diode_up.ts","../../node_modules/schematic-symbols/assets/generated/dpdt_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpdt_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/dpdt_switch.json","../../node_modules/schematic-symbols/symbols/dpdt_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpdt_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpdt_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpdt_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/dpst_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpst_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/dpst_switch.json","../../node_modules/schematic-symbols/symbols/dpst_switch_right.ts","../../node_modules/schematic-symbols/symbols/dpst_switch_down.ts","../../node_modules/schematic-symbols/symbols/dpst_switch_left.ts","../../node_modules/schematic-symbols/symbols/dpst_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/ferrite_bead.json","../../node_modules/schematic-symbols/symbols/ferrite_bead_up.ts","../../node_modules/schematic-symbols/symbols/ferrite_bead_down.ts","../../node_modules/schematic-symbols/symbols/ferrite_bead_right.ts","../../node_modules/schematic-symbols/symbols/ferrite_bead_left.ts","../../node_modules/schematic-symbols/assets/generated/filled_diode.json","../../node_modules/schematic-symbols/symbols/filled_diode_down.ts","../../node_modules/schematic-symbols/symbols/filled_diode_horz.ts","../../node_modules/schematic-symbols/symbols/filled_diode_left.ts","../../node_modules/schematic-symbols/symbols/filled_diode_right.ts","../../node_modules/schematic-symbols/symbols/filled_diode_up.ts","../../node_modules/schematic-symbols/symbols/filled_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/frequency_meter.json","../../node_modules/schematic-symbols/symbols/frequency_meter_horz.ts","../../node_modules/schematic-symbols/symbols/frequency_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/fuse.json","../../node_modules/schematic-symbols/symbols/fuse_horz.ts","../../node_modules/schematic-symbols/symbols/fuse_vert.ts","../../node_modules/schematic-symbols/assets/generated/ground.json","../../node_modules/schematic-symbols/symbols/ground_down.ts","../../node_modules/schematic-symbols/symbols/ground_horz.ts","../../node_modules/schematic-symbols/symbols/ground_left.ts","../../node_modules/schematic-symbols/symbols/ground_right.ts","../../node_modules/schematic-symbols/symbols/ground_up.ts","../../node_modules/schematic-symbols/symbols/ground_vert.ts","../../node_modules/schematic-symbols/assets/generated/gunn_diode.json","../../node_modules/schematic-symbols/symbols/gunn_diode_horz.ts","../../node_modules/schematic-symbols/symbols/gunn_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/icled.json","../../node_modules/schematic-symbols/symbols/icled_right.ts","../../node_modules/schematic-symbols/symbols/icled_down.ts","../../node_modules/schematic-symbols/symbols/icled_left.ts","../../node_modules/schematic-symbols/symbols/icled_up.ts","../../node_modules/schematic-symbols/assets/generated/igbt_transistor.json","../../node_modules/schematic-symbols/symbols/igbt_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/igbt_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/illuminated_push_button_normally_open.json","../../node_modules/schematic-symbols/symbols/illuminated_push_button_normally_open_horz.ts","../../node_modules/schematic-symbols/symbols/illuminated_push_button_normally_open_vert.ts","../../node_modules/schematic-symbols/assets/generated/inductor.json","../../node_modules/schematic-symbols/symbols/inductor_right.ts","../../node_modules/schematic-symbols/symbols/inductor_up.ts","../../node_modules/schematic-symbols/symbols/inductor_down.ts","../../node_modules/schematic-symbols/symbols/inductor_left.ts","../../node_modules/schematic-symbols/assets/generated/laser_diode.json","../../node_modules/schematic-symbols/symbols/laser_diode_right.ts","../../node_modules/schematic-symbols/symbols/laser_diode_down.ts","../../node_modules/schematic-symbols/symbols/laser_diode_left.ts","../../node_modules/schematic-symbols/symbols/laser_diode_up.ts","../../node_modules/schematic-symbols/assets/generated/led.json","../../node_modules/schematic-symbols/symbols/led_right.ts","../../node_modules/schematic-symbols/symbols/led_up.ts","../../node_modules/schematic-symbols/symbols/led_down.ts","../../node_modules/schematic-symbols/symbols/led_left.ts","../../node_modules/schematic-symbols/assets/generated/light_dependent_resistor.json","../../node_modules/schematic-symbols/symbols/light_dependent_resistor_horz.ts","../../node_modules/schematic-symbols/symbols/light_dependent_resistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/mosfet_depletion_normally_on.json","../../node_modules/schematic-symbols/symbols/mosfet_depletion_normally_on_horz.ts","../../node_modules/schematic-symbols/symbols/mosfet_depletion_normally_on_vert.ts","../../node_modules/schematic-symbols/assets/generated/mushroom_head_normally_open_momentary.json","../../node_modules/schematic-symbols/symbols/mushroom_head_normally_open_momentary_horz.ts","../../node_modules/schematic-symbols/symbols/mushroom_head_normally_open_momentary_vert.ts","../../node_modules/schematic-symbols/assets/generated/n_channel_d_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/n_channel_d_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/n_channel_d_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/n_channel_e_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/n_channel_e_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/n_channel_e_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/njfet_transistor.json","../../node_modules/schematic-symbols/symbols/njfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/njfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/not_connected.json","../../node_modules/schematic-symbols/symbols/not_connected_right.ts","../../node_modules/schematic-symbols/symbols/not_connected_down.ts","../../node_modules/schematic-symbols/symbols/not_connected_left.ts","../../node_modules/schematic-symbols/symbols/not_connected_up.ts","../../node_modules/schematic-symbols/assets/generated/npn_bipolar_transistor.json","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_down.ts","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_left.ts","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_right.ts","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_up.ts","../../node_modules/schematic-symbols/symbols/npn_bipolar_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/opamp_no_power.json","../../node_modules/schematic-symbols/symbols/opamp_no_power_right.ts","../../node_modules/schematic-symbols/symbols/opamp_no_power_down.ts","../../node_modules/schematic-symbols/symbols/opamp_no_power_left.ts","../../node_modules/schematic-symbols/symbols/opamp_no_power_up.ts","../../node_modules/schematic-symbols/assets/generated/opamp_with_power.json","../../node_modules/schematic-symbols/symbols/opamp_with_power_right.ts","../../node_modules/schematic-symbols/symbols/opamp_with_power_down.ts","../../node_modules/schematic-symbols/symbols/opamp_with_power_left.ts","../../node_modules/schematic-symbols/symbols/opamp_with_power_up.ts","../../node_modules/schematic-symbols/assets/generated/p_channel_d_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/p_channel_d_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/p_channel_d_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/p_channel_e_mosfet_transistor.json","../../node_modules/schematic-symbols/symbols/p_channel_e_mosfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/p_channel_e_mosfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/photodiode.json","../../node_modules/schematic-symbols/symbols/photodiode_horz.ts","../../node_modules/schematic-symbols/symbols/photodiode_vert.ts","../../node_modules/schematic-symbols/assets/generated/pjfet_transistor.json","../../node_modules/schematic-symbols/symbols/pjfet_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/pjfet_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/pnp_bipolar_transistor.json","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_down.ts","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_left.ts","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_right.ts","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_up.ts","../../node_modules/schematic-symbols/symbols/pnp_bipolar_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/potentiometer.json","../../node_modules/schematic-symbols/symbols/potentiometer_horz.ts","../../node_modules/schematic-symbols/symbols/potentiometer_vert.ts","../../node_modules/schematic-symbols/assets/generated/potentiometer2.json","../../node_modules/schematic-symbols/symbols/potentiometer2_right.ts","../../node_modules/schematic-symbols/symbols/potentiometer2_down.ts","../../node_modules/schematic-symbols/symbols/potentiometer2_left.ts","../../node_modules/schematic-symbols/symbols/potentiometer2_up.ts","../../node_modules/schematic-symbols/assets/generated/potentiometer3.json","../../node_modules/schematic-symbols/symbols/potentiometer3_down.ts","../../node_modules/schematic-symbols/symbols/potentiometer3_left.ts","../../node_modules/schematic-symbols/symbols/potentiometer3_right.ts","../../node_modules/schematic-symbols/symbols/potentiometer3_up.ts","../../node_modules/schematic-symbols/assets/generated/power_factor_meter.json","../../node_modules/schematic-symbols/symbols/power_factor_meter_horz.ts","../../node_modules/schematic-symbols/symbols/power_factor_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/push_button_normally_closed_momentary.json","../../node_modules/schematic-symbols/symbols/push_button_normally_closed_momentary_horz.ts","../../node_modules/schematic-symbols/symbols/push_button_normally_closed_momentary_vert.ts","../../node_modules/schematic-symbols/assets/generated/push_button_normally_open_momentary.json","../../node_modules/schematic-symbols/symbols/push_button_normally_open_momentary_horz.ts","../../node_modules/schematic-symbols/symbols/push_button_normally_open_momentary_vert.ts","../../node_modules/schematic-symbols/assets/generated/rail.json","../../node_modules/schematic-symbols/symbols/rail_down.ts","../../node_modules/schematic-symbols/symbols/rail_left.ts","../../node_modules/schematic-symbols/symbols/rail_right.ts","../../node_modules/schematic-symbols/symbols/rail_up.ts","../../node_modules/schematic-symbols/assets/generated/rectifier_diode.json","../../node_modules/schematic-symbols/symbols/rectifier_diode_horz.ts","../../node_modules/schematic-symbols/symbols/rectifier_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/resistor.json","../../node_modules/schematic-symbols/symbols/resistor_down.ts","../../node_modules/schematic-symbols/symbols/resistor_left.ts","../../node_modules/schematic-symbols/symbols/resistor_right.ts","../../node_modules/schematic-symbols/symbols/resistor_up.ts","../../node_modules/schematic-symbols/assets/generated/resonator.json","../../node_modules/schematic-symbols/symbols/resonator_right.ts","../../node_modules/schematic-symbols/symbols/resonator_down.ts","../../node_modules/schematic-symbols/symbols/resonator_horz.ts","../../node_modules/schematic-symbols/symbols/resonator_left.ts","../../node_modules/schematic-symbols/symbols/resonator_up.ts","../../node_modules/schematic-symbols/symbols/resonator_vert.ts","../../node_modules/schematic-symbols/assets/generated/schottky_diode.json","../../node_modules/schematic-symbols/symbols/schottky_diode_right.ts","../../node_modules/schematic-symbols/symbols/schottky_diode_down.ts","../../node_modules/schematic-symbols/symbols/schottky_diode_left.ts","../../node_modules/schematic-symbols/symbols/schottky_diode_up.ts","../../node_modules/schematic-symbols/assets/generated/silicon_controlled_rectifier.json","../../node_modules/schematic-symbols/symbols/silicon_controlled_rectifier_horz.ts","../../node_modules/schematic-symbols/symbols/silicon_controlled_rectifier_vert.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper2_bridged12.json","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_bridged12_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper2.json","../../node_modules/schematic-symbols/symbols/solderjumper2_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper2_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3_bridged12.json","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged12_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3_bridged123.json","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged123_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3_bridged23.json","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_bridged23_up.ts","../../node_modules/schematic-symbols/assets/generated/solderjumper3.json","../../node_modules/schematic-symbols/symbols/solderjumper3_down.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_left.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_right.ts","../../node_modules/schematic-symbols/symbols/solderjumper3_up.ts","../../node_modules/schematic-symbols/assets/generated/spdt_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/spdt_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/spdt_switch.json","../../node_modules/schematic-symbols/symbols/spdt_switch_right.ts","../../node_modules/schematic-symbols/symbols/spdt_switch_down.ts","../../node_modules/schematic-symbols/symbols/spdt_switch_left.ts","../../node_modules/schematic-symbols/symbols/spdt_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/spst_normally_closed_switch.json","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_right.ts","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_down.ts","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_left.ts","../../node_modules/schematic-symbols/symbols/spst_normally_closed_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/spst_switch.json","../../node_modules/schematic-symbols/symbols/spst_switch_right.ts","../../node_modules/schematic-symbols/symbols/spst_switch_down.ts","../../node_modules/schematic-symbols/symbols/spst_switch_left.ts","../../node_modules/schematic-symbols/symbols/spst_switch_up.ts","../../node_modules/schematic-symbols/assets/generated/square_wave.json","../../node_modules/schematic-symbols/symbols/square_wave_down.ts","../../node_modules/schematic-symbols/symbols/square_wave_left.ts","../../node_modules/schematic-symbols/symbols/square_wave_right.ts","../../node_modules/schematic-symbols/symbols/square_wave_up.ts","../../node_modules/schematic-symbols/assets/generated/step_recovery_diode.json","../../node_modules/schematic-symbols/symbols/step_recovery_diode_horz.ts","../../node_modules/schematic-symbols/symbols/step_recovery_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/tachometer.json","../../node_modules/schematic-symbols/symbols/tachometer_horz.ts","../../node_modules/schematic-symbols/symbols/tachometer_vert.ts","../../node_modules/schematic-symbols/symbols/testpoint_right.ts","../../node_modules/schematic-symbols/symbols/testpoint_down.ts","../../node_modules/schematic-symbols/symbols/testpoint_left.ts","../../node_modules/schematic-symbols/symbols/testpoint_up.ts","../../node_modules/schematic-symbols/assets/generated/tilted_ground.json","../../node_modules/schematic-symbols/symbols/tilted_ground_right.ts","../../node_modules/schematic-symbols/symbols/tilted_ground_up.ts","../../node_modules/schematic-symbols/symbols/tilted_ground_down.ts","../../node_modules/schematic-symbols/symbols/tilted_ground_left.ts","../../node_modules/schematic-symbols/assets/generated/triac.json","../../node_modules/schematic-symbols/symbols/triac_horz.ts","../../node_modules/schematic-symbols/symbols/triac_vert.ts","../../node_modules/schematic-symbols/assets/generated/tunnel_diode.json","../../node_modules/schematic-symbols/symbols/tunnel_diode_horz.ts","../../node_modules/schematic-symbols/symbols/tunnel_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/unijunction_transistor.json","../../node_modules/schematic-symbols/symbols/unijunction_transistor_horz.ts","../../node_modules/schematic-symbols/symbols/unijunction_transistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/usbc.json","../../node_modules/schematic-symbols/symbols/usbc.ts","../../node_modules/schematic-symbols/assets/generated/var_meter.json","../../node_modules/schematic-symbols/symbols/var_meter_horz.ts","../../node_modules/schematic-symbols/symbols/var_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/varactor_diode.json","../../node_modules/schematic-symbols/symbols/varactor_diode_horz.ts","../../node_modules/schematic-symbols/symbols/varactor_diode_vert.ts","../../node_modules/schematic-symbols/assets/generated/varistor.json","../../node_modules/schematic-symbols/symbols/varistor_horz.ts","../../node_modules/schematic-symbols/symbols/varistor_vert.ts","../../node_modules/schematic-symbols/assets/generated/varmeter.json","../../node_modules/schematic-symbols/symbols/varmeter_horz.ts","../../node_modules/schematic-symbols/symbols/varmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/vcc.json","../../node_modules/schematic-symbols/drawing/resizeSymbol.ts","../../node_modules/schematic-symbols/symbols/vcc_down.ts","../../node_modules/schematic-symbols/symbols/vcc_left.ts","../../node_modules/schematic-symbols/symbols/vcc_right.ts","../../node_modules/schematic-symbols/symbols/vcc_up.ts","../../node_modules/schematic-symbols/assets/generated/volt_meter.json","../../node_modules/schematic-symbols/symbols/volt_meter_horz.ts","../../node_modules/schematic-symbols/symbols/volt_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/watt_hour_meter.json","../../node_modules/schematic-symbols/symbols/watt_hour_meter_horz.ts","../../node_modules/schematic-symbols/symbols/watt_hour_meter_vert.ts","../../node_modules/schematic-symbols/assets/generated/wattmeter.json","../../node_modules/schematic-symbols/symbols/wattmeter_horz.ts","../../node_modules/schematic-symbols/symbols/wattmeter_vert.ts","../../node_modules/schematic-symbols/assets/generated/zener_diode.json","../../node_modules/schematic-symbols/symbols/zener_diode_horz.ts","../../node_modules/schematic-symbols/symbols/zener_diode_vert.ts","../../node_modules/schematic-symbols/generated/symbols-index.ts","../../node_modules/schematic-symbols/drawing/utils/makeYUpPositive.ts","../../node_modules/schematic-symbols/drawing/mapColor.ts","../../node_modules/schematic-symbols/drawing/pathToSvgD.ts","../../node_modules/schematic-symbols/drawing/getSvg.ts","../../node_modules/schematic-symbols/index.ts","../../node_modules/circuit-json-to-connectivity-map/node_modules/@tscircuit/math-utils/src/line-intersections.ts","../../node_modules/circuit-json-to-connectivity-map/src/findConnectedNetworks.ts","../../node_modules/circuit-json-to-connectivity-map/src/ConnectivityMap.ts","../../node_modules/circuit-json-to-connectivity-map/src/getSourcePortConnectivityMapFromCircuitJson.ts","../../node_modules/circuit-json-to-connectivity-map/src/getFullConnectivityMapFromCircuitJson.ts","../../node_modules/circuit-json-to-connectivity-map/src/PcbConnectivityMap.ts","../../node_modules/calculate-elbow/dist/index.js"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.svgson = factory());\n})(this, (function () { 'use strict';\n\n /*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n // The _isBuffer check is for Safari 5-7 support, because it's missing\n // Object.prototype.constructor. Remove this eventually\n var isBuffer_1 = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n };\n\n function isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n }\n\n // For Node v0.10 support. Remove this eventually.\n function isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n }\n\n var toString = Object.prototype.toString;\n\n /**\n * Get the native `typeof` a value.\n *\n * @param {*} `val`\n * @return {*} Native javascript type\n */\n\n var kindOf = function kindOf(val) {\n // primitivies\n if (typeof val === 'undefined') {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (val === true || val === false || val instanceof Boolean) {\n return 'boolean';\n }\n if (typeof val === 'string' || val instanceof String) {\n return 'string';\n }\n if (typeof val === 'number' || val instanceof Number) {\n return 'number';\n }\n\n // functions\n if (typeof val === 'function' || val instanceof Function) {\n return 'function';\n }\n\n // array\n if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) {\n return 'array';\n }\n\n // check for instances of RegExp and Date before calling `toString`\n if (val instanceof RegExp) {\n return 'regexp';\n }\n if (val instanceof Date) {\n return 'date';\n }\n\n // other objects\n var type = toString.call(val);\n\n if (type === '[object RegExp]') {\n return 'regexp';\n }\n if (type === '[object Date]') {\n return 'date';\n }\n if (type === '[object Arguments]') {\n return 'arguments';\n }\n if (type === '[object Error]') {\n return 'error';\n }\n\n // buffer\n if (isBuffer_1(val)) {\n return 'buffer';\n }\n\n // es6: Map, WeakMap, Set, WeakSet\n if (type === '[object Set]') {\n return 'set';\n }\n if (type === '[object WeakSet]') {\n return 'weakset';\n }\n if (type === '[object Map]') {\n return 'map';\n }\n if (type === '[object WeakMap]') {\n return 'weakmap';\n }\n if (type === '[object Symbol]') {\n return 'symbol';\n }\n\n // typed arrays\n if (type === '[object Int8Array]') {\n return 'int8array';\n }\n if (type === '[object Uint8Array]') {\n return 'uint8array';\n }\n if (type === '[object Uint8ClampedArray]') {\n return 'uint8clampedarray';\n }\n if (type === '[object Int16Array]') {\n return 'int16array';\n }\n if (type === '[object Uint16Array]') {\n return 'uint16array';\n }\n if (type === '[object Int32Array]') {\n return 'int32array';\n }\n if (type === '[object Uint32Array]') {\n return 'uint32array';\n }\n if (type === '[object Float32Array]') {\n return 'float32array';\n }\n if (type === '[object Float64Array]') {\n return 'float64array';\n }\n\n // must be a plain object\n return 'object';\n };\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var renameKeys = createCommonjsModule(function (module) {\n (function() {\n\n function rename(obj, fn) {\n if (typeof fn !== 'function') {\n return obj;\n }\n\n var res = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[fn(key, obj[key]) || key] = obj[key];\n }\n }\n return res;\n }\n\n if (module.exports) {\n module.exports = rename;\n } else {\n {\n window.rename = rename;\n }\n }\n })();\n });\n\n /**\n * Expose `renameDeep`\n */\n\n var deepRenameKeys = function renameDeep(obj, cb) {\n var type = kindOf(obj);\n\n if (type !== 'object' && type !== 'array') {\n throw new Error('expected an object');\n }\n\n var res = [];\n if (type === 'object') {\n obj = renameKeys(obj, cb);\n res = {};\n }\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var val = obj[key];\n if (kindOf(val) === 'object' || kindOf(val) === 'array') {\n res[key] = renameDeep(val, cb);\n } else {\n res[key] = val;\n }\n }\n }\n return res;\n };\n\n var eventemitter3 = createCommonjsModule(function (module) {\n\n var has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n /**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\n function Events() {}\n\n //\n // We try to not inherit from `Object.prototype`. In some engines creating an\n // instance in this way is faster than calling `Object.create(null)` directly.\n // If `Object.create(null)` is not supported we prefix the event names with a\n // character to make sure that the built-in object properties are not\n // overridden or used as an attack vector.\n //\n if (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n }\n\n /**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\n function EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n }\n\n /**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\n function EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n /**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\n EventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n };\n\n /**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\n EventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n };\n\n /**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\n EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n };\n\n /**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n };\n\n /**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n };\n\n /**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n };\n\n /**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n };\n\n //\n // Alias methods names because people roll like that.\n //\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n //\n // This function doesn't apply anymore.\n //\n EventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n };\n\n //\n // Expose the prefix.\n //\n EventEmitter.prefixed = prefix;\n\n //\n // Allow `EventEmitter` to be imported as module namespace.\n //\n EventEmitter.EventEmitter = EventEmitter;\n\n //\n // Expose the module.\n //\n {\n module.exports = EventEmitter;\n }\n });\n\n function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n var noop = function noop() {};\n\n var State = {\n data: 'state-data',\n cdata: 'state-cdata',\n tagBegin: 'state-tag-begin',\n tagName: 'state-tag-name',\n tagEnd: 'state-tag-end',\n attributeNameStart: 'state-attribute-name-start',\n attributeName: 'state-attribute-name',\n attributeNameEnd: 'state-attribute-name-end',\n attributeValueBegin: 'state-attribute-value-begin',\n attributeValue: 'state-attribute-value'\n };\n\n var Action = {\n lt: 'action-lt',\n gt: 'action-gt',\n space: 'action-space',\n equal: 'action-equal',\n quote: 'action-quote',\n slash: 'action-slash',\n char: 'action-char',\n error: 'action-error'\n };\n\n var Type$1 = {\n text: 'text',\n openTag: 'open-tag',\n closeTag: 'close-tag',\n attributeName: 'attribute-name',\n attributeValue: 'attribute-value'\n };\n\n var charToAction = {\n ' ': Action.space,\n '\\t': Action.space,\n '\\n': Action.space,\n '\\r': Action.space,\n '<': Action.lt,\n '>': Action.gt,\n '\"': Action.quote,\n \"'\": Action.quote,\n '=': Action.equal,\n '/': Action.slash\n };\n\n var getAction = function getAction(char) {\n return charToAction[char] || Action.char;\n };\n\n /**\n * @param {Object} options\n * @param {Boolean} options.debug\n * @return {Object}\n */\n var create$1 = function create(options) {\n var _State$data, _State$tagBegin, _State$tagName, _State$tagEnd, _State$attributeNameS, _State$attributeName, _State$attributeNameE, _State$attributeValue, _State$attributeValue2, _lexer$stateMachine;\n\n options = Object.assign({ debug: false }, options);\n var lexer = new eventemitter3();\n var state = State.data;\n var data = '';\n var tagName = '';\n var attrName = '';\n var attrValue = '';\n var isClosing = '';\n var openingQuote = '';\n\n var emit = function emit(type, value) {\n // for now, ignore tags like: '?xml', '!DOCTYPE' or comments\n if (tagName[0] === '?' || tagName[0] === '!') {\n return;\n }\n var event = { type: type, value: value };\n if (options.debug) {\n console.log('emit:', event);\n }\n lexer.emit('data', event);\n };\n\n lexer.stateMachine = (_lexer$stateMachine = {}, _defineProperty(_lexer$stateMachine, State.data, (_State$data = {}, _defineProperty(_State$data, Action.lt, function () {\n if (data.trim()) {\n emit(Type$1.text, data);\n }\n tagName = '';\n isClosing = false;\n state = State.tagBegin;\n }), _defineProperty(_State$data, Action.char, function (char) {\n data += char;\n }), _State$data)), _defineProperty(_lexer$stateMachine, State.cdata, _defineProperty({}, Action.char, function (char) {\n data += char;\n if (data.substr(-3) === ']]>') {\n emit(Type$1.text, data.slice(0, -3));\n data = '';\n state = State.data;\n }\n })), _defineProperty(_lexer$stateMachine, State.tagBegin, (_State$tagBegin = {}, _defineProperty(_State$tagBegin, Action.space, noop), _defineProperty(_State$tagBegin, Action.char, function (char) {\n tagName = char;\n state = State.tagName;\n }), _defineProperty(_State$tagBegin, Action.slash, function () {\n tagName = '';\n isClosing = true;\n }), _State$tagBegin)), _defineProperty(_lexer$stateMachine, State.tagName, (_State$tagName = {}, _defineProperty(_State$tagName, Action.space, function () {\n if (isClosing) {\n state = State.tagEnd;\n } else {\n state = State.attributeNameStart;\n emit(Type$1.openTag, tagName);\n }\n }), _defineProperty(_State$tagName, Action.gt, function () {\n if (isClosing) {\n emit(Type$1.closeTag, tagName);\n } else {\n emit(Type$1.openTag, tagName);\n }\n data = '';\n state = State.data;\n }), _defineProperty(_State$tagName, Action.slash, function () {\n state = State.tagEnd;\n emit(Type$1.openTag, tagName);\n }), _defineProperty(_State$tagName, Action.char, function (char) {\n tagName += char;\n if (tagName === '![CDATA[') {\n state = State.cdata;\n data = '';\n tagName = '';\n }\n }), _State$tagName)), _defineProperty(_lexer$stateMachine, State.tagEnd, (_State$tagEnd = {}, _defineProperty(_State$tagEnd, Action.gt, function () {\n emit(Type$1.closeTag, tagName);\n data = '';\n state = State.data;\n }), _defineProperty(_State$tagEnd, Action.char, noop), _State$tagEnd)), _defineProperty(_lexer$stateMachine, State.attributeNameStart, (_State$attributeNameS = {}, _defineProperty(_State$attributeNameS, Action.char, function (char) {\n attrName = char;\n state = State.attributeName;\n }), _defineProperty(_State$attributeNameS, Action.gt, function () {\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeNameS, Action.space, noop), _defineProperty(_State$attributeNameS, Action.slash, function () {\n isClosing = true;\n state = State.tagEnd;\n }), _State$attributeNameS)), _defineProperty(_lexer$stateMachine, State.attributeName, (_State$attributeName = {}, _defineProperty(_State$attributeName, Action.space, function () {\n state = State.attributeNameEnd;\n }), _defineProperty(_State$attributeName, Action.equal, function () {\n emit(Type$1.attributeName, attrName);\n state = State.attributeValueBegin;\n }), _defineProperty(_State$attributeName, Action.gt, function () {\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeName, Action.slash, function () {\n isClosing = true;\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n state = State.tagEnd;\n }), _defineProperty(_State$attributeName, Action.char, function (char) {\n attrName += char;\n }), _State$attributeName)), _defineProperty(_lexer$stateMachine, State.attributeNameEnd, (_State$attributeNameE = {}, _defineProperty(_State$attributeNameE, Action.space, noop), _defineProperty(_State$attributeNameE, Action.equal, function () {\n emit(Type$1.attributeName, attrName);\n state = State.attributeValueBegin;\n }), _defineProperty(_State$attributeNameE, Action.gt, function () {\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeNameE, Action.char, function (char) {\n attrValue = '';\n emit(Type$1.attributeName, attrName);\n emit(Type$1.attributeValue, attrValue);\n attrName = char;\n state = State.attributeName;\n }), _State$attributeNameE)), _defineProperty(_lexer$stateMachine, State.attributeValueBegin, (_State$attributeValue = {}, _defineProperty(_State$attributeValue, Action.space, noop), _defineProperty(_State$attributeValue, Action.quote, function (char) {\n openingQuote = char;\n attrValue = '';\n state = State.attributeValue;\n }), _defineProperty(_State$attributeValue, Action.gt, function () {\n attrValue = '';\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }), _defineProperty(_State$attributeValue, Action.char, function (char) {\n openingQuote = '';\n attrValue = char;\n state = State.attributeValue;\n }), _State$attributeValue)), _defineProperty(_lexer$stateMachine, State.attributeValue, (_State$attributeValue2 = {}, _defineProperty(_State$attributeValue2, Action.space, function (char) {\n if (openingQuote) {\n attrValue += char;\n } else {\n emit(Type$1.attributeValue, attrValue);\n state = State.attributeNameStart;\n }\n }), _defineProperty(_State$attributeValue2, Action.quote, function (char) {\n if (openingQuote === char) {\n emit(Type$1.attributeValue, attrValue);\n state = State.attributeNameStart;\n } else {\n attrValue += char;\n }\n }), _defineProperty(_State$attributeValue2, Action.gt, function (char) {\n if (openingQuote) {\n attrValue += char;\n } else {\n emit(Type$1.attributeValue, attrValue);\n data = '';\n state = State.data;\n }\n }), _defineProperty(_State$attributeValue2, Action.slash, function (char) {\n if (openingQuote) {\n attrValue += char;\n } else {\n emit(Type$1.attributeValue, attrValue);\n isClosing = true;\n state = State.tagEnd;\n }\n }), _defineProperty(_State$attributeValue2, Action.char, function (char) {\n attrValue += char;\n }), _State$attributeValue2)), _lexer$stateMachine);\n\n var step = function step(char) {\n if (options.debug) {\n console.log(state, char);\n }\n var actions = lexer.stateMachine[state];\n var action = actions[getAction(char)] || actions[Action.error] || actions[Action.char];\n action(char);\n };\n\n lexer.write = function (str) {\n var len = str.length;\n for (var i = 0; i < len; i++) {\n step(str[i]);\n }\n };\n\n return lexer;\n };\n\n var lexer = {\n State: State,\n Action: Action,\n Type: Type$1,\n create: create$1\n };\n\n var Type = lexer.Type;\n\n var NodeType = {\n element: 'element',\n text: 'text'\n };\n\n var createNode = function createNode(params) {\n return Object.assign({\n name: '',\n type: NodeType.element,\n value: '',\n parent: null,\n attributes: {},\n children: []\n }, params);\n };\n\n var create = function create(options) {\n options = Object.assign({\n stream: false,\n parentNodes: true,\n doneEvent: 'done',\n tagPrefix: 'tag:',\n emitTopLevelOnly: false,\n debug: false\n }, options);\n\n var lexer$1 = void 0,\n rootNode = void 0,\n current = void 0,\n attrName = void 0;\n\n var reader = new eventemitter3();\n\n var handleLexerData = function handleLexerData(data) {\n switch (data.type) {\n\n case Type.openTag:\n if (current === null) {\n current = rootNode;\n current.name = data.value;\n } else {\n var node = createNode({\n name: data.value,\n parent: current\n });\n current.children.push(node);\n current = node;\n }\n break;\n\n case Type.closeTag:\n var parent = current.parent;\n if (!options.parentNodes) {\n current.parent = null;\n }\n if (current.name !== data.value) {\n // ignore unexpected closing tag\n break;\n }\n if (options.stream && parent === rootNode) {\n rootNode.children = [];\n // do not expose parent node in top level nodes\n current.parent = null;\n }\n if (!options.emitTopLevelOnly || parent === rootNode) {\n reader.emit(options.tagPrefix + current.name, current);\n reader.emit('tag', current.name, current);\n }\n if (current === rootNode) {\n // end of document, stop listening\n lexer$1.removeAllListeners('data');\n reader.emit(options.doneEvent, current);\n rootNode = null;\n }\n current = parent;\n break;\n\n case Type.text:\n if (current) {\n current.children.push(createNode({\n type: NodeType.text,\n value: data.value,\n parent: options.parentNodes ? current : null\n }));\n }\n break;\n\n case Type.attributeName:\n attrName = data.value;\n current.attributes[attrName] = '';\n break;\n\n case Type.attributeValue:\n current.attributes[attrName] = data.value;\n break;\n }\n };\n\n reader.reset = function () {\n lexer$1 = lexer.create({ debug: options.debug });\n lexer$1.on('data', handleLexerData);\n rootNode = createNode();\n current = null;\n attrName = '';\n reader.parse = lexer$1.write;\n };\n\n reader.reset();\n return reader;\n };\n\n var parseSync = function parseSync(xml, options) {\n options = Object.assign({}, options, { stream: false, tagPrefix: ':' });\n var reader = create(options);\n var res = void 0;\n reader.on('done', function (ast) {\n res = ast;\n });\n reader.parse(xml);\n return res;\n };\n\n var reader = {\n parseSync: parseSync,\n create: create,\n NodeType: NodeType\n };\n var reader_1 = reader.parseSync;\n\n var parseInput = function parseInput(input) {\n var parsed = reader_1(\"<root>\".concat(input, \"</root>\"), {\n parentNodes: false\n });\n var isValid = parsed.children && parsed.children.length > 0 && parsed.children.every(function (node) {\n return node.name === 'svg';\n });\n if (isValid) {\n return parsed.children.length === 1 ? parsed.children[0] : parsed.children;\n } else {\n throw Error('nothing to parse');\n }\n };\n var camelize = function camelize(node) {\n return deepRenameKeys(node, function (key) {\n if (!notCamelcase(key)) {\n return toCamelCase(key);\n }\n return key;\n });\n };\n var toCamelCase = function toCamelCase(prop) {\n return prop.replace(/[-|:]([a-z])/gi, function (all, letter) {\n return letter.toUpperCase();\n });\n };\n var notCamelcase = function notCamelcase(prop) {\n return /^(data|aria)(-\\w+)/.test(prop);\n };\n var escapeText = function escapeText(text) {\n if (text) {\n var str = String(text);\n return /[&<>]/.test(str) ? \"<![CDATA[\".concat(str.replace(/]]>/, ']]]]><![CDATA[>'), \"]]>\") : str;\n }\n return '';\n };\n var escapeAttr = function escapeAttr(attr) {\n return String(attr).replace(/&/g, '&').replace(/'/g, ''').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n };\n\n var svgsonSync = function svgsonSync(input) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$transformNode = _ref.transformNode,\n transformNode = _ref$transformNode === void 0 ? function (node) {\n return node;\n } : _ref$transformNode,\n _ref$camelcase = _ref.camelcase,\n camelcase = _ref$camelcase === void 0 ? false : _ref$camelcase;\n var applyFilters = function applyFilters(input) {\n var n;\n n = transformNode(input);\n if (camelcase) {\n n = camelize(n);\n }\n return n;\n };\n return applyFilters(parseInput(input));\n };\n function svgson() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return new Promise(function (resolve, reject) {\n try {\n var res = svgsonSync.apply(void 0, args);\n resolve(res);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n var stringify = function stringify(_ast) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$transformAttr = _ref.transformAttr,\n transformAttr = _ref$transformAttr === void 0 ? function (key, value, escape) {\n return \"\".concat(key, \"=\\\"\").concat(escape(value), \"\\\"\");\n } : _ref$transformAttr,\n _ref$transformNode = _ref.transformNode,\n transformNode = _ref$transformNode === void 0 ? function (node) {\n return node;\n } : _ref$transformNode,\n _ref$selfClose = _ref.selfClose,\n selfClose = _ref$selfClose === void 0 ? true : _ref$selfClose;\n if (Array.isArray(_ast)) {\n return _ast.map(function (ast) {\n return stringify(ast, {\n transformAttr: transformAttr,\n selfClose: selfClose,\n transformNode: transformNode\n });\n }).join('');\n }\n var ast = transformNode(_ast);\n if (ast.type === 'text') {\n return escapeText(ast.value);\n }\n var attributes = '';\n for (var attr in ast.attributes) {\n var attrStr = transformAttr(attr, ast.attributes[attr], escapeAttr, ast.name);\n attributes += attrStr ? \" \".concat(attrStr) : '';\n }\n return ast.children && ast.children.length > 0 || !selfClose ? \"<\".concat(ast.name).concat(attributes, \">\").concat(stringify(ast.children, {\n transformAttr: transformAttr,\n transformNode: transformNode,\n selfClose: selfClose\n }), \"</\").concat(ast.name, \">\") : \"<\".concat(ast.name).concat(attributes, \"/>\");\n };\n\n var indexUmd = Object.assign({}, {\n parse: svgson,\n parseSync: svgsonSync,\n stringify: stringify\n });\n\n return indexUmd;\n\n}));\n","type UnitInfo = {\n baseUnit: BaseTscircuitUnit\n conversionFactor: number\n}\n\nconst unitMappings: Record<\n string,\n { baseUnit: BaseTscircuitUnit; variants: Record<string, number> }\n> = {\n Hz: {\n baseUnit: \"Hz\",\n variants: {\n MHz: 1e6,\n kHz: 1e3,\n Hz: 1,\n },\n },\n g: {\n baseUnit: \"g\",\n variants: {\n kg: 1e3,\n g: 1,\n },\n },\n Ω: {\n baseUnit: \"Ω\",\n variants: {\n mΩ: 1e-3,\n Ω: 1,\n kΩ: 1e3,\n KΩ: 1e3,\n kohm: 1e3,\n MΩ: 1e6,\n GΩ: 1e9,\n TΩ: 1e12,\n },\n },\n V: {\n baseUnit: \"V\",\n variants: {\n mV: 1e-3,\n V: 1,\n kV: 1e3,\n KV: 1e3,\n MV: 1e6,\n GV: 1e9,\n TV: 1e12,\n },\n },\n A: {\n baseUnit: \"A\",\n variants: {\n µA: 1e-6,\n mA: 1e-3,\n ma: 1e-3,\n A: 1,\n kA: 1e3,\n MA: 1e6,\n },\n },\n F: {\n baseUnit: \"F\",\n variants: {\n pF: 1e-12,\n nF: 1e-9,\n µF: 1e-6,\n uF: 1e-6,\n mF: 1e-3,\n F: 1,\n },\n },\n ml: {\n baseUnit: \"ml\",\n variants: {\n ml: 1,\n mL: 1,\n l: 1e3,\n L: 1e3,\n },\n },\n deg: {\n baseUnit: \"deg\",\n variants: {\n rad: 180 / Math.PI,\n },\n },\n ms: {\n baseUnit: \"ms\",\n variants: {\n fs: 1e-12,\n ps: 1e-9,\n ns: 1e-6,\n us: 1e-3,\n µs: 1e-3,\n ms: 1,\n s: 1000,\n },\n },\n mm: {\n baseUnit: \"mm\",\n variants: {\n nm: 1e-6,\n µm: 1e-3,\n um: 1e-3,\n mm: 1,\n cm: 10,\n dm: 100,\n m: 1000,\n km: 1e6,\n in: 25.4,\n ft: 304.8,\n IN: 25.4,\n FT: 304.8,\n yd: 914.4,\n mi: 1.609344e6,\n mil: 0.0254,\n },\n },\n}\n\nconst unitMappingAndVariantSuffixes = new Set()\nfor (const [baseUnit, info] of Object.entries(unitMappings)) {\n unitMappingAndVariantSuffixes.add(baseUnit)\n for (const variant of Object.keys(info.variants)) {\n unitMappingAndVariantSuffixes.add(variant)\n }\n}\n\nfunction getBaseTscircuitUnit(unit: string): UnitInfo {\n for (const [baseUnit, info] of Object.entries(unitMappings)) {\n if (unit in info.variants) {\n return {\n baseUnit: info.baseUnit,\n conversionFactor: info.variants[unit]!,\n }\n }\n }\n return {\n baseUnit: unit as BaseTscircuitUnit,\n conversionFactor: 1,\n }\n}\n\nconst si_prefix_multiplier = {\n tera: 1e12,\n T: 1e12,\n giga: 1e9,\n G: 1e9,\n mega: 1e6,\n M: 1e6,\n kilo: 1e3,\n k: 1e3,\n deci: 1e-1,\n d: 1e-1,\n centi: 1e-2,\n c: 1e-2,\n milli: 1e-3,\n m: 1e-3,\n micro: 1e-6,\n u: 1e-6,\n µ: 1e-6,\n nano: 1e-9,\n n: 1e-9,\n pico: 1e-12,\n p: 1e-12,\n}\ntype BaseTscircuitUnit =\n | \"ms\"\n | \"mm\"\n | \"g\"\n | \"deg\"\n | \"Hz\"\n | \"ml\"\n | \"V\"\n | \"A\"\n | \"Ω\"\n | \"F\"\n | \"H\"\n\nexport function parseAndConvertSiUnit(v: {\n x: string | number\n y: string | number\n}): {\n parsedUnit: string | null\n unitOfValue: BaseTscircuitUnit | null\n value: { x: number; y: number } | null\n}\nexport function parseAndConvertSiUnit(v: string | number | undefined | null): {\n parsedUnit: string | null\n unitOfValue: BaseTscircuitUnit | null\n value: number | null\n}\nexport function parseAndConvertSiUnit(\n v:\n | string\n | number\n | undefined\n | null\n | { x: string | number; y: string | number },\n): {\n parsedUnit: string | null\n unitOfValue: BaseTscircuitUnit | null\n value: null | number | { x: number; y: number }\n} {\n if (v === undefined || v === null)\n return { parsedUnit: null, unitOfValue: null, value: null }\n if (typeof v === \"string\" && v.match(/^-?[\\d\\.]+$/))\n return {\n value: Number.parseFloat(v),\n parsedUnit: null,\n unitOfValue: null,\n }\n if (typeof v === \"number\")\n return { value: v, parsedUnit: null, unitOfValue: null }\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\n const { parsedUnit, unitOfValue } = parseAndConvertSiUnit(v.x)\n const xResult = parseAndConvertSiUnit(v.x)\n const yResult = parseAndConvertSiUnit(v.y)\n if (xResult.value === null || yResult.value === null) {\n return { parsedUnit: null, unitOfValue: null, value: null }\n }\n return {\n parsedUnit: parsedUnit,\n unitOfValue: unitOfValue,\n value: {\n x: xResult.value,\n y: yResult.value,\n },\n }\n }\n const reversed_input_string = v.toString().split(\"\").reverse().join(\"\")\n const unit_reversed = reversed_input_string.match(/[^\\d\\s]+/)?.[0]\n if (!unit_reversed) {\n throw new Error(`Could not determine unit: \"${v}\"`)\n }\n const unit = unit_reversed.split(\"\").reverse().join(\"\")\n\n const numberPart = v.slice(0, -unit.length)\n if (\n unit in si_prefix_multiplier &&\n !unitMappingAndVariantSuffixes.has(unit)\n ) {\n const siMultiplier =\n si_prefix_multiplier[unit as keyof typeof si_prefix_multiplier]\n return {\n parsedUnit: null,\n unitOfValue: null,\n value: Number.parseFloat(numberPart) * siMultiplier,\n }\n }\n\n const { baseUnit, conversionFactor } = getBaseTscircuitUnit(unit)\n\n return {\n parsedUnit: unit,\n unitOfValue: baseUnit,\n value: conversionFactor * Number.parseFloat(numberPart),\n }\n}\n","import { parseAndConvertSiUnit } from \"src/utils/convert-si-unit-to-number\"\nimport { z } from \"zod\"\n\n// // Currently, removing uncommon SI Prefixes for type simplicity.\n// export type SIPrefix =\n// // | \"y\"\n// // | \"yocto\"\n// // | \"z\"\n// // | \"zepto\"\n// // | \"atto\"\n// // | \"a\"\n// | \"femto\"\n// | \"f\"\n// | \"u\"\n// | \"micro\"\n// // | \"d\"\n// // | \"deci\"\n// | \"c\"\n// | \"centi\"\n// | \"m\"\n// | \"milli\"\n// | \"k\"\n// | \"kilo\"\n// | \"M\"\n// | \"mega\"\n// // | \"G\"\n// // | \"T\"\n// // | \"P\"\n// // | \"E\"\n// // | \"Z\"\n// // | \"Y\"\n\n// export type UnitAbbreviations = {\n// farad: \"F\"\n// ohm: \"Ω\"\n// henry: \"H\"\n// meter: \"m\"\n// volt: \"V\"\n// inch: \"in\"\n// foot: \"ft\"\n// }\n\n// export type Unit = keyof UnitAbbreviations\n// export type NumberWithUnit<T extends Unit> =\n// | `${number}${T | UnitAbbreviations[T]}`\n// | `${number} ${T | UnitAbbreviations[T]}`\n// | `${number}${SIPrefix}${T | UnitAbbreviations[T]}`\n// | `${number} ${SIPrefix}${T | UnitAbbreviations[T]}`\n// export type NumberWithAnyUnit =\n// | `${number}${UnitOrAbbreviation}`\n// | `${number} ${UnitOrAbbreviation}`\n// | `${number}${SIPrefix}${UnitOrAbbreviation}`\n// | `${number} ${SIPrefix}${UnitOrAbbreviation}`\n\n// TODO lots of validation to make sure the unit is valid etc.\nexport const resistance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const capacitance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n .transform((value) => {\n return Number.parseFloat(value.toPrecision(12)) // Round to 12 significant digits\n })\n\nexport const inductance = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const voltage = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const length = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const frequency = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\n/**\n * Length in meters\n */\nexport type Length = number\nexport type Distance = number\n\nexport const distance = length\n\nexport const current = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const duration_ms = z\n .string()\n .or(z.number())\n .transform((v) => parseAndConvertSiUnit(v).value!)\n\nexport const time = duration_ms\n\nexport const ms = duration_ms\n\nexport const timestamp = z.string().datetime()\n\n/**\n * Rotation is always converted to degrees\n */\nexport const rotation = z\n .string()\n .or(z.number())\n .transform((arg): number => {\n if (typeof arg === \"number\") return arg\n if (arg.endsWith(\"deg\")) {\n return Number.parseFloat(arg.split(\"deg\")[0]!)\n }\n if (arg.endsWith(\"rad\")) {\n return (Number.parseFloat(arg.split(\"rad\")[0]!) * 180) / Math.PI\n }\n return Number.parseFloat(arg)\n })\n\nexport const battery_capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport type InputRotation = number | string\nexport type Rotation = number\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport const position = point\n\nexport type InputPoint = z.input<typeof point>\nexport type InputPosition = z.input<typeof position>\ntype InferredPoint = z.infer<typeof point>\ntype InferredPosition = z.infer<typeof position>\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface Position {\n x: number\n y: number\n}\n\nexpectTypesMatch<Point, InferredPoint>(true)\nexpectTypesMatch<Position, InferredPosition>(true)\n","import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `mismatched prop types: ${T5 extends string ? T5 : \"\"}`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"mismatched prop types: a\")\n\n// ------ String Union Matching -------\n\nexport type ExpectStringUnionsMatch<\n T1 extends string,\n T2 extends string,\n Diff1 = Exclude<T1, T2>,\n Diff2 = Exclude<T2, T1>,\n> = IsNever<Diff1> extends true\n ? IsNever<Diff2> extends true\n ? true // Unions are identical\n : `T2 has extra: \"${Diff2 extends string ? Diff2 : \"\"}\"` // T2 has elements not in T1\n : IsNever<Diff2> extends true\n ? `T1 has extra: \"${Diff1 extends string ? Diff1 : \"\"}\"` // T1 has elements not in T2\n : `T1 has extra: \"${Diff1 extends string\n ? Diff1\n : \"\"}\", T2 has extra: \"${Diff2 extends string ? Diff2 : \"\"}\"` // Both have differences\n\nexport const expectStringUnionsMatch = <\n const T1 extends string,\n const T2 extends string,\n ShouldBeTrue = ExpectStringUnionsMatch<T1, T2>,\n>(\n shouldBe: ShouldBeTrue,\n): void => {}\n\n// ------ TESTS -------\n\ntype TestUnion1 = \"a\" | \"b\" | \"c\"\ntype TestUnion2 = \"a\" | \"b\" | \"c\"\ntype TestUnion3 = \"a\" | \"b\" | \"d\"\ntype TestUnion4 = \"a\" | \"b\"\n\nexpectStringUnionsMatch<TestUnion1, TestUnion2>(true)\nexpectStringUnionsMatch<TestUnion1, TestUnion3>(\n 'T1 has extra: \"c\", T2 has extra: \"d\"',\n)\nexpectStringUnionsMatch<TestUnion1, TestUnion4>('T1 has extra: \"c\"')\nexpectStringUnionsMatch<TestUnion4, TestUnion1>('T2 has extra: \"c\"')\nexpectStringUnionsMatch<TestUnion3, TestUnion1>(\n 'T1 has extra: \"d\", T2 has extra: \"c\"',\n)\n\n// Example of using @ts-expect-error for expected failures\n// @ts-expect-error Type '\"T2 has extra: \\\"d\\\"\"' is not assignable to type 'true'.\nexpectStringUnionsMatch<TestUnion1, TestUnion3>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n\nexport const position3 = point3\n\ntype InferredPoint3 = z.infer<typeof point3>\n\nexport interface Point3 {\n x: number\n y: number\n z: number\n}\n\nexpectTypesMatch<Point3, InferredPoint3>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const size = z.object({\n width: z.number(),\n height: z.number(),\n})\n\nexport type SizeInput = z.input<typeof size>\ntype InferredSize = z.infer<typeof size>\n\nexport interface Size {\n width: number\n height: number\n}\n\nexpectTypesMatch<Size, InferredSize>(true)\n","import { z } from \"zod\"\n\n// Generates a random string ID of specified length using alphanumeric characters\nconst randomId = (length: number): string => {\n const chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\"\n return Array.from(\n { length },\n () => chars[Math.floor(Math.random() * chars.length)],\n ).join(\"\")\n}\n/**\n * Use this for primary keys for any circuit element\n */\nexport const getZodPrefixedIdWithDefault = (prefix: string) => {\n return z\n .string()\n .optional()\n .default(() => `${prefix}_${randomId(10)}`)\n}\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport type NinePointAnchor =\n | \"top_left\"\n | \"top_center\"\n | \"top_right\"\n | \"center_left\"\n | \"center\"\n | \"center_right\"\n | \"bottom_left\"\n | \"bottom_center\"\n | \"bottom_right\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n\ntype InferredNinePointAnchor = z.infer<typeof ninePointAnchor>\n\nexpectTypesMatch<NinePointAnchor, InferredNinePointAnchor>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { capacitance, distance, voltage } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_capacitor = source_component_base.extend({\n ftype: z.literal(\"simple_capacitor\"),\n capacitance,\n max_voltage_rating: voltage.optional(),\n display_capacitance: z.string().optional(),\n max_decoupling_trace_length: distance.optional(),\n})\n\nexport type SourceSimpleCapacitorInput = z.input<typeof source_simple_capacitor>\ntype InferredSourceSimpleCapacitor = z.infer<typeof source_simple_capacitor>\n\n/**\n * Defines a simple capacitor component\n */\nexport interface SourceSimpleCapacitor extends SourceComponentBase {\n ftype: \"simple_capacitor\"\n capacitance: number\n max_voltage_rating?: number\n display_capacitance?: string\n max_decoupling_trace_length?: number\n}\n\nexpectTypesMatch<SourceSimpleCapacitor, InferredSourceSimpleCapacitor>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const supplier_name = z.enum([\n \"jlcpcb\",\n \"macrofab\",\n \"pcbway\",\n \"digikey\",\n \"mouser\",\n \"lcsc\",\n])\n\ntype InferredSupplierName = z.infer<typeof supplier_name>\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\n\nexpectTypesMatch<SupplierName, InferredSupplierName>(true)\n","import {\n supplier_name,\n type SupplierName,\n} from \"src/pcb/properties/supplier_name\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { z } from \"zod\"\n\nexport interface SourceComponentBase {\n type: \"source_component\"\n ftype?: string\n source_component_id: string\n name: string\n manufacturer_part_number?: string\n supplier_part_numbers?: Partial<Record<SupplierName, string[]>>\n display_value?: string\n are_pins_interchangeable?: boolean\n internally_connected_source_port_ids?: string[][]\n source_group_id?: string\n subcircuit_id?: string\n}\n\nexport const source_component_base = z.object({\n type: z.literal(\"source_component\"),\n ftype: z.string().optional(),\n source_component_id: z.string(),\n name: z.string(),\n manufacturer_part_number: z.string().optional(),\n supplier_part_numbers: z\n .record(supplier_name, z.array(z.string()))\n .optional(),\n display_value: z.string().optional(),\n are_pins_interchangeable: z.boolean().optional(),\n internally_connected_source_port_ids: z.array(z.array(z.string())).optional(),\n source_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n})\n\ntype InferredSourceComponentBase = z.infer<typeof source_component_base>\n\nexpectTypesMatch<SourceComponentBase, InferredSourceComponentBase>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_resistor = source_component_base.extend({\n ftype: z.literal(\"simple_resistor\"),\n resistance,\n display_resistance: z.string().optional(),\n})\n\nexport type SourceSimpleResistorInput = z.input<typeof source_simple_resistor>\ntype InferredSourceSimpleResistor = z.infer<typeof source_simple_resistor>\n\n/**\n * Defines a simple resistor component\n */\nexport interface SourceSimpleResistor extends SourceComponentBase {\n ftype: \"simple_resistor\"\n resistance: number\n display_resistance?: string\n}\n\nexpectTypesMatch<SourceSimpleResistor, InferredSourceSimpleResistor>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_diode = source_component_base.extend({\n ftype: z.literal(\"simple_diode\"),\n})\n\nexport type SourceSimpleDiodeInput = z.input<typeof source_simple_diode>\ntype InferredSourceSimpleDiode = z.infer<typeof source_simple_diode>\n\n/**\n * Defines a simple diode component\n */\nexport interface SourceSimpleDiode extends SourceComponentBase {\n ftype: \"simple_diode\"\n}\n\nexpectTypesMatch<SourceSimpleDiode, InferredSourceSimpleDiode>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n source_simple_diode,\n type SourceSimpleDiode,\n} from \"./source_simple_diode\"\n\nexport const source_simple_led = source_simple_diode.extend({\n ftype: z.literal(\"simple_led\"),\n color: z.string().optional(),\n wavelength: z.string().optional(),\n})\n\nexport type SourceSimpleLedInput = z.input<typeof source_simple_led>\ntype InferredSourceSimpleLed = z.infer<typeof source_simple_led>\n\n/**\n * Defines a simple led component\n */\nexport interface SourceSimpleLed extends Omit<SourceSimpleDiode, \"ftype\"> {\n ftype: \"simple_led\"\n color?: string\n wavelength?: string\n}\n\nexpectTypesMatch<SourceSimpleLed, InferredSourceSimpleLed>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_ground = source_component_base.extend({\n ftype: z.literal(\"simple_ground\"),\n})\n\nexport type SourceSimpleGroundInput = z.input<typeof source_simple_ground>\ntype InferredSourceSimpleGround = z.infer<typeof source_simple_ground>\n\n/**\n * Defines a simple ground component\n */\nexport interface SourceSimpleGround extends SourceComponentBase {\n ftype: \"simple_ground\"\n}\n\nexpectTypesMatch<SourceSimpleGround, InferredSourceSimpleGround>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_chip = source_component_base.extend({\n ftype: z.literal(\"simple_chip\"),\n})\n\nexport type SourceSimpleChipInput = z.input<typeof source_simple_chip>\ntype InferredSourceSimpleChip = z.infer<typeof source_simple_chip>\n\n/**\n * Defines a simple integrated circuit component\n */\nexport interface SourceSimpleChip extends SourceComponentBase {\n ftype: \"simple_chip\"\n}\n\nexpectTypesMatch<SourceSimpleChip, InferredSourceSimpleChip>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { voltage } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_power_source = source_component_base.extend({\n ftype: z.literal(\"simple_power_source\"),\n voltage,\n})\n\nexport type SourceSimplePowerSourceInput = z.input<\n typeof source_simple_power_source\n>\ntype InferredSourceSimplePowerSource = z.infer<\n typeof source_simple_power_source\n>\n\n/**\n * Defines a simple power source component\n */\nexport interface SourceSimplePowerSource extends SourceComponentBase {\n ftype: \"simple_power_source\"\n voltage: number\n}\n\nexpectTypesMatch<SourceSimplePowerSource, InferredSourceSimplePowerSource>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n source_simple_resistor,\n type SourceSimpleResistor,\n} from \"./source_simple_resistor\"\nimport {\n source_simple_capacitor,\n type SourceSimpleCapacitor,\n} from \"./source_simple_capacitor\"\nimport { source_simple_fuse, type SourceSimpleFuse } from \"./source_simple_fuse\"\nimport {\n source_simple_diode,\n type SourceSimpleDiode,\n} from \"./source_simple_diode\"\nimport { source_simple_led, type SourceSimpleLed } from \"./source_simple_led\"\nimport {\n source_simple_ground,\n type SourceSimpleGround,\n} from \"./source_simple_ground\"\nimport { source_simple_chip, type SourceSimpleChip } from \"./source_simple_chip\"\nimport {\n source_simple_power_source,\n type SourceSimplePowerSource,\n} from \"./source_simple_power_source\"\nimport {\n source_simple_battery,\n type SourceSimpleBattery,\n} from \"./source_simple_battery\"\nimport {\n source_simple_inductor,\n type SourceSimpleInductor,\n} from \"./source_simple_inductor\"\nimport {\n source_simple_push_button,\n type SourceSimplePushButton,\n} from \"./source_simple_push_button\"\nimport {\n source_simple_potentiometer,\n type SourceSimplePotentiometer,\n} from \"./source_simple_potentiometer\"\nimport {\n source_simple_crystal,\n type SourceSimpleCrystal,\n} from \"./source_simple_crystal\"\nimport {\n source_simple_pin_header,\n type SourceSimplePinHeader,\n} from \"./source_simple_pin_header\"\nimport {\n source_simple_pinout,\n type SourceSimplePinout,\n} from \"./source_simple_pinout\"\nimport {\n source_simple_resonator,\n type SourceSimpleResonator,\n} from \"./source_simple_resonator\"\nimport {\n source_simple_transistor,\n type SourceSimpleTransistor,\n} from \"./source_simple_transistor\"\nimport {\n source_simple_test_point,\n type SourceSimpleTestPoint,\n} from \"./source_simple_test_point\"\nimport {\n source_simple_mosfet,\n type SourceSimpleMosfet,\n} from \"./source_simple_mosfet\"\nimport {\n source_simple_switch,\n type SourceSimpleSwitch,\n} from \"./source_simple_switch\"\nimport {\n source_project_metadata,\n type SourceProjectMetadata,\n} from \"./source_project_metadata\"\nimport {\n source_missing_property_error,\n type SourceMissingPropertyError,\n} from \"./source_missing_property_error\"\nimport {\n source_failed_to_create_component_error,\n type SourceFailedToCreateComponentError,\n} from \"./source_failed_to_create_component_error\"\nimport {\n source_trace_not_connected_error,\n type SourceTraceNotConnectedError,\n} from \"./source_trace_not_connected_error\"\nimport {\n source_property_ignored_warning,\n type SourcePropertyIgnoredWarning,\n} from \"./source_property_ignored_warning\"\nimport {\n source_pin_missing_trace_warning,\n type SourcePinMissingTraceWarning,\n} from \"./source_pin_missing_trace_warning\"\nimport {\n source_simple_voltage_probe,\n type SourceSimpleVoltageProbe,\n} from \"./source_simple_voltage_probe\"\nimport {\n source_interconnect,\n type SourceInterconnect,\n} from \"./source_interconnect\"\n\nexport const any_source_component = z.union([\n source_simple_resistor,\n source_simple_capacitor,\n source_simple_diode,\n source_simple_led,\n source_simple_ground,\n source_simple_chip,\n source_simple_power_source,\n source_simple_battery,\n source_simple_inductor,\n source_simple_push_button,\n source_simple_potentiometer,\n source_simple_crystal,\n source_simple_pin_header,\n source_simple_pinout,\n source_simple_resonator,\n source_simple_switch,\n source_simple_transistor,\n source_simple_test_point,\n source_simple_mosfet,\n source_simple_fuse,\n source_simple_voltage_probe,\n source_interconnect,\n source_project_metadata,\n source_missing_property_error,\n source_failed_to_create_component_error,\n source_trace_not_connected_error,\n source_property_ignored_warning,\n source_pin_missing_trace_warning,\n])\n\n/**\n * Deprecated: use `AnySourceElement` instead\n */\nexport type AnySourceComponent = z.infer<typeof any_source_component>\n\nexport type AnySourceElement =\n | SourceSimpleResistor\n | SourceSimpleCapacitor\n | SourceSimpleDiode\n | SourceSimpleLed\n | SourceSimpleGround\n | SourceSimpleChip\n | SourceSimplePowerSource\n | SourceSimpleBattery\n | SourceSimpleInductor\n | SourceSimplePushButton\n | SourceSimplePotentiometer\n | SourceSimpleCrystal\n | SourceSimplePinHeader\n | SourceSimplePinout\n | SourceSimpleResonator\n | SourceSimpleSwitch\n | SourceSimpleTransistor\n | SourceSimpleTestPoint\n | SourceSimpleMosfet\n | SourceSimpleFuse\n | SourceSimpleVoltageProbe\n | SourceInterconnect\n | SourceProjectMetadata\n | SourceMissingPropertyError\n | SourceFailedToCreateComponentError\n | SourceTraceNotConnectedError\n | SourcePropertyIgnoredWarning\n | SourcePinMissingTraceWarning\n\nexpectTypesMatch<AnySourceElement, AnySourceComponent>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"./base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_fuse = source_component_base.extend({\n ftype: z.literal(\"simple_fuse\"),\n\n current_rating_amps: z\n .number()\n .describe(\"Nominal current in amps the fuse is rated for\"),\n\n voltage_rating_volts: z\n .number()\n .describe(\"Voltage rating in volts, e.g. ±5V would be 5\"),\n})\n\nexport interface SourceSimpleFuse extends SourceComponentBase {\n ftype: \"simple_fuse\"\n current_rating_amps: number\n voltage_rating_volts: number\n}\n\nexport type SourceSimpleFuseInput = z.input<typeof source_simple_fuse>\ntype InferredSourceSimpleFuse = z.infer<typeof source_simple_fuse>\n\nexpectTypesMatch<SourceSimpleFuse, InferredSourceSimpleFuse>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { battery_capacity } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_battery = source_component_base.extend({\n ftype: z.literal(\"simple_battery\"),\n capacity: battery_capacity,\n})\n\nexport type SourceSimpleBatteryInput = z.input<typeof source_simple_battery>\ntype InferredSourceSimpleBattery = z.infer<typeof source_simple_battery>\n\n/**\n * Defines a simple battery component\n */\nexport interface SourceSimpleBattery extends SourceComponentBase {\n ftype: \"simple_battery\"\n capacity: number\n}\n\nexpectTypesMatch<SourceSimpleBattery, InferredSourceSimpleBattery>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { inductance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_inductor = source_component_base.extend({\n ftype: z.literal(\"simple_inductor\"),\n inductance,\n max_current_rating: z.number().optional(),\n})\n\nexport type SourceSimpleInductorInput = z.input<typeof source_simple_inductor>\ntype InferredSourceSimpleInductor = z.infer<typeof source_simple_inductor>\n\n/**\n * Defines a simple inductor component\n */\nexport interface SourceSimpleInductor extends SourceComponentBase {\n ftype: \"simple_inductor\"\n inductance: number\n max_current_rating?: number\n}\n\nexpectTypesMatch<SourceSimpleInductor, InferredSourceSimpleInductor>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_push_button = source_component_base.extend({\n ftype: z.literal(\"simple_push_button\"),\n})\n\nexport type SourceSimplePushButtonInput = z.input<\n typeof source_simple_push_button\n>\ntype InferredSourceSimplePushButton = z.infer<typeof source_simple_push_button>\n\n/**\n * Defines a simple push button component\n */\nexport interface SourceSimplePushButton extends SourceComponentBase {\n ftype: \"simple_push_button\"\n}\n\nexpectTypesMatch<SourceSimplePushButton, InferredSourceSimplePushButton>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { resistance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_potentiometer = source_component_base.extend({\n ftype: z.literal(\"simple_potentiometer\"),\n max_resistance: resistance,\n})\n\nexport type SourceSimplePotentiometerInput = z.input<\n typeof source_simple_potentiometer\n>\ntype InferredSourceSimplePotentiometer = z.infer<\n typeof source_simple_potentiometer\n>\n\nexport interface SourceSimplePotentiometer extends SourceComponentBase {\n ftype: \"simple_potentiometer\"\n max_resistance: number\n}\n\nexpectTypesMatch<SourceSimplePotentiometer, InferredSourceSimplePotentiometer>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_crystal = source_component_base.extend({\n ftype: z.literal(\"simple_crystal\"),\n frequency: z.number().describe(\"Frequency in Hz\"),\n load_capacitance: z.number().optional().describe(\"Load capacitance in pF\"),\n})\n\nexport type SourceSimpleCrystalInput = z.input<typeof source_simple_crystal>\ntype InferredSourceSimpleCrystal = z.infer<typeof source_simple_crystal>\n\n/**\n * Defines a simple crystal oscillator component\n */\nexport interface SourceSimpleCrystal extends SourceComponentBase {\n ftype: \"simple_crystal\"\n frequency: number\n load_capacitance?: number\n}\n\nexpectTypesMatch<SourceSimpleCrystal, InferredSourceSimpleCrystal>(true)\n","import {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_pin_header = source_component_base.extend({\n ftype: z.literal(\"simple_pin_header\"),\n pin_count: z.number(),\n gender: z.enum([\"male\", \"female\"]).optional().default(\"male\"),\n})\n\nexport type SourceSimplePinHeaderInput = z.input<\n typeof source_simple_pin_header\n>\ntype InferredSourceSimplePinHeader = z.infer<typeof source_simple_pin_header>\n\nexport interface SourceSimplePinHeader extends SourceComponentBase {\n ftype: \"simple_pin_header\"\n pin_count: number\n gender: \"male\" | \"female\"\n}\n\nexpectTypesMatch<SourceSimplePinHeader, InferredSourceSimplePinHeader>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_pinout = source_component_base.extend({\n ftype: z.literal(\"simple_pinout\"),\n})\n\nexport type SourceSimplePinoutInput = z.input<typeof source_simple_pinout>\ntype InferredSourceSimplePinout = z.infer<typeof source_simple_pinout>\n\n/**\n * Defines a simple pinout component\n */\nexport interface SourceSimplePinout extends SourceComponentBase {\n ftype: \"simple_pinout\"\n}\n\nexpectTypesMatch<SourceSimplePinout, InferredSourceSimplePinout>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { capacitance, resistance, frequency } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_resonator = source_component_base.extend({\n ftype: z.literal(\"simple_resonator\"),\n load_capacitance: capacitance,\n equivalent_series_resistance: resistance.optional(),\n frequency: frequency,\n})\n\nexport type SourceSimpleResonatorInput = z.input<typeof source_simple_resonator>\ntype InferredSourceSimpleResonator = z.infer<typeof source_simple_resonator>\n\n/**\n * Defines a simple resonator component\n */\nexport interface SourceSimpleResonator extends SourceComponentBase {\n ftype: \"simple_resonator\"\n load_capacitance: number\n equivalent_series_resistance?: number\n frequency: number\n}\n\nexpectTypesMatch<SourceSimpleResonator, InferredSourceSimpleResonator>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_transistor = source_component_base.extend({\n ftype: z.literal(\"simple_transistor\"),\n transistor_type: z.enum([\"npn\", \"pnp\"]),\n})\n\nexport type SourceSimpleTransistorInput = z.input<\n typeof source_simple_transistor\n>\ntype InferredSourceSimpleTransistor = z.infer<typeof source_simple_transistor>\n\n/**\n * Defines a simple transistor component\n * This is a three-pin semiconductor device (emitter, base, collector)\n * Pin configuration is handled by the schematic port system\n */\n\nexport interface SourceSimpleTransistor extends SourceComponentBase {\n ftype: \"simple_transistor\"\n transistor_type: \"npn\" | \"pnp\"\n}\n\nexpectTypesMatch<SourceSimpleTransistor, InferredSourceSimpleTransistor>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_test_point = source_component_base.extend({\n ftype: z.literal(\"simple_test_point\"),\n footprint_variant: z.enum([\"pad\", \"through_hole\"]).optional(),\n pad_shape: z.enum([\"rect\", \"circle\"]).optional(),\n pad_diameter: z.union([z.number(), z.string()]).optional(),\n hole_diameter: z.union([z.number(), z.string()]).optional(),\n width: z.union([z.number(), z.string()]).optional(),\n height: z.union([z.number(), z.string()]).optional(),\n})\n\nexport type SourceSimpleTestPointInput = z.input<\n typeof source_simple_test_point\n>\ntype InferredSourceSimpleTestPoint = z.infer<typeof source_simple_test_point>\n\n/**\n * Defines a simple test point component\n * Can be surface-mount or through-hole.\n * Pad shape and dimensions configurable for different use cases.\n */\nexport interface SourceSimpleTestPoint extends SourceComponentBase {\n ftype: \"simple_test_point\"\n footprint_variant?: \"pad\" | \"through_hole\"\n pad_shape?: \"rect\" | \"circle\"\n pad_diameter?: number | string\n hole_diameter?: number | string\n width?: number | string\n height?: number | string\n}\n\nexpectTypesMatch<SourceSimpleTestPoint, InferredSourceSimpleTestPoint>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_mosfet = source_component_base.extend({\n ftype: z.literal(\"simple_mosfet\"),\n channel_type: z.enum([\"n\", \"p\"]),\n mosfet_mode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport type SourceSimpleMosfetInput = z.input<typeof source_simple_mosfet>\ntype InferredSourceSimpleMosfet = z.infer<typeof source_simple_mosfet>\n\n/**\n * Defines a simple mosfet component\n * This is a three-pin semiconductor device (source, gate, drain)\n * Pin configuration is handled by the schematic port system\n */\n\nexport interface SourceSimpleMosfet extends SourceComponentBase {\n ftype: \"simple_mosfet\"\n channel_type: \"n\" | \"p\"\n mosfet_mode: \"enhancement\" | \"depletion\"\n}\n\nexpectTypesMatch<SourceSimpleMosfet, InferredSourceSimpleMosfet>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_switch = source_component_base.extend({\n ftype: z.literal(\"simple_switch\"),\n})\nexport type SourceSimpleSwitchInput = z.input<typeof source_simple_switch>\ntype InferredSourceSimpleSwitch = z.infer<typeof source_simple_switch>\n\n/**\n * Defines a simple switch component\n */\nexport interface SourceSimpleSwitch extends SourceComponentBase {\n ftype: \"simple_switch\"\n}\n\nexpectTypesMatch<SourceSimpleSwitch, InferredSourceSimpleSwitch>(true)\n","import { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { z } from \"zod\"\nimport { timestamp } from \"src/units\"\n\nexport interface SourceProjectMetadata {\n type: \"source_project_metadata\"\n name?: string\n software_used_string?: string\n project_url?: string\n created_at?: string // ISO8601 timestamp\n}\n\nexport const source_project_metadata = z.object({\n type: z.literal(\"source_project_metadata\"),\n name: z.string().optional(),\n software_used_string: z.string().optional(),\n project_url: z.string().optional(),\n created_at: timestamp.optional(),\n})\n\nexport type InferredProjectMetadata = z.infer<typeof source_project_metadata>\nexpectTypesMatch<SourceProjectMetadata, InferredProjectMetadata>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_missing_property_error = z\n .object({\n type: z.literal(\"source_missing_property_error\"),\n source_missing_property_error_id: getZodPrefixedIdWithDefault(\n \"source_missing_property_error\",\n ),\n source_component_id: z.string(),\n property_name: z.string(),\n subcircuit_id: z.string().optional(),\n error_type: z\n .literal(\"source_missing_property_error\")\n .default(\"source_missing_property_error\"),\n message: z.string(),\n })\n .describe(\"The source code is missing a property\")\n\nexport type SourceMissingPropertyErrorInput = z.input<\n typeof source_missing_property_error\n>\ntype InferredSourceMissingPropertyError = z.infer<\n typeof source_missing_property_error\n>\n\n/**\n * The source code is missing a property\n */\nexport interface SourceMissingPropertyError {\n type: \"source_missing_property_error\"\n source_missing_property_error_id: string\n source_component_id: string\n property_name: string\n subcircuit_id?: string\n error_type: \"source_missing_property_error\"\n message: string\n}\n\nexpectTypesMatch<\n SourceMissingPropertyError,\n InferredSourceMissingPropertyError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_failed_to_create_component_error = z\n .object({\n type: z.literal(\"source_failed_to_create_component_error\"),\n source_failed_to_create_component_error_id: getZodPrefixedIdWithDefault(\n \"source_failed_to_create_component_error\",\n ),\n error_type: z\n .literal(\"source_failed_to_create_component_error\")\n .default(\"source_failed_to_create_component_error\"),\n component_name: z.string().optional(),\n subcircuit_id: z.string().optional(),\n parent_source_component_id: z.string().optional(),\n message: z.string(),\n pcb_center: z\n .object({\n x: z.number().optional(),\n y: z.number().optional(),\n })\n .optional(),\n schematic_center: z\n .object({\n x: z.number().optional(),\n y: z.number().optional(),\n })\n .optional(),\n })\n .describe(\"Error emitted when a component fails to be constructed\")\n\nexport type SourceFailedToCreateComponentErrorInput = z.input<\n typeof source_failed_to_create_component_error\n>\ntype InferredSourceFailedToCreateComponentError = z.infer<\n typeof source_failed_to_create_component_error\n>\n\n/**\n * Error emitted when a component fails to be constructed.\n * Contains details about the failure and prevents the component from being rendered.\n */\nexport interface SourceFailedToCreateComponentError {\n type: \"source_failed_to_create_component_error\"\n source_failed_to_create_component_error_id: string\n error_type: \"source_failed_to_create_component_error\"\n message: string\n component_name?: string\n subcircuit_id?: string\n parent_source_component_id?: string\n pcb_center?: {\n x?: number\n y?: number\n }\n schematic_center?: {\n x?: number\n y?: number\n }\n}\n\nexpectTypesMatch<\n SourceFailedToCreateComponentError,\n InferredSourceFailedToCreateComponentError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_trace_not_connected_error = z\n .object({\n type: z.literal(\"source_trace_not_connected_error\"),\n source_trace_not_connected_error_id: getZodPrefixedIdWithDefault(\n \"source_trace_not_connected_error\",\n ),\n error_type: z\n .literal(\"source_trace_not_connected_error\")\n .default(\"source_trace_not_connected_error\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n source_group_id: z.string().optional(),\n source_trace_id: z.string().optional(),\n connected_source_port_ids: z.array(z.string()).optional(),\n selectors_not_found: z.array(z.string()).optional(),\n })\n .describe(\"Occurs when a source trace selector does not match any ports\")\n\nexport type SourceTraceNotConnectedErrorInput = z.input<\n typeof source_trace_not_connected_error\n>\ntype InferredSourceTraceNotConnectedError = z.infer<\n typeof source_trace_not_connected_error\n>\n\n/**\n * Occurs when a source trace selector does not match any ports\n */\nexport interface SourceTraceNotConnectedError {\n type: \"source_trace_not_connected_error\"\n source_trace_not_connected_error_id: string\n error_type: \"source_trace_not_connected_error\"\n message: string\n subcircuit_id?: string\n source_group_id?: string\n source_trace_id?: string\n connected_source_port_ids?: string[]\n selectors_not_found?: string[]\n}\n\nexpectTypesMatch<\n SourceTraceNotConnectedError,\n InferredSourceTraceNotConnectedError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_property_ignored_warning = z\n .object({\n type: z.literal(\"source_property_ignored_warning\"),\n source_property_ignored_warning_id: getZodPrefixedIdWithDefault(\n \"source_property_ignored_warning\",\n ),\n source_component_id: z.string(),\n property_name: z.string(),\n subcircuit_id: z.string().optional(),\n error_type: z\n .literal(\"source_property_ignored_warning\")\n .default(\"source_property_ignored_warning\"),\n message: z.string(),\n })\n .describe(\"The source property was ignored\")\n\nexport type SourcePropertyIgnoredWarningInput = z.input<\n typeof source_property_ignored_warning\n>\ntype InferredSourcePropertyIgnoredWarning = z.infer<\n typeof source_property_ignored_warning\n>\n\n/**\n * The source property was ignored\n */\nexport interface SourcePropertyIgnoredWarning {\n type: \"source_property_ignored_warning\"\n source_property_ignored_warning_id: string\n source_component_id: string\n property_name: string\n subcircuit_id?: string\n error_type: \"source_property_ignored_warning\"\n message: string\n}\n\nexpectTypesMatch<\n SourcePropertyIgnoredWarning,\n InferredSourcePropertyIgnoredWarning\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_pin_missing_trace_warning = z\n .object({\n type: z.literal(\"source_pin_missing_trace_warning\"),\n source_pin_missing_trace_warning_id: getZodPrefixedIdWithDefault(\n \"source_pin_missing_trace_warning\",\n ),\n warning_type: z\n .literal(\"source_pin_missing_trace_warning\")\n .default(\"source_pin_missing_trace_warning\"),\n message: z.string(),\n source_component_id: z.string(),\n source_port_id: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\n \"Warning emitted when a source component pin is missing a trace connection\",\n )\n\nexport type SourcePinMissingTraceWarningInput = z.input<\n typeof source_pin_missing_trace_warning\n>\ntype InferredSourcePinMissingTraceWarning = z.infer<\n typeof source_pin_missing_trace_warning\n>\n\n/**\n * Warning emitted when a source component pin is missing a trace connection\n */\nexport interface SourcePinMissingTraceWarning {\n type: \"source_pin_missing_trace_warning\"\n source_pin_missing_trace_warning_id: string\n warning_type: \"source_pin_missing_trace_warning\"\n message: string\n source_component_id: string\n source_port_id: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<\n SourcePinMissingTraceWarning,\n InferredSourcePinMissingTraceWarning\n>(true)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_simple_voltage_probe = source_component_base.extend({\n ftype: z.literal(\"simple_voltage_probe\"),\n})\n\nexport type SourceSimpleVoltageProbeInput = z.input<\n typeof source_simple_voltage_probe\n>\ntype InferredSourceSimpleVoltageProbe = z.infer<\n typeof source_simple_voltage_probe\n>\n\n/**\n * Defines a simple voltage probe component for simulation and measurement\n */\nexport interface SourceSimpleVoltageProbe extends SourceComponentBase {\n ftype: \"simple_voltage_probe\"\n}\n\nexpectTypesMatch<SourceSimpleVoltageProbe, InferredSourceSimpleVoltageProbe>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n source_component_base,\n type SourceComponentBase,\n} from \"src/source/base/source_component_base\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_interconnect = source_component_base.extend({\n ftype: z.literal(\"interconnect\"),\n})\n\nexport type SourceInterconnectInput = z.input<typeof source_interconnect>\ntype InferredSourceInterconnect = z.infer<typeof source_interconnect>\n\n/**\n * Defines a generic interconnect component\n */\nexport interface SourceInterconnect extends SourceComponentBase {\n ftype: \"interconnect\"\n}\n\nexpectTypesMatch<SourceInterconnect, InferredSourceInterconnect>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_port = z.object({\n type: z.literal(\"source_port\"),\n pin_number: z.number().optional(),\n port_hints: z.array(z.string()).optional(),\n name: z.string(),\n source_port_id: z.string(),\n source_component_id: z.string().optional(),\n source_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n must_be_connected: z.boolean().optional(),\n})\n\nexport type SourcePortInput = z.input<typeof source_port>\ntype InferredSourcePort = z.infer<typeof source_port>\n\n/**\n * Defines a source port that can be connected to other components\n */\nexport interface SourcePort {\n type: \"source_port\"\n pin_number?: number\n port_hints?: string[]\n name: string\n source_port_id: string\n source_component_id?: string\n source_group_id?: string\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n must_be_connected?: boolean\n}\n\nexpectTypesMatch<SourcePort, InferredSourcePort>(true)\n","import { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { z } from \"zod\"\n\nexport interface SourceTrace {\n type: \"source_trace\"\n source_trace_id: string\n connected_source_port_ids: string[]\n connected_source_net_ids: string[]\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n max_length?: number\n display_name?: string\n min_trace_thickness?: number\n}\n\nexport const source_trace = z.object({\n type: z.literal(\"source_trace\"),\n source_trace_id: z.string(),\n connected_source_port_ids: z.array(z.string()),\n connected_source_net_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n max_length: z.number().optional(),\n min_trace_thickness: z.number().optional(),\n display_name: z.string().optional(),\n})\n\ntype InferredSourceTrace = z.infer<typeof source_trace>\n\nexpectTypesMatch<SourceTrace, InferredSourceTrace>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_group = z.object({\n type: z.literal(\"source_group\"),\n source_group_id: z.string(),\n subcircuit_id: z.string().optional(),\n parent_subcircuit_id: z.string().optional(),\n parent_source_group_id: z.string().optional(),\n is_subcircuit: z.boolean().optional(),\n show_as_schematic_box: z.boolean().optional(),\n name: z.string().optional(),\n was_automatically_named: z.boolean().optional(),\n})\n\nexport type SourceGroupInput = z.input<typeof source_group>\ntype InferredSourceGroup = z.infer<typeof source_group>\n\nexport interface SourceGroup {\n type: \"source_group\"\n source_group_id: string\n subcircuit_id?: string\n parent_subcircuit_id?: string\n parent_source_group_id?: string\n is_subcircuit?: boolean\n show_as_schematic_box?: boolean\n name?: string\n was_automatically_named?: boolean\n}\n\nexpectTypesMatch<SourceGroup, InferredSourceGroup>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_net = z.object({\n type: z.literal(\"source_net\"),\n source_net_id: z.string(),\n name: z.string(),\n member_source_group_ids: z.array(z.string()),\n is_power: z.boolean().optional(),\n is_ground: z.boolean().optional(),\n is_digital_signal: z.boolean().optional(),\n is_analog_signal: z.boolean().optional(),\n is_positive_voltage_source: z.boolean().optional(),\n trace_width: z.number().optional(),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n})\n\nexport type SourceNetInput = z.input<typeof source_net>\ntype InferredSourceNet = z.infer<typeof source_net>\n\nexport interface SourceNet {\n type: \"source_net\"\n source_net_id: string\n name: string\n member_source_group_ids: string[]\n is_power?: boolean\n is_ground?: boolean\n is_digital_signal?: boolean\n is_analog_signal?: boolean\n is_positive_voltage_source?: boolean\n trace_width?: number\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n}\n\nexpectTypesMatch<SourceNet, InferredSourceNet>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_board = z\n .object({\n type: z.literal(\"source_board\"),\n source_board_id: z.string(),\n source_group_id: z.string(),\n title: z.string().optional(),\n })\n .describe(\"Defines a board in the source domain\")\n\nexport type SourceBoardInput = z.input<typeof source_board>\ntype InferredSourceBoard = z.infer<typeof source_board>\n\n/**\n * Defines a board in the source domain\n */\nexport interface SourceBoard {\n type: \"source_board\"\n source_board_id: string\n source_group_id: string\n title?: string\n}\n\nexpectTypesMatch<SourceBoard, InferredSourceBoard>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_pcb_ground_plane = z\n .object({\n type: z.literal(\"source_pcb_ground_plane\"),\n source_pcb_ground_plane_id: z.string(),\n source_group_id: z.string(),\n source_net_id: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a ground plane in the source domain\")\n\nexport type SourcePcbGroundPlaneInput = z.input<typeof source_pcb_ground_plane>\ntype InferredSourcePcbGroundPlane = z.infer<typeof source_pcb_ground_plane>\n\n/**\n * Defines a ground plane in the source domain\n */\nexport interface SourcePcbGroundPlane {\n type: \"source_pcb_ground_plane\"\n source_pcb_ground_plane_id: string\n source_group_id: string\n source_net_id: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<SourcePcbGroundPlane, InferredSourcePcbGroundPlane>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_manually_placed_via = z\n .object({\n type: z.literal(\"source_manually_placed_via\"),\n source_manually_placed_via_id: z.string(),\n source_group_id: z.string(),\n source_net_id: z.string(),\n subcircuit_id: z.string().optional(),\n source_trace_id: z.string().optional(),\n })\n .describe(\"Defines a via that is manually placed in the source domain\")\n\nexport type SourceManuallyPlacedViaInput = z.input<\n typeof source_manually_placed_via\n>\ntype InferredSourceManuallyPlacedVia = z.infer<\n typeof source_manually_placed_via\n>\n\n/**\n * Defines a via that is manually placed in the source domain\n */\nexport interface SourceManuallyPlacedVia {\n type: \"source_manually_placed_via\"\n source_manually_placed_via_id: string\n source_group_id: string\n source_net_id: string\n subcircuit_id?: string\n source_trace_id?: string\n}\n\nexpectTypesMatch<SourceManuallyPlacedVia, InferredSourceManuallyPlacedVia>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const all_layers = [\n \"top\",\n \"bottom\",\n \"inner1\",\n \"inner2\",\n \"inner3\",\n \"inner4\",\n \"inner5\",\n \"inner6\",\n] as const\n\nexport const layer_string = z.enum(all_layers)\n\nexport const layer_ref = layer_string\n .or(\n z.object({\n name: layer_string,\n }),\n )\n .transform((layer) => {\n if (typeof layer === \"string\") {\n return layer\n }\n return layer.name\n })\n\nexport type LayerRefInput = z.input<typeof layer_ref>\ntype InferredLayerRef = z.output<typeof layer_ref>\nexport type LayerRef = (typeof all_layers)[number]\n\nexpectTypesMatch<LayerRef, InferredLayerRef>(true)\n\nexport const visible_layer = z.enum([\"top\", \"bottom\"])\nexport type VisibleLayerRef = z.infer<typeof visible_layer>\nexport type VisibleLayer = z.infer<typeof visible_layer>\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const source_pin_must_be_connected_error = z\n .object({\n type: z.literal(\"source_pin_must_be_connected_error\"),\n source_pin_must_be_connected_error_id: getZodPrefixedIdWithDefault(\n \"source_pin_must_be_connected_error\",\n ),\n error_type: z\n .literal(\"source_pin_must_be_connected_error\")\n .default(\"source_pin_must_be_connected_error\"),\n message: z.string(),\n source_component_id: z.string(),\n source_port_id: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\n \"Error emitted when a pin with mustBeConnected attribute is not connected to any trace\",\n )\n\nexport type SourcePinMustBeConnectedErrorInput = z.input<\n typeof source_pin_must_be_connected_error\n>\ntype InferredSourcePinMustBeConnectedError = z.infer<\n typeof source_pin_must_be_connected_error\n>\n\n/**\n * Error emitted when a pin with mustBeConnected attribute is not connected to any trace\n */\nexport interface SourcePinMustBeConnectedError {\n type: \"source_pin_must_be_connected_error\"\n source_pin_must_be_connected_error_id: string\n error_type: \"source_pin_must_be_connected_error\"\n message: string\n source_component_id: string\n source_port_id: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<\n SourcePinMustBeConnectedError,\n InferredSourcePinMustBeConnectedError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const unknown_error_finding_part = z\n .object({\n type: z.literal(\"unknown_error_finding_part\"),\n unknown_error_finding_part_id: getZodPrefixedIdWithDefault(\n \"unknown_error_finding_part\",\n ),\n error_type: z\n .literal(\"unknown_error_finding_part\")\n .default(\"unknown_error_finding_part\"),\n message: z.string(),\n source_component_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\n \"Error emitted when an unexpected error occurs while finding a part\",\n )\n\nexport type UnknownErrorFindingPartInput = z.input<\n typeof unknown_error_finding_part\n>\ntype InferredUnknownErrorFindingPart = z.infer<\n typeof unknown_error_finding_part\n>\n\n/**\n * Error emitted when an unexpected error occurs while finding a part.\n * This includes cases where the API returns HTML instead of JSON,\n * network failures, or other unexpected responses.\n */\nexport interface UnknownErrorFindingPart {\n type: \"unknown_error_finding_part\"\n unknown_error_finding_part_id: string\n error_type: \"unknown_error_finding_part\"\n message: string\n source_component_id?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<UnknownErrorFindingPart, InferredUnknownErrorFindingPart>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicBox {\n type: \"schematic_box\"\n schematic_component_id?: string\n width: number\n height: number\n is_dashed: boolean\n x: number\n y: number\n subcircuit_id?: string\n}\n\nexport const schematic_box = z\n .object({\n type: z.literal(\"schematic_box\"),\n schematic_component_id: z.string().optional(),\n width: distance,\n height: distance,\n is_dashed: z.boolean().default(false),\n x: distance,\n y: distance,\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Draws a box on the schematic\")\n\nexport type SchematicBoxInput = z.input<typeof schematic_box>\ntype InferredSchematicBox = z.infer<typeof schematic_box>\n\nexpectTypesMatch<SchematicBox, InferredSchematicBox>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicPath {\n type: \"schematic_path\"\n schematic_component_id: string\n fill_color?: \"red\" | \"blue\"\n is_filled?: boolean\n points: Point[]\n subcircuit_id?: string\n}\n\nexport const schematic_path = z.object({\n type: z.literal(\"schematic_path\"),\n schematic_component_id: z.string(),\n fill_color: z.enum([\"red\", \"blue\"]).optional(),\n is_filled: z.boolean().optional(),\n points: z.array(point),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicPathInput = z.input<typeof schematic_path>\ntype InferredSchematicPath = z.infer<typeof schematic_path>\n\nexpectTypesMatch<SchematicPath, InferredSchematicPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { size, type Size } from \"../common/size\"\nimport { length } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_pin_styles = z.record(\n z.object({\n left_margin: length.optional(),\n right_margin: length.optional(),\n top_margin: length.optional(),\n bottom_margin: length.optional(),\n }),\n)\n\nexport interface SchematicPortArrangementBySize {\n left_size: number\n right_size: number\n top_size?: number\n bottom_size?: number\n}\n\nexport interface SchematicPortArrangementBySides {\n left_side?: { pins: number[]; direction?: \"top-to-bottom\" | \"bottom-to-top\" }\n right_side?: { pins: number[]; direction?: \"top-to-bottom\" | \"bottom-to-top\" }\n top_side?: { pins: number[]; direction?: \"left-to-right\" | \"right-to-left\" }\n bottom_side?: {\n pins: number[]\n direction?: \"left-to-right\" | \"right-to-left\"\n }\n}\n\nexport type SchematicPortArrangement =\n | SchematicPortArrangementBySize\n | SchematicPortArrangementBySides\n\nexport interface SchematicComponent {\n type: \"schematic_component\"\n size: Size\n center: Point\n source_component_id?: string\n schematic_component_id: string\n pin_spacing?: number\n pin_styles?: Record<\n string,\n {\n left_margin?: number\n right_margin?: number\n top_margin?: number\n bottom_margin?: number\n }\n >\n box_width?: number\n symbol_name?: string\n port_arrangement?: SchematicPortArrangement\n port_labels?: Record<string, string>\n symbol_display_value?: string\n subcircuit_id?: string\n schematic_group_id?: string\n is_schematic_group?: boolean\n source_group_id?: string\n is_box_with_pins: boolean\n}\n\nexport const schematic_component_port_arrangement_by_size = z.object({\n left_size: z.number(),\n right_size: z.number(),\n top_size: z.number().optional(),\n bottom_size: z.number().optional(),\n})\n\nexpectTypesMatch<\n SchematicPortArrangementBySize,\n z.infer<typeof schematic_component_port_arrangement_by_size>\n>(true)\n\nexport const schematic_component_port_arrangement_by_sides = z.object({\n left_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n right_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"top-to-bottom\", \"bottom-to-top\"]).optional(),\n })\n .optional(),\n top_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n bottom_side: z\n .object({\n pins: z.array(z.number()),\n // @ts-ignore\n direction: z.enum([\"left-to-right\", \"right-to-left\"]).optional(),\n })\n .optional(),\n})\n\nexpectTypesMatch<\n SchematicPortArrangementBySides,\n z.infer<typeof schematic_component_port_arrangement_by_sides>\n>(true)\n\nexport const port_arrangement = z.union([\n schematic_component_port_arrangement_by_size,\n schematic_component_port_arrangement_by_sides,\n])\n\nexport const schematic_component = z.object({\n type: z.literal(\"schematic_component\"),\n size,\n center: point,\n source_component_id: z.string().optional(),\n schematic_component_id: z.string(),\n pin_spacing: length.optional(),\n pin_styles: schematic_pin_styles.optional(),\n box_width: length.optional(),\n symbol_name: z.string().optional(),\n port_arrangement: port_arrangement.optional(),\n port_labels: z.record(z.string()).optional(),\n symbol_display_value: z.string().optional(),\n subcircuit_id: z.string().optional(),\n schematic_group_id: z.string().optional(),\n is_schematic_group: z.boolean().optional(),\n source_group_id: z.string().optional(),\n is_box_with_pins: z.boolean().optional().default(true),\n})\n\nexport type SchematicComponentInput = z.input<typeof schematic_component>\ntype InferredSchematicComponent = z.infer<typeof schematic_component>\n\nexpectTypesMatch<SchematicComponent, InferredSchematicComponent>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/** Draws a styled line on the schematic */\nexport interface SchematicLine {\n type: \"schematic_line\"\n schematic_line_id: string\n schematic_component_id: string\n x1: number\n y1: number\n x2: number\n y2: number\n stroke_width?: number | null\n color: string\n is_dashed: boolean\n subcircuit_id?: string\n}\n\nexport const schematic_line = z\n .object({\n type: z.literal(\"schematic_line\"),\n schematic_line_id: getZodPrefixedIdWithDefault(\"schematic_line\"),\n schematic_component_id: z.string(),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n stroke_width: distance.nullable().optional(),\n color: z.string().default(\"#000000\"),\n is_dashed: z.boolean().default(false),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Draws a styled line on the schematic\")\n\nexport type SchematicLineInput = z.input<typeof schematic_line>\ntype InferredSchematicLine = z.infer<typeof schematic_line>\n\nexpectTypesMatch<SchematicLine, InferredSchematicLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { distance, rotation } from \"../units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/** Draws a styled rectangle on the schematic */\nexport interface SchematicRect {\n type: \"schematic_rect\"\n schematic_rect_id: string\n schematic_component_id: string\n center: Point\n width: number\n height: number\n rotation: number\n stroke_width?: number | null\n color: string\n is_filled: boolean\n fill_color?: string\n is_dashed: boolean\n subcircuit_id?: string\n}\n\nexport const schematic_rect = z\n .object({\n type: z.literal(\"schematic_rect\"),\n schematic_rect_id: getZodPrefixedIdWithDefault(\"schematic_rect\"),\n schematic_component_id: z.string(),\n center: point,\n width: distance,\n height: distance,\n rotation: rotation.default(0),\n stroke_width: distance.nullable().optional(),\n color: z.string().default(\"#000000\"),\n is_filled: z.boolean().default(false),\n fill_color: z.string().optional(),\n is_dashed: z.boolean().default(false),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Draws a styled rectangle on the schematic\")\n\nexport type SchematicRectInput = z.input<typeof schematic_rect>\ntype InferredSchematicRect = z.infer<typeof schematic_rect>\n\nexpectTypesMatch<SchematicRect, InferredSchematicRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { distance } from \"../units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/** Draws a styled circle on the schematic */\nexport interface SchematicCircle {\n type: \"schematic_circle\"\n schematic_circle_id: string\n schematic_component_id: string\n center: Point\n radius: number\n stroke_width?: number | null\n color: string\n is_filled: boolean\n fill_color?: string\n is_dashed: boolean\n subcircuit_id?: string\n}\n\nexport const schematic_circle = z\n .object({\n type: z.literal(\"schematic_circle\"),\n schematic_circle_id: getZodPrefixedIdWithDefault(\"schematic_circle\"),\n schematic_component_id: z.string(),\n center: point,\n radius: distance,\n stroke_width: distance.nullable().optional(),\n color: z.string().default(\"#000000\"),\n is_filled: z.boolean().default(false),\n fill_color: z.string().optional(),\n is_dashed: z.boolean().default(false),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Draws a styled circle on the schematic\")\n\nexport type SchematicCircleInput = z.input<typeof schematic_circle>\ntype InferredSchematicCircle = z.infer<typeof schematic_circle>\n\nexpectTypesMatch<SchematicCircle, InferredSchematicCircle>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { distance, rotation } from \"../units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/** Draws a styled arc on the schematic */\nexport interface SchematicArc {\n type: \"schematic_arc\"\n schematic_arc_id: string\n schematic_component_id: string\n center: Point\n radius: number\n start_angle_degrees: number\n end_angle_degrees: number\n direction: \"clockwise\" | \"counterclockwise\"\n stroke_width?: number | null\n color: string\n is_dashed: boolean\n subcircuit_id?: string\n}\n\nexport const schematic_arc = z\n .object({\n type: z.literal(\"schematic_arc\"),\n schematic_arc_id: getZodPrefixedIdWithDefault(\"schematic_arc\"),\n schematic_component_id: z.string(),\n center: point,\n radius: distance,\n start_angle_degrees: rotation,\n end_angle_degrees: rotation,\n direction: z\n .enum([\"clockwise\", \"counterclockwise\"])\n .default(\"counterclockwise\"),\n stroke_width: distance.nullable().optional(),\n color: z.string().default(\"#000000\"),\n is_dashed: z.boolean().default(false),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Draws a styled arc on the schematic\")\n\nexport type SchematicArcInput = z.input<typeof schematic_arc>\ntype InferredSchematicArc = z.infer<typeof schematic_arc>\n\nexpectTypesMatch<SchematicArc, InferredSchematicArc>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicTraceEdge {\n from: {\n x: number\n y: number\n }\n to: {\n x: number\n y: number\n }\n is_crossing?: boolean\n from_schematic_port_id?: string\n to_schematic_port_id?: string\n}\n\nexport interface SchematicTrace {\n type: \"schematic_trace\"\n schematic_trace_id: string\n source_trace_id?: string\n junctions: {\n x: number\n y: number\n }[]\n edges: SchematicTraceEdge[]\n subcircuit_id?: string\n /** Optional for now, but will be required in a future release */\n subcircuit_connectivity_map_key?: string\n}\n\nexport const schematic_trace = z.object({\n type: z.literal(\"schematic_trace\"),\n schematic_trace_id: z.string(),\n source_trace_id: z.string().optional(),\n junctions: z.array(\n z.object({\n x: z.number(),\n y: z.number(),\n }),\n ),\n edges: z.array(\n z.object({\n from: z.object({\n x: z.number(),\n y: z.number(),\n }),\n to: z.object({\n x: z.number(),\n y: z.number(),\n }),\n is_crossing: z.boolean().optional(),\n from_schematic_port_id: z.string().optional(),\n to_schematic_port_id: z.string().optional(),\n }),\n ),\n subcircuit_id: z.string().optional(),\n // TODO: make required in a future release\n subcircuit_connectivity_map_key: z.string().optional(),\n})\n\nexport type SchematicTraceInput = z.input<typeof schematic_trace>\ntype InferredSchematicTrace = z.infer<typeof schematic_trace>\n\nexpectTypesMatch<SchematicTraceInput, InferredSchematicTrace>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { ninePointAnchor } from \"src/common/NinePointAnchor\"\nimport type { NinePointAnchor } from \"src/common/NinePointAnchor\"\nimport type { FivePointAnchor } from \"src/common/FivePointAnchor\"\nimport { fivePointAnchor } from \"src/common/FivePointAnchor\"\n\nexport interface SchematicText {\n type: \"schematic_text\"\n schematic_component_id?: string\n schematic_text_id: string\n text: string\n font_size: number\n position: {\n x: number\n y: number\n }\n rotation: number\n anchor: NinePointAnchor | FivePointAnchor\n color: string\n subcircuit_id?: string\n}\n\nexport const schematic_text = z.object({\n type: z.literal(\"schematic_text\"),\n schematic_component_id: z.string().optional(),\n schematic_text_id: z.string(),\n text: z.string(),\n font_size: z.number().default(0.18),\n position: z.object({\n x: distance,\n y: distance,\n }),\n rotation: z.number().default(0),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicTextInput = z.input<typeof schematic_text>\ntype InferredSchematicText = z.infer<typeof schematic_text>\n\nexpectTypesMatch<SchematicText, InferredSchematicText>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport type FivePointAnchor = \"center\" | \"left\" | \"right\" | \"top\" | \"bottom\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n\ntype InferredFivePointAnchor = z.infer<typeof fivePointAnchor>\n\nexpectTypesMatch<FivePointAnchor, InferredFivePointAnchor>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicPort {\n type: \"schematic_port\"\n schematic_port_id: string\n source_port_id: string\n schematic_component_id?: string\n center: Point\n facing_direction?: \"up\" | \"down\" | \"left\" | \"right\"\n distance_from_component_edge?: number\n side_of_component?: \"top\" | \"bottom\" | \"left\" | \"right\"\n true_ccw_index?: number\n pin_number?: number\n display_pin_label?: string\n subcircuit_id?: string\n is_connected?: boolean\n has_input_arrow?: boolean\n has_output_arrow?: boolean\n}\n\nexport const schematic_port = z\n .object({\n type: z.literal(\"schematic_port\"),\n schematic_port_id: z.string(),\n source_port_id: z.string(),\n schematic_component_id: z.string().optional(),\n center: point,\n facing_direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n distance_from_component_edge: z.number().optional(),\n side_of_component: z.enum([\"top\", \"bottom\", \"left\", \"right\"]).optional(),\n true_ccw_index: z.number().optional(),\n pin_number: z.number().optional(),\n display_pin_label: z.string().optional(),\n subcircuit_id: z.string().optional(),\n is_connected: z.boolean().optional(),\n has_input_arrow: z.boolean().optional(),\n has_output_arrow: z.boolean().optional(),\n })\n .describe(\"Defines a port on a schematic component\")\n\nexport type SchematicPortInput = z.input<typeof schematic_port>\ntype InferredSchematicPort = z.infer<typeof schematic_port>\n\nexpectTypesMatch<SchematicPort, InferredSchematicPort>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\n\nexport interface SchematicNetLabel {\n type: \"schematic_net_label\"\n schematic_net_label_id: string\n schematic_trace_id?: string\n source_trace_id?: string\n source_net_id: string\n center: Point\n anchor_position?: Point | undefined\n anchor_side: \"top\" | \"bottom\" | \"left\" | \"right\"\n text: string\n symbol_name?: string | undefined\n /**\n * When true the net label can be repositioned. When false the label's\n * position is fixed by the element it is attached to.\n */\n is_movable?: boolean\n subcircuit_id?: string\n}\n\nexport const schematic_net_label = z.object({\n type: z.literal(\"schematic_net_label\"),\n schematic_net_label_id: getZodPrefixedIdWithDefault(\"schematic_net_label\"),\n schematic_trace_id: z.string().optional(),\n source_trace_id: z.string().optional(),\n source_net_id: z.string(),\n center: point,\n anchor_position: point.optional(),\n anchor_side: z.enum([\"top\", \"bottom\", \"left\", \"right\"]),\n text: z.string(),\n symbol_name: z.string().optional(),\n is_movable: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n})\n\nexport type SchematicNetLabelInput = z.input<typeof schematic_net_label>\nexport type InferredSchematicNetLabel = z.infer<typeof schematic_net_label>\n\nexpectTypesMatch<SchematicNetLabel, InferredSchematicNetLabel>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SchematicError {\n type: \"schematic_error\"\n schematic_error_id: string\n error_type: \"schematic_port_not_found\"\n message: string\n subcircuit_id?: string\n}\n\nexport const schematic_error = z\n .object({\n type: z.literal(\"schematic_error\"),\n schematic_error_id: z.string(),\n // eventually each error type should be broken out into a dir of files\n error_type: z\n .literal(\"schematic_port_not_found\")\n .default(\"schematic_port_not_found\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a schematic error on the schematic\")\n\nexport type SchematicErrorInput = z.input<typeof schematic_error>\ntype InferredSchematicError = z.infer<typeof schematic_error>\n\nexpectTypesMatch<SchematicError, InferredSchematicError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_layout_error = z\n .object({\n type: z.literal(\"schematic_layout_error\"),\n schematic_layout_error_id: getZodPrefixedIdWithDefault(\n \"schematic_layout_error\",\n ),\n error_type: z\n .literal(\"schematic_layout_error\")\n .default(\"schematic_layout_error\"),\n message: z.string(),\n source_group_id: z.string(),\n schematic_group_id: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Error emitted when schematic layout fails for a group\")\n\nexport type SchematicLayoutErrorInput = z.input<typeof schematic_layout_error>\ntype InferredSchematicLayoutError = z.infer<typeof schematic_layout_error>\n\nexport interface SchematicLayoutError {\n type: \"schematic_layout_error\"\n schematic_layout_error_id: string\n error_type: \"schematic_layout_error\"\n message: string\n source_group_id: string\n schematic_group_id: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<SchematicLayoutError, InferredSchematicLayoutError>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { size, type Size } from \"../common/size\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_debug_object_base = z.object({\n type: z.literal(\"schematic_debug_object\"),\n label: z.string().optional(),\n subcircuit_id: z.string().optional(),\n})\n\nexport const schematic_debug_rect = schematic_debug_object_base.extend({\n shape: z.literal(\"rect\"),\n center: point,\n size: size,\n})\n\nexport const schematic_debug_line = schematic_debug_object_base.extend({\n shape: z.literal(\"line\"),\n start: point,\n end: point,\n})\n\nexport const schematic_debug_point = schematic_debug_object_base.extend({\n shape: z.literal(\"point\"),\n center: point,\n})\n\nexport const schematic_debug_object = z.discriminatedUnion(\"shape\", [\n schematic_debug_rect,\n schematic_debug_line,\n schematic_debug_point,\n])\ntype InferredSchematicDebugObject = z.infer<typeof schematic_debug_object>\n\nexport interface SchematicDebugRect {\n type: \"schematic_debug_object\"\n label?: string\n shape: \"rect\"\n center: Point\n size: Size\n subcircuit_id?: string\n}\n\nexport interface SchematicDebugLine {\n type: \"schematic_debug_object\"\n label?: string\n shape: \"line\"\n start: Point\n end: Point\n subcircuit_id?: string\n}\n\nexport interface SchematicDebugPoint {\n type: \"schematic_debug_object\"\n label?: string\n shape: \"point\"\n center: Point\n subcircuit_id?: string\n}\n\nexport type SchematicDebugObject =\n | SchematicDebugRect\n | SchematicDebugLine\n | SchematicDebugPoint\n\nexpectTypesMatch<SchematicDebugObject, InferredSchematicDebugObject>(true)\nexport type SchematicDebugObjectInput = z.input<typeof schematic_debug_object>\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common/point\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { voltage } from \"src/units\"\n\nexport interface SchematicVoltageProbe {\n type: \"schematic_voltage_probe\"\n schematic_voltage_probe_id: string\n source_component_id?: string\n name?: string\n position: Point\n schematic_trace_id: string\n voltage?: number\n subcircuit_id?: string\n color?: string\n}\n\nexport const schematic_voltage_probe = z\n .object({\n type: z.literal(\"schematic_voltage_probe\"),\n schematic_voltage_probe_id: z.string(),\n source_component_id: z.string().optional(),\n name: z.string().optional(),\n position: point,\n schematic_trace_id: z.string(),\n voltage: voltage.optional(),\n subcircuit_id: z.string().optional(),\n color: z.string().optional(),\n })\n .describe(\"Defines a voltage probe measurement point on a schematic trace\")\n\nexport type SchematicVoltageProbeInput = z.input<typeof schematic_voltage_probe>\ntype InferredSchematicVoltageProbe = z.infer<typeof schematic_voltage_probe>\n\nexpectTypesMatch<SchematicVoltageProbe, InferredSchematicVoltageProbe>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"../common\"\nimport { expectTypesMatch } from \"../utils/expect-types-match\"\n\nexport const schematic_manual_edit_conflict_warning = z\n .object({\n type: z.literal(\"schematic_manual_edit_conflict_warning\"),\n schematic_manual_edit_conflict_warning_id: getZodPrefixedIdWithDefault(\n \"schematic_manual_edit_conflict_warning\",\n ),\n warning_type: z\n .literal(\"schematic_manual_edit_conflict_warning\")\n .default(\"schematic_manual_edit_conflict_warning\"),\n message: z.string(),\n schematic_component_id: z.string(),\n schematic_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n source_component_id: z.string(),\n })\n .describe(\n \"Warning emitted when a component has both manual placement and explicit schX/schY coordinates\",\n )\n\nexport type SchematicManualEditConflictWarningInput = z.input<\n typeof schematic_manual_edit_conflict_warning\n>\ntype InferredSchematicManualEditConflictWarning = z.infer<\n typeof schematic_manual_edit_conflict_warning\n>\n\n/**\n * Warning emitted when a component has both manual placement (via manualEdits) and explicit schX/schY coordinates\n */\nexport interface SchematicManualEditConflictWarning {\n type: \"schematic_manual_edit_conflict_warning\"\n schematic_manual_edit_conflict_warning_id: string\n warning_type: \"schematic_manual_edit_conflict_warning\"\n message: string\n schematic_component_id: string\n schematic_group_id?: string\n subcircuit_id?: string\n source_component_id: string\n}\n\nexpectTypesMatch<\n SchematicManualEditConflictWarning,\n InferredSchematicManualEditConflictWarning\n>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_group = z\n .object({\n type: z.literal(\"schematic_group\"),\n schematic_group_id: getZodPrefixedIdWithDefault(\"schematic_group\"),\n source_group_id: z.string(),\n is_subcircuit: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n width: length,\n height: length,\n center: point,\n schematic_component_ids: z.array(z.string()),\n show_as_schematic_box: z.boolean().optional(),\n name: z.string().optional(),\n description: z.string().optional(),\n })\n .describe(\"Defines a group of components on the schematic\")\n\nexport type SchematicGroupInput = z.input<typeof schematic_group>\ntype InferredSchematicGroup = z.infer<typeof schematic_group>\n\n/**\n * Defines a group of components on the schematic\n */\nexport interface SchematicGroup {\n type: \"schematic_group\"\n schematic_group_id: string\n source_group_id: string\n is_subcircuit?: boolean\n subcircuit_id?: string\n width: Length\n height: Length\n center: Point\n schematic_component_ids: string[]\n show_as_schematic_box?: boolean\n name?: string\n description?: string\n}\n\nexpectTypesMatch<SchematicGroup, InferredSchematicGroup>(true)\n","import { z } from \"zod\"\nimport {\n getZodPrefixedIdWithDefault,\n ninePointAnchor,\n point,\n type NinePointAnchor,\n type Point,\n} from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_table = z\n .object({\n type: z.literal(\"schematic_table\"),\n schematic_table_id: getZodPrefixedIdWithDefault(\"schematic_table\"),\n anchor_position: point,\n column_widths: z.array(distance),\n row_heights: z.array(distance),\n cell_padding: distance.optional(),\n border_width: distance.optional(),\n subcircuit_id: z.string().optional(),\n schematic_component_id: z.string().optional(),\n anchor: ninePointAnchor.optional(),\n })\n .describe(\"Defines a table on the schematic\")\n\nexport type SchematicTableInput = z.input<typeof schematic_table>\ntype InferredSchematicTable = z.infer<typeof schematic_table>\n\n/**\n * Defines a table on the schematic, useful for displaying data in a structured format.\n */\nexport interface SchematicTable {\n type: \"schematic_table\"\n schematic_table_id: string\n anchor_position: Point\n column_widths: Length[]\n row_heights: Length[]\n cell_padding?: Length\n border_width?: Length\n subcircuit_id?: string\n schematic_component_id?: string\n anchor?: NinePointAnchor\n}\n\nexpectTypesMatch<SchematicTable, InferredSchematicTable>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault, point, type Point } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_table_cell = z\n .object({\n type: z.literal(\"schematic_table_cell\"),\n schematic_table_cell_id: getZodPrefixedIdWithDefault(\n \"schematic_table_cell\",\n ),\n schematic_table_id: z.string(),\n start_row_index: z.number(),\n end_row_index: z.number(),\n start_column_index: z.number(),\n end_column_index: z.number(),\n text: z.string().optional(),\n center: point,\n width: distance,\n height: distance,\n horizontal_align: z.enum([\"left\", \"center\", \"right\"]).optional(),\n vertical_align: z.enum([\"top\", \"middle\", \"bottom\"]).optional(),\n font_size: distance.optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a cell within a schematic_table\")\n\nexport type SchematicTableCellInput = z.input<typeof schematic_table_cell>\ntype InferredSchematicTableCell = z.infer<typeof schematic_table_cell>\n\n/**\n * Defines a cell within a schematic_table\n */\nexport interface SchematicTableCell {\n type: \"schematic_table_cell\"\n schematic_table_cell_id: string\n schematic_table_id: string\n start_row_index: number\n end_row_index: number\n start_column_index: number\n end_column_index: number\n text?: string\n center: Point\n width: Length\n height: Length\n horizontal_align?: \"left\" | \"center\" | \"right\"\n vertical_align?: \"top\" | \"middle\" | \"bottom\"\n font_size?: Length\n subcircuit_id?: string\n}\n\nexpectTypesMatch<SchematicTableCell, InferredSchematicTableCell>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const schematic_sheet = z\n .object({\n type: z.literal(\"schematic_sheet\"),\n schematic_sheet_id: getZodPrefixedIdWithDefault(\"schematic_sheet\"),\n name: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\n \"Defines a schematic sheet or page that components can be placed on\",\n )\n\nexport type SchematicSheetInput = z.input<typeof schematic_sheet>\ntype InferredSchematicSheet = z.infer<typeof schematic_sheet>\n\n/**\n * Defines a schematic sheet or page that components can be placed on.\n */\nexport interface SchematicSheet {\n type: \"schematic_sheet\"\n schematic_sheet_id: string\n name?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<SchematicSheet, InferredSchematicSheet>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const point_with_bulge = z.object({\n x: distance,\n y: distance,\n bulge: z.number().optional(),\n})\n\nexport interface PointWithBulge {\n x: Distance\n y: Distance\n bulge?: number\n}\ntype InferredPointWithBulge = z.infer<typeof point_with_bulge>\nexpectTypesMatch<PointWithBulge, InferredPointWithBulge>(true)\n\nexport const ring = z.object({\n vertices: z.array(point_with_bulge),\n})\n\nexport interface Ring {\n vertices: PointWithBulge[]\n}\ntype InferredRing = z.infer<typeof ring>\nexpectTypesMatch<Ring, InferredRing>(true)\n\nexport const brep_shape = z.object({\n outer_ring: ring,\n inner_rings: z.array(ring).default([]),\n})\n\n/**\n * B-rep shape defined by an outer ring and inner rings (holes).\n */\nexport interface BRepShape {\n /**\n * The outer boundary of the shape. Vertices must be in clockwise order.\n */\n outer_ring: Ring\n /**\n * Inner boundaries (holes). Vertices must be in counter-clockwise order.\n */\n inner_rings: Ring[]\n}\ntype InferredBRepShape = z.infer<typeof brep_shape>\nexpectTypesMatch<BRepShape, InferredBRepShape>(true)\n","import { z } from \"zod\"\nimport { distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"./layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n// x: string | number\n// y: string | number\n// via?: boolean\n// via_to_layer?: string\nexport const pcb_route_hint = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n via_to_layer: layer_ref.optional(),\n})\nexport const pcb_route_hints = z.array(pcb_route_hint)\n\nexport type PcbRouteHintInput = z.input<typeof pcb_route_hint>\nexport type PcbRouteHintsInput = z.input<typeof pcb_route_hints>\ntype InferredPcbRouteHint = z.output<typeof pcb_route_hint>\ntype InferredPcbRouteHints = z.output<typeof pcb_route_hints>\n\nexport interface PcbRouteHint {\n x: number\n y: number\n via?: boolean\n via_to_layer?: LayerRef\n}\n\nexport type PcbRouteHints = PcbRouteHint[]\n\nexpectTypesMatch<PcbRouteHint, InferredPcbRouteHint>(true)\nexpectTypesMatch<PcbRouteHints, InferredPcbRouteHints>(true)\n","import { z } from \"zod\"\nimport { distance } from \"../../units\"\nimport { layer_ref, type LayerRef } from \"./layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const route_hint_point = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n to_layer: layer_ref.optional(),\n trace_width: distance.optional(),\n})\n\nexport type RouteHintPointInput = z.input<typeof route_hint_point>\ntype InferredRouteHintPoint = z.infer<typeof route_hint_point>\n\nexport interface RouteHintPoint {\n x: number\n y: number\n via?: boolean\n to_layer?: LayerRef\n trace_width?: number\n}\n\nexpectTypesMatch<RouteHintPoint, InferredRouteHintPoint>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { rotation, length, type Rotation, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component = z\n .object({\n type: z.literal(\"pcb_component\"),\n pcb_component_id: getZodPrefixedIdWithDefault(\"pcb_component\"),\n source_component_id: z.string(),\n center: point,\n layer: layer_ref,\n rotation: rotation,\n width: length,\n height: length,\n do_not_place: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n position_mode: z\n .enum([\"packed\", \"relative_to_group_anchor\", \"none\"])\n .optional(),\n positioned_relative_to_pcb_group_id: z.string().optional(),\n obstructs_within_bounds: z\n .boolean()\n .default(true)\n .describe(\n \"Does this component take up all the space within its bounds on a layer. This is generally true except for when separated pin headers are being represented by a single component (in which case, chips can be placed between the pin headers) or for tall modules where chips fit underneath\",\n ),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type PcbComponentInput = z.input<typeof pcb_component>\ntype InferredPcbComponent = z.infer<typeof pcb_component>\n\n/**\n * Defines a component on the PCB\n */\nexport interface PcbComponent {\n type: \"pcb_component\"\n pcb_component_id: string\n source_component_id: string\n subcircuit_id?: string\n center: Point\n layer: LayerRef\n rotation: Rotation\n width: Length\n height: Length\n do_not_place?: boolean\n pcb_group_id?: string\n position_mode?: \"packed\" | \"relative_to_group_anchor\" | \"none\"\n positioned_relative_to_pcb_group_id?: string\n obstructs_within_bounds: boolean\n}\n\n/**\n * @deprecated use PcbComponent\n */\nexport type PCBComponent = PcbComponent\n\nexpectTypesMatch<PcbComponent, InferredPcbComponent>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance, rotation, type Rotation } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_hole_circle = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"circle\"),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_hole_circle_shape = pcb_hole_circle.describe(\n \"Defines a circular hole on the PCB\",\n)\n\nexport type PcbHoleCircleInput = z.input<typeof pcb_hole_circle>\ntype InferredPcbHoleCircle = z.infer<typeof pcb_hole_circle>\n\n/**\n * Defines a circular hole on the PCB\n */\nexport interface PcbHoleCircle {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"circle\"\n hole_diameter: number\n x: Distance\n y: Distance\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\nexpectTypesMatch<PcbHoleCircle, InferredPcbHoleCircle>(true)\n\nconst pcb_hole_rect = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"rect\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_hole_rect_shape = pcb_hole_rect.describe(\n \"Defines a rectangular (square-capable) hole on the PCB. Use equal width/height for square.\",\n)\n\nexport type PcbHoleRectInput = z.input<typeof pcb_hole_rect>\ntype InferredPcbHoleRect = z.infer<typeof pcb_hole_rect>\n\n/**\n * Defines a rectangular (or square) hole on the PCB\n */\nexport interface PcbHoleRect {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"rect\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\nexpectTypesMatch<PcbHoleRect, InferredPcbHoleRect>(true)\n\nconst pcb_hole_circle_or_square = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.enum([\"circle\", \"square\"]),\n hole_diameter: z.number(),\n x: distance,\n y: distance,\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_hole_circle_or_square_shape =\n pcb_hole_circle_or_square.describe(\n \"Defines a circular or square hole on the PCB\",\n )\n\nexport type PcbHoleCircleOrSquareInput = z.input<\n typeof pcb_hole_circle_or_square\n>\ntype InferredPcbHoleCircleOrSquare = z.infer<typeof pcb_hole_circle_or_square>\n\n/**\n * Defines a circular or square hole on the PCB\n */\n\n/**\n * @deprecated Use `PcbHoleCircle` for circular holes or `PcbHoleRect` for square holes.\n */\nexport interface PcbHoleCircleOrSquare {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"circle\" | \"square\"\n hole_diameter: number\n x: Distance\n y: Distance\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\nexpectTypesMatch<PcbHoleCircleOrSquare, InferredPcbHoleCircleOrSquare>(true)\n\nconst pcb_hole_oval = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"oval\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_hole_oval_shape = pcb_hole_oval.describe(\n \"Defines an oval hole on the PCB\",\n)\n\nexport type PcbHoleOvalInput = z.input<typeof pcb_hole_oval>\ntype InferredPcbHoleOval = z.infer<typeof pcb_hole_oval>\n\n/**\n * Defines an oval hole on the PCB\n */\nexport interface PcbHoleOval {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"oval\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\nexpectTypesMatch<PcbHoleOval, InferredPcbHoleOval>(true)\n\nconst pcb_hole_pill = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"pill\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_hole_pill_shape = pcb_hole_pill.describe(\n \"Defines a pill-shaped hole on the PCB\",\n)\n\nexport type PcbHolePillInput = z.input<typeof pcb_hole_pill>\ntype InferredPcbHolePill = z.infer<typeof pcb_hole_pill>\n\n/**\n * Defines a pill-shaped hole on the PCB\n */\nexport interface PcbHolePill {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"pill\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\nexpectTypesMatch<PcbHolePill, InferredPcbHolePill>(true)\n\nconst pcb_hole_rotated_pill = z.object({\n type: z.literal(\"pcb_hole\"),\n pcb_hole_id: getZodPrefixedIdWithDefault(\"pcb_hole\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"rotated_pill\"),\n hole_width: z.number(),\n hole_height: z.number(),\n x: distance,\n y: distance,\n ccw_rotation: rotation,\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_hole_rotated_pill_shape = pcb_hole_rotated_pill.describe(\n \"Defines a rotated pill-shaped hole on the PCB\",\n)\n\nexport type PcbHoleRotatedPillInput = z.input<typeof pcb_hole_rotated_pill>\ntype InferredPcbHoleRotatedPill = z.infer<typeof pcb_hole_rotated_pill>\n\n/**\n * Defines a rotated pill-shaped hole on the PCB\n */\nexport interface PcbHoleRotatedPill {\n type: \"pcb_hole\"\n pcb_hole_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"rotated_pill\"\n hole_width: number\n hole_height: number\n x: Distance\n y: Distance\n ccw_rotation: Rotation\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\nexpectTypesMatch<PcbHoleRotatedPill, InferredPcbHoleRotatedPill>(true)\n\nexport const pcb_hole = pcb_hole_circle_or_square\n .or(pcb_hole_oval)\n .or(pcb_hole_pill)\n .or(pcb_hole_rotated_pill)\n .or(pcb_hole_circle)\n .or(pcb_hole_rect)\n\n/**\n * @deprecated Use PcbHoleCircleOrSquare, PcbHoleCircle, PcbHoleRect, PcbHoleOval, PcbHolePill, or PcbHoleRotatedPill\n */\nexport type PCBHoleInput = z.input<typeof pcb_hole>\n/**\n * @deprecated Use PcbHoleCircleOrSquare, PcbHoleCircle, PcbHoleRect, PcbHoleOval, PcbHolePill, or PcbHoleRotatedPill\n */\nexport type PCBHole = z.infer<typeof pcb_hole>\n\nexport type PcbHole =\n | PcbHoleCircleOrSquare\n | PcbHoleOval\n | PcbHolePill\n | PcbHoleRotatedPill\n | PcbHoleCircle\n | PcbHoleRect\n","import { z } from \"zod\"\nimport { distance, type Distance, rotation, type Rotation } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_plated_hole_circle = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circle\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n outer_diameter: z.number(),\n hole_diameter: z.number(),\n is_covered_with_solder_mask: z.boolean().optional(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n soldermask_margin: z.number().optional(),\n})\n\n/**\n * Defines a circular plated hole on the PCB\n */\nexport interface PcbPlatedHoleCircle {\n type: \"pcb_plated_hole\"\n shape: \"circle\"\n pcb_group_id?: string\n subcircuit_id?: string\n outer_diameter: number\n hole_diameter: number\n is_covered_with_solder_mask?: boolean\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n soldermask_margin?: number\n}\n\nconst pcb_plated_hole_oval = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.enum([\"oval\", \"pill\"]),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n outer_width: z.number(),\n outer_height: z.number(),\n hole_width: z.number(),\n hole_height: z.number(),\n is_covered_with_solder_mask: z.boolean().optional(),\n x: distance,\n y: distance,\n ccw_rotation: rotation,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n soldermask_margin: z.number().optional(),\n})\n\n/**\n * Defines an oval or pill-shaped plated hole on the PCB\n */\nexport interface PcbPlatedHoleOval {\n type: \"pcb_plated_hole\"\n shape: \"oval\" | \"pill\"\n pcb_group_id?: string\n subcircuit_id?: string\n outer_width: number\n outer_height: number\n hole_width: number\n hole_height: number\n is_covered_with_solder_mask?: boolean\n x: Distance\n y: Distance\n ccw_rotation: Rotation\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n soldermask_margin?: number\n}\n\nconst pcb_circular_hole_with_rect_pad = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"circle\"),\n pad_shape: z.literal(\"rect\"),\n hole_diameter: z.number(),\n rect_pad_width: z.number(),\n rect_pad_height: z.number(),\n rect_border_radius: z.number().optional(),\n hole_offset_x: distance.default(0),\n hole_offset_y: distance.default(0),\n is_covered_with_solder_mask: z.boolean().optional(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n soldermask_margin: z.number().optional(),\n})\nconst pcb_pill_hole_with_rect_pad = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"pill\"),\n pad_shape: z.literal(\"rect\"),\n hole_width: z.number(),\n hole_height: z.number(),\n rect_pad_width: z.number(),\n rect_pad_height: z.number(),\n rect_border_radius: z.number().optional(),\n hole_offset_x: distance.default(0),\n hole_offset_y: distance.default(0),\n is_covered_with_solder_mask: z.boolean().optional(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n soldermask_margin: z.number().optional(),\n})\nconst pcb_rotated_pill_hole_with_rect_pad = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"rotated_pill_hole_with_rect_pad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.literal(\"rotated_pill\"),\n pad_shape: z.literal(\"rect\"),\n hole_width: z.number(),\n hole_height: z.number(),\n hole_ccw_rotation: rotation,\n rect_pad_width: z.number(),\n rect_pad_height: z.number(),\n rect_border_radius: z.number().optional(),\n rect_ccw_rotation: rotation,\n hole_offset_x: distance.default(0),\n hole_offset_y: distance.default(0),\n is_covered_with_solder_mask: z.boolean().optional(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n soldermask_margin: z.number().optional(),\n})\nexport interface PcbHolePillWithRectPad {\n type: \"pcb_plated_hole\"\n shape: \"pill_hole_with_rect_pad\"\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"pill\"\n pad_shape: \"rect\"\n hole_width: number\n hole_height: number\n rect_pad_width: number\n rect_pad_height: number\n rect_border_radius?: number\n hole_offset_x: Distance\n hole_offset_y: Distance\n is_covered_with_solder_mask?: boolean\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n soldermask_margin?: number\n}\n\nexport interface PcbHoleRotatedPillWithRectPad {\n type: \"pcb_plated_hole\"\n shape: \"rotated_pill_hole_with_rect_pad\"\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"rotated_pill\"\n pad_shape: \"rect\"\n hole_width: number\n hole_height: number\n hole_ccw_rotation: Rotation\n rect_pad_width: number\n rect_pad_height: number\n rect_border_radius?: number\n rect_ccw_rotation: Rotation\n hole_offset_x: Distance\n hole_offset_y: Distance\n is_covered_with_solder_mask?: boolean\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n soldermask_margin?: number\n}\n\nexport interface PcbHoleCircularWithRectPad {\n type: \"pcb_plated_hole\"\n shape: \"circular_hole_with_rect_pad\"\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"circle\"\n pad_shape: \"rect\"\n hole_diameter: number\n rect_pad_width: number\n rect_pad_height: number\n rect_border_radius?: number\n hole_offset_x: Distance\n hole_offset_y: Distance\n is_covered_with_solder_mask?: boolean\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n soldermask_margin?: number\n}\nconst pcb_hole_with_polygon_pad = z.object({\n type: z.literal(\"pcb_plated_hole\"),\n shape: z.literal(\"hole_with_polygon_pad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n hole_shape: z.enum([\"circle\", \"oval\", \"pill\", \"rotated_pill\"]),\n hole_diameter: z.number().optional(),\n hole_width: z.number().optional(),\n hole_height: z.number().optional(),\n\n pad_outline: z\n .array(\n z.object({\n x: distance,\n y: distance,\n }),\n )\n .min(3),\n\n hole_offset_x: distance.default(0),\n hole_offset_y: distance.default(0),\n is_covered_with_solder_mask: z.boolean().optional(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n pcb_plated_hole_id: getZodPrefixedIdWithDefault(\"pcb_plated_hole\"),\n soldermask_margin: z.number().optional(),\n})\n\n/**\n * Defines a plated hole with a polygonal pad on the PCB\n */\n\nexport interface PcbHoleWithPolygonPad {\n type: \"pcb_plated_hole\"\n shape: \"hole_with_polygon_pad\"\n pcb_group_id?: string\n subcircuit_id?: string\n hole_shape: \"circle\" | \"oval\" | \"pill\" | \"rotated_pill\"\n hole_diameter?: number\n hole_width?: number\n hole_height?: number\n pad_outline: { x: Distance; y: Distance }[]\n hole_offset_x: Distance\n hole_offset_y: Distance\n is_covered_with_solder_mask?: boolean\n x: Distance\n y: Distance\n layers: LayerRef[]\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n pcb_plated_hole_id: string\n soldermask_margin?: number\n}\n\nexport const pcb_plated_hole = z.union([\n pcb_plated_hole_circle,\n pcb_plated_hole_oval,\n pcb_circular_hole_with_rect_pad,\n pcb_pill_hole_with_rect_pad,\n pcb_rotated_pill_hole_with_rect_pad,\n pcb_hole_with_polygon_pad,\n])\nexport type PcbPlatedHole =\n | PcbPlatedHoleCircle\n | PcbPlatedHoleOval\n | PcbHoleCircularWithRectPad\n | PcbHolePillWithRectPad\n | PcbHoleRotatedPillWithRectPad\n | PcbHoleWithPolygonPad\n\nexpectTypesMatch<PcbPlatedHoleCircle, z.infer<typeof pcb_plated_hole_circle>>(\n true,\n)\nexpectTypesMatch<PcbPlatedHoleOval, z.infer<typeof pcb_plated_hole_oval>>(true)\nexpectTypesMatch<\n PcbHoleCircularWithRectPad,\n z.infer<typeof pcb_circular_hole_with_rect_pad>\n>(true)\nexpectTypesMatch<\n PcbHolePillWithRectPad,\n z.infer<typeof pcb_pill_hole_with_rect_pad>\n>(true)\nexpectTypesMatch<\n PcbHoleRotatedPillWithRectPad,\n z.infer<typeof pcb_rotated_pill_hole_with_rect_pad>\n>(true)\nexpectTypesMatch<\n PcbHoleWithPolygonPad,\n z.infer<typeof pcb_hole_with_polygon_pad>\n>(true)\n/**\n * @deprecated use PcbPlatedHole\n */\nexport type PCBPlatedHole = PcbPlatedHole\n\n/**\n * @deprecated use PcbPlatedHoleInput\n */\nexport type PCBPlatedHoleInput = z.input<typeof pcb_plated_hole>\nexport type PcbPlatedHoleInput = z.input<typeof pcb_plated_hole>\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port = z\n .object({\n type: z.literal(\"pcb_port\"),\n pcb_port_id: getZodPrefixedIdWithDefault(\"pcb_port\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n source_port_id: z.string(),\n pcb_component_id: z.string().optional(),\n x: distance,\n y: distance,\n layers: z.array(layer_ref),\n is_board_pinout: z.boolean().optional(),\n })\n .describe(\"Defines a port on the PCB\")\n\nexport type PcbPortInput = z.input<typeof pcb_port>\ntype InferredPcbPort = z.infer<typeof pcb_port>\n\n/**\n * Defines a port on the PCB\n */\nexport interface PcbPort {\n type: \"pcb_port\"\n pcb_port_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n source_port_id: string\n pcb_component_id?: string\n x: Distance\n y: Distance\n layers: LayerRef[]\n is_board_pinout?: boolean\n}\n\n/**\n * @deprecated use PcbPort\n */\nexport type PCBPort = PcbPort\n\n/**\n * @deprecated use PcbPortInput\n */\nexport type PCBPortInput = PcbPortInput\n\nexpectTypesMatch<PcbPort, InferredPcbPort>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance, rotation, type Rotation } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault, point, type Point } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_smtpad_circle = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"circle\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nconst pcb_smtpad_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n rect_border_radius: z.number().optional(),\n corner_radius: z.number().optional(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nconst pcb_smtpad_rotated_rect = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rotated_rect\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n rect_border_radius: z.number().optional(),\n corner_radius: z.number().optional(),\n ccw_rotation: rotation,\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_smtpad_pill = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"pill\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n radius: z.number(),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\nconst pcb_smtpad_rotated_pill = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"rotated_pill\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n radius: z.number(),\n ccw_rotation: rotation,\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nconst pcb_smtpad_polygon = z.object({\n type: z.literal(\"pcb_smtpad\"),\n shape: z.literal(\"polygon\"),\n pcb_smtpad_id: getZodPrefixedIdWithDefault(\"pcb_smtpad\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n points: z.array(point),\n layer: layer_ref,\n port_hints: z.array(z.string()).optional(),\n pcb_component_id: z.string().optional(),\n pcb_port_id: z.string().optional(),\n is_covered_with_solder_mask: z.boolean().optional(),\n soldermask_margin: z.number().optional(),\n})\n\nexport const pcb_smtpad = z\n .discriminatedUnion(\"shape\", [\n pcb_smtpad_circle,\n pcb_smtpad_rect,\n pcb_smtpad_rotated_rect,\n pcb_smtpad_rotated_pill,\n pcb_smtpad_pill,\n pcb_smtpad_polygon,\n ])\n .describe(\"Defines an SMT pad on the PCB\")\n\nexport type PCBSMTPadInput = z.input<typeof pcb_smtpad>\ntype PCBSMTPadCircle = z.infer<typeof pcb_smtpad_circle>\ntype PCBSMTPadRect = z.infer<typeof pcb_smtpad_rect>\ntype PCBSMTPadRotatedRect = z.infer<typeof pcb_smtpad_rotated_rect>\ntype PCBSMTPadRotatedPill = z.infer<typeof pcb_smtpad_rotated_pill>\ntype PCBSMTPadPill = z.infer<typeof pcb_smtpad_pill>\ntype PCBSMTPadPolygon = z.infer<typeof pcb_smtpad_polygon>\n\n/**\n * Defines a circular SMT pad on the PCB\n */\nexport interface PcbSmtPadCircle {\n type: \"pcb_smtpad\"\n shape: \"circle\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\n/**\n * Defines a rectangular SMT pad on the PCB\n */\nexport interface PcbSmtPadRect {\n type: \"pcb_smtpad\"\n shape: \"rect\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n rect_border_radius?: number\n corner_radius?: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\n/**\n * Defines a rotated rectangular SMT pad on the PCB\n */\nexport interface PcbSmtPadRotatedRect {\n type: \"pcb_smtpad\"\n shape: \"rotated_rect\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n rect_border_radius?: number\n corner_radius?: number\n ccw_rotation: Rotation\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n/**\n * Defines a pill-shaped SMT pad on the PCB (rounded rectangle).\n */\nexport interface PcbSmtPadPill {\n type: \"pcb_smtpad\"\n shape: \"pill\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n radius: number\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\n/**\n * Defines a rotated pill-shaped SMT pad on the PCB\n */\nexport interface PcbSmtPadRotatedPill {\n type: \"pcb_smtpad\"\n shape: \"rotated_pill\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n radius: number\n ccw_rotation: Rotation\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\n/**\n * Defines a polygonal SMT pad on the PCB\n */\nexport interface PcbSmtPadPolygon {\n type: \"pcb_smtpad\"\n shape: \"polygon\"\n pcb_smtpad_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n points: Point[]\n layer: LayerRef\n port_hints?: string[]\n pcb_component_id?: string\n pcb_port_id?: string\n is_covered_with_solder_mask?: boolean\n soldermask_margin?: number\n}\n\nexport type PcbSmtPad =\n | PcbSmtPadCircle\n | PcbSmtPadRect\n | PcbSmtPadRotatedRect\n | PcbSmtPadRotatedPill\n | PcbSmtPadPill\n | PcbSmtPadPolygon\n\n/**\n * @deprecated use PcbSmtPad\n */\nexport type PCBSMTPad = PcbSmtPad\n\nexpectTypesMatch<PcbSmtPadCircle, PCBSMTPadCircle>(true)\nexpectTypesMatch<PcbSmtPadRect, PCBSMTPadRect>(true)\nexpectTypesMatch<PcbSmtPadRotatedRect, PCBSMTPadRotatedRect>(true)\nexpectTypesMatch<PcbSmtPadRotatedPill, PCBSMTPadRotatedPill>(true)\nexpectTypesMatch<PcbSmtPadPill, PCBSMTPadPill>(true)\nexpectTypesMatch<PcbSmtPadPolygon, PCBSMTPadPolygon>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nconst pcb_solder_paste_circle = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"circle\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n radius: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\n\nconst pcb_solder_paste_rect = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"rect\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\nconst pcb_solder_paste_pill = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"pill\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n radius: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\nconst pcb_solder_paste_rotated_rect = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"rotated_rect\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n ccw_rotation: distance,\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\n\nconst pcb_solder_paste_oval = z.object({\n type: z.literal(\"pcb_solder_paste\"),\n shape: z.literal(\"oval\"),\n pcb_solder_paste_id: getZodPrefixedIdWithDefault(\"pcb_solder_paste\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n x: distance,\n y: distance,\n width: z.number(),\n height: z.number(),\n layer: layer_ref,\n pcb_component_id: z.string().optional(),\n pcb_smtpad_id: z.string().optional(),\n})\n\nexport const pcb_solder_paste = z\n .union([\n pcb_solder_paste_circle,\n pcb_solder_paste_rect,\n pcb_solder_paste_pill,\n pcb_solder_paste_rotated_rect,\n pcb_solder_paste_oval,\n ])\n .describe(\"Defines solderpaste on the PCB\")\n\nexport type PCBSolderPasteInput = z.input<typeof pcb_solder_paste>\ntype InferredPcbSolderPasteCircle = z.infer<typeof pcb_solder_paste_circle>\ntype InferredPcbSolderPasteRect = z.infer<typeof pcb_solder_paste_rect>\ntype InferredPcbSolderPastePill = z.infer<typeof pcb_solder_paste_pill>\ntype InferredPcbSolderPasteRotatedRect = z.infer<\n typeof pcb_solder_paste_rotated_rect\n>\ntype InferredPcbSolderPasteOval = z.infer<typeof pcb_solder_paste_oval>\n\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteCircle {\n type: \"pcb_solder_paste\"\n shape: \"circle\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n radius: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteRect {\n type: \"pcb_solder_paste\"\n shape: \"rect\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPastePill {\n type: \"pcb_solder_paste\"\n shape: \"pill\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n radius: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteRotatedRect {\n type: \"pcb_solder_paste\"\n shape: \"rotated_rect\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n ccw_rotation: Distance\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n/**\n * Defines solderpaste on the PCB\n */\nexport interface PcbSolderPasteOval {\n type: \"pcb_solder_paste\"\n shape: \"oval\"\n pcb_solder_paste_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n x: Distance\n y: Distance\n width: number\n height: number\n layer: LayerRef\n pcb_component_id?: string\n pcb_smtpad_id?: string\n}\n\nexport type PcbSolderPaste =\n | PcbSolderPasteCircle\n | PcbSolderPasteRect\n | PcbSolderPastePill\n | PcbSolderPasteRotatedRect\n | PcbSolderPasteOval\n\nexpectTypesMatch<PcbSolderPasteCircle, InferredPcbSolderPasteCircle>(true)\nexpectTypesMatch<PcbSolderPasteRect, InferredPcbSolderPasteRect>(true)\nexpectTypesMatch<PcbSolderPastePill, InferredPcbSolderPastePill>(true)\nexpectTypesMatch<PcbSolderPasteRotatedRect, InferredPcbSolderPasteRotatedRect>(\n true,\n)\nexpectTypesMatch<PcbSolderPasteOval, InferredPcbSolderPasteOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_text = z\n .object({\n type: z.literal(\"pcb_text\"),\n pcb_text_id: getZodPrefixedIdWithDefault(\"pcb_text\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n text: z.string(),\n center: point,\n layer: layer_ref,\n width: length,\n height: length,\n lines: z.number(),\n // @ts-ignore\n align: z.enum([\"bottom-left\"]),\n })\n .describe(\"Defines text on the PCB\")\n\nexport type PcbTextInput = z.input<typeof pcb_text>\ntype InferredPcbText = z.infer<typeof pcb_text>\n\n/**\n * Defines text on the PCB\n */\nexport interface PcbText {\n type: \"pcb_text\"\n pcb_text_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n text: string\n center: Point\n layer: LayerRef\n width: Length\n height: Length\n lines: number\n // @ts-ignore\n align: \"bottom-left\"\n}\n\n/**\n * @deprecated use PcbText\n */\nexport type PCBText = PcbText\n\nexpectTypesMatch<PcbText, InferredPcbText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_route_point_wire = z.object({\n route_type: z.literal(\"wire\"),\n x: distance,\n y: distance,\n width: distance,\n start_pcb_port_id: z.string().optional(),\n end_pcb_port_id: z.string().optional(),\n layer: layer_ref,\n})\n\nexport const pcb_trace_route_point_via = z.object({\n route_type: z.literal(\"via\"),\n x: distance,\n y: distance,\n hole_diameter: distance.optional(),\n outer_diameter: distance.optional(),\n from_layer: z.string(),\n to_layer: z.string(),\n})\n\nexport const pcb_trace_route_point = z.union([\n pcb_trace_route_point_wire,\n pcb_trace_route_point_via,\n])\ntype InferredPcbTraceRoutePoint = z.infer<typeof pcb_trace_route_point>\n\nexport const pcb_trace = z\n .object({\n type: z.literal(\"pcb_trace\"),\n source_trace_id: z.string().optional(),\n pcb_component_id: z.string().optional(),\n pcb_trace_id: getZodPrefixedIdWithDefault(\"pcb_trace\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n route_thickness_mode: z\n .enum([\"constant\", \"interpolated\"])\n .default(\"constant\")\n .optional(),\n route_order_index: z.number().optional(),\n should_round_corners: z.boolean().optional(),\n trace_length: z.number().optional(),\n highlight_color: z.string().optional(),\n route: z.array(pcb_trace_route_point),\n })\n .describe(\"Defines a trace on the PCB\")\n\nexport type PcbTraceInput = z.input<typeof pcb_trace>\ntype InferredPcbTrace = z.infer<typeof pcb_trace>\n\nexport interface PcbTraceRoutePointWire {\n route_type: \"wire\"\n x: Distance\n y: Distance\n width: Distance\n start_pcb_port_id?: string\n end_pcb_port_id?: string\n layer: LayerRef\n}\n\nexport interface PcbTraceRoutePointVia {\n route_type: \"via\"\n x: Distance\n y: Distance\n hole_diameter?: Distance\n outer_diameter?: Distance\n from_layer: string\n to_layer: string\n}\n\nexport type PcbTraceRoutePoint = PcbTraceRoutePointWire | PcbTraceRoutePointVia\n\n/**\n * Defines a trace on the PCB\n */\nexport interface PcbTrace {\n type: \"pcb_trace\"\n source_trace_id?: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n pcb_trace_id: string\n /**\n * The order that this trace was routed in. This can be used to debug the\n * autorouter and to understand the trace path better\n *\n * The route_order_index should be relative to a subcircuit\n */\n route_order_index?: number\n route_thickness_mode?: \"constant\" | \"interpolated\"\n should_round_corners?: boolean\n trace_length?: number\n highlight_color?: string\n route: Array<PcbTraceRoutePoint>\n}\n\n/**\n * @deprecated use PcbTrace\n */\nexport type PCBTrace = PcbTrace\n\n/**\n * @deprecated use PcbTraceInput\n */\nexport type PCBTraceInput = PcbTraceInput\n\nexpectTypesMatch<PcbTraceRoutePoint, InferredPcbTraceRoutePoint>(true)\nexpectTypesMatch<PcbTrace, InferredPcbTrace>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_error = z\n .object({\n type: z.literal(\"pcb_trace_error\"),\n pcb_trace_error_id: getZodPrefixedIdWithDefault(\"pcb_trace_error\"),\n error_type: z.literal(\"pcb_trace_error\").default(\"pcb_trace_error\"),\n message: z.string(),\n center: point.optional(),\n pcb_trace_id: z.string(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a trace error on the PCB\")\n\nexport type PcbTraceErrorInput = z.input<typeof pcb_trace_error>\ntype InferredPcbTraceError = z.infer<typeof pcb_trace_error>\n\n/**\n * Defines a trace error on the PCB\n */\nexport interface PcbTraceError {\n type: \"pcb_trace_error\"\n pcb_trace_error_id: string\n error_type: \"pcb_trace_error\"\n message: string\n center?: Point\n pcb_trace_id: string\n source_trace_id: string\n pcb_component_ids: string[]\n pcb_port_ids: string[]\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbTraceError\n */\nexport type PCBTraceError = PcbTraceError\n\nexpectTypesMatch<PcbTraceError, InferredPcbTraceError>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_trace_missing_error = z\n .object({\n type: z.literal(\"pcb_trace_missing_error\"),\n pcb_trace_missing_error_id: getZodPrefixedIdWithDefault(\n \"pcb_trace_missing_error\",\n ),\n error_type: z\n .literal(\"pcb_trace_missing_error\")\n .default(\"pcb_trace_missing_error\"),\n message: z.string(),\n center: point.optional(),\n source_trace_id: z.string(),\n pcb_component_ids: z.array(z.string()),\n pcb_port_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n })\n .describe(\n \"Defines an error when a source trace has no corresponding PCB trace\",\n )\n\nexport type PcbTraceMissingErrorInput = z.input<typeof pcb_trace_missing_error>\ntype InferredPcbTraceMissingError = z.infer<typeof pcb_trace_missing_error>\n\n/**\n * Defines an error when a source trace has no corresponding PCB trace\n */\nexport interface PcbTraceMissingError {\n type: \"pcb_trace_missing_error\"\n pcb_trace_missing_error_id: string\n error_type: \"pcb_trace_missing_error\"\n message: string\n center?: Point\n source_trace_id: string\n pcb_component_ids: string[]\n pcb_port_ids: string[]\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbTraceMissingError\n */\nexport type PCBTraceMissingError = PcbTraceMissingError\n\nexpectTypesMatch<PcbTraceMissingError, InferredPcbTraceMissingError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port_not_matched_error = z\n .object({\n type: z.literal(\"pcb_port_not_matched_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n error_type: z\n .literal(\"pcb_port_not_matched_error\")\n .default(\"pcb_port_not_matched_error\"),\n message: z.string(),\n pcb_component_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a trace error on the PCB where a port is not matched\")\n\nexport type PcbPortNotMatchedErrorInput = z.input<\n typeof pcb_port_not_matched_error\n>\ntype InferredPcbPortNotMatchedError = z.infer<typeof pcb_port_not_matched_error>\n\n/**\n * Defines a trace error on the PCB where a port is not matched\n */\nexport interface PcbPortNotMatchedError {\n type: \"pcb_port_not_matched_error\"\n pcb_error_id: string\n error_type: \"pcb_port_not_matched_error\"\n message: string\n pcb_component_ids: string[]\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbPortNotMatchedError\n */\nexport type PCBPortNotMatchedError = PcbPortNotMatchedError\n\nexpectTypesMatch<PcbPortNotMatchedError, InferredPcbPortNotMatchedError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_port_not_connected_error = z\n .object({\n type: z.literal(\"pcb_port_not_connected_error\"),\n pcb_port_not_connected_error_id: getZodPrefixedIdWithDefault(\n \"pcb_port_not_connected_error\",\n ),\n error_type: z\n .literal(\"pcb_port_not_connected_error\")\n .default(\"pcb_port_not_connected_error\"),\n message: z.string(),\n pcb_port_ids: z.array(z.string()),\n pcb_component_ids: z.array(z.string()),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines an error when a pcb port is not connected to any trace\")\n\nexport type PcbPortNotConnectedErrorInput = z.input<\n typeof pcb_port_not_connected_error\n>\ntype InferredPcbPortNotConnectedError = z.infer<\n typeof pcb_port_not_connected_error\n>\n\n/**\n * Defines an error when a pcb port is not connected to any trace\n */\nexport interface PcbPortNotConnectedError {\n type: \"pcb_port_not_connected_error\"\n pcb_port_not_connected_error_id: string\n error_type: \"pcb_port_not_connected_error\"\n message: string\n pcb_port_ids: string[]\n pcb_component_ids: string[]\n subcircuit_id?: string\n}\n\nexpectTypesMatch<PcbPortNotConnectedError, InferredPcbPortNotConnectedError>(\n true,\n)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_net = z\n .object({\n type: z.literal(\"pcb_net\"),\n pcb_net_id: getZodPrefixedIdWithDefault(\"pcb_net\"),\n source_net_id: z.string().optional(),\n highlight_color: z.string().optional(),\n })\n .describe(\"Defines a net on the PCB\")\n\nexport type PcbNetInput = z.input<typeof pcb_net>\ntype InferredPcbNet = z.infer<typeof pcb_net>\n\n/**\n * Defines a net on the PCB\n */\nexport interface PcbNet {\n type: \"pcb_net\"\n pcb_net_id: string\n source_net_id?: string\n highlight_color?: string\n}\n\nexpectTypesMatch<PcbNet, InferredPcbNet>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_via = z\n .object({\n type: z.literal(\"pcb_via\"),\n pcb_via_id: getZodPrefixedIdWithDefault(\"pcb_via\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n x: distance,\n y: distance,\n outer_diameter: distance.default(\"0.6mm\"),\n hole_diameter: distance.default(\"0.25mm\"),\n /** @deprecated */\n from_layer: layer_ref.optional(),\n /** @deprecated */\n to_layer: layer_ref.optional(),\n layers: z.array(layer_ref),\n pcb_trace_id: z.string().optional(),\n net_is_assignable: z.boolean().optional(),\n net_assigned: z.boolean().optional(),\n is_tented: z.boolean().optional(),\n })\n .describe(\"Defines a via on the PCB\")\n\nexport type PcbViaInput = z.input<typeof pcb_via>\ntype InferredPcbVia = z.infer<typeof pcb_via>\n\n/**\n * Defines a via on the PCB\n */\nexport interface PcbVia {\n type: \"pcb_via\"\n pcb_via_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n subcircuit_connectivity_map_key?: string\n x: Distance\n y: Distance\n outer_diameter: Distance\n hole_diameter: Distance\n /** @deprecated */\n from_layer?: LayerRef\n /** @deprecated */\n to_layer?: LayerRef\n layers: LayerRef[]\n pcb_trace_id?: string\n net_is_assignable?: boolean\n net_assigned?: boolean\n is_tented?: boolean\n}\n\n/**\n * @deprecated use PcbVia\n */\nexport type PCBVia = PcbVia\n\nexpectTypesMatch<PcbVia, InferredPcbVia>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_board = z\n .object({\n type: z.literal(\"pcb_board\"),\n pcb_board_id: getZodPrefixedIdWithDefault(\"pcb_board\"),\n pcb_panel_id: z.string().optional(),\n is_subcircuit: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n width: length.optional(),\n height: length.optional(),\n center: point,\n thickness: length.optional().default(1.4),\n num_layers: z.number().optional().default(4),\n outline: z.array(point).optional(),\n shape: z.enum([\"rect\", \"polygon\"]).optional(),\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n })\n .describe(\"Defines the board outline of the PCB\")\n\n/**\n * Defines the board outline of the PCB\n */\nexport interface PcbBoard {\n type: \"pcb_board\"\n pcb_board_id: string\n pcb_panel_id?: string\n is_subcircuit?: boolean\n subcircuit_id?: string\n width?: Length\n height?: Length\n thickness: Length\n num_layers: number\n center: Point\n outline?: Point[]\n shape?: \"rect\" | \"polygon\"\n material: \"fr4\" | \"fr1\"\n}\n\nexport type PcbBoardInput = z.input<typeof pcb_board>\ntype InferredPcbBoard = z.infer<typeof pcb_board>\n\n/**\n * @deprecated use PcbBoard\n */\nexport type PCBBoard = PcbBoard\n\nexpectTypesMatch<PcbBoard, InferredPcbBoard>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault, point, type Point } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_panel = z\n .object({\n type: z.literal(\"pcb_panel\"),\n pcb_panel_id: getZodPrefixedIdWithDefault(\"pcb_panel\"),\n width: length,\n height: length,\n center: point,\n covered_with_solder_mask: z.boolean().optional().default(true),\n })\n .describe(\"Defines a PCB panel that can contain multiple boards\")\n\n/**\n * Defines a PCB panel that can contain multiple boards\n */\nexport interface PcbPanel {\n type: \"pcb_panel\"\n pcb_panel_id: string\n width: Length\n height: Length\n center: Point\n covered_with_solder_mask: boolean\n}\n\nexport type PcbPanelInput = z.input<typeof pcb_panel>\ntype InferredPcbPanel = z.infer<typeof pcb_panel>\n\n/**\n * @deprecated use PcbPanel\n */\nexport type PCBPanel = PcbPanel\n\nexpectTypesMatch<PcbPanel, InferredPcbPanel>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_placement_error = z\n .object({\n type: z.literal(\"pcb_placement_error\"),\n pcb_placement_error_id: getZodPrefixedIdWithDefault(\"pcb_placement_error\"),\n error_type: z.literal(\"pcb_placement_error\").default(\"pcb_placement_error\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a placement error on the PCB\")\n\nexport type PcbPlacementErrorInput = z.input<typeof pcb_placement_error>\ntype InferredPcbPlacementError = z.infer<typeof pcb_placement_error>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbPlacementError {\n type: \"pcb_placement_error\"\n pcb_placement_error_id: string\n error_type: \"pcb_placement_error\"\n message: string\n subcircuit_id?: string\n}\n\n/**\n * @deprecated use PcbPlacementError\n */\nexport type PCBPlacementError = PcbPlacementError\n\nexpectTypesMatch<PcbPlacementError, InferredPcbPlacementError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { route_hint_point, type RouteHintPoint } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n/**\n * A hint that can be used during generation of a PCB trace.\n */\nexport interface PcbTraceHint {\n type: \"pcb_trace_hint\"\n pcb_trace_hint_id: string\n pcb_port_id: string\n pcb_component_id: string\n route: RouteHintPoint[]\n subcircuit_id?: string\n}\n\nexport const pcb_trace_hint = z\n .object({\n type: z.literal(\"pcb_trace_hint\"),\n pcb_trace_hint_id: getZodPrefixedIdWithDefault(\"pcb_trace_hint\"),\n pcb_port_id: z.string(),\n pcb_component_id: z.string(),\n route: z.array(route_hint_point),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"A hint that can be used during generation of a PCB trace\")\n\nexport type PcbTraceHintInput = z.input<typeof pcb_trace_hint>\ntype InferredPcbTraceHint = z.infer<typeof pcb_trace_hint>\n\n/**\n * @deprecated use PcbTraceHint\n */\nexport type PCBTraceHint = PcbTraceHint\n\nexpectTypesMatch<PcbTraceHint, InferredPcbTraceHint>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport {\n layer_ref,\n type LayerRef,\n type VisibleLayer,\n visible_layer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_line = z\n .object({\n type: z.literal(\"pcb_silkscreen_line\"),\n pcb_silkscreen_line_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_line\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n stroke_width: distance.default(\"0.1mm\"),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen line on the PCB\")\n\nexport type PcbSilkscreenLineInput = z.input<typeof pcb_silkscreen_line>\ntype InferredPcbSilkscreenLine = z.infer<typeof pcb_silkscreen_line>\n\n/**\n * Defines a silkscreen line on the PCB\n */\nexport interface PcbSilkscreenLine {\n type: \"pcb_silkscreen_line\"\n pcb_silkscreen_line_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n stroke_width: Distance\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenLine\n */\nexport type PCBSilkscreenLine = PcbSilkscreenLine\n\nexpectTypesMatch<PcbSilkscreenLine, InferredPcbSilkscreenLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n visible_layer,\n type VisibleLayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_path = z\n .object({\n type: z.literal(\"pcb_silkscreen_path\"),\n pcb_silkscreen_path_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_path\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: visible_layer,\n route: z.array(point),\n stroke_width: length,\n })\n .describe(\"Defines a silkscreen path on the PCB\")\n\nexport type PcbSilkscreenPathInput = z.input<typeof pcb_silkscreen_path>\ntype InferredPcbSilkscreenPath = z.infer<typeof pcb_silkscreen_path>\n\n/**\n * Defines a silkscreen path on the PCB\n */\nexport interface PcbSilkscreenPath {\n type: \"pcb_silkscreen_path\"\n pcb_silkscreen_path_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: VisibleLayerRef\n route: Point[]\n stroke_width: Length\n}\n\n/**\n * @deprecated use PcbSilkscreenPath\n */\nexport type PcbSilkscreenPathDeprecated = PcbSilkscreenPath\n\nexpectTypesMatch<PcbSilkscreenPath, InferredPcbSilkscreenPath>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { distance, length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n ninePointAnchor,\n type NinePointAnchor,\n} from \"src/common/NinePointAnchor\"\n\nexport const pcb_silkscreen_text = z\n .object({\n type: z.literal(\"pcb_silkscreen_text\"),\n pcb_silkscreen_text_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_text\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n is_knockout: z.boolean().default(false).optional(),\n knockout_padding: z\n .object({\n left: length,\n top: length,\n bottom: length,\n right: length,\n })\n .default({\n left: \"0.2mm\",\n top: \"0.2mm\",\n bottom: \"0.2mm\",\n right: \"0.2mm\",\n })\n .optional(),\n ccw_rotation: z.number().optional(),\n layer: layer_ref,\n is_mirrored: z.boolean().default(false).optional(),\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: ninePointAnchor.default(\"center\"),\n })\n .describe(\"Defines silkscreen text on the PCB\")\n\nexport type PcbSilkscreenTextInput = z.input<typeof pcb_silkscreen_text>\ntype InferredPcbSilkscreenText = z.infer<typeof pcb_silkscreen_text>\n\n/**\n * Defines silkscreen text on the PCB\n */\nexport interface PcbSilkscreenText {\n type: \"pcb_silkscreen_text\"\n pcb_silkscreen_text_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n is_knockout?: boolean\n knockout_padding?: {\n left: Length\n top: Length\n bottom: Length\n right: Length\n }\n ccw_rotation?: number\n layer: LayerRef\n is_mirrored?: boolean\n anchor_position: Point\n anchor_alignment: NinePointAnchor\n}\n\n/**\n * @deprecated use PcbSilkscreenText\n */\nexport type PCBSilkscreenText = PcbSilkscreenText\n\nexpectTypesMatch<PcbSilkscreenText, InferredPcbSilkscreenText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { distance, length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport {\n ninePointAnchor,\n type NinePointAnchor,\n} from \"src/common/NinePointAnchor\"\n\nexport const pcb_copper_text = z\n .object({\n type: z.literal(\"pcb_copper_text\"),\n pcb_copper_text_id: getZodPrefixedIdWithDefault(\"pcb_copper_text\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"0.2mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n is_knockout: z.boolean().default(false).optional(),\n knockout_padding: z\n .object({\n left: length,\n top: length,\n bottom: length,\n right: length,\n })\n .default({\n left: \"0.2mm\",\n top: \"0.2mm\",\n bottom: \"0.2mm\",\n right: \"0.2mm\",\n })\n .optional(),\n ccw_rotation: z.number().optional(),\n layer: layer_ref,\n is_mirrored: z.boolean().default(false).optional(),\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: ninePointAnchor.default(\"center\"),\n })\n .describe(\"Defines copper text on the PCB\")\n\nexport type PcbCopperTextInput = z.input<typeof pcb_copper_text>\ntype InferredPcbCopperText = z.infer<typeof pcb_copper_text>\n\n/**\n * Defines copper text on the PCB\n */\nexport interface PcbCopperText {\n type: \"pcb_copper_text\"\n pcb_copper_text_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n is_knockout?: boolean\n knockout_padding?: {\n left: Length\n top: Length\n bottom: Length\n right: Length\n }\n ccw_rotation?: number\n layer: LayerRef\n is_mirrored?: boolean\n anchor_position: Point\n anchor_alignment: NinePointAnchor\n}\n\n/**\n * @deprecated use PcbCopperText\n */\nexport type PCBCopperText = PcbCopperText\n\nexpectTypesMatch<PcbCopperText, InferredPcbCopperText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_rect = z\n .object({\n type: z.literal(\"pcb_silkscreen_rect\"),\n pcb_silkscreen_rect_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_rect\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n width: length,\n height: length,\n layer: layer_ref,\n stroke_width: length.default(\"1mm\"),\n corner_radius: length.optional(),\n is_filled: z.boolean().default(true).optional(),\n has_stroke: z.boolean().optional(),\n is_stroke_dashed: z.boolean().optional(),\n })\n .describe(\"Defines a silkscreen rect on the PCB\")\n\nexport type PcbSilkscreenRectInput = z.input<typeof pcb_silkscreen_rect>\ntype InferredPcbSilkscreenRect = z.infer<typeof pcb_silkscreen_rect>\n\n/**\n * Defines a silkscreen rect on the PCB\n */\nexport interface PcbSilkscreenRect {\n type: \"pcb_silkscreen_rect\"\n pcb_silkscreen_rect_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n width: Length\n height: Length\n layer: LayerRef\n stroke_width: Length\n corner_radius?: Length\n is_filled?: boolean\n has_stroke?: boolean\n is_stroke_dashed?: boolean\n}\n\n/**\n * @deprecated use PcbSilkscreenRect\n */\nexport type PcbSilkscreenRectOld = PcbSilkscreenRect\n\nexpectTypesMatch<PcbSilkscreenRect, InferredPcbSilkscreenRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_circle = z\n .object({\n type: z.literal(\"pcb_silkscreen_circle\"),\n pcb_silkscreen_circle_id: getZodPrefixedIdWithDefault(\n \"pcb_silkscreen_circle\",\n ),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n radius: length,\n layer: visible_layer,\n stroke_width: length.default(\"1mm\"),\n })\n .describe(\"Defines a silkscreen circle on the PCB\")\n\nexport type PcbSilkscreenCircleInput = z.input<typeof pcb_silkscreen_circle>\ntype InferredPcbSilkscreenCircle = z.infer<typeof pcb_silkscreen_circle>\n\n/**\n * Defines a silkscreen circle on the PCB\n */\nexport interface PcbSilkscreenCircle {\n type: \"pcb_silkscreen_circle\"\n pcb_silkscreen_circle_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n radius: Length\n layer: VisibleLayer\n stroke_width: Length\n}\n\nexpectTypesMatch<PcbSilkscreenCircle, InferredPcbSilkscreenCircle>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n type LayerRef,\n visible_layer,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_silkscreen_oval = z\n .object({\n type: z.literal(\"pcb_silkscreen_oval\"),\n pcb_silkscreen_oval_id: getZodPrefixedIdWithDefault(\"pcb_silkscreen_oval\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n radius_x: distance,\n radius_y: distance,\n layer: visible_layer,\n })\n .describe(\"Defines a silkscreen oval on the PCB\")\n\nexport type PcbSilkscreenOvalInput = z.input<typeof pcb_silkscreen_oval>\ntype InferredPcbSilkscreenOval = z.infer<typeof pcb_silkscreen_oval>\n\n/**\n * Defines a silkscreen oval on the PCB\n */\nexport interface PcbSilkscreenOval {\n type: \"pcb_silkscreen_oval\"\n pcb_silkscreen_oval_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n radius_x: Distance\n radius_y: Distance\n layer: VisibleLayer\n}\n\n/**\n * @deprecated use PcbSilkscreenOval\n */\nexport type PcbSilkscreenOvalDeprecated = PcbSilkscreenOval\n\nexpectTypesMatch<PcbSilkscreenOval, InferredPcbSilkscreenOval>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport {\n visible_layer,\n type LayerRef,\n type VisibleLayer,\n} from \"src/pcb/properties/layer_ref\"\nimport { getZodPrefixedIdWithDefault } from \"src/common/getZodPrefixedIdWithDefault\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_text = z\n .object({\n type: z.literal(\"pcb_fabrication_note_text\"),\n pcb_fabrication_note_text_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_text\",\n ),\n subcircuit_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n pcb_component_id: z.string(),\n text: z.string(),\n layer: visible_layer,\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\",\n )\n\nexport type PcbFabricationNoteTextInput = z.input<\n typeof pcb_fabrication_note_text\n>\ntype InferredPcbFabricationNoteText = z.infer<typeof pcb_fabrication_note_text>\n\n/**\n * Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators\n */\nexport interface PcbFabricationNoteText {\n type: \"pcb_fabrication_note_text\"\n pcb_fabrication_note_text_id: string\n subcircuit_id?: string\n pcb_group_id?: string\n font: \"tscircuit2024\"\n font_size: Length\n pcb_component_id: string\n text: string\n layer: VisibleLayer\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNoteText\n */\nexport type PCBFabricationNoteText = PcbFabricationNoteText\n\nexpectTypesMatch<PcbFabricationNoteText, InferredPcbFabricationNoteText>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport {\n layer_ref,\n visible_layer,\n type LayerRef,\n} from \"src/pcb/properties/layer_ref\"\nimport { point, type Point } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_path = z\n .object({\n type: z.literal(\"pcb_fabrication_note_path\"),\n pcb_fabrication_note_path_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_path\",\n ),\n pcb_component_id: z.string(),\n subcircuit_id: z.string().optional(),\n layer: layer_ref,\n route: z.array(point),\n stroke_width: length,\n color: z.string().optional(),\n })\n .describe(\n \"Defines a fabrication path on the PCB for fabricators or assemblers\",\n )\n\nexport type PcbFabricationNotePathInput = z.input<\n typeof pcb_fabrication_note_path\n>\ntype InferredPcbFabricationNotePath = z.infer<typeof pcb_fabrication_note_path>\n\n/**\n * Defines a fabrication path on the PCB for fabricators or assemblers\n */\nexport interface PcbFabricationNotePath {\n type: \"pcb_fabrication_note_path\"\n pcb_fabrication_note_path_id: string\n pcb_component_id: string\n subcircuit_id?: string\n layer: LayerRef\n route: Point[]\n stroke_width: Length\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNotePath\n */\nexport type PCBFabricationNotePath = PcbFabricationNotePath\n\nexpectTypesMatch<PcbFabricationNotePath, InferredPcbFabricationNotePath>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { visible_layer, type VisibleLayer } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_rect = z\n .object({\n type: z.literal(\"pcb_fabrication_note_rect\"),\n pcb_fabrication_note_rect_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_rect\",\n ),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n width: length,\n height: length,\n layer: visible_layer,\n stroke_width: length.default(\"0.1mm\"),\n corner_radius: length.optional(),\n is_filled: z.boolean().optional(),\n has_stroke: z.boolean().optional(),\n is_stroke_dashed: z.boolean().optional(),\n color: z.string().optional(),\n })\n .describe(\"Defines a fabrication note rectangle on the PCB\")\n\nexport type PcbFabricationNoteRectInput = z.input<\n typeof pcb_fabrication_note_rect\n>\ntype InferredPcbFabricationNoteRect = z.infer<typeof pcb_fabrication_note_rect>\n\n/**\n * Defines a fabrication note rectangle on the PCB\n */\nexport interface PcbFabricationNoteRect {\n type: \"pcb_fabrication_note_rect\"\n pcb_fabrication_note_rect_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n width: Length\n height: Length\n layer: VisibleLayer\n stroke_width: Length\n corner_radius?: Length\n is_filled?: boolean\n has_stroke?: boolean\n is_stroke_dashed?: boolean\n color?: string\n}\n\n/**\n * @deprecated use PcbFabricationNoteRect\n */\nexport type PCBFabricationNoteRect = PcbFabricationNoteRect\n\nexpectTypesMatch<PcbFabricationNoteRect, InferredPcbFabricationNoteRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { visible_layer, type VisibleLayer } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_fabrication_note_dimension = z\n .object({\n type: z.literal(\"pcb_fabrication_note_dimension\"),\n pcb_fabrication_note_dimension_id: getZodPrefixedIdWithDefault(\n \"pcb_fabrication_note_dimension\",\n ),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: visible_layer,\n from: point,\n to: point,\n text: z.string().optional(),\n text_ccw_rotation: z.number().optional(),\n offset: length.optional(),\n offset_distance: length.optional(),\n offset_direction: z\n .object({\n x: z.number(),\n y: z.number(),\n })\n .optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: length.default(\"1mm\"),\n color: z.string().optional(),\n arrow_size: length.default(\"1mm\"),\n })\n .describe(\"Defines a measurement annotation within PCB fabrication notes\")\n\nexport type PcbFabricationNoteDimensionInput = z.input<\n typeof pcb_fabrication_note_dimension\n>\ntype InferredPcbFabricationNoteDimension = z.infer<\n typeof pcb_fabrication_note_dimension\n>\n\n/**\n * Defines a measurement annotation within PCB fabrication notes\n */\nexport interface PcbFabricationNoteDimension {\n type: \"pcb_fabrication_note_dimension\"\n pcb_fabrication_note_dimension_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: VisibleLayer\n from: Point\n to: Point\n text?: string\n text_ccw_rotation?: number\n offset?: Length\n offset_distance?: Length\n offset_direction?: {\n x: number\n y: number\n }\n font: \"tscircuit2024\"\n font_size: Length\n color?: string\n arrow_size: Length\n}\n\n/**\n * @deprecated use PcbFabricationNoteDimension\n */\nexport type PCBFabricationNoteDimension = PcbFabricationNoteDimension\n\nexpectTypesMatch<\n PcbFabricationNoteDimension,\n InferredPcbFabricationNoteDimension\n>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_note_text = z\n .object({\n type: z.literal(\"pcb_note_text\"),\n pcb_note_text_id: getZodPrefixedIdWithDefault(\"pcb_note_text\"),\n pcb_component_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n name: z.string().optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: distance.default(\"1mm\"),\n text: z.string().optional(),\n anchor_position: point.default({ x: 0, y: 0 }),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n color: z.string().optional(),\n })\n .describe(\"Defines a documentation note in text on the PCB\")\n\nexport type PcbNoteTextInput = z.input<typeof pcb_note_text>\ntype InferredPcbNoteText = z.infer<typeof pcb_note_text>\n\n/**\n * Defines a documentation note in text on the PCB\n */\nexport interface PcbNoteText {\n type: \"pcb_note_text\"\n pcb_note_text_id: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n name?: string\n font: \"tscircuit2024\"\n font_size: Length\n text?: string\n anchor_position: Point\n anchor_alignment:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n color?: string\n}\n\nexpectTypesMatch<PcbNoteText, InferredPcbNoteText>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_note_rect = z\n .object({\n type: z.literal(\"pcb_note_rect\"),\n pcb_note_rect_id: getZodPrefixedIdWithDefault(\"pcb_note_rect\"),\n pcb_component_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n name: z.string().optional(),\n text: z.string().optional(),\n center: point,\n width: length,\n height: length,\n stroke_width: length.default(\"0.1mm\"),\n corner_radius: length.optional(),\n is_filled: z.boolean().optional(),\n has_stroke: z.boolean().optional(),\n is_stroke_dashed: z.boolean().optional(),\n color: z.string().optional(),\n })\n .describe(\"Defines a rectangular documentation note on the PCB\")\n\nexport type PcbNoteRectInput = z.input<typeof pcb_note_rect>\ntype InferredPcbNoteRect = z.infer<typeof pcb_note_rect>\n\n/**\n * Defines a rectangular documentation note on the PCB\n */\nexport interface PcbNoteRect {\n type: \"pcb_note_rect\"\n pcb_note_rect_id: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n name?: string\n text?: string\n center: Point\n width: Length\n height: Length\n stroke_width: Length\n corner_radius?: Length\n is_filled?: boolean\n has_stroke?: boolean\n is_stroke_dashed?: boolean\n color?: string\n}\n\nexpectTypesMatch<PcbNoteRect, InferredPcbNoteRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_note_path = z\n .object({\n type: z.literal(\"pcb_note_path\"),\n pcb_note_path_id: getZodPrefixedIdWithDefault(\"pcb_note_path\"),\n pcb_component_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n name: z.string().optional(),\n text: z.string().optional(),\n route: z.array(point),\n stroke_width: length.default(\"0.1mm\"),\n color: z.string().optional(),\n })\n .describe(\"Defines a polyline documentation note on the PCB\")\n\nexport type PcbNotePathInput = z.input<typeof pcb_note_path>\ntype InferredPcbNotePath = z.infer<typeof pcb_note_path>\n\n/**\n * Defines a polyline documentation note on the PCB\n */\nexport interface PcbNotePath {\n type: \"pcb_note_path\"\n pcb_note_path_id: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n name?: string\n text?: string\n route: Point[]\n stroke_width: Length\n color?: string\n}\n\nexpectTypesMatch<PcbNotePath, InferredPcbNotePath>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_note_line = z\n .object({\n type: z.literal(\"pcb_note_line\"),\n pcb_note_line_id: getZodPrefixedIdWithDefault(\"pcb_note_line\"),\n pcb_component_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n name: z.string().optional(),\n text: z.string().optional(),\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n stroke_width: distance.default(\"0.1mm\"),\n color: z.string().optional(),\n is_dashed: z.boolean().optional(),\n })\n .describe(\"Defines a straight documentation note line on the PCB\")\n\nexport type PcbNoteLineInput = z.input<typeof pcb_note_line>\ntype InferredPcbNoteLine = z.infer<typeof pcb_note_line>\n\n/**\n * Defines a straight documentation note line on the PCB\n */\nexport interface PcbNoteLine {\n type: \"pcb_note_line\"\n pcb_note_line_id: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n name?: string\n text?: string\n x1: Distance\n y1: Distance\n x2: Distance\n y2: Distance\n stroke_width: Distance\n color?: string\n is_dashed?: boolean\n}\n\nexpectTypesMatch<PcbNoteLine, InferredPcbNoteLine>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_note_dimension = z\n .object({\n type: z.literal(\"pcb_note_dimension\"),\n pcb_note_dimension_id: getZodPrefixedIdWithDefault(\"pcb_note_dimension\"),\n pcb_component_id: z.string().optional(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n name: z.string().optional(),\n from: point,\n to: point,\n text: z.string().optional(),\n text_ccw_rotation: z.number().optional(),\n offset_distance: length.optional(),\n offset_direction: z\n .object({\n x: z.number(),\n y: z.number(),\n })\n .optional(),\n font: z.literal(\"tscircuit2024\").default(\"tscircuit2024\"),\n font_size: length.default(\"1mm\"),\n color: z.string().optional(),\n arrow_size: length.default(\"1mm\"),\n })\n .describe(\"Defines a measurement annotation within PCB documentation notes\")\n\nexport type PcbNoteDimensionInput = z.input<typeof pcb_note_dimension>\ntype InferredPcbNoteDimension = z.infer<typeof pcb_note_dimension>\n\n/**\n * Defines a measurement annotation within PCB documentation notes\n */\nexport interface PcbNoteDimension {\n type: \"pcb_note_dimension\"\n pcb_note_dimension_id: string\n pcb_component_id?: string\n pcb_group_id?: string\n subcircuit_id?: string\n name?: string\n from: Point\n to: Point\n text?: string\n text_ccw_rotation?: number\n offset_distance?: Length\n offset_direction?: {\n x: number\n y: number\n }\n font: \"tscircuit2024\"\n font_size: Length\n color?: string\n arrow_size: Length\n}\n\nexpectTypesMatch<PcbNoteDimension, InferredPcbNoteDimension>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_footprint_overlap_error = z\n .object({\n type: z.literal(\"pcb_footprint_overlap_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n error_type: z\n .literal(\"pcb_footprint_overlap_error\")\n .default(\"pcb_footprint_overlap_error\"),\n message: z.string(),\n pcb_smtpad_ids: z.array(z.string()).optional(),\n pcb_plated_hole_ids: z.array(z.string()).optional(),\n pcb_hole_ids: z.array(z.string()).optional(),\n pcb_keepout_ids: z.array(z.string()).optional(),\n })\n .describe(\"Error emitted when a pcb footprint overlaps with another element\")\n\nexport type PcbFootprintOverlapErrorInput = z.input<\n typeof pcb_footprint_overlap_error\n>\ntype InferredPcbFootprintOverlapError = z.infer<\n typeof pcb_footprint_overlap_error\n>\n\n/** Error emitted when a pcb footprint overlaps with another element */\nexport interface PcbFootprintOverlapError {\n type: \"pcb_footprint_overlap_error\"\n pcb_error_id: string\n error_type: \"pcb_footprint_overlap_error\"\n message: string\n pcb_smtpad_ids?: string[]\n pcb_plated_hole_ids?: string[]\n pcb_hole_ids?: string[]\n pcb_keepout_ids?: string[]\n}\n\nexpectTypesMatch<PcbFootprintOverlapError, InferredPcbFootprintOverlapError>(\n true,\n)\n","import { z } from \"zod\"\nimport { point, type Point } from \"../common\"\nimport { distance } from \"../units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_keepout = z\n .object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"rect\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n width: distance,\n height: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n })\n .or(\n z.object({\n type: z.literal(\"pcb_keepout\"),\n shape: z.literal(\"circle\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n radius: distance,\n pcb_keepout_id: z.string(),\n layers: z.array(z.string()), // Specify layers where the keepout applies\n description: z.string().optional(), // Optional description of the keepout\n }),\n )\n\nexport type PCBKeepoutInput = z.input<typeof pcb_keepout>\ntype InferredPCBKeepout = z.infer<typeof pcb_keepout>\n\nexport interface PCBKeepoutRect {\n type: \"pcb_keepout\"\n shape: \"rect\"\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n width: number\n height: number\n pcb_keepout_id: string\n layers: string[]\n description?: string\n}\n\nexport interface PCBKeepoutCircle {\n type: \"pcb_keepout\"\n shape: \"circle\"\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n radius: number\n pcb_keepout_id: string\n layers: string[]\n description?: string\n}\n\nexport type PCBKeepout = PCBKeepoutRect | PCBKeepoutCircle\n\nexpectTypesMatch<PCBKeepout, InferredPCBKeepout>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length, rotation, type Rotation } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\n// Common properties base for all cutout shapes (internal)\nconst pcb_cutout_base = z.object({\n type: z.literal(\"pcb_cutout\"),\n pcb_cutout_id: getZodPrefixedIdWithDefault(\"pcb_cutout\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n pcb_board_id: z.string().optional(),\n pcb_panel_id: z.string().optional(),\n})\n\n// Rectangular Cutout\nexport const pcb_cutout_rect = pcb_cutout_base.extend({\n shape: z.literal(\"rect\"),\n center: point,\n width: length,\n height: length,\n rotation: rotation.optional(),\n corner_radius: length.optional(),\n})\nexport type PcbCutoutRectInput = z.input<typeof pcb_cutout_rect>\ntype InferredPcbCutoutRect = z.infer<typeof pcb_cutout_rect>\n/**\n * Defines a rectangular cutout on the PCB.\n */\nexport interface PcbCutoutRect {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n pcb_board_id?: string\n pcb_panel_id?: string\n shape: \"rect\"\n center: Point\n width: Length\n height: Length\n rotation?: Rotation\n corner_radius?: Length\n}\nexpectTypesMatch<PcbCutoutRect, InferredPcbCutoutRect>(true)\n\n// Circular Cutout\nexport const pcb_cutout_circle = pcb_cutout_base.extend({\n shape: z.literal(\"circle\"),\n center: point,\n radius: length,\n})\nexport type PcbCutoutCircleInput = z.input<typeof pcb_cutout_circle>\ntype InferredPcbCutoutCircle = z.infer<typeof pcb_cutout_circle>\n/**\n * Defines a circular cutout on the PCB.\n */\nexport interface PcbCutoutCircle {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n pcb_board_id?: string\n pcb_panel_id?: string\n shape: \"circle\"\n center: Point\n radius: Length\n}\nexpectTypesMatch<PcbCutoutCircle, InferredPcbCutoutCircle>(true)\n\n// Polygon Cutout\nexport const pcb_cutout_polygon = pcb_cutout_base.extend({\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n})\nexport type PcbCutoutPolygonInput = z.input<typeof pcb_cutout_polygon>\ntype InferredPcbCutoutPolygon = z.infer<typeof pcb_cutout_polygon>\n/**\n * Defines a polygonal cutout on the PCB, specified by a list of points.\n * The polygon should be closed (the last point implicitly connects to the first).\n */\nexport interface PcbCutoutPolygon {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n pcb_board_id?: string\n pcb_panel_id?: string\n shape: \"polygon\"\n points: Point[]\n}\nexpectTypesMatch<PcbCutoutPolygon, InferredPcbCutoutPolygon>(true)\n\n// Path Cutout (for slots along a path)\nexport const pcb_cutout_path = pcb_cutout_base.extend({\n shape: z.literal(\"path\"),\n route: z.array(point),\n slot_width: length,\n slot_length: length.optional(),\n space_between_slots: length.optional(),\n slot_corner_radius: length.optional(),\n})\nexport type PcbCutoutPathInput = z.input<typeof pcb_cutout_path>\ntype InferredPcbCutoutPath = z.infer<typeof pcb_cutout_path>\n/**\n * Defines a path-based cutout on the PCB, creating slots along the specified path.\n * When slot_length and space_between_slots are specified, creates a dashed pattern of slots.\n * When they are omitted, creates a continuous slot along the entire path.\n * The slot_corner_radius controls the rounding of slot corners (0 = square, slot_width/2 = circle).\n */\nexport interface PcbCutoutPath {\n type: \"pcb_cutout\"\n pcb_cutout_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n pcb_board_id?: string\n pcb_panel_id?: string\n shape: \"path\"\n route: Point[]\n slot_width: Length\n slot_length?: Length\n space_between_slots?: Length\n slot_corner_radius?: Length\n}\nexpectTypesMatch<PcbCutoutPath, InferredPcbCutoutPath>(true)\n\n// Union of all cutout shapes\nexport const pcb_cutout = z\n .discriminatedUnion(\"shape\", [\n pcb_cutout_rect,\n pcb_cutout_circle,\n pcb_cutout_polygon,\n pcb_cutout_path,\n ])\n .describe(\"Defines a cutout on the PCB, removing board material.\")\n\nexport type PcbCutoutInput = z.input<typeof pcb_cutout>\nexport type PcbCutout =\n | PcbCutoutRect\n | PcbCutoutCircle\n | PcbCutoutPolygon\n | PcbCutoutPath\n\ntype InferredPcbCutout = z.infer<typeof pcb_cutout>\nexpectTypesMatch<PcbCutout, InferredPcbCutout>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_missing_footprint_error = z\n .object({\n type: z.literal(\"pcb_missing_footprint_error\"),\n pcb_missing_footprint_error_id: getZodPrefixedIdWithDefault(\n \"pcb_missing_footprint_error\",\n ),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n error_type: z\n .literal(\"pcb_missing_footprint_error\")\n .default(\"pcb_missing_footprint_error\"),\n source_component_id: z.string(),\n message: z.string(),\n })\n .describe(\"Defines a missing footprint error on the PCB\")\n\nexport type PcbMissingFootprintErrorInput = z.input<\n typeof pcb_missing_footprint_error\n>\ntype InferredPcbMissingFootprintError = z.infer<\n typeof pcb_missing_footprint_error\n>\n\n/**\n * Defines a placement error on the PCB\n */\nexport interface PcbMissingFootprintError {\n type: \"pcb_missing_footprint_error\"\n pcb_missing_footprint_error_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n error_type: \"pcb_missing_footprint_error\"\n source_component_id: string\n message: string\n}\n\n/**\n * @deprecated use PcbMissingFootprintError\n */\nexport type PCBMissingFootprintError = PcbMissingFootprintError\n\nexpectTypesMatch<PcbMissingFootprintError, InferredPcbMissingFootprintError>(\n true,\n)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const external_footprint_load_error = z\n .object({\n type: z.literal(\"external_footprint_load_error\"),\n external_footprint_load_error_id: getZodPrefixedIdWithDefault(\n \"external_footprint_load_error\",\n ),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n footprinter_string: z.string().optional(),\n error_type: z\n .literal(\"external_footprint_load_error\")\n .default(\"external_footprint_load_error\"),\n message: z.string(),\n })\n .describe(\"Defines an error when an external footprint fails to load\")\n\nexport type ExternalFootprintLoadErrorInput = z.input<\n typeof external_footprint_load_error\n>\ntype InferredExternalFootprintLoadError = z.infer<\n typeof external_footprint_load_error\n>\n\nexport interface ExternalFootprintLoadError {\n type: \"external_footprint_load_error\"\n external_footprint_load_error_id: string\n pcb_component_id: string\n source_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n footprinter_string?: string\n error_type: \"external_footprint_load_error\"\n message: string\n}\n\nexpectTypesMatch<\n ExternalFootprintLoadError,\n InferredExternalFootprintLoadError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const circuit_json_footprint_load_error = z\n .object({\n type: z.literal(\"circuit_json_footprint_load_error\"),\n circuit_json_footprint_load_error_id: getZodPrefixedIdWithDefault(\n \"circuit_json_footprint_load_error\",\n ),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n error_type: z\n .literal(\"circuit_json_footprint_load_error\")\n .default(\"circuit_json_footprint_load_error\"),\n message: z.string(),\n circuit_json: z.array(z.any()).optional(),\n })\n .describe(\"Defines an error when a circuit JSON footprint fails to load\")\n\nexport type CircuitJsonFootprintLoadErrorInput = z.input<\n typeof circuit_json_footprint_load_error\n>\ntype InferredCircuitJsonFootprintLoadError = z.infer<\n typeof circuit_json_footprint_load_error\n>\n\nexport interface CircuitJsonFootprintLoadError {\n type: \"circuit_json_footprint_load_error\"\n circuit_json_footprint_load_error_id: string\n pcb_component_id: string\n source_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n error_type: \"circuit_json_footprint_load_error\"\n message: string\n circuit_json?: any[]\n}\n\nexpectTypesMatch<\n CircuitJsonFootprintLoadError,\n InferredCircuitJsonFootprintLoadError\n>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_group = z\n .object({\n type: z.literal(\"pcb_group\"),\n pcb_group_id: getZodPrefixedIdWithDefault(\"pcb_group\"),\n source_group_id: z.string(),\n is_subcircuit: z.boolean().optional(),\n subcircuit_id: z.string().optional(),\n width: length.optional(),\n height: length.optional(),\n center: point,\n outline: z.array(point).optional(),\n anchor_position: point.optional(),\n anchor_alignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .optional(),\n pcb_component_ids: z.array(z.string()),\n child_layout_mode: z.enum([\"packed\", \"none\"]).optional(),\n name: z.string().optional(),\n description: z.string().optional(),\n layout_mode: z.string().optional(),\n autorouter_configuration: z\n .object({\n trace_clearance: length,\n })\n .optional(),\n autorouter_used_string: z.string().optional(),\n })\n .describe(\"Defines a group of components on the PCB\")\n\nexport type PcbGroupInput = z.input<typeof pcb_group>\ntype InferredPcbGroup = z.infer<typeof pcb_group>\n\n/**\n * Defines a group of components on the PCB\n */\nexport interface PcbGroup {\n type: \"pcb_group\"\n pcb_group_id: string\n source_group_id: string\n is_subcircuit?: boolean\n subcircuit_id?: string\n width?: Length\n height?: Length\n center: Point\n outline?: Point[]\n anchor_position?: Point\n anchor_alignment?:\n | \"center\"\n | \"top_left\"\n | \"top_right\"\n | \"bottom_left\"\n | \"bottom_right\"\n pcb_component_ids: string[]\n child_layout_mode?: \"packed\" | \"none\"\n name?: string\n description?: string\n layout_mode?: string\n autorouter_configuration?: {\n trace_clearance: Length\n }\n autorouter_used_string?: string\n}\n\nexpectTypesMatch<PcbGroup, InferredPcbGroup>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_autorouting_error = z\n .object({\n type: z.literal(\"pcb_autorouting_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_autorouting_error\"),\n error_type: z\n .literal(\"pcb_autorouting_error\")\n .default(\"pcb_autorouting_error\"),\n message: z.string(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"The autorouting has failed to route a portion of the board\")\n\nexport type PcbAutoroutingErrorInput = z.input<typeof pcb_autorouting_error>\ntype PcbInferredAutoroutingError = z.infer<typeof pcb_autorouting_error>\n\nexport interface PcbAutoroutingErrorInterface {\n type: \"pcb_autorouting_error\"\n pcb_error_id: string\n error_type: \"pcb_autorouting_error\"\n message: string\n subcircuit_id?: string\n}\n\nexport type PcbAutoroutingError = PcbAutoroutingErrorInterface\n\nexpectTypesMatch<PcbAutoroutingError, PcbInferredAutoroutingError>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"../common\"\nimport { expectTypesMatch } from \"../utils/expect-types-match\"\n\nexport const pcb_manual_edit_conflict_warning = z\n .object({\n type: z.literal(\"pcb_manual_edit_conflict_warning\"),\n pcb_manual_edit_conflict_warning_id: getZodPrefixedIdWithDefault(\n \"pcb_manual_edit_conflict_warning\",\n ),\n warning_type: z\n .literal(\"pcb_manual_edit_conflict_warning\")\n .default(\"pcb_manual_edit_conflict_warning\"),\n message: z.string(),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n source_component_id: z.string(),\n })\n .describe(\n \"Warning emitted when a component has both manual placement and explicit pcbX/pcbY coordinates\",\n )\n\nexport type PcbManualEditConflictWarningInput = z.input<\n typeof pcb_manual_edit_conflict_warning\n>\ntype InferredPcbManualEditConflictWarning = z.infer<\n typeof pcb_manual_edit_conflict_warning\n>\n\n/**\n * Warning emitted when a component has both manual placement (via manualEdits) and explicit pcbX/pcbY coordinates\n */\nexport interface PcbManualEditConflictWarning {\n type: \"pcb_manual_edit_conflict_warning\"\n pcb_manual_edit_conflict_warning_id: string\n warning_type: \"pcb_manual_edit_conflict_warning\"\n message: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n source_component_id: string\n}\n\nexpectTypesMatch<\n PcbManualEditConflictWarning,\n InferredPcbManualEditConflictWarning\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_breakout_point = z\n .object({\n type: z.literal(\"pcb_breakout_point\"),\n pcb_breakout_point_id: getZodPrefixedIdWithDefault(\"pcb_breakout_point\"),\n pcb_group_id: z.string(),\n subcircuit_id: z.string().optional(),\n source_trace_id: z.string().optional(),\n source_port_id: z.string().optional(),\n source_net_id: z.string().optional(),\n x: distance,\n y: distance,\n })\n .describe(\n \"Defines a routing target within a pcb_group for a source_trace or source_net\",\n )\n\nexport type PcbBreakoutPointInput = z.input<typeof pcb_breakout_point>\ntype InferredPcbBreakoutPoint = z.infer<typeof pcb_breakout_point>\n\n/**\n * Defines a routing target within a pcb_group for a source_trace or source_net\n */\nexport interface PcbBreakoutPoint {\n type: \"pcb_breakout_point\"\n pcb_breakout_point_id: string\n pcb_group_id: string\n subcircuit_id?: string\n source_trace_id?: string\n source_port_id?: string\n source_net_id?: string\n x: Distance\n y: Distance\n}\n\nexpectTypesMatch<PcbBreakoutPoint, InferredPcbBreakoutPoint>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_ground_plane = z\n .object({\n type: z.literal(\"pcb_ground_plane\"),\n pcb_ground_plane_id: getZodPrefixedIdWithDefault(\"pcb_ground_plane\"),\n source_pcb_ground_plane_id: z.string(),\n source_net_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Defines a ground plane on the PCB\")\n\nexport type PcbGroundPlaneInput = z.input<typeof pcb_ground_plane>\ntype InferredPcbGroundPlane = z.infer<typeof pcb_ground_plane>\n\n/**\n * Defines a ground plane on the PCB\n */\nexport interface PcbGroundPlane {\n type: \"pcb_ground_plane\"\n pcb_ground_plane_id: string\n source_pcb_ground_plane_id: string\n source_net_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<PcbGroundPlane, InferredPcbGroundPlane>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_ground_plane_region = z\n .object({\n type: z.literal(\"pcb_ground_plane_region\"),\n pcb_ground_plane_region_id: getZodPrefixedIdWithDefault(\n \"pcb_ground_plane_region\",\n ),\n pcb_ground_plane_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: layer_ref,\n points: z.array(point),\n })\n .describe(\"Defines a polygon region of a ground plane\")\n\nexport type PcbGroundPlaneRegionInput = z.input<typeof pcb_ground_plane_region>\ntype InferredPcbGroundPlaneRegion = z.infer<typeof pcb_ground_plane_region>\n\n/**\n * Defines a polygon region of a ground plane\n */\nexport interface PcbGroundPlaneRegion {\n type: \"pcb_ground_plane_region\"\n pcb_ground_plane_region_id: string\n pcb_ground_plane_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: LayerRef\n points: Point[]\n}\n\nexpectTypesMatch<PcbGroundPlaneRegion, InferredPcbGroundPlaneRegion>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"src/units\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_thermal_spoke = z\n .object({\n type: z.literal(\"pcb_thermal_spoke\"),\n pcb_thermal_spoke_id: getZodPrefixedIdWithDefault(\"pcb_thermal_spoke\"),\n pcb_ground_plane_id: z.string(),\n shape: z.string(),\n spoke_count: z.number(),\n spoke_thickness: distance,\n spoke_inner_diameter: distance,\n spoke_outer_diameter: distance,\n pcb_plated_hole_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Pattern for connecting a ground plane to a plated hole\")\n\nexport type PcbThermalSpokeInput = z.input<typeof pcb_thermal_spoke>\ntype InferredPcbThermalSpoke = z.infer<typeof pcb_thermal_spoke>\n\n/**\n * Pattern for connecting a ground plane to a plated hole\n */\nexport interface PcbThermalSpoke {\n type: \"pcb_thermal_spoke\"\n pcb_thermal_spoke_id: string\n pcb_ground_plane_id: string\n shape: string\n spoke_count: number\n spoke_thickness: Distance\n spoke_inner_diameter: Distance\n spoke_outer_diameter: Distance\n pcb_plated_hole_id?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<PcbThermalSpoke, InferredPcbThermalSpoke>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { length, type Length, rotation, type Rotation } from \"src/units\"\nimport { layer_ref, type LayerRef } from \"./properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\nimport { brep_shape, type BRepShape } from \"./properties/brep\"\n\n// Common properties base for all pour shapes (internal)\nconst pcb_copper_pour_base = z.object({\n type: z.literal(\"pcb_copper_pour\"),\n pcb_copper_pour_id: getZodPrefixedIdWithDefault(\"pcb_copper_pour\"),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: layer_ref,\n source_net_id: z.string().optional(),\n covered_with_solder_mask: z.boolean().optional().default(true),\n})\n\n// Rectangular Pour\nexport const pcb_copper_pour_rect = pcb_copper_pour_base.extend({\n shape: z.literal(\"rect\"),\n center: point,\n width: length,\n height: length,\n rotation: rotation.optional(),\n})\nexport type PcbCopperPourRectInput = z.input<typeof pcb_copper_pour_rect>\ntype InferredPcbCopperPourRect = z.infer<typeof pcb_copper_pour_rect>\n/**\n * Defines a rectangular copper pour on the PCB.\n */\nexport interface PcbCopperPourRect {\n type: \"pcb_copper_pour\"\n pcb_copper_pour_id: string\n covered_with_solder_mask: boolean\n pcb_group_id?: string\n subcircuit_id?: string\n layer: LayerRef\n source_net_id?: string\n shape: \"rect\"\n center: Point\n width: Length\n height: Length\n rotation?: Rotation\n}\nexpectTypesMatch<PcbCopperPourRect, InferredPcbCopperPourRect>(true)\n\n// BRep Pour\nexport const pcb_copper_pour_brep = pcb_copper_pour_base.extend({\n shape: z.literal(\"brep\"),\n brep_shape: brep_shape,\n})\nexport type PcbCopperPourBRepInput = z.input<typeof pcb_copper_pour_brep>\ntype InferredPcbCopperPourBRep = z.infer<typeof pcb_copper_pour_brep>\n/**\n * Defines a BRep copper pour on the PCB.\n */\nexport interface PcbCopperPourBRep {\n type: \"pcb_copper_pour\"\n pcb_copper_pour_id: string\n covered_with_solder_mask: boolean\n pcb_group_id?: string\n subcircuit_id?: string\n layer: LayerRef\n source_net_id?: string\n shape: \"brep\"\n brep_shape: BRepShape\n}\nexpectTypesMatch<PcbCopperPourBRep, InferredPcbCopperPourBRep>(true)\n\n// Polygon Pour\nexport const pcb_copper_pour_polygon = pcb_copper_pour_base.extend({\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n})\nexport type PcbCopperPourPolygonInput = z.input<typeof pcb_copper_pour_polygon>\ntype InferredPcbCopperPourPolygon = z.infer<typeof pcb_copper_pour_polygon>\n/**\n * Defines a polygonal copper pour on the PCB, specified by a list of points.\n * The polygon should be closed (the last point implicitly connects to the first).\n */\nexport interface PcbCopperPourPolygon {\n type: \"pcb_copper_pour\"\n pcb_copper_pour_id: string\n covered_with_solder_mask: boolean\n pcb_group_id?: string\n subcircuit_id?: string\n layer: LayerRef\n source_net_id?: string\n shape: \"polygon\"\n points: Point[]\n}\nexpectTypesMatch<PcbCopperPourPolygon, InferredPcbCopperPourPolygon>(true)\n\n// Union of all pour shapes\nexport const pcb_copper_pour = z\n .discriminatedUnion(\"shape\", [\n pcb_copper_pour_rect,\n pcb_copper_pour_brep,\n pcb_copper_pour_polygon,\n ])\n .describe(\"Defines a copper pour on the PCB.\")\n\nexport type PcbCopperPourInput = z.input<typeof pcb_copper_pour>\nexport type PcbCopperPour =\n | PcbCopperPourRect\n | PcbCopperPourBRep\n | PcbCopperPourPolygon\n\ntype InferredPcbCopperPour = z.infer<typeof pcb_copper_pour>\nexpectTypesMatch<PcbCopperPour, InferredPcbCopperPour>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { point, type Point } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component_outside_board_error = z\n .object({\n type: z.literal(\"pcb_component_outside_board_error\"),\n pcb_component_outside_board_error_id: getZodPrefixedIdWithDefault(\n \"pcb_component_outside_board_error\",\n ),\n error_type: z\n .literal(\"pcb_component_outside_board_error\")\n .default(\"pcb_component_outside_board_error\"),\n message: z.string(),\n pcb_component_id: z.string(),\n pcb_board_id: z.string(),\n component_center: point,\n component_bounds: z.object({\n min_x: z.number(),\n max_x: z.number(),\n min_y: z.number(),\n max_y: z.number(),\n }),\n subcircuit_id: z.string().optional(),\n source_component_id: z.string().optional(),\n })\n .describe(\n \"Error emitted when a PCB component is placed outside the board boundaries\",\n )\n\nexport type PcbComponentOutsideBoardErrorInput = z.input<\n typeof pcb_component_outside_board_error\n>\ntype InferredPcbComponentOutsideBoardError = z.infer<\n typeof pcb_component_outside_board_error\n>\n\n/** Error emitted when a PCB component is placed outside the board boundaries */\nexport interface PcbComponentOutsideBoardError {\n type: \"pcb_component_outside_board_error\"\n pcb_component_outside_board_error_id: string\n error_type: \"pcb_component_outside_board_error\"\n message: string\n pcb_component_id: string\n pcb_board_id: string\n component_center: Point\n component_bounds: {\n min_x: number\n max_x: number\n min_y: number\n max_y: number\n }\n subcircuit_id?: string\n source_component_id?: string\n}\n\nexpectTypesMatch<\n PcbComponentOutsideBoardError,\n InferredPcbComponentOutsideBoardError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { layer_ref, type LayerRef } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_component_invalid_layer_error = z\n .object({\n type: z.literal(\"pcb_component_invalid_layer_error\"),\n pcb_component_invalid_layer_error_id: getZodPrefixedIdWithDefault(\n \"pcb_component_invalid_layer_error\",\n ),\n error_type: z\n .literal(\"pcb_component_invalid_layer_error\")\n .default(\"pcb_component_invalid_layer_error\"),\n message: z.string(),\n pcb_component_id: z.string().optional(),\n source_component_id: z.string(),\n layer: layer_ref,\n subcircuit_id: z.string().optional(),\n })\n .describe(\n \"Error emitted when a component is placed on an invalid layer (components can only be on 'top' or 'bottom' layers)\",\n )\n\nexport type PcbComponentInvalidLayerErrorInput = z.input<\n typeof pcb_component_invalid_layer_error\n>\ntype InferredPcbComponentInvalidLayerError = z.infer<\n typeof pcb_component_invalid_layer_error\n>\n\n/** Error emitted when a component is placed on an invalid layer (components can only be on 'top' or 'bottom' layers) */\nexport interface PcbComponentInvalidLayerError {\n type: \"pcb_component_invalid_layer_error\"\n pcb_component_invalid_layer_error_id: string\n error_type: \"pcb_component_invalid_layer_error\"\n message: string\n pcb_component_id?: string\n source_component_id: string\n layer: LayerRef\n subcircuit_id?: string\n}\n\nexpectTypesMatch<\n PcbComponentInvalidLayerError,\n InferredPcbComponentInvalidLayerError\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { distance, type Distance } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_via_clearance_error = z\n .object({\n type: z.literal(\"pcb_via_clearance_error\"),\n pcb_error_id: getZodPrefixedIdWithDefault(\"pcb_error\"),\n error_type: z\n .literal(\"pcb_via_clearance_error\")\n .default(\"pcb_via_clearance_error\"),\n message: z.string(),\n pcb_via_ids: z.array(z.string()).min(2),\n minimum_clearance: distance.optional(),\n actual_clearance: distance.optional(),\n pcb_center: z\n .object({\n x: z.number().optional(),\n y: z.number().optional(),\n })\n .optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"Error emitted when vias are closer than the allowed clearance\")\n\nexport type PcbViaClearanceErrorInput = z.input<typeof pcb_via_clearance_error>\ntype InferredPcbViaClearanceError = z.infer<typeof pcb_via_clearance_error>\n\n/** Error emitted when vias are closer than the allowed clearance */\nexport interface PcbViaClearanceError {\n type: \"pcb_via_clearance_error\"\n pcb_error_id: string\n error_type: \"pcb_via_clearance_error\"\n message: string\n pcb_via_ids: string[]\n minimum_clearance?: Distance\n actual_clearance?: Distance\n pcb_center?: {\n x?: number\n y?: number\n }\n subcircuit_id?: string\n}\n\nexpectTypesMatch<PcbViaClearanceError, InferredPcbViaClearanceError>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { visible_layer, type VisibleLayer } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_courtyard_rect = z\n .object({\n type: z.literal(\"pcb_courtyard_rect\"),\n pcb_courtyard_rect_id: getZodPrefixedIdWithDefault(\"pcb_courtyard_rect\"),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n center: point,\n width: length,\n height: length,\n layer: visible_layer,\n color: z.string().optional(),\n })\n .describe(\"Defines a courtyard rectangle on the PCB\")\n\nexport type PcbCourtyardRectInput = z.input<typeof pcb_courtyard_rect>\ntype InferredPcbCourtyardRect = z.infer<typeof pcb_courtyard_rect>\n\n/**\n * Defines a courtyard rectangle on the PCB\n */\nexport interface PcbCourtyardRect {\n type: \"pcb_courtyard_rect\"\n pcb_courtyard_rect_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n center: Point\n width: Length\n height: Length\n layer: VisibleLayer\n color?: string\n}\n\n/**\n * @deprecated use PcbCourtyardRect\n */\nexport type PCBCourtyardRect = PcbCourtyardRect\n\nexpectTypesMatch<PcbCourtyardRect, InferredPcbCourtyardRect>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { visible_layer, type VisibleLayer } from \"src/pcb/properties/layer_ref\"\nimport { length, type Length } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_courtyard_outline = z\n .object({\n type: z.literal(\"pcb_courtyard_outline\"),\n pcb_courtyard_outline_id: getZodPrefixedIdWithDefault(\n \"pcb_courtyard_outline\",\n ),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: visible_layer,\n outline: z.array(point).min(2),\n stroke_width: length.default(\"0.1mm\"),\n is_closed: z.boolean().optional(),\n is_stroke_dashed: z.boolean().optional(),\n color: z.string().optional(),\n })\n .describe(\"Defines a courtyard outline on the PCB\")\n\nexport type PcbCourtyardOutlineInput = z.input<typeof pcb_courtyard_outline>\ntype InferredPcbCourtyardOutline = z.infer<typeof pcb_courtyard_outline>\n\n/**\n * Defines a courtyard outline on the PCB\n */\nexport interface PcbCourtyardOutline {\n type: \"pcb_courtyard_outline\"\n pcb_courtyard_outline_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: VisibleLayer\n outline: Point[]\n stroke_width: Length\n is_closed?: boolean\n is_stroke_dashed?: boolean\n color?: string\n}\n\n/**\n * @deprecated use PcbCourtyardOutline\n */\nexport type PCBCourtyardOutline = PcbCourtyardOutline\n\nexpectTypesMatch<PcbCourtyardOutline, InferredPcbCourtyardOutline>(true)\n","import { z } from \"zod\"\nimport { point, type Point, getZodPrefixedIdWithDefault } from \"src/common\"\nimport { visible_layer, type VisibleLayer } from \"src/pcb/properties/layer_ref\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const pcb_courtyard_polygon = z\n .object({\n type: z.literal(\"pcb_courtyard_polygon\"),\n pcb_courtyard_polygon_id: getZodPrefixedIdWithDefault(\n \"pcb_courtyard_polygon\",\n ),\n pcb_component_id: z.string(),\n pcb_group_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n layer: visible_layer,\n points: z.array(point).min(3),\n color: z.string().optional(),\n })\n .describe(\"Defines a courtyard polygon on the PCB\")\n\nexport type PcbCourtyardPolygonInput = z.input<typeof pcb_courtyard_polygon>\ntype InferredPcbCourtyardPolygon = z.infer<typeof pcb_courtyard_polygon>\n\n/**\n * Defines a courtyard polygon on the PCB\n */\nexport interface PcbCourtyardPolygon {\n type: \"pcb_courtyard_polygon\"\n pcb_courtyard_polygon_id: string\n pcb_component_id: string\n pcb_group_id?: string\n subcircuit_id?: string\n layer: VisibleLayer\n points: Point[]\n color?: string\n}\n\n/**\n * @deprecated use PcbCourtyardPolygon\n */\nexport type PCBCourtyardPolygon = PcbCourtyardPolygon\n\nexpectTypesMatch<PcbCourtyardPolygon, InferredPcbCourtyardPolygon>(true)\n","import { z } from \"zod\"\nimport { point3, type Point3 } from \"../common\"\nimport { rotation, length, type Rotation, type Length } from \"../units\"\nimport { layer_ref, type LayerRef } from \"src/pcb\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const cad_component = z\n .object({\n type: z.literal(\"cad_component\"),\n cad_component_id: z.string(),\n pcb_component_id: z.string(),\n source_component_id: z.string(),\n position: point3,\n rotation: point3.optional(),\n size: point3.optional(),\n layer: layer_ref.optional(),\n subcircuit_id: z.string().optional(),\n\n // These are all ways to generate/load the 3d model\n footprinter_string: z.string().optional(),\n model_obj_url: z.string().optional(),\n model_stl_url: z.string().optional(),\n model_3mf_url: z.string().optional(),\n model_gltf_url: z.string().optional(),\n model_glb_url: z.string().optional(),\n model_step_url: z.string().optional(),\n model_wrl_url: z.string().optional(),\n model_unit_to_mm_scale_factor: z.number().optional(),\n model_jscad: z.any().optional(),\n show_as_translucent_model: z.boolean().optional(),\n })\n .describe(\"Defines a component on the PCB\")\n\nexport type CadComponentInput = z.input<typeof cad_component>\ntype InferredCadComponent = z.infer<typeof cad_component>\n\nexport interface CadComponent {\n type: \"cad_component\"\n cad_component_id: string\n pcb_component_id: string\n source_component_id: string\n position: Point3\n rotation?: Point3\n size?: Point3\n layer?: LayerRef\n subcircuit_id?: string\n footprinter_string?: string\n model_obj_url?: string\n model_stl_url?: string\n model_3mf_url?: string\n model_gltf_url?: string\n model_glb_url?: string\n model_step_url?: string\n model_wrl_url?: string\n model_unit_to_mm_scale_factor?: number\n model_jscad?: any\n show_as_translucent_model?: boolean\n}\n\nexpectTypesMatch<CadComponent, InferredCadComponent>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { frequency, rotation, voltage } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const wave_shape = z.enum([\"sinewave\", \"square\", \"triangle\", \"sawtooth\"])\nexport type WaveShape = z.infer<typeof wave_shape>\n\nconst percentage = z\n .union([z.string(), z.number()])\n .transform((val) => {\n if (typeof val === \"string\") {\n if (val.endsWith(\"%\")) {\n return parseFloat(val.slice(0, -1)) / 100\n }\n return parseFloat(val)\n }\n return val\n })\n .pipe(\n z\n .number()\n .min(0, \"Duty cycle must be non-negative\")\n .max(1, \"Duty cycle cannot be greater than 100%\"),\n )\n\nexport const simulation_dc_voltage_source = z\n .object({\n type: z.literal(\"simulation_voltage_source\"),\n simulation_voltage_source_id: getZodPrefixedIdWithDefault(\n \"simulation_voltage_source\",\n ),\n is_dc_source: z.literal(true).optional().default(true),\n positive_source_port_id: z.string().optional(),\n negative_source_port_id: z.string().optional(),\n positive_source_net_id: z.string().optional(),\n negative_source_net_id: z.string().optional(),\n voltage: voltage,\n })\n .describe(\"Defines a DC voltage source for simulation\")\n\nexport const simulation_ac_voltage_source = z\n .object({\n type: z.literal(\"simulation_voltage_source\"),\n simulation_voltage_source_id: getZodPrefixedIdWithDefault(\n \"simulation_voltage_source\",\n ),\n is_dc_source: z.literal(false),\n terminal1_source_port_id: z.string().optional(),\n terminal2_source_port_id: z.string().optional(),\n terminal1_source_net_id: z.string().optional(),\n terminal2_source_net_id: z.string().optional(),\n voltage: voltage.optional(),\n frequency: frequency.optional(),\n peak_to_peak_voltage: voltage.optional(),\n wave_shape: wave_shape.optional(),\n phase: rotation.optional(),\n duty_cycle: percentage.optional(),\n })\n .describe(\"Defines an AC voltage source for simulation\")\n\nexport type SimulationAcVoltageSourceInput = z.input<\n typeof simulation_ac_voltage_source\n>\n\nexport const simulation_voltage_source = z\n .union([simulation_dc_voltage_source, simulation_ac_voltage_source])\n .describe(\"Defines a voltage source for simulation\")\n\nexport type SimulationVoltageSourceInput = z.input<\n typeof simulation_voltage_source\n>\ntype InferredSimulationVoltageSource = z.infer<typeof simulation_voltage_source>\n\n/**\n * Defines a DC voltage source for simulation purposes. It applies a voltage\n * difference between two source ports.\n */\nexport interface SimulationDcVoltageSource {\n type: \"simulation_voltage_source\"\n simulation_voltage_source_id: string\n is_dc_source: true\n positive_source_port_id?: string\n positive_source_net_id?: string\n negative_source_port_id?: string\n negative_source_net_id?: string\n voltage: number\n}\n\n/**\n * Defines an AC voltage source for simulation purposes.\n */\nexport interface SimulationAcVoltageSource {\n type: \"simulation_voltage_source\"\n simulation_voltage_source_id: string\n is_dc_source: false\n terminal1_source_port_id?: string\n terminal2_source_port_id?: string\n terminal1_source_net_id?: string\n terminal2_source_net_id?: string\n voltage?: number\n frequency?: number\n peak_to_peak_voltage?: number\n wave_shape?: WaveShape\n phase?: number\n duty_cycle?: number\n}\n\nexport type SimulationVoltageSource =\n | SimulationDcVoltageSource\n | SimulationAcVoltageSource\n\nexpectTypesMatch<\n SimulationDcVoltageSource,\n z.infer<typeof simulation_dc_voltage_source>\n>(true)\nexpectTypesMatch<\n SimulationAcVoltageSource,\n z.infer<typeof simulation_ac_voltage_source>\n>(true)\nexpectTypesMatch<SimulationVoltageSource, InferredSimulationVoltageSource>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { duration_ms, ms } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const experiment_type = z.union([\n z.literal(\"spice_dc_sweep\"),\n z.literal(\"spice_dc_operating_point\"),\n z.literal(\"spice_transient_analysis\"),\n z.literal(\"spice_ac_analysis\"),\n])\n\nexport type ExperimentType = z.infer<typeof experiment_type>\n\nexport interface SimulationExperiment {\n type: \"simulation_experiment\"\n simulation_experiment_id: string\n name: string\n experiment_type: ExperimentType\n time_per_step?: number // ms\n start_time_ms?: number // ms\n end_time_ms?: number // ms\n}\n\nexport const simulation_experiment = z\n .object({\n type: z.literal(\"simulation_experiment\"),\n simulation_experiment_id: getZodPrefixedIdWithDefault(\n \"simulation_experiment\",\n ),\n name: z.string(),\n experiment_type,\n time_per_step: duration_ms.optional(),\n start_time_ms: ms.optional(),\n end_time_ms: ms.optional(),\n })\n .describe(\"Defines a simulation experiment configuration\")\n\nexport type SimulationExperimentInput = z.input<typeof simulation_experiment>\ntype InferredSimulationExperiment = z.infer<typeof simulation_experiment>\n\nexpectTypesMatch<SimulationExperiment, InferredSimulationExperiment>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { duration_ms, ms } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport interface SimulationTransientVoltageGraph {\n type: \"simulation_transient_voltage_graph\"\n simulation_transient_voltage_graph_id: string\n simulation_experiment_id: string\n timestamps_ms?: number[]\n voltage_levels: number[]\n source_component_id?: string\n subcircuit_connectivity_map_key?: string\n time_per_step: number\n start_time_ms: number\n end_time_ms: number\n name?: string\n color?: string\n}\n\nexport const simulation_transient_voltage_graph = z\n .object({\n type: z.literal(\"simulation_transient_voltage_graph\"),\n simulation_transient_voltage_graph_id: getZodPrefixedIdWithDefault(\n \"simulation_transient_voltage_graph\",\n ),\n simulation_experiment_id: z.string(),\n timestamps_ms: z.array(z.number()).optional(),\n voltage_levels: z.array(z.number()),\n source_component_id: z.string().optional(),\n subcircuit_connectivity_map_key: z.string().optional(),\n time_per_step: duration_ms,\n start_time_ms: ms,\n end_time_ms: ms,\n name: z.string().optional(),\n color: z.string().optional(),\n })\n .describe(\"Stores voltage measurements over time for a simulation\")\n\nexport type SimulationTransientVoltageGraphInput = z.input<\n typeof simulation_transient_voltage_graph\n>\ntype InferredSimulationTransientVoltageGraph = z.infer<\n typeof simulation_transient_voltage_graph\n>\n\nexpectTypesMatch<\n SimulationTransientVoltageGraph,\n InferredSimulationTransientVoltageGraph\n>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { frequency, ms } from \"src/units\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const simulation_switch = z\n .object({\n type: z.literal(\"simulation_switch\"),\n simulation_switch_id: getZodPrefixedIdWithDefault(\"simulation_switch\"),\n source_component_id: z.string().optional(),\n closes_at: ms.optional(),\n opens_at: ms.optional(),\n starts_closed: z.boolean().optional(),\n switching_frequency: frequency.optional(),\n })\n .describe(\"Defines a switch for simulation timing control\")\n\nexport type SimulationSwitchInput = z.input<typeof simulation_switch>\n\ntype InferredSimulationSwitch = z.infer<typeof simulation_switch>\n\nexport interface SimulationSwitch {\n type: \"simulation_switch\"\n simulation_switch_id: string\n source_component_id?: string\n closes_at?: number\n opens_at?: number\n starts_closed?: boolean\n switching_frequency?: number\n}\n\nexpectTypesMatch<SimulationSwitch, InferredSimulationSwitch>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const simulation_voltage_probe = z\n .object({\n type: z.literal(\"simulation_voltage_probe\"),\n simulation_voltage_probe_id: getZodPrefixedIdWithDefault(\n \"simulation_voltage_probe\",\n ),\n source_component_id: z.string().optional(),\n name: z.string().optional(),\n signal_input_source_port_id: z.string().optional(),\n signal_input_source_net_id: z.string().optional(),\n reference_input_source_port_id: z.string().optional(),\n reference_input_source_net_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n color: z.string().optional(),\n })\n .describe(\n \"Defines a voltage probe for simulation. If a reference input is not provided, it measures against ground. If a reference input is provided, it measures the differential voltage between two points.\",\n )\n .superRefine((data, ctx) => {\n const is_differential =\n data.reference_input_source_port_id || data.reference_input_source_net_id\n\n if (is_differential) {\n const has_ports =\n !!data.signal_input_source_port_id ||\n !!data.reference_input_source_port_id\n const has_nets =\n !!data.signal_input_source_net_id ||\n !!data.reference_input_source_net_id\n\n if (has_ports && has_nets) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"Cannot mix port and net connections in a differential probe.\",\n })\n } else if (has_ports) {\n if (\n !data.signal_input_source_port_id ||\n !data.reference_input_source_port_id\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"Differential port probe requires both signal_input_source_port_id and reference_input_source_port_id.\",\n })\n }\n } else if (has_nets) {\n if (\n !data.signal_input_source_net_id ||\n !data.reference_input_source_net_id\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"Differential net probe requires both signal_input_source_net_id and reference_input_source_net_id.\",\n })\n }\n }\n } else {\n // Single-ended probe\n if (\n !!data.signal_input_source_port_id === !!data.signal_input_source_net_id\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"A voltage probe must have exactly one of signal_input_source_port_id or signal_input_source_net_id.\",\n })\n }\n }\n })\n\nexport type SimulationVoltageProbeInput = z.input<\n typeof simulation_voltage_probe\n>\ntype InferredSimulationVoltageProbe = z.infer<typeof simulation_voltage_probe>\n\n/**\n * Defines a voltage probe for simulation. If a reference input is not provided,\n * it measures against ground. If a reference input is provided, it measures\n * the differential voltage between two points.\n */\nexport interface SimulationVoltageProbe {\n type: \"simulation_voltage_probe\"\n simulation_voltage_probe_id: string\n source_component_id?: string\n name?: string\n signal_input_source_port_id?: string\n signal_input_source_net_id?: string\n reference_input_source_port_id?: string\n reference_input_source_net_id?: string\n subcircuit_id?: string\n color?: string\n}\n\nexpectTypesMatch<SimulationVoltageProbe, InferredSimulationVoltageProbe>(true)\n","import { z } from \"zod\"\nimport { getZodPrefixedIdWithDefault } from \"src/common\"\nimport { expectTypesMatch } from \"src/utils/expect-types-match\"\n\nexport const simulation_unknown_experiment_error = z\n .object({\n type: z.literal(\"simulation_unknown_experiment_error\"),\n simulation_unknown_experiment_error_id: getZodPrefixedIdWithDefault(\n \"simulation_unknown_experiment_error\",\n ),\n error_type: z\n .literal(\"simulation_unknown_experiment_error\")\n .default(\"simulation_unknown_experiment_error\"),\n message: z.string(),\n simulation_experiment_id: z.string().optional(),\n subcircuit_id: z.string().optional(),\n })\n .describe(\"An unknown error occurred during the simulation experiment.\")\n\nexport type SimulationUnknownExperimentErrorInput = z.input<\n typeof simulation_unknown_experiment_error\n>\ntype InferredSimulationUnknownExperimentError = z.infer<\n typeof simulation_unknown_experiment_error\n>\n\n/**\n * An unknown error occurred during the simulation experiment.\n */\nexport interface SimulationUnknownExperimentError {\n type: \"simulation_unknown_experiment_error\"\n simulation_unknown_experiment_error_id: string\n error_type: \"simulation_unknown_experiment_error\"\n message: string\n simulation_experiment_id?: string\n subcircuit_id?: string\n}\n\nexpectTypesMatch<\n SimulationUnknownExperimentError,\n InferredSimulationUnknownExperimentError\n>(true)\n","import { z } from \"zod\"\nimport * as pcb from \"./pcb\"\nimport * as sch from \"./schematic\"\nimport * as src from \"./source\"\nimport * as cad from \"./cad\"\nimport * as sim from \"./simulation\"\nimport {\n expectStringUnionsMatch,\n expectTypesMatch,\n} from \"./utils/expect-types-match\"\n\nexport const any_circuit_element = z.union([\n // TODO source_config\n // TODO pcb_config\n // TODO schematic_config\n // TODO schematic_group\n src.source_trace,\n src.source_port,\n src.any_source_component,\n src.source_net,\n src.source_group,\n src.source_simple_chip,\n src.source_simple_capacitor,\n src.source_simple_diode,\n src.source_simple_led,\n src.source_simple_resistor,\n src.source_simple_power_source,\n src.source_simple_battery,\n src.source_simple_inductor,\n src.source_simple_pin_header,\n src.source_simple_pinout,\n src.source_simple_resonator,\n src.source_simple_switch,\n src.source_simple_transistor,\n src.source_simple_test_point,\n src.source_simple_mosfet,\n src.source_simple_potentiometer,\n src.source_simple_push_button,\n src.source_pcb_ground_plane,\n src.source_manually_placed_via,\n src.source_board,\n src.source_project_metadata,\n src.source_trace_not_connected_error,\n src.source_pin_missing_trace_warning,\n src.source_pin_must_be_connected_error,\n src.unknown_error_finding_part,\n pcb.pcb_component,\n pcb.pcb_hole,\n pcb.pcb_missing_footprint_error,\n pcb.external_footprint_load_error,\n pcb.circuit_json_footprint_load_error,\n pcb.pcb_manual_edit_conflict_warning,\n pcb.pcb_plated_hole,\n pcb.pcb_keepout,\n pcb.pcb_port,\n pcb.pcb_net,\n pcb.pcb_text,\n pcb.pcb_trace,\n pcb.pcb_via,\n pcb.pcb_smtpad,\n pcb.pcb_solder_paste,\n pcb.pcb_board,\n pcb.pcb_panel,\n pcb.pcb_group,\n pcb.pcb_trace_hint,\n pcb.pcb_silkscreen_line,\n pcb.pcb_silkscreen_path,\n pcb.pcb_silkscreen_text,\n pcb.pcb_copper_text,\n pcb.pcb_silkscreen_rect,\n pcb.pcb_silkscreen_circle,\n pcb.pcb_silkscreen_oval,\n pcb.pcb_trace_error,\n pcb.pcb_trace_missing_error,\n pcb.pcb_placement_error,\n pcb.pcb_port_not_matched_error,\n pcb.pcb_port_not_connected_error,\n pcb.pcb_via_clearance_error,\n pcb.pcb_fabrication_note_path,\n pcb.pcb_fabrication_note_text,\n pcb.pcb_fabrication_note_rect,\n pcb.pcb_fabrication_note_dimension,\n pcb.pcb_note_text,\n pcb.pcb_note_rect,\n pcb.pcb_note_path,\n pcb.pcb_note_line,\n pcb.pcb_note_dimension,\n pcb.pcb_autorouting_error,\n pcb.pcb_footprint_overlap_error,\n pcb.pcb_breakout_point,\n pcb.pcb_cutout,\n pcb.pcb_ground_plane,\n pcb.pcb_ground_plane_region,\n pcb.pcb_thermal_spoke,\n pcb.pcb_copper_pour,\n pcb.pcb_component_outside_board_error,\n pcb.pcb_component_invalid_layer_error,\n pcb.pcb_courtyard_rect,\n pcb.pcb_courtyard_outline,\n pcb.pcb_courtyard_polygon,\n sch.schematic_box,\n sch.schematic_text,\n sch.schematic_line,\n sch.schematic_rect,\n sch.schematic_circle,\n sch.schematic_arc,\n sch.schematic_component,\n sch.schematic_port,\n sch.schematic_trace,\n sch.schematic_path,\n sch.schematic_error,\n sch.schematic_layout_error,\n sch.schematic_net_label,\n sch.schematic_debug_object,\n sch.schematic_voltage_probe,\n sch.schematic_manual_edit_conflict_warning,\n sch.schematic_group,\n sch.schematic_sheet,\n sch.schematic_table,\n sch.schematic_table_cell,\n cad.cad_component,\n sim.simulation_voltage_source,\n sim.simulation_experiment,\n sim.simulation_transient_voltage_graph,\n sim.simulation_switch,\n sim.simulation_voltage_probe,\n sim.simulation_unknown_experiment_error,\n])\n\n/**\n * @deprecated use any_circuit_element instead\n */\nexport const any_soup_element = any_circuit_element\n\nexport type AnyCircuitElement = z.infer<typeof any_circuit_element>\nexport type AnyCircuitElementInput = z.input<typeof any_circuit_element>\n/**\n * @deprecated use AnyCircuitElement instead\n */\nexport type AnySoupElement = AnyCircuitElement\n\n/**\n * @deprecated use AnyCircuitElementInput instead\n */\nexport type AnySoupElementInput = AnyCircuitElementInput\n\n/**\n * Type representing a complete Circuit JSON document, which is an array of circuit elements.\n * This is the primary type used when working with circuit-json files or API responses.\n */\nexport type CircuitJson = AnyCircuitElement[]\n\n// ------------------- SAFETY CHECKS -------------------\n\n// SAFETY CHECK: Every element has a type\nexpectTypesMatch<\n AnyCircuitElement extends { type: string } ? AnyCircuitElement : never,\n AnyCircuitElement\n>(true)\n\n// SAFETY CHECK: Every element has an id with the key name `${type}_id`\ntype FindMissingId<T extends AnyCircuitElement> = T extends {\n type: infer U extends string\n}\n ? T extends { [K in `${U}_id`]: infer V }\n ? V extends string\n ? never\n : `${U} DOES NOT HAVE AN ${U}_id PROPERTY`\n : `${U} DOES NOT HAVE AN ${U}_id PROPERTY`\n : never\n\nexpectStringUnionsMatch<\n FindMissingId<AnyCircuitElement>,\n // EXCEPTIONS TO THE RULE\n // THIS IS FOR LEGACY REASONS, DO NOT ADD MORE EXCEPTIONS\n | \"source_project_metadata DOES NOT HAVE AN source_project_metadata_id PROPERTY\"\n | \"pcb_port_not_matched_error DOES NOT HAVE AN pcb_port_not_matched_error_id PROPERTY\"\n | \"pcb_autorouting_error DOES NOT HAVE AN pcb_autorouting_error_id PROPERTY\"\n | \"pcb_footprint_overlap_error DOES NOT HAVE AN pcb_footprint_overlap_error_id PROPERTY\"\n | \"pcb_via_clearance_error DOES NOT HAVE AN pcb_via_clearance_error_id PROPERTY\"\n | \"schematic_debug_object DOES NOT HAVE AN schematic_debug_object_id PROPERTY\"\n | \"schematic_box DOES NOT HAVE AN schematic_box_id PROPERTY\"\n | \"schematic_path DOES NOT HAVE AN schematic_path_id PROPERTY\"\n>(true)\n","/**\n * Calculate a point transformed with an affine matrix\n * @param matrix {Matrix} Affine Matrix\n * @param point {Point} Point\n * @returns {Point} Point\n */\nexport function applyToPoint (matrix, point) {\n return Array.isArray(point)\n ? [\n matrix.a * point[0] + matrix.c * point[1] + matrix.e,\n matrix.b * point[0] + matrix.d * point[1] + matrix.f\n ]\n : {\n x: matrix.a * point.x + matrix.c * point.y + matrix.e,\n y: matrix.b * point.x + matrix.d * point.y + matrix.f\n }\n}\n\n/**\n * Calculate an array of points transformed with an affine matrix\n * @param matrix {Matrix} Affine Matrix\n * @param points {Point[]} Array of point\n * @returns {Point[]} Array of point\n */\nexport function applyToPoints (matrix, points) {\n return points.map(point => applyToPoint(matrix, point))\n}\n","/**\n * Calculate a translate matrix\n * @param tx {number} Translation on axis x\n * @param [ty = 0] {number} Translation on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function translate (tx, ty = 0) {\n return {\n a: 1,\n c: 0,\n e: tx,\n b: 0,\n d: 1,\n f: ty\n }\n}\n","/**\n * Merge multiple matrices into one\n * @param matrices {...Matrix | Matrix[]} Matrices listed as separate parameters or in an array\n * @returns {Matrix} Affine Matrix\n */\nexport function transform (...matrices) {\n matrices = Array.isArray(matrices[0]) ? matrices[0] : matrices\n\n const multiply = (m1, m2) => {\n return {\n a: m1.a * m2.a + m1.c * m2.b,\n c: m1.a * m2.c + m1.c * m2.d,\n e: m1.a * m2.e + m1.c * m2.f + m1.e,\n b: m1.b * m2.a + m1.d * m2.b,\n d: m1.b * m2.c + m1.d * m2.d,\n f: m1.b * m2.e + m1.d * m2.f + m1.f\n }\n }\n\n switch (matrices.length) {\n case 0:\n throw new Error('no matrices provided')\n\n case 1:\n return matrices[0]\n\n case 2:\n return multiply(matrices[0], matrices[1])\n\n default: {\n const [m1, m2, ...rest] = matrices\n const m = multiply(m1, m2)\n return transform(m, ...rest)\n }\n }\n}\n\n/**\n * Merge multiple matrices into one\n * @param matrices {...Matrix | Matrix[]} Matrices listed as separate parameters or in an array\n * @returns {Matrix} Affine Matrix\n */\nexport function compose (...matrices) {\n return transform(...matrices)\n}\n","export function isUndefined (val) {\n return typeof val === 'undefined'\n}\n\nexport function isNumeric (n) {\n return typeof n === 'number' &&\n !Number.isNaN(n) &&\n Number.isFinite(n)\n}\n\nexport function isObject (obj) {\n return typeof obj === 'object' &&\n obj !== null &&\n !Array.isArray(obj)\n}\n\nexport function matchesShape (obj, keys) {\n return keys.every(key => key in obj)\n}\n","import { isUndefined } from './utils'\nimport { translate } from './translate'\nimport { transform } from './transform'\n\nconst { cos, sin, PI } = Math\n/**\n * Calculate a rotation matrix\n * @param angle {number} Angle in radians\n * @param [cx] {number} If (cx,cy) are supplied the rotate is about this point\n * @param [cy] {number} If (cx,cy) are supplied the rotate is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function rotate (angle, cx, cy) {\n const cosAngle = cos(angle)\n const sinAngle = sin(angle)\n const rotationMatrix = {\n a: cosAngle,\n c: -sinAngle,\n e: 0,\n b: sinAngle,\n d: cosAngle,\n f: 0\n }\n if (isUndefined(cx) || isUndefined(cy)) {\n return rotationMatrix\n }\n\n return transform([\n translate(cx, cy),\n rotationMatrix,\n translate(-cx, -cy)\n ])\n}\n\n/**\n * Calculate a rotation matrix with a DEG angle\n * @param angle {number} Angle in degree\n * @param [cx] {number} If (cx,cy) are supplied the rotate is about this point\n * @param [cy] {number} If (cx,cy) are supplied the rotate is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function rotateDEG (angle, cx = undefined, cy = undefined) {\n return rotate(angle * PI / 180, cx, cy)\n}\n","import { isUndefined } from './utils'\nimport { translate } from './translate'\nimport { transform } from './transform'\n\n/**\n * Calculate a scaling matrix\n * @param sx {number} Scaling on axis x\n * @param [sy = sx] {number} Scaling on axis y (default sx)\n * @param [cx] {number} If (cx,cy) are supplied the scaling is about this point\n * @param [cy] {number} If (cx,cy) are supplied the scaling is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function scale (sx, sy = undefined, cx = undefined, cy = undefined) {\n if (isUndefined(sy)) sy = sx\n\n const scaleMatrix = {\n a: sx,\n c: 0,\n e: 0,\n b: 0,\n d: sy,\n f: 0\n }\n\n if (isUndefined(cx) || isUndefined(cy)) {\n return scaleMatrix\n }\n\n return transform([\n translate(cx, cy),\n scaleMatrix,\n translate(-cx, -cy)\n ])\n}\n","/**\n * Serialize an affine matrix to a string that can be used with CSS or SVG\n * @param matrix {Matrix} Affine Matrix\n * @returns {string} String that contains an affine matrix formatted as matrix(a,b,c,d,e,f)\n */\nexport function toCSS (matrix) {\n return toString(matrix)\n}\n\n/**\n * Serialize an affine matrix to a string that can be used with CSS or SVG\n * @param matrix {Matrix} Affine Matrix\n * @returns {string} String that contains an affine matrix formatted as matrix(a,b,c,d,e,f)\n */\nexport function toSVG (matrix) {\n return toString(matrix)\n}\n\n/**\n * Serialize an affine matrix to a string that can be used with CSS or SVG\n * @param matrix {Matrix} Affine Matrix\n * @returns {string} String that contains an affine matrix formatted as matrix(a,b,c,d,e,f)\n */\nexport function toString (matrix) {\n return `matrix(${matrix.a},${matrix.b},${matrix.c},${matrix.d},${matrix.e},${matrix.f})`\n}\n","/**\n * Calculate a matrix that is the inverse of the provided matrix\n * @param matrix {Matrix} Affine Matrix\n * @returns {Matrix} Inverted Affine Matrix\n */\nexport function inverse (matrix) {\n // http://www.wolframalpha.com/input/?i=Inverse+%5B%7B%7Ba,c,e%7D,%7Bb,d,f%7D,%7B0,0,1%7D%7D%5D\n\n const { a, b, c, d, e, f } = matrix\n\n const denom = a * d - b * c\n\n return {\n a: d / denom,\n b: b / -denom,\n c: c / -denom,\n d: a / denom,\n e: (d * e - c * f) / -denom,\n f: (b * e - a * f) / denom\n }\n}\n","/**\n * Rounds all elements of the given matrix using the given precision\n * @param matrix {Matrix} An affine matrix to round\n * @param [precision] {number} A precision to use for Math.round. Defaults to 10000000000 (meaning which rounds to the 10th digit after the comma).\n * @returns {Matrix} The rounded Affine Matrix\n */\nexport function smoothMatrix (matrix, precision = 10000000000) {\n return {\n a: Math.round(matrix.a * precision) / precision,\n b: Math.round(matrix.b * precision) / precision,\n c: Math.round(matrix.c * precision) / precision,\n d: Math.round(matrix.d * precision) / precision,\n e: Math.round(matrix.e * precision) / precision,\n f: Math.round(matrix.f * precision) / precision\n }\n}\n","import { inverse } from './inverse'\nimport { transform } from './transform'\nimport { smoothMatrix } from './smoothMatrix'\n\n/**\n * Returns a matrix that transforms a triangle t1 into another triangle t2, or throws an exception if it is impossible.\n * @param t1 {Point[]} Array of points containing the three points for the first triangle\n * @param t2 {Point[]} Array of points containing the three points for the second triangle\n * @returns {Matrix} Matrix which transforms t1 to t2\n * @throws Exception if the matrix becomes not invertible\n */\nexport function fromTriangles (t1, t2) {\n // point p = first point of the triangle\n const px1 = t1[0].x != null ? t1[0].x : t1[0][0]\n const py1 = t1[0].y != null ? t1[0].y : t1[0][1]\n const px2 = t2[0].x != null ? t2[0].x : t2[0][0]\n const py2 = t2[0].y != null ? t2[0].y : t2[0][1]\n\n // point q = second point of the triangle\n const qx1 = t1[1].x != null ? t1[1].x : t1[1][0]\n const qy1 = t1[1].y != null ? t1[1].y : t1[1][1]\n const qx2 = t2[1].x != null ? t2[1].x : t2[1][0]\n const qy2 = t2[1].y != null ? t2[1].y : t2[1][1]\n\n // point r = third point of the triangle\n const rx1 = t1[2].x != null ? t1[2].x : t1[2][0]\n const ry1 = t1[2].y != null ? t1[2].y : t1[2][1]\n const rx2 = t2[2].x != null ? t2[2].x : t2[2][0]\n const ry2 = t2[2].y != null ? t2[2].y : t2[2][1]\n\n const r1 = {\n a: px1 - rx1,\n b: py1 - ry1,\n c: qx1 - rx1,\n d: qy1 - ry1,\n e: rx1,\n f: ry1\n }\n const r2 = {\n a: px2 - rx2,\n b: py2 - ry2,\n c: qx2 - rx2,\n d: qy2 - ry2,\n e: rx2,\n f: ry2\n }\n\n const inverseR1 = inverse(r1)\n const affineMatrix = transform([r2, inverseR1])\n\n // round the matrix elements to smooth the finite inversion\n return smoothMatrix(affineMatrix)\n}\n","/**\n * Identity matrix\n * @returns {Matrix} Affine Matrix\n */\nexport function identity () {\n return {\n a: 1,\n c: 0,\n e: 0,\n b: 0,\n d: 1,\n f: 0\n }\n}\n","// https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\nconst { tan } = Math\n\n/**\n * Calculate a skew matrix\n * @param ax {number} Skew on axis x\n * @param ay {number} Skew on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function skew (ax, ay) {\n return {\n a: 1,\n c: tan(ax),\n e: 0,\n b: tan(ay),\n d: 1,\n f: 0\n }\n}\n\n/**\n * Calculate a skew matrix using DEG angles\n * @param ax {number} Skew on axis x\n * @param ay {number} Skew on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function skewDEG (ax, ay) {\n return skew(ax * Math.PI / 180, ay * Math.PI / 180)\n}\n","// Generated by Peggy 3.0.2.\n//\n// https://peggyjs.org/\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class: function(expectation) {\n var escapedParts = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { transformList: peg$parsetransformList };\n var peg$startRuleFunction = peg$parsetransformList;\n\n var peg$c0 = \"matrix\";\n var peg$c1 = \"(\";\n var peg$c2 = \")\";\n var peg$c3 = \"translate\";\n var peg$c4 = \"scale\";\n var peg$c5 = \"rotate\";\n var peg$c6 = \"skewX\";\n var peg$c7 = \"skewY\";\n var peg$c8 = \",\";\n var peg$c9 = \".\";\n\n var peg$r0 = /^[eE]/;\n var peg$r1 = /^[+\\-]/;\n var peg$r2 = /^[0-9]/;\n var peg$r3 = /^[ \\t\\r\\n]/;\n\n var peg$e0 = peg$literalExpectation(\"matrix\", false);\n var peg$e1 = peg$literalExpectation(\"(\", false);\n var peg$e2 = peg$literalExpectation(\")\", false);\n var peg$e3 = peg$literalExpectation(\"translate\", false);\n var peg$e4 = peg$literalExpectation(\"scale\", false);\n var peg$e5 = peg$literalExpectation(\"rotate\", false);\n var peg$e6 = peg$literalExpectation(\"skewX\", false);\n var peg$e7 = peg$literalExpectation(\"skewY\", false);\n var peg$e8 = peg$literalExpectation(\",\", false);\n var peg$e9 = peg$otherExpectation(\"fractionalConstant\");\n var peg$e10 = peg$literalExpectation(\".\", false);\n var peg$e11 = peg$classExpectation([\"e\", \"E\"], false, false);\n var peg$e12 = peg$classExpectation([\"+\", \"-\"], false, false);\n var peg$e13 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e14 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false);\n\n var peg$f0 = function(ts) { return ts; };\n var peg$f1 = function(t, ts) { return t.concat(ts) };\n var peg$f2 = function(a, b, c, d, e, f) {\n return [{type: 'matrix', a: a, b: b, c: c, d: d, e: e, f: f}];\n };\n var peg$f3 = function(tx, ty) {\n var t = {type: 'translate', tx: tx};\n if (ty) t.ty = ty;\n return [t];\n };\n var peg$f4 = function(sx, sy) {\n var s = {type:'scale', sx: sx};\n if (sy) s.sy = sy;\n return [s];\n };\n var peg$f5 = function(angle, c) {\n var r = {type:'rotate', angle: angle};\n if (c) {\n r.cx = c[0];\n r.cy = c[1];\n }\n return [r];\n };\n var peg$f6 = function(angle) {\n return [{type: 'skewX', angle: angle}];\n };\n var peg$f7 = function(angle) {\n return [{type: 'skewY', angle: angle}];\n };\n var peg$f8 = function(f) { return parseFloat(f.join(\"\")); };\n var peg$f9 = function(i) { return parseInt(i.join(\"\")); };\n var peg$f10 = function(n) { return n; };\n var peg$f11 = function(n1, n2) { return [n1, n2]; };\n var peg$f12 = function(ds) { return ds.join(\"\"); };\n var peg$f13 = function(f, e) { return [f, e || null].join(\"\")};\n var peg$f14 = function(d, e) { return [d, e].join(\"\")};\n var peg$f15 = function(d1, d2) { return [d1 ? d1.join(\"\") : null, \".\", d2.join(\"\")].join(\"\"); };\n var peg$f16 = function(d) { return d.join(\"\"); };\n var peg$f17 = function(s, d) { return ['e', s, d.join(\"\")].join(\"\") };\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n\n var peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsetransformList() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n s2 = peg$parsetransforms();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n\n return s0;\n }\n\n function peg$parsetransforms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsetransform();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsecommaWsp();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetransforms();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f1(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsetransform();\n }\n\n return s0;\n }\n\n function peg$parsetransform() {\n var s0;\n\n s0 = peg$parsematrix();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetranslate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsescale();\n if (s0 === peg$FAILED) {\n s0 = peg$parserotate();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewY();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsematrix() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c0) {\n s1 = peg$c0;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWsp();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenumber();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsecommaWsp();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenumber();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsecommaWsp();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsenumber();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsecommaWsp();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsenumber();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsecommaWsp();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsenumber();\n if (s15 !== peg$FAILED) {\n s16 = [];\n s17 = peg$parsewsp();\n while (s17 !== peg$FAILED) {\n s16.push(s17);\n s17 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s17 = peg$c2;\n peg$currPos++;\n } else {\n s17 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s17 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s5, s7, s9, s11, s13, s15);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetranslate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9) === peg$c3) {\n s1 = peg$c3;\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsescale() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c4) {\n s1 = peg$c4;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parserotate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c5) {\n s1 = peg$c5;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspTwoNumbers();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewX() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c6) {\n s1 = peg$c6;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6(s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewY() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c7) {\n s1 = peg$c7;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7(s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parsefloatingPointConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f8(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parseintegerConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f9(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f10(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspTwoNumbers() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsenumber();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f11(s2, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWsp() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsecomma();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecomma();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecomma() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 44) {\n s0 = peg$c8;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n\n return s0;\n }\n\n function peg$parseintegerConstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f12(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsefloatingPointConstant() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsefractionalConstant();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexponent();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f13(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexponent();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f14(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsefractionalConstant() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f15(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f16(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n\n return s0;\n }\n\n function peg$parseexponent() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f17(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsesign() {\n var s0;\n\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n\n return s0;\n }\n\n function peg$parsedigitSequence() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsedigit();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedigit();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n\n return s0;\n }\n\n function peg$parsewsp() {\n var s0;\n\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nexport {\n peg$SyntaxError as SyntaxError,\n\n peg$parse as parse\n};\n","import { scale } from './scale'\nimport { compose } from './transform'\n/**\n * Decompose a matrix into translation, scaling and rotation components, optionally\n * take horizontal and vertical flip in to consideration.\n * Note this function decomposes a matrix in rotation -> scaling -> translation order. I.e. for\n * certain translation T {tx, ty}, rotation R and scaling S { sx, sy }, it's only true for:\n * decomposeTSR(compose(T, S, R)) === { translate: T, rotation: R, scale: S }\n * composing in a different order may yield a different decomposition result.\n * @param matrix {Matrix} Affine Matrix\n * @param flipX {boolean} Whether the matrix contains vertical flip, i.e. mirrors on x-axis\n * @param flipY {boolean} Whether the matrix contains horizontal flip, i.e. mirrors on y-axis\n * @returns {Transform} A transform object consisted by its translation, scaling\n * and rotation components.\n */\nexport function decomposeTSR (matrix, flipX = false, flipY = false) {\n // Remove flip from the matrix first - flip could be incorrectly interpreted as\n // rotations (e.g. flipX + flipY = rotate by 180 degrees).\n // Note flipX is a vertical flip, and flipY is a horizontal flip.\n if (flipX) {\n if (flipY) {\n matrix = compose(matrix, scale(-1, -1))\n } else {\n matrix = compose(matrix, scale(1, -1))\n }\n } else if (flipY) {\n matrix = compose(matrix, scale(-1, 1))\n }\n\n const a = matrix.a; const b = matrix.b\n const c = matrix.c; const d = matrix.d\n let scaleX, scaleY, rotation\n\n if (a !== 0 || c !== 0) {\n const hypotAc = Math.hypot(a, c)\n scaleX = hypotAc\n scaleY = (a * d - b * c) / hypotAc\n const acos = Math.acos(a / hypotAc)\n rotation = c > 0 ? -acos : acos\n } else if (b !== 0 || d !== 0) {\n const hypotBd = Math.hypot(b, d)\n scaleX = (a * d - b * c) / hypotBd\n scaleY = hypotBd\n const acos = Math.acos(b / hypotBd)\n rotation = Math.PI / 2 + (d > 0 ? -acos : acos)\n } else {\n scaleX = 0\n scaleY = 0\n rotation = 0\n }\n\n // put the flip factors back\n if (flipY) {\n scaleX = -scaleX\n }\n\n if (flipX) {\n scaleY = -scaleY\n }\n\n return {\n translate: { tx: matrix.e, ty: matrix.f },\n scale: { sx: scaleX, sy: scaleY },\n rotation: { angle: rotation }\n }\n}\n","/**\n * Tranformation matrix that mirrors on x-axis\n * @returns {Matrix} Affine Matrix\n */\nexport function flipX () {\n return {\n a: 1,\n c: 0,\n e: 0,\n b: 0,\n d: -1,\n f: 0\n }\n}\n\n/**\n * Tranformation matrix that mirrors on y-axis\n * @returns {Matrix} Affine Matrix\n */\nexport function flipY () {\n return {\n a: -1,\n c: 0,\n e: 0,\n b: 0,\n d: 1,\n f: 0\n }\n}\n\n/**\n * Tranformation matrix that mirrors on origin\n * @returns {Matrix} Affine Matrix\n */\nexport function flipOrigin () {\n return {\n a: -1,\n c: 0,\n e: 0,\n b: 0,\n d: -1,\n f: 0\n }\n}\n","import type {\n AnyCircuitElement,\n AnyCircuitElementInput,\n SourceComponentBase,\n SourcePort,\n} from \"circuit-json\"\nimport * as Soup from \"circuit-json\"\nimport type { SubtreeOptions } from \"./subtree\"\nimport { buildSubtree } from \"./subtree\"\n\nexport type CircuitJsonOps<\n K extends AnyCircuitElement[\"type\"],\n T extends AnyCircuitElement | AnyCircuitElementInput,\n> = {\n get: (id: string) => Extract<T, { type: K }> | null\n select: (selector: string) => Extract<T, { type: K }> | null\n getWhere: (where: any) => Extract<T, { type: K }> | null\n getUsing: (using: {\n [key: `${string}_id`]: string\n }) => Extract<T, { type: K }> | null\n insert: (\n elm: Omit<Extract<T, { type: K }>, \"type\" | `${K}_id`>,\n ) => Extract<T, { type: K }>\n update: (\n id: string,\n newProps: Partial<Extract<T, { type: K }>>,\n ) => Extract<T, { type: K }>\n delete: (id: string) => void\n list: (where?: any) => Extract<T, { type: K }>[]\n}\n\nexport type CircuitJsonUtilObjects = {\n [K in AnyCircuitElement[\"type\"]]: CircuitJsonOps<K, AnyCircuitElement>\n} & {\n subtree: (where?: any) => CircuitJsonUtilObjects\n toArray: () => AnyCircuitElement[]\n editCount: number\n}\nexport type CircuitJsonInputUtilObjects = {\n [K in AnyCircuitElementInput[\"type\"]]: CircuitJsonOps<\n K,\n AnyCircuitElementInput\n >\n}\n\nexport type CircuitJsonUtilOptions = {\n validateInserts?: boolean\n}\n\nexport type GetCircuitJsonUtilFn = ((\n soup: AnyCircuitElement[],\n options?: CircuitJsonUtilOptions,\n) => CircuitJsonUtilObjects) & {\n unparsed: (soup: AnyCircuitElementInput[]) => CircuitJsonInputUtilObjects\n}\n\ninterface InternalStore {\n counts: Record<string, number>\n editCount: number\n}\n\nexport const cju: GetCircuitJsonUtilFn = ((\n circuitJsonInput: any[],\n options: CircuitJsonUtilOptions = {},\n) => {\n const circuitJson = circuitJsonInput as AnyCircuitElement[]\n let internalStore: InternalStore = (circuitJson as any)._internal_store\n if (!internalStore) {\n internalStore = {\n counts: {},\n editCount: 0,\n } as InternalStore\n ;(circuitJson as any)._internal_store = internalStore\n\n // Initialize counts\n for (const elm of circuitJson) {\n const type = elm.type\n const idVal = (elm as any)[`${type}_id`]\n if (!idVal) continue\n const idNum = Number.parseInt(idVal.split(\"_\").pop())\n if (!Number.isNaN(idNum)) {\n internalStore.counts[type] = Math.max(\n internalStore.counts[type] ?? 0,\n idNum,\n )\n }\n }\n }\n const su = new Proxy(\n {},\n {\n get: (proxy_target: any, prop: string) => {\n if (prop === \"toArray\") {\n return () => {\n ;(circuitJson as any).editCount = internalStore.editCount\n return circuitJson\n }\n }\n if (prop === \"editCount\") {\n return internalStore.editCount\n }\n\n if (prop === \"subtree\") {\n return (opts: SubtreeOptions) =>\n cju(buildSubtree(circuitJson, opts), options)\n }\n\n const component_type = prop\n\n return {\n get: (id: string) =>\n circuitJson.find(\n (e: any) =>\n e.type === component_type && e[`${component_type}_id`] === id,\n ),\n getUsing: (using: any) => {\n const keys = Object.keys(using)\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\",\n )\n }\n const join_key = keys[0] as string\n const join_type = join_key.replace(\"_id\", \"\")\n const joiner: any = circuitJson.find(\n (e: any) =>\n e.type === join_type && e[join_key] === using[join_key],\n )\n if (!joiner) return null\n return circuitJson.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joiner[`${component_type}_id`],\n )\n },\n getWhere: (where: any) => {\n const keys = Object.keys(where)\n return circuitJson.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n )\n },\n list: (where?: any) => {\n const keys = !where ? [] : Object.keys(where)\n return circuitJson.filter(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n )\n },\n insert: (elm: any) => {\n internalStore.counts[component_type] ??= -1\n internalStore.counts[component_type]++\n const index = internalStore.counts[component_type]\n const newElm = {\n type: component_type,\n [`${component_type}_id`]: `${component_type}_${index}`,\n ...elm,\n }\n\n if (options.validateInserts) {\n const parser =\n (Soup as any)[component_type] ?? Soup.any_soup_element\n parser.parse(newElm)\n }\n\n circuitJson.push(newElm)\n internalStore.editCount++\n return newElm\n },\n delete: (id: string) => {\n const elm = circuitJson.find(\n (e) => (e as any)[`${component_type}_id`] === id,\n )\n if (!elm) return\n circuitJson.splice(circuitJson.indexOf(elm), 1)\n internalStore.editCount++\n },\n update: (id: string, newProps: any) => {\n const elm = circuitJson.find(\n (e) =>\n e.type === component_type &&\n (e as any)[`${component_type}_id`] === id,\n )\n if (!elm) return null\n Object.assign(elm, newProps)\n internalStore.editCount++\n return elm\n },\n select: (selector: string) => {\n // TODO when applySelector is isolated we can use it, until then we\n // do a poor man's selector implementation for two common cases\n if (component_type === \"source_component\") {\n return circuitJson.find(\n (e) =>\n e.type === \"source_component\" &&\n e.name === selector.replace(/\\./g, \"\"),\n )\n } else if (\n component_type === \"pcb_port\" ||\n component_type === \"source_port\" ||\n component_type === \"schematic_port\"\n ) {\n const [component_name, port_selector] = selector\n .replace(/\\./g, \"\")\n .split(/[\\s\\>]+/)\n const source_component = circuitJson.find(\n (e) =>\n e.type === \"source_component\" && e.name === component_name,\n ) as SourceComponentBase\n if (!source_component) return null\n const source_port = circuitJson.find(\n (e) =>\n e.type === \"source_port\" &&\n e.source_component_id ===\n source_component.source_component_id &&\n (e.name === port_selector ||\n (e.port_hints ?? []).includes(port_selector!)),\n ) as SourcePort\n if (!source_port) return null\n if (component_type === \"source_port\") return source_port\n\n if (component_type === \"pcb_port\") {\n return circuitJson.find(\n (e) =>\n e.type === \"pcb_port\" &&\n e.source_port_id === source_port.source_port_id,\n )\n } else if (component_type === \"schematic_port\") {\n return circuitJson.find(\n (e) =>\n e.type === \"schematic_port\" &&\n e.source_port_id === source_port.source_port_id,\n )\n }\n }\n },\n }\n },\n },\n )\n\n return su\n}) as any\ncju.unparsed = cju as any\n\nexport const su = cju\n\nexport default cju\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport type SubtreeOptions = {\n subcircuit_id?: string\n source_group_id?: string\n}\n\nfunction connect(\n map: Map<AnyCircuitElement, Set<AnyCircuitElement>>,\n a: AnyCircuitElement | undefined,\n b: AnyCircuitElement | undefined,\n) {\n if (!a || !b) return\n let setA = map.get(a)\n if (!setA) {\n setA = new Set()\n map.set(a, setA)\n }\n setA.add(b)\n let setB = map.get(b)\n if (!setB) {\n setB = new Set()\n map.set(b, setB)\n }\n setB.add(a)\n}\n\nexport function buildSubtree(\n soup: AnyCircuitElement[],\n opts: SubtreeOptions,\n): AnyCircuitElement[] {\n if (!opts.subcircuit_id && !opts.source_group_id) return [...soup]\n\n const idMap = new Map<string, AnyCircuitElement>()\n for (const elm of soup) {\n const idVal = (elm as any)[`${elm.type}_id`]\n if (typeof idVal === \"string\") {\n idMap.set(idVal, elm)\n }\n }\n\n const adj = new Map<AnyCircuitElement, Set<AnyCircuitElement>>()\n for (const elm of soup) {\n const entries = Object.entries(elm as any)\n for (const [key, val] of entries) {\n if (key === \"parent_source_group_id\") continue\n if (key.endsWith(\"_id\") && typeof val === \"string\") {\n const other = idMap.get(val)\n connect(adj, elm, other)\n } else if (key.endsWith(\"_ids\") && Array.isArray(val)) {\n for (const v of val) {\n if (typeof v === \"string\") {\n const other = idMap.get(v)\n connect(adj, elm, other)\n }\n }\n }\n }\n }\n\n const queue: AnyCircuitElement[] = []\n const included = new Set<AnyCircuitElement>()\n\n for (const elm of soup) {\n if (\n (opts.subcircuit_id &&\n (elm as any).subcircuit_id === opts.subcircuit_id) ||\n (opts.source_group_id &&\n ((elm as any).source_group_id === opts.source_group_id ||\n (Array.isArray((elm as any).member_source_group_ids) &&\n (elm as any).member_source_group_ids.includes(\n opts.source_group_id,\n ))))\n ) {\n queue.push(elm)\n included.add(elm)\n }\n }\n\n while (queue.length > 0) {\n const elm = queue.shift()!\n const neighbors = adj.get(elm)\n if (!neighbors) continue\n for (const n of neighbors) {\n if (!included.has(n)) {\n included.add(n)\n queue.push(n)\n }\n }\n }\n\n return soup.filter((e) => included.has(e))\n}\n","import type {\n AnyCircuitElement,\n AnyCircuitElementInput,\n SourceComponentBase,\n SourcePort,\n} from \"circuit-json\"\nimport * as Soup from \"circuit-json\"\nimport type {\n CircuitJsonOps,\n CircuitJsonUtilObjects as CircuitJsonUtilObjects,\n CircuitJsonInputUtilObjects as CircuitJsonInputUtilObjects,\n} from \"./cju\"\n\nexport type IndexedCircuitJsonUtilOptions = {\n validateInserts?: boolean\n indexConfig?: {\n // Enable specific indexes for faster lookups\n byId?: boolean\n byType?: boolean\n byRelation?: boolean\n bySubcircuit?: boolean\n byCustomField?: string[]\n }\n}\n\nexport type GetIndexedCircuitJsonUtilFn = ((\n soup: AnyCircuitElement[],\n options?: IndexedCircuitJsonUtilOptions,\n) => CircuitJsonUtilObjects) & {\n unparsed: (soup: AnyCircuitElementInput[]) => CircuitJsonInputUtilObjects\n}\n\ninterface InternalStore {\n counts: Record<string, number>\n editCount: number\n // Indexes for faster lookups\n indexes: {\n byId?: Map<string, AnyCircuitElement>\n byType?: Map<string, AnyCircuitElement[]>\n // Maps relation fields (like component_id) to elements\n byRelation?: Map<string, Map<string, AnyCircuitElement[]>>\n // Maps subcircuit_id to elements\n bySubcircuit?: Map<string, AnyCircuitElement[]>\n // Custom field indexes\n byCustomField?: Map<string, Map<string, AnyCircuitElement[]>>\n }\n}\n\n// Creates a unique key for the ID index\nfunction createIdKey(element: AnyCircuitElement): string {\n const type = element.type\n return `${type}:${(element as any)[`${type}_id`]}`\n}\n\nexport const cjuIndexed: GetIndexedCircuitJsonUtilFn = ((\n soup: AnyCircuitElement[],\n options: IndexedCircuitJsonUtilOptions = {},\n) => {\n let internalStore: InternalStore = (soup as any)._internal_store_indexed\n\n if (!internalStore) {\n internalStore = {\n counts: {},\n editCount: 0,\n indexes: {},\n } as InternalStore\n\n // Initialize counts\n for (const elm of soup) {\n const type = elm.type\n const idVal = (elm as any)[`${type}_id`]\n if (!idVal) continue\n const idNum = Number.parseInt(idVal.split(\"_\").pop() || \"\")\n if (!Number.isNaN(idNum)) {\n internalStore.counts[type] = Math.max(\n internalStore.counts[type] ?? 0,\n idNum,\n )\n }\n }\n\n // Build indexes\n const indexConfig = options.indexConfig || {}\n const indexes = internalStore.indexes\n\n // Reset indexes before rebuilding\n if (indexConfig.byId) {\n indexes.byId = new Map()\n }\n\n if (indexConfig.byType) {\n indexes.byType = new Map()\n }\n\n if (indexConfig.byRelation) {\n indexes.byRelation = new Map()\n }\n\n if (indexConfig.bySubcircuit) {\n indexes.bySubcircuit = new Map()\n }\n\n if (indexConfig.byCustomField && indexConfig.byCustomField.length > 0) {\n indexes.byCustomField = new Map()\n for (const field of indexConfig.byCustomField) {\n indexes.byCustomField.set(field, new Map())\n }\n }\n\n // Build indexes\n for (const element of soup) {\n // Index by ID\n if (indexConfig.byId) {\n const idKey = createIdKey(element)\n indexes.byId!.set(idKey, element)\n }\n\n // Index by type\n if (indexConfig.byType) {\n const elementsOfType = indexes.byType!.get(element.type) || []\n elementsOfType.push(element)\n indexes.byType!.set(element.type, elementsOfType)\n }\n\n // Index by relation fields (fields ending with _id)\n if (indexConfig.byRelation) {\n const elementEntries = Object.entries(element)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${element.type}_id` &&\n typeof value === \"string\"\n ) {\n const relationTypeMap = indexes.byRelation!.get(key) || new Map()\n const relatedElements = relationTypeMap.get(value as string) || []\n relatedElements.push(element)\n relationTypeMap.set(value as string, relatedElements)\n indexes.byRelation!.set(key, relationTypeMap)\n }\n }\n }\n\n // Index by subcircuit_id\n if (indexConfig.bySubcircuit && \"subcircuit_id\" in element) {\n const subcircuitId = (element as any).subcircuit_id\n if (subcircuitId && typeof subcircuitId === \"string\") {\n const subcircuitElements =\n indexes.bySubcircuit!.get(subcircuitId) || []\n subcircuitElements.push(element)\n indexes.bySubcircuit!.set(subcircuitId, subcircuitElements)\n }\n }\n\n // Index by custom fields\n if (indexConfig.byCustomField && indexes.byCustomField) {\n for (const field of indexConfig.byCustomField) {\n if (field in element) {\n const fieldValue = (element as any)[field]\n if (\n fieldValue !== undefined &&\n (typeof fieldValue === \"string\" || typeof fieldValue === \"number\")\n ) {\n const fieldValueStr = String(fieldValue)\n const fieldMap = indexes.byCustomField.get(field)!\n const elementsWithFieldValue = fieldMap.get(fieldValueStr) || []\n elementsWithFieldValue.push(element)\n fieldMap.set(fieldValueStr, elementsWithFieldValue)\n }\n }\n }\n }\n }\n // Store internal state\n ;(soup as any)._internal_store_indexed = internalStore\n }\n\n const suIndexed = new Proxy(\n {},\n {\n get: (proxy_target: any, prop: string) => {\n if (prop === \"toArray\") {\n return () => {\n ;(soup as any).editCount = internalStore.editCount\n return soup\n }\n }\n if (prop === \"editCount\") {\n return internalStore.editCount\n }\n\n const component_type = prop\n\n return {\n get: (id: string) => {\n const indexConfig = options.indexConfig || {}\n\n // Use ID index if available\n if (indexConfig.byId && internalStore.indexes.byId) {\n return (\n (internalStore.indexes.byId.get(\n `${component_type}:${id}`,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Use type index if available\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n return (\n (elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Fallback to regular search\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type && e[`${component_type}_id`] === id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n },\n\n getUsing: (using: any) => {\n const indexConfig = options.indexConfig || {}\n const keys = Object.keys(using)\n\n if (keys.length !== 1) {\n throw new Error(\n \"getUsing requires exactly one key, e.g. { pcb_component_id }\",\n )\n }\n\n const join_key = keys[0] as string\n const join_type = join_key.replace(\"_id\", \"\")\n\n // Use relation index if available\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n const relationMap = internalStore.indexes.byRelation.get(join_key)\n if (relationMap) {\n const relatedElements = relationMap.get(using[join_key]) || []\n const joiner = relatedElements.find((e) => e.type === join_type)\n\n if (!joiner) return null\n\n // Now find the element of component_type with matching ID\n const joinerId =\n joiner[`${component_type}_id` as keyof typeof joiner]\n\n if (indexConfig.byId && internalStore.indexes.byId) {\n return (\n (internalStore.indexes.byId.get(\n `${component_type}:${joinerId}`,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n return (\n (elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === joinerId,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joinerId,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n }\n\n // Fallback to regular approach\n const joiner: any = soup.find(\n (e: any) =>\n e.type === join_type && e[join_key] === using[join_key],\n )\n\n if (!joiner) return null\n\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type &&\n e[`${component_type}_id`] === joiner[`${component_type}_id`],\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n },\n\n getWhere: (where: any) => {\n const indexConfig = options.indexConfig || {}\n const keys = Object.keys(where)\n\n // If we're looking by a single property and it's indexed as a custom field\n if (\n keys.length === 1 &&\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n const field = keys[0]\n const fieldMap = internalStore.indexes.byCustomField.get(field!)\n\n if (fieldMap) {\n const fieldValue = String(where[field!])\n const elementsWithFieldValue = fieldMap.get(fieldValue) || []\n\n return (\n (elementsWithFieldValue.find(\n (e: any) => e.type === component_type,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n }\n\n // If we're looking by subcircuit_id and it's indexed\n if (\n \"subcircuit_id\" in where &&\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit\n ) {\n const subcircuitId = where.subcircuit_id\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n\n return (\n (subcircuitElements.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Use type index if available to reduce search space\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n\n return (\n (elementsOfType.find((e: any) =>\n keys.every((key) => e[key] === where[key]),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n\n // Fallback to regular approach\n return (\n (soup.find(\n (e: any) =>\n e.type === component_type &&\n keys.every((key) => e[key] === where[key]),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n },\n\n list: (where?: any) => {\n const indexConfig = options.indexConfig || {}\n const keys = !where ? [] : Object.keys(where)\n\n // If no filters, just return all elements of this type using the type index\n if (\n keys.length === 0 &&\n indexConfig.byType &&\n internalStore.indexes.byType\n ) {\n return (internalStore.indexes.byType.get(component_type) ||\n []) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >[]\n }\n\n // If filtering by subcircuit_id and it's the only filter\n if (\n keys.length === 1 &&\n keys[0] === \"subcircuit_id\" &&\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit\n ) {\n const subcircuitId = where.subcircuit_id\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n\n return subcircuitElements.filter(\n (e: any) => e.type === component_type,\n ) as Extract<AnyCircuitElement, { type: typeof component_type }>[]\n }\n\n // Start with all elements of this type to reduce search space\n let elementsToFilter: AnyCircuitElement[]\n\n if (indexConfig.byType && internalStore.indexes.byType) {\n elementsToFilter =\n internalStore.indexes.byType.get(component_type) || []\n } else {\n elementsToFilter = soup.filter((e) => e.type === component_type)\n }\n\n // Apply remaining filters\n if (keys.length > 0) {\n return elementsToFilter.filter((e: any) =>\n keys.every((key) => e[key] === where[key]),\n ) as Extract<AnyCircuitElement, { type: typeof component_type }>[]\n }\n\n return elementsToFilter as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >[]\n },\n\n insert: (elm: any) => {\n internalStore.counts[component_type] ??= -1\n internalStore.counts[component_type]++\n const index = internalStore.counts[component_type]\n const newElm = {\n type: component_type,\n [`${component_type}_id`]: `${component_type}_${index}`,\n ...elm,\n }\n\n if (options.validateInserts) {\n const parser =\n (Soup as any)[component_type] ?? Soup.any_soup_element\n parser.parse(newElm)\n }\n\n soup.push(newElm)\n internalStore.editCount++\n\n // Update indexes with the new element\n const indexConfig = options.indexConfig || {}\n\n // Update ID index\n if (indexConfig.byId && internalStore.indexes.byId) {\n const idKey = createIdKey(newElm)\n internalStore.indexes.byId.set(idKey, newElm)\n }\n\n // Update type index\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n elementsOfType.push(newElm)\n internalStore.indexes.byType.set(component_type, elementsOfType)\n }\n\n // Update relation index\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n const elementEntries = Object.entries(newElm)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${newElm.type}_id` &&\n typeof value === \"string\"\n ) {\n const relationTypeMap =\n internalStore.indexes.byRelation.get(key) || new Map()\n const relatedElements =\n relationTypeMap.get(value as string) || []\n relatedElements.push(newElm)\n relationTypeMap.set(value as string, relatedElements)\n internalStore.indexes.byRelation.set(key, relationTypeMap)\n }\n }\n }\n\n // Update subcircuit index\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in newElm\n ) {\n const subcircuitId = (newElm as any).subcircuit_id\n if (subcircuitId && typeof subcircuitId === \"string\") {\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n subcircuitElements.push(newElm)\n internalStore.indexes.bySubcircuit.set(\n subcircuitId,\n subcircuitElements,\n )\n }\n }\n\n // Update custom field indexes\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const field of indexConfig.byCustomField) {\n if (field in newElm) {\n const fieldValue = (newElm as any)[field]\n if (\n fieldValue !== undefined &&\n (typeof fieldValue === \"string\" ||\n typeof fieldValue === \"number\")\n ) {\n const fieldValueStr = String(fieldValue)\n const fieldMap =\n internalStore.indexes.byCustomField.get(field)!\n const elementsWithFieldValue =\n fieldMap.get(fieldValueStr) || []\n elementsWithFieldValue.push(newElm)\n fieldMap.set(fieldValueStr, elementsWithFieldValue)\n }\n }\n }\n }\n\n return newElm\n },\n\n delete: (id: string) => {\n const indexConfig = options.indexConfig || {}\n let elm: AnyCircuitElement | undefined\n\n // Find the element to delete\n if (indexConfig.byId && internalStore.indexes.byId) {\n elm = internalStore.indexes.byId.get(`${component_type}:${id}`)\n } else if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n elm = elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === id,\n )\n } else {\n elm = soup.find((e) => (e as any)[`${component_type}_id`] === id)\n }\n\n if (!elm) return\n\n // Remove from array\n const elmIndex = soup.indexOf(elm)\n if (elmIndex >= 0) {\n soup.splice(elmIndex, 1)\n internalStore.editCount++\n }\n\n // Remove from indexes\n if (indexConfig.byId && internalStore.indexes.byId) {\n const idKey = createIdKey(elm)\n internalStore.indexes.byId.delete(idKey)\n }\n\n if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n const filteredElements = elementsOfType.filter(\n (e: any) => e[`${component_type}_id`] !== id,\n )\n internalStore.indexes.byType.set(component_type, filteredElements)\n }\n\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n // This is more complex - we need to find and remove from all relation maps\n // where this element appears\n for (const [\n relationKey,\n relationMap,\n ] of internalStore.indexes.byRelation.entries()) {\n for (const [relationValue, elements] of relationMap.entries()) {\n const updatedElements = elements.filter((e) => e !== elm)\n\n if (updatedElements.length === 0) {\n relationMap.delete(relationValue)\n } else {\n relationMap.set(relationValue, updatedElements)\n }\n }\n }\n }\n\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in elm\n ) {\n const subcircuitId = (elm as any).subcircuit_id\n if (subcircuitId) {\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n const updatedElements = subcircuitElements.filter(\n (e) => e !== elm,\n )\n\n if (updatedElements.length === 0) {\n internalStore.indexes.bySubcircuit.delete(subcircuitId)\n } else {\n internalStore.indexes.bySubcircuit.set(\n subcircuitId,\n updatedElements,\n )\n }\n }\n }\n\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const fieldMap of internalStore.indexes.byCustomField.values()) {\n for (const [fieldValue, elements] of fieldMap.entries()) {\n const updatedElements = elements.filter((e) => e !== elm)\n\n if (updatedElements.length === 0) {\n fieldMap.delete(fieldValue)\n } else {\n fieldMap.set(fieldValue, updatedElements)\n }\n }\n }\n }\n },\n\n update: (id: string, newProps: any) => {\n const indexConfig = options.indexConfig || {}\n let elm: AnyCircuitElement | undefined | null\n\n // Find the element to update\n if (indexConfig.byId && internalStore.indexes.byId) {\n elm = internalStore.indexes.byId.get(`${component_type}:${id}`)\n } else if (indexConfig.byType && internalStore.indexes.byType) {\n const elementsOfType =\n internalStore.indexes.byType.get(component_type) || []\n elm = elementsOfType.find(\n (e: any) => e[`${component_type}_id`] === id,\n )\n } else {\n elm = soup.find(\n (e) =>\n e.type === component_type &&\n (e as any)[`${component_type}_id`] === id,\n )\n }\n\n if (!elm) return null\n\n // Need to remove from indexes before updating\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n // Remove from relation indexes\n const elementEntries = Object.entries(elm)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${elm.type}_id` &&\n typeof value === \"string\"\n ) {\n if (key in newProps && newProps[key] !== value) {\n const relationTypeMap =\n internalStore.indexes.byRelation.get(key)\n if (relationTypeMap) {\n const relatedElements =\n relationTypeMap.get(value as string) || []\n const updatedElements = relatedElements.filter(\n (e) => e !== elm,\n )\n\n if (updatedElements.length === 0) {\n relationTypeMap.delete(value as string)\n } else {\n relationTypeMap.set(value as string, updatedElements)\n }\n }\n }\n }\n }\n }\n\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in elm &&\n \"subcircuit_id\" in newProps\n ) {\n const oldSubcircuitId = (elm as any).subcircuit_id\n const newSubcircuitId = newProps.subcircuit_id\n\n if (oldSubcircuitId !== newSubcircuitId) {\n // Remove from old subcircuit index\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(oldSubcircuitId) || []\n const updatedElements = subcircuitElements.filter(\n (e) => e !== elm,\n )\n\n if (updatedElements.length === 0) {\n internalStore.indexes.bySubcircuit.delete(oldSubcircuitId)\n } else {\n internalStore.indexes.bySubcircuit.set(\n oldSubcircuitId,\n updatedElements,\n )\n }\n }\n }\n\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const field of indexConfig.byCustomField) {\n if (\n field in elm &&\n field in newProps &&\n (elm as any)[field] !== newProps[field]\n ) {\n const fieldMap =\n internalStore.indexes.byCustomField.get(field)\n if (fieldMap) {\n const oldValue = String((elm as any)[field])\n const elements = fieldMap.get(oldValue) || []\n const updatedElements = elements.filter((e) => e !== elm)\n\n if (updatedElements.length === 0) {\n fieldMap.delete(oldValue)\n } else {\n fieldMap.set(oldValue, updatedElements)\n }\n }\n }\n }\n }\n\n // Update the element\n Object.assign(elm, newProps)\n internalStore.editCount++\n\n // Add to indexes with updated values\n if (indexConfig.byRelation && internalStore.indexes.byRelation) {\n const elementEntries = Object.entries(elm)\n for (const [key, value] of elementEntries) {\n if (\n key.endsWith(\"_id\") &&\n key !== `${elm.type}_id` &&\n typeof value === \"string\"\n ) {\n if (key in newProps) {\n const relationTypeMap: any =\n internalStore.indexes.byRelation.get(key) || new Map()\n const relatedElements: any =\n relationTypeMap.get(value as string) || []\n\n if (!relatedElements.includes(elm)) {\n relatedElements.push(elm)\n relationTypeMap.set(value as string, relatedElements)\n internalStore.indexes.byRelation.set(key, relationTypeMap)\n }\n }\n }\n }\n }\n\n if (\n indexConfig.bySubcircuit &&\n internalStore.indexes.bySubcircuit &&\n \"subcircuit_id\" in elm &&\n \"subcircuit_id\" in newProps\n ) {\n const subcircuitId = (elm as any).subcircuit_id\n if (subcircuitId && typeof subcircuitId === \"string\") {\n const subcircuitElements =\n internalStore.indexes.bySubcircuit.get(subcircuitId) || []\n\n if (!subcircuitElements.includes(elm)) {\n subcircuitElements.push(elm)\n internalStore.indexes.bySubcircuit.set(\n subcircuitId,\n subcircuitElements,\n )\n }\n }\n }\n\n if (\n indexConfig.byCustomField &&\n internalStore.indexes.byCustomField\n ) {\n for (const field of indexConfig.byCustomField) {\n if (field in elm && field in newProps) {\n const fieldValue: any = (elm as any)[field]\n if (\n fieldValue !== undefined &&\n (typeof fieldValue === \"string\" ||\n typeof fieldValue === \"number\")\n ) {\n const fieldValueStr = String(fieldValue)\n const fieldMap =\n internalStore.indexes.byCustomField.get(field)!\n const elementsWithFieldValue =\n fieldMap.get(fieldValueStr) || []\n\n if (!elementsWithFieldValue.includes(elm)) {\n elementsWithFieldValue.push(elm)\n fieldMap.set(fieldValueStr, elementsWithFieldValue)\n }\n }\n }\n }\n }\n\n return elm as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >\n },\n\n select: (selector: string) => {\n // Selection by selector is specialized enough that we don't use indexes here\n // TODO when applySelector is isolated we can use it, until then we\n // do a poor man's selector implementation for two common cases\n if (component_type === \"source_component\") {\n return (\n (soup.find(\n (e) =>\n e.type === \"source_component\" &&\n e.name === selector.replace(/\\./g, \"\"),\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n } else if (\n component_type === \"pcb_port\" ||\n component_type === \"source_port\" ||\n component_type === \"schematic_port\"\n ) {\n const [component_name, port_selector] = selector\n .replace(/\\./g, \"\")\n .split(/[\\s\\>]+/)\n const source_component = soup.find(\n (e) =>\n e.type === \"source_component\" && e.name === component_name,\n ) as SourceComponentBase\n if (!source_component) return null\n const source_port = soup.find(\n (e) =>\n e.type === \"source_port\" &&\n e.source_component_id ===\n source_component.source_component_id &&\n (e.name === port_selector ||\n (e.port_hints ?? []).includes(port_selector!)),\n ) as SourcePort\n if (!source_port) return null\n if (component_type === \"source_port\")\n return source_port as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >\n\n if (component_type === \"pcb_port\") {\n return (\n (soup.find(\n (e) =>\n e.type === \"pcb_port\" &&\n e.source_port_id === source_port.source_port_id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n } else if (component_type === \"schematic_port\") {\n return (\n (soup.find(\n (e) =>\n e.type === \"schematic_port\" &&\n e.source_port_id === source_port.source_port_id,\n ) as Extract<\n AnyCircuitElement,\n { type: typeof component_type }\n >) || null\n )\n }\n }\n\n return null\n },\n }\n },\n },\n )\n\n return suIndexed\n}) as any\n\ncjuIndexed.unparsed = cjuIndexed as any\n\nexport default cjuIndexed\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { type Matrix, applyToPoint, decomposeTSR } from \"transformation-matrix\"\nimport {\n directionToVec,\n rotateDirection,\n vecToDirection,\n} from \"./direction-to-vec\"\n\nexport const transformSchematicElement = (\n elm: AnyCircuitElement,\n matrix: Matrix,\n) => {\n if (elm.type === \"schematic_component\") {\n // TODO handle rotation\n elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_port\") {\n elm.center = applyToPoint(matrix, elm.center)\n\n if (elm.facing_direction) {\n elm.facing_direction = rotateDirection(\n elm.facing_direction,\n -(Math.atan2(matrix.b, matrix.a) / Math.PI) * 2,\n )\n }\n } else if (elm.type === \"schematic_text\") {\n elm.position = applyToPoint(matrix, elm.position)\n // } else if (elm.type === \"schematic_group\") {\n // elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"schematic_trace\") {\n const anyElm = elm as any\n anyElm.route = (anyElm.route ?? []).map((rp: any) => {\n const tp = applyToPoint(matrix, rp) as { x: number; y: number }\n rp.x = tp.x\n rp.y = tp.y\n return rp\n })\n if (Array.isArray(anyElm.junctions)) {\n anyElm.junctions = anyElm.junctions.map((j: any) => {\n const tp = applyToPoint(matrix, j) as { x: number; y: number }\n j.x = tp.x\n j.y = tp.y\n return j\n })\n }\n if (Array.isArray(anyElm.edges)) {\n anyElm.edges = anyElm.edges.map((e: any) => {\n e.from = applyToPoint(matrix, e.from)\n e.to = applyToPoint(matrix, e.to)\n return e\n })\n }\n } else if (elm.type === \"schematic_box\") {\n const { x, y } = applyToPoint(matrix, { x: elm.x, y: elm.y })\n elm.x = x\n elm.y = y\n } else if (elm.type === \"schematic_line\") {\n const { x: x1, y: y1 } = applyToPoint(matrix, { x: elm.x1, y: elm.y1 })\n const { x: x2, y: y2 } = applyToPoint(matrix, { x: elm.x2, y: elm.y2 })\n elm.x1 = x1\n elm.y1 = y1\n elm.x2 = x2\n elm.y2 = y2\n }\n return elm\n}\n\nexport const transformSchematicElements = (\n elms: AnyCircuitElement[],\n matrix: Matrix,\n) => {\n return elms.map((elm) => transformSchematicElement(elm, matrix))\n}\n\nexport const transformPCBElement = (elm: AnyCircuitElement, matrix: Matrix) => {\n const tsr = decomposeTSR(matrix)\n const flipPadWidthHeight =\n Math.round(tsr.rotation.angle / (Math.PI / 2)) % 2 === 1\n if (\n elm.type === \"pcb_plated_hole\" ||\n elm.type === \"pcb_hole\" ||\n elm.type === \"pcb_via\" ||\n elm.type === \"pcb_smtpad\" ||\n elm.type === \"pcb_port\"\n ) {\n const { x, y } = applyToPoint(matrix, {\n x: Number((elm as any).x),\n y: Number((elm as any).y),\n })\n ;(elm as any).x = x\n ;(elm as any).y = y\n } else if (elm.type === \"pcb_keepout\" || elm.type === \"pcb_board\") {\n // TODO adjust size/rotation\n elm.center = applyToPoint(matrix, elm.center)\n } else if (\n elm.type === \"pcb_silkscreen_text\" ||\n elm.type === \"pcb_fabrication_note_text\"\n ) {\n elm.anchor_position = applyToPoint(matrix, elm.anchor_position)\n } else if (\n elm.type === \"pcb_silkscreen_circle\" ||\n elm.type === \"pcb_silkscreen_rect\"\n ) {\n elm.center = applyToPoint(matrix, elm.center)\n } else if (elm.type === \"pcb_component\") {\n elm.center = applyToPoint(matrix, elm.center)\n elm.rotation = elm.rotation + (tsr.rotation.angle / Math.PI) * 180\n elm.rotation = elm.rotation % 360\n if (flipPadWidthHeight) {\n ;[elm.width, elm.height] = [elm.height, elm.width]\n }\n } else if (\n elm.type === \"pcb_silkscreen_path\" ||\n elm.type === \"pcb_trace\" ||\n elm.type === \"pcb_fabrication_note_path\"\n ) {\n elm.route = elm.route.map((rp) => {\n const tp = applyToPoint(matrix, rp) as { x: number; y: number }\n rp.x = tp.x\n rp.y = tp.y\n return rp\n })\n } else if (elm.type === \"pcb_silkscreen_line\") {\n const p1 = { x: elm.x1, y: elm.y1 }\n const p2 = { x: elm.x2, y: elm.y2 }\n const p1t = applyToPoint(matrix, p1)\n const p2t = applyToPoint(matrix, p2)\n elm.x1 = p1t.x\n elm.y1 = p1t.y\n elm.x2 = p2t.x\n elm.y2 = p2t.y\n } else if (elm.type === \"cad_component\") {\n const newPos = applyToPoint(matrix, {\n x: elm.position.x,\n y: elm.position.y,\n })\n elm.position.x = newPos.x\n elm.position.y = newPos.y\n }\n return elm\n}\n\nexport const transformPCBElements = (\n elms: AnyCircuitElement[],\n matrix: Matrix,\n) => {\n const tsr = decomposeTSR(matrix)\n const quarterTurns = Math.round(tsr.rotation.angle / (Math.PI / 2))\n const flipPadWidthHeight = Math.abs(quarterTurns) % 2 === 1\n let transformedElms = elms.map((elm) => transformPCBElement(elm, matrix))\n if (flipPadWidthHeight) {\n transformedElms = transformedElms.map((elm) => {\n if (elm.type === \"pcb_smtpad\" && elm.shape === \"rect\") {\n ;[elm.width, elm.height] = [elm.height, elm.width]\n }\n return elm\n })\n }\n return transformedElms\n}\n","export const directionToVec = (direction: \"up\" | \"down\" | \"left\" | \"right\") => {\n if (direction === \"up\") return { x: 0, y: 1 }\n else if (direction === \"down\") return { x: 0, y: -1 }\n else if (direction === \"left\") return { x: -1, y: 0 }\n else if (direction === \"right\") return { x: 1, y: 0 }\n else throw new Error(\"Invalid direction\")\n}\n\nexport const vecToDirection = ({ x, y }: { x: number; y: number }) => {\n if (x > y) y = 0\n if (y > x) x = 0\n if (x > 0 && y === 0) return \"right\"\n else if (x < 0 && y === 0) return \"left\"\n else if (x === 0 && y > 0) return \"up\"\n else if (x === 0 && y < 0) return \"down\"\n else throw new Error(`Invalid vector for direction conversion (${x}, ${y})`)\n}\n\nexport const rotateClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"right\"\n else if (direction === \"right\") return \"down\"\n else if (direction === \"down\") return \"left\"\n else if (direction === \"left\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateCounterClockwise = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"left\"\n else if (direction === \"left\") return \"down\"\n else if (direction === \"down\") return \"right\"\n else if (direction === \"right\") return \"up\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const rotateDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\",\n num90DegreeClockwiseTurns: number\n) => {\n while (num90DegreeClockwiseTurns > 0) {\n direction = rotateClockwise(direction)\n num90DegreeClockwiseTurns--\n }\n while (num90DegreeClockwiseTurns < 0) {\n direction = rotateCounterClockwise(direction)\n num90DegreeClockwiseTurns++\n }\n return direction\n}\n\nexport const oppositeDirection = (\n direction: \"up\" | \"down\" | \"left\" | \"right\"\n) => {\n if (direction === \"up\") return \"down\"\n else if (direction === \"down\") return \"up\"\n else if (direction === \"left\") return \"right\"\n else if (direction === \"right\") return \"left\"\n throw new Error(`Invalid direction: ${direction}`)\n}\n\nexport const oppositeSide = (\n sideOrDir: \"up\" | \"down\" | \"top\" | \"bottom\" | \"left\" | \"right\"\n) => {\n if (sideOrDir === \"top\" || sideOrDir === \"up\") return \"bottom\"\n else if (sideOrDir === \"bottom\" || sideOrDir === \"down\") return \"top\"\n else if (sideOrDir === \"left\") return \"right\"\n else if (sideOrDir === \"right\") return \"left\"\n throw new Error(`Invalid sideOrDir: ${sideOrDir}`)\n}\n","import * as parsel from \"parsel-js\"\nimport { convertAbbrToType } from \"./convert-abbreviation-to-soup-element-type\"\nimport type { AnyCircuitElement } from \"circuit-json\"\n\nconst filterByType = (\n elements: AnyCircuitElement[],\n type: string\n): AnyCircuitElement[] => {\n type = convertAbbrToType(type)\n return elements.filter(\n (elm) => (\"ftype\" in elm && elm.ftype === type) || elm.type === type\n )\n}\n\n/**\n * Filter elements to match the selector, e.g. to access the left port of a\n * resistor you can do \".R1 > port.left\"\n */\nexport const applySelector = (\n elements: AnyCircuitElement[],\n selectorRaw: string\n): AnyCircuitElement[] => {\n const selectorAST = parsel.parse(selectorRaw)\n return applySelectorAST(elements, selectorAST!)\n}\n\nconst doesElmMatchClassName = (elm: AnyCircuitElement, className: string) =>\n (\"name\" in elm && elm.name === className) ||\n (\"port_hints\" in elm && elm.port_hints?.includes(className))\n\nexport const applySelectorAST = (\n elements: AnyCircuitElement[],\n selectorAST: parsel.AST\n): AnyCircuitElement[] => {\n switch (selectorAST.type) {\n case \"complex\": {\n switch (selectorAST.combinator) {\n case \" \": // TODO technically should do a deep search\n case \">\": {\n const { left, right } = selectorAST\n if (left.type === \"class\" || left.type === \"type\") {\n // TODO should also check if content matches any element tags\n let matchElms: AnyCircuitElement[]\n if (left.type === \"class\") {\n matchElms = elements.filter((elm) =>\n doesElmMatchClassName(elm, left.name)\n )\n } else if (left.type === \"type\") {\n matchElms = filterByType(elements, left.name)\n } else {\n matchElms = []\n }\n\n const childrenOfMatchingElms = matchElms.flatMap((matchElm) =>\n elements.filter(\n (elm: any) =>\n elm[`${matchElm.type}_id`] ===\n (matchElm as any)[`${matchElm.type}_id`] && elm !== matchElm\n )\n )\n return applySelectorAST(childrenOfMatchingElms, right)\n } else {\n throw new Error(`unsupported selector type \"${left.type}\" `)\n }\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for complex combinator \"${selectorAST.combinator}\"`\n )\n }\n }\n return []\n }\n case \"compound\": {\n const conditionsToMatch = selectorAST.list.map((part) => {\n switch (part.type) {\n case \"class\": {\n return (elm: any) => doesElmMatchClassName(elm, part.name)\n }\n case \"type\": {\n const name = convertAbbrToType(part.name)\n return (elm: any) => elm.type === name\n }\n }\n })\n\n return elements.filter((elm) =>\n conditionsToMatch.every((condFn) => condFn?.(elm))\n )\n }\n case \"type\": {\n return filterByType(elements, selectorAST.name) as AnyCircuitElement[]\n }\n case \"class\": {\n return elements.filter((elm) =>\n doesElmMatchClassName(elm, selectorAST.name)\n )\n }\n default: {\n throw new Error(\n `Couldn't apply selector AST for type: \"${\n selectorAST.type\n }\" ${JSON.stringify(selectorAST, null, \" \")}`\n )\n }\n }\n}\n","export const convertAbbrToType = (abbr: string): string => {\n switch (abbr) {\n case \"port\":\n return \"source_port\"\n case \"net\":\n return \"source_net\"\n case \"power\":\n return \"simple_power_source\"\n case \"silkscreenpath\":\n return \"pcb_silkscreen_path\"\n }\n return abbr\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport const getElementId = (elm: AnyCircuitElement): string => {\n const type = elm.type\n const id = (elm as any)[`${type}_id`]\n return id\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { getElementId } from \"./get-element-id\"\n\nexport const getElementById = (\n soup: AnyCircuitElement[],\n id: string,\n): AnyCircuitElement | null => {\n return soup.find((elm) => getElementId(elm) === id) ?? null\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { cju } from \"../cju\"\n\nexport function getReadableNameForPcbTrace(\n soup: AnyCircuitElement[],\n pcb_trace_id: string,\n) {\n // Find the pcb_trace object\n const pcbTrace = cju(soup).pcb_trace.get(pcb_trace_id)\n\n if (!pcbTrace) {\n return `trace[${pcb_trace_id}]`\n }\n\n // Get the connected ports\n const connectedPcbPortIds: string[] = pcbTrace.route\n .flatMap((point: any) => [point.start_pcb_port_id, point.end_pcb_port_id])\n .filter(Boolean)\n\n if (connectedPcbPortIds.length === 0) {\n return `trace[${pcb_trace_id}]`\n }\n\n // Function to get component name and port hint\n function getComponentAndPortInfo(pcb_port_id: string) {\n const pcbPort = cju(soup).pcb_port.get(pcb_port_id)\n if (!pcbPort) return null\n\n const pcbComponent = cju(soup).pcb_component.get(pcbPort.pcb_component_id)\n if (!pcbComponent) return null\n const sourceComponent = cju(soup).source_component.get(\n pcbComponent.source_component_id,\n )\n if (!sourceComponent) return null\n\n const sourcePort = cju(soup).source_port.get(pcbPort.source_port_id)\n const portHint = sourcePort?.port_hints ? sourcePort.port_hints[1] : \"\"\n\n return {\n componentName: sourceComponent.name,\n portHint: portHint,\n }\n }\n\n // Generate the readable selector\n const selectorParts = connectedPcbPortIds.map((portId) => {\n const info = getComponentAndPortInfo(portId)\n if (info) {\n return `.${info.componentName} > port.${info.portHint}`\n }\n return `port[${portId}]`\n })\n\n return `trace[${selectorParts.join(\", \")}]`\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { cju } from \"../cju\"\n\nexport const getReadableNameForPcbPort = (\n soup: AnyCircuitElement[],\n pcb_port_id: string,\n): string => {\n const pcbPort = cju(soup).pcb_port.get(pcb_port_id)\n if (!pcbPort) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Get the component information\n const pcbComponent = cju(soup).pcb_component.get(pcbPort?.pcb_component_id)\n\n if (!pcbComponent) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Get the source component information\n const sourceComponent = cju(soup).source_component.get(\n pcbComponent.source_component_id,\n )\n\n if (!sourceComponent) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Get the source port information\n const sourcePort = cju(soup).source_port.get(pcbPort.source_port_id)\n\n if (!sourcePort) {\n return `pcb_port[#${pcb_port_id}]`\n }\n\n // Determine the pad number or hint\n let padIdentifier: string\n if (sourcePort?.port_hints && sourcePort.port_hints.length > 0) {\n padIdentifier = sourcePort.port_hints[0]!\n } else if (sourcePort.port_hints && sourcePort.port_hints.length > 0) {\n padIdentifier = sourcePort.port_hints[0]!\n } else {\n padIdentifier = pcb_port_id\n }\n\n return `pcb_port[.${sourceComponent.name} > .${padIdentifier}]`\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { cju } from \"../cju\"\nimport { getReadableNameForPcbPort } from \"./get-readable-name-for-pcb-port\"\n\nexport function getReadableNameForPcbSmtpad(\n soup: AnyCircuitElement[],\n pcb_smtpad_id: string,\n): string {\n // Find the pcb_smtpad object\n const pcbSmtpad = cju(soup).pcb_smtpad.get(pcb_smtpad_id)\n\n if (!pcbSmtpad || !pcbSmtpad.pcb_port_id) {\n return `smtpad[${pcb_smtpad_id}]`\n }\n\n return getReadableNameForPcbPort(soup, pcbSmtpad.pcb_port_id)\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { getReadableNameForPcbTrace } from \"./get-readable-name-for-pcb-trace\"\nimport { getReadableNameForPcbSmtpad } from \"./get-readable-name-for-pcb-smtpad\"\nimport { getReadableNameForPcbPort } from \"./get-readable-name-for-pcb-port\"\nimport { getElementById } from \"lib/get-element-by-id\"\nimport { getElementId } from \"lib/get-element-id\"\n\nexport const getReadableNameForElement = (\n soup: AnyCircuitElement[],\n elm: AnyCircuitElement | string,\n): string => {\n if (typeof elm === \"string\") {\n const elmObj = getElementById(soup, elm)\n if (!elmObj) `unknown (could not find element with id ${elm})`\n return getReadableNameForElement(soup, elmObj as any)\n }\n switch (elm.type) {\n case \"pcb_port\":\n return getReadableNameForPcbPort(soup, elm.pcb_port_id)\n case \"pcb_smtpad\":\n return getReadableNameForPcbSmtpad(soup, elm.pcb_smtpad_id)\n case \"pcb_trace\":\n return getReadableNameForPcbTrace(soup, elm.pcb_trace_id)\n case \"source_component\":\n return `source_component[${elm.name}]`\n default:\n return `${elm.type}[#${getElementId(elm)}]`\n }\n}\n\nexport {\n getReadableNameForPcbPort,\n getReadableNameForPcbSmtpad,\n getReadableNameForPcbTrace,\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport const getBoundsOfPcbElements = (\n elements: AnyCircuitElement[],\n): { minX: number; minY: number; maxX: number; maxY: number } => {\n let minX = Number.POSITIVE_INFINITY\n let minY = Number.POSITIVE_INFINITY\n let maxX = Number.NEGATIVE_INFINITY\n let maxY = Number.NEGATIVE_INFINITY\n\n for (const elm of elements) {\n if (!elm.type.startsWith(\"pcb_\")) continue\n\n let centerX: number | undefined\n let centerY: number | undefined\n\n let width: number | undefined\n let height: number | undefined\n\n if (\"x\" in elm && \"y\" in elm) {\n centerX = Number((elm as any).x)\n centerY = Number((elm as any).y)\n }\n\n if (\"outer_diameter\" in elm) {\n width = Number((elm as any).outer_diameter)\n height = Number((elm as any).outer_diameter)\n }\n\n if (\"width\" in elm) {\n width = Number((elm as any).width)\n }\n\n if (\"height\" in elm) {\n height = Number((elm as any).height)\n }\n\n if (\"center\" in elm) {\n // @ts-ignore\n centerX = elm.center.x\n // @ts-ignore\n centerY = elm.center.y\n }\n\n if (centerX !== undefined && centerY !== undefined) {\n minX = Math.min(minX, centerX)\n minY = Math.min(minY, centerY)\n maxX = Math.max(maxX, centerX)\n maxY = Math.max(maxY, centerY)\n\n if (width !== undefined && height !== undefined) {\n minX = Math.min(minX, centerX - width / 2)\n minY = Math.min(minY, centerY - height / 2)\n maxX = Math.max(maxX, centerX + width / 2)\n maxY = Math.max(maxY, centerY + height / 2)\n }\n\n if (\"radius\" in elm) {\n minX = Math.min(minX, centerX - elm.radius)\n minY = Math.min(minY, centerY - elm.radius)\n maxX = Math.max(maxX, centerX + elm.radius)\n maxY = Math.max(maxY, centerY + elm.radius)\n }\n } else if (elm.type === \"pcb_trace\") {\n for (const point of elm.route) {\n // TODO add trace thickness support\n minX = Math.min(minX, point.x)\n minY = Math.min(minY, point.y)\n maxX = Math.max(maxX, point.x)\n maxY = Math.max(maxY, point.y)\n }\n }\n }\n\n return { minX, minY, maxX, maxY }\n}\n","export function stringHash(str: string) {\n let hash = 0\n if (str.length == 0) return hash\n for (var i = 0; i < str.length; i++) {\n var char = str.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash // Convert to 32bit integer\n }\n return Math.abs(hash)\n}\n","import { stringHash } from \"./string-hash\"\n\nexport type LayoutDebugObject = {\n x: number\n y: number\n width: number\n height: number\n bg_color: string\n title: string\n content: Object\n secondary?: boolean\n}\n\n/**\n * Vendored from \"nice-color-palettes\" package\n */\nconst nice_color_palettes = [\n [\"#69d2e7\", \"#a7dbd8\", \"#e0e4cc\", \"#f38630\", \"#fa6900\"],\n [\"#fe4365\", \"#fc9d9a\", \"#f9cdad\", \"#c8c8a9\", \"#83af9b\"],\n [\"#ecd078\", \"#d95b43\", \"#c02942\", \"#542437\", \"#53777a\"],\n [\"#556270\", \"#4ecdc4\", \"#c7f464\", \"#ff6b6b\", \"#c44d58\"],\n [\"#774f38\", \"#e08e79\", \"#f1d4af\", \"#ece5ce\", \"#c5e0dc\"],\n [\"#e8ddcb\", \"#cdb380\", \"#036564\", \"#033649\", \"#031634\"],\n [\"#490a3d\", \"#bd1550\", \"#e97f02\", \"#f8ca00\", \"#8a9b0f\"],\n [\"#594f4f\", \"#547980\", \"#45ada8\", \"#9de0ad\", \"#e5fcc2\"],\n [\"#00a0b0\", \"#6a4a3c\", \"#cc333f\", \"#eb6841\", \"#edc951\"],\n [\"#e94e77\", \"#d68189\", \"#c6a49a\", \"#c6e5d9\", \"#f4ead5\"],\n [\"#3fb8af\", \"#7fc7af\", \"#dad8a7\", \"#ff9e9d\", \"#ff3d7f\"],\n [\"#d9ceb2\", \"#948c75\", \"#d5ded9\", \"#7a6a53\", \"#99b2b7\"],\n [\"#ffffff\", \"#cbe86b\", \"#f2e9e1\", \"#1c140d\", \"#cbe86b\"],\n [\"#efffcd\", \"#dce9be\", \"#555152\", \"#2e2633\", \"#99173c\"],\n [\"#343838\", \"#005f6b\", \"#008c9e\", \"#00b4cc\", \"#00dffc\"],\n [\"#413e4a\", \"#73626e\", \"#b38184\", \"#f0b49e\", \"#f7e4be\"],\n [\"#ff4e50\", \"#fc913a\", \"#f9d423\", \"#ede574\", \"#e1f5c4\"],\n [\"#99b898\", \"#fecea8\", \"#ff847c\", \"#e84a5f\", \"#2a363b\"],\n [\"#655643\", \"#80bca3\", \"#f6f7bd\", \"#e6ac27\", \"#bf4d28\"],\n [\"#00a8c6\", \"#40c0cb\", \"#f9f2e7\", \"#aee239\", \"#8fbe00\"],\n [\"#351330\", \"#424254\", \"#64908a\", \"#e8caa4\", \"#cc2a41\"],\n [\"#554236\", \"#f77825\", \"#d3ce3d\", \"#f1efa5\", \"#60b99a\"],\n [\"#5d4157\", \"#838689\", \"#a8caba\", \"#cad7b2\", \"#ebe3aa\"],\n [\"#8c2318\", \"#5e8c6a\", \"#88a65e\", \"#bfb35a\", \"#f2c45a\"],\n [\"#fad089\", \"#ff9c5b\", \"#f5634a\", \"#ed303c\", \"#3b8183\"],\n [\"#ff4242\", \"#f4fad2\", \"#d4ee5e\", \"#e1edb9\", \"#f0f2eb\"],\n [\"#f8b195\", \"#f67280\", \"#c06c84\", \"#6c5b7b\", \"#355c7d\"],\n [\"#d1e751\", \"#ffffff\", \"#000000\", \"#4dbce9\", \"#26ade4\"],\n [\"#1b676b\", \"#519548\", \"#88c425\", \"#bef202\", \"#eafde6\"],\n [\"#5e412f\", \"#fcebb6\", \"#78c0a8\", \"#f07818\", \"#f0a830\"],\n [\"#bcbdac\", \"#cfbe27\", \"#f27435\", \"#f02475\", \"#3b2d38\"],\n [\"#452632\", \"#91204d\", \"#e4844a\", \"#e8bf56\", \"#e2f7ce\"],\n [\"#eee6ab\", \"#c5bc8e\", \"#696758\", \"#45484b\", \"#36393b\"],\n [\"#f0d8a8\", \"#3d1c00\", \"#86b8b1\", \"#f2d694\", \"#fa2a00\"],\n [\"#2a044a\", \"#0b2e59\", \"#0d6759\", \"#7ab317\", \"#a0c55f\"],\n [\"#f04155\", \"#ff823a\", \"#f2f26f\", \"#fff7bd\", \"#95cfb7\"],\n [\"#b9d7d9\", \"#668284\", \"#2a2829\", \"#493736\", \"#7b3b3b\"],\n [\"#bbbb88\", \"#ccc68d\", \"#eedd99\", \"#eec290\", \"#eeaa88\"],\n [\"#b3cc57\", \"#ecf081\", \"#ffbe40\", \"#ef746f\", \"#ab3e5b\"],\n [\"#a3a948\", \"#edb92e\", \"#f85931\", \"#ce1836\", \"#009989\"],\n [\"#300030\", \"#480048\", \"#601848\", \"#c04848\", \"#f07241\"],\n [\"#67917a\", \"#170409\", \"#b8af03\", \"#ccbf82\", \"#e33258\"],\n [\"#aab3ab\", \"#c4cbb7\", \"#ebefc9\", \"#eee0b7\", \"#e8caaf\"],\n [\"#e8d5b7\", \"#0e2430\", \"#fc3a51\", \"#f5b349\", \"#e8d5b9\"],\n [\"#ab526b\", \"#bca297\", \"#c5ceae\", \"#f0e2a4\", \"#f4ebc3\"],\n [\"#607848\", \"#789048\", \"#c0d860\", \"#f0f0d8\", \"#604848\"],\n [\"#b6d8c0\", \"#c8d9bf\", \"#dadabd\", \"#ecdbbc\", \"#fedcba\"],\n [\"#a8e6ce\", \"#dcedc2\", \"#ffd3b5\", \"#ffaaa6\", \"#ff8c94\"],\n [\"#3e4147\", \"#fffedf\", \"#dfba69\", \"#5a2e2e\", \"#2a2c31\"],\n [\"#fc354c\", \"#29221f\", \"#13747d\", \"#0abfbc\", \"#fcf7c5\"],\n [\"#cc0c39\", \"#e6781e\", \"#c8cf02\", \"#f8fcc1\", \"#1693a7\"],\n [\"#1c2130\", \"#028f76\", \"#b3e099\", \"#ffeaad\", \"#d14334\"],\n [\"#a7c5bd\", \"#e5ddcb\", \"#eb7b59\", \"#cf4647\", \"#524656\"],\n [\"#dad6ca\", \"#1bb0ce\", \"#4f8699\", \"#6a5e72\", \"#563444\"],\n [\"#5c323e\", \"#a82743\", \"#e15e32\", \"#c0d23e\", \"#e5f04c\"],\n [\"#edebe6\", \"#d6e1c7\", \"#94c7b6\", \"#403b33\", \"#d3643b\"],\n [\"#fdf1cc\", \"#c6d6b8\", \"#987f69\", \"#e3ad40\", \"#fcd036\"],\n [\"#230f2b\", \"#f21d41\", \"#ebebbc\", \"#bce3c5\", \"#82b3ae\"],\n [\"#b9d3b0\", \"#81bda4\", \"#b28774\", \"#f88f79\", \"#f6aa93\"],\n [\"#3a111c\", \"#574951\", \"#83988e\", \"#bcdea5\", \"#e6f9bc\"],\n [\"#5e3929\", \"#cd8c52\", \"#b7d1a3\", \"#dee8be\", \"#fcf7d3\"],\n [\"#1c0113\", \"#6b0103\", \"#a30006\", \"#c21a01\", \"#f03c02\"],\n [\"#000000\", \"#9f111b\", \"#b11623\", \"#292c37\", \"#cccccc\"],\n [\"#382f32\", \"#ffeaf2\", \"#fcd9e5\", \"#fbc5d8\", \"#f1396d\"],\n [\"#e3dfba\", \"#c8d6bf\", \"#93ccc6\", \"#6cbdb5\", \"#1a1f1e\"],\n [\"#f6f6f6\", \"#e8e8e8\", \"#333333\", \"#990100\", \"#b90504\"],\n [\"#1b325f\", \"#9cc4e4\", \"#e9f2f9\", \"#3a89c9\", \"#f26c4f\"],\n [\"#a1dbb2\", \"#fee5ad\", \"#faca66\", \"#f7a541\", \"#f45d4c\"],\n [\"#c1b398\", \"#605951\", \"#fbeec2\", \"#61a6ab\", \"#accec0\"],\n [\"#5e9fa3\", \"#dcd1b4\", \"#fab87f\", \"#f87e7b\", \"#b05574\"],\n [\"#951f2b\", \"#f5f4d7\", \"#e0dfb1\", \"#a5a36c\", \"#535233\"],\n [\"#8dccad\", \"#988864\", \"#fea6a2\", \"#f9d6ac\", \"#ffe9af\"],\n [\"#2d2d29\", \"#215a6d\", \"#3ca2a2\", \"#92c7a3\", \"#dfece6\"],\n [\"#413d3d\", \"#040004\", \"#c8ff00\", \"#fa023c\", \"#4b000f\"],\n [\"#eff3cd\", \"#b2d5ba\", \"#61ada0\", \"#248f8d\", \"#605063\"],\n [\"#ffefd3\", \"#fffee4\", \"#d0ecea\", \"#9fd6d2\", \"#8b7a5e\"],\n [\"#cfffdd\", \"#b4dec1\", \"#5c5863\", \"#a85163\", \"#ff1f4c\"],\n [\"#9dc9ac\", \"#fffec7\", \"#f56218\", \"#ff9d2e\", \"#919167\"],\n [\"#4e395d\", \"#827085\", \"#8ebe94\", \"#ccfc8e\", \"#dc5b3e\"],\n [\"#a8a7a7\", \"#cc527a\", \"#e8175d\", \"#474747\", \"#363636\"],\n [\"#f8edd1\", \"#d88a8a\", \"#474843\", \"#9d9d93\", \"#c5cfc6\"],\n [\"#046d8b\", \"#309292\", \"#2fb8ac\", \"#93a42a\", \"#ecbe13\"],\n [\"#f38a8a\", \"#55443d\", \"#a0cab5\", \"#cde9ca\", \"#f1edd0\"],\n [\"#a70267\", \"#f10c49\", \"#fb6b41\", \"#f6d86b\", \"#339194\"],\n [\"#ff003c\", \"#ff8a00\", \"#fabe28\", \"#88c100\", \"#00c176\"],\n [\"#ffedbf\", \"#f7803c\", \"#f54828\", \"#2e0d23\", \"#f8e4c1\"],\n [\"#4e4d4a\", \"#353432\", \"#94ba65\", \"#2790b0\", \"#2b4e72\"],\n [\"#0ca5b0\", \"#4e3f30\", \"#fefeeb\", \"#f8f4e4\", \"#a5b3aa\"],\n [\"#4d3b3b\", \"#de6262\", \"#ffb88c\", \"#ffd0b3\", \"#f5e0d3\"],\n [\"#fffbb7\", \"#a6f6af\", \"#66b6ab\", \"#5b7c8d\", \"#4f2958\"],\n [\"#edf6ee\", \"#d1c089\", \"#b3204d\", \"#412e28\", \"#151101\"],\n [\"#9d7e79\", \"#ccac95\", \"#9a947c\", \"#748b83\", \"#5b756c\"],\n [\"#fcfef5\", \"#e9ffe1\", \"#cdcfb7\", \"#d6e6c3\", \"#fafbe3\"],\n [\"#9cddc8\", \"#bfd8ad\", \"#ddd9ab\", \"#f7af63\", \"#633d2e\"],\n [\"#30261c\", \"#403831\", \"#36544f\", \"#1f5f61\", \"#0b8185\"],\n [\"#aaff00\", \"#ffaa00\", \"#ff00aa\", \"#aa00ff\", \"#00aaff\"],\n [\"#d1313d\", \"#e5625c\", \"#f9bf76\", \"#8eb2c5\", \"#615375\"],\n [\"#ffe181\", \"#eee9e5\", \"#fad3b2\", \"#ffba7f\", \"#ff9c97\"],\n [\"#73c8a9\", \"#dee1b6\", \"#e1b866\", \"#bd5532\", \"#373b44\"],\n [\"#805841\", \"#dcf7f3\", \"#fffcdd\", \"#ffd8d8\", \"#f5a2a2\"],\n]\n\nexport const getDebugLayoutObject = (lo: any): LayoutDebugObject | null => {\n let {\n x,\n y,\n width,\n height,\n }: { x: number; y: number; width?: number; height?: number } = {\n ...lo,\n ...(lo as any).size,\n ...(lo as any).center,\n ...(lo as any).position,\n }\n\n if (\n lo.x1 !== undefined &&\n lo.x2 !== undefined &&\n lo.y1 !== undefined &&\n lo.y2 !== undefined\n ) {\n x = (lo.x1 + lo.x2) / 2\n y = (lo.y1 + lo.y2) / 2\n width = Math.abs(lo.x1 - lo.x2)\n height = Math.abs(lo.y1 - lo.y2)\n }\n\n if (lo.points && Array.isArray(lo.points) && lo.points.length > 0) {\n const xCoords = lo.points.map((point: { x: number }) => point.x)\n const yCoords = lo.points.map((point: { y: number }) => point.y)\n \n const minX = Math.min(...xCoords)\n const maxX = Math.max(...xCoords)\n const minY = Math.min(...yCoords)\n const maxY = Math.max(...yCoords)\n \n x = (minX + maxX) / 2\n y = (minY + maxY) / 2\n width = maxX - minX\n height = maxY - minY\n }\n\n const title = lo.text || lo.name || lo.source?.text || lo.source?.name || \"?\"\n const content = lo\n\n if (x === undefined || y === undefined) return null\n\n if (width === undefined) {\n if (\"outer_diameter\" in lo) {\n width = lo.outer_diameter\n height = lo.outer_diameter\n }\n }\n\n if (width === undefined || height === undefined) {\n width = 0.1\n height = 0.1\n }\n\n return {\n x,\n y,\n width,\n height,\n title,\n content,\n bg_color:\n nice_color_palettes[\n stringHash((lo as any).type || title) % nice_color_palettes.length\n ]?.[4] ?? \"#f00\",\n }\n}\n","export const isTruthy = <T>(value: T): value is NonNullable<T> => Boolean(value)\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { getDebugLayoutObject } from \"./utils/get-layout-debug-object\"\nimport { isTruthy } from \"./utils/is-truthy\"\n\nexport const findBoundsAndCenter = (\n elements: AnyCircuitElement[],\n): { center: { x: number; y: number }; width: number; height: number } => {\n const debugObjects = elements\n .filter(\n (elm) => elm.type.startsWith(\"pcb_\") || elm.type.startsWith(\"schematic_\"),\n )\n .concat(\n elements\n .filter(\n (elm) => elm.type === \"pcb_trace\" || elm.type === \"schematic_trace\",\n )\n // @ts-ignore\n .flatMap((elm: any) => elm.route),\n )\n .map((elm) => getDebugLayoutObject(elm))\n .filter(isTruthy)\n\n if (debugObjects.length === 0)\n return { center: { x: 0, y: 0 }, width: 0, height: 0 }\n\n let minX = debugObjects[0]!.x - debugObjects[0]!.width / 2\n let maxX = debugObjects[0]!.x + debugObjects[0]!.width / 2\n let minY = debugObjects[0]!.y - debugObjects[0]!.height / 2\n let maxY = debugObjects[0]!.y + debugObjects[0]!.height / 2\n\n for (const obj of debugObjects.slice(1)) {\n minX = Math.min(minX, obj.x - obj.width / 2)\n maxX = Math.max(maxX, obj.x + obj.width / 2)\n minY = Math.min(minY, obj.y - obj.height / 2)\n maxY = Math.max(maxY, obj.y + obj.height / 2)\n }\n\n const width = maxX - minX\n const height = maxY - minY\n const center = { x: minX + width / 2, y: minY + height / 2 }\n\n return { center, width, height }\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\n\nexport const getPrimaryId = (element: AnyCircuitElement): string => {\n // @ts-ignore\n return element[`${element.type}_id`]\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { transformPCBElements } from \"./transform-soup-elements\"\nimport { translate } from \"transformation-matrix\"\n\nexport const repositionPcbComponentTo = (\n circuitJson: AnyCircuitElement[],\n pcb_component_id: string,\n newCenter: { x: number; y: number },\n) => {\n const pcbComponent = circuitJson.find(\n (e) =>\n e.type === \"pcb_component\" &&\n (e as any).pcb_component_id === pcb_component_id,\n )\n if (!pcbComponent) return\n\n const currentCenter =\n \"center\" in pcbComponent\n ? (pcbComponent as any).center\n : { x: (pcbComponent as any).x, y: (pcbComponent as any).y }\n\n const dx = newCenter.x - currentCenter.x\n const dy = newCenter.y - currentCenter.y\n\n const portIds = circuitJson\n .filter(\n (e) =>\n e.type === \"pcb_port\" &&\n (e as any).pcb_component_id === pcb_component_id,\n )\n .map((e) => (e as any).pcb_port_id)\n\n const elementsToMove = circuitJson.filter((elm) => {\n if (elm === pcbComponent) return true\n const anyElm: any = elm\n if (anyElm.pcb_component_id === pcb_component_id) return true\n if (\n Array.isArray(anyElm.pcb_component_ids) &&\n anyElm.pcb_component_ids.includes(pcb_component_id)\n )\n return true\n if (anyElm.pcb_port_id && portIds.includes(anyElm.pcb_port_id)) return true\n if (\n Array.isArray(anyElm.pcb_port_ids) &&\n anyElm.pcb_port_ids.some((id: string) => portIds.includes(id))\n )\n return true\n if (anyElm.start_pcb_port_id && portIds.includes(anyElm.start_pcb_port_id))\n return true\n if (anyElm.end_pcb_port_id && portIds.includes(anyElm.end_pcb_port_id))\n return true\n if (\n Array.isArray(anyElm.route) &&\n anyElm.route.some(\n (pt: any) =>\n (pt.start_pcb_port_id && portIds.includes(pt.start_pcb_port_id)) ||\n (pt.end_pcb_port_id && portIds.includes(pt.end_pcb_port_id)),\n )\n )\n return true\n return false\n })\n\n const matrix = translate(dx, dy)\n transformPCBElements(elementsToMove, matrix)\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { buildSubtree } from \"./subtree\"\nimport { findBoundsAndCenter } from \"./find-bounds-and-center\"\nimport { transformPCBElements } from \"./transform-soup-elements\"\nimport { translate } from \"transformation-matrix\"\n\nconst findAllDescendantGroupIds = (\n circuitJson: AnyCircuitElement[],\n parentGroupId: string,\n): string[] => {\n const childGroupIds: string[] = []\n const directChildren = circuitJson\n .filter((elm) => elm.type === \"source_group\" && (elm as any).parent_source_group_id === parentGroupId)\n .map((elm) => (elm as any).source_group_id)\n \n childGroupIds.push(...directChildren)\n \n // Recursively find descendants of child groups\n for (const childId of directChildren) {\n childGroupIds.push(...findAllDescendantGroupIds(circuitJson, childId))\n }\n \n return childGroupIds\n}\n\nexport const repositionPcbGroupTo = (\n circuitJson: AnyCircuitElement[],\n source_group_id: string,\n newCenter: { x: number; y: number },\n) => {\n // Find all descendant group IDs\n const allGroupIds = [source_group_id, ...findAllDescendantGroupIds(circuitJson, source_group_id)]\n \n // Get all elements for each group (including the main group and its descendants)\n const allGroupElements = new Set<AnyCircuitElement>()\n \n for (const groupId of allGroupIds) {\n const groupElements = buildSubtree(circuitJson, { source_group_id: groupId })\n groupElements.forEach(elm => allGroupElements.add(elm))\n }\n \n // Get all port IDs from elements in the group\n const portIds = Array.from(allGroupElements)\n .filter((e) => e.type === \"pcb_port\")\n .map((e) => (e as any).pcb_port_id)\n \n // Find additional traces that connect to these ports (buildSubtree might miss these)\n const additionalTraces = circuitJson.filter((elm) => {\n if (elm.type !== \"pcb_trace\") return false\n if (allGroupElements.has(elm)) return false // already included\n \n const anyElm: any = elm\n \n // Check direct port connections\n if (anyElm.start_pcb_port_id && portIds.includes(anyElm.start_pcb_port_id))\n return true\n if (anyElm.end_pcb_port_id && portIds.includes(anyElm.end_pcb_port_id))\n return true\n \n // Check route point connections\n if (\n Array.isArray(anyElm.route) &&\n anyElm.route.some(\n (pt: any) =>\n (pt.start_pcb_port_id && portIds.includes(pt.start_pcb_port_id)) ||\n (pt.end_pcb_port_id && portIds.includes(pt.end_pcb_port_id)),\n )\n )\n return true\n \n return false\n })\n \n // Add additional traces to the elements to move\n additionalTraces.forEach(trace => allGroupElements.add(trace))\n \n // Filter to only PCB elements that can be repositioned\n const pcbElements = Array.from(allGroupElements).filter((elm) => elm.type.startsWith(\"pcb_\"))\n \n if (pcbElements.length === 0) return\n \n // Calculate current bounds and center of the group\n const { center: currentCenter } = findBoundsAndCenter(pcbElements)\n \n // Calculate translation needed\n const dx = newCenter.x - currentCenter.x\n const dy = newCenter.y - currentCenter.y\n \n // Create translation matrix\n const matrix = translate(dx, dy)\n \n // Apply transformation to all PCB elements in the group\n transformPCBElements(pcbElements, matrix)\n}","import type { AnyCircuitElement } from \"circuit-json\"\nimport { transformSchematicElements } from \"./transform-soup-elements\"\nimport { translate } from \"transformation-matrix\"\n\nexport const repositionSchematicComponentTo = (\n circuitJson: AnyCircuitElement[],\n schematic_component_id: string,\n newCenter: { x: number; y: number },\n) => {\n const schematicComponent = circuitJson.find(\n (e) =>\n e.type === \"schematic_component\" &&\n (e as any).schematic_component_id === schematic_component_id,\n )\n if (!schematicComponent) return\n\n const currentCenter =\n \"center\" in schematicComponent\n ? (schematicComponent as any).center\n : { x: (schematicComponent as any).x, y: (schematicComponent as any).y }\n\n const dx = newCenter.x - currentCenter.x\n const dy = newCenter.y - currentCenter.y\n\n const portIds = circuitJson\n .filter(\n (e) =>\n e.type === \"schematic_port\" &&\n (e as any).schematic_component_id === schematic_component_id,\n )\n .map((e) => (e as any).schematic_port_id)\n\n const elementsToMove = circuitJson.filter((elm) => {\n if (elm === schematicComponent) return true\n const anyElm: any = elm\n if (anyElm.schematic_component_id === schematic_component_id) return true\n if (\n Array.isArray(anyElm.schematic_component_ids) &&\n anyElm.schematic_component_ids.includes(schematic_component_id)\n )\n return true\n if (anyElm.schematic_port_id && portIds.includes(anyElm.schematic_port_id))\n return true\n if (\n Array.isArray(anyElm.schematic_port_ids) &&\n anyElm.schematic_port_ids.some((id: string) => portIds.includes(id))\n )\n return true\n if (\n anyElm.start_schematic_port_id &&\n portIds.includes(anyElm.start_schematic_port_id)\n )\n return true\n if (\n anyElm.end_schematic_port_id &&\n portIds.includes(anyElm.end_schematic_port_id)\n )\n return true\n if (\n Array.isArray(anyElm.route) &&\n anyElm.route.some(\n (pt: any) =>\n (pt.start_schematic_port_id &&\n portIds.includes(pt.start_schematic_port_id)) ||\n (pt.end_schematic_port_id &&\n portIds.includes(pt.end_schematic_port_id)),\n )\n )\n return true\n return false\n })\n\n const matrix = translate(dx, dy)\n transformSchematicElements(elementsToMove, matrix)\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { buildSubtree } from \"./subtree\"\nimport { findBoundsAndCenter } from \"./find-bounds-and-center\"\nimport { transformSchematicElements } from \"./transform-soup-elements\"\nimport { translate } from \"transformation-matrix\"\n\nconst findAllDescendantGroupIds = (\n circuitJson: AnyCircuitElement[],\n parentGroupId: string,\n): string[] => {\n const childGroupIds: string[] = []\n const directChildren = circuitJson\n .filter(\n (elm) =>\n elm.type === \"source_group\" &&\n (elm as any).parent_source_group_id === parentGroupId,\n )\n .map((elm) => (elm as any).source_group_id)\n\n childGroupIds.push(...directChildren)\n\n for (const childId of directChildren) {\n childGroupIds.push(...findAllDescendantGroupIds(circuitJson, childId))\n }\n\n return childGroupIds\n}\n\nexport const repositionSchematicGroupTo = (\n circuitJson: AnyCircuitElement[],\n source_group_id: string,\n newCenter: { x: number; y: number },\n) => {\n const allGroupIds = [\n source_group_id,\n ...findAllDescendantGroupIds(circuitJson, source_group_id),\n ]\n\n const allGroupElements = new Set<AnyCircuitElement>()\n\n for (const groupId of allGroupIds) {\n const groupElements = buildSubtree(circuitJson, {\n source_group_id: groupId,\n })\n groupElements.forEach((elm) => allGroupElements.add(elm))\n }\n\n const portIds = Array.from(allGroupElements)\n .filter((e) => e.type === \"schematic_port\")\n .map((e) => (e as any).schematic_port_id)\n\n const additionalTraces = circuitJson.filter((elm) => {\n if (elm.type !== \"schematic_trace\") return false\n if (allGroupElements.has(elm)) return false\n\n const anyElm: any = elm\n\n if (\n anyElm.start_schematic_port_id &&\n portIds.includes(anyElm.start_schematic_port_id)\n )\n return true\n if (\n anyElm.end_schematic_port_id &&\n portIds.includes(anyElm.end_schematic_port_id)\n )\n return true\n if (\n Array.isArray(anyElm.route) &&\n anyElm.route.some(\n (pt: any) =>\n (pt.start_schematic_port_id &&\n portIds.includes(pt.start_schematic_port_id)) ||\n (pt.end_schematic_port_id &&\n portIds.includes(pt.end_schematic_port_id)),\n )\n )\n return true\n\n return false\n })\n\n additionalTraces.forEach((trace) => allGroupElements.add(trace))\n\n const schematicElements = Array.from(allGroupElements).filter((elm) =>\n elm.type.startsWith(\"schematic_\"),\n )\n if (schematicElements.length === 0) return\n\n const { center: currentCenter } = findBoundsAndCenter(schematicElements)\n\n const dx = newCenter.x - currentCenter.x\n const dy = newCenter.y - currentCenter.y\n\n const matrix = translate(dx, dy)\n\n transformSchematicElements(schematicElements, matrix)\n}\n","import type {\n AnyCircuitElement,\n SourceComponentBase,\n SourceGroup,\n} from \"circuit-json\"\n\n/**\n * A tree of circuit elements. This is often used for layout because you want\n * to consider only the top-level elements of a group for layout (child groups\n * move together)\n */\nexport interface CircuitJsonTreeNode {\n nodeType: \"group\" | \"component\"\n sourceGroup?: SourceGroup\n sourceComponent?: SourceComponentBase\n childNodes: Array<CircuitJsonTreeNode>\n otherChildElements: Array<AnyCircuitElement>\n}\n\nexport const getCircuitJsonTree = (\n circuitJson: AnyCircuitElement[],\n opts?: {\n source_group_id?: string\n },\n): CircuitJsonTreeNode => {\n type ChildGroupId = string\n type ParentGroupId = string\n type GroupId = string\n const groupChildMap: Map<ParentGroupId, ChildGroupId[]> = new Map()\n\n // Get all source group IDs present in the circuit JSON\n const existingGroupIds = new Set<string>()\n for (const elm of circuitJson) {\n if (elm.type === \"source_group\") {\n existingGroupIds.add(elm.source_group_id)\n }\n }\n\n // Find orphaned groups (groups whose parent is not in the circuit JSON)\n const orphanedGroups: string[] = []\n\n for (const elm of circuitJson) {\n if (elm.type === \"source_group\" && elm.parent_source_group_id) {\n const parentId = elm.parent_source_group_id\n const childId = elm.source_group_id\n \n // If parent doesn't exist in circuit JSON, this is an orphaned group\n if (!existingGroupIds.has(parentId)) {\n orphanedGroups.push(childId)\n // Treat orphaned groups as root-level groups\n if (!groupChildMap.has(childId)) {\n groupChildMap.set(childId, [])\n }\n } else {\n // Normal parent-child relationship\n const children = groupChildMap.get(parentId) ?? []\n children.push(childId)\n groupChildMap.set(parentId, children)\n if (!groupChildMap.has(childId)) {\n groupChildMap.set(childId, [])\n }\n }\n }\n }\n\n // Ensure that every source_group, including root-level groups that have no parent,\n // is present in the groupChildMap. This guarantees that even standalone boards\n // (with no nested groups) are processed and appear at the top of the tree.\n for (const elm of circuitJson) {\n if (elm.type === \"source_group\" && !groupChildMap.has(elm.source_group_id)) {\n groupChildMap.set(elm.source_group_id, [])\n }\n }\n\n const groupNodes = new Map<GroupId, CircuitJsonTreeNode>()\n\n const getNextGroupId = () => {\n for (const [parentId, children] of groupChildMap) {\n if (groupNodes.has(parentId)) continue\n if (children.every((childId) => groupNodes.has(childId))) {\n return parentId\n }\n }\n return null\n }\n\n // Compute any node we have the dependencies for until we've computed all of\n // them\n let lastGroupId: GroupId | null = null\n while (true) {\n const nextGroupId = getNextGroupId()\n if (!nextGroupId) break\n\n const sourceGroup = circuitJson.find(\n (elm) =>\n elm.type === \"source_group\" && elm.source_group_id === nextGroupId,\n ) as SourceGroup\n\n // Create the tree node for this group\n const node: CircuitJsonTreeNode = {\n nodeType: \"group\",\n sourceGroup,\n otherChildElements: [],\n childNodes: [\n ...(groupChildMap\n .get(nextGroupId)\n ?.map((childId) => groupNodes.get(childId)!) ?? []),\n ...circuitJson\n .filter(\n (elm) =>\n elm.type === \"source_component\" &&\n elm.source_group_id === nextGroupId,\n )\n .map((elm) => {\n return {\n nodeType: \"component\",\n sourceComponent: elm,\n childNodes: [],\n otherChildElements: [\n ...circuitJson.filter(\n (e) =>\n e.type === \"pcb_component\" &&\n e.source_component_id ===\n (elm as SourceComponentBase).source_component_id,\n ),\n ], // TODO populate\n } as CircuitJsonTreeNode\n }),\n ],\n }\n\n groupNodes.set(nextGroupId, node)\n lastGroupId = nextGroupId\n }\n\n if (!lastGroupId) {\n console.warn(\"No groups were processed, returning tree without sourceGroup\")\n return {\n nodeType: \"group\",\n childNodes: [], // TODO populate\n otherChildElements: circuitJson,\n }\n }\n\n // Determine which group to return as root\n let rootGroupId: string | null = null\n if (opts && opts.source_group_id !== undefined) {\n // Use explicitly specified group\n rootGroupId = opts.source_group_id\n } else if (orphanedGroups.length > 0) {\n // Use the first orphaned group as root (most likely scenario when filtering circuit JSON)\n rootGroupId = orphanedGroups[0]!\n } else {\n // Fall back to the last processed group (typically the top-level parent)\n rootGroupId = lastGroupId as string | null\n }\n\n if (!rootGroupId) {\n console.warn(\"No valid root group found, returning tree without sourceGroup\")\n return {\n nodeType: \"group\",\n childNodes: [], \n otherChildElements: circuitJson,\n }\n }\n\n return groupNodes.get(rootGroupId)!\n}\n","import type { CircuitJsonTreeNode } from \"./getCircuitJsonTree\"\n\nexport const getStringFromCircuitJsonTree = (\n circuitJsonTree: CircuitJsonTreeNode,\n indent = 0,\n): string => {\n if (circuitJsonTree.nodeType === \"component\") {\n return `${\" \".repeat(indent)}${circuitJsonTree.sourceComponent?.name ?? circuitJsonTree.sourceComponent?.source_component_id}`\n }\n const lines = []\n\n lines.push(\n `${\" \".repeat(indent)}${circuitJsonTree.sourceGroup?.name ?? circuitJsonTree.sourceGroup?.source_group_id}`,\n )\n for (const child of circuitJsonTree.childNodes) {\n lines.push(getStringFromCircuitJsonTree(child, indent + 2))\n }\n return lines.join(\"\\n\")\n}\n","export type Size = { width: number; height: number }\n\nimport type { FlexBoxOptions } from \"@tscircuit/miniflex\"\n/**\n * Compute the smallest possible dimensions (width & height) for a flex container\n * so that **all** children fit without overflowing _before_ any flex grow / shrink\n * is applied. This is a very lightweight approximation – it only considers the\n * children's explicit `width`/`height` (or `flexBasis`) plus the configured gaps\n * and the main-axis stacking rules derived from the flex direction.\n *\n * This function purposely does **not** try to implement the full flexbox sizing\n * algorithm – we only need a quick estimate so that `RootFlexBox` can be\n * instantiated even when the user did not provide explicit dimensions for the\n * container (e.g. when laying out PCB components directly on the board level\n * instead of inside a sub-circuit).\n */\nexport function getMinimumFlexContainer(\n children: Array<{ width: number; height: number }>,\n options: FlexBoxOptions = {},\n): Size {\n if (children.length === 0) return { width: 0, height: 0 }\n\n const direction = options.direction ?? \"row\"\n const columnGap = options.columnGap ?? 0\n const rowGap = options.rowGap ?? 0\n\n // Flexbox main-axis / cross-axis mapping --------------------------------\n const isRowDirection = direction === \"row\" || direction === \"row-reverse\"\n\n if (isRowDirection) {\n // Main-axis horizontally stacks children\n const totalChildWidth = children.reduce((sum, c) => sum + c.width, 0)\n const width = totalChildWidth + columnGap * Math.max(0, children.length - 1)\n\n const height = children.reduce((max, c) => Math.max(max, c.height), 0)\n return { width, height }\n } else {\n // Column direction – stack vertically\n const totalChildHeight = children.reduce((sum, c) => sum + c.height, 0)\n const height = totalChildHeight + rowGap * Math.max(0, children.length - 1)\n\n const width = children.reduce((max, c) => Math.max(max, c.width), 0)\n return { width, height }\n }\n}\n","/**\n * Calculate a point transformed with an affine matrix\n * @param matrix {Matrix} Affine Matrix\n * @param point {Point} Point\n * @returns {Point} Point\n */\nexport function applyToPoint (matrix, point) {\n return Array.isArray(point)\n ? [\n matrix.a * point[0] + matrix.c * point[1] + matrix.e,\n matrix.b * point[0] + matrix.d * point[1] + matrix.f\n ]\n : {\n x: matrix.a * point.x + matrix.c * point.y + matrix.e,\n y: matrix.b * point.x + matrix.d * point.y + matrix.f\n }\n}\n\n/**\n * Calculate an array of points transformed with an affine matrix\n * @param matrix {Matrix} Affine Matrix\n * @param points {Point[]} Array of point\n * @returns {Point[]} Array of point\n */\nexport function applyToPoints (matrix, points) {\n return points.map(point => applyToPoint(matrix, point))\n}\n","export function isUndefined (val) {\n return typeof val === 'undefined'\n}\n\nexport function isNumeric (n) {\n return typeof n === 'number' &&\n !Number.isNaN(n) &&\n Number.isFinite(n)\n}\n\nexport function isObject (obj) {\n return typeof obj === 'object' &&\n obj !== null &&\n !Array.isArray(obj)\n}\n\nexport function matchesShape (obj, keys) {\n return keys.every(key => key in obj)\n}\n","/**\n * Calculate a translate matrix\n * @param tx {number} Translation on axis x\n * @param [ty = 0] {number} Translation on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function translate (tx, ty = 0) {\n return {\n a: 1,\n c: 0,\n e: tx,\n b: 0,\n d: 1,\n f: ty\n }\n}\n","/**\n * Merge multiple matrices into one\n * @param matrices {...Matrix | Matrix[]} Matrices listed as separate parameters or in an array\n * @returns {Matrix} Affine Matrix\n */\nexport function transform (...matrices) {\n matrices = Array.isArray(matrices[0]) ? matrices[0] : matrices\n\n const multiply = (m1, m2) => {\n return {\n a: m1.a * m2.a + m1.c * m2.b,\n c: m1.a * m2.c + m1.c * m2.d,\n e: m1.a * m2.e + m1.c * m2.f + m1.e,\n b: m1.b * m2.a + m1.d * m2.b,\n d: m1.b * m2.c + m1.d * m2.d,\n f: m1.b * m2.e + m1.d * m2.f + m1.f\n }\n }\n\n switch (matrices.length) {\n case 0:\n throw new Error('no matrices provided')\n\n case 1:\n return matrices[0]\n\n case 2:\n return multiply(matrices[0], matrices[1])\n\n default: {\n const [m1, m2, ...rest] = matrices\n const m = multiply(m1, m2)\n return transform(m, ...rest)\n }\n }\n}\n\n/**\n * Merge multiple matrices into one\n * @param matrices {...Matrix | Matrix[]} Matrices listed as separate parameters or in an array\n * @returns {Matrix} Affine Matrix\n */\nexport function compose (...matrices) {\n return transform(...matrices)\n}\n","import { isUndefined } from './utils'\nimport { translate } from './translate'\nimport { transform } from './transform'\n\nconst { cos, sin, PI } = Math\n/**\n * Calculate a rotation matrix\n * @param angle {number} Angle in radians\n * @param [cx] {number} If (cx,cy) are supplied the rotate is about this point\n * @param [cy] {number} If (cx,cy) are supplied the rotate is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function rotate (angle, cx, cy) {\n const cosAngle = cos(angle)\n const sinAngle = sin(angle)\n const rotationMatrix = {\n a: cosAngle,\n c: -sinAngle,\n e: 0,\n b: sinAngle,\n d: cosAngle,\n f: 0\n }\n if (isUndefined(cx) || isUndefined(cy)) {\n return rotationMatrix\n }\n\n return transform([\n translate(cx, cy),\n rotationMatrix,\n translate(-cx, -cy)\n ])\n}\n\n/**\n * Calculate a rotation matrix with a DEG angle\n * @param angle {number} Angle in degree\n * @param [cx] {number} If (cx,cy) are supplied the rotate is about this point\n * @param [cy] {number} If (cx,cy) are supplied the rotate is about this point\n * @returns {Matrix} Affine Matrix\n */\nexport function rotateDEG (angle, cx = undefined, cy = undefined) {\n return rotate(angle * PI / 180, cx, cy)\n}\n","// https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/skew\nconst { tan } = Math\n\n/**\n * Calculate a skew matrix\n * @param ax {number} Skew on axis x\n * @param ay {number} Skew on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function skew (ax, ay) {\n return {\n a: 1,\n c: tan(ax),\n e: 0,\n b: tan(ay),\n d: 1,\n f: 0\n }\n}\n\n/**\n * Calculate a skew matrix using DEG angles\n * @param ax {number} Skew on axis x\n * @param ay {number} Skew on axis y\n * @returns {Matrix} Affine Matrix\n */\nexport function skewDEG (ax, ay) {\n return skew(ax * Math.PI / 180, ay * Math.PI / 180)\n}\n","// Generated by Peggy 3.0.2.\n//\n// https://peggyjs.org/\n\nfunction peg$subclass(child, parent) {\n function C() { this.constructor = child; }\n C.prototype = parent.prototype;\n child.prototype = new C();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n var self = Error.call(this, message);\n // istanbul ignore next Check is a necessary evil to support older environments\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(self, peg$SyntaxError.prototype);\n }\n self.expected = expected;\n self.found = found;\n self.location = location;\n self.name = \"SyntaxError\";\n return self;\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\nfunction peg$padEnd(str, targetLength, padString) {\n padString = padString || \" \";\n if (str.length > targetLength) { return str; }\n targetLength -= str.length;\n padString += padString.repeat(targetLength);\n return str + padString.slice(0, targetLength);\n}\n\npeg$SyntaxError.prototype.format = function(sources) {\n var str = \"Error: \" + this.message;\n if (this.location) {\n var src = null;\n var k;\n for (k = 0; k < sources.length; k++) {\n if (sources[k].source === this.location.source) {\n src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n break;\n }\n }\n var s = this.location.start;\n var offset_s = (this.location.source && (typeof this.location.source.offset === \"function\"))\n ? this.location.source.offset(s)\n : s;\n var loc = this.location.source + \":\" + offset_s.line + \":\" + offset_s.column;\n if (src) {\n var e = this.location.end;\n var filler = peg$padEnd(\"\", offset_s.line.toString().length, ' ');\n var line = src[s.line - 1];\n var last = s.line === e.line ? e.column : line.length + 1;\n var hatLen = (last - s.column) || 1;\n str += \"\\n --> \" + loc + \"\\n\"\n + filler + \" |\\n\"\n + offset_s.line + \" | \" + line + \"\\n\"\n + filler + \" | \" + peg$padEnd(\"\", s.column - 1, ' ')\n + peg$padEnd(\"\", hatLen, \"^\");\n } else {\n str += \"\\n at \" + loc;\n }\n }\n return str;\n};\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n class: function(expectation) {\n var escapedParts = expectation.parts.map(function(part) {\n return Array.isArray(part)\n ? classEscape(part[0]) + \"-\" + classEscape(part[1])\n : classEscape(part);\n });\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts.join(\"\") + \"]\";\n },\n\n any: function() {\n return \"any character\";\n },\n\n end: function() {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\"/g, \"\\\\\\\"\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\]/g, \"\\\\]\")\n .replace(/\\^/g, \"\\\\^\")\n .replace(/-/g, \"\\\\-\")\n .replace(/\\0/g, \"\\\\0\")\n .replace(/\\t/g, \"\\\\t\")\n .replace(/\\n/g, \"\\\\n\")\n .replace(/\\r/g, \"\\\\r\")\n .replace(/[\\x00-\\x0F]/g, function(ch) { return \"\\\\x0\" + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return \"\\\\x\" + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = expected.map(describeExpectation);\n var i, j;\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n var peg$FAILED = {};\n var peg$source = options.grammarSource;\n\n var peg$startRuleFunctions = { transformList: peg$parsetransformList };\n var peg$startRuleFunction = peg$parsetransformList;\n\n var peg$c0 = \"matrix\";\n var peg$c1 = \"(\";\n var peg$c2 = \")\";\n var peg$c3 = \"translate\";\n var peg$c4 = \"scale\";\n var peg$c5 = \"rotate\";\n var peg$c6 = \"skewX\";\n var peg$c7 = \"skewY\";\n var peg$c8 = \",\";\n var peg$c9 = \".\";\n\n var peg$r0 = /^[eE]/;\n var peg$r1 = /^[+\\-]/;\n var peg$r2 = /^[0-9]/;\n var peg$r3 = /^[ \\t\\r\\n]/;\n\n var peg$e0 = peg$literalExpectation(\"matrix\", false);\n var peg$e1 = peg$literalExpectation(\"(\", false);\n var peg$e2 = peg$literalExpectation(\")\", false);\n var peg$e3 = peg$literalExpectation(\"translate\", false);\n var peg$e4 = peg$literalExpectation(\"scale\", false);\n var peg$e5 = peg$literalExpectation(\"rotate\", false);\n var peg$e6 = peg$literalExpectation(\"skewX\", false);\n var peg$e7 = peg$literalExpectation(\"skewY\", false);\n var peg$e8 = peg$literalExpectation(\",\", false);\n var peg$e9 = peg$otherExpectation(\"fractionalConstant\");\n var peg$e10 = peg$literalExpectation(\".\", false);\n var peg$e11 = peg$classExpectation([\"e\", \"E\"], false, false);\n var peg$e12 = peg$classExpectation([\"+\", \"-\"], false, false);\n var peg$e13 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n var peg$e14 = peg$classExpectation([\" \", \"\\t\", \"\\r\", \"\\n\"], false, false);\n\n var peg$f0 = function(ts) { return ts; };\n var peg$f1 = function(t, ts) { return t.concat(ts) };\n var peg$f2 = function(a, b, c, d, e, f) {\n return [{type: 'matrix', a: a, b: b, c: c, d: d, e: e, f: f}];\n };\n var peg$f3 = function(tx, ty) {\n var t = {type: 'translate', tx: tx};\n if (ty) t.ty = ty;\n return [t];\n };\n var peg$f4 = function(sx, sy) {\n var s = {type:'scale', sx: sx};\n if (sy) s.sy = sy;\n return [s];\n };\n var peg$f5 = function(angle, c) {\n var r = {type:'rotate', angle: angle};\n if (c) {\n r.cx = c[0];\n r.cy = c[1];\n }\n return [r];\n };\n var peg$f6 = function(angle) {\n return [{type: 'skewX', angle: angle}];\n };\n var peg$f7 = function(angle) {\n return [{type: 'skewY', angle: angle}];\n };\n var peg$f8 = function(f) { return parseFloat(f.join(\"\")); };\n var peg$f9 = function(i) { return parseInt(i.join(\"\")); };\n var peg$f10 = function(n) { return n; };\n var peg$f11 = function(n1, n2) { return [n1, n2]; };\n var peg$f12 = function(ds) { return ds.join(\"\"); };\n var peg$f13 = function(f, e) { return [f, e || null].join(\"\")};\n var peg$f14 = function(d, e) { return [d, e].join(\"\")};\n var peg$f15 = function(d1, d2) { return [d1 ? d1.join(\"\") : null, \".\", d2.join(\"\")].join(\"\"); };\n var peg$f16 = function(d) { return d.join(\"\"); };\n var peg$f17 = function(s, d) { return ['e', s, d.join(\"\")].join(\"\") };\n var peg$currPos = 0;\n var peg$savedPos = 0;\n var peg$posDetailsCache = [{ line: 1, column: 1 }];\n var peg$maxFailPos = 0;\n var peg$maxFailExpected = [];\n var peg$silentFails = 0;\n\n var peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== undefined\n ? location\n : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos];\n var p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n var startPosDetails = peg$computePosDetails(startPos);\n var endPosDetails = peg$computePosDetails(endPos);\n\n var res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n if (offset && peg$source && (typeof peg$source.offset === \"function\")) {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsetransformList() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n s2 = peg$parsetransforms();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n peg$savedPos = s0;\n s0 = peg$f0(s2);\n\n return s0;\n }\n\n function peg$parsetransforms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parsetransform();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsecommaWsp();\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetransforms();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f1(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parsetransform();\n }\n\n return s0;\n }\n\n function peg$parsetransform() {\n var s0;\n\n s0 = peg$parsematrix();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetranslate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsescale();\n if (s0 === peg$FAILED) {\n s0 = peg$parserotate();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewX();\n if (s0 === peg$FAILED) {\n s0 = peg$parseskewY();\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsematrix() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c0) {\n s1 = peg$c0;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e0); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWsp();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsenumber();\n if (s7 !== peg$FAILED) {\n s8 = peg$parsecommaWsp();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsenumber();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsecommaWsp();\n if (s10 !== peg$FAILED) {\n s11 = peg$parsenumber();\n if (s11 !== peg$FAILED) {\n s12 = peg$parsecommaWsp();\n if (s12 !== peg$FAILED) {\n s13 = peg$parsenumber();\n if (s13 !== peg$FAILED) {\n s14 = peg$parsecommaWsp();\n if (s14 !== peg$FAILED) {\n s15 = peg$parsenumber();\n if (s15 !== peg$FAILED) {\n s16 = [];\n s17 = peg$parsewsp();\n while (s17 !== peg$FAILED) {\n s16.push(s17);\n s17 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s17 = peg$c2;\n peg$currPos++;\n } else {\n s17 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s17 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f2(s5, s7, s9, s11, s13, s15);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsetranslate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 9) === peg$c3) {\n s1 = peg$c3;\n peg$currPos += 9;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f3(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsescale() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c4) {\n s1 = peg$c4;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspNumber();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parserotate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c5) {\n s1 = peg$c5;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e5); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecommaWspTwoNumbers();\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n s7 = [];\n s8 = peg$parsewsp();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s8 = peg$c2;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f5(s5, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewX() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c6) {\n s1 = peg$c6;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6(s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseskewY() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c7) {\n s1 = peg$c7;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e7); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 40) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e1); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsewsp();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsewsp();\n }\n s5 = peg$parsenumber();\n if (s5 !== peg$FAILED) {\n s6 = [];\n s7 = peg$parsewsp();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parsewsp();\n }\n if (input.charCodeAt(peg$currPos) === 41) {\n s7 = peg$c2;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e2); }\n }\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f7(s5);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parsefloatingPointConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f8(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parseintegerConstant();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f9(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspNumber() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f10(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWspTwoNumbers() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parsecommaWsp();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsecommaWsp();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsenumber();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f11(s2, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecommaWsp() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsewsp();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsewsp();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsecomma();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = [];\n s4 = peg$parsewsp();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsewsp();\n }\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsecomma();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsewsp();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsewsp();\n }\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsecomma() {\n var s0;\n\n if (input.charCodeAt(peg$currPos) === 44) {\n s0 = peg$c8;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e8); }\n }\n\n return s0;\n }\n\n function peg$parseintegerConstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f12(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsefloatingPointConstant() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsefractionalConstant();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexponent();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f13(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexponent();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f14(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsefractionalConstant() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f15(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedigitSequence();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c9;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e10); }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f16(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e9); }\n }\n\n return s0;\n }\n\n function peg$parseexponent() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$r0.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e11); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsesign();\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n s3 = peg$parsedigitSequence();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f17(s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsesign() {\n var s0;\n\n if (peg$r1.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e12); }\n }\n\n return s0;\n }\n\n function peg$parsedigitSequence() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsedigit();\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsedigit();\n }\n } else {\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$r2.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e13); }\n }\n\n return s0;\n }\n\n function peg$parsewsp() {\n var s0;\n\n if (peg$r3.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$e14); }\n }\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nexport {\n peg$SyntaxError as SyntaxError,\n\n peg$parse as parse\n};\n","import { Primitive, Point } from \"../types\"\n\nexport function getBoundsOfPrimitives(primitives: Primitive[]): {\n minX: number\n maxX: number\n minY: number\n maxY: number\n} {\n if (primitives.length === 0) {\n return { minX: 0, maxX: 0, minY: 0, maxY: 0 }\n }\n\n let minX = Infinity\n let maxX = -Infinity\n let minY = Infinity\n let maxY = -Infinity\n\n const updateBounds = (point: Point) => {\n minX = Math.min(minX, point.x)\n maxX = Math.max(maxX, point.x)\n minY = Math.min(minY, point.y)\n maxY = Math.max(maxY, point.y)\n }\n\n primitives.forEach((primitive) => {\n switch (primitive.type) {\n case \"path\":\n primitive.points.forEach(updateBounds)\n break\n case \"text\":\n updateBounds({ x: primitive.x, y: primitive.y })\n break\n case \"circle\": {\n const { x, y, radius } = primitive\n updateBounds({ x: x - radius, y: y - radius })\n updateBounds({ x: x + radius, y: y + radius })\n break\n }\n case \"box\": {\n const { x, y, width, height } = primitive\n const halfWidth = width / 2\n const halfHeight = height / 2\n updateBounds({ x: x - halfWidth, y: y - halfHeight })\n updateBounds({ x: x + halfWidth, y: y + halfHeight })\n break\n }\n }\n })\n\n return { minX, maxX, minY, maxY }\n}\n","import { rotate, applyToPoint, transform, scale } from \"transformation-matrix\"\nimport type {\n SchSymbol,\n Primitive,\n Point,\n Port,\n NinePointAnchor,\n} from \"./types\"\nimport { getBoundsOfPrimitives } from \"./utils/getBoundsOfPrimitives\"\n\n// Update rotateAnchor to handle all anchor rotations based on orientation\nconst rotateRightFacingAnchor = (\n anchor: NinePointAnchor,\n newOrientation: \"up\" | \"down\" | \"left\" | \"right\" = \"right\",\n): NinePointAnchor => {\n switch (newOrientation) {\n case \"down\":\n switch (anchor) {\n case \"middle_top\":\n return \"middle_right\"\n case \"middle_bottom\":\n return \"middle_left\"\n case \"middle_left\":\n return \"middle_bottom\"\n case \"middle_right\":\n return \"middle_top\"\n }\n break\n case \"up\":\n switch (anchor) {\n case \"middle_top\":\n return \"middle_left\"\n case \"middle_bottom\":\n return \"middle_right\"\n case \"middle_left\":\n return \"middle_top\"\n case \"middle_right\":\n return \"middle_bottom\"\n }\n break\n case \"left\":\n switch (anchor) {\n case \"middle_top\":\n return \"middle_bottom\"\n case \"middle_bottom\":\n return \"middle_top\"\n case \"middle_left\":\n return \"middle_right\"\n case \"middle_right\":\n return \"middle_left\"\n }\n break\n case \"right\":\n return anchor // No change if orientation is \"right\"\n }\n return anchor\n}\n\nexport const flipSymbolOverXAxis = (\n symbol: SchSymbol,\n overrides?: Partial<SchSymbol>,\n): SchSymbol => {\n const { primitives, center, ports, size } = symbol\n const transformMatrix = transform({\n a: 1,\n b: 0,\n c: 0,\n d: -1,\n e: 0,\n f: 2 * center.y,\n })\n\n const flippedPrimitives = primitives.map((primitive): Primitive => {\n primitive = { ...primitive }\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map(\n (point) => applyToPoint(transformMatrix, point) as Point,\n ),\n }\n case \"text\":\n const flippedPoint = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n\n // Flip text anchors vertically\n const anchorMap: Record<NinePointAnchor, NinePointAnchor> = {\n top_left: \"bottom_left\",\n top_right: \"bottom_right\",\n bottom_left: \"top_left\",\n bottom_right: \"top_right\",\n center: \"center\",\n middle_top: \"middle_bottom\",\n middle_bottom: \"middle_top\",\n middle_left: \"middle_left\",\n middle_right: \"middle_right\",\n }\n\n return {\n ...primitive,\n x: flippedPoint.x,\n y: flippedPoint.y,\n anchor: anchorMap[primitive.anchor],\n }\n case \"circle\":\n case \"box\":\n const flippedCenter = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: flippedCenter.x,\n y: flippedCenter.y,\n }\n }\n })\n\n const flippedPorts = ports.map(\n (port): Port => ({\n ...port,\n ...(applyToPoint(transformMatrix, port) as Point),\n }),\n )\n\n return {\n primitives: flippedPrimitives,\n center,\n ports: flippedPorts,\n size,\n ...overrides,\n }\n}\n\nexport const flipSymbolOverYAxis = (\n symbol: SchSymbol,\n overrides?: Partial<SchSymbol>,\n): SchSymbol => {\n const { primitives, center, ports, size } = symbol\n const transformMatrix = transform({\n a: -1,\n b: 0,\n c: 0,\n d: 1,\n e: 0,\n f: 2 * center.x,\n })\n\n const flippedPrimitives = primitives.map((primitive): Primitive => {\n primitive = { ...primitive }\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map(\n (point) => applyToPoint(transformMatrix, point) as Point,\n ),\n }\n case \"text\":\n const flippedPoint = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n\n // Flip text anchors horizontally\n const anchorMap: Record<NinePointAnchor, NinePointAnchor> = {\n top_left: \"top_right\",\n top_right: \"top_left\",\n bottom_left: \"bottom_right\",\n bottom_right: \"bottom_left\",\n center: \"center\",\n middle_top: \"middle_top\",\n middle_bottom: \"middle_bottom\",\n middle_left: \"middle_right\",\n middle_right: \"middle_left\",\n }\n\n return {\n ...primitive,\n x: flippedPoint.x,\n y: flippedPoint.y,\n anchor: anchorMap[primitive.anchor],\n }\n case \"circle\":\n case \"box\":\n const flippedCenter = applyToPoint(transformMatrix, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: flippedCenter.x,\n y: flippedCenter.y,\n }\n }\n })\n\n const flippedPorts = ports.map(\n (port): Port => ({\n ...port,\n ...(applyToPoint(transformMatrix, port) as Point),\n }),\n )\n\n return {\n primitives: flippedPrimitives,\n center,\n ports: flippedPorts,\n size,\n ...overrides,\n }\n}\n\nexport const rotateRightFacingSymbol = (\n symbol: SchSymbol,\n opts: {\n newOrientation?: \"up\" | \"down\" | \"left\" | \"right\"\n overrides?: Partial<SchSymbol>\n },\n): SchSymbol => {\n const { newOrientation, overrides } = opts\n // Assuming the default orientation is \"right\"\n const angleMap = {\n up: Math.PI / 2,\n right: 0,\n down: -Math.PI / 2,\n left: -Math.PI,\n }\n\n const transform = rotate(\n newOrientation ? angleMap[newOrientation] : Math.PI / 2,\n symbol.center.x,\n symbol.center.y,\n )\n\n const { primitives, center, size, ports } = symbol\n\n const rotatedPrimitives = primitives.map((primitive): Primitive => {\n primitive = { ...primitive }\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map(\n (point) => applyToPoint(transform, point) as Point,\n ),\n }\n case \"text\":\n const rotatedPoint = applyToPoint(transform, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n\n primitive.anchor = rotateRightFacingAnchor(\n primitive.anchor,\n newOrientation ?? \"right\",\n )\n\n return {\n ...primitive,\n x: rotatedPoint.x,\n y: rotatedPoint.y,\n }\n case \"circle\":\n const rotatedCenter = applyToPoint(transform, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: rotatedCenter.x,\n y: rotatedCenter.y,\n }\n case \"box\":\n const rotatedCorner = applyToPoint(transform, {\n x: primitive.x,\n y: primitive.y,\n }) as Point\n return {\n ...primitive,\n x: rotatedCorner.x,\n y: rotatedCorner.y,\n width: primitive.height,\n height: primitive.width,\n }\n }\n })\n\n const rotatedPorts = ports.map(\n (port): Port => ({\n ...port,\n ...(applyToPoint(transform, port) as Point),\n }),\n )\n\n const bounds = getBoundsOfPrimitives(rotatedPrimitives)\n\n return {\n primitives: rotatedPrimitives,\n center,\n ports: rotatedPorts,\n size: {\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY,\n },\n ...overrides,\n }\n}\n\n/**\n * @deprecated use rotateRightFacingSymbol instead\n */\nexport const rotateSymbol = (\n symbol: SchSymbol,\n orientation: \"up\" | \"down\" | \"left\" | \"right\" = \"down\",\n overrides: Partial<SchSymbol> = {},\n): SchSymbol =>\n rotateRightFacingSymbol(symbol, {\n newOrientation: orientation,\n overrides,\n })\n","import { NinePointAnchor, SchSymbol } from \"drawing/types\"\nimport { rotateRightFacingSymbol } from \"drawing/rotateSymbol\"\nimport { getBoundsOfPrimitives } from \"drawing/utils/getBoundsOfPrimitives\"\n\ninterface ModifySymbolBuilder {\n changeTextAnchor(\n text: \"{REF}\" | \"{VAL}\" | string,\n newAnchor: NinePointAnchor,\n anchorPosition?: { x: number; y: number },\n ): ModifySymbolBuilder\n rotateRightFacingSymbol(\n newOrientation: \"up\" | \"down\" | \"left\" | \"right\",\n ): ModifySymbolBuilder\n labelPort(currentLabel: string, newLabels: string[]): ModifySymbolBuilder\n build(): SchSymbol\n}\n\nclass SymbolModifier implements ModifySymbolBuilder {\n private symbol: SchSymbol\n\n constructor(symbol: SchSymbol) {\n this.symbol = JSON.parse(JSON.stringify(symbol))\n this.symbol.size = this.computeSize()\n }\n\n changeTextAnchor(\n text: \"{REF}\" | \"{VAL}\" | string,\n newAnchor: NinePointAnchor,\n anchorPosition?: { x: number; y: number },\n ): ModifySymbolBuilder {\n this.symbol = {\n ...this.symbol,\n primitives: this.symbol.primitives.map((primitive) => {\n if (primitive.type === \"text\" && primitive.text === text) {\n return {\n ...primitive,\n anchor: newAnchor,\n ...(anchorPosition\n ? {\n x: primitive.x + anchorPosition.x,\n y: primitive.y + anchorPosition.y,\n }\n : {}),\n }\n }\n return primitive\n }),\n }\n return this\n }\n\n labelPort(currentLabel: string, newLabels: string[]): ModifySymbolBuilder {\n this.symbol = {\n ...this.symbol,\n ports: this.symbol.ports.map((port) => {\n return port.labels.includes(currentLabel)\n ? { ...port, labels: newLabels }\n : port\n }),\n }\n return this\n }\n\n rotateRightFacingSymbol(\n newOrientation: \"up\" | \"down\" | \"left\" | \"right\",\n ): ModifySymbolBuilder {\n this.symbol = rotateRightFacingSymbol(this.symbol, {\n newOrientation,\n })\n return this\n }\n\n computeSize(): { width: number; height: number } {\n const bounds = getBoundsOfPrimitives(this.symbol.primitives)\n return {\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY,\n }\n }\n\n build(): SchSymbol {\n return { ...this.symbol, size: this.computeSize() }\n }\n}\n\nexport const modifySymbol = (symbol: any): ModifySymbolBuilder => {\n const primitives = symbol.primitives ?? [\n ...Object.values(symbol.paths ?? {}),\n ...Object.values(symbol.texts ?? {}),\n ...Object.values(symbol.circles ?? {}),\n ...Object.values(symbol.rects ?? {}),\n ]\n\n const ports =\n symbol.ports ??\n Object.entries(symbol.refblocks).flatMap(([key, refblock]) => {\n return [{ ...(refblock as object), labels: [key] }]\n })\n\n let center = symbol.center ?? {\n x: symbol.bounds.centerX,\n y: symbol.bounds.centerY,\n }\n\n if (ports.length === 2) {\n center = {\n x: (ports[0].x + ports[1].x) / 2,\n y: (ports[0].y + ports[1].y) / 2,\n }\n }\n\n return new SymbolModifier({\n ...symbol,\n primitives,\n ports,\n center,\n })\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.03\n },\n {\n \"x\": -0.3,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.04\n },\n {\n \"x\": 0.54,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.13\n },\n {\n \"x\": 0,\n \"y\": -0.06\n },\n {\n \"x\": -0.11,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path17\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.13\n },\n {\n \"x\": 0.07,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path18\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.11\n },\n {\n \"x\": 0.14,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path19\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15,\n \"y\": -0.13\n },\n {\n \"x\": -0.07,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path20\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": -0.11\n },\n {\n \"x\": 0,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17,\n \"y\": 0.4\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": -0.4\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 1.14,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.04,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: 0.3894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.15,\n y: 0.3894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: 0.4094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: 0.4094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/ac_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.08,\n \"y\": 0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.21,\n \"y\": -0.11\n },\n {\n \"x\": 0.15,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: 0.3294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.15,\n y: 0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\", \"neg\"])\n .labelPort(\"right1\", [\"2\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\", \"neg\"])\n .labelPort(\"right1\", [\"2\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/avalanche_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18,\n \"y\": 0.18\n },\n {\n \"x\": 0.11,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18,\n \"y\": -0.09\n },\n {\n \"x\": 0.11,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/backward_diode.json\"\nimport { Primitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.16,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.16,\n y: 0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/backward_diode.json\"\nimport { Primitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.0001118,\n y: -0.18,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.0001118,\n y: 0.2738453,\n },\n ] as any[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"2\"])\n .labelPort(\"right1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/backward_diode.json\"\nimport { Primitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.0050250999999996715,\n y: 0.27384529999999985,\n anchor: \"middle_left\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.00011179999999999524,\n y: -0.27384530000000007,\n anchor: \"middle_left\",\n },\n ] as any[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"left1\", [\"1\"])\n\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/backward_diode.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nimport { rotateSymbol } from \"drawing/rotateSymbol\"\n\nimport type { TextPrimitive } from \"drawing\"\nimport tilted_digital_ground_right from \"./backward_diode_left\"\nimport backward_diode_left from \"./backward_diode_left\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nconst rotated = rotateSymbol(backward_diode_left, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.x = 0.25\nref.y += 0.21\nval.y -= 0.21\nval.x = 0.25\n\nexport default rotated\n","import type { SchSymbol } from \"./types\"\nimport { getBoundsOfPrimitives } from \"./utils/getBoundsOfPrimitives\"\n\nexport function defineSymbol(\n symbol: Omit<SchSymbol, \"size\"> & Partial<Pick<SchSymbol, \"size\">>,\n): SchSymbol {\n let size = symbol.size\n if (!size) {\n const bounds = getBoundsOfPrimitives(symbol.primitives)\n size = {\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY,\n }\n }\n return { ...symbol, size }\n}\n","{\n \"paths\": {\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06,\n \"y\": 0.19\n },\n {\n \"x\": -0.06,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.02,\n \"y\": 0.13\n },\n {\n \"x\": 0.02,\n \"y\": -0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06,\n \"y\": 0.03\n },\n {\n \"x\": -0.45,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": 0.03\n },\n {\n \"x\": 0.03,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.03,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.03,\n \"y\": -0.28\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.45,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": 0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.38,\n \"maxY\": 0.27,\n \"width\": 0.95,\n \"height\": 0.29,\n \"centerX\": 0,\n \"centerY\": 0.06\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/battery.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateRightFacingSymbol } from \"drawing/rotateSymbol\"\nimport battery_horz from \"./battery_horz\"\n\nexport default rotateRightFacingSymbol(battery_horz, {\n newOrientation: \"up\",\n})\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.53,\n \"y\": 0.05\n },\n {\n \"x\": -0.25,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": 0.05\n },\n {\n \"x\": 0.57,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.02,\n \"y\": 0.18\n },\n {\n \"x\": 0.28,\n \"y\": 0.18\n },\n {\n \"x\": 0.28,\n \"y\": -0.09\n },\n {\n \"x\": -0.25,\n \"y\": -0.09\n },\n {\n \"x\": -0.25,\n \"y\": 0.18\n },\n {\n \"x\": 0.02,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.25\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.25\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.53,\n \"y\": 0.05\n },\n \"right1\": {\n \"x\": 0.57,\n \"y\": 0.05\n }\n },\n \"bounds\": {\n \"minX\": -0.56,\n \"maxX\": 0.56,\n \"minY\": -0.25,\n \"maxY\": 0.25,\n \"width\": 1.12,\n \"height\": 0.5,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.16,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.16,\n y: 0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.1994553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.2694553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.1594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.15,\n \"y\": -0.01\n },\n {\n \"x\": 0.55,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15,\n \"y\": 0.06\n },\n {\n \"x\": 0.14,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.06\n },\n {\n \"x\": 0.14,\n \"y\": -0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.16,\n \"y\": 0.06\n },\n {\n \"x\": -0.16,\n \"y\": -0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-5-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15,\n \"y\": -0.08\n },\n {\n \"x\": 0.14,\n \"y\": -0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.55,\n \"y\": -0.01\n },\n {\n \"x\": -0.17,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.17\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.17\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.55,\n \"y\": -0.01\n },\n \"right1\": {\n \"x\": 0.55,\n \"y\": -0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.58,\n \"maxX\": 0.58,\n \"minY\": -0.17,\n \"maxY\": 0.17,\n \"width\": 1.16,\n \"height\": 0.35,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.1404553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.2,\n y: 0.1494553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.1704553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.1704553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/boxresistor_small.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.2,\n y: -0.1404553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.1494553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/boxresistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.16,\n y: -0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.16,\n y: -0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"horizontal-bar\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": 0\n },\n {\n \"x\": 0.4,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"middle-dash-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.2\n },\n {\n \"x\": 0,\n \"y\": 0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"middle-dash-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.01\n },\n {\n \"x\": 0,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"middle-dash-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.18\n },\n {\n \"x\": 0,\n \"y\": -0.31\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"left-vertical\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.25,\n \"y\": 0\n },\n {\n \"x\": -0.25,\n \"y\": -0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"right-vertical\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.25,\n \"y\": 0\n },\n {\n \"x\": 0.25,\n \"y\": -0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"left-ground\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": -0.2\n },\n {\n \"x\": -0.25,\n \"y\": -0.3\n },\n {\n \"x\": -0.2,\n \"y\": -0.2\n },\n {\n \"x\": -0.3,\n \"y\": -0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"right-ground\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.2\n },\n {\n \"x\": 0.25,\n \"y\": -0.3\n },\n {\n \"x\": 0.3,\n \"y\": -0.2\n },\n {\n \"x\": 0.2,\n \"y\": -0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.4,\n \"y\": 0\n }\n },\n \"texts\": {\n \"ref\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.35\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.4,\n \"maxY\": 0.35,\n \"width\": 0.8,\n \"height\": 0.75,\n \"centerX\": 0,\n \"centerY\": -0.02\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/bridged_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/bridged_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\nimport ground_bridge_right from \"./bridged_ground_right\"\n\nexport default flipSymbolOverYAxis(ground_bridge_right)\n","import svgJson from \"assets/generated/bridged_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2594553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.55,\n \"y\": 0.02\n },\n {\n \"x\": 0.07,\n \"y\": 0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.02\n },\n {\n \"x\": -0.55,\n \"y\": 0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.28\n },\n {\n \"x\": 0.07,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.28\n },\n {\n \"x\": -0.09,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.55,\n \"y\": 0.02\n },\n \"right1\": {\n \"x\": 0.55,\n \"y\": 0.02\n }\n },\n \"bounds\": {\n \"minX\": -0.58,\n \"maxX\": 0.58,\n \"minY\": -0.42,\n \"maxY\": 0.42,\n \"width\": 1.16,\n \"height\": 0.84,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/capacitor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.115,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.2,\n y: 0.115,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import { isPrimitive } from \"drawing/typeguards\"\nimport { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"../assets/generated/capacitor.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"2\", \"neg\"])\n .labelPort(\"right1\", [\"1\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path27-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": 0.02\n },\n {\n \"x\": 0,\n \"y\": 0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.02\n },\n {\n \"x\": -0.54,\n \"y\": 0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.28\n },\n {\n \"x\": 0,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.24\n },\n {\n \"x\": -0.14,\n \"y\": -0.23\n },\n {\n \"x\": -0.14,\n \"y\": -0.23\n },\n {\n \"x\": -0.14,\n \"y\": -0.23\n },\n {\n \"x\": -0.14,\n \"y\": -0.23\n },\n {\n \"x\": -0.13,\n \"y\": -0.23\n },\n {\n \"x\": -0.13,\n \"y\": -0.23\n },\n {\n \"x\": -0.13,\n \"y\": -0.23\n },\n {\n \"x\": -0.13,\n \"y\": -0.23\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.22\n },\n {\n \"x\": -0.13,\n \"y\": -0.21\n },\n {\n \"x\": -0.13,\n \"y\": -0.21\n },\n {\n \"x\": -0.13,\n \"y\": -0.21\n },\n {\n \"x\": -0.12,\n \"y\": -0.21\n },\n {\n \"x\": -0.12,\n \"y\": -0.21\n },\n {\n \"x\": -0.12,\n \"y\": -0.21\n },\n {\n \"x\": -0.12,\n \"y\": -0.21\n },\n {\n \"x\": -0.12,\n \"y\": -0.21\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.2\n },\n {\n \"x\": -0.12,\n \"y\": -0.19\n },\n {\n \"x\": -0.12,\n \"y\": -0.19\n },\n {\n \"x\": -0.12,\n \"y\": -0.19\n },\n {\n \"x\": -0.12,\n \"y\": -0.19\n },\n {\n \"x\": -0.11,\n \"y\": -0.19\n },\n {\n \"x\": -0.11,\n \"y\": -0.19\n },\n {\n \"x\": -0.11,\n \"y\": -0.19\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.18\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.11,\n \"y\": -0.17\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.16\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.09,\n \"y\": -0.14\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.13\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.11\n },\n {\n \"x\": -0.09,\n \"y\": -0.11\n },\n {\n \"x\": -0.09,\n \"y\": -0.11\n },\n {\n \"x\": -0.09,\n \"y\": -0.11\n },\n {\n \"x\": -0.09,\n \"y\": -0.11\n },\n {\n \"x\": -0.09,\n \"y\": -0.11\n },\n {\n \"x\": -0.09,\n \"y\": -0.1\n },\n {\n \"x\": -0.09,\n \"y\": -0.1\n },\n {\n \"x\": -0.09,\n \"y\": -0.1\n },\n {\n \"x\": -0.09,\n \"y\": -0.1\n },\n {\n \"x\": -0.09,\n \"y\": -0.1\n },\n {\n \"x\": -0.09,\n \"y\": -0.1\n },\n {\n \"x\": -0.08,\n \"y\": -0.09\n },\n {\n \"x\": -0.08,\n \"y\": -0.09\n },\n {\n \"x\": -0.08,\n \"y\": -0.09\n },\n {\n \"x\": -0.08,\n \"y\": -0.09\n },\n {\n \"x\": -0.08,\n \"y\": -0.09\n },\n {\n \"x\": -0.08,\n \"y\": -0.09\n },\n {\n \"x\": -0.08,\n \"y\": -0.08\n },\n {\n \"x\": -0.08,\n \"y\": -0.08\n },\n {\n \"x\": -0.08,\n \"y\": -0.08\n },\n {\n \"x\": -0.08,\n \"y\": -0.08\n },\n {\n \"x\": -0.08,\n \"y\": -0.08\n },\n {\n \"x\": -0.08,\n \"y\": -0.08\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": -0.08,\n \"y\": -0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": -0.04\n },\n {\n \"x\": -0.08,\n \"y\": -0.04\n },\n {\n \"x\": -0.08,\n \"y\": -0.04\n },\n {\n \"x\": -0.08,\n \"y\": -0.04\n },\n {\n \"x\": -0.08,\n \"y\": -0.04\n },\n {\n \"x\": -0.08,\n \"y\": -0.04\n },\n {\n \"x\": -0.08,\n \"y\": -0.03\n },\n {\n \"x\": -0.08,\n \"y\": -0.03\n },\n {\n \"x\": -0.08,\n \"y\": -0.03\n },\n {\n \"x\": -0.08,\n \"y\": -0.03\n },\n {\n \"x\": -0.08,\n \"y\": -0.03\n },\n {\n \"x\": -0.08,\n \"y\": -0.03\n },\n {\n \"x\": -0.08,\n \"y\": -0.02\n },\n {\n \"x\": -0.08,\n \"y\": -0.02\n },\n {\n \"x\": -0.08,\n \"y\": -0.02\n },\n {\n \"x\": -0.08,\n \"y\": -0.02\n },\n {\n \"x\": -0.08,\n \"y\": -0.02\n },\n {\n \"x\": -0.08,\n \"y\": -0.02\n },\n {\n \"x\": -0.08,\n \"y\": -0.01\n },\n {\n \"x\": -0.08,\n \"y\": -0.01\n },\n {\n \"x\": -0.08,\n \"y\": -0.01\n },\n {\n \"x\": -0.08,\n \"y\": -0.01\n },\n {\n \"x\": -0.08,\n \"y\": -0.01\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0.01\n },\n {\n \"x\": -0.07,\n \"y\": 0.01\n },\n {\n \"x\": -0.07,\n \"y\": 0.01\n },\n {\n \"x\": -0.07,\n \"y\": 0.01\n },\n {\n \"x\": -0.07,\n \"y\": 0.01\n },\n {\n \"x\": -0.07,\n \"y\": 0.01\n },\n {\n \"x\": -0.08,\n \"y\": 0.02\n },\n {\n \"x\": -0.08,\n \"y\": 0.02\n },\n {\n \"x\": -0.08,\n \"y\": 0.02\n },\n {\n \"x\": -0.08,\n \"y\": 0.02\n },\n {\n \"x\": -0.08,\n \"y\": 0.02\n },\n {\n \"x\": -0.08,\n \"y\": 0.02\n },\n {\n \"x\": -0.08,\n \"y\": 0.03\n },\n {\n \"x\": -0.08,\n \"y\": 0.03\n },\n {\n \"x\": -0.08,\n \"y\": 0.03\n },\n {\n \"x\": -0.08,\n \"y\": 0.03\n },\n {\n \"x\": -0.08,\n \"y\": 0.03\n },\n {\n \"x\": -0.08,\n \"y\": 0.03\n },\n {\n \"x\": -0.08,\n \"y\": 0.04\n },\n {\n \"x\": -0.08,\n \"y\": 0.04\n },\n {\n \"x\": -0.08,\n \"y\": 0.04\n },\n {\n \"x\": -0.08,\n \"y\": 0.04\n },\n {\n \"x\": -0.08,\n \"y\": 0.04\n },\n {\n \"x\": -0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.08\n },\n {\n \"x\": -0.08,\n \"y\": 0.08\n },\n {\n \"x\": -0.08,\n \"y\": 0.08\n },\n {\n \"x\": -0.08,\n \"y\": 0.08\n },\n {\n \"x\": -0.08,\n \"y\": 0.08\n },\n {\n \"x\": -0.08,\n \"y\": 0.08\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.09,\n \"y\": 0.12\n },\n {\n \"x\": -0.09,\n \"y\": 0.12\n },\n {\n \"x\": -0.09,\n \"y\": 0.12\n },\n {\n \"x\": -0.09,\n \"y\": 0.13\n },\n {\n \"x\": -0.09,\n \"y\": 0.13\n },\n {\n \"x\": -0.09,\n \"y\": 0.13\n },\n {\n \"x\": -0.09,\n \"y\": 0.13\n },\n {\n \"x\": -0.09,\n \"y\": 0.13\n },\n {\n \"x\": -0.09,\n \"y\": 0.13\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.14\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.16\n },\n {\n \"x\": -0.09,\n \"y\": 0.17\n },\n {\n \"x\": -0.09,\n \"y\": 0.17\n },\n {\n \"x\": -0.1,\n \"y\": 0.17\n },\n {\n \"x\": -0.1,\n \"y\": 0.17\n },\n {\n \"x\": -0.1,\n \"y\": 0.17\n },\n {\n \"x\": -0.1,\n \"y\": 0.17\n },\n {\n \"x\": -0.1,\n \"y\": 0.17\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.1,\n \"y\": 0.2\n },\n {\n \"x\": -0.1,\n \"y\": 0.2\n },\n {\n \"x\": -0.1,\n \"y\": 0.2\n },\n {\n \"x\": -0.1,\n \"y\": 0.2\n },\n {\n \"x\": -0.1,\n \"y\": 0.2\n },\n {\n \"x\": -0.1,\n \"y\": 0.2\n },\n {\n \"x\": -0.11,\n \"y\": 0.2\n },\n {\n \"x\": -0.11,\n \"y\": 0.2\n },\n {\n \"x\": -0.11,\n \"y\": 0.2\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.21\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.23\n },\n {\n \"x\": -0.11,\n \"y\": 0.23\n },\n {\n \"x\": -0.11,\n \"y\": 0.23\n },\n {\n \"x\": -0.11,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.24\n },\n {\n \"x\": -0.12,\n \"y\": 0.25\n },\n {\n \"x\": -0.12,\n \"y\": 0.25\n },\n {\n \"x\": -0.12,\n \"y\": 0.25\n },\n {\n \"x\": -0.12,\n \"y\": 0.25\n },\n {\n \"x\": -0.12,\n \"y\": 0.25\n },\n {\n \"x\": -0.12,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.25\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.13,\n \"y\": 0.27\n },\n {\n \"x\": -0.13,\n \"y\": 0.27\n },\n {\n \"x\": -0.13,\n \"y\": 0.27\n },\n {\n \"x\": -0.13,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.27\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": 0.25\n },\n {\n \"x\": 0.12,\n \"y\": 0.25\n },\n {\n \"x\": 0.12,\n \"y\": 0.25\n },\n {\n \"x\": 0.26,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.32\n },\n {\n \"x\": 0.2,\n \"y\": 0.18\n },\n {\n \"x\": 0.19,\n \"y\": 0.18\n },\n {\n \"x\": 0.19,\n \"y\": 0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.02\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": 0.02\n }\n },\n \"bounds\": {\n \"minX\": -0.58,\n \"maxX\": 0.58,\n \"minY\": -0.42,\n \"maxY\": 0.42,\n \"width\": 1.16,\n \"height\": 0.84,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/capacitor_polarized.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.1,\n y: -0.2094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.2094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"2\", \"neg\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"1\", \"pos\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/capacitor_polarized.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"2\", \"neg\"])\n .labelPort(\"right1\", [\"1\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/capacitor_polarized.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.4094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0,\n y: 0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"2\", \"neg\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"1\", \"pos\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/capacitor_polarized.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.2094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.3,\n y: 0.2094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"2\", \"neg\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"1\", \"pos\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import svgJson from \"assets/generated/capacitor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/capacitor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.2,\n y: -0.095,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.095,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.03\n },\n {\n \"x\": -0.3,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.03\n },\n {\n \"x\": 0.54,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.29\n },\n {\n \"x\": 0.29,\n \"y\": -0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.37\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": -0.37\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.37,\n \"maxY\": 0.37,\n \"width\": 1.14,\n \"height\": 0.74,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.04,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/constant_current_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: 0.3894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.15,\n y: 0.3894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/constant_current_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/constant_current_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.3894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/constant_current_diode.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\", \"neg\"])\n .labelPort(\"right1\", [\"2\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/constant_current_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/constant_current_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.54,\n \"y\": -0.01\n },\n {\n \"x\": 0.13,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.25\n },\n {\n \"x\": 0.13,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.25\n },\n {\n \"x\": 0.07,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": 0.25\n },\n {\n \"x\": -0.14,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08,\n \"y\": 0.26\n },\n {\n \"x\": -0.08,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.26\n },\n {\n \"x\": -0.08,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.28\n },\n {\n \"x\": -0.08,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.21,\n \"y\": 0.32\n },\n {\n \"x\": 0.2,\n \"y\": 0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.71\n },\n {\n \"x\": 0,\n \"y\": 0.33\n },\n {\n \"x\": 0,\n \"y\": 0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.21,\n \"y\": 0.32\n },\n {\n \"x\": -0.21,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.32\n },\n {\n \"x\": 0.2,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.35\n },\n {\n \"x\": -0.22,\n \"y\": -0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.02,\n \"y\": -0.71\n },\n {\n \"x\": -0.02,\n \"y\": -0.36\n },\n {\n \"x\": -0.02,\n \"y\": -0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.35\n },\n {\n \"x\": 0.19,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": -0.35\n },\n {\n \"x\": -0.22,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": -0.01\n },\n {\n \"x\": -0.54,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.53,\n \"y\": 0.28\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.54,\n \"y\": -0.28\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0,\n \"y\": 0.71\n },\n \"bottom1\": {\n \"x\": -0.02,\n \"y\": -0.71\n },\n \"left1\": {\n \"x\": -0.54,\n \"y\": -0.01\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": -0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.74,\n \"maxY\": 0.74,\n \"width\": 1.14,\n \"height\": 1.48,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/crystal_4pin.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.4,\n y: 0.4094554499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.4,\n y: 0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.top1, labels: [\"4\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .build()\n","import svgJson from \"assets/generated/crystal_4pin.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"top1\", [\"2\", \"gnd1\"])\n .labelPort(\"bottom1\", [\"4\", \"gnd2\"])\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"right1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .build()\n","import svgJson from \"assets/generated/crystal_4pin.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"top1\", [\"4\", \"gnd1\"])\n .labelPort(\"bottom1\", [\"2\", \"gnd2\"])\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .build()\n","import svgJson from \"assets/generated/crystal_4pin.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.4,\n y: -0.4094554499999995,\n },\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.4,\n y: -0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.top1, labels: [\"4\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.55,\n \"y\": -0.01\n },\n {\n \"x\": 0.13,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": -0.01\n },\n {\n \"x\": -0.55,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": -0.28\n },\n {\n \"x\": 0.13,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.28\n },\n {\n \"x\": 0.07,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": -0.28\n },\n {\n \"x\": -0.14,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08,\n \"y\": -0.28\n },\n {\n \"x\": -0.08,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.28\n },\n {\n \"x\": -0.08,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-2-7-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.26\n },\n {\n \"x\": -0.08,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": -0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.43\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.55,\n \"y\": -0.01\n },\n \"right1\": {\n \"x\": 0.55,\n \"y\": -0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.58,\n \"maxX\": 0.58,\n \"minY\": -0.52,\n \"maxY\": 0.43,\n \"width\": 1.16,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": -0.04\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/crystal.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.3,\n y: 0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.3,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"top_left\")\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","import { isPrimitive } from \"drawing/typeguards\"\nimport { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"../assets/generated/crystal.json\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"2\", \"neg\"])\n .labelPort(\"right1\", [\"1\", \"pos\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/crystal.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"assets/generated/crystal.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.3,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.3,\n y: -0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"bottom_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.99,\n \"y\": -1.64\n },\n {\n \"x\": 2.1,\n \"y\": -1.64\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.1,\n \"y\": -1.48\n },\n {\n \"x\": 2.1,\n \"y\": -1.8\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.22,\n \"y\": -1.5\n },\n {\n \"x\": 2.11,\n \"y\": -1.58\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.23,\n \"y\": -1.78\n },\n {\n \"x\": 2.11,\n \"y\": -1.7\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.23,\n \"y\": -1.49\n },\n {\n \"x\": 2.23,\n \"y\": -1.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.23,\n \"y\": -1.97\n },\n {\n \"x\": 2.23,\n \"y\": -1.79\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"arrow-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 2.17,\n \"y\": -1.7\n },\n {\n \"x\": 2.13,\n \"y\": -1.76\n },\n {\n \"x\": 2.19,\n \"y\": -1.76\n },\n {\n \"x\": 2.17,\n \"y\": -1.7\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.6,\n \"y\": -1.5\n },\n {\n \"x\": 1.86,\n \"y\": -1.5\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.87,\n \"y\": -1.34\n },\n {\n \"x\": 1.87,\n \"y\": -1.66\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.99,\n \"y\": -1.36\n },\n {\n \"x\": 1.87,\n \"y\": -1.44\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.99,\n \"y\": -1.64\n },\n {\n \"x\": 1.88,\n \"y\": -1.56\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"arrow-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.94,\n \"y\": -1.56\n },\n {\n \"x\": 1.89,\n \"y\": -1.62\n },\n {\n \"x\": 1.96,\n \"y\": -1.62\n },\n {\n \"x\": 1.94,\n \"y\": -1.56\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 1.99,\n \"y\": -1.35\n },\n {\n \"x\": 2.23,\n \"y\": -1.36\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 1.88,\n \"y\": -1.94\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 1.88,\n \"y\": -1.14\n }\n },\n \"refblocks\": {\n \"right1\": {\n \"x\": 2.23,\n \"y\": -1.97\n },\n \"right2\": {\n \"x\": 1.6,\n \"y\": -1.5\n },\n \"right3\": {\n \"x\": 2.23,\n \"y\": -1.14\n }\n },\n \"bounds\": {\n \"minX\": 1.58,\n \"maxX\": 2.35,\n \"minY\": -1.98,\n \"maxY\": -1.12,\n \"width\": 0.77,\n \"height\": 0.86,\n \"centerX\": 1.96,\n \"centerY\": -1.55\n },\n \"circles\": {\n \"path1-0\": {\n \"type\": \"circle\",\n \"x\": 2.05,\n \"y\": -1.54,\n \"radius\": 0.3,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/darlington_pair_transistor.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"3\"])\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0.8, y: -0.15 })\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0, y: 0.15 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/darlington_pair_transistor.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"3\"])\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/darlington_pair_transistor.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"3\"])\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0, y: -0.8 })\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0, y: 0.8 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/darlington_pair_transistor.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"3\"])\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/darlington_pair_transistor.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"3\"])\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0, y: -0.15 })\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0.8, y: 0.15 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/darlington_pair_transistor.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"right2\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"3\"])\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0, y: -0.15 })\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0.8, y: 0.15 })\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.09\n },\n {\n \"x\": 0.12,\n \"y\": 0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.45\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.35\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"A\",\n \"x\": 0,\n \"y\": -0.1\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": -0.09,\n \"maxY\": 0.09,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/dc_ammeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, x: 0, y: 0.01, anchor: \"center\", fontSize: 0.3 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dc_ammeter_horz from \"./dc_ammeter_horz\"\nimport { PathPrimitive, Primitive, TextPrimitive } from \"drawing/types\"\n\nfunction isPathPrimitive(value: any): value is PathPrimitive {\n return (\n typeof value === \"object\" &&\n value !== null &&\n value.type === \"path\" &&\n Array.isArray(value.points) &&\n typeof value.color === \"string\"\n )\n}\n\nfunction isTextPrimitive(value: any): value is TextPrimitive {\n return (\n typeof value === \"object\" &&\n value !== null &&\n value.type === \"text\" &&\n typeof value.text === \"string\" &&\n typeof value.x === \"number\" &&\n typeof value.y === \"number\" &&\n typeof value.anchor === \"string\"\n )\n}\n\nconst { 6: letter, 2: underline, ...rest } = dc_ammeter_horz.primitives\n\nif (isPathPrimitive(underline)) {\n underline.points.map((p) => {\n p.y += 0.05\n })\n}\n\nif (isTextPrimitive(letter)) {\n letter.y += 0.025\n}\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...dc_ammeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter, underline],\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.03\n },\n {\n \"x\": -0.3,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.04\n },\n {\n \"x\": 0.54,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.13\n },\n {\n \"x\": 0,\n \"y\": -0.06\n },\n {\n \"x\": -0.11,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.14\n },\n {\n \"x\": 0.12,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17,\n \"y\": 0.4\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": -0.4\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 1.14,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.04,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: 0.3894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.15,\n y: 0.3894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: 0.3894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: -0.3294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.4294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: 0.3894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/dc_voltmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.04\n },\n {\n \"x\": -0.11,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.04\n },\n {\n \"x\": 0.54,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": -0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.15\n },\n {\n \"x\": 0.09,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.15\n },\n {\n \"x\": 0.09,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-9-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.26\n },\n {\n \"x\": 0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": 0.07,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.03,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.03,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.42,\n \"maxY\": 0.42,\n \"width\": 1.14,\n \"height\": 0.83,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.05,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/diac.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: -0.03, y: 0.2 })\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0.8, y: -0.2 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/diac.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\", { x: 0, y: 0.1 })\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/diac.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\", { x: 0, y: 0.8 })\n .changeTextAnchor(\"{VAL}\", \"middle_top\", { x: 0, y: -0.9 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/diac.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\", { x: 0, y: 0.1 })\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/diac.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0.7, y: 0.2 })\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: -0.13, y: -0.2 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/diac.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0.7, y: 0.2 })\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: -0.13, y: -0.2 })\n .build()\n","{\n \"paths\": {\n \"triangle\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.06, \"y\": -0.09 },\n { \"x\": -0.06, \"y\": 0.09 },\n { \"x\": 0.06, \"y\": 0 },\n { \"x\": -0.06, \"y\": -0.09 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"stem\": {\n \"type\": \"path\",\n \"points\": [\n { \"x\": -0.11, \"y\": 0 },\n { \"x\": -0.06, \"y\": 0 }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.03\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.11,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.37,\n \"maxY\": 0.37,\n \"width\": 1.14,\n \"height\": 0.74,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}\n","import svgJson from \"assets/generated/digital_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, bounds, refblocks } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.13,\n y: -0.0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"assets/generated/digital_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, bounds, refblocks } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.13,\n y: 0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"assets/generated/digital_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, bounds, refblocks } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.13,\n y: -0.0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/digital_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, bounds, refblocks } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.13,\n y: 0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diode_right from \"./diode_right\"\n\nexport default rotateSymbol(diode_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diode_right from \"./diode_right\"\n\nexport default rotateSymbol(diode_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport diode_right from \"./diode_right\"\n\nexport default rotateSymbol(diode_right, \"up\")\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.37,\n \"y\": 0.22\n },\n {\n \"x\": -0.13,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.22\n },\n {\n \"x\": 0.11,\n \"y\": 0.16\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.13\n },\n {\n \"x\": 0.37,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.36\n },\n {\n \"x\": 0.37,\n \"y\": 0.36\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.37,\n \"y\": -0.18\n },\n {\n \"x\": -0.13,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": -0.19\n },\n {\n \"x\": 0.1,\n \"y\": -0.24\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": -0.27\n },\n {\n \"x\": 0.37,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.04\n },\n {\n \"x\": 0.37,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-4-join\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.2\n },\n {\n \"x\": 0,\n \"y\": 0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.56\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.37,\n \"y\": 0.22\n },\n \"left2\": {\n \"x\": -0.37,\n \"y\": -0.18\n },\n \"right1\": {\n \"x\": 0.37,\n \"y\": 0.36\n },\n \"right2\": {\n \"x\": 0.37,\n \"y\": 0.13\n },\n \"right3\": {\n \"x\": 0.37,\n \"y\": -0.04\n },\n \"right5\": {\n \"x\": 0.37,\n \"y\": -0.27\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.47,\n \"maxY\": 0.56,\n \"width\": 1,\n \"height\": 1.04,\n \"centerX\": 0,\n \"centerY\": 0.05\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.13,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-5\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": -0.27,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.37,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-6\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": -0.04,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": 0.22,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": -0.18,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/dpdt_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"3\"])\n .labelPort(\"right2\", [\"2\"])\n .labelPort(\"right3\", [\"6\"])\n .labelPort(\"left2\", [\"4\"])\n .labelPort(\"right5\", [\"5\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_normally_closed_switch_right from \"./dpdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.537\nval.y -= 0.5375\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_normally_closed_switch_right from \"./dpdt_normally_closed_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 1.0\nval.y -= 1.0\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_normally_closed_switch_right from \"./dpdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.537\nval.y -= 0.5375\nval.x = 0\n\nexport default rotated\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.37,\n \"y\": 0.22\n },\n {\n \"x\": -0.13,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.23\n },\n {\n \"x\": 0.11,\n \"y\": 0.33\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.13\n },\n {\n \"x\": 0.37,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.36\n },\n {\n \"x\": 0.37,\n \"y\": 0.36\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.37,\n \"y\": -0.18\n },\n {\n \"x\": -0.13,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": -0.18\n },\n {\n \"x\": 0.11,\n \"y\": -0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": -0.27\n },\n {\n \"x\": 0.37,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.04\n },\n {\n \"x\": 0.37,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-4-join\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.12\n },\n {\n \"x\": 0,\n \"y\": 0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.61\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.52\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.37,\n \"y\": 0.22\n },\n \"left2\": {\n \"x\": -0.37,\n \"y\": -0.18\n },\n \"right1\": {\n \"x\": 0.37,\n \"y\": 0.36\n },\n \"right2\": {\n \"x\": 0.37,\n \"y\": 0.13\n },\n \"right3\": {\n \"x\": 0.37,\n \"y\": -0.04\n },\n \"right5\": {\n \"x\": 0.37,\n \"y\": -0.27\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.47,\n \"maxY\": 0.56,\n \"width\": 1,\n \"height\": 1.04,\n \"centerX\": 0,\n \"centerY\": 0.05\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.13,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-5\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": -0.27,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.37,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-6\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": -0.04,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": 0.22,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": -0.18,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/dpdt_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"3\"])\n .labelPort(\"right2\", [\"2\"])\n .labelPort(\"right3\", [\"6\"])\n .labelPort(\"left2\", [\"4\"])\n .labelPort(\"right5\", [\"5\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_switch_right from \"./dpdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.0\nref.y += 0.565\nval.y -= 0.555\nval.x = 0.0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_switch_right from \"./dpdt_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 1.09\nval.y -= 1.09\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpdt_switch_right from \"./dpdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpdt_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.0\nref.y += 0.565\nval.y -= 0.555\nval.x = 0.0\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": 0.06\n },\n {\n \"x\": -0.14,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.06\n },\n {\n \"x\": 0.38,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": -0.17\n },\n {\n \"x\": -0.14,\n \"y\": -0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": -0.17\n },\n {\n \"x\": 0.11,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": -0.17\n },\n {\n \"x\": 0.38,\n \"y\": -0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.31\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.31\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.38,\n \"y\": -0.17\n },\n \"left3\": {\n \"x\": -0.38,\n \"y\": 0.06\n },\n \"right1\": {\n \"x\": 0.38,\n \"y\": -0.17\n },\n \"right3\": {\n \"x\": 0.38,\n \"y\": 0.06\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 0.81,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": 0.06,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": -0.17,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": -0.11,\n \"y\": 0.06,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.11,\n \"y\": -0.17,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/dpst_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"4\"])\n .labelPort(\"left3\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_normally_closed_switch_right from \"./dpst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.4\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_normally_closed_switch_right from \"./dpst_normally_closed_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.67\nval.y -= 0.67\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_normally_closed_switch_right from \"./dpst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.46\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.46\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": 0.06\n },\n {\n \"x\": -0.14,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.07\n },\n {\n \"x\": 0.1,\n \"y\": 0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.06\n },\n {\n \"x\": 0.38,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": -0.17\n },\n {\n \"x\": -0.14,\n \"y\": -0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": -0.16\n },\n {\n \"x\": 0.1,\n \"y\": -0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": -0.17\n },\n {\n \"x\": 0.38,\n \"y\": -0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.38,\n \"y\": -0.17\n },\n \"left3\": {\n \"x\": -0.38,\n \"y\": 0.06\n },\n \"right1\": {\n \"x\": 0.38,\n \"y\": -0.17\n },\n \"right3\": {\n \"x\": 0.38,\n \"y\": 0.06\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 0.81,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-4\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": 0.06,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": -0.17,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": -0.11,\n \"y\": 0.06,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.11,\n \"y\": -0.17,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/dpst_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"right3\", [\"4\"])\n .labelPort(\"left3\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_switch_right from \"./dpst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.295\nval.y -= 0.295\nval.x = 0.42\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_switch_right from \"./dpst_switch_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.795\nval.y -= 0.795\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport dpst_switch_right from \"./dpst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(dpst_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.46\nref.y += 0.315\nval.y -= 0.315\nval.x = 0.46\n\nexport default rotated\n","{\n \"paths\": {\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.44,\n \"y\": 0\n },\n {\n \"x\": -0.16,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.17,\n \"y\": 0\n },\n {\n \"x\": 0.44,\n \"y\": 0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.25,\n \"y\": -0.16\n },\n {\n \"x\": 0.02,\n \"y\": 0.3\n },\n {\n \"x\": 0.25,\n \"y\": 0.17\n },\n {\n \"x\": -0.02,\n \"y\": -0.29\n },\n {\n \"x\": -0.25,\n \"y\": -0.16\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.37\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.37\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.44,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.44,\n \"y\": 0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.25,\n \"maxY\": 0.25,\n \"width\": 1.13,\n \"height\": 0.5,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/ferrite_bead.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.18,\n y: -0.3204553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.25,\n y: -0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { flipSymbolOverXAxis, rotateSymbol } from \"drawing/rotateSymbol\"\nimport ferrite_bead_up from \"./ferrite_bead_up\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = flipSymbolOverXAxis(ferrite_bead_up)\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.4\nref.x = 0.32\nval.y -= 0.45\nval.x = 0.32\n\nexport default symbol\n","import svgJson from \"assets/generated/ferrite_bead.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\n\nimport ferrite_bead_right from \"./ferrite_bead_right\"\n\n// export default rotateSymbol(ferrite_bead_right, \"left\")\nexport default flipSymbolOverYAxis(ferrite_bead_right)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.56,\n \"y\": 0.04\n },\n {\n \"x\": -0.22,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.05\n },\n {\n \"x\": 0.48,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": -0.15\n },\n {\n \"x\": 0.14,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": 0.25\n },\n {\n \"x\": -0.21,\n \"y\": -0.15\n },\n {\n \"x\": 0.14,\n \"y\": 0.05\n },\n {\n \"x\": -0.22,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.09,\n \"y\": 0.38\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.07,\n \"y\": -0.38\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"\",\n \"x\": 0.59,\n \"y\": -0.33\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.56,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.48,\n \"y\": 0.05\n }\n },\n \"bounds\": {\n \"minX\": -0.59,\n \"maxX\": 0.59,\n \"minY\": -0.38,\n \"maxY\": 0.38,\n \"width\": 1.18,\n \"height\": 0.76,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/filled_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: 0.3294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.15,\n y: 0.3294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/filled_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: 0.4094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/filled_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/filled_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0,\n y: 0.4094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.4094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/filled_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/filled_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.15,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.43\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Hz\",\n \"x\": 0,\n \"y\": -0.04\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.01,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/frequency_meter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, x: 0, y: 0.01, anchor: \"center\", fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport frequency_meter_horz from \"./frequency_meter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = frequency_meter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...frequency_meter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path10\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.53,\n \"y\": 0.04\n },\n {\n \"x\": 0.53,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path14\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.17\n },\n {\n \"x\": 0.27,\n \"y\": 0.17\n },\n {\n \"x\": 0.27,\n \"y\": -0.1\n },\n {\n \"x\": -0.26,\n \"y\": -0.1\n },\n {\n \"x\": -0.26,\n \"y\": 0.17\n },\n {\n \"x\": 0,\n \"y\": 0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.24\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.17,\n \"y\": -0.24\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.53,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.53,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.56,\n \"maxX\": 0.56,\n \"minY\": -0.24,\n \"maxY\": 0.24,\n \"width\": 1.13,\n \"height\": 0.47,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/fuse.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.top1, anchor: \"middle_bottom\" },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.2,\n anchor: \"middle_top\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport fuse_horz from \"./fuse_horz\"\n\nexport default rotateSymbol(fuse_horz)\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.29,\n \"y\": 0.01\n },\n {\n \"x\": 0.04,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": -0.22\n },\n {\n \"x\": 0.04,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.17\n },\n {\n \"x\": 0.12,\n \"y\": 0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.06\n },\n {\n \"x\": 0.19,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.31,\n \"y\": -0.02\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.29,\n \"y\": 0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.31,\n \"maxX\": 0.31,\n \"minY\": -0.22,\n \"maxY\": 0.22,\n \"width\": 0.62,\n \"height\": 0.45,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.52,\n \"y\": 0.03\n },\n {\n \"x\": -0.18,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0.04\n },\n {\n \"x\": 0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.31,\n \"y\": 0.2\n },\n {\n \"x\": -0.31,\n \"y\": -0.11\n },\n {\n \"x\": -0.01,\n \"y\": 0.04\n },\n {\n \"x\": -0.3,\n \"y\": 0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-9-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33,\n \"y\": 0.2\n },\n {\n \"x\": 0.33,\n \"y\": -0.1\n },\n {\n \"x\": 0.04,\n \"y\": 0.04\n },\n {\n \"x\": 0.33,\n \"y\": 0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.04,\n \"y\": 0.32\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.04,\n \"y\": -0.32\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.32,\n \"maxY\": 0.32,\n \"width\": 1.09,\n \"height\": 0.63,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/gunn_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nimport svgJson from \"assets/generated/gunn_diode.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0\n },\n {\n \"x\": -0.13,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0\n },\n {\n \"x\": 0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path46\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0.13\n },\n {\n \"x\": 0.14,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path47\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.14\n },\n {\n \"x\": -0.13,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.13\n },\n {\n \"x\": 0.14,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path49\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.16,\n \"y\": 0.29\n },\n {\n \"x\": 0.25,\n \"y\": 0.3\n },\n {\n \"x\": 0.22,\n \"y\": 0.21\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.17\n },\n {\n \"x\": 0.09,\n \"y\": 0.17\n },\n {\n \"x\": 0.21,\n \"y\": 0.27\n },\n {\n \"x\": 0.21,\n \"y\": 0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.02,\n \"y\": 0.31\n },\n {\n \"x\": 0.08,\n \"y\": 0.32\n },\n {\n \"x\": 0.04,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.09,\n \"y\": 0.2\n },\n {\n \"x\": 0.04,\n \"y\": 0.29\n },\n {\n \"x\": 0.04,\n \"y\": 0.29\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"box\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": -0.4\n },\n {\n \"x\": 0.3,\n \"y\": -0.4\n },\n {\n \"x\": 0.3,\n \"y\": 0.4\n },\n {\n \"x\": -0.3,\n \"y\": 0.4\n },\n {\n \"x\": -0.3,\n \"y\": -0.4\n },\n {\n \"x\": -0.3,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": 0.13\n },\n {\n \"x\": -0.54,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": -0.13\n },\n {\n \"x\": -0.54,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": -0.13\n },\n {\n \"x\": 0.54,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": 0.13\n },\n {\n \"x\": 0.54,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.43\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.43\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.13\n },\n \"left2\": {\n \"x\": -0.54,\n \"y\": -0.13\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": -0.13\n },\n \"right2\": {\n \"x\": 0.54,\n \"y\": 0.13\n }\n },\n \"bounds\": {\n \"minX\": -0.56,\n \"maxX\": 0.56,\n \"minY\": -0.32,\n \"maxY\": 0.32,\n \"width\": 1.13,\n \"height\": 0.65,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/icled.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"DIN\"])\n .labelPort(\"left2\", [\"2\", \"POWER\"])\n .labelPort(\"right1\", [\"3\", \"GND\"])\n .labelPort(\"right2\", [\"4\", \"DOUT\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport icled_right from \"./icled_right\"\n\nexport default rotateSymbol(icled_right, \"down\")\n","import { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\nimport icled_right from \"./icled_right\"\n\nexport default flipSymbolOverYAxis(icled_right)\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport icled_right from \"./icled_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(icled_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.21\nref.x = 0.44\nval.y -= 0.21\nval.x = 0.44\n\nexport default symbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": 0\n },\n {\n \"x\": -0.01,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.19\n },\n {\n \"x\": 0.07,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.01,\n \"y\": -0.12\n },\n {\n \"x\": 0.01,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": -0.25\n },\n {\n \"x\": 0.28,\n \"y\": -0.56\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": 0.56\n },\n {\n \"x\": 0.28,\n \"y\": 0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.17,\n \"y\": -0.22\n },\n {\n \"x\": 0.28,\n \"y\": -0.23\n },\n {\n \"x\": 0.23,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path17\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": -0.09\n },\n {\n \"x\": 0.23,\n \"y\": -0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.11\n },\n {\n \"x\": 0.28,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.02,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.28,\n \"y\": 0.56\n },\n \"bottom1\": {\n \"x\": 0.28,\n \"y\": -0.56\n },\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.43,\n \"maxX\": 0.43,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.85,\n \"height\": 1.17,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.14,\n \"y\": 0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/igbt_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .labelPort(\"left1\", [\"3\"])\n .labelPort(\"top1\", [\"2\"])\n .labelPort(\"bottom1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport igbt_transistor_horz from \"./igbt_transistor_horz\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(igbt_transistor_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nref.x = 0.45\nref.y += 0.065\nval.y += 0.065\n\nexport default rotated\n","{\n \"paths\": {\n \"path12-1-8-6-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.02,\n \"y\": -0.02\n },\n {\n \"x\": 0.02,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.47,\n \"y\": -0.19\n },\n {\n \"x\": -0.17,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.02,\n \"y\": 0.17\n },\n {\n \"x\": 0.02,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.15,\n \"y\": -0.03\n },\n {\n \"x\": 0.2,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.19\n },\n {\n \"x\": 0.47,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.02,\n \"y\": 0.12\n },\n {\n \"x\": 0.02,\n \"y\": 0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.11\n },\n {\n \"x\": 0.08,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4-3-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.04,\n \"y\": 0.11\n },\n {\n \"x\": -0.04,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-4-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.04,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path14-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.01,\n \"y\": 0.28\n },\n {\n \"x\": 0.01,\n \"y\": 0.25\n },\n {\n \"x\": 0.04,\n \"y\": 0.23\n },\n {\n \"x\": 0.06,\n \"y\": 0.2\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path14-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.01,\n \"y\": 0.2\n },\n {\n \"x\": 0.01,\n \"y\": 0.23\n },\n {\n \"x\": 0.04,\n \"y\": 0.25\n },\n {\n \"x\": 0.06,\n \"y\": 0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01,\n \"y\": 0.38\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.06,\n \"y\": -0.38\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47,\n \"y\": -0.19\n },\n \"right1\": {\n \"x\": 0.47,\n \"y\": -0.19\n }\n },\n \"bounds\": {\n \"minX\": -0.5,\n \"maxX\": 0.5,\n \"minY\": -0.38,\n \"maxY\": 0.38,\n \"width\": 1,\n \"height\": 0.76,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path9\": {\n \"type\": \"circle\",\n \"x\": 0.02,\n \"y\": 0.24,\n \"radius\": 0.06,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/illuminated_push_button_normally_open.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport illuminated_push_button_normally_open_horz from \"./illuminated_push_button_normally_open_horz\"\n\nconst rotatedSymbol = rotateSymbol(illuminated_push_button_normally_open_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path8698\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": -0.02\n },\n {\n \"x\": -0.2,\n \"y\": -0.02\n },\n {\n \"x\": -0.21,\n \"y\": -0.01\n },\n {\n \"x\": -0.21,\n \"y\": -0.01\n },\n {\n \"x\": -0.21,\n \"y\": 0\n },\n {\n \"x\": -0.21,\n \"y\": 0\n },\n {\n \"x\": -0.21,\n \"y\": 0\n },\n {\n \"x\": -0.22,\n \"y\": 0.01\n },\n {\n \"x\": -0.22,\n \"y\": 0.01\n },\n {\n \"x\": -0.22,\n \"y\": 0.02\n },\n {\n \"x\": -0.22,\n \"y\": 0.02\n },\n {\n \"x\": -0.23,\n \"y\": 0.03\n },\n {\n \"x\": -0.23,\n \"y\": 0.03\n },\n {\n \"x\": -0.23,\n \"y\": 0.03\n },\n {\n \"x\": -0.23,\n \"y\": 0.04\n },\n {\n \"x\": -0.24,\n \"y\": 0.04\n },\n {\n \"x\": -0.24,\n \"y\": 0.04\n },\n {\n \"x\": -0.24,\n \"y\": 0.05\n },\n {\n \"x\": -0.24,\n \"y\": 0.05\n },\n {\n \"x\": -0.25,\n \"y\": 0.05\n },\n {\n \"x\": -0.25,\n \"y\": 0.06\n },\n {\n \"x\": -0.25,\n \"y\": 0.06\n },\n {\n \"x\": -0.25,\n \"y\": 0.06\n },\n {\n \"x\": -0.26,\n \"y\": 0.06\n },\n {\n \"x\": -0.26,\n \"y\": 0.06\n },\n {\n \"x\": -0.26,\n \"y\": 0.07\n },\n {\n \"x\": -0.26,\n \"y\": 0.07\n },\n {\n \"x\": -0.27,\n \"y\": 0.07\n },\n {\n \"x\": -0.27,\n \"y\": 0.07\n },\n {\n \"x\": -0.27,\n \"y\": 0.07\n },\n {\n \"x\": -0.27,\n \"y\": 0.07\n },\n {\n \"x\": -0.28,\n \"y\": 0.07\n },\n {\n \"x\": -0.28,\n \"y\": 0.07\n },\n {\n \"x\": -0.28,\n \"y\": 0.07\n },\n {\n \"x\": -0.28,\n \"y\": 0.07\n },\n {\n \"x\": -0.29,\n \"y\": 0.07\n },\n {\n \"x\": -0.29,\n \"y\": 0.08\n },\n {\n \"x\": -0.29,\n \"y\": 0.08\n },\n {\n \"x\": -0.29,\n \"y\": 0.08\n },\n {\n \"x\": -0.3,\n \"y\": 0.08\n },\n {\n \"x\": -0.3,\n \"y\": 0.08\n },\n {\n \"x\": -0.3,\n \"y\": 0.08\n },\n {\n \"x\": -0.3,\n \"y\": 0.08\n },\n {\n \"x\": -0.31,\n \"y\": 0.08\n },\n {\n \"x\": -0.31,\n \"y\": 0.08\n },\n {\n \"x\": -0.31,\n \"y\": 0.07\n },\n {\n \"x\": -0.31,\n \"y\": 0.07\n },\n {\n \"x\": -0.32,\n \"y\": 0.07\n },\n {\n \"x\": -0.32,\n \"y\": 0.07\n },\n {\n \"x\": -0.32,\n \"y\": 0.07\n },\n {\n \"x\": -0.32,\n \"y\": 0.07\n },\n {\n \"x\": -0.33,\n \"y\": 0.07\n },\n {\n \"x\": -0.33,\n \"y\": 0.07\n },\n {\n \"x\": -0.33,\n \"y\": 0.07\n },\n {\n \"x\": -0.33,\n \"y\": 0.07\n },\n {\n \"x\": -0.34,\n \"y\": 0.07\n },\n {\n \"x\": -0.34,\n \"y\": 0.06\n },\n {\n \"x\": -0.34,\n \"y\": 0.06\n },\n {\n \"x\": -0.34,\n \"y\": 0.06\n },\n {\n \"x\": -0.35,\n \"y\": 0.06\n },\n {\n \"x\": -0.35,\n \"y\": 0.06\n },\n {\n \"x\": -0.35,\n \"y\": 0.05\n },\n {\n \"x\": -0.35,\n \"y\": 0.05\n },\n {\n \"x\": -0.36,\n \"y\": 0.05\n },\n {\n \"x\": -0.36,\n \"y\": 0.04\n },\n {\n \"x\": -0.36,\n \"y\": 0.04\n },\n {\n \"x\": -0.36,\n \"y\": 0.04\n },\n {\n \"x\": -0.37,\n \"y\": 0.03\n },\n {\n \"x\": -0.37,\n \"y\": 0.03\n },\n {\n \"x\": -0.37,\n \"y\": 0.03\n },\n {\n \"x\": -0.37,\n \"y\": 0.02\n },\n {\n \"x\": -0.38,\n \"y\": 0.02\n },\n {\n \"x\": -0.38,\n \"y\": 0.01\n },\n {\n \"x\": -0.38,\n \"y\": 0.01\n },\n {\n \"x\": -0.38,\n \"y\": 0\n },\n {\n \"x\": -0.39,\n \"y\": 0\n },\n {\n \"x\": -0.39,\n \"y\": 0\n },\n {\n \"x\": -0.39,\n \"y\": -0.01\n },\n {\n \"x\": -0.39,\n \"y\": -0.01\n },\n {\n \"x\": -0.4,\n \"y\": -0.02\n },\n {\n \"x\": -0.4,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8700\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.02\n },\n {\n \"x\": 0,\n \"y\": -0.02\n },\n {\n \"x\": -0.01,\n \"y\": -0.01\n },\n {\n \"x\": -0.01,\n \"y\": -0.01\n },\n {\n \"x\": -0.01,\n \"y\": 0\n },\n {\n \"x\": -0.01,\n \"y\": 0\n },\n {\n \"x\": -0.02,\n \"y\": 0\n },\n {\n \"x\": -0.02,\n \"y\": 0.01\n },\n {\n \"x\": -0.02,\n \"y\": 0.01\n },\n {\n \"x\": -0.02,\n \"y\": 0.02\n },\n {\n \"x\": -0.03,\n \"y\": 0.02\n },\n {\n \"x\": -0.03,\n \"y\": 0.03\n },\n {\n \"x\": -0.03,\n \"y\": 0.03\n },\n {\n \"x\": -0.03,\n \"y\": 0.03\n },\n {\n \"x\": -0.04,\n \"y\": 0.04\n },\n {\n \"x\": -0.04,\n \"y\": 0.04\n },\n {\n \"x\": -0.04,\n \"y\": 0.04\n },\n {\n \"x\": -0.04,\n \"y\": 0.05\n },\n {\n \"x\": -0.05,\n \"y\": 0.05\n },\n {\n \"x\": -0.05,\n \"y\": 0.05\n },\n {\n \"x\": -0.05,\n \"y\": 0.06\n },\n {\n \"x\": -0.05,\n \"y\": 0.06\n },\n {\n \"x\": -0.06,\n \"y\": 0.06\n },\n {\n \"x\": -0.06,\n \"y\": 0.06\n },\n {\n \"x\": -0.06,\n \"y\": 0.06\n },\n {\n \"x\": -0.06,\n \"y\": 0.07\n },\n {\n \"x\": -0.07,\n \"y\": 0.07\n },\n {\n \"x\": -0.07,\n \"y\": 0.07\n },\n {\n \"x\": -0.07,\n \"y\": 0.07\n },\n {\n \"x\": -0.07,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.08,\n \"y\": 0.07\n },\n {\n \"x\": -0.09,\n \"y\": 0.07\n },\n {\n \"x\": -0.09,\n \"y\": 0.07\n },\n {\n \"x\": -0.09,\n \"y\": 0.08\n },\n {\n \"x\": -0.09,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.11,\n \"y\": 0.07\n },\n {\n \"x\": -0.12,\n \"y\": 0.07\n },\n {\n \"x\": -0.12,\n \"y\": 0.07\n },\n {\n \"x\": -0.12,\n \"y\": 0.07\n },\n {\n \"x\": -0.12,\n \"y\": 0.07\n },\n {\n \"x\": -0.13,\n \"y\": 0.07\n },\n {\n \"x\": -0.13,\n \"y\": 0.07\n },\n {\n \"x\": -0.13,\n \"y\": 0.07\n },\n {\n \"x\": -0.13,\n \"y\": 0.07\n },\n {\n \"x\": -0.14,\n \"y\": 0.07\n },\n {\n \"x\": -0.14,\n \"y\": 0.07\n },\n {\n \"x\": -0.14,\n \"y\": 0.06\n },\n {\n \"x\": -0.14,\n \"y\": 0.06\n },\n {\n \"x\": -0.15,\n \"y\": 0.06\n },\n {\n \"x\": -0.15,\n \"y\": 0.06\n },\n {\n \"x\": -0.15,\n \"y\": 0.06\n },\n {\n \"x\": -0.15,\n \"y\": 0.05\n },\n {\n \"x\": -0.16,\n \"y\": 0.05\n },\n {\n \"x\": -0.16,\n \"y\": 0.05\n },\n {\n \"x\": -0.16,\n \"y\": 0.04\n },\n {\n \"x\": -0.16,\n \"y\": 0.04\n },\n {\n \"x\": -0.17,\n \"y\": 0.04\n },\n {\n \"x\": -0.17,\n \"y\": 0.03\n },\n {\n \"x\": -0.17,\n \"y\": 0.03\n },\n {\n \"x\": -0.17,\n \"y\": 0.03\n },\n {\n \"x\": -0.18,\n \"y\": 0.02\n },\n {\n \"x\": -0.18,\n \"y\": 0.02\n },\n {\n \"x\": -0.18,\n \"y\": 0.01\n },\n {\n \"x\": -0.18,\n \"y\": 0.01\n },\n {\n \"x\": -0.19,\n \"y\": 0\n },\n {\n \"x\": -0.19,\n \"y\": 0\n },\n {\n \"x\": -0.19,\n \"y\": 0\n },\n {\n \"x\": -0.19,\n \"y\": -0.01\n },\n {\n \"x\": -0.2,\n \"y\": -0.01\n },\n {\n \"x\": -0.2,\n \"y\": -0.02\n },\n {\n \"x\": -0.2,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8702\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.02\n },\n {\n \"x\": 0.2,\n \"y\": -0.02\n },\n {\n \"x\": 0.19,\n \"y\": -0.01\n },\n {\n \"x\": 0.19,\n \"y\": -0.01\n },\n {\n \"x\": 0.19,\n \"y\": 0\n },\n {\n \"x\": 0.19,\n \"y\": 0\n },\n {\n \"x\": 0.18,\n \"y\": 0\n },\n {\n \"x\": 0.18,\n \"y\": 0.01\n },\n {\n \"x\": 0.18,\n \"y\": 0.01\n },\n {\n \"x\": 0.18,\n \"y\": 0.02\n },\n {\n \"x\": 0.17,\n \"y\": 0.02\n },\n {\n \"x\": 0.17,\n \"y\": 0.03\n },\n {\n \"x\": 0.17,\n \"y\": 0.03\n },\n {\n \"x\": 0.17,\n \"y\": 0.03\n },\n {\n \"x\": 0.16,\n \"y\": 0.04\n },\n {\n \"x\": 0.16,\n \"y\": 0.04\n },\n {\n \"x\": 0.16,\n \"y\": 0.04\n },\n {\n \"x\": 0.16,\n \"y\": 0.05\n },\n {\n \"x\": 0.15,\n \"y\": 0.05\n },\n {\n \"x\": 0.15,\n \"y\": 0.05\n },\n {\n \"x\": 0.15,\n \"y\": 0.06\n },\n {\n \"x\": 0.15,\n \"y\": 0.06\n },\n {\n \"x\": 0.14,\n \"y\": 0.06\n },\n {\n \"x\": 0.14,\n \"y\": 0.06\n },\n {\n \"x\": 0.14,\n \"y\": 0.06\n },\n {\n \"x\": 0.14,\n \"y\": 0.07\n },\n {\n \"x\": 0.13,\n \"y\": 0.07\n },\n {\n \"x\": 0.13,\n \"y\": 0.07\n },\n {\n \"x\": 0.13,\n \"y\": 0.07\n },\n {\n \"x\": 0.13,\n \"y\": 0.07\n },\n {\n \"x\": 0.12,\n \"y\": 0.07\n },\n {\n \"x\": 0.12,\n \"y\": 0.07\n },\n {\n \"x\": 0.12,\n \"y\": 0.07\n },\n {\n \"x\": 0.12,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.1,\n \"y\": 0.08\n },\n {\n \"x\": 0.1,\n \"y\": 0.08\n },\n {\n \"x\": 0.1,\n \"y\": 0.08\n },\n {\n \"x\": 0.1,\n \"y\": 0.08\n },\n {\n \"x\": 0.09,\n \"y\": 0.08\n },\n {\n \"x\": 0.09,\n \"y\": 0.08\n },\n {\n \"x\": 0.09,\n \"y\": 0.08\n },\n {\n \"x\": 0.09,\n \"y\": 0.07\n },\n {\n \"x\": 0.08,\n \"y\": 0.07\n },\n {\n \"x\": 0.08,\n \"y\": 0.07\n },\n {\n \"x\": 0.08,\n \"y\": 0.07\n },\n {\n \"x\": 0.08,\n \"y\": 0.07\n },\n {\n \"x\": 0.07,\n \"y\": 0.07\n },\n {\n \"x\": 0.07,\n \"y\": 0.07\n },\n {\n \"x\": 0.07,\n \"y\": 0.07\n },\n {\n \"x\": 0.07,\n \"y\": 0.07\n },\n {\n \"x\": 0.06,\n \"y\": 0.07\n },\n {\n \"x\": 0.06,\n \"y\": 0.07\n },\n {\n \"x\": 0.06,\n \"y\": 0.06\n },\n {\n \"x\": 0.06,\n \"y\": 0.06\n },\n {\n \"x\": 0.05,\n \"y\": 0.06\n },\n {\n \"x\": 0.05,\n \"y\": 0.06\n },\n {\n \"x\": 0.05,\n \"y\": 0.06\n },\n {\n \"x\": 0.05,\n \"y\": 0.05\n },\n {\n \"x\": 0.04,\n \"y\": 0.05\n },\n {\n \"x\": 0.04,\n \"y\": 0.05\n },\n {\n \"x\": 0.04,\n \"y\": 0.04\n },\n {\n \"x\": 0.04,\n \"y\": 0.04\n },\n {\n \"x\": 0.03,\n \"y\": 0.04\n },\n {\n \"x\": 0.03,\n \"y\": 0.03\n },\n {\n \"x\": 0.03,\n \"y\": 0.03\n },\n {\n \"x\": 0.03,\n \"y\": 0.03\n },\n {\n \"x\": 0.02,\n \"y\": 0.02\n },\n {\n \"x\": 0.02,\n \"y\": 0.02\n },\n {\n \"x\": 0.02,\n \"y\": 0.01\n },\n {\n \"x\": 0.02,\n \"y\": 0.01\n },\n {\n \"x\": 0.01,\n \"y\": 0\n },\n {\n \"x\": 0.01,\n \"y\": 0\n },\n {\n \"x\": 0.01,\n \"y\": 0\n },\n {\n \"x\": 0.01,\n \"y\": -0.01\n },\n {\n \"x\": 0,\n \"y\": -0.01\n },\n {\n \"x\": 0,\n \"y\": -0.02\n },\n {\n \"x\": 0,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4,\n \"y\": -0.02\n },\n {\n \"x\": 0.39,\n \"y\": -0.02\n },\n {\n \"x\": 0.39,\n \"y\": -0.01\n },\n {\n \"x\": 0.39,\n \"y\": -0.01\n },\n {\n \"x\": 0.39,\n \"y\": 0\n },\n {\n \"x\": 0.39,\n \"y\": 0\n },\n {\n \"x\": 0.38,\n \"y\": 0\n },\n {\n \"x\": 0.38,\n \"y\": 0.01\n },\n {\n \"x\": 0.38,\n \"y\": 0.01\n },\n {\n \"x\": 0.38,\n \"y\": 0.02\n },\n {\n \"x\": 0.37,\n \"y\": 0.02\n },\n {\n \"x\": 0.37,\n \"y\": 0.03\n },\n {\n \"x\": 0.37,\n \"y\": 0.03\n },\n {\n \"x\": 0.37,\n \"y\": 0.03\n },\n {\n \"x\": 0.36,\n \"y\": 0.04\n },\n {\n \"x\": 0.36,\n \"y\": 0.04\n },\n {\n \"x\": 0.36,\n \"y\": 0.04\n },\n {\n \"x\": 0.36,\n \"y\": 0.05\n },\n {\n \"x\": 0.35,\n \"y\": 0.05\n },\n {\n \"x\": 0.35,\n \"y\": 0.05\n },\n {\n \"x\": 0.35,\n \"y\": 0.06\n },\n {\n \"x\": 0.35,\n \"y\": 0.06\n },\n {\n \"x\": 0.34,\n \"y\": 0.06\n },\n {\n \"x\": 0.34,\n \"y\": 0.06\n },\n {\n \"x\": 0.34,\n \"y\": 0.06\n },\n {\n \"x\": 0.34,\n \"y\": 0.07\n },\n {\n \"x\": 0.33,\n \"y\": 0.07\n },\n {\n \"x\": 0.33,\n \"y\": 0.07\n },\n {\n \"x\": 0.33,\n \"y\": 0.07\n },\n {\n \"x\": 0.33,\n \"y\": 0.07\n },\n {\n \"x\": 0.32,\n \"y\": 0.07\n },\n {\n \"x\": 0.32,\n \"y\": 0.07\n },\n {\n \"x\": 0.32,\n \"y\": 0.07\n },\n {\n \"x\": 0.32,\n \"y\": 0.07\n },\n {\n \"x\": 0.31,\n \"y\": 0.07\n },\n {\n \"x\": 0.31,\n \"y\": 0.07\n },\n {\n \"x\": 0.31,\n \"y\": 0.08\n },\n {\n \"x\": 0.31,\n \"y\": 0.08\n },\n {\n \"x\": 0.3,\n \"y\": 0.08\n },\n {\n \"x\": 0.3,\n \"y\": 0.08\n },\n {\n \"x\": 0.3,\n \"y\": 0.08\n },\n {\n \"x\": 0.3,\n \"y\": 0.08\n },\n {\n \"x\": 0.29,\n \"y\": 0.08\n },\n {\n \"x\": 0.29,\n \"y\": 0.08\n },\n {\n \"x\": 0.29,\n \"y\": 0.08\n },\n {\n \"x\": 0.29,\n \"y\": 0.07\n },\n {\n \"x\": 0.28,\n \"y\": 0.07\n },\n {\n \"x\": 0.28,\n \"y\": 0.07\n },\n {\n \"x\": 0.28,\n \"y\": 0.07\n },\n {\n \"x\": 0.28,\n \"y\": 0.07\n },\n {\n \"x\": 0.27,\n \"y\": 0.07\n },\n {\n \"x\": 0.27,\n \"y\": 0.07\n },\n {\n \"x\": 0.27,\n \"y\": 0.07\n },\n {\n \"x\": 0.27,\n \"y\": 0.07\n },\n {\n \"x\": 0.26,\n \"y\": 0.07\n },\n {\n \"x\": 0.26,\n \"y\": 0.07\n },\n {\n \"x\": 0.26,\n \"y\": 0.06\n },\n {\n \"x\": 0.26,\n \"y\": 0.06\n },\n {\n \"x\": 0.25,\n \"y\": 0.06\n },\n {\n \"x\": 0.25,\n \"y\": 0.06\n },\n {\n \"x\": 0.25,\n \"y\": 0.06\n },\n {\n \"x\": 0.25,\n \"y\": 0.05\n },\n {\n \"x\": 0.24,\n \"y\": 0.05\n },\n {\n \"x\": 0.24,\n \"y\": 0.05\n },\n {\n \"x\": 0.24,\n \"y\": 0.04\n },\n {\n \"x\": 0.24,\n \"y\": 0.04\n },\n {\n \"x\": 0.23,\n \"y\": 0.04\n },\n {\n \"x\": 0.23,\n \"y\": 0.03\n },\n {\n \"x\": 0.23,\n \"y\": 0.03\n },\n {\n \"x\": 0.23,\n \"y\": 0.03\n },\n {\n \"x\": 0.22,\n \"y\": 0.02\n },\n {\n \"x\": 0.22,\n \"y\": 0.02\n },\n {\n \"x\": 0.22,\n \"y\": 0.01\n },\n {\n \"x\": 0.22,\n \"y\": 0.01\n },\n {\n \"x\": 0.21,\n \"y\": 0\n },\n {\n \"x\": 0.21,\n \"y\": 0\n },\n {\n \"x\": 0.21,\n \"y\": 0\n },\n {\n \"x\": 0.21,\n \"y\": -0.01\n },\n {\n \"x\": 0.2,\n \"y\": -0.01\n },\n {\n \"x\": 0.2,\n \"y\": -0.02\n },\n {\n \"x\": 0.2,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8706\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": -0.02\n },\n {\n \"x\": -0.55,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8706-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.55,\n \"y\": -0.03\n },\n {\n \"x\": 0.4,\n \"y\": -0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.23\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.23\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.55,\n \"y\": -0.02\n },\n \"right1\": {\n \"x\": 0.55,\n \"y\": -0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.58,\n \"maxX\": 0.58,\n \"minY\": -0.23,\n \"maxY\": 0.23,\n \"width\": 1.16,\n \"height\": 0.46,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/inductor.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport inductor_right from \"./inductor_right\"\n\nexport default rotateSymbol(inductor_right, \"up\")\n","import { flipSymbolOverXAxis } from \"drawing/rotateSymbol\"\nimport inductor_up from \"./inductor_up\"\n\nexport default flipSymbolOverXAxis(inductor_up)\n","import { flipSymbolOverYAxis } from \"drawing/rotateSymbol\"\nimport inductor_right from \"./inductor_right\"\n\nexport default flipSymbolOverYAxis(inductor_right)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": -0.06\n },\n {\n \"x\": -0.15,\n \"y\": -0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": -0.05\n },\n {\n \"x\": -0.13,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0.08\n },\n {\n \"x\": 0.13,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.18\n },\n {\n \"x\": -0.13,\n \"y\": 0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.08\n },\n {\n \"x\": 0.13,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": -0.05\n },\n {\n \"x\": 0.54,\n \"y\": -0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.03,\n \"y\": 0.39\n },\n {\n \"x\": -0.05,\n \"y\": 0.47\n },\n {\n \"x\": -0.08,\n \"y\": 0.39\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.27\n },\n {\n \"x\": -0.05,\n \"y\": 0.29\n },\n {\n \"x\": -0.05,\n \"y\": 0.41\n },\n {\n \"x\": -0.05,\n \"y\": 0.42\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9-8-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.39\n },\n {\n \"x\": 0.04,\n \"y\": 0.47\n },\n {\n \"x\": 0.02,\n \"y\": 0.39\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5-5-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.27\n },\n {\n \"x\": 0.04,\n \"y\": 0.29\n },\n {\n \"x\": 0.04,\n \"y\": 0.41\n },\n {\n \"x\": 0.04,\n \"y\": 0.42\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.03,\n \"y\": 0.06\n },\n {\n \"x\": 0.03,\n \"y\": -0.16\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.38,\n \"y\": 0.38\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.38,\n \"y\": -0.47\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": -0.06\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": -0.06\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.47,\n \"maxY\": 0.47,\n \"width\": 1.14,\n \"height\": 0.93,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": -0.05,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/laser_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nsvgJson.bounds.width += 0.2\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport laser_diode_right from \"./laser_diode_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(laser_diode_right, \"down\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.9\nref.x = 0.3\nval.y -= 0.1\nval.x = 0.3\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport laser_diode_right from \"./laser_diode_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(laser_diode_right, \"left\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.71\nref.x = 0.44\nval.y -= 0.71\nval.x = 0.44\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport laser_diode_right from \"./laser_diode_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(laser_diode_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.1\nref.x = 0.3\nval.y -= 0.71\nval.x = 0.3\n\nexport default symbol\n","{\n \"paths\": {\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0\n },\n {\n \"x\": -0.13,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path46\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0.13\n },\n {\n \"x\": 0.14,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path47\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.14\n },\n {\n \"x\": -0.13,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path48\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.13\n },\n {\n \"x\": 0.14,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path49\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0\n },\n {\n \"x\": -0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.16,\n \"y\": 0.29\n },\n {\n \"x\": 0.25,\n \"y\": 0.3\n },\n {\n \"x\": 0.22,\n \"y\": 0.21\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.17\n },\n {\n \"x\": 0.09,\n \"y\": 0.17\n },\n {\n \"x\": 0.21,\n \"y\": 0.27\n },\n {\n \"x\": 0.21,\n \"y\": 0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.02,\n \"y\": 0.31\n },\n {\n \"x\": 0.08,\n \"y\": 0.32\n },\n {\n \"x\": 0.04,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1,\n \"y\": 0.19\n },\n {\n \"x\": -0.09,\n \"y\": 0.2\n },\n {\n \"x\": 0.04,\n \"y\": 0.29\n },\n {\n \"x\": 0.04,\n \"y\": 0.29\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.21\n },\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.41\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.56,\n \"maxX\": 0.56,\n \"minY\": -0.32,\n \"maxY\": 0.32,\n \"width\": 1.13,\n \"height\": 0.65,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/led.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.bottom1, anchor: \"middle_top\" },\n { ...texts.right1, anchor: \"middle_bottom\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport led_right from \"./led_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(led_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.21\nref.x = 0.21\nval.y -= 0.21\nval.x = 0.21\n\nexport default symbol\n","import { flipSymbolOverXAxis, rotateSymbol } from \"drawing/rotateSymbol\"\nimport led_up from \"./led_up\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = flipSymbolOverXAxis(led_up)\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.4\nref.x = 0.2\nval.y -= 0.41\nval.x = 0.2\n\nexport default symbol\n","import { flipSymbolOverYAxis, rotateSymbol } from \"drawing/rotateSymbol\"\nimport led_right from \"./led_right\"\n\nexport default flipSymbolOverYAxis(led_right)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.52,\n \"y\": -0.01\n },\n {\n \"x\": -0.18,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.17,\n \"y\": -0.11\n },\n {\n \"x\": -0.17,\n \"y\": 0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.17,\n \"y\": -0.12\n },\n {\n \"x\": 0.16,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.17,\n \"y\": 0.08\n },\n {\n \"x\": 0.16,\n \"y\": 0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.17,\n \"y\": -0.01\n },\n {\n \"x\": 0.52,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-2-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.16,\n \"y\": -0.12\n },\n {\n \"x\": 0.16,\n \"y\": 0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": -0.21\n },\n {\n \"x\": -0.33,\n \"y\": -0.18\n },\n {\n \"x\": -0.34,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.45,\n \"y\": -0.34\n },\n {\n \"x\": -0.44,\n \"y\": -0.32\n },\n {\n \"x\": -0.35,\n \"y\": -0.22\n },\n {\n \"x\": -0.35,\n \"y\": -0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": -0.34\n },\n {\n \"x\": -0.22,\n \"y\": -0.31\n },\n {\n \"x\": -0.24,\n \"y\": -0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.35,\n \"y\": -0.46\n },\n {\n \"x\": -0.34,\n \"y\": -0.45\n },\n {\n \"x\": -0.25,\n \"y\": -0.35\n },\n {\n \"x\": -0.25,\n \"y\": -0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.17,\n \"y\": -0.41\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.46\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": -0.01\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": -0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.51,\n \"maxY\": 0.46,\n \"width\": 1.1,\n \"height\": 0.62,\n \"centerX\": 0,\n \"centerY\": -0.02\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": -0.02,\n \"radius\": 0.28,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/light_dependent_resistor.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_left\", x: 0 },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport light_dependent_resistor_horz from \"./light_dependent_resistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(light_dependent_resistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path208\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.38,\n \"y\": 0.13\n },\n {\n \"x\": 0.52,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path209\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.25,\n \"y\": -0.13\n },\n {\n \"x\": 0.38,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path210\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": -0.13\n },\n {\n \"x\": 0.25,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path211\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.25,\n \"y\": 0.13\n },\n {\n \"x\": 0.52,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path212\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.4\n },\n {\n \"x\": 0.38,\n \"y\": -0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path213\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.38,\n \"y\": 0.4\n },\n {\n \"x\": 0.12,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path214\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.54\n },\n {\n \"x\": 0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path215\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.54\n },\n {\n \"x\": 0.12,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path216\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.38,\n \"y\": -0.4\n },\n {\n \"x\": 0.38,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path217\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": 0.26\n },\n {\n \"x\": -0.14,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path218\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": -0.27\n },\n {\n \"x\": -0.22,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path219\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": -0.27\n },\n {\n \"x\": -0.22,\n \"y\": -0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path220\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": -0.19\n },\n {\n \"x\": 0.12,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path221\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path222\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0\n },\n {\n \"x\": 0.12,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.57,\n \"y\": 0.02\n },\n \"right2\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.57,\n \"y\": 0.21\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.12,\n \"y\": 0.54\n },\n \"bottom1\": {\n \"x\": 0.12,\n \"y\": -0.54\n },\n \"left1\": {\n \"x\": -0.54,\n \"y\": -0.27\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.57,\n \"maxY\": 0.57,\n \"width\": 1.14,\n \"height\": 1.14,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/mosfet_depletion_normally_on.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.right1, anchor: \"middle_left\" },\n { ...texts.right2, anchor: \"middle_left\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width + 0.4, height: bounds.height },\n center: { x: bounds.centerX + 0.2, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport mosfet_depletion_normally_on_horz from \"./mosfet_depletion_normally_on_horz\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(mosfet_depletion_normally_on_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_top\"\nval.anchor = \"middle_top\"\n\nref.x = val.x\n\nval.y += 0.15\n\nexport default rotated\n","{\n \"paths\": {\n \"path12-1-8-6-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.01,\n \"y\": 0.07\n },\n {\n \"x\": 0.01,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.47,\n \"y\": -0.09\n },\n {\n \"x\": -0.17,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.16,\n \"y\": -0.01\n },\n {\n \"x\": 0.17,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.09\n },\n {\n \"x\": 0.47,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1,\n \"y\": 0.06\n },\n {\n \"x\": -0.1,\n \"y\": 0.06\n },\n {\n \"x\": -0.1,\n \"y\": 0.07\n },\n {\n \"x\": -0.1,\n \"y\": 0.07\n },\n {\n \"x\": -0.1,\n \"y\": 0.07\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.09\n },\n {\n \"x\": -0.09,\n \"y\": 0.09\n },\n {\n \"x\": -0.09,\n \"y\": 0.09\n },\n {\n \"x\": -0.09,\n \"y\": 0.1\n },\n {\n \"x\": -0.09,\n \"y\": 0.1\n },\n {\n \"x\": -0.09,\n \"y\": 0.1\n },\n {\n \"x\": -0.09,\n \"y\": 0.1\n },\n {\n \"x\": -0.09,\n \"y\": 0.11\n },\n {\n \"x\": -0.09,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.11\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.08,\n \"y\": 0.12\n },\n {\n \"x\": -0.07,\n \"y\": 0.13\n },\n {\n \"x\": -0.07,\n \"y\": 0.13\n },\n {\n \"x\": -0.07,\n \"y\": 0.13\n },\n {\n \"x\": -0.07,\n \"y\": 0.13\n },\n {\n \"x\": -0.06,\n \"y\": 0.14\n },\n {\n \"x\": -0.06,\n \"y\": 0.14\n },\n {\n \"x\": -0.06,\n \"y\": 0.14\n },\n {\n \"x\": -0.06,\n \"y\": 0.14\n },\n {\n \"x\": -0.05,\n \"y\": 0.14\n },\n {\n \"x\": -0.05,\n \"y\": 0.15\n },\n {\n \"x\": -0.05,\n \"y\": 0.15\n },\n {\n \"x\": -0.04,\n \"y\": 0.15\n },\n {\n \"x\": -0.04,\n \"y\": 0.15\n },\n {\n \"x\": -0.04,\n \"y\": 0.15\n },\n {\n \"x\": -0.04,\n \"y\": 0.15\n },\n {\n \"x\": -0.03,\n \"y\": 0.16\n },\n {\n \"x\": -0.03,\n \"y\": 0.16\n },\n {\n \"x\": -0.03,\n \"y\": 0.16\n },\n {\n \"x\": -0.02,\n \"y\": 0.16\n },\n {\n \"x\": -0.02,\n \"y\": 0.16\n },\n {\n \"x\": -0.02,\n \"y\": 0.16\n },\n {\n \"x\": -0.01,\n \"y\": 0.16\n },\n {\n \"x\": -0.01,\n \"y\": 0.16\n },\n {\n \"x\": 0,\n \"y\": 0.16\n },\n {\n \"x\": 0,\n \"y\": 0.16\n },\n {\n \"x\": 0,\n \"y\": 0.16\n },\n {\n \"x\": 0.01,\n \"y\": 0.16\n },\n {\n \"x\": 0.01,\n \"y\": 0.16\n },\n {\n \"x\": 0.01,\n \"y\": 0.16\n },\n {\n \"x\": 0.02,\n \"y\": 0.16\n },\n {\n \"x\": 0.02,\n \"y\": 0.16\n },\n {\n \"x\": 0.02,\n \"y\": 0.16\n },\n {\n \"x\": 0.03,\n \"y\": 0.16\n },\n {\n \"x\": 0.03,\n \"y\": 0.16\n },\n {\n \"x\": 0.03,\n \"y\": 0.16\n },\n {\n \"x\": 0.04,\n \"y\": 0.16\n },\n {\n \"x\": 0.04,\n \"y\": 0.16\n },\n {\n \"x\": 0.04,\n \"y\": 0.16\n },\n {\n \"x\": 0.05,\n \"y\": 0.15\n },\n {\n \"x\": 0.05,\n \"y\": 0.15\n },\n {\n \"x\": 0.05,\n \"y\": 0.15\n },\n {\n \"x\": 0.06,\n \"y\": 0.15\n },\n {\n \"x\": 0.06,\n \"y\": 0.15\n },\n {\n \"x\": 0.06,\n \"y\": 0.15\n },\n {\n \"x\": 0.06,\n \"y\": 0.14\n },\n {\n \"x\": 0.07,\n \"y\": 0.14\n },\n {\n \"x\": 0.07,\n \"y\": 0.14\n },\n {\n \"x\": 0.07,\n \"y\": 0.14\n },\n {\n \"x\": 0.08,\n \"y\": 0.14\n },\n {\n \"x\": 0.08,\n \"y\": 0.13\n },\n {\n \"x\": 0.08,\n \"y\": 0.13\n },\n {\n \"x\": 0.08,\n \"y\": 0.13\n },\n {\n \"x\": 0.09,\n \"y\": 0.13\n },\n {\n \"x\": 0.09,\n \"y\": 0.12\n },\n {\n \"x\": 0.09,\n \"y\": 0.12\n },\n {\n \"x\": 0.09,\n \"y\": 0.12\n },\n {\n \"x\": 0.09,\n \"y\": 0.12\n },\n {\n \"x\": 0.1,\n \"y\": 0.11\n },\n {\n \"x\": 0.1,\n \"y\": 0.11\n },\n {\n \"x\": 0.1,\n \"y\": 0.1\n },\n {\n \"x\": 0.1,\n \"y\": 0.1\n },\n {\n \"x\": 0.11,\n \"y\": 0.09\n },\n {\n \"x\": 0.11,\n \"y\": 0.09\n },\n {\n \"x\": 0.11,\n \"y\": 0.09\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.11,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.06\n },\n {\n \"x\": 0.11,\n \"y\": 0.06\n },\n {\n \"x\": 0.1,\n \"y\": 0.06\n },\n {\n \"x\": 0.1,\n \"y\": 0.06\n },\n {\n \"x\": 0.09,\n \"y\": 0.06\n },\n {\n \"x\": 0.09,\n \"y\": 0.06\n },\n {\n \"x\": 0.08,\n \"y\": 0.06\n },\n {\n \"x\": 0.07,\n \"y\": 0.06\n },\n {\n \"x\": 0.07,\n \"y\": 0.06\n },\n {\n \"x\": 0.06,\n \"y\": 0.06\n },\n {\n \"x\": 0.05,\n \"y\": 0.06\n },\n {\n \"x\": 0.05,\n \"y\": 0.06\n },\n {\n \"x\": 0.04,\n \"y\": 0.06\n },\n {\n \"x\": 0.03,\n \"y\": 0.06\n },\n {\n \"x\": 0.03,\n \"y\": 0.06\n },\n {\n \"x\": 0.02,\n \"y\": 0.06\n },\n {\n \"x\": 0.01,\n \"y\": 0.06\n },\n {\n \"x\": 0.01,\n \"y\": 0.06\n },\n {\n \"x\": 0,\n \"y\": 0.06\n },\n {\n \"x\": -0.01,\n \"y\": 0.06\n },\n {\n \"x\": -0.01,\n \"y\": 0.06\n },\n {\n \"x\": -0.02,\n \"y\": 0.06\n },\n {\n \"x\": -0.03,\n \"y\": 0.06\n },\n {\n \"x\": -0.03,\n \"y\": 0.06\n },\n {\n \"x\": -0.04,\n \"y\": 0.06\n },\n {\n \"x\": -0.05,\n \"y\": 0.06\n },\n {\n \"x\": -0.05,\n \"y\": 0.06\n },\n {\n \"x\": -0.06,\n \"y\": 0.06\n },\n {\n \"x\": -0.07,\n \"y\": 0.06\n },\n {\n \"x\": -0.07,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.09,\n \"y\": 0.06\n },\n {\n \"x\": -0.09,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.16,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47,\n \"y\": -0.09\n },\n \"right1\": {\n \"x\": 0.47,\n \"y\": -0.09\n }\n },\n \"bounds\": {\n \"minX\": -0.5,\n \"maxX\": 0.5,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1,\n \"height\": 0.53,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/mushroom_head_normally_open_momentary.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_top\", x: 0 },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] },\n { ...refblocks.right1, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX + 0.006, y: bounds.centerY + 0.06 },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport mushroom_head_normally_open_momentary_horz from \"./mushroom_head_normally_open_momentary_horz\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(mushroom_head_normally_open_momentary_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nref.x = ref.x - 0.03\nref.y = ref.y\n\nval.x = val.x\nval.y = 0\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.42,\n \"y\": -0.1\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.19\n },\n {\n \"x\": 0.09,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": 0.55\n },\n {\n \"x\": 0.3,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.31,\n \"y\": -0.55\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.11\n },\n {\n \"x\": 0.31,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.1\n },\n {\n \"x\": 0.31,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27,\n \"y\": -0.04\n },\n {\n \"x\": 0.27,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": 0\n },\n {\n \"x\": 0.27,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05,\n \"y\": 0.17\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.06,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.3,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.31,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.42,\n \"y\": -0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.45,\n \"maxX\": 0.45,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.89,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.16,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/n_channel_d_mosfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport n_channel_d_mosfet_transistor_horz from \"./n_channel_d_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(n_channel_d_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.42,\n \"y\": -0.1\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": 0.55\n },\n {\n \"x\": 0.3,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.31,\n \"y\": -0.55\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.11\n },\n {\n \"x\": 0.31,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.15\n },\n {\n \"x\": 0.09,\n \"y\": 0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.1\n },\n {\n \"x\": 0.31,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.08\n },\n {\n \"x\": 0.09,\n \"y\": -0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.03\n },\n {\n \"x\": 0.09,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27,\n \"y\": -0.04\n },\n {\n \"x\": 0.27,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": 0\n },\n {\n \"x\": 0.27,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05,\n \"y\": 0.11\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.06,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.3,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.31,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.42,\n \"y\": -0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.45,\n \"maxX\": 0.45,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.89,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.16,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/n_channel_e_mosfet_transistor.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as Primitive[],\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport n_channel_e_mosfet_transistor_horz from \"./n_channel_e_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(n_channel_e_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": 0\n },\n {\n \"x\": 0.06,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.19\n },\n {\n \"x\": 0.07,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": 0.55\n },\n {\n \"x\": 0.28,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.55\n },\n {\n \"x\": 0.29,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.11\n },\n {\n \"x\": 0.29,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.1\n },\n {\n \"x\": 0.29,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.07\n },\n {\n \"x\": 0.01,\n \"y\": 0\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.15,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.04,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.28,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.29,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.43,\n \"maxX\": 0.43,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.85,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.14,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/njfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport njfet_transistor_horz from \"./njfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(njfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"diag1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1,\n \"y\": -0.1\n },\n {\n \"x\": 0.1,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"diag2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1,\n \"y\": 0.1\n },\n {\n \"x\": 0.1,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"stem\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": 0\n },\n {\n \"x\": 0,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {},\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.2,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.19,\n \"maxX\": 0.2,\n \"minY\": -0.12,\n \"maxY\": 0.12,\n \"width\": 0.39,\n \"height\": 0.24,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/not_connected.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, bounds, refblocks } = svgJson\n\nexport default modifySymbol({\n primitives: [...Object.values(paths)],\n ports: [{ ...refblocks.left1, labels: [\"1\"] }],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport not_connected_right from \"./not_connected_right\"\n\nexport default rotateSymbol(not_connected_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport not_connected_right from \"./not_connected_right\"\n\nexport default rotateSymbol(not_connected_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport not_connected_right from \"./not_connected_right\"\n\nexport default rotateSymbol(not_connected_right, \"up\")\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": 0\n },\n {\n \"x\": 0.06,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.27\n },\n {\n \"x\": 0.07,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": 0.24\n },\n {\n \"x\": 0.08,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.24\n },\n {\n \"x\": 0.09,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.25\n },\n {\n \"x\": 0.29,\n \"y\": 0.55\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.55\n },\n {\n \"x\": 0.29,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.1\n },\n {\n \"x\": 0.12,\n \"y\": -0.2\n },\n {\n \"x\": 0.22,\n \"y\": -0.2\n },\n {\n \"x\": 0.19,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.08,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.07,\n \"y\": -0.41\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.29,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.29,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.43,\n \"maxX\": 0.43,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.85,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1-0\": {\n \"type\": \"circle\",\n \"x\": 0.14,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"../assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .build()\n","import svgJson from \"assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .labelPort(\"left1\", [\"3\", \"base\"])\n .labelPort(\"top1\", [\"1\", \"collector\"])\n .labelPort(\"bottom1\", [\"2\", \"emitter\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"../assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/npn_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.32,\n \"y\": -0.21\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": 0.31\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": -0.21\n },\n {\n \"x\": -0.32,\n \"y\": 0.31\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": 0.18\n },\n {\n \"x\": -0.57,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": -0.09\n },\n {\n \"x\": -0.57,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.43,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"rect1577-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": 0.18\n },\n {\n \"x\": -0.27,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": -0.09\n },\n {\n \"x\": -0.27,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.23,\n \"y\": -0.05\n },\n {\n \"x\": -0.23,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.3\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.57,\n \"y\": 0.18\n },\n \"left2\": {\n \"x\": -0.57,\n \"y\": -0.09\n },\n \"right1\": {\n \"x\": 0.43,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.38,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.3,\n \"centerX\": 0,\n \"centerY\": 0.05\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/opamp_no_power.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"inp1\"])\n .labelPort(\"left2\", [\"2\", \"inp2\"])\n .labelPort(\"right1\", [\"3\", \"out\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_no_power_right from \"./opamp_no_power_right\"\n\nexport default rotateSymbol(opamp_no_power_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_no_power_right from \"./opamp_no_power_right\"\n\nexport default rotateSymbol(opamp_no_power_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_no_power_right from \"./opamp_no_power_right\"\n\nexport default rotateSymbol(opamp_no_power_right, \"up\")\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.32,\n \"y\": -0.21\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": 0.31\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": -0.21\n },\n {\n \"x\": -0.32,\n \"y\": 0.31\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": 0.18\n },\n {\n \"x\": -0.57,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": -0.09\n },\n {\n \"x\": -0.57,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.43,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.1,\n \"y\": 0.44\n },\n {\n \"x\": -0.1,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": -0.34\n },\n {\n \"x\": -0.09,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"rect1577-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": 0.18\n },\n {\n \"x\": -0.27,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": -0.09\n },\n {\n \"x\": -0.27,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.23,\n \"y\": 0.14\n },\n {\n \"x\": -0.23,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.25,\n \"y\": 0.32\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.25,\n \"y\": -0.24\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.57,\n \"y\": 0.18\n },\n \"left2\": {\n \"x\": -0.57,\n \"y\": -0.09\n },\n \"right1\": {\n \"x\": 0.43,\n \"y\": 0.04\n },\n \"top2\": {\n \"x\": -0.1,\n \"y\": 0.44\n },\n \"bottom1\": {\n \"x\": -0.09,\n \"y\": -0.34\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.38,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.3,\n \"centerX\": 0,\n \"centerY\": 0.05\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/opamp_with_power.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"inp1\"])\n .labelPort(\"left2\", [\"2\", \"inp2\"])\n .labelPort(\"right1\", [\"4\", \"out\"])\n .labelPort(\"top2\", [\"5\", \"V+\"])\n .labelPort(\"bottom1\", [\"3\", \"V-\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_with_power_right from \"./opamp_with_power_right\"\n\nexport default rotateSymbol(opamp_with_power_right, \"down\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_with_power_right from \"./opamp_with_power_right\"\n\nexport default rotateSymbol(opamp_with_power_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport opamp_with_power_right from \"./opamp_with_power_right\"\n\nexport default rotateSymbol(opamp_with_power_right, \"up\")\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.42,\n \"y\": -0.1\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.19\n },\n {\n \"x\": 0.09,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": 0.55\n },\n {\n \"x\": 0.3,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.31,\n \"y\": -0.55\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.11\n },\n {\n \"x\": 0.31,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.1\n },\n {\n \"x\": 0.31,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": -0.04\n },\n {\n \"x\": 0.27,\n \"y\": -0.01\n },\n {\n \"x\": 0.2,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05,\n \"y\": 0.17\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.06,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.3,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.31,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.42,\n \"y\": -0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.45,\n \"maxX\": 0.45,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.89,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.16,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/p_channel_d_mosfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport p_channel_d_mosfet_transistor_horz from \"./p_channel_d_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(p_channel_d_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.42,\n \"y\": -0.1\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": 0.55\n },\n {\n \"x\": 0.3,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.31,\n \"y\": -0.55\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.11\n },\n {\n \"x\": 0.31,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.15\n },\n {\n \"x\": 0.09,\n \"y\": 0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.1\n },\n {\n \"x\": 0.31,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.08\n },\n {\n \"x\": 0.09,\n \"y\": -0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-8-3-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.03\n },\n {\n \"x\": 0.09,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": -0.04\n },\n {\n \"x\": 0.27,\n \"y\": -0.01\n },\n {\n \"x\": 0.2,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0\n },\n {\n \"x\": 0.31,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05,\n \"y\": 0.11\n },\n {\n \"x\": 0.05,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.13,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.06,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.3,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.31,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.42,\n \"y\": -0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.45,\n \"maxX\": 0.45,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.89,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.16,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/p_channel_e_mosfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\", x: 0 },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport p_channel_e_mosfet_transistor_horz from \"./p_channel_e_mosfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(p_channel_e_mosfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": -0.01\n },\n {\n \"x\": -0.15,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0\n },\n {\n \"x\": -0.13,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0.13\n },\n {\n \"x\": 0.13,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.13\n },\n {\n \"x\": -0.13,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.13\n },\n {\n \"x\": 0.13,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.38\n },\n {\n \"x\": 0.16,\n \"y\": 0.28\n },\n {\n \"x\": 0.26,\n \"y\": 0.3\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33,\n \"y\": 0.43\n },\n {\n \"x\": 0.32,\n \"y\": 0.42\n },\n {\n \"x\": 0.21,\n \"y\": 0.31\n },\n {\n \"x\": 0.21,\n \"y\": 0.31\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path25-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.35,\n \"y\": 0.35\n },\n {\n \"x\": 0.31,\n \"y\": 0.26\n },\n {\n \"x\": 0.41,\n \"y\": 0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path78-6-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.48,\n \"y\": 0.4\n },\n {\n \"x\": 0.47,\n \"y\": 0.39\n },\n {\n \"x\": 0.35,\n \"y\": 0.29\n },\n {\n \"x\": 0.35,\n \"y\": 0.29\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.1,\n \"y\": 0.35\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.43\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": -0.01\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": -0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.43,\n \"maxY\": 0.43,\n \"width\": 1.14,\n \"height\": 0.85,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/photodiode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport photodiode_horz from \"./photodiode_horz\"\n\nconst rotatedSymbol = rotateSymbol(photodiode_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": 0\n },\n {\n \"x\": 0.06,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.19\n },\n {\n \"x\": 0.07,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": 0.55\n },\n {\n \"x\": 0.28,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.55\n },\n {\n \"x\": 0.29,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.11\n },\n {\n \"x\": 0.29,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.1\n },\n {\n \"x\": 0.29,\n \"y\": -0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.01,\n \"y\": -0.07\n },\n {\n \"x\": 0.01,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": 0\n },\n {\n \"x\": 0.01,\n \"y\": -0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.15,\n \"y\": 0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.04,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.28,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.29,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.43,\n \"maxX\": 0.43,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.85,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.14,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/pjfet_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\", x: 0 },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"drain\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\", \"source\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\", \"gate\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport pjfet_transistor_horz from \"./pjfet_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(pjfet_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")!\n\nconst val = texts.find((t) => t.text === \"{VAL}\")!\n\nval.x = -0.35\nval.y = 0\nval.anchor = \"middle_right\"\n\nconst ref = texts.find((t) => t.text === \"{REF}\")!\n\nref.y = 0\nref.x = 0.35\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.4,\n \"y\": 0\n },\n {\n \"x\": 0.06,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.27\n },\n {\n \"x\": 0.07,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": 0.24\n },\n {\n \"x\": 0.08,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-0-5-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.24\n },\n {\n \"x\": 0.09,\n \"y\": -0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.25\n },\n {\n \"x\": 0.29,\n \"y\": 0.55\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.55\n },\n {\n \"x\": 0.29,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.15,\n \"y\": -0.23\n },\n {\n \"x\": 0.22,\n \"y\": -0.12\n },\n {\n \"x\": 0.12,\n \"y\": -0.12\n },\n {\n \"x\": 0.15,\n \"y\": -0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.08,\n \"y\": 0.37\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.07,\n \"y\": -0.41\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.29,\n \"y\": 0.55\n },\n \"bottom1\": {\n \"x\": 0.29,\n \"y\": -0.55\n },\n \"left1\": {\n \"x\": -0.4,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.43,\n \"maxX\": 0.43,\n \"minY\": -0.58,\n \"maxY\": 0.58,\n \"width\": 0.85,\n \"height\": 1.16,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1-0\": {\n \"type\": \"circle\",\n \"x\": 0.14,\n \"y\": 0,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"../assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .changeTextAnchor(\"{VAL}\", \"middle_right\")\n .build()\n","import svgJson from \"assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .labelPort(\"left1\", [\"3\", \"base\"])\n .labelPort(\"top1\", [\"1\", \"collector\"])\n .labelPort(\"bottom1\", [\"2\", \"emitter\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"../assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/pnp_bipolar_transistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.1,\n y: -0.3094553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.1,\n y: 0.3094553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\", \"collector\"] },\n { ...refblocks.bottom1, labels: [\"2\", \"emitter\"] },\n { ...refblocks.left1, labels: [\"3\", \"base\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19,\n \"y\": 0.33\n },\n {\n \"x\": -0.26,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": 0.26\n },\n {\n \"x\": -0.19,\n \"y\": 0.33\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.26,\n \"y\": 0.14\n },\n {\n \"x\": -0.38,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.26,\n \"y\": 0.39\n },\n {\n \"x\": -0.13,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": 0.2\n },\n {\n \"x\": -0.52,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.52\n },\n {\n \"x\": -0.19,\n \"y\": 0.33\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19,\n \"y\": -0.32\n },\n {\n \"x\": -0.38,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.26,\n \"y\": -0.13\n },\n {\n \"x\": -0.19,\n \"y\": -0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": -0.26\n },\n {\n \"x\": -0.26,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.26\n },\n {\n \"x\": -0.26,\n \"y\": -0.39\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": -0.19\n },\n {\n \"x\": -0.51,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.01,\n \"y\": -0.5\n },\n {\n \"x\": -0.19,\n \"y\": -0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.32,\n \"y\": 0.19\n },\n {\n \"x\": 0.13,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": 0.38\n },\n {\n \"x\": 0.32,\n \"y\": 0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.26\n },\n {\n \"x\": 0.26,\n \"y\": 0.38\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.39,\n \"y\": 0.26\n },\n {\n \"x\": 0.26,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.32\n },\n {\n \"x\": 0.01,\n \"y\": 0.51\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0\n },\n {\n \"x\": 0.32,\n \"y\": 0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.32,\n \"y\": -0.19\n },\n {\n \"x\": 0.26,\n \"y\": -0.38\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": -0.26\n },\n {\n \"x\": 0.32,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": -0.38\n },\n {\n \"x\": 0.13,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": -0.13\n },\n {\n \"x\": 0.39,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.32\n },\n {\n \"x\": 0,\n \"y\": -0.52\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5,\n \"y\": -0.01\n },\n {\n \"x\": 0.32,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.29,\n \"y\": 0.46\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.29,\n \"y\": -0.5\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0,\n \"y\": 0.52\n },\n \"bottom1\": {\n \"x\": 0,\n \"y\": -0.52\n },\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.55,\n \"maxY\": 0.55,\n \"width\": 1.09,\n \"height\": 1.09,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/potentiometer.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.bottom1, y: 0.35, anchor: \"middle_top\" },\n { ...texts.top1, anchor: \"middle_left\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width + 0.05, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer_horz from \"./potentiometer_horz\"\n\nconst rotated = rotateSymbol(potentiometer_horz)\n\nexport default rotated\n","{\n \"paths\": {\n \"path18\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.53,\n \"y\": 0\n },\n {\n \"x\": -0.27,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path19\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": 0\n },\n {\n \"x\": 0.53,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path20\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.13\n },\n {\n \"x\": 0.26,\n \"y\": 0.13\n },\n {\n \"x\": 0.26,\n \"y\": -0.13\n },\n {\n \"x\": -0.27,\n \"y\": -0.13\n },\n {\n \"x\": -0.27,\n \"y\": 0.13\n },\n {\n \"x\": 0,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path23\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.28,\n \"y\": -0.28\n },\n {\n \"x\": 0.18,\n \"y\": -0.25\n },\n {\n \"x\": 0.25,\n \"y\": -0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path24\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": -0.29\n },\n {\n \"x\": 0.25,\n \"y\": -0.17\n },\n {\n \"x\": 0.16,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path26\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": 0.29\n },\n {\n \"x\": 0.23,\n \"y\": -0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.06,\n \"y\": 0.2\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.1,\n \"y\": -0.28\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.53,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.53,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.56,\n \"maxX\": 0.56,\n \"minY\": -0.29,\n \"maxY\": 0.29,\n \"width\": 1.13,\n \"height\": 0.58,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/potentiometer2.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.bottom1, x: 0, y: -0.35, anchor: \"middle_top\" },\n { ...texts.top1, x: 0, y: 0.35, anchor: \"middle_bottom\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width + 0.05, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer2_right from \"./potentiometer2_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(potentiometer2_right, \"down\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.31\nref.x = 0.34\nval.y -= 0.31\nval.x = 0.34\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer2_right from \"./potentiometer2_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(potentiometer2_right, \"left\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.y += 0.73\nref.x = 0\nval.y -= 0.7\nval.x = 0\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport potentiometer2_right from \"./potentiometer2_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(potentiometer2_right, \"up\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\n\nref.y += 0.21\nref.x = 0.34\nval.y -= 0.21\nval.x = 0.34\n\nexport default symbol\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.42,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1-2-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": 0\n },\n {\n \"x\": -0.25,\n \"y\": 0.1\n },\n {\n \"x\": -0.15,\n \"y\": -0.1\n },\n {\n \"x\": -0.05,\n \"y\": 0.1\n },\n {\n \"x\": 0.05,\n \"y\": -0.1\n },\n {\n \"x\": 0.15,\n \"y\": 0.1\n },\n {\n \"x\": 0.25,\n \"y\": -0.1\n },\n {\n \"x\": 0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.3,\n \"y\": 0\n },\n {\n \"x\": 0.42,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.17\n },\n {\n \"x\": 0,\n \"y\": -0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path15\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.12\n },\n {\n \"x\": 0.05,\n \"y\": -0.2\n },\n {\n \"x\": -0.05,\n \"y\": -0.2\n },\n {\n \"x\": 0,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.3,\n \"y\": 0.25\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.3,\n \"y\": -0.25\n }\n },\n \"refblocks\": {\n \"left\": {\n \"x\": -0.42,\n \"y\": 0\n },\n \"right\": {\n \"x\": 0.42,\n \"y\": 0\n },\n \"bottom\": {\n \"x\": 0,\n \"y\": -0.4\n }\n },\n \"bounds\": {\n \"minX\": -0.42,\n \"maxX\": 0.42,\n \"minY\": -0.2,\n \"maxY\": 0.2,\n \"width\": 0.84,\n \"height\": 0.4,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/potentiometer3.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: 0.2394553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.15,\n y: 0.2394553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left, labels: [\"1\"] },\n { ...refblocks.right, labels: [\"3\"] },\n { ...refblocks.bottom, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .labelPort(\"bottom\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/potentiometer3.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.3,\n y: -0.3894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.3,\n y: 0.3194553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left, labels: [\"1\"] },\n { ...refblocks.right, labels: [\"3\"] },\n { ...refblocks.bottom, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .labelPort(\"bottom\", [\"3\"])\n\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"assets/generated/potentiometer3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"3\"])\n .labelPort(\"bottom\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/potentiometer3.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.3,\n y: -0.2894553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.3,\n y: -0.2894553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left, labels: [\"1\"] },\n { ...refblocks.right, labels: [\"3\"] },\n { ...refblocks.bottom, labels: [\"2\"] },\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .labelPort(\"bottom\", [\"3\"])\n\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.03\n },\n {\n \"x\": -0.3,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.03\n },\n {\n \"x\": 0.54,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.16,\n \"y\": 0.4\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.4\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"COS φ\",\n \"x\": -0.15,\n \"y\": 0.01\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 1.14,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.04,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/power_factor_meter.json\"\nimport { ninePointAnchorToSvgAnchor } from \"drawing/ninePointAnchorToSvgAnchor\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n // { ...texts.top1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.15,\n y: -0.42330070000000064,\n anchor: \"middle_top\",\n },\n // { ...texts.bottom1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.15,\n y: 0.42330070000000064,\n anchor: \"middle_bottom\",\n },\n // { ...texts.left1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"COS φ\",\n x: 0,\n y: 0.014279000000000375,\n anchor: \"center\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport power_factor_meter_horz from \"./power_factor_meter_horz\"\nimport { text } from \"drawing/text\"\n\nconst rotatedSymbol = rotateSymbol(power_factor_meter_horz)\nconst texts = rotatedSymbol.primitives.filter((p) => p.type === \"text\")\nconst ref = texts.find((t) => t.text === \"{REF}\")!\nconst val = texts.find((t) => t.text === \"{VAL}\")!\nconst text_cos = texts.find((t) => t.text === \"COS φ\")!\nref.x = 0.35\nref.y = 0\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\nval.x = -0.35\nval.y = 0\ntext_cos.x = 0\ntext_cos.y = 0\ntext_cos.anchor = \"center\"\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path12-1-8-6-9-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.01,\n \"y\": 0.03\n },\n {\n \"x\": 0.01,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.47,\n \"y\": -0.05\n },\n {\n \"x\": -0.17,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.16,\n \"y\": -0.09\n },\n {\n \"x\": 0.18,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.05\n },\n {\n \"x\": 0.47,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01,\n \"y\": 0.22\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.16,\n \"y\": -0.22\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47,\n \"y\": -0.05\n },\n \"right1\": {\n \"x\": 0.47,\n \"y\": -0.05\n }\n },\n \"bounds\": {\n \"minX\": -0.5,\n \"maxX\": 0.5,\n \"minY\": -0.22,\n \"maxY\": 0.22,\n \"width\": 1,\n \"height\": 0.45,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": -0.14,\n \"y\": -0.05,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle\": {\n \"type\": \"circle\",\n \"x\": 0.17,\n \"y\": -0.05,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/push_button_normally_closed_momentary.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_left\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport push_button_normally_closed_momentary_horz from \"./push_button_normally_closed_momentary_horz\"\n\nexport default rotateSymbol(push_button_normally_closed_momentary_horz, \"up\")\n","{\n \"paths\": {\n \"path12-1-8-6-9-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.09\n },\n {\n \"x\": -0.05,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-7-9-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.09\n },\n {\n \"x\": 0.07,\n \"y\": 0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-6-9-10\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.09\n },\n {\n \"x\": 0.07,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-5-6-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.47,\n \"y\": -0.05\n },\n {\n \"x\": -0.17,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-8-0-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.16,\n \"y\": 0.04\n },\n {\n \"x\": 0.18,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-1-0-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.05\n },\n {\n \"x\": 0.47,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01,\n \"y\": 0.29\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.16,\n \"y\": -0.22\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47,\n \"y\": -0.05\n },\n \"right1\": {\n \"x\": 0.47,\n \"y\": -0.05\n }\n },\n \"bounds\": {\n \"minX\": -0.5,\n \"maxX\": 0.5,\n \"minY\": -0.22,\n \"maxY\": 0.22,\n \"width\": 1,\n \"height\": 0.45,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": -0.14,\n \"y\": -0.05,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle\": {\n \"type\": \"circle\",\n \"x\": 0.17,\n \"y\": -0.05,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/push_button_normally_open_momentary.json\"\nimport { Primitive } from \"drawing/types\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_left\" },\n ] as Primitive[],\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport push_button_normally_open_momentary_horz from \"./push_button_normally_open_momentary_horz\"\n\nexport default rotateSymbol(push_button_normally_open_momentary_horz, \"up\")\n","{\n \"paths\": {\n \"path12_rotated\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0.12\n },\n {\n \"x\": -0.09,\n \"y\": -0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2_rotated\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": 0\n },\n {\n \"x\": 0.09,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.03\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": 0.09,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.37,\n \"maxY\": 0.37,\n \"width\": 1.14,\n \"height\": 0.74,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/rail.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.14,\n y: -0.0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"assets/generated/rail.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.13,\n y: 0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","import svgJson from \"assets/generated/rail.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.14,\n y: -0.0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"assets/generated/rail.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.14,\n y: 0,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n ],\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19,\n \"y\": -0.33\n },\n {\n \"x\": -0.26,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": -0.26\n },\n {\n \"x\": -0.19,\n \"y\": -0.33\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.26,\n \"y\": -0.14\n },\n {\n \"x\": -0.38,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.26,\n \"y\": -0.39\n },\n {\n \"x\": -0.13,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": -0.2\n },\n {\n \"x\": -0.52,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.52\n },\n {\n \"x\": -0.19,\n \"y\": -0.33\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19,\n \"y\": 0.32\n },\n {\n \"x\": -0.38,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.26,\n \"y\": 0.13\n },\n {\n \"x\": -0.19,\n \"y\": 0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": 0.26\n },\n {\n \"x\": -0.26,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": 0.26\n },\n {\n \"x\": -0.26,\n \"y\": 0.39\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.32,\n \"y\": 0.19\n },\n {\n \"x\": -0.51,\n \"y\": 0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.01,\n \"y\": 0.5\n },\n {\n \"x\": -0.19,\n \"y\": 0.32\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.32,\n \"y\": -0.19\n },\n {\n \"x\": 0.13,\n \"y\": -0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": -0.38\n },\n {\n \"x\": 0.32,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": -0.26\n },\n {\n \"x\": 0.26,\n \"y\": -0.38\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.39,\n \"y\": -0.26\n },\n {\n \"x\": 0.26,\n \"y\": -0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": -0.32\n },\n {\n \"x\": 0.01,\n \"y\": -0.51\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0\n },\n {\n \"x\": 0.32,\n \"y\": -0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path40-4-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.32,\n \"y\": 0.19\n },\n {\n \"x\": 0.26,\n \"y\": 0.38\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41-1-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.13,\n \"y\": 0.26\n },\n {\n \"x\": 0.32,\n \"y\": 0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42-7-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": 0.38\n },\n {\n \"x\": 0.13,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-1-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.26,\n \"y\": 0.13\n },\n {\n \"x\": 0.39,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-8-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0.32\n },\n {\n \"x\": 0,\n \"y\": 0.52\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.5,\n \"y\": 0.01\n },\n {\n \"x\": 0.32,\n \"y\": 0.19\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.29,\n \"y\": -0.46\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.29,\n \"y\": 0.5\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0,\n \"y\": -0.52\n },\n \"bottom1\": {\n \"x\": 0,\n \"y\": 0.52\n },\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.56,\n \"maxY\": 0.55,\n \"width\": 1.09,\n \"height\": 1.1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/rectifier_diode.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_right\" },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"4\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import type { TextPrimitive } from \"drawing\"\nimport { rotateSymbol } from \"drawing/rotateSymbol\"\nimport rectifier_diode_horz from \"./rectifier_diode_horz\"\n\nconst rotated = rotateSymbol(rectifier_diode_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.47,\n \"y\": 0.04\n },\n {\n \"x\": 0.21,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.21,\n \"y\": 0.04\n },\n {\n \"x\": -0.47,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.21,\n \"y\": 0.04\n },\n {\n \"x\": 0.19,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-29\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.19,\n \"y\": 0.14\n },\n {\n \"x\": -0.21,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.05\n },\n {\n \"x\": 0.13,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": -0.05\n },\n {\n \"x\": 0.13,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": -0.05\n },\n {\n \"x\": 0.03,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.03,\n \"y\": -0.05\n },\n {\n \"x\": 0.03,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.03,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2-1-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-8-2-4-5-1-9-2-1-2-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.05\n },\n {\n \"x\": -0.19,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.05,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.04,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.47,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.47,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.49,\n \"maxX\": 0.49,\n \"minY\": -0.42,\n \"maxY\": 0.42,\n \"width\": 0.99,\n \"height\": 0.84,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: -0.2,\n y: 0.2194553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.2,\n y: 0.2194553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.1704553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.2294553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: 0.2294553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: -0.1704553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/resistor.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.2,\n y: -0.1404553499999995,\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: -0.2,\n y: -0.1494553499999995,\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left\", [\"1\"])\n .labelPort(\"right\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .changeTextAnchor(\"{VAL}\", \"middle_left\")\n .build()\n","{\n \"paths\": {\n \"path27\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.76,\n \"y\": -0.28\n },\n {\n \"x\": 0.31,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": -0.02\n },\n {\n \"x\": -0.77,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path30\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.3,\n \"y\": 0.35\n },\n {\n \"x\": -0.3,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path27-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.77,\n \"y\": 0.35\n },\n {\n \"x\": 0.32,\n \"y\": 0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": -0.28\n },\n {\n \"x\": -0.3,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33,\n \"y\": -0.28\n },\n {\n \"x\": 0.11,\n \"y\": -0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06,\n \"y\": -0.17\n },\n {\n \"x\": -0.06,\n \"y\": -0.39\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.17\n },\n {\n \"x\": 0.09,\n \"y\": -0.39\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.35\n },\n {\n \"x\": -0.3,\n \"y\": 0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33,\n \"y\": 0.35\n },\n {\n \"x\": 0.11,\n \"y\": 0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.06,\n \"y\": 0.46\n },\n {\n \"x\": -0.06,\n \"y\": 0.24\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-6-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.46\n },\n {\n \"x\": 0.09,\n \"y\": 0.24\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-92\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33,\n \"y\": 0.13\n },\n {\n \"x\": 0.33,\n \"y\": 0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-28\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.33,\n \"y\": -0.28\n },\n {\n \"x\": 0.33,\n \"y\": -0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44,\n \"y\": 0.11\n },\n {\n \"x\": 0.22,\n \"y\": 0.11\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-6-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44,\n \"y\": -0.04\n },\n {\n \"x\": 0.22,\n \"y\": -0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44,\n \"y\": 0.07\n },\n {\n \"x\": 0.22,\n \"y\": 0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44,\n \"y\": 0\n },\n {\n \"x\": 0.44,\n \"y\": 0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2-4-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.22,\n \"y\": 0\n },\n {\n \"x\": 0.22,\n \"y\": 0.07\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-5-7-6-9-2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44,\n \"y\": 0\n },\n {\n \"x\": 0.22,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.02,\n \"y\": 0.53\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.01,\n \"y\": -0.54\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.77,\n \"y\": -0.02\n },\n \"right1\": {\n \"x\": 0.76,\n \"y\": -0.28\n },\n \"right2\": {\n \"x\": 0.77,\n \"y\": 0.35\n }\n },\n \"bounds\": {\n \"minX\": -0.79,\n \"maxX\": 0.79,\n \"minY\": -0.54,\n \"maxY\": 0.54,\n \"width\": 1.59,\n \"height\": 1.07,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/resonator.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right2, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport resonator_right from \"./resonator_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(resonator_right, \"down\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.y += 0.3\nref.x += 0.101\nval.y -= 0.49999\nval.x += 1.19999\n\nexport default symbol\n","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/resonator.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n // { ...texts.top1, anchor: \"middle_left\" },\n // { ...texts.bottom1, anchor: \"middle_left\" },\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0.01596175000000022,\n y: -0.5308501500000009,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0.013116750000000454,\n y: 0.5408501499999989,\n anchor: \"middle_bottom\",\n },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right2, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport resonator_right from \"./resonator_right\"\nimport type { TextPrimitive } from \"drawing\"\nconst symbol = rotateSymbol(resonator_right, \"left\")\n\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.y += 0.99\nref.x -= 0\nval.y -= 1.10999\nval.x = 0\n\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport resonator_right from \"./resonator_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst symbol = rotateSymbol(resonator_right, \"up\")\nconst ref = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = symbol.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.y += 0.499\nref.x = 0.62\nval.y -= 0.29999\nval.x += 0.1\nexport default symbol\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport resonator_horz from \"./resonator_horz\"\n\nexport default rotateSymbol(resonator_horz)\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.21,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.21,\n \"y\": 0.13\n },\n {\n \"x\": 0.21,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": -0.09\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-7-9-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": -0.04\n },\n {\n \"x\": 0.08,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/schottky_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport schottky_diode_right from \"./schottky_diode_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(schottky_diode_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\nref.y += 0.3\nref.x = 0.3\nval.y -= 0.3\nval.x = 0.3\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport schottky_diode_right from \"./schottky_diode_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(schottky_diode_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\nref.y += 0.5\nref.x = 0\nval.y -= 0.55\nval.x = 0.0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport schottky_diode_right from \"./schottky_diode_right\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(schottky_diode_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_left\"\nref.y += 0.3\nref.x = 0.3\nval.y -= 0.3\nval.x = 0.3\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.52,\n \"y\": 0.04\n },\n {\n \"x\": -0.18,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0.05\n },\n {\n \"x\": 0.52,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.18,\n \"y\": -0.15\n },\n {\n \"x\": 0.18,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0\n },\n {\n \"x\": 0.35,\n \"y\": -0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.35,\n \"y\": -0.14\n },\n {\n \"x\": 0.34,\n \"y\": -0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.17,\n \"y\": 0.27\n },\n {\n \"x\": -0.17,\n \"y\": -0.15\n },\n {\n \"x\": 0.18,\n \"y\": 0.05\n },\n {\n \"x\": -0.17,\n \"y\": 0.27\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.22,\n \"y\": 0.38\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.11,\n \"y\": -0.38\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0.34,\n \"y\": -0.35\n },\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.05\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.38,\n \"maxY\": 0.38,\n \"width\": 1.09,\n \"height\": 0.77,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/silicon_controlled_rectifier.json\"\nimport { TextPrimitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"bottom1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport silicon_controlled_rectifier_horz from \"./silicon_controlled_rectifier_horz\"\n\nconst rotatedSymbol = rotateSymbol(silicon_controlled_rectifier_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\n\nref.y = 0\nref.anchor = \"middle_left\"\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18,\n \"y\": -0.03\n },\n {\n \"x\": -0.45,\n \"y\": -0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": -0.03\n },\n {\n \"x\": 0.18,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.02\n },\n {\n \"x\": -0.07,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.1\n },\n {\n \"x\": 0.07,\n \"y\": -0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.1\n },\n {\n \"x\": -0.07,\n \"y\": -0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": -0.15\n },\n {\n \"x\": -0.07,\n \"y\": -0.15\n },\n {\n \"x\": -0.09,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.11,\n \"y\": -0.13\n },\n {\n \"x\": -0.13,\n \"y\": -0.12\n },\n {\n \"x\": -0.14,\n \"y\": -0.11\n },\n {\n \"x\": -0.14,\n \"y\": -0.1\n },\n {\n \"x\": -0.15,\n \"y\": -0.09\n },\n {\n \"x\": -0.16,\n \"y\": -0.08\n },\n {\n \"x\": -0.16,\n \"y\": -0.07\n },\n {\n \"x\": -0.16,\n \"y\": -0.06\n },\n {\n \"x\": -0.17,\n \"y\": -0.05\n },\n {\n \"x\": -0.17,\n \"y\": -0.04\n },\n {\n \"x\": -0.17,\n \"y\": -0.03\n },\n {\n \"x\": -0.17,\n \"y\": -0.02\n },\n {\n \"x\": -0.17,\n \"y\": -0.01\n },\n {\n \"x\": -0.16,\n \"y\": 0\n },\n {\n \"x\": -0.16,\n \"y\": 0.01\n },\n {\n \"x\": -0.16,\n \"y\": 0.02\n },\n {\n \"x\": -0.15,\n \"y\": 0.03\n },\n {\n \"x\": -0.15,\n \"y\": 0.04\n },\n {\n \"x\": -0.14,\n \"y\": 0.05\n },\n {\n \"x\": -0.14,\n \"y\": 0.05\n },\n {\n \"x\": -0.13,\n \"y\": 0.06\n },\n {\n \"x\": -0.12,\n \"y\": 0.07\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.09\n },\n {\n \"x\": -0.09,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.07,\n \"y\": 0.1\n },\n {\n \"x\": -0.07,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.15\n },\n {\n \"x\": 0.07,\n \"y\": -0.15\n },\n {\n \"x\": 0.09,\n \"y\": -0.15\n },\n {\n \"x\": 0.1,\n \"y\": -0.14\n },\n {\n \"x\": 0.12,\n \"y\": -0.13\n },\n {\n \"x\": 0.13,\n \"y\": -0.12\n },\n {\n \"x\": 0.14,\n \"y\": -0.11\n },\n {\n \"x\": 0.14,\n \"y\": -0.1\n },\n {\n \"x\": 0.15,\n \"y\": -0.09\n },\n {\n \"x\": 0.16,\n \"y\": -0.08\n },\n {\n \"x\": 0.16,\n \"y\": -0.07\n },\n {\n \"x\": 0.17,\n \"y\": -0.06\n },\n {\n \"x\": 0.17,\n \"y\": -0.05\n },\n {\n \"x\": 0.17,\n \"y\": -0.04\n },\n {\n \"x\": 0.17,\n \"y\": -0.03\n },\n {\n \"x\": 0.17,\n \"y\": -0.02\n },\n {\n \"x\": 0.17,\n \"y\": -0.01\n },\n {\n \"x\": 0.16,\n \"y\": 0\n },\n {\n \"x\": 0.16,\n \"y\": 0.01\n },\n {\n \"x\": 0.16,\n \"y\": 0.02\n },\n {\n \"x\": 0.15,\n \"y\": 0.03\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n },\n {\n \"x\": 0.14,\n \"y\": 0.05\n },\n {\n \"x\": 0.14,\n \"y\": 0.05\n },\n {\n \"x\": 0.13,\n \"y\": 0.06\n },\n {\n \"x\": 0.12,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.1,\n \"y\": 0.09\n },\n {\n \"x\": 0.09,\n \"y\": 0.09\n },\n {\n \"x\": 0.08,\n \"y\": 0.1\n },\n {\n \"x\": 0.07,\n \"y\": 0.1\n },\n {\n \"x\": 0.07,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.15\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.45,\n \"y\": -0.03\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": -0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.15,\n \"maxY\": 0.15,\n \"width\": 0.95,\n \"height\": 0.31,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18,\n \"y\": -0.03\n },\n {\n \"x\": -0.45,\n \"y\": -0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": -0.03\n },\n {\n \"x\": 0.18,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": 0.1\n },\n {\n \"x\": 0.07,\n \"y\": -0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.1\n },\n {\n \"x\": -0.07,\n \"y\": -0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": -0.15\n },\n {\n \"x\": -0.07,\n \"y\": -0.15\n },\n {\n \"x\": -0.09,\n \"y\": -0.15\n },\n {\n \"x\": -0.1,\n \"y\": -0.14\n },\n {\n \"x\": -0.11,\n \"y\": -0.13\n },\n {\n \"x\": -0.13,\n \"y\": -0.12\n },\n {\n \"x\": -0.14,\n \"y\": -0.11\n },\n {\n \"x\": -0.14,\n \"y\": -0.1\n },\n {\n \"x\": -0.15,\n \"y\": -0.09\n },\n {\n \"x\": -0.16,\n \"y\": -0.08\n },\n {\n \"x\": -0.16,\n \"y\": -0.07\n },\n {\n \"x\": -0.16,\n \"y\": -0.06\n },\n {\n \"x\": -0.17,\n \"y\": -0.05\n },\n {\n \"x\": -0.17,\n \"y\": -0.04\n },\n {\n \"x\": -0.17,\n \"y\": -0.03\n },\n {\n \"x\": -0.17,\n \"y\": -0.02\n },\n {\n \"x\": -0.17,\n \"y\": -0.01\n },\n {\n \"x\": -0.16,\n \"y\": 0\n },\n {\n \"x\": -0.16,\n \"y\": 0.01\n },\n {\n \"x\": -0.16,\n \"y\": 0.02\n },\n {\n \"x\": -0.15,\n \"y\": 0.03\n },\n {\n \"x\": -0.15,\n \"y\": 0.04\n },\n {\n \"x\": -0.14,\n \"y\": 0.05\n },\n {\n \"x\": -0.14,\n \"y\": 0.05\n },\n {\n \"x\": -0.13,\n \"y\": 0.06\n },\n {\n \"x\": -0.12,\n \"y\": 0.07\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.11,\n \"y\": 0.08\n },\n {\n \"x\": -0.1,\n \"y\": 0.09\n },\n {\n \"x\": -0.09,\n \"y\": 0.09\n },\n {\n \"x\": -0.08,\n \"y\": 0.1\n },\n {\n \"x\": -0.07,\n \"y\": 0.1\n },\n {\n \"x\": -0.07,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.07,\n \"y\": -0.15\n },\n {\n \"x\": 0.07,\n \"y\": -0.15\n },\n {\n \"x\": 0.09,\n \"y\": -0.15\n },\n {\n \"x\": 0.1,\n \"y\": -0.14\n },\n {\n \"x\": 0.12,\n \"y\": -0.13\n },\n {\n \"x\": 0.13,\n \"y\": -0.12\n },\n {\n \"x\": 0.14,\n \"y\": -0.11\n },\n {\n \"x\": 0.14,\n \"y\": -0.1\n },\n {\n \"x\": 0.15,\n \"y\": -0.09\n },\n {\n \"x\": 0.16,\n \"y\": -0.08\n },\n {\n \"x\": 0.16,\n \"y\": -0.07\n },\n {\n \"x\": 0.17,\n \"y\": -0.06\n },\n {\n \"x\": 0.17,\n \"y\": -0.05\n },\n {\n \"x\": 0.17,\n \"y\": -0.04\n },\n {\n \"x\": 0.17,\n \"y\": -0.03\n },\n {\n \"x\": 0.17,\n \"y\": -0.02\n },\n {\n \"x\": 0.17,\n \"y\": -0.01\n },\n {\n \"x\": 0.16,\n \"y\": 0\n },\n {\n \"x\": 0.16,\n \"y\": 0.01\n },\n {\n \"x\": 0.16,\n \"y\": 0.02\n },\n {\n \"x\": 0.15,\n \"y\": 0.03\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n },\n {\n \"x\": 0.14,\n \"y\": 0.05\n },\n {\n \"x\": 0.14,\n \"y\": 0.05\n },\n {\n \"x\": 0.13,\n \"y\": 0.06\n },\n {\n \"x\": 0.12,\n \"y\": 0.07\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.11,\n \"y\": 0.08\n },\n {\n \"x\": 0.1,\n \"y\": 0.09\n },\n {\n \"x\": 0.09,\n \"y\": 0.09\n },\n {\n \"x\": 0.08,\n \"y\": 0.1\n },\n {\n \"x\": 0.07,\n \"y\": 0.1\n },\n {\n \"x\": 0.07,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.15\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.45,\n \"y\": -0.03\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": -0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.15,\n \"maxY\": 0.15,\n \"width\": 0.95,\n \"height\": 0.31,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper2.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.45,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.03\n },\n {\n \"x\": 0,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": 0.04,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": -0.02\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.14,\n \"y\": -0.02\n },\n {\n \"x\": -0.16,\n \"y\": -0.01\n },\n {\n \"x\": -0.17,\n \"y\": 0\n },\n {\n \"x\": -0.18,\n \"y\": 0.01\n },\n {\n \"x\": -0.19,\n \"y\": 0.02\n },\n {\n \"x\": -0.2,\n \"y\": 0.03\n },\n {\n \"x\": -0.2,\n \"y\": 0.04\n },\n {\n \"x\": -0.21,\n \"y\": 0.05\n },\n {\n \"x\": -0.21,\n \"y\": 0.06\n },\n {\n \"x\": -0.22,\n \"y\": 0.07\n },\n {\n \"x\": -0.22,\n \"y\": 0.08\n },\n {\n \"x\": -0.22,\n \"y\": 0.09\n },\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.22,\n \"y\": 0.11\n },\n {\n \"x\": -0.22,\n \"y\": 0.12\n },\n {\n \"x\": -0.22,\n \"y\": 0.13\n },\n {\n \"x\": -0.21,\n \"y\": 0.14\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.2,\n \"y\": 0.16\n },\n {\n \"x\": -0.19,\n \"y\": 0.17\n },\n {\n \"x\": -0.19,\n \"y\": 0.18\n },\n {\n \"x\": -0.18,\n \"y\": 0.19\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.16,\n \"y\": 0.21\n },\n {\n \"x\": -0.15,\n \"y\": 0.22\n },\n {\n \"x\": -0.14,\n \"y\": 0.22\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.14,\n \"y\": -0.02\n },\n {\n \"x\": 0.15,\n \"y\": -0.01\n },\n {\n \"x\": 0.17,\n \"y\": 0\n },\n {\n \"x\": 0.18,\n \"y\": 0.01\n },\n {\n \"x\": 0.19,\n \"y\": 0.02\n },\n {\n \"x\": 0.2,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": 0.04\n },\n {\n \"x\": 0.21,\n \"y\": 0.05\n },\n {\n \"x\": 0.21,\n \"y\": 0.06\n },\n {\n \"x\": 0.22,\n \"y\": 0.07\n },\n {\n \"x\": 0.22,\n \"y\": 0.08\n },\n {\n \"x\": 0.22,\n \"y\": 0.09\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.11\n },\n {\n \"x\": 0.22,\n \"y\": 0.12\n },\n {\n \"x\": 0.22,\n \"y\": 0.13\n },\n {\n \"x\": 0.21,\n \"y\": 0.14\n },\n {\n \"x\": 0.21,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.16\n },\n {\n \"x\": 0.19,\n \"y\": 0.17\n },\n {\n \"x\": 0.19,\n \"y\": 0.18\n },\n {\n \"x\": 0.18,\n \"y\": 0.19\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.16,\n \"y\": 0.21\n },\n {\n \"x\": 0.15,\n \"y\": 0.21\n },\n {\n \"x\": 0.14,\n \"y\": 0.22\n },\n {\n \"x\": 0.13,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.1\n },\n {\n \"x\": -0.12,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.28\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0,\n \"y\": -0.25\n },\n \"left1\": {\n \"x\": -0.45,\n \"y\": 0.1\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": 0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.28,\n \"maxY\": 0.28,\n \"width\": 0.95,\n \"height\": 0.56,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged12.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.45,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.1\n },\n {\n \"x\": 0.04,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.03\n },\n {\n \"x\": 0,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": 0.04,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": -0.02\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.14,\n \"y\": -0.02\n },\n {\n \"x\": -0.16,\n \"y\": -0.01\n },\n {\n \"x\": -0.17,\n \"y\": 0\n },\n {\n \"x\": -0.18,\n \"y\": 0.01\n },\n {\n \"x\": -0.19,\n \"y\": 0.02\n },\n {\n \"x\": -0.2,\n \"y\": 0.03\n },\n {\n \"x\": -0.2,\n \"y\": 0.04\n },\n {\n \"x\": -0.21,\n \"y\": 0.05\n },\n {\n \"x\": -0.21,\n \"y\": 0.06\n },\n {\n \"x\": -0.22,\n \"y\": 0.07\n },\n {\n \"x\": -0.22,\n \"y\": 0.08\n },\n {\n \"x\": -0.22,\n \"y\": 0.09\n },\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.22,\n \"y\": 0.11\n },\n {\n \"x\": -0.22,\n \"y\": 0.12\n },\n {\n \"x\": -0.22,\n \"y\": 0.13\n },\n {\n \"x\": -0.21,\n \"y\": 0.14\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.2,\n \"y\": 0.16\n },\n {\n \"x\": -0.19,\n \"y\": 0.17\n },\n {\n \"x\": -0.19,\n \"y\": 0.18\n },\n {\n \"x\": -0.18,\n \"y\": 0.19\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.16,\n \"y\": 0.21\n },\n {\n \"x\": -0.15,\n \"y\": 0.22\n },\n {\n \"x\": -0.14,\n \"y\": 0.22\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.14,\n \"y\": -0.02\n },\n {\n \"x\": 0.15,\n \"y\": -0.01\n },\n {\n \"x\": 0.17,\n \"y\": 0\n },\n {\n \"x\": 0.18,\n \"y\": 0.01\n },\n {\n \"x\": 0.19,\n \"y\": 0.02\n },\n {\n \"x\": 0.2,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": 0.04\n },\n {\n \"x\": 0.21,\n \"y\": 0.05\n },\n {\n \"x\": 0.21,\n \"y\": 0.06\n },\n {\n \"x\": 0.22,\n \"y\": 0.07\n },\n {\n \"x\": 0.22,\n \"y\": 0.08\n },\n {\n \"x\": 0.22,\n \"y\": 0.09\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.11\n },\n {\n \"x\": 0.22,\n \"y\": 0.12\n },\n {\n \"x\": 0.22,\n \"y\": 0.13\n },\n {\n \"x\": 0.21,\n \"y\": 0.14\n },\n {\n \"x\": 0.21,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.16\n },\n {\n \"x\": 0.19,\n \"y\": 0.17\n },\n {\n \"x\": 0.19,\n \"y\": 0.18\n },\n {\n \"x\": 0.18,\n \"y\": 0.19\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.16,\n \"y\": 0.21\n },\n {\n \"x\": 0.15,\n \"y\": 0.21\n },\n {\n \"x\": 0.14,\n \"y\": 0.22\n },\n {\n \"x\": 0.13,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.1\n },\n {\n \"x\": -0.12,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.28\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0,\n \"y\": -0.25\n },\n \"left1\": {\n \"x\": -0.45,\n \"y\": 0.1\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": 0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.28,\n \"maxY\": 0.28,\n \"width\": 0.95,\n \"height\": 0.56,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged123.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.45,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.1\n },\n {\n \"x\": 0.04,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.03\n },\n {\n \"x\": 0,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": 0.04,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": -0.02\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.14,\n \"y\": -0.02\n },\n {\n \"x\": -0.16,\n \"y\": -0.01\n },\n {\n \"x\": -0.17,\n \"y\": 0\n },\n {\n \"x\": -0.18,\n \"y\": 0.01\n },\n {\n \"x\": -0.19,\n \"y\": 0.02\n },\n {\n \"x\": -0.2,\n \"y\": 0.03\n },\n {\n \"x\": -0.2,\n \"y\": 0.04\n },\n {\n \"x\": -0.21,\n \"y\": 0.05\n },\n {\n \"x\": -0.21,\n \"y\": 0.06\n },\n {\n \"x\": -0.22,\n \"y\": 0.07\n },\n {\n \"x\": -0.22,\n \"y\": 0.08\n },\n {\n \"x\": -0.22,\n \"y\": 0.09\n },\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.22,\n \"y\": 0.11\n },\n {\n \"x\": -0.22,\n \"y\": 0.12\n },\n {\n \"x\": -0.22,\n \"y\": 0.13\n },\n {\n \"x\": -0.21,\n \"y\": 0.14\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.2,\n \"y\": 0.16\n },\n {\n \"x\": -0.19,\n \"y\": 0.17\n },\n {\n \"x\": -0.19,\n \"y\": 0.18\n },\n {\n \"x\": -0.18,\n \"y\": 0.19\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.16,\n \"y\": 0.21\n },\n {\n \"x\": -0.15,\n \"y\": 0.22\n },\n {\n \"x\": -0.14,\n \"y\": 0.22\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.14,\n \"y\": -0.02\n },\n {\n \"x\": 0.15,\n \"y\": -0.01\n },\n {\n \"x\": 0.17,\n \"y\": 0\n },\n {\n \"x\": 0.18,\n \"y\": 0.01\n },\n {\n \"x\": 0.19,\n \"y\": 0.02\n },\n {\n \"x\": 0.2,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": 0.04\n },\n {\n \"x\": 0.21,\n \"y\": 0.05\n },\n {\n \"x\": 0.21,\n \"y\": 0.06\n },\n {\n \"x\": 0.22,\n \"y\": 0.07\n },\n {\n \"x\": 0.22,\n \"y\": 0.08\n },\n {\n \"x\": 0.22,\n \"y\": 0.09\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.11\n },\n {\n \"x\": 0.22,\n \"y\": 0.12\n },\n {\n \"x\": 0.22,\n \"y\": 0.13\n },\n {\n \"x\": 0.21,\n \"y\": 0.14\n },\n {\n \"x\": 0.21,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.16\n },\n {\n \"x\": 0.19,\n \"y\": 0.17\n },\n {\n \"x\": 0.19,\n \"y\": 0.18\n },\n {\n \"x\": 0.18,\n \"y\": 0.19\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.16,\n \"y\": 0.21\n },\n {\n \"x\": 0.15,\n \"y\": 0.21\n },\n {\n \"x\": 0.14,\n \"y\": 0.22\n },\n {\n \"x\": 0.13,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.28\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0,\n \"y\": -0.25\n },\n \"left1\": {\n \"x\": -0.45,\n \"y\": 0.1\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": 0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.28,\n \"maxY\": 0.28,\n \"width\": 0.95,\n \"height\": 0.56,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3_bridged23.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.45,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.45,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": -0.03\n },\n {\n \"x\": 0,\n \"y\": -0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": 0.04,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.05,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": 0.22\n },\n {\n \"x\": -0.05,\n \"y\": 0.22\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-88-5-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.04,\n \"y\": -0.02\n },\n {\n \"x\": -0.05,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path2-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.23\n },\n {\n \"x\": -0.12,\n \"y\": -0.02\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.13,\n \"y\": -0.03\n },\n {\n \"x\": -0.14,\n \"y\": -0.02\n },\n {\n \"x\": -0.16,\n \"y\": -0.01\n },\n {\n \"x\": -0.17,\n \"y\": 0\n },\n {\n \"x\": -0.18,\n \"y\": 0.01\n },\n {\n \"x\": -0.19,\n \"y\": 0.02\n },\n {\n \"x\": -0.2,\n \"y\": 0.03\n },\n {\n \"x\": -0.2,\n \"y\": 0.04\n },\n {\n \"x\": -0.21,\n \"y\": 0.05\n },\n {\n \"x\": -0.21,\n \"y\": 0.06\n },\n {\n \"x\": -0.22,\n \"y\": 0.07\n },\n {\n \"x\": -0.22,\n \"y\": 0.08\n },\n {\n \"x\": -0.22,\n \"y\": 0.09\n },\n {\n \"x\": -0.22,\n \"y\": 0.1\n },\n {\n \"x\": -0.22,\n \"y\": 0.11\n },\n {\n \"x\": -0.22,\n \"y\": 0.12\n },\n {\n \"x\": -0.22,\n \"y\": 0.13\n },\n {\n \"x\": -0.21,\n \"y\": 0.14\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.21,\n \"y\": 0.15\n },\n {\n \"x\": -0.2,\n \"y\": 0.16\n },\n {\n \"x\": -0.19,\n \"y\": 0.17\n },\n {\n \"x\": -0.19,\n \"y\": 0.18\n },\n {\n \"x\": -0.18,\n \"y\": 0.19\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.17,\n \"y\": 0.2\n },\n {\n \"x\": -0.16,\n \"y\": 0.21\n },\n {\n \"x\": -0.15,\n \"y\": 0.22\n },\n {\n \"x\": -0.14,\n \"y\": 0.22\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n },\n {\n \"x\": -0.13,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.12,\n \"y\": -0.03\n },\n {\n \"x\": 0.14,\n \"y\": -0.02\n },\n {\n \"x\": 0.15,\n \"y\": -0.01\n },\n {\n \"x\": 0.17,\n \"y\": 0\n },\n {\n \"x\": 0.18,\n \"y\": 0.01\n },\n {\n \"x\": 0.19,\n \"y\": 0.02\n },\n {\n \"x\": 0.2,\n \"y\": 0.03\n },\n {\n \"x\": 0.2,\n \"y\": 0.04\n },\n {\n \"x\": 0.21,\n \"y\": 0.05\n },\n {\n \"x\": 0.21,\n \"y\": 0.06\n },\n {\n \"x\": 0.22,\n \"y\": 0.07\n },\n {\n \"x\": 0.22,\n \"y\": 0.08\n },\n {\n \"x\": 0.22,\n \"y\": 0.09\n },\n {\n \"x\": 0.22,\n \"y\": 0.1\n },\n {\n \"x\": 0.22,\n \"y\": 0.11\n },\n {\n \"x\": 0.22,\n \"y\": 0.12\n },\n {\n \"x\": 0.22,\n \"y\": 0.13\n },\n {\n \"x\": 0.21,\n \"y\": 0.14\n },\n {\n \"x\": 0.21,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.15\n },\n {\n \"x\": 0.2,\n \"y\": 0.16\n },\n {\n \"x\": 0.19,\n \"y\": 0.17\n },\n {\n \"x\": 0.19,\n \"y\": 0.18\n },\n {\n \"x\": 0.18,\n \"y\": 0.19\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.17,\n \"y\": 0.2\n },\n {\n \"x\": 0.16,\n \"y\": 0.21\n },\n {\n \"x\": 0.15,\n \"y\": 0.21\n },\n {\n \"x\": 0.14,\n \"y\": 0.22\n },\n {\n \"x\": 0.13,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n },\n {\n \"x\": 0.12,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.28\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0,\n \"y\": -0.25\n },\n \"left1\": {\n \"x\": -0.45,\n \"y\": 0.1\n },\n \"right1\": {\n \"x\": 0.45,\n \"y\": 0.1\n }\n },\n \"bounds\": {\n \"minX\": -0.47,\n \"maxX\": 0.47,\n \"minY\": -0.28,\n \"maxY\": 0.28,\n \"width\": 0.95,\n \"height\": 0.56,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import svgJson from \"../assets/generated/solderjumper3.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"bottom1\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.37,\n \"y\": 0.03\n },\n {\n \"x\": -0.13,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.03\n },\n {\n \"x\": 0.11,\n \"y\": -0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": -0.06\n },\n {\n \"x\": 0.37,\n \"y\": -0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.17\n },\n {\n \"x\": 0.37,\n \"y\": 0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.37\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.37\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.37,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.37,\n \"y\": -0.06\n },\n \"right2\": {\n \"x\": 0.37,\n \"y\": 0.17\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 0.79,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": -0.07,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": 0.03,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.17,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/spdt_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right2\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_normally_closed_switch_right from \"./spdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.44\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.44\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_normally_closed_switch_right from \"./spdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.625\nval.y -= 0.695\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_normally_closed_switch_right from \"./spdt_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.4\n\nexport default rotated\n","{\n \"paths\": {\n \"path1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.37,\n \"y\": 0.03\n },\n {\n \"x\": -0.13,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path-1-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.03\n },\n {\n \"x\": 0.11,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": -0.06\n },\n {\n \"x\": 0.37,\n \"y\": -0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": 0.17\n },\n {\n \"x\": 0.37,\n \"y\": 0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.4\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.4\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.37,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.37,\n \"y\": -0.06\n },\n \"right3\": {\n \"x\": 0.37,\n \"y\": 0.17\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 0.79,\n \"height\": 0.79,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-3\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": -0.07,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": 0.03,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.17,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/spdt_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right3\", [\"2\"])\n .labelPort(\"right1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_switch_right from \"./spdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.44\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.44\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_switch_right from \"./spdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.625\nval.y -= 0.695\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spdt_switch_right from \"./spdt_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spdt_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.28\nval.y -= 0.28\nval.x = 0.4\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": 0\n },\n {\n \"x\": -0.12,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0\n },\n {\n \"x\": 0.11,\n \"y\": 0.05\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.01\n },\n {\n \"x\": 0.38,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.31\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.28\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.12,\n \"y\": -0.01\n },\n \"left2\": {\n \"x\": -0.38,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.12,\n \"y\": -0.01\n },\n \"right2\": {\n \"x\": 0.38,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.25,\n \"maxY\": 0.25,\n \"width\": 0.81,\n \"height\": 0.5,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": 0,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": 0,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/spst_normally_closed_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\ndelete (svgJson.refblocks as any).left1\ndelete (svgJson.refblocks as any).right1\nsvgJson.bounds.width += 0.2\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left2\", [\"1\"])\n .labelPort(\"right2\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_normally_closed_switch_right from \"./spst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_normally_closed_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_normally_closed_switch_right from \"./spst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_normally_closed_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.57\nval.y -= 0.57\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_normally_closed_switch_right from \"./spst_normally_closed_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_normally_closed_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.38,\n \"y\": 0\n },\n {\n \"x\": -0.12,\n \"y\": -0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.07,\n \"y\": 0.01\n },\n {\n \"x\": 0.1,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.12,\n \"y\": -0.01\n },\n {\n \"x\": 0.38,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0,\n \"y\": 0.25\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.25\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.12,\n \"y\": -0.01\n },\n \"left2\": {\n \"x\": -0.38,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.12,\n \"y\": -0.01\n },\n \"right2\": {\n \"x\": 0.38,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.4,\n \"maxX\": 0.4,\n \"minY\": -0.25,\n \"maxY\": 0.25,\n \"width\": 0.81,\n \"height\": 0.5,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"circle-2\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": 0,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n },\n \"circle-1\": {\n \"type\": \"circle\",\n \"x\": -0.1,\n \"y\": 0,\n \"radius\": 0.02,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/spst_switch.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\ndelete (svgJson.refblocks as any).left1\ndelete (svgJson.refblocks as any).right1\nsvgJson.bounds.width += 0.2\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left2\", [\"1\"])\n .labelPort(\"right2\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_switch_right from \"./spst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_switch_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_switch_right from \"./spst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_switch_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.57\nval.y -= 0.57\nval.x = 0\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport spst_switch_right from \"./spst_switch_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(spst_switch_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.3\nref.y += 0.265\nval.y -= 0.265\nval.x = 0.3\n\nexport default rotated\n","{\n \"paths\": {\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.16845120000000047,\n \"y\": 0.02621170000000017\n },\n {\n \"x\": -0.4458008,\n \"y\": 0.02709619999999968\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.4458008,\n \"y\": 0.026971799999999657\n },\n {\n \"x\": 0.1677968999999997,\n \"y\": 0.027926399999999685\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.0040837000000002455,\n \"y\": -0.13467459999999964\n },\n {\n \"x\": -0.0040837000000002455,\n \"y\": -0.13467459999999964\n },\n {\n \"x\": -0.017668143940740948,\n \"y\": -0.1311205263185182\n },\n {\n \"x\": -0.03043520885925943,\n \"y\": -0.12727072121481456\n },\n {\n \"x\": -0.04240966440000013,\n \"y\": -0.1231399985999998\n },\n {\n \"x\": -0.05361628020740751,\n \"y\": -0.11874317238518502\n },\n {\n \"x\": -0.064079825925926,\n \"y\": -0.11409505648148131\n },\n {\n \"x\": -0.07382507120000005,\n \"y\": -0.10921046479999987\n },\n {\n \"x\": -0.0828767856740741,\n \"y\": -0.10410421125185171\n },\n {\n \"x\": -0.0912597389925926,\n \"y\": -0.09879110974814802\n },\n {\n \"x\": -0.09899870079999995,\n \"y\": -0.0932859741999998\n },\n {\n \"x\": -0.10611844074074069,\n \"y\": -0.08760361851851838\n },\n {\n \"x\": -0.11264372845925916,\n \"y\": -0.0817588566148146\n },\n {\n \"x\": -0.11859933359999993,\n \"y\": -0.07576650239999982\n },\n {\n \"x\": -0.12401002580740728,\n \"y\": -0.06964136978518495\n },\n {\n \"x\": -0.12890057472592584,\n \"y\": -0.06339827268148127\n },\n {\n \"x\": -0.13329574999999985,\n \"y\": -0.05705202499999972\n },\n {\n \"x\": -0.13722032127407394,\n \"y\": -0.05061744065185156\n },\n {\n \"x\": -0.14069905819259243,\n \"y\": -0.04410933354814783\n },\n {\n \"x\": -0.14375673039999987,\n \"y\": -0.03754251759999966\n },\n {\n \"x\": -0.14641810754074058,\n \"y\": -0.030931806718518143\n },\n {\n \"x\": -0.1487079592592591,\n \"y\": -0.0242920148148144\n },\n {\n \"x\": -0.15065105519999983,\n \"y\": -0.017637955799999563\n },\n {\n \"x\": -0.15227216500740723,\n \"y\": -0.01098444358518472\n },\n {\n \"x\": -0.15359605832592574,\n \"y\": -0.004346292081480994\n },\n {\n \"x\": -0.1546475047999998,\n \"y\": 0.00226168480000051\n },\n {\n \"x\": -0.15545127407407386,\n \"y\": 0.008824673148148676\n },\n {\n \"x\": -0.1560321357925924,\n \"y\": 0.015327859051852397\n },\n {\n \"x\": -0.1564148595999998,\n \"y\": 0.02175642860000056\n },\n {\n \"x\": -0.1566242151407405,\n \"y\": 0.028095567881482052\n },\n {\n \"x\": -0.15668497205925902,\n \"y\": 0.03433046298518576\n },\n {\n \"x\": -0.15662189999999976,\n \"y\": 0.04044630000000058\n },\n {\n \"x\": -0.15662189999999976,\n \"y\": 0.0404463000000006\n },\n {\n \"x\": -0.15662189999999976,\n \"y\": 0.0404463000000006\n },\n {\n \"x\": -0.15622857394444417,\n \"y\": 0.04717166472222282\n },\n {\n \"x\": -0.1553217675555553,\n \"y\": 0.05388046444444503\n },\n {\n \"x\": -0.15392183849999977,\n \"y\": 0.060558907500000585\n },\n {\n \"x\": -0.1520491444444442,\n \"y\": 0.0671932022222228\n },\n {\n \"x\": -0.1497240430555553,\n \"y\": 0.07376955694444502\n },\n {\n \"x\": -0.14696689199999974,\n \"y\": 0.08027418000000058\n },\n {\n \"x\": -0.14379804894444415,\n \"y\": 0.0866932797222228\n },\n {\n \"x\": -0.1402378715555553,\n \"y\": 0.09301306444444506\n },\n {\n \"x\": -0.13630671749999965,\n \"y\": 0.09921974250000057\n },\n {\n \"x\": -0.13202494444444415,\n \"y\": 0.10529952222222282\n },\n {\n \"x\": -0.12741291005555522,\n \"y\": 0.11123861194444501\n },\n {\n \"x\": -0.1224909719999997,\n \"y\": 0.1170232200000006\n },\n {\n \"x\": -0.11727948794444407,\n \"y\": 0.12263955472222278\n },\n {\n \"x\": -0.11179881555555524,\n \"y\": 0.12807382444444504\n },\n {\n \"x\": -0.10606931249999965,\n \"y\": 0.13331223750000057\n },\n {\n \"x\": -0.1001113364444441,\n \"y\": 0.13834100222222284\n },\n {\n \"x\": -0.09394524505555521,\n \"y\": 0.14314632694444504\n },\n {\n \"x\": -0.08759139599999967,\n \"y\": 0.14771442000000062\n },\n {\n \"x\": -0.08107014694444413,\n \"y\": 0.15203148972222283\n },\n {\n \"x\": -0.07440185555555523,\n \"y\": 0.15608374444444503\n },\n {\n \"x\": -0.0676068794999997,\n \"y\": 0.15985739250000058\n },\n {\n \"x\": -0.06070557644444415,\n \"y\": 0.16333864222222283\n },\n {\n \"x\": -0.05371830405555529,\n \"y\": 0.16651370194444504\n },\n {\n \"x\": -0.04666541999999976,\n \"y\": 0.1693687800000006\n },\n {\n \"x\": -0.03956728194444424,\n \"y\": 0.1718900847222228\n },\n {\n \"x\": -0.03244424755555539,\n \"y\": 0.17406382444444501\n },\n {\n \"x\": -0.025316674499999876,\n \"y\": 0.17587620750000055\n },\n {\n \"x\": -0.01820492044444437,\n \"y\": 0.17731344222222278\n },\n {\n \"x\": -0.01112934305555553,\n \"y\": 0.178361736944445\n },\n {\n \"x\": -0.004110300000000034,\n \"y\": 0.17900730000000054\n },\n {\n \"x\": -0.004110300000000011,\n \"y\": 0.17900730000000054\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8704-1-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.004158700000000071,\n \"y\": -0.1355885000000001\n },\n {\n \"x\": 0.004158700000000071,\n \"y\": -0.1355885000000001\n },\n {\n \"x\": 0.017743143940740766,\n \"y\": -0.1320344263185187\n },\n {\n \"x\": 0.03051020885925925,\n \"y\": -0.12818462121481505\n },\n {\n \"x\": 0.042484664399999955,\n \"y\": -0.12405389860000024\n },\n {\n \"x\": 0.053691280207407335,\n \"y\": -0.11965707238518546\n },\n {\n \"x\": 0.0641548259259258,\n \"y\": -0.11500895648148178\n },\n {\n \"x\": 0.07390007119999986,\n \"y\": -0.1101243648000003\n },\n {\n \"x\": 0.0829517856740739,\n \"y\": -0.10501811125185218\n },\n {\n \"x\": 0.0913347389925924,\n \"y\": -0.09970500974814848\n },\n {\n \"x\": 0.09907370079999973,\n \"y\": -0.09419987420000027\n },\n {\n \"x\": 0.10619344074074046,\n \"y\": -0.08851751851851883\n },\n {\n \"x\": 0.11271872845925893,\n \"y\": -0.08267275661481507\n },\n {\n \"x\": 0.11867433359999968,\n \"y\": -0.07668040240000029\n },\n {\n \"x\": 0.12408502580740703,\n \"y\": -0.0705552697851854\n },\n {\n \"x\": 0.12897557472592555,\n \"y\": -0.06431217268148172\n },\n {\n \"x\": 0.13337074999999957,\n \"y\": -0.05796592500000018\n },\n {\n \"x\": 0.13729532127407365,\n \"y\": -0.05153134065185202\n },\n {\n \"x\": 0.14077405819259214,\n \"y\": -0.045023233548148286\n },\n {\n \"x\": 0.14383173039999952,\n \"y\": -0.038456417600000126\n },\n {\n \"x\": 0.14649310754074024,\n \"y\": -0.03184570671851861\n },\n {\n \"x\": 0.14878295925925875,\n \"y\": -0.02520591481481487\n },\n {\n \"x\": 0.1507260551999995,\n \"y\": -0.01855185580000003\n },\n {\n \"x\": 0.15234716500740686,\n \"y\": -0.011898343585185192\n },\n {\n \"x\": 0.15367105832592537,\n \"y\": -0.005260192081481464\n },\n {\n \"x\": 0.15472250479999944,\n \"y\": 0.001347784800000043\n },\n {\n \"x\": 0.1555262740740735,\n \"y\": 0.007910773148148207\n },\n {\n \"x\": 0.156107135792592,\n \"y\": 0.01441395905185193\n },\n {\n \"x\": 0.1564898595999994,\n \"y\": 0.020842528600000094\n },\n {\n \"x\": 0.15669921514074014,\n \"y\": 0.02718166788148159\n },\n {\n \"x\": 0.15675997205925862,\n \"y\": 0.03341656298518529\n },\n {\n \"x\": 0.15669689999999936,\n \"y\": 0.03953240000000011\n },\n {\n \"x\": 0.15669689999999936,\n \"y\": 0.039532400000000134\n },\n {\n \"x\": 0.15669689999999936,\n \"y\": 0.039532400000000134\n },\n {\n \"x\": 0.1563035739444438,\n \"y\": 0.04625776472222235\n },\n {\n \"x\": 0.15539676755555493,\n \"y\": 0.05296656444444457\n },\n {\n \"x\": 0.15399683849999934,\n \"y\": 0.05964500750000013\n },\n {\n \"x\": 0.1521241444444438,\n \"y\": 0.06627930222222234\n },\n {\n \"x\": 0.14979904305555491,\n \"y\": 0.07285565694444456\n },\n {\n \"x\": 0.14704189199999937,\n \"y\": 0.07936028000000013\n },\n {\n \"x\": 0.1438730489444438,\n \"y\": 0.08577937972222234\n },\n {\n \"x\": 0.1403128715555549,\n \"y\": 0.09209916444444458\n },\n {\n \"x\": 0.13638171749999925,\n \"y\": 0.0983058425000001\n },\n {\n \"x\": 0.13209994444444376,\n \"y\": 0.10438562222222235\n },\n {\n \"x\": 0.12748791005555482,\n \"y\": 0.11032471194444453\n },\n {\n \"x\": 0.12256597199999929,\n \"y\": 0.11610932000000013\n },\n {\n \"x\": 0.1173544879444437,\n \"y\": 0.1217256547222223\n },\n {\n \"x\": 0.11187381555555485,\n \"y\": 0.12715992444444457\n },\n {\n \"x\": 0.10614431249999925,\n \"y\": 0.1323983375000001\n },\n {\n \"x\": 0.10018633644444369,\n \"y\": 0.13742710222222235\n },\n {\n \"x\": 0.09402024505555481,\n \"y\": 0.14223242694444457\n },\n {\n \"x\": 0.08766639599999927,\n \"y\": 0.14680052000000016\n },\n {\n \"x\": 0.08114514694444372,\n \"y\": 0.15111758972222236\n },\n {\n \"x\": 0.07447685555555483,\n \"y\": 0.15516984444444457\n },\n {\n \"x\": 0.06768187949999929,\n \"y\": 0.15894349250000012\n },\n {\n \"x\": 0.06078057644444377,\n \"y\": 0.16242474222222236\n },\n {\n \"x\": 0.053793304055554894,\n \"y\": 0.16559980194444457\n },\n {\n \"x\": 0.046740419999999366,\n \"y\": 0.16845488000000014\n },\n {\n \"x\": 0.039642281944443844,\n \"y\": 0.17097618472222234\n },\n {\n \"x\": 0.03251924755555499,\n \"y\": 0.17314992444444455\n },\n {\n \"x\": 0.02539167449999948,\n \"y\": 0.17496230750000008\n },\n {\n \"x\": 0.018279920444443973,\n \"y\": 0.17639954222222232\n },\n {\n \"x\": 0.011204343055555134,\n \"y\": 0.17744783694444452\n },\n {\n \"x\": 0.004185299999999637,\n \"y\": 0.17809340000000007\n },\n {\n \"x\": 0.004185299999999614,\n \"y\": 0.17809340000000007\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08039130000000005,\n \"y\": 0.0179576999999993\n },\n {\n \"x\": -0.08039130000000005,\n \"y\": 0.09650599999999931\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path4-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.01494479999999987,\n \"y\": -0.055216500000000224\n },\n {\n \"x\": 0.01494479999999987,\n \"y\": 0.09691909999999937\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path4-5-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.06871169999999927,\n \"y\": -0.056870000000000864\n },\n {\n \"x\": 0.06871169999999927,\n \"y\": 0.018784499999999538\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path4-1\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08179359999999969,\n \"y\": 0.09650570000000003\n },\n {\n \"x\": 0.015771699999999722,\n \"y\": 0.09650570000000003\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path4-1-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.0117995999999998,\n \"y\": -0.05594970000000088\n },\n {\n \"x\": 0.06843709999999925,\n \"y\": -0.05594970000000088\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.17162450000000073,\n \"y\": 0.11125030000000025\n },\n {\n \"x\": -0.2688274000000015,\n \"y\": 0.11125030000000025\n },\n {\n \"x\": -0.2688274000000015,\n \"y\": 0.11469129999999961\n },\n {\n \"x\": -0.17162450000000073,\n \"y\": 0.11469129999999961\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"rect1577-4-7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2184661999999995,\n \"y\": 0.16159429999999997\n },\n {\n \"x\": -0.2184661999999995,\n \"y\": 0.06439139999999943\n },\n {\n \"x\": -0.22190719999999908,\n \"y\": 0.06439139999999943\n },\n {\n \"x\": -0.22190719999999908,\n \"y\": 0.16159429999999997\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.0024445000000006267,\n \"y\": 0.23933980000000044\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.00341719999999901,\n \"y\": -0.23933980000000066\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.4458008,\n \"y\": 0.02709619999999968\n },\n \"right1\": {\n \"x\": 0.4458008,\n \"y\": 0.026971799999999657\n }\n },\n \"bounds\": {\n \"minX\": -0.473959241,\n \"maxX\": 0.473959241,\n \"minY\": -0.23933980000000066,\n \"maxY\": 0.23933980000000044,\n \"width\": 0.947918482,\n \"height\": 0.4786796000000011,\n \"centerX\": 0,\n \"centerY\": -1.1102230246251565e-16\n },\n \"circles\": {}\n}","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/square_wave.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0.02, y: 0.2 })\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0.5, y: -0.2 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/square_wave.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\", { x: 0, y: 0.45 })\n .changeTextAnchor(\"{VAL}\", \"middle_top\", { x: 0, y: -0.55 })\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/square_wave.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { modifySymbol } from \"../drawing/modify-symbol/modify-symbol\"\nimport svgJson from \"assets/generated/square_wave.json\"\n\nexport default modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\", \"pos\"])\n .labelPort(\"right1\", [\"2\", \"neg\"])\n .changeTextAnchor(\"{VAL}\", \"middle_left\", { x: 0.02, y: -0.2 })\n .changeTextAnchor(\"{REF}\", \"middle_left\", { x: 0.5, y: 0.2 })\n .build()\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.09\n },\n {\n \"x\": 0.15,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-5-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.14\n },\n {\n \"x\": 0.19,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/step_recovery_diode.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport step_recovery_diode_horz from \"./step_recovery_diode_horz\"\n\nexport default rotateSymbol(step_recovery_diode_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.43\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"RPM\",\n \"x\": 0,\n \"y\": -0.02\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.01,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/tachometer.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, y: 0.01, anchor: \"center\", fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tachometer_horz from \"./tachometer_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = tachometer_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...tachometer_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","import { defineSymbol } from \"drawing/defineSymbol\"\n\nexport default defineSymbol({\n primitives: [\n {\n type: \"path\",\n points: [\n { x: -0.2, y: 0 },\n { x: 0, y: 0 },\n ],\n color: \"primary\",\n fill: false,\n },\n {\n type: \"path\",\n points: Array.from({ length: 8 }, (_, i) => {\n const angle = Math.PI / 2 - (i * Math.PI) / 7\n const r = 0.1\n return { x: 0.1 - r * Math.cos(angle), y: r * Math.sin(angle) }\n }),\n color: \"primary\",\n fill: false,\n },\n { type: \"text\", text: \"{REF}\", x: 0.125, y: 0, anchor: \"middle_left\" },\n ],\n ports: [{ x: -0.2, y: 0, labels: [\"1\"] }],\n center: { x: 0, y: 0 },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport type { TextPrimitive } from \"drawing\"\nimport testpoint_right from \"./testpoint_right\"\n\nconst rotated = rotateSymbol(testpoint_right, \"down\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n) as TextPrimitive | undefined\n\nif (ref) {\n ref.anchor = \"middle_top\"\n}\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport testpoint_right from \"./testpoint_right\"\n\nexport default rotateSymbol(testpoint_right, \"left\")\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport testpoint_right from \"./testpoint_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(testpoint_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n) as TextPrimitive | undefined\n\nif (ref) {\n ref.anchor = \"middle_bottom\"\n}\n\nexport default rotated\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.44,\n \"y\": 0.04\n },\n {\n \"x\": 0.19,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0.18\n },\n {\n \"x\": 0.44,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": -0.09\n },\n {\n \"x\": 0.19,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0.04\n },\n {\n \"x\": -0.11,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path45\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.43,\n \"y\": 0.22\n },\n {\n \"x\": -0.11,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"right1\": {\n \"x\": -0.43,\n \"y\": 0.22\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/tilted_ground.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .labelPort(\"right1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tilted_ground_right from \"./tilted_ground_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(tilted_ground_right, \"up\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.4\nref.y += 0.2\nval.y -= 0.3\nval.x = 0.4\n\nexport default rotated\n","import { flipSymbolOverXAxis } from \"drawing/rotateSymbol\"\nimport tilted_ground_up from \"./tilted_ground_up\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = flipSymbolOverXAxis(tilted_ground_up)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0.35\nref.y += 0.4\nval.y -= 0.4\nval.x = 0.35\n\nexport default rotated\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tilted_ground_right from \"./tilted_ground_right\"\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(tilted_ground_right, \"left\")\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_bottom\"\nval.anchor = \"middle_top\"\n\nref.x = 0\nref.y += 0.5\nval.y -= 0.6\nval.x = 0\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.04\n },\n {\n \"x\": -0.11,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.04\n },\n {\n \"x\": 0.54,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.09,\n \"y\": -0.15\n },\n {\n \"x\": -0.09,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.15\n },\n {\n \"x\": 0.09,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.08,\n \"y\": 0.06\n },\n {\n \"x\": -0.08,\n \"y\": -0.15\n },\n {\n \"x\": 0.09,\n \"y\": -0.05\n },\n {\n \"x\": -0.08,\n \"y\": 0.06\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-9-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.26\n },\n {\n \"x\": 0.08,\n \"y\": 0.05\n },\n {\n \"x\": -0.09,\n \"y\": 0.15\n },\n {\n \"x\": 0.07,\n \"y\": 0.26\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path12-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": -0.06\n },\n {\n \"x\": 0.27,\n \"y\": -0.17\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27,\n \"y\": -0.18\n },\n {\n \"x\": 0.27,\n \"y\": -0.31\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.01,\n \"y\": 0.42\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.03,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"bottom1\": {\n \"x\": 0.27,\n \"y\": -0.31\n },\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.42,\n \"maxY\": 0.42,\n \"width\": 1.14,\n \"height\": 0.83,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.05,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/triac.json\"\nimport { TextPrimitive } from \"drawing/types\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .labelPort(\"bottom1\", [\"3\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport triac_horz from \"./triac_horz\"\n\nconst rotatedSymbol = rotateSymbol(triac_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\nconst val = texts.find((text) => text.text === \"{VAL}\")!\n\nref.y = 0\nval.y = 0\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.08,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": -0.09\n },\n {\n \"x\": 0.08,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/tunnel_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport tunnel_diode_horz from \"./tunnel_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(tunnel_diode_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.34,\n \"y\": 0.22\n },\n {\n \"x\": -0.02,\n \"y\": 0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23,\n \"y\": 0.13\n },\n {\n \"x\": 0.23,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23,\n \"y\": -0.08\n },\n {\n \"x\": 0.23,\n \"y\": -0.35\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.01,\n \"y\": -0.18\n },\n {\n \"x\": -0.01,\n \"y\": 0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23,\n \"y\": 0.12\n },\n {\n \"x\": -0.01,\n \"y\": 0.12\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-0-9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.11,\n \"y\": 0.13\n },\n {\n \"x\": -0.17,\n \"y\": 0.04\n },\n {\n \"x\": -0.06,\n \"y\": 0.03\n },\n {\n \"x\": -0.11,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"path11-0-3-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.23,\n \"y\": -0.08\n },\n {\n \"x\": -0.01,\n \"y\": -0.08\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.2,\n \"y\": 0.39\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.03,\n \"y\": -0.42\n }\n },\n \"refblocks\": {\n \"top1\": {\n \"x\": 0.23,\n \"y\": 0.4\n },\n \"bottom1\": {\n \"x\": 0.23,\n \"y\": -0.35\n },\n \"left1\": {\n \"x\": -0.34,\n \"y\": 0.22\n }\n },\n \"bounds\": {\n \"minX\": -0.37,\n \"maxX\": 0.37,\n \"minY\": -0.42,\n \"maxY\": 0.42,\n \"width\": 0.74,\n \"height\": 0.85,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0.08,\n \"y\": 0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/unijunction_transistor.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n { ...refblocks.top1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.bottom1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n { ...refblocks.left1, labels: [\"3\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport unijunction_transistor_horz from \"./unijunction_transistor_horz\"\n\nconst rotatedSymbol = rotateSymbol(unijunction_transistor_horz)\n\nconst texts = rotatedSymbol.primitives.filter(\n (primitive) => primitive.type === \"text\",\n)\n\nconst ref = texts.find((text) => text.text === \"{REF}\")!\n\nref.y = 0.1\n\nconst val = texts.find((text) => text.text === \"{VAL}\")!\n\nval.y = 0.1\nval.x = -0.4\n\nexport default rotatedSymbol\n","{\n \"paths\": {\n \"capsule_outer\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.44,\n \"y\": 0.34\n },\n {\n \"x\": -0.45,\n \"y\": 0.39\n },\n {\n \"x\": -0.46,\n \"y\": 0.42\n },\n {\n \"x\": -0.49,\n \"y\": 0.44\n },\n {\n \"x\": -0.52,\n \"y\": 0.46\n },\n {\n \"x\": -0.56,\n \"y\": 0.46\n },\n {\n \"x\": -0.6,\n \"y\": 0.46\n },\n {\n \"x\": -0.63,\n \"y\": 0.44\n },\n {\n \"x\": -0.65,\n \"y\": 0.42\n },\n {\n \"x\": -0.67,\n \"y\": 0.39\n },\n {\n \"x\": -0.68,\n \"y\": 0.34\n },\n {\n \"x\": -0.68,\n \"y\": -0.34\n },\n {\n \"x\": -0.67,\n \"y\": -0.39\n },\n {\n \"x\": -0.65,\n \"y\": -0.42\n },\n {\n \"x\": -0.63,\n \"y\": -0.44\n },\n {\n \"x\": -0.6,\n \"y\": -0.45\n },\n {\n \"x\": -0.56,\n \"y\": -0.46\n },\n {\n \"x\": -0.52,\n \"y\": -0.45\n },\n {\n \"x\": -0.49,\n \"y\": -0.44\n },\n {\n \"x\": -0.46,\n \"y\": -0.42\n },\n {\n \"x\": -0.45,\n \"y\": -0.39\n },\n {\n \"x\": -0.44,\n \"y\": -0.34\n },\n {\n \"x\": -0.44,\n \"y\": 0.34\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"capsule_inner\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.51,\n \"y\": 0.28\n },\n {\n \"x\": -0.52,\n \"y\": 0.32\n },\n {\n \"x\": -0.53,\n \"y\": 0.34\n },\n {\n \"x\": -0.56,\n \"y\": 0.35\n },\n {\n \"x\": -0.57,\n \"y\": 0.35\n },\n {\n \"x\": -0.58,\n \"y\": 0.34\n },\n {\n \"x\": -0.6,\n \"y\": 0.32\n },\n {\n \"x\": -0.61,\n \"y\": 0.28\n },\n {\n \"x\": -0.61,\n \"y\": -0.28\n },\n {\n \"x\": -0.6,\n \"y\": -0.32\n },\n {\n \"x\": -0.58,\n \"y\": -0.34\n },\n {\n \"x\": -0.57,\n \"y\": -0.35\n },\n {\n \"x\": -0.56,\n \"y\": -0.35\n },\n {\n \"x\": -0.53,\n \"y\": -0.34\n },\n {\n \"x\": -0.52,\n \"y\": -0.32\n },\n {\n \"x\": -0.51,\n \"y\": -0.28\n },\n {\n \"x\": -0.51,\n \"y\": 0.28\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"usb_vertical\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": -0.4\n },\n {\n \"x\": 0.1,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"usb_left_branch\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": -0.1\n },\n {\n \"x\": -0.03,\n \"y\": 0.05\n },\n {\n \"x\": -0.03,\n \"y\": 0.15\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"usb_right_branch\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0\n },\n {\n \"x\": 0.25,\n \"y\": 0.15\n },\n {\n \"x\": 0.25,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"usb_arrow\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.05,\n \"y\": 0.4\n },\n {\n \"x\": 0.1,\n \"y\": 0.5\n },\n {\n \"x\": 0.15,\n \"y\": 0.4\n },\n {\n \"x\": 0.05,\n \"y\": 0.4\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n },\n \"usb_square\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.2,\n \"y\": 0.25\n },\n {\n \"x\": 0.3,\n \"y\": 0.25\n },\n {\n \"x\": 0.3,\n \"y\": 0.35\n },\n {\n \"x\": 0.2,\n \"y\": 0.35\n },\n {\n \"x\": 0.2,\n \"y\": 0.25\n }\n ],\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"circles\": {\n \"usb_base\": {\n \"type\": \"circle\",\n \"x\": 0.1,\n \"y\": -0.4,\n \"radius\": 0.07,\n \"color\": \"primary\",\n \"fill\": true\n },\n \"usb_tip_circle\": {\n \"type\": \"circle\",\n \"x\": -0.03,\n \"y\": 0.15,\n \"radius\": 0.04,\n \"color\": \"primary\",\n \"fill\": true\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.25,\n \"y\": 0.7\n }\n },\n \"refblocks\": {},\n \"bounds\": {\n \"minX\": -0.75,\n \"maxX\": 0.35,\n \"minY\": -0.6,\n \"maxY\": 0.75,\n \"width\": 1.1,\n \"height\": 1.35,\n \"centerX\": -0.2,\n \"centerY\": 0.08\n }\n}","import svgJson from \"assets/generated/usbc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.43\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Var\",\n \"x\": -0.19,\n \"y\": 0.07\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.01,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/var_meter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n ...texts.top1,\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n ...texts.bottom1,\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, x: -0.02, y: 0.01, fontSize: 0.2, anchor: \"center\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport var_meter_horz from \"./var_meter_horz\"\n\nexport default rotateSymbol(var_meter_horz)\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.08,\n \"y\": 0.04\n },\n {\n \"x\": -0.18,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18,\n \"y\": 0.18\n },\n {\n \"x\": 0.08,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.18,\n \"y\": -0.09\n },\n {\n \"x\": -0.18,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.09,\n \"y\": 0.17\n },\n {\n \"x\": 0.1,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.2,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.21,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0.17\n },\n {\n \"x\": 0.19,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/varactor_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport varactor_diode_horz from \"./varactor_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(varactor_diode_horz)\n\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","{\n \"paths\": {\n \"path5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.26,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0.01\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path7\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.27,\n \"y\": -0.23\n },\n {\n \"x\": -0.26,\n \"y\": 0.24\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.38,\n \"y\": -0.23\n },\n {\n \"x\": 0.27,\n \"y\": -0.23\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path9\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0,\n \"y\": 0.14\n },\n {\n \"x\": 0.27,\n \"y\": 0.14\n },\n {\n \"x\": 0.27,\n \"y\": -0.13\n },\n {\n \"x\": -0.26,\n \"y\": -0.13\n },\n {\n \"x\": -0.26,\n \"y\": 0.14\n },\n {\n \"x\": 0,\n \"y\": 0.14\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.06,\n \"y\": 0.25\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0.01,\n \"y\": -0.25\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.01\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.25,\n \"maxY\": 0.25,\n \"width\": 1.13,\n \"height\": 0.5,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import svgJson from \"assets/generated/varistor.json\"\nimport { defineSymbol } from \"drawing/defineSymbol\"\n\nconst { paths, texts, bounds, refblocks } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n { ...texts.top1, anchor: \"middle_left\" },\n { ...texts.bottom1, anchor: \"middle_right\" },\n ] as any,\n ports: [\n {\n ...refblocks.left1,\n labels: [\"1\", \"-\"],\n },\n {\n ...refblocks.right1,\n labels: [\"2\", \"+\"],\n },\n ],\n size: { width: bounds.width, height: bounds.height }, //{ width: 1, height: 0.24 },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport varistor_horz from \"./varistor_horz\"\n\nexport default rotateSymbol(varistor_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.43\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Var\",\n \"x\": 0,\n \"y\": -0.02\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.01,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/varmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, anchor: \"center\", y: 0.02, fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport varmeter_horz from \"./varmeter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = varmeter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...varmeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path28-2\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0\n },\n {\n \"x\": 0,\n \"y\": 0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path28-2-6\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0\n },\n {\n \"x\": 0,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path29-3\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.19,\n \"y\": 0\n },\n {\n \"x\": -0.23,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"right1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": 0.25,\n \"y\": 0\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.23,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.25,\n \"maxX\": 0.25,\n \"minY\": -0.09,\n \"maxY\": 0.09,\n \"width\": 0.5,\n \"height\": 0.19,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import type { SchSymbol } from \"./types\"\n\nexport function resizeSymbol(\n symbol: SchSymbol,\n newSize: { width?: number; height?: number },\n): SchSymbol {\n const { width: oldWidth, height: oldHeight } = symbol.size\n let scaleX = 1,\n scaleY = 1\n\n if (newSize.width !== undefined && newSize.height !== undefined) {\n scaleX = newSize.width / oldWidth\n scaleY = newSize.height / oldHeight\n } else if (newSize.width !== undefined) {\n scaleX = scaleY = newSize.width / oldWidth\n } else if (newSize.height !== undefined) {\n scaleX = scaleY = newSize.height / oldHeight\n }\n\n const resizedPrimitives = symbol.primitives.map((primitive) => {\n switch (primitive.type) {\n case \"path\":\n return {\n ...primitive,\n points: primitive.points.map((p) => ({\n x: p.x * scaleX,\n y: p.y * scaleY,\n })),\n }\n case \"text\":\n return {\n ...primitive,\n x: primitive.x * scaleX,\n y: primitive.y * scaleY,\n fontSize: primitive.fontSize\n ? primitive.fontSize * scaleX\n : undefined,\n }\n case \"circle\":\n return {\n ...primitive,\n x: primitive.x * scaleX,\n y: primitive.y * scaleY,\n radius: primitive.radius * scaleX,\n }\n case \"box\":\n return {\n ...primitive,\n x: primitive.x * scaleX,\n y: primitive.y * scaleY,\n width: primitive.width * scaleX,\n height: primitive.height * scaleY,\n }\n default:\n return primitive\n }\n })\n\n return {\n ...symbol,\n primitives: resizedPrimitives,\n center: {\n x: symbol.center.x * scaleX,\n y: symbol.center.y * scaleY,\n },\n ports: symbol.ports.map((port) => ({\n ...port,\n x: port.x * scaleX,\n y: port.y * scaleY,\n })),\n size: {\n width: oldWidth * scaleX,\n height: oldHeight * scaleY,\n },\n }\n}\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\nimport { resizeSymbol } from \"drawing/resizeSymbol\"\n\nconst symbol = modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"down\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_top\")\n .build()\n\nexport default resizeSymbol(symbol, { width: 0.24, height: 0.23 })\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\nimport { resizeSymbol } from \"drawing/resizeSymbol\"\n\nconst symbol = modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"left\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_right\")\n .build()\n\nexport default resizeSymbol(symbol, { width: 0.23, height: 0.24 })\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\nimport { resizeSymbol } from \"drawing/resizeSymbol\"\n\nconst symbol = modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"right\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_left\")\n .build()\n\nexport default resizeSymbol(symbol, { width: 0.23, height: 0.24 })\n","import svgJson from \"../assets/generated/vcc.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\nimport { resizeSymbol } from \"drawing/resizeSymbol\"\n\nconst symbol = modifySymbol(svgJson)\n .rotateRightFacingSymbol(\"up\")\n .labelPort(\"left1\", [\"1\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n\nexport default resizeSymbol(symbol, { width: 0.24, height: 0.23 })\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0.03\n },\n {\n \"x\": -0.3,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path11-5-5\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.1,\n \"y\": 0.13\n },\n {\n \"x\": 0,\n \"y\": -0.06\n },\n {\n \"x\": -0.11,\n \"y\": 0.13\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0.03\n },\n {\n \"x\": 0.54,\n \"y\": 0.03\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.02,\n \"y\": 0.4\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": -0.4\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0.03\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0.03\n }\n },\n \"bounds\": {\n \"minX\": -0.57,\n \"maxX\": 0.57,\n \"minY\": -0.4,\n \"maxY\": 0.4,\n \"width\": 1.14,\n \"height\": 0.8,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": 0,\n \"y\": 0.04,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import svgJson from \"assets/generated/volt_meter.json\"\nimport { modifySymbol } from \"drawing/modify-symbol/modify-symbol\"\n\nconst { paths, texts, bounds, circles, refblocks } = svgJson\nexport default modifySymbol(svgJson)\n .changeTextAnchor(\"{VAL}\", \"middle_top\")\n .labelPort(\"left1\", [\"1\"])\n .labelPort(\"right1\", [\"2\"])\n .changeTextAnchor(\"{REF}\", \"middle_bottom\")\n .build()\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport volt_meter_horz from \"./volt_meter_horz\"\n\nexport default rotateSymbol(volt_meter_horz)\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.43\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"Wh\",\n \"x\": 0,\n \"y\": -0.02\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.01,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/watt_hour_meter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, anchor: \"center\", y: 0.01, fontSize: 0.2 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport watt_hour_meter_horz from \"./watt_hour_meter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = watt_hour_meter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...watt_hour_meter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path11\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.54,\n \"y\": 0\n },\n {\n \"x\": -0.3,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path12\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.29,\n \"y\": 0\n },\n {\n \"x\": 0.54,\n \"y\": 0\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.18,\n \"y\": -0.36\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": -0.01,\n \"y\": 0.43\n },\n \"left1\": {\n \"type\": \"text\",\n \"text\": \"W\",\n \"x\": 0,\n \"y\": -0.02\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.54,\n \"y\": 0\n },\n \"right1\": {\n \"x\": 0.54,\n \"y\": 0\n }\n },\n \"bounds\": {\n \"minX\": -0.53,\n \"maxX\": 0.53,\n \"minY\": 0,\n \"maxY\": 0,\n \"width\": 1.06,\n \"height\": 1,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {\n \"path1\": {\n \"type\": \"circle\",\n \"x\": -0.01,\n \"y\": -0.01,\n \"radius\": 0.29,\n \"color\": \"primary\",\n \"fill\": false\n }\n }\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/wattmeter.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n {\n type: \"text\",\n text: \"{REF}\",\n x: 0,\n y: -0.3594553499999995,\n anchor: \"middle_top\",\n },\n {\n type: \"text\",\n text: \"{VAL}\",\n x: 0,\n y: 0.35,\n anchor: \"middle_bottom\",\n },\n { ...texts.left1, anchor: \"center\", y: 0.01, fontSize: 0.3 },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport wattmeter_horz from \"./wattmeter_horz\"\nimport { Primitive } from \"drawing/types\"\n\nconst { 5: letter, ...rest } = wattmeter_horz.primitives\n\nfunction isPrimitive(value: any): value is Primitive {\n return typeof value === \"object\"\n}\n\nconst rotatedSymbol = rotateSymbol({\n ...wattmeter_horz,\n primitives: Object.values(rest).filter(isPrimitive),\n})\n\nexport default {\n ...rotatedSymbol,\n primitives: [...rotatedSymbol.primitives, letter],\n}\n","{\n \"paths\": {\n \"path40\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.04\n },\n {\n \"x\": -0.12,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path41\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path42\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": -0.09\n },\n {\n \"x\": -0.12,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.14,\n \"y\": -0.09\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": -0.12,\n \"y\": 0.04\n },\n {\n \"x\": -0.52,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path44-0\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.52,\n \"y\": 0.04\n },\n {\n \"x\": 0.15,\n \"y\": 0.04\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n },\n \"path43-8\": {\n \"type\": \"path\",\n \"points\": [\n {\n \"x\": 0.14,\n \"y\": 0.18\n },\n {\n \"x\": 0.08,\n \"y\": 0.18\n }\n ],\n \"color\": \"primary\",\n \"fill\": false\n }\n },\n \"texts\": {\n \"top1\": {\n \"type\": \"text\",\n \"text\": \"{REF}\",\n \"x\": -0.01,\n \"y\": 0.27\n },\n \"bottom1\": {\n \"type\": \"text\",\n \"text\": \"{VAL}\",\n \"x\": 0,\n \"y\": -0.27\n }\n },\n \"refblocks\": {\n \"left1\": {\n \"x\": -0.52,\n \"y\": 0.04\n },\n \"right1\": {\n \"x\": 0.52,\n \"y\": 0.04\n }\n },\n \"bounds\": {\n \"minX\": -0.55,\n \"maxX\": 0.55,\n \"minY\": -0.27,\n \"maxY\": 0.27,\n \"width\": 1.09,\n \"height\": 0.55,\n \"centerX\": 0,\n \"centerY\": 0\n },\n \"circles\": {}\n}","import { defineSymbol } from \"drawing/defineSymbol\"\nimport svgJson from \"assets/generated/zener_diode.json\"\n\nconst { paths, texts, bounds, refblocks, circles } = svgJson\n\nexport default defineSymbol({\n primitives: [\n ...Object.values(paths),\n ...Object.values(circles),\n { ...texts.top1, anchor: \"middle_bottom\" },\n { ...texts.bottom1, anchor: \"middle_top\" },\n ] as any,\n ports: [\n { ...refblocks.left1, labels: [\"1\"] }, // TODO add more \"standard\" labels\n { ...refblocks.right1, labels: [\"2\"] }, // TODO add more \"standard\" labels\n ],\n size: { width: bounds.width, height: bounds.height },\n center: { x: bounds.centerX, y: bounds.centerY },\n})\n","import { rotateSymbol } from \"drawing/rotateSymbol\"\nimport zener_diode_horz from \"./zener_diode_horz\"\n\nimport type { TextPrimitive } from \"drawing\"\n\nconst rotated = rotateSymbol(zener_diode_horz)\nconst ref = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{REF}\",\n)! as TextPrimitive\nconst val = rotated.primitives.find(\n (p) => p.type === \"text\" && p.text === \"{VAL}\",\n)! as TextPrimitive\n\nref.anchor = \"middle_left\"\nval.anchor = \"middle_right\"\n\nexport default rotated\n","import _ac_voltmeter_down from \"./../symbols/ac_voltmeter_down\"\nimport _ac_voltmeter_horz from \"./../symbols/ac_voltmeter_horz\"\nimport _ac_voltmeter_left from \"./../symbols/ac_voltmeter_left\"\nimport _ac_voltmeter_right from \"./../symbols/ac_voltmeter_right\"\nimport _ac_voltmeter_up from \"./../symbols/ac_voltmeter_up\"\nimport _ac_voltmeter_vert from \"./../symbols/ac_voltmeter_vert\"\nimport _avalanche_diode_down from \"./../symbols/avalanche_diode_down\"\nimport _avalanche_diode_horz from \"./../symbols/avalanche_diode_horz\"\nimport _avalanche_diode_left from \"./../symbols/avalanche_diode_left\"\nimport _avalanche_diode_right from \"./../symbols/avalanche_diode_right\"\nimport _avalanche_diode_up from \"./../symbols/avalanche_diode_up\"\nimport _avalanche_diode_vert from \"./../symbols/avalanche_diode_vert\"\nimport _backward_diode_down from \"./../symbols/backward_diode_down\"\nimport _backward_diode_left from \"./../symbols/backward_diode_left\"\nimport _backward_diode_right from \"./../symbols/backward_diode_right\"\nimport _backward_diode_up from \"./../symbols/backward_diode_up\"\nimport _battery_horz from \"./../symbols/battery_horz\"\nimport _battery_vert from \"./../symbols/battery_vert\"\nimport _boxresistor_down from \"./../symbols/boxresistor_down\"\nimport _boxresistor_left from \"./../symbols/boxresistor_left\"\nimport _boxresistor_right from \"./../symbols/boxresistor_right\"\nimport _boxresistor_small_down from \"./../symbols/boxresistor_small_down\"\nimport _boxresistor_small_left from \"./../symbols/boxresistor_small_left\"\nimport _boxresistor_small_right from \"./../symbols/boxresistor_small_right\"\nimport _boxresistor_small_up from \"./../symbols/boxresistor_small_up\"\nimport _boxresistor_up from \"./../symbols/boxresistor_up\"\nimport _bridged_ground_down from \"./../symbols/bridged_ground_down\"\nimport _bridged_ground_left from \"./../symbols/bridged_ground_left\"\nimport _bridged_ground_right from \"./../symbols/bridged_ground_right\"\nimport _bridged_ground_up from \"./../symbols/bridged_ground_up\"\nimport _capacitor_down from \"./../symbols/capacitor_down\"\nimport _capacitor_left from \"./../symbols/capacitor_left\"\nimport _capacitor_polarized_down from \"./../symbols/capacitor_polarized_down\"\nimport _capacitor_polarized_left from \"./../symbols/capacitor_polarized_left\"\nimport _capacitor_polarized_right from \"./../symbols/capacitor_polarized_right\"\nimport _capacitor_polarized_up from \"./../symbols/capacitor_polarized_up\"\nimport _capacitor_right from \"./../symbols/capacitor_right\"\nimport _capacitor_up from \"./../symbols/capacitor_up\"\nimport _constant_current_diode_down from \"./../symbols/constant_current_diode_down\"\nimport _constant_current_diode_horz from \"./../symbols/constant_current_diode_horz\"\nimport _constant_current_diode_left from \"./../symbols/constant_current_diode_left\"\nimport _constant_current_diode_right from \"./../symbols/constant_current_diode_right\"\nimport _constant_current_diode_up from \"./../symbols/constant_current_diode_up\"\nimport _constant_current_diode_vert from \"./../symbols/constant_current_diode_vert\"\nimport _crystal_4pin_down from \"./../symbols/crystal_4pin_down\"\nimport _crystal_4pin_left from \"./../symbols/crystal_4pin_left\"\nimport _crystal_4pin_right from \"./../symbols/crystal_4pin_right\"\nimport _crystal_4pin_up from \"./../symbols/crystal_4pin_up\"\nimport _crystal_down from \"./../symbols/crystal_down\"\nimport _crystal_left from \"./../symbols/crystal_left\"\nimport _crystal_right from \"./../symbols/crystal_right\"\nimport _crystal_up from \"./../symbols/crystal_up\"\nimport _darlington_pair_transistor_down from \"./../symbols/darlington_pair_transistor_down\"\nimport _darlington_pair_transistor_horz from \"./../symbols/darlington_pair_transistor_horz\"\nimport _darlington_pair_transistor_left from \"./../symbols/darlington_pair_transistor_left\"\nimport _darlington_pair_transistor_right from \"./../symbols/darlington_pair_transistor_right\"\nimport _darlington_pair_transistor_up from \"./../symbols/darlington_pair_transistor_up\"\nimport _darlington_pair_transistor_vert from \"./../symbols/darlington_pair_transistor_vert\"\nimport _dc_ammeter_horz from \"./../symbols/dc_ammeter_horz\"\nimport _dc_ammeter_vert from \"./../symbols/dc_ammeter_vert\"\nimport _dc_voltmeter_down from \"./../symbols/dc_voltmeter_down\"\nimport _dc_voltmeter_horz from \"./../symbols/dc_voltmeter_horz\"\nimport _dc_voltmeter_left from \"./../symbols/dc_voltmeter_left\"\nimport _dc_voltmeter_right from \"./../symbols/dc_voltmeter_right\"\nimport _dc_voltmeter_up from \"./../symbols/dc_voltmeter_up\"\nimport _dc_voltmeter_vert from \"./../symbols/dc_voltmeter_vert\"\nimport _diac_down from \"./../symbols/diac_down\"\nimport _diac_horz from \"./../symbols/diac_horz\"\nimport _diac_left from \"./../symbols/diac_left\"\nimport _diac_right from \"./../symbols/diac_right\"\nimport _diac_up from \"./../symbols/diac_up\"\nimport _diac_vert from \"./../symbols/diac_vert\"\nimport _digital_ground_down from \"./../symbols/digital_ground_down\"\nimport _digital_ground_left from \"./../symbols/digital_ground_left\"\nimport _digital_ground_right from \"./../symbols/digital_ground_right\"\nimport _digital_ground_up from \"./../symbols/digital_ground_up\"\nimport _diode_down from \"./../symbols/diode_down\"\nimport _diode_left from \"./../symbols/diode_left\"\nimport _diode_right from \"./../symbols/diode_right\"\nimport _diode_up from \"./../symbols/diode_up\"\nimport _dpdt_normally_closed_switch_down from \"./../symbols/dpdt_normally_closed_switch_down\"\nimport _dpdt_normally_closed_switch_left from \"./../symbols/dpdt_normally_closed_switch_left\"\nimport _dpdt_normally_closed_switch_right from \"./../symbols/dpdt_normally_closed_switch_right\"\nimport _dpdt_normally_closed_switch_up from \"./../symbols/dpdt_normally_closed_switch_up\"\nimport _dpdt_switch_down from \"./../symbols/dpdt_switch_down\"\nimport _dpdt_switch_left from \"./../symbols/dpdt_switch_left\"\nimport _dpdt_switch_right from \"./../symbols/dpdt_switch_right\"\nimport _dpdt_switch_up from \"./../symbols/dpdt_switch_up\"\nimport _dpst_normally_closed_switch_down from \"./../symbols/dpst_normally_closed_switch_down\"\nimport _dpst_normally_closed_switch_left from \"./../symbols/dpst_normally_closed_switch_left\"\nimport _dpst_normally_closed_switch_right from \"./../symbols/dpst_normally_closed_switch_right\"\nimport _dpst_normally_closed_switch_up from \"./../symbols/dpst_normally_closed_switch_up\"\nimport _dpst_switch_down from \"./../symbols/dpst_switch_down\"\nimport _dpst_switch_left from \"./../symbols/dpst_switch_left\"\nimport _dpst_switch_right from \"./../symbols/dpst_switch_right\"\nimport _dpst_switch_up from \"./../symbols/dpst_switch_up\"\nimport _ferrite_bead_down from \"./../symbols/ferrite_bead_down\"\nimport _ferrite_bead_left from \"./../symbols/ferrite_bead_left\"\nimport _ferrite_bead_right from \"./../symbols/ferrite_bead_right\"\nimport _ferrite_bead_up from \"./../symbols/ferrite_bead_up\"\nimport _filled_diode_down from \"./../symbols/filled_diode_down\"\nimport _filled_diode_horz from \"./../symbols/filled_diode_horz\"\nimport _filled_diode_left from \"./../symbols/filled_diode_left\"\nimport _filled_diode_right from \"./../symbols/filled_diode_right\"\nimport _filled_diode_up from \"./../symbols/filled_diode_up\"\nimport _filled_diode_vert from \"./../symbols/filled_diode_vert\"\nimport _frequency_meter_horz from \"./../symbols/frequency_meter_horz\"\nimport _frequency_meter_vert from \"./../symbols/frequency_meter_vert\"\nimport _fuse_horz from \"./../symbols/fuse_horz\"\nimport _fuse_vert from \"./../symbols/fuse_vert\"\nimport _ground_down from \"./../symbols/ground_down\"\nimport _ground_horz from \"./../symbols/ground_horz\"\nimport _ground_left from \"./../symbols/ground_left\"\nimport _ground_right from \"./../symbols/ground_right\"\nimport _ground_up from \"./../symbols/ground_up\"\nimport _ground_vert from \"./../symbols/ground_vert\"\nimport _gunn_diode_horz from \"./../symbols/gunn_diode_horz\"\nimport _gunn_diode_vert from \"./../symbols/gunn_diode_vert\"\nimport _icled_down from \"./../symbols/icled_down\"\nimport _icled_left from \"./../symbols/icled_left\"\nimport _icled_right from \"./../symbols/icled_right\"\nimport _icled_up from \"./../symbols/icled_up\"\nimport _igbt_transistor_horz from \"./../symbols/igbt_transistor_horz\"\nimport _igbt_transistor_vert from \"./../symbols/igbt_transistor_vert\"\nimport _illuminated_push_button_normally_open_horz from \"./../symbols/illuminated_push_button_normally_open_horz\"\nimport _illuminated_push_button_normally_open_vert from \"./../symbols/illuminated_push_button_normally_open_vert\"\nimport _inductor_down from \"./../symbols/inductor_down\"\nimport _inductor_left from \"./../symbols/inductor_left\"\nimport _inductor_right from \"./../symbols/inductor_right\"\nimport _inductor_up from \"./../symbols/inductor_up\"\nimport _laser_diode_down from \"./../symbols/laser_diode_down\"\nimport _laser_diode_left from \"./../symbols/laser_diode_left\"\nimport _laser_diode_right from \"./../symbols/laser_diode_right\"\nimport _laser_diode_up from \"./../symbols/laser_diode_up\"\nimport _led_down from \"./../symbols/led_down\"\nimport _led_left from \"./../symbols/led_left\"\nimport _led_right from \"./../symbols/led_right\"\nimport _led_up from \"./../symbols/led_up\"\nimport _light_dependent_resistor_horz from \"./../symbols/light_dependent_resistor_horz\"\nimport _light_dependent_resistor_vert from \"./../symbols/light_dependent_resistor_vert\"\nimport _mosfet_depletion_normally_on_horz from \"./../symbols/mosfet_depletion_normally_on_horz\"\nimport _mosfet_depletion_normally_on_vert from \"./../symbols/mosfet_depletion_normally_on_vert\"\nimport _mushroom_head_normally_open_momentary_horz from \"./../symbols/mushroom_head_normally_open_momentary_horz\"\nimport _mushroom_head_normally_open_momentary_vert from \"./../symbols/mushroom_head_normally_open_momentary_vert\"\nimport _n_channel_d_mosfet_transistor_horz from \"./../symbols/n_channel_d_mosfet_transistor_horz\"\nimport _n_channel_d_mosfet_transistor_vert from \"./../symbols/n_channel_d_mosfet_transistor_vert\"\nimport _n_channel_e_mosfet_transistor_horz from \"./../symbols/n_channel_e_mosfet_transistor_horz\"\nimport _n_channel_e_mosfet_transistor_vert from \"./../symbols/n_channel_e_mosfet_transistor_vert\"\nimport _njfet_transistor_horz from \"./../symbols/njfet_transistor_horz\"\nimport _njfet_transistor_vert from \"./../symbols/njfet_transistor_vert\"\nimport _not_connected_down from \"./../symbols/not_connected_down\"\nimport _not_connected_left from \"./../symbols/not_connected_left\"\nimport _not_connected_right from \"./../symbols/not_connected_right\"\nimport _not_connected_up from \"./../symbols/not_connected_up\"\nimport _npn_bipolar_transistor_down from \"./../symbols/npn_bipolar_transistor_down\"\nimport _npn_bipolar_transistor_horz from \"./../symbols/npn_bipolar_transistor_horz\"\nimport _npn_bipolar_transistor_left from \"./../symbols/npn_bipolar_transistor_left\"\nimport _npn_bipolar_transistor_right from \"./../symbols/npn_bipolar_transistor_right\"\nimport _npn_bipolar_transistor_up from \"./../symbols/npn_bipolar_transistor_up\"\nimport _npn_bipolar_transistor_vert from \"./../symbols/npn_bipolar_transistor_vert\"\nimport _opamp_no_power_down from \"./../symbols/opamp_no_power_down\"\nimport _opamp_no_power_left from \"./../symbols/opamp_no_power_left\"\nimport _opamp_no_power_right from \"./../symbols/opamp_no_power_right\"\nimport _opamp_no_power_up from \"./../symbols/opamp_no_power_up\"\nimport _opamp_with_power_down from \"./../symbols/opamp_with_power_down\"\nimport _opamp_with_power_left from \"./../symbols/opamp_with_power_left\"\nimport _opamp_with_power_right from \"./../symbols/opamp_with_power_right\"\nimport _opamp_with_power_up from \"./../symbols/opamp_with_power_up\"\nimport _p_channel_d_mosfet_transistor_horz from \"./../symbols/p_channel_d_mosfet_transistor_horz\"\nimport _p_channel_d_mosfet_transistor_vert from \"./../symbols/p_channel_d_mosfet_transistor_vert\"\nimport _p_channel_e_mosfet_transistor_horz from \"./../symbols/p_channel_e_mosfet_transistor_horz\"\nimport _p_channel_e_mosfet_transistor_vert from \"./../symbols/p_channel_e_mosfet_transistor_vert\"\nimport _photodiode_horz from \"./../symbols/photodiode_horz\"\nimport _photodiode_vert from \"./../symbols/photodiode_vert\"\nimport _pjfet_transistor_horz from \"./../symbols/pjfet_transistor_horz\"\nimport _pjfet_transistor_vert from \"./../symbols/pjfet_transistor_vert\"\nimport _pnp_bipolar_transistor_down from \"./../symbols/pnp_bipolar_transistor_down\"\nimport _pnp_bipolar_transistor_horz from \"./../symbols/pnp_bipolar_transistor_horz\"\nimport _pnp_bipolar_transistor_left from \"./../symbols/pnp_bipolar_transistor_left\"\nimport _pnp_bipolar_transistor_right from \"./../symbols/pnp_bipolar_transistor_right\"\nimport _pnp_bipolar_transistor_up from \"./../symbols/pnp_bipolar_transistor_up\"\nimport _pnp_bipolar_transistor_vert from \"./../symbols/pnp_bipolar_transistor_vert\"\nimport _potentiometer_horz from \"./../symbols/potentiometer_horz\"\nimport _potentiometer_vert from \"./../symbols/potentiometer_vert\"\nimport _potentiometer2_down from \"./../symbols/potentiometer2_down\"\nimport _potentiometer2_left from \"./../symbols/potentiometer2_left\"\nimport _potentiometer2_right from \"./../symbols/potentiometer2_right\"\nimport _potentiometer2_up from \"./../symbols/potentiometer2_up\"\nimport _potentiometer3_down from \"./../symbols/potentiometer3_down\"\nimport _potentiometer3_left from \"./../symbols/potentiometer3_left\"\nimport _potentiometer3_right from \"./../symbols/potentiometer3_right\"\nimport _potentiometer3_up from \"./../symbols/potentiometer3_up\"\nimport _power_factor_meter_horz from \"./../symbols/power_factor_meter_horz\"\nimport _power_factor_meter_vert from \"./../symbols/power_factor_meter_vert\"\nimport _push_button_normally_closed_momentary_horz from \"./../symbols/push_button_normally_closed_momentary_horz\"\nimport _push_button_normally_closed_momentary_vert from \"./../symbols/push_button_normally_closed_momentary_vert\"\nimport _push_button_normally_open_momentary_horz from \"./../symbols/push_button_normally_open_momentary_horz\"\nimport _push_button_normally_open_momentary_vert from \"./../symbols/push_button_normally_open_momentary_vert\"\nimport _rail_down from \"./../symbols/rail_down\"\nimport _rail_left from \"./../symbols/rail_left\"\nimport _rail_right from \"./../symbols/rail_right\"\nimport _rail_up from \"./../symbols/rail_up\"\nimport _rectifier_diode_horz from \"./../symbols/rectifier_diode_horz\"\nimport _rectifier_diode_vert from \"./../symbols/rectifier_diode_vert\"\nimport _resistor_down from \"./../symbols/resistor_down\"\nimport _resistor_left from \"./../symbols/resistor_left\"\nimport _resistor_right from \"./../symbols/resistor_right\"\nimport _resistor_up from \"./../symbols/resistor_up\"\nimport _resonator_down from \"./../symbols/resonator_down\"\nimport _resonator_horz from \"./../symbols/resonator_horz\"\nimport _resonator_left from \"./../symbols/resonator_left\"\nimport _resonator_right from \"./../symbols/resonator_right\"\nimport _resonator_up from \"./../symbols/resonator_up\"\nimport _resonator_vert from \"./../symbols/resonator_vert\"\nimport _schottky_diode_down from \"./../symbols/schottky_diode_down\"\nimport _schottky_diode_left from \"./../symbols/schottky_diode_left\"\nimport _schottky_diode_right from \"./../symbols/schottky_diode_right\"\nimport _schottky_diode_up from \"./../symbols/schottky_diode_up\"\nimport _silicon_controlled_rectifier_horz from \"./../symbols/silicon_controlled_rectifier_horz\"\nimport _silicon_controlled_rectifier_vert from \"./../symbols/silicon_controlled_rectifier_vert\"\nimport _solderjumper2_bridged12_down from \"./../symbols/solderjumper2_bridged12_down\"\nimport _solderjumper2_bridged12_left from \"./../symbols/solderjumper2_bridged12_left\"\nimport _solderjumper2_bridged12_right from \"./../symbols/solderjumper2_bridged12_right\"\nimport _solderjumper2_bridged12_up from \"./../symbols/solderjumper2_bridged12_up\"\nimport _solderjumper2_down from \"./../symbols/solderjumper2_down\"\nimport _solderjumper2_left from \"./../symbols/solderjumper2_left\"\nimport _solderjumper2_right from \"./../symbols/solderjumper2_right\"\nimport _solderjumper2_up from \"./../symbols/solderjumper2_up\"\nimport _solderjumper3_bridged12_down from \"./../symbols/solderjumper3_bridged12_down\"\nimport _solderjumper3_bridged12_left from \"./../symbols/solderjumper3_bridged12_left\"\nimport _solderjumper3_bridged12_right from \"./../symbols/solderjumper3_bridged12_right\"\nimport _solderjumper3_bridged12_up from \"./../symbols/solderjumper3_bridged12_up\"\nimport _solderjumper3_bridged123_down from \"./../symbols/solderjumper3_bridged123_down\"\nimport _solderjumper3_bridged123_left from \"./../symbols/solderjumper3_bridged123_left\"\nimport _solderjumper3_bridged123_right from \"./../symbols/solderjumper3_bridged123_right\"\nimport _solderjumper3_bridged123_up from \"./../symbols/solderjumper3_bridged123_up\"\nimport _solderjumper3_bridged23_down from \"./../symbols/solderjumper3_bridged23_down\"\nimport _solderjumper3_bridged23_left from \"./../symbols/solderjumper3_bridged23_left\"\nimport _solderjumper3_bridged23_right from \"./../symbols/solderjumper3_bridged23_right\"\nimport _solderjumper3_bridged23_up from \"./../symbols/solderjumper3_bridged23_up\"\nimport _solderjumper3_down from \"./../symbols/solderjumper3_down\"\nimport _solderjumper3_left from \"./../symbols/solderjumper3_left\"\nimport _solderjumper3_right from \"./../symbols/solderjumper3_right\"\nimport _solderjumper3_up from \"./../symbols/solderjumper3_up\"\nimport _spdt_normally_closed_switch_down from \"./../symbols/spdt_normally_closed_switch_down\"\nimport _spdt_normally_closed_switch_left from \"./../symbols/spdt_normally_closed_switch_left\"\nimport _spdt_normally_closed_switch_right from \"./../symbols/spdt_normally_closed_switch_right\"\nimport _spdt_normally_closed_switch_up from \"./../symbols/spdt_normally_closed_switch_up\"\nimport _spdt_switch_down from \"./../symbols/spdt_switch_down\"\nimport _spdt_switch_left from \"./../symbols/spdt_switch_left\"\nimport _spdt_switch_right from \"./../symbols/spdt_switch_right\"\nimport _spdt_switch_up from \"./../symbols/spdt_switch_up\"\nimport _spst_normally_closed_switch_down from \"./../symbols/spst_normally_closed_switch_down\"\nimport _spst_normally_closed_switch_left from \"./../symbols/spst_normally_closed_switch_left\"\nimport _spst_normally_closed_switch_right from \"./../symbols/spst_normally_closed_switch_right\"\nimport _spst_normally_closed_switch_up from \"./../symbols/spst_normally_closed_switch_up\"\nimport _spst_switch_down from \"./../symbols/spst_switch_down\"\nimport _spst_switch_left from \"./../symbols/spst_switch_left\"\nimport _spst_switch_right from \"./../symbols/spst_switch_right\"\nimport _spst_switch_up from \"./../symbols/spst_switch_up\"\nimport _square_wave_down from \"./../symbols/square_wave_down\"\nimport _square_wave_left from \"./../symbols/square_wave_left\"\nimport _square_wave_right from \"./../symbols/square_wave_right\"\nimport _square_wave_up from \"./../symbols/square_wave_up\"\nimport _step_recovery_diode_horz from \"./../symbols/step_recovery_diode_horz\"\nimport _step_recovery_diode_vert from \"./../symbols/step_recovery_diode_vert\"\nimport _tachometer_horz from \"./../symbols/tachometer_horz\"\nimport _tachometer_vert from \"./../symbols/tachometer_vert\"\nimport _testpoint_down from \"./../symbols/testpoint_down\"\nimport _testpoint_left from \"./../symbols/testpoint_left\"\nimport _testpoint_right from \"./../symbols/testpoint_right\"\nimport _testpoint_up from \"./../symbols/testpoint_up\"\nimport _tilted_ground_down from \"./../symbols/tilted_ground_down\"\nimport _tilted_ground_left from \"./../symbols/tilted_ground_left\"\nimport _tilted_ground_right from \"./../symbols/tilted_ground_right\"\nimport _tilted_ground_up from \"./../symbols/tilted_ground_up\"\nimport _triac_horz from \"./../symbols/triac_horz\"\nimport _triac_vert from \"./../symbols/triac_vert\"\nimport _tunnel_diode_horz from \"./../symbols/tunnel_diode_horz\"\nimport _tunnel_diode_vert from \"./../symbols/tunnel_diode_vert\"\nimport _unijunction_transistor_horz from \"./../symbols/unijunction_transistor_horz\"\nimport _unijunction_transistor_vert from \"./../symbols/unijunction_transistor_vert\"\nimport _usbc from \"./../symbols/usbc\"\nimport _var_meter_horz from \"./../symbols/var_meter_horz\"\nimport _var_meter_vert from \"./../symbols/var_meter_vert\"\nimport _varactor_diode_horz from \"./../symbols/varactor_diode_horz\"\nimport _varactor_diode_vert from \"./../symbols/varactor_diode_vert\"\nimport _varistor_horz from \"./../symbols/varistor_horz\"\nimport _varistor_vert from \"./../symbols/varistor_vert\"\nimport _varmeter_horz from \"./../symbols/varmeter_horz\"\nimport _varmeter_vert from \"./../symbols/varmeter_vert\"\nimport _vcc_down from \"./../symbols/vcc_down\"\nimport _vcc_left from \"./../symbols/vcc_left\"\nimport _vcc_right from \"./../symbols/vcc_right\"\nimport _vcc_up from \"./../symbols/vcc_up\"\nimport _volt_meter_horz from \"./../symbols/volt_meter_horz\"\nimport _volt_meter_vert from \"./../symbols/volt_meter_vert\"\nimport _watt_hour_meter_horz from \"./../symbols/watt_hour_meter_horz\"\nimport _watt_hour_meter_vert from \"./../symbols/watt_hour_meter_vert\"\nimport _wattmeter_horz from \"./../symbols/wattmeter_horz\"\nimport _wattmeter_vert from \"./../symbols/wattmeter_vert\"\nimport _zener_diode_horz from \"./../symbols/zener_diode_horz\"\nimport _zener_diode_vert from \"./../symbols/zener_diode_vert\"\n\nexport default {\n \"ac_voltmeter_down\": _ac_voltmeter_down,\n \"ac_voltmeter_horz\": _ac_voltmeter_horz,\n \"ac_voltmeter_left\": _ac_voltmeter_left,\n \"ac_voltmeter_right\": _ac_voltmeter_right,\n \"ac_voltmeter_up\": _ac_voltmeter_up,\n \"ac_voltmeter_vert\": _ac_voltmeter_vert,\n \"avalanche_diode_down\": _avalanche_diode_down,\n \"avalanche_diode_horz\": _avalanche_diode_horz,\n \"avalanche_diode_left\": _avalanche_diode_left,\n \"avalanche_diode_right\": _avalanche_diode_right,\n \"avalanche_diode_up\": _avalanche_diode_up,\n \"avalanche_diode_vert\": _avalanche_diode_vert,\n \"backward_diode_down\": _backward_diode_down,\n \"backward_diode_left\": _backward_diode_left,\n \"backward_diode_right\": _backward_diode_right,\n \"backward_diode_up\": _backward_diode_up,\n \"battery_horz\": _battery_horz,\n \"battery_vert\": _battery_vert,\n \"boxresistor_down\": _boxresistor_down,\n \"boxresistor_left\": _boxresistor_left,\n \"boxresistor_right\": _boxresistor_right,\n \"boxresistor_small_down\": _boxresistor_small_down,\n \"boxresistor_small_left\": _boxresistor_small_left,\n \"boxresistor_small_right\": _boxresistor_small_right,\n \"boxresistor_small_up\": _boxresistor_small_up,\n \"boxresistor_up\": _boxresistor_up,\n \"bridged_ground_down\": _bridged_ground_down,\n \"bridged_ground_left\": _bridged_ground_left,\n \"bridged_ground_right\": _bridged_ground_right,\n \"bridged_ground_up\": _bridged_ground_up,\n \"capacitor_down\": _capacitor_down,\n \"capacitor_left\": _capacitor_left,\n \"capacitor_polarized_down\": _capacitor_polarized_down,\n \"capacitor_polarized_left\": _capacitor_polarized_left,\n \"capacitor_polarized_right\": _capacitor_polarized_right,\n \"capacitor_polarized_up\": _capacitor_polarized_up,\n \"capacitor_right\": _capacitor_right,\n \"capacitor_up\": _capacitor_up,\n \"constant_current_diode_down\": _constant_current_diode_down,\n \"constant_current_diode_horz\": _constant_current_diode_horz,\n \"constant_current_diode_left\": _constant_current_diode_left,\n \"constant_current_diode_right\": _constant_current_diode_right,\n \"constant_current_diode_up\": _constant_current_diode_up,\n \"constant_current_diode_vert\": _constant_current_diode_vert,\n \"crystal_4pin_down\": _crystal_4pin_down,\n \"crystal_4pin_left\": _crystal_4pin_left,\n \"crystal_4pin_right\": _crystal_4pin_right,\n \"crystal_4pin_up\": _crystal_4pin_up,\n \"crystal_down\": _crystal_down,\n \"crystal_left\": _crystal_left,\n \"crystal_right\": _crystal_right,\n \"crystal_up\": _crystal_up,\n \"darlington_pair_transistor_down\": _darlington_pair_transistor_down,\n \"darlington_pair_transistor_horz\": _darlington_pair_transistor_horz,\n \"darlington_pair_transistor_left\": _darlington_pair_transistor_left,\n \"darlington_pair_transistor_right\": _darlington_pair_transistor_right,\n \"darlington_pair_transistor_up\": _darlington_pair_transistor_up,\n \"darlington_pair_transistor_vert\": _darlington_pair_transistor_vert,\n \"dc_ammeter_horz\": _dc_ammeter_horz,\n \"dc_ammeter_vert\": _dc_ammeter_vert,\n \"dc_voltmeter_down\": _dc_voltmeter_down,\n \"dc_voltmeter_horz\": _dc_voltmeter_horz,\n \"dc_voltmeter_left\": _dc_voltmeter_left,\n \"dc_voltmeter_right\": _dc_voltmeter_right,\n \"dc_voltmeter_up\": _dc_voltmeter_up,\n \"dc_voltmeter_vert\": _dc_voltmeter_vert,\n \"diac_down\": _diac_down,\n \"diac_horz\": _diac_horz,\n \"diac_left\": _diac_left,\n \"diac_right\": _diac_right,\n \"diac_up\": _diac_up,\n \"diac_vert\": _diac_vert,\n \"digital_ground_down\": _digital_ground_down,\n \"digital_ground_left\": _digital_ground_left,\n \"digital_ground_right\": _digital_ground_right,\n \"digital_ground_up\": _digital_ground_up,\n \"diode_down\": _diode_down,\n \"diode_left\": _diode_left,\n \"diode_right\": _diode_right,\n \"diode_up\": _diode_up,\n \"dpdt_normally_closed_switch_down\": _dpdt_normally_closed_switch_down,\n \"dpdt_normally_closed_switch_left\": _dpdt_normally_closed_switch_left,\n \"dpdt_normally_closed_switch_right\": _dpdt_normally_closed_switch_right,\n \"dpdt_normally_closed_switch_up\": _dpdt_normally_closed_switch_up,\n \"dpdt_switch_down\": _dpdt_switch_down,\n \"dpdt_switch_left\": _dpdt_switch_left,\n \"dpdt_switch_right\": _dpdt_switch_right,\n \"dpdt_switch_up\": _dpdt_switch_up,\n \"dpst_normally_closed_switch_down\": _dpst_normally_closed_switch_down,\n \"dpst_normally_closed_switch_left\": _dpst_normally_closed_switch_left,\n \"dpst_normally_closed_switch_right\": _dpst_normally_closed_switch_right,\n \"dpst_normally_closed_switch_up\": _dpst_normally_closed_switch_up,\n \"dpst_switch_down\": _dpst_switch_down,\n \"dpst_switch_left\": _dpst_switch_left,\n \"dpst_switch_right\": _dpst_switch_right,\n \"dpst_switch_up\": _dpst_switch_up,\n \"ferrite_bead_down\": _ferrite_bead_down,\n \"ferrite_bead_left\": _ferrite_bead_left,\n \"ferrite_bead_right\": _ferrite_bead_right,\n \"ferrite_bead_up\": _ferrite_bead_up,\n \"filled_diode_down\": _filled_diode_down,\n \"filled_diode_horz\": _filled_diode_horz,\n \"filled_diode_left\": _filled_diode_left,\n \"filled_diode_right\": _filled_diode_right,\n \"filled_diode_up\": _filled_diode_up,\n \"filled_diode_vert\": _filled_diode_vert,\n \"frequency_meter_horz\": _frequency_meter_horz,\n \"frequency_meter_vert\": _frequency_meter_vert,\n \"fuse_horz\": _fuse_horz,\n \"fuse_vert\": _fuse_vert,\n \"ground_down\": _ground_down,\n \"ground_horz\": _ground_horz,\n \"ground_left\": _ground_left,\n \"ground_right\": _ground_right,\n \"ground_up\": _ground_up,\n \"ground_vert\": _ground_vert,\n \"gunn_diode_horz\": _gunn_diode_horz,\n \"gunn_diode_vert\": _gunn_diode_vert,\n \"icled_down\": _icled_down,\n \"icled_left\": _icled_left,\n \"icled_right\": _icled_right,\n \"icled_up\": _icled_up,\n \"igbt_transistor_horz\": _igbt_transistor_horz,\n \"igbt_transistor_vert\": _igbt_transistor_vert,\n \"illuminated_push_button_normally_open_horz\": _illuminated_push_button_normally_open_horz,\n \"illuminated_push_button_normally_open_vert\": _illuminated_push_button_normally_open_vert,\n \"inductor_down\": _inductor_down,\n \"inductor_left\": _inductor_left,\n \"inductor_right\": _inductor_right,\n \"inductor_up\": _inductor_up,\n \"laser_diode_down\": _laser_diode_down,\n \"laser_diode_left\": _laser_diode_left,\n \"laser_diode_right\": _laser_diode_right,\n \"laser_diode_up\": _laser_diode_up,\n \"led_down\": _led_down,\n \"led_left\": _led_left,\n \"led_right\": _led_right,\n \"led_up\": _led_up,\n \"light_dependent_resistor_horz\": _light_dependent_resistor_horz,\n \"light_dependent_resistor_vert\": _light_dependent_resistor_vert,\n \"mosfet_depletion_normally_on_horz\": _mosfet_depletion_normally_on_horz,\n \"mosfet_depletion_normally_on_vert\": _mosfet_depletion_normally_on_vert,\n \"mushroom_head_normally_open_momentary_horz\": _mushroom_head_normally_open_momentary_horz,\n \"mushroom_head_normally_open_momentary_vert\": _mushroom_head_normally_open_momentary_vert,\n \"n_channel_d_mosfet_transistor_horz\": _n_channel_d_mosfet_transistor_horz,\n \"n_channel_d_mosfet_transistor_vert\": _n_channel_d_mosfet_transistor_vert,\n \"n_channel_e_mosfet_transistor_horz\": _n_channel_e_mosfet_transistor_horz,\n \"n_channel_e_mosfet_transistor_vert\": _n_channel_e_mosfet_transistor_vert,\n \"njfet_transistor_horz\": _njfet_transistor_horz,\n \"njfet_transistor_vert\": _njfet_transistor_vert,\n \"not_connected_down\": _not_connected_down,\n \"not_connected_left\": _not_connected_left,\n \"not_connected_right\": _not_connected_right,\n \"not_connected_up\": _not_connected_up,\n \"npn_bipolar_transistor_down\": _npn_bipolar_transistor_down,\n \"npn_bipolar_transistor_horz\": _npn_bipolar_transistor_horz,\n \"npn_bipolar_transistor_left\": _npn_bipolar_transistor_left,\n \"npn_bipolar_transistor_right\": _npn_bipolar_transistor_right,\n \"npn_bipolar_transistor_up\": _npn_bipolar_transistor_up,\n \"npn_bipolar_transistor_vert\": _npn_bipolar_transistor_vert,\n \"opamp_no_power_down\": _opamp_no_power_down,\n \"opamp_no_power_left\": _opamp_no_power_left,\n \"opamp_no_power_right\": _opamp_no_power_right,\n \"opamp_no_power_up\": _opamp_no_power_up,\n \"opamp_with_power_down\": _opamp_with_power_down,\n \"opamp_with_power_left\": _opamp_with_power_left,\n \"opamp_with_power_right\": _opamp_with_power_right,\n \"opamp_with_power_up\": _opamp_with_power_up,\n \"p_channel_d_mosfet_transistor_horz\": _p_channel_d_mosfet_transistor_horz,\n \"p_channel_d_mosfet_transistor_vert\": _p_channel_d_mosfet_transistor_vert,\n \"p_channel_e_mosfet_transistor_horz\": _p_channel_e_mosfet_transistor_horz,\n \"p_channel_e_mosfet_transistor_vert\": _p_channel_e_mosfet_transistor_vert,\n \"photodiode_horz\": _photodiode_horz,\n \"photodiode_vert\": _photodiode_vert,\n \"pjfet_transistor_horz\": _pjfet_transistor_horz,\n \"pjfet_transistor_vert\": _pjfet_transistor_vert,\n \"pnp_bipolar_transistor_down\": _pnp_bipolar_transistor_down,\n \"pnp_bipolar_transistor_horz\": _pnp_bipolar_transistor_horz,\n \"pnp_bipolar_transistor_left\": _pnp_bipolar_transistor_left,\n \"pnp_bipolar_transistor_right\": _pnp_bipolar_transistor_right,\n \"pnp_bipolar_transistor_up\": _pnp_bipolar_transistor_up,\n \"pnp_bipolar_transistor_vert\": _pnp_bipolar_transistor_vert,\n \"potentiometer_horz\": _potentiometer_horz,\n \"potentiometer_vert\": _potentiometer_vert,\n \"potentiometer2_down\": _potentiometer2_down,\n \"potentiometer2_left\": _potentiometer2_left,\n \"potentiometer2_right\": _potentiometer2_right,\n \"potentiometer2_up\": _potentiometer2_up,\n \"potentiometer3_down\": _potentiometer3_down,\n \"potentiometer3_left\": _potentiometer3_left,\n \"potentiometer3_right\": _potentiometer3_right,\n \"potentiometer3_up\": _potentiometer3_up,\n \"power_factor_meter_horz\": _power_factor_meter_horz,\n \"power_factor_meter_vert\": _power_factor_meter_vert,\n \"push_button_normally_closed_momentary_horz\": _push_button_normally_closed_momentary_horz,\n \"push_button_normally_closed_momentary_vert\": _push_button_normally_closed_momentary_vert,\n \"push_button_normally_open_momentary_horz\": _push_button_normally_open_momentary_horz,\n \"push_button_normally_open_momentary_vert\": _push_button_normally_open_momentary_vert,\n \"rail_down\": _rail_down,\n \"rail_left\": _rail_left,\n \"rail_right\": _rail_right,\n \"rail_up\": _rail_up,\n \"rectifier_diode_horz\": _rectifier_diode_horz,\n \"rectifier_diode_vert\": _rectifier_diode_vert,\n \"resistor_down\": _resistor_down,\n \"resistor_left\": _resistor_left,\n \"resistor_right\": _resistor_right,\n \"resistor_up\": _resistor_up,\n \"resonator_down\": _resonator_down,\n \"resonator_horz\": _resonator_horz,\n \"resonator_left\": _resonator_left,\n \"resonator_right\": _resonator_right,\n \"resonator_up\": _resonator_up,\n \"resonator_vert\": _resonator_vert,\n \"schottky_diode_down\": _schottky_diode_down,\n \"schottky_diode_left\": _schottky_diode_left,\n \"schottky_diode_right\": _schottky_diode_right,\n \"schottky_diode_up\": _schottky_diode_up,\n \"silicon_controlled_rectifier_horz\": _silicon_controlled_rectifier_horz,\n \"silicon_controlled_rectifier_vert\": _silicon_controlled_rectifier_vert,\n \"solderjumper2_bridged12_down\": _solderjumper2_bridged12_down,\n \"solderjumper2_bridged12_left\": _solderjumper2_bridged12_left,\n \"solderjumper2_bridged12_right\": _solderjumper2_bridged12_right,\n \"solderjumper2_bridged12_up\": _solderjumper2_bridged12_up,\n \"solderjumper2_down\": _solderjumper2_down,\n \"solderjumper2_left\": _solderjumper2_left,\n \"solderjumper2_right\": _solderjumper2_right,\n \"solderjumper2_up\": _solderjumper2_up,\n \"solderjumper3_bridged12_down\": _solderjumper3_bridged12_down,\n \"solderjumper3_bridged12_left\": _solderjumper3_bridged12_left,\n \"solderjumper3_bridged12_right\": _solderjumper3_bridged12_right,\n \"solderjumper3_bridged12_up\": _solderjumper3_bridged12_up,\n \"solderjumper3_bridged123_down\": _solderjumper3_bridged123_down,\n \"solderjumper3_bridged123_left\": _solderjumper3_bridged123_left,\n \"solderjumper3_bridged123_right\": _solderjumper3_bridged123_right,\n \"solderjumper3_bridged123_up\": _solderjumper3_bridged123_up,\n \"solderjumper3_bridged23_down\": _solderjumper3_bridged23_down,\n \"solderjumper3_bridged23_left\": _solderjumper3_bridged23_left,\n \"solderjumper3_bridged23_right\": _solderjumper3_bridged23_right,\n \"solderjumper3_bridged23_up\": _solderjumper3_bridged23_up,\n \"solderjumper3_down\": _solderjumper3_down,\n \"solderjumper3_left\": _solderjumper3_left,\n \"solderjumper3_right\": _solderjumper3_right,\n \"solderjumper3_up\": _solderjumper3_up,\n \"spdt_normally_closed_switch_down\": _spdt_normally_closed_switch_down,\n \"spdt_normally_closed_switch_left\": _spdt_normally_closed_switch_left,\n \"spdt_normally_closed_switch_right\": _spdt_normally_closed_switch_right,\n \"spdt_normally_closed_switch_up\": _spdt_normally_closed_switch_up,\n \"spdt_switch_down\": _spdt_switch_down,\n \"spdt_switch_left\": _spdt_switch_left,\n \"spdt_switch_right\": _spdt_switch_right,\n \"spdt_switch_up\": _spdt_switch_up,\n \"spst_normally_closed_switch_down\": _spst_normally_closed_switch_down,\n \"spst_normally_closed_switch_left\": _spst_normally_closed_switch_left,\n \"spst_normally_closed_switch_right\": _spst_normally_closed_switch_right,\n \"spst_normally_closed_switch_up\": _spst_normally_closed_switch_up,\n \"spst_switch_down\": _spst_switch_down,\n \"spst_switch_left\": _spst_switch_left,\n \"spst_switch_right\": _spst_switch_right,\n \"spst_switch_up\": _spst_switch_up,\n \"square_wave_down\": _square_wave_down,\n \"square_wave_left\": _square_wave_left,\n \"square_wave_right\": _square_wave_right,\n \"square_wave_up\": _square_wave_up,\n \"step_recovery_diode_horz\": _step_recovery_diode_horz,\n \"step_recovery_diode_vert\": _step_recovery_diode_vert,\n \"tachometer_horz\": _tachometer_horz,\n \"tachometer_vert\": _tachometer_vert,\n \"testpoint_down\": _testpoint_down,\n \"testpoint_left\": _testpoint_left,\n \"testpoint_right\": _testpoint_right,\n \"testpoint_up\": _testpoint_up,\n \"tilted_ground_down\": _tilted_ground_down,\n \"tilted_ground_left\": _tilted_ground_left,\n \"tilted_ground_right\": _tilted_ground_right,\n \"tilted_ground_up\": _tilted_ground_up,\n \"triac_horz\": _triac_horz,\n \"triac_vert\": _triac_vert,\n \"tunnel_diode_horz\": _tunnel_diode_horz,\n \"tunnel_diode_vert\": _tunnel_diode_vert,\n \"unijunction_transistor_horz\": _unijunction_transistor_horz,\n \"unijunction_transistor_vert\": _unijunction_transistor_vert,\n \"usbc\": _usbc,\n \"var_meter_horz\": _var_meter_horz,\n \"var_meter_vert\": _var_meter_vert,\n \"varactor_diode_horz\": _varactor_diode_horz,\n \"varactor_diode_vert\": _varactor_diode_vert,\n \"varistor_horz\": _varistor_horz,\n \"varistor_vert\": _varistor_vert,\n \"varmeter_horz\": _varmeter_horz,\n \"varmeter_vert\": _varmeter_vert,\n \"vcc_down\": _vcc_down,\n \"vcc_left\": _vcc_left,\n \"vcc_right\": _vcc_right,\n \"vcc_up\": _vcc_up,\n \"volt_meter_horz\": _volt_meter_horz,\n \"volt_meter_vert\": _volt_meter_vert,\n \"watt_hour_meter_horz\": _watt_hour_meter_horz,\n \"watt_hour_meter_vert\": _watt_hour_meter_vert,\n \"wattmeter_horz\": _wattmeter_horz,\n \"wattmeter_vert\": _wattmeter_vert,\n \"zener_diode_horz\": _zener_diode_horz,\n \"zener_diode_vert\": _zener_diode_vert\n}","import { NinePointAnchor } from \"drawing/types\"\n\n/**\n * In Inkscape and Websites, Y-up is NEGATIVE- meaning e.g. y=10 is BELOW y=0.\n *\n * Our symbols are defined with Y-up POSITIVE, meaning e.g. y=10 is ABOVE y=0.\n *\n * This function helps flip y positions so that you can convert from schematic\n * symbol coordinates to SVG coordinates.\n */\nexport const makeYUpPositive = (y: number, yUpPositive: boolean = true) => {\n return yUpPositive ? -y : y\n}\n\n/**\n * This function gives an intermediate anchor flip that can be used to determine\n * how anchors should be interpreted when flipping in the Y-axis.\n *\n * It converts top_left -> bottom_left etc.\n *\n * y=1 top_left -------\n * y=0 | |\n * y=-1 -------------\n *\n * Y-up Negative\n *\n * y=-1 -------------\n * y=0 | |\n * y=1 bottom_left --\n */\nexport const flipAnchorOverYAxis = (anchor: NinePointAnchor) => {\n if (anchor === \"top_left\") return \"bottom_left\"\n if (anchor === \"top_right\") return \"bottom_right\"\n if (anchor === \"bottom_left\") return \"top_left\"\n if (anchor === \"bottom_right\") return \"top_right\"\n if (anchor === \"middle_top\") return \"middle_bottom\"\n if (anchor === \"middle_bottom\") return \"middle_top\"\n return anchor\n}\n\nexport const makeAnchorYUpPositive = (\n anchor: NinePointAnchor,\n yUpPositive: boolean = true,\n) => {\n return yUpPositive ? flipAnchorOverYAxis(anchor) : anchor\n}\n","export const mapColor = (color: string) => {\n switch (color) {\n case \"primary\":\n return \"black\"\n case \"secondary\":\n return \"gray\"\n default:\n return color\n }\n}\n","import type { Point } from \"drawing\"\nimport { makeYUpPositive } from \"./utils/makeYUpPositive\"\n\nexport function pathToSvgD(\n points: Point[],\n {\n closed = false,\n yUpPositive = true,\n }: {\n closed?: boolean\n yUpPositive?: boolean\n },\n): string {\n const pathCommands = points\n .map(\n (point, index) =>\n `${index === 0 ? \"M\" : \"L\"}${point.x},${makeYUpPositive(point.y, yUpPositive)}`,\n )\n .join(\" \")\n\n return closed ? `${pathCommands} Z` : pathCommands\n}\n","import { makeAnchorYUpPositive, makeYUpPositive } from \"./utils/makeYUpPositive\"\nimport { mapColor } from \"./mapColor\"\nimport { pathToSvgD } from \"./pathToSvgD\"\nimport type { Point, Port, SchSymbol, TextPrimitive } from \"./types\"\n\nfunction createDiamondElement(\n center: Point,\n size = 0.05,\n yUpPositive: boolean = true,\n): string {\n const { x, y } = center\n const halfSize = size / 2\n return `<path d=\"M ${x} ${makeYUpPositive(y, yUpPositive) - halfSize} L ${x + halfSize} ${makeYUpPositive(y, yUpPositive)} L ${x} ${\n makeYUpPositive(y, yUpPositive) + halfSize\n } L ${x - halfSize} ${makeYUpPositive(y, yUpPositive)} Z\" fill=\"green\" />`\n}\n\nfunction createTextElement(\n primitive: TextPrimitive,\n { yUpPositive }: { yUpPositive?: boolean },\n): {\n text: string\n anchor: string\n} {\n const { x, y, text, fontSize = 0.1, anchor } = primitive\n let textAnchor: string\n const dx = 0\n let dy = 0\n\n const capHeight = fontSize * 0.75\n\n switch (anchor) {\n case \"top_left\":\n textAnchor = \"start\"\n dy = fontSize\n break\n case \"top_right\":\n textAnchor = \"end\"\n dy = fontSize\n break\n case \"bottom_left\":\n textAnchor = \"start\"\n break\n case \"bottom_right\":\n textAnchor = \"end\"\n break\n case \"center\":\n textAnchor = \"middle\"\n dy = fontSize / 2\n break\n case \"middle_top\":\n textAnchor = \"middle\"\n dy = capHeight\n break\n case \"middle_bottom\":\n textAnchor = \"middle\"\n break\n case \"middle_left\":\n textAnchor = \"start\"\n dy = capHeight / 2\n break\n case \"middle_right\":\n textAnchor = \"end\"\n dy = capHeight / 2\n break\n }\n\n return {\n text: `<text x=\"${x}\" y=\"${makeYUpPositive(y, yUpPositive)}\" dx=\"${dx}\" dy=\"${dy}\" text-anchor=\"${textAnchor}\" style=\"font: ${\n fontSize ?? 0.1\n }px monospace; fill: ${mapColor(\"primary\")}\">${text}</text>`,\n anchor: `<rect x=\"${x - 0.025 / 2}\" y=\"${\n makeYUpPositive(y, yUpPositive) - 0.025 / 2\n }\" width=\"0.025\" height=\"0.025\" fill=\"blue\" />`,\n }\n}\n\nfunction createPortElement(\n port: Port,\n { yUpPositive }: { yUpPositive?: boolean },\n): string {\n const { x, y, labels } = port\n const crossSize = 0.05\n const labelFontSize = 0.08\n const label = labels[0] || \"\"\n\n // Draw a thin diagonal cross (X) centered at the port\n const cross = `\n <line x1=\"${x - crossSize / 2}\" y1=\"${makeYUpPositive(y, yUpPositive) - crossSize / 2}\" x2=\"${x + crossSize / 2}\" y2=\"${makeYUpPositive(y, yUpPositive) + crossSize / 2}\" stroke=\"red\" stroke-width=\"0.004\" />\n <line x1=\"${x - crossSize / 2}\" y1=\"${makeYUpPositive(y, yUpPositive) + crossSize / 2}\" x2=\"${x + crossSize / 2}\" y2=\"${makeYUpPositive(y, yUpPositive) - crossSize / 2}\" stroke=\"red\" stroke-width=\"0.004\" />\n `\n\n return `\n ${cross}\n <text x=\"${x - labelFontSize / 2}\" y=\"${makeYUpPositive(y, yUpPositive) + crossSize + labelFontSize / 2}\"\n text-anchor=\"middle\" style=\"font: ${labelFontSize}px monospace; fill: #833;\">${label}</text>\n `\n}\n\nexport function getInnerSvg(\n symbol: SchSymbol,\n options: { width?: number; height?: number; debug?: boolean } = {},\n): string {\n const { debug = false } = options\n const { primitives, size, ports } = symbol\n const svgElements = primitives.map((primitive) => {\n switch (primitive.type) {\n case \"path\":\n return `<path d=\"${pathToSvgD(primitive.points, {\n closed: primitive.closed,\n yUpPositive: true,\n })}\" fill=\"${\n primitive.fill ? mapColor(primitive.color) : \"none\"\n }\" stroke=\"${mapColor(\n primitive.color,\n )}\" stroke-width=\"0.02\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />`\n case \"text\":\n const textElements = createTextElement(primitive, { yUpPositive: true })\n return textElements.text + (debug ? textElements.anchor : \"\")\n case \"circle\":\n return `<circle cx=\"${primitive.x}\" cy=\"${makeYUpPositive(primitive.y, true)}\" r=\"${\n primitive.radius\n }\" fill=\"${primitive.fill ? mapColor(primitive.color) : \"none\"}\" ${\n !primitive.fill\n ? `stroke=\"${mapColor(primitive.color)}\" stroke-width=\"0.02\"`\n : \"\"\n } />`\n case \"box\":\n return `<rect x=\"${primitive.x}\" y=\"${makeYUpPositive(primitive.y)}\" width=\"${\n primitive.width\n }\" height=\"${primitive.height}\" fill=\"${mapColor(\"primary\")}\" />`\n default:\n return \"\"\n }\n })\n\n const portElements = ports\n .map((p) => createPortElement(p, { yUpPositive: true }))\n .join(\"\\n \")\n\n const centerDiamond = createDiamondElement(symbol.center)\n\n const debugElements = []\n if (debug) {\n const topLeft = {\n x: symbol.center.x - size.width / 2,\n y: symbol.center.y - size.height / 2,\n }\n debugElements.push(\n `<text x=\"${topLeft.x}\" y=\"${topLeft.y}\" style=\"font: 0.05px monospace; fill: #833;\">${size.width.toFixed(2)} x ${size.height.toFixed(2)}</text>`,\n )\n\n // Show all available port labels\n ports.forEach((port, i) => {\n if (port.labels.length > 1) {\n const alternateLabels = port.labels.slice(1).join(\", \")\n debugElements.push(\n `<text x=\"${topLeft.x}\" y=\"${topLeft.y - (i + 1) * 0.05}\" dy=\"-0.15\" style=\"font: 0.05px monospace; fill: #833;\">${port.labels[0]} [${alternateLabels}]</text>`,\n )\n }\n })\n\n debugElements.push(...debugElements)\n }\n\n return [\n svgElements.join(\"\\n \"),\n portElements,\n centerDiamond,\n ...debugElements,\n ].join(\"\\n\")\n}\n\nexport function getSvg(\n symbol: SchSymbol,\n options: { width?: number; height?: number; debug?: boolean } = {},\n): string {\n const { size } = symbol\n const innerSvg = getInnerSvg(symbol, options)\n\n // Use the center and the size to calculate the viewBox\n const bufferMultiple = 1.2\n const w = size.width * bufferMultiple\n const h = size.height * bufferMultiple\n const viewBox = {\n x: symbol.center.x - w / 2,\n y: makeYUpPositive(symbol.center.y, true) - h / 2,\n width: w,\n height: h,\n }\n\n if (options.width && !options.height) {\n options.height = options.width! * (viewBox.height / viewBox.width)\n } else if (!options.width && options.height) {\n options.width = options.height! * (viewBox.width / viewBox.height)\n } else if (!options.width && !options.height) {\n options.width = viewBox.width\n options.height = viewBox.height\n }\n\n return `<svg width=\"${options.width}\" height=\"${options.height}\" viewBox=\"${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}\" xmlns=\"http://www.w3.org/2000/svg\">${innerSvg}</svg>`\n}\n","import symbols from \"./generated/symbols-index\"\n\nexport type {\n SchSymbol,\n BoxPrimitive,\n CirclePrimitive,\n PathPrimitive,\n TextPrimitive,\n} from \"./drawing/types\"\nimport { getSvg, getInnerSvg, resizeSymbol } from \"./drawing\"\n\nimport { BaseSymbolName } from \"./generated/base-symbol-names\"\n\n/**\n * Utility for easier autocomplete:\n *\n * ```ts\n * BASE_SYMBOLS.boxresistor // \"boxresistor\"\n * ```\n */\nexport const BASE_SYMBOLS: Record<BaseSymbolName, BaseSymbolName> =\n Object.fromEntries(Object.keys(symbols).map((k) => [k, k])) as any\n\nexport { symbols, getSvg, getInnerSvg, resizeSymbol, BaseSymbolName }\n","import type { Point } from \"./common\"\n\n/**\n * Returns true if the two lines intersect.\n */\nexport function doesLineIntersectLine(\n [a1, a2]: [Point, Point],\n [b1, b2]: [Point, Point],\n {\n lineThickness = 0,\n }: {\n lineThickness?: number\n } = {},\n): boolean {\n if (lineThickness === 0) {\n return doSegmentsIntersect(a1, a2, b1, b2)\n }\n const minDist = segmentsDistance(a1, a2, b1, b2)\n return minDist <= lineThickness\n}\n\n/**\n * Returns true if the two segments intersect.\n */\nexport function doSegmentsIntersect(\n p1: Point,\n q1: Point,\n p2: Point,\n q2: Point,\n): boolean {\n const o1 = orientation(p1, q1, p2)\n const o2 = orientation(p1, q1, q2)\n const o3 = orientation(p2, q2, p1)\n const o4 = orientation(p2, q2, q1)\n\n // General case\n if (o1 !== o2 && o3 !== o4) {\n return true\n }\n\n // Special Cases\n if (o1 === 0 && onSegment(p1, p2, q1)) return true\n if (o2 === 0 && onSegment(p1, q2, q1)) return true\n if (o3 === 0 && onSegment(p2, p1, q2)) return true\n if (o4 === 0 && onSegment(p2, q1, q2)) return true\n\n return false\n}\n\n/**\n * Returns 0 if the points are colinear, 1 if they are clockwise, and 2 if they are counterclockwise.\n */\nexport function orientation(p: Point, q: Point, r: Point): number {\n const val = (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y)\n if (val === 0) return 0 // colinear\n return val > 0 ? 1 : 2 // clock or counterclock wise\n}\n\n/**\n * Returns true if q is on the segment p->r.\n */\nexport function onSegment(p: Point, q: Point, r: Point): boolean {\n return (\n q.x <= Math.max(p.x, r.x) &&\n q.x >= Math.min(p.x, r.x) &&\n q.y <= Math.max(p.y, r.y) &&\n q.y >= Math.min(p.y, r.y)\n )\n}\n\n/**\n * Returns the minimum distance between two segments.\n */\nfunction segmentsDistance(a1: Point, a2: Point, b1: Point, b2: Point): number {\n // Handle degenerate cases: segments of zero length\n if (a1.x === a2.x && a1.y === a2.y) {\n return pointToSegmentDistance(a1, b1, b2)\n }\n if (b1.x === b2.x && b1.y === b2.y) {\n return pointToSegmentDistance(b1, a1, a2)\n }\n\n // Check if segments intersect\n if (doSegmentsIntersect(a1, a2, b1, b2)) {\n return 0\n }\n\n // Compute the minimum distance between the segments\n const distances = [\n pointToSegmentDistance(a1, b1, b2),\n pointToSegmentDistance(a2, b1, b2),\n pointToSegmentDistance(b1, a1, a2),\n pointToSegmentDistance(b2, a1, a2),\n ]\n\n return Math.min(...distances)\n}\n\n/**\n * Returns the minimum distance between a point and a segment.\n */\nexport function pointToSegmentDistance(p: Point, v: Point, w: Point): number {\n const l2 = (w.x - v.x) ** 2 + (w.y - v.y) ** 2\n if (l2 === 0) return distance(p, v)\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2\n t = Math.max(0, Math.min(1, t))\n\n const projection = {\n x: v.x + t * (w.x - v.x),\n y: v.y + t * (w.y - v.y),\n }\n\n return distance(p, projection)\n}\n\n/**\n * Returns the distance between two points.\n */\nexport function distance(p1: Point, p2: Point): number {\n const dx = p1.x - p2.x\n const dy = p1.y - p2.y\n return Math.sqrt(dx * dx + dy * dy)\n}\n","type NodeId = string\n\nexport function findConnectedNetworks(\n connections: Array<NodeId[]>,\n): Record<string, string[]> {\n const networks: Map<string, Set<string>> = new Map()\n let netCounter = 0\n\n function getOrCreateNetwork(nodeId: string): Set<string> {\n for (const [, network] of networks) {\n if (network.has(nodeId)) {\n return network\n }\n }\n const newNetwork = new Set<string>()\n networks.set(`connectivity_net${netCounter++}`, newNetwork)\n return newNetwork\n }\n\n for (const connection of connections) {\n let network: Set<string> | null = null\n\n for (const nodeId of connection) {\n if (!network) {\n network = getOrCreateNetwork(nodeId)\n } else if (!network.has(nodeId)) {\n const existingNetwork = getOrCreateNetwork(nodeId)\n if (existingNetwork !== network) {\n // Merge networks\n for (const node of existingNetwork) {\n network.add(node)\n }\n networks.delete(\n Array.from(networks.entries()).find(\n ([, net]) => net === existingNetwork,\n )![0],\n )\n }\n }\n network.add(nodeId)\n }\n }\n\n return Object.fromEntries(\n Array.from(networks.entries()).map(([netId, connectedNodes]) => [\n netId,\n Array.from(connectedNodes),\n ]),\n )\n}\n","export class ConnectivityMap {\n netMap: Record<string, string[]>\n\n idToNetMap: Record<string, string>\n\n constructor(netMap: Record<string, string[]>) {\n this.netMap = netMap\n this.idToNetMap = {}\n for (const [netId, ids] of Object.entries(netMap)) {\n for (const id of ids) {\n this.idToNetMap[id] = netId\n }\n }\n }\n\n addConnections(connections: string[][]) {\n for (const connection of connections) {\n const existingNets = new Set<string>()\n\n // Find all existing nets for the connection\n for (const id of connection) {\n const existingNetId = this.idToNetMap[id]\n if (existingNetId) {\n existingNets.add(existingNetId)\n }\n }\n\n let targetNetId: string\n\n if (existingNets.size === 0) {\n // If no existing nets found, create a new one\n targetNetId = `connectivity_net${Object.keys(this.netMap).length}`\n this.netMap[targetNetId] = []\n } else if (existingNets.size === 1) {\n // If only one existing net found, use it\n targetNetId =\n existingNets.values().next().value ??\n `connectivity_net${Object.keys(this.netMap).length}`\n } else {\n // If multiple nets found, merge them\n targetNetId =\n existingNets.values().next().value ??\n `connectivity_net${Object.keys(this.netMap).length}`\n for (const netId of existingNets) {\n if (netId !== targetNetId) {\n this.netMap[targetNetId].push(...this.netMap[netId])\n\n // we could delete the net, but setting it to reference the other net\n // will make sure any usage of the old netId will still work\n this.netMap[netId] = this.netMap[targetNetId]\n for (const id of this.netMap[targetNetId]) {\n this.idToNetMap[id] = targetNetId\n }\n }\n }\n }\n\n // Add all ids to the target net\n for (const id of connection) {\n if (!this.netMap[targetNetId].includes(id)) {\n this.netMap[targetNetId].push(id)\n }\n this.idToNetMap[id] = targetNetId\n }\n }\n }\n\n getIdsConnectedToNet(netId: string): string[] {\n return this.netMap[netId] || []\n }\n\n getNetConnectedToId(id: string): string | undefined {\n return this.idToNetMap[id]\n }\n\n areIdsConnected(id1: string, id2: string): boolean {\n if (id1 === id2) return true\n const netId1 = this.getNetConnectedToId(id1)\n if (!netId1) return false\n const netId2 = this.getNetConnectedToId(id2)\n if (!netId2) return false\n return netId1 === netId2 || netId2 === id1 || netId2 === id1\n }\n\n areAllIdsConnected(ids: string[]): boolean {\n const netId = this.getNetConnectedToId(ids[0])\n for (const id of ids) {\n const nextNetId = this.getNetConnectedToId(id)\n if (nextNetId === undefined) {\n return false\n }\n if (nextNetId !== netId) {\n return false\n }\n }\n return true\n }\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { findConnectedNetworks } from \"./findConnectedNetworks\"\nimport { ConnectivityMap } from \"./ConnectivityMap\"\n\nexport const getSourcePortConnectivityMapFromCircuitJson = (\n circuitJson: AnyCircuitElement[],\n) => {\n const connections: string[][] = []\n\n for (const element of circuitJson) {\n if (element.type === \"source_trace\") {\n connections.push([\n ...(element.connected_source_port_ids ?? []),\n ...(element.connected_source_net_ids ?? []),\n ])\n } else if (element.type === \"source_component\") {\n if (element.internally_connected_source_port_ids) {\n for (const portGroup of element.internally_connected_source_port_ids) {\n connections.push(portGroup)\n }\n }\n }\n }\n\n const netMap = findConnectedNetworks(connections)\n\n return new ConnectivityMap(netMap)\n}\n","import type { AnyCircuitElement } from \"circuit-json\"\nimport { findConnectedNetworks } from \"./findConnectedNetworks\"\nimport { ConnectivityMap } from \"./ConnectivityMap\"\n\nexport const getFullConnectivityMapFromCircuitJson = (\n circuitJson: AnyCircuitElement[],\n) => {\n const connections: string[][] = []\n\n for (const element of circuitJson) {\n if (element.type === \"source_trace\") {\n connections.push(\n [\n element.source_trace_id,\n ...(element.connected_source_port_ids ?? []),\n ...(element.connected_source_net_ids ?? []),\n ].filter(Boolean),\n )\n } else if (element.type === \"pcb_port\") {\n const { pcb_port_id, source_port_id } = element\n if (source_port_id && pcb_port_id) {\n connections.push([source_port_id, pcb_port_id])\n }\n } else if (element.type === \"pcb_smtpad\") {\n const { pcb_smtpad_id, pcb_port_id } = element\n if (pcb_port_id && pcb_smtpad_id) {\n connections.push([pcb_smtpad_id, pcb_port_id])\n }\n } else if (element.type === \"pcb_plated_hole\") {\n const { pcb_plated_hole_id, pcb_port_id } = element\n if (pcb_port_id && pcb_plated_hole_id) {\n connections.push([pcb_plated_hole_id, pcb_port_id])\n }\n } else if (element.type === \"pcb_trace\") {\n const { pcb_trace_id, source_trace_id } = element\n const route = Array.isArray(element.route)\n ? element.route.filter((rp) => rp && rp.route_type === \"wire\")\n : []\n if (source_trace_id && pcb_trace_id) {\n connections.push([pcb_trace_id, source_trace_id])\n }\n if (Array.isArray(route)) {\n const startId = route.find(\n (rp) => rp && rp.start_pcb_port_id,\n )?.start_pcb_port_id\n const endId = route.find(\n (rp) => rp && rp.end_pcb_port_id,\n )?.end_pcb_port_id\n if (startId && pcb_trace_id && endId) {\n connections.push([startId, pcb_trace_id, endId])\n }\n }\n } else if (element.type === \"pcb_via\") {\n const { pcb_via_id, pcb_trace_id } = element\n if (pcb_trace_id && pcb_via_id) {\n connections.push([pcb_via_id, pcb_trace_id])\n }\n } else if (element.type === \"source_component\") {\n if (element.internally_connected_source_port_ids) {\n for (const portGroup of element.internally_connected_source_port_ids) {\n connections.push(portGroup)\n }\n }\n }\n }\n\n const netMap = findConnectedNetworks(connections)\n\n return new ConnectivityMap(netMap)\n}\n","import type { AnyCircuitElement, PCBPort, PCBTrace } from \"circuit-json\"\nimport { ConnectivityMap } from \"./ConnectivityMap\"\nimport { doesLineIntersectLine } from \"@tscircuit/math-utils\"\nimport { findConnectedNetworks } from \"./findConnectedNetworks\"\n\n/**\n * A PCB Connectivity Map is a connectivity map that has analyzed what traces and ports are actually connected on the\n * PCB.\n *\n * This is useful for determining how to route a trace on the PCB. For example, you may want to determine where the\n * nearest connected net point is to connect an unrouted pin.\n */\nexport class PcbConnectivityMap {\n circuitJson: AnyCircuitElement[]\n traceIdToElm: Map<string, PCBTrace>\n portIdToElm: Map<string, PCBPort>\n connMap: ConnectivityMap\n\n constructor(circuitJson?: AnyCircuitElement[]) {\n this.circuitJson = circuitJson || []\n this.traceIdToElm = new Map()\n this.portIdToElm = new Map()\n if (circuitJson) {\n this._buildTraceMap()\n this._buildPortMap()\n this.connMap = this._buildTraceConnectivityMap()\n } else {\n this.connMap = new ConnectivityMap({})\n }\n }\n\n private _buildPortMap() {\n for (const element of this.circuitJson) {\n if (element.type === \"pcb_port\") {\n this.portIdToElm.set(element.pcb_port_id, element as PCBPort)\n }\n }\n }\n\n private _buildTraceMap() {\n for (const element of this.circuitJson) {\n if (element.type === \"pcb_trace\") {\n this.traceIdToElm.set(element.pcb_trace_id, element as PCBTrace)\n }\n }\n }\n\n private _buildTraceConnectivityMap(): ConnectivityMap {\n const connections: string[][] = []\n const traceIds = Array.from(this.traceIdToElm.keys())\n\n for (let i = 0; i < traceIds.length; i++) {\n for (let j = i + 1; j < traceIds.length; j++) {\n const trace1 = this.traceIdToElm.get(traceIds[i])!\n const trace2 = this.traceIdToElm.get(traceIds[j])!\n if (this._arePcbTracesConnected(trace1, trace2)) {\n connections.push([traceIds[i], traceIds[j]])\n }\n }\n }\n\n for (const port of this.portIdToElm.values()) {\n for (const trace of this.traceIdToElm.values()) {\n for (const rp of trace.route) {\n if (rp.route_type === \"wire\") {\n if (rp.start_pcb_port_id === port.pcb_port_id) {\n connections.push([port.pcb_port_id, trace.pcb_trace_id])\n } else if (rp.end_pcb_port_id === port.pcb_port_id) {\n connections.push([trace.pcb_trace_id, port.pcb_port_id])\n }\n }\n }\n }\n }\n\n return new ConnectivityMap(findConnectedNetworks(connections))\n }\n\n addTrace(trace: PCBTrace) {\n this.traceIdToElm.set(trace.pcb_trace_id, trace)\n const connections: string[][] = []\n for (const rp of trace.route) {\n if (rp.route_type === \"wire\") {\n if (rp.start_pcb_port_id) {\n connections.push([rp.start_pcb_port_id, trace.pcb_trace_id])\n }\n if (rp.end_pcb_port_id) {\n connections.push([rp.end_pcb_port_id, trace.pcb_trace_id])\n }\n }\n }\n\n this.connMap.addConnections(connections)\n }\n\n _arePcbTracesConnected(trace1: PCBTrace, trace2: PCBTrace): boolean {\n for (let i = 0; i < trace1.route.length - 1; i++) {\n const segment1A = trace1.route[i]\n const segment1B = trace1.route[i + 1]\n if (segment1A.route_type !== \"wire\") continue\n if (segment1B.route_type !== \"wire\") continue\n for (let j = 0; j < trace2.route.length - 1; j++) {\n const segment2A = trace2.route[j]\n const segment2B = trace2.route[j + 1]\n\n if (segment2A.route_type !== \"wire\") continue\n if (segment2B.route_type !== \"wire\") continue\n\n // Check if lines are overlapping\n const isOverlapping = doesLineIntersectLine(\n [segment1A, segment1B],\n [segment2A, segment2B],\n {\n lineThickness: (segment1A.width + segment2A.width) / 2,\n },\n )\n if (isOverlapping) {\n return true\n }\n }\n }\n return false\n }\n\n areTracesConnected(traceId1: string, traceId2: string): boolean {\n return this.connMap.areIdsConnected(traceId1, traceId2)\n }\n\n getAllTracesConnectedToTrace(traceId: string): PCBTrace[] {\n const netId = this.connMap.getNetConnectedToId(traceId)\n return netId\n ? this.connMap\n .getIdsConnectedToNet(netId)\n .filter((id) => this.traceIdToElm.has(id))\n .map((id) => this.traceIdToElm.get(id) as PCBTrace)\n : []\n }\n\n getAllTracesConnectedToPort(portId: string): PCBTrace[] {\n const netId = this.connMap.getNetConnectedToId(portId)\n return netId\n ? this.connMap\n .getIdsConnectedToNet(netId)\n .filter((id) => this.traceIdToElm.has(id))\n .map((id) => this.traceIdToElm.get(id) as PCBTrace)\n : []\n }\n}\n","//#region lib/calculateElbowBends.ts\n/**\n* IMPORTANT:\n* `calculateElbow` always calls this helper with a normalised coordinate system\n* where\n* • `p1.x` ≤ `p2.x` (and when `x` is equal then `p1.y` ≤ `p2.y`)\n* • `p1.facingDirection` ∈ {\"x+\", \"y+\"} or is `undefined` (`none`)\n*\n* This means any branch that depends on `p1` facing `\"x-\"` or `\"y-\"` or on\n* `p1.x > p2.x` can never be taken at runtime. The new\n* `NormalisedStartPoint` type encodes this guarantee so TypeScript will flag\n* any call-site that violates it.\n*/\nconst calculateElbowBends = (p1, p2, overshootAmount) => {\n\tconst result = [{\n\t\tx: p1.x,\n\t\ty: p1.y\n\t}];\n\tconst midX = (p1.x + p2.x) / 2;\n\tconst midY = (p1.y + p2.y) / 2;\n\tconst p2Target = {\n\t\tx: p2.x,\n\t\ty: p2.y\n\t};\n\tswitch (p2.facingDirection) {\n\t\tcase \"x+\":\n\t\t\tp2Target.x += overshootAmount;\n\t\t\tbreak;\n\t\tcase \"x-\":\n\t\t\tp2Target.x -= overshootAmount;\n\t\t\tbreak;\n\t\tcase \"y+\":\n\t\t\tp2Target.y += overshootAmount;\n\t\t\tbreak;\n\t\tcase \"y-\":\n\t\t\tp2Target.y -= overshootAmount;\n\t\t\tbreak;\n\t}\n\tconst startDir = p1.facingDirection ?? \"none\";\n\tconst endDir = p2.facingDirection ?? \"none\";\n\tconst push = (pt) => {\n\t\tconst last = result[result.length - 1];\n\t\tif (last.x !== pt.x || last.y !== pt.y) result.push(pt);\n\t};\n\tconst yAligned = Math.abs(p1.y - p2.y) <= Math.max(1e-6, overshootAmount * .1);\n\tconst xAligned = Math.abs(p1.x - p2.x) <= Math.max(1e-6, overshootAmount * .1);\n\tif (startDir === \"none\" && endDir === \"none\") {\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p2.y\n\t\t});\n\t} else if (startDir === \"x+\" && endDir === \"y+\") if (p1.x > p2.x && p1.y < p2.y) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p2.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2.y + overshootAmount\n\t\t});\n\t} else if (!xAligned && !yAligned && p1.x < p2.x && p1.y > p2.y) push({\n\t\tx: p2.x,\n\t\ty: p1.y\n\t});\n\telse if (xAligned) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p2.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2.y + overshootAmount\n\t\t});\n\t} else if (p1.x < p2.x) {\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p2Target.y\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2Target.y\n\t\t});\n\t} else if (p1.y <= p2.y + overshootAmount) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p1.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2.y\n\t\t});\n\t} else {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: (p1.y + p2.y) / 2\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: (p1.y + p2.y) / 2\n\t\t});\n\t}\n\telse if (startDir === \"x+\" && endDir === \"x+\" && !yAligned) {\n\t\tconst commonX = Math.max(p1.x + overshootAmount, p2Target.x);\n\t\tpush({\n\t\t\tx: commonX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: commonX,\n\t\t\ty: p2.y\n\t\t});\n\t} else if (startDir === \"x+\" && endDir === \"x+\" && yAligned) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x + overshootAmount,\n\t\t\ty: p1.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x + overshootAmount,\n\t\t\ty: p2.y\n\t\t});\n\t} else if (startDir === \"x+\" && endDir === \"y-\") if (xAligned && p1.y <= p2.y) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: midY\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: midY\n\t\t});\n\t} else if (xAligned && p1.y > p2.y) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p2.y - overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2.y - overshootAmount\n\t\t});\n\t} else if (p1.x < p2.x && p1.y < p2.y) push({\n\t\tx: p2.x,\n\t\ty: p1.y\n\t});\n\telse if (p1.x > p2.x && p1.y < p2.y) {\n\t\tconst p1OvershootX = p1.x + overshootAmount;\n\t\tpush({\n\t\t\tx: p1OvershootX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1OvershootX,\n\t\t\ty: midY\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: midY\n\t\t});\n\t} else if (p1.x > p2.x && p1.y > p2.y) {\n\t\tconst p1OvershootX = p1.x + overshootAmount;\n\t\tpush({\n\t\t\tx: p1OvershootX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1OvershootX,\n\t\t\ty: p2Target.y\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2Target.y\n\t\t});\n\t} else if (p1.y === p2.y) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y - overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p1.y - overshootAmount\n\t\t});\n\t} else {\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p2Target.y\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x,\n\t\t\ty: p2Target.y\n\t\t});\n\t}\n\telse if (startDir === \"x+\" && endDir === \"x-\" && p1.x + overshootAmount >= p2.x - overshootAmount && !yAligned) {\n\t\tconst p1OvershootX = p1.x + overshootAmount;\n\t\tpush({\n\t\t\tx: p1OvershootX,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1OvershootX,\n\t\t\ty: midY\n\t\t});\n\t\tpush({\n\t\t\tx: p2Target.x,\n\t\t\ty: midY\n\t\t});\n\t\tpush({\n\t\t\tx: p2Target.x,\n\t\t\ty: p2Target.y\n\t\t});\n\t} else if (startDir === \"x+\" && endDir === \"x-\" && yAligned && p2.x > p1.x) {} else if (startDir === \"x+\" && endDir === \"x-\" && yAligned) {\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x - overshootAmount,\n\t\t\ty: p1.y + overshootAmount\n\t\t});\n\t\tpush({\n\t\t\tx: p2.x - overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t} else {\n\t\tif (startDir === \"x+\") push({\n\t\t\tx: p1.x + overshootAmount,\n\t\t\ty: p1.y\n\t\t});\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: result[result.length - 1].y\n\t\t});\n\t\tpush({\n\t\t\tx: midX,\n\t\t\ty: p2Target.y\n\t\t});\n\t\tpush({\n\t\t\tx: p2Target.x,\n\t\t\ty: p2Target.y\n\t\t});\n\t}\n\tpush({\n\t\tx: p2.x,\n\t\ty: p2.y\n\t});\n\treturn result;\n};\n\n//#endregion\n//#region lib/index.ts\nconst calculateElbow = (point1, point2, options = {}) => {\n\tlet p1 = point1;\n\tlet p2 = point2;\n\tlet orderFlipped = false;\n\tif (p1.x > p2.x || p1.x === p2.x && p1.y > p2.y) {\n\t\torderFlipped = true;\n\t\t[p1, p2] = [p2, p1];\n\t}\n\tconst mirrorX = p1.facingDirection === \"x-\";\n\tconst mirrorY = p1.facingDirection === \"y-\";\n\tconst mirrorPoint = (pt) => {\n\t\tconst x = mirrorX ? p1.x - (pt.x - p1.x) : pt.x;\n\t\tconst y = mirrorY ? p1.y - (pt.y - p1.y) : pt.y;\n\t\tlet facing = pt.facingDirection;\n\t\tif (mirrorX) {\n\t\t\tif (facing === \"x+\") facing = \"x-\";\n\t\t\telse if (facing === \"x-\") facing = \"x+\";\n\t\t}\n\t\tif (mirrorY) {\n\t\t\tif (facing === \"y+\") facing = \"y-\";\n\t\t\telse if (facing === \"y-\") facing = \"y+\";\n\t\t}\n\t\treturn {\n\t\t\tx,\n\t\t\ty,\n\t\t\tfacingDirection: facing\n\t\t};\n\t};\n\tconst rotateCW = (pt, centre) => {\n\t\tconst dx = pt.x - centre.x;\n\t\tconst dy = pt.y - centre.y;\n\t\tconst x = centre.x + dy;\n\t\tconst y = centre.y - dx;\n\t\tlet facing = pt.facingDirection;\n\t\tswitch (facing) {\n\t\t\tcase \"x+\":\n\t\t\t\tfacing = \"y-\";\n\t\t\t\tbreak;\n\t\t\tcase \"y-\":\n\t\t\t\tfacing = \"x-\";\n\t\t\t\tbreak;\n\t\t\tcase \"x-\":\n\t\t\t\tfacing = \"y+\";\n\t\t\t\tbreak;\n\t\t\tcase \"y+\":\n\t\t\t\tfacing = \"x+\";\n\t\t\t\tbreak;\n\t\t}\n\t\treturn {\n\t\t\tx,\n\t\t\ty,\n\t\t\tfacingDirection: facing\n\t\t};\n\t};\n\tconst rotateCCW = (pt, centre) => {\n\t\tconst dx = pt.x - centre.x;\n\t\tconst dy = pt.y - centre.y;\n\t\treturn {\n\t\t\tx: centre.x - dy,\n\t\t\ty: centre.y + dx\n\t\t};\n\t};\n\tconst mp1 = mirrorX || mirrorY ? mirrorPoint(p1) : p1;\n\tconst mp2 = mirrorX || mirrorY ? mirrorPoint(p2) : p2;\n\tlet rp1 = mp1;\n\tlet rp2 = mp2;\n\tlet rotated = false;\n\tif (mp1.facingDirection === \"y+\") {\n\t\trotated = true;\n\t\trp1 = {\n\t\t\t...mp1,\n\t\t\tfacingDirection: \"x+\"\n\t\t};\n\t\trp2 = rotateCW(mp2, mp1);\n\t}\n\tconst overshootAmount = options?.overshoot ?? .1 * Math.max(Math.abs(rp1.x - rp2.x), Math.abs(rp1.y - rp2.y));\n\tlet result = calculateElbowBends(rp1, rp2, overshootAmount);\n\tif (rotated) result = result.map((pt) => rotateCCW(pt, rp1));\n\tif (mirrorX || mirrorY) result = result.map(({ x, y }) => ({\n\t\tx: mirrorX ? p1.x - (x - p1.x) : x,\n\t\ty: mirrorY ? p1.y - (y - p1.y) : y\n\t}));\n\treturn orderFlipped ? result.reverse() : result;\n};\n\n//#endregion\nexport { calculateElbow };"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,KAAC,SAAU,QAAQ,SAAS;AAC1B,aAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAU,QAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAO,OAAO,KAC1D,SAAS,OAAO,eAAe,cAAc,aAAa,UAAU,MAAM,OAAO,SAAS,QAAQ;AAAA,IACrG,GAAG,UAAO,WAAY;AAAE;AAWtB,UAAI,aAAa,SAAU,KAAK;AAC9B,eAAO,OAAO,SAAS,SAAS,GAAG,KAAK,aAAa,GAAG,KAAK,CAAC,CAAC,IAAI;AAAA,MACrE;AAEA,eAAS,SAAU,KAAK;AACtB,eAAO,CAAC,CAAC,IAAI,eAAe,OAAO,IAAI,YAAY,aAAa,cAAc,IAAI,YAAY,SAAS,GAAG;AAAA,MAC5G;AAGA,eAAS,aAAc,KAAK;AAC1B,eAAO,OAAO,IAAI,gBAAgB,cAAc,OAAO,IAAI,UAAU,cAAc,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC;AAAA,MAC7G;AAEA,UAAIA,YAAW,OAAO,UAAU;AAShC,UAAI,SAAS,SAASC,QAAO,KAAK;AAEhC,YAAI,OAAO,QAAQ,aAAa;AAC9B,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,MAAM;AAChB,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,QAAQ,QAAQ,SAAS,eAAe,SAAS;AAC3D,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,QAAQ,YAAY,eAAe,QAAQ;AACpD,iBAAO;AAAA,QACT;AACA,YAAI,OAAO,QAAQ,YAAY,eAAe,QAAQ;AACpD,iBAAO;AAAA,QACT;AAGA,YAAI,OAAO,QAAQ,cAAc,eAAe,UAAU;AACxD,iBAAO;AAAA,QACT;AAGA,YAAI,OAAO,MAAM,YAAY,eAAe,MAAM,QAAQ,GAAG,GAAG;AAC9D,iBAAO;AAAA,QACT;AAGA,YAAI,eAAe,QAAQ;AACzB,iBAAO;AAAA,QACT;AACA,YAAI,eAAe,MAAM;AACvB,iBAAO;AAAA,QACT;AAGA,YAAI,OAAOD,UAAS,KAAK,GAAG;AAE5B,YAAI,SAAS,mBAAmB;AAC9B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,iBAAiB;AAC5B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,sBAAsB;AACjC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,kBAAkB;AAC7B,iBAAO;AAAA,QACT;AAGA,YAAI,WAAW,GAAG,GAAG;AACnB,iBAAO;AAAA,QACT;AAGA,YAAI,SAAS,gBAAgB;AAC3B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,oBAAoB;AAC/B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,gBAAgB;AAC3B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,oBAAoB;AAC/B,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,mBAAmB;AAC9B,iBAAO;AAAA,QACT;AAGA,YAAI,SAAS,sBAAsB;AACjC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,uBAAuB;AAClC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,8BAA8B;AACzC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,uBAAuB;AAClC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,wBAAwB;AACnC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,uBAAuB;AAClC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,wBAAwB;AACnC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,yBAAyB;AACpC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,yBAAyB;AACpC,iBAAO;AAAA,QACT;AAGA,eAAO;AAAA,MACT;AAEA,eAAS,qBAAqBE,KAAIC,SAAQ;AACzC,eAAOA,UAAS,EAAE,SAAS,CAAC,EAAE,GAAGD,IAAGC,SAAQA,QAAO,OAAO,GAAGA,QAAO;AAAA,MACrE;AAEA,UAAI,aAAa,qBAAqB,SAAUA,SAAQ;AACxD,SAAC,WAAW;AAEV,mBAAS,OAAO,KAAKD,KAAI;AACvB,gBAAI,OAAOA,QAAO,YAAY;AAC5B,qBAAO;AAAA,YACT;AAEA,gBAAI,MAAM,CAAC;AACX,qBAAS,OAAO,KAAK;AACnB,kBAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AAClD,oBAAIA,IAAG,KAAK,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,GAAG;AAAA,cACzC;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AAEA,cAAIC,QAAO,SAAS;AAClB,YAAAA,QAAO,UAAU;AAAA,UACnB,OAAO;AACL;AACE,qBAAO,SAAS;AAAA,YAClB;AAAA,UACF;AAAA,QACF,GAAG;AAAA,MACH,CAAC;AAMD,UAAI,iBAAiB,SAAS,WAAW,KAAK,IAAI;AAChD,YAAI,OAAO,OAAO,GAAG;AAErB,YAAI,SAAS,YAAY,SAAS,SAAS;AACzC,gBAAM,IAAI,MAAM,oBAAoB;AAAA,QACtC;AAEA,YAAI,MAAM,CAAC;AACX,YAAI,SAAS,UAAU;AACrB,gBAAM,WAAW,KAAK,EAAE;AACxB,gBAAM,CAAC;AAAA,QACT;AAEA,iBAAS,OAAO,KAAK;AACnB,cAAI,IAAI,eAAe,GAAG,GAAG;AAC3B,gBAAI,MAAM,IAAI,GAAG;AACjB,gBAAI,OAAO,GAAG,MAAM,YAAY,OAAO,GAAG,MAAM,SAAS;AACvD,kBAAI,GAAG,IAAI,WAAW,KAAK,EAAE;AAAA,YAC/B,OAAO;AACL,kBAAI,GAAG,IAAI;AAAA,YACb;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,UAAI,gBAAgB,qBAAqB,SAAUA,SAAQ;AAE3D,YAAI,MAAM,OAAO,UAAU,gBACvB,SAAS;AASb,iBAAS,SAAS;AAAA,QAAC;AASnB,YAAI,OAAO,QAAQ;AACjB,iBAAO,YAAY,uBAAO,OAAO,IAAI;AAMrC,cAAI,CAAC,IAAI,OAAO,EAAE,UAAW,UAAS;AAAA,QACxC;AAWA,iBAAS,GAAGD,KAAI,SAAS,MAAM;AAC7B,eAAK,KAAKA;AACV,eAAK,UAAU;AACf,eAAK,OAAO,QAAQ;AAAA,QACtB;AASA,iBAAS,eAAe;AACtB,eAAK,UAAU,IAAI,OAAO;AAC1B,eAAK,eAAe;AAAA,QACtB;AASA,qBAAa,UAAU,aAAa,SAAS,aAAa;AACxD,cAAI,QAAQ,CAAC,GACT,QACA;AAEJ,cAAI,KAAK,iBAAiB,EAAG,QAAO;AAEpC,eAAK,QAAS,SAAS,KAAK,SAAU;AACpC,gBAAI,IAAI,KAAK,QAAQ,IAAI,EAAG,OAAM,KAAK,SAAS,KAAK,MAAM,CAAC,IAAI,IAAI;AAAA,UACtE;AAEA,cAAI,OAAO,uBAAuB;AAChC,mBAAO,MAAM,OAAO,OAAO,sBAAsB,MAAM,CAAC;AAAA,UAC1D;AAEA,iBAAO;AAAA,QACT;AAUA,qBAAa,UAAU,YAAY,SAAS,UAAU,OAAO,QAAQ;AACnE,cAAI,MAAM,SAAS,SAAS,QAAQ,OAChC,YAAY,KAAK,QAAQ,GAAG;AAEhC,cAAI,OAAQ,QAAO,CAAC,CAAC;AACrB,cAAI,CAAC,UAAW,QAAO,CAAC;AACxB,cAAI,UAAU,GAAI,QAAO,CAAC,UAAU,EAAE;AAEtC,mBAAS,IAAI,GAAG,IAAI,UAAU,QAAQE,MAAK,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK;AACnE,YAAAA,IAAG,CAAC,IAAI,UAAU,CAAC,EAAE;AAAA,UACvB;AAEA,iBAAOA;AAAA,QACT;AASA,qBAAa,UAAU,OAAO,SAAS,KAAK,OAAOC,KAAIC,KAAI,IAAIC,KAAI,IAAI;AACrE,cAAI,MAAM,SAAS,SAAS,QAAQ;AAEpC,cAAI,CAAC,KAAK,QAAQ,GAAG,EAAG,QAAO;AAE/B,cAAI,YAAY,KAAK,QAAQ,GAAG,GAC5B,MAAM,UAAU,QAChB,MACA;AAEJ,cAAI,UAAU,IAAI;AAChB,gBAAI,UAAU,KAAM,MAAK,eAAe,OAAO,UAAU,IAAI,QAAW,IAAI;AAE5E,oBAAQ,KAAK;AAAA,cACX,KAAK;AAAG,uBAAO,UAAU,GAAG,KAAK,UAAU,OAAO,GAAG;AAAA,cACrD,KAAK;AAAG,uBAAO,UAAU,GAAG,KAAK,UAAU,SAASF,GAAE,GAAG;AAAA,cACzD,KAAK;AAAG,uBAAO,UAAU,GAAG,KAAK,UAAU,SAASA,KAAIC,GAAE,GAAG;AAAA,cAC7D,KAAK;AAAG,uBAAO,UAAU,GAAG,KAAK,UAAU,SAASD,KAAIC,KAAI,EAAE,GAAG;AAAA,cACjE,KAAK;AAAG,uBAAO,UAAU,GAAG,KAAK,UAAU,SAASD,KAAIC,KAAI,IAAIC,GAAE,GAAG;AAAA,cACrE,KAAK;AAAG,uBAAO,UAAU,GAAG,KAAK,UAAU,SAASF,KAAIC,KAAI,IAAIC,KAAI,EAAE,GAAG;AAAA,YAC3E;AAEA,iBAAK,IAAI,GAAG,OAAO,IAAI,MAAM,MAAK,CAAC,GAAG,IAAI,KAAK,KAAK;AAClD,mBAAK,IAAI,CAAC,IAAI,UAAU,CAAC;AAAA,YAC3B;AAEA,sBAAU,GAAG,MAAM,UAAU,SAAS,IAAI;AAAA,UAC5C,OAAO;AACL,gBAAIC,UAAS,UAAU,QACnBC;AAEJ,iBAAK,IAAI,GAAG,IAAID,SAAQ,KAAK;AAC3B,kBAAI,UAAU,CAAC,EAAE,KAAM,MAAK,eAAe,OAAO,UAAU,CAAC,EAAE,IAAI,QAAW,IAAI;AAElF,sBAAQ,KAAK;AAAA,gBACX,KAAK;AAAG,4BAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,OAAO;AAAG;AAAA,gBACpD,KAAK;AAAG,4BAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,SAASH,GAAE;AAAG;AAAA,gBACxD,KAAK;AAAG,4BAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,SAASA,KAAIC,GAAE;AAAG;AAAA,gBAC5D,KAAK;AAAG,4BAAU,CAAC,EAAE,GAAG,KAAK,UAAU,CAAC,EAAE,SAASD,KAAIC,KAAI,EAAE;AAAG;AAAA,gBAChE;AACE,sBAAI,CAAC,KAAM,MAAKG,KAAI,GAAG,OAAO,IAAI,MAAM,MAAK,CAAC,GAAGA,KAAI,KAAKA,MAAK;AAC7D,yBAAKA,KAAI,CAAC,IAAI,UAAUA,EAAC;AAAA,kBAC3B;AAEA,4BAAU,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,SAAS,IAAI;AAAA,cACpD;AAAA,YACF;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAWA,qBAAa,UAAU,KAAK,SAASC,IAAG,OAAOR,KAAI,SAAS;AAC1D,cAAI,WAAW,IAAI,GAAGA,KAAI,WAAW,IAAI,GACrC,MAAM,SAAS,SAAS,QAAQ;AAEpC,cAAI,CAAC,KAAK,QAAQ,GAAG,EAAG,MAAK,QAAQ,GAAG,IAAI,UAAU,KAAK;AAAA,mBAClD,CAAC,KAAK,QAAQ,GAAG,EAAE,GAAI,MAAK,QAAQ,GAAG,EAAE,KAAK,QAAQ;AAAA,cAC1D,MAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,QAAQ,GAAG,GAAG,QAAQ;AAErD,iBAAO;AAAA,QACT;AAWA,qBAAa,UAAU,OAAO,SAAS,KAAK,OAAOA,KAAI,SAAS;AAC9D,cAAI,WAAW,IAAI,GAAGA,KAAI,WAAW,MAAM,IAAI,GAC3C,MAAM,SAAS,SAAS,QAAQ;AAEpC,cAAI,CAAC,KAAK,QAAQ,GAAG,EAAG,MAAK,QAAQ,GAAG,IAAI,UAAU,KAAK;AAAA,mBAClD,CAAC,KAAK,QAAQ,GAAG,EAAE,GAAI,MAAK,QAAQ,GAAG,EAAE,KAAK,QAAQ;AAAA,cAC1D,MAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,QAAQ,GAAG,GAAG,QAAQ;AAErD,iBAAO;AAAA,QACT;AAYA,qBAAa,UAAU,iBAAiB,SAAS,eAAe,OAAOA,KAAI,SAAS,MAAM;AACxF,cAAI,MAAM,SAAS,SAAS,QAAQ;AAEpC,cAAI,CAAC,KAAK,QAAQ,GAAG,EAAG,QAAO;AAC/B,cAAI,CAACA,KAAI;AACP,gBAAI,EAAE,KAAK,iBAAiB,EAAG,MAAK,UAAU,IAAI,OAAO;AAAA,gBACpD,QAAO,KAAK,QAAQ,GAAG;AAC5B,mBAAO;AAAA,UACT;AAEA,cAAI,YAAY,KAAK,QAAQ,GAAG;AAEhC,cAAI,UAAU,IAAI;AAChB,gBACK,UAAU,OAAOA,QAChB,CAAC,QAAQ,UAAU,UACnB,CAAC,WAAW,UAAU,YAAY,UACtC;AACA,kBAAI,EAAE,KAAK,iBAAiB,EAAG,MAAK,UAAU,IAAI,OAAO;AAAA,kBACpD,QAAO,KAAK,QAAQ,GAAG;AAAA,YAC9B;AAAA,UACF,OAAO;AACL,qBAAS,IAAI,GAAG,SAAS,CAAC,GAAGM,UAAS,UAAU,QAAQ,IAAIA,SAAQ,KAAK;AACvE,kBACK,UAAU,CAAC,EAAE,OAAON,OACnB,QAAQ,CAAC,UAAU,CAAC,EAAE,QACtB,WAAW,UAAU,CAAC,EAAE,YAAY,SACxC;AACA,uBAAO,KAAK,UAAU,CAAC,CAAC;AAAA,cAC1B;AAAA,YACF;AAKA,gBAAI,OAAO,OAAQ,MAAK,QAAQ,GAAG,IAAI,OAAO,WAAW,IAAI,OAAO,CAAC,IAAI;AAAA,qBAChE,EAAE,KAAK,iBAAiB,EAAG,MAAK,UAAU,IAAI,OAAO;AAAA,gBACzD,QAAO,KAAK,QAAQ,GAAG;AAAA,UAC9B;AAEA,iBAAO;AAAA,QACT;AASA,qBAAa,UAAU,qBAAqB,SAAS,mBAAmB,OAAO;AAC7E,cAAI;AAEJ,cAAI,OAAO;AACT,kBAAM,SAAS,SAAS,QAAQ;AAChC,gBAAI,KAAK,QAAQ,GAAG,GAAG;AACrB,kBAAI,EAAE,KAAK,iBAAiB,EAAG,MAAK,UAAU,IAAI,OAAO;AAAA,kBACpD,QAAO,KAAK,QAAQ,GAAG;AAAA,YAC9B;AAAA,UACF,OAAO;AACL,iBAAK,UAAU,IAAI,OAAO;AAC1B,iBAAK,eAAe;AAAA,UACtB;AAEA,iBAAO;AAAA,QACT;AAKA,qBAAa,UAAU,MAAM,aAAa,UAAU;AACpD,qBAAa,UAAU,cAAc,aAAa,UAAU;AAK5D,qBAAa,UAAU,kBAAkB,SAAS,kBAAkB;AAClE,iBAAO;AAAA,QACT;AAKA,qBAAa,WAAW;AAKxB,qBAAa,eAAe;AAK5B;AACE,UAAAC,QAAO,UAAU;AAAA,QACnB;AAAA,MACA,CAAC;AAED,eAAS,gBAAgB,KAAK,KAAK,OAAO;AAAE,YAAI,OAAO,KAAK;AAAE,iBAAO,eAAe,KAAK,KAAK,EAAE,OAAc,YAAY,MAAM,cAAc,MAAM,UAAU,KAAK,CAAC;AAAA,QAAG,OAAO;AAAE,cAAI,GAAG,IAAI;AAAA,QAAO;AAAE,eAAO;AAAA,MAAK;AAGhN,UAAI,OAAO,SAASQ,QAAO;AAAA,MAAC;AAE5B,UAAI,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,oBAAoB;AAAA,QACpB,eAAe;AAAA,QACf,kBAAkB;AAAA,QAClB,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,MACpB;AAEA,UAAI,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MACX;AAEA,UAAI,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,QACV,eAAe;AAAA,QACf,gBAAgB;AAAA,MACpB;AAEA,UAAI,eAAe;AAAA,QACf,KAAK,OAAO;AAAA,QACZ,KAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,MAChB;AAEA,UAAI,YAAY,SAASC,WAAU,MAAM;AACrC,eAAO,aAAa,IAAI,KAAK,OAAO;AAAA,MACxC;AAOA,UAAI,WAAW,SAASC,QAAO,SAAS;AACpC,YAAI,aAAa,iBAAiB,gBAAgB,eAAe,uBAAuB,sBAAsB,uBAAuB,uBAAuB,wBAAwB;AAEpL,kBAAU,OAAO,OAAO,EAAE,OAAO,MAAM,GAAG,OAAO;AACjD,YAAIC,SAAQ,IAAI,cAAc;AAC9B,YAAI,QAAQ,MAAM;AAClB,YAAI,OAAO;AACX,YAAI,UAAU;AACd,YAAI,WAAW;AACf,YAAI,YAAY;AAChB,YAAI,YAAY;AAChB,YAAI,eAAe;AAEnB,YAAI,OAAO,SAASC,MAAK,MAAM,OAAO;AAElC,cAAI,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,KAAK;AAC1C;AAAA,UACJ;AACA,cAAI,QAAQ,EAAE,MAAY,MAAa;AACvC,cAAI,QAAQ,OAAO;AACf,oBAAQ,IAAI,SAAS,KAAK;AAAA,UAC9B;AACA,UAAAD,OAAM,KAAK,QAAQ,KAAK;AAAA,QAC5B;AAEA,QAAAA,OAAM,gBAAgB,sBAAsB,CAAC,GAAG,gBAAgB,qBAAqB,MAAM,OAAO,cAAc,CAAC,GAAG,gBAAgB,aAAa,OAAO,IAAI,WAAY;AACpK,cAAI,KAAK,KAAK,GAAG;AACb,iBAAK,OAAO,MAAM,IAAI;AAAA,UAC1B;AACA,oBAAU;AACV,sBAAY;AACZ,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,aAAa,OAAO,MAAM,SAAU,MAAM;AAC1D,kBAAQ;AAAA,QACZ,CAAC,GAAG,YAAY,GAAG,gBAAgB,qBAAqB,MAAM,OAAO,gBAAgB,CAAC,GAAG,OAAO,MAAM,SAAU,MAAM;AAClH,kBAAQ;AACR,cAAI,KAAK,OAAO,EAAE,MAAM,OAAO;AAC3B,iBAAK,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,CAAC;AACnC,mBAAO;AACP,oBAAQ,MAAM;AAAA,UAClB;AAAA,QACJ,CAAC,CAAC,GAAG,gBAAgB,qBAAqB,MAAM,WAAW,kBAAkB,CAAC,GAAG,gBAAgB,iBAAiB,OAAO,OAAO,IAAI,GAAG,gBAAgB,iBAAiB,OAAO,MAAM,SAAU,MAAM;AACjM,oBAAU;AACV,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,iBAAiB,OAAO,OAAO,WAAY;AAC3D,oBAAU;AACV,sBAAY;AAAA,QAChB,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,qBAAqB,MAAM,UAAU,iBAAiB,CAAC,GAAG,gBAAgB,gBAAgB,OAAO,OAAO,WAAY;AACvJ,cAAI,WAAW;AACX,oBAAQ,MAAM;AAAA,UAClB,OAAO;AACH,oBAAQ,MAAM;AACd,iBAAK,OAAO,SAAS,OAAO;AAAA,UAChC;AAAA,QACJ,CAAC,GAAG,gBAAgB,gBAAgB,OAAO,IAAI,WAAY;AACvD,cAAI,WAAW;AACX,iBAAK,OAAO,UAAU,OAAO;AAAA,UACjC,OAAO;AACH,iBAAK,OAAO,SAAS,OAAO;AAAA,UAChC;AACA,iBAAO;AACP,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,gBAAgB,OAAO,OAAO,WAAY;AAC1D,kBAAQ,MAAM;AACd,eAAK,OAAO,SAAS,OAAO;AAAA,QAChC,CAAC,GAAG,gBAAgB,gBAAgB,OAAO,MAAM,SAAU,MAAM;AAC7D,qBAAW;AACX,cAAI,YAAY,YAAY;AACxB,oBAAQ,MAAM;AACd,mBAAO;AACP,sBAAU;AAAA,UACd;AAAA,QACJ,CAAC,GAAG,eAAe,GAAG,gBAAgB,qBAAqB,MAAM,SAAS,gBAAgB,CAAC,GAAG,gBAAgB,eAAe,OAAO,IAAI,WAAY;AAChJ,eAAK,OAAO,UAAU,OAAO;AAC7B,iBAAO;AACP,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,eAAe,OAAO,MAAM,IAAI,GAAG,cAAc,GAAG,gBAAgB,qBAAqB,MAAM,qBAAqB,wBAAwB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,MAAM,SAAU,MAAM;AACpO,qBAAW;AACX,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,IAAI,WAAY;AAC9D,iBAAO;AACP,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,OAAO,IAAI,GAAG,gBAAgB,uBAAuB,OAAO,OAAO,WAAY;AAC7H,sBAAY;AACZ,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,sBAAsB,GAAG,gBAAgB,qBAAqB,MAAM,gBAAgB,uBAAuB,CAAC,GAAG,gBAAgB,sBAAsB,OAAO,OAAO,WAAY;AAC/K,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,sBAAsB,OAAO,OAAO,WAAY;AAChE,eAAK,OAAO,eAAe,QAAQ;AACnC,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,sBAAsB,OAAO,IAAI,WAAY;AAC7D,sBAAY;AACZ,eAAK,OAAO,eAAe,QAAQ;AACnC,eAAK,OAAO,gBAAgB,SAAS;AACrC,iBAAO;AACP,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,sBAAsB,OAAO,OAAO,WAAY;AAChE,sBAAY;AACZ,sBAAY;AACZ,eAAK,OAAO,eAAe,QAAQ;AACnC,eAAK,OAAO,gBAAgB,SAAS;AACrC,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,sBAAsB,OAAO,MAAM,SAAU,MAAM;AACnE,sBAAY;AAAA,QAChB,CAAC,GAAG,qBAAqB,GAAG,gBAAgB,qBAAqB,MAAM,mBAAmB,wBAAwB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,OAAO,IAAI,GAAG,gBAAgB,uBAAuB,OAAO,OAAO,WAAY;AAC/O,eAAK,OAAO,eAAe,QAAQ;AACnC,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,IAAI,WAAY;AAC9D,sBAAY;AACZ,eAAK,OAAO,eAAe,QAAQ;AACnC,eAAK,OAAO,gBAAgB,SAAS;AACrC,iBAAO;AACP,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,MAAM,SAAU,MAAM;AACpE,sBAAY;AACZ,eAAK,OAAO,eAAe,QAAQ;AACnC,eAAK,OAAO,gBAAgB,SAAS;AACrC,qBAAW;AACX,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,sBAAsB,GAAG,gBAAgB,qBAAqB,MAAM,sBAAsB,wBAAwB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,OAAO,IAAI,GAAG,gBAAgB,uBAAuB,OAAO,OAAO,SAAU,MAAM;AACvP,yBAAe;AACf,sBAAY;AACZ,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,IAAI,WAAY;AAC9D,sBAAY;AACZ,eAAK,OAAO,gBAAgB,SAAS;AACrC,iBAAO;AACP,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,gBAAgB,uBAAuB,OAAO,MAAM,SAAU,MAAM;AACpE,yBAAe;AACf,sBAAY;AACZ,kBAAQ,MAAM;AAAA,QAClB,CAAC,GAAG,sBAAsB,GAAG,gBAAgB,qBAAqB,MAAM,iBAAiB,yBAAyB,CAAC,GAAG,gBAAgB,wBAAwB,OAAO,OAAO,SAAU,MAAM;AACxL,cAAI,cAAc;AACd,yBAAa;AAAA,UACjB,OAAO;AACH,iBAAK,OAAO,gBAAgB,SAAS;AACrC,oBAAQ,MAAM;AAAA,UAClB;AAAA,QACJ,CAAC,GAAG,gBAAgB,wBAAwB,OAAO,OAAO,SAAU,MAAM;AACtE,cAAI,iBAAiB,MAAM;AACvB,iBAAK,OAAO,gBAAgB,SAAS;AACrC,oBAAQ,MAAM;AAAA,UAClB,OAAO;AACH,yBAAa;AAAA,UACjB;AAAA,QACJ,CAAC,GAAG,gBAAgB,wBAAwB,OAAO,IAAI,SAAU,MAAM;AACnE,cAAI,cAAc;AACd,yBAAa;AAAA,UACjB,OAAO;AACH,iBAAK,OAAO,gBAAgB,SAAS;AACrC,mBAAO;AACP,oBAAQ,MAAM;AAAA,UAClB;AAAA,QACJ,CAAC,GAAG,gBAAgB,wBAAwB,OAAO,OAAO,SAAU,MAAM;AACtE,cAAI,cAAc;AACd,yBAAa;AAAA,UACjB,OAAO;AACH,iBAAK,OAAO,gBAAgB,SAAS;AACrC,wBAAY;AACZ,oBAAQ,MAAM;AAAA,UAClB;AAAA,QACJ,CAAC,GAAG,gBAAgB,wBAAwB,OAAO,MAAM,SAAU,MAAM;AACrE,uBAAa;AAAA,QACjB,CAAC,GAAG,uBAAuB,GAAG;AAE9B,YAAI,OAAO,SAASE,MAAK,MAAM;AAC3B,cAAI,QAAQ,OAAO;AACf,oBAAQ,IAAI,OAAO,IAAI;AAAA,UAC3B;AACA,cAAI,UAAUF,OAAM,aAAa,KAAK;AACtC,cAAI,SAAS,QAAQ,UAAU,IAAI,CAAC,KAAK,QAAQ,OAAO,KAAK,KAAK,QAAQ,OAAO,IAAI;AACrF,iBAAO,IAAI;AAAA,QACf;AAEA,QAAAA,OAAM,QAAQ,SAAU,KAAK;AACzB,cAAI,MAAM,IAAI;AACd,mBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC1B,iBAAK,IAAI,CAAC,CAAC;AAAA,UACf;AAAA,QACJ;AAEA,eAAOA;AAAA,MACX;AAEA,UAAI,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,QAAQ;AAAA,MACZ;AAEA,UAAI,OAAO,MAAM;AAEjB,UAAI,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAM;AAAA,MACV;AAEA,UAAI,aAAa,SAASG,YAAW,QAAQ;AACzC,eAAO,OAAO,OAAO;AAAA,UACjB,MAAM;AAAA,UACN,MAAM,SAAS;AAAA,UACf,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,YAAY,CAAC;AAAA,UACb,UAAU,CAAC;AAAA,QACf,GAAG,MAAM;AAAA,MACb;AAEA,UAAI,SAAS,SAASJ,QAAO,SAAS;AAClC,kBAAU,OAAO,OAAO;AAAA,UACpB,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,WAAW;AAAA,UACX,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,OAAO;AAAA,QACX,GAAG,OAAO;AAEV,YAAI,UAAU,QACV,WAAW,QACXK,WAAU,QACV,WAAW;AAEf,YAAIC,UAAS,IAAI,cAAc;AAE/B,YAAI,kBAAkB,SAASC,iBAAgB,MAAM;AACjD,kBAAQ,KAAK,MAAM;AAAA,YAEf,KAAK,KAAK;AACN,kBAAIF,aAAY,MAAM;AAClB,gBAAAA,WAAU;AACV,gBAAAA,SAAQ,OAAO,KAAK;AAAA,cACxB,OAAO;AACH,oBAAI,OAAO,WAAW;AAAA,kBAClB,MAAM,KAAK;AAAA,kBACX,QAAQA;AAAA,gBACZ,CAAC;AACD,gBAAAA,SAAQ,SAAS,KAAK,IAAI;AAC1B,gBAAAA,WAAU;AAAA,cACd;AACA;AAAA,YAEJ,KAAK,KAAK;AACN,kBAAI,SAASA,SAAQ;AACrB,kBAAI,CAAC,QAAQ,aAAa;AACtB,gBAAAA,SAAQ,SAAS;AAAA,cACrB;AACA,kBAAIA,SAAQ,SAAS,KAAK,OAAO;AAE7B;AAAA,cACJ;AACA,kBAAI,QAAQ,UAAU,WAAW,UAAU;AACvC,yBAAS,WAAW,CAAC;AAErB,gBAAAA,SAAQ,SAAS;AAAA,cACrB;AACA,kBAAI,CAAC,QAAQ,oBAAoB,WAAW,UAAU;AAClD,gBAAAC,QAAO,KAAK,QAAQ,YAAYD,SAAQ,MAAMA,QAAO;AACrD,gBAAAC,QAAO,KAAK,OAAOD,SAAQ,MAAMA,QAAO;AAAA,cAC5C;AACA,kBAAIA,aAAY,UAAU;AAEtB,wBAAQ,mBAAmB,MAAM;AACjC,gBAAAC,QAAO,KAAK,QAAQ,WAAWD,QAAO;AACtC,2BAAW;AAAA,cACf;AACA,cAAAA,WAAU;AACV;AAAA,YAEJ,KAAK,KAAK;AACN,kBAAIA,UAAS;AACT,gBAAAA,SAAQ,SAAS,KAAK,WAAW;AAAA,kBAC7B,MAAM,SAAS;AAAA,kBACf,OAAO,KAAK;AAAA,kBACZ,QAAQ,QAAQ,cAAcA,WAAU;AAAA,gBAC5C,CAAC,CAAC;AAAA,cACN;AACA;AAAA,YAEJ,KAAK,KAAK;AACN,yBAAW,KAAK;AAChB,cAAAA,SAAQ,WAAW,QAAQ,IAAI;AAC/B;AAAA,YAEJ,KAAK,KAAK;AACN,cAAAA,SAAQ,WAAW,QAAQ,IAAI,KAAK;AACpC;AAAA,UACR;AAAA,QACJ;AAEA,QAAAC,QAAO,QAAQ,WAAY;AACvB,oBAAU,MAAM,OAAO,EAAE,OAAO,QAAQ,MAAM,CAAC;AAC/C,kBAAQ,GAAG,QAAQ,eAAe;AAClC,qBAAW,WAAW;AACtB,UAAAD,WAAU;AACV,qBAAW;AACX,UAAAC,QAAO,QAAQ,QAAQ;AAAA,QAC3B;AAEA,QAAAA,QAAO,MAAM;AACb,eAAOA;AAAA,MACX;AAEA,UAAI,YAAY,SAASE,WAAU,KAAK,SAAS;AAC7C,kBAAU,OAAO,OAAO,CAAC,GAAG,SAAS,EAAE,QAAQ,OAAO,WAAW,IAAI,CAAC;AACtE,YAAIF,UAAS,OAAO,OAAO;AAC3B,YAAI,MAAM;AACV,QAAAA,QAAO,GAAG,QAAQ,SAAU,KAAK;AAC7B,gBAAM;AAAA,QACV,CAAC;AACD,QAAAA,QAAO,MAAM,GAAG;AAChB,eAAO;AAAA,MACX;AAEA,UAAI,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,UAAI,WAAW,OAAO;AAEtB,UAAI,aAAa,SAASG,YAAW,OAAO;AAC1C,YAAI,SAAS,SAAS,SAAS,OAAO,OAAO,SAAS,GAAG;AAAA,UACvD,aAAa;AAAA,QACf,CAAC;AACD,YAAI,UAAU,OAAO,YAAY,OAAO,SAAS,SAAS,KAAK,OAAO,SAAS,MAAM,SAAU,MAAM;AACnG,iBAAO,KAAK,SAAS;AAAA,QACvB,CAAC;AACD,YAAI,SAAS;AACX,iBAAO,OAAO,SAAS,WAAW,IAAI,OAAO,SAAS,CAAC,IAAI,OAAO;AAAA,QACpE,OAAO;AACL,gBAAM,MAAM,kBAAkB;AAAA,QAChC;AAAA,MACF;AACA,UAAI,WAAW,SAASC,UAAS,MAAM;AACrC,eAAO,eAAe,MAAM,SAAU,KAAK;AACzC,cAAI,CAAC,aAAa,GAAG,GAAG;AACtB,mBAAO,YAAY,GAAG;AAAA,UACxB;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AACA,UAAI,cAAc,SAASC,aAAY,MAAM;AAC3C,eAAO,KAAK,QAAQ,kBAAkB,SAAU,KAAK,QAAQ;AAC3D,iBAAO,OAAO,YAAY;AAAA,QAC5B,CAAC;AAAA,MACH;AACA,UAAI,eAAe,SAASC,cAAa,MAAM;AAC7C,eAAO,qBAAqB,KAAK,IAAI;AAAA,MACvC;AACA,UAAI,aAAa,SAASC,YAAW,MAAM;AACzC,YAAI,MAAM;AACR,cAAI,MAAM,OAAO,IAAI;AACrB,iBAAO,QAAQ,KAAK,GAAG,IAAI,YAAY,OAAO,IAAI,QAAQ,OAAO,iBAAiB,GAAG,KAAK,IAAI;AAAA,QAChG;AACA,eAAO;AAAA,MACT;AACA,UAAI,aAAa,SAASC,YAAW,MAAM;AACzC,eAAO,OAAO,IAAI,EAAE,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,QAAQ,EAAE,QAAQ,MAAM,QAAQ,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAAA,MACvI;AAEA,UAAI,aAAa,SAASC,YAAW,OAAO;AAC1C,YAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC9E,qBAAqB,KAAK,eAC1B,gBAAgB,uBAAuB,SAAS,SAAU,MAAM;AAC9D,iBAAO;AAAA,QACT,IAAI,oBACJ,iBAAiB,KAAK,WACtB,YAAY,mBAAmB,SAAS,QAAQ;AAClD,YAAI,eAAe,SAASC,cAAaC,QAAO;AAC9C,cAAI;AACJ,cAAI,cAAcA,MAAK;AACvB,cAAI,WAAW;AACb,gBAAI,SAAS,CAAC;AAAA,UAChB;AACA,iBAAO;AAAA,QACT;AACA,eAAO,aAAa,WAAW,KAAK,CAAC;AAAA,MACvC;AACA,eAAS,SAAS;AAChB,iBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,eAAK,IAAI,IAAI,UAAU,IAAI;AAAA,QAC7B;AACA,eAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,cAAI;AACF,gBAAI,MAAM,WAAW,MAAM,QAAQ,IAAI;AACvC,oBAAQ,GAAG;AAAA,UACb,SAASC,IAAG;AACV,mBAAOA,EAAC;AAAA,UACV;AAAA,QACF,CAAC;AAAA,MACH;AAEA,UAAI,YAAY,SAASC,WAAU,MAAM;AACvC,YAAI,OAAO,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAC9E,qBAAqB,KAAK,eAC1B,gBAAgB,uBAAuB,SAAS,SAAU,KAAK,OAAO,QAAQ;AAC5E,iBAAO,GAAG,OAAO,KAAK,IAAK,EAAE,OAAO,OAAO,KAAK,GAAG,GAAI;AAAA,QACzD,IAAI,oBACJ,qBAAqB,KAAK,eAC1B,gBAAgB,uBAAuB,SAAS,SAAU,MAAM;AAC9D,iBAAO;AAAA,QACT,IAAI,oBACJ,iBAAiB,KAAK,WACtB,YAAY,mBAAmB,SAAS,OAAO;AACjD,YAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,iBAAO,KAAK,IAAI,SAAUC,MAAK;AAC7B,mBAAOD,WAAUC,MAAK;AAAA,cACpB;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH,CAAC,EAAE,KAAK,EAAE;AAAA,QACZ;AACA,YAAI,MAAM,cAAc,IAAI;AAC5B,YAAI,IAAI,SAAS,QAAQ;AACvB,iBAAO,WAAW,IAAI,KAAK;AAAA,QAC7B;AACA,YAAI,aAAa;AACjB,iBAAS,QAAQ,IAAI,YAAY;AAC/B,cAAI,UAAU,cAAc,MAAM,IAAI,WAAW,IAAI,GAAG,YAAY,IAAI,IAAI;AAC5E,wBAAc,UAAU,IAAI,OAAO,OAAO,IAAI;AAAA,QAChD;AACA,eAAO,IAAI,YAAY,IAAI,SAAS,SAAS,KAAK,CAAC,YAAY,IAAI,OAAO,IAAI,IAAI,EAAE,OAAO,YAAY,GAAG,EAAE,OAAOD,WAAU,IAAI,UAAU;AAAA,UACzI;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC,GAAG,IAAI,EAAE,OAAO,IAAI,MAAM,GAAG,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,OAAO,YAAY,IAAI;AAAA,MAChF;AAEA,UAAI,WAAW,OAAO,OAAO,CAAC,GAAG;AAAA,QAC/B,OAAO;AAAA,QACP,WAAW;AAAA,QACX;AAAA,MACF,CAAC;AAED,aAAO;AAAA,IAET,EAAE;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEx/BF,SAAS,SAAS;ACDlB,SAAS,KAAAE,UAAS;AEAlB,SAAS,KAAAA,UAAS;ACAlB,SAAS,KAAAA,UAAS;ACAlB,SAAS,KAAAA,UAAS;ACAlB,SAAS,KAAAA,UAAS;ACAlB,SAAS,KAAAA,UAAS;ACAlB,SAAS,KAAAA,UAAS;ACKlB,SAAS,KAAAA,UAAS;ACLlB,SAAS,KAAAA,WAAS;ACIlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACJlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACIlB,SAAS,KAAAA,WAAS;ACJlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACClB,SAAS,KAAAA,WAAS;ACDlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACClB,SAAS,KAAAA,WAAS;ACDlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,WAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;ACAlB,SAAS,KAAAA,YAAS;AtIKlB,IAAM,eAGF;EACF,IAAI;IACF,UAAU;IACV,UAAU;MACR,KAAK;MACL,KAAK;MACL,IAAI;IACN;EACF;EACA,GAAG;IACD,UAAU;IACV,UAAU;MACR,IAAI;MACJ,GAAG;IACL;EACF;EACA,QAAG;IACD,UAAU;IACV,UAAU;MACR,SAAI;MACJ,QAAG;MACH,SAAI;MACJ,SAAI;MACJ,MAAM;MACN,SAAI;MACJ,SAAI;MACJ,SAAI;IACN;EACF;EACA,GAAG;IACD,UAAU;IACV,UAAU;MACR,IAAI;MACJ,GAAG;MACH,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;IACN;EACF;EACA,GAAG;IACD,UAAU;IACV,UAAU;MACR,SAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,IAAI;MACJ,IAAI;IACN;EACF;EACA,GAAG;IACD,UAAU;IACV,UAAU;MACR,IAAI;MACJ,IAAI;MACJ,SAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG;IACL;EACF;EACA,IAAI;IACF,UAAU;IACV,UAAU;MACR,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,GAAG;IACL;EACF;EACA,KAAK;IACH,UAAU;IACV,UAAU;MACR,KAAK,MAAM,KAAK;IAClB;EACF;EACA,IAAI;IACF,UAAU;IACV,UAAU;MACR,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,SAAI;MACJ,IAAI;MACJ,GAAG;IACL;EACF;EACA,IAAI;IACF,UAAU;IACV,UAAU;MACR,IAAI;MACJ,SAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG;MACH,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,KAAK;IACP;EACF;AACF;AAEA,IAAM,gCAAgC,oBAAI,IAAI;AAC9C,WAAW,CAAC,UAAU,IAAI,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC3D,gCAA8B,IAAI,QAAQ;AAC1C,aAAW,WAAW,OAAO,KAAK,KAAK,QAAQ,GAAG;AAChD,kCAA8B,IAAI,OAAO;EAC3C;AACF;AAEA,SAAS,qBAAqB,MAAwB;AACpD,aAAW,CAAC,UAAU,IAAI,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC3D,QAAI,QAAQ,KAAK,UAAU;AACzB,aAAO;QACL,UAAU,KAAK;QACf,kBAAkB,KAAK,SAAS,IAAI;MACtC;IACF;EACF;AACA,SAAO;IACL,UAAU;IACV,kBAAkB;EACpB;AACF;AAEA,IAAM,uBAAuB;EAC3B,MAAM;EACN,GAAG;EACH,MAAM;EACN,GAAG;EACH,MAAM;EACN,GAAG;EACH,MAAM;EACN,GAAG;EACH,MAAM;EACN,GAAG;EACH,OAAO;EACP,GAAG;EACH,OAAO;EACP,GAAG;EACH,OAAO;EACP,GAAG;EACH,QAAG;EACH,MAAM;EACN,GAAG;EACH,MAAM;EACN,GAAG;AACL;AA2BO,SAAS,sBACdC,IAUA;AACA,MAAIA,OAAM,UAAaA,OAAM;AAC3B,WAAO,EAAE,YAAY,MAAM,aAAa,MAAM,OAAO,KAAK;AAC5D,MAAI,OAAOA,OAAM,YAAYA,GAAE,MAAM,aAAa;AAChD,WAAO;MACL,OAAO,OAAO,WAAWA,EAAC;MAC1B,YAAY;MACZ,aAAa;IACf;AACF,MAAI,OAAOA,OAAM;AACf,WAAO,EAAE,OAAOA,IAAG,YAAY,MAAM,aAAa,KAAK;AACzD,MAAI,OAAOA,OAAM,YAAY,OAAOA,MAAK,OAAOA,IAAG;AACjD,UAAM,EAAE,YAAY,YAAY,IAAI,sBAAsBA,GAAE,CAAC;AAC7D,UAAM,UAAU,sBAAsBA,GAAE,CAAC;AACzC,UAAM,UAAU,sBAAsBA,GAAE,CAAC;AACzC,QAAI,QAAQ,UAAU,QAAQ,QAAQ,UAAU,MAAM;AACpD,aAAO,EAAE,YAAY,MAAM,aAAa,MAAM,OAAO,KAAK;IAC5D;AACA,WAAO;MACL;MACA;MACA,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,QAAQ;MACb;IACF;EACF;AACA,QAAM,wBAAwBA,GAAE,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AACtE,QAAM,gBAAgB,sBAAsB,MAAM,UAAU,IAAI,CAAC;AACjE,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI,MAAM,8BAA8BA,EAAC,GAAG;EACpD;AACA,QAAM,OAAO,cAAc,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;AAEtD,QAAM,aAAaA,GAAE,MAAM,GAAG,CAAC,KAAK,MAAM;AAC1C,MACE,QAAQ,wBACR,CAAC,8BAA8B,IAAI,IAAI,GACvC;AACA,UAAM,eACJ,qBAAqB,IAAyC;AAChE,WAAO;MACL,YAAY;MACZ,aAAa;MACb,OAAO,OAAO,WAAW,UAAU,IAAI;IACzC;EACF;AAEA,QAAM,EAAE,UAAU,iBAAiB,IAAI,qBAAqB,IAAI;AAEhE,SAAO;IACL,YAAY;IACZ,aAAa;IACb,OAAO,mBAAmB,OAAO,WAAW,UAAU;EACxD;AACF;AC3MO,IAAM,aAAa,EACvB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAE5C,IAAM,cAAc,EACxB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM,EAChD,UAAU,CAAC,UAAU;AACpB,SAAO,OAAO,WAAW,MAAM,YAAY,EAAE,CAAC;AAChD,CAAC;AAEI,IAAM,aAAa,EACvB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAE5C,IAAM,UAAU,EACpB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAE5C,IAAM,SAAS,EACnB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAE5C,IAAM,YAAY,EACtB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAQ5C,IAAM,WAAW;AAEjB,IAAM,UAAU,EACpB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAE5C,IAAM,cAAc,EACxB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAACA,OAAM,sBAAsBA,EAAC,EAAE,KAAM;AAE5C,IAAM,OAAO;AAEb,IAAM,KAAK;AAEX,IAAM,YAAY,EAAE,OAAO,EAAE,SAAS;AAKtC,IAAM,WAAW,EACrB,OAAO,EACP,GAAG,EAAE,OAAO,CAAC,EACb,UAAU,CAAC,QAAgB;AAC1B,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,MAAI,IAAI,SAAS,KAAK,GAAG;AACvB,WAAO,OAAO,WAAW,IAAI,MAAM,KAAK,EAAE,CAAC,CAAE;EAC/C;AACA,MAAI,IAAI,SAAS,KAAK,GAAG;AACvB,WAAQ,OAAO,WAAW,IAAI,MAAM,KAAK,EAAE,CAAC,CAAE,IAAI,MAAO,KAAK;EAChE;AACA,SAAO,OAAO,WAAW,GAAG;AAC9B,CAAC;AAEI,IAAM,mBAAmB,EAC7B,OAAO,EACP,GAAG,EAAE,OAAO,EAAE,SAAS,KAAK,CAAC,EAC7B,UAAU,CAACA,OAAM;AAChB,MAAI,OAAOA,OAAM,UAAU;AACzB,UAAM,YAAYA,GAAE,QAAQ,OAAO,EAAE;AACrC,UAAM,MAAM,OAAO,WAAW,SAAS;AACvC,QAAI,OAAO,MAAM,GAAG,GAAG;AACrB,YAAM,IAAI,MAAM,kBAAkB;IACpC;AACA,WAAO;EACT;AACA,SAAOA;AACT,CAAC,EACA,SAAS,yBAAyB;AEnI9B,IAAM,mBAAmB,CAO9B,aAOS;AAAC;AAIZ,iBAQE,eAAe;AAEjB,iBAQE,iBAAiB;AAEnB,iBAOE,IAAI;AAEN,iBAOE,0BAA0B;AAmBrB,IAAM,0BAA0B,CAKrC,aACS;AAAC;AASZ,wBAAgD,IAAI;AACpD;EACE;AACF;AACA,wBAAgD,mBAAmB;AACnE,wBAAgD,mBAAmB;AACnE;EACE;AACF;AAIA,wBAAgD,IAAI;AD5G7C,IAAM,QAAQD,GAAE,OAAO;EAC5B,GAAG;EACH,GAAG;AACL,CAAC;AAEM,IAAM,WAAW;AAiBxB,iBAAuC,IAAI;AAC3C,iBAA6C,IAAI;AEvB1C,IAAM,SAASA,GAAE,OAAO;EAC7B,GAAG;EACH,GAAG;EACH,GAAG;AACL,CAAC;AAEM,IAAM,YAAY;AAUzB,iBAAyC,IAAI;ACjBtC,IAAM,OAAOA,GAAE,OAAO;EAC3B,OAAOA,GAAE,OAAO;EAChB,QAAQA,GAAE,OAAO;AACnB,CAAC;AAUD,iBAAqC,IAAI;ACbzC,IAAM,WAAW,CAACE,YAA2B;AAC3C,QAAM,QAAQ;AACd,SAAO,MAAM;IACX,EAAE,QAAAA,QAAO;IACT,MAAM,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM,CAAC;EACtD,EAAE,KAAK,EAAE;AACX;AAIO,IAAM,8BAA8B,CAAC,WAAmB;AAC7D,SAAOF,GACJ,OAAO,EACP,SAAS,EACT,QAAQ,MAAM,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,EAAE;AAC9C;ACJO,IAAM,kBAAkBA,GAAE,KAAK;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF,CAAC;AAID,iBAA2D,IAAI;AEzBxD,IAAM,gBAAgBA,GAAE,KAAK;EAClC;EACA;EACA;EACA;EACA;EACA;AACF,CAAC;AAYD,iBAAqD,IAAI;ACDlD,IAAM,wBAAwBA,GAAE,OAAO;EAC5C,MAAMA,GAAE,QAAQ,kBAAkB;EAClC,OAAOA,GAAE,OAAO,EAAE,SAAS;EAC3B,qBAAqBA,GAAE,OAAO;EAC9B,MAAMA,GAAE,OAAO;EACf,0BAA0BA,GAAE,OAAO,EAAE,SAAS;EAC9C,uBAAuBA,GACpB,OAAO,eAAeA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC,EACzC,SAAS;EACZ,eAAeA,GAAE,OAAO,EAAE,SAAS;EACnC,0BAA0BA,GAAE,QAAQ,EAAE,SAAS;EAC/C,sCAAsCA,GAAE,MAAMA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC,EAAE,SAAS;EAC5E,iBAAiBA,GAAE,OAAO,EAAE,SAAS;EACrC,eAAeA,GAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAID,iBAAmE,IAAI;AF/BhE,IAAM,0BAA0B,sBAAsB,OAAO;EAClE,OAAOA,GAAE,QAAQ,kBAAkB;EACnC;EACA,oBAAoB,QAAQ,SAAS;EACrC,qBAAqBA,GAAE,OAAO,EAAE,SAAS;EACzC,6BAA6B,SAAS,SAAS;AACjD,CAAC;AAgBD,iBAAuE,IAAI;AGtBpE,IAAM,yBAAyB,sBAAsB,OAAO;EACjE,OAAOA,IAAE,QAAQ,iBAAiB;EAClC;EACA,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAC1C,CAAC;AAcD,iBAAqE,IAAI;ACnBlE,IAAM,sBAAsB,sBAAsB,OAAO;EAC9D,OAAOA,IAAE,QAAQ,cAAc;AACjC,CAAC;AAYD,iBAA+D,IAAI;ACV5D,IAAM,oBAAoB,oBAAoB,OAAO;EAC1D,OAAOA,IAAE,QAAQ,YAAY;EAC7B,OAAOA,IAAE,OAAO,EAAE,SAAS;EAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAcD,iBAA2D,IAAI;ACtBxD,IAAM,uBAAuB,sBAAsB,OAAO;EAC/D,OAAOA,IAAE,QAAQ,eAAe;AAClC,CAAC;AAYD,iBAAiE,IAAI;ACd9D,IAAM,qBAAqB,sBAAsB,OAAO;EAC7D,OAAOA,IAAE,QAAQ,aAAa;AAChC,CAAC;AAYD,iBAA6D,IAAI;ACb1D,IAAM,6BAA6B,sBAAsB,OAAO;EACrE,OAAOA,IAAE,QAAQ,qBAAqB;EACtC;AACF,CAAC;AAiBD,iBAA2E,IAAI;AErBxE,IAAM,qBAAqB,sBAAsB,OAAO;EAC7D,OAAOA,IAAE,QAAQ,aAAa;EAE9B,qBAAqBA,IAClB,OAAO,EACP,SAAS,+CAA+C;EAE3D,sBAAsBA,IACnB,OAAO,EACP,SAAS,iDAA8C;AAC5D,CAAC;AAWD,iBAA6D,IAAI;ACpB1D,IAAM,wBAAwB,sBAAsB,OAAO;EAChE,OAAOA,IAAE,QAAQ,gBAAgB;EACjC,UAAU;AACZ,CAAC;AAaD,iBAAmE,IAAI;AChBhE,IAAM,yBAAyB,sBAAsB,OAAO;EACjE,OAAOA,IAAE,QAAQ,iBAAiB;EAClC;EACA,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAC1C,CAAC;AAcD,iBAAqE,IAAI;ACnBlE,IAAM,4BAA4B,sBAAsB,OAAO;EACpE,OAAOA,IAAE,QAAQ,oBAAoB;AACvC,CAAC;AAcD,iBAAyE,IAAI;ACftE,IAAM,8BAA8B,sBAAsB,OAAO;EACtE,OAAOA,IAAE,QAAQ,sBAAsB;EACvC,gBAAgB;AAClB,CAAC;AAcD;EACE;AACF;ACpBO,IAAM,wBAAwB,sBAAsB,OAAO;EAChE,OAAOA,IAAE,QAAQ,gBAAgB;EACjC,WAAWA,IAAE,OAAO,EAAE,SAAS,iBAAiB;EAChD,kBAAkBA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,wBAAwB;AAC3E,CAAC;AAcD,iBAAmE,IAAI;AClBhE,IAAM,2BAA2B,sBAAsB,OAAO;EACnE,OAAOA,IAAE,QAAQ,mBAAmB;EACpC,WAAWA,IAAE,OAAO;EACpB,QAAQA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,MAAM;AAC9D,CAAC;AAaD,iBAAuE,IAAI;ACjBpE,IAAM,uBAAuB,sBAAsB,OAAO;EAC/D,OAAOA,IAAE,QAAQ,eAAe;AAClC,CAAC;AAYD,iBAAiE,IAAI;ACb9D,IAAM,0BAA0B,sBAAsB,OAAO;EAClE,OAAOA,IAAE,QAAQ,kBAAkB;EACnC,kBAAkB;EAClB,8BAA8B,WAAW,SAAS;EAClD;AACF,CAAC;AAeD,iBAAuE,IAAI;ACrBpE,IAAM,2BAA2B,sBAAsB,OAAO;EACnE,OAAOA,IAAE,QAAQ,mBAAmB;EACpC,iBAAiBA,IAAE,KAAK,CAAC,OAAO,KAAK,CAAC;AACxC,CAAC;AAkBD,iBAAyE,IAAI;ACrBtE,IAAM,2BAA2B,sBAAsB,OAAO;EACnE,OAAOA,IAAE,QAAQ,mBAAmB;EACpC,mBAAmBA,IAAE,KAAK,CAAC,OAAO,cAAc,CAAC,EAAE,SAAS;EAC5D,WAAWA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS;EAC/C,cAAcA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;EACzD,eAAeA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;EAC1D,OAAOA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;EAClD,QAAQA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AACrD,CAAC;AAsBD,iBAAuE,IAAI;AC9BpE,IAAM,uBAAuB,sBAAsB,OAAO;EAC/D,OAAOA,IAAE,QAAQ,eAAe;EAChC,cAAcA,IAAE,KAAK,CAAC,KAAK,GAAG,CAAC;EAC/B,aAAaA,IAAE,KAAK,CAAC,eAAe,WAAW,CAAC;AAClD,CAAC;AAiBD,iBAAiE,IAAI;ACrB9D,IAAM,uBAAuB,sBAAsB,OAAO;EAC/D,OAAOA,IAAE,QAAQ,eAAe;AAClC,CAAC;AAWD,iBAAiE,IAAI;ACR9D,IAAM,0BAA0BA,IAAE,OAAO;EAC9C,MAAMA,IAAE,QAAQ,yBAAyB;EACzC,MAAMA,IAAE,OAAO,EAAE,SAAS;EAC1B,sBAAsBA,IAAE,OAAO,EAAE,SAAS;EAC1C,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,YAAY,UAAU,SAAS;AACjC,CAAC;AAGD,iBAAiE,IAAI;ACjB9D,IAAM,gCAAgCA,IAC1C,OAAO;EACN,MAAMA,IAAE,QAAQ,+BAA+B;EAC/C,kCAAkC;IAChC;EACF;EACA,qBAAqBA,IAAE,OAAO;EAC9B,eAAeA,IAAE,OAAO;EACxB,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IACT,QAAQ,+BAA+B,EACvC,QAAQ,+BAA+B;EAC1C,SAASA,IAAE,OAAO;AACpB,CAAC,EACA,SAAS,uCAAuC;AAsBnD,iBAGE,IAAI;ACvCC,IAAM,0CAA0CA,IACpD,OAAO;EACN,MAAMA,IAAE,QAAQ,yCAAyC;EACzD,4CAA4C;IAC1C;EACF;EACA,YAAYA,IACT,QAAQ,yCAAyC,EACjD,QAAQ,yCAAyC;EACpD,gBAAgBA,IAAE,OAAO,EAAE,SAAS;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,4BAA4BA,IAAE,OAAO,EAAE,SAAS;EAChD,SAASA,IAAE,OAAO;EAClB,YAAYA,IACT,OAAO;IACN,GAAGA,IAAE,OAAO,EAAE,SAAS;IACvB,GAAGA,IAAE,OAAO,EAAE,SAAS;EACzB,CAAC,EACA,SAAS;EACZ,kBAAkBA,IACf,OAAO;IACN,GAAGA,IAAE,OAAO,EAAE,SAAS;IACvB,GAAGA,IAAE,OAAO,EAAE,SAAS;EACzB,CAAC,EACA,SAAS;AACd,CAAC,EACA,SAAS,wDAAwD;AA+BpE,iBAGE,IAAI;AC5DC,IAAM,mCAAmCA,IAC7C,OAAO;EACN,MAAMA,IAAE,QAAQ,kCAAkC;EAClD,qCAAqC;IACnC;EACF;EACA,YAAYA,IACT,QAAQ,kCAAkC,EAC1C,QAAQ,kCAAkC;EAC7C,SAASA,IAAE,OAAO;EAClB,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,2BAA2BA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACxD,qBAAqBA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AACpD,CAAC,EACA,SAAS,8DAA8D;AAwB1E,iBAGE,IAAI;AC3CC,IAAM,kCAAkCA,IAC5C,OAAO;EACN,MAAMA,IAAE,QAAQ,iCAAiC;EACjD,oCAAoC;IAClC;EACF;EACA,qBAAqBA,IAAE,OAAO;EAC9B,eAAeA,IAAE,OAAO;EACxB,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IACT,QAAQ,iCAAiC,EACzC,QAAQ,iCAAiC;EAC5C,SAASA,IAAE,OAAO;AACpB,CAAC,EACA,SAAS,iCAAiC;AAsB7C,iBAGE,IAAI;ACvCC,IAAM,mCAAmCA,IAC7C,OAAO;EACN,MAAMA,IAAE,QAAQ,kCAAkC;EAClD,qCAAqC;IACnC;EACF;EACA,cAAcA,IACX,QAAQ,kCAAkC,EAC1C,QAAQ,kCAAkC;EAC7C,SAASA,IAAE,OAAO;EAClB,qBAAqBA,IAAE,OAAO;EAC9B,gBAAgBA,IAAE,OAAO;EACzB,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA;EACC;AACF;AAsBF,iBAGE,IAAI;ACtCC,IAAM,8BAA8B,sBAAsB,OAAO;EACtE,OAAOA,IAAE,QAAQ,sBAAsB;AACzC,CAAC;AAgBD;EACE;AACF;ACpBO,IAAM,sBAAsB,sBAAsB,OAAO;EAC9D,OAAOA,IAAE,QAAQ,cAAc;AACjC,CAAC;AAYD,iBAAiE,IAAI;ArBqF9D,IAAM,uBAAuBA,IAAE,MAAM;EAC1C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF,CAAC;AAqCD,iBAAuD,IAAI;AsBzKpD,IAAM,cAAcA,IAAE,OAAO;EAClC,MAAMA,IAAE,QAAQ,aAAa;EAC7B,YAAYA,IAAE,OAAO,EAAE,SAAS;EAChC,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,MAAMA,IAAE,OAAO;EACf,gBAAgBA,IAAE,OAAO;EACzB,qBAAqBA,IAAE,OAAO,EAAE,SAAS;EACzC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iCAAiCA,IAAE,OAAO,EAAE,SAAS;EACrD,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAC1C,CAAC;AAqBD,iBAAiD,IAAI;ACpB9C,IAAM,eAAeA,IAAE,OAAO;EACnC,MAAMA,IAAE,QAAQ,cAAc;EAC9B,iBAAiBA,IAAE,OAAO;EAC1B,2BAA2BA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAC7C,0BAA0BA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAC5C,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iCAAiCA,IAAE,OAAO,EAAE,SAAS;EACrD,YAAYA,IAAE,OAAO,EAAE,SAAS;EAChC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;EACzC,cAAcA,IAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAID,iBAAmD,IAAI;AC1BhD,IAAM,eAAeA,IAAE,OAAO;EACnC,MAAMA,IAAE,QAAQ,cAAc;EAC9B,iBAAiBA,IAAE,OAAO;EAC1B,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,sBAAsBA,IAAE,OAAO,EAAE,SAAS;EAC1C,wBAAwBA,IAAE,OAAO,EAAE,SAAS;EAC5C,eAAeA,IAAE,QAAQ,EAAE,SAAS;EACpC,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;EAC5C,MAAMA,IAAE,OAAO,EAAE,SAAS;EAC1B,yBAAyBA,IAAE,QAAQ,EAAE,SAAS;AAChD,CAAC;AAiBD,iBAAmD,IAAI;AC3BhD,IAAM,aAAaA,IAAE,OAAO;EACjC,MAAMA,IAAE,QAAQ,YAAY;EAC5B,eAAeA,IAAE,OAAO;EACxB,MAAMA,IAAE,OAAO;EACf,yBAAyBA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAC3C,UAAUA,IAAE,QAAQ,EAAE,SAAS;EAC/B,WAAWA,IAAE,QAAQ,EAAE,SAAS;EAChC,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;EACxC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;EACvC,4BAA4BA,IAAE,QAAQ,EAAE,SAAS;EACjD,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iCAAiCA,IAAE,OAAO,EAAE,SAAS;AACvD,CAAC;AAoBD,iBAA+C,IAAI;ACjC5C,IAAM,eAAeA,IACzB,OAAO;EACN,MAAMA,IAAE,QAAQ,cAAc;EAC9B,iBAAiBA,IAAE,OAAO;EAC1B,iBAAiBA,IAAE,OAAO;EAC1B,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,sCAAsC;AAelD,iBAAmD,IAAI;ACtBhD,IAAM,0BAA0BA,IACpC,OAAO;EACN,MAAMA,IAAE,QAAQ,yBAAyB;EACzC,4BAA4BA,IAAE,OAAO;EACrC,iBAAiBA,IAAE,OAAO;EAC1B,eAAeA,IAAE,OAAO;EACxB,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,6CAA6C;AAgBzD,iBAAqE,IAAI;AExBlE,IAAM,aAAa;EACxB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AAEO,IAAM,eAAeA,IAAE,KAAK,UAAU;AAEtC,IAAM,YAAY,aACtB;EACCA,IAAE,OAAO;IACP,MAAM;EACR,CAAC;AACH,EACC,UAAU,CAAC,UAAU;AACpB,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;EACT;AACA,SAAO,MAAM;AACf,CAAC;AAMH,iBAA6C,IAAI;AAE1C,IAAM,gBAAgBA,IAAE,KAAK,CAAC,OAAO,QAAQ,CAAC;AD9B9C,IAAM,6BAA6BA,IACvC,OAAO;EACN,MAAMA,IAAE,QAAQ,4BAA4B;EAC5C,+BAA+BA,IAAE,OAAO;EACxC,iBAAiBA,IAAE,OAAO;EAC1B,eAAeA,IAAE,OAAO;EACxB,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AACvC,CAAC,EACA,SAAS,4DAA4D;AAqBxE,iBAA2E,IAAI;AE/BxE,IAAM,qCAAqCA,IAC/C,OAAO;EACN,MAAMA,IAAE,QAAQ,oCAAoC;EACpD,uCAAuC;IACrC;EACF;EACA,YAAYA,IACT,QAAQ,oCAAoC,EAC5C,QAAQ,oCAAoC;EAC/C,SAASA,IAAE,OAAO;EAClB,qBAAqBA,IAAE,OAAO;EAC9B,gBAAgBA,IAAE,OAAO;EACzB,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA;EACC;AACF;AAsBF,iBAGE,IAAI;ACzCC,IAAM,6BAA6BA,IACvC,OAAO;EACN,MAAMA,IAAE,QAAQ,4BAA4B;EAC5C,+BAA+B;IAC7B;EACF;EACA,YAAYA,IACT,QAAQ,4BAA4B,EACpC,QAAQ,4BAA4B;EACvC,SAASA,IAAE,OAAO;EAClB,qBAAqBA,IAAE,OAAO,EAAE,SAAS;EACzC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA;EACC;AACF;AAuBF,iBAA2E,IAAI;AC3BxE,IAAM,gBAAgBA,IAC1B,OAAO;EACN,MAAMA,IAAE,QAAQ,eAAe;EAC/B,wBAAwBA,IAAE,OAAO,EAAE,SAAS;EAC5C,OAAO;EACP,QAAQ;EACR,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,GAAG;EACH,GAAG;EACH,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,8BAA8B;AAK1C,iBAAqD,IAAI;AClBlD,IAAM,iBAAiBA,IAAE,OAAO;EACrC,MAAMA,IAAE,QAAQ,gBAAgB;EAChC,wBAAwBA,IAAE,OAAO;EACjC,YAAYA,IAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;EAC7C,WAAWA,IAAE,QAAQ,EAAE,SAAS;EAChC,QAAQA,IAAE,MAAM,KAAK;EACrB,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAKD,iBAAuD,IAAI;ACnBpD,IAAM,uBAAuBA,IAAE;EACpCA,IAAE,OAAO;IACP,aAAa,OAAO,SAAS;IAC7B,cAAc,OAAO,SAAS;IAC9B,YAAY,OAAO,SAAS;IAC5B,eAAe,OAAO,SAAS;EACjC,CAAC;AACH;AAmDO,IAAM,+CAA+CA,IAAE,OAAO;EACnE,WAAWA,IAAE,OAAO;EACpB,YAAYA,IAAE,OAAO;EACrB,UAAUA,IAAE,OAAO,EAAE,SAAS;EAC9B,aAAaA,IAAE,OAAO,EAAE,SAAS;AACnC,CAAC;AAED,iBAGE,IAAI;AAEC,IAAM,gDAAgDA,IAAE,OAAO;EACpE,WAAWA,IACR,OAAO;IACN,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC;;IAExB,WAAWA,IAAE,KAAK,CAAC,iBAAiB,eAAe,CAAC,EAAE,SAAS;EACjE,CAAC,EACA,SAAS;EACZ,YAAYA,IACT,OAAO;IACN,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC;;IAExB,WAAWA,IAAE,KAAK,CAAC,iBAAiB,eAAe,CAAC,EAAE,SAAS;EACjE,CAAC,EACA,SAAS;EACZ,UAAUA,IACP,OAAO;IACN,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC;;IAExB,WAAWA,IAAE,KAAK,CAAC,iBAAiB,eAAe,CAAC,EAAE,SAAS;EACjE,CAAC,EACA,SAAS;EACZ,aAAaA,IACV,OAAO;IACN,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC;;IAExB,WAAWA,IAAE,KAAK,CAAC,iBAAiB,eAAe,CAAC,EAAE,SAAS;EACjE,CAAC,EACA,SAAS;AACd,CAAC;AAED,iBAGE,IAAI;AAEC,IAAM,mBAAmBA,IAAE,MAAM;EACtC;EACA;AACF,CAAC;AAEM,IAAM,sBAAsBA,IAAE,OAAO;EAC1C,MAAMA,IAAE,QAAQ,qBAAqB;EACrC;EACA,QAAQ;EACR,qBAAqBA,IAAE,OAAO,EAAE,SAAS;EACzC,wBAAwBA,IAAE,OAAO;EACjC,aAAa,OAAO,SAAS;EAC7B,YAAY,qBAAqB,SAAS;EAC1C,WAAW,OAAO,SAAS;EAC3B,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,kBAAkB,iBAAiB,SAAS;EAC5C,aAAaA,IAAE,OAAOA,IAAE,OAAO,CAAC,EAAE,SAAS;EAC3C,sBAAsBA,IAAE,OAAO,EAAE,SAAS;EAC1C,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,oBAAoBA,IAAE,QAAQ,EAAE,SAAS;EACzC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AACvD,CAAC;AAKD,iBAAiE,IAAI;ACxH9D,IAAM,iBAAiBA,IAC3B,OAAO;EACN,MAAMA,IAAE,QAAQ,gBAAgB;EAChC,mBAAmB,4BAA4B,gBAAgB;EAC/D,wBAAwBA,IAAE,OAAO;EACjC,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,cAAc,SAAS,SAAS,EAAE,SAAS;EAC3C,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;EACnC,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,sCAAsC;AAKlD,iBAAuD,IAAI;AChBpD,IAAM,iBAAiBA,IAC3B,OAAO;EACN,MAAMA,IAAE,QAAQ,gBAAgB;EAChC,mBAAmB,4BAA4B,gBAAgB;EAC/D,wBAAwBA,IAAE,OAAO;EACjC,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,UAAU,SAAS,QAAQ,CAAC;EAC5B,cAAc,SAAS,SAAS,EAAE,SAAS;EAC3C,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;EACnC,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,YAAYA,IAAE,OAAO,EAAE,SAAS;EAChC,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,2CAA2C;AAKvD,iBAAuD,IAAI;ACvBpD,IAAM,mBAAmBA,IAC7B,OAAO;EACN,MAAMA,IAAE,QAAQ,kBAAkB;EAClC,qBAAqB,4BAA4B,kBAAkB;EACnE,wBAAwBA,IAAE,OAAO;EACjC,QAAQ;EACR,QAAQ;EACR,cAAc,SAAS,SAAS,EAAE,SAAS;EAC3C,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;EACnC,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,YAAYA,IAAE,OAAO,EAAE,SAAS;EAChC,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,wCAAwC;AAKpD,iBAA2D,IAAI;AClBxD,IAAM,gBAAgBA,IAC1B,OAAO;EACN,MAAMA,IAAE,QAAQ,eAAe;EAC/B,kBAAkB,4BAA4B,eAAe;EAC7D,wBAAwBA,IAAE,OAAO;EACjC,QAAQ;EACR,QAAQ;EACR,qBAAqB;EACrB,mBAAmB;EACnB,WAAWA,IACR,KAAK,CAAC,aAAa,kBAAkB,CAAC,EACtC,QAAQ,kBAAkB;EAC7B,cAAc,SAAS,SAAS,EAAE,SAAS;EAC3C,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;EACnC,WAAWA,IAAE,QAAQ,EAAE,QAAQ,KAAK;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,qCAAqC;AAKjD,iBAAqD,IAAI;ACZlD,IAAM,kBAAkBA,IAAE,OAAO;EACtC,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoBA,IAAE,OAAO;EAC7B,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,WAAWA,IAAE;IACXA,IAAE,OAAO;MACP,GAAGA,IAAE,OAAO;MACZ,GAAGA,IAAE,OAAO;IACd,CAAC;EACH;EACA,OAAOA,IAAE;IACPA,IAAE,OAAO;MACP,MAAMA,IAAE,OAAO;QACb,GAAGA,IAAE,OAAO;QACZ,GAAGA,IAAE,OAAO;MACd,CAAC;MACD,IAAIA,IAAE,OAAO;QACX,GAAGA,IAAE,OAAO;QACZ,GAAGA,IAAE,OAAO;MACd,CAAC;MACD,aAAaA,IAAE,QAAQ,EAAE,SAAS;MAClC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;MAC5C,sBAAsBA,IAAE,OAAO,EAAE,SAAS;IAC5C,CAAC;EACH;EACA,eAAeA,IAAE,OAAO,EAAE,SAAS;;EAEnC,iCAAiCA,IAAE,OAAO,EAAE,SAAS;AACvD,CAAC;AAKD,iBAA8D,IAAI;AE5D3D,IAAM,kBAAkBA,IAAE,KAAK;EACpC;EACA;EACA;EACA;EACA;AACF,CAAC;AAID,iBAA2D,IAAI;ADSxD,IAAM,iBAAiBA,IAAE,OAAO;EACrC,MAAMA,IAAE,QAAQ,gBAAgB;EAChC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;EAC5C,mBAAmBA,IAAE,OAAO;EAC5B,MAAMA,IAAE,OAAO;EACf,WAAWA,IAAE,OAAO,EAAE,QAAQ,IAAI;EAClC,UAAUA,IAAE,OAAO;IACjB,GAAG;IACH,GAAG;EACL,CAAC;EACD,UAAUA,IAAE,OAAO,EAAE,QAAQ,CAAC;EAC9B,QAAQA,IACL,MAAM,CAAC,gBAAgB,SAAS,QAAQ,GAAG,eAAe,CAAC,EAC3D,QAAQ,QAAQ;EACnB,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;EACnC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAKD,iBAAuD,IAAI;AEvBpD,IAAM,iBAAiBA,IAC3B,OAAO;EACN,MAAMA,IAAE,QAAQ,gBAAgB;EAChC,mBAAmBA,IAAE,OAAO;EAC5B,gBAAgBA,IAAE,OAAO;EACzB,wBAAwBA,IAAE,OAAO,EAAE,SAAS;EAC5C,QAAQ;EACR,kBAAkBA,IAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC,EAAE,SAAS;EACnE,8BAA8BA,IAAE,OAAO,EAAE,SAAS;EAClD,mBAAmBA,IAAE,KAAK,CAAC,OAAO,UAAU,QAAQ,OAAO,CAAC,EAAE,SAAS;EACvE,gBAAgBA,IAAE,OAAO,EAAE,SAAS;EACpC,YAAYA,IAAE,OAAO,EAAE,SAAS;EAChC,mBAAmBA,IAAE,OAAO,EAAE,SAAS;EACvC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,cAAcA,IAAE,QAAQ,EAAE,SAAS;EACnC,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;EACtC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;AACzC,CAAC,EACA,SAAS,yCAAyC;AAKrD,iBAAuD,IAAI;ACrBpD,IAAM,sBAAsBA,IAAE,OAAO;EAC1C,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,eAAeA,IAAE,OAAO;EACxB,QAAQ;EACR,iBAAiB,MAAM,SAAS;EAChC,aAAaA,IAAE,KAAK,CAAC,OAAO,UAAU,QAAQ,OAAO,CAAC;EACtD,MAAMA,IAAE,OAAO;EACf,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,YAAYA,IAAE,QAAQ,EAAE,SAAS;EACjC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAKD,iBAA+D,IAAI;AC/B5D,IAAM,kBAAkBA,IAC5B,OAAO;EACN,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoBA,IAAE,OAAO;;EAE7B,YAAYA,IACT,QAAQ,0BAA0B,EAClC,QAAQ,0BAA0B;EACrC,SAASA,IAAE,OAAO;EAClB,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,4CAA4C;AAKxD,iBAAyD,IAAI;ACvBtD,IAAM,yBAAyBA,IACnC,OAAO;EACN,MAAMA,IAAE,QAAQ,wBAAwB;EACxC,2BAA2B;IACzB;EACF;EACA,YAAYA,IACT,QAAQ,wBAAwB,EAChC,QAAQ,wBAAwB;EACnC,SAASA,IAAE,OAAO;EAClB,iBAAiBA,IAAE,OAAO;EAC1B,oBAAoBA,IAAE,OAAO;EAC7B,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,uDAAuD;AAenE,iBAAqE,IAAI;AC5BlE,IAAM,8BAA8BA,IAAE,OAAO;EAClD,MAAMA,IAAE,QAAQ,wBAAwB;EACxC,OAAOA,IAAE,OAAO,EAAE,SAAS;EAC3B,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAEM,IAAM,uBAAuB,4BAA4B,OAAO;EACrE,OAAOA,IAAE,QAAQ,MAAM;EACvB,QAAQ;EACR;AACF,CAAC;AAEM,IAAM,uBAAuB,4BAA4B,OAAO;EACrE,OAAOA,IAAE,QAAQ,MAAM;EACvB,OAAO;EACP,KAAK;AACP,CAAC;AAEM,IAAM,wBAAwB,4BAA4B,OAAO;EACtE,OAAOA,IAAE,QAAQ,OAAO;EACxB,QAAQ;AACV,CAAC;AAEM,IAAM,yBAAyBA,IAAE,mBAAmB,SAAS;EAClE;EACA;EACA;AACF,CAAC;AAkCD,iBAAqE,IAAI;ACjDlE,IAAM,0BAA0BA,IACpC,OAAO;EACN,MAAMA,IAAE,QAAQ,yBAAyB;EACzC,4BAA4BA,IAAE,OAAO;EACrC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;EACzC,MAAMA,IAAE,OAAO,EAAE,SAAS;EAC1B,UAAU;EACV,oBAAoBA,IAAE,OAAO;EAC7B,SAAS,QAAQ,SAAS;EAC1B,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,gEAAgE;AAK5E,iBAAuE,IAAI;AC9BpE,IAAM,yCAAyCA,IACnD,OAAO;EACN,MAAMA,IAAE,QAAQ,wCAAwC;EACxD,2CAA2C;IACzC;EACF;EACA,cAAcA,IACX,QAAQ,wCAAwC,EAChD,QAAQ,wCAAwC;EACnD,SAASA,IAAE,OAAO;EAClB,wBAAwBA,IAAE,OAAO;EACjC,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,qBAAqBA,IAAE,OAAO;AAChC,CAAC,EACA;EACC;AACF;AAuBF,iBAGE,IAAI;AC1CC,IAAM,kBAAkBA,IAC5B,OAAO;EACN,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,iBAAiBA,IAAE,OAAO;EAC1B,eAAeA,IAAE,QAAQ,EAAE,SAAS;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,yBAAyBA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAC3C,uBAAuBA,IAAE,QAAQ,EAAE,SAAS;EAC5C,MAAMA,IAAE,OAAO,EAAE,SAAS;EAC1B,aAAaA,IAAE,OAAO,EAAE,SAAS;AACnC,CAAC,EACA,SAAS,gDAAgD;AAuB5D,iBAAyD,IAAI;AChCtD,IAAM,kBAAkBA,IAC5B,OAAO;EACN,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,iBAAiB;EACjB,eAAeA,IAAE,MAAM,QAAQ;EAC/B,aAAaA,IAAE,MAAM,QAAQ;EAC7B,cAAc,SAAS,SAAS;EAChC,cAAc,SAAS,SAAS;EAChC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,wBAAwBA,IAAE,OAAO,EAAE,SAAS;EAC5C,QAAQ,gBAAgB,SAAS;AACnC,CAAC,EACA,SAAS,kCAAkC;AAqB9C,iBAAyD,IAAI;ACxCtD,IAAM,uBAAuBA,IACjC,OAAO;EACN,MAAMA,IAAE,QAAQ,sBAAsB;EACtC,yBAAyB;IACvB;EACF;EACA,oBAAoBA,IAAE,OAAO;EAC7B,iBAAiBA,IAAE,OAAO;EAC1B,eAAeA,IAAE,OAAO;EACxB,oBAAoBA,IAAE,OAAO;EAC7B,kBAAkBA,IAAE,OAAO;EAC3B,MAAMA,IAAE,OAAO,EAAE,SAAS;EAC1B,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,kBAAkBA,IAAE,KAAK,CAAC,QAAQ,UAAU,OAAO,CAAC,EAAE,SAAS;EAC/D,gBAAgBA,IAAE,KAAK,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,SAAS;EAC7D,WAAW,SAAS,SAAS;EAC7B,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,yCAAyC;AA0BrD,iBAAiE,IAAI;AC/C9D,IAAM,kBAAkBA,IAC5B,OAAO;EACN,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,MAAMA,IAAE,OAAO,EAAE,SAAS;EAC1B,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA;EACC;AACF;AAeF,iBAAyD,IAAI;ACxBtD,IAAM,mBAAmBA,IAAE,OAAO;EACvC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAQD,iBAAyD,IAAI;AAEtD,IAAM,OAAOA,IAAE,OAAO;EAC3B,UAAUA,IAAE,MAAM,gBAAgB;AACpC,CAAC;AAMD,iBAAqC,IAAI;AAElC,IAAM,aAAaA,IAAE,OAAO;EACjC,YAAY;EACZ,aAAaA,IAAE,MAAM,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAgBD,iBAA+C,IAAI;ACtC5C,IAAM,iBAAiBA,IAAE,OAAO;EACrC,GAAG;EACH,GAAG;EACH,KAAKA,IAAE,QAAQ,EAAE,SAAS;EAC1B,cAAc,UAAU,SAAS;AACnC,CAAC;AACM,IAAM,kBAAkBA,IAAE,MAAM,cAAc;AAgBrD,iBAAqD,IAAI;AACzD,iBAAuD,IAAI;AC3BpD,IAAM,mBAAmBA,IAAE,OAAO;EACvC,GAAG;EACH,GAAG;EACH,KAAKA,IAAE,QAAQ,EAAE,SAAS;EAC1B,UAAU,UAAU,SAAS;EAC7B,aAAa,SAAS,SAAS;AACjC,CAAC;AAaD,iBAAyD,IAAI;AClBtD,IAAM,gBAAgBA,IAC1B,OAAO;EACN,MAAMA,IAAE,QAAQ,eAAe;EAC/B,kBAAkB,4BAA4B,eAAe;EAC7D,qBAAqBA,IAAE,OAAO;EAC9B,QAAQ;EACR,OAAO;EACP;EACA,OAAO;EACP,QAAQ;EACR,cAAcA,IAAE,QAAQ,EAAE,SAAS;EACnC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IACZ,KAAK,CAAC,UAAU,4BAA4B,MAAM,CAAC,EACnD,SAAS;EACZ,qCAAqCA,IAAE,OAAO,EAAE,SAAS;EACzD,yBAAyBA,IACtB,QAAQ,EACR,QAAQ,IAAI,EACZ;IACC;EACF;AACJ,CAAC,EACA,SAAS,gCAAgC;AA8B5C,iBAAqD,IAAI;ACvDzD,IAAM,kBAAkBA,IAAE,OAAO;EAC/B,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,QAAQ;EAC9B,eAAeA,IAAE,OAAO;EACxB,GAAG;EACH,GAAG;EACH,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,wBAAwB,gBAAgB;EACnD;AACF;AAqBA,iBAAuD,IAAI;AAE3D,IAAM,gBAAgBA,IAAE,OAAO;EAC7B,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,MAAM;EAC5B,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,GAAG;EACH,GAAG;EACH,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,sBAAsB,cAAc;EAC/C;AACF;AAqBA,iBAAmD,IAAI;AAEvD,IAAM,4BAA4BA,IAAE,OAAO;EACzC,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,KAAK,CAAC,UAAU,QAAQ,CAAC;EACvC,eAAeA,IAAE,OAAO;EACxB,GAAG;EACH,GAAG;EACH,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,kCACX,0BAA0B;EACxB;AACF;AA2BF,iBAAuE,IAAI;AAE3E,IAAM,gBAAgBA,IAAE,OAAO;EAC7B,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,MAAM;EAC5B,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,GAAG;EACH,GAAG;EACH,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,sBAAsB,cAAc;EAC/C;AACF;AAsBA,iBAAmD,IAAI;AAEvD,IAAM,gBAAgBA,IAAE,OAAO;EAC7B,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,MAAM;EAC5B,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,GAAG;EACH,GAAG;EACH,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,sBAAsB,cAAc;EAC/C;AACF;AAsBA,iBAAmD,IAAI;AAEvD,IAAM,wBAAwBA,IAAE,OAAO;EACrC,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,cAAc;EACpC,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,GAAG;EACH,GAAG;EACH,cAAc;EACd,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,8BAA8B,sBAAsB;EAC/D;AACF;AAuBA,iBAAiE,IAAI;AAE9D,IAAM,WAAW,0BACrB,GAAG,aAAa,EAChB,GAAG,aAAa,EAChB,GAAG,qBAAqB,EACxB,GAAG,eAAe,EAClB,GAAG,aAAa;ACxPnB,IAAM,yBAAyBA,IAAE,OAAO;EACtC,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,OAAOA,IAAE,QAAQ,QAAQ;EACzB,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,gBAAgBA,IAAE,OAAO;EACzB,eAAeA,IAAE,OAAO;EACxB,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,MAAM,SAAS;EACzB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAuBD,IAAM,uBAAuBA,IAAE,OAAO;EACpC,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,OAAOA,IAAE,KAAK,CAAC,QAAQ,MAAM,CAAC;EAC9B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,aAAaA,IAAE,OAAO;EACtB,cAAcA,IAAE,OAAO;EACvB,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,GAAG;EACH,GAAG;EACH,cAAc;EACd,QAAQA,IAAE,MAAM,SAAS;EACzB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AA0BD,IAAM,kCAAkCA,IAAE,OAAO;EAC/C,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,OAAOA,IAAE,QAAQ,6BAA6B;EAC9C,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,QAAQ;EAC9B,WAAWA,IAAE,QAAQ,MAAM;EAC3B,eAAeA,IAAE,OAAO;EACxB,gBAAgBA,IAAE,OAAO;EACzB,iBAAiBA,IAAE,OAAO;EAC1B,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,eAAe,SAAS,QAAQ,CAAC;EACjC,eAAe,SAAS,QAAQ,CAAC;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,MAAM,SAAS;EACzB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AACD,IAAM,8BAA8BA,IAAE,OAAO;EAC3C,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,OAAOA,IAAE,QAAQ,yBAAyB;EAC1C,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,MAAM;EAC5B,WAAWA,IAAE,QAAQ,MAAM;EAC3B,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,gBAAgBA,IAAE,OAAO;EACzB,iBAAiBA,IAAE,OAAO;EAC1B,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,eAAe,SAAS,QAAQ,CAAC;EACjC,eAAe,SAAS,QAAQ,CAAC;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,MAAM,SAAS;EACzB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AACD,IAAM,sCAAsCA,IAAE,OAAO;EACnD,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,OAAOA,IAAE,QAAQ,iCAAiC;EAClD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,QAAQ,cAAc;EACpC,WAAWA,IAAE,QAAQ,MAAM;EAC3B,YAAYA,IAAE,OAAO;EACrB,aAAaA,IAAE,OAAO;EACtB,mBAAmB;EACnB,gBAAgBA,IAAE,OAAO;EACzB,iBAAiBA,IAAE,OAAO;EAC1B,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,mBAAmB;EACnB,eAAe,SAAS,QAAQ,CAAC;EACjC,eAAe,SAAS,QAAQ,CAAC;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,MAAM,SAAS;EACzB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AA4ED,IAAM,4BAA4BA,IAAE,OAAO;EACzC,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,OAAOA,IAAE,QAAQ,uBAAuB;EACxC,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,KAAK,CAAC,UAAU,QAAQ,QAAQ,cAAc,CAAC;EAC7D,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,IAAE,OAAO,EAAE,SAAS;EAChC,aAAaA,IAAE,OAAO,EAAE,SAAS;EAEjC,aAAaA,IACV;IACCA,IAAE,OAAO;MACP,GAAG;MACH,GAAG;IACL,CAAC;EACH,EACC,IAAI,CAAC;EAER,eAAe,SAAS,QAAQ,CAAC;EACjC,eAAe,SAAS,QAAQ,CAAC;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,MAAM,SAAS;EACzB,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AA6BM,IAAM,kBAAkBA,IAAE,MAAM;EACrC;EACA;EACA;EACA;EACA;EACA;AACF,CAAC;AASD;EACE;AACF;AACA,iBAA0E,IAAI;AAC9E,iBAGE,IAAI;AACN,iBAGE,IAAI;AACN,iBAGE,IAAI;AACN,iBAGE,IAAI;ACtUC,IAAM,WAAWA,IACrB,OAAO;EACN,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,gBAAgBA,IAAE,OAAO;EACzB,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,MAAM,SAAS;EACzB,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AACxC,CAAC,EACA,SAAS,2BAA2B;AA+BvC,iBAA2C,IAAI;AC5C/C,IAAM,oBAAoBA,IAAE,OAAO;EACjC,MAAMA,IAAE,QAAQ,YAAY;EAC5B,OAAOA,IAAE,QAAQ,QAAQ;EACzB,eAAe,4BAA4B,YAAY;EACvD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,OAAO;EACjB,OAAO;EACP,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAED,IAAM,kBAAkBA,IAAE,OAAO;EAC/B,MAAMA,IAAE,QAAQ,YAAY;EAC5B,OAAOA,IAAE,QAAQ,MAAM;EACvB,eAAe,4BAA4B,YAAY;EACvD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAED,IAAM,0BAA0BA,IAAE,OAAO;EACvC,MAAMA,IAAE,QAAQ,YAAY;EAC5B,OAAOA,IAAE,QAAQ,cAAc;EAC/B,eAAe,4BAA4B,YAAY;EACvD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,oBAAoBA,IAAE,OAAO,EAAE,SAAS;EACxC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,cAAc;EACd,OAAO;EACP,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,kBAAkBA,IAAE,OAAO;EACtC,MAAMA,IAAE,QAAQ,YAAY;EAC5B,OAAOA,IAAE,QAAQ,MAAM;EACvB,eAAe,4BAA4B,YAAY;EACvD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,QAAQA,IAAE,OAAO;EACjB,OAAO;EACP,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AACD,IAAM,0BAA0BA,IAAE,OAAO;EACvC,MAAMA,IAAE,QAAQ,YAAY;EAC5B,OAAOA,IAAE,QAAQ,cAAc;EAC/B,eAAe,4BAA4B,YAAY;EACvD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,QAAQA,IAAE,OAAO;EACjB,cAAc;EACd,OAAO;EACP,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAED,IAAM,qBAAqBA,IAAE,OAAO;EAClC,MAAMA,IAAE,QAAQ,YAAY;EAC5B,OAAOA,IAAE,QAAQ,SAAS;EAC1B,eAAe,4BAA4B,YAAY;EACvD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,QAAQA,IAAE,MAAM,KAAK;EACrB,OAAO;EACP,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;EACzC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,aAAaA,IAAE,OAAO,EAAE,SAAS;EACjC,6BAA6BA,IAAE,QAAQ,EAAE,SAAS;EAClD,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,aAAaA,IACvB,mBAAmB,SAAS;EAC3B;EACA;EACA;EACA;EACA;EACA;AACF,CAAC,EACA,SAAS,+BAA+B;AAwJ3C,iBAAmD,IAAI;AACvD,iBAA+C,IAAI;AACnD,iBAA6D,IAAI;AACjE,iBAA6D,IAAI;AACjE,iBAA+C,IAAI;AACnD,iBAAqD,IAAI;ACrRzD,IAAM,0BAA0BA,IAAE,OAAO;EACvC,MAAMA,IAAE,QAAQ,kBAAkB;EAClC,OAAOA,IAAE,QAAQ,QAAQ;EACzB,qBAAqB,4BAA4B,kBAAkB;EACnE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,QAAQA,IAAE,OAAO;EACjB,OAAO;EACP,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAED,IAAM,wBAAwBA,IAAE,OAAO;EACrC,MAAMA,IAAE,QAAQ,kBAAkB;EAClC,OAAOA,IAAE,QAAQ,MAAM;EACvB,qBAAqB,4BAA4B,kBAAkB;EACnE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,OAAO;EACP,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AACD,IAAM,wBAAwBA,IAAE,OAAO;EACrC,MAAMA,IAAE,QAAQ,kBAAkB;EAClC,OAAOA,IAAE,QAAQ,MAAM;EACvB,qBAAqB,4BAA4B,kBAAkB;EACnE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,QAAQA,IAAE,OAAO;EACjB,OAAO;EACP,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AACD,IAAM,gCAAgCA,IAAE,OAAO;EAC7C,MAAMA,IAAE,QAAQ,kBAAkB;EAClC,OAAOA,IAAE,QAAQ,cAAc;EAC/B,qBAAqB,4BAA4B,kBAAkB;EACnE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,cAAc;EACd,OAAO;EACP,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAED,IAAM,wBAAwBA,IAAE,OAAO;EACrC,MAAMA,IAAE,QAAQ,kBAAkB;EAClC,OAAOA,IAAE,QAAQ,MAAM;EACvB,qBAAqB,4BAA4B,kBAAkB;EACnE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;EACH,OAAOA,IAAE,OAAO;EAChB,QAAQA,IAAE,OAAO;EACjB,OAAO;EACP,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC;AAEM,IAAM,mBAAmBA,IAC7B,MAAM;EACL;EACA;EACA;EACA;EACA;AACF,CAAC,EACA,SAAS,gCAAgC;AA0G5C,iBAAqE,IAAI;AACzE,iBAAiE,IAAI;AACrE,iBAAiE,IAAI;AACrE;EACE;AACF;AACA,iBAAiE,IAAI;AClM9D,IAAM,WAAWA,IACrB,OAAO;EACN,MAAMA,IAAE,QAAQ,UAAU;EAC1B,aAAa,4BAA4B,UAAU;EACnD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,IAAE,OAAO;EACf,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,OAAOA,IAAE,OAAO;;EAEhB,OAAOA,IAAE,KAAK,CAAC,aAAa,CAAC;AAC/B,CAAC,EACA,SAAS,yBAAyB;AA4BrC,iBAA2C,IAAI;AC3CxC,IAAM,6BAA6BA,IAAE,OAAO;EACjD,YAAYA,IAAE,QAAQ,MAAM;EAC5B,GAAG;EACH,GAAG;EACH,OAAO;EACP,mBAAmBA,IAAE,OAAO,EAAE,SAAS;EACvC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,OAAO;AACT,CAAC;AAEM,IAAM,4BAA4BA,IAAE,OAAO;EAChD,YAAYA,IAAE,QAAQ,KAAK;EAC3B,GAAG;EACH,GAAG;EACH,eAAe,SAAS,SAAS;EACjC,gBAAgB,SAAS,SAAS;EAClC,YAAYA,IAAE,OAAO;EACrB,UAAUA,IAAE,OAAO;AACrB,CAAC;AAEM,IAAM,wBAAwBA,IAAE,MAAM;EAC3C;EACA;AACF,CAAC;AAGM,IAAM,YAAYA,IACtB,OAAO;EACN,MAAMA,IAAE,QAAQ,WAAW;EAC3B,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,kBAAkBA,IAAE,OAAO,EAAE,SAAS;EACtC,cAAc,4BAA4B,WAAW;EACrD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,sBAAsBA,IACnB,KAAK,CAAC,YAAY,cAAc,CAAC,EACjC,QAAQ,UAAU,EAClB,SAAS;EACZ,mBAAmBA,IAAE,OAAO,EAAE,SAAS;EACvC,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;EAC3C,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;EACrC,OAAOA,IAAE,MAAM,qBAAqB;AACtC,CAAC,EACA,SAAS,4BAA4B;AA6DxC,iBAAiE,IAAI;AACrE,iBAA6C,IAAI;AC5G1C,IAAM,kBAAkBA,IAC5B,OAAO;EACN,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,YAAYA,IAAE,QAAQ,iBAAiB,EAAE,QAAQ,iBAAiB;EAClE,SAASA,IAAE,OAAO;EAClB,QAAQ,MAAM,SAAS;EACvB,cAAcA,IAAE,OAAO;EACvB,iBAAiBA,IAAE,OAAO;EAC1B,mBAAmBA,IAAE,MAAMA,IAAE,OAAO,CAAC;EACrC,cAAcA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAChC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,kCAAkC;AA0B9C,iBAAuD,IAAI;ACvCpD,IAAM,0BAA0BA,IACpC,OAAO;EACN,MAAMA,IAAE,QAAQ,yBAAyB;EACzC,4BAA4B;IAC1B;EACF;EACA,YAAYA,IACT,QAAQ,yBAAyB,EACjC,QAAQ,yBAAyB;EACpC,SAASA,IAAE,OAAO;EAClB,QAAQ,MAAM,SAAS;EACvB,iBAAiBA,IAAE,OAAO;EAC1B,mBAAmBA,IAAE,MAAMA,IAAE,OAAO,CAAC;EACrC,cAAcA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAChC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA;EACC;AACF;AAyBF,iBAAqE,IAAI;AC3ClE,IAAM,6BAA6BA,IACvC,OAAO;EACN,MAAMA,IAAE,QAAQ,4BAA4B;EAC5C,cAAc,4BAA4B,WAAW;EACrD,YAAYA,IACT,QAAQ,4BAA4B,EACpC,QAAQ,4BAA4B;EACvC,SAASA,IAAE,OAAO;EAClB,mBAAmBA,IAAE,MAAMA,IAAE,OAAO,CAAC;EACrC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,8DAA8D;AAwB1E,iBAAyE,IAAI;ACnCtE,IAAM,+BAA+BA,IACzC,OAAO;EACN,MAAMA,IAAE,QAAQ,8BAA8B;EAC9C,iCAAiC;IAC/B;EACF;EACA,YAAYA,IACT,QAAQ,8BAA8B,EACtC,QAAQ,8BAA8B;EACzC,SAASA,IAAE,OAAO;EAClB,cAAcA,IAAE,MAAMA,IAAE,OAAO,CAAC;EAChC,mBAAmBA,IAAE,MAAMA,IAAE,OAAO,CAAC;EACrC,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,gEAAgE;AAsB5E;EACE;AACF;ACtCO,IAAM,UAAUA,IACpB,OAAO;EACN,MAAMA,IAAE,QAAQ,SAAS;EACzB,YAAY,4BAA4B,SAAS;EACjD,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AACvC,CAAC,EACA,SAAS,0BAA0B;AAetC,iBAAyC,IAAI;ACpBtC,IAAM,UAAUA,IACpB,OAAO;EACN,MAAMA,IAAE,QAAQ,SAAS;EACzB,YAAY,4BAA4B,SAAS;EACjD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,iCAAiCA,IAAE,OAAO,EAAE,SAAS;EACrD,GAAG;EACH,GAAG;EACH,gBAAgB,SAAS,QAAQ,OAAO;EACxC,eAAe,SAAS,QAAQ,QAAQ;;EAExC,YAAY,UAAU,SAAS;;EAE/B,UAAU,UAAU,SAAS;EAC7B,QAAQA,IAAE,MAAM,SAAS;EACzB,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;EACxC,cAAcA,IAAE,QAAQ,EAAE,SAAS;EACnC,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAClC,CAAC,EACA,SAAS,0BAA0B;AAkCtC,iBAAyC,IAAI;ACxDtC,IAAM,YAAYA,IACtB,OAAO;EACN,MAAMA,IAAE,QAAQ,WAAW;EAC3B,cAAc,4BAA4B,WAAW;EACrD,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,QAAQ,EAAE,SAAS;EACpC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,OAAO,OAAO,SAAS;EACvB,QAAQ,OAAO,SAAS;EACxB,QAAQ;EACR,WAAW,OAAO,SAAS,EAAE,QAAQ,GAAG;EACxC,YAAYA,IAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;EAC3C,SAASA,IAAE,MAAM,KAAK,EAAE,SAAS;EACjC,OAAOA,IAAE,KAAK,CAAC,QAAQ,SAAS,CAAC,EAAE,SAAS;EAC5C,UAAUA,IAAE,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,QAAQ,KAAK;AAChD,CAAC,EACA,SAAS,sCAAsC;AA6BlD,iBAA6C,IAAI;AC7C1C,IAAM,YAAYA,IACtB,OAAO;EACN,MAAMA,IAAE,QAAQ,WAAW;EAC3B,cAAc,4BAA4B,WAAW;EACrD,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,0BAA0BA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AAC/D,CAAC,EACA,SAAS,sDAAsD;AAsBlE,iBAA6C,IAAI;AChC1C,IAAM,sBAAsBA,IAChC,OAAO;EACN,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,YAAYA,IAAE,QAAQ,qBAAqB,EAAE,QAAQ,qBAAqB;EAC1E,SAASA,IAAE,OAAO;EAClB,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,sCAAsC;AAqBlD,iBAA+D,IAAI;AChB5D,IAAM,iBAAiBA,IAC3B,OAAO;EACN,MAAMA,IAAE,QAAQ,gBAAgB;EAChC,mBAAmB,4BAA4B,gBAAgB;EAC/D,aAAaA,IAAE,OAAO;EACtB,kBAAkBA,IAAE,OAAO;EAC3B,OAAOA,IAAE,MAAM,gBAAgB;EAC/B,eAAeA,IAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,0DAA0D;AAUtE,iBAAqD,IAAI;ACzBlD,IAAM,sBAAsBA,IAChC,OAAO;EACN,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,kBAAkBA,IAAE,OAAO;EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,cAAc,SAAS,QAAQ,OAAO;EACtC,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,OAAO;AACT,CAAC,EACA,SAAS,sCAAsC;AA2BlD,iBAA+D,IAAI;AC3C5D,IAAM,sBAAsBA,IAChC,OAAO;EACN,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,kBAAkBA,IAAE,OAAO;EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,OAAOA,IAAE,MAAM,KAAK;EACpB,cAAc;AAChB,CAAC,EACA,SAAS,sCAAsC;AAwBlD,iBAA+D,IAAI;AClC5D,IAAM,sBAAsBA,IAChC,OAAO;EACN,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,IAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;EACxD,WAAW,SAAS,QAAQ,OAAO;EACnC,kBAAkBA,IAAE,OAAO;EAC3B,MAAMA,IAAE,OAAO;EACf,aAAaA,IAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;EACjD,kBAAkBA,IACf,OAAO;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;EACT,CAAC,EACA,QAAQ;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;EACT,CAAC,EACA,SAAS;EACZ,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,OAAO;EACP,aAAaA,IAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;EACjD,iBAAiB,MAAM,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;EAC7C,kBAAkB,gBAAgB,QAAQ,QAAQ;AACpD,CAAC,EACA,SAAS,oCAAoC;AAoChD,iBAA+D,IAAI;ACnE5D,IAAM,kBAAkBA,IAC5B,OAAO;EACN,MAAMA,IAAE,QAAQ,iBAAiB;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,IAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;EACxD,WAAW,SAAS,QAAQ,OAAO;EACnC,kBAAkBA,IAAE,OAAO;EAC3B,MAAMA,IAAE,OAAO;EACf,aAAaA,IAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;EACjD,kBAAkBA,IACf,OAAO;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;EACT,CAAC,EACA,QAAQ;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,OAAO;EACT,CAAC,EACA,SAAS;EACZ,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,OAAO;EACP,aAAaA,IAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;EACjD,iBAAiB,MAAM,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;EAC7C,kBAAkB,gBAAgB,QAAQ,QAAQ;AACpD,CAAC,EACA,SAAS,gCAAgC;AAoC5C,iBAAuD,IAAI;ACvEpD,IAAM,sBAAsBA,IAChC,OAAO;EACN,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,kBAAkBA,IAAE,OAAO;EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,OAAO;EACP,cAAc,OAAO,QAAQ,KAAK;EAClC,eAAe,OAAO,SAAS;EAC/B,WAAWA,IAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,SAAS;EAC9C,YAAYA,IAAE,QAAQ,EAAE,SAAS;EACjC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;AACzC,CAAC,EACA,SAAS,sCAAsC;AA8BlD,iBAA+D,IAAI;AC1C5D,IAAM,wBAAwBA,IAClC,OAAO;EACN,MAAMA,IAAE,QAAQ,uBAAuB;EACvC,0BAA0B;IACxB;EACF;EACA,kBAAkBA,IAAE,OAAO;EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,cAAc,OAAO,QAAQ,KAAK;AACpC,CAAC,EACA,SAAS,wCAAwC;AAoBpD,iBAAmE,IAAI;AClChE,IAAM,sBAAsBA,IAChC,OAAO;EACN,MAAMA,IAAE,QAAQ,qBAAqB;EACrC,wBAAwB,4BAA4B,qBAAqB;EACzE,kBAAkBA,IAAE,OAAO;EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,QAAQ;EACR,UAAU;EACV,UAAU;EACV,OAAO;AACT,CAAC,EACA,SAAS,sCAAsC;AAyBlD,iBAA+D,IAAI;ACrC5D,IAAM,4BAA4BA,IACtC,OAAO;EACN,MAAMA,IAAE,QAAQ,2BAA2B;EAC3C,8BAA8B;IAC5B;EACF;EACA,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,MAAMA,IAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;EACxD,WAAW,SAAS,QAAQ,KAAK;EACjC,kBAAkBA,IAAE,OAAO;EAC3B,MAAMA,IAAE,OAAO;EACf,OAAO;EACP,iBAAiB,MAAM,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;EAC7C,kBAAkBA,IACf,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;EACnB,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA;EACC;AACF;AAmCF,iBAAyE,IAAI;ACxDtE,IAAM,4BAA4BA,IACtC,OAAO;EACN,MAAMA,IAAE,QAAQ,2BAA2B;EAC3C,8BAA8B;IAC5B;EACF;EACA,kBAAkBA,IAAE,OAAO;EAC3B,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,OAAOA,IAAE,MAAM,KAAK;EACpB,cAAc;EACd,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA;EACC;AACF;AA0BF,iBAAyE,IAAI;AC9CtE,IAAM,4BAA4BA,IACtC,OAAO;EACN,MAAMA,IAAE,QAAQ,2BAA2B;EAC3C,8BAA8B;IAC5B;EACF;EACA,kBAAkBA,IAAE,OAAO;EAC3B,cAAcA,IAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;EACnC,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,OAAO;EACP,cAAc,OAAO,QAAQ,OAAO;EACpC,eAAe,OAAO,SAAS;EAC/B,WAAWA,IAAE,QAAQ,EAAE,SAAS;EAChC,YAAYA,IAAE,QAAQ,EAAE,SAAS;EACjC,kBAAkBA,IAAE,QAAQ,EAAE,SAAS;EACvC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,iDAAiD;AAiC7D,iBAAyE,IAAI;ACrDtE,IAAM,iCAAiCA,KAC3C,OAAO;EACN,MAAMA,KAAE,QAAQ,gCAAgC;EAChD,mCAAmC;IACjC;EACF;EACA,kBAAkBA,KAAE,OAAO;EAC3B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,MAAM;EACN,IAAI;EACJ,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,mBAAmBA,KAAE,OAAO,EAAE,SAAS;EACvC,QAAQ,OAAO,SAAS;EACxB,iBAAiB,OAAO,SAAS;EACjC,kBAAkBA,KACf,OAAO;IACN,GAAGA,KAAE,OAAO;IACZ,GAAGA,KAAE,OAAO;EACd,CAAC,EACA,SAAS;EACZ,MAAMA,KAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;EACxD,WAAW,OAAO,QAAQ,KAAK;EAC/B,OAAOA,KAAE,OAAO,EAAE,SAAS;EAC3B,YAAY,OAAO,QAAQ,KAAK;AAClC,CAAC,EACA,SAAS,+DAA+D;AAwC3E,iBAGE,IAAI;ACvEC,IAAM,gBAAgBA,KAC1B,OAAO;EACN,MAAMA,KAAE,QAAQ,eAAe;EAC/B,kBAAkB,4BAA4B,eAAe;EAC7D,kBAAkBA,KAAE,OAAO,EAAE,SAAS;EACtC,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,MAAMA,KAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;EACxD,WAAW,SAAS,QAAQ,KAAK;EACjC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,iBAAiB,MAAM,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;EAC7C,kBAAkBA,KACf,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;EACnB,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,iDAAiD;AA4B7D,iBAAmD,IAAI;AC7ChD,IAAM,gBAAgBA,KAC1B,OAAO;EACN,MAAMA,KAAE,QAAQ,eAAe;EAC/B,kBAAkB,4BAA4B,eAAe;EAC7D,kBAAkBA,KAAE,OAAO,EAAE,SAAS;EACtC,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,cAAc,OAAO,QAAQ,OAAO;EACpC,eAAe,OAAO,SAAS;EAC/B,WAAWA,KAAE,QAAQ,EAAE,SAAS;EAChC,YAAYA,KAAE,QAAQ,EAAE,SAAS;EACjC,kBAAkBA,KAAE,QAAQ,EAAE,SAAS;EACvC,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,qDAAqD;AA2BjE,iBAAmD,IAAI;AC9ChD,IAAM,gBAAgBA,KAC1B,OAAO;EACN,MAAMA,KAAE,QAAQ,eAAe;EAC/B,kBAAkB,4BAA4B,eAAe;EAC7D,kBAAkBA,KAAE,OAAO,EAAE,SAAS;EACtC,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,OAAOA,KAAE,MAAM,KAAK;EACpB,cAAc,OAAO,QAAQ,OAAO;EACpC,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,kDAAkD;AAqB9D,iBAAmD,IAAI;AClChD,IAAM,gBAAgBA,KAC1B,OAAO;EACN,MAAMA,KAAE,QAAQ,eAAe;EAC/B,kBAAkB,4BAA4B,eAAe;EAC7D,kBAAkBA,KAAE,OAAO,EAAE,SAAS;EACtC,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,cAAc,SAAS,QAAQ,OAAO;EACtC,OAAOA,KAAE,OAAO,EAAE,SAAS;EAC3B,WAAWA,KAAE,QAAQ,EAAE,SAAS;AAClC,CAAC,EACA,SAAS,uDAAuD;AAyBnE,iBAAmD,IAAI;AC1ChD,IAAM,qBAAqBA,KAC/B,OAAO;EACN,MAAMA,KAAE,QAAQ,oBAAoB;EACpC,uBAAuB,4BAA4B,oBAAoB;EACvE,kBAAkBA,KAAE,OAAO,EAAE,SAAS;EACtC,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,MAAM;EACN,IAAI;EACJ,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,mBAAmBA,KAAE,OAAO,EAAE,SAAS;EACvC,iBAAiB,OAAO,SAAS;EACjC,kBAAkBA,KACf,OAAO;IACN,GAAGA,KAAE,OAAO;IACZ,GAAGA,KAAE,OAAO;EACd,CAAC,EACA,SAAS;EACZ,MAAMA,KAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe;EACxD,WAAW,OAAO,QAAQ,KAAK;EAC/B,OAAOA,KAAE,OAAO,EAAE,SAAS;EAC3B,YAAY,OAAO,QAAQ,KAAK;AAClC,CAAC,EACA,SAAS,iEAAiE;AA8B7E,iBAA6D,IAAI;ACvD1D,IAAM,8BAA8BA,KACxC,OAAO;EACN,MAAMA,KAAE,QAAQ,6BAA6B;EAC7C,cAAc,4BAA4B,WAAW;EACrD,YAAYA,KACT,QAAQ,6BAA6B,EACrC,QAAQ,6BAA6B;EACxC,SAASA,KAAE,OAAO;EAClB,gBAAgBA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,SAAS;EAC7C,qBAAqBA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,SAAS;EAClD,cAAcA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,SAAS;EAC3C,iBAAiBA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,SAAS;AAChD,CAAC,EACA,SAAS,kEAAkE;AAqB9E;EACE;AACF;ACnCO,IAAM,cAAcA,KACxB,OAAO;EACN,MAAMA,KAAE,QAAQ,aAAa;EAC7B,OAAOA,KAAE,QAAQ,MAAM;EACvB,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,gBAAgBA,KAAE,OAAO;EACzB,QAAQA,KAAE,MAAMA,KAAE,OAAO,CAAC;;EAC1B,aAAaA,KAAE,OAAO,EAAE,SAAS;;AACnC,CAAC,EACA;EACCA,KAAE,OAAO;IACP,MAAMA,KAAE,QAAQ,aAAa;IAC7B,OAAOA,KAAE,QAAQ,QAAQ;IACzB,cAAcA,KAAE,OAAO,EAAE,SAAS;IAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;IACnC,QAAQ;IACR,QAAQ;IACR,gBAAgBA,KAAE,OAAO;IACzB,QAAQA,KAAE,MAAMA,KAAE,OAAO,CAAC;;IAC1B,aAAaA,KAAE,OAAO,EAAE,SAAS;;EACnC,CAAC;AACH;AAgCF,iBAAiD,IAAI;ACxDrD,IAAM,kBAAkBA,KAAE,OAAO;EAC/B,MAAMA,KAAE,QAAQ,YAAY;EAC5B,eAAe,4BAA4B,YAAY;EACvD,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,cAAcA,KAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAGM,IAAM,kBAAkB,gBAAgB,OAAO;EACpD,OAAOA,KAAE,QAAQ,MAAM;EACvB,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,UAAU,SAAS,SAAS;EAC5B,eAAe,OAAO,SAAS;AACjC,CAAC;AAoBD,iBAAuD,IAAI;AAGpD,IAAM,oBAAoB,gBAAgB,OAAO;EACtD,OAAOA,KAAE,QAAQ,QAAQ;EACzB,QAAQ;EACR,QAAQ;AACV,CAAC;AAiBD,iBAA2D,IAAI;AAGxD,IAAM,qBAAqB,gBAAgB,OAAO;EACvD,OAAOA,KAAE,QAAQ,SAAS;EAC1B,QAAQA,KAAE,MAAM,KAAK;AACvB,CAAC;AAiBD,iBAA6D,IAAI;AAG1D,IAAM,kBAAkB,gBAAgB,OAAO;EACpD,OAAOA,KAAE,QAAQ,MAAM;EACvB,OAAOA,KAAE,MAAM,KAAK;EACpB,YAAY;EACZ,aAAa,OAAO,SAAS;EAC7B,qBAAqB,OAAO,SAAS;EACrC,oBAAoB,OAAO,SAAS;AACtC,CAAC;AAuBD,iBAAuD,IAAI;AAGpD,IAAM,aAAaA,KACvB,mBAAmB,SAAS;EAC3B;EACA;EACA;EACA;AACF,CAAC,EACA,SAAS,uDAAuD;AAUnE,iBAA+C,IAAI;AC3I5C,IAAM,8BAA8BA,KACxC,OAAO;EACN,MAAMA,KAAE,QAAQ,6BAA6B;EAC7C,gCAAgC;IAC9B;EACF;EACA,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,KACT,QAAQ,6BAA6B,EACrC,QAAQ,6BAA6B;EACxC,qBAAqBA,KAAE,OAAO;EAC9B,SAASA,KAAE,OAAO;AACpB,CAAC,EACA,SAAS,8CAA8C;AA2B1D;EACE;AACF;AC3CO,IAAM,gCAAgCA,KAC1C,OAAO;EACN,MAAMA,KAAE,QAAQ,+BAA+B;EAC/C,kCAAkC;IAChC;EACF;EACA,kBAAkBA,KAAE,OAAO;EAC3B,qBAAqBA,KAAE,OAAO;EAC9B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,oBAAoBA,KAAE,OAAO,EAAE,SAAS;EACxC,YAAYA,KACT,QAAQ,+BAA+B,EACvC,QAAQ,+BAA+B;EAC1C,SAASA,KAAE,OAAO;AACpB,CAAC,EACA,SAAS,2DAA2D;AAqBvE,iBAGE,IAAI;ACxCC,IAAM,oCAAoCA,KAC9C,OAAO;EACN,MAAMA,KAAE,QAAQ,mCAAmC;EACnD,sCAAsC;IACpC;EACF;EACA,kBAAkBA,KAAE,OAAO;EAC3B,qBAAqBA,KAAE,OAAO;EAC9B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,YAAYA,KACT,QAAQ,mCAAmC,EAC3C,QAAQ,mCAAmC;EAC9C,SAASA,KAAE,OAAO;EAClB,cAAcA,KAAE,MAAMA,KAAE,IAAI,CAAC,EAAE,SAAS;AAC1C,CAAC,EACA,SAAS,8DAA8D;AAqB1E,iBAGE,IAAI;ACvCC,IAAM,YAAYA,KACtB,OAAO;EACN,MAAMA,KAAE,QAAQ,WAAW;EAC3B,cAAc,4BAA4B,WAAW;EACrD,iBAAiBA,KAAE,OAAO;EAC1B,eAAeA,KAAE,QAAQ,EAAE,SAAS;EACpC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAO,OAAO,SAAS;EACvB,QAAQ,OAAO,SAAS;EACxB,QAAQ;EACR,SAASA,KAAE,MAAM,KAAK,EAAE,SAAS;EACjC,iBAAiB,MAAM,SAAS;EAChC,kBAAkBA,KACf,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,SAAS;EACZ,mBAAmBA,KAAE,MAAMA,KAAE,OAAO,CAAC;EACrC,mBAAmBA,KAAE,KAAK,CAAC,UAAU,MAAM,CAAC,EAAE,SAAS;EACvD,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,aAAaA,KAAE,OAAO,EAAE,SAAS;EACjC,aAAaA,KAAE,OAAO,EAAE,SAAS;EACjC,0BAA0BA,KACvB,OAAO;IACN,iBAAiB;EACnB,CAAC,EACA,SAAS;EACZ,wBAAwBA,KAAE,OAAO,EAAE,SAAS;AAC9C,CAAC,EACA,SAAS,0CAA0C;AAoCtD,iBAA6C,IAAI;AChE1C,IAAM,wBAAwBA,KAClC,OAAO;EACN,MAAMA,KAAE,QAAQ,uBAAuB;EACvC,cAAc,4BAA4B,uBAAuB;EACjE,YAAYA,KACT,QAAQ,uBAAuB,EAC/B,QAAQ,uBAAuB;EAClC,SAASA,KAAE,OAAO;EAClB,eAAeA,KAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,4DAA4D;AAexE,iBAAmE,IAAI;ACzBhE,IAAM,mCAAmCA,KAC7C,OAAO;EACN,MAAMA,KAAE,QAAQ,kCAAkC;EAClD,qCAAqC;IACnC;EACF;EACA,cAAcA,KACX,QAAQ,kCAAkC,EAC1C,QAAQ,kCAAkC;EAC7C,SAASA,KAAE,OAAO;EAClB,kBAAkBA,KAAE,OAAO;EAC3B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,qBAAqBA,KAAE,OAAO;AAChC,CAAC,EACA;EACC;AACF;AAuBF,iBAGE,IAAI;AC1CC,IAAM,qBAAqBA,KAC/B,OAAO;EACN,MAAMA,KAAE,QAAQ,oBAAoB;EACpC,uBAAuB,4BAA4B,oBAAoB;EACvE,cAAcA,KAAE,OAAO;EACvB,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,iBAAiBA,KAAE,OAAO,EAAE,SAAS;EACrC,gBAAgBA,KAAE,OAAO,EAAE,SAAS;EACpC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,GAAG;EACH,GAAG;AACL,CAAC,EACA;EACC;AACF;AAoBF,iBAA6D,IAAI;ACnC1D,IAAM,mBAAmBA,KAC7B,OAAO;EACN,MAAMA,KAAE,QAAQ,kBAAkB;EAClC,qBAAqB,4BAA4B,kBAAkB;EACnE,4BAA4BA,KAAE,OAAO;EACrC,eAAeA,KAAE,OAAO;EACxB,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,mCAAmC;AAiB/C,iBAAyD,IAAI;ACzBtD,IAAM,0BAA0BA,KACpC,OAAO;EACN,MAAMA,KAAE,QAAQ,yBAAyB;EACzC,4BAA4B;IAC1B;EACF;EACA,qBAAqBA,KAAE,OAAO;EAC9B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,QAAQA,KAAE,MAAM,KAAK;AACvB,CAAC,EACA,SAAS,4CAA4C;AAkBxD,iBAAqE,IAAI;AC9BlE,IAAM,oBAAoBA,KAC9B,OAAO;EACN,MAAMA,KAAE,QAAQ,mBAAmB;EACnC,sBAAsB,4BAA4B,mBAAmB;EACrE,qBAAqBA,KAAE,OAAO;EAC9B,OAAOA,KAAE,OAAO;EAChB,aAAaA,KAAE,OAAO;EACtB,iBAAiB;EACjB,sBAAsB;EACtB,sBAAsB;EACtB,oBAAoBA,KAAE,OAAO,EAAE,SAAS;EACxC,eAAeA,KAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,wDAAwD;AAqBpE,iBAA2D,IAAI;AC/B/D,IAAM,uBAAuBA,KAAE,OAAO;EACpC,MAAMA,KAAE,QAAQ,iBAAiB;EACjC,oBAAoB,4BAA4B,iBAAiB;EACjE,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,0BAA0BA,KAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI;AAC/D,CAAC;AAGM,IAAM,uBAAuB,qBAAqB,OAAO;EAC9D,OAAOA,KAAE,QAAQ,MAAM;EACvB,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,UAAU,SAAS,SAAS;AAC9B,CAAC;AAoBD,iBAA+D,IAAI;AAG5D,IAAM,uBAAuB,qBAAqB,OAAO;EAC9D,OAAOA,KAAE,QAAQ,MAAM;EACvB;AACF,CAAC;AAiBD,iBAA+D,IAAI;AAG5D,IAAM,0BAA0B,qBAAqB,OAAO;EACjE,OAAOA,KAAE,QAAQ,SAAS;EAC1B,QAAQA,KAAE,MAAM,KAAK;AACvB,CAAC;AAkBD,iBAAqE,IAAI;AAGlE,IAAM,kBAAkBA,KAC5B,mBAAmB,SAAS;EAC3B;EACA;EACA;AACF,CAAC,EACA,SAAS,mCAAmC;AAS/C,iBAAuD,IAAI;ACzGpD,IAAM,oCAAoCA,KAC9C,OAAO;EACN,MAAMA,KAAE,QAAQ,mCAAmC;EACnD,sCAAsC;IACpC;EACF;EACA,YAAYA,KACT,QAAQ,mCAAmC,EAC3C,QAAQ,mCAAmC;EAC9C,SAASA,KAAE,OAAO;EAClB,kBAAkBA,KAAE,OAAO;EAC3B,cAAcA,KAAE,OAAO;EACvB,kBAAkB;EAClB,kBAAkBA,KAAE,OAAO;IACzB,OAAOA,KAAE,OAAO;IAChB,OAAOA,KAAE,OAAO;IAChB,OAAOA,KAAE,OAAO;IAChB,OAAOA,KAAE,OAAO;EAClB,CAAC;EACD,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,qBAAqBA,KAAE,OAAO,EAAE,SAAS;AAC3C,CAAC,EACA;EACC;AACF;AA4BF,iBAGE,IAAI;ACvDC,IAAM,oCAAoCA,KAC9C,OAAO;EACN,MAAMA,KAAE,QAAQ,mCAAmC;EACnD,sCAAsC;IACpC;EACF;EACA,YAAYA,KACT,QAAQ,mCAAmC,EAC3C,QAAQ,mCAAmC;EAC9C,SAASA,KAAE,OAAO;EAClB,kBAAkBA,KAAE,OAAO,EAAE,SAAS;EACtC,qBAAqBA,KAAE,OAAO;EAC9B,OAAO;EACP,eAAeA,KAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA;EACC;AACF;AAqBF,iBAGE,IAAI;ACzCC,IAAM,0BAA0BA,KACpC,OAAO;EACN,MAAMA,KAAE,QAAQ,yBAAyB;EACzC,cAAc,4BAA4B,WAAW;EACrD,YAAYA,KACT,QAAQ,yBAAyB,EACjC,QAAQ,yBAAyB;EACpC,SAASA,KAAE,OAAO;EAClB,aAAaA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,IAAI,CAAC;EACtC,mBAAmB,SAAS,SAAS;EACrC,kBAAkB,SAAS,SAAS;EACpC,YAAYA,KACT,OAAO;IACN,GAAGA,KAAE,OAAO,EAAE,SAAS;IACvB,GAAGA,KAAE,OAAO,EAAE,SAAS;EACzB,CAAC,EACA,SAAS;EACZ,eAAeA,KAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,+DAA+D;AAqB3E,iBAAqE,IAAI;ACvClE,IAAM,qBAAqBA,KAC/B,OAAO;EACN,MAAMA,KAAE,QAAQ,oBAAoB;EACpC,uBAAuB,4BAA4B,oBAAoB;EACvE,kBAAkBA,KAAE,OAAO;EAC3B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,QAAQ;EACR,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,0CAA0C;AA0BtD,iBAA6D,IAAI;ACvC1D,IAAM,wBAAwBA,KAClC,OAAO;EACN,MAAMA,KAAE,QAAQ,uBAAuB;EACvC,0BAA0B;IACxB;EACF;EACA,kBAAkBA,KAAE,OAAO;EAC3B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,SAASA,KAAE,MAAM,KAAK,EAAE,IAAI,CAAC;EAC7B,cAAc,OAAO,QAAQ,OAAO;EACpC,WAAWA,KAAE,QAAQ,EAAE,SAAS;EAChC,kBAAkBA,KAAE,QAAQ,EAAE,SAAS;EACvC,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,wCAAwC;AA2BpD,iBAAmE,IAAI;AC5ChE,IAAM,wBAAwBA,KAClC,OAAO;EACN,MAAMA,KAAE,QAAQ,uBAAuB;EACvC,0BAA0B;IACxB;EACF;EACA,kBAAkBA,KAAE,OAAO;EAC3B,cAAcA,KAAE,OAAO,EAAE,SAAS;EAClC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAO;EACP,QAAQA,KAAE,MAAM,KAAK,EAAE,IAAI,CAAC;EAC5B,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,wCAAwC;AAwBpD,iBAAmE,IAAI;ACpChE,IAAM,gBAAgBA,KAC1B,OAAO;EACN,MAAMA,KAAE,QAAQ,eAAe;EAC/B,kBAAkBA,KAAE,OAAO;EAC3B,kBAAkBA,KAAE,OAAO;EAC3B,qBAAqBA,KAAE,OAAO;EAC9B,UAAU;EACV,UAAU,OAAO,SAAS;EAC1B,MAAM,OAAO,SAAS;EACtB,OAAO,UAAU,SAAS;EAC1B,eAAeA,KAAE,OAAO,EAAE,SAAS;;EAGnC,oBAAoBA,KAAE,OAAO,EAAE,SAAS;EACxC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,gBAAgBA,KAAE,OAAO,EAAE,SAAS;EACpC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,gBAAgBA,KAAE,OAAO,EAAE,SAAS;EACpC,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,+BAA+BA,KAAE,OAAO,EAAE,SAAS;EACnD,aAAaA,KAAE,IAAI,EAAE,SAAS;EAC9B,2BAA2BA,KAAE,QAAQ,EAAE,SAAS;AAClD,CAAC,EACA,SAAS,gCAAgC;AA4B5C,iBAAqD,IAAI;ACtDlD,IAAM,aAAaA,KAAE,KAAK,CAAC,YAAY,UAAU,YAAY,UAAU,CAAC;AAG/E,IAAM,aAAaA,KAChB,MAAM,CAACA,KAAE,OAAO,GAAGA,KAAE,OAAO,CAAC,CAAC,EAC9B,UAAU,CAAC,QAAQ;AAClB,MAAI,OAAO,QAAQ,UAAU;AAC3B,QAAI,IAAI,SAAS,GAAG,GAAG;AACrB,aAAO,WAAW,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI;IACxC;AACA,WAAO,WAAW,GAAG;EACvB;AACA,SAAO;AACT,CAAC,EACA;EACCA,KACG,OAAO,EACP,IAAI,GAAG,iCAAiC,EACxC,IAAI,GAAG,wCAAwC;AACpD;AAEK,IAAM,+BAA+BA,KACzC,OAAO;EACN,MAAMA,KAAE,QAAQ,2BAA2B;EAC3C,8BAA8B;IAC5B;EACF;EACA,cAAcA,KAAE,QAAQ,IAAI,EAAE,SAAS,EAAE,QAAQ,IAAI;EACrD,yBAAyBA,KAAE,OAAO,EAAE,SAAS;EAC7C,yBAAyBA,KAAE,OAAO,EAAE,SAAS;EAC7C,wBAAwBA,KAAE,OAAO,EAAE,SAAS;EAC5C,wBAAwBA,KAAE,OAAO,EAAE,SAAS;EAC5C;AACF,CAAC,EACA,SAAS,4CAA4C;AAEjD,IAAM,+BAA+BA,KACzC,OAAO;EACN,MAAMA,KAAE,QAAQ,2BAA2B;EAC3C,8BAA8B;IAC5B;EACF;EACA,cAAcA,KAAE,QAAQ,KAAK;EAC7B,0BAA0BA,KAAE,OAAO,EAAE,SAAS;EAC9C,0BAA0BA,KAAE,OAAO,EAAE,SAAS;EAC9C,yBAAyBA,KAAE,OAAO,EAAE,SAAS;EAC7C,yBAAyBA,KAAE,OAAO,EAAE,SAAS;EAC7C,SAAS,QAAQ,SAAS;EAC1B,WAAW,UAAU,SAAS;EAC9B,sBAAsB,QAAQ,SAAS;EACvC,YAAY,WAAW,SAAS;EAChC,OAAO,SAAS,SAAS;EACzB,YAAY,WAAW,SAAS;AAClC,CAAC,EACA,SAAS,6CAA6C;AAMlD,IAAM,4BAA4BA,KACtC,MAAM,CAAC,8BAA8B,4BAA4B,CAAC,EAClE,SAAS,yCAAyC;AA6CrD,iBAGE,IAAI;AACN,iBAGE,IAAI;AACN,iBAA2E,IAAI;ACnHxE,IAAM,kBAAkBA,KAAE,MAAM;EACrCA,KAAE,QAAQ,gBAAgB;EAC1BA,KAAE,QAAQ,0BAA0B;EACpCA,KAAE,QAAQ,0BAA0B;EACpCA,KAAE,QAAQ,mBAAmB;AAC/B,CAAC;AAcM,IAAM,wBAAwBA,KAClC,OAAO;EACN,MAAMA,KAAE,QAAQ,uBAAuB;EACvC,0BAA0B;IACxB;EACF;EACA,MAAMA,KAAE,OAAO;EACf;EACA,eAAe,YAAY,SAAS;EACpC,eAAe,GAAG,SAAS;EAC3B,aAAa,GAAG,SAAS;AAC3B,CAAC,EACA,SAAS,+CAA+C;AAK3D,iBAAqE,IAAI;ACrBlE,IAAM,qCAAqCA,KAC/C,OAAO;EACN,MAAMA,KAAE,QAAQ,oCAAoC;EACpD,uCAAuC;IACrC;EACF;EACA,0BAA0BA,KAAE,OAAO;EACnC,eAAeA,KAAE,MAAMA,KAAE,OAAO,CAAC,EAAE,SAAS;EAC5C,gBAAgBA,KAAE,MAAMA,KAAE,OAAO,CAAC;EAClC,qBAAqBA,KAAE,OAAO,EAAE,SAAS;EACzC,iCAAiCA,KAAE,OAAO,EAAE,SAAS;EACrD,eAAe;EACf,eAAe;EACf,aAAa;EACb,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA,SAAS,wDAAwD;AASpE,iBAGE,IAAI;AC5CC,IAAM,oBAAoBA,KAC9B,OAAO;EACN,MAAMA,KAAE,QAAQ,mBAAmB;EACnC,sBAAsB,4BAA4B,mBAAmB;EACrE,qBAAqBA,KAAE,OAAO,EAAE,SAAS;EACzC,WAAW,GAAG,SAAS;EACvB,UAAU,GAAG,SAAS;EACtB,eAAeA,KAAE,QAAQ,EAAE,SAAS;EACpC,qBAAqB,UAAU,SAAS;AAC1C,CAAC,EACA,SAAS,gDAAgD;AAgB5D,iBAA6D,IAAI;AC3B1D,IAAM,2BAA2BA,KACrC,OAAO;EACN,MAAMA,KAAE,QAAQ,0BAA0B;EAC1C,6BAA6B;IAC3B;EACF;EACA,qBAAqBA,KAAE,OAAO,EAAE,SAAS;EACzC,MAAMA,KAAE,OAAO,EAAE,SAAS;EAC1B,6BAA6BA,KAAE,OAAO,EAAE,SAAS;EACjD,4BAA4BA,KAAE,OAAO,EAAE,SAAS;EAChD,gCAAgCA,KAAE,OAAO,EAAE,SAAS;EACpD,+BAA+BA,KAAE,OAAO,EAAE,SAAS;EACnD,eAAeA,KAAE,OAAO,EAAE,SAAS;EACnC,OAAOA,KAAE,OAAO,EAAE,SAAS;AAC7B,CAAC,EACA;EACC;AACF,EACC,YAAY,CAAC,MAAM,QAAQ;AAC1B,QAAM,kBACJ,KAAK,kCAAkC,KAAK;AAE9C,MAAI,iBAAiB;AACnB,UAAM,YACJ,CAAC,CAAC,KAAK,+BACP,CAAC,CAAC,KAAK;AACT,UAAM,WACJ,CAAC,CAAC,KAAK,8BACP,CAAC,CAAC,KAAK;AAET,QAAI,aAAa,UAAU;AACzB,UAAI,SAAS;QACX,MAAMA,KAAE,aAAa;QACrB,SACE;MACJ,CAAC;IACH,WAAW,WAAW;AACpB,UACE,CAAC,KAAK,+BACN,CAAC,KAAK,gCACN;AACA,YAAI,SAAS;UACX,MAAMA,KAAE,aAAa;UACrB,SACE;QACJ,CAAC;MACH;IACF,WAAW,UAAU;AACnB,UACE,CAAC,KAAK,8BACN,CAAC,KAAK,+BACN;AACA,YAAI,SAAS;UACX,MAAMA,KAAE,aAAa;UACrB,SACE;QACJ,CAAC;MACH;IACF;EACF,OAAO;AAEL,QACE,CAAC,CAAC,KAAK,gCAAgC,CAAC,CAAC,KAAK,4BAC9C;AACA,UAAI,SAAS;QACX,MAAMA,KAAE,aAAa;QACrB,SACE;MACJ,CAAC;IACH;EACF;AACF,CAAC;AAyBH,iBAAyE,IAAI;AChGtE,IAAM,sCAAsCA,KAChD,OAAO;EACN,MAAMA,KAAE,QAAQ,qCAAqC;EACrD,wCAAwC;IACtC;EACF;EACA,YAAYA,KACT,QAAQ,qCAAqC,EAC7C,QAAQ,qCAAqC;EAChD,SAASA,KAAE,OAAO;EAClB,0BAA0BA,KAAE,OAAO,EAAE,SAAS;EAC9C,eAAeA,KAAE,OAAO,EAAE,SAAS;AACrC,CAAC,EACA,SAAS,6DAA6D;AAqBzE,iBAGE,IAAI;AC9BC,IAAM,sBAAsBA,KAAE,MAAM;EAKrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACN,CAAC;AAKM,IAAM,mBAAmB;AAuBhC,iBAGE,IAAI;AAaN,wBAYE,IAAI;;;ACjLC,SAAS,aAAc,QAAQG,QAAO;AAC3C,SAAO,MAAM,QAAQA,MAAK,IACtB;AAAA,IACE,OAAO,IAAIA,OAAM,CAAC,IAAI,OAAO,IAAIA,OAAM,CAAC,IAAI,OAAO;AAAA,IACnD,OAAO,IAAIA,OAAM,CAAC,IAAI,OAAO,IAAIA,OAAM,CAAC,IAAI,OAAO;AAAA,EACrD,IACA;AAAA,IACE,GAAG,OAAO,IAAIA,OAAM,IAAI,OAAO,IAAIA,OAAM,IAAI,OAAO;AAAA,IACpD,GAAG,OAAO,IAAIA,OAAM,IAAI,OAAO,IAAIA,OAAM,IAAI,OAAO;AAAA,EACtD;AACN;;;ACVO,SAAS,UAAWC,KAAIC,MAAK,GAAG;AACrC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAGD;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAGC;AAAA,EACL;AACF;;;ACVO,SAAS,aAAc,UAAU;AACtC,aAAW,MAAM,QAAQ,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI;AAEtD,QAAM,WAAW,CAACC,KAAIC,QAAO;AAC3B,WAAO;AAAA,MACL,GAAGD,IAAG,IAAIC,IAAG,IAAID,IAAG,IAAIC,IAAG;AAAA,MAC3B,GAAGD,IAAG,IAAIC,IAAG,IAAID,IAAG,IAAIC,IAAG;AAAA,MAC3B,GAAGD,IAAG,IAAIC,IAAG,IAAID,IAAG,IAAIC,IAAG,IAAID,IAAG;AAAA,MAClC,GAAGA,IAAG,IAAIC,IAAG,IAAID,IAAG,IAAIC,IAAG;AAAA,MAC3B,GAAGD,IAAG,IAAIC,IAAG,IAAID,IAAG,IAAIC,IAAG;AAAA,MAC3B,GAAGD,IAAG,IAAIC,IAAG,IAAID,IAAG,IAAIC,IAAG,IAAID,IAAG;AAAA,IACpC;AAAA,EACF;AAEA,UAAQ,SAAS,QAAQ;AAAA,IACvB,KAAK;AACH,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAExC,KAAK;AACH,aAAO,SAAS,CAAC;AAAA,IAEnB,KAAK;AACH,aAAO,SAAS,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC;AAAA,IAE1C,SAAS;AACP,YAAM,CAACA,KAAIC,KAAI,GAAG,IAAI,IAAI;AAC1B,YAAM,IAAI,SAASD,KAAIC,GAAE;AACzB,aAAO,UAAU,GAAG,GAAG,IAAI;AAAA,IAC7B;AAAA,EACF;AACF;AAOO,SAAS,WAAY,UAAU;AACpC,SAAO,UAAU,GAAG,QAAQ;AAC9B;;;AC5CO,SAAS,YAAa,KAAK;AAChC,SAAO,OAAO,QAAQ;AACxB;;;ACEA,IAAM,EAAE,KAAK,KAAK,GAAG,IAAI;AAQlB,SAAS,OAAQ,OAAOC,KAAIC,KAAI;AACrC,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,iBAAiB;AAAA,IACrB,GAAG;AAAA,IACH,GAAG,CAAC;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACA,MAAI,YAAYD,GAAE,KAAK,YAAYC,GAAE,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,SAAO,UAAU;AAAA,IACf,UAAUD,KAAIC,GAAE;AAAA,IAChB;AAAA,IACA,UAAU,CAACD,KAAI,CAACC,GAAE;AAAA,EACpB,CAAC;AACH;AASO,SAAS,UAAW,OAAOD,MAAK,QAAWC,MAAK,QAAW;AAChE,SAAO,OAAO,QAAQ,KAAK,KAAKD,KAAIC,GAAE;AACxC;;;AC/BO,SAAS,MAAOC,KAAIC,MAAK,QAAWC,MAAK,QAAWC,MAAK,QAAW;AACzE,MAAI,YAAYF,GAAE,EAAG,CAAAA,MAAKD;AAE1B,QAAM,cAAc;AAAA,IAClB,GAAGA;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAGC;AAAA,IACH,GAAG;AAAA,EACL;AAEA,MAAI,YAAYC,GAAE,KAAK,YAAYC,GAAE,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,SAAO,UAAU;AAAA,IACf,UAAUD,KAAIC,GAAE;AAAA,IAChB;AAAA,IACA,UAAU,CAACD,KAAI,CAACC,GAAE;AAAA,EACpB,CAAC;AACH;;;ACnBO,SAAS,MAAO,QAAQ;AAC7B,SAAO,SAAS,MAAM;AACxB;AAOO,SAAS,SAAU,QAAQ;AAChC,SAAO,UAAU,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC;AACvF;;;ACpBO,SAAS,QAAS,QAAQ;AAG/B,QAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAAC,IAAG,EAAE,IAAI;AAE7B,QAAM,QAAQ,IAAI,IAAI,IAAI;AAE1B,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,IACP,GAAG,IAAI,CAAC;AAAA,IACR,GAAG,IAAI,CAAC;AAAA,IACR,GAAG,IAAI;AAAA,IACP,IAAI,IAAIA,KAAI,IAAI,KAAK,CAAC;AAAA,IACtB,IAAI,IAAIA,KAAI,IAAI,KAAK;AAAA,EACvB;AACF;;;ACdO,SAAS,aAAc,QAAQ,YAAY,MAAa;AAC7D,SAAO;AAAA,IACL,GAAG,KAAK,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,IACtC,GAAG,KAAK,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,IACtC,GAAG,KAAK,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,IACtC,GAAG,KAAK,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,IACtC,GAAG,KAAK,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,IACtC,GAAG,KAAK,MAAM,OAAO,IAAI,SAAS,IAAI;AAAA,EACxC;AACF;;;ACJO,SAAS,cAAeC,KAAIC,KAAI;AAErC,QAAM,MAAMD,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMA,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMC,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMA,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAG/C,QAAM,MAAMD,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMA,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMC,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMA,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAG/C,QAAM,MAAMD,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMA,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMC,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAC/C,QAAM,MAAMA,IAAG,CAAC,EAAE,KAAK,OAAOA,IAAG,CAAC,EAAE,IAAIA,IAAG,CAAC,EAAE,CAAC;AAE/C,QAAMC,MAAK;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACA,QAAM,KAAK;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG,MAAM;AAAA,IACT,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,QAAM,YAAY,QAAQA,GAAE;AAC5B,QAAM,eAAe,UAAU,CAAC,IAAI,SAAS,CAAC;AAG9C,SAAO,aAAa,YAAY;AAClC;;;AChDO,SAAS,WAAY;AAC1B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;;;ACZA,IAAM,EAAE,IAAI,IAAI;;;ACGhB,SAAS,aAAa,OAAO,QAAQ;AACnC,WAASC,KAAI;AAAE,SAAK,cAAc;AAAA,EAAO;AACzC,EAAAA,GAAE,YAAY,OAAO;AACrB,QAAM,YAAY,IAAIA,GAAE;AAC1B;AAEA,SAAS,gBAAgB,SAAS,UAAU,OAAO,UAAU;AAC3D,MAAIC,QAAO,MAAM,KAAK,MAAM,OAAO;AAEnC,MAAI,OAAO,gBAAgB;AACzB,WAAO,eAAeA,OAAM,gBAAgB,SAAS;AAAA,EACvD;AACA,EAAAA,MAAK,WAAW;AAChB,EAAAA,MAAK,QAAQ;AACb,EAAAA,MAAK,WAAW;AAChB,EAAAA,MAAK,OAAO;AACZ,SAAOA;AACT;AAEA,aAAa,iBAAiB,KAAK;AAEnC,SAAS,WAAW,KAAK,cAAc,WAAW;AAChD,cAAY,aAAa;AACzB,MAAI,IAAI,SAAS,cAAc;AAAE,WAAO;AAAA,EAAK;AAC7C,kBAAgB,IAAI;AACpB,eAAa,UAAU,OAAO,YAAY;AAC1C,SAAO,MAAM,UAAU,MAAM,GAAG,YAAY;AAC9C;AAEA,gBAAgB,UAAU,SAAS,SAAS,SAAS;AACnD,MAAI,MAAM,YAAY,KAAK;AAC3B,MAAI,KAAK,UAAU;AACjB,QAAI,MAAM;AACV,QAAIC;AACJ,SAAKA,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACnC,UAAI,QAAQA,EAAC,EAAE,WAAW,KAAK,SAAS,QAAQ;AAC9C,cAAM,QAAQA,EAAC,EAAE,KAAK,MAAM,aAAa;AACzC;AAAA,MACF;AAAA,IACF;AACA,QAAIC,KAAI,KAAK,SAAS;AACtB,QAAI,WAAY,KAAK,SAAS,UAAW,OAAO,KAAK,SAAS,OAAO,WAAW,aAC5E,KAAK,SAAS,OAAO,OAAOA,EAAC,IAC7BA;AACJ,QAAI,MAAM,KAAK,SAAS,SAAS,MAAM,SAAS,OAAO,MAAM,SAAS;AACtE,QAAI,KAAK;AACP,UAAIC,KAAI,KAAK,SAAS;AACtB,UAAI,SAAS,WAAW,IAAI,SAAS,KAAK,SAAS,EAAE,QAAQ,GAAG;AAChE,UAAI,OAAO,IAAID,GAAE,OAAO,CAAC;AACzB,UAAI,OAAOA,GAAE,SAASC,GAAE,OAAOA,GAAE,SAAS,KAAK,SAAS;AACxD,UAAI,SAAU,OAAOD,GAAE,UAAW;AAClC,aAAO,YAAY,MAAM,OACnB,SAAS,SACT,SAAS,OAAO,QAAQ,OAAO,OAC/B,SAAS,QAAQ,WAAW,IAAIA,GAAE,SAAS,GAAG,GAAG,IACjD,WAAW,IAAI,QAAQ,GAAG;AAAA,IAClC,OAAO;AACL,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AACA,SAAO;AACT;AAEA,gBAAgB,eAAe,SAAS,UAAU,OAAO;AACvD,MAAI,2BAA2B;AAAA,IAC7B,SAAS,SAAS,aAAa;AAC7B,aAAO,MAAO,cAAc,YAAY,IAAI,IAAI;AAAA,IAClD;AAAA,IAEA,OAAO,SAAS,aAAa;AAC3B,UAAI,eAAe,YAAY,MAAM,IAAI,SAAS,MAAM;AACtD,eAAO,MAAM,QAAQ,IAAI,IACrB,YAAY,KAAK,CAAC,CAAC,IAAI,MAAM,YAAY,KAAK,CAAC,CAAC,IAChD,YAAY,IAAI;AAAA,MACtB,CAAC;AAED,aAAO,OAAO,YAAY,WAAW,MAAM,MAAM,aAAa,KAAK,EAAE,IAAI;AAAA,IAC3E;AAAA,IAEA,KAAK,WAAW;AACd,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,WAAW;AACd,aAAO;AAAA,IACT;AAAA,IAEA,OAAO,SAAS,aAAa;AAC3B,aAAO,YAAY;AAAA,IACrB;AAAA,EACF;AAEA,WAAS,IAAIE,KAAI;AACf,WAAOA,IAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACnD;AAEA,WAAS,cAAcF,IAAG;AACxB,WAAOA,GACJ,QAAQ,OAAO,MAAM,EACrB,QAAQ,MAAO,KAAM,EACrB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,gBAAyB,SAASE,KAAI;AAAE,aAAO,SAAS,IAAIA,GAAE;AAAA,IAAG,CAAC,EAC1E,QAAQ,yBAAyB,SAASA,KAAI;AAAE,aAAO,QAAS,IAAIA,GAAE;AAAA,IAAG,CAAC;AAAA,EAC/E;AAEA,WAAS,YAAYF,IAAG;AACtB,WAAOA,GACJ,QAAQ,OAAO,MAAM,EACrB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,MAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,OAAO,KAAK,EACpB,QAAQ,gBAAyB,SAASE,KAAI;AAAE,aAAO,SAAS,IAAIA,GAAE;AAAA,IAAG,CAAC,EAC1E,QAAQ,yBAAyB,SAASA,KAAI;AAAE,aAAO,QAAS,IAAIA,GAAE;AAAA,IAAG,CAAC;AAAA,EAC/E;AAEA,WAAS,oBAAoB,aAAa;AACxC,WAAO,yBAAyB,YAAY,IAAI,EAAE,WAAW;AAAA,EAC/D;AAEA,WAAS,iBAAiBC,WAAU;AAClC,QAAI,eAAeA,UAAS,IAAI,mBAAmB;AACnD,QAAI,GAAGC;AAEP,iBAAa,KAAK;AAElB,QAAI,aAAa,SAAS,GAAG;AAC3B,WAAK,IAAI,GAAGA,KAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC/C,YAAI,aAAa,IAAI,CAAC,MAAM,aAAa,CAAC,GAAG;AAC3C,uBAAaA,EAAC,IAAI,aAAa,CAAC;AAChC,UAAAA;AAAA,QACF;AAAA,MACF;AACA,mBAAa,SAASA;AAAA,IACxB;AAEA,YAAQ,aAAa,QAAQ;AAAA,MAC3B,KAAK;AACH,eAAO,aAAa,CAAC;AAAA,MAEvB,KAAK;AACH,eAAO,aAAa,CAAC,IAAI,SAAS,aAAa,CAAC;AAAA,MAElD;AACE,eAAO,aAAa,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,IACtC,UACA,aAAa,aAAa,SAAS,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,WAAS,cAAcC,QAAO;AAC5B,WAAOA,SAAQ,MAAO,cAAcA,MAAK,IAAI,MAAO;AAAA,EACtD;AAEA,SAAO,cAAc,iBAAiB,QAAQ,IAAI,UAAU,cAAc,KAAK,IAAI;AACrF;;;ACtJO,SAAS,aAAc,QAAQ,QAAQ,OAAOC,SAAQ,OAAO;AAIlE,MAAI,OAAO;AACT,QAAIA,QAAO;AACT,eAAS,QAAQ,QAAQ,MAAM,IAAI,EAAE,CAAC;AAAA,IACxC,OAAO;AACL,eAAS,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC;AAAA,IACvC;AAAA,EACF,WAAWA,QAAO;AAChB,aAAS,QAAQ,QAAQ,MAAM,IAAI,CAAC,CAAC;AAAA,EACvC;AAEA,QAAM,IAAI,OAAO;AAAG,QAAM,IAAI,OAAO;AACrC,QAAM,IAAI,OAAO;AAAG,QAAM,IAAI,OAAO;AACrC,MAAI,QAAQ,QAAQC;AAEpB,MAAI,MAAM,KAAK,MAAM,GAAG;AACtB,UAAM,UAAU,KAAK,MAAM,GAAG,CAAC;AAC/B,aAAS;AACT,cAAU,IAAI,IAAI,IAAI,KAAK;AAC3B,UAAM,OAAO,KAAK,KAAK,IAAI,OAAO;AAClC,IAAAA,YAAW,IAAI,IAAI,CAAC,OAAO;AAAA,EAC7B,WAAW,MAAM,KAAK,MAAM,GAAG;AAC7B,UAAM,UAAU,KAAK,MAAM,GAAG,CAAC;AAC/B,cAAU,IAAI,IAAI,IAAI,KAAK;AAC3B,aAAS;AACT,UAAM,OAAO,KAAK,KAAK,IAAI,OAAO;AAClC,IAAAA,YAAW,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO;AAAA,EAC5C,OAAO;AACL,aAAS;AACT,aAAS;AACT,IAAAA,YAAW;AAAA,EACb;AAGA,MAAID,QAAO;AACT,aAAS,CAAC;AAAA,EACZ;AAEA,MAAI,OAAO;AACT,aAAS,CAAC;AAAA,EACZ;AAEA,SAAO;AAAA,IACL,WAAW,EAAE,IAAI,OAAO,GAAG,IAAI,OAAO,EAAE;AAAA,IACxC,OAAO,EAAE,IAAI,QAAQ,IAAI,OAAO;AAAA,IAChC,UAAU,EAAE,OAAOC,UAAS;AAAA,EAC9B;AACF;;;AC9CO,SAAS,QAAS;AACvB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;;;AErBA,SAAS,QACP,KACA,GACA,GACA;AACA,MAAI,CAAC,KAAK,CAAC,EAAG;AACd,MAAI,OAAO,IAAI,IAAI,CAAC;AACpB,MAAI,CAAC,MAAM;AACT,WAAO,oBAAI,IAAI;AACf,QAAI,IAAI,GAAG,IAAI;EACjB;AACA,OAAK,IAAI,CAAC;AACV,MAAI,OAAO,IAAI,IAAI,CAAC;AACpB,MAAI,CAAC,MAAM;AACT,WAAO,oBAAI,IAAI;AACf,QAAI,IAAI,GAAG,IAAI;EACjB;AACA,OAAK,IAAI,CAAC;AACZ;AAEO,SAAS,aACd,MACA,MACqB;AACrB,MAAI,CAAC,KAAK,iBAAiB,CAAC,KAAK,gBAAiB,QAAO,CAAC,GAAG,IAAI;AAEjE,QAAM,QAAQ,oBAAI,IAA+B;AACjD,aAAW,OAAO,MAAM;AACtB,UAAM,QAAS,IAAY,GAAG,IAAI,IAAI,KAAK;AAC3C,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,IAAI,OAAO,GAAG;IACtB;EACF;AAEA,QAAM,MAAM,oBAAI,IAA+C;AAC/D,aAAW,OAAO,MAAM;AACtB,UAAM,UAAU,OAAO,QAAQ,GAAU;AACzC,eAAW,CAAC,KAAK,GAAG,KAAK,SAAS;AAChC,UAAI,QAAQ,yBAA0B;AACtC,UAAI,IAAI,SAAS,KAAK,KAAK,OAAO,QAAQ,UAAU;AAClD,cAAM,QAAQ,MAAM,IAAI,GAAG;AAC3B,gBAAQ,KAAK,KAAK,KAAK;MACzB,WAAW,IAAI,SAAS,MAAM,KAAK,MAAM,QAAQ,GAAG,GAAG;AACrD,mBAAWC,MAAK,KAAK;AACnB,cAAI,OAAOA,OAAM,UAAU;AACzB,kBAAM,QAAQ,MAAM,IAAIA,EAAC;AACzB,oBAAQ,KAAK,KAAK,KAAK;UACzB;QACF;MACF;IACF;EACF;AAEA,QAAM,QAA6B,CAAC;AACpC,QAAM,WAAW,oBAAI,IAAuB;AAE5C,aAAW,OAAO,MAAM;AACtB,QACG,KAAK,iBACH,IAAY,kBAAkB,KAAK,iBACrC,KAAK,oBACF,IAAY,oBAAoB,KAAK,mBACpC,MAAM,QAAS,IAAY,uBAAuB,KAChD,IAAY,wBAAwB;MACnC,KAAK;IACP,IACN;AACA,YAAM,KAAK,GAAG;AACd,eAAS,IAAI,GAAG;IAClB;EACF;AAEA,SAAO,MAAM,SAAS,GAAG;AACvB,UAAM,MAAM,MAAM,MAAM;AACxB,UAAM,YAAY,IAAI,IAAI,GAAG;AAC7B,QAAI,CAAC,UAAW;AAChB,eAAW,KAAK,WAAW;AACzB,UAAI,CAAC,SAAS,IAAI,CAAC,GAAG;AACpB,iBAAS,IAAI,CAAC;AACd,cAAM,KAAK,CAAC;MACd;IACF;EACF;AAEA,SAAO,KAAK,OAAO,CAACC,OAAM,SAAS,IAAIA,EAAC,CAAC;AAC3C;AD/BO,IAAM,OAA6B,CACxC,kBACA,UAAkC,CAAC,MAChC;AACH,QAAM,cAAc;AACpB,MAAI,gBAAgC,YAAoB;AACxD,MAAI,CAAC,eAAe;AAClB,oBAAgB;MACd,QAAQ,CAAC;MACT,WAAW;IACb;AACE,gBAAoB,kBAAkB;AAGxC,eAAW,OAAO,aAAa;AAC7B,YAAM,OAAO,IAAI;AACjB,YAAM,QAAS,IAAY,GAAG,IAAI,KAAK;AACvC,UAAI,CAAC,MAAO;AACZ,YAAM,QAAQ,OAAO,SAAS,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC;AACpD,UAAI,CAAC,OAAO,MAAM,KAAK,GAAG;AACxB,sBAAc,OAAO,IAAI,IAAI,KAAK;UAChC,cAAc,OAAO,IAAI,KAAK;UAC9B;QACF;MACF;IACF;EACF;AACA,QAAMC,MAAK,IAAI;IACb,CAAC;IACD;MACE,KAAK,CAAC,cAAmB,SAAiB;AACxC,YAAI,SAAS,WAAW;AACtB,iBAAO,MAAM;AACX;AAAE,wBAAoB,YAAY,cAAc;AAChD,mBAAO;UACT;QACF;AACA,YAAI,SAAS,aAAa;AACxB,iBAAO,cAAc;QACvB;AAEA,YAAI,SAAS,WAAW;AACtB,iBAAO,CAAC,SACN,IAAI,aAAa,aAAa,IAAI,GAAG,OAAO;QAChD;AAEA,cAAM,iBAAiB;AAEvB,eAAO;UACL,KAAK,CAAC,OACJ,YAAY;YACV,CAACD,OACCA,GAAE,SAAS,kBAAkBA,GAAE,GAAG,cAAc,KAAK,MAAM;UAC/D;UACF,UAAU,CAAC,UAAe;AACxB,kBAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,gBAAI,KAAK,WAAW,GAAG;AACrB,oBAAM,IAAI;gBACR;cACF;YACF;AACA,kBAAM,WAAW,KAAK,CAAC;AACvB,kBAAM,YAAY,SAAS,QAAQ,OAAO,EAAE;AAC5C,kBAAM,SAAc,YAAY;cAC9B,CAACA,OACCA,GAAE,SAAS,aAAaA,GAAE,QAAQ,MAAM,MAAM,QAAQ;YAC1D;AACA,gBAAI,CAAC,OAAQ,QAAO;AACpB,mBAAO,YAAY;cACjB,CAACA,OACCA,GAAE,SAAS,kBACXA,GAAE,GAAG,cAAc,KAAK,MAAM,OAAO,GAAG,cAAc,KAAK;YAC/D;UACF;UACA,UAAU,CAAC,UAAe;AACxB,kBAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,mBAAO,YAAY;cACjB,CAACA,OACCA,GAAE,SAAS,kBACX,KAAK,MAAM,CAAC,QAAQA,GAAE,GAAG,MAAM,MAAM,GAAG,CAAC;YAC7C;UACF;UACA,MAAM,CAAC,UAAgB;AACrB,kBAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK;AAC5C,mBAAO,YAAY;cACjB,CAACA,OACCA,GAAE,SAAS,kBACX,KAAK,MAAM,CAAC,QAAQA,GAAE,GAAG,MAAM,MAAM,GAAG,CAAC;YAC7C;UACF;UACA,QAAQ,CAAC,QAAa;AACpB,0BAAc,OAAO,cAAc,MAAM;AACzC,0BAAc,OAAO,cAAc;AACnC,kBAAM,QAAQ,cAAc,OAAO,cAAc;AACjD,kBAAM,SAAS;cACb,MAAM;cACN,CAAC,GAAG,cAAc,KAAK,GAAG,GAAG,cAAc,IAAI,KAAK;cACpD,GAAG;YACL;AAEA,gBAAI,QAAQ,iBAAiB;AAC3B,oBAAM,SACH,aAAa,cAAc,KAAU;AACxC,qBAAO,MAAM,MAAM;YACrB;AAEA,wBAAY,KAAK,MAAM;AACvB,0BAAc;AACd,mBAAO;UACT;UACA,QAAQ,CAAC,OAAe;AACtB,kBAAM,MAAM,YAAY;cACtB,CAACA,OAAOA,GAAU,GAAG,cAAc,KAAK,MAAM;YAChD;AACA,gBAAI,CAAC,IAAK;AACV,wBAAY,OAAO,YAAY,QAAQ,GAAG,GAAG,CAAC;AAC9C,0BAAc;UAChB;UACA,QAAQ,CAAC,IAAY,aAAkB;AACrC,kBAAM,MAAM,YAAY;cACtB,CAACA,OACCA,GAAE,SAAS,kBACVA,GAAU,GAAG,cAAc,KAAK,MAAM;YAC3C;AACA,gBAAI,CAAC,IAAK,QAAO;AACjB,mBAAO,OAAO,KAAK,QAAQ;AAC3B,0BAAc;AACd,mBAAO;UACT;UACA,QAAQ,CAAC,aAAqB;AAG5B,gBAAI,mBAAmB,oBAAoB;AACzC,qBAAO,YAAY;gBACjB,CAACA,OACCA,GAAE,SAAS,sBACXA,GAAE,SAAS,SAAS,QAAQ,OAAO,EAAE;cACzC;YACF,WACE,mBAAmB,cACnB,mBAAmB,iBACnB,mBAAmB,kBACnB;AACA,oBAAM,CAAC,gBAAgB,aAAa,IAAI,SACrC,QAAQ,OAAO,EAAE,EACjB,MAAM,SAAS;AAClB,oBAAM,mBAAmB,YAAY;gBACnC,CAACA,OACCA,GAAE,SAAS,sBAAsBA,GAAE,SAAS;cAChD;AACA,kBAAI,CAAC,iBAAkB,QAAO;AAC9B,oBAAME,eAAc,YAAY;gBAC9B,CAACF,OACCA,GAAE,SAAS,iBACXA,GAAE,wBACA,iBAAiB,wBAClBA,GAAE,SAAS,kBACTA,GAAE,cAAc,CAAC,GAAG,SAAS,aAAc;cAClD;AACA,kBAAI,CAACE,aAAa,QAAO;AACzB,kBAAI,mBAAmB,cAAe,QAAOA;AAE7C,kBAAI,mBAAmB,YAAY;AACjC,uBAAO,YAAY;kBACjB,CAACF,OACCA,GAAE,SAAS,cACXA,GAAE,mBAAmBE,aAAY;gBACrC;cACF,WAAW,mBAAmB,kBAAkB;AAC9C,uBAAO,YAAY;kBACjB,CAACF,OACCA,GAAE,SAAS,oBACXA,GAAE,mBAAmBE,aAAY;gBACrC;cACF;YACF;UACF;QACF;MACF;IACF;EACF;AAEA,SAAOD;AACT;AACA,IAAI,WAAW;AAER,IAAM,KAAK;AAElB,IAAO,cAAQ;AExMf,SAAS,YAAY,SAAoC;AACvD,QAAM,OAAO,QAAQ;AACrB,SAAO,GAAG,IAAI,IAAK,QAAgB,GAAG,IAAI,KAAK,CAAC;AAClD;AAEO,IAAM,cAA2C,CACtD,MACA,UAAyC,CAAC,MACvC;AACH,MAAI,gBAAgC,KAAa;AAEjD,MAAI,CAAC,eAAe;AAClB,oBAAgB;MACd,QAAQ,CAAC;MACT,WAAW;MACX,SAAS,CAAC;IACZ;AAGA,eAAW,OAAO,MAAM;AACtB,YAAM,OAAO,IAAI;AACjB,YAAM,QAAS,IAAY,GAAG,IAAI,KAAK;AACvC,UAAI,CAAC,MAAO;AACZ,YAAM,QAAQ,OAAO,SAAS,MAAM,MAAM,GAAG,EAAE,IAAI,KAAK,EAAE;AAC1D,UAAI,CAAC,OAAO,MAAM,KAAK,GAAG;AACxB,sBAAc,OAAO,IAAI,IAAI,KAAK;UAChC,cAAc,OAAO,IAAI,KAAK;UAC9B;QACF;MACF;IACF;AAGA,UAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,UAAM,UAAU,cAAc;AAG9B,QAAI,YAAY,MAAM;AACpB,cAAQ,OAAO,oBAAI,IAAI;IACzB;AAEA,QAAI,YAAY,QAAQ;AACtB,cAAQ,SAAS,oBAAI,IAAI;IAC3B;AAEA,QAAI,YAAY,YAAY;AAC1B,cAAQ,aAAa,oBAAI,IAAI;IAC/B;AAEA,QAAI,YAAY,cAAc;AAC5B,cAAQ,eAAe,oBAAI,IAAI;IACjC;AAEA,QAAI,YAAY,iBAAiB,YAAY,cAAc,SAAS,GAAG;AACrE,cAAQ,gBAAgB,oBAAI,IAAI;AAChC,iBAAW,SAAS,YAAY,eAAe;AAC7C,gBAAQ,cAAc,IAAI,OAAO,oBAAI,IAAI,CAAC;MAC5C;IACF;AAGA,eAAW,WAAW,MAAM;AAE1B,UAAI,YAAY,MAAM;AACpB,cAAM,QAAQ,YAAY,OAAO;AACjC,gBAAQ,KAAM,IAAI,OAAO,OAAO;MAClC;AAGA,UAAI,YAAY,QAAQ;AACtB,cAAM,iBAAiB,QAAQ,OAAQ,IAAI,QAAQ,IAAI,KAAK,CAAC;AAC7D,uBAAe,KAAK,OAAO;AAC3B,gBAAQ,OAAQ,IAAI,QAAQ,MAAM,cAAc;MAClD;AAGA,UAAI,YAAY,YAAY;AAC1B,cAAM,iBAAiB,OAAO,QAAQ,OAAO;AAC7C,mBAAW,CAAC,KAAK,KAAK,KAAK,gBAAgB;AACzC,cACE,IAAI,SAAS,KAAK,KAClB,QAAQ,GAAG,QAAQ,IAAI,SACvB,OAAO,UAAU,UACjB;AACA,kBAAM,kBAAkB,QAAQ,WAAY,IAAI,GAAG,KAAK,oBAAI,IAAI;AAChE,kBAAM,kBAAkB,gBAAgB,IAAI,KAAe,KAAK,CAAC;AACjE,4BAAgB,KAAK,OAAO;AAC5B,4BAAgB,IAAI,OAAiB,eAAe;AACpD,oBAAQ,WAAY,IAAI,KAAK,eAAe;UAC9C;QACF;MACF;AAGA,UAAI,YAAY,gBAAgB,mBAAmB,SAAS;AAC1D,cAAM,eAAgB,QAAgB;AACtC,YAAI,gBAAgB,OAAO,iBAAiB,UAAU;AACpD,gBAAM,qBACJ,QAAQ,aAAc,IAAI,YAAY,KAAK,CAAC;AAC9C,6BAAmB,KAAK,OAAO;AAC/B,kBAAQ,aAAc,IAAI,cAAc,kBAAkB;QAC5D;MACF;AAGA,UAAI,YAAY,iBAAiB,QAAQ,eAAe;AACtD,mBAAW,SAAS,YAAY,eAAe;AAC7C,cAAI,SAAS,SAAS;AACpB,kBAAM,aAAc,QAAgB,KAAK;AACzC,gBACE,eAAe,WACd,OAAO,eAAe,YAAY,OAAO,eAAe,WACzD;AACA,oBAAM,gBAAgB,OAAO,UAAU;AACvC,oBAAM,WAAW,QAAQ,cAAc,IAAI,KAAK;AAChD,oBAAM,yBAAyB,SAAS,IAAI,aAAa,KAAK,CAAC;AAC/D,qCAAuB,KAAK,OAAO;AACnC,uBAAS,IAAI,eAAe,sBAAsB;YACpD;UACF;QACF;MACF;IACF;AAEA;AAAE,SAAa,0BAA0B;EAC3C;AAEA,QAAM,YAAY,IAAI;IACpB,CAAC;IACD;MACE,KAAK,CAAC,cAAmB,SAAiB;AACxC,YAAI,SAAS,WAAW;AACtB,iBAAO,MAAM;AACX;AAAE,iBAAa,YAAY,cAAc;AACzC,mBAAO;UACT;QACF;AACA,YAAI,SAAS,aAAa;AACxB,iBAAO,cAAc;QACvB;AAEA,cAAM,iBAAiB;AAEvB,eAAO;UACL,KAAK,CAAC,OAAe;AACnB,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAG5C,gBAAI,YAAY,QAAQ,cAAc,QAAQ,MAAM;AAClD,qBACG,cAAc,QAAQ,KAAK;gBAC1B,GAAG,cAAc,IAAI,EAAE;cACzB,KAGM;YAEV;AAGA,gBAAI,YAAY,UAAU,cAAc,QAAQ,QAAQ;AACtD,oBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AACvD,qBACG,eAAe;gBACd,CAACD,OAAWA,GAAE,GAAG,cAAc,KAAK,MAAM;cAC5C,KAGM;YAEV;AAGA,mBACG,KAAK;cACJ,CAACA,OACCA,GAAE,SAAS,kBAAkBA,GAAE,GAAG,cAAc,KAAK,MAAM;YAC/D,KAGM;UAEV;UAEA,UAAU,CAAC,UAAe;AACxB,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,kBAAM,OAAO,OAAO,KAAK,KAAK;AAE9B,gBAAI,KAAK,WAAW,GAAG;AACrB,oBAAM,IAAI;gBACR;cACF;YACF;AAEA,kBAAM,WAAW,KAAK,CAAC;AACvB,kBAAM,YAAY,SAAS,QAAQ,OAAO,EAAE;AAG5C,gBAAI,YAAY,cAAc,cAAc,QAAQ,YAAY;AAC9D,oBAAM,cAAc,cAAc,QAAQ,WAAW,IAAI,QAAQ;AACjE,kBAAI,aAAa;AACf,sBAAM,kBAAkB,YAAY,IAAI,MAAM,QAAQ,CAAC,KAAK,CAAC;AAC7D,sBAAMG,UAAS,gBAAgB,KAAK,CAACH,OAAMA,GAAE,SAAS,SAAS;AAE/D,oBAAI,CAACG,QAAQ,QAAO;AAGpB,sBAAM,WACJA,QAAO,GAAG,cAAc,KAA4B;AAEtD,oBAAI,YAAY,QAAQ,cAAc,QAAQ,MAAM;AAClD,yBACG,cAAc,QAAQ,KAAK;oBAC1B,GAAG,cAAc,IAAI,QAAQ;kBAC/B,KAGM;gBAEV;AAEA,oBAAI,YAAY,UAAU,cAAc,QAAQ,QAAQ;AACtD,wBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AACvD,yBACG,eAAe;oBACd,CAACH,OAAWA,GAAE,GAAG,cAAc,KAAK,MAAM;kBAC5C,KAGM;gBAEV;AAEA,uBACG,KAAK;kBACJ,CAACA,OACCA,GAAE,SAAS,kBACXA,GAAE,GAAG,cAAc,KAAK,MAAM;gBAClC,KAGM;cAEV;YACF;AAGA,kBAAM,SAAc,KAAK;cACvB,CAACA,OACCA,GAAE,SAAS,aAAaA,GAAE,QAAQ,MAAM,MAAM,QAAQ;YAC1D;AAEA,gBAAI,CAAC,OAAQ,QAAO;AAEpB,mBACG,KAAK;cACJ,CAACA,OACCA,GAAE,SAAS,kBACXA,GAAE,GAAG,cAAc,KAAK,MAAM,OAAO,GAAG,cAAc,KAAK;YAC/D,KAGM;UAEV;UAEA,UAAU,CAAC,UAAe;AACxB,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,kBAAM,OAAO,OAAO,KAAK,KAAK;AAG9B,gBACE,KAAK,WAAW,KAChB,YAAY,iBACZ,cAAc,QAAQ,eACtB;AACA,oBAAM,QAAQ,KAAK,CAAC;AACpB,oBAAM,WAAW,cAAc,QAAQ,cAAc,IAAI,KAAM;AAE/D,kBAAI,UAAU;AACZ,sBAAM,aAAa,OAAO,MAAM,KAAM,CAAC;AACvC,sBAAM,yBAAyB,SAAS,IAAI,UAAU,KAAK,CAAC;AAE5D,uBACG,uBAAuB;kBACtB,CAACA,OAAWA,GAAE,SAAS;gBACzB,KAGM;cAEV;YACF;AAGA,gBACE,mBAAmB,SACnB,YAAY,gBACZ,cAAc,QAAQ,cACtB;AACA,oBAAM,eAAe,MAAM;AAC3B,oBAAM,qBACJ,cAAc,QAAQ,aAAa,IAAI,YAAY,KAAK,CAAC;AAE3D,qBACG,mBAAmB;gBAClB,CAACA,OACCA,GAAE,SAAS,kBACX,KAAK,MAAM,CAAC,QAAQA,GAAE,GAAG,MAAM,MAAM,GAAG,CAAC;cAC7C,KAGM;YAEV;AAGA,gBAAI,YAAY,UAAU,cAAc,QAAQ,QAAQ;AACtD,oBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AAEvD,qBACG,eAAe;gBAAK,CAACA,OACpB,KAAK,MAAM,CAAC,QAAQA,GAAE,GAAG,MAAM,MAAM,GAAG,CAAC;cAC3C,KAGM;YAEV;AAGA,mBACG,KAAK;cACJ,CAACA,OACCA,GAAE,SAAS,kBACX,KAAK,MAAM,CAAC,QAAQA,GAAE,GAAG,MAAM,MAAM,GAAG,CAAC;YAC7C,KAGM;UAEV;UAEA,MAAM,CAAC,UAAgB;AACrB,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,kBAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK;AAG5C,gBACE,KAAK,WAAW,KAChB,YAAY,UACZ,cAAc,QAAQ,QACtB;AACA,qBAAQ,cAAc,QAAQ,OAAO,IAAI,cAAc,KACrD,CAAC;YAIL;AAGA,gBACE,KAAK,WAAW,KAChB,KAAK,CAAC,MAAM,mBACZ,YAAY,gBACZ,cAAc,QAAQ,cACtB;AACA,oBAAM,eAAe,MAAM;AAC3B,oBAAM,qBACJ,cAAc,QAAQ,aAAa,IAAI,YAAY,KAAK,CAAC;AAE3D,qBAAO,mBAAmB;gBACxB,CAACA,OAAWA,GAAE,SAAS;cACzB;YACF;AAGA,gBAAI;AAEJ,gBAAI,YAAY,UAAU,cAAc,QAAQ,QAAQ;AACtD,iCACE,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;YACzD,OAAO;AACL,iCAAmB,KAAK,OAAO,CAACA,OAAMA,GAAE,SAAS,cAAc;YACjE;AAGA,gBAAI,KAAK,SAAS,GAAG;AACnB,qBAAO,iBAAiB;gBAAO,CAACA,OAC9B,KAAK,MAAM,CAAC,QAAQA,GAAE,GAAG,MAAM,MAAM,GAAG,CAAC;cAC3C;YACF;AAEA,mBAAO;UAIT;UAEA,QAAQ,CAAC,QAAa;AACpB,0BAAc,OAAO,cAAc,MAAM;AACzC,0BAAc,OAAO,cAAc;AACnC,kBAAM,QAAQ,cAAc,OAAO,cAAc;AACjD,kBAAM,SAAS;cACb,MAAM;cACN,CAAC,GAAG,cAAc,KAAK,GAAG,GAAG,cAAc,IAAI,KAAK;cACpD,GAAG;YACL;AAEA,gBAAI,QAAQ,iBAAiB;AAC3B,oBAAM,SACHI,aAAa,cAAc,KAAU;AACxC,qBAAO,MAAM,MAAM;YACrB;AAEA,iBAAK,KAAK,MAAM;AAChB,0BAAc;AAGd,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAG5C,gBAAI,YAAY,QAAQ,cAAc,QAAQ,MAAM;AAClD,oBAAM,QAAQ,YAAY,MAAM;AAChC,4BAAc,QAAQ,KAAK,IAAI,OAAO,MAAM;YAC9C;AAGA,gBAAI,YAAY,UAAU,cAAc,QAAQ,QAAQ;AACtD,oBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AACvD,6BAAe,KAAK,MAAM;AAC1B,4BAAc,QAAQ,OAAO,IAAI,gBAAgB,cAAc;YACjE;AAGA,gBAAI,YAAY,cAAc,cAAc,QAAQ,YAAY;AAC9D,oBAAM,iBAAiB,OAAO,QAAQ,MAAM;AAC5C,yBAAW,CAAC,KAAK,KAAK,KAAK,gBAAgB;AACzC,oBACE,IAAI,SAAS,KAAK,KAClB,QAAQ,GAAG,OAAO,IAAI,SACtB,OAAO,UAAU,UACjB;AACA,wBAAM,kBACJ,cAAc,QAAQ,WAAW,IAAI,GAAG,KAAK,oBAAI,IAAI;AACvD,wBAAM,kBACJ,gBAAgB,IAAI,KAAe,KAAK,CAAC;AAC3C,kCAAgB,KAAK,MAAM;AAC3B,kCAAgB,IAAI,OAAiB,eAAe;AACpD,gCAAc,QAAQ,WAAW,IAAI,KAAK,eAAe;gBAC3D;cACF;YACF;AAGA,gBACE,YAAY,gBACZ,cAAc,QAAQ,gBACtB,mBAAmB,QACnB;AACA,oBAAM,eAAgB,OAAe;AACrC,kBAAI,gBAAgB,OAAO,iBAAiB,UAAU;AACpD,sBAAM,qBACJ,cAAc,QAAQ,aAAa,IAAI,YAAY,KAAK,CAAC;AAC3D,mCAAmB,KAAK,MAAM;AAC9B,8BAAc,QAAQ,aAAa;kBACjC;kBACA;gBACF;cACF;YACF;AAGA,gBACE,YAAY,iBACZ,cAAc,QAAQ,eACtB;AACA,yBAAW,SAAS,YAAY,eAAe;AAC7C,oBAAI,SAAS,QAAQ;AACnB,wBAAM,aAAc,OAAe,KAAK;AACxC,sBACE,eAAe,WACd,OAAO,eAAe,YACrB,OAAO,eAAe,WACxB;AACA,0BAAM,gBAAgB,OAAO,UAAU;AACvC,0BAAM,WACJ,cAAc,QAAQ,cAAc,IAAI,KAAK;AAC/C,0BAAM,yBACJ,SAAS,IAAI,aAAa,KAAK,CAAC;AAClC,2CAAuB,KAAK,MAAM;AAClC,6BAAS,IAAI,eAAe,sBAAsB;kBACpD;gBACF;cACF;YACF;AAEA,mBAAO;UACT;UAEA,QAAQ,CAAC,OAAe;AACtB,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,gBAAI;AAGJ,gBAAI,YAAY,QAAQ,cAAc,QAAQ,MAAM;AAClD,oBAAM,cAAc,QAAQ,KAAK,IAAI,GAAG,cAAc,IAAI,EAAE,EAAE;YAChE,WAAW,YAAY,UAAU,cAAc,QAAQ,QAAQ;AAC7D,oBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AACvD,oBAAM,eAAe;gBACnB,CAACJ,OAAWA,GAAE,GAAG,cAAc,KAAK,MAAM;cAC5C;YACF,OAAO;AACL,oBAAM,KAAK,KAAK,CAACA,OAAOA,GAAU,GAAG,cAAc,KAAK,MAAM,EAAE;YAClE;AAEA,gBAAI,CAAC,IAAK;AAGV,kBAAM,WAAW,KAAK,QAAQ,GAAG;AACjC,gBAAI,YAAY,GAAG;AACjB,mBAAK,OAAO,UAAU,CAAC;AACvB,4BAAc;YAChB;AAGA,gBAAI,YAAY,QAAQ,cAAc,QAAQ,MAAM;AAClD,oBAAM,QAAQ,YAAY,GAAG;AAC7B,4BAAc,QAAQ,KAAK,OAAO,KAAK;YACzC;AAEA,gBAAI,YAAY,UAAU,cAAc,QAAQ,QAAQ;AACtD,oBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AACvD,oBAAM,mBAAmB,eAAe;gBACtC,CAACA,OAAWA,GAAE,GAAG,cAAc,KAAK,MAAM;cAC5C;AACA,4BAAc,QAAQ,OAAO,IAAI,gBAAgB,gBAAgB;YACnE;AAEA,gBAAI,YAAY,cAAc,cAAc,QAAQ,YAAY;AAG9D,yBAAW;gBACT;gBACA;cACF,KAAK,cAAc,QAAQ,WAAW,QAAQ,GAAG;AAC/C,2BAAW,CAAC,eAAe,QAAQ,KAAK,YAAY,QAAQ,GAAG;AAC7D,wBAAM,kBAAkB,SAAS,OAAO,CAACA,OAAMA,OAAM,GAAG;AAExD,sBAAI,gBAAgB,WAAW,GAAG;AAChC,gCAAY,OAAO,aAAa;kBAClC,OAAO;AACL,gCAAY,IAAI,eAAe,eAAe;kBAChD;gBACF;cACF;YACF;AAEA,gBACE,YAAY,gBACZ,cAAc,QAAQ,gBACtB,mBAAmB,KACnB;AACA,oBAAM,eAAgB,IAAY;AAClC,kBAAI,cAAc;AAChB,sBAAM,qBACJ,cAAc,QAAQ,aAAa,IAAI,YAAY,KAAK,CAAC;AAC3D,sBAAM,kBAAkB,mBAAmB;kBACzC,CAACA,OAAMA,OAAM;gBACf;AAEA,oBAAI,gBAAgB,WAAW,GAAG;AAChC,gCAAc,QAAQ,aAAa,OAAO,YAAY;gBACxD,OAAO;AACL,gCAAc,QAAQ,aAAa;oBACjC;oBACA;kBACF;gBACF;cACF;YACF;AAEA,gBACE,YAAY,iBACZ,cAAc,QAAQ,eACtB;AACA,yBAAW,YAAY,cAAc,QAAQ,cAAc,OAAO,GAAG;AACnE,2BAAW,CAAC,YAAY,QAAQ,KAAK,SAAS,QAAQ,GAAG;AACvD,wBAAM,kBAAkB,SAAS,OAAO,CAACA,OAAMA,OAAM,GAAG;AAExD,sBAAI,gBAAgB,WAAW,GAAG;AAChC,6BAAS,OAAO,UAAU;kBAC5B,OAAO;AACL,6BAAS,IAAI,YAAY,eAAe;kBAC1C;gBACF;cACF;YACF;UACF;UAEA,QAAQ,CAAC,IAAY,aAAkB;AACrC,kBAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,gBAAI;AAGJ,gBAAI,YAAY,QAAQ,cAAc,QAAQ,MAAM;AAClD,oBAAM,cAAc,QAAQ,KAAK,IAAI,GAAG,cAAc,IAAI,EAAE,EAAE;YAChE,WAAW,YAAY,UAAU,cAAc,QAAQ,QAAQ;AAC7D,oBAAM,iBACJ,cAAc,QAAQ,OAAO,IAAI,cAAc,KAAK,CAAC;AACvD,oBAAM,eAAe;gBACnB,CAACA,OAAWA,GAAE,GAAG,cAAc,KAAK,MAAM;cAC5C;YACF,OAAO;AACL,oBAAM,KAAK;gBACT,CAACA,OACCA,GAAE,SAAS,kBACVA,GAAU,GAAG,cAAc,KAAK,MAAM;cAC3C;YACF;AAEA,gBAAI,CAAC,IAAK,QAAO;AAGjB,gBAAI,YAAY,cAAc,cAAc,QAAQ,YAAY;AAE9D,oBAAM,iBAAiB,OAAO,QAAQ,GAAG;AACzC,yBAAW,CAAC,KAAK,KAAK,KAAK,gBAAgB;AACzC,oBACE,IAAI,SAAS,KAAK,KAClB,QAAQ,GAAG,IAAI,IAAI,SACnB,OAAO,UAAU,UACjB;AACA,sBAAI,OAAO,YAAY,SAAS,GAAG,MAAM,OAAO;AAC9C,0BAAM,kBACJ,cAAc,QAAQ,WAAW,IAAI,GAAG;AAC1C,wBAAI,iBAAiB;AACnB,4BAAM,kBACJ,gBAAgB,IAAI,KAAe,KAAK,CAAC;AAC3C,4BAAM,kBAAkB,gBAAgB;wBACtC,CAACA,OAAMA,OAAM;sBACf;AAEA,0BAAI,gBAAgB,WAAW,GAAG;AAChC,wCAAgB,OAAO,KAAe;sBACxC,OAAO;AACL,wCAAgB,IAAI,OAAiB,eAAe;sBACtD;oBACF;kBACF;gBACF;cACF;YACF;AAEA,gBACE,YAAY,gBACZ,cAAc,QAAQ,gBACtB,mBAAmB,OACnB,mBAAmB,UACnB;AACA,oBAAM,kBAAmB,IAAY;AACrC,oBAAM,kBAAkB,SAAS;AAEjC,kBAAI,oBAAoB,iBAAiB;AAEvC,sBAAM,qBACJ,cAAc,QAAQ,aAAa,IAAI,eAAe,KAAK,CAAC;AAC9D,sBAAM,kBAAkB,mBAAmB;kBACzC,CAACA,OAAMA,OAAM;gBACf;AAEA,oBAAI,gBAAgB,WAAW,GAAG;AAChC,gCAAc,QAAQ,aAAa,OAAO,eAAe;gBAC3D,OAAO;AACL,gCAAc,QAAQ,aAAa;oBACjC;oBACA;kBACF;gBACF;cACF;YACF;AAEA,gBACE,YAAY,iBACZ,cAAc,QAAQ,eACtB;AACA,yBAAW,SAAS,YAAY,eAAe;AAC7C,oBACE,SAAS,OACT,SAAS,YACR,IAAY,KAAK,MAAM,SAAS,KAAK,GACtC;AACA,wBAAM,WACJ,cAAc,QAAQ,cAAc,IAAI,KAAK;AAC/C,sBAAI,UAAU;AACZ,0BAAM,WAAW,OAAQ,IAAY,KAAK,CAAC;AAC3C,0BAAM,WAAW,SAAS,IAAI,QAAQ,KAAK,CAAC;AAC5C,0BAAM,kBAAkB,SAAS,OAAO,CAACA,OAAMA,OAAM,GAAG;AAExD,wBAAI,gBAAgB,WAAW,GAAG;AAChC,+BAAS,OAAO,QAAQ;oBAC1B,OAAO;AACL,+BAAS,IAAI,UAAU,eAAe;oBACxC;kBACF;gBACF;cACF;YACF;AAGA,mBAAO,OAAO,KAAK,QAAQ;AAC3B,0BAAc;AAGd,gBAAI,YAAY,cAAc,cAAc,QAAQ,YAAY;AAC9D,oBAAM,iBAAiB,OAAO,QAAQ,GAAG;AACzC,yBAAW,CAAC,KAAK,KAAK,KAAK,gBAAgB;AACzC,oBACE,IAAI,SAAS,KAAK,KAClB,QAAQ,GAAG,IAAI,IAAI,SACnB,OAAO,UAAU,UACjB;AACA,sBAAI,OAAO,UAAU;AACnB,0BAAM,kBACJ,cAAc,QAAQ,WAAW,IAAI,GAAG,KAAK,oBAAI,IAAI;AACvD,0BAAM,kBACJ,gBAAgB,IAAI,KAAe,KAAK,CAAC;AAE3C,wBAAI,CAAC,gBAAgB,SAAS,GAAG,GAAG;AAClC,sCAAgB,KAAK,GAAG;AACxB,sCAAgB,IAAI,OAAiB,eAAe;AACpD,oCAAc,QAAQ,WAAW,IAAI,KAAK,eAAe;oBAC3D;kBACF;gBACF;cACF;YACF;AAEA,gBACE,YAAY,gBACZ,cAAc,QAAQ,gBACtB,mBAAmB,OACnB,mBAAmB,UACnB;AACA,oBAAM,eAAgB,IAAY;AAClC,kBAAI,gBAAgB,OAAO,iBAAiB,UAAU;AACpD,sBAAM,qBACJ,cAAc,QAAQ,aAAa,IAAI,YAAY,KAAK,CAAC;AAE3D,oBAAI,CAAC,mBAAmB,SAAS,GAAG,GAAG;AACrC,qCAAmB,KAAK,GAAG;AAC3B,gCAAc,QAAQ,aAAa;oBACjC;oBACA;kBACF;gBACF;cACF;YACF;AAEA,gBACE,YAAY,iBACZ,cAAc,QAAQ,eACtB;AACA,yBAAW,SAAS,YAAY,eAAe;AAC7C,oBAAI,SAAS,OAAO,SAAS,UAAU;AACrC,wBAAM,aAAmB,IAAY,KAAK;AAC1C,sBACE,eAAe,WACd,OAAO,eAAe,YACrB,OAAO,eAAe,WACxB;AACA,0BAAM,gBAAgB,OAAO,UAAU;AACvC,0BAAM,WACJ,cAAc,QAAQ,cAAc,IAAI,KAAK;AAC/C,0BAAM,yBACJ,SAAS,IAAI,aAAa,KAAK,CAAC;AAElC,wBAAI,CAAC,uBAAuB,SAAS,GAAG,GAAG;AACzC,6CAAuB,KAAK,GAAG;AAC/B,+BAAS,IAAI,eAAe,sBAAsB;oBACpD;kBACF;gBACF;cACF;YACF;AAEA,mBAAO;UAIT;UAEA,QAAQ,CAAC,aAAqB;AAI5B,gBAAI,mBAAmB,oBAAoB;AACzC,qBACG,KAAK;gBACJ,CAACA,OACCA,GAAE,SAAS,sBACXA,GAAE,SAAS,SAAS,QAAQ,OAAO,EAAE;cACzC,KAGM;YAEV,WACE,mBAAmB,cACnB,mBAAmB,iBACnB,mBAAmB,kBACnB;AACA,oBAAM,CAAC,gBAAgB,aAAa,IAAI,SACrC,QAAQ,OAAO,EAAE,EACjB,MAAM,SAAS;AAClB,oBAAM,mBAAmB,KAAK;gBAC5B,CAACA,OACCA,GAAE,SAAS,sBAAsBA,GAAE,SAAS;cAChD;AACA,kBAAI,CAAC,iBAAkB,QAAO;AAC9B,oBAAME,eAAc,KAAK;gBACvB,CAACF,OACCA,GAAE,SAAS,iBACXA,GAAE,wBACA,iBAAiB,wBAClBA,GAAE,SAAS,kBACTA,GAAE,cAAc,CAAC,GAAG,SAAS,aAAc;cAClD;AACA,kBAAI,CAACE,aAAa,QAAO;AACzB,kBAAI,mBAAmB;AACrB,uBAAOA;AAKT,kBAAI,mBAAmB,YAAY;AACjC,uBACG,KAAK;kBACJ,CAACF,OACCA,GAAE,SAAS,cACXA,GAAE,mBAAmBE,aAAY;gBACrC,KAGM;cAEV,WAAW,mBAAmB,kBAAkB;AAC9C,uBACG,KAAK;kBACJ,CAACF,OACCA,GAAE,SAAS,oBACXA,GAAE,mBAAmBE,aAAY;gBACrC,KAGM;cAEV;YACF;AAEA,mBAAO;UACT;QACF;MACF;IACF;EACF;AAEA,SAAO;AACT;AAEA,WAAW,WAAW;AE34Bf,IAAM,kBAAkB,CAC7B,cACG;AACH,MAAI,cAAc,KAAM,QAAO;WACtB,cAAc,QAAS,QAAO;WAC9B,cAAc,OAAQ,QAAO;WAC7B,cAAc,OAAQ,QAAO;AACtC,QAAM,IAAI,MAAM,sBAAsB,SAAS,EAAE;AACnD;AAEO,IAAM,yBAAyB,CACpC,cACG;AACH,MAAI,cAAc,KAAM,QAAO;WACtB,cAAc,OAAQ,QAAO;WAC7B,cAAc,OAAQ,QAAO;WAC7B,cAAc,QAAS,QAAO;AACvC,QAAM,IAAI,MAAM,sBAAsB,SAAS,EAAE;AACnD;AAEO,IAAM,kBAAkB,CAC7B,WACA,8BACG;AACH,SAAO,4BAA4B,GAAG;AACpC,gBAAY,gBAAgB,SAAS;AACrC;EACF;AACA,SAAO,4BAA4B,GAAG;AACpC,gBAAY,uBAAuB,SAAS;AAC5C;EACF;AACA,SAAO;AACT;AAYO,IAAM,eAAe,CAC1B,cACG;AACH,MAAI,cAAc,SAAS,cAAc,KAAM,QAAO;WAC7C,cAAc,YAAY,cAAc,OAAQ,QAAO;WACvD,cAAc,OAAQ,QAAO;WAC7B,cAAc,QAAS,QAAO;AACvC,QAAM,IAAI,MAAM,sBAAsB,SAAS,EAAE;AACnD;AD/DO,IAAM,4BAA4B,CACvC,KACA,WACG;AACH,MAAI,IAAI,SAAS,uBAAuB;AAEtC,QAAI,SAAS,aAAa,QAAQ,IAAI,MAAM;EAC9C,WAAW,IAAI,SAAS,kBAAkB;AACxC,QAAI,SAAS,aAAa,QAAQ,IAAI,MAAM;AAE5C,QAAI,IAAI,kBAAkB;AACxB,UAAI,mBAAmB;QACrB,IAAI;QACJ,EAAE,KAAK,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM;MAChD;IACF;EACF,WAAW,IAAI,SAAS,kBAAkB;AACxC,QAAI,WAAW,aAAa,QAAQ,IAAI,QAAQ;EAGlD,WAAW,IAAI,SAAS,mBAAmB;AACzC,UAAM,SAAS;AACf,WAAO,SAAS,OAAO,SAAS,CAAC,GAAG,IAAI,CAACG,QAAY;AACnD,YAAMC,MAAK,aAAa,QAAQD,GAAE;AAClC,MAAAA,IAAG,IAAIC,IAAG;AACV,MAAAD,IAAG,IAAIC,IAAG;AACV,aAAOD;IACT,CAAC;AACD,QAAI,MAAM,QAAQ,OAAO,SAAS,GAAG;AACnC,aAAO,YAAY,OAAO,UAAU,IAAI,CAACE,OAAW;AAClD,cAAMD,MAAK,aAAa,QAAQC,EAAC;AACjC,QAAAA,GAAE,IAAID,IAAG;AACT,QAAAC,GAAE,IAAID,IAAG;AACT,eAAOC;MACT,CAAC;IACH;AACA,QAAI,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC/B,aAAO,QAAQ,OAAO,MAAM,IAAI,CAACC,OAAW;AAC1C,QAAAA,GAAE,OAAO,aAAa,QAAQA,GAAE,IAAI;AACpC,QAAAA,GAAE,KAAK,aAAa,QAAQA,GAAE,EAAE;AAChC,eAAOA;MACT,CAAC;IACH;EACF,WAAW,IAAI,SAAS,iBAAiB;AACvC,UAAM,EAAE,GAAG,EAAE,IAAI,aAAa,QAAQ,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;AAC5D,QAAI,IAAI;AACR,QAAI,IAAI;EACV,WAAW,IAAI,SAAS,kBAAkB;AACxC,UAAM,EAAE,GAAGC,KAAI,GAAGC,IAAG,IAAI,aAAa,QAAQ,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC;AACtE,UAAM,EAAE,GAAGC,KAAI,GAAGC,IAAG,IAAI,aAAa,QAAQ,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC;AACtE,QAAI,KAAKH;AACT,QAAI,KAAKC;AACT,QAAI,KAAKC;AACT,QAAI,KAAKC;EACX;AACA,SAAO;AACT;AAEO,IAAM,6BAA6B,CACxC,MACA,WACG;AACH,SAAO,KAAK,IAAI,CAAC,QAAQ,0BAA0B,KAAK,MAAM,CAAC;AACjE;AAEO,IAAM,sBAAsB,CAAC,KAAwB,WAAmB;AAC7E,QAAM,MAAM,aAAa,MAAM;AAC/B,QAAM,qBACJ,KAAK,MAAM,IAAI,SAAS,SAAS,KAAK,KAAK,EAAE,IAAI,MAAM;AACzD,MACE,IAAI,SAAS,qBACb,IAAI,SAAS,cACb,IAAI,SAAS,aACb,IAAI,SAAS,gBACb,IAAI,SAAS,YACb;AACA,UAAM,EAAE,GAAG,EAAE,IAAI,aAAa,QAAQ;MACpC,GAAG,OAAQ,IAAY,CAAC;MACxB,GAAG,OAAQ,IAAY,CAAC;IAC1B,CAAC;AACC,QAAY,IAAI;AAChB,QAAY,IAAI;EACpB,WAAW,IAAI,SAAS,iBAAiB,IAAI,SAAS,aAAa;AAEjE,QAAI,SAAS,aAAa,QAAQ,IAAI,MAAM;EAC9C,WACE,IAAI,SAAS,yBACb,IAAI,SAAS,6BACb;AACA,QAAI,kBAAkB,aAAa,QAAQ,IAAI,eAAe;EAChE,WACE,IAAI,SAAS,2BACb,IAAI,SAAS,uBACb;AACA,QAAI,SAAS,aAAa,QAAQ,IAAI,MAAM;EAC9C,WAAW,IAAI,SAAS,iBAAiB;AACvC,QAAI,SAAS,aAAa,QAAQ,IAAI,MAAM;AAC5C,QAAI,WAAW,IAAI,WAAY,IAAI,SAAS,QAAQ,KAAK,KAAM;AAC/D,QAAI,WAAW,IAAI,WAAW;AAC9B,QAAI,oBAAoB;AACtB;AAAC,OAAC,IAAI,OAAO,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,KAAK;IACnD;EACF,WACE,IAAI,SAAS,yBACb,IAAI,SAAS,eACb,IAAI,SAAS,6BACb;AACA,QAAI,QAAQ,IAAI,MAAM,IAAI,CAACP,QAAO;AAChC,YAAMC,MAAK,aAAa,QAAQD,GAAE;AAClC,MAAAA,IAAG,IAAIC,IAAG;AACV,MAAAD,IAAG,IAAIC,IAAG;AACV,aAAOD;IACT,CAAC;EACH,WAAW,IAAI,SAAS,uBAAuB;AAC7C,UAAMQ,MAAK,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG;AAClC,UAAMC,MAAK,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG;AAClC,UAAM,MAAM,aAAa,QAAQD,GAAE;AACnC,UAAM,MAAM,aAAa,QAAQC,GAAE;AACnC,QAAI,KAAK,IAAI;AACb,QAAI,KAAK,IAAI;AACb,QAAI,KAAK,IAAI;AACb,QAAI,KAAK,IAAI;EACf,WAAW,IAAI,SAAS,iBAAiB;AACvC,UAAM,SAAS,aAAa,QAAQ;MAClC,GAAG,IAAI,SAAS;MAChB,GAAG,IAAI,SAAS;IAClB,CAAC;AACD,QAAI,SAAS,IAAI,OAAO;AACxB,QAAI,SAAS,IAAI,OAAO;EAC1B;AACA,SAAO;AACT;AAEO,IAAM,uBAAuB,CAClC,MACA,WACG;AACH,QAAM,MAAM,aAAa,MAAM;AAC/B,QAAM,eAAe,KAAK,MAAM,IAAI,SAAS,SAAS,KAAK,KAAK,EAAE;AAClE,QAAM,qBAAqB,KAAK,IAAI,YAAY,IAAI,MAAM;AAC1D,MAAI,kBAAkB,KAAK,IAAI,CAAC,QAAQ,oBAAoB,KAAK,MAAM,CAAC;AACxE,MAAI,oBAAoB;AACtB,sBAAkB,gBAAgB,IAAI,CAAC,QAAQ;AAC7C,UAAI,IAAI,SAAS,gBAAgB,IAAI,UAAU,QAAQ;AACrD;AAAC,SAAC,IAAI,OAAO,IAAI,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,KAAK;MACnD;AACA,aAAO;IACT,CAAC;EACH;AACA,SAAO;AACT;AI5JO,IAAM,eAAe,CAAC,QAAmC;AAC9D,QAAM,OAAO,IAAI;AACjB,QAAM,KAAM,IAAY,GAAG,IAAI,KAAK;AACpC,SAAO;AACT;ACHO,IAAM,iBAAiB,CAC5B,MACA,OAC6B;AAC7B,SAAO,KAAK,KAAK,CAAC,QAAQ,aAAa,GAAG,MAAM,EAAE,KAAK;AACzD;ACLO,SAAS,2BACd,MACA,cACA;AAEA,QAAM,WAAW,IAAI,IAAI,EAAE,UAAU,IAAI,YAAY;AAErD,MAAI,CAAC,UAAU;AACb,WAAO,SAAS,YAAY;EAC9B;AAGA,QAAM,sBAAgC,SAAS,MAC5C,QAAQ,CAACC,WAAe,CAACA,OAAM,mBAAmBA,OAAM,eAAe,CAAC,EACxE,OAAO,OAAO;AAEjB,MAAI,oBAAoB,WAAW,GAAG;AACpC,WAAO,SAAS,YAAY;EAC9B;AAGA,WAAS,wBAAwB,aAAqB;AACpD,UAAM,UAAU,IAAI,IAAI,EAAE,SAAS,IAAI,WAAW;AAClD,QAAI,CAAC,QAAS,QAAO;AAErB,UAAM,eAAe,IAAI,IAAI,EAAE,cAAc,IAAI,QAAQ,gBAAgB;AACzE,QAAI,CAAC,aAAc,QAAO;AAC1B,UAAM,kBAAkB,IAAI,IAAI,EAAE,iBAAiB;MACjD,aAAa;IACf;AACA,QAAI,CAAC,gBAAiB,QAAO;AAE7B,UAAM,aAAa,IAAI,IAAI,EAAE,YAAY,IAAI,QAAQ,cAAc;AACnE,UAAM,WAAW,YAAY,aAAa,WAAW,WAAW,CAAC,IAAI;AAErE,WAAO;MACL,eAAe,gBAAgB;MAC/B;IACF;EACF;AAGA,QAAM,gBAAgB,oBAAoB,IAAI,CAAC,WAAW;AACxD,UAAM,OAAO,wBAAwB,MAAM;AAC3C,QAAI,MAAM;AACR,aAAO,IAAI,KAAK,aAAa,WAAW,KAAK,QAAQ;IACvD;AACA,WAAO,QAAQ,MAAM;EACvB,CAAC;AAED,SAAO,SAAS,cAAc,KAAK,IAAI,CAAC;AAC1C;ACnDO,IAAM,4BAA4B,CACvC,MACA,gBACW;AACX,QAAM,UAAU,IAAI,IAAI,EAAE,SAAS,IAAI,WAAW;AAClD,MAAI,CAAC,SAAS;AACZ,WAAO,aAAa,WAAW;EACjC;AAGA,QAAM,eAAe,IAAI,IAAI,EAAE,cAAc,IAAI,SAAS,gBAAgB;AAE1E,MAAI,CAAC,cAAc;AACjB,WAAO,aAAa,WAAW;EACjC;AAGA,QAAM,kBAAkB,IAAI,IAAI,EAAE,iBAAiB;IACjD,aAAa;EACf;AAEA,MAAI,CAAC,iBAAiB;AACpB,WAAO,aAAa,WAAW;EACjC;AAGA,QAAM,aAAa,IAAI,IAAI,EAAE,YAAY,IAAI,QAAQ,cAAc;AAEnE,MAAI,CAAC,YAAY;AACf,WAAO,aAAa,WAAW;EACjC;AAGA,MAAI;AACJ,MAAI,YAAY,cAAc,WAAW,WAAW,SAAS,GAAG;AAC9D,oBAAgB,WAAW,WAAW,CAAC;EACzC,WAAW,WAAW,cAAc,WAAW,WAAW,SAAS,GAAG;AACpE,oBAAgB,WAAW,WAAW,CAAC;EACzC,OAAO;AACL,oBAAgB;EAClB;AAEA,SAAO,aAAa,gBAAgB,IAAI,OAAO,aAAa;AAC9D;AC1CO,SAAS,4BACd,MACA,eACQ;AAER,QAAM,YAAY,IAAI,IAAI,EAAE,WAAW,IAAI,aAAa;AAExD,MAAI,CAAC,aAAa,CAAC,UAAU,aAAa;AACxC,WAAO,UAAU,aAAa;EAChC;AAEA,SAAO,0BAA0B,MAAM,UAAU,WAAW;AAC9D;ACTO,IAAM,4BAA4B,CACvC,MACA,QACW;AACX,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,SAAS,eAAe,MAAM,GAAG;AACvC,QAAI,CAAC,OAAQ,4CAA2C,GAAG;AAC3D,WAAO,0BAA0B,MAAM,MAAa;EACtD;AACA,UAAQ,IAAI,MAAM;IAChB,KAAK;AACH,aAAO,0BAA0B,MAAM,IAAI,WAAW;IACxD,KAAK;AACH,aAAO,4BAA4B,MAAM,IAAI,aAAa;IAC5D,KAAK;AACH,aAAO,2BAA2B,MAAM,IAAI,YAAY;IAC1D,KAAK;AACH,aAAO,oBAAoB,IAAI,IAAI;IACrC;AACE,aAAO,GAAG,IAAI,IAAI,KAAK,aAAa,GAAG,CAAC;EAC5C;AACF;AC1BO,IAAM,yBAAyB,CACpC,aAC+D;AAC/D,MAAI,OAAO,OAAO;AAClB,MAAI,OAAO,OAAO;AAClB,MAAI,OAAO,OAAO;AAClB,MAAI,OAAO,OAAO;AAElB,aAAW,OAAO,UAAU;AAC1B,QAAI,CAAC,IAAI,KAAK,WAAW,MAAM,EAAG;AAElC,QAAI;AACJ,QAAI;AAEJ,QAAI;AACJ,QAAI;AAEJ,QAAI,OAAO,OAAO,OAAO,KAAK;AAC5B,gBAAU,OAAQ,IAAY,CAAC;AAC/B,gBAAU,OAAQ,IAAY,CAAC;IACjC;AAEA,QAAI,oBAAoB,KAAK;AAC3B,cAAQ,OAAQ,IAAY,cAAc;AAC1C,eAAS,OAAQ,IAAY,cAAc;IAC7C;AAEA,QAAI,WAAW,KAAK;AAClB,cAAQ,OAAQ,IAAY,KAAK;IACnC;AAEA,QAAI,YAAY,KAAK;AACnB,eAAS,OAAQ,IAAY,MAAM;IACrC;AAEA,QAAI,YAAY,KAAK;AAEnB,gBAAU,IAAI,OAAO;AAErB,gBAAU,IAAI,OAAO;IACvB;AAEA,QAAI,YAAY,UAAa,YAAY,QAAW;AAClD,aAAO,KAAK,IAAI,MAAM,OAAO;AAC7B,aAAO,KAAK,IAAI,MAAM,OAAO;AAC7B,aAAO,KAAK,IAAI,MAAM,OAAO;AAC7B,aAAO,KAAK,IAAI,MAAM,OAAO;AAE7B,UAAI,UAAU,UAAa,WAAW,QAAW;AAC/C,eAAO,KAAK,IAAI,MAAM,UAAU,QAAQ,CAAC;AACzC,eAAO,KAAK,IAAI,MAAM,UAAU,SAAS,CAAC;AAC1C,eAAO,KAAK,IAAI,MAAM,UAAU,QAAQ,CAAC;AACzC,eAAO,KAAK,IAAI,MAAM,UAAU,SAAS,CAAC;MAC5C;AAEA,UAAI,YAAY,KAAK;AACnB,eAAO,KAAK,IAAI,MAAM,UAAU,IAAI,MAAM;AAC1C,eAAO,KAAK,IAAI,MAAM,UAAU,IAAI,MAAM;AAC1C,eAAO,KAAK,IAAI,MAAM,UAAU,IAAI,MAAM;AAC1C,eAAO,KAAK,IAAI,MAAM,UAAU,IAAI,MAAM;MAC5C;IACF,WAAW,IAAI,SAAS,aAAa;AACnC,iBAAWA,UAAS,IAAI,OAAO;AAE7B,eAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;AAC7B,eAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;AAC7B,eAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;AAC7B,eAAO,KAAK,IAAI,MAAMA,OAAM,CAAC;MAC/B;IACF;EACF;AAEA,SAAO,EAAE,MAAM,MAAM,MAAM,KAAK;AAClC;AC3EO,SAAS,WAAW,KAAa;AACtC,MAAI,OAAO;AACX,MAAI,IAAI,UAAU,EAAG,QAAO;AAC5B,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,QAAI,OAAO,IAAI,WAAW,CAAC;AAC3B,YAAQ,QAAQ,KAAK,OAAO;AAC5B,WAAO,OAAO;EAChB;AACA,SAAO,KAAK,IAAI,IAAI;AACtB;ACOA,IAAM,sBAAsB;EAC1B,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD,CAAC,WAAW,WAAW,WAAW,WAAW,SAAS;EACtD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CR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,IACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,MACR,MAAQ,KACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,GACL,GAAK,MACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;ACzJA,IAAM,EAAE,OAAAC,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAIJ;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AAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACjCT,IAAAuB,IAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,E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,MAAM,EAC9B,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,aAAa,EACvC,MAAM;AC7BT,IAAO2D,KAAQlD,EAAagD,IAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACVT,IAAAG,IAAA,EACE,OAAS,EACP,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,UAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,G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V,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,G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BAAiB,SAAS,aAAa,EACvC,iBAAiB,SAAS,UAAU,EACpC,MAAM;ACjCT,IAAA+E,IAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,MACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,KACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,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ACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,GACA,QAAU,EACR,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK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AAO,QAAQ,EACjD,CAAC,EACE,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACjCT,IAAA4G,IAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP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e,EACzC,MAAM;ACtBT,IAAAwH,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC7HA,IAAOC,IAAQhH,EAAa+G,EAAO,EAChC,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACLT,IAAOE,KAAQzH,EAAawH,GAAa,MAAM;ACA/C,IAAOE,KAAQ1H,EAAawH,GAAa,MAAM;ACA/C,IAAOG,KAAQ3H,EAAawH,GAAa,IAAI;ACH7C,IAAAI,KAAA,EACE,OAAS,EACP,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAA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AK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,GACA,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CL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,KACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,KAAO,EACL,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,GACA,QAAU,EACR,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,KACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EA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W,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,IAAI;AACRA,GAAI,KAAK;AACTxI,GAAI,KAAK;AAET,IAAOyR,KAAQlJ;ACpBf,IAAAmJ,KAAA,EACE,OAAS,EACP,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,oBAAoB,EAClB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,sBAAsB,EACpB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,wBAAwB,EACtB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,sBAAsB,EACpB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,MACR,MAAQ,KACR,MAAQ,OACR,MAAQ,MACR,OAAS,GACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,MACL,GAAK,MACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;ACjOA,IAAOC,KAAQ7K,EAAa4K,EAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAMlF,KAAgBlG,EAAaqL,EAA0C;AAA7E,IAEMxK,KAAQqF,GAAc,WAAW,OAAQ/D,OAAMA,EAAE,SAAS,MAAM;AAFtE,IAIMzI,KAAMmH,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDnH,GAAI,IAAI;AACRA,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAMwI,KAAMrB,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDqB,GAAI,IAAI;AACRA,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAOoJ,KAAQpF;ACnBf,IAAAqF,KAAA,EACE,OAAS,EACP,UAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,UAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,UAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,UAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,UAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC52CA,IAAM,EAAE,OAAA3K,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAIwK;AAArD,IAEOC,KAAQnJ,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EAAE,GAAGF,GAAM,MAAM,QAAQ,gBAAgB,GACzC,EAAE,GAAGA,GAAM,SAAS,QAAQ,aAAa,CAC3C,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,GACpC,EAAE,GAAGA,GAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE,CACvC,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;AChBD,IAAO0L,KAAQzL,EAAawL,IAAgB,IAAI;ACAhD,IAAOE,KAAQjN,EAAoBgN,EAAW;ACA9C,IAAOE,KAAQrM,EAAoBkM,EAAc;ACHjD,IAAAI,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,GACL,GAAK,OACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;ACzOAA,GAAQ,OAAO,SAAS;AACxB,IAAOC,IAAQrL,EAAaoL,EAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAMlN,KAASsB,EAAa6L,GAAmB,MAAM;AAArD,IAEM3J,KAAMxD,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMgF,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOoS,KAAQpN;ACjBf,IAAMA,KAASsB,EAAa6L,GAAmB,MAAM;AAArD,IAEM3J,KAAMxD,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMgF,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOqS,KAAQrN;ACjBf,IAAMA,KAASsB,EAAa6L,GAAmB,IAAI;AAAnD,IAEM3J,KAAMxD,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMgF,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOsS,KAAQtN;ACrBf,IAAAuN,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,MACL,G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ACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,SAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,QAAU,EACR,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,QAAU,EACR,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;ACxQA,IAAM,EAAE,OAAA7L,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,GAAU,IAAI2L;AAA5C,IAEOC,KAAQrK,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,EAAE,GAAGC,GAAM,QAAQ,QAAQ,cAAc,GACzC,EAAE,GAAGA,GAAM,QAAQ,QAAQ,cAAc,CAC3C,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,MAAM,QAAQ,CAAC,GAAG,EAAE,GACnC,EAAE,GAAGA,GAAU,SAAS,QAAQ,CAAC,GAAG,EAAE,GACtC,EAAE,GAAGA,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,CACtC,GACA,MAAM,EAAE,OAAOf,GAAO,QAAQ,KAAK,QAAQA,GAAO,OAAO,GACzD,QAAQ,EAAE,GAAGA,GAAO,UAAU,KAAK,GAAGA,GAAO,QAAQ,EACvD,CAAC;ACdD,IAAMkC,KAAUjC,EAAa0M,EAAiC;AAA9D,IAEMxK,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,IAAIxI,GAAI;AAEZA,GAAI,KAAK;AAET,IAAOiT,KAAQ1K;ACpBf,IAAA2K,KAAA,EACE,OAAS,EACP,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,IACP,GACA,EACE,GAAK,KACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MA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,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,aAAa,EACX,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,eAAe,EACb,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,KACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,MACL,GAAK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,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,GACA,MAAQ,EACN,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,OACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,KACV,SAAW,GACX,SAAW,KACb,GACA,SAAW,CAAC,EACd;ACpNA,IAAOC,IAAQlO,EAAaiO,EAAO,EAChC,UAAU,SAAS,CAAC,KAAK,MAAM,CAAC,EAChC,UAAU,SAAS,CAAC,KAAK,MAAM,CAAC,EAChC,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,UAAU,QAAQ,CAAC,KAAK,IAAI,CAAC,EAC7B,UAAU,WAAW,CAAC,KAAK,IAAI,CAAC,EAChC,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACRT,IAAOE,KAAQ3O,EAAa0O,GAAwB,MAAM;ACA1D,IAAOE,KAAQ5O,EAAa0O,GAAwB,MAAM;ACA1D,IAAOG,KAAQ7O,EAAa0O,GAAwB,IAAI;ACHxD,IAAAI,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,KACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,MACL,GAAK,GACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;AC/LA,IAAM,EAAE,OAAAlO,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAI+N;AAArD,IAEOC,KAAQ1M,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EAAE,GAAGF,GAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE,GAC9C,EAAE,GAAGA,GAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE,CACnD,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE,GAC5C,EAAE,GAAGA,GAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE,GAChD,EAAE,GAAGA,GAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE,CAC9C,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;AChBD,IAAMmG,KAAgBlG,EAAa+O,EAAkC;AAArE,IAEMlO,KAAQqF,GAAc,WAAW,OAAQ/D,OAAMA,EAAE,SAAS,MAAM;AAFtE,IAIMzI,KAAMmH,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDnH,GAAI,IAAI;AACRA,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAMwI,KAAMrB,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDqB,GAAI,IAAI;AACRA,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAO8M,KAAQ9I;ACnBf,IAAA+I,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,eAAe,EACb,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,aAAa,EACX,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,eAAe,EACb,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,KACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,MACL,GAAK,GACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;AC7NA,IAAM,EAAE,OAAArO,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAIkO;AAArD,IAEOC,KAAQ7M,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EAAE,GAAGF,GAAM,MAAM,QAAQ,gBAAgB,GAAG,EAAE,GAC9C,EAAE,GAAGA,GAAM,SAAS,QAAQ,gBAAgB,GAAG,EAAE,CACnD,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,MAAM,QAAQ,CAAC,KAAK,OAAO,EAAE,GAC5C,EAAE,GAAGA,GAAU,SAAS,QAAQ,CAAC,KAAK,QAAQ,EAAE,GAChD,EAAE,GAAGA,GAAU,OAAO,QAAQ,CAAC,KAAK,MAAM,EAAE,CAC9C,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;AChBD,IAAMmG,KAAgBlG,EAAakP,EAAkC;AAArE,IAEMrO,KAAQqF,GAAc,WAAW,OAAQ/D,OAAMA,EAAE,SAAS,MAAM;AAFtE,IAIMzI,KAAMmH,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDnH,GAAI,IAAI;AACRA,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAMwI,KAAMrB,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDqB,GAAI,IAAI;AACRA,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAOiN,KAAQjJ;ACnBf,IAAAkJ,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,GACL,GAAK,OACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;AC1NA,IAAOC,KAAQ7O,EAAa4O,EAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAMlJ,KAAgBlG,EAAaqP,EAAe;AAAlD,IAEMxO,KAAQqF,GAAc,WAAW,OAAQ/D,OAAMA,EAAE,SAAS,MAAM;AAFtE,IAIMD,KAAMrB,GAAM,KAAM,OAAM,EAAE,SAAS,OAAO;AAEhDqB,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAOoN,KAAQpJ;ACZf,IAAAqJ,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,MACL,GAAK,EACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,MACL,GAAK,GACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;ACjKA,IAAM,EAAE,OAAA3O,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAA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,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,GACL,GAAK,KACP,GACA,SAAW,EACT,GAAK,GACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,EACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,EACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;ACnZA,IAAM,EAAE,OAAArP,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,GAAU,IAAImP;AAA5C,IAEOC,KAAQ7N,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,EAAE,GAAGC,GAAM,SAAS,GAAG,MAAM,QAAQ,aAAa,GAClD,EAAE,GAAGA,GAAM,MAAM,QAAQ,cAAc,CACzC,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,GACpC,EAAE,GAAGA,GAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE,CACvC,GACA,MAAM,EAAE,OAAOf,GAAO,QAAQ,MAAM,QAAQA,GAAO,OAAO,GAC1D,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;ACdD,IAAMkC,KAAUjC,EAAakQ,EAAkB;AAA/C,IAEOC,KAAQlO;ACLf,IAAAmO,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,IACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,EACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,EACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;ACrJA,IAAM,EAAE,OAAAxP,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,GAAU,IAAIsP;AAA5C,IAEOC,IAAQhO,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,EAAE,GAAGC,GAAM,SAAS,GAAG,GAAG,GAAG,OAAO,QAAQ,aAAa,GACzD,EAAE,GAAGA,GAAM,MAAM,GAAG,GAAG,GAAG,MAAM,QAAQ,gBAAgB,CAC1D,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,GACpC,EAAE,GAAGA,GAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE,CACvC,GACA,MAAM,EAAE,OAAOf,GAAO,QAAQ,MAAM,QAAQA,GAAO,OAAO,GAC1D,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;ACbD,IAAMrB,KAASsB,EAAaqQ,GAAsB,MAAM;AAAxD,IAEMnO,KAAMxD,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMgF,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAO4W,KAAQ5R;ACjBf,IAAMA,KAASsB,EAAaqQ,GAAsB,MAAM;AAAxD,IAEMnO,KAAMxD,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMgF,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAO6W,KAAQ7R;ACjBf,IAAMA,KAASsB,EAAaqQ,GAAsB,IAAI;AAAtD,IAEMnO,KAAMxD,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMgF,GAAO,WAAW,KAC3ByD,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAO8W,KAAQ9R;ACrBf,IAAA+R,IAAA,EACE,OAAS,EACP,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,aAAa,EACX,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,KACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,KACL,GAAK,MACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,OACL,GAAK,EACP,GACA,OAAS,EACP,GAAK,MACL,GAAK,EACP,GACA,QAAU,EACR,GAAK,GACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,MACR,MAAQ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CE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,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GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,oBAAoB,EAClB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,eAAe,EACb,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,iBAAiB,EACf,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,oBAAoB,EAClB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,oBAAoB,EAClB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,sBAAsB,EACpB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,wBAAwB,EACtB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,sBAAsB,EACpB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EA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AAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;ACzLA,IAAOC,KAAQrS,EAAaoS,EAAO,EAChC,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,YAAY,EACtC,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACHT,IAAM3Q,KAAUjC,EAAa6S,IAAsB,MAAM;AAAzD,IAEM3Q,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AACbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOoZ,KAAQ7Q;AChBf,IAAMA,KAAUjC,EAAa6S,IAAsB,MAAM;AAAzD,IAEM3Q,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AACbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOqZ,KAAQ9Q;AChBf,IAAMA,KAAUjC,EAAa6S,IAAsB,IAAI;AAAvD,IAEM3Q,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AACbwI,GAAI,KAAK;AACTA,GAAI,IAAI;AACRxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOsZ,KAAQ/Q;ACrBf,IAAAgR,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,MACP,EACF,GACA,WAAa,EACX,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;ACvIA,IAAM,EAAE,OAAArS,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAIkS;AAArD,IACOC,KAAQ1S,EAAayS,EAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACTT,IAAM/M,KAAgBlG,EAAakT,EAAiC;AAApE,IAEMrS,KAAQqF,GAAc,WAAW,OACpCpI,OAAcA,EAAU,SAAS,MACpC;AAJA,IAMMoE,KAAMrB,GAAM,KAAMV,OAASA,EAAK,SAAS,OAAO;AAEtD+B,GAAI,IAAI;AACRA,GAAI,SAAS;AAEb,IAAOiR,KAAQjN;ACdf,IAAAkN,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC9XA,IAAOC,KAAQ7S,EAAa4S,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACLT,IAAOE,KAAQ9S,EAAa4S,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACLT,IAAOG,KAAQ/S,EAAa4S,EAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAOI,KAAQhT,EAAa4S,EAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACRT,IAAAK,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,KACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,MACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,MACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC/WA,IAAOC,KAAQlT,EAAaiT,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACLT,IAAOE,KAAQnT,EAAaiT,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACLT,IAAOG,KAAQpT,EAAaiT,EAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAOI,KAAQrT,EAAaiT,EAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACRT,IAAAK,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,SAAW,EACT,GAAK,GACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,IACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,IACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC7cA,IAAOC,KAAQvT,EAAasT,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACNT,IAAOE,KAAQxT,EAAasT,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACNT,IAAOG,KAAQzT,EAAasT,EAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACNT,IAAOI,KAAQ1T,EAAasT,EAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACTT,IAAAK,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,SAAW,EACT,GAAK,GACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,IACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,IACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC5dA,IAAOC,KAAQ5T,EAAa2T,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,aAAa,EACvC,MAAM;ACNT,IAAOE,KAAQ7T,EAAa2T,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACNT,IAAOG,KAAQ9T,EAAa2T,EAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACNT,IAAOI,KAAQ/T,EAAa2T,EAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,cAAc,EACxC,MAAM;ACTT,IAAAK,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,GACL,GAAK,MACP,GACA,EACE,GAAK,GACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,kBAAkB,EAChB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EAC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AAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,IACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,EACF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Y,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,WACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,wBACL,GAAK,qBACP,GACA,EACE,GAAK,wBACL,GAAK,qBACP,GACA,EACE,GAAK,uBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,sBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,mBACP,GACA,EACE,GAAK,sBACL,GAAK,mBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,mBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,mBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,mBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,mBACP,GACA,EACE,GAAK,sBACL,GAAK,mBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,uBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,kBACP,GACA,EACE,GAAK,uBACL,GAAK,oBACP,GACA,EACE,GAAK,uBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,sBACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,mBACL,GAAK,oBACP,GACA,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,GACA,EACE,GAAK,oBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,oBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,oBACL,GAAK,oBACP,GACA,EACE,GAAK,oBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,mBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,oBACL,GAAK,mBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,mBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,OAAS,EACP,MAAQ,QACR,QAAU,CACR,EACE,GAAK,sBACL,GAAK,mBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,qBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,aAAa,EACX,MAAQ,QACR,QAAU,CACR,EACE,GAAK,qBACL,GAAK,sBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,WAAW,EACT,MAAQ,QACR,QAAU,CACR,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,aAAa,EACX,MAAQ,QACR,QAAU,CACR,EACE,GAAK,oBACL,GAAK,qBACP,GACA,EACE,GAAK,qBACL,GAAK,qBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,qBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,GACA,EACE,GAAK,sBACL,GAAK,oBACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,wBACL,GAAK,oBACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,qBACL,GAAK,qBACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,YACL,GAAK,oBACP,GACA,QAAU,EACR,GAAK,WACL,GAAK,qBACP,EACF,GACA,QAAU,EACR,MAAQ,cACR,MAAQ,aACR,MAAQ,sBACR,MAAQ,qBACR,OAAS,aACT,QAAU,oBACV,SAAW,GACX,SAAW,uBACb,GACA,SAAW,CAAC,EACd;AChtBA,IAAOC,KAAQ/V,EAAa8V,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,eAAe,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,EAC5D,iBAAiB,SAAS,eAAe,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,EAC5D,MAAM;ACNT,IAAOE,KAAQhW,EAAa8V,EAAO,EAChC,wBAAwB,MAAM,EAC9B,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,iBAAiB,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,EAC5D,iBAAiB,SAAS,cAAc,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,EAC1D,MAAM;ACNT,IAAOG,KAAQjW,EAAa8V,EAAO,EAChC,wBAAwB,OAAO,EAC/B,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACNT,IAAOI,KAAQlW,EAAa8V,EAAO,EAChC,wBAAwB,IAAI,EAC5B,UAAU,SAAS,CAAC,KAAK,KAAK,CAAC,EAC/B,UAAU,UAAU,CAAC,KAAK,KAAK,CAAC,EAChC,iBAAiB,SAAS,eAAe,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,EAC7D,iBAAiB,SAAS,eAAe,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,EAC3D,MAAM;ACTT,IAAAK,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC1JA,IAAM,EAAE,OAAA/V,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAI4V;AAArD,IACOC,KAAQpW,EAAamW,EAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACPT,IAAOE,KAAQ7W,EAAa4W,EAAwB;ACHpD,IAAAE,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,MACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,OAAS,EACP,MAAQ,QACR,MAAQ,OACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,EACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,EACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,GACR,MAAQ,GACR,OAAS,MACT,QAAU,GACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,OACL,GAAK,OACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;AChFA,IAAM,EAAE,OAAAlW,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAI+V;AAArD,IAEOC,KAAQ1U,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EACE,MAAM,QACN,MAAM,SACN,GAAG,GACH,GAAG,qBACH,QAAQ,aACV,GACA,EACE,MAAM,QACN,MAAM,SACN,GAAG,GACH,GAAG,MACH,QAAQ,gBACV,GACA,EAAE,GAAGF,GAAM,OAAO,GAAG,MAAM,QAAQ,UAAU,UAAU,IAAI,CAC7D,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,GACpC,EAAE,GAAGA,GAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE,CACvC,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;AC3BD,IAAM,EAAE,GAAGgG,IAAQ,GAAG5L,GAAK,IAAI4c,GAAgB;AAE/C,SAAS9Q,GAAYJ,GAAgC;AACnD,SAAO,OAAOA,KAAU;AAC1B;AAEA,IAAMK,KAAgBlG,EAAa,EACjC,GAAG+W,IACH,YAAY,OAAO,OAAO5c,EAAI,EAAE,OAAO8L,EAAW,EACpD,CAAC;AAHD,IAKO+Q,KAAQ,EACb,GAAG9Q,IACH,YAAY,CAAC,GAAGA,GAAc,YAAYH,EAAM,EAClD;AChBA,IAAOkR,KAAQ5U,EAAa,EAC1B,YAAY,CACV,EACE,MAAM,QACN,QAAQ,CACN,EAAE,GAAG,MAAM,GAAG,EAAE,GAChB,EAAE,GAAG,GAAG,GAAG,EAAE,CACf,GACA,OAAO,WACP,MAAM,MACR,GACA,EACE,MAAM,QACN,QAAQ,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC6U,GAAG9Z,MAAM;AAC1C,MAAM3C,IAAQ,KAAK,KAAK,IAAK2C,IAAI,KAAK,KAAM,GACtC+Z,IAAI;AACV,SAAO,EAAE,GAAG,MAAMA,IAAI,KAAK,IAAI1c,CAAK,GAAG,GAAG0c,IAAI,KAAK,IAAI1c,CAAK,EAAE;AAChE,CAAC,GACD,OAAO,WACP,MAAM,MACR,GACA,EAAE,MAAM,QAAQ,MAAM,SAAS,GAAG,OAAO,GAAG,GAAG,QAAQ,cAAc,CACvE,GACA,OAAO,CAAC,EAAE,GAAG,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,GACxC,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,EACvB,CAAC;ACvBD,IAAMwH,KAAUjC,EAAaiX,IAAiB,MAAM;AAApD,IAEM/U,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEID,OACFA,GAAI,SAAS;AAGf,IAAOkV,KAAQnV;ACXf,IAAOoV,KAAQrX,EAAaiX,IAAiB,MAAM;ACCnD,IAAMhV,KAAUjC,EAAaiX,IAAiB,IAAI;AAAlD,IAEM/U,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEID,OACFA,GAAI,SAAS;AAGf,IAAOoV,KAAQrV;ACdf,IAAAsV,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,QAAU,EACR,GAAK,OACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC1GA,IAAOC,KAAQhX,EAAa+W,EAAO,EAChC,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,SAAS,YAAY,EACtC,MAAM;ACHT,IAAMtV,KAAUjC,EAAawX,IAAqB,IAAI;AAAtD,IAEMtV,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,IAAI;AACRA,GAAI,KAAK;AACTxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAO+d,KAAQxV;ACjBf,IAAMA,KAAUxD,EAAoBgZ,EAAgB;AAApD,IAEMvV,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,IAAI;AACRA,GAAI,KAAK;AACTxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOge,KAAQzV;ACjBf,IAAMA,KAAUjC,EAAawX,IAAqB,MAAM;AAAxD,IAEMtV,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEbwI,GAAI,IAAI;AACRA,GAAI,KAAK;AACTxI,GAAI,KAAK;AACTA,GAAI,IAAI;AAER,IAAOie,KAAQ1V;ACrBf,IAAA2V,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,MACP,EACF,GACA,WAAa,EACX,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,GACL,GAAK,MACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;ACtLA,IAAM,EAAE,OAAAhX,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAI6W;AAArD,IACOC,KAAQrX,EAAaoX,EAAO,EAChC,iBAAiB,SAAS,YAAY,EACtC,UAAU,SAAS,CAAC,GAAG,CAAC,EACxB,UAAU,UAAU,CAAC,GAAG,CAAC,EACzB,UAAU,WAAW,CAAC,GAAG,CAAC,EAC1B,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACTT,IAAM1R,KAAgBlG,EAAa6X,EAAU;AAA7C,IAEMhX,KAAQqF,GAAc,WAAW,OACpCpI,OAAcA,EAAU,SAAS,MACpC;AAJA,IAMMoE,KAAMrB,GAAM,KAAMV,OAASA,EAAK,SAAS,OAAO;AANtD,IAOMzG,OAAMmH,GAAM,KAAMV,OAASA,EAAK,SAAS,OAAO;AAEtD+B,GAAI,IAAI;AACRxI,KAAI,IAAI;AAER,IAAOoe,KAAQ5R;ACff,IAAA6R,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC3JA,IAAM,EAAE,OAAAnX,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAIgX;AAArD,IAEOC,KAAQ3V,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EAAE,GAAGF,GAAM,MAAM,QAAQ,gBAAgB,GACzC,EAAE,GAAGA,GAAM,SAAS,QAAQ,aAAa,CAC3C,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,GACpC,EAAE,GAAGA,GAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE,CACvC,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;ACbD,IAAMkC,KAAUjC,EAAagY,EAAiB;AAA9C,IAEM9V,KAAMD,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAJA,IAKMzI,KAAMuI,GAAQ,WAAW,KAC5BE,OAAMA,EAAE,SAAS,UAAUA,EAAE,SAAS,OACzC;AAEAD,GAAI,SAAS;AACbxI,GAAI,SAAS;AAEb,IAAOue,KAAQhW;ACjBf,IAAAiW,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,cAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,gBAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,MACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,MACP,EACF,GACA,WAAa,EACX,MAAQ,EACN,GAAK,MACL,GAAK,IACP,GACA,SAAW,EACT,GAAK,MACL,GAAK,MACP,GACA,OAAS,EACP,GAAK,OACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,MACL,GAAK,MACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;ACjKA,IAAM,EAAE,OAAAtX,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAImX;AAArD,IAEOC,KAAQ9V,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EAAE,GAAGF,GAAM,MAAM,QAAQ,cAAc,GACvC,EAAE,GAAGA,GAAM,SAAS,QAAQ,eAAe,CAC7C,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,MAAM,QAAQ,CAAC,GAAG,EAAE,GACnC,EAAE,GAAGA,GAAU,SAAS,QAAQ,CAAC,GAAG,EAAE,GACtC,EAAE,GAAGA,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,CACtC,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;AChBD,IAAMmG,KAAgBlG,EAAamY,EAA2B;AAA9D,IAEMtX,KAAQqF,GAAc,WAAW,OACpCpI,OAAcA,EAAU,SAAS,MACpC;AAJA,IAMMoE,KAAMrB,GAAM,KAAMV,OAASA,EAAK,SAAS,OAAO;AAEtD+B,GAAI,IAAI;AAER,IAAMxI,KAAMmH,GAAM,KAAMV,OAASA,EAAK,SAAS,OAAO;AAEtDzG,GAAI,IAAI;AACRA,GAAI,IAAI;AAER,IAAO0e,KAAQlS;AClBf,IAAAmS,KAAA,EACE,OAAS,EACP,eAAiB,EACf,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,eAAiB,EACf,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,MACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,cAAgB,EACd,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,iBAAmB,EACjB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,kBAAoB,EAClB,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,WAAa,EACX,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,KACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,GACA,EACE,GAAK,MACL,GAAK,IACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,GACA,YAAc,EACZ,MAAQ,QACR,QAAU,CACR,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,KACV,EACF,GACA,SAAW,EACT,UAAY,EACV,MAAQ,UACR,GAAK,KACL,GAAK,MACL,QAAU,MACV,OAAS,WACT,MAAQ,KACV,GACA,gBAAkB,EAChB,MAAQ,UACR,GAAK,OACL,GAAK,MACL,QAAU,MACV,OAAS,WACT,MAAQ,KACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,IACP,EACF,GACA,WAAa,CAAC,GACd,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,MACR,MAAQ,MACR,OAAS,KACT,QAAU,MACV,SAAW,MACX,SAAW,KACb,EACF;AC1TA,IAAOA,KAAQ7X,EAAa6X,EAAO,EAChC,iBAAiB,SAAS,eAAe,EACzC,MAAM;ACLT,IAAAC,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,EACP,GACA,EACE,GAAK,MACL,GAAK,EACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,MACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,OAAS,EACP,MAAQ,QACR,MAAQ,OACR,GAAK,OACL,GAAK,KACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,EACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,EACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,GACR,MAAQ,GACR,OAAS,MACT,QAAU,GACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,EACT,OAAS,EACP,MAAQ,UACR,GAAK,OACL,GAAK,OACL,QAAU,MACV,OAAS,WACT,MAAQ,MACV,EACF,EACF;AChFA,IAAM,EAAE,OAAA1X,IAAO,OAAAC,IAAO,QAAAd,IAAQ,WAAAe,IAAW,SAAAC,GAAQ,IAAIuX;AAArD,IAEOC,KAAQlW,EAAa,EAC1B,YAAY,CACV,GAAG,OAAO,OAAOzB,EAAK,GACtB,GAAG,OAAO,OAAOG,EAAO,GACxB,EACE,GAAGF,GAAM,MACT,GAAG,GACH,GAAG,qBACH,QAAQ,aACV,GACA,EACE,GAAGA,GAAM,SACT,GAAG,GACH,GAAG,MACH,QAAQ,gBACV,GACA,EAAE,GAAGA,GAAM,OAAO,GAAG,OAAO,GAAG,MAAM,UAAU,KAAK,QAAQ,SAAS,CACvE,GACA,OAAO,CACL,EAAE,GAAGC,GAAU,OAAO,QAAQ,CAAC,GAAG,EAAE,GACpC,EAAE,GAAGA,GAAU,QAAQ,QAAQ,CAAC,GAAG,EAAE,CACvC,GACA,MAAM,EAAE,OAAOf,GAAO,OAAO,QAAQA,GAAO,OAAO,GACnD,QAAQ,EAAE,GAAGA,GAAO,SAAS,GAAGA,GAAO,QAAQ,EACjD,CAAC;AC1BD,IAAOyY,KAAQxY,EAAauY,EAAc;ACH1C,IAAAE,KAAA,EACE,OAAS,EACP,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,OACL,GAAK,MACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,KACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,QAAU,EACR,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,OACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,KACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,GACA,YAAY,EACV,MAAQ,QACR,QAAU,CACR,EACE,GAAK,MACL,GAAK,KACP,GACA,EACE,GAAK,MACL,GAAK,MACP,CACF,GACA,OAAS,WACT,MAAQ,MACV,EACF,GACA,OAAS,EACP,MAAQ,EACN,MAAQ,QACR,MAAQ,SACR,GAAK,OACL,GAAK,KACP,GACA,SAAW,EACT,MAAQ,QACR,MAAQ,SACR,GAAK,GACL,GAAK,MACP,EACF,GACA,WAAa,EACX,OAAS,EACP,GAAK,OACL,GAAK,KACP,GACA,QAAU,EACR,GAAK,MACL,GAAK,KACP,EACF,GACA,QAAU,EACR,MAAQ,OACR,MAAQ,MACR,MAAQ,OACR,MAAQ,MACR,OAAS,MACT,QAAU,MACV,SAAW,GACX,SAAW,EACb,GACA,SAAW,CAAC,EACd;AC5IA,IAAM,EAAE,OA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","names":["toString","kindOf","fn","module","ee","a1","a2","a4","length","j","on","noop","getAction","create","lexer","emit","step","createNode","current","reader","handleLexerData","parseSync","parseInput","camelize","toCamelCase","notCamelcase","escapeText","escapeAttr","svgsonSync","applyFilters","input","e","stringify","ast","z","v","length","point","tx","ty","m1","m2","cx","cy","sx","sy","cx","cy","e","t1","t2","r1","C","self","k","s","e","ch","expected","j","found","flipY","rotation","v","e","su","source_port","joiner","Soup","rp","tp","j","e","x1","y1","x2","y2","p1","p2","point","lo","e","dx","dy","pt","translate","findAllDescendantGroupIds","applyToPoint","matrix","point","isUndefined","val","translate","tx","ty","transform","matrices","multiply","m1","m2","rest","m","cos","sin","PI","rotate","angle","cx","cy","cosAngle","sinAngle","rotationMatrix","tan","peg$subclass","child","parent","C","peg$SyntaxError","message","expected","found","location","self","peg$padEnd","str","targetLength","padString","sources","src","k","s","offset_s","loc","e","filler","line","last","hatLen","DESCRIBE_EXPECTATION_FNS","expectation","literalEscape","escapedParts","part","classEscape","hex","ch","describeExpectation","describeExpected","descriptions","i","j","describeFound","getBoundsOfPrimitives","primitives","minX","maxX","minY","maxY","updateBounds","primitive","x","y","radius","width","height","halfWidth","halfHeight","rotateRightFacingAnchor","anchor","newOrientation","flipSymbolOverXAxis","symbol","overrides","center","ports","size","transformMatrix","flippedPrimitives","flippedPoint","anchorMap","flippedCenter","flippedPorts","port","flipSymbolOverYAxis","rotateRightFacingSymbol","opts","angleMap","rotatedPrimitives","rotatedPoint","rotatedCenter","rotatedCorner","rotatedPorts","bounds","rotateSymbol","orientation","SymbolModifier","text","newAnchor","anchorPosition","currentLabel","newLabels","modifySymbol","key","refblock","ac_voltmeter_default","paths","texts","refblocks","circles","ac_voltmeter_down_default","ac_voltmeter_horz_default","ac_voltmeter_left_default","ac_voltmeter_right_default","ac_voltmeter_up_default","ac_voltmeter_vert_default","avalanche_diode_default","avalanche_diode_down_default","avalanche_diode_horz_default","avalanche_diode_left_default","avalanche_diode_right_default","avalanche_diode_up_default","avalanche_diode_vert_default","backward_diode_default","backward_diode_down_default","backward_diode_left_default","backward_diode_right_default","rotated","ref","p","backward_diode_up_default","defineSymbol","battery_default","battery_horz_default","battery_vert_default","boxresistor_default","boxresistor_down_default","boxresistor_left_default","boxresistor_right_default","boxresistor_small_default","boxresistor_small_down_default","boxresistor_small_left_default","boxresistor_small_right_default","boxresistor_small_up_default","boxresistor_up_default","bridged_ground_default","bridged_ground_down_default","bridged_ground_right_default","bridged_ground_left_default","bridged_ground_up_default","capacitor_default","capacitor_down_default","capacitor_left_default","capacitor_polarized_default","capacitor_polarized_down_default","capacitor_polarized_left_default","capacitor_polarized_right_default","capacitor_polarized_up_default","capacitor_right_default","capacitor_up_default","constant_current_diode_default","constant_current_diode_down_default","constant_current_diode_horz_default","constant_current_diode_left_default","constant_current_diode_right_default","constant_current_diode_up_default","constant_current_diode_vert_default","crystal_4pin_default","crystal_4pin_down_default","crystal_4pin_left_default","crystal_4pin_right_default","crystal_4pin_up_default","crystal_default","crystal_down_default","crystal_left_default","crystal_right_default","crystal_up_default","darlington_pair_transistor_default","darlington_pair_transistor_down_default","darlington_pair_transistor_horz_default","darlington_pair_transistor_left_default","darlington_pair_transistor_right_default","darlington_pair_transistor_up_default","darlington_pair_transistor_vert_default","dc_ammeter_default","dc_ammeter_horz_default","isPathPrimitive","value","isTextPrimitive","letter","underline","isPrimitive","rotatedSymbol","dc_ammeter_vert_default","dc_voltmeter_default","dc_voltmeter_down_default","dc_voltmeter_horz_default","dc_voltmeter_left_default","dc_voltmeter_right_default","dc_voltmeter_up_default","dc_voltmeter_vert_default","diac_default","diac_down_default","diac_horz_default","diac_left_default","diac_right_default","diac_up_default","diac_vert_default","digital_ground_default","digital_ground_down_default","digital_ground_left_default","digital_ground_right_default","digital_ground_up_default","diode_default","diode_right_default","diode_down_default","diode_left_default","diode_up_default","dpdt_normally_closed_switch_default","dpdt_normally_closed_switch_right_default","dpdt_normally_closed_switch_down_default","dpdt_normally_closed_switch_left_default","dpdt_normally_closed_switch_up_default","dpdt_switch_default","dpdt_switch_right_default","dpdt_switch_down_default","dpdt_switch_left_default","dpdt_switch_up_default","dpst_normally_closed_switch_default","dpst_normally_closed_switch_right_default","dpst_normally_closed_switch_down_default","dpst_normally_closed_switch_left_default","dpst_normally_closed_switch_up_default","dpst_switch_default","dpst_switch_right_default","dpst_switch_down_default","dpst_switch_left_default","dpst_switch_up_default","ferrite_bead_default","ferrite_bead_up_default","ferrite_bead_down_default","ferrite_bead_right_default","ferrite_bead_left_default","filled_diode_default","filled_diode_down_default","filled_diode_horz_default","filled_diode_left_default","filled_diode_right_default","filled_diode_up_default","filled_diode_vert_default","frequency_meter_default","frequency_meter_horz_default","frequency_meter_vert_default","fuse_default","fuse_horz_default","fuse_vert_default","ground_default","ground_down_default","ground_horz_default","ground_left_default","ground_right_default","ground_up_default","ground_vert_default","gunn_diode_default","gunn_diode_horz_default","gunn_diode_vert_default","icled_default","icled_right_default","icled_down_default","icled_left_default","icled_up_default","igbt_transistor_default","igbt_transistor_horz_default","igbt_transistor_vert_default","illuminated_push_button_normally_open_default","illuminated_push_button_normally_open_horz_default","illuminated_push_button_normally_open_vert_default","inductor_default","inductor_right_default","inductor_up_default","inductor_down_default","inductor_left_default","laser_diode_default","laser_diode_right_default","laser_diode_down_default","laser_diode_left_default","laser_diode_up_default","led_default","led_right_default","led_up_default","led_down_default","led_left_default","light_dependent_resistor_default","light_dependent_resistor_horz_default","light_dependent_resistor_vert_default","mosfet_depletion_normally_on_default","mosfet_depletion_normally_on_horz_default","mosfet_depletion_normally_on_vert_default","mushroom_head_normally_open_momentary_default","mushroom_head_normally_open_momentary_horz_default","mushroom_head_normally_open_momentary_vert_default","n_channel_d_mosfet_transistor_default","n_channel_d_mosfet_transistor_horz_default","n_channel_d_mosfet_transistor_vert_default","n_channel_e_mosfet_transistor_default","n_channel_e_mosfet_transistor_horz_default","n_channel_e_mosfet_transistor_vert_default","njfet_transistor_default","njfet_transistor_horz_default","njfet_transistor_vert_default","not_connected_default","not_connected_right_default","not_connected_down_default","not_connected_left_default","not_connected_up_default","npn_bipolar_transistor_default","npn_bipolar_transistor_down_default","npn_bipolar_transistor_horz_default","npn_bipolar_transistor_left_default","npn_bipolar_transistor_right_default","npn_bipolar_transistor_up_default","npn_bipolar_transistor_vert_default","opamp_no_power_default","opamp_no_power_right_default","opamp_no_power_down_default","opamp_no_power_left_default","opamp_no_power_up_default","opamp_with_power_default","opamp_with_power_right_default","opamp_with_power_down_default","opamp_with_power_left_default","opamp_with_power_up_default","p_channel_d_mosfet_transistor_default","p_channel_d_mosfet_transistor_horz_default","p_channel_d_mosfet_transistor_vert_default","p_channel_e_mosfet_transistor_default","p_channel_e_mosfet_transistor_horz_default","p_channel_e_mosfet_transistor_vert_default","photodiode_default","photodiode_horz_default","photodiode_vert_default","pjfet_transistor_default","pjfet_transistor_horz_default","pjfet_transistor_vert_default","pnp_bipolar_transistor_default","pnp_bipolar_transistor_down_default","pnp_bipolar_transistor_horz_default","pnp_bipolar_transistor_left_default","pnp_bipolar_transistor_right_default","pnp_bipolar_transistor_up_default","pnp_bipolar_transistor_vert_default","potentiometer_default","potentiometer_horz_default","potentiometer_vert_default","potentiometer2_default","potentiometer2_right_default","potentiometer2_down_default","potentiometer2_left_default","potentiometer2_up_default","potentiometer3_default","potentiometer3_down_default","potentiometer3_left_default","potentiometer3_right_default","potentiometer3_up_default","power_factor_meter_default","power_factor_meter_horz_default","text_cos","power_factor_meter_vert_default","push_button_normally_closed_momentary_default","push_button_normally_closed_momentary_horz_default","push_button_normally_closed_momentary_vert_default","push_button_normally_open_momentary_default","push_button_normally_open_momentary_horz_default","push_button_normally_open_momentary_vert_default","rail_default","rail_down_default","rail_left_default","rail_right_default","rail_up_default","rectifier_diode_default","rectifier_diode_horz_default","rectifier_diode_vert_default","resistor_default","resistor_down_default","resistor_left_default","resistor_right_default","resistor_up_default","resonator_default","resonator_right_default","resonator_down_default","resonator_horz_default","resonator_left_default","resonator_up_default","resonator_vert_default","schottky_diode_default","schottky_diode_right_default","schottky_diode_down_default","schottky_diode_left_default","schottky_diode_up_default","silicon_controlled_rectifier_default","silicon_controlled_rectifier_horz_default","silicon_controlled_rectifier_vert_default","solderjumper2_bridged12_default","solderjumper2_bridged12_down_default","solderjumper2_bridged12_left_default","solderjumper2_bridged12_right_default","solderjumper2_bridged12_up_default","solderjumper2_default","solderjumper2_down_default","solderjumper2_left_default","solderjumper2_right_default","solderjumper2_up_default","solderjumper3_bridged12_default","solderjumper3_bridged12_down_default","solderjumper3_bridged12_left_default","solderjumper3_bridged12_right_default","solderjumper3_bridged12_up_default","solderjumper3_bridged123_default","solderjumper3_bridged123_down_default","solderjumper3_bridged123_left_default","solderjumper3_bridged123_right_default","solderjumper3_bridged123_up_default","solderjumper3_bridged23_default","solderjumper3_bridged23_down_default","solderjumper3_bridged23_left_default","solderjumper3_bridged23_right_default","solderjumper3_bridged23_up_default","solderjumper3_default","solderjumper3_down_default","solderjumper3_left_default","solderjumper3_right_default","solderjumper3_up_default","spdt_normally_closed_switch_default","spdt_normally_closed_switch_right_default","spdt_normally_closed_switch_down_default","spdt_normally_closed_switch_left_default","spdt_normally_closed_switch_up_default","spdt_switch_default","spdt_switch_right_default","spdt_switch_down_default","spdt_switch_left_default","spdt_switch_up_default","spst_normally_closed_switch_default","spst_normally_closed_switch_right_default","spst_normally_closed_switch_down_default","spst_normally_closed_switch_left_default","spst_normally_closed_switch_up_default","spst_switch_default","spst_switch_right_default","spst_switch_down_default","spst_switch_left_default","spst_switch_up_default","square_wave_default","square_wave_down_default","square_wave_left_default","square_wave_right_default","square_wave_up_default","step_recovery_diode_default","step_recovery_diode_horz_default","step_recovery_diode_vert_default","tachometer_default","tachometer_horz_default","tachometer_vert_default","testpoint_right_default","_","r","testpoint_down_default","testpoint_left_default","testpoint_up_default","tilted_ground_default","tilted_ground_right_default","tilted_ground_up_default","tilted_ground_down_default","tilted_ground_left_default","triac_default","triac_horz_default","triac_vert_default","tunnel_diode_default","tunnel_diode_horz_default","tunnel_diode_vert_default","unijunction_transistor_default","unijunction_transistor_horz_default","unijunction_transistor_vert_default","usbc_default","var_meter_default","var_meter_horz_default","var_meter_vert_default","varactor_diode_default","varactor_diode_horz_default","varactor_diode_vert_default","varistor_default","varistor_horz_default","varistor_vert_default","varmeter_default","varmeter_horz_default","varmeter_vert_default","vcc_default","resizeSymbol","newSize","oldWidth","oldHeight","scaleX","scaleY","resizedPrimitives","vcc_down_default","vcc_left_default","vcc_right_default","vcc_up_default","volt_meter_default","volt_meter_horz_default","volt_meter_vert_default","watt_hour_meter_default","watt_hour_meter_horz_default","watt_hour_meter_vert_default","wattmeter_default","wattmeter_horz_default","wattmeter_vert_default","zener_diode_default","zener_diode_horz_default","zener_diode_vert_default","symbols_index_default","BASE_SYMBOLS","symbols_index_default","k","a1","a2","b1","b2","p1","q1","p2","q2","o1","o2","q","r","v","w","l2","distance","dx","dy","rp","j","p1","p2","pt","dx","dy"]}
|