{
  "export_version": "1.0",
  "main_tree": {
    "nodes": {
      "Frame.004": {
        "attributes": {
          "location": [
            -120.0,
            20.0
          ],
          "height": 1045.0,
          "width": 200.0,
          "label": "input"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.003": {
        "attributes": {
          "location": [
            -30.0,
            10.0
          ],
          "height": 220.0,
          "width": 668.0,
          "label": "domain"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.002": {
        "attributes": {
          "location": [
            -30.0,
            10.0
          ],
          "height": 637.0,
          "width": 1750.0,
          "label": "rollout"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.001": {
        "attributes": {
          "location": [
            -30.0,
            10.0
          ],
          "height": 354.0,
          "width": 520.0,
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "bl_idname": "NodeFrame"
      },
      "Frame": {
        "attributes": {
          "location": [
            160.0,
            160.0
          ],
          "height": 444.0,
          "width": 520.0,
          "label": "scaled rollout"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.005": {
        "attributes": {
          "location": [
            -30.0,
            10.0
          ],
          "height": 567.0,
          "width": 800.0,
          "label": "Basis/glass"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.007": {
        "attributes": {
          "location": [
            -280.0,
            -120.0
          ],
          "height": 479.0,
          "width": 900.0,
          "label": "offsets extruded"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.006": {
        "attributes": {
          "location": [
            -20.0,
            -100.0
          ],
          "height": 432.0,
          "width": 700.0,
          "label": "offsets width"
        },
        "bl_idname": "NodeFrame"
      },
      "Frame.008": {
        "attributes": {
          "location": [
            -540.0,
            -60.0
          ],
          "height": 389.0,
          "width": 560.0,
          "label": "finally, fasade"
        },
        "bl_idname": "NodeFrame"
      },
      "Note": {
        "attributes": {
          "location": [
            1420.0,
            -180.0
          ],
          "width": 400.0,
          "color": [
            0.5,
            0.5,
            1.0
          ],
          "use_custom_color": true
        },
        "properties": {
          "n_id": "-7427341140154458980",
          "text": "nikitron 2023 | Fasade with Surfaces/Curves aproach"
        },
        "inputs": {
          "Text In": {
            "bl_idname": "SvStringsSocket",
            "name": "Text In"
          }
        },
        "outputs": {
          "Text Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Text Out"
          }
        },
        "bl_idname": "NoteNode"
      },
      "A Number.003": {
        "attributes": {
          "location": [
            1420.0,
            -400.0
          ],
          "label": "initial points count",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "int_": 100,
          "selected_mode": "int",
          "draw_3dpanel": true
        },
        "inputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Int",
            "properties": {
              "prop_name": "int_"
            }
          }
        },
        "outputs": {
          "Int": {
            "bl_idname": "SvStringsSocket",
            "name": "Int",
            "properties": {
              "custom_draw": "mode_custom_draw"
            }
          }
        },
        "bl_idname": "SvNumberNode"
      },
      "Scalar Math.007": {
        "attributes": {
          "location": [
            1680.0,
            -500.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.003"
          }
        },
        "properties": {
          "current_op": "PI",
          "x_": 4.5
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Scalar Math.006": {
        "attributes": {
          "location": [
            1840.0,
            -500.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.003"
          }
        },
        "properties": {
          "current_op": "PI",
          "x_": 14.0
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Formula": {
        "attributes": {
          "location": [
            2000.0,
            -500.0
          ],
          "width": 230.0,
          "parent": {
            "type": "NODE",
            "value": "Frame.003"
          }
        },
        "properties": {
          "formula1": "x*8*y/(x*8+8)"
        },
        "inputs": {
          "x": {
            "bl_idname": "SvFormulaSocket",
            "name": "x"
          },
          "y": {
            "bl_idname": "SvFormulaSocket",
            "name": "y"
          }
        },
        "outputs": {
          "Result": {
            "bl_idname": "SvStringsSocket",
            "name": "Result"
          }
        },
        "bl_idname": "SvFormulaNodeMk5"
      },
      "Reroute": {
        "attributes": {
          "location": [
            2280.0,
            -500.0
          ],
          "width": 16.0,
          "color": [
            0.9466601610183716,
            0.9466601610183716,
            0.9466601610183716
          ],
          "use_custom_color": true,
          "parent": {
            "type": "NODE",
            "value": "Frame.003"
          }
        },
        "inputs": {
          "Input": {
            "bl_idname": "NodeSocketColor",
            "name": "Input"
          }
        },
        "outputs": {
          "Output": {
            "bl_idname": "NodeSocketColor",
            "name": "Output"
          }
        },
        "bl_idname": "NodeReroute"
      },
      "List Join": {
        "attributes": {
          "location": [
            3180.0,
            -60.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "inputs": {
          "data": {
            "bl_idname": "SvStringsSocket",
            "name": "data"
          },
          "data 1": {
            "bl_idname": "SvStringsSocket",
            "name": "data 1"
          },
          "data 2": {
            "bl_idname": "SvStringsSocket",
            "name": "data 2"
          },
          "data 3": {
            "bl_idname": "SvStringsSocket",
            "name": "data 3"
          },
          "data 4": {
            "bl_idname": "SvStringsSocket",
            "name": "data 4"
          },
          "data 5": {
            "bl_idname": "SvStringsSocket",
            "name": "data 5"
          },
          "data 6": {
            "bl_idname": "SvStringsSocket",
            "name": "data 6"
          }
        },
        "outputs": {
          "data_001": {
            "bl_idname": "SvVerticesSocket",
            "name": "data"
          }
        },
        "bl_idname": "ListJoinNode"
      },
      "Line": {
        "attributes": {
          "location": [
            3180.0,
            -380.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "direction": "OP",
          "size": 7.099999904632568,
          "v3_dir": [
            0.0,
            1.0,
            0.0
          ],
          "num": 6
        },
        "inputs": {
          "Num": {
            "bl_idname": "SvStringsSocket",
            "name": "Num",
            "properties": {
              "prop_name": "num"
            }
          },
          "Steps": {
            "bl_idname": "SvStringsSocket",
            "name": "Steps",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "step"
            }
          },
          "Size": {
            "bl_idname": "SvStringsSocket",
            "name": "Size",
            "properties": {
              "prop_name": "size"
            }
          },
          "Origin": {
            "bl_idname": "SvVerticesSocket",
            "name": "Origin",
            "properties": {
              "prop_name": "v3_origin"
            }
          },
          "Direction": {
            "bl_idname": "SvVerticesSocket",
            "name": "Direction",
            "properties": {
              "prop_name": "v3_dir"
            }
          }
        },
        "outputs": {
          "Verts": {
            "bl_idname": "SvVerticesSocket",
            "name": "Verts"
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges"
          }
        },
        "bl_idname": "SvLineNodeMK4"
      },
      "Move": {
        "attributes": {
          "location": [
            3360.0,
            -380.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "movement_vectors": [
            1.0,
            0.0,
            0.0
          ]
        },
        "inputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices"
          },
          "Movement Vectors": {
            "bl_idname": "SvVerticesSocket",
            "name": "Movement Vectors",
            "properties": {
              "prop_name": "movement_vectors",
              "expanded": true
            }
          },
          "Strength": {
            "bl_idname": "SvStringsSocket",
            "name": "Strength",
            "properties": {
              "prop_name": "strength"
            }
          }
        },
        "outputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices"
          }
        },
        "bl_idname": "SvMoveNodeMk3"
      },
      "Matrix Apply (verts)": {
        "attributes": {
          "location": [
            3360.0,
            -240.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "inputs": {
          "Vectors": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vectors"
          },
          "Matrixes": {
            "bl_idname": "SvMatrixSocket",
            "name": "Matrixes"
          }
        },
        "outputs": {
          "Vectors": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vectors"
          }
        },
        "bl_idname": "MatrixApplyNode"
      },
      "UV Connection": {
        "attributes": {
          "location": [
            3560.0,
            -160.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.001"
          }
        },
        "properties": {
          "polygons": "Edges"
        },
        "inputs": {
          "vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "vertices"
          },
          "vertices 1": {
            "bl_idname": "SvVerticesSocket",
            "name": "vertices 1"
          },
          "vertices 2": {
            "bl_idname": "SvVerticesSocket",
            "name": "vertices 2"
          },
          "vertices 3": {
            "bl_idname": "SvVerticesSocket",
            "name": "vertices 3"
          }
        },
        "outputs": {
          "vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "vertices"
          },
          "data": {
            "bl_idname": "SvStringsSocket",
            "name": "data"
          }
        },
        "bl_idname": "LineConnectNodeMK2"
      },
      "Mesh Join": {
        "attributes": {
          "location": [
            3720.0,
            -160.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.001"
          }
        },
        "inputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices",
            "properties": {
              "is_mandatory": true,
              "default_mode": "NONE"
            }
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges",
            "properties": {
              "nesting_level": 3
            }
          },
          "Polygons": {
            "bl_idname": "SvStringsSocket",
            "name": "Polygons",
            "properties": {
              "nesting_level": 3
            }
          }
        },
        "outputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices"
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges"
          },
          "Polygons": {
            "bl_idname": "SvStringsSocket",
            "name": "Polygons"
          }
        },
        "bl_idname": "SvMeshJoinNodeMk2"
      },
      "Viewer Draw.004": {
        "attributes": {
          "location": [
            3880.0,
            -160.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.001"
          }
        },
        "properties": {
          "display_verts": false,
          "edge_color": [
            0.9000002145767212,
            0.1491088569164276,
            0.19998112320899963,
            1.0
          ]
        },
        "inputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices",
            "properties": {
              "custom_draw": "draw_property_socket"
            }
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges",
            "properties": {
              "custom_draw": "draw_property_socket"
            }
          },
          "Polygons": {
            "bl_idname": "SvStringsSocket",
            "name": "Polygons"
          },
          "Matrix": {
            "bl_idname": "SvMatrixSocket",
            "name": "Matrix"
          },
          "Vector Color": {
            "bl_idname": "SvColorSocket",
            "name": "Vector Color",
            "properties": {
              "custom_draw": "draw_color_socket",
              "prop_name": "vector_color"
            }
          },
          "Edge Color": {
            "bl_idname": "SvColorSocket",
            "name": "Edge Color",
            "properties": {
              "custom_draw": "draw_color_socket",
              "prop_name": "edge_color"
            }
          },
          "Polygon Color": {
            "bl_idname": "SvColorSocket",
            "name": "Polygon Color",
            "properties": {
              "custom_draw": "draw_color_socket",
              "prop_name": "polygon_color"
            }
          },
          "attrs": {
            "bl_idname": "SvStringsSocket",
            "name": "attrs",
            "attributes": {
              "hide": true
            },
            "properties": {
              "quick_link_to_node": "SvVDAttrsNodeMk2"
            }
          }
        },
        "bl_idname": "SvViewerDrawMk4"
      },
      "Scalar Math.004": {
        "attributes": {
          "location": [
            2520.0,
            -320.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "current_op": "ADD",
          "y_": 1.5707963705062866
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          },
          "y": {
            "bl_idname": "SvStringsSocket",
            "name": "y",
            "properties": {
              "prop_name": "y_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Scalar Math.001": {
        "attributes": {
          "location": [
            2680.0,
            -320.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "current_op": "COSINE"
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Scalar Math.002": {
        "attributes": {
          "location": [
            2840.0,
            -320.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "current_op": "DIV",
          "y_": 1.399999976158142
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          },
          "y": {
            "bl_idname": "SvStringsSocket",
            "name": "y",
            "properties": {
              "prop_name": "y_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Vector In.001": {
        "attributes": {
          "location": [
            3000.0,
            -320.0
          ],
          "width": 100.0,
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "inputs": {
          "X": {
            "bl_idname": "SvStringsSocket",
            "name": "X",
            "properties": {
              "prop_name": "x_"
            }
          },
          "Y": {
            "bl_idname": "SvStringsSocket",
            "name": "Y",
            "properties": {
              "prop_name": "y_"
            }
          },
          "Z": {
            "bl_idname": "SvStringsSocket",
            "name": "Z",
            "properties": {
              "prop_name": "z_"
            }
          }
        },
        "outputs": {
          "Vectors": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vectors"
          }
        },
        "bl_idname": "GenVectorsNode"
      },
      "Scalar Math.003": {
        "attributes": {
          "location": [
            2840.0,
            -180.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "current_op": "DIV",
          "y_": 1.399999976158142
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          },
          "y": {
            "bl_idname": "SvStringsSocket",
            "name": "y",
            "properties": {
              "prop_name": "y_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Scalar Math": {
        "attributes": {
          "location": [
            2680.0,
            -200.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "current_op": "SINE"
        },
        "inputs": {
          "x": {
            "bl_idname": "SvStringsSocket",
            "name": "x",
            "properties": {
              "prop_name": "x_"
            }
          }
        },
        "outputs": {
          "Out": {
            "bl_idname": "SvStringsSocket",
            "name": "Out"
          }
        },
        "bl_idname": "SvScalarMathNodeMK4"
      },
      "Vector In.002": {
        "attributes": {
          "location": [
            3000.0,
            -40.0
          ],
          "width": 100.0,
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "inputs": {
          "X": {
            "bl_idname": "SvStringsSocket",
            "name": "X",
            "properties": {
              "prop_name": "x_"
            }
          },
          "Y": {
            "bl_idname": "SvStringsSocket",
            "name": "Y",
            "properties": {
              "prop_name": "y_"
            }
          },
          "Z": {
            "bl_idname": "SvStringsSocket",
            "name": "Z",
            "properties": {
              "prop_name": "z_"
            }
          }
        },
        "outputs": {
          "Vectors": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vectors"
          }
        },
        "bl_idname": "GenVectorsNode"
      },
      "Vector In": {
        "attributes": {
          "location": [
            3000.0,
            -180.0
          ],
          "width": 100.0,
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "inputs": {
          "X": {
            "bl_idname": "SvStringsSocket",
            "name": "X",
            "properties": {
              "prop_name": "x_"
            }
          },
          "Y": {
            "bl_idname": "SvStringsSocket",
            "name": "Y",
            "properties": {
              "prop_name": "y_"
            }
          },
          "Z": {
            "bl_idname": "SvStringsSocket",
            "name": "Z",
            "properties": {
              "prop_name": "z_"
            }
          }
        },
        "outputs": {
          "Vectors": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vectors"
          }
        },
        "bl_idname": "GenVectorsNode"
      },
      "Number Range.001": {
        "attributes": {
          "location": [
            2360.0,
            -320.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.002"
          }
        },
        "properties": {
          "range_mode": "RANGE_COUNT",
          "current_mode": "RANGE_COUNT",
          "stop_float": 15.707962989807129,
          "count_": 100
        },
        "inputs": {
          "Start": {
            "bl_idname": "SvStringsSocket",
            "name": "Start",
            "properties": {
              "prop_name": "start_float"
            }
          },
          "Step": {
            "bl_idname": "SvStringsSocket",
            "name": "Step",
            "properties": {
              "prop_name": "stop_float",
              "label": "stop"
            }
          },
          "Stop": {
            "bl_idname": "SvStringsSocket",
            "name": "Stop",
            "properties": {
              "prop_name": "count_",
              "label": "count"
            }
          }
        },
        "outputs": {
          "Range": {
            "bl_idname": "SvStringsSocket",
            "name": "Range"
          }
        },
        "bl_idname": "SvGenNumberRange"
      },
      "Cubic Spline": {
        "attributes": {
          "location": [
            4590.0,
            -170.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame"
          }
        },
        "inputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices"
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          }
        },
        "bl_idname": "SvExCubicSplineNode"
      },
      "Transform Mesh.001": {
        "attributes": {
          "location": [
            4430.0,
            -170.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame"
          }
        },
        "properties": {
          "transform_mode": "Scale",
          "direction_mode": "Custom",
          "factor": 0.5581600069999695,
          "origin_mode": "Custom",
          "direction": [
            0.5581600069999695,
            0.5581600069999695,
            0.25600001215934753
          ]
        },
        "inputs": {
          "Verts": {
            "bl_idname": "SvVerticesSocket",
            "name": "Verts"
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges"
          },
          "Faces": {
            "bl_idname": "SvStringsSocket",
            "name": "Faces"
          },
          "Mask": {
            "bl_idname": "SvStringsSocket",
            "name": "Mask",
            "properties": {
              "custom_draw": "draw_mask_socket"
            }
          },
          "Origin": {
            "bl_idname": "SvVerticesSocket",
            "name": "Origin",
            "properties": {
              "prop_name": "origin"
            }
          },
          "Space direction": {
            "bl_idname": "SvVerticesSocket",
            "name": "Space direction",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "space_direction"
            }
          },
          "Mask index": {
            "bl_idname": "SvStringsSocket",
            "name": "Mask index",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "active_index"
            }
          },
          "Direction": {
            "bl_idname": "SvVerticesSocket",
            "name": "Direction",
            "properties": {
              "custom_draw": "draw_direction_socket",
              "prop_name": "direction",
              "expanded": true
            }
          },
          "Factor": {
            "bl_idname": "SvStringsSocket",
            "name": "Factor",
            "properties": {
              "prop_name": "factor"
            }
          }
        },
        "outputs": {
          "Verts": {
            "bl_idname": "SvVerticesSocket",
            "name": "Verts"
          }
        },
        "bl_idname": "SvTransformMesh"
      },
      "Transform Mesh": {
        "attributes": {
          "location": [
            4270.0,
            -170.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame"
          }
        },
        "properties": {
          "transform_mode": "Rotate",
          "mask_mode": "Index_mask"
        },
        "inputs": {
          "Verts": {
            "bl_idname": "SvVerticesSocket",
            "name": "Verts"
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges"
          },
          "Faces": {
            "bl_idname": "SvStringsSocket",
            "name": "Faces"
          },
          "Mask": {
            "bl_idname": "SvStringsSocket",
            "name": "Mask",
            "properties": {
              "custom_draw": "draw_mask_socket"
            }
          },
          "Origin": {
            "bl_idname": "SvVerticesSocket",
            "name": "Origin",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "origin"
            }
          },
          "Space direction": {
            "bl_idname": "SvVerticesSocket",
            "name": "Space direction",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "space_direction"
            }
          },
          "Mask index": {
            "bl_idname": "SvStringsSocket",
            "name": "Mask index",
            "properties": {
              "prop_name": "active_index"
            }
          },
          "Direction": {
            "bl_idname": "SvVerticesSocket",
            "name": "Direction",
            "properties": {
              "custom_draw": "draw_direction_socket",
              "prop_name": "direction"
            }
          },
          "Factor": {
            "bl_idname": "SvStringsSocket",
            "name": "Factor",
            "properties": {
              "prop_name": "factor"
            }
          }
        },
        "outputs": {
          "Verts": {
            "bl_idname": "SvVerticesSocket",
            "name": "Verts"
          }
        },
        "bl_idname": "SvTransformMesh"
      },
      "Viewer Draw": {
        "attributes": {
          "location": [
            4590.0,
            -330.0
          ],
          "hide": true,
          "parent": {
            "type": "NODE",
            "value": "Frame"
          }
        },
        "properties": {
          "activate": false
        },
        "inputs": {
          "Vertices": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vertices",
            "properties": {
              "custom_draw": "draw_property_socket"
            }
          },
          "Edges": {
            "bl_idname": "SvStringsSocket",
            "name": "Edges",
            "properties": {
              "custom_draw": "draw_property_socket"
            }
          },
          "Polygons": {
            "bl_idname": "SvStringsSocket",
            "name": "Polygons"
          },
          "Matrix": {
            "bl_idname": "SvMatrixSocket",
            "name": "Matrix"
          },
          "Vector Color": {
            "bl_idname": "SvColorSocket",
            "name": "Vector Color",
            "properties": {
              "custom_draw": "draw_color_socket",
              "prop_name": "vector_color"
            }
          },
          "Edge Color": {
            "bl_idname": "SvColorSocket",
            "name": "Edge Color",
            "properties": {
              "custom_draw": "draw_color_socket",
              "prop_name": "edge_color"
            }
          },
          "Polygon Color": {
            "bl_idname": "SvColorSocket",
            "name": "Polygon Color",
            "properties": {
              "custom_draw": "draw_color_socket",
              "prop_name": "polygon_color"
            }
          },
          "attrs": {
            "bl_idname": "SvStringsSocket",
            "name": "attrs",
            "attributes": {
              "hide": true
            },
            "properties": {
              "quick_link_to_node": "SvVDAttrsNodeMk2"
            }
          }
        },
        "bl_idname": "SvViewerDrawMk4"
      },
      "Apply Field to Curve": {
        "attributes": {
          "location": [
            4440.0,
            -740.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "properties": {
          "coefficient": 0.4599999785423279
        },
        "inputs": {
          "Field": {
            "bl_idname": "SvVectorFieldSocket",
            "name": "Field"
          },
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Coefficient": {
            "bl_idname": "SvStringsSocket",
            "name": "Coefficient",
            "properties": {
              "prop_name": "coefficient"
            }
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          }
        },
        "bl_idname": "SvExApplyFieldToCurveNode"
      },
      "Viewer Draw Surface": {
        "attributes": {
          "location": [
            4840.0,
            -740.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "properties": {
          "surface_color": [
            0.06271089613437653,
            0.4320383071899414,
            0.9500002264976501,
            0.4217956066131592
          ]
        },
        "inputs": {
          "Surface": {
            "bl_idname": "SvSurfaceSocket",
            "name": "Surface"
          },
          "ResolutionU": {
            "bl_idname": "SvStringsSocket",
            "name": "ResolutionU",
            "properties": {
              "prop_name": "resolution_u"
            }
          },
          "ResolutionV": {
            "bl_idname": "SvStringsSocket",
            "name": "ResolutionV",
            "properties": {
              "prop_name": "resolution_v"
            }
          }
        },
        "bl_idname": "SvSurfaceViewerDrawNode"
      },
      "Extrude Curve Along Vector": {
        "attributes": {
          "location": [
            4660.0,
            -740.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "inputs": {
          "Profile": {
            "bl_idname": "SvCurveSocket",
            "name": "Profile"
          },
          "Vector": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vector",
            "properties": {
              "use_prop": true,
              "prop": [
                0.0,
                0.0,
                7.0
              ],
              "expanded": true
            }
          }
        },
        "outputs": {
          "Surface": {
            "bl_idname": "SvSurfaceSocket",
            "name": "Surface"
          }
        },
        "bl_idname": "SvExExtrudeCurveVectorNode"
      },
      "Viewer Draw Curve": {
        "attributes": {
          "location": [
            4660.0,
            -920.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Resolution": {
            "bl_idname": "SvStringsSocket",
            "name": "Resolution",
            "properties": {
              "prop_name": "resolution"
            }
          }
        },
        "bl_idname": "SvCurveViewerDrawNode"
      },
      "Reroute.001": {
        "attributes": {
          "location": [
            4620.0,
            -820.0
          ],
          "width": 16.0,
          "color": [
            0.9466601610183716,
            0.9466601610183716,
            0.9466601610183716
          ],
          "use_custom_color": true,
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "inputs": {
          "Input": {
            "bl_idname": "NodeSocketColor",
            "name": "Input"
          }
        },
        "outputs": {
          "Output": {
            "bl_idname": "NodeSocketColor",
            "name": "Output"
          }
        },
        "bl_idname": "NodeReroute"
      },
      "Vector Field Formula": {
        "attributes": {
          "location": [
            4260.0,
            -960.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "properties": {
          "formula2": "x*x/20"
        },
        "inputs": {
          "Field": {
            "bl_idname": "SvVectorFieldSocket",
            "name": "Field"
          }
        },
        "outputs": {
          "Field": {
            "bl_idname": "SvVectorFieldSocket",
            "name": "Field"
          }
        },
        "bl_idname": "SvExVectorFieldFormulaNode"
      },
      "Ellipse (Curve)": {
        "attributes": {
          "location": [
            4240.0,
            -740.0
          ],
          "width": 160.0,
          "parent": {
            "type": "NODE",
            "value": "Frame.005"
          }
        },
        "properties": {
          "major_radius": 15.0,
          "minor_radius": 9.26200008392334
        },
        "inputs": {
          "Major Radius": {
            "bl_idname": "SvStringsSocket",
            "name": "Major Radius",
            "properties": {
              "prop_name": "major_radius"
            }
          },
          "Minor Radius": {
            "bl_idname": "SvStringsSocket",
            "name": "Minor Radius",
            "properties": {
              "prop_name": "minor_radius"
            }
          },
          "Matrix": {
            "bl_idname": "SvMatrixSocket",
            "name": "Matrix"
          }
        },
        "outputs": {
          "Ellipse": {
            "bl_idname": "SvCurveSocket",
            "name": "Ellipse"
          },
          "F1": {
            "bl_idname": "SvVerticesSocket",
            "name": "F1"
          },
          "F2": {
            "bl_idname": "SvVerticesSocket",
            "name": "F2"
          }
        },
        "bl_idname": "SvEllipseCurveNode"
      },
      "Viewer Draw Curve.002": {
        "attributes": {
          "location": [
            5890.0,
            -330.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.007"
          }
        },
        "properties": {
          "resolution": 500,
          "line_color": [
            1.0,
            0.3830009996891022,
            0.1251283884048462,
            1.0
          ],
          "line_width": 1
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Resolution": {
            "bl_idname": "SvStringsSocket",
            "name": "Resolution",
            "properties": {
              "prop_name": "resolution"
            }
          }
        },
        "bl_idname": "SvCurveViewerDrawNode"
      },
      "Offset Curve.001": {
        "attributes": {
          "location": [
            5730.0,
            -330.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.007"
          }
        },
        "properties": {
          "offset_type": "CURVE",
          "resolution": 200,
          "algorithm": "track"
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Offset": {
            "bl_idname": "SvStringsSocket",
            "name": "Offset",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "offset"
            }
          },
          "OffsetCurve": {
            "bl_idname": "SvCurveSocket",
            "name": "OffsetCurve"
          },
          "Vector": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vector",
            "attributes": {
              "hide": true
            },
            "properties": {
              "use_prop": true,
              "prop": [
                0.0,
                0.0,
                1.0
              ]
            }
          },
          "Resolution": {
            "bl_idname": "SvStringsSocket",
            "name": "Resolution",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "resolution"
            }
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          }
        },
        "bl_idname": "SvOffsetCurveMk2Node"
      },
      "List Match.001": {
        "attributes": {
          "location": [
            5550.0,
            -330.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.007"
          }
        },
        "properties": {
          "level": 2
        },
        "inputs": {
          "Data 0": {
            "bl_idname": "SvStringsSocket",
            "name": "Data 0"
          },
          "Data 1": {
            "bl_idname": "SvStringsSocket",
            "name": "Data 1"
          },
          "Data 2": {
            "bl_idname": "SvStringsSocket",
            "name": "Data 2"
          }
        },
        "outputs": {
          "Data 0_001": {
            "bl_idname": "SvCurveSocket",
            "name": "Data 0"
          },
          "Data 1_001": {
            "bl_idname": "SvCurveSocket",
            "name": "Data 1"
          },
          "Data 2": {
            "bl_idname": "SvStringsSocket",
            "name": "Data 2"
          }
        },
        "bl_idname": "ListMatchNode"
      },
      "Offset Curve": {
        "attributes": {
          "location": [
            5370.0,
            -570.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.007"
          }
        },
        "properties": {
          "offset": 0.5,
          "mode": "Y",
          "algorithm": "track"
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Offset": {
            "bl_idname": "SvStringsSocket",
            "name": "Offset",
            "properties": {
              "prop_name": "offset"
            }
          },
          "OffsetCurve": {
            "bl_idname": "SvCurveSocket",
            "name": "OffsetCurve",
            "attributes": {
              "hide": true
            }
          },
          "Vector": {
            "bl_idname": "SvVerticesSocket",
            "name": "Vector",
            "attributes": {
              "hide": true
            },
            "properties": {
              "use_prop": true,
              "prop": [
                0.10000000149011612,
                0.0,
                0.0
              ]
            }
          },
          "Resolution": {
            "bl_idname": "SvStringsSocket",
            "name": "Resolution",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "resolution"
            }
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          }
        },
        "bl_idname": "SvOffsetCurveMk2Node"
      },
      "Curve on Surface": {
        "attributes": {
          "location": [
            5190.0,
            -330.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.007"
          }
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Surface": {
            "bl_idname": "SvSurfaceSocket",
            "name": "Surface"
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          }
        },
        "bl_idname": "SvExCurveOnSurfaceNode"
      },
      "Viewer Draw Curve.003": {
        "attributes": {
          "location": [
            5830.0,
            -930.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.006"
          }
        },
        "properties": {
          "line_color": [
            0.2634141743183136,
            1.0,
            0.24323217570781708,
            1.0
          ],
          "line_width": 1
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Resolution": {
            "bl_idname": "SvStringsSocket",
            "name": "Resolution",
            "properties": {
              "prop_name": "resolution"
            }
          }
        },
        "bl_idname": "SvCurveViewerDrawNode"
      },
      "Offset Curve on Surface": {
        "attributes": {
          "location": [
            5510.0,
            -890.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.006"
          }
        },
        "properties": {
          "offset": 0.5
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Surface": {
            "bl_idname": "SvSurfaceSocket",
            "name": "Surface"
          },
          "Offset": {
            "bl_idname": "SvStringsSocket",
            "name": "Offset",
            "properties": {
              "prop_name": "offset"
            }
          },
          "OffsetCurve": {
            "bl_idname": "SvCurveSocket",
            "name": "OffsetCurve",
            "attributes": {
              "hide": true
            }
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "UVCurve": {
            "bl_idname": "SvCurveSocket",
            "name": "UVCurve"
          }
        },
        "bl_idname": "SvCurveOffsetOnSurfaceNode"
      },
      "List Decompose": {
        "attributes": {
          "location": [
            5670.0,
            -890.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.006"
          }
        },
        "properties": {
          "multi_socket_type": "SvCurveSocket",
          "count": 2,
          "level": 2
        },
        "inputs": {
          "data": {
            "bl_idname": "SvStringsSocket",
            "name": "data"
          }
        },
        "outputs": {
          "data[0]_001": {
            "bl_idname": "SvCurveSocket",
            "name": "data[0]"
          },
          "data[1]": {
            "bl_idname": "SvCurveSocket",
            "name": "data[1]"
          }
        },
        "bl_idname": "SvListDecomposeNode"
      },
      "List Split": {
        "attributes": {
          "location": [
            5330.0,
            -1070.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.006"
          }
        },
        "inputs": {
          "Data": {
            "bl_idname": "SvStringsSocket",
            "name": "Data"
          },
          "Split": {
            "bl_idname": "SvStringsSocket",
            "name": "Split",
            "properties": {
              "prop_name": "split"
            }
          }
        },
        "outputs": {
          "Split": {
            "bl_idname": "SvStringsSocket",
            "name": "Split"
          }
        },
        "bl_idname": "SvListSplitNode"
      },
      "Viewer Draw Curve.001": {
        "attributes": {
          "location": [
            5830.0,
            -890.0
          ],
          "hide": true,
          "parent": {
            "type": "NODE",
            "value": "Frame.006"
          }
        },
        "properties": {
          "line_color": [
            0.2634139955043793,
            1.0,
            0.24323199689388275,
            1.0
          ],
          "line_width": 1
        },
        "inputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve"
          },
          "Resolution": {
            "bl_idname": "SvStringsSocket",
            "name": "Resolution",
            "properties": {
              "prop_name": "resolution"
            }
          }
        },
        "bl_idname": "SvCurveViewerDrawNode"
      },
      "Viewer Draw Surface.001": {
        "attributes": {
          "location": [
            6570.0,
            -550.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.008"
          }
        },
        "properties": {
          "resolution_u": 20,
          "resolution_v": 800,
          "surface_color": [
            1.0,
            0.9103051424026489,
            0.9600636959075928,
            1.0
          ]
        },
        "inputs": {
          "Surface": {
            "bl_idname": "SvSurfaceSocket",
            "name": "Surface"
          },
          "ResolutionU": {
            "bl_idname": "SvStringsSocket",
            "name": "ResolutionU",
            "properties": {
              "prop_name": "resolution_u"
            }
          },
          "ResolutionV": {
            "bl_idname": "SvStringsSocket",
            "name": "ResolutionV",
            "properties": {
              "prop_name": "resolution_v"
            }
          }
        },
        "bl_idname": "SvSurfaceViewerDrawNode"
      },
      "Surface from Curves": {
        "attributes": {
          "location": [
            6390.0,
            -550.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.008"
          }
        },
        "properties": {
          "is_cyclic": true
        },
        "inputs": {
          "Curves": {
            "bl_idname": "SvCurveSocket",
            "name": "Curves"
          },
          "Degree": {
            "bl_idname": "SvStringsSocket",
            "name": "Degree",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "degree"
            }
          },
          "Epsilon": {
            "bl_idname": "SvStringsSocket",
            "name": "Epsilon",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "epsilon"
            }
          },
          "Smooth": {
            "bl_idname": "SvStringsSocket",
            "name": "Smooth",
            "attributes": {
              "hide": true
            },
            "properties": {
              "prop_name": "smooth"
            }
          }
        },
        "outputs": {
          "Surface": {
            "bl_idname": "SvSurfaceSocket",
            "name": "Surface"
          }
        },
        "bl_idname": "SvInterpolatingSurfaceNode"
      },
      "List Zip": {
        "attributes": {
          "location": [
            6210.0,
            -550.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.008"
          }
        },
        "properties": {
          "unwrap": true
        },
        "inputs": {
          "data": {
            "bl_idname": "SvStringsSocket",
            "name": "data"
          },
          "data 1": {
            "bl_idname": "SvStringsSocket",
            "name": "data 1"
          },
          "data 2": {
            "bl_idname": "SvStringsSocket",
            "name": "data 2"
          },
          "data 3": {
            "bl_idname": "SvStringsSocket",
            "name": "data 3"
          }
        },
        "outputs": {
          "data_001": {
            "bl_idname": "SvCurveSocket",
            "name": "data"
          }
        },
        "bl_idname": "ZipNode"
      },
      "List Input": {
        "attributes": {
          "location": [
            1420.0,
            -700.0
          ],
          "label": "thickness",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "int_": 2,
          "mode": "float_list",
          "float_list": [
            0.20000000298023224,
            -0.30000001192092896,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0
          ],
          "draw_3dpanel": true
        },
        "outputs": {
          "List": {
            "bl_idname": "SvStringsSocket",
            "name": "List"
          }
        },
        "bl_idname": "SvListInputNode"
      },
      "A Number.002": {
        "attributes": {
          "location": [
            1420.0,
            -600.0
          ],
          "label": "height",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "float_": 7.0,
          "draw_3dpanel": true
        },
        "inputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Float",
            "properties": {
              "prop_name": "float_"
            }
          }
        },
        "outputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Float",
            "properties": {
              "custom_draw": "mode_custom_draw"
            }
          }
        },
        "bl_idname": "SvNumberNode"
      },
      "List Input.001": {
        "attributes": {
          "location": [
            1420.0,
            -860.0
          ],
          "label": "extrusions",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "int_": 6,
          "mode": "float_list",
          "float_list": [
            0.10000000149011612,
            0.20000000298023224,
            0.30000001192092896,
            0.5,
            0.800000011920929,
            1.5,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0,
            0.0
          ],
          "draw_3dpanel": true
        },
        "outputs": {
          "List": {
            "bl_idname": "SvStringsSocket",
            "name": "List"
          }
        },
        "bl_idname": "SvListInputNode"
      },
      "A Number": {
        "attributes": {
          "location": [
            1420.0,
            -1200.0
          ],
          "label": "ResolutionV",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "int_": 800,
          "selected_mode": "int",
          "draw_3dpanel": true
        },
        "inputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Int",
            "properties": {
              "prop_name": "int_"
            }
          }
        },
        "outputs": {
          "Int": {
            "bl_idname": "SvStringsSocket",
            "name": "Int",
            "properties": {
              "custom_draw": "mode_custom_draw"
            }
          }
        },
        "bl_idname": "SvNumberNode"
      },
      "A Number.001": {
        "attributes": {
          "location": [
            1420.0,
            -1100.0
          ],
          "label": "ResolutionU",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "int_": 20,
          "selected_mode": "int",
          "draw_3dpanel": true
        },
        "inputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Int",
            "properties": {
              "prop_name": "int_"
            }
          }
        },
        "outputs": {
          "Int": {
            "bl_idname": "SvStringsSocket",
            "name": "Int",
            "properties": {
              "custom_draw": "mode_custom_draw"
            }
          }
        },
        "bl_idname": "SvNumberNode"
      },
      "A Number.004": {
        "attributes": {
          "location": [
            1420.0,
            -500.0
          ],
          "label": "till 2*pi domain",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "float_": 4.5,
          "int_": 100
        },
        "inputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Float",
            "properties": {
              "prop_name": "float_"
            }
          }
        },
        "outputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Float",
            "properties": {
              "custom_draw": "mode_custom_draw"
            }
          }
        },
        "bl_idname": "SvNumberNode"
      },
      "A Number.005": {
        "attributes": {
          "location": [
            1420.0,
            -1300.0
          ],
          "label": "divider waves height",
          "parent": {
            "type": "NODE",
            "value": "Frame.004"
          }
        },
        "properties": {
          "float_": 1.399999976158142,
          "draw_3dpanel": true
        },
        "inputs": {
          "Float": {
            "bl_idname": "SvStringsSocket",
            "name": "Float",
            "properties": {
              "prop_name": "float_"
            }
          }
        },
        "outputs": {
          "Float_001": {
            "bl_idname": "SvStringsSocket",
            "name": "Float",
            "properties": {
              "custom_draw": "mode_custom_draw"
            }
          }
        },
        "bl_idname": "SvNumberNode"
      },
      "Curve Formula": {
        "attributes": {
          "location": [
            5370.0,
            -330.0
          ],
          "parent": {
            "type": "NODE",
            "value": "Frame.007"
          }
        },
        "properties": {
          "formula1": "t",
          "formula3": "0",
          "t_max": 43.9822998046875,
          "formula2": "cos(t*2)/4"
        },
        "inputs": {
          "TMin": {
            "bl_idname": "SvStringsSocket",
            "name": "TMin",
            "properties": {
              "prop_name": "t_min"
            }
          },
          "TMax": {
            "bl_idname": "SvStringsSocket",
            "name": "TMax",
            "properties": {
              "prop_name": "t_max"
            }
          }
        },
        "outputs": {
          "Curve": {
            "bl_idname": "SvCurveSocket",
            "name": "Curve",
            "properties": {
              "use_wrap": true
            }
          }
        },
        "bl_idname": "SvExCurveFormulaNode"
      }
    },
    "links": [
      {
        "from_node": "A Number.004",
        "from_socket": "Float",
        "to_node": "Scalar Math.007",
        "to_socket": "x"
      },
      {
        "from_node": "Scalar Math.007",
        "from_socket": "Out",
        "to_node": "Scalar Math.006",
        "to_socket": "x"
      },
      {
        "from_node": "A Number.003",
        "from_socket": "Int",
        "to_node": "Formula",
        "to_socket": "x"
      },
      {
        "from_node": "Scalar Math.006",
        "from_socket": "Out",
        "to_node": "Formula",
        "to_socket": "y"
      },
      {
        "from_node": "Formula",
        "from_socket": "Result",
        "to_node": "Reroute",
        "to_socket": "Input"
      },
      {
        "from_node": "Vector In.002",
        "from_socket": "Vectors",
        "to_node": "List Join",
        "to_socket": "data"
      },
      {
        "from_node": "Vector In",
        "from_socket": "Vectors",
        "to_node": "List Join",
        "to_socket": "data 1"
      },
      {
        "from_node": "Vector In.001",
        "from_socket": "Vectors",
        "to_node": "List Join",
        "to_socket": "data 2"
      },
      {
        "from_node": "Vector In",
        "from_socket": "Vectors",
        "to_node": "List Join",
        "to_socket": "data 3"
      },
      {
        "from_node": "Vector In.001",
        "from_socket": "Vectors",
        "to_node": "List Join",
        "to_socket": "data 4"
      },
      {
        "from_node": "Vector In.002",
        "from_socket": "Vectors",
        "to_node": "List Join",
        "to_socket": "data 5"
      },
      {
        "from_node": "A Number.002",
        "from_socket": "Float",
        "to_node": "Line",
        "to_socket": "Size"
      },
      {
        "from_node": "Line",
        "from_socket": "Verts",
        "to_node": "Move",
        "to_socket": "Vertices"
      },
      {
        "from_node": "Reroute",
        "from_socket": "Output",
        "to_node": "Move",
        "to_socket": "Strength"
      },
      {
        "from_node": "List Join",
        "from_socket": "data_001",
        "to_node": "Matrix Apply (verts)",
        "to_socket": "Vectors"
      },
      {
        "from_node": "Line",
        "from_socket": "Verts",
        "to_node": "Matrix Apply (verts)",
        "to_socket": "Matrixes"
      },
      {
        "from_node": "Matrix Apply (verts)",
        "from_socket": "Vectors",
        "to_node": "UV Connection",
        "to_socket": "vertices"
      },
      {
        "from_node": "Line",
        "from_socket": "Verts",
        "to_node": "UV Connection",
        "to_socket": "vertices 1"
      },
      {
        "from_node": "Move",
        "from_socket": "Vertices",
        "to_node": "UV Connection",
        "to_socket": "vertices 2"
      },
      {
        "from_node": "UV Connection",
        "from_socket": "vertices",
        "to_node": "Mesh Join",
        "to_socket": "Vertices"
      },
      {
        "from_node": "UV Connection",
        "from_socket": "data",
        "to_node": "Mesh Join",
        "to_socket": "Edges"
      },
      {
        "from_node": "Mesh Join",
        "from_socket": "Vertices",
        "to_node": "Viewer Draw.004",
        "to_socket": "Vertices"
      },
      {
        "from_node": "Mesh Join",
        "from_socket": "Edges",
        "to_node": "Viewer Draw.004",
        "to_socket": "Edges"
      },
      {
        "from_node": "Number Range.001",
        "from_socket": "Range",
        "to_node": "Scalar Math.004",
        "to_socket": "x"
      },
      {
        "from_node": "Scalar Math.004",
        "from_socket": "Out",
        "to_node": "Scalar Math.001",
        "to_socket": "x"
      },
      {
        "from_node": "Scalar Math.001",
        "from_socket": "Out",
        "to_node": "Scalar Math.002",
        "to_socket": "x"
      },
      {
        "from_node": "A Number.005",
        "from_socket": "Float_001",
        "to_node": "Scalar Math.002",
        "to_socket": "y"
      },
      {
        "from_node": "Number Range.001",
        "from_socket": "Range",
        "to_node": "Vector In.001",
        "to_socket": "X"
      },
      {
        "from_node": "Scalar Math.002",
        "from_socket": "Out",
        "to_node": "Vector In.001",
        "to_socket": "Y"
      },
      {
        "from_node": "Scalar Math",
        "from_socket": "Out",
        "to_node": "Scalar Math.003",
        "to_socket": "x"
      },
      {
        "from_node": "A Number.005",
        "from_socket": "Float_001",
        "to_node": "Scalar Math.003",
        "to_socket": "y"
      },
      {
        "from_node": "Number Range.001",
        "from_socket": "Range",
        "to_node": "Scalar Math",
        "to_socket": "x"
      },
      {
        "from_node": "Number Range.001",
        "from_socket": "Range",
        "to_node": "Vector In.002",
        "to_socket": "X"
      },
      {
        "from_node": "Number Range.001",
        "from_socket": "Range",
        "to_node": "Vector In",
        "to_socket": "X"
      },
      {
        "from_node": "Scalar Math.003",
        "from_socket": "Out",
        "to_node": "Vector In",
        "to_socket": "Y"
      },
      {
        "from_node": "Reroute",
        "from_socket": "Output",
        "to_node": "Number Range.001",
        "to_socket": "Step"
      },
      {
        "from_node": "A Number.003",
        "from_socket": "Int",
        "to_node": "Number Range.001",
        "to_socket": "Stop"
      },
      {
        "from_node": "Transform Mesh.001",
        "from_socket": "Verts",
        "to_node": "Cubic Spline",
        "to_socket": "Vertices"
      },
      {
        "from_node": "Transform Mesh",
        "from_socket": "Verts",
        "to_node": "Transform Mesh.001",
        "to_socket": "Verts"
      },
      {
        "from_node": "Matrix Apply (verts)",
        "from_socket": "Vectors",
        "to_node": "Transform Mesh",
        "to_socket": "Verts"
      },
      {
        "from_node": "Transform Mesh.001",
        "from_socket": "Verts",
        "to_node": "Viewer Draw",
        "to_socket": "Vertices"
      },
      {
        "from_node": "Vector Field Formula",
        "from_socket": "Field",
        "to_node": "Apply Field to Curve",
        "to_socket": "Field"
      },
      {
        "from_node": "Ellipse (Curve)",
        "from_socket": "Ellipse",
        "to_node": "Apply Field to Curve",
        "to_socket": "Curve"
      },
      {
        "from_node": "Extrude Curve Along Vector",
        "from_socket": "Surface",
        "to_node": "Viewer Draw Surface",
        "to_socket": "Surface"
      },
      {
        "from_node": "Reroute.001",
        "from_socket": "Output",
        "to_node": "Extrude Curve Along Vector",
        "to_socket": "Profile"
      },
      {
        "from_node": "Reroute.001",
        "from_socket": "Output",
        "to_node": "Viewer Draw Curve",
        "to_socket": "Curve"
      },
      {
        "from_node": "Apply Field to Curve",
        "from_socket": "Curve",
        "to_node": "Reroute.001",
        "to_socket": "Input"
      },
      {
        "from_node": "Offset Curve.001",
        "from_socket": "Curve",
        "to_node": "Viewer Draw Curve.002",
        "to_socket": "Curve"
      },
      {
        "from_node": "List Match.001",
        "from_socket": "Data 1_001",
        "to_node": "Offset Curve.001",
        "to_socket": "Curve"
      },
      {
        "from_node": "List Match.001",
        "from_socket": "Data 0_001",
        "to_node": "Offset Curve.001",
        "to_socket": "OffsetCurve"
      },
      {
        "from_node": "Curve Formula",
        "from_socket": "Curve",
        "to_node": "List Match.001",
        "to_socket": "Data 0"
      },
      {
        "from_node": "Offset Curve",
        "from_socket": "Curve",
        "to_node": "List Match.001",
        "to_socket": "Data 1"
      },
      {
        "from_node": "Curve on Surface",
        "from_socket": "Curve",
        "to_node": "Offset Curve",
        "to_socket": "Curve"
      },
      {
        "from_node": "List Input.001",
        "from_socket": "List",
        "to_node": "Offset Curve",
        "to_socket": "Offset"
      },
      {
        "from_node": "Cubic Spline",
        "from_socket": "Curve",
        "to_node": "Curve on Surface",
        "to_socket": "Curve"
      },
      {
        "from_node": "Extrude Curve Along Vector",
        "from_socket": "Surface",
        "to_node": "Curve on Surface",
        "to_socket": "Surface"
      },
      {
        "from_node": "List Decompose",
        "from_socket": "data[1]",
        "to_node": "Viewer Draw Curve.003",
        "to_socket": "Curve"
      },
      {
        "from_node": "Cubic Spline",
        "from_socket": "Curve",
        "to_node": "Offset Curve on Surface",
        "to_socket": "Curve"
      },
      {
        "from_node": "Extrude Curve Along Vector",
        "from_socket": "Surface",
        "to_node": "Offset Curve on Surface",
        "to_socket": "Surface"
      },
      {
        "from_node": "List Split",
        "from_socket": "Split",
        "to_node": "Offset Curve on Surface",
        "to_socket": "Offset"
      },
      {
        "from_node": "Offset Curve on Surface",
        "from_socket": "Curve",
        "to_node": "List Decompose",
        "to_socket": "data"
      },
      {
        "from_node": "List Input",
        "from_socket": "List",
        "to_node": "List Split",
        "to_socket": "Data"
      },
      {
        "from_node": "List Decompose",
        "from_socket": "data[0]_001",
        "to_node": "Viewer Draw Curve.001",
        "to_socket": "Curve"
      },
      {
        "from_node": "Surface from Curves",
        "from_socket": "Surface",
        "to_node": "Viewer Draw Surface.001",
        "to_socket": "Surface"
      },
      {
        "from_node": "A Number.001",
        "from_socket": "Int",
        "to_node": "Viewer Draw Surface.001",
        "to_socket": "ResolutionU"
      },
      {
        "from_node": "A Number",
        "from_socket": "Int",
        "to_node": "Viewer Draw Surface.001",
        "to_socket": "ResolutionV"
      },
      {
        "from_node": "List Zip",
        "from_socket": "data_001",
        "to_node": "Surface from Curves",
        "to_socket": "Curves"
      },
      {
        "from_node": "List Decompose",
        "from_socket": "data[0]_001",
        "to_node": "List Zip",
        "to_socket": "data"
      },
      {
        "from_node": "Offset Curve.001",
        "from_socket": "Curve",
        "to_node": "List Zip",
        "to_socket": "data 1"
      },
      {
        "from_node": "List Decompose",
        "from_socket": "data[1]",
        "to_node": "List Zip",
        "to_socket": "data 2"
      },
      {
        "from_node": "Reroute",
        "from_socket": "Output",
        "to_node": "Curve Formula",
        "to_socket": "TMax"
      }
    ]
  }
}