
{
  softwareVersion = {majorVersion = 8, minorVersion = 1, buildRevision = 94, revisionString = "f60773be42"}, 
  content = => 'Compo @8531c9690046b5e 
  {
    tools = 
    {
      => 'ParameterBank @4f326ff60fc7ffd8 
      {
        parameters = 
        {
          => 'Parameter(Percentage) @35f8a65f2fe88193 
          {
            targets = 
            {
              => 'ParameterLinkTarget @e493dc3798046402 
              {
                modifiers = 
                {
                  => 'FunctionLinkModifier({input = Percentage, output = ColorWithAlpha}) @6a0385084e62e645 
                  {
                    function = => 'QuadritoneColorFunction @13cb1588d163fba0 
                    {
                      preset = {libraryName = "Default", presetName = "Rainbow"}, 
                      beginColor = {red = 0.277096, green = 0.0137747, blue = 0.997044}, 
                      intermediateColor1 = {red = 0.163545, green = 0.975667, blue = 0.0159944}, 
                      intermediatePosition1 = 0.314333, 
                      intermediateColor2 = {red = 1., green = 0.380392, blue = 0.0431373}, 
                      intermediatePosition2 = 0.596666, 
                      endColor = {green = 0.6, blue = 0.686275}
                    }
                  }
                }, 
                target = {"data", -> @cbbcd639abb58f42, "color"}
              }
            }, 
            value = 0.886365361302
          }, 
          => 'Parameter(Position3d) @3887ab23aa4f0872 
          {
            activation = "inactive", 
            targets = 
            {
              => 'ParameterLinkTarget @fb4a4c4bf336d4c9 
              {
                activation = "activationRequested", 
                target = {"data", -> @313b78003976c92a, "position"}
              }
            }, 
            value = {x = -3.154109, y = 0.520551, z = -2.11102}
          }
        }
      }, 
      => 'AnimationBank @ad8dd9eb1e4c098b 
      {
        animations = 
        {
          => 'FunctionCue(Percentage) @99047910906aeada 
          {
            transport = {state = "playing", position = 2.72955214451, length = 3.}, 
            parameters = {launchMode = "restartWithActivation", out = {value = 3.}, looping = True}, 
            targets = 
            {
              => 'ParameterLinkTarget @55d9f46d0146a47d {target = {"data", -> @35f8a65f2fe88193, "value"}}
            }, 
            function = => 'ParametricScalarFunction({input = Seconds, output = Percentage}) @3329d289812df6d4 
            {
              shape = => 'LinearRampFunctionShape @41634fabb54223bf void, 
              parameters = {maximum = 1., period = 3.}
            }
          }
        }
      }, 
      => 'SharedElement(DirectionalMapGenerator) @27b99111008c2072 
      {
        expose = False, 
        content = => 'CustomShaderDirectionalMapGenerator @888ed28634550c56 
        {
          image = "float noise(vec3 p)
{
  vec3 fl = floor(p);
  return fract(sin(dot(vec3(12.9898, 78.233, 144.7272), fl))*43758.5354);
}

uniform vec3 topColor = ColorWithAlpha;
uniform vec3 bottomColor = ColorWithAlpha;
uniform float prout;
uniform float time = StandalonePlayableCueTransport;

vec4 main(in vec3 direction, in float scale)
{ 
  vec3 co = mix(topColor.rgb, bottomColor.rgb, direction.y);
  co += (.5+.5*prout)*smoothstep(.99-prout*.01, 1., noise(direction*300. + 0.5 * time));
  return vec4(co, 1.);
}", 
          dynamicVariables = 
          {
            => 'DynamicVariable(ColorWithAlpha) @dae2a759a2605677 
            {
              friendlyName = "Top Color", 
              parameters = 
              {
                {
                  key = => @13848449b5a9f576 "glslName", 
                  value = => @155cb9ea0c9833d1 => "topColor"
                }
              }, 
              value = {red = 0.0235294, green = 0.0588235, blue = 0.184314, alpha = 1.}
            }, 
            => 'DynamicVariable(ColorWithAlpha) @1082e0329f5b805a 
            {
              friendlyName = "Bottom Color", 
              parameters = 
              {
                {
                  key = => @6af740d2e6899a13 "glslName", 
                  value = => @68079e0ff2526a12 => "bottomColor"
                }
              }, 
              value = {red = 0.356863, green = 0., blue = 0.219608, alpha = 1.}
            }, 
            => 'DynamicVariable(Real) @fcaecab98686ade5 
            {
              friendlyName = "Prout", 
              parameters = 
              {
                {
                  key = => @4cbaa3659d581924 "glslName", 
                  value = => @90ac44b66f166cef => "prout"
                }
              }, 
              value = 0.
            }, 
            => 'DynamicVariable(StandalonePlayableCueTransport) @7d44120f2b864510 
            {
              friendlyName = "Time", 
              parameters = 
              {
                {
                  key = => @b6f04b3ca143ad39 "glslName", 
                  value = => @4310a0c79afad520 => "time"
                }
              }, 
              value = 
              {
                reset = 0, 
                play = 1, 
                pause = 0, 
                finalize = 0, 
                previous = 0, 
                next = 0, 
                playing = True, 
                state = "playing", 
                position = 5575.44551154, 
                length = +oo, 
                player = => @bb5502ceb1081fe3 
                {
                  loading = "active", 
                  activation = "active", 
                  label = "", 
                  colorLabel = {red = 0., green = 0., blue = 0.}, 
                  solo = False, 
                  editable = "active", 
                  preset = {libraryName = "", presetName = "", defaultPreset = {name = "Default"}}, 
                  parameters = 
                  {
                    launchMode = "restartWithActivation", 
                    resetAtPreload = True, 
                    automateTransport = True, 
                    in = {enabled = False, value = 0.}, 
                    out = {enabled = False, value = +oo}, 
                    speed = 1., 
                    playMode = "forward", 
                    looping = True, 
                    offset = 0.
                  }
                }
              }
            }
          }
        }
      }, 
      => 'SharedElement(LayerGenerator) @b4064f72ac5a65a8 
      {
        label = "SeaTexture", 
        expose = False, 
        content = => 'Compo @3c35eb319ec2ae30 
        {
          processor = 
          {
            resolution = {preset = "custom", width = 512, height = 512}, 
            quality = {automatic = False, pixelType = "clamped16Bits", enableMipMapping = True}
          }, 
          renderables = 
          {
            => 'Layer @a2ad9167a92308eb 
            {
              generator = => 'NoiseLayerGenerator @982d19dc8469c1a4 
              {
                resolution = {preset = "oneKSquare", width = 1024, height = 1024}, 
                gradient = => 'BitoneColorFunction @2b2d47b744a3adbd void, 
                function = => 'PerlinNoiseFunction @618bd99a62720ca6 void, 
                transport = 
                {
                  state = "playing", 
                  position = 5575.44551154, 
                  player = => @625b87985d4b6a9c {parameters = {launchMode = "restartWithActivation", out = {value = +oo}, looping = True}}
                }
              }, 
              renderer = => 'SingleLayerRenderer @f2ea3fac4bf930ba 
              {
                placement = => 'Parametric2dPlacement @387f65fa55df77dd 
                {
                  scale = => 'ScaleFactorPlacement2dScale @6e313324fd2e79b4 void
                }
              }
            }
          }
        }
      }, 
      => 'LinkBank @c9c434b254932102 
      {
        links = 
        {
          => @57e420b568c08f37 
          {
            source = => 'MidiRythmADSRDeviceLinkSource @8f6c1caf478e8cc4 void, 
            targets = 
            {
              => 'ParameterLinkTarget @10ac43cee625e34c {target = {"data", -> @fcaecab98686ade5, "value"}}
            }
          }
        }
      }
    }, 
    modifiers = 
    {
      => 'OverlayLayerModifier @640c4a34ba1708e7 
      {
        modifiers = 
        {
          => 'BrightnessContrastGammaLayerModifier @933590a01708a921 {brightness = -0.162, contrast = 0.135}, 
          => 'BlurLayerModifier @24e811fe5e332130 
          {
            shape = => 'GaussianBlurShape @e6bebe67598dd7eb void, 
            samples = 
            {
              number = 38, 
              distance = {width = 0.00208333333333, height = 0.0037037037037, ratio = 0.5625}, 
              downSampling = {width = "oneOverSixteen", height = "oneOverSixteen"}
            }, 
            additionalBrightness = 0.215
          }
        }, 
        blendingMode = "lighten"
      }, 
      => 'AntiAliasingLayerModifier @a52db92f7b939c3d 
      {
        preRasterize = True, 
        size = {width = 0.000520833333333, height = 0.000925925925926, ratio = 0.5625}
      }
    }, 
    processor = {resolution = {preset = "hd1080"}, alphaLayer = False}, 
    currentCamera = {"data", -> @b51b5e4d54718f2f}, 
    mainAnimation = => 'TimelineCue @1d8c0a79384a0927 
    {
      transport = {state = "finalized", position = 157., length = 157.}, 
      parameters = {launchMode = "restartWithActivation", out = {value = 157.}}, 
      elementTracks = 
      {
        {
          key = => @f83694dfebc93f0f {"data", -> @b035c11f4e3b2293}, 
          value = => @706dd2caba121552 
          {
            blocks = 
            {
              => @3e190837bc7236cb #1 
              {
                length = 155.585238095, 
                footage = 
                {
                  position = {out = {value = 155.585238095}, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @ca49a5042ba0a350 void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @9336c211a8b27b31 void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @a1e16f01d22d400e {"data", -> @617d8bf95e281637}, 
          value = => @ff3d4d029c9f6769 
          {
            blocks = 
            {
              => @c111e5b768112a50 #1 
              {
                autoLength = False, 
                length = 41.716360166, 
                footage = 
                {
                  position = {automateTransport = False, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @76e126ce5fe70a8b void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @56b3874a1c64a3da void
                      }
                    }
                  }
                }
              }, 
              => @efb2e7d259a4ab08 #1 
              {
                position = 110.216380351, 
                autoLength = False, 
                length = 46.8495568705, 
                footage = 
                {
                  position = {automateTransport = False, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @3ad5fb8fbf06c147 void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @194cbaea85f71f1e void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @4b78853c8d74e338 {"data", -> @16ef1e3abbba99e0}, 
          value = => @a0178b5f9c2005a2 
          {
            blocks = 
            {
              => @58c77455275e3865 #1 
              {
                length = 185.227565977, 
                footage = 
                {
                  position = 
                  {
                    launchMode = "restartWithActivation", 
                    out = {enabled = True, value = 184.726752969}, 
                    shape = => 'LinearRampFunctionShape @cedb1cd58e016e7c void
                  }, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @d467297fffc8cb67 void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @226ef12e91916046 void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @73e6586008415b9d {"data", -> @373a473885d26684}, 
          value = => @312771bbd8f7f374 
          {
            blocks = 
            {
              => @17cb1de988e4975f #1 
              {
                position = 149.505774883, 
                autoLength = False, 
                length = 8.42806287497, 
                footage = 
                {
                  position = {automateTransport = False, speed = 1.05303876062, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      enabled = True, 
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @6dab0f08d07528de void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @894d5d0f595345c1 void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @2951d63a0b86cd73 {"data", -> @9a171d42a033a056}, 
          value = => @d63d0a5d5472a8f6 
          {
            blocks = 
            {
              => @b3012cb71130a739 #1 
              {
                position = 58.1852949511, 
                autoLength = False, 
                length = 18.4947653061, 
                footage = 
                {
                  position = {automateTransport = False, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      enabled = True, 
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @5c82d86b5f7cbee0 void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @f3bce3889a645edb void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @caceda37ceef6b91 {"data", -> @b9a681f81f4ca5d8}, 
          value = => @488fafd91b6fc9f1 
          {
            blocks = 
            {
              => @8ccdf6a9238cc77e #1 
              {
                length = 174.5456, 
                footage = 
                {
                  position = {out = {value = 174.5456}, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @2e3a8433443e0347 void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @97e15da7ad88751c void
                      }
                    }
                  }, 
                  activation = {automateActivation = False, preload = {value = 0.}, unload = {value = 0.}}
                }
              }
            }
          }
        }, 
        {
          key = => @1a9dd3eab033fb3c {"data", -> @8ba353ced8ee5d40}, 
          value = => @ebbae971e9ab0062 
          {
            blocks = 
            {
              => @367788882a062525 #1 
              {
                position = 75.4798140938, 
                autoLength = False, 
                length = 19.1894479782, 
                footage = 
                {
                  position = {automateTransport = False, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      enabled = True, 
                      value = 
                      {
                        length = 1.32, 
                        shape = => 'LinearRampFunctionShape @bc566e727e9cb23c void
                      }
                    }, 
                    fadeOut = 
                    {
                      enabled = True, 
                      value = 
                      {
                        length = 2.22, 
                        shape = => 'LinearRampFunctionShape @f0de021ca62ada27 void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @f5b1b5bed97b2162 {"data", -> @105005ed6db3c479}, 
          value = => @a9ecdfa12ddb1af4 
          {
            blocks = 
            {
              => @186c479c63a8ea5f #1 
              {
                position = 92.5107205969, 
                autoLength = False, 
                length = 18.5359448455, 
                footage = 
                {
                  position = {automateTransport = False, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      enabled = True, 
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @8efc5912f70ed1e void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @3c5f91ec27246e61 void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @dff36ea18be8c8e7 {"data", -> @f1a599eb113e8cf9}, 
          value = => @3381650380e2a33e 
          {
            blocks = 
            {
              => @c9f860d3bfa0c245 #1 
              {
                position = 41.716360166, 
                length = 17.387359128, 
                footage = 
                {
                  position = {in = {enabled = True, value = 41.716360166}, out = {enabled = True, value = 59.103719294}, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @962e1a9020178134 void
                      }
                    }, 
                    fadeOut = 
                    {
                      enabled = True, 
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @d0789c7400731d3 void
                      }
                    }
                  }
                }
              }
            }
          }
        }, 
        {
          key = => @faadba0408ae34fe {"data", -> @ca3e3c4800e2e75}, 
          value = => @f7bdef0753f0c431 
          {
            blocks = 
            {
              => @79df5c9568f38ee8 #1 
              {
                position = 155.995783486, 
                autoLength = False, 
                length = 5., 
                footage = 
                {
                  position = {automateTransport = False, shape = -> nil}, 
                  intensity = 
                  {
                    fadeIn = 
                    {
                      enabled = True, 
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @88ca68e56ff848d3 void
                      }
                    }, 
                    fadeOut = 
                    {
                      value = 
                      {
                        shape = => 'LinearRampFunctionShape @f2e2c072daa893e2 void
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }, 
      parameterTracks = 
      {
        {
          key = => 'WeakPointer(Object) @d4f1dfb0a7dbb0cb {"data", -> @5ebb32a05e3d5358, "position", "y"}, 
          value = => 'ParameterTrack({input = Seconds, output = Meters}) @1f9ad8e391ea4a1a 
          {
            function = => 'KeyframeFunction({input = Seconds, output = Meters}) @86ce9b46a66428bd 
            {
              keyframes = 
              {
                => @2f1f6a3b4de0c392 
                {
                  position = 75.4798140938, 
                  key = -24.892523, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @7c839f18c1e19095 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @a03eb3b856307eec void
                }, 
                => @7f9c418f7f1c1a3a 
                {
                  position = 94.6692620721, 
                  key = -113.125, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @bad8d599a8010f5d void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @ac2e45525f039f34 void
                }, 
                => @398a3de56d3997da 
                {
                  position = 77.2291732941, 
                  key = -36.0675734826, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @ea19c7bb2901ed7d void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @2fe7e1259cfebd4 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @80e956f41aeefdb9 {"data", -> @4521959a3eb5b151, "position"}, 
          value = => 'ParameterTrack({input = Seconds, output = Position3d}) @a739ade15240ebd8 
          {
            function = => 'SeparateFunction({input = Seconds, output = Position3d}) @cb04e10acea29876 
            {
              x = => 'KeyframeFunction({input = Seconds, output = Meters}) @b197ffa8f0fcee49 
              {
                keyframes = 
                {
                  => @1313caadd3130b20 
                  {
                    inputInterpolator = => 'StepKeyframeInterpolator @9c2dc879fc9a7cab void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @2a233ac1916cb6da void
                  }, 
                  => @7577d61e3489b6dd 
                  {
                    position = 24.2854332542, 
                    key = 5.54652, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @4a7dbbe952a96a24 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @dc72d38978ae895f void
                  }, 
                  => @9bbcded7374fd77e 
                  {
                    position = 41.716360166, 
                    key = 12.86249, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @248dad4434c1f4b1 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @c268a9e4c9983568 void
                  }, 
                  => @c4e8c53201aa2d53 
                  {
                    position = 128.793646142, 
                    linkInterpolators = False, 
                    inputInterpolator = => 'StepKeyframeInterpolator @2824e2985cb1de62 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @f9a68e343dfbbc5 void
                  }, 
                  => @78b819add891f0ec 
                  {
                    position = 133.124051618, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @766109ab16279c87 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @4bb5a8a463f2ef86 void
                  }, 
                  => @6bd3fd13d52a6019 
                  {
                    position = 111.092509055, 
                    key = -4.94, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @999b5d91a6d60b0 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @9d05954c47b04afb void
                  }, 
                  => @e718854b2d16eea 
                  {
                    position = 128.775081888, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @c610c68b788a75ad void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @bd5555c03a2988b4 void
                  }, 
                  => @2ad585743270ecaf 
                  {
                    position = 128.788684249, 
                    inputInterpolator = => 'StepKeyframeInterpolator @d9e1448fe20e008e void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @8d7602857b5dd081 void
                  }, 
                  => @be61277ce531acf8 
                  {
                    position = 119.364956994, 
                    key = -2.61919126803, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @be99549a4446c92d void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @419e09e265e1634 void
                  }, 
                  => @d0e74954428b8495 
                  {
                    position = 133.125096136, 
                    inputInterpolator = => 'StepKeyframeInterpolator @b677d92a1de1517c void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @ac46d593ce7519d7 void
                  }, 
                  => @17a11cfb61472a96 
                  {
                    position = 133.127608657, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @6c2069e5b1d7e5e9 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @72221e89b2483a40 void
                  }, 
                  => @4aead72700164d4b 
                  {
                    position = 133.185844626, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @dc193bc5e144afa void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @27c8ee563478887d void
                  }, 
                  => @f6027dc3db2e6b44 
                  {
                    position = 137.424903468, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @c95eb73e1d2c3ff void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @326257953e88d9e void
                  }, 
                  => @310bf533ae84051 
                  {
                    position = 137.43201352, 
                    key = 37.298827, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @e5f34d347582888 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @f75c5321e25371f3 void
                  }, 
                  => @b62212411bebd682 
                  {
                    position = 141.652645115, 
                    key = 20.620924, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @febfb6c741fb2165 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @4aa819901709f60c void
                  }, 
                  => @c88c05d5fd5c8b27 
                  {
                    position = 141.656510485, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @16a7477d1f6049a6 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @f4e3b756b7327fb9 void
                  }, 
                  => @a67824708bcc97d0 
                  {
                    position = 149.502433257, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @bddfe4d7aa41839b void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @4fab895717064b0a void
                  }, 
                  => @9ecdded64e50ef4d 
                  {
                    position = 149.505774883, 
                    key = -3.483414, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @60eb7a3e707111d4 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @dd5e3471bd990f4f void
                  }, 
                  => @937d55b0dcc07eae 
                  {
                    position = 149.503658555, 
                    key = -0.000859059550423, 
                    inputInterpolator = => 'StepKeyframeInterpolator @15974b589c2e4421 void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @79241f6c7d54a818 void
                  }
                }
              }, 
              y = => 'KeyframeFunction({input = Seconds, output = Meters}) @87f7161332312243 
              {
                keyframes = 
                {
                  => @dc3831953377c892 
                  {
                    key = 2.46041703224, 
                    inputInterpolator = => 'StepKeyframeInterpolator @59fd65fa0acb9235 void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @85b68a73ce4de9c void
                  }, 
                  => @6064c4ff0d42f077 
                  {
                    position = 24.2854332542, 
                    key = 1.647534, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @9ed3ff12a93f4cb6 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @b9a3c96f7aa72d89 void
                  }, 
                  => @f61cdbf134637960 
                  {
                    position = 41.716360166, 
                    key = 1.845237, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @aba04899d1e6edeb void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @7fcf84dff7b86f1a void
                  }, 
                  => @6aa145cd2550aa1d 
                  {
                    position = 128.793646142, 
                    linkInterpolators = False, 
                    inputInterpolator = => 'StepKeyframeInterpolator @456eb45254ea7c64 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @5042cd5637c8ce9f void
                  }, 
                  => @57b47d3b86b6d3be 
                  {
                    position = 133.124051618, 
                    key = 8.85, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @33a1ac40953cdbf1 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @f3bd041ef8b02ba8 void
                  }, 
                  => @1cd5772a191b8693 
                  {
                    position = 111.092509055, 
                    key = 1.96, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @ea12346df5245ea2 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @7e847dd1c6d9d705 void
                  }, 
                  => @b189775af08b0b2c 
                  {
                    position = 128.775081888, 
                    key = 13.959729, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @afe9118fcbcd49c7 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @2a520371cc2533c6 void
                  }, 
                  => @8cae2cecc6e2ef59 
                  {
                    position = 128.788684249, 
                    key = 7.92291079594, 
                    inputInterpolator = => 'StepKeyframeInterpolator @3b4ad0165b5def0 void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @9767c0a759fb8c3b void
                  }, 
                  => @2a7c36c0c07bb72a 
                  {
                    position = 119.364956994, 
                    key = 7.59746474584, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @d6fee8014fea9fe2 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @231238b732e31f45 void
                  }, 
                  => @132cb84e4da701ef 
                  {
                    position = 133.125096136, 
                    key = 8.85, 
                    inputInterpolator = => 'StepKeyframeInterpolator @ab6a4669262c8cce void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @4e6b0643b96107c1 void
                  }, 
                  => @ab48b4549f33b338 
                  {
                    position = 133.127608657, 
                    key = 8.85, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @fc0ce83c03a79ee3 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @1ee9a1947a6298b2 void
                  }, 
                  => @2b9480f5d142efd5 
                  {
                    position = 133.185844626, 
                    key = -0.2655, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @1e7b67850b557bbc void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @e0b29a9bb9e09717 void
                  }, 
                  => @5716ced22792fed6 
                  {
                    position = 137.424903468, 
                    key = -0.2655, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @4073cdb76bd2c529 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @4bd7690c95acc880 void
                  }, 
                  => @80dec47cccb45e8b 
                  {
                    position = 137.43201352, 
                    key = 10.627269, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @5f78c207e7e1233a void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @668267ecc5fa1bbd void
                  }, 
                  => @cebceaff78a59d84 
                  {
                    position = 141.652645115, 
                    key = 20.437077, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @4af08004d7b8a93f void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @698f2b1b69c2a9de void
                  }, 
                  => @26799bca0927c791 
                  {
                    position = 141.656510485, 
                    key = 9.8736, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @a3b6aed05ae83ec8 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @734a0ed6adaa6b33 void
                  }, 
                  => @dcb32b7f1ae376c2 
                  {
                    position = 149.502433257, 
                    key = 2.344283, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @ca4d13be8663dca5 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @6eb0617c6edd304c void
                  }, 
                  => @89db42dc5ba1d867 
                  {
                    position = 149.505774883, 
                    key = 2.300118, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @35317f063d49ade6 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @d3897af00ea3aef9 void
                  }, 
                  => @612ee0db86713610 
                  {
                    position = 149.503658555, 
                    key = 2.34364081001, 
                    inputInterpolator = => 'StepKeyframeInterpolator @c82723d1ab8664db void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @94814402aab9b34a void
                  }
                }
              }, 
              z = => 'KeyframeFunction({input = Seconds, output = Meters}) @b64747a2fc5dd28d 
              {
                keyframes = 
                {
                  => @f5a50ef71f195414 
                  {
                    key = 15.3176660538, 
                    inputInterpolator = => 'StepKeyframeInterpolator @9700abcfd9c2c48f void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @c8e761f0ea5a2aee void
                  }, 
                  => @35983920c25e1b61 
                  {
                    position = 24.2854332542, 
                    key = 6.604171, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @73bb14f7aa16ce58 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @c7c10bf27238eb83 void
                  }, 
                  => @fb992b1d7c97f8d2 
                  {
                    position = 41.716360166, 
                    key = 14.595225, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @7d265b7813d99d75 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @96abea6794fb28dc void
                  }, 
                  => @6f62cf3888760db7 
                  {
                    position = 128.793646142, 
                    key = -58.6146, 
                    linkInterpolators = False, 
                    inputInterpolator = => 'StepKeyframeInterpolator @ec0176f8814a40f6 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @812bc58ef9c2acc9 void
                  }, 
                  => @5054037fd66c27a0 
                  {
                    position = 133.124051618, 
                    key = -58.6146, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @f4d29444bf269f2b void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @77c3b67b1c16675a void
                  }, 
                  => @5c90a4b0695cdd5d 
                  {
                    position = 111.092509055, 
                    key = 5.15, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @3a5c9a2a0327cea4 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @a92dd9d1d2ca53df void
                  }, 
                  => @1a65ac543b140ffe 
                  {
                    position = 128.775081888, 
                    key = 11.649216, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @a664394430110331 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @c0ffc5a02f4861e8 void
                  }, 
                  => @fd8b54d89ba81fd3 
                  {
                    position = 128.788684249, 
                    key = -18.7360359999, 
                    inputInterpolator = => 'StepKeyframeInterpolator @3b81a5c8a3b11ee2 void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @d685f3f948813245 void
                  }, 
                  => @316fb4531fc8656c 
                  {
                    position = 119.364956994, 
                    key = 8.20332737727, 
                    linkInterpolators = False, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @dfb69d618ca5e42b void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @bf49a0888f44c85a void
                  }, 
                  => @68e20697ecdcbe99 
                  {
                    position = 133.125096136, 
                    key = -58.6146, 
                    inputInterpolator = => 'StepKeyframeInterpolator @2deecf4390469d30 void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @97ac42bc678a0d7b void
                  }, 
                  => @45791d9a35483f6a 
                  {
                    position = 133.127608657, 
                    key = -58.6146, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @73f12931fa743c2d void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @3e3a4d83910a0d34 void
                  }, 
                  => @42b9e40f0d14572f 
                  {
                    position = 133.185844626, 
                    key = -13.504272, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @f8a9066ef951590e void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @c4d890bd7a8d7f01 void
                  }, 
                  => @85f706614145f978 
                  {
                    position = 137.424903468, 
                    key = -7.967519, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @7889d23db38d0823 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @f9e8ef57029fe8f2 void
                  }, 
                  => @d4d2b88e64779b15 
                  {
                    position = 137.43201352, 
                    key = -34.130304, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @8442e10c699de5fc void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @b1c8c219612b5457 void
                  }, 
                  => @e85f3ee37f6d1316 
                  {
                    position = 141.652645115, 
                    key = -34.638786, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @426999e1ecdee469 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @8f419d9cbae996c0 void
                  }, 
                  => @cfadbd7aebe5afcb 
                  {
                    position = 141.656510485, 
                    key = 43.2768, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @6695326de5e03b7a void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @debcfef660eefd void
                  }, 
                  => @a13b6576b5390fc4 
                  {
                    position = 149.502433257, 
                    key = 10.81486, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @826b576ee25ce7f void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @52697a00dcb3061e void
                  }, 
                  => @62338b9477608ed1 
                  {
                    position = 149.505774883, 
                    key = 2.809324, 
                    inputInterpolator = => 'LinearKeyframeInterpolator @e0a064697b189508 void, 
                    outputInterpolator = => 'LinearKeyframeInterpolator @2ff93a8fd2bca473 void
                  }, 
                  => @2ac039548a155702 
                  {
                    position = 149.503658555, 
                    key = 10.8098238646, 
                    inputInterpolator = => 'StepKeyframeInterpolator @c372dd37e919d7e5 void, 
                    outputInterpolator = => 'StepKeyframeInterpolator @63d8f0c01514aa8c void
                  }
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @7b2c3d7dd6e45403 {"data", -> @411f305fd5a9e646, "position", "y"}, 
          value = => 'ParameterTrack({input = Seconds, output = Meters}) @7497271444448fb2 
          {
            function = => 'KeyframeFunction({input = Seconds, output = Meters}) @21196ac2bae08335 
            {
              keyframes = 
              {
                => @37167c096b2fb84a 
                {
                  position = 75.4798140938, 
                  key = -40.6006466236, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @67a68182d6fda22d void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @4eb307cc8d2e0ac4 void
                }, 
                => @7e55c3739dba0805 
                {
                  position = 94.6692620721, 
                  key = -123.040379, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @59c56fa82126069c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @fde4bea53d8ca207 void
                }, 
                => @d2c007d33feed53f 
                {
                  position = 77.2291732941, 
                  key = -39.721937, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @70fb049d526c227e void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @26700ad85199e241 void
                }, 
                => @46fefbbee37ba61f 
                {
                  position = 90.6348241612, 
                  key = -99.0059193164, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @ed59e3de394e7fae void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @36b4c9d523f3e129 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @525ffb63a30fce0a {"data", -> @3a4a5ac0cf2c55ab, "emissionParameters", "rate"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveReal}) @da14593858b87ed 
          {
            function = => 'KeyframeFunction({input = Seconds, output = PositiveReal}) @b4eedf9bf65a684 
            {
              keyframes = 
              {
                => @1d9f7b39842d582 
                {
                  position = 11.4947368421, 
                  key = 5000., 
                  inputInterpolator = => 'LinearKeyframeInterpolator @ef1741bb3e19f5c5 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @de651077352aeb5c void
                }, 
                => @85d6f5b9783736bd 
                {
                  position = 34.2305583708, 
                  key = 60000., 
                  inputInterpolator = => 'LinearKeyframeInterpolator @8b2864aaf38b5e14 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @620068dc9200ccff void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @ea00282d8512e302 {"data", -> @52a05932f0b7de79, "emissionParameters", "manualEmit", "emitNow"}, 
          value = => 'ParameterTrack({input = Seconds, output = Trigger}) @8460cd8ddae90145 
          {
            function = => 'KeyframeFunction({input = Seconds, output = Trigger}) @17388e498d60acdc 
            {
              keyframes = 
              {
                => @1d10a1d715f915be 
                {
                  position = 2.02897896354, 
                  inputInterpolator = => 'StepKeyframeInterpolator @fb8f346c78415e81 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @81033fbfe7297d68 void
                }, 
                => @2e9e1c2d050142e3 
                {
                  position = 2.15113815625, 
                  inputInterpolator = => 'StepKeyframeInterpolator @db860f7d4800ff12 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6bc13bf3085f2a15 void
                }, 
                => @698e440734cc666c 
                {
                  position = 2.400002, 
                  inputInterpolator = => 'StepKeyframeInterpolator @66496f1a4c9cc597 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @5e388dcecb2b82b6 void
                }, 
                => @bd7c01fe7cf2bcf9 
                {
                  position = 2.65113857292, 
                  inputInterpolator = => 'StepKeyframeInterpolator @749aaa64da751ea0 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @8e2b397d2b98159b void
                }, 
                => @a9345af1c091dfaa 
                {
                  position = 2.94034335938, 
                  inputInterpolator = => 'StepKeyframeInterpolator @7218a3b08843890d void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @bb8ae77da5f76724 void
                }, 
                => @eb7c087eff82fecf 
                {
                  position = 3.19659357292, 
                  inputInterpolator = => 'StepKeyframeInterpolator @1344a67531952ce void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @da107b82ce617951 void
                }, 
                => @3c41e5479ef83bf8 
                {
                  position = 3.47613926042, 
                  inputInterpolator = => 'StepKeyframeInterpolator @60fc64be1f814033 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @5055ef74bf9722 void
                }, 
                => @b29bc91fc0ce9be5 
                {
                  position = 3.70341217708, 
                  inputInterpolator = => 'StepKeyframeInterpolator @87bbcb187d2077fc void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6cec48bb083f56e7 void
                }, 
                => @1898f188e43625c6 
                {
                  position = 3.96875330729, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d296b10752630c9 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @87d67ee00c36f730 void
                }, 
                => @ff2296e2e49c9deb 
                {
                  position = 5.99602772396, 
                  inputInterpolator = => 'StepKeyframeInterpolator @900463cc7ce7e1ba void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @44b1e10676270dd void
                }, 
                => @3ade48c654a436b4 
                {
                  position = 6.000005, 
                  inputInterpolator = => 'StepKeyframeInterpolator @4b55d87820222d1f void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @797ab8b868f987de void
                }, 
                => @f75c995c890d2721 
                {
                  position = 7.04034677604, 
                  inputInterpolator = => 'StepKeyframeInterpolator @f33fbba42c640d88 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @985088e7cc3d0d83 void
                }, 
                => @e1bcbb32e3d06b32 
                {
                  position = 7.12159684375, 
                  inputInterpolator = => 'StepKeyframeInterpolator @40644fb4e9f6d4b5 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @8b495b3e51d5408c void
                }, 
                => @e1297db7dd2a6f37 
                {
                  position = 8.80567476986, 
                  inputInterpolator = => 'StepKeyframeInterpolator @392d8f37e89a28d6 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @d7072f9abfd6d099 void
                }, 
                => @29191478691b6bc0 
                {
                  position = 8.81703841569, 
                  inputInterpolator = => 'StepKeyframeInterpolator @bb935fdbe1b2b13b void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @95d141af1f3327ca void
                }, 
                => @78990cf81192c7ad 
                {
                  position = 9.84033472298, 
                  inputInterpolator = => 'StepKeyframeInterpolator @725f876a738f4244 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @43d9f114e0854c6f void
                }, 
                => @2945c052a15914ee 
                {
                  position = 9.92897116048, 
                  inputInterpolator = => 'StepKeyframeInterpolator @656cb1e65f77f9f1 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @d73bb954239ac018 void
                }, 
                => @3e6a5f31f6afebd3 
                {
                  position = 12.353404999, 
                  inputInterpolator = => 'StepKeyframeInterpolator @304b237a11db42 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @94b6abaf12d0fd85 void
                }, 
                => @7712c61db4a4ee1c 
                {
                  position = 12.6352234157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @2fc3aad64126d387 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @b7cc85964f348be6 void
                }, 
                => @c87644de74c81d69 
                {
                  position = 12.9079509157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @99b6edb6f573d850 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @794767f3e1e4908b void
                }, 
                => @a1cfc496e76881da 
                {
                  position = 13.167610223, 
                  inputInterpolator = => 'StepKeyframeInterpolator @6ba4fb41826ee77d void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @4faa72034a80a5d4 void
                }, 
                => @fcb401c0a01bdabf 
                {
                  position = 13.1954511553, 
                  inputInterpolator = => 'StepKeyframeInterpolator @b34d214cce3c81fe void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @4e62ecbcde025fc1 void
                }, 
                => @323df586d6f512a8 
                {
                  position = 13.1994284313, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d087652d6d820d23 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @19be054c2a8d6752 void
                }, 
                => @5082f43a01a15755 
                {
                  position = 14.1818156136, 
                  inputInterpolator = => 'StepKeyframeInterpolator @30293a6a9d85b3ac void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @4ab51c47ef37c0d7 void
                }, 
                => @a3e7567592cc6f6 
                {
                  position = 14.2602247699, 
                  inputInterpolator = => 'StepKeyframeInterpolator @dadbd9851314d539 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @1b4a16bf4fc144e0 void
                }, 
                => @7bec3343c3963cdb 
                {
                  position = 16.6789767855, 
                  inputInterpolator = => 'StepKeyframeInterpolator @1626097151bd9fea void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @55c05a1ca6d0d24d void
                }, 
                => @46dce033c99c4964 
                {
                  position = 16.9988634157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d493478831786d0f void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6eecc065cbe16e0e void
                }, 
                => @e7f08dd125dc991 
                {
                  position = 17.2715909157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @75f7c5e98b2df938 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @2c26fb08cad4373 void
                }, 
                => @aac3c8c72a9baf62 
                {
                  position = 17.5647729782, 
                  inputInterpolator = => 'StepKeyframeInterpolator @4fdbdeccb3e79425 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @4fa9690d62b6513c void
                }, 
                => @caa3f21267a2bd27 
                {
                  position = 17.572159348, 
                  inputInterpolator = => 'StepKeyframeInterpolator @4b2b8f232be3f906 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @595946e90f003909 void
                }, 
                => @6a5666daf2d8cd70 
                {
                  position = 18.5392056084, 
                  inputInterpolator = => 'StepKeyframeInterpolator @5ebdc373853f42b void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @68ca29eccca331fa void
                }, 
                => @287f976776dc251d 
                {
                  position = 18.6204556761, 
                  inputInterpolator = => 'StepKeyframeInterpolator @96e843eec73828f4 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @942e9c857e93d05f void
                }, 
                => @1c907d0490ce131e 
                {
                  position = 18.6352284157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @12dcf05cff7f4461 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @18fb33796f25c3c8 void
                }, 
                => @6f763166756c5cc3 
                {
                  position = 21.0602304365, 
                  inputInterpolator = => 'StepKeyframeInterpolator @e195d114adc3f372 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6fb8ba376a56a1f5 void
                }, 
                => @9c5de166c8a4b2cc 
                {
                  position = 21.3625034157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @ccc28c68de98a77 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6244c3e24ef20c16 void
                }, 
                => @92245ede8c1ca9d9 
                {
                  position = 21.6045490719, 
                  inputInterpolator = => 'StepKeyframeInterpolator @c6d15ec485bfb100 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @43bc956022f2f87b void
                }, 
                => @9a3d473daac1870a 
                {
                  position = 21.9045493219, 
                  inputInterpolator = => 'StepKeyframeInterpolator @25e1bc4c3bed48ed void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @21ecfed875f24784 void
                }, 
                => @96b8ebc708342af 
                {
                  position = 21.9136402386, 
                  inputInterpolator = => 'StepKeyframeInterpolator @62ad8f2e95b8302e void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c9682cea258bee31 void
                }, 
                => @8114ff65400aa658 
                {
                  position = 21.9181856969, 
                  inputInterpolator = => 'StepKeyframeInterpolator @578344c134300a13 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @3d416db35fdaf282 void
                }, 
                => @6a71ebd782ef1ec5 
                {
                  position = 22.8971637855, 
                  inputInterpolator = => 'StepKeyframeInterpolator @dba1a708414e85c void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @3b70ce64ead85ec7 void
                }, 
                => @13857ddd123f7f26 
                {
                  position = 22.9602320199, 
                  inputInterpolator = => 'StepKeyframeInterpolator @21c52050d137a5a9 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @b10ab4afabb43190 void
                }, 
                => @cf518fb261842bcb 
                {
                  position = 22.9715956657, 
                  inputInterpolator = => 'StepKeyframeInterpolator @f92559e55d16f11a void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @e1d5e953fca23bbd void
                }, 
                => @e8406123089abf14 
                {
                  position = 26.2715984157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @9fb27126cdb239ff void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @ad5696587fadcd3e void
                }, 
                => @fe1daf219fec1c01 
                {
                  position = 26.2778484209, 
                  inputInterpolator = => 'StepKeyframeInterpolator @505746f7413e80e8 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @2272a6c42eb3fc63 void
                }, 
                => @b968350fc6edae92 
                {
                  position = 27.3244402021, 
                  inputInterpolator = => 'StepKeyframeInterpolator @91fa57a0caec4395 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @1f04d499adfe5dec void
                }, 
                => @2caacc278c719f17 
                {
                  position = 27.4159175511, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d28a55944febca36 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @fc1b174588563279 void
                }, 
                => @387cd388f24db220 
                {
                  position = 28.4534184157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @708e052cf968871b void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @184fa20cacc71f2a void
                }, 
                => @b6140e7880d2f68d 
                {
                  position = 28.7261459157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @fc4e952a204952a4 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6fe44e85f7c6804f void
                }, 
                => @589f4c5481eb2a4e 
                {
                  position = 28.9988734157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @9a3459a651595ed1 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @76b97532e8697f78 void
                }, 
                => @4753b40ecfdc1db3 
                {
                  position = 29.2716009157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @84ca5655715566a2 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @136e8fe4dad15165 void
                }, 
                => @28e2e5baa590737c 
                {
                  position = 29.5443284157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @fffc6663d7f84867 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6f313005ae510d46 void
                }, 
                => @7269ff73dec8e649 
                {
                  position = 29.8170559157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @13a69814d552cab0 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @7a2762124d2daf6b void
                }, 
                => @b6bd5166ab4bc13a 
                {
                  position = 30.0897834157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @77b492f10b989e5d void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @28a7ce064461c234 void
                }, 
                => @72a160849da2569f 
                {
                  position = 30.3625109157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @abf6782ebee7f5e void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @f18eae2a1dbea4a1 void
                }, 
                => @9592f411cf7d5108 
                {
                  position = 30.612511124, 
                  inputInterpolator = => 'StepKeyframeInterpolator @c45fc5188df26f03 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @2cadc5561ba0dab2 void
                }, 
                => @636f9df4605b3235 
                {
                  position = 30.6301247751, 
                  inputInterpolator = => 'StepKeyframeInterpolator @51d6152b82537c0c void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @5b75df2981f7e0b7 void
                }, 
                => @4a72d82cb21c1056 
                {
                  position = 30.6352384157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @48e925bc41232619 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @8540762b9ac35f40 void
                }, 
                => @5933b82792a9e2bb 
                {
                  position = 30.9079659157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d57e79a3244c274a void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @4bebafdf15e8d2d void
                }, 
                => @13b84bd327509c4 
                {
                  position = 31.1806934157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @1a1e4404fb6811ef void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @a8b13110bb7aac6e void
                }, 
                => @b6f77ac59c3c9f71 
                {
                  position = 31.4534209157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @612e953c64a3c798 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @98edd6bd46596553 void
                }, 
                => @5047832069d6ac2 
                {
                  position = 31.6210346917, 
                  inputInterpolator = => 'StepKeyframeInterpolator @19f4fe83c27c7b05 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @83c28932d9f0a59c void
                }, 
                => @26920fce62a8507 
                {
                  position = 31.6954665719, 
                  inputInterpolator = => 'StepKeyframeInterpolator @553d775212299366 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @f0d2da37852bf2e9 void
                }, 
                => @82d7dad042efefd0 
                {
                  position = 31.7261484157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @42cf92650cf0620b void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @415957c5c1caa15a void
                }, 
                => @33fbd326a5b1ccfd 
                {
                  position = 31.9988759157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @968364d420607154 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @851ac294ba8adc3f void
                }, 
                => @1f5dfd82be8f397e 
                {
                  position = 32.2716034157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @3d1869b4754c9d41 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @903553be683a3628 void
                }, 
                => @f510a42a43d62ea3 
                {
                  position = 32.5443309157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @506d65378f6396d2 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @59bdab5e0b7c0cd5 void
                }, 
                => @7710228ebc6f2f2c 
                {
                  position = 32.8170584157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @e830d64e099a1a57 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @1ef7b6bf6b988e76 void
                }, 
                => @e74528accfefeab9 
                {
                  position = 33.0738768115, 
                  inputInterpolator = => 'StepKeyframeInterpolator @8b27fade9a597860 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @3539c1ac20582e5b void
                }, 
                => @18810512ade45f6a 
                {
                  position = 33.3625134157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @bdcacde6b7795bcd void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @572d9e342c3e34e4 void
                }, 
                => @e73ef878cf9ff68f 
                {
                  position = 33.6352409157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @76d8ba8ead6ca18e void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c0d5c641889baf11 void
                }, 
                => @9dc54256c2f2bcb8 
                {
                  position = 33.9079684157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @975807c282539cf3 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @a3fe1f423d3afee2 void
                }, 
                => @dcdd73a61ed5eda5 
                {
                  position = 34.1806959157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @511984e1f1ffecbc void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @f5dcfd6aee8916a7 void
                }, 
                => @77451f892fce4086 
                {
                  position = 34.4534234157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @406fa1ceb5b86e89 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @22e6a2004dd480f0 void
                }, 
                => @ea0ae430667a01ab 
                {
                  position = 34.7261509157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d5f3067ff518917a void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @b4e33adee8d0329d void
                }, 
                => @723a96520c5db474 
                {
                  position = 34.9801284001, 
                  inputInterpolator = => 'StepKeyframeInterpolator @cd1a2bf63c8d95df void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6a9fe518a0980a9e void
                }, 
                => @a848f6c30f0e45e1 
                {
                  position = 35.2716059157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @fa2d3a64d9b2a748 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @eb1da62a3d073e43 void
                }, 
                => @a99c97d551b7e2f2 
                {
                  position = 35.5443334157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @a8033b1f23461f75 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @1dbed290691bee4c void
                }, 
                => @93c082aea0849ff7 
                {
                  position = 35.8170609157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @13a9179d5661f796 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @5df91c71021c7f59 void
                }, 
                => @2323e6107e672480 
                {
                  position = 36.0710384001, 
                  inputInterpolator = => 'StepKeyframeInterpolator @a4c817a5a423a5fb void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @16fcac369a16068a void
                }, 
                => @1862b167514f66d 
                {
                  position = 36.3625159157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @94f0244fdd61f304 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @fe4c51763081a42f void
                }, 
                => @38e9a38a4cd6cbae 
                {
                  position = 36.6352434157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @baef4fdae2d60fb1 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @5cf96eaf9ba325d8 void
                }, 
                => @e785489bb6650793 
                {
                  position = 36.8818345303, 
                  inputInterpolator = => 'StepKeyframeInterpolator @5724f5cf24ab8202 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @3184f6664cc61445 void
                }, 
                => @522e26a32a7827dc 
                {
                  position = 37.1528574834, 
                  inputInterpolator = => 'StepKeyframeInterpolator @834aeb2bee4ff047 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @e03790815f3d86a6 void
                }, 
                => @7d511efd45e49b29 
                {
                  position = 37.440357723, 
                  inputInterpolator = => 'StepKeyframeInterpolator @f959f0476f514510 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @5e74f3c3536b754b void
                }, 
                => @7b5cd4fd1dc4109a 
                {
                  position = 37.7005852126, 
                  inputInterpolator = => 'StepKeyframeInterpolator @f06f9f2b7ee0813d void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @9482f0b844238a94 void
                }, 
                => @407dd8a9f7dca37f 
                {
                  position = 37.9841081761, 
                  inputInterpolator = => 'StepKeyframeInterpolator @ae1753234319e4be void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @105158469f5ddd81 void
                }, 
                => @d9c3232c982f2468 
                {
                  position = 38.2676311396, 
                  inputInterpolator = => 'StepKeyframeInterpolator @1f6698ed862919e3 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @d30ea7205a275e12 void
                }, 
                => @e3837d12ee96f915 
                {
                  position = 38.5187677126, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d6b9c1444519b96c void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @42dbadf38de75097 void
                }, 
                => @3f223ad7ae830db6 
                {
                  position = 38.7966088532, 
                  inputInterpolator = => 'StepKeyframeInterpolator @60362279db1c43f9 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @21570b7a7c2ae1a0 void
                }, 
                => @968209c74ba4709b 
                {
                  position = 39.0897909157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @80fefe929f635eaa void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @2f8776694c16fc0d void
                }, 
                => @d8ead09abfb05e24 
                {
                  position = 39.3238820199, 
                  inputInterpolator = => 'StepKeyframeInterpolator @69332c5fd847a5cf void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @ac19c40bd8b3fdce void
                }, 
                => @28e3bac0435abc51 
                {
                  position = 39.5932004261, 
                  inputInterpolator = => 'StepKeyframeInterpolator @b887b39d16ffa2f8 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @2b3796613145df33 void
                }, 
                => @d5581512c2783622 
                {
                  position = 39.8846779417, 
                  inputInterpolator = => 'StepKeyframeInterpolator @2b832309472d2ee5 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @41eca031ce310efc void
                }, 
                => @e5471f75496bde7 
                {
                  position = 40.0102462282, 
                  inputInterpolator = => 'StepKeyframeInterpolator @84a6bbfc9c8954c6 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c49d09de591697c9 void
                }, 
                => @4845b89a8eae1e30 
                {
                  position = 40.2920646449, 
                  inputInterpolator = => 'StepKeyframeInterpolator @12fabed0256fb8eb void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @455f8a6d765720ba void
                }, 
                => @1c493aae3dca27dd 
                {
                  position = 40.6704740511, 
                  inputInterpolator = => 'StepKeyframeInterpolator @baf40f80e172e9b4 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @94857a64a9f981f void
                }, 
                => @4dc71c7c8715d6de 
                {
                  position = 41.5403611396, 
                  inputInterpolator = => 'StepKeyframeInterpolator @f5ae6bffb4af2a21 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6530a80d5bfbb488 void
                }, 
                => @f63c381f23ec4883 
                {
                  position = 41.7949068063, 
                  inputInterpolator = => 'StepKeyframeInterpolator @389b6b5952384a32 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @ccbeda332c562bb5 void
                }, 
                => @15f6d075273e1b8c 
                {
                  position = 42.0568388428, 
                  inputInterpolator = => 'StepKeyframeInterpolator @200d738962dc7a37 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @502353fc99ff1bd6 void
                }, 
                => @785bf68f84567799 
                {
                  position = 42.1852480407, 
                  inputInterpolator = => 'StepKeyframeInterpolator @ab46807088e8b2c0 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @832e709f1c902c3b void
                }, 
                => @67548150f85626ca 
                {
                  position = 42.4795664678, 
                  inputInterpolator = => 'StepKeyframeInterpolator @6521e17e985fbaad void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @72d086fbb8f03544 void
                }, 
                => @abe7f1f6ed09fb6f 
                {
                  position = 42.8670667907, 
                  inputInterpolator = => 'StepKeyframeInterpolator @776eba88ee0f27ee void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @a6e6e5b6428ebcf1 void
                }, 
                => @5beb1c09f349cb18 
                {
                  position = 43.7113856761, 
                  inputInterpolator = => 'StepKeyframeInterpolator @f6bf9fbedf95e6d3 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @cbdd04328c37fa42 void
                }, 
                => @f82559a91702f085 
                {
                  position = 43.9704768011, 
                  inputInterpolator = => 'StepKeyframeInterpolator @3682c01353ed611c void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @f205bf73888bbe87 void
                }, 
                => @916876cb29bbbae6 
                {
                  position = 44.2454770303, 
                  inputInterpolator = => 'StepKeyframeInterpolator @8682ba0c04ae6069 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @f9c77250b928e350 void
                }, 
                => @b336aae2da2ecf8b 
                {
                  position = 44.3750225928, 
                  inputInterpolator = => 'StepKeyframeInterpolator @ea271183cd4d40da void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c9a00f3f476c1a7d void
                }, 
                => @29adb5173616dcd4 
                {
                  position = 44.6596819209, 
                  inputInterpolator = => 'StepKeyframeInterpolator @a8aebbcf72f6c1bf void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c5d2db9c379450fe void
                }, 
                => @3c1584073963c2c1 
                {
                  position = 45.0704777178, 
                  inputInterpolator = => 'StepKeyframeInterpolator @1c7044b78f59d5a8 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @bbebd49864f4c823 void
                }, 
                => @32e5732d7b7ec652 
                {
                  position = 45.9028647751, 
                  inputInterpolator = => 'StepKeyframeInterpolator @7f77b163cb6c2a55 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @540d4992b2478aac void
                }, 
                => @2e2bc9d5fe9b6fd7 
                {
                  position = 45.9079784157, 
                  inputInterpolator = => 'StepKeyframeInterpolator @dc415e53d8ddb1f6 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @139ac85fc32bf839 void
                }, 
                => @4c145bafcff62fe0 
                {
                  position = 46.1630922646, 
                  inputInterpolator = => 'StepKeyframeInterpolator @40b2c011dc8f1bdb void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @ab32dde7f741eea void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @9d6477efc6c7cd50 {"data", -> @3454e9e656b9c260, "orientation"}, 
          value = => 'ParameterTrack({input = Seconds, output = EulerAngles}) @202422e595e1504f 
          {
            function = => 'KeyframeFunction({input = Seconds, output = EulerAngles}) @d64a8b9795a791a6 
            {
              keyframes = 
              {
                => @89637e1ffc291e58 
                {
                  position = 92.5107205969, 
                  key = {x = -0.33499994874, y = 0.450000077486}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @826fe8084bb48cd7 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @b6bcdfb61e0d59ee void
                }, 
                => @68f6b12db396c4bc 
                {
                  position = 98.2115289464, 
                  key = {x = -0.369999885559, y = 1.44500005245}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @2719a11c764e94d8 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @b844b864c71982b9 void
                }, 
                => @a1383ea583a53af8 
                {
                  position = 98.2337350214, 
                  key = {x = -0.579999625683, y = 0.725000202656}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @adac97cff107ecc8 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @5bbf8352668bcce9 void
                }, 
                => @dccb89fd29c2a734 
                {
                  position = 102.664806272, 
                  key = {x = 0.0699988082051, y = 0.255000263453}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @db688e201312a010 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @ffab1faffab89791 void
                }, 
                => @c73e6127e41a98c1 
                {
                  position = 102.675086879, 
                  key = {x = 0.724998772144, y = 0.160000145435}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @8c37a876f94d4d03 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @8933358e63d7ba4 void
                }, 
                => @78ac42fb29f4f3b6 
                {
                  position = 106.955393626, 
                  key = {x = -0.205001056194, y = -1.09500026703}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @e529b9702b1e1298 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @6c627a2c0e35cb79 void
                }, 
                => @6cf3314307fe9294 
                {
                  position = 106.984290904, 
                  key = {x = -0.209999978542, y = 1.49000000954}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @92eb09da02e725b6 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @34200a22e4d2c21f void
                }, 
                => @c287ee75fa59d53b 
                {
                  position = 111.046665442, 
                  key = {x = -0.0799996554852, y = 0.810000181198}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @ead793e27ab53ca2 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @cd0ad2e70fea1f39 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @8aa1e04037b8a5cb {"data", -> @315503de6c487586, "vertical"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveAngle}) @176af11d37cc5b1a 
          {
            function = => 'KeyframeFunction({input = Seconds, output = PositiveAngle}) @cd83e4766ad785bd 
            {
              keyframes = 
              {
                => @c12e8d77e5103e63 
                {
                  key = 1.0471975512, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @93163c8228d83092 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @9e5510c41899ed95 void
                }, 
                => @1b8ba6b0f0a5569c 
                {
                  position = 27.5552787809, 
                  key = 0.666715774262, 
                  linkInterpolators = False, 
                  inputInterpolator = => 'BezierKeyframeInterpolator(PositiveAngle) @b87ad47ab26728e9 {slope = 0.0124758102374}, 
                  outputInterpolator = => 'BezierKeyframeInterpolator(PositiveAngle) @69211264dce11dd0 void
                }, 
                => @17e3e702e868eb4e 
                {
                  position = 41.6675167646, 
                  key = 0.59515727493, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @a68600b605525a15 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @ff9a40b0b17ffac4 void
                }, 
                => @80c81645292eba08 
                {
                  position = 128.793646142, 
                  key = 1.28630765872, 
                  linkInterpolators = False, 
                  inputInterpolator = => 'StepKeyframeInterpolator @bff2106eb8ce36c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @3d1180e202a15dc void
                }, 
                => @9a11ec345cefba81 
                {
                  position = 133.124051618, 
                  key = 0.644026493986, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @967ca3f6eb454ee8 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @c41a29591ea9ea3 void
                }, 
                => @3459bfca7c752011 
                {
                  position = 111.092509055, 
                  key = 0.73478361509, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @64acca6d5939dfb8 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @3cea46fd69ef71b3 void
                }, 
                => @559cfb8f14618f15 
                {
                  position = 128.775081888, 
                  key = 0.37179003726, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @54700f948e20140c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @924d2eb77c4dda17 void
                }, 
                => @f28806053dc7c427 
                {
                  position = 128.788684249, 
                  key = 0.767268819488, 
                  inputInterpolator = => 'StepKeyframeInterpolator @5e1d14dba5618694 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @866dc234cf94af7f void
                }, 
                => @91b875751b2ce6cd 
                {
                  position = 119.364956994, 
                  key = 0.276268167298, 
                  linkInterpolators = False, 
                  inputInterpolator = => 'BezierKeyframeInterpolator(PositiveAngle) @25b68fc362bcf3fd {slope = -0.0554268157625}, 
                  outputInterpolator = => 'BezierKeyframeInterpolator(PositiveAngle) @3785a1f5aa90b8d4 {slope = 0.0102315376965}
                }, 
                => @9f1cc54870cb30aa 
                {
                  position = 133.125096136, 
                  key = 0.644026493986, 
                  inputInterpolator = => 'StepKeyframeInterpolator @39a5d33de6378c03 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @cfc74aa12919c712 void
                }, 
                => @36a5f698c48ddb72 
                {
                  position = 133.127608657, 
                  key = 1.06988683147, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @58da3d6821e26ab5 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @b4602ba6aad3c42c void
                }, 
                => @45ef9b8ab114342 
                {
                  position = 137.424903468, 
                  key = 1.06988683147, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @e5e297218cee4ec5 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @a8537fc1c3661ffc void
                }, 
                => @e5fead429dd78010 
                {
                  position = 137.43201352, 
                  key = 1.01403629541, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @4629aae76008912b void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @667c9bb85b38ef1a void
                }, 
                => @ffcb85c2a32b74cf 
                {
                  position = 141.652645115, 
                  key = 0.792379480405, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @cd33b18c832d270e void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @8539b2b4bbb08631 void
                }, 
                => @faee24488560c43c 
                {
                  position = 141.656510485, 
                  key = 0.745255590602, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @bcbf2bd0b61afd87 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @a2b1b94719463466 void
                }, 
                => @513a1cb712cb3402 
                {
                  position = 149.502433257, 
                  key = 0.745255590602, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @6b18901cc2f80085 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @90f99d7df20df6bc void
                }, 
                => @5d9e7b20a3403e9 
                {
                  position = 149.505774883, 
                  key = 0.57770398241, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @a2273710d564be30 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @a74607643483414b void
                }, 
                => @dc0e7126a9e5c05 
                {
                  position = 149.503658555, 
                  key = 0.745658957758, 
                  inputInterpolator = => 'StepKeyframeInterpolator @4806048226ef417a void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @477b3fc836c8d1d void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @ebc99a46095e1c68 {"data", -> @abaafdbeadfb5448, "vertical"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveAngle}) @d6bb39509b9651e3 
          {
            activation = "inactive", 
            function = => 'KeyframeFunction({input = Seconds, output = PositiveAngle}) @3dc2f040cb707612 
            {
              activation = "activationRequested", 
              keyframes = 
              {
                => @32b39e345d4ed9a0 
                {
                  activation = "activationRequested", 
                  position = 58.1852949511, 
                  key = 1.0471975512, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @fff0b067d662489b void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @876dafa1e22976aa void
                }, 
                => @ef90bb3cdb49af8 
                {
                  activation = "activationRequested", 
                  position = 76.6800602572, 
                  key = 1.81863308058, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @fa6990947a731733 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @fc8a93a2560ee22 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @a8264200fc621b56 {"data", -> @86383de4bb45f05d, "distortion"}, 
          value = => 'ParameterTrack({input = Seconds, output = Real}) @2cc882306ec3d19 
          {
            function = => 'KeyframeFunction({input = Seconds, output = Real}) @4699fa9345887e40 
            {
              keyframes = 
              {
                => @3584383fa4ce6605 
                {
                  position = 58.1852949511, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @e8441f7a0b43749c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @1d71aeb19db10807 void
                }, 
                => @42df660ec8c7f85a 
                {
                  position = 76.6800602572, 
                  key = 11.22, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @6099950df9e85bfd void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @db8373e831e9e054 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @9f816cad37719d28 {"data", -> @52a05932f0b7de79, "emissionParameters", "rate"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveReal}) @dda817fee80bd9a3 
          {
            function = => 'KeyframeFunction({input = Seconds, output = PositiveReal}) @89b005d537a2f5d2 
            {
              keyframes = 
              {
                => @cce8c83dcea96760 
                {
                  position = 35.796524135, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @eddfdfc37086f95b void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @9bdf394fd046c26a void
                }, 
                => @1f97450ce968cbb8 
                {
                  position = 40.1462645296, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @ef9053427ff10ff3 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @a986e06134ea9de2 void
                }, 
                => @1ac53b0bfc88173b 
                {
                  position = 11.5140247881, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @c847abd5769d3dca void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @2936e1216cce55ad void
                }, 
                => @f18a5ace13d0b385 
                {
                  position = 13.1093693489, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @3567b02b73d9941c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @57b222426752d187 void
                }, 
                => @beedb27d0ad05ee5 
                {
                  position = 125.325604697, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @4b23a1bcf69dd5d4 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @99b3056c5552f573 void
                }, 
                => @69157534a836c84d 
                {
                  position = 127.097420415, 
                  key = 20., 
                  inputInterpolator = => 'LinearKeyframeInterpolator @8bf7e8756ef51a5c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @387191d80bbd431b void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @af29df873221d8f0 {"data", -> @52a05932f0b7de79, "emissionParameters", "manualEmit", "count"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveInteger}) @1e40b103b8db39ab 
          {
            function = => 'KeyframeFunction({input = Seconds, output = PositiveInteger}) @78d57bbd4c6aa97a 
            {
              keyframes = 
              {
                => @f8e043150366d643 
                {
                  position = 11.7591974462, 
                  key = 1, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @3d4853c4dfbefaf2 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @f21962ba1571f775 void
                }, 
                => @89f3d077b1e5dfb 
                {
                  position = 34.2973509712, 
                  key = 3, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @2001a1f7c2f61e8a void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @c7f03a73c7ab6e6d void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @80c66c1a7c023f9c {"data", -> @e4cd10ec31282b6, "vertical"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveAngle}) @32234b71a36abf5b 
          {
            function = => 'KeyframeFunction({input = Seconds, output = PositiveAngle}) @38ca8890a9ae1742 
            {
              keyframes = 
              {
                => @5f44740ebc970d04 
                {
                  position = 92.5107205969, 
                  key = 1.0471975512, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @351827476a86e663 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @8950d5361ca4f40a void
                }, 
                => @229446e31d272d3d 
                {
                  position = 106.984290904, 
                  key = 1.0471975512, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @ed5ecc62f1fa2b8c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @36e69a1eb4c6220b void
                }, 
                => @ff9504ff02ea8985 
                {
                  position = 111.046665442, 
                  key = 0.198967534727, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @a259325aab5c8f74 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @5fdd54656da3d313 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @f44cd4f7e04158a5 {"data", -> @f0b8477344e4312f, "position", "z"}, 
          value = => 'ParameterTrack({input = Seconds, output = Meters}) @66e379a0dc4a3fbc 
          {
            function = => 'KeyframeFunction({input = Seconds, output = Meters}) @6f8e586f209b15a7 
            {
              keyframes = 
              {
                => @a478bd0bb77bd99d 
                {
                  position = 58.1852949511, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @42d1133eb68e2661 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @bd8999437abd05c8 void
                }, 
                => @79593aa2d7f9f94c 
                {
                  position = 76.6800602572, 
                  key = -840.04908377, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @c4e3738d2ff1bb00 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @be91de6a6856a7b void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @268e240b9ac7968 {"data", -> @3454e9e656b9c260, "position"}, 
          value = => 'ParameterTrack({input = Seconds, output = Position3d}) @3690c3ce9b06b927 
          {
            function = => 'KeyframeFunction({input = Seconds, output = Position3d}) @26f3a82deb8a4e7e 
            {
              keyframes = 
              {
                => @a6a84343783cc935 
                {
                  position = 92.5107205969, 
                  key = {x = -3.20025539398, y = 1.63705956936, z = -0.603917837143}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @dabd5cae6c9da064 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @170875b4f696cac3 void
                }, 
                => @4e4c3739c3b462f9 
                {
                  position = 98.2115289464, 
                  key = {x = -0.262585163116, y = 2.05845022202, z = -3.45107316971}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @18e9dad701e29bd0 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c3d464b504df7651 void
                }, 
                => @6793c982e2ec096f 
                {
                  position = 98.2337350214, 
                  key = {x = -2.60674095154, y = 1.47983431816, z = -1.6763176918}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @fc58415c2edf1dc0 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @f829a6ad08d96a81 void
                }, 
                => @1191645a931fa6cb 
                {
                  position = 102.664806272, 
                  key = {x = 0.614609122276, y = 1.5301887989, z = 3.86294174194}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @dc3b83ee99a5d8ba void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @453b52cd955a25d3 void
                }, 
                => @5ed474a20b9867d6 
                {
                  position = 102.675086879, 
                  key = {x = -0.0755895227194, y = 0.414073705673, z = 1.86383938789}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @57ac93bc4823575 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @f67ce732c852332e void
                }, 
                => @e50da2798e071a8b 
                {
                  position = 106.955393626, 
                  key = {x = -3.55569601059, y = 3.50483560562, z = 1.12180709839}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @e63a0246feeb51e2 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @c01ce493ebbd7b7b void
                }, 
                => @d81abc0347f8c788 
                {
                  position = 106.984290904, 
                  key = {x = 5.66189479828, y = 1.8126103878, z = 0.337829649448}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @bb0055beabf100e void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @7c91dfb14672e0f7 void
                }, 
                => @58da2b842db09b58 
                {
                  position = 111.046665442, 
                  key = {x = 5.12308216095, y = 1.750115, z = 4.74088335037}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @7d7eec4d1e6cc5d7 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @cd9a10b02cdb82ee void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @518d9440ba804a81 {"data", -> @4521959a3eb5b151, "orientation"}, 
          value = => 'ParameterTrack({input = Seconds, output = EulerAngles}) @c5249eac6c69fdc0 
          {
            function = => 'KeyframeFunction({input = Seconds, output = EulerAngles}) @b763548adb86bdff 
            {
              keyframes = 
              {
                => @5b0f1b8b8ea953af 
                {
                  key = {x = 0.0203681774437}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @d9efbbc8cb3c7286 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @dbfadb735c5b98cd void
                }, 
                => @dc658843994d749c 
                {
                  position = 24.2854332542, 
                  key = {x = -0.047699848457, y = 0.373500459927}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @2097c48b9632bbe8 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @9781938ec903b09 void
                }, 
                => @e3c5ee4c31deece0 
                {
                  position = 41.716360166, 
                  key = {x = -0.047699848457, y = 0.459021593275}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @6bb9e3bb0cbf171f void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @2c2c100a6e059ab6 void
                }, 
                => @6c59a31d109c3462 
                {
                  position = 128.793646142, 
                  key = {x = 0.565486677646, y = 3.0647981665}, 
                  linkInterpolators = False, 
                  inputInterpolator = => 'StepKeyframeInterpolator @fd6654d8dbb0bf6d void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @703a5a226ba65492 void
                }, 
                => @d8c15ce8a0da5a75 
                {
                  position = 133.124051618, 
                  key = {x = -0.012217304764, y = 3.0647981665}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @3abdb386d99e90ec void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @adc883f3e7639277 void
                }, 
                => @e5b1d314cebaad28 
                {
                  position = 111.092509055, 
                  key = {x = -0.205948851735, y = -0.570722665402}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @b1d592aacc76bfe3 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @a2ab27723c5dfa72 void
                }, 
                => @1298d16e4170657d 
                {
                  position = 128.775081888, 
                  key = {x = -0.876155284501}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @70f101525cfd2c54 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @d0d8124f86bbda3f void
                }, 
                => @f410365debb140e 
                {
                  position = 128.788684249, 
                  key = {x = -0.252724096057, y = 1.32535734492}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @e8ce5f0e4036764c void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @56b74e817d93757 void
                }, 
                => @10cdb69af37f1fac 
                {
                  position = 119.364956994, 
                  key = {x = -0.670904564467, y = -0.302597534755}, 
                  inputInterpolator = => 'BezierKeyframeInterpolator(EulerAngles) @dc5cb0ed6a629079 
                  {
                    slope = {x = -0.0562053356105, y = 0.0324118244834}
                  }, 
                  outputInterpolator = => 'BezierKeyframeInterpolator(EulerAngles) @2b79012df7503990 
                  {
                    slope = {x = -0.0218116892545, y = 0.0321565907108}
                  }
                }, 
                => @663038b70bab4f75 
                {
                  position = 133.125096136, 
                  key = {x = -0.012217304764, y = 3.0647981665}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @a3f621fb2f0406ab void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @86932eca0414ae9a void
                }, 
                => @be57879c30badc9d 
                {
                  position = 133.127608657, 
                  key = {x = 1.86750229963}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @21a0e797a63e7874 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @864817606c45f05f void
                }, 
                => @b3231381576fb798 
                {
                  position = 133.185844626, 
                  key = {x = 0.66497044501}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @82f32ef59ab27f13 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @79977720db991762 void
                }, 
                => @99ac184304b1132d 
                {
                  position = 137.424903468, 
                  key = {x = 0.687659725286}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @f0aa892db4cdb5c4 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @44b974509516746f void
                }, 
                => @4bbef2a544708853 
                {
                  position = 137.43201352, 
                  key = {x = 0.0680678408278, y = 1.42418866963}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @15ac71ef76adefa2 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @27e5b8bd6d8be8a5 void
                }, 
                => @547625452ebc4116 
                {
                  position = 141.652645115, 
                  key = {x = -0.218166156499, y = 1.60919357034}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @2e4c0c85a60f8c99 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @30877c5b3e7df6a0 void
                }, 
                => @f5410011251893af 
                {
                  position = 141.656510485, 
                  key = {x = -0.183259571459}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @895ca42caf04316e void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @5bed63204118bd91 void
                }, 
                => @e81a5f8cf33d5ced 
                {
                  position = 149.502433257, 
                  key = {x = -0.183259571459}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @def0e84d03dcdb27 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @c55198823b9c1e06 void
                }, 
                => @65cecb081305ff8 
                {
                  position = 149.505774883, 
                  key = {x = -0.193259447813, y = -1.27999985218}, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @baa3c55eecf754f3 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @d005bd8a17b72c42 void
                }, 
                => @59f6a76330a18a04 
                {
                  position = 149.503658555, 
                  key = {x = -0.183265235907, y = -0.000725058289156}, 
                  inputInterpolator = => 'StepKeyframeInterpolator @ca7cbec4df6cb5f2 void, 
                  outputInterpolator = => 'StepKeyframeInterpolator @1139725ed05f8b35 void
                }
              }
            }
          }
        }, 
        {
          key = => 'WeakPointer(Object) @9a542f17e8a8eb {"data", -> @6b107975ebc42c68, "distance"}, 
          value = => 'ParameterTrack({input = Seconds, output = PositiveReal}) @d3094116b8770e1a 
          {
            function = => 'KeyframeFunction({input = Seconds, output = PositiveReal}) @7aa7b2e50d545d1d 
            {
              keyframes = 
              {
                => @ff8293b6da80ea05 
                {
                  position = 41.6675167646, 
                  key = 5.74, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @1de0f90bedc0222c void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @6c77374c821214c7 void
                }, 
                => @1a72d9656e4b2bed 
                {
                  position = 59.103719294, 
                  key = 3.5, 
                  inputInterpolator = => 'LinearKeyframeInterpolator @f8d66a4c83f4a1f4 void, 
                  outputInterpolator = => 'LinearKeyframeInterpolator @838af4dcdd9a2cef void
                }
              }
            }
          }
        }
      }
    }, 
    renderables = 
    {
      => 'ReferencedFileSoundTrack @b035c11f4e3b2293 
      {
        activation = "inactive", 
        tools = 
        {
          => 'ReferencedMidiFile @b9a681f81f4ca5d8 
          {
            activation = "activationRequested", 
            transport = {state = "paused", length = 174.5456}, 
            file = {path = "Pianomania_-_step_4-2_-_keyb_generation_-_channel_1_only_-_mode_0.mid"}
          }
        }, 
        file = {path = "Pianomania_-_step_4_-_110_BPM_-_avec_retard_sur_MIDI.ac3"}, 
        transport = {state = "finalized", position = 155.585238095, length = 155.585238095}, 
        streamerSettings = {fileBuffer = 3, fileBackBuffer = 0}
      }, 
      => 'Layer @617d8bf95e281637 
      {
        label = "Fireworks", 
        generator = => 'Compo @2bf62c6549c3e7d6 
        {
          currentCamera = {"data", -> @b51b5e4d54718f2f}, 
          cameras = 
          {
            => 'AffineCamera @b51b5e4d54718f2f 
            {
              label = "fireworks camera", 
              placement = => 'PositionOrientation3dPlacement @4521959a3eb5b151 
              {
                position = {x = -3.483414, y = 2.300118, z = 2.809324}, 
                orientation = {x = -0.193259447813, y = -1.27999985218}
              }, 
              frustum = => 'FieldOfViewPerspectiveFrustum @315503de6c487586 
              {
                clippingDistances = {center = 358.148238, size = 716.153231032, begin = 0.0716224834323, end = 716.224853516}, 
                vertical = 0.57770398241, 
                ratio = {p = 19429, q = 10000}
              }
            }
          }, 
          renderables = 
          {
            => 'Layer @60ad5bc491cdec09 
            {
              generator = => 'ReferenceLayerGenerator @eadcf3ece835e470 
              {
                extractor = => 'Parametric2dPlacement @ecf3a47d6dd3632b 
                {
                  anchor = {x = 0., y = 0.}, 
                  position = {x = 0., y = 0.}, 
                  scale = => 'SizePlacement2dScale @339ed763517300fa {size = {width = 1., height = 1., ratio = 1.}}
                }, 
                referencer = {shared = True, address = {elementPointer = {"data", -> @b4064f72ac5a65a8, "content"}}}
              }, 
              renderer = => 'SingleLayerRenderer @3121debb2922281d 
              {
                opacity = 0., 
                placement = => 'Parametric2dPlacement @ddaf06430aa353f4 
                {
                  scale = => 'ScaleFactorPlacement2dScale @a154a7ea23812f5f void
                }
              }
            }, 
            => 'SkyboxRenderable @a39604a391877422 
            {
              preset = {libraryName = "Default", presetName = "Velvet Night"}, 
              map = => 'ReferenceDirectionalMapGenerator @d848030d772322f5 
              {
                referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
              }
            }, 
            => 'ReflectionProbe @e6ed20fc3a34836f 
            {
              resolution = 2048, 
              boxProjection = {value = {x = 103.191797, y = 103.191797, z = 103.191797, linked = True}}
            }, 
            => 'ShaderRayTracedRenderable @9d70bcf74f273f03 
            {
              label = "PianoAndSea", 
              image = "// brought to you by Julien De Loor (twitter @lamogui42)
// Le laboratoire D rpz


uniform bool rainbow = false;
uniform vec2 amplitude = vec2(1.0, 1.0);
uniform vec2 frequency = vec2(0.5, 0.5);
uniform float rotate_speed = 2.0;
uniform float rotate_amplitude = 0.15;
uniform float rotate_frequency = 1.0;
uniform float z_speed = 0.0;
uniform bool repeat = false;
uniform vec3 white_keys = Color(1.0, 1.0, 1.0); 
uniform vec3 black_keys = Color(0.2, 0.2, 0.2); 

uniform FunctionShape keyboard;
uniform DirectionalMap sky;
uniform DirectionalMap fireworks;
uniform Texture seaNoise;


float sdBox( vec3 p, vec3 b )
{
  vec3 d = abs(p) - b;
  return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));
}

float ChamferBox(vec3 op, vec3 b, float ch, float r) 
{
  float minb=min(b.x,min(b.y,b.z));
  b.x=max(b.x,ch+r);
  b.y=max(b.y,ch+r);
  b.z=max(b.z,ch+r);
  vec3 p = max(abs(op)-b+vec3(ch)+vec3(r),0.0 );
  vec3 n=abs(normalize(p) ); 
  float chr=ch/(dot( n , 1.0*normalize( vec3(1,1,1))) );
 return length(max(p-n*chr,0.0))  -r ;
}

vec3 curve(float z) 
{
  return vec3(amplitude.x * cos(z * frequency.x), amplitude.y *  sin(z * frequency.y), z);
}


// Generate the local space on the curve
mat3 localSpace(float z)
{
  float eps = 0.01;
  vec3 forward = normalize(curve(z + eps) - curve(z - eps));
  vec3 right = normalize(vec3(-curve(z).xy, 0.0));
  vec3 up = normalize(cross(forward, right));
  right = normalize(cross(forward, up));
  return mat3(right, up, forward);
}

#define MAT_VOID 0.0
#define MAT_WHITE 1.0
#define MAT_BLACK 2.0
#define MAT_GROUND 3.0


uniform float time = StandalonePlayableCueTransport;

float magic_function(float x)
{
  return 0.0;
  float a = abs(cos(x));
  float b = abs(sin(x));
  return 0.4 - 0.3 * pow(a+b, 0.8); 
}

vec2 mmin(vec2 v, float d, float m) 
{
 return v.x < d ? v : vec2(d, m);
}

mat2 rot2d(float a)
{
  float c = cos(a);
  float s = sin(a);
  return mat2(c, -s, s, c);
}

vec2 mirrored(vec2 v) 
{
  vec2 m = mod(v, 2.0);
  return mix(m, 2.0 - m, step(1.0, m));
}

mat3 uvToMat3(vec2 uv)
{
  return mat3(vec3(0.001, 0.0, 0.0), vec3(0.0, 0.001, 0.0), vec3(mirrored(uv), 1.0));
}

vec2 map(vec3 p)
{

  vec2 d = vec2(10000000.0, MAT_VOID);


  const int numOctaves = 7;
  float period = 0.22;
  float u = 8.0;

  float largeur = 0.48 * numOctaves * period * u;

  // sol 
  float sh = seaNoise.compute(uvToMat3(p.xz * 0.02)).x;

  d = mmin(d, p.y + 2.5 -sh , MAT_GROUND);
  if (length(p) > 8.0) // 
    return d;

  // Dessous des touches
  d = mmin(d, ChamferBox(p - vec3(period * 0.5, -.4, 0.0), vec3(largeur, 0.3, 1.15), 0.05, 0.01), MAT_BLACK);
  /// Arriere
  vec3 a = p;
  a.yz = rot2d(0.05 * (p.y + 2.0)) * a.yz;
  d = mmin(d, sdBox(a - vec3(period * 0.5, -0.8, -2.2), vec3(largeur, 1.5, 1.3)), MAT_BLACK);
  // rendre beau la reflection 
  d = mmin(d, sdBox(p - vec3(period * 0.5, 0.0, -0.9), vec3(largeur - 0.2, 0.5, 0.4)), MAT_BLACK);
  

  vec3 w = p;
  w.x -= period * 0.5;
  w.x = abs(w.x);
  d = mmin(d, ChamferBox(w - vec3(largeur - 0.25, 0.0, -0.1), vec3(0.32, 0.6, 1.3), 0.01, 0.05), MAT_BLACK);
  p.z = -p.z;

  
  p.x += numOctaves * u * period * 0.5 - u * period * 0.5;
  p.xz = rot2d(-3.1415 * 0.5) * p.xz;
  

  if (repeat)
    p.x = mod(p.x - u * 0.5, u) - u * 0.5;

  p = vec3(p.xy - curve(p.z).xy, p.z);
  p.xy = rot2d(sin(p.z * rotate_frequency + time * rotate_speed) * rotate_amplitude) * p.xy;

  //p = localSpace(p.z) * (p - curve(p.z)) + curve(p.z);

  vec3 q = p;
  int id_white = int(mod((q.z) / (period), 7.0));
  int octave_white = int(mod((q.z ) / (period), 7.0 * float(numOctaves))) / numOctaves;

  float l = period * float(numOctaves) * 7.0;

  if (q.z > 0.0 && q.z < l - 0.5 * period)
    q.z = mod(q.z, period) - period * 0.5;
  else 
    //return vec2(sdBox(p - vec3(0.0, 0.0, l * 0.5), vec3(1.0, 0.1, l * 0.5 * 0.999)), MAT_WHITE);
    return d; 
  vec3 q2 = p;
  q2.z += period * 0.5;
  
  int id_black = int(mod(q2.z / (period), 7.0));
  int octave_black = int(mod((q2.z ) / (period), 7.0 * float(numOctaves))) / numOctaves;

  int table_id_white[7];
  table_id_white[0] = 0;
  table_id_white[1] = 2;
  table_id_white[2] = 4;
  table_id_white[3] = 5;
  table_id_white[4] = 7;
  table_id_white[5] = 9;
  table_id_white[6] = 11;
  int table_id_black[7];
  table_id_black[0] = -1;
  table_id_black[1] = 1;
  table_id_black[2] = 3;
  table_id_black[3] = -1;
  table_id_black[4] = 6;
  table_id_black[5] = 8;
  table_id_black[6] = 10;

  float white_lvl = 0.0;
  float black_lvl = 0.0;

  float tex_o = 0.5 / float(12 * numOctaves);

  //for (int i = 0; i < 7; ++i)
  //{
    white_lvl = max(white_lvl, 1.8 * keyboard.compute(tex_o + float(table_id_white[id_white] + 12 * octave_white) / float(12 * numOctaves)));
    if (table_id_black[id_black] != -1)
      black_lvl = max(black_lvl, 1.8 * keyboard.compute(tex_o + float(table_id_black[id_black] + 12 * octave_black) / float(12 * numOctaves)));
  //}
  

  //if (q2.z > 0.0 && q2.z < period * 7.0 * 6.0 )
    q2.z = mod(q2.z, period) - period * 0.5;
  q2.y -= 0.15;
  q2.x += 0.4;
  float white = sdBox(q - vec3(-0.1, -white_lvl * 0.1, 0.0), vec3(0.9, 0.1, period * 0.48));
  d = mmin(d, white, MAT_WHITE);

  float black = 10000000.0;
  if (id_black != 0 && id_black != 3 && id_black != 7)
    black = ChamferBox(q2 - vec3(0.0, -0.1 - black_lvl * 0.1, 0.0),vec3(0.6, 0.17, period * 0.25), 0.01, 0.0);//sdBox(q2, vec3(0.65, 0.1, period * 0.25));
  

  return mmin(d, black, MAT_BLACK);
}


vec4 rm(vec3 ro, vec3 rd, out float st)
{
  st = 0.0;
  vec3 p = ro;
  float m = MAT_VOID;
  for (int i = 0; i < 256; ++i)
  {
    vec2 d = map(p);
    if (abs(d.x) > 100.0)
      return vec4(p, MAT_VOID);
    else if (abs(d.x) < 0.001)
    {
      st = float(i) / 256.0;
      m = d.y;
      break;
    }

    p += rd * d.x * 0.6;
    
  }
  return vec4(p, m);
}

vec3 grad(vec3 p)
{
  vec2 eps = vec2(0.001, 0.0);
    vec3 n = normalize(vec3(
    map(p + eps.xyy).x - map(p - eps.xyy).x,
    map(p + eps.yxy).x - map(p - eps.yxy).x,
    map(p + eps.yyx).x - map(p - eps.yyx).x));
  return n;
}

vec4 hsv_to_rgb(float h)
{
	float c = 1.;
	h = mod((h * 6.0), 6.0);
	float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
	vec4 color;
 
	if (0.0 <= h && h < 1.0) {
		color = vec4(c, x, 0.0, 1.);
	} else if (1.0 <= h && h < 2.0) {
		color = vec4(x, c, 0.0, 1.);
	} else if (2.0 <= h && h < 3.0) {
		color = vec4(0.0, c, x, 1.);
	} else if (3.0 <= h && h < 4.0) {
		color = vec4(0.0, x, c, 1.);
	} else if (4.0 <= h && h < 5.0) {
		color = vec4(x, 0.0, c, 1.);
	} else if (5.0 <= h && h < 6.0) {
		color = vec4(c, 0.0, x, 1.);
	} else {
		color = vec4(0.0, 0.0, 0.0, 1.);
	}
	return color;
}

vec3 shade(vec3 origin, vec3 p, vec3 n, vec3 rd, float st, float m)
{
  vec3 color = vec3(exp(-distance(p, origin) * 0.1) * (1.0 - st));
  if (m == MAT_WHITE)
  {
    color += vec3(0.3);
    color *= white_keys;
    color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m== MAT_BLACK || m==MAT_GROUND)
  {
    if (rainbow)
      color *= hsv_to_rgb(p.z + time).rgb;
    else 
      color *= black_keys;
    color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m == MAT_VOID)
  {
    vec3 d = rd;
    color = sky.computeRotated(d, 0.001).rgb;
    color += fireworks.compute(fireworks.getProjectedDirection(p,d), 0.01).rgb * fireworks.compute(d, 0.01).a;
  }
  return color;
}



vec4 main(in vec3 origin, in vec3 direction, in ivec2 px, out vec3 intersectionPoint)
{
  float st=0.0;
  vec3 ro = origin + vec3(0.0, 0.0, time * z_speed);
  vec4 r = rm(ro, direction, st);

  if (r.w == MAT_VOID)
    discard;

  //else if (r.w == MAT_GROUND)
  //  discard;

  vec3 p = r.xyz;
  vec3 n = grad(p);

  vec3 color = shade(ro, p, n, direction, st, r.w);

  intersectionPoint = p;
  
  vec3 rd2 = reflect(direction, n);
  vec3 ro2 = p + 0.01 * rd2;

  vec4 r2 = rm(ro2, rd2, st);
  vec3 p2 = r2.xyz;
  vec3 n2 = grad(p2);
  
  vec3 color2 = shade(ro, p2, n2, rd2, st, r2.w);
  color = mix(color, color2, 0.4);
  //color = vec3(keyboard.compute(direction.x), keyboard.compute(direction.y), keyboard.compute(direction.z));
  return vec4(color, 1.0);
}", 
              dynamicVariables = 
              {
                => 'DynamicVariable(Boolean) @e01aa16941c67818 
                {
                  friendlyName = "Rainbow", 
                  parameters = 
                  {
                    {
                      key = => @f96387b20d731560 "glslName", 
                      value = => @e52532d0663b075b => "rainbow"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Vector2d) @d9d352094df7861c 
                {
                  friendlyName = "Amplitude", 
                  parameters = 
                  {
                    {
                      key = => @41405eda6ec98cd "glslName", 
                      value = => @9186595083b081e4 => "amplitude"
                    }
                  }, 
                  value = {x = 0., y = 0.}
                }, 
                => 'DynamicVariable(Vector2d) @73fa15f959887050 
                {
                  friendlyName = "Frequency", 
                  parameters = 
                  {
                    {
                      key = => @16ad187b77c9ba8e "glslName", 
                      value = => @1677a6dc661bdc11 => "frequency"
                    }
                  }, 
                  value = {x = 0.5, y = 0.5}
                }, 
                => 'DynamicVariable(Real) @2ff6da8c678c5dd4 
                {
                  friendlyName = "Rotate_speed", 
                  parameters = 
                  {
                    {
                      key = => @1731993dc884d5f3 "glslName", 
                      value = => @4d36fa5cb67823e2 => "rotate_speed"
                    }
                  }, 
                  value = 2.
                }, 
                => 'DynamicVariable(Real) @5c2390627f9c4aa8 
                {
                  friendlyName = "Rotate_amplitude", 
                  parameters = 
                  {
                    {
                      key = => @5e679595bab19bc "glslName", 
                      value = => @1c075433a7e4dfa7 => "rotate_amplitude"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Real) @5e6b86b04f26bac 
                {
                  friendlyName = "Rotate_frequency", 
                  parameters = 
                  {
                    {
                      key = => @68511573ebe3ff89 "glslName", 
                      value = => @be04926e62b9fdf0 => "rotate_frequency"
                    }
                  }, 
                  value = 1.
                }, 
                => 'DynamicVariable(Real) @31c0c05e4995fce0 
                {
                  friendlyName = "Z_speed", 
                  parameters = 
                  {
                    {
                      key = => @8a63c0eaddbba7a "glslName", 
                      value = => @11bd1cdf8871b39d => "z_speed"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Boolean) @822ac49ffa066164 
                {
                  friendlyName = "Repeat", 
                  parameters = 
                  {
                    {
                      key = => @309b0bb49e5ba2df "glslName", 
                      value = => @964c5b85bc525f9e => "repeat"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Color) @54ecb3a0ecd1138 
                {
                  friendlyName = "White_keys", 
                  parameters = 
                  {
                    {
                      key = => @19b3adf1292c6048 "glslName", 
                      value = => @b5d685f441f8b743 => "white_keys"
                    }
                  }, 
                  value = {red = 1., green = 1., blue = 1.}
                }, 
                => 'DynamicVariable(Color) @9dd56e921cb5093c 
                {
                  friendlyName = "Black_keys", 
                  parameters = 
                  {
                    {
                      key = => @48dcd0ecc6d4fc75 "glslName", 
                      value = => @5daba9d1d35a5b4c => "black_keys"
                    }
                  }, 
                  value = {red = 0.2, green = 0.2, blue = 0.2}
                }, 
                => 'DynamicVariable(OwnedPointer(FunctionShape)) @c7e713a430e56570 
                {
                  friendlyName = "Keyboard", 
                  parameters = 
                  {
                    {
                      key = => @d8ed96d20505cc59 "glslName", 
                      value = => @7ee6ab7ab44b4180 => "keyboard"
                    }
                  }, 
                  value = => 'MidiKeyboardFunctionShape @e6c00fb807c5f1b1 
                  {
                    device = "Midi Files", 
                    noteEnvelope = {attack = 0.}, 
                    noteRange = {from = "C0", to = "B6"}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(DirectionalMapGenerator)) @9742498a80af8b1e 
                {
                  friendlyName = "Sky", 
                  parameters = 
                  {
                    {
                      key = => @26324ee6e1d6b76d "glslName", 
                      value = => @7646164608fcdc04 => "sky"
                    }
                  }, 
                  value = => 'ReferenceDirectionalMapGenerator @c7452cc43212a53d 
                  {
                    referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(DirectionalMapGenerator)) @96e889dc4bc16acc 
                {
                  friendlyName = "Fireworks", 
                  parameters = 
                  {
                    {
                      key = => @2a9afc314d53cb1 "glslName", 
                      value = => @63f01bb233426d8 => "fireworks"
                    }
                  }, 
                  value = => 'ReflectionProbeDirectionalMapGenerator @aa63064a32e0cde {reflectionProbe = {"data", -> @e6ed20fc3a34836f}}
                }, 
                => 'DynamicVariable(OwnedPointer(LayerGenerator)) @4c5b70438dd98dca 
                {
                  friendlyName = "Sea Noise", 
                  parameters = 
                  {
                    {
                      key = => @db757527b6e74702 "glslName", 
                      value = => @db612021db693545 => "seaNoise"
                    }
                  }, 
                  value = => 'ReferenceLayerGenerator @26392aba7f37b322 
                  {
                    extractor = => 'Parametric2dPlacement @285b11cfc84967e5 
                    {
                      anchor = {x = 0., y = 0.}, 
                      position = {x = 0., y = 0.}, 
                      scale = => 'SizePlacement2dScale @30a6a90f67d3b3fc {size = {width = 1., height = 1., ratio = 1.}}
                    }, 
                    referencer = {shared = True, address = {elementPointer = {"data", -> @b4064f72ac5a65a8, "content"}}}
                  }
                }, 
                => 'DynamicVariable(StandalonePlayableCueTransport) @567c87438b35ff0a 
                {
                  friendlyName = "Time", 
                  parameters = 
                  {
                    {
                      key = => @6a4bf99b020c3947 "glslName", 
                      value = => @e42c85130f26fba6 => "time"
                    }
                  }, 
                  value = 
                  {
                    reset = 0, 
                    play = 0, 
                    pause = 0, 
                    finalize = 0, 
                    previous = 0, 
                    next = 0, 
                    playing = False, 
                    state = "ready", 
                    position = 0., 
                    length = +oo, 
                    player = -> nil
                  }
                }
              }, 
              castReflections = False
            }, 
            => 'Node @16ef1e3abbba99e0 
            {
              label = "fireworks", 
              generator = => 'ParticlesNodeGenerator @52a05932f0b7de79 #1 
              {
                modifiers = 
                {
                  => 'PointAttributesNodeModifier @310280206c5e5e2 
                  {
                    selector = => 'AgeVertexMask @ba59993de18eef03 void, 
                    opacity = => 'KeyframeFunction({input = Percentage, output = Percentage}) @aa723d278603a8c 
                    {
                      keyframes = 
                      {
                        => @38230035f004c0b5 
                        {
                          key = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @7939fd15dc688ee void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @89c832b212951d3f void
                        }, 
                        => @4fe701b0351e4498 
                        {
                          position = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @d69c012f589ea331 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @65547ee331f012da void
                        }, 
                        => @a528becaebd8fd43 
                        {
                          position = 0.190256959315, 
                          key = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @40de72ef22e3e5f2 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @a022e95a80b11a75 void
                        }
                      }
                    }, 
                    color = => 'KeyframeFunction({input = Percentage, output = ColorWithAlpha}) @a463f2f21a3d711b 
                    {
                      keyframes = 
                      {
                        => @9857c5ff33caa024 
                        {
                          key = {red = 1., green = 1., blue = 1., alpha = 1.}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @a660917fe64fa1cd void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @1abfce64efa0ac46 void
                        }, 
                        => @390cdf26d25e87b7 
                        {
                          position = 1., 
                          key = {red = 1., green = 1., blue = 1., alpha = 1.}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @cb54e675a3cfbcb0 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @18fff4040d95d4c9 void
                        }
                      }
                    }, 
                    scale = => 'KeyframeFunction({input = Percentage, output = Size3d(Real)}) @3f8d78bef6dd0532 
                    {
                      keyframes = 
                      {
                        => @1ebd6bb245ca1813 
                        {
                          key = {linked = True}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @157f987e6794625c void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @95df2ab567ebc05 void
                        }, 
                        => @b3ebb0cd8bbd053e 
                        {
                          position = 1., 
                          key = {linked = True}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @8c26d3a96141c70f void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @2a52287b1df5e1a8 void
                        }
                      }
                    }, 
                    rotation = => 'KeyframeFunction({input = Percentage, output = EulerAngles}) @1e0febfca95ff781 
                    {
                      keyframes = 
                      {
                        => @8b694988ccb6986a 
                        {
                          inputInterpolator = => 'LinearKeyframeInterpolator @1a04e76d6e7ac86b void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @2ea0e658f221c1f4 void
                        }, 
                        => @73321c544092bb5d 
                        {
                          position = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @fa1df48b9055ee96 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @29829d9b2ba7bf87 void
                        }
                      }
                    }
                  }, 
                  => 'RotateNodeModifier @a6321f84d0a4c59f 
                  {
                    masks = 
                    {
                      => 'RandomVertexMask @29d0e9a9d99ad79b void
                    }, 
                    angles = {z = 3.14159265359}
                  }
                }, 
                transport = {state = "paused", player = -> nil}, 
                emissionParameters = {rate = 20., speed = 1.356, speedRandom = 0.3, manualEmit = {count = 3}, maximumCount = 5000000}, 
                positions = => 'LinePositionSampler @e0dbabe75835fa51 {segment = {begin = {x = -6.}, end = {x = 6.7, y = 0.}}}, 
                directions = => 'ParallelDirectionSampler @a9b5934bd7a7d1d5 {spread = 0.626573201466}, 
                fields = 
                {
                  => 'GravityField @a5f9337bd3c828a5 
                  {
                    masks = 
                    {
                      => 'GroupSelectorVertexMask @c0d28f9acf81b86 {rangeMinimum = 2, rangeMaximum = 3}
                    }, 
                    force = {y = -0.8064}
                  }
                }, 
                rules = 
                {
                  => 'EventParticleRule @2e6293a1745df8d2 
                  {
                    condition = => 'AgeParticleCondition @f70cb7b443725ed5 {threshold = 0.2}, 
                    actions = 
                    {
                      => 'ChangeGroupParticleAction @e936c1711280508f void
                    }
                  }, 
                  => 'EventParticleRule @19d1bde66c00ab08 
                  {
                    groupFilter = {value = 2}, 
                    condition = => 'MaskParticleCondition @1aefce0511e6903 
                    {
                      mask = => 'FunctionVertexMask @40c427190c3f1019 
                      {
                        mask = => 'NoiseVertexMask @995df284631f46f8 
                        {
                          noise = 
                          {
                            function = => 'PerlinNoiseFunction @8123cf7c30183333 void
                          }
                        }, 
                        function = => 'ParametricScalarFunction({input = Percentage, output = Percentage}) @1f3436237e5bc94a 
                        {
                          shape = => 'MidiKeyboardFunctionShape @30563bfde3079f2d 
                          {
                            samplingParameters = {magnificationFilter = True}, 
                            convolution = 
                            {
                              windowWidth = 0.047, 
                              shape = => 'QuadFunctionShape @4a349037edf6c6b1 void
                            }, 
                            device = "Midi Files", 
                            noteEnvelope = {sustainLevel = 0.}, 
                            noteRange = {from = "C1", to = "B6"}
                          }, 
                          parameters = {maximum = 1., period = 1., wrapMode = "clamp"}
                        }
                      }, 
                      threshold = 0.1
                    }, 
                    actions = 
                    {
                      => 'EmitParticleAction @f047fbdc0b1a3707 
                      {
                        numParticles = 30, 
                        actions = 
                        {
                          => 'ChangeGroupParticleAction @b186bef80a0a0208 void, 
                          => 'ColorizeParticleAction @cbbcd639abb58f42 {color = {green = 0.524782478809, blue = 0.465995043516}}
                        }, 
                        speed = 1.26, 
                        directions = => 'RandomDirectionSampler @230c8f674a6525f1 void
                      }
                    }
                  }
                }
              }, 
              placement = => 'PositionOrientationSize3dPlacement @383076f0dad87bc4 
              {
                position = {y = -2.5, z = -33.5851783752}, 
                size = {x = 3.83946984, y = 3.83946984, z = 3.83946984}
              }, 
              users = 
              {
                => 'GroupNodeUser @e81af524c1556dcc 
                {
                  label = "Group", 
                  placement = => 'PositionOrientationSize3dPlacement @32c070e564fe9977 void, 
                  modifiers = 
                  {
                    => 'EmitParticlesNodeModifier @3a4a5ac0cf2c55ab #1 
                    {
                      transport = 
                      {
                        state = "playing", 
                        position = 511.412153411, 
                        player = => @c128c1c9f715d234 {parameters = {launchMode = "restartWithActivation", out = {value = +oo}}}
                      }, 
                      emissionParameters = {rate = 60000., lifeTime = 5.}, 
                      directions = => 'NormalDirectionSampler @3c13c83f864fe29d void, 
                      fields = 
                      {
                        => 'TurbulenceField @f275e635f0a051d2 
                        {
                          masks = 
                          {
                            => 'AgeVertexMask @8c897bbf591f93f9 void
                          }, 
                          noise = 
                          {
                            function = => 'PerlinNoiseFunction @e5baa1e8962a37b3 void, 
                            scale = {x = 0.2, y = 0.2, z = 0.2}
                          }, 
                          forceStrength = 20.
                        }
                      }
                    }, 
                    => 'PointAttributesNodeModifier @c48bbfe684bc87a6 
                    {
                      selector = => 'AgeVertexMask @2597bd61f2102429 void, 
                      opacity = => 'KeyframeFunction({input = Percentage, output = Percentage}) @a7ec683fd262d210 
                      {
                        keyframes = 
                        {
                          => @c2ab2fa5c172ce4b 
                          {
                            key = 1., 
                            inputInterpolator = => 'LinearKeyframeInterpolator @125a235d15d4019a void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @bfb3c3ddba67c23d void
                          }, 
                          => @8e348fc546028394 
                          {
                            position = 1., 
                            inputInterpolator = => 'LinearKeyframeInterpolator @1a40de709a1ca47f void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @f861387fddd9c5be void
                          }, 
                          => @33bcd0435cdbbe6 
                          {
                            position = 0.699887133183, 
                            key = 1., 
                            inputInterpolator = => 'LinearKeyframeInterpolator @8afb71881f268d69 void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @303cc9e8a0270850 void
                          }
                        }
                      }, 
                      color = => 'KeyframeFunction({input = Percentage, output = ColorWithAlpha}) @5bad89f91969ce81 
                      {
                        keyframes = 
                        {
                          => @1ccb013db594ad68 
                          {
                            key = {red = 1., green = 1., blue = 1., alpha = 1.}, 
                            inputInterpolator = => 'LinearKeyframeInterpolator @5e4ffae7492b2e3 void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @3fcf9850e0a6af12 void
                          }, 
                          => @8ce4a56bc48e9a15 
                          {
                            position = 1., 
                            key = {red = 1., green = 1., blue = 1., alpha = 1.}, 
                            inputInterpolator = => 'LinearKeyframeInterpolator @4e187b0e8336966c void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @ecf013dd040b3597 void
                          }
                        }
                      }, 
                      scale = => 'KeyframeFunction({input = Percentage, output = Size3d(Real)}) @f3b9628879bcb2b6 
                      {
                        keyframes = 
                        {
                          => @177633b289972cf9 
                          {
                            key = {linked = True}, 
                            inputInterpolator = => 'LinearKeyframeInterpolator @23f94aa0978a4ea0 void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @4e773526afd7059b void
                          }, 
                          => @b3b79fcc27498faa 
                          {
                            position = 1., 
                            key = {linked = True}, 
                            inputInterpolator = => 'LinearKeyframeInterpolator @6b4954337cf790d void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @a4ddc21ddf639724 void
                          }
                        }
                      }, 
                      rotation = => 'KeyframeFunction({input = Percentage, output = EulerAngles}) @807899551078eecf 
                      {
                        keyframes = 
                        {
                          => @6884c9ab952402ce 
                          {
                            inputInterpolator = => 'LinearKeyframeInterpolator @cf158d7a8645e951 void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @67206afcbb736bf8 void
                          }, 
                          => @955c53fb402eb033 
                          {
                            position = 1., 
                            inputInterpolator = => 'LinearKeyframeInterpolator @7348d61dfe494722 void, 
                            outputInterpolator = => 'LinearKeyframeInterpolator @ae095cd7e3740be5 void
                          }
                        }
                      }
                    }
                  }, 
                  renderers = 
                  {
                    => 'SpritePointsNodeRenderer @d1d0abdc17b89795 
                    {
                      opacity = 0.645, 
                      blendingMode = "linearDodge", 
                      depthBuffer = {write = False}, 
                      size = {objectSpaceSize = {width = 0.03, height = 0.03, ratio = 1.}}, 
                      placement = {referential = "sphericalCamera"}, 
                      sprites = 
                      {
                        selector = => 'AgeVertexMask @bb9df11e300bcd4e void
                      }, 
                      maps = 
                      {
                        => 'ReferencedImageLayerGenerator @a26577b7d267ed1f 
                        {
                          extractor = => 'Parametric2dPlacement @8392e4cc784da678 
                          {
                            anchor = {x = 0., y = 0.}, 
                            position = {x = 0., y = 0.}, 
                            scale = => 'SizePlacement2dScale @b3d1db347868c411 {size = {width = 1., height = 1., ratio = 1.}}
                          }, 
                          interpretAlpha = 
                          {
                            value = => 'StraightAlphaInterpreter @f73debb662a31567 void
                          }, 
                          file = {path = "Dot White b.png"}
                        }
                      }
                    }, 
                    => 'SimplePointsNodeRenderer @e49b4c75fa4f7a8e 
                    {
                      activation = "inactive", 
                      opacity = 0.727, 
                      blendingMode = "linearDodge", 
                      depthBuffer = {write = False}, 
                      map = => 'UniformLayerGenerator @4fa2870f1d0c9c11 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }, 
                      size = 3.
                    }
                  }
                }, 
                => 'SpritePointsNodeRenderer @89e1962235048913 
                {
                  blendingMode = "linearDodge", 
                  depthBuffer = {write = False}, 
                  size = {objectSpaceSize = {width = 0.4, height = 0.4, ratio = 1.}}, 
                  placement = {referential = "sphericalCamera"}, 
                  sprites = 
                  {
                    selector = => 'RandomVertexMask @2d9b78711030b582 void
                  }, 
                  maps = 
                  {
                    => 'ReferencedImageLayerGenerator @47b03efa6a8cd5c5 
                    {
                      extractor = => 'Parametric2dPlacement @f311db409b534b5c 
                      {
                        anchor = {x = 0., y = 0.}, 
                        position = {x = 0., y = 0.}, 
                        scale = => 'SizePlacement2dScale @c4008b0f64a2dc7 {size = {width = 1., height = 1., ratio = 1.}}
                      }, 
                      interpretAlpha = 
                      {
                        value = => 'StraightAlphaInterpreter @297c26022a26da46 void
                      }, 
                      file = {path = "Shimer 01.png"}
                    }
                  }
                }
              }
            }
          }
        }, 
        renderer = => 'SingleLayerRenderer @760d111921f5b399 
        {
          placement = => 'Parametric2dPlacement @e597a21f2f4d3ec0 
          {
            scale = => 'ScaleFactorPlacement2dScale @61e968f2d3ff883b void
          }
        }
      }, 
      => 'Layer @105005ed6db3c479 
      {
        activation = "inactive", 
        label = "spheres", 
        generator = => 'Compo @e71eb0bead20f92 
        {
          activation = "activationRequested", 
          modifiers = 
          {
            => 'DepthOfFieldLayerModifier @ec2c71b52802648f 
            {
              activation = "inactive", 
              blurModifier = 
              {
                activation = "activationRequested", 
                shape = => 'GaussianBlurShape @67246bac989a8f8e {activation = "activationRequested"}, 
                samples = {distance = {width = 0.00208333333333, height = 0.0037037037037, ratio = 0.5625}}
              }, 
              focusParameters = {distance = 7.14}
            }, 
            => 'ChromaticAberrationLayerModifier @ad07914bc1704124 {activation = "inactive", iteration = 7, distortion = 6.8}, 
            => 'SobelLayerModifier @9015006bd7fdf330 
            {
              activation = "inactive", 
              size = {width = 0.000520833333333, height = 0.000925925925926, ratio = 0.5625}, 
              threshold = 0.06, 
              edgesColor = {red = 1., green = 1., blue = 1.}, 
              colorizeEdgesWithSource = True
            }
          }, 
          processor = {activation = "activationRequested"}, 
          currentCamera = {"data", -> @ea731764090e5d94}, 
          cameras = 
          {
            => 'AffineCamera @ea731764090e5d94 
            {
              activation = "activationRequested", 
              label = "Sphere camera", 
              preset = {libraryName = "Default", presetName = "Front Perspective Camera"}, 
              placement = => 'PositionOrientation3dPlacement @3454e9e656b9c260 
              {
                activation = "activationRequested", 
                position = {x = 5.12308216095, y = 1.750115, z = 4.74088335037}, 
                orientation = {x = -0.0799996554852, y = 0.810000181198}
              }, 
              focusParameters = {distance = 7.14}, 
              frustum = => 'FieldOfViewPerspectiveFrustum @e4cd10ec31282b6 
              {
                activation = "activationRequested", 
                clippingDistances = {center = 355.673655853, size = 711.205056459, begin = 0.0711276233196, end = 711.276184082}, 
                horizontal = 1.0472, 
                vertical = 0.198967534727, 
                ratio = {p = 57843, q = 10000}
              }
            }
          }, 
          renderables = 
          {
            => 'ProjectorLight @f653dc8683d5ec17 
            {
              activation = "activationRequested", 
              placement = => 'PositionOrientation3dPlacement @668e81bf96f60a70 
              {
                activation = "activationRequested", 
                position = {y = -2.5}, 
                orientation = {x = 1.57079632679}
              }, 
              diffuse = {level = 4.}, 
              attenuation = => 'FalloffFunction(PositiveMeters) @fafecc45ad136a99 
              {
                activation = "activationRequested", 
                interval = {center = 7.5, size = 15., end = 15.}
              }, 
              shadowParameters = {resolution = {preset = "oneKSquare"}}, 
              frustum = => 'FieldOfViewPerspectiveFrustum @547804fdf87526b2 
              {
                activation = "activationRequested", 
                clippingDistances = {center = 7.5075, size = 14.985, begin = 0.015, end = 15.}
              }, 
              generator = => 'UniformLayerGenerator @2ef0620b7ae2e533 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'MaskLayerModifier @49a8dc964972124e 
                  {
                    activation = "activationRequested", 
                    masks = 
                    {
                      => 'RadialMask @70e8f32b0aa1e6d1 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        ellipse = {size = {width = 0.35, height = 0.35, ratio = 1.}}
                      }
                    }
                  }
                }, 
                resolution = {width = 1024, height = 1024}, 
                color = {red = 1., green = 1., blue = 1.}
              }
            }, 
            => 'ReflectionProbe @313b78003976c92a 
            {
              activation = "activationRequested", 
              position = {x = -1.85834431648, y = 0.520551025867, z = -0.985618114471}, 
              clippingDistances = {center = 9.125, size = 17.75, end = 18., automatic = False}, 
              boxProjection = {enabled = False, value = {x = 31.352625, y = 15.4999992984, z = 18.5083377567, linked = True}}
            }, 
            => 'SkyboxRenderable @abc372a8ec33622b 
            {
              activation = "activationRequested", 
              preset = {libraryName = "Default", presetName = "Velvet Night"}, 
              map = => 'ReferenceDirectionalMapGenerator @d01d75060a9734fc 
              {
                activation = "activationRequested", 
                referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
              }
            }, 
            => 'Node @8955121f8b0c5ed5 
            {
              activation = "inactive", 
              generator = => 'PlaneNodeGenerator @a63e417cd54cb2de #1 
              {
                activation = "activationRequested", 
                size = {width = 17.7777777778, height = 10., ratio = 1.77777777778}
              }, 
              placement = => 'PositionOrientation3dPlacement @f533c55d77906f {activation = "activationRequested"}, 
              users = 
              {
                => 'SurfaceNodeRenderer @6b108e8b22d251e8 
                {
                  activation = "activationRequested", 
                  side = "both", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @69cbd59a31dc01d1 
                    {
                      activation = "activationRequested", 
                      masks = 
                      {
                        => 'LayerVertexMask @d2a568c91bfb8a34 
                        {
                          activation = "activationRequested", 
                          horizontal = => 'TextureCoordinateVertexMask @59c1e746b8b0e90d {activation = "activationRequested"}, 
                          vertical = => 'TextureCoordinateVertexMask @d44621df164035d6 
                          {
                            activation = "activationRequested", 
                            coordinate = "vertical"
                          }, 
                          generator = => 'ReferenceLayerGenerator @6aa7dd90ec974477 
                          {
                            activation = "activationRequested", 
                            extractor = => 'Parametric2dPlacement @f487720c63e88fd0 
                            {
                              activation = "activationRequested", 
                              anchor = {x = 0., y = 0.}, 
                              position = {x = 0., y = 0.}, 
                              scale = => 'SizePlacement2dScale @695fa174754bcff9 {size = {width = 1., height = 1., ratio = 1.}}
                            }, 
                            referencer = {shared = True, address = {elementPointer = {"data", -> @aa22e2a094838f9a, "content"}}}
                          }, 
                          colorSelector = => 'ChannelColorSelector @28824fac6f9b2020 
                          {
                            activation = "activationRequested", 
                            function = => 'ColorLevelFunction @e49775aeaa6a4689 {activation = "activationRequested"}
                          }
                        }
                      }, 
                      map = => 'UniformLayerGenerator @6ba04720df02406a 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @8448b77116ea418b 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @b07c6285b725bdc4 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }
                  }
                }
              }
            }, 
            => 'Node @ad36a5dbf7e2ce8d 
            {
              activation = "activationRequested", 
              generator = => 'ParticlesNodeGenerator @894c465de5152d56 #1 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'PointAttributesNodeModifier @c87aaa8c24ae2c07 
                  {
                    activation = "activationRequested", 
                    selector = => 'AgeVertexMask @7ce544ff164da3a0 {activation = "activationRequested"}, 
                    opacity = => 'KeyframeFunction({input = Percentage, output = Percentage}) @c7ae2381c38b4409 
                    {
                      activation = "activationRequested", 
                      keyframes = 
                      {
                        => @238addbd90a8db62 
                        {
                          activation = "activationRequested", 
                          key = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @418d6261698d3423 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @ec1ec1dedf01a41c void
                        }, 
                        => @59204fd171c19575 
                        {
                          activation = "activationRequested", 
                          position = 1., 
                          key = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @63343b7a1375d9fe void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @51b0c0b844d51d8f void
                        }
                      }
                    }, 
                    color = => 'KeyframeFunction({input = Percentage, output = ColorWithAlpha}) @95d4557b7235c388 
                    {
                      activation = "activationRequested", 
                      keyframes = 
                      {
                        => @b3629d579cbb7e71 
                        {
                          activation = "activationRequested", 
                          key = {red = 1., green = 1., blue = 1., alpha = 1.}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @a535199c67acf50a void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @58cbb7851c79452b void
                        }, 
                        => @beafa4d16436ede4 
                        {
                          activation = "activationRequested", 
                          position = 1., 
                          key = {red = 1., green = 1., blue = 1., alpha = 1.}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @87e12f9ce8a3b3d void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @8deef5e0d8c43906 void
                        }
                      }
                    }, 
                    scale = => 'KeyframeFunction({input = Percentage, output = Size3d(Real)}) @577b2abd85680637 
                    {
                      activation = "activationRequested", 
                      keyframes = 
                      {
                        => @319e7ebe6e9e0e90 
                        {
                          activation = "activationRequested", 
                          key = {linked = True}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @5d76e76f7e6b47b9 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @db503eb47ea0b1d2 void
                        }, 
                        => @88aa8e9c7b497cd3 
                        {
                          activation = "activationRequested", 
                          position = 1., 
                          key = {linked = True}, 
                          inputInterpolator = => 'LinearKeyframeInterpolator @c36f36e7dd6d924c void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @4d07763062edfe5 void
                        }
                      }
                    }, 
                    rotation = => 'KeyframeFunction({input = Percentage, output = EulerAngles}) @ef231cf99750ebae 
                    {
                      activation = "activationRequested", 
                      keyframes = 
                      {
                        => @6a105848ba8485bf 
                        {
                          activation = "activationRequested", 
                          inputInterpolator = => 'LinearKeyframeInterpolator @928eb69077fee4f8 void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @3121137f5c347fe1 void
                        }, 
                        => @587c0be2d22eb1fa 
                        {
                          activation = "activationRequested", 
                          position = 1., 
                          inputInterpolator = => 'LinearKeyframeInterpolator @137ef504a337bdb void, 
                          outputInterpolator = => 'LinearKeyframeInterpolator @a339376dbc7831d4 void
                        }
                      }
                    }
                  }, 
                  => 'ScaleNodeModifier @8ce061576531b8f5 
                  {
                    activation = "activationRequested", 
                    preset = {libraryName = "Advanced Presets", presetName = "Random Scale"}, 
                    masks = 
                    {
                      => 'RandomVertexMask @fc5a3c9e47dcf77e {activation = "activationRequested"}
                    }, 
                    scale = {x = 0.01, y = 0.01, z = 0.01}
                  }, 
                  => 'ScaleFunctionNodeModifier @7a46966317fd0686 
                  {
                    activation = "activationRequested", 
                    preset = {libraryName = "Advanced Presets", presetName = "Scale Ease In Ease Out"}, 
                    mask = => 'AgeVertexMask @e4cb4c93ceba45b7 {activation = "activationRequested"}, 
                    function = => 'ParametricScalarFunction({input = Percentage, output = Real}) @bf5e3a05bd39810 
                    {
                      activation = "activationRequested", 
                      shape = => 'SinusFunctionShape @cad97257c9f5d339 {activation = "activationRequested"}, 
                      parameters = {maximum = 1., period = 1., wrapMode = "clamp"}
                    }
                  }, 
                  => 'OpacityNodeModifier @79704c7b711e28c5 
                  {
                    activation = "activationRequested", 
                    preset = {libraryName = "Default", presetName = "Noise"}, 
                    opacity = => 'FunctionVertexMask @1a2a88fdbb00ce0e 
                    {
                      activation = "activationRequested", 
                      mask = => 'NoiseVertexMask @3ffd9b7e4c760f8f 
                      {
                        activation = "activationRequested", 
                        noise = 
                        {
                          activation = "activationRequested", 
                          function = => 'PerlinNoiseFunction @8d2bd307a4b8cd88 {activation = "activationRequested"}
                        }, 
                        transport = 
                        {
                          player = => @77f8dbe3f759f837 
                          {
                            activation = "activationRequested", 
                            parameters = {launchMode = "restartWithActivation", out = {value = +oo}, looping = True}
                          }
                        }
                      }, 
                      function = => 'ParametricScalarFunction({input = Percentage, output = Percentage}) @2a5b94d79b69858 
                      {
                        activation = "activationRequested", 
                        shape = => 'NoiseFunctionShape @1ca0c55c6dd97ac1 
                        {
                          activation = "activationRequested", 
                          transport = {state = "playing"}, 
                          frequency = 16.1
                        }, 
                        parameters = {maximum = 0.979167, period = 1., wrapMode = "clamp"}
                      }
                    }
                  }
                }, 
                transport = 
                {
                  player = => @7ff8e648921e63ad 
                  {
                    activation = "activationRequested", 
                    parameters = {launchMode = "restartWithActivation", out = {value = +oo}, speed = 0.25}
                  }
                }, 
                emissionParameters = {initialCount = 0.5}, 
                positions = => 'SpherePositionSampler @63bb6096f8eb9a73 {activation = "activationRequested", sphere = {radius = 0.75}}, 
                directions = => 'RandomDirectionSampler @63ed1a4d1b2a25c0 {activation = "activationRequested"}, 
                fields = 
                {
                  => 'GravityField @1968dec69a15cd7c {activation = "activationRequested", force = {y = 0.1}}, 
                  => 'TurbulenceField @62db6cb7b496a35b 
                  {
                    activation = "activationRequested", 
                    intensity = 0.1, 
                    noise = 
                    {
                      activation = "activationRequested", 
                      function = => 'PerlinNoiseFunction @f64e98dc5fdfc354 {activation = "activationRequested"}
                    }
                  }
                }
              }, 
              placement = => 'PositionOrientation3dPlacement @e8fdb1b5f708729 {activation = "activationRequested", position = {y = -0.5}}, 
              users = 
              {
                => 'SpritePointsNodeRenderer @9549ed0ee2b59482 
                {
                  activation = "inactive", 
                  depthBuffer = {test = False}, 
                  sprites = 
                  {
                    selector = => 'AgeVertexMask @fc06d5ab21b161c3 {activation = "activationRequested"}
                  }, 
                  maps = 
                  {
                    => 'ReferencedImageLayerGenerator @cc02fa2279906cbc 
                    {
                      activation = "activationRequested", 
                      extractor = => 'Parametric2dPlacement @d8acb5c11d7f6615 
                      {
                        activation = "activationRequested", 
                        anchor = {x = 0., y = 0.}, 
                        position = {x = 0., y = 0.}, 
                        scale = => 'SizePlacement2dScale @88a046db7197491e {size = {width = 1., height = 1., ratio = 1.}}
                      }, 
                      file = {path = "Dot White b.png"}
                    }
                  }
                }, 
                => 'BallPointsNodeRenderer @b9a004ecb4621ac4 
                {
                  activation = "activationRequested", 
                  autoIlluminate = 0.75, 
                  ballsRadius = 0.025, 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @ecda0665ecb3719d 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @dda111d90995bb66 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }, 
                      blendingMode = "screen"
                    }, 
                    => 'SpecularSurfaceComponent @55a6192c8ab5ed97 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @28b9bf32f2086df0 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }
                  }
                }
              }
            }, 
            => 'ShaderRayTracedRenderable @cb884d8eadd7dd92 
            {
              activation = "activationRequested", 
              label = "Simple piano", 
              image = "// Bring to you by Julien De Loor (twitter @lamogui42)
// Le laboratoire D rpz


uniform bool rainbow = false;
uniform vec2 amplitude = vec2(1.0, 1.0);
uniform vec2 frequency = vec2(0.5, 0.5);
uniform float rotate_speed = 2.0;
uniform float rotate_amplitude = 0.15;
uniform float rotate_frequency = 1.0;
uniform float z_speed = 0.0;
uniform bool repeat = false;
uniform vec3 white_keys = Color(1.0, 1.0, 1.0); 
uniform vec3 black_keys = Color(0.2, 0.2, 0.2); 

uniform FunctionShape keyboard;
uniform DirectionalMap sky;
uniform DirectionalMap fireworks;

float sdBox( vec3 p, vec3 b )
{
  vec3 d = abs(p) - b;
  return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));
}

float ChamferBox(vec3 op, vec3 b, float ch, float r) 
{
  float minb=min(b.x,min(b.y,b.z));
  b.x=max(b.x,ch+r);
  b.y=max(b.y,ch+r);
  b.z=max(b.z,ch+r);
  vec3 p = max(abs(op)-b+vec3(ch)+vec3(r),0.0 );
  vec3 n=abs(normalize(p) ); 
  float chr=ch/(dot( n , 1.0*normalize( vec3(1,1,1))) );
 return length(max(p-n*chr,0.0))  -r ;
}

vec3 curve(float z) 
{
  return vec3(amplitude.x * cos(z * frequency.x), amplitude.y *  sin(z * frequency.y), z);
}


// Generate the local space on the curve
mat3 localSpace(float z)
{
  float eps = 0.01;
  vec3 forward = normalize(curve(z + eps) - curve(z - eps));
  vec3 right = normalize(vec3(-curve(z).xy, 0.0));
  vec3 up = normalize(cross(forward, right));
  right = normalize(cross(forward, up));
  return mat3(right, up, forward);
}

#define MAT_VOID 0.0
#define MAT_WHITE 1.0
#define MAT_BLACK 2.0
#define MAT_GROUND 3.0


uniform float time = StandalonePlayableCueTransport;

float magic_function(float x)
{
  return 0.0;
  float a = abs(cos(x));
  float b = abs(sin(x));
  return 0.4 - 0.3 * pow(a+b, 0.8); 
}

vec2 mmin(vec2 v, float d, float m) 
{
 return v.x < d ? v : vec2(d, m);
}

mat2 rot2d(float a)
{
  float c = cos(a);
  float s = sin(a);
  return mat2(c, -s, s, c);
}

vec2 mirrored(vec2 v) 
{
  vec2 m = mod(v, 2.0);
  return mix(m, 2.0 - m, step(1.0, m));
}

mat3 uvToMat3(vec2 uv)
{
  return mat3(vec3(0.001, 0.0, 0.0), vec3(0.0, 0.001, 0.0), vec3(mirrored(uv), 1.0));
}

vec2 map(vec3 p)
{
  vec3 hole = p;
  p.y -= 1.0;
  p.xz += 3.0;
  p.xz = rot2d(-1.0) * p.xz;
  
  p *= 3.0;
  vec2 d = vec2(10000000.0, MAT_VOID);


  const int numOctaves = 7;
  float period = 0.22;
  float u = 8.0;

  float largeur = 0.48 * numOctaves * period * u;

  // sol
  d = mmin(d, max(p.y + 2.5, -(length(hole.xz) - 1.0)), MAT_GROUND);
  if (length(p) > 8.0) // 
    return d;

  // Dessous des touches
  d = mmin(d, ChamferBox(p - vec3(period * 0.5, -.4, 0.0), vec3(largeur, 0.3, 1.15), 0.05, 0.01), MAT_BLACK);
  /// Arriere
  vec3 a = p;
  a.yz = rot2d(0.05 * (p.y + 2.0)) * a.yz;
  d = mmin(d, sdBox(a - vec3(period * 0.5, -1.3, -2.2), vec3(largeur, 2.0, 1.3)), MAT_BLACK);
  // rendre beau la reflection 
  d = mmin(d, sdBox(p - vec3(period * 0.5, 0.0, -0.9), vec3(largeur - 0.2, 0.5, 0.4)), MAT_BLACK);
  

  vec3 w = p;
  w.x -= period * 0.5;
  w.x = abs(w.x);
  d = mmin(d, ChamferBox(w - vec3(largeur - 0.25, 0.0, -0.1), vec3(0.32, 0.6, 1.3), 0.01, 0.05), MAT_BLACK);
  p.z = -p.z;

  
  p.x += numOctaves * u * period * 0.5 - u * period * 0.5;
  p.xz = rot2d(-3.1415 * 0.5) * p.xz;
  

  if (repeat)
    p.x = mod(p.x - u * 0.5, u) - u * 0.5;

  p = vec3(p.xy - curve(p.z).xy, p.z);
  p.xy = rot2d(sin(p.z * rotate_frequency + time * rotate_speed) * rotate_amplitude) * p.xy;

  //p = localSpace(p.z) * (p - curve(p.z)) + curve(p.z);

  vec3 q = p;
  int id_white = int(mod((q.z) / (period), 7.0));
  int octave_white = int(mod((q.z ) / (period), 7.0 * float(numOctaves))) / numOctaves;

  float l = period * float(numOctaves) * 7.0;

  if (q.z > 0.0 && q.z < l - 0.5 * period)
    q.z = mod(q.z, period) - period * 0.5;
  else 
    //return vec2(sdBox(p - vec3(0.0, 0.0, l * 0.5), vec3(1.0, 0.1, l * 0.5)), MAT_WHITE);
    return d; 
  vec3 q2 = p;
  q2.z += period * 0.5;
  
  int id_black = int(mod(q2.z / (period), 7.0));
  int octave_black = int(mod((q2.z ) / (period), 7.0 * float(numOctaves))) / numOctaves;

  int table_id_white[7];
  table_id_white[0] = 0;
  table_id_white[1] = 2;
  table_id_white[2] = 4;
  table_id_white[3] = 5;
  table_id_white[4] = 7;
  table_id_white[5] = 9;
  table_id_white[6] = 11;
  int table_id_black[7];
  table_id_black[0] = -1;
  table_id_black[1] = 1;
  table_id_black[2] = 3;
  table_id_black[3] = -1;
  table_id_black[4] = 6;
  table_id_black[5] = 8;
  table_id_black[6] = 10;

  float white_lvl = 0.0;
  float black_lvl = 0.0;

  float tex_o = 0.5 / float(12 * numOctaves);

  //for (int i = 0; i < 7; ++i)
  //{
    white_lvl = max(white_lvl, 1.8 * keyboard.compute(tex_o + float(table_id_white[id_white] + 12 * octave_white) / float(12 * numOctaves)));
    if (table_id_black[id_black] != -1)
      black_lvl = max(black_lvl, 1.8 * keyboard.compute(tex_o + float(table_id_black[id_black] + 12 * octave_black) / float(12 * numOctaves)));
  //}
  

  //if (q2.z > 0.0 && q2.z < period * 7.0 * 6.0 )
    q2.z = mod(q2.z, period) - period * 0.5;
  q2.y -= 0.15;
  q2.x += 0.4;
  float white = sdBox(q - vec3(-0.1, -white_lvl * 0.1, 0.0), vec3(0.9, 0.1, period * 0.48));
  d = mmin(d, white, MAT_WHITE);

  float black = 10000000.0;
  if (id_black != 0 && id_black != 3 && id_black != 7)
    black = ChamferBox(q2 - vec3(0.0, -0.1 - black_lvl * 0.1, 0.0),vec3(0.6, 0.17, period * 0.25), 0.01, 0.0);//sdBox(q2, vec3(0.65, 0.1, period * 0.25));
  

  return mmin(d, black, MAT_BLACK);
}


vec4 rm(vec3 ro, vec3 rd, out float st)
{
  st = 0.0;
  vec3 p = ro;
  float m = MAT_VOID;
  for (int i = 0; i < 256; ++i)
  {
    vec2 d = map(p);
    if (abs(d.x) > 100.0)
      return vec4(p, MAT_VOID);
    else if (abs(d.x) < 0.001)
    {
      st = float(i) / 256.0;
      m = d.y;
      break;
    }

    p += rd * d.x * 0.6 / 3.0;
    
  }
  return vec4(p, m);
}

vec3 grad(vec3 p)
{
  vec2 eps = vec2(0.001, 0.0);
    vec3 n = normalize(vec3(
    map(p + eps.xyy).x - map(p - eps.xyy).x,
    map(p + eps.yxy).x - map(p - eps.yxy).x,
    map(p + eps.yyx).x - map(p - eps.yyx).x));
  return n;
}

vec4 hsv_to_rgb(float h)
{
	float c = 1.;
	h = mod((h * 6.0), 6.0);
	float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
	vec4 color;
 
	if (0.0 <= h && h < 1.0) {
		color = vec4(c, x, 0.0, 1.);
	} else if (1.0 <= h && h < 2.0) {
		color = vec4(x, c, 0.0, 1.);
	} else if (2.0 <= h && h < 3.0) {
		color = vec4(0.0, c, x, 1.);
	} else if (3.0 <= h && h < 4.0) {
		color = vec4(0.0, x, c, 1.);
	} else if (4.0 <= h && h < 5.0) {
		color = vec4(x, 0.0, c, 1.);
	} else if (5.0 <= h && h < 6.0) {
		color = vec4(c, 0.0, x, 1.);
	} else {
		color = vec4(0.0, 0.0, 0.0, 1.);
	}
	return color;
}

vec3 shade(vec3 origin, vec3 p, vec3 n, vec3 rd, float st, float m)
{
  vec3 color = vec3(exp(-distance(p, origin) * 0.1) * (1.0 - st));
  if (m == MAT_WHITE)
  {
    color += vec3(0.3);
    color *= white_keys;
    color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m== MAT_BLACK || m==MAT_GROUND)
  {
    if (rainbow)
      color *= hsv_to_rgb(p.z + time).rgb;
    else 
      color *= black_keys;
    color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m == MAT_VOID)
  {
    vec3 d = rd;
    color = sky.computeRotated(d, 0.001).rgb;
    color += fireworks.compute(fireworks.getProjectedDirection(p,d), 0.01).rgb * fireworks.compute(d, 0.01).a;
  }
  return color;
}



vec4 main(in vec3 origin, in vec3 direction, in ivec2 px, out vec3 intersectionPoint)
{
  float st=0.0;
  vec3 ro = origin + vec3(0.0, 0.0, time * z_speed);
  vec4 r = rm(ro, direction, st);

  if (r.w == MAT_VOID)
    discard;

  //else if (r.w == MAT_GROUND)
  //  discard;

  vec3 p = r.xyz;
  vec3 n = grad(p);

  vec3 color = shade(ro, p, n, direction, st, r.w);

  intersectionPoint = p;
  
  vec3 rd2 = reflect(direction, n);
  vec3 ro2 = p + 0.01 * rd2;

  vec4 r2 = rm(ro2, rd2, st);
  vec3 p2 = r2.xyz;
  vec3 n2 = grad(p2);
  
  vec3 color2 = shade(ro, p2, n2, rd2, st, r2.w);
  color = mix(color, color2, 0.4);
  //color = vec3(keyboard.compute(direction.x), keyboard.compute(direction.y), keyboard.compute(direction.z));
  return vec4(color, 1.0);
}", 
              dynamicVariables = 
              {
                => 'DynamicVariable(Boolean) @f969fb16259e1ec6 
                {
                  friendlyName = "Rainbow", 
                  parameters = 
                  {
                    {
                      key = => @cfc5ed513cb226ed "glslName", 
                      value = => @8d979c7047f1917c => "rainbow"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Vector2d) @d8ece11541020aba 
                {
                  friendlyName = "Amplitude", 
                  parameters = 
                  {
                    {
                      key = => @31c617f20e7330bb "glslName", 
                      value = => @e2ac993a58e0f622 => "amplitude"
                    }
                  }, 
                  value = {x = 0., y = 0.}
                }, 
                => 'DynamicVariable(Vector2d) @a315f6e2395758de 
                {
                  friendlyName = "Frequency", 
                  parameters = 
                  {
                    {
                      key = => @a2b75379bfdb46b9 "glslName", 
                      value = => @d1bd7899bad128d8 => "frequency"
                    }
                  }, 
                  value = {x = 0.5, y = 0.5}
                }, 
                => 'DynamicVariable(Real) @bf6559ecf9a46c32 
                {
                  friendlyName = "Rotate_speed", 
                  parameters = 
                  {
                    {
                      key = => @b2892154605c7957 "glslName", 
                      value = => @874f5ba8ecf0c6e => "rotate_speed"
                    }
                  }, 
                  value = 2.
                }, 
                => 'DynamicVariable(Real) @5081c70073d35dd6 
                {
                  friendlyName = "Rotate_amplitude", 
                  parameters = 
                  {
                    {
                      key = => @a3ec513b3fdaa9b5 "glslName", 
                      value = => @293c3f26b445dae4 => "rotate_amplitude"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Real) @8910bfb77b6888ca 
                {
                  friendlyName = "Rotate_frequency", 
                  parameters = 
                  {
                    {
                      key = => @493bed4d28c2ff43 "glslName", 
                      value = => @31f2b88d9ae0aaea => "rotate_frequency"
                    }
                  }, 
                  value = 1.
                }, 
                => 'DynamicVariable(Real) @3ad8ca6abcdc29ee 
                {
                  friendlyName = "Z_speed", 
                  parameters = 
                  {
                    {
                      key = => @3ec913f00a428f81 "glslName", 
                      value = => @dbd871d6251702c0 => "z_speed"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Boolean) @282ecb7d28d91c42 
                {
                  friendlyName = "Repeat", 
                  parameters = 
                  {
                    {
                      key = => @e50d13fbe1e6eeff "glslName", 
                      value = => @48ab4268aa18a596 => "repeat"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Color) @c59225ed2fed7ce6 
                {
                  friendlyName = "White_keys", 
                  parameters = 
                  {
                    {
                      key = => @24d45b60afe67d1d "glslName", 
                      value = => @bd1dfd187ff8656c => "white_keys"
                    }
                  }, 
                  value = {red = 1., green = 1., blue = 1.}
                }, 
                => 'DynamicVariable(Color) @5fb77aa3986daada 
                {
                  friendlyName = "Black_keys", 
                  parameters = 
                  {
                    {
                      key = => @a79f2e9514e43f6b "glslName", 
                      value = => @29085273af50c92 => "black_keys"
                    }
                  }, 
                  value = {red = 0.2, green = 0.2, blue = 0.2}
                }, 
                => 'DynamicVariable(OwnedPointer(FunctionShape)) @e4b360bb6698dafe 
                {
                  friendlyName = "Keyboard", 
                  parameters = 
                  {
                    {
                      key = => @af6d2b31f42731e9 "glslName", 
                      value = => @3198dc778ffccdc8 => "keyboard"
                    }
                  }, 
                  value = => 'MidiKeyboardFunctionShape @acc086726e40cdac 
                  {
                    activation = "activationRequested", 
                    device = "Midi Files", 
                    noteRange = {from = "C1", to = "B6"}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(DirectionalMapGenerator)) @c16c3a1e573e3cac 
                {
                  friendlyName = "Sky", 
                  parameters = 
                  {
                    {
                      key = => @ba9788f8d13d0107 "glslName", 
                      value = => @2ff30d4865a2e3de => "sky"
                    }
                  }, 
                  value = => 'ReferenceDirectionalMapGenerator @12040c95f743f70f 
                  {
                    activation = "activationRequested", 
                    referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(DirectionalMapGenerator)) @82c6b6787a43e0ea 
                {
                  friendlyName = "Fireworks", 
                  parameters = 
                  {
                    {
                      key = => @80fa5a5dad5ffde5 "glslName", 
                      value = => @9ab88566d9733cd4 => "fireworks"
                    }
                  }, 
                  value = => 'ReflectionProbeDirectionalMapGenerator @11b09f58286ed962 
                  {
                    activation = "activationRequested", 
                    reflectionProbe = {"data", -> @313b78003976c92a}
                  }
                }, 
                => 'DynamicVariable(StandalonePlayableCueTransport) @c55b9c7e2e58fa38 
                {
                  friendlyName = "Time", 
                  parameters = 
                  {
                    {
                      key = => @df5369f0d66e5073 "glslName", 
                      value = => @292b1515163be75a => "time"
                    }
                  }, 
                  value = 
                  {
                    reset = 0, 
                    play = 0, 
                    pause = 0, 
                    finalize = 0, 
                    previous = 0, 
                    next = 0, 
                    playing = False, 
                    state = "ready", 
                    position = 0., 
                    length = +oo, 
                    player = -> nil
                  }
                }
              }, 
              castReflections = False
            }, 
            => 'Node @c7522ab36c547e60 
            {
              activation = "inactive", 
              generator = => 'TorusNodeGenerator @82f0a38a320027c9 {activation = "activationRequested"}, 
              placement = => 'PositionOrientation3dPlacement @af76974b68c31422 
              {
                activation = "activationRequested", 
                orientation = {x = 1.57079632679}
              }, 
              users = 
              {
                => 'SurfaceNodeRenderer @c99f18caa84e1de3 
                {
                  activation = "activationRequested", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @cb99f12586e56adc 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @6c9cb6912297f535 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @ff9a1608c5815ebe 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @152bf2e3c0e1e34f 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }
                  }
                }
              }
            }, 
            => 'Node @2accf7620e29a662 
            {
              activation = "inactive", 
              generator = => 'PlaneNodeGenerator @71875425e0876323 #1 
              {
                activation = "activationRequested", 
                anchor = {y = 1.}, 
                size = {width = 8.87467776, height = 4.992, ratio = 1.77778}
              }, 
              placement = => 'PositionOrientation3dPlacement @d2dbb8fffe8b271c 
              {
                activation = "activationRequested", 
                position = {x = 4.26108217239, z = -4.412981987}, 
                orientation = {x = 1.57079632679, y = -0.478220215046}
              }, 
              users = 
              {
                => 'SurfaceNodeRenderer @8fdac3403e86dc75 
                {
                  activation = "activationRequested", 
                  autoIlluminate = 1., 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @f68bc4b461f014fe 
                    {
                      activation = "activationRequested", 
                      map = => 'ReferenceLayerGenerator @58e3ea046194a790 
                      {
                        activation = "activationRequested", 
                        extractor = => 'Parametric2dPlacement @76ef9a294f3fd839 
                        {
                          activation = "activationRequested", 
                          anchor = {x = 0., y = 0.}, 
                          position = {x = 0., y = 0.}, 
                          scale = => 'SizePlacement2dScale @ffbbd8c9c1572072 {size = {width = 1., height = 1., ratio = 1.}}
                        }, 
                        referencer = 
                        {
                          shared = True, 
                          dynamicVariables = 
                          {
                            => 'DynamicVariable(Percentage) @1d832ae1ec419cc8 
                            {
                              friendlyName = "2D Transform Intensity", 
                              value = 0.0719606694026
                            }, 
                            => 'DynamicVariable(Percentage) @74db81561c5205ea {friendlyName = "Black bar", value = 0.}, 
                            => 'DynamicVariable(Percentage) @90daa76e529b74dc {friendlyName = "Black bar intensity", value = 0.629}, 
                            => 'DynamicVariable(Percentage) @ae5fff7bb1c50c1e 
                            {
                              friendlyName = "Diffuse Blur Samples -> Distance -> Width", 
                              value = 0.394
                            }, 
                            => 'DynamicVariable(Percentage) @c63c42940b235e20 {friendlyName = "Function Curve visibility", value = 1.}
                          }, 
                          address = {elementPointer = {"data", -> @fcadfedd61cdd39a, "content"}}
                        }
                      }
                    }, 
                    => 'SpecularSurfaceComponent @3125df4a158a3688 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @2a9e02578da73571 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }
                  }
                }
              }
            }, 
            => 'VolumetricLightRenderable @f7586b7de1990f30 {activation = "activationRequested", brightness = 2.8672644, quality = 50}, 
            => 'Node @35349b1014e0f490 
            {
              activation = "activationRequested", 
              generator = => 'SphereNodeGenerator @f33841661dc135b9 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'PositionNoiseNodeModifier @c968ab9b76cdd52f 
                  {
                    activation = "activationRequested", 
                    noise = 
                    {
                      activation = "activationRequested", 
                      function = => 'PerlinNoiseFunction @2ea53acc34a517a8 {activation = "activationRequested"}, 
                      scale = {x = 0.1, y = 0.1, z = 0.1}
                    }, 
                    transport = 
                    {
                      player = => @f73fdcb720de69d9 
                      {
                        activation = "activationRequested", 
                        parameters = {launchMode = "restartWithActivation", out = {value = +oo}, speed = 0.25, looping = True}
                      }
                    }
                  }, 
                  => 'RandomPointsNodeModifier @8cddcc42a14e4f54 {activation = "activationRequested", count = 25}, 
                  => 'ScaleNodeModifier @6b3fe9f632e6cea9 
                  {
                    activation = "activationRequested", 
                    preset = {libraryName = "Advanced Presets", presetName = "Random Scale"}, 
                    masks = 
                    {
                      => 'RandomVertexMask @8ace82e4312e8602 {activation = "activationRequested"}
                    }, 
                    scale = {x = 0.01, y = 0.01, z = 0.01}
                  }, 
                  => 'InstantiateNodeModifier @4ad6caef48c067ef #1 
                  {
                    activation = "activationRequested", 
                    selector = => 'FunctionVertexMask @3396228eb6e17327 
                    {
                      activation = "activationRequested", 
                      mask = => 'TextureCoordinateVertexMask @a3b6c84f6ae22a56 {activation = "activationRequested"}, 
                      function = => 'ParametricScalarFunction({input = Percentage, output = Percentage}) @d8351789345f66b1 
                      {
                        activation = "activationRequested", 
                        shape = => 'NoiseFunctionShape @1b6d79f76b50e499 {activation = "activationRequested", seed = {value = 4}}, 
                        parameters = {maximum = 1., period = 1., wrapMode = "clamp"}
                      }
                    }, 
                    generators = 
                    {
                      => 'ReferencedScene3dGraphNodeGenerator @67f3311e72fdec21 
                      {
                        activation = "activationRequested", 
                        placement = => 'PositionOrientationSize3dPlacement @8ae9ff465e003a2 
                        {
                          activation = "activationRequested", 
                          size = {x = 0.09, y = 0.09, z = 0.09}
                        }, 
                        file = {path = "Note.obj"}
                      }, 
                      => 'ReferencedScene3dGraphNodeGenerator @6cb8a566814e4f31 
                      {
                        activation = "activationRequested", 
                        placement = => 'PositionOrientationSize3dPlacement @c32e4910d8d5195e 
                        {
                          activation = "activationRequested", 
                          size = {x = 0.26, y = 0.26, z = 0.26}
                        }, 
                        file = {path = "g-key.obj"}
                      }
                    }
                  }
                }, 
                precision = {x = 5, y = 10}
              }, 
              placement = => 'PositionOrientation3dPlacement @9a58a00db76e07d2 {activation = "activationRequested", position = {y = 2.}}, 
              users = 
              {
                => 'SurfaceNodeRenderer @1fe08988edd59ad3 
                {
                  activation = "activationRequested", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @5ba77d00a427212b 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @3305e240db751382 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @bc25394e378de6c8 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @5083ecbcf836c9d9 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'EnvironmentSurfaceComponent @7be2710de1b6dba5 
                    {
                      activation = "inactive", 
                      map = => 'ReflectionProbeDirectionalMapGenerator @d649ad6091c1c2a 
                      {
                        activation = "activationRequested", 
                        reflectionProbe = {"data", -> @313b78003976c92a}
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @e05747aacce1e3ab {activation = "activationRequested"}
                    }, 
                    => 'EnvironmentSurfaceComponent @331f050cfff4d065 
                    {
                      activation = "inactive", 
                      level = 0.36, 
                      map = => 'ReferenceDirectionalMapGenerator @10480ad687475f92 
                      {
                        activation = "activationRequested", 
                        referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @a8aa33abd2a3e86b {activation = "activationRequested"}
                    }, 
                    => 'EnvironmentSurfaceComponent @8a2af5d9056de4a8 
                    {
                      activation = "activationRequested", 
                      preset = {libraryName = "Default", presetName = "EnvMap II"}, 
                      map = => 'CylinderDirectionalMapGenerator @76a845db8ecbe7b7 
                      {
                        activation = "activationRequested", 
                        orientation = {y = 1.20602251313}, 
                        generator = => 'ReferencedImageLayerGenerator @d392c50b730d7f5e 
                        {
                          activation = "activationRequested", 
                          extractor = => 'Parametric2dPlacement @c9bbe74714042d95 
                          {
                            activation = "activationRequested", 
                            anchor = {x = 0., y = 0.}, 
                            position = {x = 0., y = 0.}, 
                            scale = => 'SizePlacement2dScale @6240c9fecbcdfa04 {size = {width = 1., height = 1., ratio = 1.}}
                          }, 
                          file = {path = "HDRI CUBEMAP 02 1920.png"}
                        }
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @35be1c84f5b59bc3 {activation = "activationRequested"}, 
                      chromaticDispersion = 0.0541052068118
                    }
                  }
                }, 
                => 'BallPointsNodeRenderer @38b91ebbeacb7493 
                {
                  activation = "inactive", 
                  autoIlluminate = 0.121, 
                  ballsRadius = 0.5, 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @3f5ccb9b91708f0c 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @57fe54dbee22bda5 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @a36cf7d1ed4dd66e 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @4fca222322f6f97f 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'EnvironmentSurfaceComponent @7903ae3e7d27011c 
                    {
                      activation = "activationRequested", 
                      map = => 'ReflectionProbeDirectionalMapGenerator @f8545e5958dc693 
                      {
                        activation = "activationRequested", 
                        reflectionProbe = {"data", -> @313b78003976c92a}
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @e2b6989950703912 {activation = "activationRequested"}
                    }, 
                    => 'EnvironmentSurfaceComponent @8ff77a6f3adc86b5 
                    {
                      activation = "activationRequested", 
                      level = 0.402, 
                      map = => 'ReferenceDirectionalMapGenerator @aca075b5426f0942 
                      {
                        activation = "activationRequested", 
                        referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @14424cc8178bbebb {activation = "activationRequested"}
                    }, 
                    => 'EnvironmentSurfaceComponent @aa04bafc92863233 
                    {
                      activation = "inactive", 
                      preset = {libraryName = "Default", presetName = "EnvMap II"}, 
                      level = 0.5, 
                      map = => 'CylinderDirectionalMapGenerator @56860afe1920312c 
                      {
                        activation = "activationRequested", 
                        generator = => 'ReferencedImageLayerGenerator @f3bc8a2ee4e6a9c5 
                        {
                          activation = "activationRequested", 
                          extractor = => 'Parametric2dPlacement @e995a86283effb0e 
                          {
                            activation = "activationRequested", 
                            anchor = {x = 0., y = 0.}, 
                            position = {x = 0., y = 0.}, 
                            scale = => 'SizePlacement2dScale @426e86db5c262c9f {size = {width = 1., height = 1., ratio = 1.}}
                          }, 
                          file = {path = "HDRI CUBEMAP 02 1920.png"}
                        }
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @159053a1625e4d58 {activation = "activationRequested"}
                    }
                  }
                }
              }
            }, 
            => 'Node @356976fab0e6090c 
            {
              activation = "inactive", 
              generator = => 'PlaneNodeGenerator @b4a41b89e145afa5 #1 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'RepeatNodeModifier @62853d9ca4c3508b 
                  {
                    activation = "activationRequested", 
                    count = 35, 
                    placement = => 'PositionOrientationSize3dPlacement @429c2c0f42e920c4 
                    {
                      activation = "activationRequested", 
                      position = {x = 6.8154}, 
                      orientation = {y = 0.928515162061}
                    }
                  }
                }, 
                size = {width = 11.9, height = 11.9, ratio = 1.}
              }, 
              placement = => 'PositionOrientation3dPlacement @7e1b578b3576a06e 
              {
                activation = "activationRequested", 
                position = {x = -3.40705895424, y = 0.093575, z = 6.86389017105}
              }, 
              users = 
              {
                => 'SurfaceNodeRenderer @2b35de18687bb7f 
                {
                  activation = "activationRequested", 
                  autoIlluminate = 0.015, 
                  side = "both", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @7043989fbdcbc7b8 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @22e8a9f9ca4a0ba1 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @db781614c5f2ba 
                    {
                      activation = "inactive", 
                      map = => 'UniformLayerGenerator @8b7f9f47fefdcd9b 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'EnvironmentSurfaceComponent @2c42b0876c63525a 
                    {
                      activation = "inactive", 
                      map = => 'ReflectionProbeDirectionalMapGenerator @5ac45b5c84c995d5 
                      {
                        activation = "activationRequested", 
                        reflectionProbe = {"data", -> @313b78003976c92a}
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @b7f7862041346a54 {activation = "activationRequested"}
                    }, 
                    => 'EnvironmentSurfaceComponent @7bc85f8e0facde6c 
                    {
                      activation = "inactive", 
                      map = => 'ReferenceDirectionalMapGenerator @589f5054771f519b 
                      {
                        activation = "activationRequested", 
                        referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                      }, 
                      reflectance = => 'PureReflectionReflectanceModel @e07d692922fbe662 {activation = "activationRequested"}
                    }
                  }
                }
              }
            }
          }
        }, 
        renderer = => 'SingleLayerRenderer @8a2377bb3443a793 
        {
          activation = "activationRequested", 
          placement = => 'Parametric2dPlacement @cb4849446e49460c 
          {
            activation = "activationRequested", 
            scale = => 'ScaleFactorPlacement2dScale @28f9a6c447a228a5 void
          }
        }
      }, 
      => 'Layer @f1a599eb113e8cf9 
      {
        activation = "inactive", 
        label = "pianomania_test 5", 
        generator = => 'Compo @9388a9851125f483 
        {
          activation = "activationRequested", 
          tools = 
          {
            => 'ParameterBank @7e87cbade756ec41 
            {
              activation = "activationRequested", 
              parameters = 
              {
                => 'Parameter(Percentage) @32e9a161d94e7928 
                {
                  activation = "activationRequested", 
                  targets = 
                  {
                    => 'ParameterLinkTarget @7f6f487a614792a3 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'FunctionLinkModifier({input = Percentage, output = Percentage}) @3c3e49d5c15f3cd2 
                        {
                          activation = "activationRequested", 
                          function = => 'KeyframeFunction({input = Percentage, output = Percentage}) @8157eccd98da04d5 
                          {
                            activation = "activationRequested", 
                            keyframes = 
                            {
                              => @b6e0cb87452a782c 
                              {
                                activation = "activationRequested", 
                                inputInterpolator = => 'LinearKeyframeInterpolator @a1403028cc266757 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @45e4891cafd17d76 void
                              }, 
                              => @d354008974ffaab9 
                              {
                                activation = "activationRequested", 
                                position = 1., 
                                key = 1., 
                                inputInterpolator = => 'LinearKeyframeInterpolator @3d1e0c9552201360 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @ddf37b956a1ba35b void
                              }
                            }
                          }
                        }
                      }, 
                      target = {"data", -> @36f5d09fd706575a, "intensity"}
                    }
                  }, 
                  value = 0.0815577413225
                }, 
                => 'Parameter(Percentage) @90c5ed0d5d7bddd2 
                {
                  activation = "activationRequested", 
                  label = "Black bar", 
                  targets = 
                  {
                    => 'ParameterLinkTarget @efc88f9f9df8cd 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'FunctionLinkModifier({input = Percentage, output = Percentage}) @839f41a5c00f5c24 
                        {
                          activation = "activationRequested", 
                          function = => 'KeyframeFunction({input = Percentage, output = Percentage}) @44732a2d257aaeef 
                          {
                            activation = "activationRequested", 
                            keyframes = 
                            {
                              => @6adaa5dd03a62b7e 
                              {
                                activation = "activationRequested", 
                                inputInterpolator = => 'LinearKeyframeInterpolator @871f187f3ce4d4b9 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @8646605ed3cb0220 void
                              }, 
                              => @e779f5b9635ddebb 
                              {
                                activation = "activationRequested", 
                                position = 1., 
                                key = 0.0899503248972, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @7d3a66a703d6f0da void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @d9c4f62d17b6af55 void
                              }
                            }
                          }
                        }
                      }, 
                      target = {"data", -> @a017c28c84d833e, "opacity"}
                    }
                  }, 
                  value = 0.568954397374
                }, 
                => 'Parameter(Percentage) @72925fa430c4dd58 
                {
                  activation = "activationRequested", 
                  label = "Black bar intensity", 
                  targets = 
                  {
                    => 'ParameterLinkTarget @dcb3ea3f17e8cb33 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'FunctionLinkModifier({input = Percentage, output = Percentage}) @dff1541995854632 
                        {
                          activation = "activationRequested", 
                          function = => 'KeyframeFunction({input = Percentage, output = Percentage}) @5dfb66b8818868ad 
                          {
                            activation = "activationRequested", 
                            keyframes = 
                            {
                              => @bdc51bac3f46504 
                              {
                                activation = "activationRequested", 
                                inputInterpolator = => 'LinearKeyframeInterpolator @34b803cef56e714f void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @c689b168d2e61f5e void
                              }, 
                              => @7acaf0f3bc8afe19 
                              {
                                activation = "activationRequested", 
                                position = 1., 
                                key = 1., 
                                inputInterpolator = => 'LinearKeyframeInterpolator @540dd8df688dc500 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @8424b98bb30ccb1b void
                              }
                            }
                          }
                        }
                      }, 
                      target = {"data", -> @e779f5b9635ddebb, "key"}
                    }
                  }, 
                  value = 0.0899503248972
                }, 
                => 'Parameter(Percentage) @df6f9906a0eab3cf 
                {
                  activation = "activationRequested", 
                  targets = 
                  {
                    => 'ParameterLinkTarget @e0fc6349dea04fde 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'FunctionLinkModifier({input = Percentage, output = HorizontalCanvasValue}) @2991e5457dbd2499 
                        {
                          activation = "activationRequested", 
                          function = => 'KeyframeFunction({input = Percentage, output = HorizontalCanvasValue}) @5f0431abdff54180 
                          {
                            activation = "activationRequested", 
                            keyframes = 
                            {
                              => @57906a37950d5d9b 
                              {
                                activation = "activationRequested", 
                                key = -0.0104166666667, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @87c1925e8713f9ba void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @f8b71eb6d10819b5 void
                              }, 
                              => @da1888abd25e6dcc 
                              {
                                activation = "activationRequested", 
                                position = 1., 
                                key = -0.0520833333333, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @ba1933d80eb90497 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @ac47163be5b5a146 void
                              }
                            }
                          }
                        }
                      }, 
                      target = {"data", -> @55fdc9916779d2b8, "samples", "distance", "width"}
                    }
                  }, 
                  value = 0.394
                }, 
                => 'Parameter(Percentage) @e6193e919cbc79ca 
                {
                  activation = "activationRequested", 
                  label = "Function Curve visibility", 
                  targets = 
                  {
                    => 'ParameterLinkTarget @e16a63af27bfc905 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'FunctionLinkModifier({input = Percentage, output = VerticalCanvasValue}) @b11a2dcc20f53dc 
                        {
                          activation = "activationRequested", 
                          function = => 'KeyframeFunction({input = Percentage, output = VerticalCanvasValue}) @45693a0e5c0a75e7 
                          {
                            activation = "activationRequested", 
                            keyframes = 
                            {
                              => @d0446428d9ed6 
                              {
                                activation = "activationRequested", 
                                key = 0.917972222222, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @539ca47b372c0e71 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @ab37eefcfdb80f58 void
                              }, 
                              => @cbed14be76d35d33 
                              {
                                activation = "activationRequested", 
                                position = 1., 
                                key = 0.787361111111, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @d05fbf85daf82032 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @deec9d6794c5e2ad void
                              }
                            }
                          }
                        }
                      }, 
                      target = {"data", -> @b6b6312b518137a4, "position", "y"}
                    }, 
                    => 'ParameterLinkTarget @d68029329fa74ef4 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'FunctionLinkModifier({input = Percentage, output = UnboundedPercentage}) @839b04b8b3a085ff 
                        {
                          activation = "activationRequested", 
                          function = => 'KeyframeFunction({input = Percentage, output = UnboundedPercentage}) @5effc19d845c9d4e 
                          {
                            activation = "activationRequested", 
                            keyframes = 
                            {
                              => @72bca8b2e830e2c9 
                              {
                                activation = "activationRequested", 
                                key = 0.114586703479, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @19d40e5e51b271f0 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @2a8a4030d2c6a4b void
                              }, 
                              => @36c44a466a9bf62a 
                              {
                                activation = "activationRequested", 
                                position = 1., 
                                key = 0.244586703479, 
                                inputInterpolator = => 'LinearKeyframeInterpolator @f89ba7d972dfb2e5 void, 
                                outputInterpolator = => 'LinearKeyframeInterpolator @ff5311407239af3c void
                              }
                            }
                          }
                        }
                      }, 
                      target = {"data", -> @c0b39a107b09b7bb, "scaleFactor", "height"}
                    }
                  }, 
                  value = 1.
                }
              }
            }, 
            => 'AnimationBank @ea1f01752774e89 
            {
              activation = "activationRequested", 
              animations = 
              {
                => 'FunctionCue(Percentage) @80a87abac4a41af0 
                {
                  activation = "activationRequested", 
                  transport = {length = 2.}, 
                  parameters = {launchMode = "restartWithActivation", out = {value = 2.}, speed = 0., looping = True}, 
                  targets = 
                  {
                    => 'ParameterLinkTarget @f9ebcbe81217dbab 
                    {
                      activation = "activationRequested", 
                      target = {"data", -> @32e9a161d94e7928, "value"}
                    }
                  }, 
                  function = => 'ParametricScalarFunction({input = Seconds, output = Percentage}) @d697ca4cdc9eae7a 
                  {
                    activation = "activationRequested", 
                    shape = => 'QuartFunctionShape @15f423bd1571a8e6 {activation = "activationRequested"}, 
                    parameters = {minimum = 0.0454113047112, maximum = 0.0830698326124, inverse = True, period = 2., repetitions = 2}
                  }
                }
              }
            }, 
            => 'LinkBank @a8d36cf00c0e00ab 
            {
              activation = "activationRequested", 
              links = 
              {
                => @f1df8ec9e009b8a 
                {
                  activation = "activationRequested", 
                  source = => 'MidiRythmADSRDeviceLinkSource @a11cb9f0ef9dbf2 
                  {
                    activation = "activationRequested", 
                    enveloppe = {decay = 0.24, sustainLevel = 0.}
                  }, 
                  targets = 
                  {
                    => 'ParameterLinkTarget @36adeb6a98854b9c 
                    {
                      activation = "activationRequested", 
                      target = {"data", -> @90c5ed0d5d7bddd2, "value"}
                    }
                  }
                }
              }
            }
          }, 
          modifiers = 
          {
            => 'TritoneLayerModifier @e56b3738cf76e2ca 
            {
              activation = "activationRequested", 
              intensity = 0.347, 
              lowColor = {red = 0.0235294, green = 0.0588235, blue = 0.184314}, 
              mediumColor = {red = 0.356863, green = 0., blue = 0.219608}
            }
          }, 
          processor = {activation = "activationRequested", resolution = {preset = "hd1080"}, alphaLayer = False}, 
          currentCamera = {"data", -> @68e7d8e5fb97a01}, 
          mainAnimation = => 'TimelineCue @8657bf6ab96b96fa 
          {
            activation = "activationRequested", 
            transport = {state = "finalized", position = 154., length = 154.}, 
            parameters = {launchMode = "restartWithActivation", out = {value = 154.}, looping = True}, 
            elementTracks = 
            {
              {
                key = => @8fb6d1669c31f783 {"data", -> @80a87abac4a41af0}, 
                value = => @6499a05c4b59da29 
                {
                  activation = "activationRequested", 
                  blocks = 
                  {
                    => @314dd111bdec1e10 #1 
                    {
                      activation = "activationRequested", 
                      autoLength = False, 
                      length = 268.68, 
                      footage = 
                      {
                        position = {out = {value = 2.}, speed = 0.92666666, looping = True, offset = 0.747114302085, shape = -> nil}, 
                        intensity = 
                        {
                          fadeIn = 
                          {
                            value = 
                            {
                              shape = => 'LinearRampFunctionShape @40e84eb442d3284b void
                            }
                          }, 
                          fadeOut = 
                          {
                            value = 
                            {
                              shape = => 'LinearRampFunctionShape @a957ea1d70f56e9a void
                            }
                          }
                        }, 
                        activation = {preload = {enabled = True}, unload = {enabled = True}}
                      }
                    }
                  }
                }
              }
            }, 
            parameterTracks = 
            {
              {
                key = => 'WeakPointer(Object) @c14d6e5ffcdad366 {"data", -> @161566684c3db176, "intensity"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @2aff18fbe70209c1 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @f07606b8e1d12768 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @91b28f8da5f259e9 
                      {
                        activation = "activationRequested", 
                        position = 63.0696283255, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @197c72b85309dd10 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @6ccca4131bda9a6b void
                      }, 
                      => @60569cde2e3a5956 
                      {
                        activation = "activationRequested", 
                        position = 76.3126250681, 
                        key = 0.197, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @1a305f22b4e484f1 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @9cdebce4ff279bd8 void
                      }, 
                      => @b43fd757ef05a5cf 
                      {
                        activation = "activationRequested", 
                        position = 77.2905601271, 
                        key = 0.268, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @d8203bcf573f09de void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @47e508dd1b381e99 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @f873091b64820662 {"data", -> @df6f9906a0eab3cf, "value"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @cf0f394c079e2a9d 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @4009810b2a2ce434 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @38605c7126b5c83f 
                      {
                        activation = "activationRequested", 
                        position = 11.1752140415, 
                        key = 0.135, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @d4c3ce4ac0d12a8e void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @a3a261514af8ab09 void
                      }, 
                      => @d922138deb14b676 
                      {
                        activation = "activationRequested", 
                        position = 27.5770671262, 
                        key = 0.199, 
                        inputInterpolator = => 'BezierKeyframeInterpolator(Percentage) @8fd91b9b20fab4ca 
                        {
                          timeProportion = 0.385616270228, 
                          slope = -0.0183498201594
                        }, 
                        outputInterpolator = => 'BezierKeyframeInterpolator(Percentage) @e019365883f2b1f1 
                        {
                          timeProportion = 0.385616270228, 
                          slope = -0.0183498201594
                        }
                      }, 
                      => @d0fd86136f378042 
                      {
                        activation = "activationRequested", 
                        position = 10.4548087115, 
                        key = 0.069, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @2496032cd1cff27d void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @88093af05c9e4514 void
                      }, 
                      => @8eac488c90cba14a 
                      {
                        activation = "activationRequested", 
                        position = 4.39067552289, 
                        key = 0.027, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @a1334d59e980d885 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @4f76eafbc45a8f5c void
                      }, 
                      => @464390230955f9b2 
                      {
                        activation = "activationRequested", 
                        position = 8.31452640961, 
                        key = 0.761, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @a3b5cb292b894c2d void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @1f996542f9a1b084 void
                      }, 
                      => @794782cb8181fb7f 
                      {
                        activation = "activationRequested", 
                        position = 39.7945119326, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @aca1db89570282ce void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @237538ac28a4449 void
                      }, 
                      => @c34d82551272fe38 
                      {
                        activation = "activationRequested", 
                        position = 41.9347942344, 
                        key = 0.394, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @7dda6bd2a3af8913 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @4dd2b3f125d51392 void
                      }, 
                      => @293623924b84f306 
                      {
                        activation = "activationRequested", 
                        position = 11.5913800446, 
                        key = 0.627623878964, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @d70db4a4f9ee7a61 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @ca4334117bba9008 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @85095ff04e4eb57c {"data", -> @2619982d2c3ddb1f, "intensity"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @a370a5af3bf98267 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @5fc4cc34d687346 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @403ba5c90b842d5e 
                      {
                        activation = "activationRequested", 
                        position = 6.06036194317, 
                        key = 0.101, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @afe3fd554a499a1 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @9afa0ff4c95fe308 void
                      }, 
                      => @e6f668469e63b9b7 
                      {
                        activation = "activationRequested", 
                        position = 30.2720021548, 
                        key = 1., 
                        inputInterpolator = => 'LinearKeyframeInterpolator @6f7bfbf6a54cb056 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @b59d01568c7c0419 void
                      }, 
                      => @64a6574230957d07 
                      {
                        activation = "activationRequested", 
                        position = 6.80533548815, 
                        key = 0.404, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @7e9c33fa64cb9166 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @2a48b09ae81897e9 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @b6aff0894735b6f6 {"data", -> @ed0b98b7422f07f0, "intensity"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @d6e5f3bac392d091 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @4533fd211442b078 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @7f31f40ad4a2d57e 
                      {
                        activation = "activationRequested", 
                        position = 23.3410917372, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @d9a97d833698ceb9 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @bdf9686dd0b8fc20 void
                      }, 
                      => @3d72c12b3354f9b7 
                      {
                        activation = "activationRequested", 
                        position = 42.3026552551, 
                        key = 1., 
                        inputInterpolator = => 'LinearKeyframeInterpolator @f678142563d3f0e6 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @94f2cf9b0568d341 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @d0b94c20e64c8481 {"data", -> @e6193e919cbc79ca, "value"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @da35a4a189bdfd28 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @82c79f0778a26ec3 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @a48fafdb9b2a0ca9 
                      {
                        activation = "activationRequested", 
                        position = 41.5851671511, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @96e5a1578a3ca0d0 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @21b1a2b14139f2b void
                      }, 
                      => @56e67d395e819916 
                      {
                        activation = "activationRequested", 
                        position = 41.7034736666, 
                        key = 1., 
                        inputInterpolator = => 'LinearKeyframeInterpolator @108c861d915663b1 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @2fc5c22ad8196198 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @fbff6a858b9a4efa {"data", -> @d697ca4cdc9eae7a, "parameters", "minimum"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @6b0c509f8e59611d 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @d81be16fc8ee43f4 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @be17927137cab972 
                      {
                        activation = "activationRequested", 
                        position = 76.0834408043, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @64db47c73aa1ccf5 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @5d2a8cbba22dd5cc void
                      }, 
                      => @7015a17210302a7b 
                      {
                        activation = "activationRequested", 
                        position = 77.0057890029, 
                        key = 0.208, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @4d3aa87e289e5d0a void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @4b9eedc36e46a5ed void
                      }, 
                      => @dd55fb9d4e4459a9 
                      {
                        activation = "activationRequested", 
                        position = 28.1322252754, 
                        key = 0.01298, 
                        inputInterpolator = => 'BezierKeyframeInterpolator(Percentage) @321342cfde8999e9 
                        {
                          timeProportion = 0.307390135634, 
                          slope = 0.00126297542624
                        }, 
                        outputInterpolator = => 'BezierKeyframeInterpolator(Percentage) @842f62d3f2664c58 
                        {
                          timeProportion = 0.307390135634, 
                          slope = 0.00126297542624
                        }
                      }, 
                      => @1ad885a002531e16 
                      {
                        activation = "activationRequested", 
                        position = 41.5995329982, 
                        key = 0.065, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @f002ab7eab2d5cb1 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @8eb7b740bcba5e98 void
                      }, 
                      => @82815e2da0bae59 
                      {
                        activation = "activationRequested", 
                        position = 41.6830434797, 
                        key = 0.092, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @e35032e2897e2e40 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @aeae15b085e15d5b void
                      }, 
                      => @980a317744a67db 
                      {
                        activation = "activationRequested", 
                        position = 5.46081667381, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @3da66004ede0bcfa void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @f6b06054ac2f75f5 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @27e1c3888536bdd4 {"data", -> @72925fa430c4dd58, "value"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @e0dcb83cffccb25f 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @6ccd207f1b757fae 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @721d64707c556527 
                      {
                        activation = "activationRequested", 
                        position = 58.6810521843, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @f025cde45e829f16 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @698ab06fd09049b1 void
                      }, 
                      => @33d6f612b0b07b44 
                      {
                        activation = "activationRequested", 
                        position = 76.7679932441, 
                        key = 0.197, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @6433373360ceb08f void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @757796b78fd4479e void
                      }, 
                      => @a839386dbf14fd57 
                      {
                        activation = "activationRequested", 
                        position = 78.3194829292, 
                        key = 0.629, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @13ac869a5d97106 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @a97d0e5df303c061 void
                      }, 
                      => @fd2a34eb27478d9f 
                      {
                        activation = "activationRequested", 
                        position = 59.1301243205, 
                        key = 0.0956497937274, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @f27721e71d10f7ee void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @c1c3881e0fade7e9 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @b7e7640047726d51 {"data", -> @d697ca4cdc9eae7a, "parameters", "maximum"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @bfff77146f0f24f8 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @8325996ee3400233 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @85f110fbaca215c9 
                      {
                        activation = "activationRequested", 
                        position = 28.1322252754, 
                        key = 0.01298, 
                        inputInterpolator = => 'BezierKeyframeInterpolator(Percentage) @5578714eac9d6cdf 
                        {
                          timeProportion = 0.354826678827, 
                          slope = 0.000726666163831
                        }, 
                        outputInterpolator = => 'BezierKeyframeInterpolator(Percentage) @545a40048acc26e6 
                        {
                          timeProportion = 0.354826678827, 
                          slope = 0.000726666163831
                        }
                      }, 
                      => @a10f6efb609fd66f 
                      {
                        activation = "activationRequested", 
                        position = 41.6830434797, 
                        key = 0.065, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @6f3bebc475b56bee void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @5792d068dfb4acf1 void
                      }, 
                      => @767d1904e710637d 
                      {
                        activation = "activationRequested", 
                        position = 76.3890425512, 
                        key = 0.101, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @be3b4b88d4d1fed4 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @ac567d48342323bf void
                      }, 
                      => @667b31debd2e355 
                      {
                        activation = "activationRequested", 
                        position = 78.544144592, 
                        key = 0.069, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @41c3d4b0d90414ac void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @f91926121b0699d7 void
                      }, 
                      => @7194c8c162cea5f2 
                      {
                        activation = "activationRequested", 
                        position = 5.46081667381, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @99b03865b7c0bd6d void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @a423a6f91dfb36c4 void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @2ff5920286166a22 {"data", -> @5fcca56a55498bd2, "intensity"}, 
                value = => 'ParameterTrack({input = Seconds, output = Percentage}) @20638f035fa7755d 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Percentage}) @39b54743dc0df7f4 
                  {
                    activation = "activationRequested"
                  }
                }
              }
            }
          }, 
          cameras = 
          {
            => 'AffineCamera @68e7d8e5fb97a01 
            {
              activation = "activationRequested", 
              placement = => 'TargetOrientationDistance3dPlacement @6b107975ebc42c68 
              {
                activation = "activationRequested", 
                target = {y = 2.728818, z = 24.7786}, 
                distance = 3.5
              }, 
              frustum = => 'FieldOfViewPerspectiveFrustum @9f80c5bf14dfcdc3 
              {
                activation = "activationRequested", 
                vertical = 0.258308729295, 
                ratio = {p = 22227, q = 5000}
              }
            }
          }, 
          renderables = 
          {
            => 'Layer @72419c48514f4e6 
            {
              activation = "activationRequested", 
              generator = => 'Compo @f64a5a92c9c3e381 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'KaleidoscopeLayerModifier @23b86997b196ffd0 
                  {
                    activation = "activationRequested", 
                    scale = {linked = False, ratio = 1.}, 
                    center = {y = 0.49}
                  }, 
                  => 'RGBSeparateLayerModifier @ed0b98b7422f07f0 
                  {
                    activation = "activationRequested", 
                    size = {width = 0.000520833333333, height = 0.000925925925926, ratio = 0.5625}, 
                    scale = 0., 
                    radius = {x = 4.95, y = 4.95, z = 4.95}, 
                    greenAngle = 3.940953451
                  }
                }, 
                processor = {activation = "activationRequested"}, 
                renderables = 
                {
                  => 'Layer @5ff20a2aead844c7 
                  {
                    activation = "activationRequested", 
                    generator = => 'Compo @ac6f4817797673ee 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'BlurLayerModifier @84c37f8f007fafa7 
                        {
                          activation = "activationRequested", 
                          shape = => 'GaussianBlurShape @318cb70351d2786 {activation = "activationRequested"}, 
                          samples = {number = 8, distance = {width = 0.00208333333333, height = 0.0037037037037, ratio = 0.5625}}
                        }, 
                        => 'OverlayLayerModifier @1aafbb45c755b8e0 
                        {
                          activation = "activationRequested", 
                          modifiers = 
                          {
                            => 'MotionBlurLayerModifier @be39debbb7f5f448 
                            {
                              activation = "activationRequested", 
                              modifiers = 
                              {
                                => 'Transform2dLayerModifier @36f5d09fd706575a 
                                {
                                  activation = "activationRequested", 
                                  intensity = 0.0815577413225, 
                                  wrapModes = {top = "transparent", bottom = "transparent", left = "transparent", right = "transparent"}, 
                                  frame = => 'Parametric2dPlacement @4253e4ebb0089f81 
                                  {
                                    activation = "activationRequested", 
                                    position = {y = 0.513296296296}, 
                                    scale = => 'ScaleFactorPlacement2dScale @24855e048f43bed0 
                                    {
                                      scaleFactor = {width = 0.9475, height = 0.7175, linked = False, ratio = 1.32055749129}
                                    }
                                  }
                                }, 
                                => 'HueSaturationLuminanceLayerModifier @e8ea261cd732853 
                                {
                                  activation = "activationRequested", 
                                  saturation = -1.
                                }, 
                                => 'BlurLayerModifier @55fdc9916779d2b8 
                                {
                                  activation = "activationRequested", 
                                  preset = {libraryName = "Default", presetName = "Diffuse Blur"}, 
                                  shape = => 'DiffuseBlurShape @dcb19dfb2c0d0e3f 
                                  {
                                    activation = "activationRequested", 
                                    direction = 0.980875039621
                                  }, 
                                  samples = 
                                  {
                                    number = 1, 
                                    distance = {width = -0.0268333333333, height = -0.047703703704, ratio = 0.562499999997}, 
                                    downSampling = {width = "one", height = "one"}
                                  }, 
                                  additionalBrightness = 0.084
                                }, 
                                => 'GroupLayerModifier @2619982d2c3ddb1f 
                                {
                                  activation = "inactive", 
                                  label = "Group", 
                                  modifiers = 
                                  {
                                    => 'Transform2dLayerModifier @5fcca56a55498bd2 
                                    {
                                      activation = "activationRequested", 
                                      intensity = 0.008, 
                                      wrapModes = 
                                      {
                                        top = "mirroredRepeat", 
                                        bottom = "mirroredRepeat", 
                                        left = "mirroredRepeat", 
                                        right = "mirroredRepeat"
                                      }, 
                                      frame = => 'Parametric2dPlacement @7d46bbdac2b76d99 
                                      {
                                        activation = "activationRequested", 
                                        scale = => 'ScaleFactorPlacement2dScale @1fcefeadcb725a08 
                                        {
                                          scaleFactor = {width = 1.01, height = 0.95, linked = False, ratio = 1.06315789474}
                                        }, 
                                        rotation = 0.202458193231
                                      }
                                    }
                                  }
                                }, 
                                => 'Transform2dLayerModifier @161566684c3db176 
                                {
                                  activation = "activationRequested", 
                                  label = "Zoomer", 
                                  intensity = 0., 
                                  wrapModes = 
                                  {
                                    top = "mirroredRepeat", 
                                    bottom = "mirroredRepeat", 
                                    left = "mirroredRepeat", 
                                    right = "mirroredRepeat"
                                  }, 
                                  frame = => 'Parametric2dPlacement @b9ad2bc542f7a911 
                                  {
                                    activation = "activationRequested", 
                                    position = {y = 0.555638888889}, 
                                    scale = => 'ScaleFactorPlacement2dScale @1f3355a040358cf8 
                                    {
                                      scaleFactor = {width = 1.015784, height = 0.9489, linked = False, ratio = 1.07048582569}
                                    }
                                  }
                                }
                              }, 
                              quality = {automatic = False, pixelType = "hdr16Bits"}, 
                              blendingMode = "normal", 
                              feedbackLevel = 1.
                            }, 
                            => 'BrightnessContrastGammaLayerModifier @16a6a48bcc352868 
                            {
                              activation = "activationRequested", 
                              intensity = 0.706, 
                              brightness = -0.636
                            }
                          }, 
                          invertBlendingOrder = True
                        }
                      }, 
                      processor = {activation = "activationRequested"}, 
                      renderables = 
                      {
                        => 'Layer @af1773b03a7ffa8a 
                        {
                          activation = "activationRequested", 
                          generator = => 'FunctionCurveLayerGenerator @502799def12e59f1 
                          {
                            activation = "activationRequested", 
                            gradient = => 'BitoneColorFunction @49df9753dd8ca080 
                            {
                              activation = "activationRequested", 
                              beginColor = {alpha = 0.}
                            }, 
                            function = => 'ParametricScalarFunction({input = Percentage, output = Percentage}) @fa329024bd10ac67 
                            {
                              activation = "activationRequested", 
                              shape = => 'MidiKeyboardFunctionShape @cd70dafae244e375 
                              {
                                activation = "activationRequested", 
                                samplingParameters = {magnificationFilter = True}, 
                                convolution = 
                                {
                                  windowWidth = 0.084, 
                                  shape = => 'QuadFunctionShape @b7974e7bb2f67fac {activation = "activationRequested"}, 
                                  divisionFactor = 1.
                                }, 
                                device = "Midi Files"
                              }, 
                              parameters = {maximum = 1., period = 1.}
                            }
                          }, 
                          renderer = => 'SingleLayerRenderer @9f3f624ceb992625 
                          {
                            activation = "activationRequested", 
                            placement = => 'Parametric2dPlacement @b6b6312b518137a4 
                            {
                              activation = "activationRequested", 
                              anchor = {x = 0., y = 0.}, 
                              position = {x = -0.0167148988694, y = 0.787361111111}, 
                              scale = => 'ScaleFactorPlacement2dScale @c0b39a107b09b7bb 
                              {
                                scaleFactor = {width = 0.602904736996, height = 0.244586703479, linked = False, ratio = 2.46499392003}
                              }, 
                              rotation = 8.36230058452e-15
                            }
                          }
                        }, 
                        => 'Layer @462bbd159d5fffe4 
                        {
                          activation = "activationRequested", 
                          generator = => 'UniformLayerGenerator @6ed42f2814e8faf 
                          {
                            activation = "activationRequested", 
                            preset = {libraryName = "Default", presetName = "White"}
                          }, 
                          renderer = => 'SingleLayerRenderer @a017c28c84d833e 
                          {
                            activation = "activationRequested", 
                            opacity = 0.0601761747314, 
                            placement = => 'Parametric2dPlacement @aea3c2031e8cb79 
                            {
                              activation = "activationRequested", 
                              position = {x = 0.506088541667, y = 0.529564814815}, 
                              scale = => 'ScaleFactorPlacement2dScale @a965681ab0ce41e0 
                              {
                                scaleFactor = {width = 7.6830737175, height = 0.158173130798, linked = False, ratio = 48.5738233715}
                              }
                            }
                          }
                        }
                      }
                    }, 
                    renderer = => 'SingleLayerRenderer @283d6146e94e8185 
                    {
                      activation = "activationRequested", 
                      placement = => 'Parametric2dPlacement @312f746aca451e84 
                      {
                        activation = "activationRequested", 
                        scale = => 'ScaleFactorPlacement2dScale @103993f5e196781b void
                      }
                    }
                  }
                }
              }, 
              renderer = => 'SingleLayerRenderer @21f40102562f57e8 
              {
                activation = "activationRequested", 
                placement = => 'Parametric2dPlacement @3c7b750ecdfa8b43 
                {
                  activation = "activationRequested", 
                  scale = => 'ScaleFactorPlacement2dScale @9db0e12567c31282 void
                }
              }
            }, 
            => 'ShaderRayTracedRenderable @4d3f25a945147546 
            {
              activation = "activationRequested", 
              label = "PianoAndSea", 
              image = "// brought to you by Julien De Loor (twitter @lamogui42)
// Le laboratoire D rpz


uniform bool rainbow = false;
uniform vec2 amplitude = vec2(1.0, 1.0);
uniform vec2 frequency = vec2(0.5, 0.5);
uniform float rotate_speed = 2.0;
uniform float rotate_amplitude = 0.15;
uniform float rotate_frequency = 1.0;
uniform float z_speed = 0.0;
uniform bool repeat = false;
uniform vec3 white_keys = Color(1.0, 1.0, 1.0); 
uniform vec3 black_keys = Color(0.2, 0.2, 0.2); 

uniform FunctionShape keyboard;
uniform DirectionalMap sky;


float sdBox( vec3 p, vec3 b )
{
  vec3 d = abs(p) - b;
  return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));
}

float ChamferBox(vec3 op, vec3 b, float ch, float r) 
{
  float minb=min(b.x,min(b.y,b.z));
  b.x=max(b.x,ch+r);
  b.y=max(b.y,ch+r);
  b.z=max(b.z,ch+r);
  vec3 p = max(abs(op)-b+vec3(ch)+vec3(r),0.0 );
  vec3 n=abs(normalize(p) ); 
  float chr=ch/(dot( n , 1.0*normalize( vec3(1,1,1))) );
 return length(max(p-n*chr,0.0))  -r ;
}

vec3 curve(float z) 
{
  return vec3(amplitude.x * cos(z * frequency.x), amplitude.y *  sin(z * frequency.y), z);
}


// Generate the local space on the curve
mat3 localSpace(float z)
{
  float eps = 0.01;
  vec3 forward = normalize(curve(z + eps) - curve(z - eps));
  vec3 right = normalize(vec3(-curve(z).xy, 0.0));
  vec3 up = normalize(cross(forward, right));
  right = normalize(cross(forward, up));
  return mat3(right, up, forward);
}

#define MAT_VOID 0.0
#define MAT_WHITE 1.0
#define MAT_BLACK 2.0
#define MAT_GROUND 3.0


uniform float time = StandalonePlayableCueTransport;

float magic_function(float x)
{
  return 0.0;
  float a = abs(cos(x));
  float b = abs(sin(x));
  return 0.4 - 0.3 * pow(a+b, 0.8); 
}

vec2 mmin(vec2 v, float d, float m) 
{
 return v.x < d ? v : vec2(d, m);
}

mat2 rot2d(float a)
{
  float c = cos(a);
  float s = sin(a);
  return mat2(c, -s, s, c);
}

vec2 mirrored(vec2 v) 
{
  vec2 m = mod(v, 2.0);
  return mix(m, 2.0 - m, step(1.0, m));
}

mat3 uvToMat3(vec2 uv)
{
  return mat3(vec3(0.001, 0.0, 0.0), vec3(0.0, 0.001, 0.0), vec3(mirrored(uv), 1.0));
}

vec2 map(vec3 p)
{

  vec2 d = vec2(10000000.0, MAT_VOID);


  const int numOctaves = 7;
  float period = 0.22;
  float u = 8.0;

  float largeur = 0.48 * numOctaves * period * u;
  d = mmin(d, p.y + 2.5 , MAT_GROUND);
  if (length(p) > 8.0) // 
    return d;

  // Dessous des touches
  d = mmin(d, ChamferBox(p - vec3(period * 0.5, -.4, 0.0), vec3(largeur, 0.3, 1.15), 0.05, 0.01), MAT_BLACK);
  /// Arriere
  vec3 a = p;
  a.yz = rot2d(0.05 * (p.y + 2.0)) * a.yz;
  d = mmin(d, sdBox(a - vec3(period * 0.5, -0.8, -2.2), vec3(largeur, 1.5, 1.3)), MAT_BLACK);
  // rendre beau la reflection 
  d = mmin(d, sdBox(p - vec3(period * 0.5, 0.0, -0.9), vec3(largeur - 0.2, 0.5, 0.4)), MAT_BLACK);
  

  vec3 w = p;
  w.x -= period * 0.5;
  w.x = abs(w.x);
  d = mmin(d, ChamferBox(w - vec3(largeur - 0.25, 0.0, -0.1), vec3(0.32, 0.6, 1.3), 0.01, 0.05), MAT_BLACK);
  p.z = -p.z;

  
  p.x += numOctaves * u * period * 0.5 - u * period * 0.5;
  p.xz = rot2d(-3.1415 * 0.5) * p.xz;
  

  if (repeat)
    p.x = mod(p.x - u * 0.5, u) - u * 0.5;

  p = vec3(p.xy - curve(p.z).xy, p.z);
  p.xy = rot2d(sin(p.z * rotate_frequency + time * rotate_speed) * rotate_amplitude) * p.xy;

  //p = localSpace(p.z) * (p - curve(p.z)) + curve(p.z);

  vec3 q = p;
  int id_white = int(mod((q.z) / (period), 7.0));
  int octave_white = int(mod((q.z ) / (period), 7.0 * float(numOctaves))) / numOctaves;

  float l = period * float(numOctaves) * 7.0;

  if (q.z > 0.0 && q.z < l - 0.5 * period)
    q.z = mod(q.z, period) - period * 0.5;
  else 
    //return vec2(sdBox(p - vec3(0.0, 0.0, l * 0.5), vec3(1.0, 0.1, l * 0.5 * 0.999)), MAT_WHITE);
    return d; 
  vec3 q2 = p;
  q2.z += period * 0.5;
  
  int id_black = int(mod(q2.z / (period), 7.0));
  int octave_black = int(mod((q2.z ) / (period), 7.0 * float(numOctaves))) / numOctaves;

  int table_id_white[7];
  table_id_white[0] = 0;
  table_id_white[1] = 2;
  table_id_white[2] = 4;
  table_id_white[3] = 5;
  table_id_white[4] = 7;
  table_id_white[5] = 9;
  table_id_white[6] = 11;
  int table_id_black[7];
  table_id_black[0] = -1;
  table_id_black[1] = 1;
  table_id_black[2] = 3;
  table_id_black[3] = -1;
  table_id_black[4] = 6;
  table_id_black[5] = 8;
  table_id_black[6] = 10;

  float white_lvl = 0.0;
  float black_lvl = 0.0;

  float tex_o = 0.5 / float(12 * numOctaves);

  //for (int i = 0; i < 7; ++i)
  //{
    white_lvl = max(white_lvl, 1.8 * keyboard.compute(tex_o + float(table_id_white[id_white] + 12 * octave_white) / float(12 * numOctaves)));
    if (table_id_black[id_black] != -1)
      black_lvl = max(black_lvl, 1.8 * keyboard.compute(tex_o + float(table_id_black[id_black] + 12 * octave_black) / float(12 * numOctaves)));
  //}
  

  //if (q2.z > 0.0 && q2.z < period * 7.0 * 6.0 )
    q2.z = mod(q2.z, period) - period * 0.5;
  q2.y -= 0.15;
  q2.x += 0.4;
  float white = sdBox(q - vec3(-0.1, -white_lvl * 0.1, 0.0), vec3(0.9, 0.1, period * 0.48));
  d = mmin(d, white, MAT_WHITE);

  float black = 10000000.0;
  if (id_black != 0 && id_black != 3 && id_black != 7)
    black = ChamferBox(q2 - vec3(0.0, -0.1 - black_lvl * 0.1, 0.0),vec3(0.6, 0.17, period * 0.25), 0.01, 0.0);//sdBox(q2, vec3(0.65, 0.1, period * 0.25));
  

  return mmin(d, black, MAT_BLACK);
}


vec4 rm(vec3 ro, vec3 rd, out float st)
{
  st = 0.0;
  vec3 p = ro;
  float m = MAT_VOID;
  for (int i = 0; i < 256; ++i)
  {
    vec2 d = map(p);
    if (abs(d.x) > 100.0)
      return vec4(p, MAT_VOID);
    else if (abs(d.x) < 0.001)
    {
      st = float(i) / 256.0;
      m = d.y;
      break;
    }

    p += rd * d.x * 0.6;
    
  }
  return vec4(p, m);
}

vec3 grad(vec3 p)
{
  vec2 eps = vec2(0.001, 0.0);
    vec3 n = normalize(vec3(
    map(p + eps.xyy).x - map(p - eps.xyy).x,
    map(p + eps.yxy).x - map(p - eps.yxy).x,
    map(p + eps.yyx).x - map(p - eps.yyx).x));
  return n;
}

vec4 hsv_to_rgb(float h)
{
	float c = 1.;
	h = mod((h * 6.0), 6.0);
	float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
	vec4 color;
 
	if (0.0 <= h && h < 1.0) {
		color = vec4(c, x, 0.0, 1.);
	} else if (1.0 <= h && h < 2.0) {
		color = vec4(x, c, 0.0, 1.);
	} else if (2.0 <= h && h < 3.0) {
		color = vec4(0.0, c, x, 1.);
	} else if (3.0 <= h && h < 4.0) {
		color = vec4(0.0, x, c, 1.);
	} else if (4.0 <= h && h < 5.0) {
		color = vec4(x, 0.0, c, 1.);
	} else if (5.0 <= h && h < 6.0) {
		color = vec4(c, 0.0, x, 1.);
	} else {
		color = vec4(0.0, 0.0, 0.0, 1.);
	}
	return color;
}

vec3 shade(vec3 origin, vec3 p, vec3 n, vec3 rd, float st, float m)
{
  vec3 color = vec3(exp(-distance(p, origin) * 0.1) * (1.0 - st));
  if (m == MAT_WHITE)
  {
    color += vec3(0.3);
    color *= white_keys;
    //color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m== MAT_BLACK || m==MAT_GROUND)
  {
    if (rainbow)
      color *= hsv_to_rgb(p.z + time).rgb;
    else 
      color *= black_keys;
    //color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m == MAT_VOID)
  {
    vec3 d = rd;
    //color = sky.computeRotated(d, 0.001).rgb;
    //color += fireworks.compute(fireworks.getProjectedDirection(p,d), 0.01).rgb * fireworks.compute(d, 0.01).a;
  }
  return color;
}



vec4 main(in vec3 origin, in vec3 direction, in ivec2 px, out vec3 intersectionPoint)
{
  float st=0.0;
  vec3 ro = origin + vec3(0.0, 0.0, time * z_speed);
  vec4 r = rm(ro, direction, st);

  if (r.w == MAT_VOID || r.w == MAT_GROUND)
    discard;

  //else if (r.w == MAT_GROUND)
  //  discard;

  vec3 p = r.xyz;
  vec3 n = grad(p);

  vec3 color = shade(ro, p, n, direction, st, r.w);

  intersectionPoint = p;
  
  vec3 rd2 = reflect(direction, n);
  vec3 ro2 = p + 0.01 * rd2;

  vec4 r2 = rm(ro2, rd2, st);
  vec3 p2 = r2.xyz;
  vec3 n2 = grad(p2);
  
  vec3 color2 = shade(ro, p2, n2, rd2, st, r2.w);
  color = mix(color, color2, 0.4);
  //color = vec3(keyboard.compute(direction.x), keyboard.compute(direction.y), keyboard.compute(direction.z));
  return vec4(color, 1.0);
}", 
              dynamicVariables = 
              {
                => 'DynamicVariable(Boolean) @305538374bf5325d 
                {
                  friendlyName = "Rainbow", 
                  parameters = 
                  {
                    {
                      key = => @1df71a37ada0e21e "glslName", 
                      value = => @d40d05df1c1cdd9 => "rainbow"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Vector2d) @99ccb5747c4cc59 
                {
                  friendlyName = "Amplitude", 
                  parameters = 
                  {
                    {
                      key = => @941c79c0b54fbb40 "glslName", 
                      value = => @98e8f9e6076797db => "amplitude"
                    }
                  }, 
                  value = {x = 0., y = 0.}
                }, 
                => 'DynamicVariable(Vector2d) @a3b58ca753bb3a15 
                {
                  friendlyName = "Frequency", 
                  parameters = 
                  {
                    {
                      key = => @f6d3f7e3c99249ba "glslName", 
                      value = => @7ac50dabd05f0635 => "frequency"
                    }
                  }, 
                  value = {x = 0.5, y = 0.5}
                }, 
                => 'DynamicVariable(Real) @ffb943d26dbf1791 
                {
                  friendlyName = "Rotate_speed", 
                  parameters = 
                  {
                    {
                      key = => @bc1123cb66c26d0c "glslName", 
                      value = => @5cfe4f02bc396ed7 => "rotate_speed"
                    }
                  }, 
                  value = 2.
                }, 
                => 'DynamicVariable(Real) @8c6c093c75af00ed 
                {
                  friendlyName = "Rotate_amplitude", 
                  parameters = 
                  {
                    {
                      key = => @20eaa612faf54f86 "glslName", 
                      value = => @d25de976cdd03021 => "rotate_amplitude"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Real) @d5a921350ec121e9 
                {
                  friendlyName = "Rotate_frequency", 
                  parameters = 
                  {
                    {
                      key = => @836b766bebc77788 "glslName", 
                      value = => @350f7f88106178e3 => "rotate_frequency"
                    }
                  }, 
                  value = 1.
                }, 
                => 'DynamicVariable(Real) @e18f590043a6b6a5 
                {
                  friendlyName = "Z_speed", 
                  parameters = 
                  {
                    {
                      key = => @34518c7a7df0c7a2 "glslName", 
                      value = => @346d1a2db396b79d => "z_speed"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Boolean) @52655dc1f0352b21 
                {
                  friendlyName = "Repeat", 
                  parameters = 
                  {
                    {
                      key = => @fae4fccdcad4a6f4 "glslName", 
                      value = => @18586c50b4fcfa7f => "repeat"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Color) @d501526404fe5b7d 
                {
                  friendlyName = "White_keys", 
                  parameters = 
                  {
                    {
                      key = => @f7051fb765579e0e "glslName", 
                      value = => @5d0a47f2ee431009 => "white_keys"
                    }
                  }, 
                  value = {red = 1., green = 1., blue = 1.}
                }, 
                => 'DynamicVariable(Color) @4d9af7cc16864379 
                {
                  friendlyName = "Black_keys", 
                  parameters = 
                  {
                    {
                      key = => @7f12831eb3167df0 "glslName", 
                      value = => @ad81e8522318268b => "black_keys"
                    }
                  }, 
                  value = {red = 0.2, green = 0.2, blue = 0.2}
                }, 
                => 'DynamicVariable(OwnedPointer(FunctionShape)) @17a88afa3ad62f35 
                {
                  friendlyName = "Keyboard", 
                  parameters = 
                  {
                    {
                      key = => @f96da93cb173b6aa "glslName", 
                      value = => @95448758aa126e65 => "keyboard"
                    }
                  }, 
                  value = => 'MidiKeyboardFunctionShape @368f96e60df6bbf4 
                  {
                    activation = "activationRequested", 
                    device = "Midi Files", 
                    noteEnvelope = {attack = 0.}, 
                    noteRange = {from = "C0", to = "B6"}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(DirectionalMapGenerator)) @470dd0d48a9cc15b 
                {
                  friendlyName = "Sky", 
                  parameters = 
                  {
                    {
                      key = => @21cddb514e7838bc "glslName", 
                      value = => @ad8c3e322eee9a87 => "sky"
                    }
                  }, 
                  value = => 'ReferenceDirectionalMapGenerator @170ab59a3821ef78 
                  {
                    activation = "activationRequested", 
                    referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                  }
                }, 
                => 'DynamicVariable(StandalonePlayableCueTransport) @86331e1d8106b54f 
                {
                  friendlyName = "Time", 
                  parameters = 
                  {
                    {
                      key = => @fb80546a4cc175b6 "glslName", 
                      value = => @be271d4256b4cd11 => "time"
                    }
                  }, 
                  value = 
                  {
                    reset = 0, 
                    play = 0, 
                    pause = 0, 
                    finalize = 0, 
                    previous = 0, 
                    next = 0, 
                    playing = False, 
                    state = "ready", 
                    position = 0., 
                    length = +oo, 
                    player = -> nil
                  }
                }
              }, 
              castReflections = False
            }
          }
        }, 
        renderer = => 'SingleLayerRenderer @1d8242ab5f470a18 
        {
          activation = "activationRequested", 
          opacity = 0., 
          placement = => 'Parametric2dPlacement @2c2d652175760d97 
          {
            activation = "activationRequested", 
            scale = => 'ScaleFactorPlacement2dScale @c75b70cc2d1d8fae void
          }
        }
      }, 
      => 'Layer @9a171d42a033a056 
      {
        activation = "inactive", 
        label = "piano circle", 
        generator = => 'Compo @11337fc70585b53f 
        {
          activation = "activationRequested", 
          modifiers = 
          {
            => 'BlurLayerModifier @5bac3355d1db0af2 
            {
              activation = "activationRequested", 
              intensity = 0.32, 
              shape = => 'CircularBokehBlurShape @cbdd5669f7bdbe49 
              {
                activation = "activationRequested", 
                radius = 6.2, 
                randomSampling = True, 
                highlights = 5.48
              }, 
              samples = 
              {
                number = 28, 
                distance = {width = 0.00208333333333, height = 0.0037037037037, ratio = 0.5625}, 
                downSampling = {width = "one", height = "one"}
              }
            }, 
            => 'IsfLayerModifier @e8b9bd30f529137c 
            {
              activation = "inactive", 
              file = {path = "Edge Blur.fs"}, 
              dynamicVariables = 
              {
                => 'DynamicVariable(PositiveReal) @b2b95581527189c6 
                {
                  friendlyName = "Intensity", 
                  parameters = 
                  {
                    {
                      key = => @127108a6359ee8a6 "maximum", 
                      value = => @8fb9ca6e06b632b9 => 20.
                    }, 
                    {
                      key = => @46c93870bdb1ced0 "glslName", 
                      value = => @6d4a6dc18c43ee9b => "intensity"
                    }, 
                    {
                      key = => @2ab07fff222fda0a "minimum", 
                      value = => @a9edfdbc397cd24d => 0.
                    }
                  }, 
                  value = 5.
                }, 
                => 'DynamicVariable(PositiveReal) @71bfa43db4e8925e 
                {
                  friendlyName = "Blur Amount", 
                  parameters = 
                  {
                    {
                      key = => @82a0480009772a4f "maximum", 
                      value = => @3680949b9a93fdae => 24.
                    }, 
                    {
                      key = => @aea5ddf287555721 "glslName", 
                      value = => @f3a2ddba3c09bf18 => "blurAmount"
                    }, 
                    {
                      key = => @237e42674bf5ed43 "minimum", 
                      value = => @d35201001ea43792 => 0.
                    }
                  }, 
                  value = 10.
                }, 
                => 'DynamicVariable(Boolean) @53d9dc1106e61fb6 
                {
                  friendlyName = "Invert_map", 
                  parameters = 
                  {
                    {
                      key = => @d421f7670e74659c "glslName", 
                      value = => @908d2d54aea96b77 => "invert_map"
                    }
                  }, 
                  value = False
                }
              }
            }, 
            => 'ChromaticAberrationLayerModifier @86383de4bb45f05d {activation = "activationRequested", iteration = 9, distortion = 11.22}, 
            => 'ReferencedLutFileLayerModifier @7ee0cb8ea5fa6369 {activation = "inactive", file = {path = "Green Experiment.cube"}}
          }, 
          processor = {activation = "activationRequested"}, 
          currentCamera = {"data", -> @c071f92f986c539e}, 
          cameras = 
          {
            => 'AffineCamera @c071f92f986c539e 
            {
              activation = "activationRequested", 
              label = "circle camera", 
              placement = => 'PositionOrientation3dPlacement @f0b8477344e4312f 
              {
                activation = "activationRequested", 
                position = {z = -840.04908377}
              }, 
              frustum = => 'FieldOfViewPerspectiveFrustum @abaafdbeadfb5448 
              {
                activation = "activationRequested", 
                vertical = 1.07377634324, 
                ratio = {p = 10000, q = 10309}
              }
            }
          }, 
          renderables = 
          {
            => 'Layer @180ff962174e7018 
            {
              activation = "activationRequested", 
              generator = => 'ReferenceLayerGenerator @372ab6ac64bedbd3 
              {
                activation = "activationRequested", 
                extractor = => 'Parametric2dPlacement @1864a0851e0d8b42 
                {
                  activation = "activationRequested", 
                  anchor = {x = 0., y = 0.}, 
                  position = {x = 0., y = 0.}, 
                  scale = => 'SizePlacement2dScale @2b37125794506d85 {size = {width = 1., height = 1., ratio = 1.}}
                }, 
                referencer = {shared = True, address = {elementPointer = {"data", -> @b4064f72ac5a65a8, "content"}}}
              }, 
              renderer = => 'SingleLayerRenderer @69ba5a74a0f71e1c 
              {
                activation = "activationRequested", 
                opacity = 0., 
                placement = => 'Parametric2dPlacement @4697a5e2c330c387 
                {
                  activation = "activationRequested", 
                  scale = => 'ScaleFactorPlacement2dScale @49e3952fdec7bbe6 void
                }
              }
            }, 
            => 'SkyboxRenderable @5ae30ee7e5a1dcfb 
            {
              activation = "activationRequested", 
              preset = {libraryName = "Default", presetName = "Velvet Night"}, 
              map = => 'ReferenceDirectionalMapGenerator @213d094903058a2c 
              {
                activation = "activationRequested", 
                referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
              }
            }, 
            => 'Node @926046d2ab52509d 
            {
              activation = "inactive", 
              generator = => 'BoxNodeGenerator @893bbed3f75c537a {activation = "activationRequested"}, 
              placement = => 'PositionOrientation3dPlacement @44fc2d103f756013 {activation = "activationRequested"}, 
              users = 
              {
                => 'SurfaceNodeRenderer @e1dc0f4e4bf56d38 
                {
                  activation = "activationRequested", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @f4f12ca53bc543b9 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @5484ffdad51cd1a6 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @3b5373f177fca1cf 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @db5ba3ac89fe8584 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }
                  }
                }
              }
            }, 
            => 'ShaderRayTracedRenderable @8d8f5130c98bac42 
            {
              activation = "activationRequested", 
              label = "Piano", 
              image = "// Bring to you by Julien De Loor (twitter @lamogui42)
// Le laboratoire D rpz


uniform bool rainbow = false;
uniform vec2 amplitude = vec2(1.0, 1.0);
uniform vec2 frequency = vec2(0.5, 0.5);
uniform float rotate_speed = 2.0;
uniform float rotate_amplitude = 0.0;
uniform float rotate_frequency = 1.0;
uniform float z_speed = 0.0;
uniform bool repeat = false;
uniform vec3 white_keys = Color(1.0, 1.0, 1.0); 
uniform vec3 black_keys = Color(0.2, 0.2, 0.2); 

uniform Texture seaNoise;
uniform DirectionalMap sky;

uniform FunctionShape keyboard;

float sdBox( vec3 p, vec3 b )
{
  vec3 d = abs(p) - b;
  return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));
}

float ChamferBox(vec3 op, vec3 b, float ch, float r) 
{
  float minb=min(b.x,min(b.y,b.z));
  b.x=max(b.x,ch+r);
  b.y=max(b.y,ch+r);
  b.z=max(b.z,ch+r);
  vec3 p = max(abs(op)-b+vec3(ch)+vec3(r),0.0 );
  vec3 n=abs(normalize(p) ); 
  float chr=ch/(dot( n , 1.0*normalize( vec3(1,1,1))) );
 return length(max(p-n*chr,0.0))  -r ;
}

vec3 curve(float z) 
{
  return vec3(amplitude.x * cos(z * frequency.x), amplitude.y *  sin(z * frequency.y), z);
}

// Generate the local space on the curve
mat3 localSpace(float z)
{
  float eps = 0.01;
  vec3 forward = normalize(curve(z + eps) - curve(z - eps));
  vec3 right = normalize(vec3(-curve(z).xy, 0.0));
  vec3 up = normalize(cross(forward, right));
  right = normalize(cross(forward, up));
  return mat3(right, up, forward);
}

#define MAT_VOID 0.0
#define MAT_WHITE 1.0
#define MAT_BLACK 2.0
#define MAT_VOID 3.0

uniform float time = StandalonePlayableCueTransport;

float magic_function(float x)
{
  return 0.0;
  float a = abs(cos(x));
  float b = abs(sin(x));
  return 0.4 - 0.3 * pow(a+b, 0.8); 
}

vec2 mmin(vec2 v, float d, float m) 
{
 return v.x < d ? v : vec2(d, m);
}

mat2 rot2d(float a)
{
  float c = cos(a);
  float s = sin(a);
  return mat2(c, -s, s, c);
}

vec2 mirrored(vec2 v) 
{
  vec2 m = mod(v, 2.0);
  return mix(m, 2.0 - m, step(1.0, m));
}

mat3 uvToMat3(vec2 uv)
{
  return mat3(vec3(0.001, 0.0, 0.0), vec3(0.0, 0.001, 0.0), vec3(mirrored(uv), 1.0));
}


vec3 map(vec3 p)
{
  vec2 d = vec2(10000000.0, MAT_VOID);
  // sol 

  float sh = seaNoise.compute(uvToMat3(p.xz * 0.02)).x;
  d = mmin(d, p.y + 12. + sh, MAT_BLACK);

  //return d;
  //p.z = -p.z;
  float u = 8.0;
  if (repeat)
    p.x = mod(p.x - u * 0.5, u) - u * 0.5;

  p = vec3(p.xy - curve(p.z).xy, p.z);
  

  float a0 = 0.2 * p.z;

  //a0 = mod(a0, 3.1415);

  p.xy += vec2(cos(a0), sin(a0)) * 10.0;

  p.xy = rot2d( a0 ) * p.xy;
  p.xy = rot2d(sin(p.z * rotate_frequency + time * rotate_speed) * rotate_amplitude) * p.xy;  

  

  //p = localSpace(p.z) * (p - curve(p.z)) + curve(p.z);

  vec3 q = p;
  float period = 0.6;
  int id_white = int(mod((q.z + 0.5 * period) / (period), 6.0));
  int octave = int(mod((q.z + 0.5 * period) / (period), 7.0 * 6.0)) / 7;
  q.z = mod(q.z + 0.5 * period, period) - period * 0.5;
  vec3 q2 = p;
  q2.z += period * 0.5;

  int id_black = int(mod((q2.z + 0.5 * period) / (period), 6.0));

  int table_id_white[7];
  table_id_white[0] = 0;
  table_id_white[1] = 2;
  table_id_white[2] = 4;
  table_id_white[3] = 5;
  table_id_white[4] = 7;
  table_id_white[5] = 9;
  table_id_white[6] = 11;
  int table_id_black[7];
  table_id_black[0] = -1;
  table_id_black[1] = 1;
  table_id_black[2] = 3;
  table_id_black[3] = -1;
  table_id_black[4] = 6;
  table_id_black[5] = 8;
  table_id_black[6] = 10;

  
  float black_lvl = 0.0;
  float white_lvl = 0.0;


   float tex_o = 0.5 / float(12 * 6.0);
  //for (int i = 0; i < 7; ++i)
  //{
    white_lvl = max(white_lvl, 2. * keyboard.compute(float(tex_o + table_id_white[id_white] + 12 * octave) / float(12 * 6.0)));
    //if (table_id_black[id_black] != -1)
    //  black_lvl = max(black_lvl, keyboard.compute(float(tex_o + table_id_black[id_black] + 12 * octave) / float(12 * 6.0)));
  //}
  
  
  q2.z = mod(q2.z + 0.5 * period, period) - period * 0.5;
  q2.y -= 0.15;
  q2.x += 0.4;
  float white = sdBox(q - vec3(0.0, -white_lvl * 0.1, 0.0), vec3(2.0, 0.1, period * 0.48));
  d = mmin(d, white* 0.2 * 0.6, MAT_WHITE);

  float black = 10000000.0;
  if (id_black != 0 && id_black != 3 && id_black != 7)
    black = ChamferBox(q2 - vec3(-0.22, -0.1 -black_lvl * 0.1, 0.0),vec3(0.6 * 2., 0.17, period * 0.25), 0.01, 0.0);//sdBox(q2, vec3(0.65, 0.1, period * 0.25));
  

  return vec3(mmin(d, black* 0.2 * 0.6, MAT_BLACK), white_lvl);
}

vec4 rm(vec3 ro, vec3 rd, out float st, out float white_lvl)
{
  st = 0.0;
  vec3 p = ro;
  white_lvl = 0.0;
  float m = MAT_VOID;
  for (int i = 0; i < 256; ++i)
  {
    vec3 d = map(p);
    if (abs(d.x) > 100.0)
      return vec4(p, MAT_VOID);
    else if (abs(d.x) < 0.001)
    {
      white_lvl = d.z;
      st = float(i) / 256.0;
      m = d.y;
      break;
    }

    p += rd * d.x ;//* 0.2 * 0.6;
    
  }
  return vec4(p, m);
}

vec3 grad(vec3 p)
{
  vec2 eps = vec2(0.001, 0.0);
    vec3 n = normalize(vec3(
    map(p + eps.xyy).x - map(p - eps.xyy).x,
    map(p + eps.yxy).x - map(p - eps.yxy).x,
    map(p + eps.yyx).x - map(p - eps.yyx).x));
  return n;
}

vec4 hsv_to_rgb(float h)
{
	float c = 1.;
	h = mod((h * 6.0), 6.0);
	float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
	vec4 color;
 
	if (0.0 <= h && h < 1.0) {
		color = vec4(c, x, 0.0, 1.);
	} else if (1.0 <= h && h < 2.0) {
		color = vec4(x, c, 0.0, 1.);
	} else if (2.0 <= h && h < 3.0) {
		color = vec4(0.0, c, x, 1.);
	} else if (3.0 <= h && h < 4.0) {
		color = vec4(0.0, x, c, 1.);
	} else if (4.0 <= h && h < 5.0) {
		color = vec4(x, 0.0, c, 1.);
	} else if (5.0 <= h && h < 6.0) {
		color = vec4(c, 0.0, x, 1.);
	} else {
		color = vec4(0.0, 0.0, 0.0, 1.);
	}

	return color;
}



vec3 shade(vec3 origin, vec3 p, vec3 n, vec3 rd, float st, float m, float white_lvl)
{
  vec3 color = vec3(exp(-distance(p, origin) * 0.1) * (1.0 - st));
  if (m == MAT_WHITE)
  {
    color += vec3(0.3) + white_lvl;
    color *= white_keys;
    color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m== MAT_BLACK)
  {
    if (rainbow)
      color *= hsv_to_rgb(p.z + time).rgb;
    else 
      color *= black_keys;
    color += 0.2 * sky.compute(reflect(rd, n), 0.01).rgb;
  }
  else if (m == MAT_VOID)
  {
    vec3 d = rd;
    color = sky.computeRotated(d, 0.001).rgb;
  }
  return color;
}


vec4 main(in vec3 origin, in vec3 direction, in ivec2 px, out vec3 intersectionPoint)
{
  float st=0.0;
  vec3 ro = origin + vec3(0.0, 0.0, time * z_speed);
  float white_lvl = 0.0;
  vec4 r = rm(ro, vec3(direction.x, direction.y, direction.z), st, white_lvl);
  if (r.w == MAT_VOID)
    discard;

  vec3 p = r.xyz;
  vec3 n = grad(p);

  vec3 color = shade(ro, p, n, direction, st, r.w, white_lvl);

  intersectionPoint = p;
  
  vec3 rd2 = reflect(direction, n);
  vec3 ro2 = p + 0.01 * rd2;

  vec4 r2 = rm(ro2, rd2, st, white_lvl);
  vec3 p2 = r2.xyz;
  vec3 n2 = grad(p2);
  
  vec3 color2 = shade(ro, p2, n2, rd2, st, r2.w, white_lvl);
  color = mix(color, color2, 0.3);
  //color = vec3(keyboard.compute(direction.x), keyboard.compute(direction.y), keyboard.compute(direction.z));
  return vec4(color, 1.0);
}", 
              dynamicVariables = 
              {
                => 'DynamicVariable(Boolean) @bc16463c5e52949 
                {
                  friendlyName = "Rainbow", 
                  parameters = 
                  {
                    {
                      key = => @ee0070bb45d53d63 "glslName", 
                      value = => @88a40f1e27080222 => "rainbow"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Vector2d) @6fdddbf74c39cab5 
                {
                  friendlyName = "Amplitude", 
                  parameters = 
                  {
                    {
                      key = => @ae638629ab5ed74 "glslName", 
                      value = => @593e1d7c67e746ff => "amplitude"
                    }
                  }, 
                  value = {x = 1., y = 1.}
                }, 
                => 'DynamicVariable(Vector2d) @8858a53aad004f51 
                {
                  friendlyName = "Frequency", 
                  parameters = 
                  {
                    {
                      key = => @558de68fa12aa889 "glslName", 
                      value = => @f1e85fa9488dac70 => "frequency"
                    }
                  }, 
                  value = {x = 0.5, y = 0.5}
                }, 
                => 'DynamicVariable(Real) @97423644aee5c73d 
                {
                  friendlyName = "Rotate_speed", 
                  parameters = 
                  {
                    {
                      key = => @e2be94547f11012a "glslName", 
                      value = => @ba16029edc350ee5 => "rotate_speed"
                    }
                  }, 
                  value = 4.1796
                }, 
                => 'DynamicVariable(Real) @4bab76211deddc59 
                {
                  friendlyName = "Rotate_amplitude", 
                  parameters = 
                  {
                    {
                      key = => @8c360f835156f707 "glslName", 
                      value = => @8627e2799aa62836 => "rotate_amplitude"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Real) @22b402799678bb45 
                {
                  friendlyName = "Rotate_frequency", 
                  parameters = 
                  {
                    {
                      key = => @fdf7279239f36ab8 "glslName", 
                      value = => @70aaf229a1cb06d3 => "rotate_frequency"
                    }
                  }, 
                  value = 1.35051
                }, 
                => 'DynamicVariable(Real) @2649825436a5c061 
                {
                  friendlyName = "Z_speed", 
                  parameters = 
                  {
                    {
                      key = => @9b6a05b4ecc7f24d "glslName", 
                      value = => @aa41a71e26a3ae4 => "z_speed"
                    }
                  }, 
                  value = 0.
                }, 
                => 'DynamicVariable(Boolean) @f123a698dba67cd 
                {
                  friendlyName = "Repeat", 
                  parameters = 
                  {
                    {
                      key = => @b886d2e80756f8be "glslName", 
                      value = => @a23479b86a9c6ff9 => "repeat"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Color) @2939192393e6b69 
                {
                  friendlyName = "White_keys", 
                  parameters = 
                  {
                    {
                      key = => @7f759d724a3716fb "glslName", 
                      value = => @97a032d9d24f6ada => "white_keys"
                    }
                  }, 
                  value = {red = 1., green = 1., blue = 1.}
                }, 
                => 'DynamicVariable(Color) @d38195ebd170c955 
                {
                  friendlyName = "Black_keys", 
                  parameters = 
                  {
                    {
                      key = => @8e4a6cc546200eac "glslName", 
                      value = => @9c081bdf429e3ff7 => "black_keys"
                    }
                  }, 
                  value = {red = 0.2, green = 0.2, blue = 0.2}
                }, 
                => 'DynamicVariable(OwnedPointer(LayerGenerator)) @255ed09d98c94e67 
                {
                  friendlyName = "Sea Noise", 
                  parameters = 
                  {
                    {
                      key = => @76720fe8ee6abec1 "glslName", 
                      value = => @bb8b9a61eec68b28 => "seaNoise"
                    }
                  }, 
                  value = => 'ReferenceLayerGenerator @6177f2932c6f5f62 
                  {
                    activation = "activationRequested", 
                    extractor = => 'Parametric2dPlacement @c12423414c5f0425 
                    {
                      activation = "activationRequested", 
                      anchor = {x = 0., y = 0.}, 
                      position = {x = 0., y = 0.}, 
                      scale = => 'SizePlacement2dScale @413c143d8c9e813c {size = {width = 1., height = 1., ratio = 1.}}
                    }, 
                    referencer = {shared = True, address = {elementPointer = {"data", -> @b4064f72ac5a65a8, "content"}}}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(DirectionalMapGenerator)) @d4e3d7d07dd9d7b4 
                {
                  friendlyName = "Sky", 
                  parameters = 
                  {
                    {
                      key = => @e4bf3e42860effbd "glslName", 
                      value = => @58f40305d0a1dc14 => "sky"
                    }
                  }, 
                  value = => 'ReferenceDirectionalMapGenerator @6a3880f56826826b 
                  {
                    activation = "activationRequested", 
                    referencer = {shared = True, address = {elementPointer = {"data", -> @27b99111008c2072, "content"}}}
                  }
                }, 
                => 'DynamicVariable(OwnedPointer(FunctionShape)) @8787bb0a1f7b6d71 
                {
                  friendlyName = "Keyboard", 
                  parameters = 
                  {
                    {
                      key = => @44ede4daa33cfa29 "glslName", 
                      value = => @ed4f182e7e79ad10 => "keyboard"
                    }
                  }, 
                  value = => 'MidiKeyboardFunctionShape @896c21f0f5854c4e 
                  {
                    activation = "activationRequested", 
                    device = "Midi Files", 
                    noteRange = {from = "C1", to = "B6"}
                  }
                }, 
                => 'DynamicVariable(StandalonePlayableCueTransport) @9aee899be564aaa3 
                {
                  friendlyName = "Time", 
                  parameters = 
                  {
                    {
                      key = => @df5bdf0f53a97fca "glslName", 
                      value = => @5dec2f73016fd205 => "time"
                    }
                  }, 
                  value = 
                  {
                    reset = 0, 
                    play = 0, 
                    pause = 0, 
                    finalize = 0, 
                    previous = 0, 
                    next = 0, 
                    playing = True, 
                    state = "playing", 
                    position = 5.05073647183, 
                    length = +oo, 
                    player = -> nil
                  }
                }
              }, 
              depthTest = False, 
              depthWrite = False
            }
          }
        }, 
        renderer = => 'SingleLayerRenderer @65f4dd6b3f7f1eb4 
        {
          activation = "activationRequested", 
          placement = => 'Parametric2dPlacement @f34e13ece515f0c5 
          {
            activation = "activationRequested", 
            scale = => 'ScaleFactorPlacement2dScale @a02da353c1088c2 void
          }
        }
      }, 
      => 'Layer @8ba353ced8ee5d40 
      {
        activation = "inactive", 
        label = "tunnel", 
        generator = => 'Compo @cc6ea52dfb9e28a9 
        {
          activation = "activationRequested", 
          tools = 
          {
            => 'SharedElement(LayerGenerator) @44aaf2912b2f4d93 
            {
              activation = "activationRequested", 
              label = "pillars", 
              expose = False, 
              content = => 'Compo @4f9aebd011e5b1d 
              {
                activation = "activationRequested", 
                processor = 
                {
                  activation = "activationRequested", 
                  resolution = {preset = "custom", width = 128, height = 128}, 
                  quality = {automatic = False, samplingParameters = {minificationFilter = False, magnificationFilter = False}}
                }, 
                renderables = 
                {
                  => 'Layer @3d28737cff13d147 
                  {
                    activation = "activationRequested", 
                    generator = => 'ShaderLayerGenerator @31543d1571643073 
                    {
                      activation = "activationRequested", 
                      resolution = {width = 128, height = 128}, 
                      texture = "uniform FunctionShape keyboard;


vec4 main(vec2 uv, vec2 dx, vec2 dy) 
{
  float k = 0.0;
  float r = 6.0;
  vec2 v = vec2(ivec2(uv * r));
  uv = mod(uv, 0.25) / 0.25;
  vec2 u = vec2(ivec2(uv * r));

  float p = (u.x + u.y * r) / (r * r);
  p = fract(sin((p + v.x + v.y)));

  k += keyboard.compute(p);
  p = fract(cos((p + v.x * 2.365 + v.y * 4.)));
  
  k += keyboard.compute(p);

  return vec4(1.0 - 1.2 * vec3(k), 1.0);
}", 
                      dynamicVariables = 
                      {
                        => 'DynamicVariable(OwnedPointer(FunctionShape)) @fdbb2542ff1d9386 
                        {
                          friendlyName = "Keyboard", 
                          parameters = 
                          {
                            {
                              key = => @c3fdf904aab91af "glslName", 
                              value = => @6c35f5f86b2459be => "keyboard"
                            }
                          }, 
                          value = => 'MidiKeyboardFunctionShape @115db175248779f6 
                          {
                            activation = "activationRequested", 
                            device = "Midi Files", 
                            noteEnvelope = {sustainLevel = 1., release = 0.82}, 
                            noteRange = {from = "C3", to = "B6"}
                          }
                        }
                      }
                    }, 
                    renderer = => 'SingleLayerRenderer @7745e1fa7ff3fe0 
                    {
                      activation = "activationRequested", 
                      placement = => 'Parametric2dPlacement @13f79b18216a4b49 
                      {
                        activation = "activationRequested", 
                        scale = => 'ScaleFactorPlacement2dScale @310715af130431a2 void
                      }
                    }
                  }
                }
              }
            }
          }, 
          modifiers = 
          {
            => 'MotionBlurLayerModifier @63fd2a78a2315ffb 
            {
              activation = "inactive", 
              preRasterizeQuality = {automatic = False, pixelType = "clamped16Bits"}, 
              quality = {automatic = False, pixelType = "clamped16Bits"}, 
              feedbackLevel = 0.861
            }, 
            => 'SobelLayerModifier @1f3cf77b734d2bf1 
            {
              activation = "inactive", 
              size = {width = 0.000420833, height = 0.000748147555556, ratio = 0.5625}, 
              threshold = 0.05, 
              edgesColor = {red = 1., green = 1., blue = 1.}
            }, 
            => 'TritoneLayerModifier @c1913c9dc3713683 
            {
              activation = "activationRequested", 
              lowColor = {red = 0.0235294, green = 0.0588235, blue = 0.184314}, 
              mediumColor = {red = 0.356863, green = 0., blue = 0.219608}
            }, 
            => 'ChromaticAberrationLayerModifier @50765f5cf2241609 {activation = "activationRequested"}, 
            => 'IsfLayerModifier @3d2f5991a0a64f57 
            {
              activation = "inactive", 
              file = {path = "Neon.fs"}, 
              dynamicVariables = 
              {
                => 'DynamicVariable(PositiveReal) @77ca3ffca8eccd02 
                {
                  friendlyName = "Intensity", 
                  parameters = 
                  {
                    {
                      key = => @8c8ae1c6ce7da089 "maximum", 
                      value = => @30c62ede96047060 => 10.
                    }, 
                    {
                      key = => @fbde46f8b55a18eb "glslName", 
                      value = => @96b57815ec63be1a => "intensity"
                    }, 
                    {
                      key = => @8a4ef5070f3b4d1d "minimum", 
                      value = => @21a2a4cc0043e364 => 0.
                    }
                  }, 
                  value = 5.
                }, 
                => 'DynamicVariable(Percentage) @c47bc5d677d8832a 
                {
                  friendlyName = "Gain", 
                  parameters = 
                  {
                    {
                      key = => @c3ebddc6ec6812be "maximum", 
                      value = => @e71ab400344eaef1 => 1.
                    }, 
                    {
                      key = => @872cb2083ad902a8 "glslName", 
                      value = => @1ed6b00429a91193 => "gain"
                    }, 
                    {
                      key = => @b3d10c2c504a8da2 "minimum", 
                      value = => @98e16eb83855da05 => 0.
                    }
                  }, 
                  value = 1.
                }, 
                => 'DynamicVariable(ColorWithAlpha) @9a7ad64e96849bf2 
                {
                  friendlyName = "Neon Color", 
                  parameters = 
                  {
                    {
                      key = => @655801204fc884c7 "glslName", 
                      value = => @d55f8a52191f52c6 => "neonColor"
                    }
                  }, 
                  value = {red = 0.192156866193, green = 0.803921580315, blue = 1., alpha = 1.}
                }
              }
            }
          }, 
          processor = {activation = "activationRequested"}, 
          currentCamera = {"data", -> @7a7e4052749c3df4}, 
          cameras = 
          {
            => 'AffineCamera @7a7e4052749c3df4 
            {
              activation = "activationRequested", 
              label = "tunnel camera", 
              preset = {libraryName = "Default", presetName = "Front Perspective Camera"}, 
              placement = => 'PositionOrientation3dPlacement @5ebb32a05e3d5358 
              {
                activation = "activationRequested", 
                position = {x = -0.01, y = -113.125, z = 0.11}, 
                orientation = {x = -1.5707962513, y = 2.33350520992}
              }, 
              frustum = => 'FieldOfViewPerspectiveFrustum @5bab43c32ca12f96 
              {
                activation = "activationRequested", 
                horizontal = 1.0472, 
                vertical = 1.0472
              }
            }
          }, 
          renderables = 
          {
            => 'Node @fad537f43a74bc4b 
            {
              activation = "activationRequested", 
              generator = => 'CylinderNodeGenerator @6c7e009a55578184 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'Transform3dNodeModifier @9f4dcad35be4cf21 
                  {
                    activation = "inactive", 
                    masks = 
                    {
                      => 'LayerVertexMask @d0bfb30eda9826ed 
                      {
                        activation = "activationRequested", 
                        horizontal = => 'TextureCoordinateVertexMask @6b62234c48bb336 {activation = "activationRequested"}, 
                        vertical = => 'TextureCoordinateVertexMask @76e47b35d6929167 
                        {
                          activation = "activationRequested", 
                          coordinate = "vertical"
                        }, 
                        generator = => 'ReferenceLayerGenerator @da7358e47b709fe8 
                        {
                          activation = "activationRequested", 
                          extractor = => 'Parametric2dPlacement @f8bb2853776e77d1 
                          {
                            activation = "activationRequested", 
                            anchor = {x = 0., y = 0.}, 
                            position = {x = 0., y = 0.}, 
                            scale = => 'SizePlacement2dScale @b6a405335210fe6a {size = {width = 1., height = 1., ratio = 1.}}
                          }, 
                          referencer = {shared = True, address = {elementPointer = {"data", -> @44aaf2912b2f4d93, "content"}}}
                        }, 
                        colorSelector = => 'ChannelColorSelector @72102a5fb5d47e69 
                        {
                          activation = "activationRequested", 
                          function = => 'ColorLevelFunction @d2e6fefe950f9ac2 {activation = "activationRequested"}
                        }
                      }
                    }
                  }, 
                  => 'DisplaceNodeModifier @9a14b1e02f6d95f5 
                  {
                    activation = "activationRequested", 
                    masks = 
                    {
                      => 'LayerVertexMask @3a86ee50f5f8d38a 
                      {
                        activation = "activationRequested", 
                        horizontal = => 'TextureCoordinateVertexMask @8578582ab35141ab {activation = "activationRequested"}, 
                        vertical = => 'TextureCoordinateVertexMask @704aa18ec207064 
                        {
                          activation = "activationRequested", 
                          coordinate = "vertical"
                        }, 
                        generator = => 'ReferenceLayerGenerator @f9ff67e58872a861 
                        {
                          activation = "activationRequested", 
                          extractor = => 'Parametric2dPlacement @608a14bbc721f07a 
                          {
                            activation = "activationRequested", 
                            anchor = {x = 0., y = 0.}, 
                            position = {x = 0., y = 0.}, 
                            scale = => 'SizePlacement2dScale @afbc9a384123585b {size = {width = 1., height = 1., ratio = 1.}}
                          }, 
                          referencer = {shared = True, address = {elementPointer = {"data", -> @44aaf2912b2f4d93, "content"}}}
                        }, 
                        colorSelector = => 'ChannelColorSelector @62275114868dbf86 
                        {
                          activation = "activationRequested", 
                          function = => 'ColorLevelFunction @4019603e9a1dcab7 {activation = "activationRequested"}
                        }
                      }
                    }, 
                    normalsSmoothing = 0.55, 
                    distance = 0.5
                  }, 
                  => 'RepeatNodeModifier @612ebc66d58af4e2 
                  {
                    activation = "activationRequested", 
                    count = 20, 
                    placement = => 'PositionOrientationSize3dPlacement @2fbda98dd4bf8fa3 
                    {
                      activation = "activationRequested", 
                      position = {y = -20.}
                    }
                  }
                }, 
                precision = {x = 500, y = 100}, 
                height = 20., 
                topCap = False, 
                bottomCap = False
              }, 
              placement = => 'PositionOrientation3dPlacement @c08a270ce584315d {activation = "activationRequested", position = {y = -10.}}, 
              users = 
              {
                => 'SurfaceNodeRenderer @c329e65c01e4e026 
                {
                  activation = "activationRequested", 
                  side = "both", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @3b26c575f58e5357 
                    {
                      activation = "activationRequested", 
                      map = => 'ReferencedImageLayerGenerator @9cd7c2a757313e34 
                      {
                        activation = "activationRequested", 
                        extractor = => 'Parametric2dPlacement @bba33638cb4a8d0d 
                        {
                          activation = "activationRequested", 
                          anchor = {x = 0., y = 0.}, 
                          position = {x = 0., y = 0.}, 
                          scale = => 'SizePlacement2dScale @ee7160f4aa5c89d6 {size = {width = 1., height = 1., ratio = 1.}}
                        }, 
                        file = {path = "TexturesCom_Concrete2_1024_albedo.tif"}
                      }, 
                      scale = {width = 10., height = 10., ratio = 1.}
                    }, 
                    => 'SpecularSurfaceComponent @8c98181a76843d9 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @9180e33952d0e6f2 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }, 
                      scale = {width = 10., height = 10., ratio = 1.}
                    }, 
                    => 'NormalBumpSurfaceComponent @3db6d550c352983f 
                    {
                      activation = "inactive", 
                      map = => 'ReferencedImageLayerGenerator @e1f781998d3ada54 
                      {
                        activation = "activationRequested", 
                        extractor = => 'Parametric2dPlacement @e707f7db5be1e22d 
                        {
                          activation = "activationRequested", 
                          anchor = {x = 0., y = 0.}, 
                          position = {x = 0., y = 0.}, 
                          scale = => 'SizePlacement2dScale @27d6daee1a1bed76 {size = {width = 1., height = 1., ratio = 1.}}
                        }, 
                        interpretAlpha = 
                        {
                          value = => 'StraightAlphaInterpreter @6f230e21ab8b5457 void
                        }, 
                        file = {path = "TexturesCom_Concrete2_1024_normal.tif"}
                      }, 
                      scale = {width = 10., height = 10., ratio = 1.}, 
                      intensity = 0.1
                    }
                  }
                }
              }
            }, 
            => 'Node @37caefdff1a98a7d 
            {
              activation = "inactive", 
              generator = => 'CircleNodeGenerator @d17c43337ecfb746 
              {
                activation = "activationRequested", 
                modifiers = 
                {
                  => 'InstantiateNodeModifier @ba4a1ee750807851 #1 
                  {
                    activation = "activationRequested", 
                    selector = => 'RandomVertexMask @53c3e5c446dfb4ea {activation = "activationRequested"}, 
                    generators = 
                    {
                      => 'BoxNodeGenerator @728a968651b89c0b 
                      {
                        activation = "activationRequested", 
                        size = {x = 0.2, y = 0.2, linked = False}, 
                        precision = {x = 1, y = 1, z = 1, uniform = False}
                      }
                    }
                  }, 
                  => 'RepeatNodeModifier @f87ee656f17886f7 
                  {
                    activation = "activationRequested", 
                    count = 85, 
                    placement = => 'PositionOrientationSize3dPlacement @90cca187088ba050 
                    {
                      activation = "activationRequested", 
                      position = {z = -1.}, 
                      orientation = {z = 0.785398163397}
                    }
                  }
                }, 
                precision = 3
              }, 
              placement = => 'PositionOrientation3dPlacement @1e28c426a1e0c777 
              {
                activation = "activationRequested", 
                position = {y = -71.804713}, 
                orientation = {x = 1.57079632679, y = 0.784462257634}
              }, 
              users = 
              {
                => 'SurfaceNodeRenderer @8d483ec9b8ec14c1 
                {
                  activation = "activationRequested", 
                  side = "both", 
                  components = 
                  {
                    => 'DiffuseSurfaceComponent @75471de04c86a7b0 
                    {
                      activation = "activationRequested", 
                      map = => 'ReferencedImageLayerGenerator @d2b61a32ee39cad3 
                      {
                        activation = "activationRequested", 
                        extractor = => 'Parametric2dPlacement @f5c2eead724279ea 
                        {
                          activation = "activationRequested", 
                          anchor = {x = 0., y = 0.}, 
                          position = {x = 0., y = 0.}, 
                          scale = => 'SizePlacement2dScale @a010b86113547d31 {size = {width = 1., height = 1., ratio = 1.}}
                        }, 
                        file = {path = "SMODE/fichiers 3D/textures/TexturesCom_Concrete2_1024_albedo.tif"}
                      }
                    }, 
                    => 'SpecularSurfaceComponent @46a859141e60b73e 
                    {
                      activation = "activationRequested", 
                      map = => 'UniformLayerGenerator @dfe13bacebd81215 
                      {
                        activation = "activationRequested", 
                        resolution = {width = 1024, height = 1024}, 
                        color = {red = 1., green = 1., blue = 1.}
                      }
                    }, 
                    => 'NormalBumpSurfaceComponent @73d70dc57a5a6cd8 
                    {
                      activation = "activationRequested", 
                      map = => 'ReferencedImageLayerGenerator @af96590c34322eb3 
                      {
                        activation = "activationRequested", 
                        extractor = => 'Parametric2dPlacement @a9662f4ee2e916ca 
                        {
                          activation = "activationRequested", 
                          anchor = {x = 0., y = 0.}, 
                          position = {x = 0., y = 0.}, 
                          scale = => 'SizePlacement2dScale @69b7027ba3131991 {size = {width = 1., height = 1., ratio = 1.}}
                        }, 
                        interpretAlpha = 
                        {
                          value = => 'StraightAlphaInterpreter @2142d6b41283a0b0 void
                        }, 
                        file = {path = "SMODE/fichiers 3D/textures/TexturesCom_Concrete2_1024_normal.tif"}
                      }, 
                      intensity = 0.1
                    }
                  }
                }, 
                => 'VertexReferentialNodeRenderer @7a608a0b3ca49df2 
                {
                  activation = "inactive", 
                  length = 0.11, 
                  tangent = False, 
                  bitangent = False
                }
              }
            }, 
            => 'PointLight @3eaaa876c756957d 
            {
              activation = "activationRequested", 
              placement = => 'PositionOrientation3dPlacement @411f305fd5a9e646 
              {
                activation = "activationRequested", 
                position = {y = -123.040379}
              }, 
              specular = {level = 2., shininess = 20.}, 
              attenuation = => 'FalloffFunction(PositiveMeters) @94052f8622524a77 
              {
                activation = "activationRequested", 
                exponent = 0.39, 
                interval = {center = 2.5, size = 5., end = 5.}
              }, 
              directionalMap = => 'UniformDirectionalMapGenerator @72a344989d101dd0 
              {
                activation = "activationRequested", 
                color = {red = 1., green = 1., blue = 1.}
              }
            }, 
            => 'ProjectorLight @116885cbf7ca0b3e 
            {
              activation = "inactive", 
              placement = => 'PositionOrientation3dPlacement @988077bee46415cf 
              {
                activation = "activationRequested", 
                position = {y = 10.7835}, 
                orientation = {x = -1.57079632679}
              }, 
              diffuse = {level = 3.14}, 
              specular = {level = 20., shininess = 20.}, 
              attenuation = => 'FalloffFunction(PositiveMeters) @af0967613f16b6c8 {activation = "activationRequested"}, 
              shadowParameters = {resolution = {preset = "oneKSquare"}}, 
              frustum = => 'FieldOfViewPerspectiveFrustum @ab926caf73a310b1 
              {
                activation = "activationRequested", 
                clippingDistances = {center = 5.005, size = 9.99, begin = 0.01, end = 10.}
              }, 
              generator = => 'UniformLayerGenerator @caa0dc7eb33f7a4a 
              {
                activation = "activationRequested", 
                resolution = {width = 1024, height = 1024}, 
                color = {red = 1., green = 1., blue = 1.}
              }
            }, 
            => 'ShaderRayTracedRenderable @5c65cbfef7286715 
            {
              activation = "activationRequested", 
              label = "tunnel piano", 
              image = "// Bring to you by Julien De Loor (twitter @lamogui42)
// Le laboratoire D rpz


uniform bool rainbow = false;
uniform vec2 amplitude = vec2(1.0, 1.0);
uniform vec2 frequency = vec2(0.5, 0.5);
uniform float rotate_speed = 2.0;
uniform float rotate_amplitude = 0.15;
uniform float rotate_frequency = 1.0;
uniform float z_speed = 0.0;
uniform bool repeat = false;
uniform vec3 white_keys = Color(1.0, 1.0, 1.0); 
uniform vec3 black_keys = Color(0.2, 0.2, 0.2); 



uniform FunctionShape keyboard;

float sdBox( vec3 p, vec3 b )
{
  vec3 d = abs(p) - b;
  return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0));
}

float ChamferBox(vec3 op, vec3 b, float ch, float r) 
{
  float minb=min(b.x,min(b.y,b.z));
  b.x=max(b.x,ch+r);
  b.y=max(b.y,ch+r);
  b.z=max(b.z,ch+r);
  vec3 p = max(abs(op)-b+vec3(ch)+vec3(r),0.0 );
  vec3 n=abs(normalize(p) ); 
  float chr=ch/(dot( n , 1.0*normalize( vec3(1,1,1))) );
 return length(max(p-n*chr,0.0))  -r ;
}

vec3 curve(float z) 
{
  return vec3(amplitude.x * cos(z * frequency.x), amplitude.y *  sin(z * frequency.y), z);
}

// Generate the local space on the curve
mat3 localSpace(float z)
{
  float eps = 0.01;
  vec3 forward = normalize(curve(z + eps) - curve(z - eps));
  vec3 right = normalize(vec3(-curve(z).xy, 0.0));
  vec3 up = normalize(cross(forward, right));
  right = normalize(cross(forward, up));
  return mat3(right, up, forward);
}

#define MAT_VOID 0.0
#define MAT_WHITE 1.0
#define MAT_BLACK 2.0

uniform float time = StandalonePlayableCueTransport;

float magic_function(float x)
{
  return 0.0;
  float a = abs(cos(x));
  float b = abs(sin(x));
  return 0.4 - 0.3 * pow(a+b, 0.8); 
}

vec2 mmin(vec2 v, float d, float m) 
{
 return v.x < d ? v : vec2(d, m);
}

mat2 rot2d(float a)
{
  float c = cos(a);
  float s = sin(a);
  return mat2(c, -s, s, c);
}

vec2 map(vec3 p)
{
  p.xyz = p.xzy;
  //p.y = -p.y;
  //p.z = -p.z;
  //p.y += 12.0;
  p.y += 1.0;

  float u = 8.0;
  if (repeat)
    p.x = mod(p.x - u * 0.5, u) - u * 0.5;

  p = vec3(p.xy - curve(p.z).xy, p.z);
  p.xy = rot2d(sin(p.z * rotate_frequency + time * rotate_speed) * rotate_amplitude) * p.xy;

  //p = localSpace(p.z) * (p - curve(p.z)) + curve(p.z);

  vec3 q = p;
  float period = 0.4;
  int id_white = int(mod((q.z + 0.5 * period) / (period), 4.0));
  int octave = int(mod((q.z + 0.5 * period) / (period), 7.0 * 4.0)) / 7;
  q.z = mod(q.z + 0.5 * period, period) - period * 0.5;
  vec3 q2 = p;
  q2.z += period * 0.5;

  int id_black = int(mod((q2.z + 0.5 * period) / (period), 4.0));

  int table_id_white[7];
  table_id_white[0] = 0;
  table_id_white[1] = 2;
  table_id_white[2] = 4;
  table_id_white[3] = 5;
  table_id_white[4] = 7;
  table_id_white[5] = 9;
  table_id_white[6] = 11;
  int table_id_black[7];
  table_id_black[0] = -1;
  table_id_black[1] = 1;
  table_id_black[2] = 3;
  table_id_black[3] = -1;
  table_id_black[4] = 6;
  table_id_black[5] = 8;
  table_id_black[6] = 10;

  float white_lvl = 0.0;
  float black_lvl = 0.0;


   float tex_o = 0.5 / float(12 * 4.0);
  //for (int i = 0; i < 7; ++i)
  //{
    white_lvl = max(white_lvl, 1.8 * keyboard.compute(float(tex_o + table_id_white[id_white] + 12 * octave) / float(12 * 4.0)));
    //if (table_id_black[id_black] != -1)
    //  black_lvl = max(black_lvl, keyboard.compute(float(tex_o + table_id_black[id_black] + 12 * octave) / float(12 * 6.0)));
  //}
  

  
  q2.z = mod(q2.z + 0.5 * period, period) - period * 0.5;
  q2.y -= 0.15;
  q2.x += 0.4;
  float white = sdBox(q - vec3(0.0, -white_lvl * 0.1, 0.0), vec3(1.0, 0.1, period * 0.48));
  vec2 d = vec2(white, MAT_WHITE);

  float black = 10000000.0;
  if (id_black != 0 && id_black != 3 && id_black != 7)
    black = ChamferBox(q2 - vec3(0.0, -0.1 -black_lvl * 0.1, 0.0),vec3(0.6, 0.17, period * 0.25), 0.01, 0.0);//sdBox(q2, vec3(0.65, 0.1, period * 0.25));
  

  return mmin(d, black, MAT_BLACK);
}

vec4 rm(vec3 ro, vec3 rd, out float st)
{
  st = 0.0;
  vec3 p = ro;
  float m = MAT_VOID;
  for (int i = 0; i < 256; ++i)
  {
    vec2 d = map(p);
    if (abs(d.x) > 100.0)
      return vec4(p, MAT_VOID);
    else if (abs(d.x) < 0.001)
    {
      st = float(i) / 256.0;
      m = d.y;
      break;
    }

    p += rd * d.x * 0.6;
    
  }
  return vec4(p, m);
}

vec3 grad(vec3 p)
{
  vec2 eps = vec2(0.001, 0.0);
    vec3 n = normalize(vec3(
    map(p + eps.xyy).x - map(p - eps.xyy).x,
    map(p + eps.yxy).x - map(p - eps.yxy).x,
    map(p + eps.yyx).x - map(p - eps.yyx).x));
  return n;
}

vec4 hsv_to_rgb(float h)
{
	float c = 1.;
	h = mod((h * 6.0), 6.0);
	float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
	vec4 color;
 
	if (0.0 <= h && h < 1.0) {
		color = vec4(c, x, 0.0, 1.);
	} else if (1.0 <= h && h < 2.0) {
		color = vec4(x, c, 0.0, 1.);
	} else if (2.0 <= h && h < 3.0) {
		color = vec4(0.0, c, x, 1.);
	} else if (3.0 <= h && h < 4.0) {
		color = vec4(0.0, x, c, 1.);
	} else if (4.0 <= h && h < 5.0) {
		color = vec4(x, 0.0, c, 1.);
	} else if (5.0 <= h && h < 6.0) {
		color = vec4(c, 0.0, x, 1.);
	} else {
		color = vec4(0.0, 0.0, 0.0, 1.);
	}
	return color;
}

vec3 shade(vec3 origin, vec3 p, vec3 n, float st, float m)
{
  vec3 color = vec3(exp(-distance(p, origin) * 0.1) * (1.0 - st));
  if (m == MAT_WHITE)
  {
    color += vec3(0.3);
    color *= white_keys;
  }
  else if (m== MAT_BLACK)
  {
    if (rainbow)
      color *= hsv_to_rgb(p.z + time).rgb;
    else 
      color *= black_keys;
  }
  return color;
}


vec4 main(in vec3 origin, in vec3 direction, in ivec2 px, out vec3 intersectionPoint)
{
  float st=0.0;
  vec3 ro = origin + vec3(0.0, 0.0, time * z_speed);
  vec4 r = rm(ro, vec3(direction.x, direction.y, direction.z), st);

  if (r.w == MAT_VOID)
    discard;

  vec3 p = r.xyz;
  vec3 n = grad(p);

  vec3 color = shade(ro, p, n, st, r.w);

  intersectionPoint = p;
  
  vec3 rd2 = reflect(direction, n);
  vec3 ro2 = p + 0.01 * rd2;

  vec4 r2 = rm(ro2, rd2, st);
  vec3 p2 = r2.xyz;
  vec3 n2 = grad(p2);
  
  vec3 color2 = shade(ro, p2, n2, st, r2.w);
  color = mix(color, color2, 0.3);
  //color = vec3(keyboard.compute(direction.x), keyboard.compute(direction.y), keyboard.compute(direction.z));
  return vec4(color, 1.0);
}", 
              dynamicVariables = 
              {
                => 'DynamicVariable(Boolean) @bf0d42e682ebb834 
                {
                  friendlyName = "Rainbow", 
                  parameters = 
                  {
                    {
                      key = => @53025f3798438add "glslName", 
                      value = => @9f3bbb330acd9446 => "rainbow"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Vector2d) @9356393062cdb708 
                {
                  friendlyName = "Amplitude", 
                  parameters = 
                  {
                    {
                      key = => @97fdc10510ace5a7 "glslName", 
                      value = => @358c20e3094cdf28 => "amplitude"
                    }
                  }, 
                  value = {x = 0., y = 0.}
                }, 
                => 'DynamicVariable(Vector2d) @c76b448dc39d660c 
                {
                  friendlyName = "Frequency", 
                  parameters = 
                  {
                    {
                      key = => @c1da502150bf3311 "glslName", 
                      value = => @be2c376b2f1db94a => "frequency"
                    }
                  }, 
                  value = {x = 0.5, y = 0.5}
                }, 
                => 'DynamicVariable(Real) @fc1af474bef641c0 
                {
                  friendlyName = "Rotate_speed", 
                  parameters = 
                  {
                    {
                      key = => @7aefb7a658bc539b "glslName", 
                      value = => @1dd80f06ba62093c => "rotate_speed"
                    }
                  }, 
                  value = 1.88
                }, 
                => 'DynamicVariable(Real) @bbb0ad1332795344 
                {
                  friendlyName = "Rotate_amplitude", 
                  parameters = 
                  {
                    {
                      key = => @f545aa23d674595 "glslName", 
                      value = => @4caf87dabd676b7e => "rotate_amplitude"
                    }
                  }, 
                  value = 0.16
                }, 
                => 'DynamicVariable(Real) @6f067621a6b69298 
                {
                  friendlyName = "Rotate_frequency", 
                  parameters = 
                  {
                    {
                      key = => @b50a8cffad5dd7bf "glslName", 
                      value = => @f9d599179c37b680 => "rotate_frequency"
                    }
                  }, 
                  value = 1.0272
                }, 
                => 'DynamicVariable(Real) @cf8e15314780389c 
                {
                  friendlyName = "Z_speed", 
                  parameters = 
                  {
                    {
                      key = => @983deb4c8b7de269 "glslName", 
                      value = => @552bd0b420c376e2 => "z_speed"
                    }
                  }, 
                  value = 0.95
                }, 
                => 'DynamicVariable(Boolean) @1e8801e798db4150 
                {
                  friendlyName = "Repeat", 
                  parameters = 
                  {
                    {
                      key = => @96adf6c3a02cf413 "glslName", 
                      value = => @a91c43f610593114 => "repeat"
                    }
                  }, 
                  value = False
                }, 
                => 'DynamicVariable(Color) @4c97ea5b11b42bd4 
                {
                  friendlyName = "White_keys", 
                  parameters = 
                  {
                    {
                      key = => @977c1478041ae76d "glslName", 
                      value = => @cf925db178dd5596 => "white_keys"
                    }
                  }, 
                  value = {red = 1., green = 1., blue = 1.}
                }, 
                => 'DynamicVariable(Color) @95224520e6ae7028 
                {
                  friendlyName = "Black_keys", 
                  parameters = 
                  {
                    {
                      key = => @a0de012d910548b7 "glslName", 
                      value = => @48f566ed893d40f8 => "black_keys"
                    }
                  }, 
                  value = {red = 0.2, green = 0.2, blue = 0.2}
                }, 
                => 'DynamicVariable(OwnedPointer(FunctionShape)) @7a2e8a0f120e152c 
                {
                  friendlyName = "Keyboard", 
                  parameters = 
                  {
                    {
                      key = => @77cd75088978b0a1 "glslName", 
                      value = => @d55ac7e7d7e61d9a => "keyboard"
                    }
                  }, 
                  value = => 'MidiKeyboardFunctionShape @44aa2fc8deecb051 
                  {
                    activation = "activationRequested", 
                    device = "Midi Files", 
                    noteRange = {from = "C2", to = "B5"}
                  }
                }, 
                => 'DynamicVariable(StandalonePlayableCueTransport) @19cfbdf084f5fbea 
                {
                  friendlyName = "Time", 
                  parameters = 
                  {
                    {
                      key = => @60a5d66726c8c5ab "glslName", 
                      value = => @f4421a944b504c0c => "time"
                    }
                  }, 
                  value = 
                  {
                    reset = 0, 
                    play = 0, 
                    pause = 0, 
                    finalize = 0, 
                    previous = 0, 
                    next = 0, 
                    playing = True, 
                    state = "playing", 
                    position = 0., 
                    length = +oo, 
                    player = -> nil
                  }
                }
              }, 
              depthTest = False, 
              depthWrite = False
            }
          }
        }, 
        renderer = => 'SingleLayerRenderer @7fee2184d8711802 
        {
          activation = "activationRequested", 
          opacity = 0., 
          placement = => 'Parametric2dPlacement @f189ca4101d29f43 
          {
            activation = "activationRequested", 
            scale = => 'ScaleFactorPlacement2dScale @516af54c25cd9c3c void
          }
        }
      }, 
      => 'Layer @a9fe3aa9283aa6a 
      {
        activation = "inactive", 
        label = "prop-1", 
        generator = => 'Compo @d9bee65b2fd7ab60 
        {
          activation = "activationRequested", 
          tools = 
          {
            => 'SharedElement(LayerGenerator) @aa22e2a094838f9a 
            {
              activation = "activationRequested", 
              label = "msk circle", 
              expose = False, 
              content = => 'Compo @74b9adf9715d0264 
              {
                activation = "activationRequested", 
                processor = {activation = "activationRequested"}, 
                renderables = 
                {
                  => 'Layer @ae25c871f18f242e 
                  {
                    activation = "activationRequested", 
                    generator = => 'UniformLayerGenerator @1a6252df9b32143f 
                    {
                      activation = "activationRequested", 
                      preset = {libraryName = "Default", presetName = "White"}, 
                      color = {red = 1., green = 1., blue = 1.}
                    }, 
                    renderer = => 'SingleLayerRenderer @7256503928755178 
                    {
                      activation = "activationRequested", 
                      placement = => 'Parametric2dPlacement @8be0c144169cf261 
                      {
                        activation = "activationRequested", 
                        scale = => 'ScaleFactorPlacement2dScale @629cba64e086f27a void
                      }
                    }
                  }, 
                  => 'Layer @898f41f20a2f49a9 
                  {
                    activation = "activationRequested", 
                    generator = => 'UniformLayerGenerator @913d85c597152502 
                    {
                      activation = "activationRequested", 
                      preset = {libraryName = "Default", presetName = "Black"}, 
                      modifiers = 
                      {
                        => 'MaskLayerModifier @afa65e48298cf684 
                        {
                          activation = "activationRequested", 
                          masks = 
                          {
                            => 'RadialMask @79667529378f025d 
                            {
                              activation = "activationRequested", 
                              ellipse = {size = {width = 0.1995, height = 0.35, ratio = 0.57}}
                            }
                          }
                        }
                      }
                    }, 
                    renderer = => 'SingleLayerRenderer @8df6338cc1992843 
                    {
                      activation = "activationRequested", 
                      placement = => 'Parametric2dPlacement @29d5388fd817713c 
                      {
                        activation = "activationRequested", 
                        scale = => 'ScaleFactorPlacement2dScale @659dba7da03a9095 {scaleFactor = {width = 0.25, height = 0.25, ratio = 1.}}
                      }
                    }
                  }
                }
              }
            }, 
            => 'AnimationBank @df6772bdd62d2807 
            {
              activation = "activationRequested", 
              animations = 
              {
                => 'FunctionCue(Angle) @5fda75a5f0cab90 
                {
                  activation = "activationRequested", 
                  transport = {length = 3.}, 
                  parameters = {launchMode = "restartWithActivation", out = {value = 3.}, speed = 0.1, looping = True}, 
                  targets = 
                  {
                    => 'ParameterLinkTarget @32e1310ace3ca0b9 
                    {
                      activation = "activationRequested", 
                      target = {"data", -> @1e28c426a1e0c777, "orientation", "y"}
                    }
                  }, 
                  function = => 'ParametricScalarFunction({input = Seconds, output = Angle}) @8d25d5a978ae96d2 
                  {
                    activation = "activationRequested", 
                    shape = => 'LinearRampFunctionShape @56b86dcc6162bdd3 {activation = "activationRequested"}, 
                    parameters = {maximum = 6.28318530718, period = 3.}
                  }
                }, 
                => 'FunctionCue(PositiveMeters) @87eeae508aa87ed4 
                {
                  activation = "activationRequested", 
                  transport = {length = 3.}, 
                  parameters = {launchMode = "restartWithActivation", out = {value = 3.}, looping = True}, 
                  targets = 
                  {
                    => 'ParameterLinkTarget @7b7b0dadff662cad 
                    {
                      activation = "activationRequested", 
                      target = {"data", -> @d17c43337ecfb746, "radius"}
                    }
                  }, 
                  function = => 'ParametricScalarFunction({input = Seconds, output = PositiveMeters}) @3b8973b32f2ca5f6 
                  {
                    activation = "activationRequested", 
                    shape = => 'MidiKeyboardFunctionShape @48e805c811670f15 
                    {
                      activation = "activationRequested", 
                      convolution = 
                      {
                        windowWidth = 0.08, 
                        shape = => 'QuadFunctionShape @7af6aaf88ccf5aaf {activation = "activationRequested"}, 
                        divisionFactor = 1.
                      }, 
                      device = "Midi Files"
                    }, 
                    parameters = {minimum = 1., maximum = 2., period = 3.}
                  }
                }, 
                => 'FunctionCue(Percentage) @20b6c9548574541a 
                {
                  activation = "inactive", 
                  transport = {length = 3.}, 
                  parameters = {launchMode = "restartWithActivation", out = {value = 3.}, looping = True}, 
                  function = => 'ParametricScalarFunction({input = Seconds, output = Percentage}) @394a670ffbcf0b74 
                  {
                    activation = "activationRequested", 
                    shape = => 'MidiKeyboardFunctionShape @97cb2cab75cbc0e3 
                    {
                      activation = "activationRequested", 
                      convolution = 
                      {
                        windowWidth = 0.08, 
                        shape = => 'QuadFunctionShape @a22d60f32d7c9035 {activation = "activationRequested"}, 
                        divisionFactor = 1.
                      }, 
                      device = "Midi Files"
                    }, 
                    parameters = {maximum = 1., period = 3.}
                  }
                }
              }
            }
          }, 
          processor = {activation = "activationRequested", resolution = {preset = "hd1080"}, alphaLayer = False}, 
          mainAnimation = => 'TimelineCue @e6168fac7e6c90c9 
          {
            activation = "activationRequested", 
            transport = {length = 40.}, 
            parameters = {launchMode = "restartWithActivation", out = {value = 40.}, looping = True}, 
            elementTracks = 
            {
              {
                key = => @9665d9a857b226e3 {"data", -> @d1a3450e216960e6}, 
                value = => @99536b5977dfffdc 
                {
                  activation = "activationRequested", 
                  blocks = 
                  {
                    => @8ab74da99676635 #1 
                    {
                      activation = "activationRequested", 
                      length = 174.5456, 
                      footage = 
                      {
                        position = {out = {value = 174.5456}, shape = -> nil}, 
                        intensity = 
                        {
                          fadeIn = 
                          {
                            value = 
                            {
                              shape = => 'LinearRampFunctionShape @a4a045b093d83bbe void
                            }
                          }, 
                          fadeOut = 
                          {
                            value = 
                            {
                              shape = => 'LinearRampFunctionShape @5a616105c406bc4f void
                            }
                          }
                        }, 
                        activation = {automateActivation = False, preload = {value = 0.}, unload = {value = 0.}}
                      }
                    }
                  }
                }
              }, 
              {
                key = => @b4a8080f707b8568 {"data", -> @82ae77cfbb6fd1c2}, 
                value = => @fe8e44f3c60af51 
                {
                  activation = "activationRequested", 
                  blocks = 
                  {
                    => @826691adc77dfea #1 
                    {
                      activation = "activationRequested", 
                      length = 155.585238095, 
                      footage = 
                      {
                        position = {out = {value = 155.585238095}, shape = -> nil}, 
                        intensity = 
                        {
                          fadeIn = 
                          {
                            value = 
                            {
                              shape = => 'LinearRampFunctionShape @de78443f092a6b0b void
                            }
                          }, 
                          fadeOut = 
                          {
                            value = 
                            {
                              shape = => 'LinearRampFunctionShape @83f1f22990a52944 void
                            }
                          }
                        }, 
                        activation = {preload = {enabled = True}, unload = {enabled = True}}
                      }
                    }
                  }
                }
              }
            }, 
            parameterTracks = 
            {
              {
                key = => 'WeakPointer(Object) @a03e52baf88051e1 {"data", -> @411f305fd5a9e646, "position", "y"}, 
                value = => 'ParameterTrack({input = Seconds, output = Meters}) @84857eaafb461bfa 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Meters}) @287a51178a01ddb 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @eb2bdf52f31f5929 
                      {
                        activation = "activationRequested", 
                        key = 7.6664, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @f8dc6a05ab56be82 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @9a81da2c4a68c3c3 void
                      }, 
                      => @297b4b27d8a2f0cb 
                      {
                        activation = "activationRequested", 
                        position = 40.0643564356, 
                        key = -69.7774, 
                        inputInterpolator = => 'LinearKeyframeInterpolator @86a1307e4c3edc04 void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @8025901b34d039dd void
                      }
                    }
                  }
                }
              }, 
              {
                key = => 'WeakPointer(Object) @6d8326746339b45a {"data", -> @f767b1218d245a6a, "target", "z"}, 
                value = => 'ParameterTrack({input = Seconds, output = Meters}) @d0a68c3e44ca9a3b 
                {
                  activation = "activationRequested", 
                  function = => 'KeyframeFunction({input = Seconds, output = Meters}) @e6f036fa0574c5b4 
                  {
                    activation = "activationRequested", 
                    keyframes = 
                    {
                      => @8ac758c72128e50a 
                      {
                        activation = "activationRequested", 
                        key = 20., 
                        inputInterpolator = => 'LinearKeyframeInterpolator @49c0d73d2ac352b void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @223d846ca2b59de4 void
                      }, 
                      => @f72fcdfafaf1d615 
                      {
                        activation = "activationRequested", 
                        position = 75., 
                        key = -20., 
                        inputInterpolator = => 'LinearKeyframeInterpolator @fa6f559d294a791e void, 
                        outputInterpolator = => 'LinearKeyframeInterpolator @44c199d4c32a39af void
                      }
                    }
                  }
                }
              }
            }
          }, 
          renderables = 
          {
            => 'ReferencedFileSoundTrack @82ae77cfbb6fd1c2 
            {
              activation = "activationRequested", 
              tools = 
              {
                => 'ReferencedMidiFile @d1a3450e216960e6 
                {
                  activation = "activationRequested", 
                  transport = {state = "paused", length = 174.5456}, 
                  file = {path = "Pianomania_-_step_4-2_-_keyb_generation_-_channel_1_only_-_mode_0.mid"}
                }
              }, 
              file = {path = "Pianomania_-_step_4_-_110_BPM_-_avec_retard_sur_MIDI.ac3"}, 
              transport = {state = "paused", length = 155.585238095}
            }, 
            => 'Layer @7f624f072443d3a4 
            {
              activation = "inactive", 
              generator = => 'Compo @c934a5804a058dfd 
              {
                activation = "activationRequested", 
                tools = 
                {
                  => 'ParameterBank @6bb37cb6892ae13c 
                  {
                    activation = "activationRequested", 
                    parameters = 
                    {
                      => 'Parameter(Percentage) @e669764fbeadc095 
                      {
                        activation = "activationRequested", 
                        targets = 
                        {
                          => 'ParameterLinkTarget @7bd71a7343dd919e 
                          {
                            activation = "activationRequested", 
                            modifiers = 
                            {
                              => 'FunctionLinkModifier({input = Percentage, output = UnboundedPercentage}) @9fa3e4228086e82f 
                              {
                                activation = "activationRequested", 
                                function = => 'KeyframeFunction({input = Percentage, output = UnboundedPercentage}) @7d2673229d1b2ea8 
                                {
                                  activation = "activationRequested", 
                                  keyframes = 
                                  {
                                    => @50d06a0cfd307f91 
                                    {
                                      activation = "activationRequested", 
                                      position = 0.5, 
                                      key = 0.75, 
                                      inputInterpolator = => 'LinearKeyframeInterpolator @616d8e9c1a340b2a void, 
                                      outputInterpolator = => 'LinearKeyframeInterpolator @8903900e269c154b void
                                    }, 
                                    => @cc2f8c2ba3406684 
                                    {
                                      activation = "activationRequested", 
                                      position = 1., 
                                      key = 5.5, 
                                      inputInterpolator = => 'LinearKeyframeInterpolator @62ff150d5c9c725d void, 
                                      outputInterpolator = => 'LinearKeyframeInterpolator @8a40e120cc01cd26 void
                                    }, 
                                    => @4e7f2c2245c432cd 
                                    {
                                      activation = "activationRequested", 
                                      key = -0.03, 
                                      inputInterpolator = => 'LinearKeyframeInterpolator @9c0ed138caa9dc96 void, 
                                      outputInterpolator = => 'LinearKeyframeInterpolator @8bca5dae5bf4a47 void
                                    }
                                  }
                                }
                              }
                            }, 
                            target = {"data", -> @4c6c5d4218f1c54c, "scaleFactor", "width"}
                          }
                        }, 
                        value = 0.5
                      }, 
                      => 'Parameter(ActivationState) @25a29dfb47a1d3e6 
                      {
                        activation = "activationRequested", 
                        targets = 
                        {
                          => 'ParameterLinkTarget @c5ed6deb7663dc17 
                          {
                            activation = "activationRequested", 
                            target = {"data", -> @3e6d4b66d57b804a, "activation"}
                          }
                        }
                      }
                    }
                  }
                }, 
                modifiers = 
                {
                  => 'BlurLayerModifier @2e173ced2e056571 
                  {
                    activation = "activationRequested", 
                    preset = {libraryName = "Advanced Presets", presetName = "Glow"}, 
                    intensity = 0.5, 
                    shape = => 'GaussianBlurShape @60f8d89b9327900a {activation = "activationRequested"}, 
                    samples = {distance = {width = 0.00208333333333, height = 0.0037037037037, ratio = 0.5625}}, 
                    sourceLevel = 1.
                  }, 
                  => 'DrosteLayerModifier @c8e24a121a7b2b27 {activation = "inactive", scale = 0.02}, 
                  => 'Transform2dLayerModifier @9ecd8d207f8aecd2 
                  {
                    activation = "activationRequested", 
                    masks = 
                    {
                      => 'RadialMask @31153645c16e2c30 
                      {
                        activation = "activationRequested", 
                        ellipse = {size = {width = 0.45, height = 0.45, ratio = 1.}}, 
                        feather = {top = 0.33, bottom = 0.33, left = 0.33, right = 0.33}
                      }
                    }, 
                    frame = => 'Parametric2dPlacement @54a390cadc77dbd3 
                    {
                      activation = "activationRequested", 
                      scale = => 'ScaleFactorPlacement2dScale @4c6c5d4218f1c54c {scaleFactor = {width = 0.75, height = 0.75, ratio = 1.}}
                    }
                  }, 
                  => 'MotionBlurLayerModifier @e43a6fee13ec0666 
                  {
                    activation = "activationRequested", 
                    modifiers = 
                    {
                      => 'TilesLayerModifier @3e6d4b66d57b804a 
                      {
                        activation = "activationRequested", 
                        pattern = => 'RadialGradientLayerGenerator @fdafb9b4bc2dcf6b 
                        {
                          activation = "activationRequested", 
                          resolution = {preset = "custom", width = 32, height = 32}, 
                          gradient = => 'BitoneColorFunction @8c0156306c7a8b24 
                          {
                            activation = "activationRequested", 
                            beginColor = {red = 1., green = 1., blue = 1.}, 
                            endColor = {red = 0., green = 0., blue = 0.}
                          }
                        }, 
                        patternScale = => 'SizePlacement2dScale @e4f8662508b4a036 
                        {
                          size = {width = 0.05, height = 0.002, linked = False, ratio = 25.}
                        }, 
                        scaleMin = {width = 50., height = 50., ratio = 1.}, 
                        scaleMax = {width = 50., height = 50., ratio = 1.}
                      }
                    }
                  }, 
                  => 'SobelLayerModifier @c4417e4d9f2c227e 
                  {
                    activation = "activationRequested", 
                    preRasterize = True, 
                    size = {width = 0.000520833333333, height = 0.000925925925926, ratio = 0.5625}, 
                    threshold = 0.156, 
                    edgesColor = {red = 1., green = 1., blue = 1.}, 
                    colorizeEdgesWithSource = True
                  }, 
                  => 'MaskLayerModifier @2fcb6a84795d3479 
                  {
                    activation = "activationRequested", 
                    masks = 
                    {
                      => 'RadialMask @69e37ed6372a3f92 
                      {
                        activation = "activationRequested", 
                        preset = {libraryName = "Default", presetName = "Vignet Large"}, 
                        ellipse = {size = {height = 0.48, linked = False, ratio = 1.04166666667}}, 
                        feather = {top = 0.25, bottom = 0.25, left = 0.25, right = 0.25}
                      }
                    }
                  }
                }, 
                processor = {activation = "activationRequested"}, 
                currentCamera = {"data", -> @a907b84336d6c3d1}, 
                cameras = 
                {
                  => 'AffineCamera @a907b84336d6c3d1 
                  {
                    activation = "activationRequested", 
                    preset = {libraryName = "Default", presetName = "Front Perspective Camera"}, 
                    placement = => 'TargetOrientationDistance3dPlacement @f767b1218d245a6a 
                    {
                      activation = "activationRequested", 
                      target = {z = 6.68255321479}, 
                      distance = 3.5
                    }, 
                    frustum = => 'FieldOfViewPerspectiveFrustum @3bcba1a87ad538b 
                    {
                      activation = "activationRequested", 
                      horizontal = 1.0472, 
                      vertical = 1.0472
                    }
                  }
                }, 
                renderables = 
                {
                  => 'Layer @85373befd22eab66 
                  {
                    activation = "activationRequested", 
                    generator = => 'RadialGradientLayerGenerator @c26b4298cacddd97 
                    {
                      activation = "activationRequested", 
                      gradient = => 'BitoneColorFunction @341dedaf7a3c1df0 
                      {
                        activation = "activationRequested", 
                        beginColor = {red = 0.0235294122249, blue = 0.156862750649}, 
                        endColor = {red = 0., green = 0., blue = 0.}
                      }
                    }, 
                    renderer = => 'SingleLayerRenderer @41341849c8343819 
                    {
                      activation = "activationRequested", 
                      placement = => 'Parametric2dPlacement @72364fa2d1742632 
                      {
                        activation = "activationRequested", 
                        scale = => 'ScaleFactorPlacement2dScale @223f7f821fe42eb3 void
                      }
                    }
                  }, 
                  => 'Node @93a1209de5b4deb8 
                  {
                    activation = "activationRequested", 
                    generator = => 'PlaneNodeGenerator @22c6b19b5e4f56a1 #1 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'PositionNoiseNodeModifier @55f34ed07e81863f 
                        {
                          activation = "activationRequested", 
                          noise = 
                          {
                            activation = "activationRequested", 
                            function = => 'PerlinNoiseFunction @dfc75aad1530db78 {activation = "activationRequested"}, 
                            scale = {x = 0.25, y = 0.25, z = 0.25}
                          }, 
                          transport = 
                          {
                            player = => @d9b3f9ee71eda6d9 
                            {
                              activation = "activationRequested", 
                              parameters = {launchMode = "restartWithActivation", out = {value = +oo}, speed = 0.025, looping = True}
                            }
                          }
                        }, 
                        => 'ScaleNodeModifier @510ce78f20059b32 
                        {
                          activation = "activationRequested", 
                          preset = {libraryName = "Advanced Presets", presetName = "Random Scale"}, 
                          masks = 
                          {
                            => 'RandomVertexMask @c01c5198aaca3fb3 {activation = "activationRequested"}
                          }, 
                          scale = {x = 0.01, y = 0.01, z = 0.01}
                        }, 
                        => 'RandomPointsNodeModifier @fae714b430f53c52 {activation = "inactive"}, 
                        => 'OpacityNodeModifier @68e55d2dccad24a6 
                        {
                          activation = "activationRequested", 
                          preset = {libraryName = "Default", presetName = "Noise"}, 
                          opacity = => 'FunctionVertexMask @9ea57d687dd2bdd7 
                          {
                            activation = "activationRequested", 
                            mask = => 'NoiseVertexMask @20578192c6db8860 
                            {
                              activation = "activationRequested", 
                              noise = 
                              {
                                activation = "activationRequested", 
                                function = => 'PerlinNoiseFunction @abf845843c2529c9 {activation = "activationRequested"}, 
                                scale = {x = 0.5, y = 0.5, z = 0.5}
                              }, 
                              transport = 
                              {
                                player = => @336f16c5227bc048 
                                {
                                  activation = "activationRequested", 
                                  parameters = {launchMode = "restartWithActivation", out = {value = +oo}, speed = 0.25, looping = True}
                                }
                              }
                            }, 
                            function = => 'ParametricScalarFunction({input = Percentage, output = Percentage}) @6207d0a79bed7259 
                            {
                              activation = "activationRequested", 
                              shape = => 'NoiseFunctionShape @1ad3146b5b317372 
                              {
                                activation = "activationRequested", 
                                transport = {state = "playing"}, 
                                frequency = 16.1
                              }, 
                              parameters = {maximum = 0.979167, period = 1., wrapMode = "clamp"}
                            }
                          }
                        }
                      }, 
                      size = {width = 50., height = 50., ratio = 1.}, 
                      precision = {x = 500, y = 500}
                    }, 
                    placement = => 'PositionOrientation3dPlacement @6866fecfcae61ba {activation = "activationRequested"}, 
                    users = 
                    {
                      => 'SurfaceNodeRenderer @d9ca6aa87c26909b 
                      {
                        activation = "inactive", 
                        components = 
                        {
                          => 'DiffuseSurfaceComponent @24c213447a600794 
                          {
                            activation = "activationRequested", 
                            map = => 'UniformLayerGenerator @76350bc75c13a66d 
                            {
                              activation = "activationRequested", 
                              resolution = {width = 1024, height = 1024}, 
                              color = {red = 1., green = 1., blue = 1.}
                            }
                          }, 
                          => 'SpecularSurfaceComponent @26ee82c9a8327cb6 
                          {
                            activation = "activationRequested", 
                            map = => 'UniformLayerGenerator @861684cb60cd5ce7 
                            {
                              activation = "activationRequested", 
                              resolution = {width = 1024, height = 1024}, 
                              color = {red = 1., green = 1., blue = 1.}
                            }
                          }
                        }
                      }, 
                      => 'SpritePointsNodeRenderer @6ec221a9a12d70ac 
                      {
                        activation = "activationRequested", 
                        blendingMode = "screen", 
                        depthBuffer = {test = False}, 
                        defaultMapResolution = {width = 512, height = 512}, 
                        size = {objectSpaceSize = {width = 0.05, height = 0.05, ratio = 1.}}, 
                        sprites = 
                        {
                          selector = => 'RandomVertexMask @6e23c9c84fb93345 {activation = "activationRequested"}
                        }, 
                        maps = 
                        {
                          => 'ReferencedImageLayerGenerator @828bd6531843468e 
                          {
                            activation = "activationRequested", 
                            modifiers = 
                            {
                              => 'ColorizeLayerModifier @f6b2dc0512508742 
                              {
                                activation = "activationRequested", 
                                colorSelector = => 'ChannelColorSelector @5fdacb0adaa2bd83 
                                {
                                  activation = "activationRequested", 
                                  function = => 'ColorLevelFunction @1e47d7f6b3bd7d7c {activation = "activationRequested"}
                                }, 
                                gradient = => 'TritoneColorFunction @a8cd0d8074b1c7d5 
                                {
                                  activation = "activationRequested", 
                                  beginColor = {alpha = 0.}, 
                                  intermediateColor = {red = 0., green = 0.796078443527, blue = 1.}
                                }
                              }
                            }, 
                            extractor = => 'Parametric2dPlacement @7cc92a176b97d21f 
                            {
                              activation = "activationRequested", 
                              anchor = {x = 0., y = 0.}, 
                              position = {x = 0., y = 0.}, 
                              scale = => 'SizePlacement2dScale @f307a97391f04d8 {size = {width = 1., height = 1., ratio = 1.}}
                            }, 
                            file = {path = "Dot White b.png"}
                          }
                        }
                      }
                    }
                  }, 
                  => 'Node @63e3ee46929d5ee4 
                  {
                    activation = "inactive", 
                    generator = => 'PlaneNodeGenerator @d2847f402966d6fd #1 
                    {
                      activation = "activationRequested", 
                      modifiers = 
                      {
                        => 'PositionNoiseNodeModifier @a5b1800b09a80663 
                        {
                          activation = "activationRequested", 
                          noise = 
                          {
                            activation = "activationRequested", 
                            function = => 'PerlinNoiseFunction @2f85947662195b24 {activation = "activationRequested"}
                          }, 
                          transport = 
                          {
                            player = => @29f1373506c42685 
                            {
                              activation = "activationRequested", 
                              parameters = {launchMode = "restartWithActivation", out = {value = +oo}, speed = 0.01, looping = True}
                            }
                          }, 
                          strength = {y = 5., linked = False}
                        }, 
                        => 'ScaleNodeModifier @a14e2954572c1b6e 
                        {
                          activation = "activationRequested", 
                          preset = {libraryName = "Advanced Presets", presetName = "Random Scale"}, 
                          masks = 
                          {
                            => 'RandomVertexMask @305e9f43dde3bfef {activation = "activationRequested"}
                          }, 
                          scale = {x = 0.01, y = 0.01, z = 0.01}
                        }, 
                        => 'RandomPointsNodeModifier @aa5da6f47dcbc0e {activation = "inactive"}, 
                        => 'InstantiateNodeModifier @7234c8379371092f #1 
                        {
                          activation = "activationRequested", 
                          selector = => 'RandomVertexMask @3b830bb634b17ba8 {activation = "activationRequested"}, 
                          generators = 
                          {
                            => 'SphereNodeGenerator @6b15bdd79ce1157b {activation = "activationRequested"}
                          }
                        }
                      }, 
                      size = {width = 50., height = 50., ratio = 1.}, 
                      precision = {x = 20, y = 20}
                    }, 
                    placement = => 'PositionOrientation3dPlacement @f6c4a1378b87e1e6 {activation = "activationRequested"}, 
                    users = 
                    {
                      => 'SurfaceNodeRenderer @2988a4730b0f10c7 
                      {
                        activation = "inactive", 
                        components = 
                        {
                          => 'DiffuseSurfaceComponent @d480dd9f0d4987c8 
                          {
                            activation = "activationRequested", 
                            map = => 'UniformLayerGenerator @8677c51c2b3a2631 
                            {
                              activation = "activationRequested", 
                              resolution = {width = 1024, height = 1024}, 
                              color = {red = 1., green = 1., blue = 1.}
                            }
                          }, 
                          => 'SpecularSurfaceComponent @d6ac4c12df1bfcea 
                          {
                            activation = "activationRequested", 
                            map = => 'UniformLayerGenerator @76544a1017e4dcbb 
                            {
                              activation = "activationRequested", 
                              resolution = {width = 1024, height = 1024}, 
                              color = {red = 1., green = 1., blue = 1.}
                            }
                          }
                        }
                      }, 
                      => 'SurfaceNodeRenderer @ff3d293f4300e30c 
                      {
                        activation = "activationRequested", 
                        side = "both", 
                        components = 
                        {
                          => 'DiffuseSurfaceComponent @7320a16b76a507d 
                          {
                            activation = "activationRequested", 
                            map = => 'ReferencedImageLayerGenerator @a0c30dc415d53d1e 
                            {
                              activation = "activationRequested", 
                              extractor = => 'Parametric2dPlacement @87b7f95b89ae8e27 
                              {
                                activation = "activationRequested", 
                                anchor = {x = 0., y = 0.}, 
                                position = {x = 0., y = 0.}, 
                                scale = => 'SizePlacement2dScale @d265af97e8b88afc {size = {width = 1., height = 1., ratio = 1.}}
                              }, 
                              file = {path = "SMODE/fichiers 3D/textures/TexturesCom_Concrete2_1024_albedo.tif"}
                            }, 
                            scale = {width = 10., height = 10., ratio = 1.}
                          }, 
                          => 'SpecularSurfaceComponent @34dd4ee2e58c40f3 
                          {
                            activation = "activationRequested", 
                            map = => 'UniformLayerGenerator @ad942c5a1034e5d8 
                            {
                              activation = "activationRequested", 
                              resolution = {width = 1024, height = 1024}, 
                              color = {red = 1., green = 1., blue = 1.}
                            }, 
                            scale = {width = 10., height = 10., ratio = 1.}
                          }, 
                          => 'NormalBumpSurfaceComponent @1a21a3381b69b15 
                          {
                            activation = "activationRequested", 
                            map = => 'ReferencedImageLayerGenerator @dde34efacfded97e 
                            {
                              activation = "activationRequested", 
                              extractor = => 'Parametric2dPlacement @db1338b81905e107 
                              {
                                activation = "activationRequested", 
                                anchor = {x = 0., y = 0.}, 
                                position = {x = 0., y = 0.}, 
                                scale = => 'SizePlacement2dScale @1bc2158d58ffee5c {size = {width = 1., height = 1., ratio = 1.}}
                              }, 
                              interpretAlpha = 
                              {
                                value = => 'StraightAlphaInterpreter @5337c142e96f577d void
                              }, 
                              file = {path = "SMODE/fichiers 3D/textures/TexturesCom_Concrete2_1024_normal.tif"}
                            }, 
                            scale = {width = 10., height = 10., ratio = 1.}, 
                            intensity = 0.1
                          }
                        }
                      }
                    }
                  }
                }
              }, 
              renderer = => 'SingleLayerRenderer @b13210a13a9034c6 
              {
                activation = "activationRequested", 
                placement = => 'Parametric2dPlacement @7a5c5182ae1b76f7 
                {
                  activation = "activationRequested", 
                  scale = => 'ScaleFactorPlacement2dScale @d66e0ffe36665050 void
                }
              }
            }
          }
        }, 
        renderer = => 'SingleLayerRenderer @d20f424f7c6db74 
        {
          activation = "activationRequested", 
          placement = => 'Parametric2dPlacement @32bbe35cf76fcdf 
          {
            activation = "activationRequested", 
            scale = => 'ScaleFactorPlacement2dScale @fc0f7db82b03e19e void
          }
        }
      }, 
      => 'Layer @373a473885d26684 
      {
        generator = => 'ReferencedImageLayerGenerator @ce26b9876ab2962f 
        {
          extractor = => 'Parametric2dPlacement @6ce7f48c769a99ee 
          {
            anchor = {x = 0., y = 0.}, 
            position = {x = 0., y = 0.}, 
            scale = => 'SizePlacement2dScale @4869233a740bfc11 {size = {width = 1., height = 1., ratio = 1.}}
          }, 
          file = {path = "Pianomania-credits-1920x1080-rose.png"}
        }, 
        renderer = => 'SingleLayerRenderer @e4d52a79de55bbb8 
        {
          placement = => 'Parametric2dPlacement @1a6216212bd02db3 
          {
            scale = => 'ScaleFactorPlacement2dScale @d79f487e9f6b7602 void
          }
        }
      }, 
      => 'Layer @ca3e3c4800e2e75 
      {
        generator = => 'UniformLayerGenerator @80e3c75c8da2e5dc void, 
        renderer = => 'SingleLayerRenderer @566d5c7557af86b7 
        {
          placement = => 'Parametric2dPlacement @c24678f3eb78c5f6 
          {
            scale = => 'ScaleFactorPlacement2dScale @a9185239970f4dc9 void
          }
        }
      }
    }
  }, 
  uiState = => 'DefaultDocumentEditor 
  {
    state = 
    {
      currentVisualizerView = => 'LayerGeneratorVisualizerViewSelector "twoDimensions", 
      currentElementEditor = GizmoTimelineEditor, 
      currentSelection = {{"data", -> @a52db92f7b939c3d}}
    }, 
    internal = => 'SplitLayout 
    {
      ratio = 0.6, 
      first = 'SplitLayout 
      {
        ratio = 0.633333333333, 
        first = 'GizmoVisualizerEditor 
        {
          widget = 'ToolsAndContentLayout 
          {
            content = 'DocumentWeakPointerContextualEditor 
            {
              state = 
              {
                {
                  key = => 'ObjectWeakPointer {"data", -> @8531c9690046b5e}, 
                  value = => => 'LayerGeneratorVisualizer void
                }
              }
            }
          }, 
          state = {targetPointer = {"data", -> @8531c9690046b5e}, targetPointerAsSelection = {{"data", -> @8531c9690046b5e}}}
        }, 
        second = 'ElementEditorsTabbedLayout 
        {
          widgets = 
          {
            'GizmoTimelineEditor 
            {
              widget = 'ToolsAndContentLayout 
              {
                content = 'DocumentWeakPointerContextualEditor 
                {
                  state = 
                  {
                    {
                      key = => 'ObjectWeakPointer {"data", -> @1d8c0a79384a0927}, 
                      value = => => 'AnimationEditor 
                      {
                        widget = 'AnimationFunctionEditor 
                        {
                          internal = => 'ToolsAndContentLayout {content = 'WidgetOverlay {content = 'SplitLayout {ratio = 0.45}}}
                        }, 
                        state = 
                        {
                          inputRanges = 
                          {
                            {
                              key = => Seconds, 
                              value = => 
                              {
                                range = {position = 84.0689535086, scale = {scale = 0.097309753418}}, 
                                currentValue = => 'Seconds 157.
                              }
                            }
                          }, 
                          outputRanges = 
                          {
                            {
                              key = => Meters, 
                              value = => {range = {position = -146.788910499, scale = {scale = 0.58646794186}}}
                            }
                          }, 
                          currentCue = {"data", -> @1d8c0a79384a0927}
                        }
                      }
                    }
                  }
                }
              }, 
              state = {targetPointer = {"data", -> @1d8c0a79384a0927}, targetPointerAsSelection = {{"data", -> @1d8c0a79384a0927}}}
            }, 
            'GizmoShaderEditor 
            {
              widget = 'ToolsAndContentLayout 
              {
                content = 'DocumentWeakPointerContextualEditor 
                {
                  state = 
                  {
                    {
                      key = => 'ObjectWeakPointer {"data", -> @cb884d8eadd7dd92}, 
                      value = => => 'ElementShaderEditor void
                    }
                  }
                }
              }, 
              state = {targetPointer = {"data", -> @cb884d8eadd7dd92}, targetPointerAsSelection = {{"data", -> @cb884d8eadd7dd92}}}
            }, 
            'GizmoElementFileEditor 
            {
              widget = 'ToolsAndContentLayout 
              {
                content = 'DocumentWeakPointerContextualEditor 
                {
                  state = 
                  {
                    {
                      key = => 'ObjectWeakPointer {"data", -> @d392c50b730d7f5e}, 
                      value = => => 'ElementFileEditor 
                      {
                        widget = 'FileBrowser 
                        {
                          internal = => 'ToolsAndContentLayout {content = 'SplitLayout {ratio = 0.3333}}
                        }
                      }
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @a130acb084f08c6d}, 
                      value = => => 'ElementFileEditor 
                      {
                        widget = 'FileBrowser 
                        {
                          internal = => 'ToolsAndContentLayout {content = 'SplitLayout {ratio = 0.3333}}
                        }
                      }
                    }
                  }
                }
              }
            }
          }, 
          currentTabIndex = 0
        }
      }, 
      second = 'SplitLayout 
      {
        ratio = 0.65, 
        first = 'WidgetSlot 
        {
          content = 'OwnedPointerContextualEditor 
          {
            currentEditor = 'ElementTableEditor 
            {
              widget = 'ToolsAndContentLayout 
              {
                content = 'ElementTableWidget 
                {
                  state = 
                  {
                    viewPosition = {y = 1182}, 
                    header = => 'TableHeader 
                    {
                      stretchToFit = True, 
                      columns = 
                      {
                        => {name = "visualize", width = 22}, 
                        => {name = "elements", width = 192}, 
                        => {name = "status", width = 22}, 
                        => {name = "activation", width = 22}, 
                        => {name = "solo", width = 22}, 
                        => {name = "colorLabel", width = 22}, 
                        => {name = "editable", width = 22}, 
                        => {name = "value", width = 209}, 
                        => {name = "profile", visible = False, width = 180}, 
                        => {name = "activity", width = 22}, 
                        => {name = "loading", visible = False, width = 22}, 
                        => {name = "type", visible = False, width = 100}, 
                        => {name = "menu", visible = False, width = 22}
                      }
                    }, 
                    expandedRowTargets = 
                    {
                      {"data", -> @8531c9690046b5e}, 
                      {"data", -> @8531c9690046b5e, "renderables"}, 
                      {"data", -> @8531c9690046b5e, "mainAnimation"}, 
                      {"data", -> @617d8bf95e281637}, 
                      {"data", -> @8531c9690046b5e, "modifiers"}, 
                      {"data", -> @4f326ff60fc7ffd8}, 
                      {"data", -> @8ba353ced8ee5d40, "generator"}, 
                      {"data", -> @ad8dd9eb1e4c098b}, 
                      {"data", -> @c9c434b254932102}, 
                      {"data", -> @f1a599eb113e8cf9}, 
                      {"data", -> @105005ed6db3c479}, 
                      {"data", -> @617d8bf95e281637, "generator"}, 
                      {"data", -> @8ba353ced8ee5d40}, 
                      {"data", -> @e71eb0bead20f92}, 
                      {"data", -> @7e87cbade756ec41}, 
                      {"data", -> @8a2af5d9056de4a8, "map"}, 
                      {"data", -> @2bf62c6549c3e7d6}, 
                      {"data", -> @2bf62c6549c3e7d6, "cameras"}, 
                      {"data", -> @cc6ea52dfb9e28a9, "cameras"}, 
                      {"data", -> @cc6ea52dfb9e28a9, "renderables"}, 
                      {"data", -> @105005ed6db3c479, "generator"}, 
                      {"data", -> @df6772bdd62d2807}, 
                      {"data", -> @e71eb0bead20f92, "renderables"}, 
                      {"data", -> @f1a599eb113e8cf9, "generator"}, 
                      {"data", -> @9388a9851125f483}, 
                      {"data", -> @9388a9851125f483, "cameras"}, 
                      {"data", -> @a8d36cf00c0e00ab}, 
                      {"data", -> @cc6ea52dfb9e28a9}, 
                      {"data", -> @ea1f01752774e89}, 
                      {"data", -> @35349b1014e0f490}, 
                      {"data", -> @1fe08988edd59ad3}, 
                      {"data", -> @8a2af5d9056de4a8}
                    }, 
                    selectedRowTargets = {{"data", -> @a52db92f7b939c3d}}, 
                    lastSelectedRowTarget = {"data", -> @a52db92f7b939c3d}
                  }
                }
              }
            }
          }
        }, 
        second = 'ElementEditorsTabbedLayout 
        {
          widgets = 
          {
            'GizmoParametersEditor 
            {
              widget = 'ToolsAndContentLayout 
              {
                content = 'DocumentWeakPointerContextualEditor 
                {
                  state = 
                  {
                    {
                      key = => 'ObjectWeakPointer {"data", -> @1a72d9656e4b2bed}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @ca3e3c4800e2e75}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @367788882a062525}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @68e7d8e5fb97a01}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @f1a599eb113e8cf9}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @8531c9690046b5e}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @10cdb69af37f1fac}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @1d8c0a79384a0927}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @37167c096b2fb84a}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @9015006bd7fdf330}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @105005ed6db3c479}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @2f1f6a3b4de0c392}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @cb884d8eadd7dd92}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @ff8293b6da80ea05}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @17cb1de988e4975f}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @b5e208a6b2a01d0c}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @79df5c9568f38ee8}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @cb04e10acea29876}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @ae679ecb33277662}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @ee3228e6913c28eb}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @1dfb0951b715912a}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @b197ffa8f0fcee49}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @efb2e7d259a4ab08}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @6a04eb548c885ddf}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @9a171d42a033a056}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @316fb4531fc8656c}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @b64747a2fc5dd28d}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @2a7c36c0c07bb72a}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @87f7161332312243}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @be61277ce531acf8}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @b51b5e4d54718f2f}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @35349b1014e0f490}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @f7586b7de1990f30}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @8a2af5d9056de4a8}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @d392c50b730d7f5e}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @76a845db8ecbe7b7}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @a130acb084f08c6d}, 
                      value = => => 'ElementParametersEditor void
                    }, 
                    {
                      key = => 'ObjectWeakPointer {"data", -> @a52db92f7b939c3d}, 
                      value = => => 'ElementParametersEditor void
                    }
                  }
                }
              }, 
              state = {targetPointer = {"data", -> @a52db92f7b939c3d}, targetPointerAsSelection = {{"data", -> @a52db92f7b939c3d}}}
            }
          }, 
          currentTabIndex = 0
        }
      }
    }
  }
}
