From 609071eb52df58b14497a6a1e89b6417342de913 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Mon, 16 Dec 2024 17:29:19 +0000 Subject: [PATCH] build based on 6486a7f --- dev/404.html | 6 +- dev/api/basis.html | 12 +- dev/api/index.html | 8 +- dev/api/layers.html | 30 +- dev/api/private.html | 12 +- dev/api/vision.html | 12 +- ...d.efzKkbBV.js => api_basis.md.D-gdgP1g.js} | 2 +- ....lean.js => api_basis.md.D-gdgP1g.lean.js} | 2 +- ....c3Y8oKzS.js => api_layers.md.Ctcd_6il.js} | 20 +- ...lean.js => api_layers.md.Ctcd_6il.lean.js} | 20 +- ...qgc7LO-U.js => api_private.md.Bx-Z0HFD.js} | 2 +- ...ean.js => api_private.md.Bx-Z0HFD.lean.js} | 2 +- ....CzAr55yf.js => api_vision.md.D-4Td_yF.js} | 2 +- ...lean.js => api_vision.md.D-4Td_yF.lean.js} | 2 +- .../{app.BMFda93J.js => app.D9lb7J90.js} | 2 +- .../chunks/@localSearchIndexroot.C0O8Nga3.js | 1 - .../chunks/@localSearchIndexroot.DgW2Dxpb.js | 1 + ...zAotSZ.js => VPLocalSearchBox.DUhOdal0.js} | 2 +- .../{theme.B1egvRb4.js => theme.CNGAZXZT.js} | 4 +- ...ex.md.NOKWxsHp.js => index.md.CWKIhE9b.js} | 4 +- ...xsHp.lean.js => index.md.CWKIhE9b.lean.js} | 4 +- ...{style.Dkw2xCc0.css => style.BvW4vyFm.css} | 2 +- ...tutorials_1_GettingStarted.md.BkXGCB_-.js} | 33 +- ...ials_1_GettingStarted.md.BkXGCB_-.lean.js} | 33 +- ...s_2_SymbolicOptimalControl.md.BVL3a2D7.js} | 717 ++++++----------- ...ymbolicOptimalControl.md.BVL3a2D7.lean.js} | 717 ++++++----------- dev/hashmap.json | 2 +- dev/index.html | 12 +- dev/tutorials/1_GettingStarted.html | 43 +- dev/tutorials/2_SymbolicOptimalControl.html | 723 ++++++------------ 30 files changed, 805 insertions(+), 1627 deletions(-) rename dev/assets/{api_basis.md.efzKkbBV.js => api_basis.md.D-gdgP1g.js} (99%) rename dev/assets/{api_basis.md.efzKkbBV.lean.js => api_basis.md.D-gdgP1g.lean.js} (99%) rename dev/assets/{api_layers.md.c3Y8oKzS.js => api_layers.md.Ctcd_6il.js} (98%) rename dev/assets/{api_layers.md.c3Y8oKzS.lean.js => api_layers.md.Ctcd_6il.lean.js} (98%) rename dev/assets/{api_private.md.qgc7LO-U.js => api_private.md.Bx-Z0HFD.js} (88%) rename dev/assets/{api_private.md.qgc7LO-U.lean.js => api_private.md.Bx-Z0HFD.lean.js} (88%) rename dev/assets/{api_vision.md.CzAr55yf.js => api_vision.md.D-4Td_yF.js} (96%) rename dev/assets/{api_vision.md.CzAr55yf.lean.js => api_vision.md.D-4Td_yF.lean.js} (96%) rename dev/assets/{app.BMFda93J.js => app.D9lb7J90.js} (95%) delete mode 100644 dev/assets/chunks/@localSearchIndexroot.C0O8Nga3.js create mode 100644 dev/assets/chunks/@localSearchIndexroot.DgW2Dxpb.js rename dev/assets/chunks/{VPLocalSearchBox.BkzAotSZ.js => VPLocalSearchBox.DUhOdal0.js} (99%) rename dev/assets/chunks/{theme.B1egvRb4.js => theme.CNGAZXZT.js} (99%) rename dev/assets/{index.md.NOKWxsHp.js => index.md.CWKIhE9b.js} (93%) rename dev/assets/{index.md.NOKWxsHp.lean.js => index.md.CWKIhE9b.lean.js} (93%) rename dev/assets/{style.Dkw2xCc0.css => style.BvW4vyFm.css} (60%) rename dev/assets/{tutorials_1_GettingStarted.md.BBRQSLz_.lean.js => tutorials_1_GettingStarted.md.BkXGCB_-.js} (96%) rename dev/assets/{tutorials_1_GettingStarted.md.BBRQSLz_.js => tutorials_1_GettingStarted.md.BkXGCB_-.lean.js} (96%) rename dev/assets/{tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.js => tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.js} (52%) rename dev/assets/{tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.lean.js => tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.lean.js} (52%) diff --git a/dev/404.html b/dev/404.html index 20662b0..3dba104 100644 --- a/dev/404.html +++ b/dev/404.html @@ -6,10 +6,10 @@ 404 | Boltz.jl Docs - + - + @@ -23,7 +23,7 @@
- + \ No newline at end of file diff --git a/dev/api/basis.html b/dev/api/basis.html index 498d055..6442236 100644 --- a/dev/api/basis.html +++ b/dev/api/basis.html @@ -6,14 +6,14 @@ Boltz.Basis API Reference | Boltz.jl Docs - + - + - + - + @@ -25,8 +25,8 @@ -
Skip to content

Boltz.Basis API Reference

Warning

The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.

Boltz.Basis.Chebyshev Method
julia
Chebyshev(n; dim::Int=1)

Constructs a Chebyshev basis of the form [T0(x),T1(x),,Tn1(x)] where Tj(.) is the jth Chebyshev polynomial of the first kind.

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Cos Method
julia
Cos(n; dim::Int=1)

Constructs a cosine basis of the form [cos(x),cos(2x),,cos(nx)].

Arguments

  • n: number of terms in the cosine expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Fourier Method
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

Fj(x)={cos(j2x)if j is evensin(j2x)if j is odd

Arguments

  • n: number of terms in the Fourier expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Legendre Method
julia
Legendre(n; dim::Int=1)

Constructs a Legendre basis of the form [P0(x),P1(x),,Pn1(x)] where Pj(.) is the jth Legendre polynomial.

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Polynomial Method
julia
Polynomial(n; dim::Int=1)

Constructs a Polynomial basis of the form [1,x,,x(n1)].

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Sin Method
julia
Sin(n; dim::Int=1)

Constructs a sine basis of the form [sin(x),sin(2x),,sin(nx)].

Arguments

  • n: number of terms in the sine expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

- +
Skip to content

Boltz.Basis API Reference

Warning

The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.

Boltz.Basis.Chebyshev Method
julia
Chebyshev(n; dim::Int=1)

Constructs a Chebyshev basis of the form [T0(x),T1(x),,Tn1(x)] where Tj(.) is the jth Chebyshev polynomial of the first kind.

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Cos Method
julia
Cos(n; dim::Int=1)

Constructs a cosine basis of the form [cos(x),cos(2x),,cos(nx)].

Arguments

  • n: number of terms in the cosine expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Fourier Method
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

Fj(x)={cos(j2x)if j is evensin(j2x)if j is odd

Arguments

  • n: number of terms in the Fourier expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Legendre Method
julia
Legendre(n; dim::Int=1)

Constructs a Legendre basis of the form [P0(x),P1(x),,Pn1(x)] where Pj(.) is the jth Legendre polynomial.

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Polynomial Method
julia
Polynomial(n; dim::Int=1)

Constructs a Polynomial basis of the form [1,x,,x(n1)].

Arguments

  • n: number of terms in the polynomial expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

Boltz.Basis.Sin Method
julia
Sin(n; dim::Int=1)

Constructs a sine basis of the form [sin(x),sin(2x),,sin(nx)].

Arguments

  • n: number of terms in the sine expansion.

Keyword Arguments

  • dim::Int=1: The dimension along which the basis functions are applied.

source

+ \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index 7cf40b5..4c7b4f2 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -6,12 +6,12 @@ API Reference | Boltz.jl Docs - + - + - + @@ -26,7 +26,7 @@
- + \ No newline at end of file diff --git a/dev/api/layers.html b/dev/api/layers.html index e554a6c..b19b9de 100644 --- a/dev/api/layers.html +++ b/dev/api/layers.html @@ -6,14 +6,14 @@ Boltz.Layers API Reference | Boltz.jl Docs - + - + - + - + @@ -25,9 +25,9 @@ -
Skip to content

Boltz.Layers API Reference


Boltz.Layers.ClassTokens Type
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

Boltz.Layers.ConvNormActivation Type
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
+    
Skip to content

Boltz.Layers API Reference


Boltz.Layers.ClassTokens Type
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

Boltz.Layers.ConvNormActivation Type
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
     activation; norm_layer=nothing, conv_kwargs=(;), norm_kwargs=(;),
-    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

Boltz.Layers.DynamicExpressionsLayer Type
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
+    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

Boltz.Layers.DynamicExpressionsLayer Type
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
     eval_options::EvalOptions=EvalOptions())
 DynamicExpressionsLayer(operator_enum::OperatorEnum,
     expressions::AbstractVector{<:Node}; kwargs...)

Wraps a DynamicExpressions.jl Node into a Lux layer and allows the constant nodes to be updated using any of the AD Backends.

For details about these expressions, refer to the DynamicExpressions.jl documentation.

Arguments

  • operator_enum: OperatorEnum from DynamicExpressions.jl

  • expressions: Node from DynamicExpressions.jl or AbstractVector{<:Node}

Keyword Arguments

  • turbo: Use LoopVectorization.jl for faster evaluation (Deprecated)

  • bumper: Use Bumper.jl for faster evaluation (Deprecated)

  • eval_options: EvalOptions from DynamicExpressions.jl

These options are simply forwarded to DynamicExpressions.jl's eval_tree_array and eval_grad_tree_array function.

Extended Help

Example

julia
julia> operators = OperatorEnum(; binary_operators=[+, -, *], unary_operators=[cos]);
@@ -65,23 +65,23 @@
 true
 
 julia> ∂ps.layer_1.layer_2.params  Float32[-31.0, 90.0]
-true

source

Boltz.Layers.HamiltonianNN Type
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

Boltz.Layers.MLP Type
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
+true

source

Boltz.Layers.HamiltonianNN Type
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

Boltz.Layers.MLP Type
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
     dropout_rate::Real=0.0f0, dense_kwargs=(;), norm_kwargs=(;),
-    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

Boltz.Layers.MultiHeadSelfAttention Type
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
-    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

Boltz.Layers.PatchEmbedding Type
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
-    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

Boltz.Layers.PeriodicEmbedding Type
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
+    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

Boltz.Layers.MultiHeadSelfAttention Type
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
+    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

Boltz.Layers.PatchEmbedding Type
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
+    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

Boltz.Layers.PeriodicEmbedding Type
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
 PeriodicEmbedding([2], [4.0])
 
 julia> ps, st = Lux.setup(Random.default_rng(), layer);
 
 julia> all(layer([1.1, 2.2, 3.3], ps, st)[1] .==
            [1.1, 3.3, sinpi(2 / 4.0 * 2.2), cospi(2 / 4.0 * 2.2)])
-true

source

Boltz.Layers.SplineLayer Type
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
-    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

Boltz.Layers.TensorProductLayer Type
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)

Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, [B1,B2,,Bn] a data point x, computes

zi=Wi,:[B1(x1)B2(x2)Bn(xn)]

where W is the layer's weight, and returns [z1,,zout].

Arguments

  • basis_fns: Array of TensorProductBasis [B1(n1),,Bk(nk)], where k corresponds to the dimension of the input.

  • out_dim: Dimension of the output.

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

Boltz.Layers.ViPosEmbedding Type
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

Boltz.Layers.VisionTransformerEncoder Type
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
-    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

Boltz.Layers.ConvBatchNormActivation Method
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
+true

source

Boltz.Layers.SplineLayer Type
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
+    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

Boltz.Layers.TensorProductLayer Type
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)

Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, [B1,B2,,Bn] a data point x, computes

zi=Wi,:[B1(x1)B2(x2)Bn(xn)]

where W is the layer's weight, and returns [z1,,zout].

Arguments

  • basis_fns: Array of TensorProductBasis [B1(n1),,Bk(nk)], where k corresponds to the dimension of the input.

  • out_dim: Dimension of the output.

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

Boltz.Layers.ViPosEmbedding Type
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

Boltz.Layers.VisionTransformerEncoder Type
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
+    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

Boltz.Layers.ConvBatchNormActivation Method
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
     depth::Int, act::F; use_norm::Bool=true, conv_kwargs=(;),
-    last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source


Bibliography

  • Dosovitskiy, A.; Beyer, L.; Kolesnikov, A.; Weissenborn, D.; Zhai, X.; Unterthiner, T.; Dehghani, M.; Minderer, M.; Heigold, G.; Gelly, S. and others (2020). An image is worth 16x16 words: Transformers for image recognition at scale, arXiv preprint arXiv:2010.11929.

  • Greydanus, S.; Dzamba, M. and Yosinski, J. (2019). Hamiltonian neural networks. Advances in neural information processing systems 32.

- + last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source


Bibliography

  • Dosovitskiy, A.; Beyer, L.; Kolesnikov, A.; Weissenborn, D.; Zhai, X.; Unterthiner, T.; Dehghani, M.; Minderer, M.; Heigold, G.; Gelly, S. and others (2020). An image is worth 16x16 words: Transformers for image recognition at scale, arXiv preprint arXiv:2010.11929.

  • Greydanus, S.; Dzamba, M. and Yosinski, J. (2019). Hamiltonian neural networks. Advances in neural information processing systems 32.

+ \ No newline at end of file diff --git a/dev/api/private.html b/dev/api/private.html index 400cb44..8d3ca92 100644 --- a/dev/api/private.html +++ b/dev/api/private.html @@ -6,14 +6,14 @@ Private API | Boltz.jl Docs - + - + - + - + @@ -25,8 +25,8 @@ -
Skip to content

Private API

This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!

Boltz.Utils.fast_chunk Method
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

Boltz.Utils.flatten_spatial Method
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

Boltz.Utils.second_dim_mean Method
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

Boltz.Utils.should_type_assert Method
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

- +
Skip to content

Private API

This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!

Boltz.Utils.fast_chunk Method
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

Boltz.Utils.flatten_spatial Method
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

Boltz.Utils.second_dim_mean Method
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

Boltz.Utils.should_type_assert Method
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

+ \ No newline at end of file diff --git a/dev/api/vision.html b/dev/api/vision.html index 888086a..1e7ee2a 100644 --- a/dev/api/vision.html +++ b/dev/api/vision.html @@ -6,14 +6,14 @@ Computer Vision Models (Vision API) | Boltz.jl Docs - + - + - + - + @@ -25,8 +25,8 @@ -
Skip to content

Computer Vision Models (Vision API)

Native Lux Models

Boltz.Vision.AlexNet Type
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.VGG Type
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

  • imsize: input image width and height as a tuple

  • config: the configuration for the convolution layers

  • inchannels: number of input channels

  • batchnorm: set to true to use batch normalization after each convolution

  • nclasses: number of output classes

  • fcsize: intermediate fully connected layer size

  • dropout: dropout level between fully connected layers

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

  • depth::Int: the depth of the VGG model. Choices: {11, 13, 16, 19}.

Keyword Arguments

  • batchnorm = false: set to true to use batch normalization after each convolution.

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.VisionTransformer Type
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

  • name::Symbol: name of the Vision Transformer model to create. The following models are available – :tiny, :small, :base, :large, :huge, :giant, :gigantic.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Imported from Metalhead.jl

Load Metalhead

You need to load Metalhead before using these models.

Boltz.Vision.ConvMixer Function
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

  • name::Symbol: The name of the ConvMixer model. Must be one of :base, :small, or :large.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.DenseNet Function
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

  • depth::Int: The depth of the DenseNet model. Must be one of 121, 161, 169, or 201.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.GoogLeNet Function
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.MobileNet Function
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

  • name::Symbol: The name of the MobileNet model. Must be one of :v1, :v2, :v3_small, or :v3_large.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.ResNet Function
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

  • depth::Int: The depth of the ResNet model. Must be one of 18, 34, 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.ResNeXt Function
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

  • depth::Int: The depth of the ResNeXt model. Must be one of 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

  • cardinality: The cardinality of the ResNeXt model. Defaults to 32.

  • base_width: The base width of the ResNeXt model. Defaults to 8 for depth 101 and 4 otherwise.

source

Boltz.Vision.SqueezeNet Function
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.WideResNet Function
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

  • depth::Int: The depth of the WideResNet model. Must be one of 18, 34, 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

  • He, K.; Zhang, X.; Ren, S. and Sun, J. (2016). Deep residual learning for image recognition. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 770–778.

  • Howard, A.; Sandler, M.; Chu, G.; Chen, L.-C.; Chen, B.; Tan, M.; Wang, W.; Zhu, Y.; Pang, R.; Vasudevan, V. and others (2019). Searching for mobilenetv3. In: Proceedings of the IEEE/CVF international conference on computer vision; pp. 1314–1324.

  • Howard, A. G. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, arXiv preprint arXiv:1704.04861.

  • Huang, G.; Liu, Z.; Van Der Maaten, L. and Weinberger, K. Q. (2017). Densely connected convolutional networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 4700–4708.

  • Iandola, F. N.; Han, S.; Moskewicz, M. W.; Ashraf, K.; Dally, W. J. and Keutzer, K. (2016). SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size, arXiv:1602.07360 [cs.CV].

  • Krizhevsky, A.; Sutskever, I. and Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems 25.

  • Sandler, M.; Howard, A.; Zhu, M.; Zhmoginov, A. and Chen, L.-C. (2018). Mobilenetv2: Inverted residuals and linear bottlenecks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 4510–4520.

  • Simonyan, K. (2014). Very deep convolutional networks for large-scale image recognition, arXiv preprint arXiv:1409.1556.

  • Szegedy, C.; Liu, W.; Jia, Y.; Sermanet, P.; Reed, S.; Anguelov, D.; Erhan, D.; Vanhoucke, V. and Rabinovich, A. (2015). Going deeper with convolutions. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 1–9.

  • Trockman, A. and Kolter, J. Z. (2022). Patches are all you need? arXiv preprint arXiv:2201.09792.

  • Xie, S.; Girshick, R.; Dollár, P.; Tu, Z. and He, K. (2017). Aggregated residual transformations for deep neural networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 1492–1500.

  • Zagoruyko, S. and Komodakis, N. (2017). Wide Residual Networks, arXiv:1605.07146 [cs.CV].

- +
Skip to content

Computer Vision Models (Vision API)

Native Lux Models

Boltz.Vision.AlexNet Type
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.VGG Type
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

  • imsize: input image width and height as a tuple

  • config: the configuration for the convolution layers

  • inchannels: number of input channels

  • batchnorm: set to true to use batch normalization after each convolution

  • nclasses: number of output classes

  • fcsize: intermediate fully connected layer size

  • dropout: dropout level between fully connected layers

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

  • depth::Int: the depth of the VGG model. Choices: {11, 13, 16, 19}.

Keyword Arguments

  • batchnorm = false: set to true to use batch normalization after each convolution.

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.VisionTransformer Type
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

  • name::Symbol: name of the Vision Transformer model to create. The following models are available – :tiny, :small, :base, :large, :huge, :giant, :gigantic.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Imported from Metalhead.jl

Load Metalhead

You need to load Metalhead before using these models.

Boltz.Vision.ConvMixer Function
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

  • name::Symbol: The name of the ConvMixer model. Must be one of :base, :small, or :large.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.DenseNet Function
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

  • depth::Int: The depth of the DenseNet model. Must be one of 121, 161, 169, or 201.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.GoogLeNet Function
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.MobileNet Function
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

  • name::Symbol: The name of the MobileNet model. Must be one of :v1, :v2, :v3_small, or :v3_large.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.ResNet Function
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

  • depth::Int: The depth of the ResNet model. Must be one of 18, 34, 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.ResNeXt Function
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

  • depth::Int: The depth of the ResNeXt model. Must be one of 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

  • cardinality: The cardinality of the ResNeXt model. Defaults to 32.

  • base_width: The base width of the ResNeXt model. Defaults to 8 for depth 101 and 4 otherwise.

source

Boltz.Vision.SqueezeNet Function
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Boltz.Vision.WideResNet Function
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

  • depth::Int: The depth of the WideResNet model. Must be one of 18, 34, 50, 101, or 152.

Keyword Arguments

  • pretrained::Bool=false: If true, loads pretrained weights when LuxCore.setup is called.

source

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

  • He, K.; Zhang, X.; Ren, S. and Sun, J. (2016). Deep residual learning for image recognition. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 770–778.

  • Howard, A.; Sandler, M.; Chu, G.; Chen, L.-C.; Chen, B.; Tan, M.; Wang, W.; Zhu, Y.; Pang, R.; Vasudevan, V. and others (2019). Searching for mobilenetv3. In: Proceedings of the IEEE/CVF international conference on computer vision; pp. 1314–1324.

  • Howard, A. G. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, arXiv preprint arXiv:1704.04861.

  • Huang, G.; Liu, Z.; Van Der Maaten, L. and Weinberger, K. Q. (2017). Densely connected convolutional networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 4700–4708.

  • Iandola, F. N.; Han, S.; Moskewicz, M. W.; Ashraf, K.; Dally, W. J. and Keutzer, K. (2016). SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size, arXiv:1602.07360 [cs.CV].

  • Krizhevsky, A.; Sutskever, I. and Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. Advances in neural information processing systems 25.

  • Sandler, M.; Howard, A.; Zhu, M.; Zhmoginov, A. and Chen, L.-C. (2018). Mobilenetv2: Inverted residuals and linear bottlenecks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 4510–4520.

  • Simonyan, K. (2014). Very deep convolutional networks for large-scale image recognition, arXiv preprint arXiv:1409.1556.

  • Szegedy, C.; Liu, W.; Jia, Y.; Sermanet, P.; Reed, S.; Anguelov, D.; Erhan, D.; Vanhoucke, V. and Rabinovich, A. (2015). Going deeper with convolutions. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 1–9.

  • Trockman, A. and Kolter, J. Z. (2022). Patches are all you need? arXiv preprint arXiv:2201.09792.

  • Xie, S.; Girshick, R.; Dollár, P.; Tu, Z. and He, K. (2017). Aggregated residual transformations for deep neural networks. In: Proceedings of the IEEE conference on computer vision and pattern recognition; pp. 1492–1500.

  • Zagoruyko, S. and Komodakis, N. (2017). Wide Residual Networks, arXiv:1605.07146 [cs.CV].

+ \ No newline at end of file diff --git a/dev/assets/api_basis.md.efzKkbBV.js b/dev/assets/api_basis.md.D-gdgP1g.js similarity index 99% rename from dev/assets/api_basis.md.efzKkbBV.js rename to dev/assets/api_basis.md.D-gdgP1g.js index a540d4b..a01ba00 100644 --- a/dev/assets/api_basis.md.efzKkbBV.js +++ b/dev/assets/api_basis.md.D-gdgP1g.js @@ -1 +1 @@ -import{_ as o,c as s,j as t,a as T,G as n,a2 as a,B as d,o as e}from"./chunks/framework.Brfltvkk.js";const G=JSON.parse('{"title":"Boltz.Basis API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/basis.md","filePath":"api/basis.md","lastUpdated":null}'),r={name:"api/basis.md"},m={class:"jldocstring custom-block",open:""},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.599ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11314.7 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.934ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2181 1044.2","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.038ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12392.7 1000","aria-hidden":"true"},y={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.731ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.946ex",height:"8.593ex",role:"img",focusable:"false",viewBox:"0 -2149 14120.1 3798","aria-hidden":"true"},L={class:"jldocstring custom-block",open:""},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.993ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11488.7 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.066ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2239 1044.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},C={class:"jldocstring custom-block",open:""},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.461ex",height:"2.587ex",role:"img",focusable:"false",viewBox:"0 -893.3 6833.7 1143.3","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.291ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12062.7 1000","aria-hidden":"true"};function z(O,Q,R,N,P,I){const l=d("Badge");return e(),s("div",null,[Q[82]||(Q[82]=t("h1",{id:"Boltz.Basis-API-Reference",tabindex:"-1"},[t("code",null,"Boltz.Basis"),T(" API Reference "),t("a",{class:"header-anchor",href:"#Boltz.Basis-API-Reference","aria-label":'Permalink to "`Boltz.Basis` API Reference {#Boltz.Basis-API-Reference}"'},"​")],-1)),Q[83]||(Q[83]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Warning"),t("p",null,"The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.")],-1)),t("details",m,[t("summary",null,[Q[0]||(Q[0]=t("a",{id:"Boltz.Basis.Chebyshev-Tuple{Any}",href:"#Boltz.Basis.Chebyshev-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Chebyshev")],-1)),Q[1]||(Q[1]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[12]||(Q[12]=a('
julia
Chebyshev(n; dim::Int=1)
',1)),t("p",null,[Q[8]||(Q[8]=T("Constructs a Chebyshev basis of the form ")),t("mjx-container",i,[(e(),s("svg",h,Q[2]||(Q[2]=[a('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[9]||(Q[9]=T(" where ")),t("mjx-container",p,[(e(),s("svg",g,Q[4]||(Q[4]=[a('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[10]||(Q[10]=T(" is the ")),t("mjx-container",H,[(e(),s("svg",u,Q[6]||(Q[6]=[a('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[11]||(Q[11]=T(" Chebyshev polynomial of the first kind."))]),Q[13]||(Q[13]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[14]||(Q[14]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[15]||(Q[15]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[16]||(Q[16]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[17]||(Q[17]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L49",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",c,[t("summary",null,[Q[18]||(Q[18]=t("a",{id:"Boltz.Basis.Cos-Tuple{Any}",href:"#Boltz.Basis.Cos-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Cos")],-1)),Q[19]||(Q[19]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[24]||(Q[24]=a('
julia
Cos(n; dim::Int=1)
',1)),t("p",null,[Q[22]||(Q[22]=T("Constructs a cosine basis of the form ")),t("mjx-container",k,[(e(),s("svg",w,Q[20]||(Q[20]=[a('',1)]))),Q[21]||(Q[21]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[23]||(Q[23]=T("."))]),Q[25]||(Q[25]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[26]||(Q[26]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the cosine expansion.")])],-1)),Q[27]||(Q[27]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[28]||(Q[28]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[29]||(Q[29]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L84",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",y,[t("summary",null,[Q[30]||(Q[30]=t("a",{id:"Boltz.Basis.Fourier-Tuple{Any}",href:"#Boltz.Basis.Fourier-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Fourier")],-1)),Q[31]||(Q[31]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[34]||(Q[34]=a('
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

',2)),t("mjx-container",f,[(e(),s("svg",x,Q[32]||(Q[32]=[a('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"F"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[t("mtr",null,[t("mtd",null,[t("mi",null,"c"),t("mi",null,"o"),t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is even")])]),t("mtr",null,[t("mtd",null,[t("mi",null,"s"),t("mi",null,"i"),t("mi",null,"n"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is odd")])])]),t("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))]),Q[35]||(Q[35]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[36]||(Q[36]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the Fourier expansion.")])],-1)),Q[37]||(Q[37]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[38]||(Q[38]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[39]||(Q[39]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L101",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",L,[t("summary",null,[Q[40]||(Q[40]=t("a",{id:"Boltz.Basis.Legendre-Tuple{Any}",href:"#Boltz.Basis.Legendre-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Legendre")],-1)),Q[41]||(Q[41]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[52]||(Q[52]=a('
julia
Legendre(n; dim::Int=1)
',1)),t("p",null,[Q[48]||(Q[48]=T("Constructs a Legendre basis of the form ")),t("mjx-container",V,[(e(),s("svg",M,Q[42]||(Q[42]=[a('',1)]))),Q[43]||(Q[43]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[49]||(Q[49]=T(" where ")),t("mjx-container",b,[(e(),s("svg",Z,Q[44]||(Q[44]=[a('',1)]))),Q[45]||(Q[45]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"P"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[50]||(Q[50]=T(" is the ")),t("mjx-container",v,[(e(),s("svg",j,Q[46]||(Q[46]=[a('',1)]))),Q[47]||(Q[47]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[51]||(Q[51]=T(" Legendre polynomial."))]),Q[53]||(Q[53]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[54]||(Q[54]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[55]||(Q[55]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[56]||(Q[56]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[57]||(Q[57]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L140",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",C,[t("summary",null,[Q[58]||(Q[58]=t("a",{id:"Boltz.Basis.Polynomial-Tuple{Any}",href:"#Boltz.Basis.Polynomial-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Polynomial")],-1)),Q[59]||(Q[59]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[64]||(Q[64]=a('
julia
Polynomial(n; dim::Int=1)
',1)),t("p",null,[Q[62]||(Q[62]=T("Constructs a Polynomial basis of the form ")),t("mjx-container",B,[(e(),s("svg",D,Q[60]||(Q[60]=[a('',1)]))),Q[61]||(Q[61]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"1"),t("mo",null,","),t("mi",null,"x"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[63]||(Q[63]=T("."))]),Q[65]||(Q[65]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[66]||(Q[66]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[67]||(Q[67]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[68]||(Q[68]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[69]||(Q[69]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L172",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[Q[70]||(Q[70]=t("a",{id:"Boltz.Basis.Sin-Tuple{Any}",href:"#Boltz.Basis.Sin-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Sin")],-1)),Q[71]||(Q[71]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[76]||(Q[76]=a('
julia
Sin(n; dim::Int=1)
',1)),t("p",null,[Q[74]||(Q[74]=T("Constructs a sine basis of the form ")),t("mjx-container",A,[(e(),s("svg",F,Q[72]||(Q[72]=[a('',1)]))),Q[73]||(Q[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[75]||(Q[75]=T("."))]),Q[77]||(Q[77]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[78]||(Q[78]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the sine expansion.")])],-1)),Q[79]||(Q[79]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[80]||(Q[80]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[81]||(Q[81]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L67",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const J=o(r,[["render",z]]);export{G as __pageData,J as default}; +import{_ as o,c as s,j as t,a as T,G as n,a2 as a,B as d,o as e}from"./chunks/framework.Brfltvkk.js";const G=JSON.parse('{"title":"Boltz.Basis API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/basis.md","filePath":"api/basis.md","lastUpdated":null}'),r={name:"api/basis.md"},m={class:"jldocstring custom-block",open:""},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.599ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11314.7 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.934ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2181 1044.2","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},k={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.038ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12392.7 1000","aria-hidden":"true"},y={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.731ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.946ex",height:"8.593ex",role:"img",focusable:"false",viewBox:"0 -2149 14120.1 3798","aria-hidden":"true"},L={class:"jldocstring custom-block",open:""},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.993ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11488.7 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.066ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2239 1044.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},C={class:"jldocstring custom-block",open:""},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.461ex",height:"2.587ex",role:"img",focusable:"false",viewBox:"0 -893.3 6833.7 1143.3","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.291ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12062.7 1000","aria-hidden":"true"};function z(O,Q,R,N,P,I){const l=d("Badge");return e(),s("div",null,[Q[82]||(Q[82]=t("h1",{id:"Boltz.Basis-API-Reference",tabindex:"-1"},[t("code",null,"Boltz.Basis"),T(" API Reference "),t("a",{class:"header-anchor",href:"#Boltz.Basis-API-Reference","aria-label":'Permalink to "`Boltz.Basis` API Reference {#Boltz.Basis-API-Reference}"'},"​")],-1)),Q[83]||(Q[83]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Warning"),t("p",null,"The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.")],-1)),t("details",m,[t("summary",null,[Q[0]||(Q[0]=t("a",{id:"Boltz.Basis.Chebyshev-Tuple{Any}",href:"#Boltz.Basis.Chebyshev-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Chebyshev")],-1)),Q[1]||(Q[1]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[12]||(Q[12]=a('
julia
Chebyshev(n; dim::Int=1)
',1)),t("p",null,[Q[8]||(Q[8]=T("Constructs a Chebyshev basis of the form ")),t("mjx-container",i,[(e(),s("svg",h,Q[2]||(Q[2]=[a('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[9]||(Q[9]=T(" where ")),t("mjx-container",p,[(e(),s("svg",g,Q[4]||(Q[4]=[a('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[10]||(Q[10]=T(" is the ")),t("mjx-container",H,[(e(),s("svg",u,Q[6]||(Q[6]=[a('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[11]||(Q[11]=T(" Chebyshev polynomial of the first kind."))]),Q[13]||(Q[13]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[14]||(Q[14]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[15]||(Q[15]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[16]||(Q[16]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[17]||(Q[17]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L49",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",k,[t("summary",null,[Q[18]||(Q[18]=t("a",{id:"Boltz.Basis.Cos-Tuple{Any}",href:"#Boltz.Basis.Cos-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Cos")],-1)),Q[19]||(Q[19]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[24]||(Q[24]=a('
julia
Cos(n; dim::Int=1)
',1)),t("p",null,[Q[22]||(Q[22]=T("Constructs a cosine basis of the form ")),t("mjx-container",w,[(e(),s("svg",c,Q[20]||(Q[20]=[a('',1)]))),Q[21]||(Q[21]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[23]||(Q[23]=T("."))]),Q[25]||(Q[25]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[26]||(Q[26]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the cosine expansion.")])],-1)),Q[27]||(Q[27]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[28]||(Q[28]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[29]||(Q[29]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L84",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",y,[t("summary",null,[Q[30]||(Q[30]=t("a",{id:"Boltz.Basis.Fourier-Tuple{Any}",href:"#Boltz.Basis.Fourier-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Fourier")],-1)),Q[31]||(Q[31]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[34]||(Q[34]=a('
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

',2)),t("mjx-container",f,[(e(),s("svg",x,Q[32]||(Q[32]=[a('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"F"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[t("mtr",null,[t("mtd",null,[t("mi",null,"c"),t("mi",null,"o"),t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is even")])]),t("mtr",null,[t("mtd",null,[t("mi",null,"s"),t("mi",null,"i"),t("mi",null,"n"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is odd")])])]),t("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))]),Q[35]||(Q[35]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[36]||(Q[36]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the Fourier expansion.")])],-1)),Q[37]||(Q[37]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[38]||(Q[38]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[39]||(Q[39]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L101",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",L,[t("summary",null,[Q[40]||(Q[40]=t("a",{id:"Boltz.Basis.Legendre-Tuple{Any}",href:"#Boltz.Basis.Legendre-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Legendre")],-1)),Q[41]||(Q[41]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[52]||(Q[52]=a('
julia
Legendre(n; dim::Int=1)
',1)),t("p",null,[Q[48]||(Q[48]=T("Constructs a Legendre basis of the form ")),t("mjx-container",V,[(e(),s("svg",M,Q[42]||(Q[42]=[a('',1)]))),Q[43]||(Q[43]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[49]||(Q[49]=T(" where ")),t("mjx-container",b,[(e(),s("svg",Z,Q[44]||(Q[44]=[a('',1)]))),Q[45]||(Q[45]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"P"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[50]||(Q[50]=T(" is the ")),t("mjx-container",v,[(e(),s("svg",j,Q[46]||(Q[46]=[a('',1)]))),Q[47]||(Q[47]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[51]||(Q[51]=T(" Legendre polynomial."))]),Q[53]||(Q[53]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[54]||(Q[54]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[55]||(Q[55]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[56]||(Q[56]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[57]||(Q[57]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L140",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",C,[t("summary",null,[Q[58]||(Q[58]=t("a",{id:"Boltz.Basis.Polynomial-Tuple{Any}",href:"#Boltz.Basis.Polynomial-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Polynomial")],-1)),Q[59]||(Q[59]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[64]||(Q[64]=a('
julia
Polynomial(n; dim::Int=1)
',1)),t("p",null,[Q[62]||(Q[62]=T("Constructs a Polynomial basis of the form ")),t("mjx-container",B,[(e(),s("svg",D,Q[60]||(Q[60]=[a('',1)]))),Q[61]||(Q[61]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"1"),t("mo",null,","),t("mi",null,"x"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[63]||(Q[63]=T("."))]),Q[65]||(Q[65]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[66]||(Q[66]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[67]||(Q[67]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[68]||(Q[68]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[69]||(Q[69]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L172",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[Q[70]||(Q[70]=t("a",{id:"Boltz.Basis.Sin-Tuple{Any}",href:"#Boltz.Basis.Sin-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Sin")],-1)),Q[71]||(Q[71]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[76]||(Q[76]=a('
julia
Sin(n; dim::Int=1)
',1)),t("p",null,[Q[74]||(Q[74]=T("Constructs a sine basis of the form ")),t("mjx-container",A,[(e(),s("svg",F,Q[72]||(Q[72]=[a('',1)]))),Q[73]||(Q[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[75]||(Q[75]=T("."))]),Q[77]||(Q[77]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[78]||(Q[78]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the sine expansion.")])],-1)),Q[79]||(Q[79]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[80]||(Q[80]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[81]||(Q[81]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L67",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const J=o(r,[["render",z]]);export{G as __pageData,J as default}; diff --git a/dev/assets/api_basis.md.efzKkbBV.lean.js b/dev/assets/api_basis.md.D-gdgP1g.lean.js similarity index 99% rename from dev/assets/api_basis.md.efzKkbBV.lean.js rename to dev/assets/api_basis.md.D-gdgP1g.lean.js index a540d4b..a01ba00 100644 --- a/dev/assets/api_basis.md.efzKkbBV.lean.js +++ b/dev/assets/api_basis.md.D-gdgP1g.lean.js @@ -1 +1 @@ -import{_ as o,c as s,j as t,a as T,G as n,a2 as a,B as d,o as e}from"./chunks/framework.Brfltvkk.js";const G=JSON.parse('{"title":"Boltz.Basis API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/basis.md","filePath":"api/basis.md","lastUpdated":null}'),r={name:"api/basis.md"},m={class:"jldocstring custom-block",open:""},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.599ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11314.7 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.934ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2181 1044.2","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},c={class:"jldocstring custom-block",open:""},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.038ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12392.7 1000","aria-hidden":"true"},y={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.731ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.946ex",height:"8.593ex",role:"img",focusable:"false",viewBox:"0 -2149 14120.1 3798","aria-hidden":"true"},L={class:"jldocstring custom-block",open:""},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.993ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11488.7 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.066ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2239 1044.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},C={class:"jldocstring custom-block",open:""},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.461ex",height:"2.587ex",role:"img",focusable:"false",viewBox:"0 -893.3 6833.7 1143.3","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.291ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12062.7 1000","aria-hidden":"true"};function z(O,Q,R,N,P,I){const l=d("Badge");return e(),s("div",null,[Q[82]||(Q[82]=t("h1",{id:"Boltz.Basis-API-Reference",tabindex:"-1"},[t("code",null,"Boltz.Basis"),T(" API Reference "),t("a",{class:"header-anchor",href:"#Boltz.Basis-API-Reference","aria-label":'Permalink to "`Boltz.Basis` API Reference {#Boltz.Basis-API-Reference}"'},"​")],-1)),Q[83]||(Q[83]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Warning"),t("p",null,"The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.")],-1)),t("details",m,[t("summary",null,[Q[0]||(Q[0]=t("a",{id:"Boltz.Basis.Chebyshev-Tuple{Any}",href:"#Boltz.Basis.Chebyshev-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Chebyshev")],-1)),Q[1]||(Q[1]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[12]||(Q[12]=a('
julia
Chebyshev(n; dim::Int=1)
',1)),t("p",null,[Q[8]||(Q[8]=T("Constructs a Chebyshev basis of the form ")),t("mjx-container",i,[(e(),s("svg",h,Q[2]||(Q[2]=[a('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[9]||(Q[9]=T(" where ")),t("mjx-container",p,[(e(),s("svg",g,Q[4]||(Q[4]=[a('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[10]||(Q[10]=T(" is the ")),t("mjx-container",H,[(e(),s("svg",u,Q[6]||(Q[6]=[a('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[11]||(Q[11]=T(" Chebyshev polynomial of the first kind."))]),Q[13]||(Q[13]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[14]||(Q[14]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[15]||(Q[15]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[16]||(Q[16]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[17]||(Q[17]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L49",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",c,[t("summary",null,[Q[18]||(Q[18]=t("a",{id:"Boltz.Basis.Cos-Tuple{Any}",href:"#Boltz.Basis.Cos-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Cos")],-1)),Q[19]||(Q[19]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[24]||(Q[24]=a('
julia
Cos(n; dim::Int=1)
',1)),t("p",null,[Q[22]||(Q[22]=T("Constructs a cosine basis of the form ")),t("mjx-container",k,[(e(),s("svg",w,Q[20]||(Q[20]=[a('',1)]))),Q[21]||(Q[21]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[23]||(Q[23]=T("."))]),Q[25]||(Q[25]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[26]||(Q[26]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the cosine expansion.")])],-1)),Q[27]||(Q[27]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[28]||(Q[28]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[29]||(Q[29]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L84",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",y,[t("summary",null,[Q[30]||(Q[30]=t("a",{id:"Boltz.Basis.Fourier-Tuple{Any}",href:"#Boltz.Basis.Fourier-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Fourier")],-1)),Q[31]||(Q[31]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[34]||(Q[34]=a('
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

',2)),t("mjx-container",f,[(e(),s("svg",x,Q[32]||(Q[32]=[a('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"F"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[t("mtr",null,[t("mtd",null,[t("mi",null,"c"),t("mi",null,"o"),t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is even")])]),t("mtr",null,[t("mtd",null,[t("mi",null,"s"),t("mi",null,"i"),t("mi",null,"n"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is odd")])])]),t("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))]),Q[35]||(Q[35]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[36]||(Q[36]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the Fourier expansion.")])],-1)),Q[37]||(Q[37]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[38]||(Q[38]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[39]||(Q[39]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L101",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",L,[t("summary",null,[Q[40]||(Q[40]=t("a",{id:"Boltz.Basis.Legendre-Tuple{Any}",href:"#Boltz.Basis.Legendre-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Legendre")],-1)),Q[41]||(Q[41]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[52]||(Q[52]=a('
julia
Legendre(n; dim::Int=1)
',1)),t("p",null,[Q[48]||(Q[48]=T("Constructs a Legendre basis of the form ")),t("mjx-container",V,[(e(),s("svg",M,Q[42]||(Q[42]=[a('',1)]))),Q[43]||(Q[43]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[49]||(Q[49]=T(" where ")),t("mjx-container",b,[(e(),s("svg",Z,Q[44]||(Q[44]=[a('',1)]))),Q[45]||(Q[45]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"P"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[50]||(Q[50]=T(" is the ")),t("mjx-container",v,[(e(),s("svg",j,Q[46]||(Q[46]=[a('',1)]))),Q[47]||(Q[47]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[51]||(Q[51]=T(" Legendre polynomial."))]),Q[53]||(Q[53]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[54]||(Q[54]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[55]||(Q[55]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[56]||(Q[56]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[57]||(Q[57]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L140",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",C,[t("summary",null,[Q[58]||(Q[58]=t("a",{id:"Boltz.Basis.Polynomial-Tuple{Any}",href:"#Boltz.Basis.Polynomial-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Polynomial")],-1)),Q[59]||(Q[59]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[64]||(Q[64]=a('
julia
Polynomial(n; dim::Int=1)
',1)),t("p",null,[Q[62]||(Q[62]=T("Constructs a Polynomial basis of the form ")),t("mjx-container",B,[(e(),s("svg",D,Q[60]||(Q[60]=[a('',1)]))),Q[61]||(Q[61]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"1"),t("mo",null,","),t("mi",null,"x"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[63]||(Q[63]=T("."))]),Q[65]||(Q[65]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[66]||(Q[66]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[67]||(Q[67]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[68]||(Q[68]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[69]||(Q[69]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L172",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[Q[70]||(Q[70]=t("a",{id:"Boltz.Basis.Sin-Tuple{Any}",href:"#Boltz.Basis.Sin-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Sin")],-1)),Q[71]||(Q[71]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[76]||(Q[76]=a('
julia
Sin(n; dim::Int=1)
',1)),t("p",null,[Q[74]||(Q[74]=T("Constructs a sine basis of the form ")),t("mjx-container",A,[(e(),s("svg",F,Q[72]||(Q[72]=[a('',1)]))),Q[73]||(Q[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[75]||(Q[75]=T("."))]),Q[77]||(Q[77]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[78]||(Q[78]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the sine expansion.")])],-1)),Q[79]||(Q[79]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[80]||(Q[80]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[81]||(Q[81]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/f383dc9607abc42875bc236d78cc2814c4e0e244/src/basis.jl#L67",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const J=o(r,[["render",z]]);export{G as __pageData,J as default}; +import{_ as o,c as s,j as t,a as T,G as n,a2 as a,B as d,o as e}from"./chunks/framework.Brfltvkk.js";const G=JSON.parse('{"title":"Boltz.Basis API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/basis.md","filePath":"api/basis.md","lastUpdated":null}'),r={name:"api/basis.md"},m={class:"jldocstring custom-block",open:""},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.599ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11314.7 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.934ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2181 1044.2","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},k={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.038ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12392.7 1000","aria-hidden":"true"},y={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.731ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.946ex",height:"8.593ex",role:"img",focusable:"false",viewBox:"0 -2149 14120.1 3798","aria-hidden":"true"},L={class:"jldocstring custom-block",open:""},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.993ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 11488.7 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.066ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2239 1044.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.619ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -853.7 1157.6 1057.7","aria-hidden":"true"},C={class:"jldocstring custom-block",open:""},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.461ex",height:"2.587ex",role:"img",focusable:"false",viewBox:"0 -893.3 6833.7 1143.3","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.291ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 12062.7 1000","aria-hidden":"true"};function z(O,Q,R,N,P,I){const l=d("Badge");return e(),s("div",null,[Q[82]||(Q[82]=t("h1",{id:"Boltz.Basis-API-Reference",tabindex:"-1"},[t("code",null,"Boltz.Basis"),T(" API Reference "),t("a",{class:"header-anchor",href:"#Boltz.Basis-API-Reference","aria-label":'Permalink to "`Boltz.Basis` API Reference {#Boltz.Basis-API-Reference}"'},"​")],-1)),Q[83]||(Q[83]=t("div",{class:"warning custom-block"},[t("p",{class:"custom-block-title"},"Warning"),t("p",null,"The function calls for these basis functions should be considered experimental and are subject to change without deprecation. However, the functions themselves are stable and can be freely used in combination with the other Layers and Models.")],-1)),t("details",m,[t("summary",null,[Q[0]||(Q[0]=t("a",{id:"Boltz.Basis.Chebyshev-Tuple{Any}",href:"#Boltz.Basis.Chebyshev-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Chebyshev")],-1)),Q[1]||(Q[1]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[12]||(Q[12]=a('
julia
Chebyshev(n; dim::Int=1)
',1)),t("p",null,[Q[8]||(Q[8]=T("Constructs a Chebyshev basis of the form ")),t("mjx-container",i,[(e(),s("svg",h,Q[2]||(Q[2]=[a('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"T"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[9]||(Q[9]=T(" where ")),t("mjx-container",p,[(e(),s("svg",g,Q[4]||(Q[4]=[a('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[10]||(Q[10]=T(" is the ")),t("mjx-container",H,[(e(),s("svg",u,Q[6]||(Q[6]=[a('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[11]||(Q[11]=T(" Chebyshev polynomial of the first kind."))]),Q[13]||(Q[13]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[14]||(Q[14]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[15]||(Q[15]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[16]||(Q[16]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[17]||(Q[17]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L49",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",k,[t("summary",null,[Q[18]||(Q[18]=t("a",{id:"Boltz.Basis.Cos-Tuple{Any}",href:"#Boltz.Basis.Cos-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Cos")],-1)),Q[19]||(Q[19]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[24]||(Q[24]=a('
julia
Cos(n; dim::Int=1)
',1)),t("p",null,[Q[22]||(Q[22]=T("Constructs a cosine basis of the form ")),t("mjx-container",w,[(e(),s("svg",c,Q[20]||(Q[20]=[a('',1)]))),Q[21]||(Q[21]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"cos"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[23]||(Q[23]=T("."))]),Q[25]||(Q[25]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[26]||(Q[26]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the cosine expansion.")])],-1)),Q[27]||(Q[27]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[28]||(Q[28]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[29]||(Q[29]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L84",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",y,[t("summary",null,[Q[30]||(Q[30]=t("a",{id:"Boltz.Basis.Fourier-Tuple{Any}",href:"#Boltz.Basis.Fourier-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Fourier")],-1)),Q[31]||(Q[31]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[34]||(Q[34]=a('
julia
Fourier(n; dim=1)

Constructs a Fourier basis of the form

',2)),t("mjx-container",f,[(e(),s("svg",x,Q[32]||(Q[32]=[a('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"F"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"{"),t("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[t("mtr",null,[t("mtd",null,[t("mi",null,"c"),t("mi",null,"o"),t("mi",null,"s"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is even")])]),t("mtr",null,[t("mtd",null,[t("mi",null,"s"),t("mi",null,"i"),t("mi",null,"n"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mi",null,"j"),t("mn",null,"2")]),t("mi",null,"x"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])]),t("mtd",null,[t("mtext",null,"if "),t("mi",null,"j"),t("mtext",null," is odd")])])]),t("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))]),Q[35]||(Q[35]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[36]||(Q[36]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the Fourier expansion.")])],-1)),Q[37]||(Q[37]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[38]||(Q[38]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[39]||(Q[39]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L101",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",L,[t("summary",null,[Q[40]||(Q[40]=t("a",{id:"Boltz.Basis.Legendre-Tuple{Any}",href:"#Boltz.Basis.Legendre-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Legendre")],-1)),Q[41]||(Q[41]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[52]||(Q[52]=a('
julia
Legendre(n; dim::Int=1)
',1)),t("p",null,[Q[48]||(Q[48]=T("Constructs a Legendre basis of the form ")),t("mjx-container",V,[(e(),s("svg",M,Q[42]||(Q[42]=[a('',1)]))),Q[43]||(Q[43]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"0")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msub",null,[t("mi",null,"P"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[49]||(Q[49]=T(" where ")),t("mjx-container",b,[(e(),s("svg",Z,Q[44]||(Q[44]=[a('',1)]))),Q[45]||(Q[45]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"P"),t("mi",null,"j")]),t("mo",{stretchy:"false"},"("),t("mo",null,"."),t("mo",{stretchy:"false"},")")])],-1))]),Q[50]||(Q[50]=T(" is the ")),t("mjx-container",v,[(e(),s("svg",j,Q[46]||(Q[46]=[a('',1)]))),Q[47]||(Q[47]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"j"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"t"),t("mi",null,"h")])])])],-1))]),Q[51]||(Q[51]=T(" Legendre polynomial."))]),Q[53]||(Q[53]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[54]||(Q[54]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[55]||(Q[55]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[56]||(Q[56]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[57]||(Q[57]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L140",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",C,[t("summary",null,[Q[58]||(Q[58]=t("a",{id:"Boltz.Basis.Polynomial-Tuple{Any}",href:"#Boltz.Basis.Polynomial-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Polynomial")],-1)),Q[59]||(Q[59]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[64]||(Q[64]=a('
julia
Polynomial(n; dim::Int=1)
',1)),t("p",null,[Q[62]||(Q[62]=T("Constructs a Polynomial basis of the form ")),t("mjx-container",B,[(e(),s("svg",D,Q[60]||(Q[60]=[a('',1)]))),Q[61]||(Q[61]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"1"),t("mo",null,","),t("mi",null,"x"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mo",null,"−"),t("mn",null,"1"),t("mo",{stretchy:"false"},")")])]),t("mo",{stretchy:"false"},"]")])],-1))]),Q[63]||(Q[63]=T("."))]),Q[65]||(Q[65]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[66]||(Q[66]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the polynomial expansion.")])],-1)),Q[67]||(Q[67]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[68]||(Q[68]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[69]||(Q[69]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L172",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[Q[70]||(Q[70]=t("a",{id:"Boltz.Basis.Sin-Tuple{Any}",href:"#Boltz.Basis.Sin-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Basis.Sin")],-1)),Q[71]||(Q[71]=T()),n(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),Q[76]||(Q[76]=a('
julia
Sin(n; dim::Int=1)
',1)),t("p",null,[Q[74]||(Q[74]=T("Constructs a sine basis of the form ")),t("mjx-container",A,[(e(),s("svg",F,Q[72]||(Q[72]=[a('',1)]))),Q[73]||(Q[73]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mn",null,"2"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"sin"),t("mo",{"data-mjx-texclass":"NONE"},"⁡"),t("mo",{stretchy:"false"},"("),t("mi",null,"n"),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"]")])],-1))]),Q[75]||(Q[75]=T("."))]),Q[77]||(Q[77]=t("p",null,[t("strong",null,"Arguments")],-1)),Q[78]||(Q[78]=t("ul",null,[t("li",null,[t("code",null,"n"),T(": number of terms in the sine expansion.")])],-1)),Q[79]||(Q[79]=t("p",null,[t("strong",null,"Keyword Arguments")],-1)),Q[80]||(Q[80]=t("ul",null,[t("li",null,[t("code",null,"dim::Int=1"),T(": The dimension along which the basis functions are applied.")])],-1)),Q[81]||(Q[81]=t("p",null,[t("a",{href:"https://github.com/LuxDL/Boltz.jl/blob/6486a7f8b2d490079474e5cc2e00ab3c34d04920/src/basis.jl#L67",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const J=o(r,[["render",z]]);export{G as __pageData,J as default}; diff --git a/dev/assets/api_layers.md.c3Y8oKzS.js b/dev/assets/api_layers.md.Ctcd_6il.js similarity index 98% rename from dev/assets/api_layers.md.c3Y8oKzS.js rename to dev/assets/api_layers.md.Ctcd_6il.js index 165a91b..3259f50 100644 --- a/dev/assets/api_layers.md.c3Y8oKzS.js +++ b/dev/assets/api_layers.md.Ctcd_6il.js @@ -1,6 +1,6 @@ -import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framework.Brfltvkk.js";const O=JSON.parse('{"title":"Boltz.Layers API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/layers.md","filePath":"api/layers.md","lastUpdated":null}'),o={name:"api/layers.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.579ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6886 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.107ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 19495.1 1037.2","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.847ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5236.2 1000","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8833.9 1000","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},j={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""};function z(V,i,_,N,P,I){const e=r("Badge");return h(),l("div",null,[i[63]||(i[63]=s("h1",{id:"Boltz.Layers-API-Reference",tabindex:"-1"},[s("code",null,"Boltz.Layers"),a(" API Reference "),s("a",{class:"header-anchor",href:"#Boltz.Layers-API-Reference","aria-label":'Permalink to "`Boltz.Layers` API Reference {#Boltz.Layers-API-Reference}"'},"​")],-1)),i[64]||(i[64]=s("hr",null,null,-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"Boltz.Layers.ClassTokens",href:"#Boltz.Layers.ClassTokens"},[s("span",{class:"jlbinding"},"Boltz.Layers.ClassTokens")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t('
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

',3))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"Boltz.Layers.ConvNormActivation",href:"#Boltz.Layers.ConvNormActivation"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvNormActivation")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[5]||(i[5]=t(`
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
+import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framework.Brfltvkk.js";const O=JSON.parse('{"title":"Boltz.Layers API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/layers.md","filePath":"api/layers.md","lastUpdated":null}'),o={name:"api/layers.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.579ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6886 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.107ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 19495.1 1037.2","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.847ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5236.2 1000","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8833.9 1000","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},j={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""};function z(V,i,_,N,P,I){const e=r("Badge");return h(),l("div",null,[i[63]||(i[63]=s("h1",{id:"Boltz.Layers-API-Reference",tabindex:"-1"},[s("code",null,"Boltz.Layers"),a(" API Reference "),s("a",{class:"header-anchor",href:"#Boltz.Layers-API-Reference","aria-label":'Permalink to "`Boltz.Layers` API Reference {#Boltz.Layers-API-Reference}"'},"​")],-1)),i[64]||(i[64]=s("hr",null,null,-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"Boltz.Layers.ClassTokens",href:"#Boltz.Layers.ClassTokens"},[s("span",{class:"jlbinding"},"Boltz.Layers.ClassTokens")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t('
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

',3))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"Boltz.Layers.ConvNormActivation",href:"#Boltz.Layers.ConvNormActivation"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvNormActivation")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[5]||(i[5]=t(`
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
     activation; norm_layer=nothing, conv_kwargs=(;), norm_kwargs=(;),
-    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",T,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Boltz.Layers.DynamicExpressionsLayer",href:"#Boltz.Layers.DynamicExpressionsLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.DynamicExpressionsLayer")],-1)),i[7]||(i[7]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[8]||(i[8]=t(`
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
+    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",T,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Boltz.Layers.DynamicExpressionsLayer",href:"#Boltz.Layers.DynamicExpressionsLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.DynamicExpressionsLayer")],-1)),i[7]||(i[7]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[8]||(i[8]=t(`
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
     eval_options::EvalOptions=EvalOptions())
 DynamicExpressionsLayer(operator_enum::OperatorEnum,
     expressions::AbstractVector{<:Node}; kwargs...)

Wraps a DynamicExpressions.jl Node into a Lux layer and allows the constant nodes to be updated using any of the AD Backends.

For details about these expressions, refer to the DynamicExpressions.jl documentation.

Arguments

  • operator_enum: OperatorEnum from DynamicExpressions.jl

  • expressions: Node from DynamicExpressions.jl or AbstractVector{<:Node}

Keyword Arguments

  • turbo: Use LoopVectorization.jl for faster evaluation (Deprecated)

  • bumper: Use Bumper.jl for faster evaluation (Deprecated)

  • eval_options: EvalOptions from DynamicExpressions.jl

These options are simply forwarded to DynamicExpressions.jl's eval_tree_array and eval_grad_tree_array function.

Extended Help

Example

julia
julia> operators = OperatorEnum(; binary_operators=[+, -, *], unary_operators=[cos]);
@@ -38,19 +38,19 @@ import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framewo
 true
 
 julia> ∂ps.layer_1.layer_2.params  Float32[-31.0, 90.0]
-true

source

`,12))]),s("details",Q,[s("summary",null,[i[9]||(i[9]=s("a",{id:"Boltz.Layers.HamiltonianNN",href:"#Boltz.Layers.HamiltonianNN"},[s("span",{class:"jlbinding"},"Boltz.Layers.HamiltonianNN")],-1)),i[10]||(i[10]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[11]||(i[11]=t('
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

',10))]),s("details",g,[s("summary",null,[i[12]||(i[12]=s("a",{id:"Boltz.Layers.MLP",href:"#Boltz.Layers.MLP"},[s("span",{class:"jlbinding"},"Boltz.Layers.MLP")],-1)),i[13]||(i[13]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[14]||(i[14]=t(`
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
+true

source

`,12))]),s("details",Q,[s("summary",null,[i[9]||(i[9]=s("a",{id:"Boltz.Layers.HamiltonianNN",href:"#Boltz.Layers.HamiltonianNN"},[s("span",{class:"jlbinding"},"Boltz.Layers.HamiltonianNN")],-1)),i[10]||(i[10]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[11]||(i[11]=t('
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

',10))]),s("details",g,[s("summary",null,[i[12]||(i[12]=s("a",{id:"Boltz.Layers.MLP",href:"#Boltz.Layers.MLP"},[s("span",{class:"jlbinding"},"Boltz.Layers.MLP")],-1)),i[13]||(i[13]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[14]||(i[14]=t(`
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
     dropout_rate::Real=0.0f0, dense_kwargs=(;), norm_kwargs=(;),
-    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",y,[s("summary",null,[i[15]||(i[15]=s("a",{id:"Boltz.Layers.MultiHeadSelfAttention",href:"#Boltz.Layers.MultiHeadSelfAttention"},[s("span",{class:"jlbinding"},"Boltz.Layers.MultiHeadSelfAttention")],-1)),i[16]||(i[16]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[17]||(i[17]=t(`
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
-    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

`,5))]),s("details",m,[s("summary",null,[i[18]||(i[18]=s("a",{id:"Boltz.Layers.PatchEmbedding",href:"#Boltz.Layers.PatchEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PatchEmbedding")],-1)),i[19]||(i[19]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[20]||(i[20]=t(`
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
-    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

`,7))]),s("details",c,[s("summary",null,[i[21]||(i[21]=s("a",{id:"Boltz.Layers.PeriodicEmbedding",href:"#Boltz.Layers.PeriodicEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PeriodicEmbedding")],-1)),i[22]||(i[22]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[23]||(i[23]=t(`
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
+    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",y,[s("summary",null,[i[15]||(i[15]=s("a",{id:"Boltz.Layers.MultiHeadSelfAttention",href:"#Boltz.Layers.MultiHeadSelfAttention"},[s("span",{class:"jlbinding"},"Boltz.Layers.MultiHeadSelfAttention")],-1)),i[16]||(i[16]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[17]||(i[17]=t(`
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
+    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

`,5))]),s("details",m,[s("summary",null,[i[18]||(i[18]=s("a",{id:"Boltz.Layers.PatchEmbedding",href:"#Boltz.Layers.PatchEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PatchEmbedding")],-1)),i[19]||(i[19]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[20]||(i[20]=t(`
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
+    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

`,7))]),s("details",c,[s("summary",null,[i[21]||(i[21]=s("a",{id:"Boltz.Layers.PeriodicEmbedding",href:"#Boltz.Layers.PeriodicEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PeriodicEmbedding")],-1)),i[22]||(i[22]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[23]||(i[23]=t(`
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
 PeriodicEmbedding([2], [4.0])
 
 julia> ps, st = Lux.setup(Random.default_rng(), layer);
 
 julia> all(layer([1.1, 2.2, 3.3], ps, st)[1] .==
            [1.1, 3.3, sinpi(2 / 4.0 * 2.2), cospi(2 / 4.0 * 2.2)])
-true

source

`,12))]),s("details",E,[s("summary",null,[i[24]||(i[24]=s("a",{id:"Boltz.Layers.SplineLayer",href:"#Boltz.Layers.SplineLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.SplineLayer")],-1)),i[25]||(i[25]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[26]||(i[26]=t(`
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
-    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

`,8))]),s("details",u,[s("summary",null,[i[27]||(i[27]=s("a",{id:"Boltz.Layers.TensorProductLayer",href:"#Boltz.Layers.TensorProductLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.TensorProductLayer")],-1)),i[28]||(i[28]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[51]||(i[51]=t('
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)
',1)),s("p",null,[i[31]||(i[31]=a("Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, ")),s("mjx-container",F,[(h(),l("svg",f,i[29]||(i[29]=[t('',1)]))),i[30]||(i[30]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"]")])],-1))]),i[32]||(i[32]=a(" a data point x, computes"))]),s("mjx-container",b,[(h(),l("svg",C,i[33]||(i[33]=[t('',1)]))),i[34]||(i[34]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"z"),s("mi",null,"i")]),s("mo",null,"="),s("msub",null,[s("mi",null,"W"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mo",null,":")])]),s("mo",null,"⊙"),s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("mo",null,"⋯"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),s("p",null,[i[39]||(i[39]=a("where ")),s("mjx-container",L,[(h(),l("svg",x,i[35]||(i[35]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),i[36]||(i[36]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"W")])],-1))]),i[40]||(i[40]=a(" is the layer's weight, and returns ")),s("mjx-container",w,[(h(),l("svg",B,i[37]||(i[37]=[t('',1)]))),i[38]||(i[38]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"z"),s("mn",null,"1")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"z"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"o"),s("mi",null,"u"),s("mi",null,"t")])]),s("mo",{stretchy:"false"},"]")])],-1))]),i[41]||(i[41]=a("."))]),i[52]||(i[52]=s("p",null,[s("strong",null,"Arguments")],-1)),s("ul",null,[s("li",null,[s("p",null,[i[46]||(i[46]=s("code",null,"basis_fns",-1)),i[47]||(i[47]=a(": Array of TensorProductBasis ")),s("mjx-container",D,[(h(),l("svg",v,i[42]||(i[42]=[t('',1)]))),i[43]||(i[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"k")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mi",null,"k")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),i[48]||(i[48]=a(", where ")),s("mjx-container",A,[(h(),l("svg",H,i[44]||(i[44]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),i[45]||(i[45]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"k")])],-1))]),i[49]||(i[49]=a(" corresponds to the dimension of the input."))])]),i[50]||(i[50]=s("li",null,[s("p",null,[s("code",null,"out_dim"),a(": Dimension of the output.")])],-1))]),i[53]||(i[53]=t('

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

',4))]),s("details",j,[s("summary",null,[i[54]||(i[54]=s("a",{id:"Boltz.Layers.ViPosEmbedding",href:"#Boltz.Layers.ViPosEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.ViPosEmbedding")],-1)),i[55]||(i[55]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[56]||(i[56]=t('
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

',3))]),s("details",M,[s("summary",null,[i[57]||(i[57]=s("a",{id:"Boltz.Layers.VisionTransformerEncoder",href:"#Boltz.Layers.VisionTransformerEncoder"},[s("span",{class:"jlbinding"},"Boltz.Layers.VisionTransformerEncoder")],-1)),i[58]||(i[58]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[59]||(i[59]=t(`
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
-    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

`,7))]),s("details",Z,[s("summary",null,[i[60]||(i[60]=s("a",{id:"Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F",href:"#Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvBatchNormActivation")],-1)),i[61]||(i[61]=a()),n(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[62]||(i[62]=t(`
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
+true

source

`,12))]),s("details",E,[s("summary",null,[i[24]||(i[24]=s("a",{id:"Boltz.Layers.SplineLayer",href:"#Boltz.Layers.SplineLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.SplineLayer")],-1)),i[25]||(i[25]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[26]||(i[26]=t(`
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
+    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

`,8))]),s("details",u,[s("summary",null,[i[27]||(i[27]=s("a",{id:"Boltz.Layers.TensorProductLayer",href:"#Boltz.Layers.TensorProductLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.TensorProductLayer")],-1)),i[28]||(i[28]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[51]||(i[51]=t('
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)
',1)),s("p",null,[i[31]||(i[31]=a("Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, ")),s("mjx-container",F,[(h(),l("svg",f,i[29]||(i[29]=[t('',1)]))),i[30]||(i[30]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"]")])],-1))]),i[32]||(i[32]=a(" a data point x, computes"))]),s("mjx-container",b,[(h(),l("svg",C,i[33]||(i[33]=[t('',1)]))),i[34]||(i[34]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"z"),s("mi",null,"i")]),s("mo",null,"="),s("msub",null,[s("mi",null,"W"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mo",null,":")])]),s("mo",null,"⊙"),s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("mo",null,"⋯"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),s("p",null,[i[39]||(i[39]=a("where ")),s("mjx-container",L,[(h(),l("svg",x,i[35]||(i[35]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),i[36]||(i[36]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"W")])],-1))]),i[40]||(i[40]=a(" is the layer's weight, and returns ")),s("mjx-container",w,[(h(),l("svg",B,i[37]||(i[37]=[t('',1)]))),i[38]||(i[38]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"z"),s("mn",null,"1")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"z"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"o"),s("mi",null,"u"),s("mi",null,"t")])]),s("mo",{stretchy:"false"},"]")])],-1))]),i[41]||(i[41]=a("."))]),i[52]||(i[52]=s("p",null,[s("strong",null,"Arguments")],-1)),s("ul",null,[s("li",null,[s("p",null,[i[46]||(i[46]=s("code",null,"basis_fns",-1)),i[47]||(i[47]=a(": Array of TensorProductBasis ")),s("mjx-container",D,[(h(),l("svg",v,i[42]||(i[42]=[t('',1)]))),i[43]||(i[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"k")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mi",null,"k")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),i[48]||(i[48]=a(", where ")),s("mjx-container",A,[(h(),l("svg",H,i[44]||(i[44]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),i[45]||(i[45]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"k")])],-1))]),i[49]||(i[49]=a(" corresponds to the dimension of the input."))])]),i[50]||(i[50]=s("li",null,[s("p",null,[s("code",null,"out_dim"),a(": Dimension of the output.")])],-1))]),i[53]||(i[53]=t('

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

',4))]),s("details",j,[s("summary",null,[i[54]||(i[54]=s("a",{id:"Boltz.Layers.ViPosEmbedding",href:"#Boltz.Layers.ViPosEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.ViPosEmbedding")],-1)),i[55]||(i[55]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[56]||(i[56]=t('
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

',3))]),s("details",M,[s("summary",null,[i[57]||(i[57]=s("a",{id:"Boltz.Layers.VisionTransformerEncoder",href:"#Boltz.Layers.VisionTransformerEncoder"},[s("span",{class:"jlbinding"},"Boltz.Layers.VisionTransformerEncoder")],-1)),i[58]||(i[58]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[59]||(i[59]=t(`
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
+    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

`,7))]),s("details",Z,[s("summary",null,[i[60]||(i[60]=s("a",{id:"Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F",href:"#Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvBatchNormActivation")],-1)),i[61]||(i[61]=a()),n(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[62]||(i[62]=t(`
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
     depth::Int, act::F; use_norm::Bool=true, conv_kwargs=(;),
-    last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source

`,3))]),i[65]||(i[65]=t('

Bibliography

  • Dosovitskiy, A.; Beyer, L.; Kolesnikov, A.; Weissenborn, D.; Zhai, X.; Unterthiner, T.; Dehghani, M.; Minderer, M.; Heigold, G.; Gelly, S. and others (2020). An image is worth 16x16 words: Transformers for image recognition at scale, arXiv preprint arXiv:2010.11929.

  • Greydanus, S.; Dzamba, M. and Yosinski, J. (2019). Hamiltonian neural networks. Advances in neural information processing systems 32.

',3))])}const R=p(o,[["render",z]]);export{O as __pageData,R as default}; + last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source

`,3))]),i[65]||(i[65]=t('

Bibliography

',3))])}const R=p(o,[["render",z]]);export{O as __pageData,R as default}; diff --git a/dev/assets/api_layers.md.c3Y8oKzS.lean.js b/dev/assets/api_layers.md.Ctcd_6il.lean.js similarity index 98% rename from dev/assets/api_layers.md.c3Y8oKzS.lean.js rename to dev/assets/api_layers.md.Ctcd_6il.lean.js index 165a91b..3259f50 100644 --- a/dev/assets/api_layers.md.c3Y8oKzS.lean.js +++ b/dev/assets/api_layers.md.Ctcd_6il.lean.js @@ -1,6 +1,6 @@ -import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framework.Brfltvkk.js";const O=JSON.parse('{"title":"Boltz.Layers API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/layers.md","filePath":"api/layers.md","lastUpdated":null}'),o={name:"api/layers.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.579ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6886 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.107ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 19495.1 1037.2","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.847ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5236.2 1000","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8833.9 1000","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},j={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""};function z(V,i,_,N,P,I){const e=r("Badge");return h(),l("div",null,[i[63]||(i[63]=s("h1",{id:"Boltz.Layers-API-Reference",tabindex:"-1"},[s("code",null,"Boltz.Layers"),a(" API Reference "),s("a",{class:"header-anchor",href:"#Boltz.Layers-API-Reference","aria-label":'Permalink to "`Boltz.Layers` API Reference {#Boltz.Layers-API-Reference}"'},"​")],-1)),i[64]||(i[64]=s("hr",null,null,-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"Boltz.Layers.ClassTokens",href:"#Boltz.Layers.ClassTokens"},[s("span",{class:"jlbinding"},"Boltz.Layers.ClassTokens")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t('
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

',3))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"Boltz.Layers.ConvNormActivation",href:"#Boltz.Layers.ConvNormActivation"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvNormActivation")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[5]||(i[5]=t(`
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
+import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framework.Brfltvkk.js";const O=JSON.parse('{"title":"Boltz.Layers API Reference","description":"","frontmatter":{},"headers":[],"relativePath":"api/layers.md","filePath":"api/layers.md","lastUpdated":null}'),o={name:"api/layers.md"},d={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.579ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6886 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.107ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 19495.1 1037.2","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.847ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5236.2 1000","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"19.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 8833.9 1000","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},j={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""};function z(V,i,_,N,P,I){const e=r("Badge");return h(),l("div",null,[i[63]||(i[63]=s("h1",{id:"Boltz.Layers-API-Reference",tabindex:"-1"},[s("code",null,"Boltz.Layers"),a(" API Reference "),s("a",{class:"header-anchor",href:"#Boltz.Layers-API-Reference","aria-label":'Permalink to "`Boltz.Layers` API Reference {#Boltz.Layers-API-Reference}"'},"​")],-1)),i[64]||(i[64]=s("hr",null,null,-1)),s("details",d,[s("summary",null,[i[0]||(i[0]=s("a",{id:"Boltz.Layers.ClassTokens",href:"#Boltz.Layers.ClassTokens"},[s("span",{class:"jlbinding"},"Boltz.Layers.ClassTokens")],-1)),i[1]||(i[1]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[2]||(i[2]=t('
julia
ClassTokens(dim; init=zeros32)

Appends class tokens to an input with embedding dimension dim for use in many vision transformer models.

source

',3))]),s("details",k,[s("summary",null,[i[3]||(i[3]=s("a",{id:"Boltz.Layers.ConvNormActivation",href:"#Boltz.Layers.ConvNormActivation"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvNormActivation")],-1)),i[4]||(i[4]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[5]||(i[5]=t(`
julia
ConvNormActivation(kernel_size::Dims, in_chs::Integer, hidden_chs::Dims{N},
     activation; norm_layer=nothing, conv_kwargs=(;), norm_kwargs=(;),
-    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",T,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Boltz.Layers.DynamicExpressionsLayer",href:"#Boltz.Layers.DynamicExpressionsLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.DynamicExpressionsLayer")],-1)),i[7]||(i[7]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[8]||(i[8]=t(`
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
+    last_layer_activation::Bool=false) where {N}

Construct a Chain of convolutional layers with normalization and activation functions.

Arguments

  • kernel_size: size of the convolutional kernel

  • in_chs: number of input channels

  • hidden_chs: dimensions of the hidden layers

  • activation: activation function

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • conv_kwargs: keyword arguments for the convolutional layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",T,[s("summary",null,[i[6]||(i[6]=s("a",{id:"Boltz.Layers.DynamicExpressionsLayer",href:"#Boltz.Layers.DynamicExpressionsLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.DynamicExpressionsLayer")],-1)),i[7]||(i[7]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[8]||(i[8]=t(`
julia
DynamicExpressionsLayer(operator_enum::OperatorEnum, expressions::Node...;
     eval_options::EvalOptions=EvalOptions())
 DynamicExpressionsLayer(operator_enum::OperatorEnum,
     expressions::AbstractVector{<:Node}; kwargs...)

Wraps a DynamicExpressions.jl Node into a Lux layer and allows the constant nodes to be updated using any of the AD Backends.

For details about these expressions, refer to the DynamicExpressions.jl documentation.

Arguments

  • operator_enum: OperatorEnum from DynamicExpressions.jl

  • expressions: Node from DynamicExpressions.jl or AbstractVector{<:Node}

Keyword Arguments

  • turbo: Use LoopVectorization.jl for faster evaluation (Deprecated)

  • bumper: Use Bumper.jl for faster evaluation (Deprecated)

  • eval_options: EvalOptions from DynamicExpressions.jl

These options are simply forwarded to DynamicExpressions.jl's eval_tree_array and eval_grad_tree_array function.

Extended Help

Example

julia
julia> operators = OperatorEnum(; binary_operators=[+, -, *], unary_operators=[cos]);
@@ -38,19 +38,19 @@ import{_ as p,c as l,j as s,a,G as n,a2 as t,B as r,o as h}from"./chunks/framewo
 true
 
 julia> ∂ps.layer_1.layer_2.params  Float32[-31.0, 90.0]
-true

source

`,12))]),s("details",Q,[s("summary",null,[i[9]||(i[9]=s("a",{id:"Boltz.Layers.HamiltonianNN",href:"#Boltz.Layers.HamiltonianNN"},[s("span",{class:"jlbinding"},"Boltz.Layers.HamiltonianNN")],-1)),i[10]||(i[10]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[11]||(i[11]=t('
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

',10))]),s("details",g,[s("summary",null,[i[12]||(i[12]=s("a",{id:"Boltz.Layers.MLP",href:"#Boltz.Layers.MLP"},[s("span",{class:"jlbinding"},"Boltz.Layers.MLP")],-1)),i[13]||(i[13]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[14]||(i[14]=t(`
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
+true

source

`,12))]),s("details",Q,[s("summary",null,[i[9]||(i[9]=s("a",{id:"Boltz.Layers.HamiltonianNN",href:"#Boltz.Layers.HamiltonianNN"},[s("span",{class:"jlbinding"},"Boltz.Layers.HamiltonianNN")],-1)),i[10]||(i[10]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[11]||(i[11]=t('
julia
HamiltonianNN{FST}(model; autodiff=nothing) where {FST}

Constructs a Hamiltonian Neural Network (Greydanus et al., 2019). This neural network is useful for learning symmetries and conservation laws by supervision on the gradients of the trajectories. It takes as input a concatenated vector of length 2n containing the position (of size n) and momentum (of size n) of the particles. It then returns the time derivatives for position and momentum.

Arguments

  • FST: If true, then the type of the state returned by the model must be same as the type of the input state. See the documentation on StatefulLuxLayer for more information.

  • model: A Lux.AbstractLuxLayer neural network that returns the Hamiltonian of the system. The model must return a "batched scalar", i.e. all the dimensions of the output except the last one must be equal to 1. The last dimension must be equal to the batchsize of the input.

Keyword Arguments

  • autodiff: The autodiff framework to be used for the internal Hamiltonian computation. The default is nothing, which selects the best possible backend available. The available options are AutoForwardDiff and AutoZygote.

Autodiff Backends

autodiffPackage NeededNotes
AutoZygoteZygote.jlPreferred Backend. Chosen if Zygote is loaded and autodiff is nothing.
AutoForwardDiffChosen if Zygote is not loaded and autodiff is nothing.

Note

This layer uses nested autodiff. Please refer to the manual entry on Nested Autodiff for more information and known limitations.

source

',10))]),s("details",g,[s("summary",null,[i[12]||(i[12]=s("a",{id:"Boltz.Layers.MLP",href:"#Boltz.Layers.MLP"},[s("span",{class:"jlbinding"},"Boltz.Layers.MLP")],-1)),i[13]||(i[13]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[14]||(i[14]=t(`
julia
MLP(in_dims::Integer, hidden_dims::Dims{N}, activation=NNlib.relu; norm_layer=nothing,
     dropout_rate::Real=0.0f0, dense_kwargs=(;), norm_kwargs=(;),
-    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",y,[s("summary",null,[i[15]||(i[15]=s("a",{id:"Boltz.Layers.MultiHeadSelfAttention",href:"#Boltz.Layers.MultiHeadSelfAttention"},[s("span",{class:"jlbinding"},"Boltz.Layers.MultiHeadSelfAttention")],-1)),i[16]||(i[16]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[17]||(i[17]=t(`
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
-    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

`,5))]),s("details",m,[s("summary",null,[i[18]||(i[18]=s("a",{id:"Boltz.Layers.PatchEmbedding",href:"#Boltz.Layers.PatchEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PatchEmbedding")],-1)),i[19]||(i[19]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[20]||(i[20]=t(`
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
-    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

`,7))]),s("details",c,[s("summary",null,[i[21]||(i[21]=s("a",{id:"Boltz.Layers.PeriodicEmbedding",href:"#Boltz.Layers.PeriodicEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PeriodicEmbedding")],-1)),i[22]||(i[22]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[23]||(i[23]=t(`
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
+    last_layer_activation=false) where {N}

Construct a multi-layer perceptron (MLP) with dense layers, optional normalization layers, and dropout.

Arguments

  • in_dims: number of input dimensions

  • hidden_dims: dimensions of the hidden layers

  • activation: activation function (stacked after the normalization layer, if present else after the dense layer)

Keyword Arguments

  • norm_layer: Function with signature f(i::Integer, dims::Integer, act::F; kwargs...). i is the location of the layer in the model, dims is the channel dimension of the input, and act is the activation function. kwargs are forwarded from the norm_kwargs input, The function should return a normalization layer. Defaults to nothing, which means no normalization layer is used

  • dropout_rate: dropout rate (default: 0.0f0)

  • dense_kwargs: keyword arguments for the dense layers

  • norm_kwargs: keyword arguments for the normalization layers

  • last_layer_activation: set to true to apply the activation function to the last layer

source

`,7))]),s("details",y,[s("summary",null,[i[15]||(i[15]=s("a",{id:"Boltz.Layers.MultiHeadSelfAttention",href:"#Boltz.Layers.MultiHeadSelfAttention"},[s("span",{class:"jlbinding"},"Boltz.Layers.MultiHeadSelfAttention")],-1)),i[16]||(i[16]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[17]||(i[17]=t(`
julia
MultiHeadSelfAttention(in_planes::Int, number_heads::Int; use_qkv_bias::Bool=false,
+    attention_dropout_rate::T=0.0f0, projection_dropout_rate::T=0.0f0)

Multi-head self-attention layer

Arguments

  • planes: number of input channels

  • nheads: number of heads

  • use_qkv_bias: whether to use bias in the layer to get the query, key and value

  • attn_dropout_prob: dropout probability after the self-attention layer

  • proj_dropout_prob: dropout probability after the projection layer

source

`,5))]),s("details",m,[s("summary",null,[i[18]||(i[18]=s("a",{id:"Boltz.Layers.PatchEmbedding",href:"#Boltz.Layers.PatchEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PatchEmbedding")],-1)),i[19]||(i[19]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[20]||(i[20]=t(`
julia
PatchEmbedding(image_size, patch_size, in_channels, embed_planes;
+    norm_layer=Returns(Lux.NoOpLayer()), flatten=true)

Constructs a patch embedding layer with the given image size, patch size, input channels, and embedding planes. The patch size must be a divisor of the image size.

Arguments

  • image_size: image size as a tuple

  • patch_size: patch size as a tuple

  • in_channels: number of input channels

  • embed_planes: number of embedding planes

Keyword Arguments

  • norm_layer: Takes the embedding planes as input and returns a layer that normalizes the embedding planes. Defaults to no normalization.

  • flatten: set to true to flatten the output of the convolutional layer

source

`,7))]),s("details",c,[s("summary",null,[i[21]||(i[21]=s("a",{id:"Boltz.Layers.PeriodicEmbedding",href:"#Boltz.Layers.PeriodicEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.PeriodicEmbedding")],-1)),i[22]||(i[22]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[23]||(i[23]=t(`
julia
PeriodicEmbedding(idxs, periods)

Create an embedding periodic in some inputs with specified periods. Input indices not in idxs are passed through unchanged, but inputs in idxs are moved to the end of the output and replaced with their sines, followed by their cosines (scaled appropriately to have the specified periods). This smooth embedding preserves phase information and enforces periodicity.

For example, layer = PeriodicEmbedding([2, 3], [3.0, 1.0]) will create a layer periodic in the second input with period 3.0 and periodic in the third input with period 1.0. In this case, layer([a, b, c, d], st) == ([a, d, sinpi(2 / 3.0 * b), sinpi(2 / 1.0 * c), cospi(2 / 3.0 * b), cospi(2 / 1.0 * c)], st).

Arguments

  • idxs: Indices of the periodic inputs

  • periods: Periods of the periodic inputs, in the same order as in idxs

Inputs

  • x must be an AbstractArray with issubset(idxs, axes(x, 1))

  • st must be a NamedTuple where st.k = 2 ./ periods, but on the same device as x

Returns

  • AbstractArray of size (size(x, 1) + length(idxs), ...) where ... are the other dimensions of x.

  • st, unchanged

Example

julia
julia> layer = Layers.PeriodicEmbedding([2], [4.0])
 PeriodicEmbedding([2], [4.0])
 
 julia> ps, st = Lux.setup(Random.default_rng(), layer);
 
 julia> all(layer([1.1, 2.2, 3.3], ps, st)[1] .==
            [1.1, 3.3, sinpi(2 / 4.0 * 2.2), cospi(2 / 4.0 * 2.2)])
-true

source

`,12))]),s("details",E,[s("summary",null,[i[24]||(i[24]=s("a",{id:"Boltz.Layers.SplineLayer",href:"#Boltz.Layers.SplineLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.SplineLayer")],-1)),i[25]||(i[25]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[26]||(i[26]=t(`
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
-    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

`,8))]),s("details",u,[s("summary",null,[i[27]||(i[27]=s("a",{id:"Boltz.Layers.TensorProductLayer",href:"#Boltz.Layers.TensorProductLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.TensorProductLayer")],-1)),i[28]||(i[28]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[51]||(i[51]=t('
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)
',1)),s("p",null,[i[31]||(i[31]=a("Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, ")),s("mjx-container",F,[(h(),l("svg",f,i[29]||(i[29]=[t('',1)]))),i[30]||(i[30]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"]")])],-1))]),i[32]||(i[32]=a(" a data point x, computes"))]),s("mjx-container",b,[(h(),l("svg",C,i[33]||(i[33]=[t('',1)]))),i[34]||(i[34]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"z"),s("mi",null,"i")]),s("mo",null,"="),s("msub",null,[s("mi",null,"W"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mo",null,":")])]),s("mo",null,"⊙"),s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("mo",null,"⋯"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),s("p",null,[i[39]||(i[39]=a("where ")),s("mjx-container",L,[(h(),l("svg",x,i[35]||(i[35]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),i[36]||(i[36]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"W")])],-1))]),i[40]||(i[40]=a(" is the layer's weight, and returns ")),s("mjx-container",w,[(h(),l("svg",B,i[37]||(i[37]=[t('',1)]))),i[38]||(i[38]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"z"),s("mn",null,"1")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"z"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"o"),s("mi",null,"u"),s("mi",null,"t")])]),s("mo",{stretchy:"false"},"]")])],-1))]),i[41]||(i[41]=a("."))]),i[52]||(i[52]=s("p",null,[s("strong",null,"Arguments")],-1)),s("ul",null,[s("li",null,[s("p",null,[i[46]||(i[46]=s("code",null,"basis_fns",-1)),i[47]||(i[47]=a(": Array of TensorProductBasis ")),s("mjx-container",D,[(h(),l("svg",v,i[42]||(i[42]=[t('',1)]))),i[43]||(i[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"k")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mi",null,"k")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),i[48]||(i[48]=a(", where ")),s("mjx-container",A,[(h(),l("svg",H,i[44]||(i[44]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),i[45]||(i[45]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"k")])],-1))]),i[49]||(i[49]=a(" corresponds to the dimension of the input."))])]),i[50]||(i[50]=s("li",null,[s("p",null,[s("code",null,"out_dim"),a(": Dimension of the output.")])],-1))]),i[53]||(i[53]=t('

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

',4))]),s("details",j,[s("summary",null,[i[54]||(i[54]=s("a",{id:"Boltz.Layers.ViPosEmbedding",href:"#Boltz.Layers.ViPosEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.ViPosEmbedding")],-1)),i[55]||(i[55]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[56]||(i[56]=t('
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

',3))]),s("details",M,[s("summary",null,[i[57]||(i[57]=s("a",{id:"Boltz.Layers.VisionTransformerEncoder",href:"#Boltz.Layers.VisionTransformerEncoder"},[s("span",{class:"jlbinding"},"Boltz.Layers.VisionTransformerEncoder")],-1)),i[58]||(i[58]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[59]||(i[59]=t(`
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
-    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

`,7))]),s("details",Z,[s("summary",null,[i[60]||(i[60]=s("a",{id:"Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F",href:"#Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvBatchNormActivation")],-1)),i[61]||(i[61]=a()),n(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[62]||(i[62]=t(`
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
+true

source

`,12))]),s("details",E,[s("summary",null,[i[24]||(i[24]=s("a",{id:"Boltz.Layers.SplineLayer",href:"#Boltz.Layers.SplineLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.SplineLayer")],-1)),i[25]||(i[25]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[26]||(i[26]=t(`
julia
SplineLayer(in_dims, grid_min, grid_max, grid_step, basis::Type{Basis};
+    train_grid::Union{Val, Bool}=Val(false), init_saved_points=nothing)

Constructs a spline layer with the given basis function.

Arguments

  • in_dims: input dimensions of the layer. This must be a tuple of integers, to construct a flat vector of saved_points pass in ().

  • grid_min: minimum value of the grid.

  • grid_max: maximum value of the grid.

  • grid_step: step size of the grid.

  • basis: basis function to use for the interpolation. Currently only the basis functions from DataInterpolations.jl are supported:

    1. ConstantInterpolation

    2. LinearInterpolation

    3. QuadraticInterpolation

    4. QuadraticSpline

    5. CubicSpline

Keyword Arguments

  • train_grid: whether to train the grid or not.

  • init_saved_points: values of the function at multiples of the time step. Initialized by default to a random vector sampled from the unit normal. Alternatively, can take a function with the signature init_saved_points(rng, in_dims, grid_min, grid_max, grid_step).

Warning

Currently this layer is limited since it relies on DataInterpolations.jl which doesn't work with GPU arrays. This will be fixed in the future by extending support to different basis functions.

source

`,8))]),s("details",u,[s("summary",null,[i[27]||(i[27]=s("a",{id:"Boltz.Layers.TensorProductLayer",href:"#Boltz.Layers.TensorProductLayer"},[s("span",{class:"jlbinding"},"Boltz.Layers.TensorProductLayer")],-1)),i[28]||(i[28]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[51]||(i[51]=t('
julia
TensorProductLayer(basis_fns, out_dim::Int; init_weight = randn32)
',1)),s("p",null,[i[31]||(i[31]=a("Constructs the Tensor Product Layer, which takes as input an array of n tensor product basis, ")),s("mjx-container",F,[(h(),l("svg",f,i[29]||(i[29]=[t('',1)]))),i[30]||(i[30]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"]")])],-1))]),i[32]||(i[32]=a(" a data point x, computes"))]),s("mjx-container",b,[(h(),l("svg",C,i[33]||(i[33]=[t('',1)]))),i[34]||(i[34]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"z"),s("mi",null,"i")]),s("mo",null,"="),s("msub",null,[s("mi",null,"W"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,","),s("mo",null,":")])]),s("mo",null,"⊙"),s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mo",{stretchy:"false"},")"),s("mo",null,"⊗"),s("mo",null,"⋯"),s("mo",null,"⊗"),s("msub",null,[s("mi",null,"B"),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),s("p",null,[i[39]||(i[39]=a("where ")),s("mjx-container",L,[(h(),l("svg",x,i[35]||(i[35]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),i[36]||(i[36]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"W")])],-1))]),i[40]||(i[40]=a(" is the layer's weight, and returns ")),s("mjx-container",w,[(h(),l("svg",B,i[37]||(i[37]=[t('',1)]))),i[38]||(i[38]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"z"),s("mn",null,"1")]),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"z"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"o"),s("mi",null,"u"),s("mi",null,"t")])]),s("mo",{stretchy:"false"},"]")])],-1))]),i[41]||(i[41]=a("."))]),i[52]||(i[52]=s("p",null,[s("strong",null,"Arguments")],-1)),s("ul",null,[s("li",null,[s("p",null,[i[46]||(i[46]=s("code",null,"basis_fns",-1)),i[47]||(i[47]=a(": Array of TensorProductBasis ")),s("mjx-container",D,[(h(),l("svg",v,i[42]||(i[42]=[t('',1)]))),i[43]||(i[43]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("msub",null,[s("mi",null,"B"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mn",null,"1")]),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("msub",null,[s("mi",null,"B"),s("mi",null,"k")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"n"),s("mi",null,"k")]),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"]")])],-1))]),i[48]||(i[48]=a(", where ")),s("mjx-container",A,[(h(),l("svg",H,i[44]||(i[44]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),i[45]||(i[45]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"k")])],-1))]),i[49]||(i[49]=a(" corresponds to the dimension of the input."))])]),i[50]||(i[50]=s("li",null,[s("p",null,[s("code",null,"out_dim"),a(": Dimension of the output.")])],-1))]),i[53]||(i[53]=t('

Keyword Arguments

  • init_weight: Initializer for the weight matrix. Defaults to randn32.

Limited Backend Support

Support for backends apart from CPU and CUDA is limited and slow due to limited support for kron in the backend.

source

',4))]),s("details",j,[s("summary",null,[i[54]||(i[54]=s("a",{id:"Boltz.Layers.ViPosEmbedding",href:"#Boltz.Layers.ViPosEmbedding"},[s("span",{class:"jlbinding"},"Boltz.Layers.ViPosEmbedding")],-1)),i[55]||(i[55]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[56]||(i[56]=t('
julia
ViPosEmbedding(embedding_size, number_patches; init = randn32)

Positional embedding layer used by many vision transformer-like models.

source

',3))]),s("details",M,[s("summary",null,[i[57]||(i[57]=s("a",{id:"Boltz.Layers.VisionTransformerEncoder",href:"#Boltz.Layers.VisionTransformerEncoder"},[s("span",{class:"jlbinding"},"Boltz.Layers.VisionTransformerEncoder")],-1)),i[58]||(i[58]=a()),n(e,{type:"info",class:"jlObjectType jlType",text:"Type"})]),i[59]||(i[59]=t(`
julia
VisionTransformerEncoder(in_planes, depth, number_heads; mlp_ratio = 4.0f0,
+    dropout = 0.0f0)

Transformer as used in the base ViT architecture (Dosovitskiy et al., 2020).

Arguments

  • in_planes: number of input channels

  • depth: number of attention blocks

  • number_heads: number of attention heads

Keyword Arguments

  • mlp_ratio: ratio of MLP layers to the number of input channels

  • dropout_rate: dropout rate

source

`,7))]),s("details",Z,[s("summary",null,[i[60]||(i[60]=s("a",{id:"Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F",href:"#Boltz.Layers.ConvBatchNormActivation-Union{Tuple{F}, Tuple{NTuple{N, Int64} where N, Pair{Int64, Int64}, Int64, F}} where F"},[s("span",{class:"jlbinding"},"Boltz.Layers.ConvBatchNormActivation")],-1)),i[61]||(i[61]=a()),n(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),i[62]||(i[62]=t(`
julia
ConvBatchNormActivation(kernel_size::Dims, (in_filters, out_filters)::Pair{Int, Int},
     depth::Int, act::F; use_norm::Bool=true, conv_kwargs=(;),
-    last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source

`,3))]),i[65]||(i[65]=t('

Bibliography

  • Dosovitskiy, A.; Beyer, L.; Kolesnikov, A.; Weissenborn, D.; Zhai, X.; Unterthiner, T.; Dehghani, M.; Minderer, M.; Heigold, G.; Gelly, S. and others (2020). An image is worth 16x16 words: Transformers for image recognition at scale, arXiv preprint arXiv:2010.11929.

  • Greydanus, S.; Dzamba, M. and Yosinski, J. (2019). Hamiltonian neural networks. Advances in neural information processing systems 32.

',3))])}const R=p(o,[["render",z]]);export{O as __pageData,R as default}; + last_layer_activation::Bool=true, norm_kwargs=(;)) where {F}

This function is a convenience wrapper around ConvNormActivation that constructs a chain with norm_layer set to Lux.BatchNorm if use_norm is true and nothing otherwise. In most cases, users should use ConvNormActivation directly for a more flexible interface.

source

`,3))]),i[65]||(i[65]=t('

Bibliography

',3))])}const R=p(o,[["render",z]]);export{O as __pageData,R as default}; diff --git a/dev/assets/api_private.md.qgc7LO-U.js b/dev/assets/api_private.md.Bx-Z0HFD.js similarity index 88% rename from dev/assets/api_private.md.qgc7LO-U.js rename to dev/assets/api_private.md.Bx-Z0HFD.js index 54baf72..e03f83f 100644 --- a/dev/assets/api_private.md.qgc7LO-U.js +++ b/dev/assets/api_private.md.Bx-Z0HFD.js @@ -1 +1 @@ -import{_ as n,c as o,j as t,a as e,G as a,a2 as l,B as p,o as r}from"./chunks/framework.Brfltvkk.js";const E=JSON.parse('{"title":"Private API","description":"","frontmatter":{},"headers":[],"relativePath":"api/private.md","filePath":"api/private.md","lastUpdated":null}'),d={name:"api/private.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function b(g,s,y,m,f,j){const i=p("Badge");return r(),o("div",null,[s[12]||(s[12]=t("h1",{id:"Private-API",tabindex:"-1"},[e("Private API "),t("a",{class:"header-anchor",href:"#Private-API","aria-label":'Permalink to "Private API {#Private-API}"'},"​")],-1)),s[13]||(s[13]=t("p",null,"This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!",-1)),t("details",h,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Boltz.Utils.fast_chunk-Tuple{Int64, Int64}",href:"#Boltz.Utils.fast_chunk-Tuple{Int64, Int64}"},[t("span",{class:"jlbinding"},"Boltz.Utils.fast_chunk")],-1)),s[1]||(s[1]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

',3))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T",href:"#Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.flatten_spatial")],-1)),s[4]||(s[4]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=l('
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

',3))]),t("details",u,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Boltz.Utils.second_dim_mean-Tuple{Any}",href:"#Boltz.Utils.second_dim_mean-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Utils.second_dim_mean")],-1)),s[7]||(s[7]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=l('
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

',3))]),t("details",k,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T",href:"#Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.should_type_assert")],-1)),s[10]||(s[10]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=l('
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

',3))])])}const B=n(d,[["render",b]]);export{E as __pageData,B as default}; +import{_ as n,c as o,j as t,a as e,G as i,a2 as l,B as p,o as r}from"./chunks/framework.Brfltvkk.js";const E=JSON.parse('{"title":"Private API","description":"","frontmatter":{},"headers":[],"relativePath":"api/private.md","filePath":"api/private.md","lastUpdated":null}'),d={name:"api/private.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function b(g,s,y,m,f,j){const a=p("Badge");return r(),o("div",null,[s[12]||(s[12]=t("h1",{id:"Private-API",tabindex:"-1"},[e("Private API "),t("a",{class:"header-anchor",href:"#Private-API","aria-label":'Permalink to "Private API {#Private-API}"'},"​")],-1)),s[13]||(s[13]=t("p",null,"This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!",-1)),t("details",h,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Boltz.Utils.fast_chunk-Tuple{Int64, Int64}",href:"#Boltz.Utils.fast_chunk-Tuple{Int64, Int64}"},[t("span",{class:"jlbinding"},"Boltz.Utils.fast_chunk")],-1)),s[1]||(s[1]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

',3))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T",href:"#Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.flatten_spatial")],-1)),s[4]||(s[4]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=l('
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

',3))]),t("details",u,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Boltz.Utils.second_dim_mean-Tuple{Any}",href:"#Boltz.Utils.second_dim_mean-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Utils.second_dim_mean")],-1)),s[7]||(s[7]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=l('
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

',3))]),t("details",k,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T",href:"#Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.should_type_assert")],-1)),s[10]||(s[10]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=l('
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

',3))])])}const B=n(d,[["render",b]]);export{E as __pageData,B as default}; diff --git a/dev/assets/api_private.md.qgc7LO-U.lean.js b/dev/assets/api_private.md.Bx-Z0HFD.lean.js similarity index 88% rename from dev/assets/api_private.md.qgc7LO-U.lean.js rename to dev/assets/api_private.md.Bx-Z0HFD.lean.js index 54baf72..e03f83f 100644 --- a/dev/assets/api_private.md.qgc7LO-U.lean.js +++ b/dev/assets/api_private.md.Bx-Z0HFD.lean.js @@ -1 +1 @@ -import{_ as n,c as o,j as t,a as e,G as a,a2 as l,B as p,o as r}from"./chunks/framework.Brfltvkk.js";const E=JSON.parse('{"title":"Private API","description":"","frontmatter":{},"headers":[],"relativePath":"api/private.md","filePath":"api/private.md","lastUpdated":null}'),d={name:"api/private.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function b(g,s,y,m,f,j){const i=p("Badge");return r(),o("div",null,[s[12]||(s[12]=t("h1",{id:"Private-API",tabindex:"-1"},[e("Private API "),t("a",{class:"header-anchor",href:"#Private-API","aria-label":'Permalink to "Private API {#Private-API}"'},"​")],-1)),s[13]||(s[13]=t("p",null,"This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!",-1)),t("details",h,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Boltz.Utils.fast_chunk-Tuple{Int64, Int64}",href:"#Boltz.Utils.fast_chunk-Tuple{Int64, Int64}"},[t("span",{class:"jlbinding"},"Boltz.Utils.fast_chunk")],-1)),s[1]||(s[1]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

',3))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T",href:"#Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.flatten_spatial")],-1)),s[4]||(s[4]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=l('
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

',3))]),t("details",u,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Boltz.Utils.second_dim_mean-Tuple{Any}",href:"#Boltz.Utils.second_dim_mean-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Utils.second_dim_mean")],-1)),s[7]||(s[7]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=l('
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

',3))]),t("details",k,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T",href:"#Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.should_type_assert")],-1)),s[10]||(s[10]=e()),a(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=l('
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

',3))])])}const B=n(d,[["render",b]]);export{E as __pageData,B as default}; +import{_ as n,c as o,j as t,a as e,G as i,a2 as l,B as p,o as r}from"./chunks/framework.Brfltvkk.js";const E=JSON.parse('{"title":"Private API","description":"","frontmatter":{},"headers":[],"relativePath":"api/private.md","filePath":"api/private.md","lastUpdated":null}'),d={name:"api/private.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function b(g,s,y,m,f,j){const a=p("Badge");return r(),o("div",null,[s[12]||(s[12]=t("h1",{id:"Private-API",tabindex:"-1"},[e("Private API "),t("a",{class:"header-anchor",href:"#Private-API","aria-label":'Permalink to "Private API {#Private-API}"'},"​")],-1)),s[13]||(s[13]=t("p",null,"This is the private API reference for Boltz.jl. You know what this means. Don't use these functions!",-1)),t("details",h,[t("summary",null,[s[0]||(s[0]=t("a",{id:"Boltz.Utils.fast_chunk-Tuple{Int64, Int64}",href:"#Boltz.Utils.fast_chunk-Tuple{Int64, Int64}"},[t("span",{class:"jlbinding"},"Boltz.Utils.fast_chunk")],-1)),s[1]||(s[1]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[2]||(s[2]=l('
julia
fast_chunk(x::AbstractArray, ::Val{n}, ::Val{dim})

Type-stable and faster version of MLUtils.chunk.

source

',3))]),t("details",c,[t("summary",null,[s[3]||(s[3]=t("a",{id:"Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T",href:"#Boltz.Utils.flatten_spatial-Union{Tuple{AbstractArray{T, 4}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.flatten_spatial")],-1)),s[4]||(s[4]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[5]||(s[5]=l('
julia
flatten_spatial(x::AbstractArray{T, 4})

Flattens the first 2 dimensions of x, and permutes the remaining dimensions to (2, 1, 3).

source

',3))]),t("details",u,[t("summary",null,[s[6]||(s[6]=t("a",{id:"Boltz.Utils.second_dim_mean-Tuple{Any}",href:"#Boltz.Utils.second_dim_mean-Tuple{Any}"},[t("span",{class:"jlbinding"},"Boltz.Utils.second_dim_mean")],-1)),s[7]||(s[7]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[8]||(s[8]=l('
julia
second_dim_mean(x)

Computes the mean of x along dimension 2.

source

',3))]),t("details",k,[t("summary",null,[s[9]||(s[9]=t("a",{id:"Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T",href:"#Boltz.Utils.should_type_assert-Union{Tuple{AbstractArray{T}}, Tuple{T}} where T"},[t("span",{class:"jlbinding"},"Boltz.Utils.should_type_assert")],-1)),s[10]||(s[10]=e()),i(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[11]||(s[11]=l('
julia
should_type_assert(x)

In certain cases, to ensure type-stability we want to add type-asserts. But this won't work for exotic types like ForwardDiff.Dual. We use this function to check if we should add a type-assert for x.

source

',3))])])}const B=n(d,[["render",b]]);export{E as __pageData,B as default}; diff --git a/dev/assets/api_vision.md.CzAr55yf.js b/dev/assets/api_vision.md.D-4Td_yF.js similarity index 96% rename from dev/assets/api_vision.md.CzAr55yf.js rename to dev/assets/api_vision.md.D-4Td_yF.js index 428d6db..576a995 100644 --- a/dev/assets/api_vision.md.CzAr55yf.js +++ b/dev/assets/api_vision.md.D-4Td_yF.js @@ -1 +1 @@ -import{_ as n,c as o,j as t,a as i,G as l,a2 as s,B as d,o as r}from"./chunks/framework.Brfltvkk.js";const V=JSON.parse('{"title":"Computer Vision Models (Vision API)","description":"","frontmatter":{},"headers":[],"relativePath":"api/vision.md","filePath":"api/vision.md","lastUpdated":null}'),p={name:"api/vision.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""};function E(x,e,F,B,j,z){const a=d("Badge");return r(),o("div",null,[e[33]||(e[33]=t("h1",{id:"Computer-Vision-Models-(Vision-API)",tabindex:"-1"},[i("Computer Vision Models ("),t("code",null,"Vision"),i(" API) "),t("a",{class:"header-anchor",href:"#Computer-Vision-Models-(Vision-API)","aria-label":'Permalink to "Computer Vision Models (`Vision` API) {#Computer-Vision-Models-(Vision-API)}"'},"​")],-1)),e[34]||(e[34]=t("h2",{id:"Native-Lux-Models",tabindex:"-1"},[i("Native Lux Models "),t("a",{class:"header-anchor",href:"#Native-Lux-Models","aria-label":'Permalink to "Native Lux Models {#Native-Lux-Models}"'},"​")],-1)),t("details",h,[t("summary",null,[e[0]||(e[0]=t("a",{id:"Boltz.Vision.AlexNet",href:"#Boltz.Vision.AlexNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.AlexNet")],-1)),e[1]||(e[1]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=s('
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

source

',5))]),t("details",c,[t("summary",null,[e[3]||(e[3]=t("a",{id:"Boltz.Vision.VGG",href:"#Boltz.Vision.VGG"},[t("span",{class:"jlbinding"},"Boltz.Vision.VGG")],-1)),e[4]||(e[4]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[5]||(e[5]=s('
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

Keyword Arguments

source

',12))]),t("details",g,[t("summary",null,[e[6]||(e[6]=t("a",{id:"Boltz.Vision.VisionTransformer",href:"#Boltz.Vision.VisionTransformer"},[t("span",{class:"jlbinding"},"Boltz.Vision.VisionTransformer")],-1)),e[7]||(e[7]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[8]||(e[8]=s('
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

Keyword Arguments

source

',7))]),e[35]||(e[35]=t("h2",{id:"Imported-from-Metalhead.jl",tabindex:"-1"},[i("Imported from Metalhead.jl "),t("a",{class:"header-anchor",href:"#Imported-from-Metalhead.jl","aria-label":'Permalink to "Imported from Metalhead.jl {#Imported-from-Metalhead.jl}"'},"​")],-1)),e[36]||(e[36]=t("div",{class:"tip custom-block"},[t("p",{class:"custom-block-title"},"Load Metalhead"),t("p",null,[i("You need to load "),t("code",null,"Metalhead"),i(" before using these models.")])],-1)),t("details",k,[t("summary",null,[e[9]||(e[9]=t("a",{id:"Boltz.Vision.ConvMixer",href:"#Boltz.Vision.ConvMixer"},[t("span",{class:"jlbinding"},"Boltz.Vision.ConvMixer")],-1)),e[10]||(e[10]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=s('
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

Keyword Arguments

source

',7))]),t("details",u,[t("summary",null,[e[12]||(e[12]=t("a",{id:"Boltz.Vision.DenseNet",href:"#Boltz.Vision.DenseNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.DenseNet")],-1)),e[13]||(e[13]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s('
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",y,[t("summary",null,[e[15]||(e[15]=t("a",{id:"Boltz.Vision.GoogLeNet",href:"#Boltz.Vision.GoogLeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.GoogLeNet")],-1)),e[16]||(e[16]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[17]||(e[17]=s('
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

source

',5))]),t("details",m,[t("summary",null,[e[18]||(e[18]=t("a",{id:"Boltz.Vision.MobileNet",href:"#Boltz.Vision.MobileNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.MobileNet")],-1)),e[19]||(e[19]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[20]||(e[20]=s('
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

Keyword Arguments

source

',7))]),t("details",b,[t("summary",null,[e[21]||(e[21]=t("a",{id:"Boltz.Vision.ResNet",href:"#Boltz.Vision.ResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNet")],-1)),e[22]||(e[22]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[23]||(e[23]=s('
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

Keyword Arguments

source

',7))]),t("details",f,[t("summary",null,[e[24]||(e[24]=t("a",{id:"Boltz.Vision.ResNeXt",href:"#Boltz.Vision.ResNeXt"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNeXt")],-1)),e[25]||(e[25]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[26]||(e[26]=s('
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",v,[t("summary",null,[e[27]||(e[27]=t("a",{id:"Boltz.Vision.SqueezeNet",href:"#Boltz.Vision.SqueezeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.SqueezeNet")],-1)),e[28]||(e[28]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[29]||(e[29]=s('
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

source

',5))]),t("details",C,[t("summary",null,[e[30]||(e[30]=t("a",{id:"Boltz.Vision.WideResNet",href:"#Boltz.Vision.WideResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.WideResNet")],-1)),e[31]||(e[31]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[32]||(e[32]=s('
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

Keyword Arguments

source

',7))]),e[37]||(e[37]=s('

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

',10))])}const L=n(p,[["render",E]]);export{V as __pageData,L as default}; +import{_ as n,c as o,j as t,a as i,G as l,a2 as s,B as d,o as r}from"./chunks/framework.Brfltvkk.js";const V=JSON.parse('{"title":"Computer Vision Models (Vision API)","description":"","frontmatter":{},"headers":[],"relativePath":"api/vision.md","filePath":"api/vision.md","lastUpdated":null}'),p={name:"api/vision.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""};function E(x,e,F,B,j,z){const a=d("Badge");return r(),o("div",null,[e[33]||(e[33]=t("h1",{id:"Computer-Vision-Models-(Vision-API)",tabindex:"-1"},[i("Computer Vision Models ("),t("code",null,"Vision"),i(" API) "),t("a",{class:"header-anchor",href:"#Computer-Vision-Models-(Vision-API)","aria-label":'Permalink to "Computer Vision Models (`Vision` API) {#Computer-Vision-Models-(Vision-API)}"'},"​")],-1)),e[34]||(e[34]=t("h2",{id:"Native-Lux-Models",tabindex:"-1"},[i("Native Lux Models "),t("a",{class:"header-anchor",href:"#Native-Lux-Models","aria-label":'Permalink to "Native Lux Models {#Native-Lux-Models}"'},"​")],-1)),t("details",h,[t("summary",null,[e[0]||(e[0]=t("a",{id:"Boltz.Vision.AlexNet",href:"#Boltz.Vision.AlexNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.AlexNet")],-1)),e[1]||(e[1]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=s('
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

source

',5))]),t("details",c,[t("summary",null,[e[3]||(e[3]=t("a",{id:"Boltz.Vision.VGG",href:"#Boltz.Vision.VGG"},[t("span",{class:"jlbinding"},"Boltz.Vision.VGG")],-1)),e[4]||(e[4]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[5]||(e[5]=s('
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

Keyword Arguments

source

',12))]),t("details",g,[t("summary",null,[e[6]||(e[6]=t("a",{id:"Boltz.Vision.VisionTransformer",href:"#Boltz.Vision.VisionTransformer"},[t("span",{class:"jlbinding"},"Boltz.Vision.VisionTransformer")],-1)),e[7]||(e[7]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[8]||(e[8]=s('
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

Keyword Arguments

source

',7))]),e[35]||(e[35]=t("h2",{id:"Imported-from-Metalhead.jl",tabindex:"-1"},[i("Imported from Metalhead.jl "),t("a",{class:"header-anchor",href:"#Imported-from-Metalhead.jl","aria-label":'Permalink to "Imported from Metalhead.jl {#Imported-from-Metalhead.jl}"'},"​")],-1)),e[36]||(e[36]=t("div",{class:"tip custom-block"},[t("p",{class:"custom-block-title"},"Load Metalhead"),t("p",null,[i("You need to load "),t("code",null,"Metalhead"),i(" before using these models.")])],-1)),t("details",k,[t("summary",null,[e[9]||(e[9]=t("a",{id:"Boltz.Vision.ConvMixer",href:"#Boltz.Vision.ConvMixer"},[t("span",{class:"jlbinding"},"Boltz.Vision.ConvMixer")],-1)),e[10]||(e[10]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=s('
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

Keyword Arguments

source

',7))]),t("details",u,[t("summary",null,[e[12]||(e[12]=t("a",{id:"Boltz.Vision.DenseNet",href:"#Boltz.Vision.DenseNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.DenseNet")],-1)),e[13]||(e[13]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s('
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",y,[t("summary",null,[e[15]||(e[15]=t("a",{id:"Boltz.Vision.GoogLeNet",href:"#Boltz.Vision.GoogLeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.GoogLeNet")],-1)),e[16]||(e[16]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[17]||(e[17]=s('
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

source

',5))]),t("details",m,[t("summary",null,[e[18]||(e[18]=t("a",{id:"Boltz.Vision.MobileNet",href:"#Boltz.Vision.MobileNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.MobileNet")],-1)),e[19]||(e[19]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[20]||(e[20]=s('
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

Keyword Arguments

source

',7))]),t("details",b,[t("summary",null,[e[21]||(e[21]=t("a",{id:"Boltz.Vision.ResNet",href:"#Boltz.Vision.ResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNet")],-1)),e[22]||(e[22]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[23]||(e[23]=s('
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

Keyword Arguments

source

',7))]),t("details",f,[t("summary",null,[e[24]||(e[24]=t("a",{id:"Boltz.Vision.ResNeXt",href:"#Boltz.Vision.ResNeXt"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNeXt")],-1)),e[25]||(e[25]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[26]||(e[26]=s('
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",v,[t("summary",null,[e[27]||(e[27]=t("a",{id:"Boltz.Vision.SqueezeNet",href:"#Boltz.Vision.SqueezeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.SqueezeNet")],-1)),e[28]||(e[28]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[29]||(e[29]=s('
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

source

',5))]),t("details",C,[t("summary",null,[e[30]||(e[30]=t("a",{id:"Boltz.Vision.WideResNet",href:"#Boltz.Vision.WideResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.WideResNet")],-1)),e[31]||(e[31]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[32]||(e[32]=s('
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

Keyword Arguments

source

',7))]),e[37]||(e[37]=s('

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

',10))])}const L=n(p,[["render",E]]);export{V as __pageData,L as default}; diff --git a/dev/assets/api_vision.md.CzAr55yf.lean.js b/dev/assets/api_vision.md.D-4Td_yF.lean.js similarity index 96% rename from dev/assets/api_vision.md.CzAr55yf.lean.js rename to dev/assets/api_vision.md.D-4Td_yF.lean.js index 428d6db..576a995 100644 --- a/dev/assets/api_vision.md.CzAr55yf.lean.js +++ b/dev/assets/api_vision.md.D-4Td_yF.lean.js @@ -1 +1 @@ -import{_ as n,c as o,j as t,a as i,G as l,a2 as s,B as d,o as r}from"./chunks/framework.Brfltvkk.js";const V=JSON.parse('{"title":"Computer Vision Models (Vision API)","description":"","frontmatter":{},"headers":[],"relativePath":"api/vision.md","filePath":"api/vision.md","lastUpdated":null}'),p={name:"api/vision.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""};function E(x,e,F,B,j,z){const a=d("Badge");return r(),o("div",null,[e[33]||(e[33]=t("h1",{id:"Computer-Vision-Models-(Vision-API)",tabindex:"-1"},[i("Computer Vision Models ("),t("code",null,"Vision"),i(" API) "),t("a",{class:"header-anchor",href:"#Computer-Vision-Models-(Vision-API)","aria-label":'Permalink to "Computer Vision Models (`Vision` API) {#Computer-Vision-Models-(Vision-API)}"'},"​")],-1)),e[34]||(e[34]=t("h2",{id:"Native-Lux-Models",tabindex:"-1"},[i("Native Lux Models "),t("a",{class:"header-anchor",href:"#Native-Lux-Models","aria-label":'Permalink to "Native Lux Models {#Native-Lux-Models}"'},"​")],-1)),t("details",h,[t("summary",null,[e[0]||(e[0]=t("a",{id:"Boltz.Vision.AlexNet",href:"#Boltz.Vision.AlexNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.AlexNet")],-1)),e[1]||(e[1]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=s('
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

source

',5))]),t("details",c,[t("summary",null,[e[3]||(e[3]=t("a",{id:"Boltz.Vision.VGG",href:"#Boltz.Vision.VGG"},[t("span",{class:"jlbinding"},"Boltz.Vision.VGG")],-1)),e[4]||(e[4]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[5]||(e[5]=s('
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

Keyword Arguments

source

',12))]),t("details",g,[t("summary",null,[e[6]||(e[6]=t("a",{id:"Boltz.Vision.VisionTransformer",href:"#Boltz.Vision.VisionTransformer"},[t("span",{class:"jlbinding"},"Boltz.Vision.VisionTransformer")],-1)),e[7]||(e[7]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[8]||(e[8]=s('
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

Keyword Arguments

source

',7))]),e[35]||(e[35]=t("h2",{id:"Imported-from-Metalhead.jl",tabindex:"-1"},[i("Imported from Metalhead.jl "),t("a",{class:"header-anchor",href:"#Imported-from-Metalhead.jl","aria-label":'Permalink to "Imported from Metalhead.jl {#Imported-from-Metalhead.jl}"'},"​")],-1)),e[36]||(e[36]=t("div",{class:"tip custom-block"},[t("p",{class:"custom-block-title"},"Load Metalhead"),t("p",null,[i("You need to load "),t("code",null,"Metalhead"),i(" before using these models.")])],-1)),t("details",k,[t("summary",null,[e[9]||(e[9]=t("a",{id:"Boltz.Vision.ConvMixer",href:"#Boltz.Vision.ConvMixer"},[t("span",{class:"jlbinding"},"Boltz.Vision.ConvMixer")],-1)),e[10]||(e[10]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=s('
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

Keyword Arguments

source

',7))]),t("details",u,[t("summary",null,[e[12]||(e[12]=t("a",{id:"Boltz.Vision.DenseNet",href:"#Boltz.Vision.DenseNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.DenseNet")],-1)),e[13]||(e[13]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s('
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",y,[t("summary",null,[e[15]||(e[15]=t("a",{id:"Boltz.Vision.GoogLeNet",href:"#Boltz.Vision.GoogLeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.GoogLeNet")],-1)),e[16]||(e[16]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[17]||(e[17]=s('
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

source

',5))]),t("details",m,[t("summary",null,[e[18]||(e[18]=t("a",{id:"Boltz.Vision.MobileNet",href:"#Boltz.Vision.MobileNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.MobileNet")],-1)),e[19]||(e[19]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[20]||(e[20]=s('
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

Keyword Arguments

source

',7))]),t("details",b,[t("summary",null,[e[21]||(e[21]=t("a",{id:"Boltz.Vision.ResNet",href:"#Boltz.Vision.ResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNet")],-1)),e[22]||(e[22]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[23]||(e[23]=s('
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

Keyword Arguments

source

',7))]),t("details",f,[t("summary",null,[e[24]||(e[24]=t("a",{id:"Boltz.Vision.ResNeXt",href:"#Boltz.Vision.ResNeXt"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNeXt")],-1)),e[25]||(e[25]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[26]||(e[26]=s('
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",v,[t("summary",null,[e[27]||(e[27]=t("a",{id:"Boltz.Vision.SqueezeNet",href:"#Boltz.Vision.SqueezeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.SqueezeNet")],-1)),e[28]||(e[28]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[29]||(e[29]=s('
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

source

',5))]),t("details",C,[t("summary",null,[e[30]||(e[30]=t("a",{id:"Boltz.Vision.WideResNet",href:"#Boltz.Vision.WideResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.WideResNet")],-1)),e[31]||(e[31]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[32]||(e[32]=s('
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

Keyword Arguments

source

',7))]),e[37]||(e[37]=s('

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

',10))])}const L=n(p,[["render",E]]);export{V as __pageData,L as default}; +import{_ as n,c as o,j as t,a as i,G as l,a2 as s,B as d,o as r}from"./chunks/framework.Brfltvkk.js";const V=JSON.parse('{"title":"Computer Vision Models (Vision API)","description":"","frontmatter":{},"headers":[],"relativePath":"api/vision.md","filePath":"api/vision.md","lastUpdated":null}'),p={name:"api/vision.md"},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""};function E(x,e,F,B,j,z){const a=d("Badge");return r(),o("div",null,[e[33]||(e[33]=t("h1",{id:"Computer-Vision-Models-(Vision-API)",tabindex:"-1"},[i("Computer Vision Models ("),t("code",null,"Vision"),i(" API) "),t("a",{class:"header-anchor",href:"#Computer-Vision-Models-(Vision-API)","aria-label":'Permalink to "Computer Vision Models (`Vision` API) {#Computer-Vision-Models-(Vision-API)}"'},"​")],-1)),e[34]||(e[34]=t("h2",{id:"Native-Lux-Models",tabindex:"-1"},[i("Native Lux Models "),t("a",{class:"header-anchor",href:"#Native-Lux-Models","aria-label":'Permalink to "Native Lux Models {#Native-Lux-Models}"'},"​")],-1)),t("details",h,[t("summary",null,[e[0]||(e[0]=t("a",{id:"Boltz.Vision.AlexNet",href:"#Boltz.Vision.AlexNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.AlexNet")],-1)),e[1]||(e[1]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=s('
julia
AlexNet(; kwargs...)

Create an AlexNet model (Krizhevsky et al., 2012).

Keyword Arguments

source

',5))]),t("details",c,[t("summary",null,[e[3]||(e[3]=t("a",{id:"Boltz.Vision.VGG",href:"#Boltz.Vision.VGG"},[t("span",{class:"jlbinding"},"Boltz.Vision.VGG")],-1)),e[4]||(e[4]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[5]||(e[5]=s('
julia
VGG(imsize; config, inchannels, batchnorm = false, nclasses, fcsize, dropout)

Create a VGG model (Simonyan, 2014).

Arguments

source

julia
VGG(depth::Int; batchnorm::Bool=false, pretrained::Bool=false)

Create a VGG model (Simonyan, 2014) with ImageNet Configuration.

Arguments

Keyword Arguments

source

',12))]),t("details",g,[t("summary",null,[e[6]||(e[6]=t("a",{id:"Boltz.Vision.VisionTransformer",href:"#Boltz.Vision.VisionTransformer"},[t("span",{class:"jlbinding"},"Boltz.Vision.VisionTransformer")],-1)),e[7]||(e[7]=i()),l(a,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[8]||(e[8]=s('
julia
VisionTransformer(name::Symbol; pretrained=false)

Creates a Vision Transformer model with the specified configuration.

Arguments

Keyword Arguments

source

',7))]),e[35]||(e[35]=t("h2",{id:"Imported-from-Metalhead.jl",tabindex:"-1"},[i("Imported from Metalhead.jl "),t("a",{class:"header-anchor",href:"#Imported-from-Metalhead.jl","aria-label":'Permalink to "Imported from Metalhead.jl {#Imported-from-Metalhead.jl}"'},"​")],-1)),e[36]||(e[36]=t("div",{class:"tip custom-block"},[t("p",{class:"custom-block-title"},"Load Metalhead"),t("p",null,[i("You need to load "),t("code",null,"Metalhead"),i(" before using these models.")])],-1)),t("details",k,[t("summary",null,[e[9]||(e[9]=t("a",{id:"Boltz.Vision.ConvMixer",href:"#Boltz.Vision.ConvMixer"},[t("span",{class:"jlbinding"},"Boltz.Vision.ConvMixer")],-1)),e[10]||(e[10]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=s('
julia
ConvMixer(name::Symbol; pretrained::Bool=false)

Create a ConvMixer model (Trockman and Kolter, 2022).

Arguments

Keyword Arguments

source

',7))]),t("details",u,[t("summary",null,[e[12]||(e[12]=t("a",{id:"Boltz.Vision.DenseNet",href:"#Boltz.Vision.DenseNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.DenseNet")],-1)),e[13]||(e[13]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s('
julia
DenseNet(depth::Int; pretrained::Bool=false)

Create a DenseNet model (Huang et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",y,[t("summary",null,[e[15]||(e[15]=t("a",{id:"Boltz.Vision.GoogLeNet",href:"#Boltz.Vision.GoogLeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.GoogLeNet")],-1)),e[16]||(e[16]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[17]||(e[17]=s('
julia
GoogLeNet(; pretrained::Bool=false)

Create a GoogLeNet model (Szegedy et al., 2015).

Keyword Arguments

source

',5))]),t("details",m,[t("summary",null,[e[18]||(e[18]=t("a",{id:"Boltz.Vision.MobileNet",href:"#Boltz.Vision.MobileNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.MobileNet")],-1)),e[19]||(e[19]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[20]||(e[20]=s('
julia
MobileNet(name::Symbol; pretrained::Bool=false)

Create a MobileNet model (Howard, 2017; Sandler et al., 2018; Howard et al., 2019).

Arguments

Keyword Arguments

source

',7))]),t("details",b,[t("summary",null,[e[21]||(e[21]=t("a",{id:"Boltz.Vision.ResNet",href:"#Boltz.Vision.ResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNet")],-1)),e[22]||(e[22]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[23]||(e[23]=s('
julia
ResNet(depth::Int; pretrained::Bool=false)

Create a ResNet model (He et al., 2016).

Arguments

Keyword Arguments

source

',7))]),t("details",f,[t("summary",null,[e[24]||(e[24]=t("a",{id:"Boltz.Vision.ResNeXt",href:"#Boltz.Vision.ResNeXt"},[t("span",{class:"jlbinding"},"Boltz.Vision.ResNeXt")],-1)),e[25]||(e[25]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[26]||(e[26]=s('
julia
ResNeXt(depth::Int; cardinality=32, base_width=nothing, pretrained::Bool=false)

Create a ResNeXt model (Xie et al., 2017).

Arguments

Keyword Arguments

source

',7))]),t("details",v,[t("summary",null,[e[27]||(e[27]=t("a",{id:"Boltz.Vision.SqueezeNet",href:"#Boltz.Vision.SqueezeNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.SqueezeNet")],-1)),e[28]||(e[28]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[29]||(e[29]=s('
julia
SqueezeNet(; pretrained::Bool=false)

Create a SqueezeNet model (Iandola et al., 2016).

Keyword Arguments

source

',5))]),t("details",C,[t("summary",null,[e[30]||(e[30]=t("a",{id:"Boltz.Vision.WideResNet",href:"#Boltz.Vision.WideResNet"},[t("span",{class:"jlbinding"},"Boltz.Vision.WideResNet")],-1)),e[31]||(e[31]=i()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[32]||(e[32]=s('
julia
WideResNet(depth::Int; pretrained::Bool=false)

Create a WideResNet model (Zagoruyko and Komodakis, 2017).

Arguments

Keyword Arguments

source

',7))]),e[37]||(e[37]=s('

Pretrained Models

Load JLD2

You need to load JLD2 before being able to load pretrained weights.

Load Pretrained Weights

Pass pretrained=true to the model constructor to load the pretrained weights.

MODELTOP 1 ACCURACY (%)TOP 5 ACCURACY (%)
AlexNet()54.4877.72
VGG(11)67.3587.91
VGG(13)68.4088.48
VGG(16)70.2489.80
VGG(19)71.0990.27
VGG(11; batchnorm=true)69.0988.94
VGG(13; batchnorm=true)69.6689.49
VGG(16; batchnorm=true)72.1191.02
VGG(19; batchnorm=true)72.9591.32
ResNet(18)--
ResNet(34)--
ResNet(50)--
ResNet(101)--
ResNet(152)--
ResNeXt(50; cardinality=32, base_width=4)--
ResNeXt(101; cardinality=32, base_width=8)--
ResNeXt(101; cardinality=64, base_width=4)--
SqueezeNet()--
WideResNet(50)--
WideResNet(101)--

Pretrained Models from Metalhead

For Models imported from Metalhead, the pretrained weights can be loaded if they are available in Metalhead. Refer to the Metalhead.jl docs for a list of available pretrained models.

Preprocessing

All the pretrained models require that the images be normalized with the parameters mean = [0.485f0, 0.456f0, 0.406f0] and std = [0.229f0, 0.224f0, 0.225f0].


Bibliography

',10))])}const L=n(p,[["render",E]]);export{V as __pageData,L as default}; diff --git a/dev/assets/app.BMFda93J.js b/dev/assets/app.D9lb7J90.js similarity index 95% rename from dev/assets/app.BMFda93J.js rename to dev/assets/app.D9lb7J90.js index 6470281..fb2ee88 100644 --- a/dev/assets/app.BMFda93J.js +++ b/dev/assets/app.D9lb7J90.js @@ -1 +1 @@ -import{R as p}from"./chunks/theme.B1egvRb4.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.Brfltvkk.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{R as p}from"./chunks/theme.CNGAZXZT.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a5 as S}from"./chunks/framework.Brfltvkk.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/dev/assets/chunks/@localSearchIndexroot.C0O8Nga3.js b/dev/assets/chunks/@localSearchIndexroot.C0O8Nga3.js deleted file mode 100644 index 33f4418..0000000 --- a/dev/assets/chunks/@localSearchIndexroot.C0O8Nga3.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":28,"nextId":28,"documentIds":{"0":"/Boltz.jl/dev/api/basis#Boltz.Basis-API-Reference","1":"/Boltz.jl/dev/api/#API-Reference","2":"/Boltz.jl/dev/api/#index","3":"/Boltz.jl/dev/api/layers#Boltz.Layers-API-Reference","4":"/Boltz.jl/dev/api/layers#bibliography","5":"/Boltz.jl/dev/api/private#Private-API","6":"/Boltz.jl/dev/api/vision#Computer-Vision-Models-(Vision-API)","7":"/Boltz.jl/dev/api/vision#Native-Lux-Models","8":"/Boltz.jl/dev/api/vision#Imported-from-Metalhead.jl","9":"/Boltz.jl/dev/api/vision#Pretrained-Models","10":"/Boltz.jl/dev/api/vision#preprocessing","11":"/Boltz.jl/dev/api/vision#bibliography","12":"/Boltz.jl/dev/#How-to-Install-Boltz.jl?","13":"/Boltz.jl/dev/#Want-GPU-Support?","14":"/Boltz.jl/dev/tutorials/1_GettingStarted#Getting-Started","15":"/Boltz.jl/dev/tutorials/1_GettingStarted#Multi-Layer-Perceptron","16":"/Boltz.jl/dev/tutorials/1_GettingStarted#How-about-VGG?","17":"/Boltz.jl/dev/tutorials/1_GettingStarted#Loading-Models-from-Metalhead-(Flux.jl)","18":"/Boltz.jl/dev/tutorials/1_GettingStarted#appendix","19":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Solving-Optimal-Control-Problems-with-Symbolic-Universal-Differential-Equations","20":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Package-Imports","21":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Helper-Functions","22":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Training-a-Neural-Network-based-UDE","23":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Symbolic-Regression","24":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Data-Generation-for-Symbolic-Regression","25":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Fitting-the-Symbolic-Expression","26":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Combining-the-Neural-Network-with-the-Symbolic-Expression","27":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#appendix"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,96],"1":[2,1,14],"2":[1,2,35],"3":[4,1,547],"4":[1,1,51],"5":[2,1,84],"6":[5,1,1],"7":[3,5,103],"8":[4,5,102],"9":[2,5,92],"10":[1,5,23],"11":[1,1,181],"12":[6,1,47],"13":[4,1,24],"14":[2,1,105],"15":[3,2,66],"16":[4,2,109],"17":[7,2,90],"18":[1,2,86],"19":[9,1,103],"20":[2,9,930],"21":[2,9,33],"22":[6,9,259],"23":[2,9,31],"24":[5,10,500],"25":[4,10,165],"26":[7,9,165],"27":[1,9,86]},"averageFieldLength":[3.392857142857143,4.107142857142857,147.4285714285714],"storedFields":{"0":{"title":"Boltz.Basis API Reference","titles":[]},"1":{"title":"API Reference","titles":[]},"2":{"title":"Index","titles":["API Reference"]},"3":{"title":"Boltz.Layers API Reference","titles":[]},"4":{"title":"Bibliography","titles":[]},"5":{"title":"Private API","titles":[]},"6":{"title":"Computer Vision Models (Vision API)","titles":[]},"7":{"title":"Native Lux Models","titles":["Computer Vision Models (Vision API)"]},"8":{"title":"Imported from Metalhead.jl","titles":["Computer Vision Models (Vision API)"]},"9":{"title":"Pretrained Models","titles":["Computer Vision Models (Vision API)"]},"10":{"title":"Preprocessing","titles":["Computer Vision Models (Vision API)","Pretrained Models"]},"11":{"title":"Bibliography","titles":[]},"12":{"title":"How to Install Boltz.jl?","titles":[]},"13":{"title":"Want GPU Support?","titles":[]},"14":{"title":"Getting Started","titles":[]},"15":{"title":"Multi-Layer Perceptron","titles":["Getting Started"]},"16":{"title":"How about VGG?","titles":["Getting Started"]},"17":{"title":"Loading Models from Metalhead (Flux.jl)","titles":["Getting Started"]},"18":{"title":"Appendix","titles":["Getting Started"]},"19":{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","titles":[]},"20":{"title":"Package Imports","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"21":{"title":"Helper Functions","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"22":{"title":"Training a Neural Network based UDE","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"23":{"title":"Symbolic Regression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"24":{"title":"Data Generation for Symbolic Regression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations","Symbolic Regression"]},"25":{"title":"Fitting the Symbolic Expression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations","Symbolic Regression"]},"26":{"title":"Combining the Neural Network with the Symbolic Expression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"27":{"title":"Appendix","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]}},"dirtCount":0,"index":[["−x4−",{"2":{"25":1}}],["−0",{"2":{"25":1}}],["⋅2",{"2":{"25":1}}],["⋅1",{"2":{"25":1}}],["⋅x2⋅3",{"2":{"25":1}}],["⋅x2+0",{"2":{"25":1}}],["⋅x1−x2+x3−0",{"2":{"25":1}}],["⋅",{"2":{"25":2}}],["⋅0",{"2":{"25":1}}],["~",{"2":{"22":2}}],["`lux",{"2":{"22":2}}],["`m`",{"2":{"22":2}}],[">",{"2":{"22":2}}],["^3",{"2":{"22":1}}],["└",{"2":{"20":1,"22":2}}],["\\u001b",{"2":{"20":1}}],["│",{"2":{"20":1,"22":8}}],["┌",{"2":{"20":1,"22":2}}],["∥2",{"2":{"19":2}}],["∥2+2∥v",{"2":{"19":1}}],["∥2+2∥x",{"2":{"19":1}}],["∥2+∥u",{"2":{"19":2}}],["∥4−x",{"2":{"19":2}}],["θ",{"2":{"19":2,"22":4}}],["×",{"2":{"18":1,"27":1}}],["→",{"2":{"14":10,"20":141}}],["✓",{"2":{"14":20,"20":414}}],["ylims",{"2":{"21":1}}],["y",{"2":{"11":2,"25":1}}],["you",{"2":{"5":1,"8":1,"9":1,"11":1,"12":3,"14":1,"16":1,"25":1,"26":2}}],["your",{"2":{"1":1}}],["yosinski",{"2":{"4":1}}],["74084e",{"2":{"24":1}}],["742",{"2":{"20":1}}],["74197",{"2":{"20":1}}],["74",{"2":{"20":1}}],["7554",{"2":{"20":1}}],["76633",{"2":{"25":1}}],["7663322029266375",{"2":{"25":1,"26":1}}],["760965",{"2":{"24":1}}],["76569e",{"2":{"24":1}}],["769",{"2":{"20":1}}],["768",{"2":{"17":1}}],["764",{"2":{"16":2}}],["78859−x4+x3⋅0",{"2":{"25":1}}],["7885931564339473",{"2":{"25":1,"26":1}}],["788618",{"2":{"24":35}}],["788619",{"2":{"24":2}}],["788621",{"2":{"24":1}}],["788623",{"2":{"24":1}}],["788629",{"2":{"24":1}}],["788639",{"2":{"24":1}}],["788657",{"2":{"24":1}}],["78869",{"2":{"24":1}}],["788746",{"2":{"24":1}}],["788841",{"2":{"24":1}}],["788997",{"2":{"24":1}}],["789245",{"2":{"24":1}}],["789632",{"2":{"24":1}}],["7855",{"2":{"20":1}}],["7854",{"2":{"20":1}}],["781",{"2":{"16":2}}],["7844e",{"2":{"24":1}}],["78433e",{"2":{"24":1}}],["784",{"2":{"15":4}}],["73041e",{"2":{"24":1}}],["736",{"2":{"20":1}}],["73",{"2":{"16":2,"17":1}}],["798978",{"2":{"24":1}}],["790221",{"2":{"24":1}}],["794179",{"2":{"24":1}}],["79487e",{"2":{"24":1}}],["79739e",{"2":{"24":1}}],["79389e",{"2":{"24":1}}],["791097",{"2":{"24":1}}],["791",{"2":{"20":1}}],["79",{"2":{"20":1}}],["79237",{"2":{"24":1}}],["792",{"2":{"16":2}}],["796697",{"2":{"24":1}}],["796",{"2":{"14":1}}],["7",{"2":{"14":1,"16":2,"17":2,"20":42,"24":20}}],["71\\tloss",{"2":{"22":1}}],["7108",{"2":{"20":1}}],["711",{"2":{"20":1}}],["719",{"2":{"20":1}}],["7140",{"2":{"14":1}}],["71",{"2":{"9":1}}],["70536e",{"2":{"24":1}}],["705",{"2":{"20":1}}],["7005",{"2":{"22":1}}],["7007",{"2":{"20":1}}],["700",{"2":{"20":1}}],["70413e",{"2":{"24":1}}],["704",{"2":{"20":1}}],["70",{"2":{"9":1}}],["728",{"2":{"17":1}}],["72",{"2":{"9":3}}],["7729",{"2":{"20":1}}],["7763",{"2":{"18":1,"27":1}}],["778",{"2":{"11":1}}],["770",{"2":{"11":1}}],["7700815",{"2":{"3":1}}],["77",{"2":{"9":1,"20":1}}],["84296−x2⋅x2⋅",{"2":{"25":1}}],["8429576230558037",{"2":{"25":1,"26":1}}],["84159e",{"2":{"24":1}}],["8471",{"2":{"20":1}}],["847",{"2":{"20":1}}],["848",{"2":{"16":2}}],["83297",{"2":{"25":1}}],["8329723329564129",{"2":{"25":1,"26":1}}],["83789e",{"2":{"24":1}}],["833",{"2":{"20":2}}],["839636",{"2":{"24":1}}],["83991e",{"2":{"24":1}}],["839",{"2":{"20":2}}],["835",{"2":{"14":1}}],["8654−x2⋅",{"2":{"25":1}}],["8653534481831382",{"2":{"25":1,"26":1}}],["86601e",{"2":{"24":1}}],["86645e",{"2":{"24":1}}],["8663",{"2":{"20":1}}],["86324e",{"2":{"24":1}}],["862",{"2":{"20":1}}],["869",{"2":{"20":1}}],["86",{"2":{"20":2}}],["864",{"2":{"17":4}}],["8126+0",{"2":{"25":1}}],["8125551854122142",{"2":{"25":1,"26":1}}],["810666",{"2":{"24":1}}],["818306",{"2":{"24":1}}],["81890",{"2":{"20":1}}],["81605e",{"2":{"24":1}}],["8163",{"2":{"20":1}}],["81\\tloss",{"2":{"22":1}}],["815",{"2":{"20":1}}],["8198e",{"2":{"24":1}}],["819",{"2":{"20":1}}],["8115",{"2":{"20":1}}],["811",{"2":{"20":1}}],["81",{"2":{"20":2}}],["853758",{"2":{"24":1}}],["855234",{"2":{"24":1}}],["85287e",{"2":{"24":1}}],["852",{"2":{"20":1}}],["85",{"2":{"20":3}}],["854",{"2":{"20":1}}],["85676e",{"2":{"24":1}}],["856",{"2":{"16":2}}],["827881",{"2":{"24":1}}],["822",{"2":{"20":1}}],["824",{"2":{"17":3}}],["8266668",{"2":{"3":1}}],["800125",{"2":{"24":1}}],["804696",{"2":{"24":1}}],["8061",{"2":{"20":1}}],["8069",{"2":{"20":1}}],["805",{"2":{"20":1}}],["808",{"2":{"16":6}}],["80",{"2":{"9":1}}],["89617e",{"2":{"24":1}}],["895",{"2":{"20":1}}],["890",{"2":{"20":1}}],["894",{"2":{"20":1}}],["891",{"2":{"20":1}}],["89",{"2":{"9":2,"20":1}}],["889395",{"2":{"24":1}}],["88248e",{"2":{"24":1}}],["882",{"2":{"20":1}}],["884",{"2":{"20":1}}],["8839",{"2":{"14":1}}],["885",{"2":{"14":1}}],["88",{"2":{"9":2}}],["87376e",{"2":{"24":1}}],["87805e",{"2":{"24":1}}],["87746e",{"2":{"24":1}}],["87264e",{"2":{"24":1}}],["8723",{"2":{"20":1}}],["870353",{"2":{"24":1}}],["87016",{"2":{"20":1}}],["870",{"2":{"20":1}}],["87",{"2":{"9":1}}],["8",{"2":{"8":1,"14":1,"16":2,"17":1,"19":1,"20":31,"22":7,"24":22,"26":3}}],["⊗⋯⊗bn",{"2":{"3":1}}],["⊗b2",{"2":{"3":1}}],["⊙",{"2":{"3":1}}],["zstd",{"2":{"20":1}}],["znver3",{"2":{"18":1,"27":1}}],["z",{"2":{"11":3}}],["zhmoginov",{"2":{"11":1}}],["zhu",{"2":{"11":2}}],["zhang",{"2":{"11":1}}],["zhai",{"2":{"4":1}}],["zagoruyko",{"2":{"8":1,"11":1}}],["zout",{"2":{"3":1}}],["z1",{"2":{"3":1}}],["zi=wi",{"2":{"3":1}}],["zygotecolorsext",{"2":{"20":2}}],["zygotetrackerext",{"2":{"20":1}}],["zygote",{"2":{"3":4,"20":2}}],["qoi",{"2":{"20":1}}],["q",{"2":{"11":1}}],["quadgkenzymeext",{"2":{"20":1}}],["quadgk",{"2":{"20":2}}],["quadraticspline",{"2":{"3":1}}],["quadraticinterpolation",{"2":{"3":1}}],["query",{"2":{"3":1}}],["quot",{"2":{"3":2,"14":2}}],["qkv",{"2":{"3":2}}],["933837",{"2":{"24":1}}],["937",{"2":{"20":1}}],["9344",{"2":{"20":1}}],["929779",{"2":{"24":1}}],["92998e",{"2":{"24":1}}],["92684e",{"2":{"24":1}}],["92352e",{"2":{"24":1}}],["92434e",{"2":{"24":1}}],["92754e",{"2":{"24":1}}],["92",{"2":{"20":1}}],["92889e",{"2":{"24":1}}],["928",{"2":{"16":2}}],["99",{"2":{"20":1}}],["9974",{"2":{"20":1}}],["9961",{"2":{"20":1}}],["9995737",{"2":{"3":1}}],["982733",{"2":{"24":1}}],["985351",{"2":{"24":1}}],["98822e",{"2":{"24":1}}],["981",{"2":{"22":1}}],["987",{"2":{"20":1}}],["984",{"2":{"20":1}}],["98",{"2":{"20":2}}],["980",{"2":{"20":1}}],["983",{"2":{"20":1}}],["972",{"2":{"20":1}}],["974",{"2":{"20":1}}],["97",{"2":{"20":2}}],["976",{"2":{"14":1}}],["963",{"2":{"20":2}}],["965",{"2":{"20":1}}],["966",{"2":{"20":1}}],["96",{"2":{"20":1}}],["964",{"2":{"20":1}}],["9602",{"2":{"20":1}}],["960",{"2":{"15":2}}],["9",{"2":{"11":1,"14":1,"16":2,"17":2,"20":44,"24":13}}],["958166",{"2":{"24":1}}],["95106e",{"2":{"24":1}}],["95633e",{"2":{"24":1}}],["956",{"2":{"20":1}}],["9534",{"2":{"20":1}}],["950",{"2":{"20":1}}],["95",{"2":{"9":1}}],["94447e",{"2":{"24":1}}],["943",{"2":{"20":1}}],["948",{"2":{"20":1}}],["942",{"2":{"20":1}}],["94",{"2":{"9":1}}],["910693",{"2":{"24":1}}],["91789e",{"2":{"24":1}}],["91939e",{"2":{"24":1}}],["91131e",{"2":{"24":1}}],["91\\tloss",{"2":{"22":1}}],["9150",{"2":{"20":1}}],["915",{"2":{"20":1}}],["912",{"2":{"17":1}}],["91",{"2":{"9":3}}],["90618+0",{"2":{"25":1}}],["9061837815460375",{"2":{"25":1,"26":1}}],["90829e",{"2":{"24":1}}],["904",{"2":{"20":1}}],["9024",{"2":{"20":1}}],["902",{"2":{"14":1}}],["90",{"2":{"3":1,"9":1}}],["∘",{"2":{"3":2}}],["∂ps",{"2":{"3":3}}],["∂x",{"2":{"3":2}}],["≈",{"2":{"3":4}}],["62282e",{"2":{"24":1}}],["6279",{"2":{"22":1}}],["6203",{"2":{"20":1}}],["6202",{"2":{"20":1}}],["620",{"2":{"17":1}}],["60289e",{"2":{"24":1}}],["6067",{"2":{"22":1}}],["608",{"2":{"20":1}}],["60118e",{"2":{"24":1}}],["60126e",{"2":{"24":1}}],["601",{"2":{"20":1}}],["603",{"2":{"20":1}}],["6161e",{"2":{"24":1}}],["618",{"2":{"22":1}}],["61\\tloss",{"2":{"22":1}}],["612",{"2":{"20":1}}],["619",{"2":{"20":1}}],["61",{"2":{"20":1}}],["65039e",{"2":{"24":1}}],["6517",{"2":{"22":1}}],["6512",{"2":{"20":1}}],["656",{"2":{"20":1}}],["657",{"2":{"20":1}}],["6571",{"2":{"20":1}}],["6542",{"2":{"20":1}}],["63747e",{"2":{"24":1}}],["63662e",{"2":{"24":1}}],["632",{"2":{"20":1}}],["63",{"2":{"20":1}}],["6409",{"2":{"22":1}}],["647565",{"2":{"24":1}}],["647",{"2":{"20":1}}],["644",{"2":{"20":1}}],["649",{"2":{"20":1}}],["648",{"2":{"17":1,"20":1}}],["64",{"2":{"16":8,"17":16,"18":3,"27":3}}],["642",{"2":{"14":1,"20":1}}],["66618e",{"2":{"24":1}}],["6642",{"2":{"22":1}}],["662",{"2":{"20":1}}],["660",{"2":{"14":1,"20":2}}],["66",{"2":{"9":1}}],["69586e",{"2":{"24":1}}],["69551e",{"2":{"24":1}}],["6983",{"2":{"22":1}}],["694",{"2":{"20":1}}],["696",{"2":{"20":1}}],["6967068",{"2":{"3":1}}],["697",{"2":{"20":1}}],["69",{"2":{"9":2,"20":2}}],["68351e",{"2":{"24":1}}],["68618e",{"2":{"24":1}}],["6854",{"2":{"22":1}}],["684",{"2":{"20":1}}],["681",{"2":{"20":1}}],["6814",{"2":{"3":1}}],["689",{"2":{"17":1}}],["68",{"2":{"9":1}}],["67019e",{"2":{"24":1}}],["674",{"2":{"20":1}}],["6711",{"2":{"20":1}}],["6789",{"2":{"20":1}}],["675",{"2":{"20":1}}],["677",{"2":{"20":2}}],["67",{"2":{"9":1}}],["6",{"2":{"3":3,"14":1,"16":4,"18":1,"20":47,"21":2,"24":16,"27":1}}],["4×81",{"2":{"24":2}}],["42",{"2":{"20":1}}],["46284e",{"2":{"24":1}}],["466864",{"2":{"24":1}}],["46661e",{"2":{"24":1}}],["4661",{"2":{"20":1}}],["468",{"2":{"20":1}}],["461",{"2":{"20":1}}],["44332e",{"2":{"24":1}}],["44449e",{"2":{"24":1}}],["4446",{"2":{"20":1}}],["4479",{"2":{"20":1}}],["446",{"2":{"20":1}}],["441",{"2":{"20":1}}],["43867e",{"2":{"24":1}}],["43009e",{"2":{"24":1}}],["433",{"2":{"20":1}}],["4365",{"2":{"20":1}}],["43",{"2":{"20":2}}],["4357",{"2":{"20":1}}],["431",{"2":{"20":1}}],["41368e",{"2":{"24":1}}],["4133",{"2":{"20":1}}],["41\\tloss",{"2":{"22":1}}],["4147",{"2":{"22":1}}],["4140",{"2":{"20":1}}],["41967",{"2":{"20":1}}],["41528",{"2":{"20":1}}],["41",{"2":{"20":1}}],["4102",{"2":{"20":1}}],["47705e",{"2":{"24":1}}],["474",{"2":{"20":1}}],["475",{"2":{"20":1}}],["4715",{"2":{"20":1}}],["4733",{"2":{"20":1}}],["4707",{"2":{"20":1}}],["470",{"2":{"20":1}}],["4708",{"2":{"11":1}}],["4700",{"2":{"11":1}}],["49168e",{"2":{"24":1}}],["49036e",{"2":{"24":1}}],["490",{"2":{"20":1}}],["49307",{"2":{"20":1}}],["4930",{"2":{"20":1}}],["4923",{"2":{"20":1}}],["492",{"2":{"20":1}}],["4986",{"2":{"20":1}}],["498",{"2":{"20":2}}],["49",{"2":{"9":1,"20":1}}],["40256e",{"2":{"24":1}}],["401\\tloss",{"2":{"22":1}}],["405",{"2":{"20":1}}],["408",{"2":{"17":1,"20":1}}],["4096",{"2":{"16":8}}],["4046",{"2":{"14":1}}],["406f0",{"2":{"10":1}}],["40",{"2":{"9":1,"22":1}}],["48618e",{"2":{"24":1}}],["48704e",{"2":{"24":1}}],["482",{"2":{"20":1}}],["4880",{"2":{"20":1}}],["488",{"2":{"20":2}}],["4848",{"2":{"20":1}}],["484",{"2":{"20":1}}],["485f0",{"2":{"10":1}}],["48",{"2":{"9":2,"20":1}}],["4509e",{"2":{"24":1}}],["45517e",{"2":{"24":1}}],["455",{"2":{"20":1}}],["456",{"2":{"17":3,"20":1}}],["456f0",{"2":{"10":1}}],["4520",{"2":{"11":1}}],["451\\tloss",{"2":{"22":1}}],["4514",{"2":{"20":1}}],["4511",{"2":{"20":1}}],["4510",{"2":{"11":1}}],["451908",{"2":{"3":1}}],["4544041",{"2":{"3":1}}],["4",{"2":{"3":8,"5":1,"8":1,"14":3,"16":8,"17":9,"18":2,"20":40,"22":10,"23":2,"24":19,"25":3,"26":7,"27":2}}],["rb",{"2":{"21":1}}],["roundingemulator",{"2":{"20":1}}],["rocm",{"2":{"13":1}}],["rmath",{"2":{"20":2}}],["runtimegeneratedfunctions",{"2":{"20":1}}],["run",{"2":{"12":2}}],["r",{"2":{"11":2,"25":9}}],["rangearrays",{"2":{"20":1}}],["randn32",{"2":{"3":3}}],["random123",{"2":{"20":1}}],["randomnumbers",{"2":{"20":1}}],["random",{"2":{"3":3,"14":1,"20":1}}],["rabinovich",{"2":{"11":1}}],["ratiosfixedpointnumbersext",{"2":{"20":1}}],["ratios",{"2":{"20":2}}],["ratio",{"2":{"3":3}}],["rate",{"2":{"3":7}}],["rng",{"2":{"3":3,"22":3,"26":2}}],["reuse",{"2":{"26":1}}],["report",{"2":{"25":1}}],["replace",{"2":{"23":1}}],["replaced",{"2":{"3":1}}],["repl",{"2":{"12":1}}],["ret",{"2":{"22":2}}],["returned",{"2":{"3":1}}],["returns",{"2":{"3":5}}],["return",{"2":{"3":3,"21":1,"22":11}}],["regression",{"0":{"23":1,"24":1},"1":{"24":1,"25":1},"2":{"22":1,"24":1}}],["registry",{"2":{"12":1}}],["registered",{"2":{"12":1}}],["reversediff",{"2":{"20":1,"22":4}}],["recursivefactorization",{"2":{"20":1}}],["recursivearraytoolsreversediffext",{"2":{"20":1}}],["recursivearraytoolstrackerext",{"2":{"20":1}}],["recursivearraytoolszygoteext",{"2":{"20":1}}],["recursivearraytoolsstructarraysext",{"2":{"20":1}}],["recursivearraytoolssparsearraysext",{"2":{"20":1}}],["recursivearraytoolsfastbroadcastext",{"2":{"20":1}}],["recursivearraytoolsforwarddiffext",{"2":{"20":1}}],["recursivearraytools",{"2":{"20":8}}],["recipesbase",{"2":{"20":1}}],["recognition",{"2":{"4":1,"11":7}}],["reduce",{"2":{"19":1}}],["rewrite",{"2":{"19":1}}],["remember",{"2":{"17":1}}],["remaining",{"2":{"5":1}}],["reed",{"2":{"11":1}}],["ren",{"2":{"11":1}}],["require",{"2":{"10":1}}],["reltol=1e",{"2":{"22":2,"26":1}}],["relocatablefolders",{"2":{"20":1}}],["release",{"2":{"18":1,"27":1}}],["released",{"2":{"12":1}}],["relies",{"2":{"3":1}}],["relu",{"2":{"3":1,"15":4,"16":24,"17":17}}],["real=0",{"2":{"3":1}}],["refer",{"2":{"3":2,"9":1}}],["reference",{"0":{"0":1,"1":1,"3":1},"1":{"2":1},"2":{"5":1}}],["res2",{"2":{"22":4}}],["res1",{"2":{"22":2}}],["reshape",{"2":{"22":1,"24":1}}],["resettablestacks",{"2":{"20":1}}],["research",{"2":{"1":1}}],["respect",{"2":{"19":1}}],["residuals",{"2":{"11":1}}],["residual",{"2":{"11":3}}],["resnet",{"2":{"2":1,"8":3,"9":5,"17":1}}],["resnext",{"2":{"2":1,"8":5,"9":3}}],["06584e",{"2":{"24":1}}],["0655939",{"2":{"24":1}}],["06611e",{"2":{"24":1}}],["06492e",{"2":{"24":1}}],["0638896",{"2":{"24":1}}],["0638734",{"2":{"24":1}}],["0636151",{"2":{"24":1}}],["0639064",{"2":{"24":1}}],["0604756",{"2":{"24":1}}],["0523995",{"2":{"24":1}}],["0575232",{"2":{"24":1}}],["05775e",{"2":{"24":1}}],["0577953",{"2":{"24":1}}],["05407",{"2":{"24":1}}],["05458e",{"2":{"24":1}}],["0559418",{"2":{"24":1}}],["05559",{"2":{"24":1}}],["0554318",{"2":{"24":1}}],["0561935",{"2":{"24":1}}],["05191e",{"2":{"24":1}}],["0518714",{"2":{"24":1}}],["0379556",{"2":{"24":30}}],["0379557",{"2":{"24":3}}],["0379558",{"2":{"24":1}}],["0379559",{"2":{"24":1}}],["0379562",{"2":{"24":1}}],["0379568",{"2":{"24":1}}],["0379581",{"2":{"24":1}}],["0379607",{"2":{"24":1}}],["0379657",{"2":{"24":1}}],["0379751",{"2":{"24":1}}],["0379922",{"2":{"24":1}}],["0380225",{"2":{"24":1}}],["0380747",{"2":{"24":1}}],["0381626",{"2":{"24":1}}],["0381916",{"2":{"24":1}}],["0383065",{"2":{"24":1}}],["0385362",{"2":{"24":1}}],["0388939",{"2":{"24":1}}],["0394374",{"2":{"24":1}}],["0392505",{"2":{"24":1}}],["0323404",{"2":{"24":1}}],["0324512",{"2":{"24":1}}],["0354001",{"2":{"24":1}}],["0369618",{"2":{"24":1}}],["0315161",{"2":{"24":1}}],["031138",{"2":{"24":1}}],["03319e",{"2":{"24":1}}],["0891399",{"2":{"24":1}}],["08736e",{"2":{"24":1}}],["08264e",{"2":{"24":1}}],["08442e",{"2":{"24":1}}],["08559e",{"2":{"24":1}}],["0886899",{"2":{"24":1}}],["08804e",{"2":{"24":1}}],["088566",{"2":{"24":1}}],["0805516",{"2":{"24":1}}],["0803507",{"2":{"24":1}}],["080",{"2":{"16":2}}],["00804687",{"2":{"24":1}}],["00806274",{"2":{"24":1}}],["00629",{"2":{"24":1}}],["00638661",{"2":{"24":1}}],["00675754",{"2":{"24":1}}],["0067e",{"2":{"24":1}}],["00455687",{"2":{"24":1}}],["0043859",{"2":{"24":1}}],["00951551",{"2":{"24":1}}],["00917577",{"2":{"24":1}}],["00976053",{"2":{"24":1}}],["00968e",{"2":{"24":1}}],["00934305",{"2":{"24":1}}],["00342205",{"2":{"24":1}}],["00302802",{"2":{"24":1}}],["00354938",{"2":{"24":1}}],["00389342",{"2":{"24":1}}],["00598116",{"2":{"24":1}}],["00520492",{"2":{"24":1}}],["0052691",{"2":{"24":1}}],["00528246",{"2":{"24":1}}],["00515532",{"2":{"24":1}}],["00734124",{"2":{"24":1}}],["00707156",{"2":{"24":1}}],["00259652",{"2":{"24":1}}],["00267028",{"2":{"24":1}}],["00239457",{"2":{"24":1}}],["0020292",{"2":{"24":1}}],["00283057",{"2":{"24":1}}],["00147185",{"2":{"24":1}}],["00143173",{"2":{"24":1}}],["001434",{"2":{"24":1}}],["00126644",{"2":{"24":1}}],["00102311",{"2":{"24":1}}],["00158211",{"2":{"24":1}}],["001",{"2":{"22":1}}],["000562454",{"2":{"24":1}}],["000560214",{"2":{"24":1}}],["000142562",{"2":{"24":1}}],["000129614",{"2":{"24":1}}],["000257027",{"2":{"24":1}}],["000230301",{"2":{"24":1}}],["000241738",{"2":{"24":1}}],["000201368",{"2":{"24":1}}],["00040018",{"2":{"24":1}}],["00046277",{"2":{"24":1}}],["00062e",{"2":{"24":1}}],["000630012",{"2":{"24":1}}],["000647175",{"2":{"24":1}}],["000685048",{"2":{"24":1}}],["00032e",{"2":{"24":1}}],["000307734",{"2":{"24":1}}],["000998613",{"2":{"24":1}}],["000",{"2":{"16":2,"17":1}}],["0148261",{"2":{"24":1}}],["0144852",{"2":{"24":1}}],["0140389",{"2":{"24":1}}],["0140561",{"2":{"24":1}}],["0134662",{"2":{"24":1}}],["0132492",{"2":{"24":1}}],["0127457",{"2":{"24":1}}],["0121862",{"2":{"24":1}}],["0107846",{"2":{"24":1}}],["0102435",{"2":{"24":1}}],["0102543",{"2":{"24":1}}],["0118575",{"2":{"24":1}}],["0115036",{"2":{"24":1}}],["0110697",{"2":{"24":1}}],["0191051",{"2":{"24":1}}],["0192489",{"2":{"24":1}}],["0199636",{"2":{"24":1}}],["0170192",{"2":{"24":1}}],["0189152",{"2":{"24":1}}],["01568",{"2":{"24":36}}],["0156799",{"2":{"24":1}}],["0156798",{"2":{"24":1}}],["0156796",{"2":{"24":1}}],["0156792",{"2":{"24":1}}],["0156785",{"2":{"24":1}}],["0156771",{"2":{"24":1}}],["0156747",{"2":{"24":1}}],["0156706",{"2":{"24":1}}],["0156636",{"2":{"24":1}}],["0156521",{"2":{"24":1}}],["0156338",{"2":{"24":1}}],["0156052",{"2":{"24":1}}],["0156948",{"2":{"24":1}}],["0155616",{"2":{"24":1}}],["0154968",{"2":{"24":1}}],["0154025",{"2":{"24":1}}],["0152682",{"2":{"24":1}}],["0150812",{"2":{"24":1}}],["0157478",{"2":{"24":1}}],["01597e",{"2":{"24":1}}],["01",{"2":{"18":1,"19":1,"22":6,"26":2,"27":1}}],["0402432",{"2":{"24":1}}],["0414097",{"2":{"24":1}}],["0413899",{"2":{"24":1}}],["0453308",{"2":{"24":1}}],["0483888",{"2":{"24":1}}],["0480198",{"2":{"24":1}}],["048652",{"2":{"24":1}}],["04861",{"2":{"11":1}}],["04617",{"2":{"24":1}}],["0462866",{"2":{"24":1}}],["0430579",{"2":{"24":1}}],["04389",{"2":{"24":1}}],["0439755",{"2":{"24":1}}],["0435037",{"2":{"24":1}}],["049624",{"2":{"24":1}}],["047",{"2":{"16":2}}],["0715713",{"2":{"24":1}}],["0717428",{"2":{"24":1}}],["07146",{"2":{"11":1}}],["0746977",{"2":{"24":1}}],["0708357",{"2":{"24":1}}],["0772e",{"2":{"24":1}}],["0772691",{"2":{"24":1}}],["07691e",{"2":{"24":1}}],["0766875",{"2":{"24":1}}],["0763",{"2":{"22":1}}],["072",{"2":{"17":1}}],["07360",{"2":{"11":1}}],["02349",{"2":{"24":1}}],["023868−x4",{"2":{"25":1}}],["02386752493998385",{"2":{"25":1,"26":1}}],["0238743",{"2":{"24":34}}],["0238744",{"2":{"24":1}}],["0238746",{"2":{"24":1}}],["0238749",{"2":{"24":1}}],["0238757",{"2":{"24":1}}],["0238772",{"2":{"24":1}}],["0238801",{"2":{"24":1}}],["0238855",{"2":{"24":1}}],["0238955",{"2":{"24":1}}],["023913",{"2":{"24":1}}],["0239434",{"2":{"24":1}}],["0239943",{"2":{"24":1}}],["0230741",{"2":{"24":1}}],["0299676",{"2":{"24":1}}],["0292",{"2":{"3":1}}],["0268413",{"2":{"24":1}}],["0268332",{"2":{"24":1}}],["0265776",{"2":{"24":1}}],["0281706",{"2":{"24":1}}],["0287949",{"2":{"24":1}}],["0285e",{"2":{"24":1}}],["02034−x1⋅x1",{"2":{"25":1}}],["020339699275241985",{"2":{"25":1,"26":1}}],["0208161",{"2":{"24":1}}],["02018e",{"2":{"24":1}}],["02064e",{"2":{"24":1}}],["02728",{"2":{"24":1}}],["0279947",{"2":{"24":1}}],["02704e",{"2":{"24":1}}],["025202",{"2":{"24":1}}],["0258805",{"2":{"24":1}}],["025084",{"2":{"24":1}}],["025",{"2":{"17":5}}],["0240778",{"2":{"24":1}}],["024211",{"2":{"24":1}}],["0244185",{"2":{"24":1}}],["0247339",{"2":{"24":1}}],["0249974",{"2":{"24":1}}],["024",{"2":{"17":5}}],["02",{"2":{"9":1,"18":1,"27":1}}],["0906964",{"2":{"24":1}}],["0985211",{"2":{"24":1}}],["0918026",{"2":{"24":1}}],["0999407",{"2":{"24":1}}],["09965e",{"2":{"24":1}}],["0977562",{"2":{"24":1}}],["0971689",{"2":{"24":1}}],["09753e",{"2":{"24":1}}],["097",{"2":{"16":2}}],["09792",{"2":{"11":1}}],["09",{"2":{"9":2}}],["0f0",{"2":{"3":12}}],["0",{"2":{"3":28,"10":6,"11":1,"14":1,"15":2,"16":4,"18":3,"19":2,"20":34,"22":42,"24":576,"25":13,"26":24,"27":3}}],["5d",{"2":{"22":2}}],["52242e",{"2":{"24":1}}],["524",{"2":{"20":2}}],["5247",{"2":{"20":1}}],["528",{"2":{"20":1}}],["59127e",{"2":{"24":1}}],["5965",{"2":{"22":1}}],["5994",{"2":{"20":1}}],["590",{"2":{"16":2}}],["56012e",{"2":{"24":1}}],["568",{"2":{"20":1}}],["5618",{"2":{"22":1}}],["561",{"2":{"20":1}}],["5675",{"2":{"20":1}}],["5693",{"2":{"22":1}}],["569",{"2":{"20":2}}],["562",{"2":{"20":1}}],["53814e",{"2":{"24":1}}],["53",{"2":{"20":1}}],["5338",{"2":{"20":1}}],["530",{"2":{"15":2}}],["5e9a32e7af2",{"2":{"18":1,"27":1}}],["58656e",{"2":{"24":1}}],["58",{"2":{"20":1}}],["588",{"2":{"20":1}}],["5884",{"2":{"20":1}}],["5821−x3⋅",{"2":{"25":1}}],["5820546813953016",{"2":{"25":1,"26":1}}],["5826",{"2":{"22":1}}],["582",{"2":{"20":1}}],["5822",{"2":{"20":1}}],["580",{"2":{"20":1}}],["581",{"2":{"20":1}}],["589",{"2":{"17":3}}],["584846",{"2":{"24":1}}],["584",{"2":{"16":2}}],["51468e",{"2":{"24":1}}],["51\\tloss",{"2":{"22":3}}],["517749",{"2":{"24":1}}],["517",{"2":{"20":1}}],["51",{"2":{"20":1}}],["519",{"2":{"20":1}}],["513",{"2":{"17":6}}],["512",{"2":{"16":14,"17":20}}],["5771e",{"2":{"24":1}}],["57",{"2":{"20":1}}],["57018e",{"2":{"24":1}}],["570",{"2":{"15":2}}],["5799",{"2":{"14":1}}],["5mb",{"2":{"11":1}}],["50923e",{"2":{"24":1}}],["5015",{"2":{"20":1}}],["506",{"2":{"20":1}}],["50391e",{"2":{"24":1}}],["5031",{"2":{"14":1}}],["503",{"2":{"14":1,"20":2}}],["50x",{"2":{"11":1}}],["50",{"2":{"8":3,"9":3,"22":1}}],["557",{"2":{"20":1}}],["5574",{"2":{"20":1}}],["553",{"2":{"20":1}}],["558",{"2":{"20":1}}],["556",{"2":{"20":1}}],["550",{"2":{"14":1}}],["55",{"2":{"3":1}}],["54721e",{"2":{"24":1}}],["541",{"2":{"20":1}}],["546",{"2":{"20":1}}],["545",{"2":{"20":1}}],["54413e",{"2":{"24":1}}],["544",{"2":{"16":2}}],["54",{"2":{"3":1,"9":1}}],["5",{"2":{"3":8,"9":1,"14":4,"16":8,"17":9,"20":47,"24":24,"26":4}}],["2=lux",{"2":{"26":1}}],["2892e",{"2":{"24":1}}],["2895",{"2":{"20":1}}],["28",{"2":{"22":1,"24":4}}],["2828",{"2":{"20":1}}],["28183",{"2":{"25":1}}],["28182516657243606",{"2":{"25":1,"26":1}}],["2812",{"2":{"20":1}}],["2817",{"2":{"20":1}}],["26",{"2":{"22":1,"24":4}}],["2622",{"2":{"20":1}}],["2642",{"2":{"20":1}}],["2649",{"2":{"20":1}}],["2669",{"2":{"20":1}}],["2602",{"2":{"20":1}}],["26052",{"2":{"20":1}}],["26594",{"2":{"20":1}}],["2687",{"2":{"20":1}}],["234934",{"2":{"24":1}}],["2347e",{"2":{"24":1}}],["2359",{"2":{"20":1}}],["23529e",{"2":{"24":1}}],["2352",{"2":{"20":1}}],["2361",{"2":{"20":1}}],["2383",{"2":{"20":1}}],["2382",{"2":{"20":1}}],["2316",{"2":{"20":1}}],["23",{"2":{"20":1,"22":2,"24":4}}],["21007e",{"2":{"24":1}}],["21\\tloss",{"2":{"22":1}}],["217185",{"2":{"24":1}}],["217",{"2":{"22":1}}],["2178",{"2":{"20":1}}],["2139",{"2":{"20":1}}],["2137",{"2":{"20":1}}],["2122",{"2":{"20":1}}],["21",{"2":{"20":1,"24":4}}],["2117",{"2":{"20":1}}],["2162",{"2":{"20":1}}],["2199",{"2":{"20":1}}],["29198e",{"2":{"24":1}}],["2914",{"2":{"22":1}}],["29322",{"2":{"20":1}}],["2902",{"2":{"20":1}}],["29",{"2":{"20":2,"22":1,"24":3}}],["2923",{"2":{"20":1}}],["2961",{"2":{"20":1}}],["296",{"2":{"17":3}}],["29488e",{"2":{"24":1}}],["294",{"2":{"17":1}}],["2951",{"2":{"20":1}}],["295",{"2":{"16":2}}],["2535e",{"2":{"24":1}}],["251\\tloss",{"2":{"22":1}}],["2559",{"2":{"22":1}}],["2504",{"2":{"20":1}}],["25088",{"2":{"16":2}}],["25774",{"2":{"20":1}}],["257",{"2":{"17":5}}],["25676",{"2":{"20":1}}],["256",{"2":{"15":7,"16":8,"17":20}}],["25",{"2":{"11":1,"22":1,"24":4}}],["226072",{"2":{"24":1}}],["22521e",{"2":{"24":1}}],["225f0",{"2":{"10":1}}],["2241−0",{"2":{"25":1}}],["2240536188165",{"2":{"25":1,"26":1}}],["22431e",{"2":{"24":1}}],["224f0",{"2":{"10":1}}],["223676",{"2":{"24":1}}],["22992",{"2":{"20":1}}],["229f0",{"2":{"10":1}}],["2217",{"2":{"20":1}}],["2213",{"2":{"20":1}}],["22739",{"2":{"20":1}}],["22740",{"2":{"20":1}}],["22m\\u001b",{"2":{"20":1}}],["2206",{"2":{"20":1}}],["220020",{"2":{"20":1}}],["2201",{"2":{"11":1}}],["22",{"2":{"20":2,"22":2,"24":4}}],["27175",{"2":{"20":1}}],["27835",{"2":{"20":1}}],["2709",{"2":{"20":2}}],["27769",{"2":{"20":1}}],["27",{"2":{"9":1,"20":1,"22":1,"24":4}}],["24592e",{"2":{"24":1}}],["24349e",{"2":{"24":1}}],["2401",{"2":{"22":1}}],["24678e",{"2":{"24":1}}],["2467",{"2":{"20":1}}],["2462",{"2":{"20":1}}],["24",{"2":{"9":1,"14":1,"22":1,"24":3}}],["2n",{"2":{"3":1}}],["208e",{"2":{"24":1}}],["2083",{"2":{"20":1}}],["20545e",{"2":{"24":1}}],["2051",{"2":{"20":1}}],["2056",{"2":{"20":1}}],["20955",{"2":{"20":1}}],["2049",{"2":{"20":1}}],["20",{"2":{"18":1,"24":5,"27":1}}],["2034e",{"2":{"24":1}}],["203",{"2":{"15":2}}],["2002",{"2":{"20":1}}],["2008",{"2":{"20":1}}],["200",{"2":{"15":2}}],["20247e",{"2":{"24":1}}],["20247",{"2":{"20":1}}],["2024",{"2":{"18":1,"27":1}}],["2022e",{"2":{"24":1}}],["2022",{"2":{"8":1,"11":1}}],["2020",{"2":{"3":1,"4":1}}],["201\\tloss",{"2":{"22":1}}],["2016",{"2":{"8":2,"11":2}}],["2018",{"2":{"8":1,"11":1}}],["2015",{"2":{"8":1,"11":1}}],["201",{"2":{"8":1,"20":1}}],["2017",{"2":{"8":4,"11":4}}],["2014",{"2":{"7":2,"11":1}}],["2012",{"2":{"7":1,"11":1}}],["2010",{"2":{"4":1}}],["2019",{"2":{"3":1,"4":1,"8":1,"11":1}}],["206482",{"2":{"3":1}}],["2×3",{"2":{"3":1}}],["2",{"2":{"3":32,"5":3,"15":3,"16":30,"17":30,"18":1,"20":71,"21":2,"22":9,"24":27,"25":3,"26":5,"27":1}}],["2x",{"2":{"0":2}}],["3=trained",{"2":{"26":1}}],["33",{"2":{"24":1}}],["33965e",{"2":{"24":1}}],["33809e",{"2":{"24":1}}],["3384",{"2":{"20":1}}],["3328",{"2":{"20":1}}],["385835",{"2":{"24":1}}],["38773e",{"2":{"24":1}}],["38434e",{"2":{"24":1}}],["382",{"2":{"20":1}}],["3816",{"2":{"20":1}}],["3830",{"2":{"20":1}}],["38392",{"2":{"20":1}}],["3839",{"2":{"20":1}}],["3836",{"2":{"20":1}}],["30605e",{"2":{"24":1}}],["30",{"2":{"24":2}}],["301\\tloss",{"2":{"22":1}}],["303",{"2":{"20":1}}],["3038",{"2":{"20":1}}],["3052",{"2":{"20":1}}],["3024",{"2":{"20":1}}],["3795",{"2":{"25":1}}],["3794565531533123",{"2":{"25":1,"26":1}}],["3706",{"2":{"20":1}}],["3729",{"2":{"20":1}}],["372",{"2":{"20":1}}],["378",{"2":{"20":1}}],["37719",{"2":{"24":1}}],["3777",{"2":{"20":1}}],["377",{"2":{"20":1}}],["37548",{"2":{"20":1}}],["36587",{"2":{"25":1}}],["36587023826177456",{"2":{"25":1,"26":1}}],["36761e",{"2":{"24":1}}],["361",{"2":{"20":1}}],["3688",{"2":{"20":1}}],["3649",{"2":{"20":1}}],["3642",{"2":{"20":1}}],["362",{"2":{"20":1}}],["36",{"2":{"16":2,"17":4}}],["35669e",{"2":{"24":1}}],["3561",{"2":{"20":1}}],["35541e",{"2":{"24":1}}],["351\\tloss",{"2":{"22":1}}],["35171",{"2":{"20":1}}],["3522",{"2":{"20":1}}],["3595",{"2":{"20":1}}],["359",{"2":{"16":6,"17":3}}],["35",{"2":{"9":1}}],["34866",{"2":{"25":1}}],["34865973516490406",{"2":{"25":1,"26":1}}],["3482",{"2":{"20":1}}],["34532e",{"2":{"24":1}}],["3478",{"2":{"20":1}}],["3496",{"2":{"20":1}}],["349",{"2":{"20":1}}],["3469",{"2":{"20":1}}],["34",{"2":{"8":2,"9":1,"24":1}}],["3219−x2",{"2":{"25":1}}],["3219022349598657",{"2":{"25":1,"26":1}}],["3248−x1⋅",{"2":{"25":1}}],["3248108542721566",{"2":{"25":1,"26":1}}],["3249",{"2":{"20":1}}],["320806",{"2":{"24":1}}],["3208",{"2":{"20":1}}],["320",{"2":{"20":1}}],["32m\\u001b",{"2":{"20":1}}],["3293",{"2":{"20":1}}],["3269",{"2":{"20":1}}],["3263",{"2":{"20":1}}],["32669",{"2":{"3":1}}],["32",{"2":{"4":1,"8":1,"9":1,"17":1,"24":1,"26":1}}],["31538e",{"2":{"24":1}}],["31\\tloss",{"2":{"22":1}}],["3133",{"2":{"20":1}}],["3188",{"2":{"20":1}}],["3167",{"2":{"20":1}}],["312",{"2":{"16":2}}],["31",{"2":{"3":1,"20":1,"24":1}}],["3",{"2":{"3":14,"5":1,"14":5,"16":46,"17":46,"20":54,"24":22,"25":3,"26":4}}],["39349e",{"2":{"24":1}}],["39956e",{"2":{"24":1}}],["3900",{"2":{"20":1}}],["397",{"2":{"20":1}}],["39226e",{"2":{"24":1}}],["3922",{"2":{"20":1}}],["3950",{"2":{"20":1}}],["39m",{"2":{"20":1}}],["39",{"2":{"3":3,"5":2,"14":1,"16":1,"20":1,"22":2,"23":1,"25":1,"26":1}}],["+",{"2":{"3":4,"22":4,"25":11,"26":18}}],["gt",{"2":{"23":1}}],["glbg3",{"2":{"22":2}}],["glib",{"2":{"20":1}}],["gc",{"2":{"18":1,"27":1}}],["gnu",{"2":{"18":1,"27":1}}],["going",{"2":{"11":1,"22":1}}],["googlenet",{"2":{"2":1,"8":2}}],["giflib",{"2":{"20":1}}],["github",{"2":{"12":2}}],["girshick",{"2":{"11":1}}],["gigantic",{"2":{"7":1}}],["giant",{"2":{"7":1}}],["given",{"2":{"3":2,"15":1}}],["gelu",{"2":{"22":2,"23":1,"26":2}}],["gelly",{"2":{"4":1}}],["generic",{"2":{"21":1}}],["generate",{"2":{"24":2}}],["generated",{"2":{"18":1,"27":1}}],["generation",{"0":{"24":1}}],["general",{"2":{"12":1}}],["geometrybasics",{"2":{"20":1}}],["geointerface",{"2":{"20":1}}],["geoformattypes",{"2":{"20":1}}],["gettext",{"2":{"20":1}}],["getting",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1}}],["get",{"2":{"3":1}}],["g",{"2":{"4":1,"11":4}}],["gpucompiler",{"2":{"20":1}}],["gpuarrayscore",{"2":{"14":1}}],["gpus",{"2":{"13":1}}],["gpusintel",{"2":{"13":1}}],["gpusmetal",{"2":{"13":1}}],["gpusamd",{"2":{"13":1}}],["gpu",{"0":{"13":1},"2":{"3":1}}],["graphics",{"2":{"20":1}}],["graphite2",{"2":{"20":1}}],["gradients",{"2":{"3":1}}],["gradient",{"2":{"3":1}}],["grad",{"2":{"3":1}}],["grisu",{"2":{"20":1}}],["gridlayoutbase",{"2":{"20":1}}],["grid",{"2":{"3":15}}],["greydanus",{"2":{"3":1,"4":1}}],["up",{"2":{"22":1}}],["updated",{"2":{"3":1,"25":1}}],["u₂",{"2":{"22":2}}],["u₁",{"2":{"22":1}}],["ude",{"0":{"22":1},"2":{"22":25,"24":4,"26":6}}],["u",{"2":{"19":2,"21":3,"22":5}}],["utc",{"2":{"18":1,"27":1}}],["utils",{"2":{"5":4}}],["url=",{"2":{"12":1}}],["unpack",{"2":{"20":1}}],["unreleased",{"2":{"12":1}}],["unterthiner",{"2":{"4":1}}],["unicodefun",{"2":{"20":1}}],["universal",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1}}],["unitful",{"2":{"20":3}}],["unityper",{"2":{"20":1}}],["unit",{"2":{"3":1}}],["union",{"2":{"3":1}}],["unchanged",{"2":{"3":2}}],["unary",{"2":{"3":1}}],["us",{"2":{"21":2,"22":11,"26":2}}],["users",{"2":{"3":1}}],["uses",{"2":{"3":1}}],["useful",{"2":{"3":1}}],["use",{"2":{"3":10,"5":2,"7":2,"12":1,"17":20}}],["used",{"2":{"0":1,"3":5}}],["using",{"2":{"1":1,"3":1,"8":1,"12":2,"16":1,"18":1,"19":1,"20":2,"22":2,"25":1,"26":1,"27":1}}],["v",{"2":{"11":2}}],["variable",{"2":{"25":1}}],["vanhoucke",{"2":{"11":1}}],["van",{"2":{"11":1}}],["vasudevan",{"2":{"11":1}}],["val",{"2":{"3":1,"5":2,"22":5,"26":9}}],["values",{"2":{"3":1}}],["value",{"2":{"3":3}}],["v3",{"2":{"8":2}}],["v2",{"2":{"8":1}}],["v1",{"2":{"8":1}}],["vec",{"2":{"21":1}}],["vectorizationbase",{"2":{"20":1}}],["vector",{"2":{"3":3,"25":2}}],["verbosity=0",{"2":{"25":1}}],["vern9",{"2":{"22":2,"26":1}}],["very",{"2":{"11":1,"26":1}}],["versioninfo",{"2":{"18":3,"27":3}}],["version",{"2":{"5":1,"12":3,"18":1,"27":1}}],["vggclassifier",{"2":{"16":2}}],["vggfeatureextractor",{"2":{"16":2}}],["vgg",{"0":{"16":1},"2":{"2":1,"7":4,"9":8,"16":5}}],["virtual",{"2":{"18":1,"27":1}}],["vit",{"2":{"3":1}}],["visiontransformer",{"2":{"2":1,"7":1}}],["visiontransformerencoder",{"2":{"2":1,"3":1}}],["vision",{"0":{"6":2},"1":{"7":2,"8":2,"9":2,"10":2},"2":{"2":11,"3":2,"7":5,"8":8,"11":7,"16":2,"17":1}}],["viposembedding",{"2":{"2":1,"3":1}}],["hybrid",{"2":{"26":4}}],["hypergeometricfunctions",{"2":{"20":1}}],["httpext",{"2":{"20":2}}],["http",{"2":{"20":1}}],["https",{"2":{"12":1,"18":1,"27":1}}],["hostcpufeatures",{"2":{"20":1}}],["how",{"0":{"12":1,"16":1},"2":{"25":2,"26":1}}],["howard",{"2":{"8":2,"11":3}}],["however",{"2":{"0":1}}],["hinton",{"2":{"11":1}}],["hidden",{"2":{"3":6}}],["huang",{"2":{"8":1,"11":1}}],["huge",{"2":{"7":1}}],["harfbuzz",{"2":{"20":1}}],["hardcoded",{"2":{"25":1}}],["hard",{"2":{"18":1,"27":1}}],["had",{"2":{"20":1}}],["han",{"2":{"11":1}}],["have",{"2":{"3":1,"22":2,"23":1,"26":2}}],["hamiltonian",{"2":{"3":3,"4":1}}],["hamiltoniannn",{"2":{"2":1,"3":1}}],["here",{"2":{"14":1,"19":2,"22":1,"25":1}}],["he",{"2":{"8":1,"11":2}}],["height",{"2":{"7":1}}],["heigold",{"2":{"4":1}}],["head",{"2":{"3":1}}],["heads",{"2":{"3":5}}],["helper",{"0":{"21":1}}],["help",{"2":{"3":1}}],["might",{"2":{"22":2}}],["minimized",{"2":{"19":1}}],["minimum",{"2":{"3":1,"19":1}}],["minderer",{"2":{"4":1}}],["min",{"2":{"3":3}}],["mbedtls",{"2":{"20":1}}],["mkl",{"2":{"20":2}}],["ms",{"2":{"14":20,"20":414}}],["method",{"2":{"21":1}}],["metal",{"2":{"13":1}}],["metalheadwrapperlayer",{"2":{"17":1}}],["metalhead",{"0":{"8":1,"17":1},"2":{"8":2,"9":4,"17":3}}],["measured",{"2":{"19":1}}],["mean",{"2":{"5":3,"10":1,"22":6}}],["means",{"2":{"3":2,"5":1}}],["memory",{"2":{"18":1,"27":1}}],["m",{"2":{"4":3,"11":5,"13":1,"22":4}}],["mutablearithmetics",{"2":{"20":1}}],["muladdmacro",{"2":{"20":1}}],["multitargetsrregressor",{"2":{"25":1}}],["multivariatepolynomials",{"2":{"20":1}}],["multiples",{"2":{"3":1}}],["multi",{"0":{"15":1},"2":{"3":2,"15":1}}],["multiheadselfattention",{"2":{"2":1,"3":1}}],["must",{"2":{"3":8,"8":6}}],["mach",{"2":{"25":2}}],["machine",{"2":{"25":1}}],["makie",{"2":{"20":1}}],["makiecore",{"2":{"20":1}}],["mathtexengine",{"2":{"20":1}}],["matrix",{"2":{"3":2,"24":2}}],["mappedarrays",{"2":{"20":1}}],["maaten",{"2":{"11":1}}],["maxiters=100",{"2":{"22":2}}],["maxiters=500",{"2":{"22":1}}],["maximum",{"2":{"3":1}}],["maxpool",{"2":{"16":10,"17":1}}],["max",{"2":{"3":3}}],["manual",{"2":{"3":1}}],["many",{"2":{"3":2}}],["mode`",{"2":{"22":2}}],["model",{"2":{"3":6,"7":6,"8":16,"9":2,"11":1,"14":1,"16":15,"22":5,"26":2}}],["models",{"0":{"6":1,"7":1,"9":1,"17":1},"1":{"7":1,"8":1,"9":1,"10":2},"2":{"0":1,"1":1,"3":2,"7":1,"8":1,"9":3,"10":1,"17":1}}],["module",{"2":{"16":1}}],["mosaicviews",{"2":{"20":1}}],["moskewicz",{"2":{"11":1}}],["most",{"2":{"3":1,"12":1}}],["mobile",{"2":{"11":1}}],["mobilenetv2",{"2":{"11":1}}],["mobilenetv3",{"2":{"11":1}}],["mobilenets",{"2":{"11":1}}],["mobilenet",{"2":{"2":1,"8":3}}],["moved",{"2":{"3":1}}],["more",{"2":{"3":3,"14":1}}],["momentum",{"2":{"3":2}}],["mlflowclient",{"2":{"20":1}}],["mljflow",{"2":{"20":1}}],["mljiteration",{"2":{"20":1}}],["mljtuning",{"2":{"20":1}}],["mljbalancing",{"2":{"20":1}}],["mljbase",{"2":{"20":2}}],["mljmodels",{"2":{"20":1}}],["mljmodelinterface",{"2":{"20":1}}],["mljensembles",{"2":{"20":1}}],["mlj",{"2":{"20":3,"25":1}}],["mldatadevicesmlutilsext",{"2":{"20":2}}],["mldatadevicesreversediffext",{"2":{"20":2}}],["mldatadevicesrecursivearraytoolsext",{"2":{"20":2}}],["mldatadevicestrackerext",{"2":{"20":2}}],["mldatadeviceschainrulescoreext",{"2":{"14":1}}],["mldatadevices",{"2":{"14":2,"18":3,"20":4,"27":3}}],["mlutils",{"2":{"5":1,"20":1}}],["mlp=",{"2":{"26":1}}],["mlp",{"2":{"2":1,"3":5,"14":1,"15":3,"22":9,"24":6,"26":5}}],["ml",{"2":{"1":1}}],["⚡",{"2":{"1":1}}],["1=trained",{"2":{"26":1}}],["1\\tloss",{"2":{"22":3}}],["1m",{"2":{"20":1}}],["17604e",{"2":{"24":1}}],["17",{"2":{"20":1,"24":5}}],["1771",{"2":{"20":1}}],["1738",{"2":{"20":1}}],["17314",{"2":{"20":1}}],["17587",{"2":{"20":1}}],["178",{"2":{"20":1}}],["1740",{"2":{"20":1}}],["1716",{"2":{"20":1}}],["1719",{"2":{"20":1}}],["1792",{"2":{"20":1}}],["179",{"2":{"17":1}}],["1704",{"2":{"11":1}}],["159372",{"2":{"24":1}}],["15878",{"2":{"24":1}}],["1582",{"2":{"20":1}}],["15",{"2":{"24":5}}],["151\\tloss",{"2":{"22":1}}],["150608",{"2":{"24":1}}],["1503",{"2":{"20":1}}],["1500",{"2":{"11":1}}],["15607",{"2":{"20":1}}],["1564",{"2":{"14":1}}],["153233",{"2":{"24":1}}],["1530",{"2":{"20":1}}],["1539",{"2":{"20":1}}],["153",{"2":{"20":2}}],["1534",{"2":{"20":1}}],["1546",{"2":{"20":1}}],["1542",{"2":{"20":1}}],["15448",{"2":{"20":1}}],["155",{"2":{"20":1}}],["1550",{"2":{"14":1,"20":1}}],["1555",{"2":{"14":1}}],["1554",{"2":{"14":1}}],["15567",{"2":{"20":1}}],["1556",{"2":{"11":1}}],["152741",{"2":{"24":1}}],["152",{"2":{"8":3,"9":1}}],["18804e",{"2":{"24":1}}],["1883",{"2":{"20":1}}],["1823e",{"2":{"24":1}}],["1891",{"2":{"20":1}}],["18619",{"2":{"20":1}}],["18377",{"2":{"20":1}}],["1819",{"2":{"20":1}}],["18",{"2":{"8":2,"9":1,"17":1,"20":2,"24":4}}],["1809e",{"2":{"24":1}}],["1802",{"2":{"20":1}}],["180",{"2":{"3":1,"16":2}}],["1959",{"2":{"20":1}}],["1936",{"2":{"20":1}}],["1944",{"2":{"20":1}}],["1942",{"2":{"20":1}}],["1915",{"2":{"20":1}}],["19083e",{"2":{"24":1}}],["1908",{"2":{"20":1}}],["1927",{"2":{"20":1}}],["1925",{"2":{"20":1}}],["192",{"2":{"17":1}}],["19",{"2":{"7":1,"9":2,"14":1,"20":1,"24":4}}],["167615",{"2":{"24":1}}],["167978",{"2":{"24":1}}],["167342",{"2":{"24":1}}],["164965",{"2":{"24":1}}],["16266",{"2":{"24":1}}],["1628",{"2":{"20":1}}],["165206",{"2":{"24":1}}],["1657",{"2":{"22":1}}],["163642",{"2":{"24":1}}],["1631",{"2":{"22":1}}],["1633",{"2":{"20":1}}],["166271",{"2":{"24":1}}],["1664",{"2":{"20":1}}],["1660",{"2":{"20":1}}],["16817",{"2":{"24":1}}],["1683",{"2":{"20":1}}],["1685",{"2":{"20":1}}],["168",{"2":{"16":2}}],["160",{"2":{"16":2}}],["1605",{"2":{"11":1}}],["1602",{"2":{"11":1}}],["169916",{"2":{"24":1}}],["1695",{"2":{"20":1}}],["169",{"2":{"8":1}}],["1613",{"2":{"24":1}}],["16124",{"2":{"20":1}}],["1616",{"2":{"20":1}}],["161",{"2":{"8":1}}],["16",{"2":{"7":1,"9":2,"16":2,"18":1,"24":6,"27":1}}],["16x16",{"2":{"4":1}}],["13202e",{"2":{"24":1}}],["1324",{"2":{"11":1}}],["135568",{"2":{"24":1}}],["135",{"2":{"20":1}}],["1351",{"2":{"20":2}}],["1381",{"2":{"20":1}}],["136649",{"2":{"24":1}}],["1361",{"2":{"20":1}}],["1368",{"2":{"20":1}}],["134",{"2":{"20":1}}],["1348",{"2":{"20":1}}],["1347",{"2":{"20":2}}],["13013",{"2":{"20":1}}],["130",{"2":{"20":3}}],["1308",{"2":{"20":1}}],["13949e",{"2":{"24":1}}],["13964",{"2":{"20":1}}],["1398",{"2":{"20":1}}],["137308",{"2":{"24":1}}],["1372",{"2":{"20":1}}],["1371",{"2":{"20":2}}],["1374",{"2":{"20":1}}],["131326",{"2":{"24":1}}],["1319",{"2":{"20":1}}],["1315",{"2":{"20":1}}],["131",{"2":{"17":1}}],["1314",{"2":{"11":1,"20":1}}],["1337",{"2":{"20":1}}],["13321−",{"2":{"25":1}}],["13321428243861314",{"2":{"25":1,"26":1}}],["1332",{"2":{"20":1}}],["133",{"2":{"16":2}}],["13",{"2":{"7":1,"9":2,"16":2,"24":6}}],["11\\tloss",{"2":{"22":1}}],["11778",{"2":{"25":1}}],["11777767977748137",{"2":{"25":1,"26":1}}],["1176",{"2":{"20":1}}],["1175",{"2":{"20":1}}],["118746",{"2":{"24":1}}],["1181",{"2":{"20":1}}],["11862",{"2":{"20":1}}],["1157",{"2":{"20":1}}],["1115",{"2":{"20":1}}],["1119",{"2":{"20":1}}],["11188",{"2":{"20":1}}],["116028",{"2":{"24":1}}],["116",{"2":{"20":1}}],["1163",{"2":{"20":1}}],["113252",{"2":{"24":1}}],["1139",{"2":{"20":1}}],["113",{"2":{"20":1}}],["113737",{"2":{"24":1}}],["1137",{"2":{"20":1}}],["114347",{"2":{"24":1}}],["1147",{"2":{"20":1}}],["114",{"2":{"20":1}}],["11452",{"2":{"20":1}}],["1126",{"2":{"20":1}}],["1123",{"2":{"20":1}}],["112",{"2":{"20":2}}],["112935",{"2":{"24":1}}],["112936",{"2":{"24":1}}],["11298",{"2":{"20":1}}],["1129",{"2":{"14":1}}],["1108",{"2":{"20":2}}],["110",{"2":{"20":1}}],["1101",{"2":{"20":2}}],["11933e",{"2":{"24":1}}],["1198",{"2":{"20":1}}],["1192",{"2":{"20":1}}],["11929",{"2":{"4":1}}],["1196",{"2":{"20":1}}],["11",{"2":{"7":1,"9":3,"17":1,"18":1,"20":1,"22":1,"24":6,"27":1}}],["106037",{"2":{"24":1}}],["1067",{"2":{"20":1}}],["10942e",{"2":{"24":1}}],["10g",{"2":{"22":2}}],["105816",{"2":{"24":1}}],["1056",{"2":{"20":1}}],["1052",{"2":{"20":1}}],["107066",{"2":{"24":1}}],["1070",{"2":{"20":1}}],["1071",{"2":{"20":1}}],["1081",{"2":{"20":1}}],["10815",{"2":{"20":1}}],["1080",{"2":{"20":1}}],["1082",{"2":{"20":1}}],["1087",{"2":{"20":2}}],["108",{"2":{"20":1}}],["10436e",{"2":{"24":1}}],["1043",{"2":{"20":1}}],["10440",{"2":{"20":1}}],["10479",{"2":{"20":1}}],["1045",{"2":{"20":1}}],["10429",{"2":{"20":1}}],["1046",{"2":{"14":1}}],["10x",{"2":{"19":1}}],["10099e",{"2":{"24":1}}],["1003",{"2":{"20":1}}],["1004",{"2":{"20":1}}],["100",{"2":{"18":1,"27":1}}],["1000",{"2":{"16":2,"17":1}}],["1020",{"2":{"20":1}}],["1027",{"2":{"20":1}}],["102",{"2":{"16":2}}],["10373e",{"2":{"24":1}}],["10331e",{"2":{"24":1}}],["1030",{"2":{"20":1}}],["103",{"2":{"14":1}}],["101734",{"2":{"24":1}}],["10178",{"2":{"20":1}}],["101\\tloss",{"2":{"22":1}}],["1019",{"2":{"20":1}}],["1013",{"2":{"20":1}}],["101013",{"2":{"24":1}}],["1010",{"2":{"20":1}}],["101",{"2":{"8":4,"9":4}}],["10",{"2":{"3":1,"15":4,"16":2,"20":1,"22":7,"24":7,"26":2}}],["145218",{"2":{"24":1}}],["143157",{"2":{"20":1}}],["1438",{"2":{"20":1}}],["1499",{"2":{"20":1}}],["1490",{"2":{"20":1}}],["1492",{"2":{"11":1}}],["142434",{"2":{"24":1}}],["142",{"2":{"20":1}}],["1423",{"2":{"20":2}}],["1460",{"2":{"20":1}}],["1461",{"2":{"20":1}}],["144489",{"2":{"24":1}}],["1443",{"2":{"20":1}}],["144",{"2":{"20":1}}],["1440",{"2":{"20":1}}],["14192",{"2":{"20":1}}],["1401",{"2":{"20":1}}],["140",{"2":{"20":1}}],["1406",{"2":{"20":1}}],["1409",{"2":{"11":1}}],["1488",{"2":{"20":1}}],["1478",{"2":{"20":1}}],["147",{"2":{"16":2,"17":3}}],["14",{"2":{"3":1,"20":1,"24":6}}],["123",{"2":{"20":1}}],["1230",{"2":{"20":1}}],["1275",{"2":{"20":2}}],["12737",{"2":{"20":1}}],["12655e",{"2":{"24":1}}],["126364",{"2":{"24":1}}],["126",{"2":{"20":1}}],["120989",{"2":{"24":1}}],["1202",{"2":{"20":1}}],["120",{"2":{"20":1}}],["125013",{"2":{"24":1}}],["12562e",{"2":{"24":1}}],["12511e",{"2":{"24":1}}],["1251",{"2":{"20":1}}],["125",{"2":{"20":2}}],["124725",{"2":{"24":1}}],["124619",{"2":{"24":1}}],["124",{"2":{"20":2}}],["1291",{"2":{"20":1}}],["129",{"2":{"17":5,"20":2}}],["1283",{"2":{"20":1}}],["1284",{"2":{"20":1}}],["1289",{"2":{"20":1}}],["128",{"2":{"16":8,"17":20,"20":1}}],["122896",{"2":{"24":1}}],["122485",{"2":{"24":1}}],["1223",{"2":{"20":1}}],["122",{"2":{"14":1}}],["1212",{"2":{"20":1}}],["121",{"2":{"8":1}}],["12",{"2":{"3":1,"18":1,"20":2,"22":10,"24":7,"27":1}}],["1",{"2":{"0":1,"3":28,"5":1,"9":1,"11":1,"14":5,"15":1,"16":8,"17":46,"18":4,"20":135,"21":5,"22":16,"24":58,"25":10,"26":14,"27":4}}],["pngfiles",{"2":{"20":1}}],["pn−1",{"2":{"0":1}}],["pixman",{"2":{"20":1}}],["ptrarrays",{"2":{"20":1}}],["pdmats",{"2":{"20":1}}],["pysr",{"2":{"19":1}}],["pkgversion",{"2":{"20":1}}],["pkg",{"2":{"12":4,"13":9,"18":1,"27":1}}],["p",{"2":{"11":2,"22":4}}],["pp",{"2":{"11":6}}],["phase",{"2":{"3":1}}],["printf",{"2":{"20":1,"22":2}}],["println",{"2":{"18":2,"27":2}}],["private",{"0":{"5":1},"2":{"5":1}}],["progressmeter",{"2":{"20":1}}],["processor",{"2":{"18":1,"27":1}}],["processing",{"2":{"4":1,"11":1}}],["proceedings",{"2":{"11":6}}],["product",{"2":{"3":2}}],["proj",{"2":{"3":1}}],["projection",{"2":{"3":2}}],["problem",{"2":{"19":1,"22":3,"23":1,"26":1}}],["problems",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1}}],["probability",{"2":{"3":2}}],["prob",{"2":{"3":2,"22":2}}],["prettytables",{"2":{"20":1}}],["prettyprinting",{"2":{"20":1}}],["pretrained=true",{"2":{"9":1,"16":1}}],["pretrained=false",{"2":{"7":1}}],["pretrained",{"0":{"9":1},"1":{"10":1},"2":{"7":7,"8":24,"9":6,"10":1,"16":2}}],["preallocationtoolsreversediffext",{"2":{"20":1}}],["preallocationtools",{"2":{"20":2}}],["precompilation",{"2":{"20":1}}],["precompile",{"2":{"18":1,"27":1}}],["precompiled",{"2":{"14":4,"20":142}}],["precompiling",{"2":{"14":2,"20":71}}],["prerequisites",{"2":{"14":1}}],["preprocessing",{"0":{"10":1}}],["preprint",{"2":{"4":1,"11":3}}],["preserves",{"2":{"3":1}}],["present",{"2":{"3":1}}],["preferred",{"2":{"3":1}}],["pre",{"2":{"1":1}}],["plot",{"2":{"21":2,"22":2,"26":1}}],["plotutils",{"2":{"20":1}}],["plain",{"2":{"22":1}}],["platform",{"2":{"18":1,"27":1}}],["planes",{"2":{"3":10}}],["plus",{"2":{"15":2,"16":2,"17":21,"26":1}}],["please",{"2":{"3":1,"14":1}}],["performs",{"2":{"26":1}}],["perform",{"2":{"26":2}}],["performance",{"2":{"22":2}}],["permutes",{"2":{"5":1}}],["period",{"2":{"3":2}}],["periodicity",{"2":{"3":1}}],["periodic",{"2":{"3":5}}],["periodicembedding",{"2":{"2":1,"3":4}}],["periods",{"2":{"3":6}}],["perceptron",{"0":{"15":1},"2":{"3":1,"15":1}}],["polygonops",{"2":{"20":1}}],["polynomial",{"2":{"0":7,"2":1}}],["poissonrandom",{"2":{"20":1}}],["point",{"2":{"3":1}}],["points",{"2":{"3":3}}],["points=nothing",{"2":{"3":1}}],["positivefactorizations",{"2":{"20":1}}],["position=",{"2":{"21":1}}],["positional",{"2":{"3":1}}],["position",{"2":{"3":2}}],["possible",{"2":{"3":1}}],["packing",{"2":{"20":1}}],["packages",{"2":{"22":2}}],["package",{"0":{"20":1},"2":{"3":1,"13":1}}],["paddedviews",{"2":{"20":1}}],["pad=3",{"2":{"17":1}}],["pad=1",{"2":{"16":20,"17":17}}],["page",{"2":{"18":1,"27":1}}],["pango",{"2":{"20":1}}],["pang",{"2":{"11":1}}],["pattern",{"2":{"11":5}}],["patches",{"2":{"3":1,"11":1}}],["patchembedding",{"2":{"2":1,"3":1}}],["patch",{"2":{"3":6}}],["pair",{"2":{"3":1}}],["pass",{"2":{"3":1,"9":1}}],["passed",{"2":{"3":1}}],["part",{"2":{"22":2,"26":1}}],["particles",{"2":{"3":1}}],["parallel",{"2":{"17":8,"26":1}}],["parameter",{"2":{"22":1}}],["parameters",{"2":{"10":1,"11":1,"15":6,"16":28,"17":42,"20":1,"26":8}}],["params",{"2":{"3":4}}],["ps",{"2":{"3":5,"22":14,"24":2,"26":6}}],["pj",{"2":{"0":1}}],["p1",{"2":{"0":1}}],["p0",{"2":{"0":1}}],["lbfgs",{"2":{"22":2}}],["lbfgsb",{"2":{"20":1}}],["lzo",{"2":{"20":1}}],["llvmopenmp",{"2":{"20":1}}],["llvm",{"2":{"18":1,"27":1}}],["l",{"2":{"4":1,"11":3,"19":2,"20":1,"22":4}}],["live",{"2":{"25":1}}],["libass",{"2":{"20":1}}],["libaom",{"2":{"20":1}}],["libwebp",{"2":{"20":1}}],["libglvnd",{"2":{"20":1}}],["libgcrypt",{"2":{"20":1}}],["libgpg",{"2":{"20":1}}],["libtiff",{"2":{"20":1}}],["libsixel",{"2":{"20":1}}],["libvorbis",{"2":{"20":1}}],["libpthread",{"2":{"20":1}}],["libpng",{"2":{"20":1}}],["libfdk",{"2":{"20":1}}],["libffi",{"2":{"20":1}}],["libmount",{"2":{"20":1}}],["libxext",{"2":{"20":1}}],["libxrender",{"2":{"20":1}}],["libx11",{"2":{"20":1}}],["libxcb",{"2":{"20":1}}],["libxdmcp",{"2":{"20":1}}],["libxau",{"2":{"20":1}}],["libuuid",{"2":{"20":1}}],["libllvm",{"2":{"18":1,"27":1}}],["literate",{"2":{"18":2,"27":2}}],["linewidth=3",{"2":{"21":3}}],["lines",{"2":{"21":3}}],["linesearches",{"2":{"20":1}}],["linearsolvekernelabstractionsext",{"2":{"20":1}}],["linearsolverecursivearraytoolsext",{"2":{"20":1}}],["linearsolveenzymeext",{"2":{"20":1}}],["linearsolve",{"2":{"20":4}}],["linear",{"2":{"11":1}}],["linearinterpolation",{"2":{"3":1}}],["linux",{"2":{"18":2,"27":2}}],["liu",{"2":{"11":2}}],["list",{"2":{"9":1}}],["like",{"2":{"3":1,"5":1,"14":1,"19":1}}],["limit",{"2":{"18":1,"27":1}}],["limited",{"2":{"3":4}}],["limitations",{"2":{"3":1}}],["loggingextras",{"2":{"20":1}}],["local",{"2":{"19":1}}],["location",{"2":{"3":2}}],["lossfunctionsext",{"2":{"20":2}}],["lossfunctionscategoricalarraysext",{"2":{"20":2}}],["lossfunctions",{"2":{"20":2}}],["loss",{"2":{"19":2,"22":5}}],["looks",{"2":{"19":1}}],["look",{"2":{"14":1,"16":1}}],["loopvectorization",{"2":{"3":1,"20":3}}],["loading",{"0":{"17":1}}],["load",{"2":{"8":2,"9":5,"16":4,"17":2}}],["loads",{"2":{"7":3,"8":8}}],["loaded",{"2":{"3":2,"9":1}}],["lt",{"2":{"3":1,"11":1}}],["label=l",{"2":{"21":3}}],["lame",{"2":{"20":1}}],["lazymodules",{"2":{"20":1}}],["lazyarraysstaticarraysext",{"2":{"20":1}}],["lazyarrays",{"2":{"20":2}}],["latinhypercubesampling",{"2":{"20":1}}],["latexstrings",{"2":{"20":1}}],["latexify",{"2":{"20":4,"25":1}}],["latest",{"2":{"12":1}}],["large",{"2":{"7":1,"8":2,"11":1}}],["laws",{"2":{"3":1}}],["last",{"2":{"3":9,"19":1}}],["layer=returns",{"2":{"3":1}}],["layer=nothing",{"2":{"3":2}}],["layer",{"0":{"15":1},"2":{"3":57,"7":1,"15":3,"16":34,"17":84,"22":2,"24":4,"26":14}}],["layers",{"0":{"3":1},"2":{"0":1,"2":13,"3":25,"7":2,"15":2,"26":1}}],["luxmlutilsext",{"2":{"20":2}}],["luxlossfunctionsext",{"2":{"20":2}}],["luxlibreversediffext",{"2":{"20":2}}],["luxlibtrackerext",{"2":{"20":2}}],["luxlibenzymeext",{"2":{"20":2}}],["luxlibloopvectorizationext",{"2":{"20":2}}],["luxlibsleefpiratesext",{"2":{"20":2}}],["luxlib",{"2":{"14":1,"20":5}}],["luxreversediffext",{"2":{"20":1}}],["luxtrackerext",{"2":{"20":2}}],["luxenzymeext",{"2":{"20":2}}],["luxcomponentarraysext",{"2":{"20":2}}],["luxcorearrayinterfacereversediffext",{"2":{"20":1,"22":4}}],["luxcorearrayinterfacetrackerext",{"2":{"20":1}}],["luxcoremldatadevicesext",{"2":{"14":1}}],["luxcoresetfieldext",{"2":{"14":1}}],["luxcoreenzymecoreext",{"2":{"14":1}}],["luxcorefunctorsext",{"2":{"14":1}}],["luxcorechainrulescoreext",{"2":{"14":1}}],["luxcore",{"2":{"7":3,"8":8,"14":6,"20":2,"22":2}}],["luxcuda",{"2":{"13":1}}],["luxdl",{"2":{"12":1}}],["lux",{"0":{"7":1},"2":{"1":1,"3":6,"14":6,"15":2,"16":2,"17":5,"20":7,"22":5,"25":1,"26":1}}],["lerc",{"2":{"20":1}}],["learnapi",{"2":{"20":1}}],["learning",{"2":{"1":1,"3":1,"11":1}}],["leftchildrightsiblingtrees",{"2":{"20":1}}],["let",{"2":{"14":1,"16":1,"19":1,"22":1,"23":1,"25":1,"26":1}}],["level",{"2":{"7":1,"11":1}}],["length",{"2":{"3":2}}],["legendre",{"2":{"0":3,"2":1}}],["element",{"2":{"25":1}}],["else",{"2":{"3":1}}],["eq",{"2":{"25":1,"26":1}}],["equation",{"2":{"19":2}}],["equations",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"25":4}}],["equal",{"2":{"3":2}}],["error",{"2":{"20":1}}],["erhan",{"2":{"11":1}}],["epyc",{"2":{"18":1,"27":1}}],["easily",{"2":{"26":1}}],["easy",{"2":{"12":1,"26":1}}],["earcut",{"2":{"20":1}}],["earlystopping",{"2":{"20":1}}],["each",{"2":{"7":2}}],["efficient",{"2":{"11":1}}],["embed",{"2":{"3":2}}],["embedding",{"2":{"3":10}}],["enzymechainrulescoreext",{"2":{"20":1}}],["enzymestaticarraysext",{"2":{"20":1}}],["enzymespecialfunctionsext",{"2":{"20":1}}],["enzymelogexpfunctionsext",{"2":{"20":1}}],["enzyme",{"2":{"20":6}}],["engine",{"2":{"19":1}}],["environment",{"2":{"18":1,"27":1}}],["ensure",{"2":{"5":1}}],["enforces",{"2":{"3":1}}],["end",{"2":{"3":1,"18":3,"21":1,"22":9,"27":3}}],["entry",{"2":{"3":1}}],["enumx",{"2":{"20":1}}],["enum",{"2":{"3":3}}],["e",{"2":{"3":1,"11":1}}],["et",{"2":{"3":2,"7":1,"8":7}}],["exactpredicates",{"2":{"20":1}}],["example",{"2":{"3":3,"25":1}}],["ext",{"2":{"22":2}}],["extrema",{"2":{"22":1}}],["extractor",{"2":{"16":2}}],["extents",{"2":{"20":1}}],["extending",{"2":{"3":1}}],["extended",{"2":{"3":1}}],["exotic",{"2":{"5":1}}],["exceptionunwrapping",{"2":{"20":1}}],["except",{"2":{"3":1}}],["expects",{"2":{"25":2}}],["experimental",{"2":{"0":1,"22":2}}],["expronicon",{"2":{"20":1}}],["exprtools",{"2":{"20":1}}],["expressionmodule",{"2":{"25":1}}],["expression",{"0":{"25":1,"26":1},"2":{"19":1,"23":1,"25":2,"26":2}}],["expressions",{"2":{"3":4,"25":2}}],["expr",{"2":{"3":4}}],["expansion",{"2":{"0":6}}],["evaloptions",{"2":{"3":1}}],["evaloptions=evaloptions",{"2":{"3":1}}],["evaluation",{"2":{"3":2}}],["eval",{"2":{"3":4,"26":4}}],["evensin",{"2":{"0":1}}],["=vv",{"2":{"19":1}}],["=val",{"2":{"3":1}}],["=∑i",{"2":{"19":2}}],["=u3",{"2":{"19":2}}],["=>",{"2":{"15":4,"16":26,"17":21,"22":3,"26":4}}],["===",{"2":{"22":1}}],["==",{"2":{"3":2,"22":2}}],["=",{"2":{"0":1,"3":27,"7":2,"10":2,"15":11,"16":92,"17":92,"18":4,"21":2,"22":33,"23":1,"24":3,"25":4,"26":24,"27":4}}],["klu",{"2":{"20":1}}],["komodakis",{"2":{"8":1,"11":1}}],["kolter",{"2":{"8":1,"11":1}}],["kolesnikov",{"2":{"4":1}}],["krylov",{"2":{"20":1}}],["krizhevsky",{"2":{"7":1,"11":1}}],["kron",{"2":{"3":1}}],["know",{"2":{"5":1}}],["known",{"2":{"3":1}}],["k",{"2":{"3":2,"11":6}}],["kwargs",{"2":{"3":11,"7":1,"22":3}}],["kwargs=",{"2":{"3":6}}],["keutzer",{"2":{"11":1}}],["key",{"2":{"3":1}}],["keyword",{"2":{"0":6,"3":12,"7":3,"8":8}}],["kerneldensity",{"2":{"20":1}}],["kernel",{"2":{"3":4}}],["kind",{"2":{"0":1}}],["jpegturbo",{"2":{"20":2}}],["just",{"2":{"14":1,"15":1,"17":1}}],["juliahybrid",{"2":{"26":2}}],["juliahamiltoniannn",{"2":{"3":1}}],["juliay",{"2":{"24":1}}],["juliats",{"2":{"24":1}}],["juliatensorproductlayer",{"2":{"3":1}}],["juliaude",{"2":{"22":1}}],["juliausing",{"2":{"13":4,"14":1,"16":1,"17":1,"18":1,"20":1,"27":1}}],["juliarng",{"2":{"22":1}}],["juliaresnext",{"2":{"8":1}}],["juliaresnet",{"2":{"8":1}}],["julialang",{"2":{"18":1,"27":1}}],["julialegendre",{"2":{"0":1}}],["julia",{"2":{"12":2,"18":5,"22":2,"27":5}}],["juliawideresnet",{"2":{"8":1}}],["juliagooglenet",{"2":{"8":1}}],["juliadensenet",{"2":{"8":1}}],["juliadynamicexpressionslayer",{"2":{"3":1}}],["juliavgg",{"2":{"7":2}}],["juliavision",{"2":{"16":1}}],["juliavisiontransformer",{"2":{"7":1}}],["juliavisiontransformerencoder",{"2":{"3":1}}],["juliaviposembedding",{"2":{"3":1}}],["juliaalexnet",{"2":{"7":1}}],["juliafunction",{"2":{"21":1,"22":1}}],["juliaflatten",{"2":{"5":1}}],["juliafast",{"2":{"5":1}}],["juliafourier",{"2":{"0":1}}],["juliast",{"2":{"26":1}}],["juliasrmodel",{"2":{"25":1}}],["juliasol",{"2":{"22":2}}],["juliasqueezenet",{"2":{"8":1}}],["juliashould",{"2":{"5":1}}],["juliasecond",{"2":{"5":1}}],["juliasplinelayer",{"2":{"3":1}}],["juliasin",{"2":{"0":1}}],["juliaperiodicembedding",{"2":{"3":1}}],["juliapatchembedding",{"2":{"3":1}}],["juliapolynomial",{"2":{"0":1}}],["juliamach",{"2":{"25":1}}],["juliamodel",{"2":{"15":2}}],["juliamobilenet",{"2":{"8":1}}],["juliamultiheadselfattention",{"2":{"3":1}}],["juliamlp",{"2":{"3":1}}],["julia>",{"2":{"3":14,"12":2}}],["juliajulia>",{"2":{"3":2,"12":2}}],["juliaconvmixer",{"2":{"8":1}}],["juliaconvbatchnormactivation",{"2":{"3":1}}],["juliaconvnormactivation",{"2":{"3":1}}],["juliacos",{"2":{"0":1}}],["juliaclasstokens",{"2":{"3":1}}],["juliachebyshev",{"2":{"0":1}}],["jia",{"2":{"11":1}}],["jll",{"2":{"20":61}}],["jld2",{"2":{"9":2,"16":3}}],["jl",{"0":{"8":1,"12":1,"17":1},"2":{"3":11,"5":1,"9":1,"12":4,"14":4,"15":2,"17":1,"18":1,"19":3,"22":2,"25":5,"27":1}}],["j",{"2":{"0":2,"4":1,"11":3}}],["j2x",{"2":{"0":2}}],["jth",{"2":{"0":2}}],["idx",{"2":{"25":4}}],["idxs",{"2":{"3":7}}],["ieee",{"2":{"11":6}}],["iandola",{"2":{"8":1,"11":1}}],["implications",{"2":{"22":2}}],["important",{"2":{"25":1}}],["imports",{"0":{"20":1}}],["imported",{"0":{"8":1},"2":{"9":1}}],["imath",{"2":{"20":1}}],["imageio",{"2":{"20":1}}],["imagemetadata",{"2":{"20":1}}],["imageaxes",{"2":{"20":1}}],["imagebase",{"2":{"20":1}}],["imagecore",{"2":{"20":1}}],["images",{"2":{"10":1}}],["imagenet",{"2":{"7":1,"11":1,"16":1}}],["image",{"2":{"3":5,"4":2,"7":1,"11":2}}],["imsize",{"2":{"7":2}}],["iteration",{"2":{"22":24}}],["iterationcontrol",{"2":{"20":1}}],["iter",{"2":{"22":4}}],["itertools",{"2":{"20":1}}],["its",{"2":{"12":1}}],["it",{"2":{"3":3,"25":1,"26":6}}],["i",{"2":{"3":5,"11":1,"19":1}}],["if",{"2":{"0":2,"3":5,"5":1,"7":3,"8":8,"9":1,"12":1,"14":1,"15":1,"18":3,"22":2,"27":3}}],["isoband",{"2":{"20":2}}],["isdefined",{"2":{"18":3,"27":3}}],["issubset",{"2":{"3":1}}],["is",{"2":{"0":4,"3":19,"4":1,"5":1,"7":3,"8":8,"12":1,"14":1,"15":1,"19":4,"22":2,"24":1,"25":4,"26":1}}],["inversefunctionsunitfulext",{"2":{"20":1}}],["invertedindices",{"2":{"20":1}}],["inverted",{"2":{"11":1}}],["inflate",{"2":{"20":1}}],["info",{"2":{"18":2,"27":2}}],["information",{"2":{"3":3,"4":1,"11":1}}],["instead",{"2":{"19":1}}],["install",{"0":{"12":1},"2":{"12":1,"13":1}}],["included",{"2":{"14":1}}],["inchannels",{"2":{"7":2}}],["initialparameters",{"2":{"26":1}}],["initialstates",{"2":{"26":1}}],["initializer",{"2":{"3":1}}],["initialized",{"2":{"3":1}}],["init",{"2":{"3":6}}],["init=zeros32",{"2":{"3":1}}],["indirectarrays",{"2":{"20":1}}],["indices",{"2":{"3":2}}],["index",{"0":{"2":1}}],["int",{"2":{"3":6,"7":2,"8":8}}],["integration",{"2":{"25":1}}],["integers",{"2":{"3":1}}],["integer",{"2":{"3":6}}],["intelopenmp",{"2":{"20":2}}],["intervalarithmeticrecipesbaseext",{"2":{"20":2}}],["intervalarithmeticdiffrulesext",{"2":{"20":1}}],["intervalarithmeticforwarddiffext",{"2":{"20":2}}],["intervalarithmeticintervalsetsext",{"2":{"20":1}}],["intervalarithmetic",{"2":{"20":5}}],["intervalsetsrecipesbaseext",{"2":{"20":2}}],["intervalsetsrandomext",{"2":{"20":1}}],["intervalsetsstatisticsext",{"2":{"20":1}}],["intervalsets",{"2":{"20":4}}],["intervals",{"2":{"19":1}}],["interactive",{"2":{"18":1,"27":1}}],["interactiveutils",{"2":{"18":2,"27":2}}],["international",{"2":{"11":1}}],["internaldynamicexpressionwrapper",{"2":{"26":4}}],["internal",{"2":{"3":1}}],["intermediate",{"2":{"7":1}}],["interface",{"2":{"3":1}}],["interpolationsunitfulext",{"2":{"20":1}}],["interpolations",{"2":{"20":2}}],["interpolation",{"2":{"3":1}}],["into",{"2":{"3":1}}],["int=1",{"2":{"0":11}}],["inputs",{"2":{"3":5}}],["input",{"2":{"3":22,"7":2,"22":2,"24":1}}],["in",{"2":{"0":7,"3":30,"4":1,"5":1,"9":1,"11":7,"12":3,"14":2,"15":2,"19":2,"20":71,"22":3,"25":2}}],["x4",{"2":{"25":4,"26":4}}],["x3+x2",{"2":{"25":1}}],["x3−x4",{"2":{"25":1}}],["x3",{"2":{"25":7,"26":7}}],["x3c",{"2":{"3":1,"22":2}}],["xoshiro",{"2":{"22":1}}],["xorg",{"2":{"20":8}}],["xlabel=l",{"2":{"21":1}}],["xslt",{"2":{"20":1}}],["xz",{"2":{"20":1}}],["xtrans",{"2":{"20":1}}],["xml2",{"2":{"20":1}}],["x86",{"2":{"18":1,"27":1}}],["xie",{"2":{"8":1,"11":1}}],["xn",{"2":{"3":1}}],["x2+0",{"2":{"25":1}}],["x2+x2−0",{"2":{"25":1}}],["x2⋅",{"2":{"25":1}}],["x2⋅−1",{"2":{"25":1}}],["x2−x3",{"2":{"25":1}}],["x265",{"2":{"20":1}}],["x264",{"2":{"20":1}}],["x26",{"2":{"18":4,"22":6,"27":4}}],["x2",{"2":{"3":8,"25":14,"26":14}}],["x1⋅x3⋅0",{"2":{"25":1}}],["x1",{"2":{"3":8,"25":5,"26":5}}],["x",{"2":{"0":11,"3":9,"4":1,"5":7,"11":1,"19":2,"22":18,"24":2,"25":1}}],["over",{"2":{"26":1}}],["overload",{"2":{"22":2}}],["ok",{"2":{"23":1}}],["ogg",{"2":{"20":1}}],["observables",{"2":{"20":1}}],["objectfile",{"2":{"20":1}}],["odeproblem",{"2":{"22":1}}],["ode",{"2":{"19":1,"22":1}}],["oddarguments",{"2":{"0":1}}],["our",{"2":{"19":2}}],["out",{"2":{"3":3,"19":1}}],["output",{"2":{"3":4,"7":1,"20":1,"25":1}}],["os",{"2":{"18":1,"27":1}}],["only",{"2":{"3":1}}],["onetbb",{"2":{"20":1}}],["oneapi",{"2":{"13":1}}],["one",{"2":{"3":1,"8":6,"25":1}}],["on",{"2":{"3":5,"11":6,"12":1,"18":1,"19":3,"22":2,"26":1,"27":1}}],["original",{"2":{"22":1}}],["ordinarydiffeqcoreenzymecoreext",{"2":{"20":1}}],["ordinarydiffeqcore",{"2":{"20":2}}],["ordinarydiffeqverner",{"2":{"20":3}}],["order",{"2":{"3":1,"19":3}}],["orcjit",{"2":{"18":1,"27":1}}],["org",{"2":{"18":1,"27":1}}],["or",{"2":{"3":2,"8":6,"13":1,"25":1}}],["optprob",{"2":{"22":6}}],["optf",{"2":{"22":5}}],["optim",{"2":{"20":1}}],["optimizationproblem",{"2":{"22":3}}],["optimizationmlutilsext",{"2":{"20":2}}],["optimizationmldatadevicesext",{"2":{"20":2}}],["optimizationzygoteext",{"2":{"20":2}}],["optimizationreversediffext",{"2":{"20":2}}],["optimizationenzymeext",{"2":{"20":2}}],["optimizationfunction",{"2":{"22":2}}],["optimizationfinitediffext",{"2":{"20":1}}],["optimizationforwarddiffext",{"2":{"20":2}}],["optimizationbase",{"2":{"20":8}}],["optimizationoptimisers",{"2":{"20":3}}],["optimizationoptimjl",{"2":{"20":3}}],["optimization",{"2":{"20":3,"22":1}}],["optimize",{"2":{"19":2}}],["optimisers",{"2":{"14":1,"22":1}}],["optimal",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1,"22":1,"23":1,"26":1}}],["optional",{"2":{"3":1}}],["options=",{"2":{"26":4}}],["options",{"2":{"3":4}}],["opus",{"2":{"20":1}}],["openexr",{"2":{"20":2}}],["openml",{"2":{"20":1}}],["openssl",{"2":{"20":1}}],["operators=",{"2":{"3":2,"25":1,"26":1}}],["operators",{"2":{"3":2,"25":1}}],["operatorenummodule",{"2":{"25":1,"26":4}}],["operatorenum",{"2":{"3":4,"25":1,"26":5}}],["operator",{"2":{"3":3}}],["offsetarraysadaptext",{"2":{"20":1}}],["offsetarrays",{"2":{"20":2}}],["official",{"2":{"18":1,"27":1}}],["of",{"2":{"0":13,"3":49,"5":3,"7":4,"8":14,"9":1,"11":6,"12":1,"15":1,"19":2,"22":1,"25":2}}],["others",{"2":{"4":1,"11":1}}],["otherwise",{"2":{"3":1,"8":1}}],["other",{"2":{"0":1,"3":1}}],["dynamics",{"2":{"21":2,"22":2,"26":1}}],["dynamicpolynomials",{"2":{"20":1}}],["dynamicquantitiesunitfulext",{"2":{"20":2}}],["dynamicquantitiesscientifictypesext",{"2":{"20":2}}],["dynamicquantitieslinearalgebraext",{"2":{"20":1}}],["dynamicquantities",{"2":{"20":4}}],["dynamicexpressionssymbolicutilsext",{"2":{"20":2}}],["dynamicexpressionsloopvectorizationext",{"2":{"20":2}}],["dynamicexpressionslayer",{"2":{"2":1,"3":3,"26":2}}],["dynamicexpressionsoptimext",{"2":{"20":2}}],["dynamicexpressions",{"2":{"3":6,"19":1,"20":4,"25":4,"26":4}}],["dally",{"2":{"11":1}}],["data",{"0":{"24":1},"2":{"3":1,"24":2,"25":3}}],["datainterpolations",{"2":{"3":2}}],["du",{"2":{"22":3}}],["dudt",{"2":{"22":2}}],["during",{"2":{"20":1}}],["dual",{"2":{"5":1}}],["due",{"2":{"3":1}}],["dzamba",{"2":{"4":1}}],["does",{"2":{"26":1}}],["doesn",{"2":{"3":1}}],["downloading\\u001b",{"2":{"20":1}}],["do",{"2":{"15":2,"19":1,"22":2,"26":2}}],["dollár",{"2":{"11":1}}],["docs",{"2":{"9":1,"25":1}}],["documentation",{"2":{"3":2}}],["don",{"2":{"5":1}}],["dosovitskiy",{"2":{"3":1,"4":1}}],["d",{"2":{"3":2,"4":1,"11":2}}],["dispatch",{"2":{"22":2}}],["distanceschainrulescoreext",{"2":{"20":1}}],["distancessparsearraysext",{"2":{"20":1}}],["distances",{"2":{"20":3}}],["distributionschainrulescoreext",{"2":{"20":1}}],["distributionstestext",{"2":{"20":1}}],["distributions",{"2":{"20":3}}],["diffeqnoiseprocessreversediffext",{"2":{"20":1}}],["diffeqnoiseprocess",{"2":{"20":2}}],["diffeqcallbacks",{"2":{"20":1}}],["diffeqbaseunitfulext",{"2":{"20":2}}],["diffeqbaseenzymeext",{"2":{"20":1}}],["diffeqbasedistributionsext",{"2":{"20":1}}],["diffeqbasereversediffext",{"2":{"20":1}}],["diffeqbasetrackerext",{"2":{"20":1}}],["diffeqbasesparsearraysext",{"2":{"20":2}}],["diffeqbasechainrulescoreext",{"2":{"20":2}}],["diffeqbase",{"2":{"20":8}}],["differentiationinterfaceenzymeext",{"2":{"20":1}}],["differentiationinterfacereversediffext",{"2":{"20":1}}],["differentiationinterfacetrackerext",{"2":{"20":1}}],["differentiationinterfacezygoteext",{"2":{"20":1}}],["differentiationinterfacefinitediffext",{"2":{"20":1}}],["differentiationinterfaceforwarddiffext",{"2":{"20":2}}],["differentiationinterfacestaticarraysext",{"2":{"20":2}}],["differentiationinterfacesparsematrixcoloringsext",{"2":{"20":1}}],["differentiationinterfacesparsearraysext",{"2":{"20":1}}],["differentiationinterfacechainrulescoreext",{"2":{"20":2}}],["differentiationinterface",{"2":{"20":11}}],["differential",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1}}],["different",{"2":{"3":1,"22":1}}],["directly",{"2":{"3":1}}],["divisor",{"2":{"3":1}}],["dims",{"2":{"3":15}}],["dim=1",{"2":{"0":1}}],["dimensions",{"2":{"3":6,"5":2}}],["dimension",{"2":{"0":6,"3":6,"5":1}}],["dim",{"2":{"0":11,"3":4,"5":3}}],["dropout",{"2":{"3":13,"7":3,"16":4}}],["desired",{"2":{"22":2}}],["delaunaytriangulation",{"2":{"20":1}}],["debug",{"2":{"18":1,"22":2,"27":1}}],["defining",{"2":{"14":1}}],["defaultmeasuresext",{"2":{"20":1}}],["default",{"2":{"3":5,"18":1,"27":1}}],["defaults",{"2":{"3":4,"8":2}}],["der",{"2":{"11":1}}],["derivatives",{"2":{"3":1}}],["dehghani",{"2":{"4":1}}],["dependency",{"2":{"14":1,"20":55}}],["dependencies",{"2":{"14":1,"20":17}}],["depth",{"2":{"3":3,"7":3,"8":13}}],["deprecated",{"2":{"3":2}}],["deprecation",{"2":{"0":1}}],["device",{"2":{"3":1}}],["densenormactdropoutblock",{"2":{"15":2}}],["densenet",{"2":{"2":1,"8":3}}],["densely",{"2":{"11":1}}],["dense",{"2":{"3":5,"15":8,"16":6,"17":1,"22":3,"23":1,"26":4}}],["details",{"2":{"3":1}}],["deeper",{"2":{"11":1}}],["deep",{"2":{"1":1,"11":4}}],["niterations=100",{"2":{"25":1}}],["nlsolversbase",{"2":{"20":1}}],["nn",{"2":{"19":2}}],["nnlibfftwext",{"2":{"20":2}}],["nnlibforwarddiffext",{"2":{"14":1}}],["nnlibenzymecoreext",{"2":{"14":1}}],["nnlib",{"2":{"14":3,"17":8,"20":1}}],["num",{"2":{"18":1,"27":1}}],["number",{"2":{"0":6,"3":14,"7":2,"15":1}}],["nvidia",{"2":{"13":1}}],["nclasses",{"2":{"7":2}}],["names",{"2":{"25":1}}],["name",{"2":{"7":3,"8":6}}],["namedtuple",{"2":{"3":5,"25":1}}],["native",{"0":{"7":1}}],["nk",{"2":{"3":1}}],["n1",{"2":{"3":1}}],["nheads",{"2":{"3":1}}],["new",{"2":{"26":1}}],["netpbm",{"2":{"20":1}}],["networks",{"2":{"4":1,"11":6}}],["network",{"0":{"22":1,"26":1},"2":{"3":3,"19":2,"22":2,"23":1,"26":3}}],["need",{"2":{"8":1,"9":1,"11":1,"16":1,"24":1,"26":1}}],["needed",{"2":{"3":1}}],["nested",{"2":{"3":2}}],["neural",{"0":{"22":1,"26":1},"2":{"3":3,"4":2,"11":4,"19":1,"22":2,"23":1,"26":3}}],["now",{"2":{"22":1,"23":1,"24":1,"26":2}}],["nooplayer",{"2":{"3":1,"17":5}}],["note",{"2":{"3":1,"19":1,"25":1}}],["notes",{"2":{"3":1}}],["not",{"2":{"3":3,"14":1,"22":2,"25":1}}],["nothing",{"2":{"3":6,"16":4,"22":1}}],["nodemodule",{"2":{"25":1}}],["nodes",{"2":{"3":1}}],["node",{"2":{"3":7,"25":1}}],["no",{"2":{"3":3}}],["normal",{"2":{"3":1}}],["normalized",{"2":{"10":1}}],["normalizes",{"2":{"3":1}}],["normalization",{"2":{"3":10,"7":2}}],["norm",{"2":{"3":16}}],["n−1",{"2":{"0":1}}],["nx",{"2":{"0":2}}],["n",{"2":{"0":12,"3":7,"5":1,"11":2,"22":2}}],["write",{"2":{"15":1}}],["wrappedfunction",{"2":{"17":9,"26":1}}],["wrapper",{"2":{"3":1,"15":1}}],["wraps",{"2":{"3":1}}],["woodburymatrices",{"2":{"20":1}}],["would",{"2":{"15":1}}],["wondering",{"2":{"25":1}}],["won",{"2":{"5":1,"22":1}}],["word",{"2":{"18":1,"27":1}}],["words",{"2":{"4":1}}],["worth",{"2":{"4":1}}],["work",{"2":{"3":1,"5":1}}],["was",{"2":{"18":1,"22":6,"27":1}}],["wang",{"2":{"11":1}}],["want",{"0":{"13":1},"2":{"5":1,"12":1,"19":1,"26":1}}],["warning",{"2":{"0":1,"3":1,"22":2}}],["well",{"2":{"26":1}}],["webp",{"2":{"20":1}}],["were",{"2":{"15":1,"25":1}}],["we",{"2":{"5":3,"14":1,"15":3,"16":2,"17":1,"19":6,"22":5,"23":2,"24":2,"25":1,"26":7}}],["weinberger",{"2":{"11":1}}],["weissenborn",{"2":{"4":1}}],["weightinitializerschainrulescoreext",{"2":{"14":1}}],["weightinitializers",{"2":{"14":2}}],["weights",{"2":{"7":3,"8":8,"9":4,"16":2}}],["weight",{"2":{"3":4}}],["w",{"2":{"3":1,"11":4}}],["wide",{"2":{"11":1}}],["wideresnet",{"2":{"2":1,"8":3,"9":2}}],["width=8",{"2":{"9":1}}],["width=4",{"2":{"9":2}}],["width=nothing",{"2":{"8":1}}],["width",{"2":{"7":1,"8":2}}],["will",{"2":{"3":2,"12":1,"19":3,"22":1,"25":1,"26":2}}],["with",{"0":{"19":1,"26":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"0":1,"1":1,"3":15,"7":2,"10":1,"11":3,"14":2,"15":1,"16":1,"19":3,"21":1,"22":1,"23":1,"25":1,"26":2}}],["without",{"2":{"0":1}}],["what",{"2":{"5":1}}],["when",{"2":{"7":3,"8":8}}],["whether",{"2":{"3":2}}],["where",{"2":{"0":2,"3":8,"19":2}}],["which",{"2":{"0":6,"3":5,"22":2}}],["tloss",{"2":{"22":2}}],["tspan",{"2":{"22":1}}],["ts",{"2":{"21":4,"22":11,"24":1}}],["targets",{"2":{"24":1}}],["tan",{"2":{"11":1}}],["take",{"2":{"3":1,"14":1,"16":1,"26":1}}],["takes",{"2":{"3":3}}],["tiffimages",{"2":{"20":1}}],["ti",{"2":{"19":6}}],["tiny",{"2":{"7":1}}],["timeroutputs",{"2":{"20":1}}],["time",{"2":{"3":2}}],["t",{"2":{"3":1,"4":1,"5":3,"19":3,"21":4,"22":3}}],["tuse",{"2":{"22":1}}],["tutorial",{"2":{"19":2}}],["tutoials",{"2":{"14":1}}],["tu",{"2":{"11":1}}],["tuple",{"2":{"3":3,"7":1,"25":2,"26":8}}],["turbo",{"2":{"3":1,"26":4}}],["t=0",{"2":{"3":2}}],["typeof",{"2":{"25":4,"26":16}}],["types",{"2":{"5":1}}],["type",{"2":{"3":3,"5":6}}],["thus",{"2":{"19":2}}],["threads",{"2":{"18":2,"27":2}}],["through",{"2":{"3":1}}],["third",{"2":{"3":1}}],["this",{"2":{"3":8,"5":4,"15":2,"18":1,"19":4,"22":7,"24":1,"25":1,"26":1,"27":1}}],["that",{"2":{"3":3,"10":1,"14":1,"15":1,"19":2,"22":2,"23":1,"25":2,"26":4}}],["there",{"2":{"26":1}}],["them",{"2":{"22":1,"26":1}}],["themselves",{"2":{"0":1}}],["they",{"2":{"9":1}}],["their",{"2":{"3":2}}],["then",{"2":{"3":2}}],["these",{"2":{"0":1,"3":2,"5":1,"8":1,"25":1}}],["the",{"0":{"25":1,"26":2},"2":{"0":30,"3":101,"5":4,"7":7,"8":16,"9":4,"10":3,"11":6,"12":7,"13":1,"14":1,"15":3,"16":2,"19":8,"22":11,"23":1,"24":3,"25":9,"26":7}}],["try",{"2":{"23":1}}],["triplotbase",{"2":{"20":1}}],["tricks",{"2":{"20":1}}],["triangularsolve",{"2":{"20":1}}],["truncatedstacktraces",{"2":{"20":1}}],["true",{"2":{"3":10,"7":5,"8":8,"22":8,"26":1}}],["trockman",{"2":{"8":1,"11":1}}],["transpose",{"2":{"25":1}}],["transducers",{"2":{"20":1}}],["transducerslazyarraysext",{"2":{"20":2}}],["transformations",{"2":{"11":1}}],["transformers",{"2":{"4":1}}],["transformer",{"2":{"3":3,"7":2}}],["trackedarray",{"2":{"22":2}}],["trackedreal",{"2":{"22":2}}],["trackerpdmatsext",{"2":{"20":1}}],["tracker",{"2":{"20":2}}],["track",{"2":{"17":20}}],["trained",{"2":{"22":7,"23":1,"24":4,"26":1}}],["training",{"0":{"22":1},"2":{"24":1,"26":1}}],["train",{"2":{"3":3,"22":5,"24":3,"25":2}}],["trajectories",{"2":{"3":1}}],["tree",{"2":{"3":2}}],["test",{"2":{"22":3}}],["testing",{"2":{"22":1}}],["terminterface",{"2":{"20":1}}],["terminalloggers",{"2":{"20":1}}],["term",{"2":{"19":1}}],["terms",{"2":{"0":6}}],["tensorcore",{"2":{"20":1}}],["tensorproductbasis",{"2":{"3":1}}],["tensorproductlayer",{"2":{"2":1,"3":1}}],["tensor",{"2":{"3":2}}],["tj",{"2":{"0":1}}],["tn−1",{"2":{"0":1}}],["t1",{"2":{"0":1}}],["t0",{"2":{"0":1}}],["total",{"2":{"15":2,"16":2,"17":1,"26":1}}],["top",{"2":{"9":2}}],["tokens",{"2":{"3":1}}],["to",{"0":{"12":1},"2":{"0":1,"3":33,"5":4,"7":5,"8":3,"9":5,"12":2,"15":1,"16":2,"17":1,"19":4,"22":7,"24":1,"25":5,"26":5}}],["skip",{"2":{"26":1}}],["srmodel",{"2":{"25":1}}],["shaderabstractions",{"2":{"20":1}}],["show",{"2":{"22":1}}],["showoff",{"2":{"20":1}}],["should",{"2":{"0":1,"3":3,"5":2}}],["sleefpirates",{"2":{"20":1}}],["slow",{"2":{"3":1}}],["scientifictypesext",{"2":{"20":1}}],["scientifictypes",{"2":{"20":1}}],["scientifictypesbase",{"2":{"20":1}}],["scimljacobianoperators",{"2":{"20":1}}],["scimlbasemakieext",{"2":{"20":2}}],["scimlbasezygoteext",{"2":{"20":1}}],["scimlbasechainrulescoreext",{"2":{"20":1}}],["scimlbase",{"2":{"20":4}}],["scimloperatorssparsearraysext",{"2":{"20":1}}],["scimloperatorsstaticarrayscoreext",{"2":{"20":1}}],["scimloperators",{"2":{"20":3}}],["scimlstructures",{"2":{"20":1}}],["scimlsensitivity",{"2":{"19":1,"20":3}}],["scratch",{"2":{"20":1}}],["scale",{"2":{"4":1,"11":1}}],["scaled",{"2":{"3":1}}],["scalar",{"2":{"3":1}}],["szegedy",{"2":{"8":1,"11":1}}],["small",{"2":{"7":1,"8":2}}],["smooth",{"2":{"3":1}}],["save",{"2":{"25":1}}],["saveat=ts",{"2":{"22":1}}],["saved",{"2":{"3":4}}],["sandler",{"2":{"8":1,"11":2}}],["sampled",{"2":{"3":1}}],["same",{"2":{"3":3,"12":1,"22":1,"26":1}}],["specialfunctionsext",{"2":{"20":2}}],["specified",{"2":{"3":2,"7":1}}],["space",{"2":{"22":1}}],["sparspak",{"2":{"20":1}}],["sparsearraysext",{"2":{"20":2}}],["sparseconnectivitytracernanmathext",{"2":{"20":2}}],["sparseconnectivitytracernnlibext",{"2":{"20":2}}],["sparseconnectivitytracerlogexpfunctionsext",{"2":{"20":1}}],["sparseconnectivitytracerspecialfunctionsext",{"2":{"20":2}}],["sparseconnectivitytracer",{"2":{"20":5}}],["sparsematrixcoloringscolorsext",{"2":{"20":2}}],["sparsematrixcolorings",{"2":{"20":2}}],["spatial",{"2":{"5":2}}],["spline",{"2":{"3":1}}],["splinelayer",{"2":{"2":1,"3":1}}],["so",{"2":{"23":1,"26":1}}],["sol",{"2":{"21":3,"22":7,"26":2}}],["solves",{"2":{"23":1}}],["solver",{"2":{"22":3}}],["solve",{"2":{"19":1,"22":6,"26":1}}],["solving",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1}}],["some",{"2":{"3":1,"26":1}}],["source",{"2":{"0":6,"3":13,"5":4,"7":4,"8":8}}],["symbolicindexinginterface",{"2":{"20":1}}],["symbolicutilsreversediffext",{"2":{"20":2}}],["symbolicutils",{"2":{"20":4,"25":1}}],["symbolicregressionsymbolicutilsext",{"2":{"20":2}}],["symbolicregressionenzymeext",{"2":{"20":2}}],["symbolicregression",{"2":{"19":1,"20":5,"25":3}}],["symbolic",{"0":{"19":1,"23":1,"24":1,"25":1,"26":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":2,"25":2,"26":1,"27":1},"2":{"19":2,"22":1,"23":1,"24":1,"25":1,"26":2}}],["symbol",{"2":{"7":2,"8":4}}],["symmetries",{"2":{"3":1}}],["systems",{"2":{"4":1,"11":1}}],["system",{"2":{"3":1,"19":1,"22":1}}],["sensealg=quadratureadjoint",{"2":{"22":1}}],["series",{"2":{"13":1}}],["sermanet",{"2":{"11":1}}],["searching",{"2":{"11":1}}],["seconds",{"2":{"14":2,"20":71}}],["second",{"2":{"3":1,"5":1}}],["self",{"2":{"3":2}}],["selects",{"2":{"3":1}}],["see",{"2":{"3":1,"25":1,"26":1}}],["setup",{"2":{"3":2,"7":3,"8":8,"22":3}}],["set",{"2":{"3":4,"7":2}}],["such",{"2":{"19":1}}],["successfully",{"2":{"14":2,"20":71}}],["sutskever",{"2":{"11":1}}],["sun",{"2":{"11":1}}],["support",{"0":{"13":1},"2":{"3":4}}],["supported",{"2":{"3":1}}],["supervision",{"2":{"3":1}}],["sum",{"2":{"3":1}}],["subject",{"2":{"0":1}}],["stubs",{"2":{"20":1}}],["structured",{"2":{"25":1}}],["structio",{"2":{"20":1}}],["string",{"2":{"25":1}}],["stringmanipulation",{"2":{"20":1}}],["stride=2",{"2":{"17":8}}],["std",{"2":{"10":1}}],["step",{"2":{"3":5}}],["stack1",{"2":{"26":1}}],["stackviews",{"2":{"20":1}}],["stacked",{"2":{"3":1}}],["statsfunschainrulescoreext",{"2":{"20":1}}],["statsfunsinversefunctionsext",{"2":{"20":1}}],["statsfuns",{"2":{"20":3}}],["stats=true",{"2":{"17":20}}],["statisticalmeasures",{"2":{"20":3}}],["statisticalmeasuresbase",{"2":{"20":1}}],["statisticaltraits",{"2":{"20":1}}],["statistics",{"2":{"20":1}}],["staticarrayinterfaceoffsetarraysext",{"2":{"20":1}}],["staticarrayinterface",{"2":{"20":1}}],["stateful",{"2":{"22":7}}],["statefulluxlayer",{"2":{"3":1,"22":4}}],["states",{"2":{"15":2,"16":2,"17":1,"26":1}}],["state",{"2":{"3":2,"22":6}}],["start",{"2":{"14":1}}],["started",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1}}],["stability",{"2":{"5":1}}],["stablerngs",{"2":{"20":1}}],["stable",{"2":{"0":1,"5":1}}],["st",{"2":{"3":10,"22":10,"24":2,"26":1}}],["s",{"2":{"3":2,"4":2,"11":5,"13":1,"14":1,"16":1,"22":1,"23":1,"25":1,"26":1}}],["sixel",{"2":{"20":1}}],["signeddistancefields",{"2":{"20":1}}],["signature",{"2":{"3":3}}],["simd",{"2":{"20":1}}],["simple",{"2":{"22":1}}],["simplebufferstream",{"2":{"20":1}}],["simpleunpack",{"2":{"20":1}}],["simply",{"2":{"3":1,"12":1}}],["simonyan",{"2":{"7":2,"11":1}}],["size",{"2":{"3":20,"7":1,"11":1,"18":1,"27":1}}],["since",{"2":{"3":1,"12":1}}],["sinpi",{"2":{"3":3}}],["sin⁡",{"2":{"0":3}}],["sines",{"2":{"3":1}}],["sine",{"2":{"0":2}}],["sin",{"2":{"0":1,"2":1}}],["squeezenet",{"2":{"2":1,"8":2,"9":1,"11":1}}],["axislegend",{"2":{"21":1}}],["axis",{"2":{"21":1}}],["axisarrays",{"2":{"20":1}}],["axisalgorithms",{"2":{"20":1}}],["ax",{"2":{"21":6}}],["axes",{"2":{"3":1}}],["aac",{"2":{"20":1}}],["amd",{"2":{"18":1,"27":1}}],["amdgpudevice",{"2":{"18":1,"27":1}}],["amdgpu",{"2":{"13":1,"18":2,"27":2}}],["affine=true",{"2":{"17":20}}],["after",{"2":{"3":4,"7":2}}],["aggregated",{"2":{"11":1}}],["at",{"2":{"3":1,"4":1,"14":1,"16":1,"19":1}}],["attn",{"2":{"3":1}}],["attention",{"2":{"3":5}}],["autojacvec=reversediffvjp",{"2":{"22":1}}],["automa",{"2":{"20":1}}],["auto",{"2":{"18":1,"27":1}}],["autozygote",{"2":{"3":2,"22":2}}],["autoforwarddiff",{"2":{"3":2}}],["autodiff",{"2":{"3":8}}],["autodiff=nothing",{"2":{"3":1}}],["available",{"2":{"3":2,"7":1,"9":2}}],["assume",{"2":{"14":1}}],["asserts",{"2":{"5":1}}],["assert",{"2":{"5":3}}],["ashraf",{"2":{"11":1}}],["as",{"2":{"3":9,"7":1,"12":1,"26":1}}],["above",{"2":{"25":1,"26":1}}],["about",{"0":{"16":1},"2":{"3":1}}],["able",{"2":{"9":1,"16":1}}],["abstol=1e",{"2":{"22":2,"26":1}}],["abstractarray",{"2":{"3":2,"5":2,"22":2}}],["abstractluxlayer",{"2":{"3":1,"22":4}}],["abstractvector",{"2":{"3":2}}],["abs2",{"2":{"3":1,"22":6}}],["adam",{"2":{"22":1}}],["adaptivepredicates",{"2":{"20":1}}],["adaptivemeanpool",{"2":{"17":1}}],["adjoint",{"2":{"22":4}}],["addact",{"2":{"17":8}}],["add",{"2":{"5":2,"12":2,"13":5}}],["advances",{"2":{"4":1,"11":1}}],["ad",{"2":{"3":1}}],["accessorsunitfulext",{"2":{"20":2}}],["accessorsintervalsetsext",{"2":{"20":2}}],["accessorsstructarraysext",{"2":{"20":1}}],["accessors",{"2":{"20":3}}],["accelerate",{"2":{"1":1}}],["accuracy",{"2":{"9":2,"11":1}}],["act",{"2":{"3":5}}],["activation=false",{"2":{"3":1}}],["activation=nnlib",{"2":{"3":1}}],["activation",{"2":{"3":14,"15":1}}],["animations",{"2":{"20":1}}],["anguelov",{"2":{"11":1}}],["any",{"2":{"3":1,"22":1}}],["an",{"2":{"3":4,"4":1,"7":1,"14":1}}],["and",{"2":{"0":3,"3":23,"4":2,"5":2,"7":1,"8":3,"10":1,"11":17,"15":1,"19":3,"22":1,"25":1,"26":1}}],["aliastables",{"2":{"20":1}}],["also",{"2":{"16":1}}],["already",{"2":{"14":2,"20":71}}],["alternatively",{"2":{"3":1}}],["all",{"2":{"3":2,"10":1,"11":1}}],["allows",{"2":{"3":1}}],["al",{"2":{"3":2,"7":1,"8":7}}],["alexnet",{"2":{"2":1,"7":2,"9":1,"11":1}}],["along",{"2":{"0":6,"5":1}}],["apart",{"2":{"3":1}}],["appendix",{"0":{"18":1,"27":1}}],["appends",{"2":{"3":1}}],["appropriately",{"2":{"3":1}}],["applications",{"2":{"11":1}}],["applied",{"2":{"0":6}}],["apply",{"2":{"3":2,"22":4}}],["api",{"0":{"0":1,"1":1,"3":1,"5":1,"6":1},"1":{"2":1,"7":1,"8":1,"9":1,"10":1},"2":{"5":1}}],["arfffiles",{"2":{"20":1}}],["artifact",{"2":{"20":1}}],["arxiv",{"2":{"4":2,"11":8}}],["around",{"2":{"3":1,"15":1}}],["architecture",{"2":{"3":1,"19":1}}],["arraylayoutssparsearraysext",{"2":{"20":1}}],["arraylayouts",{"2":{"20":2}}],["arrayinterfacereversediffext",{"2":{"20":1}}],["arrayinterfacetrackerext",{"2":{"20":1}}],["arrayinterfacegpuarrayscoreext",{"2":{"14":1}}],["arrayinterface",{"2":{"14":1,"20":2}}],["arrays",{"2":{"3":1}}],["array",{"2":{"3":4,"22":1}}],["arguments",{"2":{"0":11,"3":22,"7":6,"8":14}}],["are",{"2":{"0":8,"3":8,"7":1,"9":1,"11":1,"14":1,"22":1,"25":1}}],["a",{"0":{"22":1},"2":{"0":6,"3":28,"4":2,"5":1,"7":4,"8":8,"9":1,"11":7,"14":1,"15":2,"16":2,"19":6,"22":2,"23":2,"26":1}}],["ci",{"2":{"26":1}}],["crlibm",{"2":{"20":1}}],["crayons",{"2":{"20":1}}],["creates",{"2":{"7":1}}],["create",{"2":{"3":2,"7":4,"8":8}}],["cv",{"2":{"11":2}}],["cvf",{"2":{"11":1}}],["cs",{"2":{"11":2}}],["certain",{"2":{"5":1}}],["cpu",{"2":{"3":1,"18":1,"27":1}}],["cudnn",{"2":{"13":1}}],["cudadevice",{"2":{"18":1,"27":1}}],["cuda",{"2":{"3":1,"13":1,"18":3,"27":3}}],["cubicspline",{"2":{"3":1}}],["currently",{"2":{"3":2}}],["c",{"2":{"3":3,"11":3}}],["classic",{"2":{"19":1}}],["classical",{"2":{"19":1}}],["classifier",{"2":{"16":2}}],["classification",{"2":{"11":1}}],["classes",{"2":{"7":1}}],["class",{"2":{"3":1}}],["classtokens",{"2":{"2":1,"3":1}}],["chu",{"2":{"11":1}}],["chunk",{"2":{"5":3}}],["choose",{"2":{"19":1}}],["choices",{"2":{"7":1}}],["chosen",{"2":{"3":2}}],["chen",{"2":{"11":3}}],["check",{"2":{"5":1,"22":2}}],["chebyshev",{"2":{"0":3,"2":1}}],["channel",{"2":{"3":2}}],["channels",{"2":{"3":8,"7":1}}],["change",{"2":{"0":1}}],["chain",{"2":{"3":2,"15":7,"16":16,"17":19,"22":1,"26":4}}],["chs",{"2":{"3":4}}],["could",{"2":{"26":1}}],["copy",{"2":{"26":1}}],["collect",{"2":{"22":2,"24":1}}],["colorbrewer",{"2":{"20":1}}],["colorvectorspace",{"2":{"20":2}}],["colorschemes",{"2":{"20":1}}],["colors",{"2":{"20":1}}],["colortypes",{"2":{"20":1}}],["corrected",{"2":{"22":2}}],["corresponds",{"2":{"3":1}}],["cores",{"2":{"18":1,"27":1}}],["core",{"2":{"18":1,"27":1}}],["code",{"2":{"16":1,"25":1,"26":1}}],["componentarray",{"2":{"22":1,"26":1}}],["componentarraysgpuarraysext",{"2":{"20":1}}],["componentarrayszygoteext",{"2":{"20":2}}],["componentarraysreversediffext",{"2":{"20":2}}],["componentarraysrecursivearraytoolsext",{"2":{"20":2}}],["componentarraystrackerext",{"2":{"20":2}}],["componentarraysscimlbaseext",{"2":{"20":2}}],["componentarrayskernelabstractionsext",{"2":{"20":1}}],["componentarraysoptimisersext",{"2":{"20":1}}],["componentarrays",{"2":{"20":11}}],["compact",{"2":{"22":1}}],["computer",{"0":{"6":1},"1":{"7":1,"8":1,"9":1,"10":1},"2":{"11":6}}],["computes",{"2":{"3":1,"5":1}}],["computationalresources",{"2":{"20":1}}],["computation",{"2":{"3":1}}],["combining",{"0":{"26":1}}],["combinatorics",{"2":{"20":1}}],["combination",{"2":{"0":1}}],["combine",{"2":{"19":1,"26":2}}],["commonsolve",{"2":{"20":1}}],["commit",{"2":{"18":1,"27":1}}],["command",{"2":{"12":2}}],["comes",{"2":{"14":1}}],["com",{"2":{"12":1}}],["concurrentutilities",{"2":{"20":1}}],["concatenated",{"2":{"3":1}}],["contrast",{"2":{"25":1}}],["controller",{"2":{"19":1}}],["control",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":2,"22":1,"23":1,"26":1}}],["contour",{"2":{"20":1}}],["containing",{"2":{"3":1}}],["connection",{"2":{"17":8}}],["connected",{"2":{"7":2,"11":1}}],["conference",{"2":{"11":6}}],["configurations",{"2":{"22":1}}],["configuration",{"2":{"7":3,"22":1}}],["config",{"2":{"7":2}}],["convolutions",{"2":{"11":1}}],["convolution",{"2":{"7":3}}],["convolutional",{"2":{"3":4,"11":4}}],["convenience",{"2":{"3":1,"15":1}}],["conv",{"2":{"3":3,"16":20,"17":20}}],["convmixer",{"2":{"2":1,"8":3}}],["convbatchnormactivation",{"2":{"2":1,"3":1}}],["convnormactivationblock",{"2":{"16":20}}],["convnormactivation",{"2":{"2":1,"3":3,"16":10}}],["consoleprogressmonitor",{"2":{"20":1}}],["conservation",{"2":{"3":1}}],["constantinterpolation",{"2":{"3":1}}],["constant",{"2":{"3":1}}],["constructionbaseunitfulext",{"2":{"20":1}}],["constructionbaseintervalsetsext",{"2":{"20":1}}],["constructionbase",{"2":{"20":1}}],["constructor",{"2":{"9":1}}],["construct",{"2":{"3":3,"16":1,"22":3,"26":1}}],["constructs",{"2":{"0":6,"3":5,"15":1}}],["considered",{"2":{"0":1}}],["cost",{"2":{"19":1}}],["cospi",{"2":{"3":3}}],["cos⁡",{"2":{"0":3}}],["cosines",{"2":{"3":1}}],["cosine",{"2":{"0":2}}],["cos",{"2":{"0":2,"2":1,"3":3}}],["causing",{"2":{"22":2}}],["cairo",{"2":{"20":2}}],["cairomakie",{"2":{"20":3,"21":1}}],["categoricaldistributions",{"2":{"20":1}}],["categoricalarraysrecipesbaseext",{"2":{"20":1}}],["categoricalarraysjsonext",{"2":{"20":1}}],["categoricalarrays",{"2":{"20":3}}],["cassette",{"2":{"20":1}}],["cases",{"2":{"3":1,"5":1,"12":1}}],["case",{"2":{"3":1,"25":1}}],["cardinality=64",{"2":{"9":1}}],["cardinality=32",{"2":{"8":1,"9":2}}],["cardinality",{"2":{"8":2}}],["callback",{"2":{"22":5}}],["called",{"2":{"7":3,"8":8}}],["calls",{"2":{"0":1}}],["can",{"2":{"0":1,"3":1,"9":1,"12":2,"15":1,"16":2,"17":1,"22":1,"23":1,"26":2}}],["ffmpeg",{"2":{"20":1}}],["fftw",{"2":{"20":2}}],["featureselection",{"2":{"20":1}}],["feature",{"2":{"16":2}}],["feature=2",{"2":{"3":1}}],["feature=1",{"2":{"3":1}}],["fewer",{"2":{"11":1}}],["fcsize",{"2":{"7":2}}],["fns",{"2":{"3":2}}],["functors",{"2":{"14":1}}],["functionproperties",{"2":{"20":1}}],["functionwrapperswrappers",{"2":{"20":1}}],["functionwrappers",{"2":{"20":1}}],["functional",{"2":{"18":2,"27":2}}],["functions",{"0":{"21":1},"2":{"0":8,"3":3,"5":1}}],["function",{"2":{"0":1,"3":16,"5":1,"15":2,"19":1,"21":1,"22":8}}],["fully",{"2":{"7":2}}],["future",{"2":{"3":1}}],["familiar",{"2":{"14":1}}],["fastlapackinterface",{"2":{"20":1}}],["fastbroadcast",{"2":{"20":1}}],["fastpowerenzymeext",{"2":{"20":1}}],["fastpowerreversediffext",{"2":{"20":1}}],["fastpowertrackerext",{"2":{"20":1}}],["fastpowerforwarddiffext",{"2":{"20":1}}],["fastpower",{"2":{"20":5}}],["fast",{"2":{"5":1}}],["faster",{"2":{"3":2,"5":1}}],["false",{"2":{"3":1,"7":2,"22":4,"26":8}}],["float64",{"2":{"22":1,"24":2,"25":2}}],["float32",{"2":{"3":7}}],["flux",{"0":{"17":1},"2":{"17":1}}],["flexible",{"2":{"3":1}}],["flat",{"2":{"3":1}}],["flattenlayer",{"2":{"16":2}}],["flattens",{"2":{"5":1}}],["flatten",{"2":{"3":2,"5":1,"17":1}}],["flatten=true",{"2":{"3":1}}],["fst",{"2":{"3":3}}],["finetune",{"2":{"26":1}}],["finetuning",{"2":{"26":1}}],["fintetuning",{"2":{"26":1}}],["finish",{"2":{"22":1}}],["finitediffstaticarraysext",{"2":{"20":2}}],["finitediffsparsearraysext",{"2":{"20":1}}],["finitediff",{"2":{"20":3}}],["fitted",{"2":{"26":1}}],["fitting",{"0":{"25":1}}],["fit",{"2":{"25":2}}],["figure",{"2":{"21":1}}],["fig",{"2":{"21":3}}],["file=false",{"2":{"25":1}}],["fileio",{"2":{"20":1}}],["filepaths",{"2":{"20":1}}],["filepathsbasetestext",{"2":{"20":1}}],["filepathsbasemmapext",{"2":{"20":1}}],["filepathsbase",{"2":{"20":3}}],["fillarrayspdmatsext",{"2":{"20":1}}],["fillarrays",{"2":{"20":1}}],["filters",{"2":{"3":2}}],["fixedpointnumbers",{"2":{"20":1}}],["fixed",{"2":{"3":1}}],["fix1",{"2":{"3":1}}],["first",{"2":{"0":1,"3":1,"5":1,"19":3,"22":1,"24":1}}],["freetypeabstraction",{"2":{"20":1}}],["freetype",{"2":{"20":1}}],["freetype2",{"2":{"20":1}}],["freely",{"2":{"0":1}}],["fribidi",{"2":{"20":1}}],["framework",{"2":{"3":1}}],["from",{"0":{"8":1,"17":1},"2":{"3":8,"9":2,"17":1,"19":1,"25":2}}],["f",{"2":{"3":6,"11":1}}],["fj",{"2":{"0":1}}],["found",{"2":{"25":1}}],["fourier",{"2":{"0":3,"2":1}}],["fontconfig",{"2":{"20":1}}],["follow",{"2":{"25":1}}],["following",{"2":{"7":1,"12":2,"13":1,"15":1,"16":1,"19":1}}],["followed",{"2":{"3":1}}],["forwarddiffext",{"2":{"20":1}}],["forwarddiff",{"2":{"5":1}}],["forwarded",{"2":{"3":3}}],["format",{"2":{"20":1}}],["form",{"2":{"0":6,"19":2}}],["for",{"0":{"24":1},"2":{"0":1,"3":19,"4":1,"5":3,"7":1,"8":1,"9":2,"11":5,"19":1,"22":2,"24":1}}],["bzip2",{"2":{"20":1}}],["bfgs",{"2":{"20":1}}],["block2",{"2":{"15":1,"16":10}}],["block",{"2":{"15":2,"16":20}}],["block1",{"2":{"15":1,"16":10}}],["blocks",{"2":{"3":1}}],["bk",{"2":{"3":1}}],["bn",{"2":{"3":1}}],["b2",{"2":{"3":1}}],["b1",{"2":{"3":3}}],["b",{"2":{"3":3,"11":1,"20":1}}],["bijections",{"2":{"20":1}}],["bitflags",{"2":{"20":1}}],["bibliography",{"0":{"4":1,"11":1}}],["bias=false",{"2":{"17":20}}],["bias",{"2":{"3":3}}],["binary",{"2":{"3":1,"25":1,"26":1}}],["by",{"2":{"3":6,"14":1,"19":1,"26":1}}],["bump",{"2":{"19":1}}],["bumper",{"2":{"3":2,"26":4}}],["build",{"2":{"18":1,"27":1}}],["built",{"2":{"1":1}}],["but",{"2":{"3":2,"5":1,"14":1,"15":1,"22":1,"23":1,"26":3}}],["bangbang",{"2":{"20":1}}],["bangbangstructarraysext",{"2":{"20":2}}],["batteries",{"2":{"14":1}}],["batch",{"2":{"7":2}}],["batchnorm=true",{"2":{"9":4}}],["batchnorm",{"2":{"3":1,"7":4,"17":20}}],["batchsize",{"2":{"3":1}}],["batched",{"2":{"3":1}}],["backend",{"2":{"3":4}}],["backends",{"2":{"3":3}}],["based",{"0":{"22":1},"2":{"19":1}}],["base",{"2":{"3":2,"7":1,"8":4,"9":3}}],["basis",{"0":{"0":1},"2":{"0":19,"2":6,"3":10}}],["bottlenecks",{"2":{"11":1}}],["bool=true",{"2":{"3":2}}],["bool=false",{"2":{"3":2,"7":5,"8":16}}],["bool",{"2":{"3":1}}],["boltzreversediffext",{"2":{"20":2}}],["boltztrackerext",{"2":{"20":2}}],["boltz",{"0":{"0":1,"3":1,"12":1},"2":{"0":6,"2":30,"3":13,"5":5,"7":3,"8":8,"12":5,"14":4,"15":1,"20":3}}],["because",{"2":{"25":1}}],["better",{"2":{"22":1}}],["between",{"2":{"7":1}}],["behaved",{"2":{"22":1}}],["behavior",{"2":{"22":2}}],["behind",{"2":{"19":1}}],["being",{"2":{"9":1,"16":1}}],["before",{"2":{"8":1,"9":1,"16":1,"17":1,"26":1}}],["beyer",{"2":{"4":1}}],["best",{"2":{"3":1,"25":5,"26":1}}],["be",{"2":{"0":2,"3":10,"8":6,"9":1,"10":1,"12":1,"25":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/@localSearchIndexroot.DgW2Dxpb.js b/dev/assets/chunks/@localSearchIndexroot.DgW2Dxpb.js new file mode 100644 index 0000000..a22e972 --- /dev/null +++ b/dev/assets/chunks/@localSearchIndexroot.DgW2Dxpb.js @@ -0,0 +1 @@ +const e='{"documentCount":28,"nextId":28,"documentIds":{"0":"/Boltz.jl/dev/api/basis#Boltz.Basis-API-Reference","1":"/Boltz.jl/dev/api/#API-Reference","2":"/Boltz.jl/dev/api/#index","3":"/Boltz.jl/dev/api/layers#Boltz.Layers-API-Reference","4":"/Boltz.jl/dev/api/layers#bibliography","5":"/Boltz.jl/dev/api/private#Private-API","6":"/Boltz.jl/dev/api/vision#Computer-Vision-Models-(Vision-API)","7":"/Boltz.jl/dev/api/vision#Native-Lux-Models","8":"/Boltz.jl/dev/api/vision#Imported-from-Metalhead.jl","9":"/Boltz.jl/dev/api/vision#Pretrained-Models","10":"/Boltz.jl/dev/api/vision#preprocessing","11":"/Boltz.jl/dev/api/vision#bibliography","12":"/Boltz.jl/dev/#How-to-Install-Boltz.jl?","13":"/Boltz.jl/dev/#Want-GPU-Support?","14":"/Boltz.jl/dev/tutorials/1_GettingStarted#Getting-Started","15":"/Boltz.jl/dev/tutorials/1_GettingStarted#Multi-Layer-Perceptron","16":"/Boltz.jl/dev/tutorials/1_GettingStarted#How-about-VGG?","17":"/Boltz.jl/dev/tutorials/1_GettingStarted#Loading-Models-from-Metalhead-(Flux.jl)","18":"/Boltz.jl/dev/tutorials/1_GettingStarted#appendix","19":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Solving-Optimal-Control-Problems-with-Symbolic-Universal-Differential-Equations","20":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Package-Imports","21":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Helper-Functions","22":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Training-a-Neural-Network-based-UDE","23":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Symbolic-Regression","24":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Data-Generation-for-Symbolic-Regression","25":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Fitting-the-Symbolic-Expression","26":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#Combining-the-Neural-Network-with-the-Symbolic-Expression","27":"/Boltz.jl/dev/tutorials/2_SymbolicOptimalControl#appendix"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,96],"1":[2,1,14],"2":[1,2,35],"3":[4,1,547],"4":[1,1,51],"5":[2,1,84],"6":[5,1,1],"7":[3,5,103],"8":[4,5,102],"9":[2,5,92],"10":[1,5,23],"11":[1,1,181],"12":[6,1,47],"13":[4,1,24],"14":[2,1,81],"15":[3,2,66],"16":[4,2,109],"17":[7,2,90],"18":[1,2,86],"19":[9,1,103],"20":[2,9,463],"21":[2,9,33],"22":[6,9,259],"23":[2,9,31],"24":[5,10,500],"25":[4,10,167],"26":[7,9,168],"27":[1,9,86]},"averageFieldLength":[3.392857142857143,4.107142857142857,130.07142857142858],"storedFields":{"0":{"title":"Boltz.Basis API Reference","titles":[]},"1":{"title":"API Reference","titles":[]},"2":{"title":"Index","titles":["API Reference"]},"3":{"title":"Boltz.Layers API Reference","titles":[]},"4":{"title":"Bibliography","titles":[]},"5":{"title":"Private API","titles":[]},"6":{"title":"Computer Vision Models (Vision API)","titles":[]},"7":{"title":"Native Lux Models","titles":["Computer Vision Models (Vision API)"]},"8":{"title":"Imported from Metalhead.jl","titles":["Computer Vision Models (Vision API)"]},"9":{"title":"Pretrained Models","titles":["Computer Vision Models (Vision API)"]},"10":{"title":"Preprocessing","titles":["Computer Vision Models (Vision API)","Pretrained Models"]},"11":{"title":"Bibliography","titles":[]},"12":{"title":"How to Install Boltz.jl?","titles":[]},"13":{"title":"Want GPU Support?","titles":[]},"14":{"title":"Getting Started","titles":[]},"15":{"title":"Multi-Layer Perceptron","titles":["Getting Started"]},"16":{"title":"How about VGG?","titles":["Getting Started"]},"17":{"title":"Loading Models from Metalhead (Flux.jl)","titles":["Getting Started"]},"18":{"title":"Appendix","titles":["Getting Started"]},"19":{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","titles":[]},"20":{"title":"Package Imports","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"21":{"title":"Helper Functions","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"22":{"title":"Training a Neural Network based UDE","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"23":{"title":"Symbolic Regression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"24":{"title":"Data Generation for Symbolic Regression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations","Symbolic Regression"]},"25":{"title":"Fitting the Symbolic Expression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations","Symbolic Regression"]},"26":{"title":"Combining the Neural Network with the Symbolic Expression","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]},"27":{"title":"Appendix","titles":["Solving Optimal Control Problems with Symbolic Universal Differential Equations"]}},"dirtCount":0,"index":[["−1",{"2":{"25":1}}],["−x3−x4",{"2":{"25":1}}],["⋅0",{"2":{"25":1}}],["⋅x3−",{"2":{"25":1}}],["⋅x2⋅−0",{"2":{"25":1}}],["⋅",{"2":{"25":2}}],["⋅−0",{"2":{"25":1}}],["⋅1",{"2":{"25":2}}],["~",{"2":{"22":2}}],["└",{"2":{"22":2}}],["`lux",{"2":{"22":2}}],["`m`",{"2":{"22":2}}],["│",{"2":{"22":8}}],["┌",{"2":{"22":2}}],[">",{"2":{"22":2}}],["^3",{"2":{"22":1}}],["∥2",{"2":{"19":2}}],["∥2+2∥v",{"2":{"19":1}}],["∥2+2∥x",{"2":{"19":1}}],["∥2+∥u",{"2":{"19":2}}],["∥4−x",{"2":{"19":2}}],["θ",{"2":{"19":2,"22":4}}],["×",{"2":{"18":1,"27":1}}],["→",{"2":{"14":4,"20":106}}],["✓",{"2":{"14":9,"20":181}}],["ylims",{"2":{"21":1}}],["y",{"2":{"11":2,"25":1}}],["you",{"2":{"5":1,"8":1,"9":1,"11":1,"12":3,"14":1,"16":1,"25":1,"26":2}}],["your",{"2":{"1":1}}],["yosinski",{"2":{"4":1}}],["798978",{"2":{"24":1}}],["790221",{"2":{"24":1}}],["791097",{"2":{"24":1}}],["794179",{"2":{"24":1}}],["79487e",{"2":{"24":1}}],["796697",{"2":{"24":1}}],["79739e",{"2":{"24":1}}],["79389e",{"2":{"24":1}}],["79237",{"2":{"24":1}}],["792",{"2":{"16":2}}],["74084e",{"2":{"24":1}}],["744",{"2":{"20":1}}],["745",{"2":{"14":1}}],["760965",{"2":{"24":1}}],["76569e",{"2":{"24":1}}],["768",{"2":{"17":1}}],["764",{"2":{"16":2}}],["789245",{"2":{"24":1}}],["789632",{"2":{"24":1}}],["7834",{"2":{"20":1}}],["787",{"2":{"20":1}}],["788618",{"2":{"24":35}}],["788619",{"2":{"24":2}}],["788621",{"2":{"24":1}}],["788623",{"2":{"24":1}}],["788629",{"2":{"24":1}}],["788639",{"2":{"24":1}}],["788657",{"2":{"24":1}}],["78869",{"2":{"24":1}}],["788746",{"2":{"24":1}}],["788841",{"2":{"24":1}}],["788997",{"2":{"24":1}}],["788",{"2":{"20":1}}],["781",{"2":{"16":2}}],["7844e",{"2":{"24":1}}],["78433e",{"2":{"24":1}}],["784",{"2":{"15":4}}],["73041e",{"2":{"24":1}}],["7364",{"2":{"20":1}}],["738",{"2":{"20":1}}],["73",{"2":{"16":2,"17":1}}],["7",{"2":{"14":1,"16":2,"17":2,"20":20,"24":20}}],["71\\tloss",{"2":{"22":1}}],["7147",{"2":{"20":1}}],["71",{"2":{"9":1}}],["70536e",{"2":{"24":1}}],["70413e",{"2":{"24":1}}],["7005",{"2":{"22":1}}],["701",{"2":{"20":1}}],["7089",{"2":{"20":1}}],["70",{"2":{"9":1,"20":1}}],["728",{"2":{"17":1}}],["72",{"2":{"9":3}}],["7798",{"2":{"20":1}}],["77556",{"2":{"20":1}}],["7763",{"2":{"18":1,"27":1}}],["778",{"2":{"11":1,"20":1}}],["770",{"2":{"11":1,"20":2}}],["7700815",{"2":{"3":1}}],["77",{"2":{"9":1}}],["83789e",{"2":{"24":1}}],["839636",{"2":{"24":1}}],["83991e",{"2":{"24":1}}],["839",{"2":{"14":1}}],["84159e",{"2":{"24":1}}],["848",{"2":{"16":2}}],["86601e",{"2":{"24":1}}],["86645e",{"2":{"24":1}}],["86324e",{"2":{"24":1}}],["8637",{"2":{"20":1}}],["8620",{"2":{"20":1}}],["864",{"2":{"17":4}}],["810666",{"2":{"24":1}}],["818306",{"2":{"24":1}}],["81605e",{"2":{"24":1}}],["8198e",{"2":{"24":1}}],["81\\tloss",{"2":{"22":1}}],["81",{"2":{"20":2}}],["827881",{"2":{"24":1}}],["8252",{"2":{"20":1}}],["82150",{"2":{"20":1}}],["8295",{"2":{"20":1}}],["8220",{"2":{"20":1}}],["8229",{"2":{"20":1}}],["822",{"2":{"20":1}}],["824",{"2":{"17":3}}],["8266668",{"2":{"3":1}}],["853758",{"2":{"24":1}}],["855234",{"2":{"24":1}}],["85287e",{"2":{"24":1}}],["8587",{"2":{"20":1}}],["85",{"2":{"20":1}}],["85676e",{"2":{"24":1}}],["856",{"2":{"16":2}}],["8569",{"2":{"14":1}}],["851",{"2":{"14":1}}],["800125",{"2":{"24":1}}],["804696",{"2":{"24":1}}],["808",{"2":{"16":6}}],["80",{"2":{"9":1,"20":1}}],["89617e",{"2":{"24":1}}],["890",{"2":{"20":1}}],["89",{"2":{"9":2,"20":1}}],["889395",{"2":{"24":1}}],["88248e",{"2":{"24":1}}],["88",{"2":{"9":2,"20":1}}],["870353",{"2":{"24":1}}],["87376e",{"2":{"24":1}}],["87805e",{"2":{"24":1}}],["87746e",{"2":{"24":1}}],["87264e",{"2":{"24":1}}],["87",{"2":{"9":1,"20":1}}],["8",{"2":{"8":1,"14":2,"16":2,"17":1,"19":1,"20":29,"22":7,"24":22,"26":3}}],["⊗⋯⊗bn",{"2":{"3":1}}],["⊗b2",{"2":{"3":1}}],["⊙",{"2":{"3":1}}],["znver3",{"2":{"18":1,"27":1}}],["z",{"2":{"11":3}}],["zhmoginov",{"2":{"11":1}}],["zhu",{"2":{"11":2}}],["zhang",{"2":{"11":1}}],["zhai",{"2":{"4":1}}],["zagoruyko",{"2":{"8":1,"11":1}}],["zout",{"2":{"3":1}}],["z1",{"2":{"3":1}}],["zi=wi",{"2":{"3":1}}],["zygotecolorsext",{"2":{"20":2}}],["zygotetrackerext",{"2":{"20":1}}],["zygote",{"2":{"3":4,"20":2}}],["q",{"2":{"11":1}}],["quadgkenzymeext",{"2":{"20":1}}],["quadgk",{"2":{"20":1}}],["quadraticspline",{"2":{"3":1}}],["quadraticinterpolation",{"2":{"3":1}}],["query",{"2":{"3":1}}],["quot",{"2":{"3":2,"14":2}}],["qkv",{"2":{"3":2}}],["933837",{"2":{"24":1}}],["964",{"2":{"20":1}}],["960",{"2":{"15":2}}],["99",{"2":{"20":1}}],["9995737",{"2":{"3":1}}],["929779",{"2":{"24":1}}],["92998e",{"2":{"24":1}}],["92684e",{"2":{"24":1}}],["92352e",{"2":{"24":1}}],["92434e",{"2":{"24":1}}],["92754e",{"2":{"24":1}}],["92",{"2":{"20":1}}],["92889e",{"2":{"24":1}}],["928",{"2":{"16":2}}],["982733",{"2":{"24":1}}],["985351",{"2":{"24":1}}],["98822e",{"2":{"24":1}}],["981",{"2":{"22":1}}],["98",{"2":{"20":1}}],["9784",{"2":{"20":1}}],["97",{"2":{"20":2}}],["971",{"2":{"20":2}}],["9",{"2":{"11":1,"16":2,"17":2,"20":15,"24":13}}],["958166",{"2":{"24":1}}],["95633e",{"2":{"24":1}}],["95106e",{"2":{"24":1}}],["954",{"2":{"20":1}}],["95",{"2":{"9":1}}],["94447e",{"2":{"24":1}}],["94",{"2":{"9":1}}],["910693",{"2":{"24":1}}],["91789e",{"2":{"24":1}}],["91939e",{"2":{"24":1}}],["91\\tloss",{"2":{"22":1}}],["91131e",{"2":{"24":1}}],["911",{"2":{"20":1}}],["912",{"2":{"17":1}}],["91",{"2":{"9":3}}],["90829e",{"2":{"24":1}}],["9090",{"2":{"20":1}}],["907",{"2":{"20":1}}],["90",{"2":{"3":1,"9":1}}],["∘",{"2":{"3":2}}],["∂ps",{"2":{"3":3}}],["∂x",{"2":{"3":2}}],["≈",{"2":{"3":4}}],["63747e",{"2":{"24":1}}],["63662e",{"2":{"24":1}}],["6357",{"2":{"20":1}}],["6314",{"2":{"20":1}}],["62282e",{"2":{"24":1}}],["6279",{"2":{"22":1}}],["6216",{"2":{"20":1}}],["620",{"2":{"17":1}}],["6161e",{"2":{"24":1}}],["618",{"2":{"22":1}}],["61\\tloss",{"2":{"22":1}}],["613",{"2":{"20":1}}],["61",{"2":{"20":1}}],["65133−x1−1",{"2":{"25":1}}],["6513251066426832",{"2":{"25":1,"26":1}}],["6517",{"2":{"22":1}}],["65039e",{"2":{"24":1}}],["6554",{"2":{"20":1}}],["6537",{"2":{"20":1}}],["65",{"2":{"20":1}}],["659",{"2":{"20":1}}],["60289e",{"2":{"24":1}}],["60118e",{"2":{"24":1}}],["60126e",{"2":{"24":1}}],["6067",{"2":{"22":1}}],["6038",{"2":{"20":1}}],["60",{"2":{"20":1}}],["64936x3⋅0",{"2":{"25":1}}],["6493562344860907",{"2":{"25":1,"26":1}}],["647565",{"2":{"24":1}}],["6409",{"2":{"22":1}}],["648",{"2":{"17":1}}],["64",{"2":{"16":8,"17":16,"18":3,"27":3}}],["66618e",{"2":{"24":1}}],["6642",{"2":{"22":1}}],["6692",{"2":{"20":1}}],["661",{"2":{"20":1}}],["66",{"2":{"9":1}}],["69586e",{"2":{"24":1}}],["69551e",{"2":{"24":1}}],["6983",{"2":{"22":1}}],["698",{"2":{"20":1}}],["69",{"2":{"9":2,"20":1}}],["6967068",{"2":{"3":1}}],["68351e",{"2":{"24":1}}],["68618e",{"2":{"24":1}}],["6854",{"2":{"22":1}}],["689",{"2":{"17":1}}],["68",{"2":{"9":1}}],["6814",{"2":{"3":1}}],["67019e",{"2":{"24":1}}],["67",{"2":{"9":1}}],["6",{"2":{"3":3,"14":1,"16":4,"18":1,"20":16,"21":2,"24":16,"26":2,"27":1}}],["47705e",{"2":{"24":1}}],["4708",{"2":{"11":1}}],["4700",{"2":{"11":1}}],["44332e",{"2":{"24":1}}],["44449e",{"2":{"24":1}}],["4×81",{"2":{"24":2}}],["4341",{"2":{"25":1}}],["4341348924238555",{"2":{"25":1,"26":1}}],["43867e",{"2":{"24":1}}],["43009e",{"2":{"24":1}}],["43",{"2":{"20":2}}],["4225",{"2":{"20":1}}],["4239",{"2":{"20":1}}],["4263",{"2":{"20":1}}],["429",{"2":{"20":1}}],["4278",{"2":{"20":1}}],["466864",{"2":{"24":1}}],["46661e",{"2":{"24":1}}],["46284e",{"2":{"24":1}}],["4671",{"2":{"20":1}}],["4636",{"2":{"20":1}}],["46",{"2":{"20":1}}],["4153x2+",{"2":{"25":1}}],["41529502093863896",{"2":{"25":1,"26":1}}],["41368e",{"2":{"24":1}}],["4135",{"2":{"20":1}}],["41\\tloss",{"2":{"22":1}}],["4147",{"2":{"22":1}}],["41229",{"2":{"20":1}}],["41",{"2":{"20":1}}],["49036e",{"2":{"24":1}}],["493",{"2":{"20":1}}],["49168e",{"2":{"24":1}}],["491",{"2":{"20":1}}],["49",{"2":{"9":1,"20":1}}],["40256e",{"2":{"24":1}}],["401\\tloss",{"2":{"22":1}}],["408",{"2":{"17":1}}],["4096",{"2":{"16":8}}],["406f0",{"2":{"10":1}}],["40",{"2":{"9":1,"22":1}}],["48618e",{"2":{"24":1}}],["48704e",{"2":{"24":1}}],["484",{"2":{"14":1}}],["485f0",{"2":{"10":1}}],["48",{"2":{"9":2,"20":1}}],["4509e",{"2":{"24":1}}],["45517e",{"2":{"24":1}}],["4521",{"2":{"20":1}}],["4520",{"2":{"11":1}}],["459",{"2":{"20":1}}],["456",{"2":{"17":3}}],["456f0",{"2":{"10":1}}],["451\\tloss",{"2":{"22":1}}],["4510",{"2":{"11":1}}],["451908",{"2":{"3":1}}],["4544041",{"2":{"3":1}}],["4",{"2":{"3":8,"5":1,"8":1,"14":1,"16":8,"17":9,"18":2,"20":27,"22":10,"23":2,"24":19,"25":3,"26":7,"27":2}}],["rb",{"2":{"21":1}}],["rocm",{"2":{"13":1}}],["run",{"2":{"12":2}}],["r",{"2":{"11":2,"25":9}}],["rabinovich",{"2":{"11":1}}],["ratio",{"2":{"3":3}}],["rate",{"2":{"3":7}}],["randn32",{"2":{"3":3}}],["random",{"2":{"3":3,"14":1,"20":1}}],["rng",{"2":{"3":3,"22":3,"26":2}}],["reuse",{"2":{"26":1}}],["report",{"2":{"25":1}}],["replace",{"2":{"23":1}}],["replaced",{"2":{"3":1}}],["repl",{"2":{"12":1}}],["ret",{"2":{"22":2}}],["returned",{"2":{"3":1}}],["returns",{"2":{"3":5}}],["return",{"2":{"3":3,"21":1,"22":11}}],["regression",{"0":{"23":1,"24":1},"1":{"24":1,"25":1},"2":{"22":1,"24":1}}],["registry",{"2":{"12":1}}],["registered",{"2":{"12":1}}],["reversediff",{"2":{"20":1,"22":4}}],["recursivefactorization",{"2":{"20":1}}],["recursivearraytoolsreversediffext",{"2":{"20":1}}],["recursivearraytoolstrackerext",{"2":{"20":1}}],["recursivearraytoolszygoteext",{"2":{"20":1}}],["recursivearraytoolsstructarraysext",{"2":{"20":1}}],["recursivearraytoolssparsearraysext",{"2":{"20":1}}],["recursivearraytoolsforwarddiffext",{"2":{"20":1}}],["recursivearraytoolsfastbroadcastext",{"2":{"20":1}}],["recursivearraytools",{"2":{"20":8}}],["recognition",{"2":{"4":1,"11":7}}],["reduce",{"2":{"19":1}}],["rewrite",{"2":{"19":1}}],["remember",{"2":{"17":1}}],["remaining",{"2":{"5":1}}],["reed",{"2":{"11":1}}],["ren",{"2":{"11":1}}],["require",{"2":{"10":1}}],["reltol=1e",{"2":{"22":2,"26":1}}],["release",{"2":{"18":1,"27":1}}],["released",{"2":{"12":1}}],["relies",{"2":{"3":1}}],["relu",{"2":{"3":1,"15":4,"16":24,"17":17}}],["real=0",{"2":{"3":1}}],["refer",{"2":{"3":2,"9":1}}],["reference",{"0":{"0":1,"1":1,"3":1},"1":{"2":1},"2":{"5":1}}],["res2",{"2":{"22":4}}],["res1",{"2":{"22":2}}],["reshape",{"2":{"22":1,"24":1}}],["respect",{"2":{"19":1}}],["residuals",{"2":{"11":1}}],["residual",{"2":{"11":3}}],["resnet",{"2":{"2":1,"8":3,"9":5,"17":1}}],["resnext",{"2":{"2":1,"8":5,"9":3}}],["research",{"2":{"1":1}}],["06584e",{"2":{"24":1}}],["0655939",{"2":{"24":1}}],["06611e",{"2":{"24":1}}],["06492e",{"2":{"24":1}}],["0638896",{"2":{"24":1}}],["0638734",{"2":{"24":1}}],["0636151",{"2":{"24":1}}],["0639064",{"2":{"24":1}}],["0604756",{"2":{"24":1}}],["0523995",{"2":{"24":1}}],["0575232",{"2":{"24":1}}],["05775e",{"2":{"24":1}}],["0577953",{"2":{"24":1}}],["05407",{"2":{"24":1}}],["05458e",{"2":{"24":1}}],["0559418",{"2":{"24":1}}],["05559",{"2":{"24":1}}],["0554318",{"2":{"24":1}}],["0561935",{"2":{"24":1}}],["05191e",{"2":{"24":1}}],["0518714",{"2":{"24":1}}],["037916",{"2":{"25":1}}],["037915962614793824",{"2":{"25":1,"26":1}}],["0379556",{"2":{"24":30}}],["0379557",{"2":{"24":3}}],["0379558",{"2":{"24":1}}],["0379559",{"2":{"24":1}}],["0379562",{"2":{"24":1}}],["0379568",{"2":{"24":1}}],["0379581",{"2":{"24":1}}],["0379607",{"2":{"24":1}}],["0379657",{"2":{"24":1}}],["0379751",{"2":{"24":1}}],["0379922",{"2":{"24":1}}],["0380225",{"2":{"24":1}}],["0380747",{"2":{"24":1}}],["0381626",{"2":{"24":1}}],["0381916",{"2":{"24":1}}],["0383065",{"2":{"24":1}}],["0385362",{"2":{"24":1}}],["0388939",{"2":{"24":1}}],["0394374",{"2":{"24":1}}],["0392505",{"2":{"24":1}}],["0323404",{"2":{"24":1}}],["0324512",{"2":{"24":1}}],["0354001",{"2":{"24":1}}],["0369618",{"2":{"24":1}}],["0315161",{"2":{"24":1}}],["031138",{"2":{"24":1}}],["03319e",{"2":{"24":1}}],["0891399",{"2":{"24":1}}],["08736e",{"2":{"24":1}}],["08264e",{"2":{"24":1}}],["08442e",{"2":{"24":1}}],["08559e",{"2":{"24":1}}],["0886899",{"2":{"24":1}}],["08804e",{"2":{"24":1}}],["088566",{"2":{"24":1}}],["0805516",{"2":{"24":1}}],["0803507",{"2":{"24":1}}],["080",{"2":{"16":2}}],["00804687",{"2":{"24":1}}],["00806274",{"2":{"24":1}}],["00629",{"2":{"24":1}}],["00638661",{"2":{"24":1}}],["00675754",{"2":{"24":1}}],["0067e",{"2":{"24":1}}],["00455687",{"2":{"24":1}}],["0043859",{"2":{"24":1}}],["00951551",{"2":{"24":1}}],["00917577",{"2":{"24":1}}],["00976053",{"2":{"24":1}}],["00968e",{"2":{"24":1}}],["00934305",{"2":{"24":1}}],["00342205",{"2":{"24":1}}],["00302802",{"2":{"24":1}}],["00354938",{"2":{"24":1}}],["00389342",{"2":{"24":1}}],["00598116",{"2":{"24":1}}],["00520492",{"2":{"24":1}}],["0052691",{"2":{"24":1}}],["00528246",{"2":{"24":1}}],["00515532",{"2":{"24":1}}],["00734124",{"2":{"24":1}}],["00707156",{"2":{"24":1}}],["00259652",{"2":{"24":1}}],["00267028",{"2":{"24":1}}],["00239457",{"2":{"24":1}}],["0020292",{"2":{"24":1}}],["00283057",{"2":{"24":1}}],["00147185",{"2":{"24":1}}],["00143173",{"2":{"24":1}}],["001434",{"2":{"24":1}}],["00126644",{"2":{"24":1}}],["00102311",{"2":{"24":1}}],["00158211",{"2":{"24":1}}],["001",{"2":{"22":1}}],["000562454",{"2":{"24":1}}],["000560214",{"2":{"24":1}}],["000142562",{"2":{"24":1}}],["000129614",{"2":{"24":1}}],["000257027",{"2":{"24":1}}],["000230301",{"2":{"24":1}}],["000241738",{"2":{"24":1}}],["000201368",{"2":{"24":1}}],["00040018",{"2":{"24":1}}],["00046277",{"2":{"24":1}}],["00062e",{"2":{"24":1}}],["000630012",{"2":{"24":1}}],["000647175",{"2":{"24":1}}],["000685048",{"2":{"24":1}}],["00032e",{"2":{"24":1}}],["000307734",{"2":{"24":1}}],["000998613",{"2":{"24":1}}],["000",{"2":{"16":2,"17":1}}],["0148261",{"2":{"24":1}}],["0144852",{"2":{"24":1}}],["0140389",{"2":{"24":1}}],["0140561",{"2":{"24":1}}],["0134662",{"2":{"24":1}}],["0132492",{"2":{"24":1}}],["0127457",{"2":{"24":1}}],["0121862",{"2":{"24":1}}],["0107846",{"2":{"24":1}}],["0102435",{"2":{"24":1}}],["0102543",{"2":{"24":1}}],["0118575",{"2":{"24":1}}],["0115036",{"2":{"24":1}}],["0110697",{"2":{"24":1}}],["0191051",{"2":{"24":1}}],["0192489",{"2":{"24":1}}],["0199636",{"2":{"24":1}}],["0170192",{"2":{"24":1}}],["0189152",{"2":{"24":1}}],["0153755877247124",{"2":{"25":1,"26":1}}],["015682−x3⋅0",{"2":{"25":1}}],["015682347987089805",{"2":{"25":1,"26":1}}],["01568",{"2":{"24":36}}],["0156799",{"2":{"24":1}}],["0156798",{"2":{"24":1}}],["0156796",{"2":{"24":1}}],["0156792",{"2":{"24":1}}],["0156785",{"2":{"24":1}}],["0156771",{"2":{"24":1}}],["0156747",{"2":{"24":1}}],["0156706",{"2":{"24":1}}],["0156636",{"2":{"24":1}}],["0156521",{"2":{"24":1}}],["0156338",{"2":{"24":1}}],["0156052",{"2":{"24":1}}],["0156948",{"2":{"24":1}}],["0155616",{"2":{"24":1}}],["0154",{"2":{"25":1}}],["0154968",{"2":{"24":1}}],["0154025",{"2":{"24":1}}],["0152682",{"2":{"24":1}}],["0150812",{"2":{"24":1}}],["0157478",{"2":{"24":1}}],["01597e",{"2":{"24":1}}],["01",{"2":{"18":1,"19":1,"22":6,"26":2,"27":1}}],["0402432",{"2":{"24":1}}],["0414097",{"2":{"24":1}}],["0413899",{"2":{"24":1}}],["0453308",{"2":{"24":1}}],["0483888",{"2":{"24":1}}],["0480198",{"2":{"24":1}}],["048652",{"2":{"24":1}}],["04861",{"2":{"11":1}}],["04617",{"2":{"24":1}}],["0462866",{"2":{"24":1}}],["0430579",{"2":{"24":1}}],["04389",{"2":{"24":1}}],["0439755",{"2":{"24":1}}],["0435037",{"2":{"24":1}}],["049624",{"2":{"24":1}}],["047",{"2":{"16":2}}],["0715713",{"2":{"24":1}}],["0717428",{"2":{"24":1}}],["07146",{"2":{"11":1}}],["0746977",{"2":{"24":1}}],["0708357",{"2":{"24":1}}],["0772e",{"2":{"24":1}}],["0772691",{"2":{"24":1}}],["07691e",{"2":{"24":1}}],["0766875",{"2":{"24":1}}],["0763",{"2":{"22":1}}],["072",{"2":{"17":1}}],["07360",{"2":{"11":1}}],["02349",{"2":{"24":1}}],["0238743",{"2":{"24":34}}],["0238744",{"2":{"24":1}}],["0238746",{"2":{"24":1}}],["0238749",{"2":{"24":1}}],["0238757",{"2":{"24":1}}],["0238772",{"2":{"24":1}}],["0238801",{"2":{"24":1}}],["0238855",{"2":{"24":1}}],["0238955",{"2":{"24":1}}],["023929",{"2":{"25":1}}],["02392942727488574",{"2":{"25":1,"26":1}}],["023913",{"2":{"24":1}}],["0239434",{"2":{"24":1}}],["0239943",{"2":{"24":1}}],["0230741",{"2":{"24":1}}],["0299676",{"2":{"24":1}}],["0292",{"2":{"3":1}}],["0268413",{"2":{"24":1}}],["0268332",{"2":{"24":1}}],["0265776",{"2":{"24":1}}],["0281706",{"2":{"24":1}}],["0287949",{"2":{"24":1}}],["0285e",{"2":{"24":1}}],["0208161",{"2":{"24":1}}],["02018e",{"2":{"24":1}}],["02064e",{"2":{"24":1}}],["02728",{"2":{"24":1}}],["0279947",{"2":{"24":1}}],["02704e",{"2":{"24":1}}],["025202",{"2":{"24":1}}],["0258805",{"2":{"24":1}}],["025084",{"2":{"24":1}}],["025",{"2":{"17":5}}],["0240778",{"2":{"24":1}}],["024211",{"2":{"24":1}}],["0244185",{"2":{"24":1}}],["0247339",{"2":{"24":1}}],["0249974",{"2":{"24":1}}],["024",{"2":{"17":5}}],["02",{"2":{"9":1,"18":1,"27":1}}],["0906964",{"2":{"24":1}}],["0985211",{"2":{"24":1}}],["0918026",{"2":{"24":1}}],["0999407",{"2":{"24":1}}],["09965e",{"2":{"24":1}}],["0977562",{"2":{"24":1}}],["0971689",{"2":{"24":1}}],["09753e",{"2":{"24":1}}],["097",{"2":{"16":2}}],["09792",{"2":{"11":1}}],["09",{"2":{"9":2}}],["0f0",{"2":{"3":12}}],["0",{"2":{"3":28,"10":6,"11":1,"14":2,"15":2,"16":4,"18":3,"19":2,"20":16,"22":42,"24":576,"25":17,"26":28,"27":3}}],["52242e",{"2":{"24":1}}],["5281",{"2":{"14":1}}],["5d",{"2":{"22":2}}],["59127e",{"2":{"24":1}}],["5965",{"2":{"22":1}}],["5943",{"2":{"20":1}}],["599",{"2":{"20":1}}],["590",{"2":{"16":2}}],["56012e",{"2":{"24":1}}],["5618",{"2":{"22":1}}],["563",{"2":{"20":1}}],["5664",{"2":{"20":1}}],["5693",{"2":{"22":1}}],["569",{"2":{"20":1}}],["53814e",{"2":{"24":1}}],["53",{"2":{"20":2}}],["535",{"2":{"20":1}}],["530",{"2":{"15":2}}],["5771e",{"2":{"24":1}}],["57",{"2":{"20":1}}],["57018e",{"2":{"24":1}}],["570",{"2":{"15":2}}],["5e9a32e7af2",{"2":{"18":1,"27":1}}],["58656e",{"2":{"24":1}}],["5826",{"2":{"22":1}}],["5871",{"2":{"20":1}}],["589",{"2":{"17":3}}],["584846",{"2":{"24":1}}],["584",{"2":{"16":2}}],["517749",{"2":{"24":1}}],["51468e",{"2":{"24":1}}],["5141",{"2":{"20":1}}],["51\\tloss",{"2":{"22":3}}],["5193",{"2":{"20":1}}],["5194",{"2":{"14":1}}],["5113",{"2":{"20":1}}],["513",{"2":{"17":6}}],["512",{"2":{"16":14,"17":20}}],["5186",{"2":{"14":1}}],["5mb",{"2":{"11":1}}],["50221+x2",{"2":{"25":1}}],["5022130467540905",{"2":{"25":1,"26":1}}],["50923e",{"2":{"24":1}}],["50391e",{"2":{"24":1}}],["504",{"2":{"20":1}}],["50x",{"2":{"11":1}}],["50",{"2":{"8":3,"9":3,"22":1}}],["55",{"2":{"3":1}}],["54721e",{"2":{"24":1}}],["547",{"2":{"20":1}}],["54413e",{"2":{"24":1}}],["544",{"2":{"16":2}}],["54",{"2":{"3":1,"9":1,"20":1}}],["5",{"2":{"3":8,"9":1,"14":2,"16":8,"17":9,"20":31,"24":24,"26":2}}],["2=lux",{"2":{"26":1}}],["2144−",{"2":{"25":1}}],["2144344174950037",{"2":{"25":1,"26":1}}],["2142",{"2":{"20":1}}],["21007e",{"2":{"24":1}}],["21\\tloss",{"2":{"22":1}}],["217185",{"2":{"24":1}}],["217",{"2":{"22":1}}],["2175",{"2":{"20":1}}],["21",{"2":{"20":1,"24":4}}],["2156",{"2":{"20":1}}],["2892e",{"2":{"24":1}}],["28907",{"2":{"20":1}}],["28",{"2":{"22":1,"24":4}}],["2855",{"2":{"20":1}}],["28741",{"2":{"20":1}}],["28634",{"2":{"20":1}}],["28365",{"2":{"20":1}}],["26",{"2":{"22":1,"24":4}}],["26612",{"2":{"20":1}}],["2645",{"2":{"20":1}}],["2623",{"2":{"20":1}}],["2384596950473552",{"2":{"25":1,"26":1}}],["2385−x3−0",{"2":{"25":1}}],["2385",{"2":{"20":1}}],["23529e",{"2":{"24":1}}],["2357",{"2":{"20":1}}],["2311",{"2":{"20":1}}],["2322",{"2":{"20":1}}],["2330",{"2":{"20":1}}],["234934",{"2":{"24":1}}],["2347e",{"2":{"24":1}}],["2346",{"2":{"20":1}}],["234",{"2":{"20":1}}],["23",{"2":{"20":2,"22":2,"24":4}}],["29198e",{"2":{"24":1}}],["2914",{"2":{"22":1}}],["29",{"2":{"22":1,"24":3}}],["2904",{"2":{"20":1}}],["2990",{"2":{"20":1}}],["2975",{"2":{"20":1}}],["2960",{"2":{"20":1}}],["296",{"2":{"17":3}}],["29488e",{"2":{"24":1}}],["294",{"2":{"17":1}}],["295",{"2":{"16":2}}],["251\\tloss",{"2":{"22":1}}],["2559",{"2":{"22":1}}],["250",{"2":{"20":1}}],["25088",{"2":{"16":2}}],["2535e",{"2":{"24":1}}],["253",{"2":{"20":1}}],["257",{"2":{"17":5}}],["2570",{"2":{"14":1}}],["256",{"2":{"15":7,"16":8,"17":20}}],["25",{"2":{"11":1,"22":1,"24":4}}],["226072",{"2":{"24":1}}],["22658",{"2":{"20":1}}],["22521e",{"2":{"24":1}}],["225f0",{"2":{"10":1}}],["223676",{"2":{"24":1}}],["22431e",{"2":{"24":1}}],["2244",{"2":{"20":1}}],["224f0",{"2":{"10":1}}],["22",{"2":{"20":1,"22":2,"24":4}}],["2201",{"2":{"11":1}}],["229f0",{"2":{"10":1}}],["2707",{"2":{"20":1}}],["27",{"2":{"9":1,"22":1,"24":4}}],["24333x4⋅x4−0",{"2":{"25":1}}],["2433282150366007",{"2":{"25":1,"26":1}}],["24349e",{"2":{"24":1}}],["24678e",{"2":{"24":1}}],["24592e",{"2":{"24":1}}],["245903",{"2":{"20":1}}],["2401",{"2":{"22":1}}],["2404",{"2":{"20":1}}],["2476",{"2":{"20":1}}],["24",{"2":{"9":1,"22":1,"24":3}}],["2n",{"2":{"3":1}}],["208e",{"2":{"24":1}}],["2081",{"2":{"20":1}}],["20545e",{"2":{"24":1}}],["2060",{"2":{"20":1}}],["206482",{"2":{"3":1}}],["2034e",{"2":{"24":1}}],["203",{"2":{"15":2}}],["20028",{"2":{"20":1}}],["200",{"2":{"15":2}}],["20",{"2":{"14":1,"18":1,"20":1,"24":5,"27":1}}],["20247e",{"2":{"24":1}}],["2024",{"2":{"18":1,"27":1}}],["2022e",{"2":{"24":1}}],["2022",{"2":{"8":1,"11":1}}],["2020",{"2":{"3":1,"4":1}}],["201\\tloss",{"2":{"22":1}}],["2016",{"2":{"8":2,"11":2}}],["2018",{"2":{"8":1,"11":1}}],["2015",{"2":{"8":1,"11":1}}],["201",{"2":{"8":1}}],["2017",{"2":{"8":4,"11":4}}],["2014",{"2":{"7":2,"11":1}}],["2012",{"2":{"7":1,"11":1}}],["2010",{"2":{"4":1}}],["2019",{"2":{"3":1,"4":1,"8":1,"11":1}}],["2×3",{"2":{"3":1}}],["2",{"2":{"3":32,"5":3,"14":1,"15":3,"16":30,"17":30,"18":1,"20":46,"21":2,"22":9,"24":27,"25":3,"26":5,"27":1}}],["2x",{"2":{"0":2}}],["3=trained",{"2":{"26":1}}],["37061",{"2":{"25":1}}],["3706095837027754",{"2":{"25":1,"26":1}}],["37719",{"2":{"24":1}}],["3759",{"2":{"20":1}}],["3737",{"2":{"20":1}}],["30605e",{"2":{"24":1}}],["30",{"2":{"24":2}}],["301\\tloss",{"2":{"22":1}}],["303",{"2":{"20":1}}],["3034",{"2":{"20":1}}],["305",{"2":{"20":1}}],["385835",{"2":{"24":1}}],["38773e",{"2":{"24":1}}],["38780",{"2":{"20":1}}],["38434e",{"2":{"24":1}}],["3843",{"2":{"20":1}}],["3869",{"2":{"20":1}}],["33",{"2":{"24":1}}],["33965e",{"2":{"24":1}}],["33809e",{"2":{"24":1}}],["33719",{"2":{"20":1}}],["3348",{"2":{"20":1}}],["3316",{"2":{"20":1}}],["3333",{"2":{"20":1}}],["36761e",{"2":{"24":1}}],["36",{"2":{"16":2,"17":4}}],["35669e",{"2":{"24":1}}],["35541e",{"2":{"24":1}}],["3553",{"2":{"20":1}}],["351\\tloss",{"2":{"22":1}}],["3517",{"2":{"20":1}}],["3501",{"2":{"20":1}}],["359",{"2":{"16":6,"17":3}}],["35",{"2":{"9":1}}],["34532e",{"2":{"24":1}}],["34",{"2":{"8":2,"9":1,"24":1,"26":1}}],["320806",{"2":{"24":1}}],["32",{"2":{"4":1,"8":1,"9":1,"17":1,"24":1}}],["32669",{"2":{"3":1}}],["31538e",{"2":{"24":1}}],["3156",{"2":{"20":1}}],["31\\tloss",{"2":{"22":1}}],["3193",{"2":{"20":1}}],["312",{"2":{"16":2}}],["31",{"2":{"3":1,"24":1}}],["3",{"2":{"3":14,"5":1,"16":46,"17":46,"20":17,"24":22,"25":2,"26":3}}],["39349e",{"2":{"24":1}}],["39350",{"2":{"20":1}}],["39956e",{"2":{"24":1}}],["39226e",{"2":{"24":1}}],["39",{"2":{"3":3,"5":2,"14":1,"16":1,"20":1,"22":2,"23":1,"25":1,"26":1}}],["+",{"2":{"3":4,"22":4,"25":17,"26":24}}],["gt",{"2":{"23":1}}],["glbg3",{"2":{"22":2}}],["gc",{"2":{"18":1,"27":1}}],["gnu",{"2":{"18":1,"27":1}}],["going",{"2":{"11":1,"22":1}}],["googlenet",{"2":{"2":1,"8":2}}],["github",{"2":{"12":2}}],["girshick",{"2":{"11":1}}],["gigantic",{"2":{"7":1}}],["giant",{"2":{"7":1}}],["given",{"2":{"3":2,"15":1}}],["gelu",{"2":{"22":2,"23":1,"26":2}}],["gelly",{"2":{"4":1}}],["generic",{"2":{"21":1}}],["generate",{"2":{"24":2}}],["generated",{"2":{"18":1,"27":1}}],["generation",{"0":{"24":1}}],["general",{"2":{"12":1}}],["geometrybasics",{"2":{"20":1}}],["geointerface",{"2":{"20":1}}],["getting",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1}}],["get",{"2":{"3":1}}],["g",{"2":{"4":1,"11":4}}],["gpus",{"2":{"13":1}}],["gpusintel",{"2":{"13":1}}],["gpusmetal",{"2":{"13":1}}],["gpusamd",{"2":{"13":1}}],["gpu",{"0":{"13":1},"2":{"3":1}}],["gridlayoutbase",{"2":{"20":1}}],["grid",{"2":{"3":15}}],["greydanus",{"2":{"3":1,"4":1}}],["gradients",{"2":{"3":1}}],["gradient",{"2":{"3":1}}],["grad",{"2":{"3":1}}],["up",{"2":{"22":1}}],["updated",{"2":{"3":1,"25":1}}],["u₂",{"2":{"22":2}}],["u₁",{"2":{"22":1}}],["ude",{"0":{"22":1},"2":{"22":25,"24":4,"26":6}}],["u",{"2":{"19":2,"21":3,"22":5}}],["utc",{"2":{"18":1,"27":1}}],["utils",{"2":{"5":4}}],["url=",{"2":{"12":1}}],["unreleased",{"2":{"12":1}}],["unterthiner",{"2":{"4":1}}],["universal",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1}}],["unit",{"2":{"3":1}}],["union",{"2":{"3":1}}],["unchanged",{"2":{"3":2}}],["unary",{"2":{"3":1}}],["us",{"2":{"21":2,"22":11,"26":2}}],["users",{"2":{"3":1}}],["uses",{"2":{"3":1}}],["useful",{"2":{"3":1}}],["use",{"2":{"3":10,"5":2,"7":2,"12":1,"17":20}}],["used",{"2":{"0":1,"3":5}}],["using",{"2":{"1":1,"3":1,"8":1,"12":2,"16":1,"18":1,"19":1,"20":2,"22":2,"25":1,"26":1,"27":1}}],["v",{"2":{"11":2}}],["variable",{"2":{"25":1}}],["vanhoucke",{"2":{"11":1}}],["van",{"2":{"11":1}}],["vasudevan",{"2":{"11":1}}],["val",{"2":{"3":1,"5":2,"22":5,"26":9}}],["values",{"2":{"3":1}}],["value",{"2":{"3":3}}],["v3",{"2":{"8":2}}],["v2",{"2":{"8":1}}],["v1",{"2":{"8":1}}],["vec",{"2":{"21":1}}],["vectorizationbase",{"2":{"20":1}}],["vector",{"2":{"3":3,"25":2}}],["verbosity=0",{"2":{"25":1}}],["vern9",{"2":{"22":2,"26":1}}],["very",{"2":{"11":1,"26":1}}],["versioninfo",{"2":{"18":3,"27":3}}],["version",{"2":{"5":1,"12":3,"18":1,"27":1}}],["vggclassifier",{"2":{"16":2}}],["vggfeatureextractor",{"2":{"16":2}}],["vgg",{"0":{"16":1},"2":{"2":1,"7":4,"9":8,"16":5}}],["virtual",{"2":{"18":1,"27":1}}],["vit",{"2":{"3":1}}],["visiontransformer",{"2":{"2":1,"7":1}}],["visiontransformerencoder",{"2":{"2":1,"3":1}}],["vision",{"0":{"6":2},"1":{"7":2,"8":2,"9":2,"10":2},"2":{"2":11,"3":2,"7":5,"8":8,"11":7,"16":2,"17":1}}],["viposembedding",{"2":{"2":1,"3":1}}],["hybrid",{"2":{"26":4}}],["hypergeometricfunctions",{"2":{"20":1}}],["httpext",{"2":{"20":2}}],["http",{"2":{"20":1}}],["https",{"2":{"12":1,"18":1,"27":1}}],["hinton",{"2":{"11":1}}],["hidden",{"2":{"3":6}}],["how",{"0":{"12":1,"16":1},"2":{"25":2,"26":1}}],["howard",{"2":{"8":2,"11":3}}],["however",{"2":{"0":1}}],["huang",{"2":{"8":1,"11":1}}],["huge",{"2":{"7":1}}],["harfbuzz",{"2":{"20":1}}],["hardcoded",{"2":{"25":1}}],["hard",{"2":{"18":1,"27":1}}],["han",{"2":{"11":1}}],["have",{"2":{"3":1,"22":2,"23":1,"26":2}}],["hamiltonian",{"2":{"3":3,"4":1}}],["hamiltoniannn",{"2":{"2":1,"3":1}}],["here",{"2":{"14":1,"19":2,"22":1,"25":1}}],["he",{"2":{"8":1,"11":2}}],["height",{"2":{"7":1}}],["heigold",{"2":{"4":1}}],["head",{"2":{"3":1}}],["heads",{"2":{"3":5}}],["helper",{"0":{"21":1}}],["help",{"2":{"3":1}}],["might",{"2":{"22":2}}],["minimized",{"2":{"19":1}}],["minimum",{"2":{"3":1,"19":1}}],["minderer",{"2":{"4":1}}],["min",{"2":{"3":3}}],["ms",{"2":{"14":9,"20":181}}],["method",{"2":{"21":1}}],["metal",{"2":{"13":1}}],["metalheadwrapperlayer",{"2":{"17":1}}],["metalhead",{"0":{"8":1,"17":1},"2":{"8":2,"9":4,"17":3}}],["measured",{"2":{"19":1}}],["mean",{"2":{"5":3,"10":1,"22":6}}],["means",{"2":{"3":2,"5":1}}],["memory",{"2":{"18":1,"27":1}}],["m",{"2":{"4":3,"11":5,"13":1,"22":4}}],["multitargetsrregressor",{"2":{"25":1}}],["multiples",{"2":{"3":1}}],["multi",{"0":{"15":1},"2":{"3":2,"15":1}}],["multiheadselfattention",{"2":{"2":1,"3":1}}],["must",{"2":{"3":8,"8":6}}],["mach",{"2":{"25":2}}],["machine",{"2":{"25":1}}],["makie",{"2":{"20":1}}],["makiecore",{"2":{"20":1}}],["mathtexengine",{"2":{"20":1}}],["matrix",{"2":{"3":2,"24":2}}],["maaten",{"2":{"11":1}}],["maxiters=100",{"2":{"22":2}}],["maxiters=500",{"2":{"22":1}}],["maximum",{"2":{"3":1}}],["maxpool",{"2":{"16":10,"17":1}}],["max",{"2":{"3":3}}],["manual",{"2":{"3":1}}],["many",{"2":{"3":2}}],["mode`",{"2":{"22":2}}],["model",{"2":{"3":6,"7":6,"8":16,"9":2,"11":1,"14":1,"16":15,"22":5,"26":2}}],["models",{"0":{"6":1,"7":1,"9":1,"17":1},"1":{"7":1,"8":1,"9":1,"10":2},"2":{"0":1,"1":1,"3":2,"7":1,"8":1,"9":3,"10":1,"17":1}}],["module",{"2":{"16":1}}],["moskewicz",{"2":{"11":1}}],["most",{"2":{"3":1,"12":1}}],["mobile",{"2":{"11":1}}],["mobilenetv2",{"2":{"11":1}}],["mobilenetv3",{"2":{"11":1}}],["mobilenets",{"2":{"11":1}}],["mobilenet",{"2":{"2":1,"8":3}}],["moved",{"2":{"3":1}}],["more",{"2":{"3":3,"14":1}}],["momentum",{"2":{"3":2}}],["mlflowclient",{"2":{"20":1}}],["mljflow",{"2":{"20":1}}],["mljiteration",{"2":{"20":1}}],["mljbalancing",{"2":{"20":1}}],["mljbase",{"2":{"20":2}}],["mljtuning",{"2":{"20":1}}],["mljmodels",{"2":{"20":1}}],["mljensembles",{"2":{"20":1}}],["mlj",{"2":{"20":3,"25":1}}],["mldatadevicesmlutilsext",{"2":{"20":2}}],["mldatadevicesreversediffext",{"2":{"20":2}}],["mldatadevicesrecursivearraytoolsext",{"2":{"20":2}}],["mldatadevicestrackerext",{"2":{"20":2}}],["mldatadevicescomponentarraysext",{"2":{"20":2}}],["mldatadevices",{"2":{"18":3,"20":5,"27":3}}],["mlutils",{"2":{"5":1,"20":1}}],["mlp=",{"2":{"26":1}}],["mlp",{"2":{"2":1,"3":5,"14":1,"15":3,"22":9,"24":6,"26":5}}],["ml",{"2":{"1":1}}],["⚡",{"2":{"1":1}}],["1=trained",{"2":{"26":1}}],["1\\tloss",{"2":{"22":3}}],["17604e",{"2":{"24":1}}],["1764",{"2":{"20":1}}],["17",{"2":{"24":5}}],["1776",{"2":{"20":1}}],["177",{"2":{"20":1}}],["178",{"2":{"20":1}}],["17972",{"2":{"20":1}}],["1796",{"2":{"20":1}}],["1791",{"2":{"20":1}}],["179",{"2":{"17":1}}],["1704",{"2":{"11":1}}],["1571⋅x2+x2+0",{"2":{"25":1}}],["15709638744100488",{"2":{"25":1,"26":1}}],["159372",{"2":{"24":1}}],["1598",{"2":{"20":1}}],["15878",{"2":{"24":1}}],["15831",{"2":{"20":1}}],["151\\tloss",{"2":{"22":1}}],["151",{"2":{"20":1}}],["1517",{"2":{"20":1}}],["15174",{"2":{"20":1}}],["153233",{"2":{"24":1}}],["1531",{"2":{"20":1}}],["1536",{"2":{"20":1}}],["1558",{"2":{"20":1}}],["1555",{"2":{"20":1}}],["1556",{"2":{"11":1}}],["150608",{"2":{"24":1}}],["1508",{"2":{"20":1}}],["1500",{"2":{"11":1}}],["15",{"2":{"20":1,"24":5,"25":1}}],["15622+x20",{"2":{"25":1}}],["15622313651527722",{"2":{"25":1,"26":1}}],["1562",{"2":{"20":1}}],["152741",{"2":{"24":1}}],["152",{"2":{"8":3,"9":1}}],["18804e",{"2":{"24":1}}],["1823e",{"2":{"24":1}}],["18508",{"2":{"20":1}}],["1857",{"2":{"20":1}}],["1858",{"2":{"20":1}}],["1836",{"2":{"20":1}}],["1818",{"2":{"20":1}}],["18",{"2":{"8":2,"9":1,"17":1,"24":4}}],["1809e",{"2":{"24":1}}],["180",{"2":{"3":1,"16":2}}],["19093x2−0",{"2":{"25":1}}],["19092641834728757",{"2":{"25":1,"26":1}}],["19083e",{"2":{"24":1}}],["1911",{"2":{"20":1}}],["1954",{"2":{"20":1}}],["1960",{"2":{"20":1}}],["1968",{"2":{"20":1}}],["19717",{"2":{"20":1}}],["1976",{"2":{"20":1}}],["1939",{"2":{"20":1}}],["1938",{"2":{"20":1}}],["192",{"2":{"17":1}}],["19",{"2":{"7":1,"9":2,"20":2,"24":4}}],["166271",{"2":{"24":1}}],["1666",{"2":{"20":1}}],["167615",{"2":{"24":1}}],["167978",{"2":{"24":1}}],["167342",{"2":{"24":1}}],["164965",{"2":{"24":1}}],["16266",{"2":{"24":1}}],["165206",{"2":{"24":1}}],["1657",{"2":{"22":1}}],["163642",{"2":{"24":1}}],["1631",{"2":{"22":1}}],["16322",{"2":{"20":1}}],["16817",{"2":{"24":1}}],["1681",{"2":{"20":1}}],["168",{"2":{"16":2}}],["160",{"2":{"16":2}}],["1605",{"2":{"11":1}}],["1602",{"2":{"11":1}}],["169916",{"2":{"24":1}}],["1690",{"2":{"20":2}}],["169",{"2":{"8":1}}],["1613",{"2":{"24":1}}],["161",{"2":{"8":1}}],["16",{"2":{"7":1,"9":2,"16":2,"18":1,"24":6,"27":1}}],["16x16",{"2":{"4":1}}],["13651−x2",{"2":{"25":1}}],["1365077871809465",{"2":{"25":1,"26":1}}],["136649",{"2":{"24":1}}],["135568",{"2":{"24":1}}],["13949e",{"2":{"24":1}}],["137308",{"2":{"24":1}}],["1381",{"2":{"20":1}}],["1303",{"2":{"20":1}}],["130",{"2":{"20":1}}],["13202e",{"2":{"24":1}}],["132",{"2":{"20":1}}],["1324",{"2":{"11":1}}],["1349",{"2":{"20":1}}],["131326",{"2":{"24":1}}],["131",{"2":{"17":1}}],["1314",{"2":{"11":1}}],["133",{"2":{"16":2}}],["13",{"2":{"7":1,"9":2,"16":2,"24":6}}],["114347",{"2":{"24":1}}],["118746",{"2":{"24":1}}],["11847",{"2":{"20":1}}],["112935",{"2":{"24":1}}],["112936",{"2":{"24":1}}],["11292",{"2":{"20":1}}],["11\\tloss",{"2":{"22":1}}],["111",{"2":{"20":1}}],["1118",{"2":{"20":1}}],["116028",{"2":{"24":1}}],["116",{"2":{"20":1}}],["1165",{"2":{"20":1}}],["113252",{"2":{"24":1}}],["113737",{"2":{"24":1}}],["113",{"2":{"20":1}}],["1134",{"2":{"20":1}}],["11933e",{"2":{"24":1}}],["119",{"2":{"14":1}}],["11929",{"2":{"4":1}}],["11002+x2−0",{"2":{"25":1}}],["11002142482799021",{"2":{"25":1,"26":1}}],["110",{"2":{"14":1,"20":2}}],["11",{"2":{"7":1,"9":3,"17":1,"18":1,"22":1,"24":6,"27":1}}],["106037",{"2":{"24":1}}],["10436e",{"2":{"24":1}}],["1047",{"2":{"20":1}}],["10373e",{"2":{"24":1}}],["10331e",{"2":{"24":1}}],["10g",{"2":{"22":2}}],["107066",{"2":{"24":1}}],["107",{"2":{"20":1}}],["10942e",{"2":{"24":1}}],["109",{"2":{"20":1}}],["1083",{"2":{"20":1}}],["1087",{"2":{"20":1}}],["108",{"2":{"20":2}}],["1084",{"2":{"20":1}}],["1051",{"2":{"20":1}}],["105816",{"2":{"24":1}}],["1058",{"2":{"20":1}}],["10x",{"2":{"19":1}}],["10095−0",{"2":{"25":1}}],["10094513566229477",{"2":{"25":1,"26":1}}],["10099e",{"2":{"24":1}}],["10089",{"2":{"20":1}}],["10055",{"2":{"20":1}}],["100",{"2":{"18":1,"20":1,"27":1}}],["1000",{"2":{"16":2,"17":1}}],["102",{"2":{"16":2,"20":1}}],["101734",{"2":{"24":1}}],["101013",{"2":{"24":1}}],["101\\tloss",{"2":{"22":1}}],["101",{"2":{"8":4,"9":4}}],["10",{"2":{"3":1,"15":4,"16":2,"22":7,"24":7,"26":2}}],["14426",{"2":{"25":1}}],["14426087460968356",{"2":{"25":1,"26":1}}],["144489",{"2":{"24":1}}],["1499767933395886",{"2":{"25":1,"26":1}}],["1492",{"2":{"11":1}}],["143",{"2":{"20":1}}],["1431",{"2":{"20":1}}],["14893",{"2":{"20":1}}],["148",{"2":{"20":1}}],["1488",{"2":{"20":1}}],["1405",{"2":{"20":2}}],["1409",{"2":{"11":1}}],["142434",{"2":{"24":1}}],["1421",{"2":{"20":1}}],["142",{"2":{"20":1}}],["1425",{"2":{"20":1}}],["145218",{"2":{"24":1}}],["145635",{"2":{"20":1}}],["145",{"2":{"20":1}}],["1461",{"2":{"20":1}}],["147",{"2":{"16":2,"17":3}}],["14",{"2":{"3":1,"24":6}}],["124725",{"2":{"24":1}}],["124619",{"2":{"24":1}}],["120989",{"2":{"24":1}}],["12655e",{"2":{"24":1}}],["126364",{"2":{"24":1}}],["1261",{"2":{"20":1}}],["123",{"2":{"20":1}}],["12716",{"2":{"20":1}}],["125013",{"2":{"24":1}}],["12511e",{"2":{"24":1}}],["12562e",{"2":{"24":1}}],["125",{"2":{"20":3}}],["122485",{"2":{"24":1}}],["122896",{"2":{"24":1}}],["1228",{"2":{"20":1}}],["12281",{"2":{"20":1}}],["122",{"2":{"20":1}}],["1291",{"2":{"20":1}}],["129",{"2":{"17":5,"20":2}}],["128",{"2":{"16":8,"17":20,"20":2}}],["1210",{"2":{"20":1}}],["12134",{"2":{"20":1}}],["1211",{"2":{"20":1}}],["1218",{"2":{"20":1}}],["121",{"2":{"8":1,"20":1}}],["12",{"2":{"3":1,"18":1,"22":10,"24":7,"27":1}}],["1",{"2":{"0":1,"3":28,"5":1,"9":1,"11":1,"14":2,"15":1,"16":8,"17":46,"18":4,"20":67,"21":5,"22":16,"24":58,"25":6,"26":13,"27":4}}],["pysr",{"2":{"19":1}}],["pkg",{"2":{"12":4,"13":9,"18":1,"27":1}}],["p",{"2":{"11":2,"22":4}}],["pp",{"2":{"11":6}}],["phase",{"2":{"3":1}}],["printf",{"2":{"20":1,"22":2}}],["println",{"2":{"18":2,"27":2}}],["private",{"0":{"5":1},"2":{"5":1}}],["processor",{"2":{"18":1,"27":1}}],["processing",{"2":{"4":1,"11":1}}],["proceedings",{"2":{"11":6}}],["product",{"2":{"3":2}}],["proj",{"2":{"3":1}}],["projection",{"2":{"3":2}}],["problem",{"2":{"19":1,"22":3,"23":1,"26":1}}],["problems",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1}}],["probability",{"2":{"3":2}}],["prob",{"2":{"3":2,"22":2}}],["preallocationtoolsreversediffext",{"2":{"20":1}}],["preallocationtools",{"2":{"20":2}}],["precompile",{"2":{"18":1,"27":1}}],["precompiled",{"2":{"14":4,"20":116}}],["precompiling",{"2":{"14":2,"20":58}}],["prerequisites",{"2":{"14":1}}],["preprocessing",{"0":{"10":1}}],["preprint",{"2":{"4":1,"11":3}}],["pretrained=true",{"2":{"9":1,"16":1}}],["pretrained=false",{"2":{"7":1}}],["pretrained",{"0":{"9":1},"1":{"10":1},"2":{"7":7,"8":24,"9":6,"10":1,"16":2}}],["preserves",{"2":{"3":1}}],["present",{"2":{"3":1}}],["preferred",{"2":{"3":1}}],["pre",{"2":{"1":1}}],["plot",{"2":{"21":2,"22":2,"26":1}}],["plain",{"2":{"22":1}}],["platform",{"2":{"18":1,"27":1}}],["planes",{"2":{"3":10}}],["plus",{"2":{"15":2,"16":2,"17":21,"26":1}}],["please",{"2":{"3":1,"14":1}}],["performs",{"2":{"26":1}}],["perform",{"2":{"26":2}}],["performance",{"2":{"22":2}}],["permutes",{"2":{"5":1}}],["period",{"2":{"3":2}}],["periodicity",{"2":{"3":1}}],["periodic",{"2":{"3":5}}],["periodicembedding",{"2":{"2":1,"3":4}}],["periods",{"2":{"3":6}}],["perceptron",{"0":{"15":1},"2":{"3":1,"15":1}}],["point",{"2":{"3":1}}],["points",{"2":{"3":3}}],["points=nothing",{"2":{"3":1}}],["possible",{"2":{"3":1}}],["position=",{"2":{"21":1}}],["positional",{"2":{"3":1}}],["position",{"2":{"3":2}}],["polynomial",{"2":{"0":7,"2":1}}],["packing",{"2":{"20":1}}],["packages",{"2":{"22":2}}],["package",{"0":{"20":1},"2":{"3":1,"13":1}}],["page",{"2":{"18":1,"27":1}}],["pad=3",{"2":{"17":1}}],["pad=1",{"2":{"16":20,"17":17}}],["pango",{"2":{"20":1}}],["pang",{"2":{"11":1}}],["pattern",{"2":{"11":5}}],["patches",{"2":{"3":1,"11":1}}],["patchembedding",{"2":{"2":1,"3":1}}],["patch",{"2":{"3":6}}],["pair",{"2":{"3":1}}],["pass",{"2":{"3":1,"9":1}}],["passed",{"2":{"3":1}}],["part",{"2":{"22":2,"26":1}}],["particles",{"2":{"3":1}}],["parallel",{"2":{"17":8,"26":1}}],["parameter",{"2":{"22":1}}],["parameters",{"2":{"10":1,"11":1,"15":6,"16":28,"17":42,"26":8}}],["params",{"2":{"3":4}}],["ps",{"2":{"3":5,"22":14,"24":2,"26":6}}],["pj",{"2":{"0":1}}],["pn−1",{"2":{"0":1}}],["p1",{"2":{"0":1}}],["p0",{"2":{"0":1}}],["lbfgs",{"2":{"22":2}}],["llvm",{"2":{"18":1,"27":1}}],["l",{"2":{"4":1,"11":3,"19":2,"22":4}}],["live",{"2":{"25":1}}],["libass",{"2":{"20":1}}],["libxrender",{"2":{"20":1}}],["libllvm",{"2":{"18":1,"27":1}}],["literate",{"2":{"18":2,"27":2}}],["linewidth=3",{"2":{"21":3}}],["lines",{"2":{"21":3}}],["linesearches",{"2":{"20":1}}],["linearsolvekernelabstractionsext",{"2":{"20":1}}],["linearsolverecursivearraytoolsext",{"2":{"20":1}}],["linearsolveenzymeext",{"2":{"20":1}}],["linearsolve",{"2":{"20":4}}],["linear",{"2":{"11":1}}],["linearinterpolation",{"2":{"3":1}}],["linux",{"2":{"18":2,"27":2}}],["liu",{"2":{"11":2}}],["list",{"2":{"9":1}}],["like",{"2":{"3":1,"5":1,"14":1,"19":1}}],["limit",{"2":{"18":1,"27":1}}],["limited",{"2":{"3":4}}],["limitations",{"2":{"3":1}}],["local",{"2":{"19":1}}],["location",{"2":{"3":2}}],["lossfunctionsext",{"2":{"20":2}}],["loss",{"2":{"19":2,"22":5}}],["looks",{"2":{"19":1}}],["look",{"2":{"14":1,"16":1}}],["loopvectorization",{"2":{"3":1,"20":3}}],["loading",{"0":{"17":1}}],["load",{"2":{"8":2,"9":5,"16":4,"17":2}}],["loads",{"2":{"7":3,"8":8}}],["loaded",{"2":{"3":2,"9":1}}],["lt",{"2":{"3":1,"11":1}}],["label=l",{"2":{"21":3}}],["latinhypercubesampling",{"2":{"20":1}}],["latexify",{"2":{"20":1,"25":1}}],["latest",{"2":{"12":1}}],["large",{"2":{"7":1,"8":2,"11":1}}],["laws",{"2":{"3":1}}],["last",{"2":{"3":9,"19":1}}],["layer=returns",{"2":{"3":1}}],["layer=nothing",{"2":{"3":2}}],["layer",{"0":{"15":1},"2":{"3":57,"7":1,"15":3,"16":34,"17":84,"22":2,"24":4,"26":14}}],["layers",{"0":{"3":1},"2":{"0":1,"2":13,"3":25,"7":2,"15":2,"26":1}}],["luxmlutilsext",{"2":{"20":2}}],["luxlossfunctionsext",{"2":{"20":2}}],["luxlibreversediffext",{"2":{"20":2}}],["luxlibtrackerext",{"2":{"20":2}}],["luxlibenzymeext",{"2":{"20":2}}],["luxlibloopvectorizationext",{"2":{"20":2}}],["luxlibsleefpiratesext",{"2":{"20":2}}],["luxlib",{"2":{"14":1,"20":5}}],["luxreversediffext",{"2":{"20":1}}],["luxtrackerext",{"2":{"20":2}}],["luxenzymeext",{"2":{"20":2}}],["luxcomponentarraysext",{"2":{"20":2}}],["luxcorearrayinterfacereversediffext",{"2":{"20":1,"22":4}}],["luxcorearrayinterfacetrackerext",{"2":{"20":1}}],["luxcore",{"2":{"7":3,"8":8,"20":2,"22":2}}],["luxcuda",{"2":{"13":1}}],["luxdl",{"2":{"12":1}}],["lux",{"0":{"7":1},"2":{"1":1,"3":6,"14":6,"15":2,"16":2,"17":5,"20":7,"22":5,"25":1,"26":1}}],["let",{"2":{"14":1,"16":1,"19":1,"22":1,"23":1,"25":1,"26":1}}],["level",{"2":{"7":1,"11":1}}],["length",{"2":{"3":2}}],["learning",{"2":{"1":1,"3":1,"11":1}}],["legendre",{"2":{"0":3,"2":1}}],["element",{"2":{"25":1}}],["else",{"2":{"3":1}}],["eq",{"2":{"25":1,"26":1}}],["equation",{"2":{"19":2}}],["equations",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"25":4}}],["equal",{"2":{"3":2}}],["epyc",{"2":{"18":1,"27":1}}],["easily",{"2":{"26":1}}],["easy",{"2":{"12":1,"26":1}}],["each",{"2":{"7":2}}],["erhan",{"2":{"11":1}}],["efficient",{"2":{"11":1}}],["embed",{"2":{"3":2}}],["embedding",{"2":{"3":10}}],["enzymechainrulescoreext",{"2":{"20":1}}],["enzymestaticarraysext",{"2":{"20":1}}],["enzymespecialfunctionsext",{"2":{"20":1}}],["enzymelogexpfunctionsext",{"2":{"20":1}}],["enzyme",{"2":{"20":5}}],["engine",{"2":{"19":1}}],["environment",{"2":{"18":1,"27":1}}],["ensure",{"2":{"5":1}}],["enforces",{"2":{"3":1}}],["end",{"2":{"3":1,"18":3,"21":1,"22":9,"27":3}}],["entry",{"2":{"3":1}}],["enum",{"2":{"3":3}}],["e",{"2":{"3":1,"11":1}}],["et",{"2":{"3":2,"7":1,"8":7}}],["ext",{"2":{"22":2}}],["extrema",{"2":{"22":1}}],["extractor",{"2":{"16":2}}],["extending",{"2":{"3":1}}],["extended",{"2":{"3":1}}],["exotic",{"2":{"5":1}}],["except",{"2":{"3":1}}],["example",{"2":{"3":3,"25":1}}],["expects",{"2":{"25":2}}],["experimental",{"2":{"0":1,"22":2}}],["expressionmodule",{"2":{"25":1}}],["expression",{"0":{"25":1,"26":1},"2":{"19":1,"23":1,"25":2,"26":2}}],["expressions",{"2":{"3":4,"25":2}}],["expr",{"2":{"3":4}}],["expansion",{"2":{"0":6}}],["evaloptions",{"2":{"3":1}}],["evaloptions=evaloptions",{"2":{"3":1}}],["evaluation",{"2":{"3":2}}],["eval",{"2":{"3":4,"26":4}}],["evensin",{"2":{"0":1}}],["=vv",{"2":{"19":1}}],["=val",{"2":{"3":1}}],["=∑i",{"2":{"19":2}}],["=u3",{"2":{"19":2}}],["=>",{"2":{"15":4,"16":26,"17":21,"22":3,"26":4}}],["===",{"2":{"22":1}}],["==",{"2":{"3":2,"22":2}}],["=",{"2":{"0":1,"3":27,"7":2,"10":2,"15":11,"16":92,"17":92,"18":4,"21":2,"22":33,"23":1,"24":3,"25":4,"26":24,"27":4}}],["komodakis",{"2":{"8":1,"11":1}}],["kolter",{"2":{"8":1,"11":1}}],["kolesnikov",{"2":{"4":1}}],["krizhevsky",{"2":{"7":1,"11":1}}],["kron",{"2":{"3":1}}],["know",{"2":{"5":1}}],["known",{"2":{"3":1}}],["k",{"2":{"3":2,"11":6}}],["kwargs",{"2":{"3":11,"7":1,"22":3}}],["kwargs=",{"2":{"3":6}}],["keutzer",{"2":{"11":1}}],["key",{"2":{"3":1}}],["keyword",{"2":{"0":6,"3":12,"7":3,"8":8}}],["kerneldensity",{"2":{"20":1}}],["kernel",{"2":{"3":4}}],["kind",{"2":{"0":1}}],["just",{"2":{"14":1,"15":1,"17":1}}],["juliahybrid",{"2":{"26":2}}],["juliahamiltoniannn",{"2":{"3":1}}],["juliay",{"2":{"24":1}}],["juliats",{"2":{"24":1}}],["juliatensorproductlayer",{"2":{"3":1}}],["juliaude",{"2":{"22":1}}],["juliausing",{"2":{"13":4,"14":1,"16":1,"17":1,"18":1,"20":1,"27":1}}],["juliarng",{"2":{"22":1}}],["juliaresnext",{"2":{"8":1}}],["juliaresnet",{"2":{"8":1}}],["julialang",{"2":{"18":1,"27":1}}],["julialegendre",{"2":{"0":1}}],["julia",{"2":{"12":2,"18":5,"22":2,"27":5}}],["juliawideresnet",{"2":{"8":1}}],["juliagooglenet",{"2":{"8":1}}],["juliadensenet",{"2":{"8":1}}],["juliadynamicexpressionslayer",{"2":{"3":1}}],["juliavgg",{"2":{"7":2}}],["juliavision",{"2":{"16":1}}],["juliavisiontransformer",{"2":{"7":1}}],["juliavisiontransformerencoder",{"2":{"3":1}}],["juliaviposembedding",{"2":{"3":1}}],["juliaalexnet",{"2":{"7":1}}],["juliafunction",{"2":{"21":1,"22":1}}],["juliaflatten",{"2":{"5":1}}],["juliafast",{"2":{"5":1}}],["juliafourier",{"2":{"0":1}}],["juliast",{"2":{"26":1}}],["juliasrmodel",{"2":{"25":1}}],["juliasol",{"2":{"22":2}}],["juliasqueezenet",{"2":{"8":1}}],["juliashould",{"2":{"5":1}}],["juliasecond",{"2":{"5":1}}],["juliasplinelayer",{"2":{"3":1}}],["juliasin",{"2":{"0":1}}],["juliaperiodicembedding",{"2":{"3":1}}],["juliapatchembedding",{"2":{"3":1}}],["juliapolynomial",{"2":{"0":1}}],["juliamach",{"2":{"25":1}}],["juliamodel",{"2":{"15":2}}],["juliamobilenet",{"2":{"8":1}}],["juliamultiheadselfattention",{"2":{"3":1}}],["juliamlp",{"2":{"3":1}}],["julia>",{"2":{"3":14,"12":2}}],["juliajulia>",{"2":{"3":2,"12":2}}],["juliaconvmixer",{"2":{"8":1}}],["juliaconvbatchnormactivation",{"2":{"3":1}}],["juliaconvnormactivation",{"2":{"3":1}}],["juliacos",{"2":{"0":1}}],["juliaclasstokens",{"2":{"3":1}}],["juliachebyshev",{"2":{"0":1}}],["jia",{"2":{"11":1}}],["jll",{"2":{"20":6}}],["jld2",{"2":{"9":2,"16":3}}],["jl",{"0":{"8":1,"12":1,"17":1},"2":{"3":11,"5":1,"9":1,"12":4,"14":4,"15":2,"17":1,"18":1,"19":3,"22":2,"25":5,"27":1}}],["j",{"2":{"0":2,"4":1,"11":3}}],["j2x",{"2":{"0":2}}],["jth",{"2":{"0":2}}],["idx",{"2":{"25":4}}],["idxs",{"2":{"3":7}}],["ieee",{"2":{"11":6}}],["iandola",{"2":{"8":1,"11":1}}],["implications",{"2":{"22":2}}],["important",{"2":{"25":1}}],["imports",{"0":{"20":1}}],["imported",{"0":{"8":1},"2":{"9":1}}],["imsize",{"2":{"7":2}}],["images",{"2":{"10":1}}],["imagenet",{"2":{"7":1,"11":1,"16":1}}],["image",{"2":{"3":5,"4":2,"7":1,"11":2}}],["iteration",{"2":{"22":24}}],["iter",{"2":{"22":4}}],["its",{"2":{"12":1}}],["it",{"2":{"3":3,"25":1,"26":6}}],["i",{"2":{"3":5,"11":1,"19":1}}],["if",{"2":{"0":2,"3":5,"5":1,"7":3,"8":8,"9":1,"12":1,"14":1,"15":1,"18":3,"22":2,"27":3}}],["isdefined",{"2":{"18":3,"27":3}}],["issubset",{"2":{"3":1}}],["is",{"2":{"0":4,"3":19,"4":1,"5":1,"7":3,"8":8,"12":1,"14":1,"15":1,"19":4,"22":2,"24":1,"25":4,"26":1}}],["instead",{"2":{"19":1}}],["install",{"0":{"12":1},"2":{"12":1,"13":1}}],["info",{"2":{"18":2,"27":2}}],["information",{"2":{"3":3,"4":1,"11":1}}],["included",{"2":{"14":1}}],["inchannels",{"2":{"7":2}}],["invertedindices",{"2":{"20":1}}],["inverted",{"2":{"11":1}}],["initialparameters",{"2":{"26":1}}],["initialstates",{"2":{"26":1}}],["initializer",{"2":{"3":1}}],["initialized",{"2":{"3":1}}],["init",{"2":{"3":6}}],["init=zeros32",{"2":{"3":1}}],["indices",{"2":{"3":2}}],["index",{"0":{"2":1}}],["int",{"2":{"3":6,"7":2,"8":8}}],["integration",{"2":{"25":1}}],["integers",{"2":{"3":1}}],["integer",{"2":{"3":6}}],["intervalarithmetic",{"2":{"20":1}}],["intervalarithmeticforwarddiffext",{"2":{"20":2}}],["intervals",{"2":{"19":1}}],["interactive",{"2":{"18":1,"27":1}}],["interactiveutils",{"2":{"18":2,"27":2}}],["international",{"2":{"11":1}}],["internaldynamicexpressionwrapper",{"2":{"26":4}}],["internal",{"2":{"3":1}}],["intermediate",{"2":{"7":1}}],["interface",{"2":{"3":1}}],["interpolation",{"2":{"3":1}}],["into",{"2":{"3":1}}],["int=1",{"2":{"0":11}}],["inputs",{"2":{"3":5}}],["input",{"2":{"3":22,"7":2,"22":2,"24":1}}],["in",{"2":{"0":7,"3":30,"4":1,"5":1,"9":1,"11":7,"12":3,"14":2,"15":2,"19":2,"20":58,"22":3,"25":2}}],["x4+2",{"2":{"25":1}}],["x4⋅−0",{"2":{"25":1}}],["x4",{"2":{"25":5,"26":5}}],["x3−x2",{"2":{"25":1}}],["x3",{"2":{"25":6,"26":6}}],["x3c",{"2":{"3":1,"22":2}}],["xoshiro",{"2":{"22":1}}],["xorg",{"2":{"20":1}}],["xlabel=l",{"2":{"21":1}}],["x86",{"2":{"18":1,"27":1}}],["xie",{"2":{"8":1,"11":1}}],["xn",{"2":{"3":1}}],["x2−0",{"2":{"25":2}}],["x2+x2⋅x1⋅",{"2":{"25":1}}],["x2+x2⋅",{"2":{"25":1}}],["x26",{"2":{"18":4,"22":6,"27":4}}],["x2",{"2":{"3":8,"25":16,"26":16}}],["x1+",{"2":{"25":1}}],["x1",{"2":{"3":8,"25":3,"26":3}}],["x",{"2":{"0":11,"3":9,"4":1,"5":7,"11":1,"19":2,"22":18,"24":2,"25":1}}],["over",{"2":{"26":1}}],["overload",{"2":{"22":2}}],["ok",{"2":{"23":1}}],["odeproblem",{"2":{"22":1}}],["ode",{"2":{"19":1,"22":1}}],["oddarguments",{"2":{"0":1}}],["our",{"2":{"19":2}}],["out",{"2":{"3":3,"19":1}}],["output",{"2":{"3":4,"7":1,"25":1}}],["os",{"2":{"18":1,"27":1}}],["only",{"2":{"3":1}}],["oneapi",{"2":{"13":1}}],["one",{"2":{"3":1,"8":6,"25":1}}],["on",{"2":{"3":5,"11":6,"12":1,"18":1,"19":3,"22":2,"26":1,"27":1}}],["original",{"2":{"22":1}}],["ordinarydiffeqcoreenzymecoreext",{"2":{"20":1}}],["ordinarydiffeqcore",{"2":{"20":2}}],["ordinarydiffeqverner",{"2":{"20":3}}],["order",{"2":{"3":1,"19":3}}],["orcjit",{"2":{"18":1,"27":1}}],["org",{"2":{"18":1,"27":1}}],["or",{"2":{"3":2,"8":6,"13":1,"25":1}}],["optprob",{"2":{"22":6}}],["optf",{"2":{"22":5}}],["optimisers",{"2":{"22":1}}],["optimizationproblem",{"2":{"22":3}}],["optimizationmlutilsext",{"2":{"20":2}}],["optimizationmldatadevicesext",{"2":{"20":2}}],["optimizationzygoteext",{"2":{"20":2}}],["optimizationreversediffext",{"2":{"20":2}}],["optimizationenzymeext",{"2":{"20":2}}],["optimizationfunction",{"2":{"22":2}}],["optimizationfinitediffext",{"2":{"20":1}}],["optimizationforwarddiffext",{"2":{"20":2}}],["optimizationbase",{"2":{"20":8}}],["optimizationoptimisers",{"2":{"20":3}}],["optimizationoptimjl",{"2":{"20":3}}],["optimization",{"2":{"20":3,"22":1}}],["optimize",{"2":{"19":2}}],["optim",{"2":{"20":1}}],["optimal",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1,"22":1,"23":1,"26":1}}],["optional",{"2":{"3":1}}],["options=",{"2":{"26":4}}],["options",{"2":{"3":4}}],["openml",{"2":{"20":1}}],["operators=",{"2":{"3":2,"25":1,"26":1}}],["operators",{"2":{"3":2,"25":1}}],["operatorenummodule",{"2":{"25":1,"26":4}}],["operatorenum",{"2":{"3":4,"25":1,"26":5}}],["operator",{"2":{"3":3}}],["official",{"2":{"18":1,"27":1}}],["of",{"2":{"0":13,"3":49,"5":3,"7":4,"8":14,"9":1,"11":6,"12":1,"15":1,"19":2,"22":1,"25":2}}],["others",{"2":{"4":1,"11":1}}],["otherwise",{"2":{"3":1,"8":1}}],["other",{"2":{"0":1,"3":1}}],["dynamics",{"2":{"21":2,"22":2,"26":1}}],["dynamicquantities",{"2":{"20":1}}],["dynamicquantitiesscientifictypesext",{"2":{"20":2}}],["dynamicdiff",{"2":{"20":1}}],["dynamicexpressionssymbolicutilsext",{"2":{"20":2}}],["dynamicexpressionsloopvectorizationext",{"2":{"20":2}}],["dynamicexpressionslayer",{"2":{"2":1,"3":3,"26":2}}],["dynamicexpressionsoptimext",{"2":{"20":2}}],["dynamicexpressions",{"2":{"3":6,"19":1,"20":4,"25":4,"26":4}}],["dally",{"2":{"11":1}}],["data",{"0":{"24":1},"2":{"3":1,"24":2,"25":3}}],["datainterpolations",{"2":{"3":2}}],["du",{"2":{"22":3}}],["dudt",{"2":{"22":2}}],["dual",{"2":{"5":1}}],["due",{"2":{"3":1}}],["dzamba",{"2":{"4":1}}],["does",{"2":{"26":1}}],["doesn",{"2":{"3":1}}],["do",{"2":{"15":2,"19":1,"22":2,"26":2}}],["dollár",{"2":{"11":1}}],["docs",{"2":{"9":1,"25":1}}],["documentation",{"2":{"3":2}}],["don",{"2":{"5":1}}],["dosovitskiy",{"2":{"3":1,"4":1}}],["d",{"2":{"3":2,"4":1,"11":2}}],["dispatch",{"2":{"22":2}}],["distributionschainrulescoreext",{"2":{"20":1}}],["distributionstestext",{"2":{"20":1}}],["distributions",{"2":{"20":3}}],["diffeqnoiseprocessreversediffext",{"2":{"20":1}}],["diffeqnoiseprocess",{"2":{"20":2}}],["diffeqcallbacks",{"2":{"20":1}}],["diffeqbaseunitfulext",{"2":{"20":2}}],["diffeqbaseenzymeext",{"2":{"20":1}}],["diffeqbasereversediffext",{"2":{"20":1}}],["diffeqbasedistributionsext",{"2":{"20":1}}],["diffeqbasetrackerext",{"2":{"20":1}}],["diffeqbasesparsearraysext",{"2":{"20":2}}],["diffeqbasechainrulescoreext",{"2":{"20":2}}],["diffeqbase",{"2":{"20":8}}],["differentiationinterfaceenzymeext",{"2":{"20":1}}],["differentiationinterfacereversediffext",{"2":{"20":1}}],["differentiationinterfacetrackerext",{"2":{"20":1}}],["differentiationinterfacezygoteext",{"2":{"20":1}}],["differentiationinterfacefinitediffext",{"2":{"20":1}}],["differentiationinterfaceforwarddiffext",{"2":{"20":2}}],["differentiationinterface",{"2":{"20":6}}],["differential",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":1}}],["different",{"2":{"3":1,"22":1}}],["directly",{"2":{"3":1}}],["divisor",{"2":{"3":1}}],["dims",{"2":{"3":15}}],["dim=1",{"2":{"0":1}}],["dimensions",{"2":{"3":6,"5":2}}],["dimension",{"2":{"0":6,"3":6,"5":1}}],["dim",{"2":{"0":11,"3":4,"5":3}}],["dropout",{"2":{"3":13,"7":3,"16":4}}],["desired",{"2":{"22":2}}],["debug",{"2":{"18":1,"22":2,"27":1}}],["defining",{"2":{"14":1}}],["defaultmeasuresext",{"2":{"20":1}}],["default",{"2":{"3":5,"18":1,"27":1}}],["defaults",{"2":{"3":4,"8":2}}],["der",{"2":{"11":1}}],["derivatives",{"2":{"3":1}}],["dehghani",{"2":{"4":1}}],["dependency",{"2":{"14":1,"20":44}}],["dependencies",{"2":{"14":1,"20":14}}],["depth",{"2":{"3":3,"7":3,"8":13}}],["deprecated",{"2":{"3":2}}],["deprecation",{"2":{"0":1}}],["device",{"2":{"3":1}}],["densenormactdropoutblock",{"2":{"15":2}}],["densenet",{"2":{"2":1,"8":3}}],["densely",{"2":{"11":1}}],["dense",{"2":{"3":5,"15":8,"16":6,"17":1,"22":3,"23":1,"26":4}}],["details",{"2":{"3":1}}],["deeper",{"2":{"11":1}}],["deep",{"2":{"1":1,"11":4}}],["niterations=100",{"2":{"25":1}}],["nlsolversbase",{"2":{"20":1}}],["nn",{"2":{"19":2}}],["nnlibfftwext",{"2":{"20":2}}],["nnlibforwarddiffext",{"2":{"14":1}}],["nnlibenzymecoreext",{"2":{"14":1}}],["nnlib",{"2":{"14":3,"17":8,"20":1}}],["num",{"2":{"18":1,"27":1}}],["number",{"2":{"0":6,"3":14,"7":2,"15":1}}],["nvidia",{"2":{"13":1}}],["nclasses",{"2":{"7":2}}],["names",{"2":{"25":1}}],["name",{"2":{"7":3,"8":6}}],["namedtuple",{"2":{"3":5,"25":1}}],["native",{"0":{"7":1}}],["nk",{"2":{"3":1}}],["n1",{"2":{"3":1}}],["nheads",{"2":{"3":1}}],["new",{"2":{"26":1}}],["need",{"2":{"8":1,"9":1,"11":1,"16":1,"24":1,"26":1}}],["needed",{"2":{"3":1}}],["nested",{"2":{"3":2}}],["networks",{"2":{"4":1,"11":6}}],["network",{"0":{"22":1,"26":1},"2":{"3":3,"19":2,"22":2,"23":1,"26":3}}],["neural",{"0":{"22":1,"26":1},"2":{"3":3,"4":2,"11":4,"19":1,"22":2,"23":1,"26":3}}],["now",{"2":{"22":1,"23":1,"24":1,"26":2}}],["nooplayer",{"2":{"3":1,"17":5}}],["note",{"2":{"3":1,"19":1,"25":1}}],["notes",{"2":{"3":1}}],["not",{"2":{"3":3,"14":1,"22":2,"25":1}}],["nothing",{"2":{"3":6,"16":4,"22":1}}],["nodemodule",{"2":{"25":1}}],["nodes",{"2":{"3":1}}],["node",{"2":{"3":7,"25":1}}],["no",{"2":{"3":3}}],["normal",{"2":{"3":1}}],["normalized",{"2":{"10":1}}],["normalizes",{"2":{"3":1}}],["normalization",{"2":{"3":10,"7":2}}],["norm",{"2":{"3":16}}],["n−1",{"2":{"0":1}}],["nx",{"2":{"0":2}}],["n",{"2":{"0":12,"3":7,"5":1,"11":2,"22":2}}],["write",{"2":{"15":1}}],["wrappedfunction",{"2":{"17":9,"26":1}}],["wrapper",{"2":{"3":1,"15":1}}],["wraps",{"2":{"3":1}}],["would",{"2":{"15":1}}],["wondering",{"2":{"25":1}}],["won",{"2":{"5":1,"22":1}}],["word",{"2":{"18":1,"27":1}}],["words",{"2":{"4":1}}],["worth",{"2":{"4":1}}],["work",{"2":{"3":1,"5":1}}],["was",{"2":{"18":1,"22":6,"27":1}}],["wang",{"2":{"11":1}}],["want",{"0":{"13":1},"2":{"5":1,"12":1,"19":1,"26":1}}],["warning",{"2":{"0":1,"3":1,"22":2}}],["well",{"2":{"26":1}}],["were",{"2":{"15":1,"25":1}}],["we",{"2":{"5":3,"14":1,"15":3,"16":2,"17":1,"19":6,"22":5,"23":2,"24":2,"25":1,"26":7}}],["weinberger",{"2":{"11":1}}],["weissenborn",{"2":{"4":1}}],["weightinitializerschainrulescoreext",{"2":{"14":1}}],["weightinitializers",{"2":{"14":2}}],["weights",{"2":{"7":3,"8":8,"9":4,"16":2}}],["weight",{"2":{"3":4}}],["w",{"2":{"3":1,"11":4}}],["wide",{"2":{"11":1}}],["wideresnet",{"2":{"2":1,"8":3,"9":2}}],["width=8",{"2":{"9":1}}],["width=4",{"2":{"9":2}}],["width=nothing",{"2":{"8":1}}],["width",{"2":{"7":1,"8":2}}],["will",{"2":{"3":2,"12":1,"19":3,"22":1,"25":1,"26":2}}],["with",{"0":{"19":1,"26":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"0":1,"1":1,"3":15,"7":2,"10":1,"11":3,"14":2,"15":1,"16":1,"19":3,"21":1,"22":1,"23":1,"25":1,"26":2}}],["without",{"2":{"0":1}}],["what",{"2":{"5":1}}],["when",{"2":{"7":3,"8":8}}],["whether",{"2":{"3":2}}],["where",{"2":{"0":2,"3":8,"19":2}}],["which",{"2":{"0":6,"3":5,"22":2}}],["tloss",{"2":{"22":2}}],["tspan",{"2":{"22":1}}],["ts",{"2":{"21":4,"22":11,"24":1}}],["targets",{"2":{"24":1}}],["tan",{"2":{"11":1}}],["take",{"2":{"3":1,"14":1,"16":1,"26":1}}],["takes",{"2":{"3":3}}],["ti",{"2":{"19":6}}],["tiny",{"2":{"7":1}}],["time",{"2":{"3":2}}],["t",{"2":{"3":1,"4":1,"5":3,"19":3,"21":4,"22":3}}],["tuse",{"2":{"22":1}}],["tutorial",{"2":{"19":2}}],["tutoials",{"2":{"14":1}}],["tu",{"2":{"11":1}}],["tuple",{"2":{"3":3,"7":1,"25":2,"26":8}}],["turbo",{"2":{"3":1,"26":4}}],["t=0",{"2":{"3":2}}],["typeof",{"2":{"25":4,"26":16}}],["types",{"2":{"5":1}}],["type",{"2":{"3":3,"5":6}}],["thus",{"2":{"19":2}}],["threads",{"2":{"18":2,"27":2}}],["through",{"2":{"3":1}}],["third",{"2":{"3":1}}],["this",{"2":{"3":8,"5":4,"15":2,"18":1,"19":4,"22":7,"24":1,"25":1,"26":1,"27":1}}],["that",{"2":{"3":3,"10":1,"14":1,"15":1,"19":2,"22":2,"23":1,"25":2,"26":4}}],["there",{"2":{"26":1}}],["them",{"2":{"22":1,"26":1}}],["themselves",{"2":{"0":1}}],["they",{"2":{"9":1}}],["their",{"2":{"3":2}}],["then",{"2":{"3":2}}],["these",{"2":{"0":1,"3":2,"5":1,"8":1,"25":1}}],["the",{"0":{"25":1,"26":2},"2":{"0":30,"3":101,"5":4,"7":7,"8":16,"9":4,"10":3,"11":6,"12":7,"13":1,"14":1,"15":3,"16":2,"19":8,"22":11,"23":1,"24":3,"25":9,"26":7}}],["try",{"2":{"23":1}}],["triangularsolve",{"2":{"20":1}}],["trockman",{"2":{"8":1,"11":1}}],["transpose",{"2":{"25":1}}],["transformations",{"2":{"11":1}}],["transformers",{"2":{"4":1}}],["transformer",{"2":{"3":3,"7":2}}],["trackedarray",{"2":{"22":2}}],["trackedreal",{"2":{"22":2}}],["trackerpdmatsext",{"2":{"20":1}}],["tracker",{"2":{"20":2}}],["track",{"2":{"17":20}}],["trained",{"2":{"22":7,"23":1,"24":4,"26":1}}],["training",{"0":{"22":1},"2":{"24":1,"26":1}}],["train",{"2":{"3":3,"22":5,"24":3,"25":2}}],["trajectories",{"2":{"3":1}}],["tree",{"2":{"3":2}}],["true",{"2":{"3":10,"7":5,"8":8,"22":8,"26":1}}],["test",{"2":{"22":3}}],["testing",{"2":{"22":1}}],["term",{"2":{"19":1}}],["terms",{"2":{"0":6}}],["tensorproductbasis",{"2":{"3":1}}],["tensorproductlayer",{"2":{"2":1,"3":1}}],["tensor",{"2":{"3":2}}],["tj",{"2":{"0":1}}],["tn−1",{"2":{"0":1}}],["t1",{"2":{"0":1}}],["t0",{"2":{"0":1}}],["total",{"2":{"15":2,"16":2,"17":1,"26":1}}],["top",{"2":{"9":2}}],["tokens",{"2":{"3":1}}],["to",{"0":{"12":1},"2":{"0":1,"3":33,"5":4,"7":5,"8":3,"9":5,"12":2,"15":1,"16":2,"17":1,"19":4,"22":7,"24":1,"25":5,"26":5}}],["skip",{"2":{"26":1}}],["srmodel",{"2":{"25":1}}],["show",{"2":{"22":1}}],["should",{"2":{"0":1,"3":3,"5":2}}],["shaderabstractions",{"2":{"20":1}}],["sleefpirates",{"2":{"20":1}}],["slow",{"2":{"3":1}}],["scientifictypesext",{"2":{"20":1}}],["scientifictypes",{"2":{"20":1}}],["scimljacobianoperators",{"2":{"20":1}}],["scimlbasemakieext",{"2":{"20":2}}],["scimlbasezygoteext",{"2":{"20":1}}],["scimlbasechainrulescoreext",{"2":{"20":1}}],["scimlbase",{"2":{"20":4}}],["scimloperatorssparsearraysext",{"2":{"20":1}}],["scimloperatorsstaticarrayscoreext",{"2":{"20":1}}],["scimloperators",{"2":{"20":3}}],["scimlstructures",{"2":{"20":1}}],["scimlsensitivity",{"2":{"19":1,"20":3}}],["scale",{"2":{"4":1,"11":1}}],["scaled",{"2":{"3":1}}],["scalar",{"2":{"3":1}}],["szegedy",{"2":{"8":1,"11":1}}],["small",{"2":{"7":1,"8":2}}],["smooth",{"2":{"3":1}}],["save",{"2":{"25":1}}],["saveat=ts",{"2":{"22":1}}],["saved",{"2":{"3":4}}],["sandler",{"2":{"8":1,"11":2}}],["sampled",{"2":{"3":1}}],["same",{"2":{"3":3,"12":1,"22":1,"26":1}}],["specialfunctionsext",{"2":{"20":2}}],["specified",{"2":{"3":2,"7":1}}],["space",{"2":{"22":1}}],["sparseconnectivitytracernnlibext",{"2":{"20":2}}],["sparseconnectivitytracerlogexpfunctionsext",{"2":{"20":1}}],["sparseconnectivitytracer",{"2":{"20":3}}],["sparseconnectivitytracerspecialfunctionsext",{"2":{"20":2}}],["spatial",{"2":{"5":2}}],["spline",{"2":{"3":1}}],["splinelayer",{"2":{"2":1,"3":1}}],["so",{"2":{"23":1,"26":1}}],["sol",{"2":{"21":3,"22":7,"26":2}}],["solves",{"2":{"23":1}}],["solver",{"2":{"22":3}}],["solve",{"2":{"19":1,"22":6,"26":1}}],["solving",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1}}],["some",{"2":{"3":1,"26":1}}],["source",{"2":{"0":6,"3":13,"5":4,"7":4,"8":8}}],["symbolicindexinginterface",{"2":{"20":1}}],["symbolicutilsreversediffext",{"2":{"20":2}}],["symbolicutils",{"2":{"20":4,"25":1}}],["symbolicregressionsymbolicutilsext",{"2":{"20":2}}],["symbolicregressionenzymeext",{"2":{"20":2}}],["symbolicregression",{"2":{"19":1,"20":5,"25":3}}],["symbolic",{"0":{"19":1,"23":1,"24":1,"25":1,"26":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":2,"25":2,"26":1,"27":1},"2":{"19":2,"22":1,"23":1,"24":1,"25":1,"26":2}}],["symbol",{"2":{"7":2,"8":4}}],["symmetries",{"2":{"3":1}}],["systems",{"2":{"4":1,"11":1}}],["system",{"2":{"3":1,"19":1,"22":1}}],["sensealg=quadratureadjoint",{"2":{"22":1}}],["series",{"2":{"13":1}}],["sermanet",{"2":{"11":1}}],["searching",{"2":{"11":1}}],["seconds",{"2":{"14":2,"20":58}}],["second",{"2":{"3":1,"5":1}}],["self",{"2":{"3":2}}],["selects",{"2":{"3":1}}],["see",{"2":{"3":1,"25":1,"26":1}}],["setup",{"2":{"3":2,"7":3,"8":8,"22":3}}],["set",{"2":{"3":4,"7":2}}],["such",{"2":{"19":1}}],["successfully",{"2":{"14":2,"20":58}}],["sutskever",{"2":{"11":1}}],["sun",{"2":{"11":1}}],["support",{"0":{"13":1},"2":{"3":4}}],["supported",{"2":{"3":1}}],["supervision",{"2":{"3":1}}],["sum",{"2":{"3":1}}],["subject",{"2":{"0":1}}],["string",{"2":{"25":1}}],["stride=2",{"2":{"17":8}}],["structured",{"2":{"25":1}}],["std",{"2":{"10":1}}],["step",{"2":{"3":5}}],["stack1",{"2":{"26":1}}],["stacked",{"2":{"3":1}}],["statsfunschainrulescoreext",{"2":{"20":1}}],["statsfunsinversefunctionsext",{"2":{"20":1}}],["statsfuns",{"2":{"20":3}}],["stats=true",{"2":{"17":20}}],["statisticalmeasures",{"2":{"20":3}}],["statisticalmeasuresbase",{"2":{"20":1}}],["statistics",{"2":{"20":1}}],["staticarrayinterfaceoffsetarraysext",{"2":{"20":1}}],["staticarrayinterface",{"2":{"20":1}}],["stateful",{"2":{"22":7}}],["statefulluxlayer",{"2":{"3":1,"22":4}}],["states",{"2":{"15":2,"16":2,"17":1,"26":1}}],["state",{"2":{"3":2,"22":6}}],["start",{"2":{"14":1}}],["started",{"0":{"14":1},"1":{"15":1,"16":1,"17":1,"18":1}}],["stability",{"2":{"5":1}}],["stable",{"2":{"0":1,"5":1}}],["st",{"2":{"3":10,"22":10,"24":2,"26":1}}],["s",{"2":{"3":2,"4":2,"11":5,"13":1,"14":1,"16":1,"22":1,"23":1,"25":1,"26":1}}],["simple",{"2":{"22":1}}],["simply",{"2":{"3":1,"12":1}}],["simonyan",{"2":{"7":2,"11":1}}],["signature",{"2":{"3":3}}],["size",{"2":{"3":20,"7":1,"11":1,"18":1,"27":1}}],["since",{"2":{"3":1,"12":1}}],["sinpi",{"2":{"3":3}}],["sin⁡",{"2":{"0":3}}],["sines",{"2":{"3":1}}],["sine",{"2":{"0":2}}],["sin",{"2":{"0":1,"2":1}}],["squeezenet",{"2":{"2":1,"8":2,"9":1,"11":1}}],["axislegend",{"2":{"21":1}}],["axis",{"2":{"21":1}}],["ax",{"2":{"21":6}}],["axes",{"2":{"3":1}}],["amd",{"2":{"18":1,"27":1}}],["amdgpudevice",{"2":{"18":1,"27":1}}],["amdgpu",{"2":{"13":1,"18":2,"27":2}}],["affine=true",{"2":{"17":20}}],["after",{"2":{"3":4,"7":2}}],["aggregated",{"2":{"11":1}}],["at",{"2":{"3":1,"4":1,"14":1,"16":1,"19":1}}],["attn",{"2":{"3":1}}],["attention",{"2":{"3":5}}],["autojacvec=reversediffvjp",{"2":{"22":1}}],["auto",{"2":{"18":1,"27":1}}],["autozygote",{"2":{"3":2,"22":2}}],["autoforwarddiff",{"2":{"3":2}}],["autodiff",{"2":{"3":8}}],["autodiff=nothing",{"2":{"3":1}}],["available",{"2":{"3":2,"7":1,"9":2}}],["assume",{"2":{"14":1}}],["asserts",{"2":{"5":1}}],["assert",{"2":{"5":3}}],["ashraf",{"2":{"11":1}}],["as",{"2":{"3":9,"7":1,"12":1,"26":1}}],["above",{"2":{"25":1,"26":1}}],["about",{"0":{"16":1},"2":{"3":1}}],["able",{"2":{"9":1,"16":1}}],["abstol=1e",{"2":{"22":2,"26":1}}],["abstractarray",{"2":{"3":2,"5":2,"22":2}}],["abstractluxlayer",{"2":{"3":1,"22":4}}],["abstractvector",{"2":{"3":2}}],["abs2",{"2":{"3":1,"22":6}}],["adam",{"2":{"22":1}}],["adaptivemeanpool",{"2":{"17":1}}],["adjoint",{"2":{"22":4}}],["addact",{"2":{"17":8}}],["add",{"2":{"5":2,"12":2,"13":5}}],["advances",{"2":{"4":1,"11":1}}],["ad",{"2":{"3":1}}],["accuracy",{"2":{"9":2,"11":1}}],["accelerate",{"2":{"1":1}}],["act",{"2":{"3":5}}],["activation=false",{"2":{"3":1}}],["activation=nnlib",{"2":{"3":1}}],["activation",{"2":{"3":14,"15":1}}],["anguelov",{"2":{"11":1}}],["any",{"2":{"3":1,"22":1}}],["an",{"2":{"3":4,"4":1,"7":1,"14":1}}],["and",{"2":{"0":3,"3":23,"4":2,"5":2,"7":1,"8":3,"10":1,"11":17,"15":1,"19":3,"22":1,"25":1,"26":1}}],["also",{"2":{"16":1}}],["already",{"2":{"14":2,"20":58}}],["alternatively",{"2":{"3":1}}],["all",{"2":{"3":2,"10":1,"11":1}}],["allows",{"2":{"3":1}}],["al",{"2":{"3":2,"7":1,"8":7}}],["alexnet",{"2":{"2":1,"7":2,"9":1,"11":1}}],["along",{"2":{"0":6,"5":1}}],["apart",{"2":{"3":1}}],["appendix",{"0":{"18":1,"27":1}}],["appends",{"2":{"3":1}}],["appropriately",{"2":{"3":1}}],["applications",{"2":{"11":1}}],["applied",{"2":{"0":6}}],["apply",{"2":{"3":2,"22":4}}],["api",{"0":{"0":1,"1":1,"3":1,"5":1,"6":1},"1":{"2":1,"7":1,"8":1,"9":1,"10":1},"2":{"5":1}}],["arxiv",{"2":{"4":2,"11":8}}],["around",{"2":{"3":1,"15":1}}],["architecture",{"2":{"3":1,"19":1}}],["arrayinterfacereversediffext",{"2":{"20":1}}],["arrayinterfacetrackerext",{"2":{"20":1}}],["arrayinterfacegpuarrayscoreext",{"2":{"14":1}}],["arrayinterface",{"2":{"14":1,"20":2}}],["arrays",{"2":{"3":1}}],["array",{"2":{"3":4,"22":1}}],["arguments",{"2":{"0":11,"3":22,"7":6,"8":14}}],["are",{"2":{"0":8,"3":8,"7":1,"9":1,"11":1,"14":1,"22":1,"25":1}}],["a",{"0":{"22":1},"2":{"0":6,"3":28,"4":2,"5":1,"7":4,"8":8,"9":1,"11":7,"14":1,"15":2,"16":2,"19":6,"22":2,"23":2,"26":1}}],["ci",{"2":{"26":1}}],["cv",{"2":{"11":2}}],["cvf",{"2":{"11":1}}],["cs",{"2":{"11":2}}],["certain",{"2":{"5":1}}],["cpu",{"2":{"3":1,"18":1,"27":1}}],["cudnn",{"2":{"13":1}}],["cudadevice",{"2":{"18":1,"27":1}}],["cuda",{"2":{"3":1,"13":1,"18":3,"27":3}}],["cubicspline",{"2":{"3":1}}],["currently",{"2":{"3":2}}],["c",{"2":{"3":3,"11":3}}],["creates",{"2":{"7":1}}],["create",{"2":{"3":2,"7":4,"8":8}}],["classic",{"2":{"19":1}}],["classical",{"2":{"19":1}}],["classifier",{"2":{"16":2}}],["classification",{"2":{"11":1}}],["classes",{"2":{"7":1}}],["class",{"2":{"3":1}}],["classtokens",{"2":{"2":1,"3":1}}],["chu",{"2":{"11":1}}],["chunk",{"2":{"5":3}}],["choose",{"2":{"19":1}}],["choices",{"2":{"7":1}}],["chosen",{"2":{"3":2}}],["chen",{"2":{"11":3}}],["check",{"2":{"5":1,"22":2}}],["chebyshev",{"2":{"0":3,"2":1}}],["channel",{"2":{"3":2}}],["channels",{"2":{"3":8,"7":1}}],["change",{"2":{"0":1}}],["chain",{"2":{"3":2,"15":7,"16":16,"17":19,"22":1,"26":4}}],["chs",{"2":{"3":4}}],["could",{"2":{"26":1}}],["copy",{"2":{"26":1}}],["collect",{"2":{"22":2,"24":1}}],["colorvectorspace",{"2":{"20":1}}],["corrected",{"2":{"22":2}}],["corresponds",{"2":{"3":1}}],["cores",{"2":{"18":1,"27":1}}],["core",{"2":{"18":1,"27":1}}],["code",{"2":{"16":1,"25":1,"26":1}}],["componentarray",{"2":{"22":1,"26":1}}],["componentarraysgpuarraysext",{"2":{"20":1}}],["componentarrayszygoteext",{"2":{"20":2}}],["componentarraysreversediffext",{"2":{"20":2}}],["componentarraysrecursivearraytoolsext",{"2":{"20":2}}],["componentarraystrackerext",{"2":{"20":2}}],["componentarraysscimlbaseext",{"2":{"20":2}}],["componentarrayskernelabstractionsext",{"2":{"20":1}}],["componentarraysoptimisersext",{"2":{"20":1}}],["componentarrays",{"2":{"20":11}}],["compact",{"2":{"22":1}}],["computer",{"0":{"6":1},"1":{"7":1,"8":1,"9":1,"10":1},"2":{"11":6}}],["computes",{"2":{"3":1,"5":1}}],["computation",{"2":{"3":1}}],["combining",{"0":{"26":1}}],["combine",{"2":{"19":1,"26":2}}],["combination",{"2":{"0":1}}],["commit",{"2":{"18":1,"27":1}}],["command",{"2":{"12":2}}],["comes",{"2":{"14":1}}],["com",{"2":{"12":1}}],["concurrentutilities",{"2":{"20":1}}],["concatenated",{"2":{"3":1}}],["contrast",{"2":{"25":1}}],["controller",{"2":{"19":1}}],["control",{"0":{"19":1},"1":{"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"19":2,"22":1,"23":1,"26":1}}],["containing",{"2":{"3":1}}],["connection",{"2":{"17":8}}],["connected",{"2":{"7":2,"11":1}}],["conference",{"2":{"11":6}}],["configurations",{"2":{"22":1}}],["configuration",{"2":{"7":3,"22":1}}],["config",{"2":{"7":2}}],["convolutions",{"2":{"11":1}}],["convolution",{"2":{"7":3}}],["convolutional",{"2":{"3":4,"11":4}}],["convenience",{"2":{"3":1,"15":1}}],["conv",{"2":{"3":3,"16":20,"17":20}}],["convmixer",{"2":{"2":1,"8":3}}],["convbatchnormactivation",{"2":{"2":1,"3":1}}],["convnormactivationblock",{"2":{"16":20}}],["convnormactivation",{"2":{"2":1,"3":3,"16":10}}],["conservation",{"2":{"3":1}}],["constantinterpolation",{"2":{"3":1}}],["constant",{"2":{"3":1}}],["constructor",{"2":{"9":1}}],["construct",{"2":{"3":3,"16":1,"22":3,"26":1}}],["constructs",{"2":{"0":6,"3":5,"15":1}}],["considered",{"2":{"0":1}}],["cost",{"2":{"19":1}}],["cospi",{"2":{"3":3}}],["cos⁡",{"2":{"0":3}}],["cosines",{"2":{"3":1}}],["cosine",{"2":{"0":2}}],["cos",{"2":{"0":2,"2":1,"3":3}}],["causing",{"2":{"22":2}}],["cairo",{"2":{"20":2}}],["cairomakie",{"2":{"20":3,"21":1}}],["categoricaldistributions",{"2":{"20":1}}],["cardinality=64",{"2":{"9":1}}],["cardinality=32",{"2":{"8":1,"9":2}}],["cardinality",{"2":{"8":2}}],["callback",{"2":{"22":5}}],["called",{"2":{"7":3,"8":8}}],["calls",{"2":{"0":1}}],["cases",{"2":{"3":1,"5":1,"12":1}}],["case",{"2":{"3":1,"25":1}}],["can",{"2":{"0":1,"3":1,"9":1,"12":2,"15":1,"16":2,"17":1,"22":1,"23":1,"26":2}}],["ffmpeg",{"2":{"20":1}}],["feature",{"2":{"16":2}}],["feature=2",{"2":{"3":1}}],["feature=1",{"2":{"3":1}}],["fewer",{"2":{"11":1}}],["fcsize",{"2":{"7":2}}],["fns",{"2":{"3":2}}],["fully",{"2":{"7":2}}],["future",{"2":{"3":1}}],["functional",{"2":{"18":2,"27":2}}],["functions",{"0":{"21":1},"2":{"0":8,"3":3,"5":1}}],["function",{"2":{"0":1,"3":16,"5":1,"15":2,"19":1,"21":1,"22":8}}],["familiar",{"2":{"14":1}}],["fastbroadcast",{"2":{"20":1}}],["fastpowerenzymeext",{"2":{"20":1}}],["fastpowerreversediffext",{"2":{"20":1}}],["fastpowertrackerext",{"2":{"20":1}}],["fastpowerforwarddiffext",{"2":{"20":1}}],["fastpower",{"2":{"20":4}}],["fast",{"2":{"5":1}}],["faster",{"2":{"3":2,"5":1}}],["false",{"2":{"3":1,"7":2,"22":4,"26":8}}],["float64",{"2":{"22":1,"24":2,"25":2}}],["float32",{"2":{"3":7}}],["flux",{"0":{"17":1},"2":{"17":1}}],["flexible",{"2":{"3":1}}],["flat",{"2":{"3":1}}],["flattenlayer",{"2":{"16":2}}],["flattens",{"2":{"5":1}}],["flatten",{"2":{"3":2,"5":1,"17":1}}],["flatten=true",{"2":{"3":1}}],["fst",{"2":{"3":3}}],["finetune",{"2":{"26":1}}],["finetuning",{"2":{"26":1}}],["fintetuning",{"2":{"26":1}}],["finish",{"2":{"22":1}}],["finitediffstaticarraysext",{"2":{"20":2}}],["finitediffsparsearraysext",{"2":{"20":1}}],["finitediff",{"2":{"20":3}}],["fitted",{"2":{"26":1}}],["fitting",{"0":{"25":1}}],["fit",{"2":{"25":2}}],["figure",{"2":{"21":1}}],["fig",{"2":{"21":3}}],["file=false",{"2":{"25":1}}],["fileio",{"2":{"20":1}}],["filters",{"2":{"3":2}}],["fixed",{"2":{"3":1}}],["fix1",{"2":{"3":1}}],["first",{"2":{"0":1,"3":1,"5":1,"19":3,"22":1,"24":1}}],["freetypeabstraction",{"2":{"20":1}}],["freely",{"2":{"0":1}}],["framework",{"2":{"3":1}}],["from",{"0":{"8":1,"17":1},"2":{"3":8,"9":2,"17":1,"19":1,"25":2}}],["f",{"2":{"3":6,"11":1}}],["fj",{"2":{"0":1}}],["found",{"2":{"25":1}}],["fourier",{"2":{"0":3,"2":1}}],["follow",{"2":{"25":1}}],["following",{"2":{"7":1,"12":2,"13":1,"15":1,"16":1,"19":1}}],["followed",{"2":{"3":1}}],["forwarddiffext",{"2":{"20":1}}],["forwarddiff",{"2":{"5":1}}],["forwarded",{"2":{"3":3}}],["form",{"2":{"0":6,"19":2}}],["for",{"0":{"24":1},"2":{"0":1,"3":19,"4":1,"5":3,"7":1,"8":1,"9":2,"11":5,"19":1,"22":2,"24":1}}],["block2",{"2":{"15":1,"16":10}}],["block",{"2":{"15":2,"16":20}}],["block1",{"2":{"15":1,"16":10}}],["blocks",{"2":{"3":1}}],["bk",{"2":{"3":1}}],["bn",{"2":{"3":1}}],["b2",{"2":{"3":1}}],["b1",{"2":{"3":3}}],["b",{"2":{"3":3,"11":1}}],["bibliography",{"0":{"4":1,"11":1}}],["bias=false",{"2":{"17":20}}],["bias",{"2":{"3":3}}],["binary",{"2":{"3":1,"25":1,"26":1}}],["by",{"2":{"3":6,"14":1,"19":1,"26":1}}],["bump",{"2":{"19":1}}],["bumper",{"2":{"3":2,"26":4}}],["build",{"2":{"18":1,"27":1}}],["built",{"2":{"1":1}}],["but",{"2":{"3":2,"5":1,"14":1,"15":1,"22":1,"23":1,"26":3}}],["batteries",{"2":{"14":1}}],["batch",{"2":{"7":2}}],["batchnorm=true",{"2":{"9":4}}],["batchnorm",{"2":{"3":1,"7":4,"17":20}}],["batchsize",{"2":{"3":1}}],["batched",{"2":{"3":1}}],["backend",{"2":{"3":4}}],["backends",{"2":{"3":3}}],["based",{"0":{"22":1},"2":{"19":1}}],["base",{"2":{"3":2,"7":1,"8":4,"9":3}}],["basis",{"0":{"0":1},"2":{"0":19,"2":6,"3":10}}],["bottlenecks",{"2":{"11":1}}],["bool=true",{"2":{"3":2}}],["bool=false",{"2":{"3":2,"7":5,"8":16}}],["bool",{"2":{"3":1}}],["boltzreversediffext",{"2":{"20":2}}],["boltztrackerext",{"2":{"20":2}}],["boltz",{"0":{"0":1,"3":1,"12":1},"2":{"0":6,"2":30,"3":13,"5":5,"7":3,"8":8,"12":5,"14":4,"15":1,"20":3}}],["because",{"2":{"25":1}}],["better",{"2":{"22":1}}],["between",{"2":{"7":1}}],["behaved",{"2":{"22":1}}],["behavior",{"2":{"22":2}}],["behind",{"2":{"19":1}}],["being",{"2":{"9":1,"16":1}}],["before",{"2":{"8":1,"9":1,"16":1,"17":1,"26":1}}],["beyer",{"2":{"4":1}}],["best",{"2":{"3":1,"25":5,"26":1}}],["be",{"2":{"0":2,"3":10,"8":6,"9":1,"10":1,"12":1,"25":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/dev/assets/chunks/VPLocalSearchBox.BkzAotSZ.js b/dev/assets/chunks/VPLocalSearchBox.DUhOdal0.js similarity index 99% rename from dev/assets/chunks/VPLocalSearchBox.BkzAotSZ.js rename to dev/assets/chunks/VPLocalSearchBox.DUhOdal0.js index 1dc9252..a88d3cc 100644 --- a/dev/assets/chunks/VPLocalSearchBox.BkzAotSZ.js +++ b/dev/assets/chunks/VPLocalSearchBox.DUhOdal0.js @@ -1,4 +1,4 @@ -var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.Brfltvkk.js";import{u as ss,c as ns}from"./theme.B1egvRb4.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.C0O8Nga3.js"),[])};/*! +var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.Brfltvkk.js";import{u as ss,c as ns}from"./theme.CNGAZXZT.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.DgW2Dxpb.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*! diff --git a/dev/assets/chunks/theme.B1egvRb4.js b/dev/assets/chunks/theme.CNGAZXZT.js similarity index 99% rename from dev/assets/chunks/theme.B1egvRb4.js rename to dev/assets/chunks/theme.CNGAZXZT.js index 5d843c1..5191228 100644 --- a/dev/assets/chunks/theme.B1egvRb4.js +++ b/dev/assets/chunks/theme.CNGAZXZT.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.BkzAotSZ.js","assets/chunks/framework.Brfltvkk.js"])))=>i.map(i=>d[i]); -import{d as m,o as a,c as u,r as c,n as I,a as z,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ge,i as ze,f as Ke,g as pe,h as y,j as v,k as i,l as K,m as re,p as T,q as D,s as Z,v as O,x as ve,y as fe,z as Re,A as We,B as R,F as M,C as H,D as Te,E as x,G as k,H as E,I as Ne,J as ee,K as G,L as q,M as qe,N as we,O as ie,P as he,Q as Ie,R as te,S as Je,U as Ye,V as Xe,W as Me,X as me,Y as Qe,Z as Ze,$ as xe,a0 as et,a1 as Ae,a2 as tt,a3 as nt,a4 as st,a5 as Pe}from"./framework.Brfltvkk.js";const ot=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),at={key:0,class:"VPBackdrop"},rt=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",at)):h("",!0)]),_:1}))}}),it=$(rt,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function lt(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(ze(o)||o.startsWith("#")||!n.startsWith("http")||!Ke(e))return o;const{site:r}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return pe(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:r}=V(),l=y(()=>{var p,b;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,b])=>l.value.label===b.label?[]:{text:b.label,link:ct(b.link||(p==="root"?"/":`/${p}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function ct(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ut={class:"NotFound"},dt={class:"code"},pt={class:"title"},vt={class:"quote"},ft={class:"action"},ht=["href","aria-label"],mt=m({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var r,l,d,p,b;return a(),u("div",ut,[v("p",dt,w(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),v("h1",pt,w(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=v("div",{class:"divider"},null,-1)),v("blockquote",vt,w(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",ft,[v("a",{class:"link",href:i(pe)(i(t).link),"aria-label":((p=i(e).notFound)==null?void 0:p.linkLabel)??"go to home"},w(((b=i(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,ht)])])}}}),_t=$(mt,[["__scopeId","data-v-951cab6c"]]);function Ce(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function bt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):K(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function U(){const{frontmatter:o,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),r=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ce(C,N):[]}),l=T(r.value);D(r,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=r.value)});const d=y(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),p=y(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?bt(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:p,isSidebarEnabled:L,open:P,close:S,toggle:A}}function gt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",s)}),ve(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function $t(o){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>o.value.collapsed!=null),r=y(()=>!!o.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,o.value.link)};D([e,o,t],d),O(d);const p=y(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),b=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||p.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:p,hasChildren:b,toggle:L}}function yt(){const{hasSidebar:o}=U(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function He(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function be(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Pt(t),link:"#"+t.id,level:s}});return St(e,o)}function Pt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function St(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Tt(o,s,n)}function Lt(o,e){const{isAsideEnabled:t}=yt(),s=lt(r,100);let n=null;O(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Re(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const d=window.scrollY,p=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+p-b)<1,_=ue.map(({element:S,link:A})=>({link:A,top:Vt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+We()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Vt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Tt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,H(t.headers,({children:r,link:l,title:d})=>(a(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Nt),r!=null&&r.length?(a(),g(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Be=$(wt,[["__scopeId","data-v-3f927ebe"]]),It={class:"content"},Mt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},At=m({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=Te([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return Lt(n,r),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[v("div",It,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",Mt,w(i(He)(i(t))),1),k(Be,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Ct=$(At,[["__scopeId","data-v-b38bf2ff"]]),Ht={class:"VPDocAsideCarbonAds"},Bt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",Ht,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Et={class:"VPDocAside"},Ft=m({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),u("div",Et,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Ct),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=v("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),g(Bt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Ft,[["__scopeId","data-v-6d7b3c46"]]);function Ot(){const{theme:o,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ut(){const{page:o,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ce(e.value.sidebar,o.value.relativePath),n=kt(s),r=jt(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>K(o.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=r[l-1])==null?void 0:_.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=r[l+1])==null?void 0:A.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[l+1])==null?void 0:N.link)}}})}function jt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ne.test(e.href)||e.target==="_blank");return(n,r)=>(a(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},zt=["datetime"],Kt=m({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return O(()=>{Z(()=>{var d,p,b;l.value=new Intl.DateTimeFormat((p=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&p.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,p)=>{var b;return a(),u("p",Gt,[z(w(((b=i(e).lastUpdated)==null?void 0:b.text)||i(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:r.value},w(l.value),9,zt)])}}}),Rt=$(Kt,[["__scopeId","data-v-475f71b8"]]),Wt={key:0,class:"VPDocFooter"},qt={key:0,class:"edit-info"},Jt={key:0,class:"edit-link"},Yt={key:1,class:"last-updated"},Xt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Qt={class:"pager"},Zt=["innerHTML"],xt=["innerHTML"],en={class:"pager"},tn=["innerHTML"],nn=["innerHTML"],sn=m({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=Ot(),r=Ut(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),p=y(()=>l.value||d.value||r.value.prev||r.value.next);return(b,L)=>{var _,P,S,A;return p.value?(a(),u("footer",Wt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",qt,[l.value?(a(),u("div",Jt,[k(F,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(i(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Yt,[k(Rt)])):h("",!0)])):h("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",Xt,[L[1]||(L[1]=v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),v("div",Qt,[(S=i(r).prev)!=null&&S.link?(a(),g(F,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Zt),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,xt)]}),_:1},8,["href"])):h("",!0)]),v("div",en,[(A=i(r).next)!=null&&A.link?(a(),g(F,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,tn),v("span",{class:"title",innerHTML:i(r).next.text},null,8,nn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),on=$(sn,[["__scopeId","data-v-4f9813fa"]]),an={class:"container"},rn={class:"aside-container"},ln={class:"aside-content"},cn={class:"content"},un={class:"content-container"},dn={class:"main"},pn=m({__name:"VPDoc",setup(o){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:r}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,p)=>{const b=R("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),v("div",an,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[p[0]||(p[0]=v("div",{class:"aside-curtain"},null,-1)),v("div",rn,[v("div",ln,[k(Dt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),v("div",cn,[v("div",un,[c(d.$slots,"doc-before",{},void 0,!0),v("main",dn,[k(b,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(on,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=$(pn,[["__scopeId","data-v-83890dd9"]]),fn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ne.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),hn=$(fn,[["__scopeId","data-v-906d7fb4"]]),mn=["src","alt"],_n=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,mn)):(a(),u(M,{key:1},[k(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(_n,[["__scopeId","data-v-35a7d0b8"]]),bn={class:"container"},kn={class:"main"},gn={key:0,class:"name"},$n=["innerHTML"],yn=["innerHTML"],Pn=["innerHTML"],Sn={key:0,class:"actions"},Ln={key:0,class:"image"},Vn={class:"image-container"},Tn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=q("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[v("div",bn,[v("div",kn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",gn,[v("span",{innerHTML:t.name,class:"clip"},null,8,$n)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,yn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Pn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Sn,[(a(!0),u(M,null,H(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(hn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Ln,[v("div",Vn,[s[0]||(s[0]=v("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Nn=$(Tn,[["__scopeId","data-v-955009fc"]]),wn=m({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).hero?(a(),g(Nn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),In={class:"box"},Mn={key:0,class:"icon"},An=["innerHTML"],Cn=["innerHTML"],Hn=["innerHTML"],Bn={key:4,class:"link-text"},En={class:"link-text-value"},Fn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),g(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[v("article",In,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Mn,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,An)):h("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Cn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Hn)):h("",!0),e.linkText?(a(),u("div",Bn,[v("p",En,[z(w(e.linkText)+" ",1),t[0]||(t[0]=v("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(Fn,[["__scopeId","data-v-f5e9645b"]]),On={key:0,class:"VPFeatures"},Un={class:"container"},jn={class:"items"},Gn=m({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",On,[v("div",Un,[v("div",jn,[(a(!0),u(M,null,H(s.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[k(Dn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),zn=$(Gn,[["__scopeId","data-v-d0a190d7"]]),Kn=m({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).features?(a(),g(zn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),Rn=m({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:we(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Wn=$(Rn,[["__scopeId","data-v-7a48a447"]]),qn={class:"VPHome"},Jn=m({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=R("Content");return a(),u("div",qn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(wn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(Kn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),g(Wn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Yn=$(Jn,[["__scopeId","data-v-cbb6ec48"]]),Xn={},Qn={class:"VPPage"};function Zn(o,e){const t=R("Content");return a(),u("div",Qn,[c(o.$slots,"page-top"),k(t),c(o.$slots,"page-bottom")])}const xn=$(Xn,[["render",Zn]]),es=m({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(_t)],!0):i(t).layout==="page"?(a(),g(xn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),g(Yn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),g(E(i(t).layout),{key:3})):(a(),g(vn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ts=$(es,[["__scopeId","data-v-91765379"]]),ns={class:"container"},ss=["innerHTML"],os=["innerHTML"],as=m({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(s)}])},[v("div",ns,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ss)):h("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,os)):h("",!0)])],2)):h("",!0)}}),rs=$(as,[["__scopeId","data-v-c970a860"]]);function is(){const{theme:o,frontmatter:e}=V(),t=Te([]),s=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const ls={class:"menu-text"},cs={class:"header"},us={class:"outline"},ds=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),r=T(),l=T();function d(_){var P;(P=r.value)!=null&&P.contains(_.target)||(s.value=!1)}D(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function p(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(a(),u("button",{key:0,onClick:p,class:I({open:s.value})},[v("span",ls,w(i(He)(i(t))),1),P[0]||(P[0]=v("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[v("div",cs,[v("a",{class:"top-link",href:"#",onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)]),v("div",us,[k(Be,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ps=$(ds,[["__scopeId","data-v-bc9dc845"]]),vs={class:"container"},fs=["aria-expanded"],hs={class:"menu-text"},ms=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:n}=is(),{y:r}=Ie(),l=T(0);O(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),p=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:p.value}));return(L,_)=>i(t).layout!=="home"&&(!p.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I(b.value)},[v("div",vs,[i(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=v("span",{class:"vpi-align-left menu-icon"},null,-1)),v("span",hs,w(i(e).sidebarMenuLabel||"Menu"),1)],8,fs)):h("",!0),k(ps,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),_s=$(ms,[["__scopeId","data-v-070ab83d"]]);function bs(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=ee();return D(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const ks={},gs={class:"VPSwitch",type:"button",role:"switch"},$s={class:"check"},ys={key:0,class:"icon"};function Ps(o,e){return a(),u("button",gs,[v("span",$s,[o.$slots.default?(a(),u("span",ys,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ss=$(ks,[["render",Ps],["__scopeId","data-v-4a1c76db"]]),Ls=m({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),g(Ss,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:f(()=>l[0]||(l[0]=[v("span",{class:"vpi-sun sun"},null,-1),v("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Ls,[["__scopeId","data-v-e40a8bb6"]]),Vs={key:0,class:"VPNavBarAppearance"},Ts=m({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Vs,[k(ke)])):h("",!0)}}),Ns=$(Ts,[["__scopeId","data-v-af096f4a"]]),ge=T();let Ee=!1,ae=0;function ws(o){const e=T(!1);if(te){!Ee&&Is(),ae++;const t=D(ge,s=>{var n,r,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});ve(()=>{t(),ae--,ae||Ms()})}return Je(e)}function Is(){document.addEventListener("focusin",Fe),Ee=!0,ge.value=document.activeElement}function Ms(){document.removeEventListener("focusin",Fe)}function Fe(){ge.value=document.activeElement}const As={class:"VPMenuLink"},Cs=["innerHTML"],Hs=m({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),u("div",As,[k(F,{class:I({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,Cs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Hs,[["__scopeId","data-v-acbfed09"]]),Bs={class:"VPMenuGroup"},Es={key:0,class:"title"},Fs=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Bs,[e.text?(a(),u("p",Es,w(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,s=>(a(),u(M,null,["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Fs,[["__scopeId","data-v-48c802d0"]]),Os={class:"VPMenu"},Us={key:0,class:"items"},js=m({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Os,[e.items?(a(),u("div",Us,[(a(!0),u(M,null,H(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),g(E(s.component),G({key:1,ref_for:!0},s.props),null,16)):(a(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(js,[["__scopeId","data-v-7dd3104a"]]),zs=["aria-expanded","aria-label"],Ks={key:0,class:"text"},Rs=["innerHTML"],Ws={key:1,class:"vpi-more-horizontal icon"},qs={class:"menu"},Js=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();ws({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Ks,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Rs)):h("",!0),r[3]||(r[3]=v("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Ws))],8,zs),v("div",qs,[k(Gs,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(Js,[["__scopeId","data-v-04f5c5e9"]]),Ys=["href","aria-label","innerHTML"],Xs=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=T();O(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Ys))}}),Qs=$(Xs,[["__scopeId","data-v-d26d30cb"]]),Zs={class:"VPSocialLinks"},xs=m({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",Zs,[(a(!0),u(M,null,H(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),g(Qs,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(xs,[["__scopeId","data-v-ee7a9424"]]),eo={key:0,class:"group translations"},to={class:"trans-title"},no={key:1,class:"group"},so={class:"item appearance"},oo={class:"label"},ao={class:"appearance-action"},ro={key:2,class:"group"},io={class:"item social-links"},lo=m({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(a(),g($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(s).length&&i(n).label?(a(),u("div",eo,[v("p",to,w(i(n).label),1),(a(!0),u(M,null,H(i(s),p=>(a(),g(ne,{key:p.link,item:p},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",no,[v("div",so,[v("p",oo,w(i(t).darkModeSwitchLabel||"Appearance"),1),v("div",ao,[k(ke)])])])):h("",!0),i(t).socialLinks?(a(),u("div",ro,[v("div",io,[k(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),co=$(lo,[["__scopeId","data-v-925effce"]]),uo=["aria-expanded"],po=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)]),10,uo))}}),vo=$(po,[["__scopeId","data-v-5dea55bf"]]),fo=["innerHTML"],ho=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),g(F,{class:I({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,fo)]),_:1},8,["class","href","target","rel","no-icon"]))}}),mo=$(ho,[["__scopeId","data-v-956ec74c"]]),_o=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=r=>"component"in r?!1:"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=y(()=>s(e.item));return(r,l)=>(a(),g($e,{class:I({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),bo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ko=m({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),u("nav",bo,[s[0]||(s[0]=v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(mo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),g(_o,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),go=$(ko,[["__scopeId","data-v-e6d46098"]]);function $o(o){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const r=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",p=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=p,_=b,P=o;const S=r.pop();for(const B of r){let j=null;const W=P==null?void 0:P[B];W&&(j=P=W);const se=_==null?void 0:_[B];se&&(j=_=se);const oe=L==null?void 0:L[B];oe&&(j=L=oe),W||(P=j),se||(_=j),oe||(L=j)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const yo=["aria-label"],Po={class:"DocSearch-Button-Container"},So={class:"DocSearch-Button-Placeholder"},Se=m({__name:"VPNavBarSearchButton",setup(o){const t=$o({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[v("span",Po,[n[0]||(n[0]=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),v("span",So,w(i(t)("button.buttonText")),1)]),n[1]||(n[1]=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,yo))}}),Lo={class:"VPNavBarSearch"},Vo={id:"local-search"},To={key:1,id:"docsearch"},No=m({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Xe(()=>import("./VPLocalSearchBox.BkzAotSZ.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),r=T(!1);O(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function p(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{p(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",Lo,[i(L)==="local"?(a(),u(M,{key:0},[b.value?(a(),g(i(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),v("div",Vo,[k(Se,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):i(L)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),g(i(t),{key:0,algolia:((S=i(s).search)==null?void 0:S.options)??i(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(a(),u("div",To,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),wo=m({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),g(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Io=$(wo,[["__scopeId","data-v-164c457f"]]),Mo=["href","rel","target"],Ao=["innerHTML"],Co={key:2},Ho=m({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:n}=Y(),r=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),l=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),d=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,b)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(s)}])},[v("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[c(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),g(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Ao)):i(t).siteTitle===void 0?(a(),u("span",Co,w(i(e).title),1)):h("",!0),c(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Mo)],2))}}),Bo=$(Ho,[["__scopeId","data-v-0f4f798b"]]),Eo={class:"items"},Fo={class:"title"},Do=m({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),g($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[v("div",Eo,[v("p",Fo,w(i(s).label),1),(a(!0),u(M,null,H(i(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Oo=$(Do,[["__scopeId","data-v-c80d9ad0"]]),Uo={class:"wrapper"},jo={class:"container"},Go={class:"title"},zo={class:"content"},Ko={class:"content-body"},Ro=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Ie(),{hasSidebar:s}=U(),{frontmatter:n}=V(),r=T({});return fe(()=>{r.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[v("div",Uo,[v("div",jo,[v("div",Go,[k(Bo,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",zo,[v("div",Ko,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(No,{class:"search"}),k(go,{class:"menu"}),k(Oo,{class:"translations"}),k(Ns,{class:"appearance"}),k(Io,{class:"social-links"}),k(co,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(vo,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=p=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1))],2))}}),Wo=$(Ro,[["__scopeId","data-v-822684d1"]]),qo={key:0,class:"VPNavScreenAppearance"},Jo={class:"text"},Yo=m({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",qo,[v("p",Jo,w(i(t).darkModeSwitchLabel||"Appearance"),1),k(ke)])):h("",!0)}}),Xo=$(Yo,[["__scopeId","data-v-ffb44008"]]),Qo=["innerHTML"],Zo=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),g(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,Qo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),xo=$(Zo,[["__scopeId","data-v-735512b8"]]),ea=["innerHTML"],ta=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),g(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,ea)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ta,[["__scopeId","data-v-372ae7c0"]]),na={class:"VPNavScreenMenuGroupSection"},sa={key:0,class:"title"},oa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",na,[e.text?(a(),u("p",sa,w(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,s=>(a(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),aa=$(oa,[["__scopeId","data-v-4b8941ac"]]),ra=["aria-controls","aria-expanded"],ia=["innerHTML"],la=["id"],ca={key:0,class:"item"},ua={key:1,class:"item"},da={key:2,class:"group"},pa=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:r.text},null,8,ia),l[0]||(l[0]=v("span",{class:"vpi-plus button-icon"},null,-1))],8,ra),v("div",{id:s.value,class:"items"},[(a(!0),u(M,null,H(r.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ca,[k(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ua,[(a(),g(E(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",da,[k(aa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,la)],2))}}),va=$(pa,[["__scopeId","data-v-875057a5"]]),fa={key:0,class:"VPNavScreenMenu"},ha=m({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),u("nav",fa,[(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(xo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(va,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ma=m({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),g(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),_a={class:"list"},ba=m({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[l[0]||(l[0]=v("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(i(t).label)+" ",1),l[1]||(l[1]=v("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),v("ul",_a,[(a(!0),u(M,null,H(i(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(F,{class:"link",href:d.link},{default:f(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ka=$(ba,[["__scopeId","data-v-362991c2"]]),ga={class:"container"},$a=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Me(te?document.body:null);return(s,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",ga,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(ha,{class:"menu"}),k(ka,{class:"translations"}),k(Xo,{class:"appearance"}),k(ma,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ya=$($a,[["__scopeId","data-v-833aabba"]]),Pa={key:0,class:"VPNav"},Sa=m({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=bs(),{frontmatter:n}=V(),r=y(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(a(),u("header",Pa,[k(Wo,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(ya,{open:i(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),La=$(Sa,[["__scopeId","data-v-f1e365da"]]),Va=["role","tabindex"],Ta={key:1,class:"items"},Na=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:p}=$t(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(N,B)=>{const j=R("VPSidebarItem",!0);return a(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},Ze(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=v("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(F,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Qe(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[v("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Va)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Ta,[N.depth<5?(a(!0),u(M,{key:0},H(N.item.items,W=>(a(),g(j,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),wa=$(Na,[["__scopeId","data-v-196b2e5f"]]),Ia=m({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(M,null,H(s.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[k(wa,{item:r,depth:0},null,8,["item"])],2))),128))}}),Ma=$(Ia,[["__scopeId","data-v-9e426adc"]]),Aa={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ca=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=U(),s=o,n=T(null),r=Me(te?document.body:null);D([s,n],()=>{var d;s.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(d,p)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:p[0]||(p[0]=et(()=>{},["stop"]))},[p[2]||(p[2]=v("div",{class:"curtain"},null,-1)),v("nav",Aa,[p[1]||(p[1]=v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Ma,{items:i(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ha=$(Ca,[["__scopeId","data-v-18756405"]]),Ba=m({__name:"VPSkipLink",setup(o){const e=ee(),t=T();D(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Ea=$(Ba,[["__scopeId","data-v-c3508ec8"]]),Fa=m({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=U(),n=ee();D(()=>n.path,s),gt(e,s);const{frontmatter:r}=V(),l=Ae(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(p,b)=>{const L=R("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(p.$slots,"layout-top",{},void 0,!0),k(Ea),k(it,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),k(La,null,{"nav-bar-title-before":f(()=>[c(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(_s,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(Ha,{open:i(e)},{"sidebar-nav-before":f(()=>[c(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ts,null,{"page-top":f(()=>[c(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(rs),c(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Da=$(Fa,[["__scopeId","data-v-a9a9e638"]]),Le={Layout:Da,enhanceApp:({app:o})=>{o.component("Badge",ot)}},Oa={};function Ua(o,e){return e[0]||(e[0]=tt('

Trusted by

Scientific Computing

SciML.ai

Machine Learning

',3))}const ja=$(Oa,[["render",Ua]]),Ga=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const r=s(...n),l=o.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Oe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",za=()=>{const o=J==null?void 0:J.getItem(Ue);if(o)try{return JSON.parse(o)}catch{}return{}},Ka=o=>{J&&J.setItem(Ue,JSON.stringify(o))},Ra=o=>{const e=nt({});D(()=>e.content,(t,s)=>{t&&s&&Ka(t)},{deep:!0}),o.provide(Oe,e)},Wa=(o,e)=>{const t=q(Oe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=za())});const s=T(),n=y({get(){var p;const l=e.value,d=o.value;if(l){const b=(p=t.content)==null?void 0:p[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const qa=()=>(Ve++,""+Ve);function Ja(){const o=Ae();return y(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const je="vitepress:tabSingleState",Ya=o=>{me(je,o)},Xa=()=>{const o=q(je);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},Qa={class:"plugin-tabs"},Za=["id","aria-selected","aria-controls","tabindex","onClick"],xa=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=Ja(),{selected:s,select:n}=Wa(t,st(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Ga(r),d=l(n),p=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Qa,[v("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(M,null,H(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:p,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(s),"aria-controls":`panel-${S}-${i(L)}`,tabindex:S===i(s)?0:-1,onClick:()=>i(d)(S)},w(S),9,Za))),128))],544),c(_.$slots,"default")]))}}),er=["id","aria-labelledby"],tr=m({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=Xa();return(s,n)=>i(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${i(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,er)):h("",!0)}}),nr=$(tr,[["__scopeId","data-v-9b0d03d2"]]),sr=o=>{Ra(o),o.component("PluginTabs",xa),o.component("PluginTabsTab",nr)},ar={extends:Le,Layout(){return Pe(Le.Layout,null,{"aside-ads-before":()=>Pe(ja)})},enhanceApp({app:o}){sr(o)}};export{ar as R,$o as c,V as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DUhOdal0.js","assets/chunks/framework.Brfltvkk.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as I,a as z,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ge,i as ze,f as Ke,g as pe,h as y,j as v,k as i,l as K,m as re,p as T,q as D,s as Z,v as O,x as ve,y as fe,z as Re,A as We,B as R,F as M,C as H,D as Te,E as x,G as k,H as E,I as Ne,J as ee,K as G,L as q,M as qe,N as we,O as ie,P as he,Q as Ie,R as te,S as Je,U as Ye,V as Xe,W as Me,X as me,Y as Qe,Z as Ze,$ as xe,a0 as et,a1 as Ae,a2 as tt,a3 as nt,a4 as st,a5 as Pe}from"./framework.Brfltvkk.js";const ot=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),at={key:0,class:"VPBackdrop"},rt=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",at)):h("",!0)]),_:1}))}}),it=$(rt,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function lt(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(ze(o)||o.startsWith("#")||!n.startsWith("http")||!Ke(e))return o;const{site:r}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return pe(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:r}=V(),l=y(()=>{var p,b;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,b])=>l.value.label===b.label?[]:{text:b.label,link:ct(b.link||(p==="root"?"/":`/${p}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function ct(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ut={class:"NotFound"},dt={class:"code"},pt={class:"title"},vt={class:"quote"},ft={class:"action"},ht=["href","aria-label"],mt=m({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var r,l,d,p,b;return a(),u("div",ut,[v("p",dt,w(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),v("h1",pt,w(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=v("div",{class:"divider"},null,-1)),v("blockquote",vt,w(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",ft,[v("a",{class:"link",href:i(pe)(i(t).link),"aria-label":((p=i(e).notFound)==null?void 0:p.linkLabel)??"go to home"},w(((b=i(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,ht)])])}}}),_t=$(mt,[["__scopeId","data-v-951cab6c"]]);function Ce(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function bt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function kt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):K(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function U(){const{frontmatter:o,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),r=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ce(C,N):[]}),l=T(r.value);D(r,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=r.value)});const d=y(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),p=y(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?bt(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:p,isSidebarEnabled:L,open:P,close:S,toggle:A}}function gt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",s)}),ve(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function $t(o){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>o.value.collapsed!=null),r=y(()=>!!o.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,o.value.link)};D([e,o,t],d),O(d);const p=y(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),b=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||p.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:p,hasChildren:b,toggle:L}}function yt(){const{hasSidebar:o}=U(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function He(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function be(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Pt(t),link:"#"+t.id,level:s}});return St(e,o)}function Pt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function St(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Tt(o,s,n)}function Lt(o,e){const{isAsideEnabled:t}=yt(),s=lt(r,100);let n=null;O(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Re(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const d=window.scrollY,p=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+p-b)<1,_=ue.map(({element:S,link:A})=>({link:A,top:Vt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+We()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Vt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Tt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,H(t.headers,({children:r,link:l,title:d})=>(a(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Nt),r!=null&&r.length?(a(),g(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Be=$(wt,[["__scopeId","data-v-3f927ebe"]]),It={class:"content"},Mt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},At=m({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=Te([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return Lt(n,r),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[v("div",It,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",Mt,w(i(He)(i(t))),1),k(Be,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),Ct=$(At,[["__scopeId","data-v-b38bf2ff"]]),Ht={class:"VPDocAsideCarbonAds"},Bt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",Ht,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Et={class:"VPDocAside"},Ft=m({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),u("div",Et,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(Ct),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=v("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),g(Bt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Ft,[["__scopeId","data-v-6d7b3c46"]]);function Ot(){const{theme:o,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ut(){const{page:o,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ce(e.value.sidebar,o.value.relativePath),n=kt(s),r=jt(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>K(o.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=r[l-1])==null?void 0:_.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=r[l+1])==null?void 0:A.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[l+1])==null?void 0:N.link)}}})}function jt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ne.test(e.href)||e.target==="_blank");return(n,r)=>(a(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},zt=["datetime"],Kt=m({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return O(()=>{Z(()=>{var d,p,b;l.value=new Intl.DateTimeFormat((p=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&p.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,p)=>{var b;return a(),u("p",Gt,[z(w(((b=i(e).lastUpdated)==null?void 0:b.text)||i(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:r.value},w(l.value),9,zt)])}}}),Rt=$(Kt,[["__scopeId","data-v-475f71b8"]]),Wt={key:0,class:"VPDocFooter"},qt={key:0,class:"edit-info"},Jt={key:0,class:"edit-link"},Yt={key:1,class:"last-updated"},Xt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Qt={class:"pager"},Zt=["innerHTML"],xt=["innerHTML"],en={class:"pager"},tn=["innerHTML"],nn=["innerHTML"],sn=m({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=Ot(),r=Ut(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),p=y(()=>l.value||d.value||r.value.prev||r.value.next);return(b,L)=>{var _,P,S,A;return p.value?(a(),u("footer",Wt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",qt,[l.value?(a(),u("div",Jt,[k(F,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(i(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Yt,[k(Rt)])):h("",!0)])):h("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",Xt,[L[1]||(L[1]=v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),v("div",Qt,[(S=i(r).prev)!=null&&S.link?(a(),g(F,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Zt),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,xt)]}),_:1},8,["href"])):h("",!0)]),v("div",en,[(A=i(r).next)!=null&&A.link?(a(),g(F,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,tn),v("span",{class:"title",innerHTML:i(r).next.text},null,8,nn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),on=$(sn,[["__scopeId","data-v-4f9813fa"]]),an={class:"container"},rn={class:"aside-container"},ln={class:"aside-content"},cn={class:"content"},un={class:"content-container"},dn={class:"main"},pn=m({__name:"VPDoc",setup(o){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:r}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,p)=>{const b=R("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),v("div",an,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[p[0]||(p[0]=v("div",{class:"aside-curtain"},null,-1)),v("div",rn,[v("div",ln,[k(Dt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),v("div",cn,[v("div",un,[c(d.$slots,"doc-before",{},void 0,!0),v("main",dn,[k(b,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(on,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),vn=$(pn,[["__scopeId","data-v-83890dd9"]]),fn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ne.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),hn=$(fn,[["__scopeId","data-v-906d7fb4"]]),mn=["src","alt"],_n=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,mn)):(a(),u(M,{key:1},[k(s,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(_n,[["__scopeId","data-v-35a7d0b8"]]),bn={class:"container"},kn={class:"main"},gn={key:0,class:"name"},$n=["innerHTML"],yn=["innerHTML"],Pn=["innerHTML"],Sn={key:0,class:"actions"},Ln={key:0,class:"image"},Vn={class:"image-container"},Tn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=q("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[v("div",bn,[v("div",kn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",gn,[v("span",{innerHTML:t.name,class:"clip"},null,8,$n)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,yn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Pn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Sn,[(a(!0),u(M,null,H(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(hn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Ln,[v("div",Vn,[s[0]||(s[0]=v("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Nn=$(Tn,[["__scopeId","data-v-955009fc"]]),wn=m({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).hero?(a(),g(Nn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),In={class:"box"},Mn={key:0,class:"icon"},An=["innerHTML"],Cn=["innerHTML"],Hn=["innerHTML"],Bn={key:4,class:"link-text"},En={class:"link-text-value"},Fn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),g(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[v("article",In,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Mn,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,An)):h("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Cn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Hn)):h("",!0),e.linkText?(a(),u("div",Bn,[v("p",En,[z(w(e.linkText)+" ",1),t[0]||(t[0]=v("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(Fn,[["__scopeId","data-v-f5e9645b"]]),On={key:0,class:"VPFeatures"},Un={class:"container"},jn={class:"items"},Gn=m({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",On,[v("div",Un,[v("div",jn,[(a(!0),u(M,null,H(s.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[k(Dn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),zn=$(Gn,[["__scopeId","data-v-d0a190d7"]]),Kn=m({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).features?(a(),g(zn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),Rn=m({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:we(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Wn=$(Rn,[["__scopeId","data-v-7a48a447"]]),qn={class:"VPHome"},Jn=m({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=R("Content");return a(),u("div",qn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(wn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(Kn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),g(Wn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Yn=$(Jn,[["__scopeId","data-v-cbb6ec48"]]),Xn={},Qn={class:"VPPage"};function Zn(o,e){const t=R("Content");return a(),u("div",Qn,[c(o.$slots,"page-top"),k(t),c(o.$slots,"page-bottom")])}const xn=$(Xn,[["render",Zn]]),es=m({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(_t)],!0):i(t).layout==="page"?(a(),g(xn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),g(Yn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),g(E(i(t).layout),{key:3})):(a(),g(vn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ts=$(es,[["__scopeId","data-v-91765379"]]),ns={class:"container"},ss=["innerHTML"],os=["innerHTML"],as=m({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(s)}])},[v("div",ns,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ss)):h("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,os)):h("",!0)])],2)):h("",!0)}}),rs=$(as,[["__scopeId","data-v-c970a860"]]);function is(){const{theme:o,frontmatter:e}=V(),t=Te([]),s=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const ls={class:"menu-text"},cs={class:"header"},us={class:"outline"},ds=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),r=T(),l=T();function d(_){var P;(P=r.value)!=null&&P.contains(_.target)||(s.value=!1)}D(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function p(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:we({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(a(),u("button",{key:0,onClick:p,class:I({open:s.value})},[v("span",ls,w(i(He)(i(t))),1),P[0]||(P[0]=v("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[v("div",cs,[v("a",{class:"top-link",href:"#",onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)]),v("div",us,[k(Be,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ps=$(ds,[["__scopeId","data-v-bc9dc845"]]),vs={class:"container"},fs=["aria-expanded"],hs={class:"menu-text"},ms=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:n}=is(),{y:r}=Ie(),l=T(0);O(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),p=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:p.value}));return(L,_)=>i(t).layout!=="home"&&(!p.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I(b.value)},[v("div",vs,[i(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=v("span",{class:"vpi-align-left menu-icon"},null,-1)),v("span",hs,w(i(e).sidebarMenuLabel||"Menu"),1)],8,fs)):h("",!0),k(ps,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),_s=$(ms,[["__scopeId","data-v-070ab83d"]]);function bs(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=ee();return D(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const ks={},gs={class:"VPSwitch",type:"button",role:"switch"},$s={class:"check"},ys={key:0,class:"icon"};function Ps(o,e){return a(),u("button",gs,[v("span",$s,[o.$slots.default?(a(),u("span",ys,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ss=$(ks,[["render",Ps],["__scopeId","data-v-4a1c76db"]]),Ls=m({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),g(Ss,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:f(()=>l[0]||(l[0]=[v("span",{class:"vpi-sun sun"},null,-1),v("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Ls,[["__scopeId","data-v-e40a8bb6"]]),Vs={key:0,class:"VPNavBarAppearance"},Ts=m({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Vs,[k(ke)])):h("",!0)}}),Ns=$(Ts,[["__scopeId","data-v-af096f4a"]]),ge=T();let Ee=!1,ae=0;function ws(o){const e=T(!1);if(te){!Ee&&Is(),ae++;const t=D(ge,s=>{var n,r,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});ve(()=>{t(),ae--,ae||Ms()})}return Je(e)}function Is(){document.addEventListener("focusin",Fe),Ee=!0,ge.value=document.activeElement}function Ms(){document.removeEventListener("focusin",Fe)}function Fe(){ge.value=document.activeElement}const As={class:"VPMenuLink"},Cs=["innerHTML"],Hs=m({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),u("div",As,[k(F,{class:I({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,Cs)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Hs,[["__scopeId","data-v-acbfed09"]]),Bs={class:"VPMenuGroup"},Es={key:0,class:"title"},Fs=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Bs,[e.text?(a(),u("p",Es,w(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,s=>(a(),u(M,null,["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Fs,[["__scopeId","data-v-48c802d0"]]),Os={class:"VPMenu"},Us={key:0,class:"items"},js=m({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Os,[e.items?(a(),u("div",Us,[(a(!0),u(M,null,H(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),g(E(s.component),G({key:1,ref_for:!0},s.props),null,16)):(a(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(js,[["__scopeId","data-v-7dd3104a"]]),zs=["aria-expanded","aria-label"],Ks={key:0,class:"text"},Rs=["innerHTML"],Ws={key:1,class:"vpi-more-horizontal icon"},qs={class:"menu"},Js=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();ws({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Ks,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Rs)):h("",!0),r[3]||(r[3]=v("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Ws))],8,zs),v("div",qs,[k(Gs,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(Js,[["__scopeId","data-v-04f5c5e9"]]),Ys=["href","aria-label","innerHTML"],Xs=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=T();O(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Ys))}}),Qs=$(Xs,[["__scopeId","data-v-d26d30cb"]]),Zs={class:"VPSocialLinks"},xs=m({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",Zs,[(a(!0),u(M,null,H(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),g(Qs,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(xs,[["__scopeId","data-v-ee7a9424"]]),eo={key:0,class:"group translations"},to={class:"trans-title"},no={key:1,class:"group"},so={class:"item appearance"},oo={class:"label"},ao={class:"appearance-action"},ro={key:2,class:"group"},io={class:"item social-links"},lo=m({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(a(),g($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(s).length&&i(n).label?(a(),u("div",eo,[v("p",to,w(i(n).label),1),(a(!0),u(M,null,H(i(s),p=>(a(),g(ne,{key:p.link,item:p},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",no,[v("div",so,[v("p",oo,w(i(t).darkModeSwitchLabel||"Appearance"),1),v("div",ao,[k(ke)])])])):h("",!0),i(t).socialLinks?(a(),u("div",ro,[v("div",io,[k(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),co=$(lo,[["__scopeId","data-v-925effce"]]),uo=["aria-expanded"],po=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)]),10,uo))}}),vo=$(po,[["__scopeId","data-v-5dea55bf"]]),fo=["innerHTML"],ho=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),g(F,{class:I({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,fo)]),_:1},8,["class","href","target","rel","no-icon"]))}}),mo=$(ho,[["__scopeId","data-v-956ec74c"]]),_o=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=r=>"component"in r?!1:"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=y(()=>s(e.item));return(r,l)=>(a(),g($e,{class:I({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),bo={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ko=m({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),u("nav",bo,[s[0]||(s[0]=v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(mo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),g(_o,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),go=$(ko,[["__scopeId","data-v-e6d46098"]]);function $o(o){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const r=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",p=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=p,_=b,P=o;const S=r.pop();for(const B of r){let j=null;const W=P==null?void 0:P[B];W&&(j=P=W);const se=_==null?void 0:_[B];se&&(j=_=se);const oe=L==null?void 0:L[B];oe&&(j=L=oe),W||(P=j),se||(_=j),oe||(L=j)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const yo=["aria-label"],Po={class:"DocSearch-Button-Container"},So={class:"DocSearch-Button-Placeholder"},Se=m({__name:"VPNavBarSearchButton",setup(o){const t=$o({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[v("span",Po,[n[0]||(n[0]=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),v("span",So,w(i(t)("button.buttonText")),1)]),n[1]||(n[1]=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,yo))}}),Lo={class:"VPNavBarSearch"},Vo={id:"local-search"},To={key:1,id:"docsearch"},No=m({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Xe(()=>import("./VPLocalSearchBox.DUhOdal0.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),r=T(!1);O(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function p(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{p(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",Lo,[i(L)==="local"?(a(),u(M,{key:0},[b.value?(a(),g(i(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),v("div",Vo,[k(Se,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):i(L)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),g(i(t),{key:0,algolia:((S=i(s).search)==null?void 0:S.options)??i(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(a(),u("div",To,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),wo=m({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),g(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Io=$(wo,[["__scopeId","data-v-164c457f"]]),Mo=["href","rel","target"],Ao=["innerHTML"],Co={key:2},Ho=m({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:n}=Y(),r=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),l=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),d=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,b)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(s)}])},[v("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[c(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),g(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Ao)):i(t).siteTitle===void 0?(a(),u("span",Co,w(i(e).title),1)):h("",!0),c(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Mo)],2))}}),Bo=$(Ho,[["__scopeId","data-v-0f4f798b"]]),Eo={class:"items"},Fo={class:"title"},Do=m({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),g($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[v("div",Eo,[v("p",Fo,w(i(s).label),1),(a(!0),u(M,null,H(i(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Oo=$(Do,[["__scopeId","data-v-c80d9ad0"]]),Uo={class:"wrapper"},jo={class:"container"},Go={class:"title"},zo={class:"content"},Ko={class:"content-body"},Ro=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Ie(),{hasSidebar:s}=U(),{frontmatter:n}=V(),r=T({});return fe(()=>{r.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[v("div",Uo,[v("div",jo,[v("div",Go,[k(Bo,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",zo,[v("div",Ko,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(No,{class:"search"}),k(go,{class:"menu"}),k(Oo,{class:"translations"}),k(Ns,{class:"appearance"}),k(Io,{class:"social-links"}),k(co,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(vo,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=p=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1))],2))}}),Wo=$(Ro,[["__scopeId","data-v-822684d1"]]),qo={key:0,class:"VPNavScreenAppearance"},Jo={class:"text"},Yo=m({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",qo,[v("p",Jo,w(i(t).darkModeSwitchLabel||"Appearance"),1),k(ke)])):h("",!0)}}),Xo=$(Yo,[["__scopeId","data-v-ffb44008"]]),Qo=["innerHTML"],Zo=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),g(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,Qo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),xo=$(Zo,[["__scopeId","data-v-735512b8"]]),ea=["innerHTML"],ta=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),g(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,ea)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ta,[["__scopeId","data-v-372ae7c0"]]),na={class:"VPNavScreenMenuGroupSection"},sa={key:0,class:"title"},oa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",na,[e.text?(a(),u("p",sa,w(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,s=>(a(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),aa=$(oa,[["__scopeId","data-v-4b8941ac"]]),ra=["aria-controls","aria-expanded"],ia=["innerHTML"],la=["id"],ca={key:0,class:"item"},ua={key:1,class:"item"},da={key:2,class:"group"},pa=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:r.text},null,8,ia),l[0]||(l[0]=v("span",{class:"vpi-plus button-icon"},null,-1))],8,ra),v("div",{id:s.value,class:"items"},[(a(!0),u(M,null,H(r.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",ca,[k(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ua,[(a(),g(E(d.component),G({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",da,[k(aa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,la)],2))}}),va=$(pa,[["__scopeId","data-v-875057a5"]]),fa={key:0,class:"VPNavScreenMenu"},ha=m({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),u("nav",fa,[(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(xo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(va,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ma=m({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),g(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),_a={class:"list"},ba=m({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[l[0]||(l[0]=v("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(i(t).label)+" ",1),l[1]||(l[1]=v("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),v("ul",_a,[(a(!0),u(M,null,H(i(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(F,{class:"link",href:d.link},{default:f(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ka=$(ba,[["__scopeId","data-v-362991c2"]]),ga={class:"container"},$a=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Me(te?document.body:null);return(s,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",ga,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(ha,{class:"menu"}),k(ka,{class:"translations"}),k(Xo,{class:"appearance"}),k(ma,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ya=$($a,[["__scopeId","data-v-833aabba"]]),Pa={key:0,class:"VPNav"},Sa=m({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=bs(),{frontmatter:n}=V(),r=y(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(a(),u("header",Pa,[k(Wo,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(ya,{open:i(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),La=$(Sa,[["__scopeId","data-v-f1e365da"]]),Va=["role","tabindex"],Ta={key:1,class:"items"},Na=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:p}=$t(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(N,B)=>{const j=R("VPSidebarItem",!0);return a(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},Ze(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=v("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(F,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Qe(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[v("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Va)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Ta,[N.depth<5?(a(!0),u(M,{key:0},H(N.item.items,W=>(a(),g(j,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),wa=$(Na,[["__scopeId","data-v-196b2e5f"]]),Ia=m({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),xe(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(M,null,H(s.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[k(wa,{item:r,depth:0},null,8,["item"])],2))),128))}}),Ma=$(Ia,[["__scopeId","data-v-9e426adc"]]),Aa={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ca=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=U(),s=o,n=T(null),r=Me(te?document.body:null);D([s,n],()=>{var d;s.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(d,p)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:p[0]||(p[0]=et(()=>{},["stop"]))},[p[2]||(p[2]=v("div",{class:"curtain"},null,-1)),v("nav",Aa,[p[1]||(p[1]=v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Ma,{items:i(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ha=$(Ca,[["__scopeId","data-v-18756405"]]),Ba=m({__name:"VPSkipLink",setup(o){const e=ee(),t=T();D(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Ea=$(Ba,[["__scopeId","data-v-c3508ec8"]]),Fa=m({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=U(),n=ee();D(()=>n.path,s),gt(e,s);const{frontmatter:r}=V(),l=Ae(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(p,b)=>{const L=R("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(p.$slots,"layout-top",{},void 0,!0),k(Ea),k(it,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),k(La,null,{"nav-bar-title-before":f(()=>[c(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(_s,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(Ha,{open:i(e)},{"sidebar-nav-before":f(()=>[c(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ts,null,{"page-top":f(()=>[c(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(rs),c(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Da=$(Fa,[["__scopeId","data-v-a9a9e638"]]),Le={Layout:Da,enhanceApp:({app:o})=>{o.component("Badge",ot)}},Oa={};function Ua(o,e){return e[0]||(e[0]=tt('

Trusted by

Scientific Computing

SciML.ai

Machine Learning

',3))}const ja=$(Oa,[["render",Ua]]),Ga=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const r=s(...n),l=o.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Oe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Ue="vitepress:tabsSharedState",za=()=>{const o=J==null?void 0:J.getItem(Ue);if(o)try{return JSON.parse(o)}catch{}return{}},Ka=o=>{J&&J.setItem(Ue,JSON.stringify(o))},Ra=o=>{const e=nt({});D(()=>e.content,(t,s)=>{t&&s&&Ka(t)},{deep:!0}),o.provide(Oe,e)},Wa=(o,e)=>{const t=q(Oe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=za())});const s=T(),n=y({get(){var p;const l=e.value,d=o.value;if(l){const b=(p=t.content)==null?void 0:p[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Ve=0;const qa=()=>(Ve++,""+Ve);function Ja(){const o=Ae();return y(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const je="vitepress:tabSingleState",Ya=o=>{me(je,o)},Xa=()=>{const o=q(je);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},Qa={class:"plugin-tabs"},Za=["id","aria-selected","aria-controls","tabindex","onClick"],xa=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=Ja(),{selected:s,select:n}=Wa(t,st(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Ga(r),d=l(n),p=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",Qa,[v("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(M,null,H(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:p,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(s),"aria-controls":`panel-${S}-${i(L)}`,tabindex:S===i(s)?0:-1,onClick:()=>i(d)(S)},w(S),9,Za))),128))],544),c(_.$slots,"default")]))}}),er=["id","aria-labelledby"],tr=m({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=Xa();return(s,n)=>i(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${i(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,er)):h("",!0)}}),nr=$(tr,[["__scopeId","data-v-9b0d03d2"]]),sr=o=>{Ra(o),o.component("PluginTabs",xa),o.component("PluginTabsTab",nr)},ar={extends:Le,Layout(){return Pe(Le.Layout,null,{"aside-ads-before":()=>Pe(ja)})},enhanceApp({app:o}){sr(o)}};export{ar as R,$o as c,V as u}; diff --git a/dev/assets/index.md.NOKWxsHp.js b/dev/assets/index.md.CWKIhE9b.js similarity index 93% rename from dev/assets/index.md.NOKWxsHp.js rename to dev/assets/index.md.CWKIhE9b.js index 9af353a..e758a53 100644 --- a/dev/assets/index.md.NOKWxsHp.js +++ b/dev/assets/index.md.CWKIhE9b.js @@ -1,6 +1,6 @@ -import{_ as s,c as a,a2 as t,o as l}from"./chunks/framework.Brfltvkk.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Boltz.jl ⚡ Docs","text":"Pre-built Deep Learning Models in Julia","tagline":"Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux","actions":[{"theme":"brand","text":"Lux.jl Docs","link":"https://lux.csail.mit.edu/"},{"theme":"alt","text":"Tutorials 📚","link":"/tutorials/1_GettingStarted"},{"theme":"alt","text":"Vision Models 👀","link":"/api/vision"},{"theme":"alt","text":"Layers API 🧩","link":"/api/layers"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/LuxDL/Boltz.jl"}],"image":{"src":"/lux-logo.svg","alt":"Lux.jl"}},"features":[{"icon":"🔥","title":"Powered by Lux.jl","details":"Boltz.jl is built on top of Lux.jl, a pure Julia Deep Learning Framework designed for Scientific Machine Learning.","link":"https://lux.csail.mit.edu/"},{"icon":"🧩","title":"Pre-built Models","details":"Boltz.jl provides pre-built models for common deep learning tasks, such as image classification.","link":"/api/vision"},{"icon":"🧑‍🔬","title":"SciML Primitives","details":"Common deep learning primitives needed for scientific machine learning.","link":"https://sciml.ai/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),e={name:"index.md"};function n(p,i,h,k,d,o){return l(),a("div",null,i[0]||(i[0]=[t(`

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+import{_ as s,c as a,a2 as t,o as l}from"./chunks/framework.Brfltvkk.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Boltz.jl ⚡ Docs","text":"Pre-built Deep Learning Models in Julia","tagline":"Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux","actions":[{"theme":"brand","text":"Lux.jl Docs","link":"https://lux.csail.mit.edu/"},{"theme":"alt","text":"Tutorials 📚","link":"/tutorials/1_GettingStarted"},{"theme":"alt","text":"Vision Models 👀","link":"/api/vision"},{"theme":"alt","text":"Layers API 🧩","link":"/api/layers"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/LuxDL/Boltz.jl"}],"image":{"src":"/lux-logo.svg","alt":"Lux.jl"}},"features":[{"icon":"🔥","title":"Powered by Lux.jl","details":"Boltz.jl is built on top of Lux.jl, a pure Julia Deep Learning Framework designed for Scientific Machine Learning.","link":"https://lux.csail.mit.edu/"},{"icon":"🧩","title":"Pre-built Models","details":"Boltz.jl provides pre-built models for common deep learning tasks, such as image classification.","link":"/api/vision"},{"icon":"🧑‍🔬","title":"SciML Primitives","details":"Common deep learning primitives needed for scientific machine learning.","link":"https://sciml.ai/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),e={name:"index.md"};function n(h,i,p,k,d,o){return l(),a("div",null,i[0]||(i[0]=[t(`

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
 julia> Pkg.add("Boltz")

If you want to use the latest unreleased version of Boltz.jl, you can run the following command: (in most cases the released version will be same as the version on github)

julia
julia> using Pkg
-julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
+julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
 Pkg.add("LuxCUDA")
 # or
 Pkg.add(["CUDA", "cuDNN"])
julia
using Pkg
diff --git a/dev/assets/index.md.NOKWxsHp.lean.js b/dev/assets/index.md.CWKIhE9b.lean.js
similarity index 93%
rename from dev/assets/index.md.NOKWxsHp.lean.js
rename to dev/assets/index.md.CWKIhE9b.lean.js
index 9af353a..e758a53 100644
--- a/dev/assets/index.md.NOKWxsHp.lean.js
+++ b/dev/assets/index.md.CWKIhE9b.lean.js
@@ -1,6 +1,6 @@
-import{_ as s,c as a,a2 as t,o as l}from"./chunks/framework.Brfltvkk.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Boltz.jl ⚡ Docs","text":"Pre-built Deep Learning Models in Julia","tagline":"Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux","actions":[{"theme":"brand","text":"Lux.jl Docs","link":"https://lux.csail.mit.edu/"},{"theme":"alt","text":"Tutorials 📚","link":"/tutorials/1_GettingStarted"},{"theme":"alt","text":"Vision Models 👀","link":"/api/vision"},{"theme":"alt","text":"Layers API 🧩","link":"/api/layers"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/LuxDL/Boltz.jl"}],"image":{"src":"/lux-logo.svg","alt":"Lux.jl"}},"features":[{"icon":"🔥","title":"Powered by Lux.jl","details":"Boltz.jl is built on top of Lux.jl, a pure Julia Deep Learning Framework designed for Scientific Machine Learning.","link":"https://lux.csail.mit.edu/"},{"icon":"🧩","title":"Pre-built Models","details":"Boltz.jl provides pre-built models for common deep learning tasks, such as image classification.","link":"/api/vision"},{"icon":"🧑‍🔬","title":"SciML Primitives","details":"Common deep learning primitives needed for scientific machine learning.","link":"https://sciml.ai/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),e={name:"index.md"};function n(p,i,h,k,d,o){return l(),a("div",null,i[0]||(i[0]=[t(`

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
+import{_ as s,c as a,a2 as t,o as l}from"./chunks/framework.Brfltvkk.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Boltz.jl ⚡ Docs","text":"Pre-built Deep Learning Models in Julia","tagline":"Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux","actions":[{"theme":"brand","text":"Lux.jl Docs","link":"https://lux.csail.mit.edu/"},{"theme":"alt","text":"Tutorials 📚","link":"/tutorials/1_GettingStarted"},{"theme":"alt","text":"Vision Models 👀","link":"/api/vision"},{"theme":"alt","text":"Layers API 🧩","link":"/api/layers"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/LuxDL/Boltz.jl"}],"image":{"src":"/lux-logo.svg","alt":"Lux.jl"}},"features":[{"icon":"🔥","title":"Powered by Lux.jl","details":"Boltz.jl is built on top of Lux.jl, a pure Julia Deep Learning Framework designed for Scientific Machine Learning.","link":"https://lux.csail.mit.edu/"},{"icon":"🧩","title":"Pre-built Models","details":"Boltz.jl provides pre-built models for common deep learning tasks, such as image classification.","link":"/api/vision"},{"icon":"🧑‍🔬","title":"SciML Primitives","details":"Common deep learning primitives needed for scientific machine learning.","link":"https://sciml.ai/"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),e={name:"index.md"};function n(h,i,p,k,d,o){return l(),a("div",null,i[0]||(i[0]=[t(`

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
 julia> Pkg.add("Boltz")

If you want to use the latest unreleased version of Boltz.jl, you can run the following command: (in most cases the released version will be same as the version on github)

julia
julia> using Pkg
-julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
+julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
 Pkg.add("LuxCUDA")
 # or
 Pkg.add(["CUDA", "cuDNN"])
julia
using Pkg
diff --git a/dev/assets/style.Dkw2xCc0.css b/dev/assets/style.BvW4vyFm.css
similarity index 60%
rename from dev/assets/style.Dkw2xCc0.css
rename to dev/assets/style.BvW4vyFm.css
index b5767f2..85e1006 100644
--- a/dev/assets/style.Dkw2xCc0.css
+++ b/dev/assets/style.BvW4vyFm.css
@@ -1 +1 @@
-@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-906d7fb4]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-906d7fb4]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-906d7fb4]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-906d7fb4]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-906d7fb4]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-906d7fb4]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-906d7fb4]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-906d7fb4]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-906d7fb4]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-906d7fb4]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-906d7fb4]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-906d7fb4]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-906d7fb4]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-acbfed09]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-acbfed09]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-acbfed09]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-acbfed09]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-04f5c5e9]{position:relative}.VPFlyout[data-v-04f5c5e9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-04f5c5e9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-04f5c5e9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-04f5c5e9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-04f5c5e9]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-04f5c5e9]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-04f5c5e9],.button[aria-expanded=true]+.menu[data-v-04f5c5e9]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-04f5c5e9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-04f5c5e9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-04f5c5e9]{margin-right:0;font-size:16px}.text-icon[data-v-04f5c5e9]{margin-left:4px;font-size:14px}.icon[data-v-04f5c5e9]{font-size:20px;transition:fill .25s}.menu[data-v-04f5c5e9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-d26d30cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-d26d30cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-d26d30cb]>svg,.VPSocialLink[data-v-d26d30cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-956ec74c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-956ec74c],.VPNavBarMenuLink[data-v-956ec74c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.8.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-0f4f798b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0f4f798b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0f4f798b]{border-bottom-color:var(--vp-c-divider)}}[data-v-0f4f798b] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-735512b8]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-735512b8]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-372ae7c0]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-372ae7c0]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.enjoyer{margin-top:.5rem;margin-bottom:0rem;border-radius:14px;padding-top:.2rem;padding-bottom:.2rem;position:relative;font-size:.9rem;font-weight:700;line-height:1.1rem;display:flex;align-items:center;justify-content:center;width:100%;gap:1rem;background-color:var(--vp-c-bg-alt);border:2px solid var(--vp-c-bg-alt);transition:border-color .5s}.enjoyer:hover{border:2px solid var(--vp-c-brand-light)}.enjoyer img{transition:transform .5s;transform:scale(1.25)}.enjoyer:hover img{transform:scale(1.75)}.enjoyer .heading{background-image:linear-gradient(120deg,#b047ff 16%,var(--vp-c-brand-lighter),var(--vp-c-brand-lighter));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.enjoyer .extra-info{color:var(--vp-c-text-1);opacity:0;font-size:.7rem;padding-left:.1rem;transition:opacity .5s}.enjoyer:hover .extra-info{opacity:.9}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}@font-face{font-family:JuliaMono-Regular;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: JuliaMono-Regular, monospace;font-feature-settings:"calt" 0}.mono pre,.mono code{font-family:JuliaMono-Light}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #9558B2 30%, #CB3C33);--vp-home-hero-image-background-image: linear-gradient(-45deg, #9558B2 30%, #389826 30%, #CB3C33);--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}:root:not(.dark) .dark-only{display:none}:root:is(.dark) .light-only{display:none}@media (min-width: 1440px){.VPSidebar{padding-left:20px!important;width:250px!important}.VPNavBar .title{padding-left:15px!important;width:230px!important}.VPContent.has-sidebar{padding-left:250px!important;padding-right:5vw!important}.VPNavBar .curtain{width:100%!important}.VPDoc{padding:32px 0 0!important}.VPNavBar.has-sidebar .content{padding-left:250px!important;padding-right:20px!important}.VPNavBar .divider{padding-left:250px!important}}@media (min-width: 960px){.VPDoc{padding:32px 32px 0 10!important}.VPContent.has-sidebar{padding-left:255px!important}}.VPNavBar{padding-right:0!important}.VPDoc.has-aside .content-container{max-width:100%!important}.aside{max-width:200px!important;padding-left:0!important}.VPDocOutlineItem li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:200px}.VPNavBar .title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.jldocstring.custom-block{border:1px solid var(--vp-c-gray-2);color:var(--vp-c-text-1)}.jldocstring.custom-block summary{font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;margin:0 0 8px}.VPLocalSearchBox[data-v-42e65fb9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-42e65fb9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-42e65fb9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-42e65fb9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-42e65fb9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-42e65fb9]{padding:0 8px}}.search-bar[data-v-42e65fb9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-42e65fb9]{display:block;font-size:18px}.navigate-icon[data-v-42e65fb9]{display:block;font-size:14px}.search-icon[data-v-42e65fb9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-42e65fb9]{display:none}}.search-input[data-v-42e65fb9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-42e65fb9]{padding:6px 4px}}.search-actions[data-v-42e65fb9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-42e65fb9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-42e65fb9]{display:none}}.search-actions button[data-v-42e65fb9]{padding:8px}.search-actions button[data-v-42e65fb9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-42e65fb9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-42e65fb9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-42e65fb9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-42e65fb9]{display:none}}.search-keyboard-shortcuts kbd[data-v-42e65fb9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-42e65fb9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-42e65fb9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-42e65fb9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-42e65fb9]{margin:8px}}.titles[data-v-42e65fb9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}.title.main[data-v-42e65fb9]{font-weight:500}.title-icon[data-v-42e65fb9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-42e65fb9]{opacity:.5}.result.selected[data-v-42e65fb9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-42e65fb9]{position:relative}.excerpt[data-v-42e65fb9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-42e65fb9]{opacity:1}.excerpt[data-v-42e65fb9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-42e65fb9] mark,.excerpt[data-v-42e65fb9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-42e65fb9] .vp-code-group .tabs{display:none}.excerpt[data-v-42e65fb9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-42e65fb9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-42e65fb9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-42e65fb9],.result.selected .title-icon[data-v-42e65fb9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-42e65fb9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-42e65fb9]{flex:none}
+@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Boltz.jl/dev/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-906d7fb4]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-906d7fb4]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-906d7fb4]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-906d7fb4]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-906d7fb4]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-906d7fb4]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-906d7fb4]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-906d7fb4]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-906d7fb4]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-906d7fb4]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-906d7fb4]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-906d7fb4]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-906d7fb4]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-acbfed09]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-acbfed09]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-acbfed09]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-acbfed09]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-04f5c5e9]{position:relative}.VPFlyout[data-v-04f5c5e9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-04f5c5e9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-04f5c5e9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-04f5c5e9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-04f5c5e9]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-04f5c5e9]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-04f5c5e9],.button[aria-expanded=true]+.menu[data-v-04f5c5e9]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-04f5c5e9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-04f5c5e9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-04f5c5e9]{margin-right:0;font-size:16px}.text-icon[data-v-04f5c5e9]{margin-left:4px;font-size:14px}.icon[data-v-04f5c5e9]{font-size:20px;transition:fill .25s}.menu[data-v-04f5c5e9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-d26d30cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-d26d30cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-d26d30cb]>svg,.VPSocialLink[data-v-d26d30cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-956ec74c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-956ec74c],.VPNavBarMenuLink[data-v-956ec74c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.8.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (width <= 768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (width <= 768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-0f4f798b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0f4f798b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0f4f798b]{border-bottom-color:var(--vp-c-divider)}}[data-v-0f4f798b] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-735512b8]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-735512b8]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-372ae7c0]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-372ae7c0]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.enjoyer{margin-top:.5rem;margin-bottom:0rem;border-radius:14px;padding-top:.2rem;padding-bottom:.2rem;position:relative;font-size:.9rem;font-weight:700;line-height:1.1rem;display:flex;align-items:center;justify-content:center;width:100%;gap:1rem;background-color:var(--vp-c-bg-alt);border:2px solid var(--vp-c-bg-alt);transition:border-color .5s}.enjoyer:hover{border:2px solid var(--vp-c-brand-light)}.enjoyer img{transition:transform .5s;transform:scale(1.25)}.enjoyer:hover img{transform:scale(1.75)}.enjoyer .heading{background-image:linear-gradient(120deg,#b047ff 16%,var(--vp-c-brand-lighter),var(--vp-c-brand-lighter));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.enjoyer .extra-info{color:var(--vp-c-text-1);opacity:0;font-size:.7rem;padding-left:.1rem;transition:opacity .5s}.enjoyer:hover .extra-info{opacity:.9}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}@font-face{font-family:JuliaMono-Regular;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: JuliaMono-Regular, monospace;font-feature-settings:"calt" 0}.mono pre,.mono code{font-family:JuliaMono-Light}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient(120deg, #9558B2 30%, #CB3C33);--vp-home-hero-image-background-image: linear-gradient(-45deg, #9558B2 30%, #389826 30%, #CB3C33);--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}:root:not(.dark) .dark-only{display:none}:root:is(.dark) .light-only{display:none}@media (min-width: 1440px){.VPSidebar{padding-left:20px!important;width:250px!important}.VPNavBar .title{padding-left:15px!important;width:230px!important}.VPContent.has-sidebar{padding-left:250px!important;padding-right:5vw!important}.VPNavBar .curtain{width:100%!important}.VPDoc{padding:32px 0 0!important}.VPNavBar.has-sidebar .content{padding-left:250px!important;padding-right:20px!important}.VPNavBar .divider{padding-left:250px!important}}@media (min-width: 960px){.VPDoc{padding:32px 32px 0 10!important}.VPContent.has-sidebar{padding-left:255px!important}}.VPNavBar{padding-right:0!important}.VPDoc.has-aside .content-container{max-width:100%!important}.aside{max-width:200px!important;padding-left:0!important}.VPDocOutlineItem li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:200px}.VPNavBar .title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.jldocstring.custom-block{border:1px solid var(--vp-c-gray-2);color:var(--vp-c-text-1)}.jldocstring.custom-block summary{font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;margin:0 0 8px}.VPLocalSearchBox[data-v-42e65fb9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-42e65fb9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-42e65fb9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-42e65fb9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-42e65fb9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-42e65fb9]{padding:0 8px}}.search-bar[data-v-42e65fb9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-42e65fb9]{display:block;font-size:18px}.navigate-icon[data-v-42e65fb9]{display:block;font-size:14px}.search-icon[data-v-42e65fb9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-42e65fb9]{display:none}}.search-input[data-v-42e65fb9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-42e65fb9]{padding:6px 4px}}.search-actions[data-v-42e65fb9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-42e65fb9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-42e65fb9]{display:none}}.search-actions button[data-v-42e65fb9]{padding:8px}.search-actions button[data-v-42e65fb9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-42e65fb9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-42e65fb9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-42e65fb9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-42e65fb9]{display:none}}.search-keyboard-shortcuts kbd[data-v-42e65fb9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-42e65fb9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-42e65fb9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-42e65fb9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-42e65fb9]{margin:8px}}.titles[data-v-42e65fb9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}.title.main[data-v-42e65fb9]{font-weight:500}.title-icon[data-v-42e65fb9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-42e65fb9]{opacity:.5}.result.selected[data-v-42e65fb9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-42e65fb9]{position:relative}.excerpt[data-v-42e65fb9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-42e65fb9]{opacity:1}.excerpt[data-v-42e65fb9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-42e65fb9] mark,.excerpt[data-v-42e65fb9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-42e65fb9] .vp-code-group .tabs{display:none}.excerpt[data-v-42e65fb9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-42e65fb9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-42e65fb9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-42e65fb9],.result.selected .title-icon[data-v-42e65fb9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-42e65fb9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-42e65fb9]{flex:none}
diff --git a/dev/assets/tutorials_1_GettingStarted.md.BBRQSLz_.lean.js b/dev/assets/tutorials_1_GettingStarted.md.BkXGCB_-.js
similarity index 96%
rename from dev/assets/tutorials_1_GettingStarted.md.BBRQSLz_.lean.js
rename to dev/assets/tutorials_1_GettingStarted.md.BkXGCB_-.js
index f92e9e5..6c14f51 100644
--- a/dev/assets/tutorials_1_GettingStarted.md.BBRQSLz_.lean.js
+++ b/dev/assets/tutorials_1_GettingStarted.md.BkXGCB_-.js
@@ -1,27 +1,16 @@
 import{_ as a,c as n,a2 as p,o as l}from"./chunks/framework.Brfltvkk.js";const k=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/1_GettingStarted.md","filePath":"tutorials/1_GettingStarted.md","lastUpdated":null}'),e={name:"tutorials/1_GettingStarted.md"};function i(t,s,r,c,o,h){return l(),n("div",null,s[0]||(s[0]=[p(`

Getting Started

Prerequisites

Here we assume that you are familiar with Lux.jl. If not please take a look at the Lux.jl tutoials.

Boltz.jl is just like Lux.jl but comes with more "batteries included". Let's start by defining an MLP model.

julia
using Lux, Boltz, Random
Precompiling Lux...
-    550.3 ms  ✓ GPUArraysCore
-    976.0 ms  ✓ Functors
-    660.4 ms  ✓ ArrayInterface → ArrayInterfaceGPUArraysCoreExt
-   1554.3 ms  ✓ LuxCore
-   1129.3 ms  ✓ MLDataDevices
-   1046.6 ms  ✓ LuxCore → LuxCoreChainRulesCoreExt
-   1555.3 ms  ✓ Optimisers
-    835.1 ms  ✓ LuxCore → LuxCoreFunctorsExt
-    796.1 ms  ✓ LuxCore → LuxCoreEnzymeCoreExt
-    642.5 ms  ✓ LuxCore → LuxCoreSetfieldExt
-    885.8 ms  ✓ MLDataDevices → MLDataDevicesChainRulesCoreExt
-    503.1 ms  ✓ LuxCore → LuxCoreMLDataDevicesExt
-   4046.5 ms  ✓ WeightInitializers
-    902.4 ms  ✓ WeightInitializers → WeightInitializersChainRulesCoreExt
-   7140.7 ms  ✓ NNlib
-   1550.5 ms  ✓ NNlib → NNlibEnzymeCoreExt
-   1564.3 ms  ✓ NNlib → NNlibForwardDiffExt
-   5799.1 ms  ✓ LuxLib
-   8839.4 ms  ✓ Lux
-  19 dependencies successfully precompiled in 24 seconds. 103 already precompiled.
+    484.2 ms  ✓ ArrayInterface → ArrayInterfaceGPUArraysCoreExt
+   2570.1 ms  ✓ WeightInitializers
+    851.0 ms  ✓ WeightInitializers → WeightInitializersChainRulesCoreExt
+   5186.4 ms  ✓ NNlib
+    745.5 ms  ✓ NNlib → NNlibEnzymeCoreExt
+    839.8 ms  ✓ NNlib → NNlibForwardDiffExt
+   5281.0 ms  ✓ LuxLib
+   8569.6 ms  ✓ Lux
+  8 dependencies successfully precompiled in 20 seconds. 110 already precompiled.
 Precompiling Boltz...
-   5031.9 ms  ✓ Boltz
-  1 dependency successfully precompiled in 5 seconds. 122 already precompiled.

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
+   5194.7 ms  ✓ Boltz
+  1 dependency successfully precompiled in 5 seconds. 119 already precompiled.

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
     Dense(784, 256, relu),
     Dense(256, 10)
 )
Chain(
diff --git a/dev/assets/tutorials_1_GettingStarted.md.BBRQSLz_.js b/dev/assets/tutorials_1_GettingStarted.md.BkXGCB_-.lean.js
similarity index 96%
rename from dev/assets/tutorials_1_GettingStarted.md.BBRQSLz_.js
rename to dev/assets/tutorials_1_GettingStarted.md.BkXGCB_-.lean.js
index f92e9e5..6c14f51 100644
--- a/dev/assets/tutorials_1_GettingStarted.md.BBRQSLz_.js
+++ b/dev/assets/tutorials_1_GettingStarted.md.BkXGCB_-.lean.js
@@ -1,27 +1,16 @@
 import{_ as a,c as n,a2 as p,o as l}from"./chunks/framework.Brfltvkk.js";const k=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/1_GettingStarted.md","filePath":"tutorials/1_GettingStarted.md","lastUpdated":null}'),e={name:"tutorials/1_GettingStarted.md"};function i(t,s,r,c,o,h){return l(),n("div",null,s[0]||(s[0]=[p(`

Getting Started

Prerequisites

Here we assume that you are familiar with Lux.jl. If not please take a look at the Lux.jl tutoials.

Boltz.jl is just like Lux.jl but comes with more "batteries included". Let's start by defining an MLP model.

julia
using Lux, Boltz, Random
Precompiling Lux...
-    550.3 ms  ✓ GPUArraysCore
-    976.0 ms  ✓ Functors
-    660.4 ms  ✓ ArrayInterface → ArrayInterfaceGPUArraysCoreExt
-   1554.3 ms  ✓ LuxCore
-   1129.3 ms  ✓ MLDataDevices
-   1046.6 ms  ✓ LuxCore → LuxCoreChainRulesCoreExt
-   1555.3 ms  ✓ Optimisers
-    835.1 ms  ✓ LuxCore → LuxCoreFunctorsExt
-    796.1 ms  ✓ LuxCore → LuxCoreEnzymeCoreExt
-    642.5 ms  ✓ LuxCore → LuxCoreSetfieldExt
-    885.8 ms  ✓ MLDataDevices → MLDataDevicesChainRulesCoreExt
-    503.1 ms  ✓ LuxCore → LuxCoreMLDataDevicesExt
-   4046.5 ms  ✓ WeightInitializers
-    902.4 ms  ✓ WeightInitializers → WeightInitializersChainRulesCoreExt
-   7140.7 ms  ✓ NNlib
-   1550.5 ms  ✓ NNlib → NNlibEnzymeCoreExt
-   1564.3 ms  ✓ NNlib → NNlibForwardDiffExt
-   5799.1 ms  ✓ LuxLib
-   8839.4 ms  ✓ Lux
-  19 dependencies successfully precompiled in 24 seconds. 103 already precompiled.
+    484.2 ms  ✓ ArrayInterface → ArrayInterfaceGPUArraysCoreExt
+   2570.1 ms  ✓ WeightInitializers
+    851.0 ms  ✓ WeightInitializers → WeightInitializersChainRulesCoreExt
+   5186.4 ms  ✓ NNlib
+    745.5 ms  ✓ NNlib → NNlibEnzymeCoreExt
+    839.8 ms  ✓ NNlib → NNlibForwardDiffExt
+   5281.0 ms  ✓ LuxLib
+   8569.6 ms  ✓ Lux
+  8 dependencies successfully precompiled in 20 seconds. 110 already precompiled.
 Precompiling Boltz...
-   5031.9 ms  ✓ Boltz
-  1 dependency successfully precompiled in 5 seconds. 122 already precompiled.

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
+   5194.7 ms  ✓ Boltz
+  1 dependency successfully precompiled in 5 seconds. 119 already precompiled.

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
     Dense(784, 256, relu),
     Dense(256, 10)
 )
Chain(
diff --git a/dev/assets/tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.js b/dev/assets/tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.js
similarity index 52%
rename from dev/assets/tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.js
rename to dev/assets/tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.js
index 4fd5b31..7b17f1f 100644
--- a/dev/assets/tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.js
+++ b/dev/assets/tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.js
@@ -1,565 +1,302 @@
-import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltvkk.js";const R=JSON.parse('{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/2_SymbolicOptimalControl.md","filePath":"tutorials/2_SymbolicOptimalControl.md","lastUpdated":null}'),l={name:"tutorials/2_SymbolicOptimalControl.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.238ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4525 1133.2","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.568ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 21025.1 2142.2","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.029ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2222.7 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.023ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1778 688","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.036ex",height:"2.016ex",role:"img",focusable:"false",viewBox:"0 -809 2668 891","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.601ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4243.6 1133.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.749ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 20663.1 2142.2","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"86.132ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 38070.4 2399","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"96.877ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 42819.8 1000","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"65.842ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 29102 1000","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"85.401ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 37747.3 1000","aria-hidden":"true"};function D(q,a,z,P,O,U){return t(),A("div",null,[a[36]||(a[36]=n('

Solving Optimal Control Problems with Symbolic Universal Differential Equations

This tutorial is based on SciMLSensitivity.jl tutorial. Instead of using a classical NN architecture, here we will combine the NN with a symbolic expression from DynamicExpressions.jl (the symbolic engine behind SymbolicRegression.jl and PySR).

Here we will solve a classic optimal control problem with a universal differential equation. Let

',3)),s("mjx-container",p,[(t(),A("svg",Q,a[0]||(a[0]=[n('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-alternate":"1"},"′"),s("mi",{"data-mjx-alternate":"1"},"′")])]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),s("p",null,[a[4]||(a[4]=i("where we want to optimize our controller ")),s("mjx-container",T,[(t(),A("svg",r,a[2]||(a[2]=[n('',1)]))),a[3]||(a[3]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=i(" such that the following is minimized:"))]),s("mjx-container",h,[(t(),A("svg",d,a[6]||(a[6]=[n('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[14]||(a[14]=i("where ")),s("mjx-container",o,[(t(),A("svg",m,a[8]||(a[8]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[9]||(a[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"i")])],-1))]),a[15]||(a[15]=i(" is measured on ")),s("mjx-container",k,[(t(),A("svg",c,a[10]||(a[10]=[n('',1)]))),a[11]||(a[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("mn",null,"0"),s("mo",null,","),s("mn",null,"8"),s("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=i(" at ")),s("mjx-container",E,[(t(),A("svg",g,a[12]||(a[12]=[n('',1)]))),a[13]||(a[13]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0.01")])],-1))]),a[17]||(a[17]=i(" intervals. To do this, we rewrite the ODE in first order form:"))]),s("mjx-container",y,[(t(),A("svg",u,a[18]||(a[18]=[n('',1)]))),a[19]||(a[19]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("mi",null,"v")])],-1))]),s("mjx-container",f,[(t(),A("svg",C,a[20]||(a[20]=[n('',1)]))),a[21]||(a[21]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"v"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[37]||(a[37]=s("p",null,"and thus",-1)),s("mjx-container",v,[(t(),A("svg",L,a[22]||(a[22]=[n('',1)]))),a[23]||(a[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"v"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[26]||(a[26]=i("is our loss function on the first order system. We thus choose a neural network form for ")),s("mjx-container",x,[(t(),A("svg",H,a[24]||(a[24]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[25]||(a[25]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])],-1))]),a[27]||(a[27]=i(" and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:"))]),a[38]||(a[38]=n(`

Package Imports

julia
using Lux, Boltz, ComponentArrays, OrdinaryDiffEqVerner, Optimization, OptimizationOptimJL,
+import{_ as e,c as A,a2 as t,j as s,a as i,o as n}from"./chunks/framework.Brfltvkk.js";const U=JSON.parse('{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/2_SymbolicOptimalControl.md","filePath":"tutorials/2_SymbolicOptimalControl.md","lastUpdated":null}'),l={name:"tutorials/2_SymbolicOptimalControl.md"},Q={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.238ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4525 1133.2","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.568ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 21025.1 2142.2","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.029ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2222.7 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.023ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1778 688","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.036ex",height:"2.016ex",role:"img",focusable:"false",viewBox:"0 -809 2668 891","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.601ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4243.6 1133.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.749ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 20663.1 2142.2","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"88.093ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 38936.9 1000","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"90.628ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 40057.8 1000","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"83.87ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 37070.4 2399","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.563ex"},xmlns:"http://www.w3.org/2000/svg",width:"51.231ex",height:"6.599ex",role:"img",focusable:"false",viewBox:"0 -1342 22644.3 2916.8","aria-hidden":"true"};function D(z,a,q,P,W,K){return n(),A("div",null,[a[36]||(a[36]=t('

Solving Optimal Control Problems with Symbolic Universal Differential Equations

This tutorial is based on SciMLSensitivity.jl tutorial. Instead of using a classical NN architecture, here we will combine the NN with a symbolic expression from DynamicExpressions.jl (the symbolic engine behind SymbolicRegression.jl and PySR).

Here we will solve a classic optimal control problem with a universal differential equation. Let

',3)),s("mjx-container",Q,[(n(),A("svg",p,a[0]||(a[0]=[t('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-alternate":"1"},"′"),s("mi",{"data-mjx-alternate":"1"},"′")])]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),s("p",null,[a[4]||(a[4]=i("where we want to optimize our controller ")),s("mjx-container",T,[(n(),A("svg",r,a[2]||(a[2]=[t('',1)]))),a[3]||(a[3]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=i(" such that the following is minimized:"))]),s("mjx-container",h,[(n(),A("svg",d,a[6]||(a[6]=[t('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[14]||(a[14]=i("where ")),s("mjx-container",o,[(n(),A("svg",k,a[8]||(a[8]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[9]||(a[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"i")])],-1))]),a[15]||(a[15]=i(" is measured on ")),s("mjx-container",m,[(n(),A("svg",c,a[10]||(a[10]=[t('',1)]))),a[11]||(a[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("mn",null,"0"),s("mo",null,","),s("mn",null,"8"),s("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=i(" at ")),s("mjx-container",E,[(n(),A("svg",g,a[12]||(a[12]=[t('',1)]))),a[13]||(a[13]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0.01")])],-1))]),a[17]||(a[17]=i(" intervals. To do this, we rewrite the ODE in first order form:"))]),s("mjx-container",y,[(n(),A("svg",C,a[18]||(a[18]=[t('',1)]))),a[19]||(a[19]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("mi",null,"v")])],-1))]),s("mjx-container",u,[(n(),A("svg",f,a[20]||(a[20]=[t('',1)]))),a[21]||(a[21]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"v"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[37]||(a[37]=s("p",null,"and thus",-1)),s("mjx-container",v,[(n(),A("svg",H,a[22]||(a[22]=[t('',1)]))),a[23]||(a[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"v"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[26]||(a[26]=i("is our loss function on the first order system. We thus choose a neural network form for ")),s("mjx-container",x,[(n(),A("svg",w,a[24]||(a[24]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[25]||(a[25]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])],-1))]),a[27]||(a[27]=i(" and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:"))]),a[38]||(a[38]=t(`

Package Imports

julia
using Lux, Boltz, ComponentArrays, OrdinaryDiffEqVerner, Optimization, OptimizationOptimJL,
       OptimizationOptimisers, SciMLSensitivity, Statistics, Printf, Random
 using DynamicExpressions, SymbolicRegression, MLJ, SymbolicUtils, Latexify
 using CairoMakie
Precompiling ComponentArrays...
-    854.9 ms  ✓ ComponentArrays
+    907.8 ms  ✓ ComponentArrays
   1 dependency successfully precompiled in 1 seconds. 57 already precompiled.
+Precompiling MLDataDevicesComponentArraysExt...
+    569.8 ms  ✓ MLDataDevices → MLDataDevicesComponentArraysExt
+  1 dependency successfully precompiled in 1 seconds. 60 already precompiled.
 Precompiling LuxComponentArraysExt...
-    581.6 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
-   2199.0 ms  ✓ Lux → LuxComponentArraysExt
-   2687.8 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
-  3 dependencies successfully precompiled in 3 seconds. 124 already precompiled.
+    659.6 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
+   1562.2 ms  ✓ Lux → LuxComponentArraysExt
+   1791.7 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
+  3 dependencies successfully precompiled in 2 seconds. 122 already precompiled.
 Precompiling OrdinaryDiffEqVerner...
-    461.5 ms  ✓ SimpleUnPack
-    455.2 ms  ✓ UnPack
-    498.4 ms  ✓ ExprTools
-    603.3 ms  ✓ CommonSolve
-    431.0 ms  ✓ MuladdMacro
-    408.1 ms  ✓ FastPower
-    964.2 ms  ✓ FunctionWrappers
-    519.0 ms  ✓ EnumX
-    556.1 ms  ✓ SciMLStructures
-    642.0 ms  ✓ TruncatedStacktraces
-   1289.6 ms  ✓ PreallocationTools
-   1196.8 ms  ✓ FastBroadcast
-    498.1 ms  ✓ Parameters
-    562.4 ms  ✓ RuntimeGeneratedFunctions
-   2923.3 ms  ✓ SciMLOperators
-   2895.0 ms  ✓ RecipesBase
-    719.5 ms  ✓ FunctionWrappersWrappers
-   1071.1 ms  ✓ FastPower → FastPowerForwardDiffExt
-    704.4 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
-   1534.6 ms  ✓ SymbolicIndexingInterface
-   1908.1 ms  ✓ RecursiveArrayTools
-    677.8 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
-    983.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
-   9024.0 ms  ✓ Expronicon
-  10429.4 ms  ✓ SciMLBase
-   5338.4 ms  ✓ DiffEqBase
-   4102.3 ms  ✓ OrdinaryDiffEqCore
-   1308.1 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
-  37548.8 ms  ✓ OrdinaryDiffEqVerner
-  29 dependencies successfully precompiled in 69 seconds. 96 already precompiled.
+    535.2 ms  ✓ SciMLStructures
+   1058.5 ms  ✓ FastPower → FastPowerForwardDiffExt
+   1165.6 ms  ✓ PreallocationTools
+   1134.0 ms  ✓ FastBroadcast
+   1858.5 ms  ✓ SymbolicIndexingInterface
+   2156.1 ms  ✓ SciMLOperators
+    459.8 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
+   1938.4 ms  ✓ RecursiveArrayTools
+    770.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
+    971.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
+  11292.2 ms  ✓ SciMLBase
+   5664.0 ms  ✓ DiffEqBase
+   4278.5 ms  ✓ OrdinaryDiffEqCore
+   1349.1 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
+  38780.7 ms  ✓ OrdinaryDiffEqVerner
+  15 dependencies successfully precompiled in 65 seconds. 110 already precompiled.
 Precompiling MLDataDevicesRecursiveArrayToolsExt...
-    558.9 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
+    563.7 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
   1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
 Precompiling ComponentArraysRecursiveArrayToolsExt...
-    649.0 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
+    661.7 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
   1 dependency successfully precompiled in 1 seconds. 81 already precompiled.
 Precompiling ComponentArraysSciMLBaseExt...
-    915.4 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
-   1010.1 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
+    911.5 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
+   1051.9 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
   2 dependencies successfully precompiled in 1 seconds. 97 already precompiled.
 Precompiling DiffEqBaseChainRulesCoreExt...
-   1398.9 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
+   1425.4 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
   1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
 Precompiling Optimization...
-    675.7 ms  ✓ LeftChildRightSiblingTrees
-    769.9 ms  ✓ LoggingExtras
-   1347.3 ms  ✓ ProgressMeter
-   1374.0 ms  ✓ DifferentiationInterface
-   1368.2 ms  ✓ PDMats
-    942.9 ms  ✓ L_BFGS_B_jll
-   1192.8 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
-   1488.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
-   1212.1 ms  ✓ TerminalLoggers
-    950.8 ms  ✓ ConsoleProgressMonitor
-   2162.7 ms  ✓ SparseMatrixColorings
-    966.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseArraysExt
-   1013.7 ms  ✓ FillArrays → FillArraysPDMatsExt
-    681.4 ms  ✓ LBFGSB
-    980.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseMatrixColoringsExt
-   4733.9 ms  ✓ SparseConnectivityTracer
-   1925.2 ms  ✓ OptimizationBase
-   1802.0 ms  ✓ Optimization
-  18 dependencies successfully precompiled in 9 seconds. 86 already precompiled.
+    698.1 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
+    788.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
+   1976.4 ms  ✓ OptimizationBase
+   1818.8 ms  ✓ Optimization
+  4 dependencies successfully precompiled in 5 seconds. 100 already precompiled.
 Precompiling DiffEqBaseSparseArraysExt...
-   1461.7 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
+   1508.3 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
   1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
-Precompiling DifferentiationInterfaceChainRulesCoreExt...
-    362.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceChainRulesCoreExt
-  1 dependency successfully precompiled in 0 seconds. 11 already precompiled.
-Precompiling DifferentiationInterfaceStaticArraysExt...
-    506.0 ms  ✓ DifferentiationInterface → DifferentiationInterfaceStaticArraysExt
-  1 dependency successfully precompiled in 1 seconds. 10 already precompiled.
 Precompiling DifferentiationInterfaceForwardDiffExt...
-    697.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
+    738.0 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
   1 dependency successfully precompiled in 1 seconds. 41 already precompiled.
 Precompiling SparseConnectivityTracerSpecialFunctionsExt...
-   1045.2 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
-   1406.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
+   1084.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
+   1461.4 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
   2 dependencies successfully precompiled in 2 seconds. 39 already precompiled.
 Precompiling SparseConnectivityTracerNNlibExt...
-   2083.9 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
-  1 dependency successfully precompiled in 2 seconds. 63 already precompiled.
-Precompiling SparseConnectivityTracerNaNMathExt...
-   1101.5 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNaNMathExt
-  1 dependency successfully precompiled in 1 seconds. 18 already precompiled.
+   1488.2 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
+  1 dependency successfully precompiled in 2 seconds. 46 already precompiled.
 Precompiling OptimizationForwardDiffExt...
-    569.2 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
+    599.4 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
   1 dependency successfully precompiled in 1 seconds. 110 already precompiled.
 Precompiling OptimizationMLDataDevicesExt...
-   1223.4 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
+   1291.6 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
   1 dependency successfully precompiled in 2 seconds. 97 already precompiled.
 Precompiling OptimizationOptimJL...
-    377.4 ms  ✓ PositiveFactorizations
-    545.1 ms  ✓ FiniteDiff
-    441.5 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
-    503.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
-    736.6 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
-   1175.7 ms  ✓ NLSolversBase
-   1695.9 ms  ✓ LineSearches
-   3024.0 ms  ✓ Optim
-  15448.5 ms  ✓ OptimizationOptimJL
-  9 dependencies successfully precompiled in 22 seconds. 129 already precompiled.
+    547.6 ms  ✓ FiniteDiff
+    429.5 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
+    491.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
+    787.0 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
+   1218.9 ms  ✓ NLSolversBase
+   1666.5 ms  ✓ LineSearches
+   2960.4 ms  ✓ Optim
+  15831.4 ms  ✓ OptimizationOptimJL
+  8 dependencies successfully precompiled in 22 seconds. 132 already precompiled.
 Precompiling FiniteDiffStaticArraysExt...
-    484.1 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
+    493.3 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
   1 dependency successfully precompiled in 1 seconds. 23 already precompiled.
 Precompiling OptimizationOptimisers...
-   1685.8 ms  ✓ OptimizationOptimisers
-  1 dependency successfully precompiled in 2 seconds. 112 already precompiled.
+   1796.5 ms  ✓ OptimizationOptimisers
+  1 dependency successfully precompiled in 2 seconds. 113 already precompiled.
 Precompiling SciMLSensitivity...
-    488.3 ms  ✓ PtrArrays
-    492.1 ms  ✓ StructIO
-    662.5 ms  ✓ PoissonRandom
-   1542.1 ms  ✓ OffsetArrays
-   1351.3 ms  ✓ RandomNumbers
-   1616.2 ms  ✓ Cassette
-   2137.6 ms  ✓ FastLapackInterface
-    700.9 ms  ✓ Scratch
-    711.7 ms  ✓ Accessors → AccessorsStructArraysExt
-   2008.8 ms  ✓ KLU
-    948.1 ms  ✓ Rmath_jll
-   1137.3 ms  ✓ oneTBB_jll
-   4923.4 ms  ✓ TimerOutputs
-    822.5 ms  ✓ ResettableStacks
-   1792.6 ms  ✓ QuadGK
-   2382.4 ms  ✓ Enzyme_jll
-   1883.2 ms  ✓ HypergeometricFunctions
-   2178.1 ms  ✓ IntelOpenMP_jll
-   1101.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
-   1198.3 ms  ✓ HostCPUFeatures
-  10178.7 ms  ✓ Krylov
-   2649.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
-   4715.7 ms  ✓ SciMLJacobianOperators
-   4930.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
-   5822.6 ms  ✓ SciMLBase → SciMLBaseZygoteExt
-    677.1 ms  ✓ AliasTables
-   3263.3 ms  ✓ ObjectFile
-    660.5 ms  ✓ OffsetArrays → OffsetArraysAdaptExt
-   9961.6 ms  ✓ Tracker
-    839.4 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
-   7554.4 ms  ✓ DiffEqCallbacks
-   2117.5 ms  ✓ Sparspak
-  22740.5 ms  ✓ ArrayLayouts
-    884.1 ms  ✓ FunctionProperties
-   1423.4 ms  ✓ Random123
-   1371.7 ms  ✓ Rmath
-   3293.4 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
-   3836.8 ms  ✓ Tracker → TrackerPDMatsExt
-   3561.7 ms  ✓ FastPower → FastPowerTrackerExt
-  27769.1 ms  ✓ ReverseDiff
-  13964.9 ms  ✓ MKL_jll
-   3839.1 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
-   4357.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
-  16124.7 ms  ✓ VectorizationBase
-   1440.4 ms  ✓ ArrayLayouts → ArrayLayoutsSparseArraysExt
-   3167.0 ms  ✓ StatsFuns
-   5574.3 ms  ✓ Zygote → ZygoteTrackerExt
-   5884.6 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
-   6571.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
-   6202.7 ms  ✓ FastPower → FastPowerReverseDiffExt
-   6542.8 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
-   1719.1 ms  ✓ SLEEFPirates
-   7007.8 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
-  10815.1 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
-   1347.4 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
-   5247.6 ms  ✓ LazyArrays
-   3384.0 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
-  10479.4 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
-   2213.2 ms  ✓ LazyArrays → LazyArraysStaticArraysExt
-   8663.7 ms  ✓ Distributions
-   2709.5 ms  ✓ Distributions → DistributionsTestExt
-   3038.6 ms  ✓ Distributions → DistributionsChainRulesCoreExt
-   3595.1 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
-  49307.7 ms  ✓ GPUCompiler
-   5015.3 ms  ✓ DiffEqNoiseProcess
-   7108.4 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
-  38392.2 ms  ✓ LoopVectorization
-   1546.5 ms  ✓ LoopVectorization → SpecialFunctionsExt
-   1660.0 ms  ✓ LoopVectorization → ForwardDiffExt
-   4133.0 ms  ✓ TriangularSolve
-  14192.1 ms  ✓ RecursiveFactorization
-  35171.5 ms  ✓ LinearSolve
-   3469.5 ms  ✓ LinearSolve → LinearSolveEnzymeExt
-   3482.1 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
-   5675.3 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
- 220020.6 ms  ✓ Enzyme
-  11452.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
-  11862.6 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
-  12737.9 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
-   9534.5 ms  ✓ FastPower → FastPowerEnzymeExt
-   9344.2 ms  ✓ QuadGK → QuadGKEnzymeExt
-  25774.0 ms  ✓ Enzyme → EnzymeStaticArraysExt
-  26594.3 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
-  17314.1 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
-  27835.9 ms  ✓ SciMLSensitivity
-  85 dependencies successfully precompiled in 349 seconds. 201 already precompiled.
-  1 dependency had output during precompilation:
-┌ MKL_jll
-│  \x1B[32m\x1B[1m Downloading\x1B[22m\x1B[39m artifact: IntelOpenMP
-
+    822.4 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
+   1047.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
+   1836.5 ms  ✓ HypergeometricFunctions
+   4636.4 ms  ✓ SciMLJacobianOperators
+   2707.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
+   8620.0 ms  ✓ Tracker
+   5113.9 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
+   6537.2 ms  ✓ SciMLBase → SciMLBaseZygoteExt
+  16322.8 ms  ✓ VectorizationBase
+   1939.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
+   3333.9 ms  ✓ StatsFuns
+   2623.7 ms  ✓ Tracker → TrackerPDMatsExt
+   8637.5 ms  ✓ DiffEqCallbacks
+   1857.7 ms  ✓ FastPower → FastPowerTrackerExt
+   1968.8 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
+   2060.0 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
+   3316.1 ms  ✓ Zygote → ZygoteTrackerExt
+   1681.9 ms  ✓ SLEEFPirates
+   1211.8 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
+   2357.7 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
+   4671.2 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
+  28365.5 ms  ✓ ReverseDiff
+   8229.7 ms  ✓ Distributions
+   6038.5 ms  ✓ FastPower → FastPowerReverseDiffExt
+   6554.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
+   6314.0 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
+   5943.8 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
+   2645.8 ms  ✓ Distributions → DistributionsTestExt
+  10055.9 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
+   2244.2 ms  ✓ Distributions → DistributionsChainRulesCoreExt
+   2975.1 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
+   8220.9 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
+   5193.2 ms  ✓ DiffEqNoiseProcess
+   7364.8 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
+  41229.9 ms  ✓ LoopVectorization
+   1555.5 ms  ✓ LoopVectorization → SpecialFunctionsExt
+   1690.2 ms  ✓ LoopVectorization → ForwardDiffExt
+   4263.8 ms  ✓ TriangularSolve
+  15174.5 ms  ✓ RecursiveFactorization
+  39350.2 ms  ✓ LinearSolve
+   3517.6 ms  ✓ LinearSolve → LinearSolveEnzymeExt
+   3553.5 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
+   5141.5 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
+ 245903.4 ms  ✓ Enzyme
+  12134.3 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
+  12281.7 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
+  12716.4 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
+   9784.2 ms  ✓ QuadGK → QuadGKEnzymeExt
+  10089.7 ms  ✓ FastPower → FastPowerEnzymeExt
+  26612.7 ms  ✓ Enzyme → EnzymeStaticArraysExt
+  28634.8 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
+  17972.1 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
+  28741.0 ms  ✓ SciMLSensitivity
+  53 dependencies successfully precompiled in 305 seconds. 234 already precompiled.
 Precompiling LuxLibSLEEFPiratesExt...
-   2817.9 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
-  1 dependency successfully precompiled in 3 seconds. 112 already precompiled.
+   2330.2 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
+  1 dependency successfully precompiled in 3 seconds. 108 already precompiled.
 Precompiling LuxLibLoopVectorizationExt...
-   4880.6 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
-  1 dependency successfully precompiled in 5 seconds. 120 already precompiled.
+   4521.8 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
+  1 dependency successfully precompiled in 5 seconds. 116 already precompiled.
 Precompiling LuxLibEnzymeExt...
-   1819.2 ms  ✓ LuxLib → LuxLibEnzymeExt
+   1228.4 ms  ✓ LuxLib → LuxLibEnzymeExt
   1 dependency successfully precompiled in 2 seconds. 129 already precompiled.
 Precompiling LuxEnzymeExt...
-   6789.5 ms  ✓ Lux → LuxEnzymeExt
-  1 dependency successfully precompiled in 7 seconds. 144 already precompiled.
+   7147.4 ms  ✓ Lux → LuxEnzymeExt
+  1 dependency successfully precompiled in 7 seconds. 145 already precompiled.
 Precompiling OptimizationEnzymeExt...
-  18377.9 ms  ✓ OptimizationBase → OptimizationEnzymeExt
-  1 dependency successfully precompiled in 19 seconds. 108 already precompiled.
+  19717.5 ms  ✓ OptimizationBase → OptimizationEnzymeExt
+  1 dependency successfully precompiled in 20 seconds. 108 already precompiled.
 Precompiling MLDataDevicesTrackerExt...
-   1716.5 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
-  1 dependency successfully precompiled in 2 seconds. 74 already precompiled.
+   1118.7 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 70 already precompiled.
 Precompiling LuxLibTrackerExt...
-   1628.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
-   3642.5 ms  ✓ LuxLib → LuxLibTrackerExt
-  2 dependencies successfully precompiled in 4 seconds. 114 already precompiled.
+   1087.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
+   3193.6 ms  ✓ LuxLib → LuxLibTrackerExt
+  2 dependencies successfully precompiled in 3 seconds. 111 already precompiled.
 Precompiling LuxTrackerExt...
-   2504.8 ms  ✓ Lux → LuxTrackerExt
-  1 dependency successfully precompiled in 3 seconds. 128 already precompiled.
+   1960.0 ms  ✓ Lux → LuxTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
 Precompiling BoltzTrackerExt...
-   2316.0 ms  ✓ Boltz → BoltzTrackerExt
-  1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
+   2346.1 ms  ✓ Boltz → BoltzTrackerExt
+  1 dependency successfully precompiled in 3 seconds. 128 already precompiled.
 Precompiling ComponentArraysTrackerExt...
-   1664.8 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
-  1 dependency successfully precompiled in 2 seconds. 85 already precompiled.
+   1083.9 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 81 already precompiled.
 Precompiling MLDataDevicesReverseDiffExt...
-   2902.3 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
+   2990.4 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 61 already precompiled.
 Precompiling LuxLibReverseDiffExt...
-   2812.9 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
-   4446.2 ms  ✓ LuxLib → LuxLibReverseDiffExt
-  2 dependencies successfully precompiled in 5 seconds. 113 already precompiled.
+   2904.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
+   3737.2 ms  ✓ LuxLib → LuxLibReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 109 already precompiled.
 Precompiling BoltzReverseDiffExt...
-   4140.9 ms  ✓ Boltz → BoltzReverseDiffExt
-   4511.2 ms  ✓ Lux → LuxReverseDiffExt
-  2 dependencies successfully precompiled in 5 seconds. 130 already precompiled.
+   3869.1 ms  ✓ Lux → LuxReverseDiffExt
+   4135.8 ms  ✓ Boltz → BoltzReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 128 already precompiled.
 Precompiling ComponentArraysReverseDiffExt...
-   2961.6 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
+   3034.8 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 69 already precompiled.
 Precompiling OptimizationReverseDiffExt...
-   2828.2 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
+   2855.6 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
 Precompiling ComponentArraysZygoteExt...
-   1443.0 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
-   1460.6 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+   1517.5 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+   1536.0 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
   2 dependencies successfully precompiled in 2 seconds. 98 already precompiled.
 Precompiling OptimizationZygoteExt...
-   1942.6 ms  ✓ OptimizationBase → OptimizationZygoteExt
+   2081.5 ms  ✓ OptimizationBase → OptimizationZygoteExt
   1 dependency successfully precompiled in 2 seconds. 142 already precompiled.
 Precompiling DynamicExpressionsOptimExt...
-   1163.1 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
-  1 dependency successfully precompiled in 1 seconds. 86 already precompiled.
+   1261.5 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
+  1 dependency successfully precompiled in 1 seconds. 88 already precompiled.
 Precompiling DynamicExpressionsLoopVectorizationExt...
-   3830.7 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
+   4239.7 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
   1 dependency successfully precompiled in 4 seconds. 49 already precompiled.
 Precompiling SymbolicRegression...
-    320.1 ms  ✓ ScientificTypesBase
-    405.1 ms  ✓ Tricks
-    470.1 ms  ✓ StatisticalTraits
-   1438.1 ms  ✓ LossFunctions
-    805.7 ms  ✓ MLJModelInterface
-   3816.2 ms  ✓ DynamicQuantities
-    580.3 ms  ✓ DynamicQuantities → DynamicQuantitiesLinearAlgebraExt
-  74197.1 ms  ✓ SymbolicRegression
-  8 dependencies successfully precompiled in 79 seconds. 98 already precompiled.
+   1764.0 ms  ✓ DynamicDiff
+  77556.6 ms  ✓ SymbolicRegression
+  2 dependencies successfully precompiled in 80 seconds. 107 already precompiled.
 Precompiling LuxLossFunctionsExt...
-   2049.0 ms  ✓ Lux → LuxLossFunctionsExt
-  1 dependency successfully precompiled in 3 seconds. 124 already precompiled.
+   1531.8 ms  ✓ Lux → LuxLossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 121 already precompiled.
 Precompiling SymbolicRegressionEnzymeExt...
-  20955.2 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
-  1 dependency successfully precompiled in 21 seconds. 126 already precompiled.
+  22658.2 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
+  1 dependency successfully precompiled in 23 seconds. 129 already precompiled.
 Precompiling MLJ...
-    475.6 ms  ✓ LaTeXStrings
-    474.8 ms  ✓ SimpleBufferStream
-    657.5 ms  ✓ InvertedIndices
-    705.3 ms  ✓ BitFlags
-   1315.7 ms  ✓ Combinatorics
-    632.0 ms  ✓ StableRNGs
-   1915.3 ms  ✓ Crayons
-    811.5 ms  ✓ ComputationalResources
-   1202.2 ms  ✓ ConcurrentUtilities
-   1275.2 ms  ✓ Distances
-   1372.5 ms  ✓ FeatureSelection
-    882.1 ms  ✓ EarlyStopping
-   4848.5 ms  ✓ FixedPointNumbers
-   2383.3 ms  ✓ MbedTLS
-   5994.9 ms  ✓ PrettyPrinting
-    553.2 ms  ✓ RelocatableFolders
-    644.1 ms  ✓ ExceptionUnwrapping
-   4514.2 ms  ✓ CategoricalArrays
-   2206.0 ms  ✓ LearnAPI
-   1944.2 ms  ✓ FilePathsBase
-   1740.4 ms  ✓ LatinHypercubeSampling
-   1284.7 ms  ✓ Distances → DistancesSparseArraysExt
-   3496.5 ms  ✓ StringManipulation
-    648.6 ms  ✓ Distances → DistancesChainRulesCoreExt
-   3328.7 ms  ✓ OpenSSL
-    943.6 ms  ✓ CategoricalArrays → CategoricalArraysJSONExt
-   2352.9 ms  ✓ IterationControl
-   1423.7 ms  ✓ CategoricalArrays → CategoricalArraysRecipesBaseExt
-    974.8 ms  ✓ FilePathsBase → FilePathsBaseMmapExt
-   3950.9 ms  ✓ ColorTypes
-   3522.2 ms  ✓ ARFFFiles
-   2056.0 ms  ✓ FilePathsBase → FilePathsBaseTestExt
-  11298.1 ms  ✓ MLUtils
-  11188.0 ms  ✓ StatisticalMeasuresBase
-  22739.1 ms  ✓ PrettyTables
-   3649.8 ms  ✓ ScientificTypes
-  25676.2 ms  ✓ HTTP
-   2217.9 ms  ✓ CategoricalDistributions
-   2122.1 ms  ✓ MLFlowClient
-   3922.5 ms  ✓ OpenML
-   6711.8 ms  ✓ MLJEnsembles
-  10440.4 ms  ✓ MLJBase
-  18619.4 ms  ✓ MLJModels
-   8723.6 ms  ✓ MLJBalancing
-   9150.5 ms  ✓ MLJTuning
-   9974.1 ms  ✓ MLJIteration
-   4707.9 ms  ✓ MLJFlow
-  26052.4 ms  ✓ StatisticalMeasures
-   3188.7 ms  ✓ StatisticalMeasures → ScientificTypesExt
-   3249.6 ms  ✓ MLJBase → DefaultMeasuresExt
-   6512.7 ms  ✓ MLJ
-  51 dependencies successfully precompiled in 77 seconds. 153 already precompiled.
-Precompiling LossFunctionsCategoricalArraysExt...
-    378.5 ms  ✓ LossFunctions → LossFunctionsCategoricalArraysExt
-  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+    504.6 ms  ✓ InvertedIndices
+    954.5 ms  ✓ ConcurrentUtilities
+   1405.6 ms  ✓ LatinHypercubeSampling
+   3348.9 ms  ✓ ScientificTypes
+   2322.5 ms  ✓ CategoricalDistributions
+   7798.0 ms  ✓ MLUtils
+   7089.5 ms  ✓ StatisticalMeasuresBase
+   6216.7 ms  ✓ MLJEnsembles
+  20028.2 ms  ✓ MLJModels
+  11847.4 ms  ✓ MLJBase
+   7834.8 ms  ✓ MLJTuning
+  33719.8 ms  ✓ HTTP
+   8295.3 ms  ✓ MLJBalancing
+   9090.2 ms  ✓ MLJIteration
+   2175.2 ms  ✓ MLFlowClient
+   3501.2 ms  ✓ OpenML
+   4225.4 ms  ✓ MLJFlow
+  28907.7 ms  ✓ StatisticalMeasures
+   2311.6 ms  ✓ StatisticalMeasures → ScientificTypesExt
+   2404.7 ms  ✓ MLJBase → DefaultMeasuresExt
+   6692.6 ms  ✓ MLJ
+  21 dependencies successfully precompiled in 53 seconds. 178 already precompiled.
 Precompiling DynamicQuantitiesScientificTypesExt...
-   1332.2 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
+   1431.0 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
   1 dependency successfully precompiled in 2 seconds. 85 already precompiled.
-Precompiling BangBangStructArraysExt...
-    397.4 ms  ✓ BangBang → BangBangStructArraysExt
-  1 dependency successfully precompiled in 1 seconds. 22 already precompiled.
-Precompiling TransducersLazyArraysExt...
-   1004.1 ms  ✓ Transducers → TransducersLazyArraysExt
-  1 dependency successfully precompiled in 1 seconds. 43 already precompiled.
 Precompiling MLDataDevicesMLUtilsExt...
-   2139.8 ms  ✓ MLDataDevices → MLDataDevicesMLUtilsExt
-  1 dependency successfully precompiled in 2 seconds. 116 already precompiled.
+   1405.4 ms  ✓ MLDataDevices → MLDataDevicesMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 102 already precompiled.
 Precompiling LuxMLUtilsExt...
-   2709.5 ms  ✓ Lux → LuxMLUtilsExt
-  1 dependency successfully precompiled in 3 seconds. 178 already precompiled.
+   1954.7 ms  ✓ Lux → LuxMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 177 already precompiled.
 Precompiling OptimizationMLUtilsExt...
-   2462.9 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
-  1 dependency successfully precompiled in 3 seconds. 155 already precompiled.
+   1690.5 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 151 already precompiled.
 Precompiling LossFunctionsExt...
-   3133.2 ms  ✓ StatisticalMeasures → LossFunctionsExt
-  1 dependency successfully precompiled in 4 seconds. 153 already precompiled.
+   2476.1 ms  ✓ StatisticalMeasures → LossFunctionsExt
+  1 dependency successfully precompiled in 3 seconds. 148 already precompiled.
 Precompiling SymbolicUtils...
-    372.2 ms  ✓ Bijections
-    382.6 ms  ✓ TermInterface
-    561.3 ms  ✓ Unityper
-   4986.2 ms  ✓ MutableArithmetics
-   2361.5 ms  ✓ MultivariatePolynomials
-   1490.3 ms  ✓ DynamicPolynomials
-  17587.1 ms  ✓ SymbolicUtils
-  7 dependencies successfully precompiled in 27 seconds. 81 already precompiled.
+  18508.7 ms  ✓ SymbolicUtils
+  1 dependency successfully precompiled in 19 seconds. 87 already precompiled.
 Precompiling DynamicExpressionsSymbolicUtilsExt...
-   1738.2 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
+   1776.8 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
   1 dependency successfully precompiled in 2 seconds. 92 already precompiled.
 Precompiling SymbolicRegressionSymbolicUtilsExt...
-   3777.5 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
-  1 dependency successfully precompiled in 4 seconds. 140 already precompiled.
+   3843.4 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
+  1 dependency successfully precompiled in 4 seconds. 143 already precompiled.
 Precompiling SymbolicUtilsReverseDiffExt...
-   3688.5 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
+   3759.6 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
   1 dependency successfully precompiled in 4 seconds. 99 already precompiled.
-Precompiling Latexify...
-    904.5 ms  ✓ Format
-   2951.1 ms  ✓ Latexify
-  2 dependencies successfully precompiled in 4 seconds. 8 already precompiled.
-Precompiling SparseArraysExt...
-    656.6 ms  ✓ Latexify → SparseArraysExt
-  1 dependency successfully precompiled in 1 seconds. 53 already precompiled.
 Precompiling CairoMakie...
-    528.5 ms  ✓ GeoFormatTypes
-    524.5 ms  ✓ Contour
-    569.1 ms  ✓ PaddedViews
-    660.9 ms  ✓ Observables
-    582.9 ms  ✓ IntervalSets
-    456.9 ms  ✓ PolygonOps
-    647.6 ms  ✓ Extents
-   1251.5 ms  ✓ Grisu
-    601.1 ms  ✓ StackViews
-    503.8 ms  ✓ LazyModules
-    684.6 ms  ✓ RoundingEmulator
-    891.9 ms  ✓ IterTools
-    557.0 ms  ✓ MappedArrays
-    490.2 ms  ✓ RangeArrays
-    588.5 ms  ✓ IndirectArrays
-    546.3 ms  ✓ TriplotBase
-    446.7 ms  ✓ Ratios
-    608.7 ms  ✓ Inflate
-    488.6 ms  ✓ TensorCore
-   2602.3 ms  ✓ AdaptivePredicates
-    541.8 ms  ✓ SignedDistanceFields
-   1348.3 ms  ✓ WoodburyMatrices
-   1119.8 ms  ✓ FilePaths
-   1087.7 ms  ✓ Libffi_jll
-    833.1 ms  ✓ isoband_jll
-   2359.3 ms  ✓ UnicodeFun
-   1123.6 ms  ✓ Libuuid_jll
-    833.6 ms  ✓ LLVMOpenMP_jll
-   1082.8 ms  ✓ Imath_jll
-    972.2 ms  ✓ JpegTurbo_jll
-   1126.9 ms  ✓ CRlibm_jll
-    847.3 ms  ✓ Ogg_jll
-   1003.9 ms  ✓ x264_jll
-   1027.0 ms  ✓ x265_jll
-    870.7 ms  ✓ FriBidi_jll
-    965.4 ms  ✓ Xorg_libXau_jll
-   1157.7 ms  ✓ Graphite2_jll
-   1539.2 ms  ✓ XML2_jll
-    963.6 ms  ✓ libpng_jll
-   1019.5 ms  ✓ Giflib_jll
-   1070.1 ms  ✓ LAME_jll
-   8163.3 ms  ✓ Colors
-    984.2 ms  ✓ EarCut_jll
-    869.3 ms  ✓ Xorg_libXdmcp_jll
-    839.7 ms  ✓ libaom_jll
-    742.1 ms  ✓ Opus_jll
-   1052.7 ms  ✓ Zstd_jll
-   1087.4 ms  ✓ LZO_jll
-    696.9 ms  ✓ Xorg_xtrans_jll
-    894.4 ms  ✓ Bzip2_jll
-   1080.2 ms  ✓ Libmount_jll
-    862.3 ms  ✓ LERC_jll
-   1108.0 ms  ✓ libfdk_aac_jll
-    890.7 ms  ✓ XZ_jll
-    852.2 ms  ✓ Libgpg_error_jll
-    819.3 ms  ✓ Xorg_libpthread_stubs_jll
-   1056.3 ms  ✓ FFTW_jll
-    482.1 ms  ✓ IntervalSets → IntervalSetsRandomExt
-    568.5 ms  ✓ IntervalSets → IntervalSetsStatisticsExt
-    524.9 ms  ✓ ConstructionBase → ConstructionBaseIntervalSetsExt
-   2669.1 ms  ✓ QOI
-   1771.3 ms  ✓ GeoInterface
-    815.2 ms  ✓ Showoff
-    674.8 ms  ✓ Ratios → RatiosFixedPointNumbersExt
-    895.6 ms  ✓ MosaicViews
-   1181.9 ms  ✓ AxisAlgorithms
-    937.9 ms  ✓ Isoband
-   7729.7 ms  ✓ PkgVersion
-   1147.3 ms  ✓ Pixman_jll
-   4365.4 ms  ✓ ColorVectorSpace
-   1337.7 ms  ✓ OpenEXR_jll
-   1275.3 ms  ✓ libvorbis_jll
-   1043.7 ms  ✓ Gettext_jll
-   1030.8 ms  ✓ libsixel_jll
-   1081.0 ms  ✓ Graphics
-   1361.2 ms  ✓ Animations
-   4661.9 ms  ✓ IntervalArithmetic
-   1283.1 ms  ✓ FreeType2_jll
-   2642.2 ms  ✓ ColorBrewer
-   1530.2 ms  ✓ Libtiff_jll
-   1020.2 ms  ✓ Libgcrypt_jll
-   1371.9 ms  ✓ AxisArrays
-  15607.6 ms  ✓ SIMD
-   1633.9 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
-   3900.4 ms  ✓ Interpolations
-   8471.4 ms  ✓ ColorSchemes
-  13013.9 ms  ✓ GeometryBasics
-   2002.0 ms  ✓ Glib_jll
-  41528.1 ms  ✓ Unitful
-    963.6 ms  ✓ IntervalArithmetic → IntervalArithmeticIntervalSetsExt
-   3208.7 ms  ✓ OpenEXR
-   1683.3 ms  ✓ Fontconfig_jll
-   1936.1 ms  ✓ FreeType
-   1351.7 ms  ✓ XSLT_jll
-  22992.3 ms  ✓ FFTW
-   8069.3 ms  ✓ ExactPredicates
-   1959.7 ms  ✓ Packing
-  15567.4 ms  ✓ GridLayoutBase
-  41967.3 ms  ✓ ImageCore
-   2622.0 ms  ✓ ShaderAbstractions
-  29322.1 ms  ✓ Automa
-   1067.1 ms  ✓ Unitful → InverseFunctionsUnitfulExt
-   1381.0 ms  ✓ Unitful → ConstructionBaseUnitfulExt
-  27175.2 ms  ✓ PlotUtils
-   2467.5 ms  ✓ Interpolations → InterpolationsUnitfulExt
-   9602.1 ms  ✓ MakieCore
-   2051.6 ms  ✓ Xorg_libxcb_jll
-   4479.8 ms  ✓ FreeTypeAbstraction
-   3052.1 ms  ✓ KernelDensity
-   3706.6 ms  ✓ ImageBase
-   7854.1 ms  ✓ DelaunayTriangulation
-   6203.3 ms  ✓ JpegTurbo
-   1230.1 ms  ✓ Xorg_libX11_jll
-   7855.2 ms  ✓ PNGFiles
-   1108.9 ms  ✓ Xorg_libXrender_jll
-   3269.8 ms  ✓ ImageAxes
-    956.6 ms  ✓ Xorg_libXext_jll
-   8061.8 ms  ✓ Sixel
-   1291.1 ms  ✓ Cairo_jll
-   1401.9 ms  ✓ Libglvnd_jll
-   1927.6 ms  ✓ ImageMetadata
-   1319.4 ms  ✓ HarfBuzz_jll
-   1314.5 ms  ✓ libwebp_jll
-   1139.9 ms  ✓ libass_jll
-   1176.6 ms  ✓ Pango_jll
-   3478.0 ms  ✓ Netpbm
-   1499.1 ms  ✓ FFMPEG_jll
-   1891.6 ms  ✓ Cairo
-   3729.9 ms  ✓ WebP
-  20247.5 ms  ✓ MathTeXEngine
-  87016.3 ms  ✓ TiffImages
-   1115.5 ms  ✓ ImageIO
- 143157.2 ms  ✓ Makie
-  81890.4 ms  ✓ CairoMakie
-  134 dependencies successfully precompiled in 361 seconds. 135 already precompiled.
-Precompiling SparseMatrixColoringsColorsExt...
-    791.6 ms  ✓ SparseMatrixColorings → SparseMatrixColoringsColorsExt
-  1 dependency successfully precompiled in 1 seconds. 29 already precompiled.
+    770.0 ms  ✓ Xorg_libXrender_jll
+    971.3 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
+   1210.5 ms  ✓ GeoInterface
+    890.4 ms  ✓ Cairo_jll
+    701.9 ms  ✓ HarfBuzz_jll
+   2385.5 ms  ✓ KernelDensity
+    744.5 ms  ✓ Pango_jll
+    964.8 ms  ✓ libass_jll
+   1381.9 ms  ✓ Cairo
+   1303.8 ms  ✓ FFMPEG_jll
+   5871.0 ms  ✓ GeometryBasics
+   1911.8 ms  ✓ Packing
+   2142.8 ms  ✓ ShaderAbstractions
+   3156.9 ms  ✓ FreeTypeAbstraction
+   6357.9 ms  ✓ MakieCore
+   8587.0 ms  ✓ GridLayoutBase
+  14893.8 ms  ✓ MathTeXEngine
+ 145635.1 ms  ✓ Makie
+  82150.4 ms  ✓ CairoMakie
+  19 dependencies successfully precompiled in 253 seconds. 250 already precompiled.
 Precompiling ZygoteColorsExt...
-   1550.6 ms  ✓ Zygote → ZygoteColorsExt
+   1558.6 ms  ✓ Zygote → ZygoteColorsExt
   1 dependency successfully precompiled in 2 seconds. 89 already precompiled.
-Precompiling AccessorsIntervalSetsExt...
-    694.3 ms  ✓ Accessors → AccessorsIntervalSetsExt
-  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
-Precompiling IntervalSetsRecipesBaseExt...
-    468.7 ms  ✓ IntervalSets → IntervalSetsRecipesBaseExt
-  1 dependency successfully precompiled in 1 seconds. 9 already precompiled.
-Precompiling AccessorsUnitfulExt...
-    517.6 ms  ✓ Accessors → AccessorsUnitfulExt
-  1 dependency successfully precompiled in 1 seconds. 17 already precompiled.
 Precompiling DiffEqBaseUnitfulExt...
-   1478.1 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
+   1421.5 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
   1 dependency successfully precompiled in 2 seconds. 123 already precompiled.
-Precompiling DynamicQuantitiesUnitfulExt...
-    987.6 ms  ✓ DynamicQuantities → DynamicQuantitiesUnitfulExt
-  1 dependency successfully precompiled in 1 seconds. 14 already precompiled.
 Precompiling NNlibFFTWExt...
-   1503.3 ms  ✓ NNlib → NNlibFFTWExt
-  1 dependency successfully precompiled in 2 seconds. 58 already precompiled.
+    778.6 ms  ✓ NNlib → NNlibFFTWExt
+  1 dependency successfully precompiled in 1 seconds. 54 already precompiled.
 Precompiling HTTPExt...
-   1582.1 ms  ✓ FileIO → HTTPExt
+   1598.8 ms  ✓ FileIO → HTTPExt
   1 dependency successfully precompiled in 2 seconds. 43 already precompiled.
 Precompiling IntervalArithmeticForwardDiffExt...
-    433.0 ms  ✓ IntervalArithmetic → IntervalArithmeticDiffRulesExt
-    619.6 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
-  2 dependencies successfully precompiled in 1 seconds. 42 already precompiled.
-Precompiling IntervalArithmeticRecipesBaseExt...
-    612.0 ms  ✓ IntervalArithmetic → IntervalArithmeticRecipesBaseExt
-  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+    613.3 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 43 already precompiled.
 Precompiling SciMLBaseMakieExt...
-   8115.2 ms  ✓ SciMLBase → SciMLBaseMakieExt
+   8252.6 ms  ✓ SciMLBase → SciMLBaseMakieExt
   1 dependency successfully precompiled in 9 seconds. 303 already precompiled.

Helper Functions

julia
function plot_dynamics(sol, us, ts)
     fig = Figure()
     ax = CairoMakie.Axis(fig[1, 1]; xlabel=L"t")
@@ -699,26 +436,26 @@ import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltv
 r = report(mach)
 best_eq = [r.equations[1][r.best_idx[1]], r.equations[2][r.best_idx[2]],
     r.equations[3][r.best_idx[3]], r.equations[4][r.best_idx[4]]]
4-element Vector{DynamicExpressions.ExpressionModule.Expression{Float64, DynamicExpressions.NodeModule.Node{Float64}, @NamedTuple{operators::DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}, variable_names::Vector{String}}}}:
- (((-0.13321428243861314 - ((0.8429576230558037 - ((x2 * x2) * (x2 + (x2 + -0.36587023826177456)))) * x1)) - x2) + (x3 / -0.28182516657243606)) * 0.11777767977748137
- (((x2 - x3) * (((1.3248108542721566 - (x1 * (1.3219022349598657 - x2))) * x2) + 0.8329723329564129)) - x4) - ((((x1 * x3) * 0.9061837815460375) + 0.02386752493998385) - x4)
- ((((x2 * -1.5820546813953016) - (x3 * ((x3 - x4) * 1.8125551854122142))) - -0.7885931564339473) - x4) + (x3 * 0.7663322029266375)
- (((x2 * (x2 + 0.34865973516490406)) * 2.2240536188165) + (-0.020339699275241985 - (x1 * x1))) * (1.8653534481831382 - (x2 * (((x3 + x2) * x2) * 3.3794565531533123)))

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

`,35)),s("mjx-container",F,[(t(),A("svg",w,a[28]||(a[28]=[n('',1)]))),a[29]||(a[29]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",null,"−"),s("mn",null,"0.13321"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"0.84296"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.36587"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"3")]),s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.28183")])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"0.11778")])],-1))]),s("mjx-container",b,[(t(),A("svg",V,a[30]||(a[30]=[n('',1)]))),a[31]||(a[31]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.3248"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.3219"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"0.83297"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.90618"),s("mo",null,"+"),s("mn",null,"0.023868"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("mjx-container",I,[(t(),A("svg",M,a[32]||(a[32]=[n('',1)]))),a[33]||(a[33]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"1.5821"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"1.8126"),s("mo",null,"+"),s("mn",null,"0.78859"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.76633")])],-1))]),s("mjx-container",Z,[(t(),A("svg",B,a[34]||(a[34]=[n('',1)]))),a[35]||(a[35]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"0.34866"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"2.2241"),s("mo",null,"−"),s("mn",null,"0.02034"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"1"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.8654"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mn",null,"3.3795"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[39]||(a[39]=n(`

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
+ (((x1 + ((x2 + (x2 * ((0.1365077871809465 - x2) * (x2 * -0.3706095837027754)))) * 1.1499767933395886)) * -0.10094513566229477) + -0.015682347987089805) - (x3 * 0.41529502093863896)
+ ((x2 + (((x2 + -0.14426087460968356) * ((x2 + (((x2 * x1) * ((x2 + -0.5022130467540905) + x2)) - x3)) - x4)) * 1.2384596950473552)) - x3) - 0.02392942727488574
+ ((((x4 * -0.19092641834728757) / (x2 + (-0.6513251066426832 - x1))) - 1.0153755877247124) * x3) - ((-1.2144344174950037 - ((x4 + 2.4341348924238555) * (x3 - x2))) * 0.6493562344860907)
+ (x3 * 0.15622313651527722) + ((x2 / (0.2433282150366007 / ((x4 * ((x4 / -0.15709638744100488) * x2)) + (x2 + 0.11002142482799021)))) + (x2 + -0.037915962614793824))

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

`,35)),s("mjx-container",F,[(n(),A("svg",L,a[28]||(a[28]=[t('',1)]))),a[29]||(a[29]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"0.13651"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.37061"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"1.15"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.10095"),s("mo",null,"−"),s("mn",null,"0.015682"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.4153")])],-1))]),s("mjx-container",V,[(n(),A("svg",b,a[30]||(a[30]=[t('',1)]))),a[31]||(a[31]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.14426"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.50221"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"1.2385"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mn",null,"0.023929")])],-1))]),s("mjx-container",I,[(n(),A("svg",M,a[32]||(a[32]=[t('',1)]))),a[33]||(a[33]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.19093")]),s("mrow",null,[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.65133"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1")])]),s("mo",null,"−"),s("mn",null,"1.0154"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",null,"−"),s("mn",null,"1.2144"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"+"),s("mn",null,"2.4341"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"0.64936")])],-1))]),s("mjx-container",Z,[(n(),A("svg",B,a[34]||(a[34]=[t('',1)]))),a[35]||(a[35]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.15622"),s("mo",null,"+"),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mfrac",null,[s("mn",null,"0.24333"),s("mrow",null,[s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"4")]),s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.1571")])]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"0.11002")])])]),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.037916")])],-1))]),a[39]||(a[39]=t(`

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
     Layers.DynamicExpressionsLayer(OperatorEnum(; binary_operators=[+, -, *, /]), best_eq),
     Dense(4 => 1))
Chain(
     layer_1 = Dense(1 => 4, gelu),      # 8 parameters
     layer_2 = DynamicExpressionsLayer(
         chain = Chain(
             layer_1 = Parallel(
-                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((-0.13321428243861314 - ((0.8429576230558037 - ((x2 * x2) * (x2 + (x2 + -0.36587023826177456)))) * x1)) - x2) + (x3 / -0.28182516657243606)) * 0.11777767977748137; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
-                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x2 - x3) * (((1.3248108542721566 - (x1 * (1.3219022349598657 - x2))) * x2) + 0.8329723329564129)) - x4) - ((((x1 * x3) * 0.9061837815460375) + 0.02386752493998385) - x4); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
-                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x2 * -1.5820546813953016) - (x3 * ((x3 - x4) * 1.8125551854122142))) - -0.7885931564339473) - x4) + (x3 * 0.7663322029266375); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
-                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x2 * (x2 + 0.34865973516490406)) * 2.2240536188165) + (-0.020339699275241985 - (x1 * x1))) * (1.8653534481831382 - (x2 * (((x3 + x2) * x2) * 3.3794565531533123))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
+                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x1 + ((x2 + (x2 * ((0.1365077871809465 - x2) * (x2 * -0.3706095837027754)))) * 1.1499767933395886)) * -0.10094513566229477) + -0.015682347987089805) - (x3 * 0.41529502093863896); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((x2 + (((x2 + -0.14426087460968356) * ((x2 + (((x2 * x1) * ((x2 + -0.5022130467540905) + x2)) - x3)) - x4)) * 1.2384596950473552)) - x3) - 0.02392942727488574; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x4 * -0.19092641834728757) / (x2 + (-0.6513251066426832 - x1))) - 1.0153755877247124) * x3) - ((-1.2144344174950037 - ((x4 + 2.4341348924238555) * (x3 - x2))) * 0.6493562344860907); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x3 * 0.15622313651527722) + ((x2 / (0.2433282150366007 / ((x4 * ((x4 / -0.15709638744100488) * x2)) + (x2 + 0.11002142482799021)))) + (x2 + -0.037915962614793824)); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
             ),
             layer_2 = WrappedFunction(stack1),
         ),
     ),
     layer_3 = Dense(4 => 1),            # 5 parameters
-)         # Total: 32 parameters,
+)         # Total: 34 parameters,
           #        plus 0 states.

There you have it! It is that easy to take the fitted Symbolic Expression and combine it with a neural network. Let's see how it performs before fintetuning.

julia
hybrid_ude = construct_ude(hybrid_mlp, Vern9(); abstol=1e-10, reltol=1e-10);

We want to reuse the trained neural network parameters, so we will copy them over to the new model

julia
st = Lux.initialstates(rng, hybrid_ude)
 ps = (;
     mlp=(; layer_1=trained_ude.ps.mlp.layer_1,
@@ -727,7 +464,7 @@ import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltv
 ps = ComponentArray(ps)
 
 sol, us = hybrid_ude(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), ps, st)[1];
-plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
 InteractiveUtils.versioninfo()
 
 if @isdefined(MLDataDevices)
@@ -754,4 +491,4 @@ import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltv
   JULIA_NUM_THREADS = 1
   JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
   JULIA_PKG_PRECOMPILE_AUTO = 0
-  JULIA_DEBUG = Literate

This page was generated using Literate.jl.

`,15))])}const W=e(l,[["render",D]]);export{R as __pageData,W as default}; + JULIA_DEBUG = Literate

This page was generated using Literate.jl.

`,15))])}const j=e(l,[["render",D]]);export{U as __pageData,j as default}; diff --git a/dev/assets/tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.lean.js b/dev/assets/tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.lean.js similarity index 52% rename from dev/assets/tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.lean.js rename to dev/assets/tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.lean.js index 4fd5b31..7b17f1f 100644 --- a/dev/assets/tutorials_2_SymbolicOptimalControl.md.D3lY2zdR.lean.js +++ b/dev/assets/tutorials_2_SymbolicOptimalControl.md.BVL3a2D7.lean.js @@ -1,565 +1,302 @@ -import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltvkk.js";const R=JSON.parse('{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/2_SymbolicOptimalControl.md","filePath":"tutorials/2_SymbolicOptimalControl.md","lastUpdated":null}'),l={name:"tutorials/2_SymbolicOptimalControl.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.238ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4525 1133.2","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.568ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 21025.1 2142.2","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.029ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2222.7 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.023ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1778 688","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.036ex",height:"2.016ex",role:"img",focusable:"false",viewBox:"0 -809 2668 891","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.601ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4243.6 1133.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.749ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 20663.1 2142.2","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"86.132ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 38070.4 2399","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"96.877ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 42819.8 1000","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"65.842ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 29102 1000","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"85.401ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 37747.3 1000","aria-hidden":"true"};function D(q,a,z,P,O,U){return t(),A("div",null,[a[36]||(a[36]=n('

Solving Optimal Control Problems with Symbolic Universal Differential Equations

This tutorial is based on SciMLSensitivity.jl tutorial. Instead of using a classical NN architecture, here we will combine the NN with a symbolic expression from DynamicExpressions.jl (the symbolic engine behind SymbolicRegression.jl and PySR).

Here we will solve a classic optimal control problem with a universal differential equation. Let

',3)),s("mjx-container",p,[(t(),A("svg",Q,a[0]||(a[0]=[n('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-alternate":"1"},"′"),s("mi",{"data-mjx-alternate":"1"},"′")])]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),s("p",null,[a[4]||(a[4]=i("where we want to optimize our controller ")),s("mjx-container",T,[(t(),A("svg",r,a[2]||(a[2]=[n('',1)]))),a[3]||(a[3]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=i(" such that the following is minimized:"))]),s("mjx-container",h,[(t(),A("svg",d,a[6]||(a[6]=[n('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[14]||(a[14]=i("where ")),s("mjx-container",o,[(t(),A("svg",m,a[8]||(a[8]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[9]||(a[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"i")])],-1))]),a[15]||(a[15]=i(" is measured on ")),s("mjx-container",k,[(t(),A("svg",c,a[10]||(a[10]=[n('',1)]))),a[11]||(a[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("mn",null,"0"),s("mo",null,","),s("mn",null,"8"),s("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=i(" at ")),s("mjx-container",E,[(t(),A("svg",g,a[12]||(a[12]=[n('',1)]))),a[13]||(a[13]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0.01")])],-1))]),a[17]||(a[17]=i(" intervals. To do this, we rewrite the ODE in first order form:"))]),s("mjx-container",y,[(t(),A("svg",u,a[18]||(a[18]=[n('',1)]))),a[19]||(a[19]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("mi",null,"v")])],-1))]),s("mjx-container",f,[(t(),A("svg",C,a[20]||(a[20]=[n('',1)]))),a[21]||(a[21]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"v"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[37]||(a[37]=s("p",null,"and thus",-1)),s("mjx-container",v,[(t(),A("svg",L,a[22]||(a[22]=[n('',1)]))),a[23]||(a[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"v"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[26]||(a[26]=i("is our loss function on the first order system. We thus choose a neural network form for ")),s("mjx-container",x,[(t(),A("svg",H,a[24]||(a[24]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[25]||(a[25]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])],-1))]),a[27]||(a[27]=i(" and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:"))]),a[38]||(a[38]=n(`

Package Imports

julia
using Lux, Boltz, ComponentArrays, OrdinaryDiffEqVerner, Optimization, OptimizationOptimJL,
+import{_ as e,c as A,a2 as t,j as s,a as i,o as n}from"./chunks/framework.Brfltvkk.js";const U=JSON.parse('{"title":"Solving Optimal Control Problems with Symbolic Universal Differential Equations","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/2_SymbolicOptimalControl.md","filePath":"tutorials/2_SymbolicOptimalControl.md","lastUpdated":null}'),l={name:"tutorials/2_SymbolicOptimalControl.md"},Q={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.238ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4525 1133.2","aria-hidden":"true"},T={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"47.568ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 21025.1 2142.2","aria-hidden":"true"},o={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.029ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2222.7 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.023ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 1778 688","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.036ex",height:"2.016ex",role:"img",focusable:"false",viewBox:"0 -809 2668 891","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.601ex",height:"2.564ex",role:"img",focusable:"false",viewBox:"0 -883.2 4243.6 1133.2","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.697ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.749ex",height:"4.847ex",role:"img",focusable:"false",viewBox:"0 -950 20663.1 2142.2","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"88.093ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 38936.9 1000","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"90.628ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 40057.8 1000","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"83.87ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 37070.4 2399","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.563ex"},xmlns:"http://www.w3.org/2000/svg",width:"51.231ex",height:"6.599ex",role:"img",focusable:"false",viewBox:"0 -1342 22644.3 2916.8","aria-hidden":"true"};function D(z,a,q,P,W,K){return n(),A("div",null,[a[36]||(a[36]=t('

Solving Optimal Control Problems with Symbolic Universal Differential Equations

This tutorial is based on SciMLSensitivity.jl tutorial. Instead of using a classical NN architecture, here we will combine the NN with a symbolic expression from DynamicExpressions.jl (the symbolic engine behind SymbolicRegression.jl and PySR).

Here we will solve a classic optimal control problem with a universal differential equation. Let

',3)),s("mjx-container",Q,[(n(),A("svg",p,a[0]||(a[0]=[t('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-alternate":"1"},"′"),s("mi",{"data-mjx-alternate":"1"},"′")])]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),s("p",null,[a[4]||(a[4]=i("where we want to optimize our controller ")),s("mjx-container",T,[(n(),A("svg",r,a[2]||(a[2]=[t('',1)]))),a[3]||(a[3]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=i(" such that the following is minimized:"))]),s("mjx-container",h,[(n(),A("svg",d,a[6]||(a[6]=[t('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[14]||(a[14]=i("where ")),s("mjx-container",o,[(n(),A("svg",k,a[8]||(a[8]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[9]||(a[9]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"i")])],-1))]),a[15]||(a[15]=i(" is measured on ")),s("mjx-container",m,[(n(),A("svg",c,a[10]||(a[10]=[t('',1)]))),a[11]||(a[11]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("mn",null,"0"),s("mo",null,","),s("mn",null,"8"),s("mo",{stretchy:"false"},")")])],-1))]),a[16]||(a[16]=i(" at ")),s("mjx-container",E,[(n(),A("svg",g,a[12]||(a[12]=[t('',1)]))),a[13]||(a[13]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0.01")])],-1))]),a[17]||(a[17]=i(" intervals. To do this, we rewrite the ODE in first order form:"))]),s("mjx-container",y,[(n(),A("svg",C,a[18]||(a[18]=[t('',1)]))),a[19]||(a[19]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"x"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("mi",null,"v")])],-1))]),s("mjx-container",u,[(n(),A("svg",f,a[20]||(a[20]=[t('',1)]))),a[21]||(a[21]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"v"),s("mi",{"data-mjx-alternate":"1"},"′")]),s("mo",null,"="),s("msup",null,[s("mi",null,"u"),s("mn",null,"3")]),s("mo",{stretchy:"false"},"("),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[37]||(a[37]=s("p",null,"and thus",-1)),s("mjx-container",v,[(n(),A("svg",H,a[22]||(a[22]=[t('',1)]))),a[23]||(a[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"L")]),s("mo",{stretchy:"false"},"("),s("mi",null,"θ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mi",null,"i")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"4"),s("mo",null,"−"),s("mi",null,"x"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"v"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"+"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"u"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"t"),s("mi",null,"i")]),s("mo",{stretchy:"false"},")"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("p",null,[a[26]||(a[26]=i("is our loss function on the first order system. We thus choose a neural network form for ")),s("mjx-container",x,[(n(),A("svg",w,a[24]||(a[24]=[s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[25]||(a[25]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])],-1))]),a[27]||(a[27]=i(" and optimize the equation with respect to this loss. Note that we will first reduce control cost (the last term) by 10x in order to bump the network out of a local minimum. This looks like:"))]),a[38]||(a[38]=t(`

Package Imports

julia
using Lux, Boltz, ComponentArrays, OrdinaryDiffEqVerner, Optimization, OptimizationOptimJL,
       OptimizationOptimisers, SciMLSensitivity, Statistics, Printf, Random
 using DynamicExpressions, SymbolicRegression, MLJ, SymbolicUtils, Latexify
 using CairoMakie
Precompiling ComponentArrays...
-    854.9 ms  ✓ ComponentArrays
+    907.8 ms  ✓ ComponentArrays
   1 dependency successfully precompiled in 1 seconds. 57 already precompiled.
+Precompiling MLDataDevicesComponentArraysExt...
+    569.8 ms  ✓ MLDataDevices → MLDataDevicesComponentArraysExt
+  1 dependency successfully precompiled in 1 seconds. 60 already precompiled.
 Precompiling LuxComponentArraysExt...
-    581.6 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
-   2199.0 ms  ✓ Lux → LuxComponentArraysExt
-   2687.8 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
-  3 dependencies successfully precompiled in 3 seconds. 124 already precompiled.
+    659.6 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
+   1562.2 ms  ✓ Lux → LuxComponentArraysExt
+   1791.7 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
+  3 dependencies successfully precompiled in 2 seconds. 122 already precompiled.
 Precompiling OrdinaryDiffEqVerner...
-    461.5 ms  ✓ SimpleUnPack
-    455.2 ms  ✓ UnPack
-    498.4 ms  ✓ ExprTools
-    603.3 ms  ✓ CommonSolve
-    431.0 ms  ✓ MuladdMacro
-    408.1 ms  ✓ FastPower
-    964.2 ms  ✓ FunctionWrappers
-    519.0 ms  ✓ EnumX
-    556.1 ms  ✓ SciMLStructures
-    642.0 ms  ✓ TruncatedStacktraces
-   1289.6 ms  ✓ PreallocationTools
-   1196.8 ms  ✓ FastBroadcast
-    498.1 ms  ✓ Parameters
-    562.4 ms  ✓ RuntimeGeneratedFunctions
-   2923.3 ms  ✓ SciMLOperators
-   2895.0 ms  ✓ RecipesBase
-    719.5 ms  ✓ FunctionWrappersWrappers
-   1071.1 ms  ✓ FastPower → FastPowerForwardDiffExt
-    704.4 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
-   1534.6 ms  ✓ SymbolicIndexingInterface
-   1908.1 ms  ✓ RecursiveArrayTools
-    677.8 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
-    983.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
-   9024.0 ms  ✓ Expronicon
-  10429.4 ms  ✓ SciMLBase
-   5338.4 ms  ✓ DiffEqBase
-   4102.3 ms  ✓ OrdinaryDiffEqCore
-   1308.1 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
-  37548.8 ms  ✓ OrdinaryDiffEqVerner
-  29 dependencies successfully precompiled in 69 seconds. 96 already precompiled.
+    535.2 ms  ✓ SciMLStructures
+   1058.5 ms  ✓ FastPower → FastPowerForwardDiffExt
+   1165.6 ms  ✓ PreallocationTools
+   1134.0 ms  ✓ FastBroadcast
+   1858.5 ms  ✓ SymbolicIndexingInterface
+   2156.1 ms  ✓ SciMLOperators
+    459.8 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
+   1938.4 ms  ✓ RecursiveArrayTools
+    770.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
+    971.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
+  11292.2 ms  ✓ SciMLBase
+   5664.0 ms  ✓ DiffEqBase
+   4278.5 ms  ✓ OrdinaryDiffEqCore
+   1349.1 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
+  38780.7 ms  ✓ OrdinaryDiffEqVerner
+  15 dependencies successfully precompiled in 65 seconds. 110 already precompiled.
 Precompiling MLDataDevicesRecursiveArrayToolsExt...
-    558.9 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
+    563.7 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
   1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
 Precompiling ComponentArraysRecursiveArrayToolsExt...
-    649.0 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
+    661.7 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
   1 dependency successfully precompiled in 1 seconds. 81 already precompiled.
 Precompiling ComponentArraysSciMLBaseExt...
-    915.4 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
-   1010.1 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
+    911.5 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
+   1051.9 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
   2 dependencies successfully precompiled in 1 seconds. 97 already precompiled.
 Precompiling DiffEqBaseChainRulesCoreExt...
-   1398.9 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
+   1425.4 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
   1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
 Precompiling Optimization...
-    675.7 ms  ✓ LeftChildRightSiblingTrees
-    769.9 ms  ✓ LoggingExtras
-   1347.3 ms  ✓ ProgressMeter
-   1374.0 ms  ✓ DifferentiationInterface
-   1368.2 ms  ✓ PDMats
-    942.9 ms  ✓ L_BFGS_B_jll
-   1192.8 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
-   1488.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
-   1212.1 ms  ✓ TerminalLoggers
-    950.8 ms  ✓ ConsoleProgressMonitor
-   2162.7 ms  ✓ SparseMatrixColorings
-    966.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseArraysExt
-   1013.7 ms  ✓ FillArrays → FillArraysPDMatsExt
-    681.4 ms  ✓ LBFGSB
-    980.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseMatrixColoringsExt
-   4733.9 ms  ✓ SparseConnectivityTracer
-   1925.2 ms  ✓ OptimizationBase
-   1802.0 ms  ✓ Optimization
-  18 dependencies successfully precompiled in 9 seconds. 86 already precompiled.
+    698.1 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
+    788.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
+   1976.4 ms  ✓ OptimizationBase
+   1818.8 ms  ✓ Optimization
+  4 dependencies successfully precompiled in 5 seconds. 100 already precompiled.
 Precompiling DiffEqBaseSparseArraysExt...
-   1461.7 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
+   1508.3 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
   1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
-Precompiling DifferentiationInterfaceChainRulesCoreExt...
-    362.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceChainRulesCoreExt
-  1 dependency successfully precompiled in 0 seconds. 11 already precompiled.
-Precompiling DifferentiationInterfaceStaticArraysExt...
-    506.0 ms  ✓ DifferentiationInterface → DifferentiationInterfaceStaticArraysExt
-  1 dependency successfully precompiled in 1 seconds. 10 already precompiled.
 Precompiling DifferentiationInterfaceForwardDiffExt...
-    697.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
+    738.0 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
   1 dependency successfully precompiled in 1 seconds. 41 already precompiled.
 Precompiling SparseConnectivityTracerSpecialFunctionsExt...
-   1045.2 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
-   1406.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
+   1084.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
+   1461.4 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
   2 dependencies successfully precompiled in 2 seconds. 39 already precompiled.
 Precompiling SparseConnectivityTracerNNlibExt...
-   2083.9 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
-  1 dependency successfully precompiled in 2 seconds. 63 already precompiled.
-Precompiling SparseConnectivityTracerNaNMathExt...
-   1101.5 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNaNMathExt
-  1 dependency successfully precompiled in 1 seconds. 18 already precompiled.
+   1488.2 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
+  1 dependency successfully precompiled in 2 seconds. 46 already precompiled.
 Precompiling OptimizationForwardDiffExt...
-    569.2 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
+    599.4 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
   1 dependency successfully precompiled in 1 seconds. 110 already precompiled.
 Precompiling OptimizationMLDataDevicesExt...
-   1223.4 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
+   1291.6 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
   1 dependency successfully precompiled in 2 seconds. 97 already precompiled.
 Precompiling OptimizationOptimJL...
-    377.4 ms  ✓ PositiveFactorizations
-    545.1 ms  ✓ FiniteDiff
-    441.5 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
-    503.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
-    736.6 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
-   1175.7 ms  ✓ NLSolversBase
-   1695.9 ms  ✓ LineSearches
-   3024.0 ms  ✓ Optim
-  15448.5 ms  ✓ OptimizationOptimJL
-  9 dependencies successfully precompiled in 22 seconds. 129 already precompiled.
+    547.6 ms  ✓ FiniteDiff
+    429.5 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
+    491.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
+    787.0 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
+   1218.9 ms  ✓ NLSolversBase
+   1666.5 ms  ✓ LineSearches
+   2960.4 ms  ✓ Optim
+  15831.4 ms  ✓ OptimizationOptimJL
+  8 dependencies successfully precompiled in 22 seconds. 132 already precompiled.
 Precompiling FiniteDiffStaticArraysExt...
-    484.1 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
+    493.3 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
   1 dependency successfully precompiled in 1 seconds. 23 already precompiled.
 Precompiling OptimizationOptimisers...
-   1685.8 ms  ✓ OptimizationOptimisers
-  1 dependency successfully precompiled in 2 seconds. 112 already precompiled.
+   1796.5 ms  ✓ OptimizationOptimisers
+  1 dependency successfully precompiled in 2 seconds. 113 already precompiled.
 Precompiling SciMLSensitivity...
-    488.3 ms  ✓ PtrArrays
-    492.1 ms  ✓ StructIO
-    662.5 ms  ✓ PoissonRandom
-   1542.1 ms  ✓ OffsetArrays
-   1351.3 ms  ✓ RandomNumbers
-   1616.2 ms  ✓ Cassette
-   2137.6 ms  ✓ FastLapackInterface
-    700.9 ms  ✓ Scratch
-    711.7 ms  ✓ Accessors → AccessorsStructArraysExt
-   2008.8 ms  ✓ KLU
-    948.1 ms  ✓ Rmath_jll
-   1137.3 ms  ✓ oneTBB_jll
-   4923.4 ms  ✓ TimerOutputs
-    822.5 ms  ✓ ResettableStacks
-   1792.6 ms  ✓ QuadGK
-   2382.4 ms  ✓ Enzyme_jll
-   1883.2 ms  ✓ HypergeometricFunctions
-   2178.1 ms  ✓ IntelOpenMP_jll
-   1101.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
-   1198.3 ms  ✓ HostCPUFeatures
-  10178.7 ms  ✓ Krylov
-   2649.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
-   4715.7 ms  ✓ SciMLJacobianOperators
-   4930.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
-   5822.6 ms  ✓ SciMLBase → SciMLBaseZygoteExt
-    677.1 ms  ✓ AliasTables
-   3263.3 ms  ✓ ObjectFile
-    660.5 ms  ✓ OffsetArrays → OffsetArraysAdaptExt
-   9961.6 ms  ✓ Tracker
-    839.4 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
-   7554.4 ms  ✓ DiffEqCallbacks
-   2117.5 ms  ✓ Sparspak
-  22740.5 ms  ✓ ArrayLayouts
-    884.1 ms  ✓ FunctionProperties
-   1423.4 ms  ✓ Random123
-   1371.7 ms  ✓ Rmath
-   3293.4 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
-   3836.8 ms  ✓ Tracker → TrackerPDMatsExt
-   3561.7 ms  ✓ FastPower → FastPowerTrackerExt
-  27769.1 ms  ✓ ReverseDiff
-  13964.9 ms  ✓ MKL_jll
-   3839.1 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
-   4357.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
-  16124.7 ms  ✓ VectorizationBase
-   1440.4 ms  ✓ ArrayLayouts → ArrayLayoutsSparseArraysExt
-   3167.0 ms  ✓ StatsFuns
-   5574.3 ms  ✓ Zygote → ZygoteTrackerExt
-   5884.6 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
-   6571.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
-   6202.7 ms  ✓ FastPower → FastPowerReverseDiffExt
-   6542.8 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
-   1719.1 ms  ✓ SLEEFPirates
-   7007.8 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
-  10815.1 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
-   1347.4 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
-   5247.6 ms  ✓ LazyArrays
-   3384.0 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
-  10479.4 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
-   2213.2 ms  ✓ LazyArrays → LazyArraysStaticArraysExt
-   8663.7 ms  ✓ Distributions
-   2709.5 ms  ✓ Distributions → DistributionsTestExt
-   3038.6 ms  ✓ Distributions → DistributionsChainRulesCoreExt
-   3595.1 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
-  49307.7 ms  ✓ GPUCompiler
-   5015.3 ms  ✓ DiffEqNoiseProcess
-   7108.4 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
-  38392.2 ms  ✓ LoopVectorization
-   1546.5 ms  ✓ LoopVectorization → SpecialFunctionsExt
-   1660.0 ms  ✓ LoopVectorization → ForwardDiffExt
-   4133.0 ms  ✓ TriangularSolve
-  14192.1 ms  ✓ RecursiveFactorization
-  35171.5 ms  ✓ LinearSolve
-   3469.5 ms  ✓ LinearSolve → LinearSolveEnzymeExt
-   3482.1 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
-   5675.3 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
- 220020.6 ms  ✓ Enzyme
-  11452.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
-  11862.6 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
-  12737.9 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
-   9534.5 ms  ✓ FastPower → FastPowerEnzymeExt
-   9344.2 ms  ✓ QuadGK → QuadGKEnzymeExt
-  25774.0 ms  ✓ Enzyme → EnzymeStaticArraysExt
-  26594.3 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
-  17314.1 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
-  27835.9 ms  ✓ SciMLSensitivity
-  85 dependencies successfully precompiled in 349 seconds. 201 already precompiled.
-  1 dependency had output during precompilation:
-┌ MKL_jll
-│  \x1B[32m\x1B[1m Downloading\x1B[22m\x1B[39m artifact: IntelOpenMP
-
+    822.4 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
+   1047.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
+   1836.5 ms  ✓ HypergeometricFunctions
+   4636.4 ms  ✓ SciMLJacobianOperators
+   2707.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
+   8620.0 ms  ✓ Tracker
+   5113.9 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
+   6537.2 ms  ✓ SciMLBase → SciMLBaseZygoteExt
+  16322.8 ms  ✓ VectorizationBase
+   1939.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
+   3333.9 ms  ✓ StatsFuns
+   2623.7 ms  ✓ Tracker → TrackerPDMatsExt
+   8637.5 ms  ✓ DiffEqCallbacks
+   1857.7 ms  ✓ FastPower → FastPowerTrackerExt
+   1968.8 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
+   2060.0 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
+   3316.1 ms  ✓ Zygote → ZygoteTrackerExt
+   1681.9 ms  ✓ SLEEFPirates
+   1211.8 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
+   2357.7 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
+   4671.2 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
+  28365.5 ms  ✓ ReverseDiff
+   8229.7 ms  ✓ Distributions
+   6038.5 ms  ✓ FastPower → FastPowerReverseDiffExt
+   6554.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
+   6314.0 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
+   5943.8 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
+   2645.8 ms  ✓ Distributions → DistributionsTestExt
+  10055.9 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
+   2244.2 ms  ✓ Distributions → DistributionsChainRulesCoreExt
+   2975.1 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
+   8220.9 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
+   5193.2 ms  ✓ DiffEqNoiseProcess
+   7364.8 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
+  41229.9 ms  ✓ LoopVectorization
+   1555.5 ms  ✓ LoopVectorization → SpecialFunctionsExt
+   1690.2 ms  ✓ LoopVectorization → ForwardDiffExt
+   4263.8 ms  ✓ TriangularSolve
+  15174.5 ms  ✓ RecursiveFactorization
+  39350.2 ms  ✓ LinearSolve
+   3517.6 ms  ✓ LinearSolve → LinearSolveEnzymeExt
+   3553.5 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
+   5141.5 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
+ 245903.4 ms  ✓ Enzyme
+  12134.3 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
+  12281.7 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
+  12716.4 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
+   9784.2 ms  ✓ QuadGK → QuadGKEnzymeExt
+  10089.7 ms  ✓ FastPower → FastPowerEnzymeExt
+  26612.7 ms  ✓ Enzyme → EnzymeStaticArraysExt
+  28634.8 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
+  17972.1 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
+  28741.0 ms  ✓ SciMLSensitivity
+  53 dependencies successfully precompiled in 305 seconds. 234 already precompiled.
 Precompiling LuxLibSLEEFPiratesExt...
-   2817.9 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
-  1 dependency successfully precompiled in 3 seconds. 112 already precompiled.
+   2330.2 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
+  1 dependency successfully precompiled in 3 seconds. 108 already precompiled.
 Precompiling LuxLibLoopVectorizationExt...
-   4880.6 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
-  1 dependency successfully precompiled in 5 seconds. 120 already precompiled.
+   4521.8 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
+  1 dependency successfully precompiled in 5 seconds. 116 already precompiled.
 Precompiling LuxLibEnzymeExt...
-   1819.2 ms  ✓ LuxLib → LuxLibEnzymeExt
+   1228.4 ms  ✓ LuxLib → LuxLibEnzymeExt
   1 dependency successfully precompiled in 2 seconds. 129 already precompiled.
 Precompiling LuxEnzymeExt...
-   6789.5 ms  ✓ Lux → LuxEnzymeExt
-  1 dependency successfully precompiled in 7 seconds. 144 already precompiled.
+   7147.4 ms  ✓ Lux → LuxEnzymeExt
+  1 dependency successfully precompiled in 7 seconds. 145 already precompiled.
 Precompiling OptimizationEnzymeExt...
-  18377.9 ms  ✓ OptimizationBase → OptimizationEnzymeExt
-  1 dependency successfully precompiled in 19 seconds. 108 already precompiled.
+  19717.5 ms  ✓ OptimizationBase → OptimizationEnzymeExt
+  1 dependency successfully precompiled in 20 seconds. 108 already precompiled.
 Precompiling MLDataDevicesTrackerExt...
-   1716.5 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
-  1 dependency successfully precompiled in 2 seconds. 74 already precompiled.
+   1118.7 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 70 already precompiled.
 Precompiling LuxLibTrackerExt...
-   1628.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
-   3642.5 ms  ✓ LuxLib → LuxLibTrackerExt
-  2 dependencies successfully precompiled in 4 seconds. 114 already precompiled.
+   1087.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
+   3193.6 ms  ✓ LuxLib → LuxLibTrackerExt
+  2 dependencies successfully precompiled in 3 seconds. 111 already precompiled.
 Precompiling LuxTrackerExt...
-   2504.8 ms  ✓ Lux → LuxTrackerExt
-  1 dependency successfully precompiled in 3 seconds. 128 already precompiled.
+   1960.0 ms  ✓ Lux → LuxTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
 Precompiling BoltzTrackerExt...
-   2316.0 ms  ✓ Boltz → BoltzTrackerExt
-  1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
+   2346.1 ms  ✓ Boltz → BoltzTrackerExt
+  1 dependency successfully precompiled in 3 seconds. 128 already precompiled.
 Precompiling ComponentArraysTrackerExt...
-   1664.8 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
-  1 dependency successfully precompiled in 2 seconds. 85 already precompiled.
+   1083.9 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 81 already precompiled.
 Precompiling MLDataDevicesReverseDiffExt...
-   2902.3 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
+   2990.4 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 61 already precompiled.
 Precompiling LuxLibReverseDiffExt...
-   2812.9 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
-   4446.2 ms  ✓ LuxLib → LuxLibReverseDiffExt
-  2 dependencies successfully precompiled in 5 seconds. 113 already precompiled.
+   2904.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
+   3737.2 ms  ✓ LuxLib → LuxLibReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 109 already precompiled.
 Precompiling BoltzReverseDiffExt...
-   4140.9 ms  ✓ Boltz → BoltzReverseDiffExt
-   4511.2 ms  ✓ Lux → LuxReverseDiffExt
-  2 dependencies successfully precompiled in 5 seconds. 130 already precompiled.
+   3869.1 ms  ✓ Lux → LuxReverseDiffExt
+   4135.8 ms  ✓ Boltz → BoltzReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 128 already precompiled.
 Precompiling ComponentArraysReverseDiffExt...
-   2961.6 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
+   3034.8 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 69 already precompiled.
 Precompiling OptimizationReverseDiffExt...
-   2828.2 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
+   2855.6 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
 Precompiling ComponentArraysZygoteExt...
-   1443.0 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
-   1460.6 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+   1517.5 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+   1536.0 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
   2 dependencies successfully precompiled in 2 seconds. 98 already precompiled.
 Precompiling OptimizationZygoteExt...
-   1942.6 ms  ✓ OptimizationBase → OptimizationZygoteExt
+   2081.5 ms  ✓ OptimizationBase → OptimizationZygoteExt
   1 dependency successfully precompiled in 2 seconds. 142 already precompiled.
 Precompiling DynamicExpressionsOptimExt...
-   1163.1 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
-  1 dependency successfully precompiled in 1 seconds. 86 already precompiled.
+   1261.5 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
+  1 dependency successfully precompiled in 1 seconds. 88 already precompiled.
 Precompiling DynamicExpressionsLoopVectorizationExt...
-   3830.7 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
+   4239.7 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
   1 dependency successfully precompiled in 4 seconds. 49 already precompiled.
 Precompiling SymbolicRegression...
-    320.1 ms  ✓ ScientificTypesBase
-    405.1 ms  ✓ Tricks
-    470.1 ms  ✓ StatisticalTraits
-   1438.1 ms  ✓ LossFunctions
-    805.7 ms  ✓ MLJModelInterface
-   3816.2 ms  ✓ DynamicQuantities
-    580.3 ms  ✓ DynamicQuantities → DynamicQuantitiesLinearAlgebraExt
-  74197.1 ms  ✓ SymbolicRegression
-  8 dependencies successfully precompiled in 79 seconds. 98 already precompiled.
+   1764.0 ms  ✓ DynamicDiff
+  77556.6 ms  ✓ SymbolicRegression
+  2 dependencies successfully precompiled in 80 seconds. 107 already precompiled.
 Precompiling LuxLossFunctionsExt...
-   2049.0 ms  ✓ Lux → LuxLossFunctionsExt
-  1 dependency successfully precompiled in 3 seconds. 124 already precompiled.
+   1531.8 ms  ✓ Lux → LuxLossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 121 already precompiled.
 Precompiling SymbolicRegressionEnzymeExt...
-  20955.2 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
-  1 dependency successfully precompiled in 21 seconds. 126 already precompiled.
+  22658.2 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
+  1 dependency successfully precompiled in 23 seconds. 129 already precompiled.
 Precompiling MLJ...
-    475.6 ms  ✓ LaTeXStrings
-    474.8 ms  ✓ SimpleBufferStream
-    657.5 ms  ✓ InvertedIndices
-    705.3 ms  ✓ BitFlags
-   1315.7 ms  ✓ Combinatorics
-    632.0 ms  ✓ StableRNGs
-   1915.3 ms  ✓ Crayons
-    811.5 ms  ✓ ComputationalResources
-   1202.2 ms  ✓ ConcurrentUtilities
-   1275.2 ms  ✓ Distances
-   1372.5 ms  ✓ FeatureSelection
-    882.1 ms  ✓ EarlyStopping
-   4848.5 ms  ✓ FixedPointNumbers
-   2383.3 ms  ✓ MbedTLS
-   5994.9 ms  ✓ PrettyPrinting
-    553.2 ms  ✓ RelocatableFolders
-    644.1 ms  ✓ ExceptionUnwrapping
-   4514.2 ms  ✓ CategoricalArrays
-   2206.0 ms  ✓ LearnAPI
-   1944.2 ms  ✓ FilePathsBase
-   1740.4 ms  ✓ LatinHypercubeSampling
-   1284.7 ms  ✓ Distances → DistancesSparseArraysExt
-   3496.5 ms  ✓ StringManipulation
-    648.6 ms  ✓ Distances → DistancesChainRulesCoreExt
-   3328.7 ms  ✓ OpenSSL
-    943.6 ms  ✓ CategoricalArrays → CategoricalArraysJSONExt
-   2352.9 ms  ✓ IterationControl
-   1423.7 ms  ✓ CategoricalArrays → CategoricalArraysRecipesBaseExt
-    974.8 ms  ✓ FilePathsBase → FilePathsBaseMmapExt
-   3950.9 ms  ✓ ColorTypes
-   3522.2 ms  ✓ ARFFFiles
-   2056.0 ms  ✓ FilePathsBase → FilePathsBaseTestExt
-  11298.1 ms  ✓ MLUtils
-  11188.0 ms  ✓ StatisticalMeasuresBase
-  22739.1 ms  ✓ PrettyTables
-   3649.8 ms  ✓ ScientificTypes
-  25676.2 ms  ✓ HTTP
-   2217.9 ms  ✓ CategoricalDistributions
-   2122.1 ms  ✓ MLFlowClient
-   3922.5 ms  ✓ OpenML
-   6711.8 ms  ✓ MLJEnsembles
-  10440.4 ms  ✓ MLJBase
-  18619.4 ms  ✓ MLJModels
-   8723.6 ms  ✓ MLJBalancing
-   9150.5 ms  ✓ MLJTuning
-   9974.1 ms  ✓ MLJIteration
-   4707.9 ms  ✓ MLJFlow
-  26052.4 ms  ✓ StatisticalMeasures
-   3188.7 ms  ✓ StatisticalMeasures → ScientificTypesExt
-   3249.6 ms  ✓ MLJBase → DefaultMeasuresExt
-   6512.7 ms  ✓ MLJ
-  51 dependencies successfully precompiled in 77 seconds. 153 already precompiled.
-Precompiling LossFunctionsCategoricalArraysExt...
-    378.5 ms  ✓ LossFunctions → LossFunctionsCategoricalArraysExt
-  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+    504.6 ms  ✓ InvertedIndices
+    954.5 ms  ✓ ConcurrentUtilities
+   1405.6 ms  ✓ LatinHypercubeSampling
+   3348.9 ms  ✓ ScientificTypes
+   2322.5 ms  ✓ CategoricalDistributions
+   7798.0 ms  ✓ MLUtils
+   7089.5 ms  ✓ StatisticalMeasuresBase
+   6216.7 ms  ✓ MLJEnsembles
+  20028.2 ms  ✓ MLJModels
+  11847.4 ms  ✓ MLJBase
+   7834.8 ms  ✓ MLJTuning
+  33719.8 ms  ✓ HTTP
+   8295.3 ms  ✓ MLJBalancing
+   9090.2 ms  ✓ MLJIteration
+   2175.2 ms  ✓ MLFlowClient
+   3501.2 ms  ✓ OpenML
+   4225.4 ms  ✓ MLJFlow
+  28907.7 ms  ✓ StatisticalMeasures
+   2311.6 ms  ✓ StatisticalMeasures → ScientificTypesExt
+   2404.7 ms  ✓ MLJBase → DefaultMeasuresExt
+   6692.6 ms  ✓ MLJ
+  21 dependencies successfully precompiled in 53 seconds. 178 already precompiled.
 Precompiling DynamicQuantitiesScientificTypesExt...
-   1332.2 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
+   1431.0 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
   1 dependency successfully precompiled in 2 seconds. 85 already precompiled.
-Precompiling BangBangStructArraysExt...
-    397.4 ms  ✓ BangBang → BangBangStructArraysExt
-  1 dependency successfully precompiled in 1 seconds. 22 already precompiled.
-Precompiling TransducersLazyArraysExt...
-   1004.1 ms  ✓ Transducers → TransducersLazyArraysExt
-  1 dependency successfully precompiled in 1 seconds. 43 already precompiled.
 Precompiling MLDataDevicesMLUtilsExt...
-   2139.8 ms  ✓ MLDataDevices → MLDataDevicesMLUtilsExt
-  1 dependency successfully precompiled in 2 seconds. 116 already precompiled.
+   1405.4 ms  ✓ MLDataDevices → MLDataDevicesMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 102 already precompiled.
 Precompiling LuxMLUtilsExt...
-   2709.5 ms  ✓ Lux → LuxMLUtilsExt
-  1 dependency successfully precompiled in 3 seconds. 178 already precompiled.
+   1954.7 ms  ✓ Lux → LuxMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 177 already precompiled.
 Precompiling OptimizationMLUtilsExt...
-   2462.9 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
-  1 dependency successfully precompiled in 3 seconds. 155 already precompiled.
+   1690.5 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 151 already precompiled.
 Precompiling LossFunctionsExt...
-   3133.2 ms  ✓ StatisticalMeasures → LossFunctionsExt
-  1 dependency successfully precompiled in 4 seconds. 153 already precompiled.
+   2476.1 ms  ✓ StatisticalMeasures → LossFunctionsExt
+  1 dependency successfully precompiled in 3 seconds. 148 already precompiled.
 Precompiling SymbolicUtils...
-    372.2 ms  ✓ Bijections
-    382.6 ms  ✓ TermInterface
-    561.3 ms  ✓ Unityper
-   4986.2 ms  ✓ MutableArithmetics
-   2361.5 ms  ✓ MultivariatePolynomials
-   1490.3 ms  ✓ DynamicPolynomials
-  17587.1 ms  ✓ SymbolicUtils
-  7 dependencies successfully precompiled in 27 seconds. 81 already precompiled.
+  18508.7 ms  ✓ SymbolicUtils
+  1 dependency successfully precompiled in 19 seconds. 87 already precompiled.
 Precompiling DynamicExpressionsSymbolicUtilsExt...
-   1738.2 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
+   1776.8 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
   1 dependency successfully precompiled in 2 seconds. 92 already precompiled.
 Precompiling SymbolicRegressionSymbolicUtilsExt...
-   3777.5 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
-  1 dependency successfully precompiled in 4 seconds. 140 already precompiled.
+   3843.4 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
+  1 dependency successfully precompiled in 4 seconds. 143 already precompiled.
 Precompiling SymbolicUtilsReverseDiffExt...
-   3688.5 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
+   3759.6 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
   1 dependency successfully precompiled in 4 seconds. 99 already precompiled.
-Precompiling Latexify...
-    904.5 ms  ✓ Format
-   2951.1 ms  ✓ Latexify
-  2 dependencies successfully precompiled in 4 seconds. 8 already precompiled.
-Precompiling SparseArraysExt...
-    656.6 ms  ✓ Latexify → SparseArraysExt
-  1 dependency successfully precompiled in 1 seconds. 53 already precompiled.
 Precompiling CairoMakie...
-    528.5 ms  ✓ GeoFormatTypes
-    524.5 ms  ✓ Contour
-    569.1 ms  ✓ PaddedViews
-    660.9 ms  ✓ Observables
-    582.9 ms  ✓ IntervalSets
-    456.9 ms  ✓ PolygonOps
-    647.6 ms  ✓ Extents
-   1251.5 ms  ✓ Grisu
-    601.1 ms  ✓ StackViews
-    503.8 ms  ✓ LazyModules
-    684.6 ms  ✓ RoundingEmulator
-    891.9 ms  ✓ IterTools
-    557.0 ms  ✓ MappedArrays
-    490.2 ms  ✓ RangeArrays
-    588.5 ms  ✓ IndirectArrays
-    546.3 ms  ✓ TriplotBase
-    446.7 ms  ✓ Ratios
-    608.7 ms  ✓ Inflate
-    488.6 ms  ✓ TensorCore
-   2602.3 ms  ✓ AdaptivePredicates
-    541.8 ms  ✓ SignedDistanceFields
-   1348.3 ms  ✓ WoodburyMatrices
-   1119.8 ms  ✓ FilePaths
-   1087.7 ms  ✓ Libffi_jll
-    833.1 ms  ✓ isoband_jll
-   2359.3 ms  ✓ UnicodeFun
-   1123.6 ms  ✓ Libuuid_jll
-    833.6 ms  ✓ LLVMOpenMP_jll
-   1082.8 ms  ✓ Imath_jll
-    972.2 ms  ✓ JpegTurbo_jll
-   1126.9 ms  ✓ CRlibm_jll
-    847.3 ms  ✓ Ogg_jll
-   1003.9 ms  ✓ x264_jll
-   1027.0 ms  ✓ x265_jll
-    870.7 ms  ✓ FriBidi_jll
-    965.4 ms  ✓ Xorg_libXau_jll
-   1157.7 ms  ✓ Graphite2_jll
-   1539.2 ms  ✓ XML2_jll
-    963.6 ms  ✓ libpng_jll
-   1019.5 ms  ✓ Giflib_jll
-   1070.1 ms  ✓ LAME_jll
-   8163.3 ms  ✓ Colors
-    984.2 ms  ✓ EarCut_jll
-    869.3 ms  ✓ Xorg_libXdmcp_jll
-    839.7 ms  ✓ libaom_jll
-    742.1 ms  ✓ Opus_jll
-   1052.7 ms  ✓ Zstd_jll
-   1087.4 ms  ✓ LZO_jll
-    696.9 ms  ✓ Xorg_xtrans_jll
-    894.4 ms  ✓ Bzip2_jll
-   1080.2 ms  ✓ Libmount_jll
-    862.3 ms  ✓ LERC_jll
-   1108.0 ms  ✓ libfdk_aac_jll
-    890.7 ms  ✓ XZ_jll
-    852.2 ms  ✓ Libgpg_error_jll
-    819.3 ms  ✓ Xorg_libpthread_stubs_jll
-   1056.3 ms  ✓ FFTW_jll
-    482.1 ms  ✓ IntervalSets → IntervalSetsRandomExt
-    568.5 ms  ✓ IntervalSets → IntervalSetsStatisticsExt
-    524.9 ms  ✓ ConstructionBase → ConstructionBaseIntervalSetsExt
-   2669.1 ms  ✓ QOI
-   1771.3 ms  ✓ GeoInterface
-    815.2 ms  ✓ Showoff
-    674.8 ms  ✓ Ratios → RatiosFixedPointNumbersExt
-    895.6 ms  ✓ MosaicViews
-   1181.9 ms  ✓ AxisAlgorithms
-    937.9 ms  ✓ Isoband
-   7729.7 ms  ✓ PkgVersion
-   1147.3 ms  ✓ Pixman_jll
-   4365.4 ms  ✓ ColorVectorSpace
-   1337.7 ms  ✓ OpenEXR_jll
-   1275.3 ms  ✓ libvorbis_jll
-   1043.7 ms  ✓ Gettext_jll
-   1030.8 ms  ✓ libsixel_jll
-   1081.0 ms  ✓ Graphics
-   1361.2 ms  ✓ Animations
-   4661.9 ms  ✓ IntervalArithmetic
-   1283.1 ms  ✓ FreeType2_jll
-   2642.2 ms  ✓ ColorBrewer
-   1530.2 ms  ✓ Libtiff_jll
-   1020.2 ms  ✓ Libgcrypt_jll
-   1371.9 ms  ✓ AxisArrays
-  15607.6 ms  ✓ SIMD
-   1633.9 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
-   3900.4 ms  ✓ Interpolations
-   8471.4 ms  ✓ ColorSchemes
-  13013.9 ms  ✓ GeometryBasics
-   2002.0 ms  ✓ Glib_jll
-  41528.1 ms  ✓ Unitful
-    963.6 ms  ✓ IntervalArithmetic → IntervalArithmeticIntervalSetsExt
-   3208.7 ms  ✓ OpenEXR
-   1683.3 ms  ✓ Fontconfig_jll
-   1936.1 ms  ✓ FreeType
-   1351.7 ms  ✓ XSLT_jll
-  22992.3 ms  ✓ FFTW
-   8069.3 ms  ✓ ExactPredicates
-   1959.7 ms  ✓ Packing
-  15567.4 ms  ✓ GridLayoutBase
-  41967.3 ms  ✓ ImageCore
-   2622.0 ms  ✓ ShaderAbstractions
-  29322.1 ms  ✓ Automa
-   1067.1 ms  ✓ Unitful → InverseFunctionsUnitfulExt
-   1381.0 ms  ✓ Unitful → ConstructionBaseUnitfulExt
-  27175.2 ms  ✓ PlotUtils
-   2467.5 ms  ✓ Interpolations → InterpolationsUnitfulExt
-   9602.1 ms  ✓ MakieCore
-   2051.6 ms  ✓ Xorg_libxcb_jll
-   4479.8 ms  ✓ FreeTypeAbstraction
-   3052.1 ms  ✓ KernelDensity
-   3706.6 ms  ✓ ImageBase
-   7854.1 ms  ✓ DelaunayTriangulation
-   6203.3 ms  ✓ JpegTurbo
-   1230.1 ms  ✓ Xorg_libX11_jll
-   7855.2 ms  ✓ PNGFiles
-   1108.9 ms  ✓ Xorg_libXrender_jll
-   3269.8 ms  ✓ ImageAxes
-    956.6 ms  ✓ Xorg_libXext_jll
-   8061.8 ms  ✓ Sixel
-   1291.1 ms  ✓ Cairo_jll
-   1401.9 ms  ✓ Libglvnd_jll
-   1927.6 ms  ✓ ImageMetadata
-   1319.4 ms  ✓ HarfBuzz_jll
-   1314.5 ms  ✓ libwebp_jll
-   1139.9 ms  ✓ libass_jll
-   1176.6 ms  ✓ Pango_jll
-   3478.0 ms  ✓ Netpbm
-   1499.1 ms  ✓ FFMPEG_jll
-   1891.6 ms  ✓ Cairo
-   3729.9 ms  ✓ WebP
-  20247.5 ms  ✓ MathTeXEngine
-  87016.3 ms  ✓ TiffImages
-   1115.5 ms  ✓ ImageIO
- 143157.2 ms  ✓ Makie
-  81890.4 ms  ✓ CairoMakie
-  134 dependencies successfully precompiled in 361 seconds. 135 already precompiled.
-Precompiling SparseMatrixColoringsColorsExt...
-    791.6 ms  ✓ SparseMatrixColorings → SparseMatrixColoringsColorsExt
-  1 dependency successfully precompiled in 1 seconds. 29 already precompiled.
+    770.0 ms  ✓ Xorg_libXrender_jll
+    971.3 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
+   1210.5 ms  ✓ GeoInterface
+    890.4 ms  ✓ Cairo_jll
+    701.9 ms  ✓ HarfBuzz_jll
+   2385.5 ms  ✓ KernelDensity
+    744.5 ms  ✓ Pango_jll
+    964.8 ms  ✓ libass_jll
+   1381.9 ms  ✓ Cairo
+   1303.8 ms  ✓ FFMPEG_jll
+   5871.0 ms  ✓ GeometryBasics
+   1911.8 ms  ✓ Packing
+   2142.8 ms  ✓ ShaderAbstractions
+   3156.9 ms  ✓ FreeTypeAbstraction
+   6357.9 ms  ✓ MakieCore
+   8587.0 ms  ✓ GridLayoutBase
+  14893.8 ms  ✓ MathTeXEngine
+ 145635.1 ms  ✓ Makie
+  82150.4 ms  ✓ CairoMakie
+  19 dependencies successfully precompiled in 253 seconds. 250 already precompiled.
 Precompiling ZygoteColorsExt...
-   1550.6 ms  ✓ Zygote → ZygoteColorsExt
+   1558.6 ms  ✓ Zygote → ZygoteColorsExt
   1 dependency successfully precompiled in 2 seconds. 89 already precompiled.
-Precompiling AccessorsIntervalSetsExt...
-    694.3 ms  ✓ Accessors → AccessorsIntervalSetsExt
-  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
-Precompiling IntervalSetsRecipesBaseExt...
-    468.7 ms  ✓ IntervalSets → IntervalSetsRecipesBaseExt
-  1 dependency successfully precompiled in 1 seconds. 9 already precompiled.
-Precompiling AccessorsUnitfulExt...
-    517.6 ms  ✓ Accessors → AccessorsUnitfulExt
-  1 dependency successfully precompiled in 1 seconds. 17 already precompiled.
 Precompiling DiffEqBaseUnitfulExt...
-   1478.1 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
+   1421.5 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
   1 dependency successfully precompiled in 2 seconds. 123 already precompiled.
-Precompiling DynamicQuantitiesUnitfulExt...
-    987.6 ms  ✓ DynamicQuantities → DynamicQuantitiesUnitfulExt
-  1 dependency successfully precompiled in 1 seconds. 14 already precompiled.
 Precompiling NNlibFFTWExt...
-   1503.3 ms  ✓ NNlib → NNlibFFTWExt
-  1 dependency successfully precompiled in 2 seconds. 58 already precompiled.
+    778.6 ms  ✓ NNlib → NNlibFFTWExt
+  1 dependency successfully precompiled in 1 seconds. 54 already precompiled.
 Precompiling HTTPExt...
-   1582.1 ms  ✓ FileIO → HTTPExt
+   1598.8 ms  ✓ FileIO → HTTPExt
   1 dependency successfully precompiled in 2 seconds. 43 already precompiled.
 Precompiling IntervalArithmeticForwardDiffExt...
-    433.0 ms  ✓ IntervalArithmetic → IntervalArithmeticDiffRulesExt
-    619.6 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
-  2 dependencies successfully precompiled in 1 seconds. 42 already precompiled.
-Precompiling IntervalArithmeticRecipesBaseExt...
-    612.0 ms  ✓ IntervalArithmetic → IntervalArithmeticRecipesBaseExt
-  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+    613.3 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 43 already precompiled.
 Precompiling SciMLBaseMakieExt...
-   8115.2 ms  ✓ SciMLBase → SciMLBaseMakieExt
+   8252.6 ms  ✓ SciMLBase → SciMLBaseMakieExt
   1 dependency successfully precompiled in 9 seconds. 303 already precompiled.

Helper Functions

julia
function plot_dynamics(sol, us, ts)
     fig = Figure()
     ax = CairoMakie.Axis(fig[1, 1]; xlabel=L"t")
@@ -699,26 +436,26 @@ import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltv
 r = report(mach)
 best_eq = [r.equations[1][r.best_idx[1]], r.equations[2][r.best_idx[2]],
     r.equations[3][r.best_idx[3]], r.equations[4][r.best_idx[4]]]
4-element Vector{DynamicExpressions.ExpressionModule.Expression{Float64, DynamicExpressions.NodeModule.Node{Float64}, @NamedTuple{operators::DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}, variable_names::Vector{String}}}}:
- (((-0.13321428243861314 - ((0.8429576230558037 - ((x2 * x2) * (x2 + (x2 + -0.36587023826177456)))) * x1)) - x2) + (x3 / -0.28182516657243606)) * 0.11777767977748137
- (((x2 - x3) * (((1.3248108542721566 - (x1 * (1.3219022349598657 - x2))) * x2) + 0.8329723329564129)) - x4) - ((((x1 * x3) * 0.9061837815460375) + 0.02386752493998385) - x4)
- ((((x2 * -1.5820546813953016) - (x3 * ((x3 - x4) * 1.8125551854122142))) - -0.7885931564339473) - x4) + (x3 * 0.7663322029266375)
- (((x2 * (x2 + 0.34865973516490406)) * 2.2240536188165) + (-0.020339699275241985 - (x1 * x1))) * (1.8653534481831382 - (x2 * (((x3 + x2) * x2) * 3.3794565531533123)))

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

`,35)),s("mjx-container",F,[(t(),A("svg",w,a[28]||(a[28]=[n('',1)]))),a[29]||(a[29]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",null,"−"),s("mn",null,"0.13321"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"0.84296"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.36587"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"3")]),s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.28183")])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"0.11778")])],-1))]),s("mjx-container",b,[(t(),A("svg",V,a[30]||(a[30]=[n('',1)]))),a[31]||(a[31]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.3248"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.3219"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"0.83297"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.90618"),s("mo",null,"+"),s("mn",null,"0.023868"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),s("mjx-container",I,[(t(),A("svg",M,a[32]||(a[32]=[n('',1)]))),a[33]||(a[33]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"1.5821"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"1.8126"),s("mo",null,"+"),s("mn",null,"0.78859"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.76633")])],-1))]),s("mjx-container",Z,[(t(),A("svg",B,a[34]||(a[34]=[n('',1)]))),a[35]||(a[35]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"0.34866"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"2.2241"),s("mo",null,"−"),s("mn",null,"0.02034"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"1"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1.8654"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mn",null,"3.3795"),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[39]||(a[39]=n(`

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
+ (((x1 + ((x2 + (x2 * ((0.1365077871809465 - x2) * (x2 * -0.3706095837027754)))) * 1.1499767933395886)) * -0.10094513566229477) + -0.015682347987089805) - (x3 * 0.41529502093863896)
+ ((x2 + (((x2 + -0.14426087460968356) * ((x2 + (((x2 * x1) * ((x2 + -0.5022130467540905) + x2)) - x3)) - x4)) * 1.2384596950473552)) - x3) - 0.02392942727488574
+ ((((x4 * -0.19092641834728757) / (x2 + (-0.6513251066426832 - x1))) - 1.0153755877247124) * x3) - ((-1.2144344174950037 - ((x4 + 2.4341348924238555) * (x3 - x2))) * 0.6493562344860907)
+ (x3 * 0.15622313651527722) + ((x2 / (0.2433282150366007 / ((x4 * ((x4 / -0.15709638744100488) * x2)) + (x2 + 0.11002142482799021)))) + (x2 + -0.037915962614793824))

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

`,35)),s("mjx-container",F,[(n(),A("svg",L,a[28]||(a[28]=[t('',1)]))),a[29]||(a[29]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"0.13651"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.37061"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"1.15"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.10095"),s("mo",null,"−"),s("mn",null,"0.015682"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.4153")])],-1))]),s("mjx-container",V,[(n(),A("svg",b,a[30]||(a[30]=[t('',1)]))),a[31]||(a[31]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.14426"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"1"),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.50221"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"4"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"1.2385"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mn",null,"0.023929")])],-1))]),s("mjx-container",I,[(n(),A("svg",M,a[32]||(a[32]=[t('',1)]))),a[33]||(a[33]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mo",null,"−"),s("mn",null,"0.19093")]),s("mrow",null,[s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.65133"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"1")])]),s("mo",null,"−"),s("mn",null,"1.0154"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mo",null,"−"),s("mn",null,"1.2144"),s("mo",null,"−"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"+"),s("mn",null,"2.4341"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"−"),s("mi",null,"x"),s("mn",null,"2"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,"⋅"),s("mn",null,"0.64936")])],-1))]),s("mjx-container",Z,[(n(),A("svg",B,a[34]||(a[34]=[t('',1)]))),a[35]||(a[35]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"x"),s("mn",null,"3"),s("mo",null,"⋅"),s("mn",null,"0.15622"),s("mo",null,"+"),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mfrac",null,[s("mn",null,"0.24333"),s("mrow",null,[s("mi",null,"x"),s("mn",null,"4"),s("mo",null,"⋅"),s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mn",null,"4")]),s("mrow",null,[s("mo",null,"−"),s("mn",null,"0.1571")])]),s("mo",null,"⋅"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"+"),s("mn",null,"0.11002")])])]),s("mo",null,"+"),s("mi",null,"x"),s("mn",null,"2"),s("mo",null,"−"),s("mn",null,"0.037916")])],-1))]),a[39]||(a[39]=t(`

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
     Layers.DynamicExpressionsLayer(OperatorEnum(; binary_operators=[+, -, *, /]), best_eq),
     Dense(4 => 1))
Chain(
     layer_1 = Dense(1 => 4, gelu),      # 8 parameters
     layer_2 = DynamicExpressionsLayer(
         chain = Chain(
             layer_1 = Parallel(
-                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((-0.13321428243861314 - ((0.8429576230558037 - ((x2 * x2) * (x2 + (x2 + -0.36587023826177456)))) * x1)) - x2) + (x3 / -0.28182516657243606)) * 0.11777767977748137; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
-                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x2 - x3) * (((1.3248108542721566 - (x1 * (1.3219022349598657 - x2))) * x2) + 0.8329723329564129)) - x4) - ((((x1 * x3) * 0.9061837815460375) + 0.02386752493998385) - x4); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
-                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x2 * -1.5820546813953016) - (x3 * ((x3 - x4) * 1.8125551854122142))) - -0.7885931564339473) - x4) + (x3 * 0.7663322029266375); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
-                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x2 * (x2 + 0.34865973516490406)) * 2.2240536188165) + (-0.020339699275241985 - (x1 * x1))) * (1.8653534481831382 - (x2 * (((x3 + x2) * x2) * 3.3794565531533123))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
+                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x1 + ((x2 + (x2 * ((0.1365077871809465 - x2) * (x2 * -0.3706095837027754)))) * 1.1499767933395886)) * -0.10094513566229477) + -0.015682347987089805) - (x3 * 0.41529502093863896); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((x2 + (((x2 + -0.14426087460968356) * ((x2 + (((x2 * x1) * ((x2 + -0.5022130467540905) + x2)) - x3)) - x4)) * 1.2384596950473552)) - x3) - 0.02392942727488574; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x4 * -0.19092641834728757) / (x2 + (-0.6513251066426832 - x1))) - 1.0153755877247124) * x3) - ((-1.2144344174950037 - ((x4 + 2.4341348924238555) * (x3 - x2))) * 0.6493562344860907); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x3 * 0.15622313651527722) + ((x2 / (0.2433282150366007 / ((x4 * ((x4 / -0.15709638744100488) * x2)) + (x2 + 0.11002142482799021)))) + (x2 + -0.037915962614793824)); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
             ),
             layer_2 = WrappedFunction(stack1),
         ),
     ),
     layer_3 = Dense(4 => 1),            # 5 parameters
-)         # Total: 32 parameters,
+)         # Total: 34 parameters,
           #        plus 0 states.

There you have it! It is that easy to take the fitted Symbolic Expression and combine it with a neural network. Let's see how it performs before fintetuning.

julia
hybrid_ude = construct_ude(hybrid_mlp, Vern9(); abstol=1e-10, reltol=1e-10);

We want to reuse the trained neural network parameters, so we will copy them over to the new model

julia
st = Lux.initialstates(rng, hybrid_ude)
 ps = (;
     mlp=(; layer_1=trained_ude.ps.mlp.layer_1,
@@ -727,7 +464,7 @@ import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltv
 ps = ComponentArray(ps)
 
 sol, us = hybrid_ude(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), ps, st)[1];
-plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
 InteractiveUtils.versioninfo()
 
 if @isdefined(MLDataDevices)
@@ -754,4 +491,4 @@ import{_ as e,c as A,a2 as n,j as s,a as i,o as t}from"./chunks/framework.Brfltv
   JULIA_NUM_THREADS = 1
   JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
   JULIA_PKG_PRECOMPILE_AUTO = 0
-  JULIA_DEBUG = Literate

This page was generated using Literate.jl.

`,15))])}const W=e(l,[["render",D]]);export{R as __pageData,W as default}; + JULIA_DEBUG = Literate

This page was generated using Literate.jl.

`,15))])}const j=e(l,[["render",D]]);export{U as __pageData,j as default}; diff --git a/dev/hashmap.json b/dev/hashmap.json index 14f7b71..2015ea1 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"api_basis.md":"efzKkbBV","api_index.md":"BP84WF6H","api_layers.md":"c3Y8oKzS","api_private.md":"qgc7LO-U","api_vision.md":"CzAr55yf","index.md":"NOKWxsHp","tutorials_1_gettingstarted.md":"BBRQSLz_","tutorials_2_symbolicoptimalcontrol.md":"D3lY2zdR"} +{"api_basis.md":"D-gdgP1g","api_index.md":"BP84WF6H","api_layers.md":"Ctcd_6il","api_private.md":"Bx-Z0HFD","api_vision.md":"D-4Td_yF","index.md":"CWKIhE9b","tutorials_1_gettingstarted.md":"BkXGCB_-","tutorials_2_symbolicoptimalcontrol.md":"BVL3a2D7"} diff --git a/dev/index.html b/dev/index.html index 3de920a..8979233 100644 --- a/dev/index.html +++ b/dev/index.html @@ -6,14 +6,14 @@ Boltz.jl Docs - + - + - + - + @@ -27,14 +27,14 @@
Skip to content

Boltz.jl ⚡ Docs

Pre-built Deep Learning Models in Julia

Accelerate ⚡ your ML research using pre-built Deep Learning Models with Lux

Lux.jl

How to Install Boltz.jl?

Its easy to install Boltz.jl. Since Boltz.jl is registered in the Julia General registry, you can simply run the following command in the Julia REPL:

julia
julia> using Pkg
 julia> Pkg.add("Boltz")

If you want to use the latest unreleased version of Boltz.jl, you can run the following command: (in most cases the released version will be same as the version on github)

julia
julia> using Pkg
-julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
+julia> Pkg.add(url="https://github.com/LuxDL/Boltz.jl")

Want GPU Support?

Install the following package(s):

julia
using Pkg
 Pkg.add("LuxCUDA")
 # or
 Pkg.add(["CUDA", "cuDNN"])
julia
using Pkg
 Pkg.add("AMDGPU")
julia
using Pkg
 Pkg.add("Metal")
julia
using Pkg
 Pkg.add("oneAPI")
- + \ No newline at end of file diff --git a/dev/tutorials/1_GettingStarted.html b/dev/tutorials/1_GettingStarted.html index 18de54d..64505b1 100644 --- a/dev/tutorials/1_GettingStarted.html +++ b/dev/tutorials/1_GettingStarted.html @@ -6,14 +6,14 @@ Getting Started | Boltz.jl Docs - + - + - + - + @@ -26,29 +26,18 @@
Skip to content

Getting Started

Prerequisites

Here we assume that you are familiar with Lux.jl. If not please take a look at the Lux.jl tutoials.

Boltz.jl is just like Lux.jl but comes with more "batteries included". Let's start by defining an MLP model.

julia
using Lux, Boltz, Random
Precompiling Lux...
-    550.3 ms  ✓ GPUArraysCore
-    976.0 ms  ✓ Functors
-    660.4 ms  ✓ ArrayInterface → ArrayInterfaceGPUArraysCoreExt
-   1554.3 ms  ✓ LuxCore
-   1129.3 ms  ✓ MLDataDevices
-   1046.6 ms  ✓ LuxCore → LuxCoreChainRulesCoreExt
-   1555.3 ms  ✓ Optimisers
-    835.1 ms  ✓ LuxCore → LuxCoreFunctorsExt
-    796.1 ms  ✓ LuxCore → LuxCoreEnzymeCoreExt
-    642.5 ms  ✓ LuxCore → LuxCoreSetfieldExt
-    885.8 ms  ✓ MLDataDevices → MLDataDevicesChainRulesCoreExt
-    503.1 ms  ✓ LuxCore → LuxCoreMLDataDevicesExt
-   4046.5 ms  ✓ WeightInitializers
-    902.4 ms  ✓ WeightInitializers → WeightInitializersChainRulesCoreExt
-   7140.7 ms  ✓ NNlib
-   1550.5 ms  ✓ NNlib → NNlibEnzymeCoreExt
-   1564.3 ms  ✓ NNlib → NNlibForwardDiffExt
-   5799.1 ms  ✓ LuxLib
-   8839.4 ms  ✓ Lux
-  19 dependencies successfully precompiled in 24 seconds. 103 already precompiled.
+    484.2 ms  ✓ ArrayInterface → ArrayInterfaceGPUArraysCoreExt
+   2570.1 ms  ✓ WeightInitializers
+    851.0 ms  ✓ WeightInitializers → WeightInitializersChainRulesCoreExt
+   5186.4 ms  ✓ NNlib
+    745.5 ms  ✓ NNlib → NNlibEnzymeCoreExt
+    839.8 ms  ✓ NNlib → NNlibForwardDiffExt
+   5281.0 ms  ✓ LuxLib
+   8569.6 ms  ✓ Lux
+  8 dependencies successfully precompiled in 20 seconds. 110 already precompiled.
 Precompiling Boltz...
-   5031.9 ms  ✓ Boltz
-  1 dependency successfully precompiled in 5 seconds. 122 already precompiled.

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
+   5194.7 ms  ✓ Boltz
+  1 dependency successfully precompiled in 5 seconds. 119 already precompiled.

Multi-Layer Perceptron

If we were to do this in Lux.jl we would write the following:

julia
model = Chain(
     Dense(784, 256, relu),
     Dense(256, 10)
 )
Chain(
@@ -368,7 +357,7 @@
   JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
   JULIA_PKG_PRECOMPILE_AUTO = 0
   JULIA_DEBUG = Literate

This page was generated using Literate.jl.

- + \ No newline at end of file diff --git a/dev/tutorials/2_SymbolicOptimalControl.html b/dev/tutorials/2_SymbolicOptimalControl.html index 28a834e..8f15abd 100644 --- a/dev/tutorials/2_SymbolicOptimalControl.html +++ b/dev/tutorials/2_SymbolicOptimalControl.html @@ -6,14 +6,14 @@ Solving Optimal Control Problems with Symbolic Universal Differential Equations | Boltz.jl Docs - + - + - + - + @@ -29,564 +29,301 @@ OptimizationOptimisers, SciMLSensitivity, Statistics, Printf, Random using DynamicExpressions, SymbolicRegression, MLJ, SymbolicUtils, Latexify using CairoMakie
Precompiling ComponentArrays...
-    854.9 ms  ✓ ComponentArrays
+    907.8 ms  ✓ ComponentArrays
   1 dependency successfully precompiled in 1 seconds. 57 already precompiled.
+Precompiling MLDataDevicesComponentArraysExt...
+    569.8 ms  ✓ MLDataDevices → MLDataDevicesComponentArraysExt
+  1 dependency successfully precompiled in 1 seconds. 60 already precompiled.
 Precompiling LuxComponentArraysExt...
-    581.6 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
-   2199.0 ms  ✓ Lux → LuxComponentArraysExt
-   2687.8 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
-  3 dependencies successfully precompiled in 3 seconds. 124 already precompiled.
+    659.6 ms  ✓ ComponentArrays → ComponentArraysOptimisersExt
+   1562.2 ms  ✓ Lux → LuxComponentArraysExt
+   1791.7 ms  ✓ ComponentArrays → ComponentArraysKernelAbstractionsExt
+  3 dependencies successfully precompiled in 2 seconds. 122 already precompiled.
 Precompiling OrdinaryDiffEqVerner...
-    461.5 ms  ✓ SimpleUnPack
-    455.2 ms  ✓ UnPack
-    498.4 ms  ✓ ExprTools
-    603.3 ms  ✓ CommonSolve
-    431.0 ms  ✓ MuladdMacro
-    408.1 ms  ✓ FastPower
-    964.2 ms  ✓ FunctionWrappers
-    519.0 ms  ✓ EnumX
-    556.1 ms  ✓ SciMLStructures
-    642.0 ms  ✓ TruncatedStacktraces
-   1289.6 ms  ✓ PreallocationTools
-   1196.8 ms  ✓ FastBroadcast
-    498.1 ms  ✓ Parameters
-    562.4 ms  ✓ RuntimeGeneratedFunctions
-   2923.3 ms  ✓ SciMLOperators
-   2895.0 ms  ✓ RecipesBase
-    719.5 ms  ✓ FunctionWrappersWrappers
-   1071.1 ms  ✓ FastPower → FastPowerForwardDiffExt
-    704.4 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
-   1534.6 ms  ✓ SymbolicIndexingInterface
-   1908.1 ms  ✓ RecursiveArrayTools
-    677.8 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
-    983.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
-   9024.0 ms  ✓ Expronicon
-  10429.4 ms  ✓ SciMLBase
-   5338.4 ms  ✓ DiffEqBase
-   4102.3 ms  ✓ OrdinaryDiffEqCore
-   1308.1 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
-  37548.8 ms  ✓ OrdinaryDiffEqVerner
-  29 dependencies successfully precompiled in 69 seconds. 96 already precompiled.
+    535.2 ms  ✓ SciMLStructures
+   1058.5 ms  ✓ FastPower → FastPowerForwardDiffExt
+   1165.6 ms  ✓ PreallocationTools
+   1134.0 ms  ✓ FastBroadcast
+   1858.5 ms  ✓ SymbolicIndexingInterface
+   2156.1 ms  ✓ SciMLOperators
+    459.8 ms  ✓ SciMLOperators → SciMLOperatorsStaticArraysCoreExt
+   1938.4 ms  ✓ RecursiveArrayTools
+    770.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsFastBroadcastExt
+    971.4 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsForwardDiffExt
+  11292.2 ms  ✓ SciMLBase
+   5664.0 ms  ✓ DiffEqBase
+   4278.5 ms  ✓ OrdinaryDiffEqCore
+   1349.1 ms  ✓ OrdinaryDiffEqCore → OrdinaryDiffEqCoreEnzymeCoreExt
+  38780.7 ms  ✓ OrdinaryDiffEqVerner
+  15 dependencies successfully precompiled in 65 seconds. 110 already precompiled.
 Precompiling MLDataDevicesRecursiveArrayToolsExt...
-    558.9 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
+    563.7 ms  ✓ MLDataDevices → MLDataDevicesRecursiveArrayToolsExt
   1 dependency successfully precompiled in 1 seconds. 48 already precompiled.
 Precompiling ComponentArraysRecursiveArrayToolsExt...
-    649.0 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
+    661.7 ms  ✓ ComponentArrays → ComponentArraysRecursiveArrayToolsExt
   1 dependency successfully precompiled in 1 seconds. 81 already precompiled.
 Precompiling ComponentArraysSciMLBaseExt...
-    915.4 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
-   1010.1 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
+    911.5 ms  ✓ SciMLBase → SciMLBaseChainRulesCoreExt
+   1051.9 ms  ✓ ComponentArrays → ComponentArraysSciMLBaseExt
   2 dependencies successfully precompiled in 1 seconds. 97 already precompiled.
 Precompiling DiffEqBaseChainRulesCoreExt...
-   1398.9 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
+   1425.4 ms  ✓ DiffEqBase → DiffEqBaseChainRulesCoreExt
   1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
 Precompiling Optimization...
-    675.7 ms  ✓ LeftChildRightSiblingTrees
-    769.9 ms  ✓ LoggingExtras
-   1347.3 ms  ✓ ProgressMeter
-   1374.0 ms  ✓ DifferentiationInterface
-   1368.2 ms  ✓ PDMats
-    942.9 ms  ✓ L_BFGS_B_jll
-   1192.8 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
-   1488.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
-   1212.1 ms  ✓ TerminalLoggers
-    950.8 ms  ✓ ConsoleProgressMonitor
-   2162.7 ms  ✓ SparseMatrixColorings
-    966.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseArraysExt
-   1013.7 ms  ✓ FillArrays → FillArraysPDMatsExt
-    681.4 ms  ✓ LBFGSB
-    980.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceSparseMatrixColoringsExt
-   4733.9 ms  ✓ SparseConnectivityTracer
-   1925.2 ms  ✓ OptimizationBase
-   1802.0 ms  ✓ Optimization
-  18 dependencies successfully precompiled in 9 seconds. 86 already precompiled.
+    698.1 ms  ✓ SciMLOperators → SciMLOperatorsSparseArraysExt
+    788.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsSparseArraysExt
+   1976.4 ms  ✓ OptimizationBase
+   1818.8 ms  ✓ Optimization
+  4 dependencies successfully precompiled in 5 seconds. 100 already precompiled.
 Precompiling DiffEqBaseSparseArraysExt...
-   1461.7 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
+   1508.3 ms  ✓ DiffEqBase → DiffEqBaseSparseArraysExt
   1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
-Precompiling DifferentiationInterfaceChainRulesCoreExt...
-    362.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceChainRulesCoreExt
-  1 dependency successfully precompiled in 0 seconds. 11 already precompiled.
-Precompiling DifferentiationInterfaceStaticArraysExt...
-    506.0 ms  ✓ DifferentiationInterface → DifferentiationInterfaceStaticArraysExt
-  1 dependency successfully precompiled in 1 seconds. 10 already precompiled.
 Precompiling DifferentiationInterfaceForwardDiffExt...
-    697.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
+    738.0 ms  ✓ DifferentiationInterface → DifferentiationInterfaceForwardDiffExt
   1 dependency successfully precompiled in 1 seconds. 41 already precompiled.
 Precompiling SparseConnectivityTracerSpecialFunctionsExt...
-   1045.2 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
-   1406.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
+   1084.7 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerLogExpFunctionsExt
+   1461.4 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerSpecialFunctionsExt
   2 dependencies successfully precompiled in 2 seconds. 39 already precompiled.
 Precompiling SparseConnectivityTracerNNlibExt...
-   2083.9 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
-  1 dependency successfully precompiled in 2 seconds. 63 already precompiled.
-Precompiling SparseConnectivityTracerNaNMathExt...
-   1101.5 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNaNMathExt
-  1 dependency successfully precompiled in 1 seconds. 18 already precompiled.
+   1488.2 ms  ✓ SparseConnectivityTracer → SparseConnectivityTracerNNlibExt
+  1 dependency successfully precompiled in 2 seconds. 46 already precompiled.
 Precompiling OptimizationForwardDiffExt...
-    569.2 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
+    599.4 ms  ✓ OptimizationBase → OptimizationForwardDiffExt
   1 dependency successfully precompiled in 1 seconds. 110 already precompiled.
 Precompiling OptimizationMLDataDevicesExt...
-   1223.4 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
+   1291.6 ms  ✓ OptimizationBase → OptimizationMLDataDevicesExt
   1 dependency successfully precompiled in 2 seconds. 97 already precompiled.
 Precompiling OptimizationOptimJL...
-    377.4 ms  ✓ PositiveFactorizations
-    545.1 ms  ✓ FiniteDiff
-    441.5 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
-    503.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
-    736.6 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
-   1175.7 ms  ✓ NLSolversBase
-   1695.9 ms  ✓ LineSearches
-   3024.0 ms  ✓ Optim
-  15448.5 ms  ✓ OptimizationOptimJL
-  9 dependencies successfully precompiled in 22 seconds. 129 already precompiled.
+    547.6 ms  ✓ FiniteDiff
+    429.5 ms  ✓ OptimizationBase → OptimizationFiniteDiffExt
+    491.5 ms  ✓ DifferentiationInterface → DifferentiationInterfaceFiniteDiffExt
+    787.0 ms  ✓ FiniteDiff → FiniteDiffSparseArraysExt
+   1218.9 ms  ✓ NLSolversBase
+   1666.5 ms  ✓ LineSearches
+   2960.4 ms  ✓ Optim
+  15831.4 ms  ✓ OptimizationOptimJL
+  8 dependencies successfully precompiled in 22 seconds. 132 already precompiled.
 Precompiling FiniteDiffStaticArraysExt...
-    484.1 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
+    493.3 ms  ✓ FiniteDiff → FiniteDiffStaticArraysExt
   1 dependency successfully precompiled in 1 seconds. 23 already precompiled.
 Precompiling OptimizationOptimisers...
-   1685.8 ms  ✓ OptimizationOptimisers
-  1 dependency successfully precompiled in 2 seconds. 112 already precompiled.
+   1796.5 ms  ✓ OptimizationOptimisers
+  1 dependency successfully precompiled in 2 seconds. 113 already precompiled.
 Precompiling SciMLSensitivity...
-    488.3 ms  ✓ PtrArrays
-    492.1 ms  ✓ StructIO
-    662.5 ms  ✓ PoissonRandom
-   1542.1 ms  ✓ OffsetArrays
-   1351.3 ms  ✓ RandomNumbers
-   1616.2 ms  ✓ Cassette
-   2137.6 ms  ✓ FastLapackInterface
-    700.9 ms  ✓ Scratch
-    711.7 ms  ✓ Accessors → AccessorsStructArraysExt
-   2008.8 ms  ✓ KLU
-    948.1 ms  ✓ Rmath_jll
-   1137.3 ms  ✓ oneTBB_jll
-   4923.4 ms  ✓ TimerOutputs
-    822.5 ms  ✓ ResettableStacks
-   1792.6 ms  ✓ QuadGK
-   2382.4 ms  ✓ Enzyme_jll
-   1883.2 ms  ✓ HypergeometricFunctions
-   2178.1 ms  ✓ IntelOpenMP_jll
-   1101.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
-   1198.3 ms  ✓ HostCPUFeatures
-  10178.7 ms  ✓ Krylov
-   2649.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
-   4715.7 ms  ✓ SciMLJacobianOperators
-   4930.3 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
-   5822.6 ms  ✓ SciMLBase → SciMLBaseZygoteExt
-    677.1 ms  ✓ AliasTables
-   3263.3 ms  ✓ ObjectFile
-    660.5 ms  ✓ OffsetArrays → OffsetArraysAdaptExt
-   9961.6 ms  ✓ Tracker
-    839.4 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
-   7554.4 ms  ✓ DiffEqCallbacks
-   2117.5 ms  ✓ Sparspak
-  22740.5 ms  ✓ ArrayLayouts
-    884.1 ms  ✓ FunctionProperties
-   1423.4 ms  ✓ Random123
-   1371.7 ms  ✓ Rmath
-   3293.4 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
-   3836.8 ms  ✓ Tracker → TrackerPDMatsExt
-   3561.7 ms  ✓ FastPower → FastPowerTrackerExt
-  27769.1 ms  ✓ ReverseDiff
-  13964.9 ms  ✓ MKL_jll
-   3839.1 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
-   4357.7 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
-  16124.7 ms  ✓ VectorizationBase
-   1440.4 ms  ✓ ArrayLayouts → ArrayLayoutsSparseArraysExt
-   3167.0 ms  ✓ StatsFuns
-   5574.3 ms  ✓ Zygote → ZygoteTrackerExt
-   5884.6 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
-   6571.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
-   6202.7 ms  ✓ FastPower → FastPowerReverseDiffExt
-   6542.8 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
-   1719.1 ms  ✓ SLEEFPirates
-   7007.8 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
-  10815.1 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
-   1347.4 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
-   5247.6 ms  ✓ LazyArrays
-   3384.0 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
-  10479.4 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
-   2213.2 ms  ✓ LazyArrays → LazyArraysStaticArraysExt
-   8663.7 ms  ✓ Distributions
-   2709.5 ms  ✓ Distributions → DistributionsTestExt
-   3038.6 ms  ✓ Distributions → DistributionsChainRulesCoreExt
-   3595.1 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
-  49307.7 ms  ✓ GPUCompiler
-   5015.3 ms  ✓ DiffEqNoiseProcess
-   7108.4 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
-  38392.2 ms  ✓ LoopVectorization
-   1546.5 ms  ✓ LoopVectorization → SpecialFunctionsExt
-   1660.0 ms  ✓ LoopVectorization → ForwardDiffExt
-   4133.0 ms  ✓ TriangularSolve
-  14192.1 ms  ✓ RecursiveFactorization
-  35171.5 ms  ✓ LinearSolve
-   3469.5 ms  ✓ LinearSolve → LinearSolveEnzymeExt
-   3482.1 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
-   5675.3 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
- 220020.6 ms  ✓ Enzyme
-  11452.6 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
-  11862.6 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
-  12737.9 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
-   9534.5 ms  ✓ FastPower → FastPowerEnzymeExt
-   9344.2 ms  ✓ QuadGK → QuadGKEnzymeExt
-  25774.0 ms  ✓ Enzyme → EnzymeStaticArraysExt
-  26594.3 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
-  17314.1 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
-  27835.9 ms  ✓ SciMLSensitivity
-  85 dependencies successfully precompiled in 349 seconds. 201 already precompiled.
-  1 dependency had output during precompilation:
-┌ MKL_jll
-│   Downloading artifact: IntelOpenMP
-
+    822.4 ms  ✓ StaticArrayInterface → StaticArrayInterfaceOffsetArraysExt
+   1047.5 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsStructArraysExt
+   1836.5 ms  ✓ HypergeometricFunctions
+   4636.4 ms  ✓ SciMLJacobianOperators
+   2707.3 ms  ✓ DifferentiationInterface → DifferentiationInterfaceZygoteExt
+   8620.0 ms  ✓ Tracker
+   5113.9 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsZygoteExt
+   6537.2 ms  ✓ SciMLBase → SciMLBaseZygoteExt
+  16322.8 ms  ✓ VectorizationBase
+   1939.8 ms  ✓ DifferentiationInterface → DifferentiationInterfaceTrackerExt
+   3333.9 ms  ✓ StatsFuns
+   2623.7 ms  ✓ Tracker → TrackerPDMatsExt
+   8637.5 ms  ✓ DiffEqCallbacks
+   1857.7 ms  ✓ FastPower → FastPowerTrackerExt
+   1968.8 ms  ✓ ArrayInterface → ArrayInterfaceTrackerExt
+   2060.0 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsTrackerExt
+   3316.1 ms  ✓ Zygote → ZygoteTrackerExt
+   1681.9 ms  ✓ SLEEFPirates
+   1211.8 ms  ✓ StatsFuns → StatsFunsInverseFunctionsExt
+   2357.7 ms  ✓ StatsFuns → StatsFunsChainRulesCoreExt
+   4671.2 ms  ✓ DiffEqBase → DiffEqBaseTrackerExt
+  28365.5 ms  ✓ ReverseDiff
+   8229.7 ms  ✓ Distributions
+   6038.5 ms  ✓ FastPower → FastPowerReverseDiffExt
+   6554.2 ms  ✓ DifferentiationInterface → DifferentiationInterfaceReverseDiffExt
+   6314.0 ms  ✓ ArrayInterface → ArrayInterfaceReverseDiffExt
+   5943.8 ms  ✓ PreallocationTools → PreallocationToolsReverseDiffExt
+   2645.8 ms  ✓ Distributions → DistributionsTestExt
+  10055.9 ms  ✓ RecursiveArrayTools → RecursiveArrayToolsReverseDiffExt
+   2244.2 ms  ✓ Distributions → DistributionsChainRulesCoreExt
+   2975.1 ms  ✓ DiffEqBase → DiffEqBaseDistributionsExt
+   8220.9 ms  ✓ DiffEqBase → DiffEqBaseReverseDiffExt
+   5193.2 ms  ✓ DiffEqNoiseProcess
+   7364.8 ms  ✓ DiffEqNoiseProcess → DiffEqNoiseProcessReverseDiffExt
+  41229.9 ms  ✓ LoopVectorization
+   1555.5 ms  ✓ LoopVectorization → SpecialFunctionsExt
+   1690.2 ms  ✓ LoopVectorization → ForwardDiffExt
+   4263.8 ms  ✓ TriangularSolve
+  15174.5 ms  ✓ RecursiveFactorization
+  39350.2 ms  ✓ LinearSolve
+   3517.6 ms  ✓ LinearSolve → LinearSolveEnzymeExt
+   3553.5 ms  ✓ LinearSolve → LinearSolveRecursiveArrayToolsExt
+   5141.5 ms  ✓ LinearSolve → LinearSolveKernelAbstractionsExt
+ 245903.4 ms  ✓ Enzyme
+  12134.3 ms  ✓ Enzyme → EnzymeSpecialFunctionsExt
+  12281.7 ms  ✓ DifferentiationInterface → DifferentiationInterfaceEnzymeExt
+  12716.4 ms  ✓ Enzyme → EnzymeLogExpFunctionsExt
+   9784.2 ms  ✓ QuadGK → QuadGKEnzymeExt
+  10089.7 ms  ✓ FastPower → FastPowerEnzymeExt
+  26612.7 ms  ✓ Enzyme → EnzymeStaticArraysExt
+  28634.8 ms  ✓ Enzyme → EnzymeChainRulesCoreExt
+  17972.1 ms  ✓ DiffEqBase → DiffEqBaseEnzymeExt
+  28741.0 ms  ✓ SciMLSensitivity
+  53 dependencies successfully precompiled in 305 seconds. 234 already precompiled.
 Precompiling LuxLibSLEEFPiratesExt...
-   2817.9 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
-  1 dependency successfully precompiled in 3 seconds. 112 already precompiled.
+   2330.2 ms  ✓ LuxLib → LuxLibSLEEFPiratesExt
+  1 dependency successfully precompiled in 3 seconds. 108 already precompiled.
 Precompiling LuxLibLoopVectorizationExt...
-   4880.6 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
-  1 dependency successfully precompiled in 5 seconds. 120 already precompiled.
+   4521.8 ms  ✓ LuxLib → LuxLibLoopVectorizationExt
+  1 dependency successfully precompiled in 5 seconds. 116 already precompiled.
 Precompiling LuxLibEnzymeExt...
-   1819.2 ms  ✓ LuxLib → LuxLibEnzymeExt
+   1228.4 ms  ✓ LuxLib → LuxLibEnzymeExt
   1 dependency successfully precompiled in 2 seconds. 129 already precompiled.
 Precompiling LuxEnzymeExt...
-   6789.5 ms  ✓ Lux → LuxEnzymeExt
-  1 dependency successfully precompiled in 7 seconds. 144 already precompiled.
+   7147.4 ms  ✓ Lux → LuxEnzymeExt
+  1 dependency successfully precompiled in 7 seconds. 145 already precompiled.
 Precompiling OptimizationEnzymeExt...
-  18377.9 ms  ✓ OptimizationBase → OptimizationEnzymeExt
-  1 dependency successfully precompiled in 19 seconds. 108 already precompiled.
+  19717.5 ms  ✓ OptimizationBase → OptimizationEnzymeExt
+  1 dependency successfully precompiled in 20 seconds. 108 already precompiled.
 Precompiling MLDataDevicesTrackerExt...
-   1716.5 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
-  1 dependency successfully precompiled in 2 seconds. 74 already precompiled.
+   1118.7 ms  ✓ MLDataDevices → MLDataDevicesTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 70 already precompiled.
 Precompiling LuxLibTrackerExt...
-   1628.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
-   3642.5 ms  ✓ LuxLib → LuxLibTrackerExt
-  2 dependencies successfully precompiled in 4 seconds. 114 already precompiled.
+   1087.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceTrackerExt
+   3193.6 ms  ✓ LuxLib → LuxLibTrackerExt
+  2 dependencies successfully precompiled in 3 seconds. 111 already precompiled.
 Precompiling LuxTrackerExt...
-   2504.8 ms  ✓ Lux → LuxTrackerExt
-  1 dependency successfully precompiled in 3 seconds. 128 already precompiled.
+   1960.0 ms  ✓ Lux → LuxTrackerExt
+  1 dependency successfully precompiled in 2 seconds. 125 already precompiled.
 Precompiling BoltzTrackerExt...
-   2316.0 ms  ✓ Boltz → BoltzTrackerExt
-  1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
+   2346.1 ms  ✓ Boltz → BoltzTrackerExt
+  1 dependency successfully precompiled in 3 seconds. 128 already precompiled.
 Precompiling ComponentArraysTrackerExt...
-   1664.8 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
-  1 dependency successfully precompiled in 2 seconds. 85 already precompiled.
+   1083.9 ms  ✓ ComponentArrays → ComponentArraysTrackerExt
+  1 dependency successfully precompiled in 1 seconds. 81 already precompiled.
 Precompiling MLDataDevicesReverseDiffExt...
-   2902.3 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
+   2990.4 ms  ✓ MLDataDevices → MLDataDevicesReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 61 already precompiled.
 Precompiling LuxLibReverseDiffExt...
-   2812.9 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
-   4446.2 ms  ✓ LuxLib → LuxLibReverseDiffExt
-  2 dependencies successfully precompiled in 5 seconds. 113 already precompiled.
+   2904.8 ms  ✓ LuxCore → LuxCoreArrayInterfaceReverseDiffExt
+   3737.2 ms  ✓ LuxLib → LuxLibReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 109 already precompiled.
 Precompiling BoltzReverseDiffExt...
-   4140.9 ms  ✓ Boltz → BoltzReverseDiffExt
-   4511.2 ms  ✓ Lux → LuxReverseDiffExt
-  2 dependencies successfully precompiled in 5 seconds. 130 already precompiled.
+   3869.1 ms  ✓ Lux → LuxReverseDiffExt
+   4135.8 ms  ✓ Boltz → BoltzReverseDiffExt
+  2 dependencies successfully precompiled in 4 seconds. 128 already precompiled.
 Precompiling ComponentArraysReverseDiffExt...
-   2961.6 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
+   3034.8 ms  ✓ ComponentArrays → ComponentArraysReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 69 already precompiled.
 Precompiling OptimizationReverseDiffExt...
-   2828.2 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
+   2855.6 ms  ✓ OptimizationBase → OptimizationReverseDiffExt
   1 dependency successfully precompiled in 3 seconds. 130 already precompiled.
 Precompiling ComponentArraysZygoteExt...
-   1443.0 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
-   1460.6 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+   1517.5 ms  ✓ ComponentArrays → ComponentArraysGPUArraysExt
+   1536.0 ms  ✓ ComponentArrays → ComponentArraysZygoteExt
   2 dependencies successfully precompiled in 2 seconds. 98 already precompiled.
 Precompiling OptimizationZygoteExt...
-   1942.6 ms  ✓ OptimizationBase → OptimizationZygoteExt
+   2081.5 ms  ✓ OptimizationBase → OptimizationZygoteExt
   1 dependency successfully precompiled in 2 seconds. 142 already precompiled.
 Precompiling DynamicExpressionsOptimExt...
-   1163.1 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
-  1 dependency successfully precompiled in 1 seconds. 86 already precompiled.
+   1261.5 ms  ✓ DynamicExpressions → DynamicExpressionsOptimExt
+  1 dependency successfully precompiled in 1 seconds. 88 already precompiled.
 Precompiling DynamicExpressionsLoopVectorizationExt...
-   3830.7 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
+   4239.7 ms  ✓ DynamicExpressions → DynamicExpressionsLoopVectorizationExt
   1 dependency successfully precompiled in 4 seconds. 49 already precompiled.
 Precompiling SymbolicRegression...
-    320.1 ms  ✓ ScientificTypesBase
-    405.1 ms  ✓ Tricks
-    470.1 ms  ✓ StatisticalTraits
-   1438.1 ms  ✓ LossFunctions
-    805.7 ms  ✓ MLJModelInterface
-   3816.2 ms  ✓ DynamicQuantities
-    580.3 ms  ✓ DynamicQuantities → DynamicQuantitiesLinearAlgebraExt
-  74197.1 ms  ✓ SymbolicRegression
-  8 dependencies successfully precompiled in 79 seconds. 98 already precompiled.
+   1764.0 ms  ✓ DynamicDiff
+  77556.6 ms  ✓ SymbolicRegression
+  2 dependencies successfully precompiled in 80 seconds. 107 already precompiled.
 Precompiling LuxLossFunctionsExt...
-   2049.0 ms  ✓ Lux → LuxLossFunctionsExt
-  1 dependency successfully precompiled in 3 seconds. 124 already precompiled.
+   1531.8 ms  ✓ Lux → LuxLossFunctionsExt
+  1 dependency successfully precompiled in 2 seconds. 121 already precompiled.
 Precompiling SymbolicRegressionEnzymeExt...
-  20955.2 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
-  1 dependency successfully precompiled in 21 seconds. 126 already precompiled.
+  22658.2 ms  ✓ SymbolicRegression → SymbolicRegressionEnzymeExt
+  1 dependency successfully precompiled in 23 seconds. 129 already precompiled.
 Precompiling MLJ...
-    475.6 ms  ✓ LaTeXStrings
-    474.8 ms  ✓ SimpleBufferStream
-    657.5 ms  ✓ InvertedIndices
-    705.3 ms  ✓ BitFlags
-   1315.7 ms  ✓ Combinatorics
-    632.0 ms  ✓ StableRNGs
-   1915.3 ms  ✓ Crayons
-    811.5 ms  ✓ ComputationalResources
-   1202.2 ms  ✓ ConcurrentUtilities
-   1275.2 ms  ✓ Distances
-   1372.5 ms  ✓ FeatureSelection
-    882.1 ms  ✓ EarlyStopping
-   4848.5 ms  ✓ FixedPointNumbers
-   2383.3 ms  ✓ MbedTLS
-   5994.9 ms  ✓ PrettyPrinting
-    553.2 ms  ✓ RelocatableFolders
-    644.1 ms  ✓ ExceptionUnwrapping
-   4514.2 ms  ✓ CategoricalArrays
-   2206.0 ms  ✓ LearnAPI
-   1944.2 ms  ✓ FilePathsBase
-   1740.4 ms  ✓ LatinHypercubeSampling
-   1284.7 ms  ✓ Distances → DistancesSparseArraysExt
-   3496.5 ms  ✓ StringManipulation
-    648.6 ms  ✓ Distances → DistancesChainRulesCoreExt
-   3328.7 ms  ✓ OpenSSL
-    943.6 ms  ✓ CategoricalArrays → CategoricalArraysJSONExt
-   2352.9 ms  ✓ IterationControl
-   1423.7 ms  ✓ CategoricalArrays → CategoricalArraysRecipesBaseExt
-    974.8 ms  ✓ FilePathsBase → FilePathsBaseMmapExt
-   3950.9 ms  ✓ ColorTypes
-   3522.2 ms  ✓ ARFFFiles
-   2056.0 ms  ✓ FilePathsBase → FilePathsBaseTestExt
-  11298.1 ms  ✓ MLUtils
-  11188.0 ms  ✓ StatisticalMeasuresBase
-  22739.1 ms  ✓ PrettyTables
-   3649.8 ms  ✓ ScientificTypes
-  25676.2 ms  ✓ HTTP
-   2217.9 ms  ✓ CategoricalDistributions
-   2122.1 ms  ✓ MLFlowClient
-   3922.5 ms  ✓ OpenML
-   6711.8 ms  ✓ MLJEnsembles
-  10440.4 ms  ✓ MLJBase
-  18619.4 ms  ✓ MLJModels
-   8723.6 ms  ✓ MLJBalancing
-   9150.5 ms  ✓ MLJTuning
-   9974.1 ms  ✓ MLJIteration
-   4707.9 ms  ✓ MLJFlow
-  26052.4 ms  ✓ StatisticalMeasures
-   3188.7 ms  ✓ StatisticalMeasures → ScientificTypesExt
-   3249.6 ms  ✓ MLJBase → DefaultMeasuresExt
-   6512.7 ms  ✓ MLJ
-  51 dependencies successfully precompiled in 77 seconds. 153 already precompiled.
-Precompiling LossFunctionsCategoricalArraysExt...
-    378.5 ms  ✓ LossFunctions → LossFunctionsCategoricalArraysExt
-  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
+    504.6 ms  ✓ InvertedIndices
+    954.5 ms  ✓ ConcurrentUtilities
+   1405.6 ms  ✓ LatinHypercubeSampling
+   3348.9 ms  ✓ ScientificTypes
+   2322.5 ms  ✓ CategoricalDistributions
+   7798.0 ms  ✓ MLUtils
+   7089.5 ms  ✓ StatisticalMeasuresBase
+   6216.7 ms  ✓ MLJEnsembles
+  20028.2 ms  ✓ MLJModels
+  11847.4 ms  ✓ MLJBase
+   7834.8 ms  ✓ MLJTuning
+  33719.8 ms  ✓ HTTP
+   8295.3 ms  ✓ MLJBalancing
+   9090.2 ms  ✓ MLJIteration
+   2175.2 ms  ✓ MLFlowClient
+   3501.2 ms  ✓ OpenML
+   4225.4 ms  ✓ MLJFlow
+  28907.7 ms  ✓ StatisticalMeasures
+   2311.6 ms  ✓ StatisticalMeasures → ScientificTypesExt
+   2404.7 ms  ✓ MLJBase → DefaultMeasuresExt
+   6692.6 ms  ✓ MLJ
+  21 dependencies successfully precompiled in 53 seconds. 178 already precompiled.
 Precompiling DynamicQuantitiesScientificTypesExt...
-   1332.2 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
+   1431.0 ms  ✓ DynamicQuantities → DynamicQuantitiesScientificTypesExt
   1 dependency successfully precompiled in 2 seconds. 85 already precompiled.
-Precompiling BangBangStructArraysExt...
-    397.4 ms  ✓ BangBang → BangBangStructArraysExt
-  1 dependency successfully precompiled in 1 seconds. 22 already precompiled.
-Precompiling TransducersLazyArraysExt...
-   1004.1 ms  ✓ Transducers → TransducersLazyArraysExt
-  1 dependency successfully precompiled in 1 seconds. 43 already precompiled.
 Precompiling MLDataDevicesMLUtilsExt...
-   2139.8 ms  ✓ MLDataDevices → MLDataDevicesMLUtilsExt
-  1 dependency successfully precompiled in 2 seconds. 116 already precompiled.
+   1405.4 ms  ✓ MLDataDevices → MLDataDevicesMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 102 already precompiled.
 Precompiling LuxMLUtilsExt...
-   2709.5 ms  ✓ Lux → LuxMLUtilsExt
-  1 dependency successfully precompiled in 3 seconds. 178 already precompiled.
+   1954.7 ms  ✓ Lux → LuxMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 177 already precompiled.
 Precompiling OptimizationMLUtilsExt...
-   2462.9 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
-  1 dependency successfully precompiled in 3 seconds. 155 already precompiled.
+   1690.5 ms  ✓ OptimizationBase → OptimizationMLUtilsExt
+  1 dependency successfully precompiled in 2 seconds. 151 already precompiled.
 Precompiling LossFunctionsExt...
-   3133.2 ms  ✓ StatisticalMeasures → LossFunctionsExt
-  1 dependency successfully precompiled in 4 seconds. 153 already precompiled.
+   2476.1 ms  ✓ StatisticalMeasures → LossFunctionsExt
+  1 dependency successfully precompiled in 3 seconds. 148 already precompiled.
 Precompiling SymbolicUtils...
-    372.2 ms  ✓ Bijections
-    382.6 ms  ✓ TermInterface
-    561.3 ms  ✓ Unityper
-   4986.2 ms  ✓ MutableArithmetics
-   2361.5 ms  ✓ MultivariatePolynomials
-   1490.3 ms  ✓ DynamicPolynomials
-  17587.1 ms  ✓ SymbolicUtils
-  7 dependencies successfully precompiled in 27 seconds. 81 already precompiled.
+  18508.7 ms  ✓ SymbolicUtils
+  1 dependency successfully precompiled in 19 seconds. 87 already precompiled.
 Precompiling DynamicExpressionsSymbolicUtilsExt...
-   1738.2 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
+   1776.8 ms  ✓ DynamicExpressions → DynamicExpressionsSymbolicUtilsExt
   1 dependency successfully precompiled in 2 seconds. 92 already precompiled.
 Precompiling SymbolicRegressionSymbolicUtilsExt...
-   3777.5 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
-  1 dependency successfully precompiled in 4 seconds. 140 already precompiled.
+   3843.4 ms  ✓ SymbolicRegression → SymbolicRegressionSymbolicUtilsExt
+  1 dependency successfully precompiled in 4 seconds. 143 already precompiled.
 Precompiling SymbolicUtilsReverseDiffExt...
-   3688.5 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
+   3759.6 ms  ✓ SymbolicUtils → SymbolicUtilsReverseDiffExt
   1 dependency successfully precompiled in 4 seconds. 99 already precompiled.
-Precompiling Latexify...
-    904.5 ms  ✓ Format
-   2951.1 ms  ✓ Latexify
-  2 dependencies successfully precompiled in 4 seconds. 8 already precompiled.
-Precompiling SparseArraysExt...
-    656.6 ms  ✓ Latexify → SparseArraysExt
-  1 dependency successfully precompiled in 1 seconds. 53 already precompiled.
 Precompiling CairoMakie...
-    528.5 ms  ✓ GeoFormatTypes
-    524.5 ms  ✓ Contour
-    569.1 ms  ✓ PaddedViews
-    660.9 ms  ✓ Observables
-    582.9 ms  ✓ IntervalSets
-    456.9 ms  ✓ PolygonOps
-    647.6 ms  ✓ Extents
-   1251.5 ms  ✓ Grisu
-    601.1 ms  ✓ StackViews
-    503.8 ms  ✓ LazyModules
-    684.6 ms  ✓ RoundingEmulator
-    891.9 ms  ✓ IterTools
-    557.0 ms  ✓ MappedArrays
-    490.2 ms  ✓ RangeArrays
-    588.5 ms  ✓ IndirectArrays
-    546.3 ms  ✓ TriplotBase
-    446.7 ms  ✓ Ratios
-    608.7 ms  ✓ Inflate
-    488.6 ms  ✓ TensorCore
-   2602.3 ms  ✓ AdaptivePredicates
-    541.8 ms  ✓ SignedDistanceFields
-   1348.3 ms  ✓ WoodburyMatrices
-   1119.8 ms  ✓ FilePaths
-   1087.7 ms  ✓ Libffi_jll
-    833.1 ms  ✓ isoband_jll
-   2359.3 ms  ✓ UnicodeFun
-   1123.6 ms  ✓ Libuuid_jll
-    833.6 ms  ✓ LLVMOpenMP_jll
-   1082.8 ms  ✓ Imath_jll
-    972.2 ms  ✓ JpegTurbo_jll
-   1126.9 ms  ✓ CRlibm_jll
-    847.3 ms  ✓ Ogg_jll
-   1003.9 ms  ✓ x264_jll
-   1027.0 ms  ✓ x265_jll
-    870.7 ms  ✓ FriBidi_jll
-    965.4 ms  ✓ Xorg_libXau_jll
-   1157.7 ms  ✓ Graphite2_jll
-   1539.2 ms  ✓ XML2_jll
-    963.6 ms  ✓ libpng_jll
-   1019.5 ms  ✓ Giflib_jll
-   1070.1 ms  ✓ LAME_jll
-   8163.3 ms  ✓ Colors
-    984.2 ms  ✓ EarCut_jll
-    869.3 ms  ✓ Xorg_libXdmcp_jll
-    839.7 ms  ✓ libaom_jll
-    742.1 ms  ✓ Opus_jll
-   1052.7 ms  ✓ Zstd_jll
-   1087.4 ms  ✓ LZO_jll
-    696.9 ms  ✓ Xorg_xtrans_jll
-    894.4 ms  ✓ Bzip2_jll
-   1080.2 ms  ✓ Libmount_jll
-    862.3 ms  ✓ LERC_jll
-   1108.0 ms  ✓ libfdk_aac_jll
-    890.7 ms  ✓ XZ_jll
-    852.2 ms  ✓ Libgpg_error_jll
-    819.3 ms  ✓ Xorg_libpthread_stubs_jll
-   1056.3 ms  ✓ FFTW_jll
-    482.1 ms  ✓ IntervalSets → IntervalSetsRandomExt
-    568.5 ms  ✓ IntervalSets → IntervalSetsStatisticsExt
-    524.9 ms  ✓ ConstructionBase → ConstructionBaseIntervalSetsExt
-   2669.1 ms  ✓ QOI
-   1771.3 ms  ✓ GeoInterface
-    815.2 ms  ✓ Showoff
-    674.8 ms  ✓ Ratios → RatiosFixedPointNumbersExt
-    895.6 ms  ✓ MosaicViews
-   1181.9 ms  ✓ AxisAlgorithms
-    937.9 ms  ✓ Isoband
-   7729.7 ms  ✓ PkgVersion
-   1147.3 ms  ✓ Pixman_jll
-   4365.4 ms  ✓ ColorVectorSpace
-   1337.7 ms  ✓ OpenEXR_jll
-   1275.3 ms  ✓ libvorbis_jll
-   1043.7 ms  ✓ Gettext_jll
-   1030.8 ms  ✓ libsixel_jll
-   1081.0 ms  ✓ Graphics
-   1361.2 ms  ✓ Animations
-   4661.9 ms  ✓ IntervalArithmetic
-   1283.1 ms  ✓ FreeType2_jll
-   2642.2 ms  ✓ ColorBrewer
-   1530.2 ms  ✓ Libtiff_jll
-   1020.2 ms  ✓ Libgcrypt_jll
-   1371.9 ms  ✓ AxisArrays
-  15607.6 ms  ✓ SIMD
-   1633.9 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
-   3900.4 ms  ✓ Interpolations
-   8471.4 ms  ✓ ColorSchemes
-  13013.9 ms  ✓ GeometryBasics
-   2002.0 ms  ✓ Glib_jll
-  41528.1 ms  ✓ Unitful
-    963.6 ms  ✓ IntervalArithmetic → IntervalArithmeticIntervalSetsExt
-   3208.7 ms  ✓ OpenEXR
-   1683.3 ms  ✓ Fontconfig_jll
-   1936.1 ms  ✓ FreeType
-   1351.7 ms  ✓ XSLT_jll
-  22992.3 ms  ✓ FFTW
-   8069.3 ms  ✓ ExactPredicates
-   1959.7 ms  ✓ Packing
-  15567.4 ms  ✓ GridLayoutBase
-  41967.3 ms  ✓ ImageCore
-   2622.0 ms  ✓ ShaderAbstractions
-  29322.1 ms  ✓ Automa
-   1067.1 ms  ✓ Unitful → InverseFunctionsUnitfulExt
-   1381.0 ms  ✓ Unitful → ConstructionBaseUnitfulExt
-  27175.2 ms  ✓ PlotUtils
-   2467.5 ms  ✓ Interpolations → InterpolationsUnitfulExt
-   9602.1 ms  ✓ MakieCore
-   2051.6 ms  ✓ Xorg_libxcb_jll
-   4479.8 ms  ✓ FreeTypeAbstraction
-   3052.1 ms  ✓ KernelDensity
-   3706.6 ms  ✓ ImageBase
-   7854.1 ms  ✓ DelaunayTriangulation
-   6203.3 ms  ✓ JpegTurbo
-   1230.1 ms  ✓ Xorg_libX11_jll
-   7855.2 ms  ✓ PNGFiles
-   1108.9 ms  ✓ Xorg_libXrender_jll
-   3269.8 ms  ✓ ImageAxes
-    956.6 ms  ✓ Xorg_libXext_jll
-   8061.8 ms  ✓ Sixel
-   1291.1 ms  ✓ Cairo_jll
-   1401.9 ms  ✓ Libglvnd_jll
-   1927.6 ms  ✓ ImageMetadata
-   1319.4 ms  ✓ HarfBuzz_jll
-   1314.5 ms  ✓ libwebp_jll
-   1139.9 ms  ✓ libass_jll
-   1176.6 ms  ✓ Pango_jll
-   3478.0 ms  ✓ Netpbm
-   1499.1 ms  ✓ FFMPEG_jll
-   1891.6 ms  ✓ Cairo
-   3729.9 ms  ✓ WebP
-  20247.5 ms  ✓ MathTeXEngine
-  87016.3 ms  ✓ TiffImages
-   1115.5 ms  ✓ ImageIO
- 143157.2 ms  ✓ Makie
-  81890.4 ms  ✓ CairoMakie
-  134 dependencies successfully precompiled in 361 seconds. 135 already precompiled.
-Precompiling SparseMatrixColoringsColorsExt...
-    791.6 ms  ✓ SparseMatrixColorings → SparseMatrixColoringsColorsExt
-  1 dependency successfully precompiled in 1 seconds. 29 already precompiled.
+    770.0 ms  ✓ Xorg_libXrender_jll
+    971.3 ms  ✓ ColorVectorSpace → SpecialFunctionsExt
+   1210.5 ms  ✓ GeoInterface
+    890.4 ms  ✓ Cairo_jll
+    701.9 ms  ✓ HarfBuzz_jll
+   2385.5 ms  ✓ KernelDensity
+    744.5 ms  ✓ Pango_jll
+    964.8 ms  ✓ libass_jll
+   1381.9 ms  ✓ Cairo
+   1303.8 ms  ✓ FFMPEG_jll
+   5871.0 ms  ✓ GeometryBasics
+   1911.8 ms  ✓ Packing
+   2142.8 ms  ✓ ShaderAbstractions
+   3156.9 ms  ✓ FreeTypeAbstraction
+   6357.9 ms  ✓ MakieCore
+   8587.0 ms  ✓ GridLayoutBase
+  14893.8 ms  ✓ MathTeXEngine
+ 145635.1 ms  ✓ Makie
+  82150.4 ms  ✓ CairoMakie
+  19 dependencies successfully precompiled in 253 seconds. 250 already precompiled.
 Precompiling ZygoteColorsExt...
-   1550.6 ms  ✓ Zygote → ZygoteColorsExt
+   1558.6 ms  ✓ Zygote → ZygoteColorsExt
   1 dependency successfully precompiled in 2 seconds. 89 already precompiled.
-Precompiling AccessorsIntervalSetsExt...
-    694.3 ms  ✓ Accessors → AccessorsIntervalSetsExt
-  1 dependency successfully precompiled in 1 seconds. 12 already precompiled.
-Precompiling IntervalSetsRecipesBaseExt...
-    468.7 ms  ✓ IntervalSets → IntervalSetsRecipesBaseExt
-  1 dependency successfully precompiled in 1 seconds. 9 already precompiled.
-Precompiling AccessorsUnitfulExt...
-    517.6 ms  ✓ Accessors → AccessorsUnitfulExt
-  1 dependency successfully precompiled in 1 seconds. 17 already precompiled.
 Precompiling DiffEqBaseUnitfulExt...
-   1478.1 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
+   1421.5 ms  ✓ DiffEqBase → DiffEqBaseUnitfulExt
   1 dependency successfully precompiled in 2 seconds. 123 already precompiled.
-Precompiling DynamicQuantitiesUnitfulExt...
-    987.6 ms  ✓ DynamicQuantities → DynamicQuantitiesUnitfulExt
-  1 dependency successfully precompiled in 1 seconds. 14 already precompiled.
 Precompiling NNlibFFTWExt...
-   1503.3 ms  ✓ NNlib → NNlibFFTWExt
-  1 dependency successfully precompiled in 2 seconds. 58 already precompiled.
+    778.6 ms  ✓ NNlib → NNlibFFTWExt
+  1 dependency successfully precompiled in 1 seconds. 54 already precompiled.
 Precompiling HTTPExt...
-   1582.1 ms  ✓ FileIO → HTTPExt
+   1598.8 ms  ✓ FileIO → HTTPExt
   1 dependency successfully precompiled in 2 seconds. 43 already precompiled.
 Precompiling IntervalArithmeticForwardDiffExt...
-    433.0 ms  ✓ IntervalArithmetic → IntervalArithmeticDiffRulesExt
-    619.6 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
-  2 dependencies successfully precompiled in 1 seconds. 42 already precompiled.
-Precompiling IntervalArithmeticRecipesBaseExt...
-    612.0 ms  ✓ IntervalArithmetic → IntervalArithmeticRecipesBaseExt
-  1 dependency successfully precompiled in 1 seconds. 31 already precompiled.
+    613.3 ms  ✓ IntervalArithmetic → IntervalArithmeticForwardDiffExt
+  1 dependency successfully precompiled in 1 seconds. 43 already precompiled.
 Precompiling SciMLBaseMakieExt...
-   8115.2 ms  ✓ SciMLBase → SciMLBaseMakieExt
+   8252.6 ms  ✓ SciMLBase → SciMLBaseMakieExt
   1 dependency successfully precompiled in 9 seconds. 303 already precompiled.

Helper Functions

julia
function plot_dynamics(sol, us, ts)
     fig = Figure()
     ax = CairoMakie.Axis(fig[1, 1]; xlabel=L"t")
@@ -726,26 +463,26 @@
 r = report(mach)
 best_eq = [r.equations[1][r.best_idx[1]], r.equations[2][r.best_idx[2]],
     r.equations[3][r.best_idx[3]], r.equations[4][r.best_idx[4]]]
4-element Vector{DynamicExpressions.ExpressionModule.Expression{Float64, DynamicExpressions.NodeModule.Node{Float64}, @NamedTuple{operators::DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}, variable_names::Vector{String}}}}:
- (((-0.13321428243861314 - ((0.8429576230558037 - ((x2 * x2) * (x2 + (x2 + -0.36587023826177456)))) * x1)) - x2) + (x3 / -0.28182516657243606)) * 0.11777767977748137
- (((x2 - x3) * (((1.3248108542721566 - (x1 * (1.3219022349598657 - x2))) * x2) + 0.8329723329564129)) - x4) - ((((x1 * x3) * 0.9061837815460375) + 0.02386752493998385) - x4)
- ((((x2 * -1.5820546813953016) - (x3 * ((x3 - x4) * 1.8125551854122142))) - -0.7885931564339473) - x4) + (x3 * 0.7663322029266375)
- (((x2 * (x2 + 0.34865973516490406)) * 2.2240536188165) + (-0.020339699275241985 - (x1 * x1))) * (1.8653534481831382 - (x2 * (((x3 + x2) * x2) * 3.3794565531533123)))

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

(0.13321(0.84296x2x2(x2+x20.36587))x1x2+x30.28183)0.11778(x2x3)((1.3248x1(1.3219x2))x2+0.83297)x4(x1x30.90618+0.023868x4)x21.5821x3(x3x4)1.8126+0.78859x4+x30.76633(x2(x2+0.34866)2.22410.02034x1x1)(1.8654x2(x3+x2)x23.3795)

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
+ (((x1 + ((x2 + (x2 * ((0.1365077871809465 - x2) * (x2 * -0.3706095837027754)))) * 1.1499767933395886)) * -0.10094513566229477) + -0.015682347987089805) - (x3 * 0.41529502093863896)
+ ((x2 + (((x2 + -0.14426087460968356) * ((x2 + (((x2 * x1) * ((x2 + -0.5022130467540905) + x2)) - x3)) - x4)) * 1.2384596950473552)) - x3) - 0.02392942727488574
+ ((((x4 * -0.19092641834728757) / (x2 + (-0.6513251066426832 - x1))) - 1.0153755877247124) * x3) - ((-1.2144344174950037 - ((x4 + 2.4341348924238555) * (x3 - x2))) * 0.6493562344860907)
+ (x3 * 0.15622313651527722) + ((x2 / (0.2433282150366007 / ((x4 * ((x4 / -0.15709638744100488) * x2)) + (x2 + 0.11002142482799021)))) + (x2 + -0.037915962614793824))

Let's see the expressions that SymbolicRegression.jl found. In case you were wondering, these expressions are not hardcoded, it is live updated from the output of the code above using Latexify.jl and the integration of SymbolicUtils.jl with DynamicExpressions.jl.

(x1+(x2+x2(0.13651x2)x20.37061)1.15)0.100950.015682x30.4153x2+(x20.14426)(x2+x2x1(x20.50221+x2)x3x4)1.2385x30.023929(x40.19093x20.65133x11.0154)x3(1.2144(x4+2.4341)(x3x2))0.64936x30.15622+x20.24333x4x40.1571x2+x2+0.11002+x20.037916

Combining the Neural Network with the Symbolic Expression

Now that we have the symbolic expression, we can combine it with the neural network to solve the optimal control problem. but we do need to perform some finetuning.

julia
hybrid_mlp = Chain(Dense(1 => 4, gelu),
     Layers.DynamicExpressionsLayer(OperatorEnum(; binary_operators=[+, -, *, /]), best_eq),
     Dense(4 => 1))
Chain(
     layer_1 = Dense(1 => 4, gelu),      # 8 parameters
     layer_2 = DynamicExpressionsLayer(
         chain = Chain(
             layer_1 = Parallel(
-                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((-0.13321428243861314 - ((0.8429576230558037 - ((x2 * x2) * (x2 + (x2 + -0.36587023826177456)))) * x1)) - x2) + (x3 / -0.28182516657243606)) * 0.11777767977748137; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
-                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x2 - x3) * (((1.3248108542721566 - (x1 * (1.3219022349598657 - x2))) * x2) + 0.8329723329564129)) - x4) - ((((x1 * x3) * 0.9061837815460375) + 0.02386752493998385) - x4); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
-                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x2 * -1.5820546813953016) - (x3 * ((x3 - x4) * 1.8125551854122142))) - -0.7885931564339473) - x4) + (x3 * 0.7663322029266375); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
-                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x2 * (x2 + 0.34865973516490406)) * 2.2240536188165) + (-0.020339699275241985 - (x1 * x1))) * (1.8653534481831382 - (x2 * (((x3 + x2) * x2) * 3.3794565531533123))); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
+                layer_1 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (((x1 + ((x2 + (x2 * ((0.1365077871809465 - x2) * (x2 * -0.3706095837027754)))) * 1.1499767933395886)) * -0.10094513566229477) + -0.015682347987089805) - (x3 * 0.41529502093863896); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_2 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((x2 + (((x2 + -0.14426087460968356) * ((x2 + (((x2 * x1) * ((x2 + -0.5022130467540905) + x2)) - x3)) - x4)) * 1.2384596950473552)) - x3) - 0.02392942727488574; eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 4 parameters
+                layer_3 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), ((((x4 * -0.19092641834728757) / (x2 + (-0.6513251066426832 - x1))) - 1.0153755877247124) * x3) - ((-1.2144344174950037 - ((x4 + 2.4341348924238555) * (x3 - x2))) * 0.6493562344860907); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 6 parameters
+                layer_4 = InternalDynamicExpressionWrapper(DynamicExpressions.OperatorEnumModule.OperatorEnum{Tuple{typeof(+), typeof(-), typeof(*), typeof(/)}, Tuple{}}((+, -, *, /), ()), (x3 * 0.15622313651527722) + ((x2 / (0.2433282150366007 / ((x4 * ((x4 / -0.15709638744100488) * x2)) + (x2 + 0.11002142482799021)))) + (x2 + -0.037915962614793824)); eval_options=(turbo = Val{false}(), bumper = Val{false}())),  # 5 parameters
             ),
             layer_2 = WrappedFunction(stack1),
         ),
     ),
     layer_3 = Dense(4 => 1),            # 5 parameters
-)         # Total: 32 parameters,
+)         # Total: 34 parameters,
           #        plus 0 states.

There you have it! It is that easy to take the fitted Symbolic Expression and combine it with a neural network. Let's see how it performs before fintetuning.

julia
hybrid_ude = construct_ude(hybrid_mlp, Vern9(); abstol=1e-10, reltol=1e-10);

We want to reuse the trained neural network parameters, so we will copy them over to the new model

julia
st = Lux.initialstates(rng, hybrid_ude)
 ps = (;
     mlp=(; layer_1=trained_ude.ps.mlp.layer_1,
@@ -754,7 +491,7 @@
 ps = ComponentArray(ps)
 
 sol, us = hybrid_ude(([-4.0, 0.0], 0.0:0.01:8.0, Val(true)), ps, st)[1];
-plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
+plot_dynamics(sol, us, 0.0:0.01:8.0)

Now that does perform well! But we could finetune this model very easily. We will skip that part on CI, but you can do it by using the same training code as above.

Appendix

julia
using InteractiveUtils
 InteractiveUtils.versioninfo()
 
 if @isdefined(MLDataDevices)
@@ -782,7 +519,7 @@
   JULIA_CUDA_HARD_MEMORY_LIMIT = 100%
   JULIA_PKG_PRECOMPILE_AUTO = 0
   JULIA_DEBUG = Literate

This page was generated using Literate.jl.

- + \ No newline at end of file