2022-03-29 04:22:53 +02:00
### A Pluto.jl notebook ###
2024-05-15 02:18:58 +02:00
# v0.19.42
2022-03-29 04:22:53 +02:00
using Markdown
using InteractiveUtils
2022-03-29 06:14:36 +02:00
# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error).
macro bind ( def , element )
quote
local iv = try Base . loaded_modules [ Base . PkgId ( Base . UUID ( " 6e696c72-6542-2067-7265-42206c756150 " ) , " AbstractPlutoDingetjes " ) ] . Bonds . initial_value catch ; b -> missing ; end
local el = $ ( esc ( element ) )
global $ ( esc ( def ) ) = Core . applicable ( Base . get , el ) ? Base . get ( el ) : iv ( el )
el
end
end
2022-03-29 04:22:53 +02:00
# ╔═╡ b3260050-4542-489d-b015-17092166095d
2024-05-15 02:18:58 +02:00
# Import the plotting package we are going to use in this course
using Plots
2022-03-29 04:22:53 +02:00
# ╔═╡ 755b4cb8-e3ea-4142-bffd-e6db5f971d7c
# Oh, no, you found my secret! 😱
# Don't change this hidden cell!
begin
using PlutoUI
TableOfContents ( )
end
# ╔═╡ b7cf2ed0-3241-4dbc-9c8c-6426b5b5de9f
md """
# More about functions
Julia has a focus on functional programming . Therefore , understanding them well is very important for using Julia .
We did already learn how to define functions with simple arguments . Now , we will build on that .
"""
# ╔═╡ 546fe77b-9c89-4207-8468-d27c10769bae
# Already known syntax with (positional) arguments
function f_with_positional_arguments ( a , b )
return a + b
end
# ╔═╡ a7315857-a26b-44e8-9597-fdf631ff01fc
f_with_positional_arguments ( 1 , 2 )
# ╔═╡ cbc29275-eee5-4eee-b949-bafa9353af12
md """
## Keyword arguments
What we did use until now are * positional arguments * .
You can declare * keyword arguments * in addition to positional arguments . Keyword arguments have to be named while calling a function ( see below cells ) .
2022-03-29 06:33:25 +02:00
Keyword arguments are declared after positional arguments and separated from positional arguments with a semicolon ` ; ` .
2022-03-29 04:22:53 +02:00
"""
# ╔═╡ ae5ebe62-37bd-423d-a102-fbbec8de8e0f
function f_with_keyword_arguments ( a , b ; c , d )
return ( ( a + b ) * c ) - d
end
# ╔═╡ f4624cc6-3859-4c63-91d4-372804f96f11
# This will not work!
# f_with_keyword_arguments(1, 2, 42, 55)
# ╔═╡ 173180d2-723b-485b-9188-94d4a0d25f6e
# Using a semicolon here is not necessary, but it is recommended.
# First, you assign all positional arguments, then all keyword arguments.
f_with_keyword_arguments ( 1 , 2 ; c = 42 , d = 55 )
# ╔═╡ ddb2d568-8417-4046-8a46-6af01fd2e3ab
# The order of specifying keyword arguments is not important
# ⚠️ This is not the case for positional arguments
f_with_keyword_arguments ( 1 , 2 ; d = 55 , c = 42 )
# ╔═╡ 2c7b5636-8818-40be-bfbe-19f2760b635a
# You can also define a function with only keyword arguments
# Make sure you include the semicolon at the beginning
function f_with_only_keyword_arguments ( ; a , b )
return a + b
end
# ╔═╡ 95f59ac7-8998-4aca-a323-f181db38200a
f_with_only_keyword_arguments ( ; a = 1 , b = 2 )
# ╔═╡ 981b1ff6-1259-4810-93c2-570e3a6db650
md """
## Optional arguments
You can specify default values for positional and keyword arguments . These arguments are then * optional * .
"""
# ╔═╡ d3106821-823a-41e5-959f-fee4e3a364b5
function f_with_default_arg_values ( a , b = 2 ; c , d = 55 )
return ( ( a + b ) * c ) - d
end
# ╔═╡ a5185ed5-1c8f-4d05-a321-f520b87b6413
# This is enough because the other arguments have default values
f_with_default_arg_values ( 1 ; c = 42 )
# ╔═╡ 61d4d6b5-e052-4aee-b808-e48d0b6c3062
# But you can also specify a value to overwrite the default one
f_with_default_arg_values ( 1 , 3 ; c = 4 , d = 55 )
# ╔═╡ 35146a7a-4b2a-4f05-9110-59deb1835ec8
md """
You can also make all the arguments optional by providing default values for every argument .
"""
# ╔═╡ 604843ab-b913-4ea1-86b5-1eaaa553c1e8
md """
Optional * * positional * * arguments have to be specified * * at the end * * ( for calling the function ) .
2022-03-29 06:33:25 +02:00
Optional * * keyword * * arguments don ' t have to be specified at the end because the order of specifying keyword arguments while calling a function is not important .
2022-03-29 04:22:53 +02:00
"""
# ╔═╡ b5272b80-b013-460c-ae78-1b9a1a774c5c
# Optional positional arguments not at the end!
function f_with_wrong_default_values_order ( a = 1 , b ; c = 42 , d )
return ( ( a + b ) * c ) - d
end
# ╔═╡ 363221d0-b6b5-4244-b325-0e72e8b83881
md """
## Mutating functions
In Julia , functions that mutate arguments have an exclamation mark ( ` ! ` ) at the end of their name . The arguments that are mutated should be specified at the beginning as positional arguments .
Functions without an exclamation mark don ' t mutate their input! These functions are called ` pure functions ` .
This is not enforced in Julia . It is only a convention , but a one that is strongly recommended . Make sure you use this convention when you define functions!
"""
# ╔═╡ 251a9bcf-9fe6-45f5-ae31-bcfb5e793cff
# Not mutating
begin
v1 = [ 4 , 2 , 3 , 1 ]
sorted_v1 = sort ( v1 )
@show v1
@show sorted_v1
end
# ╔═╡ 7aa6c4bf-c8f2-4cd0-a3fc-6ef05206ff84
# Mutating
begin
v2 = [ 4 , 2 , 3 , 1 ]
sorted_v2 = sort! ( v2 )
@show v2
@show sorted_v2
end
# ╔═╡ b35d2f60-7c2e-4a0d-bde9-75c8cd77bb90
md """
Using mutating functions instead of not mutating ones is very important for performance!
` sort ` does copy the input vector , sorts it and then returns the sorted copy .
` sort! ` does not copy the input vector! Instead , the input vector is sorted inplace . This saves allocations caused by copying!
"""
# ╔═╡ 44f6a08f-b2d7-4a72-9dbc-f6d158698d68
md """
## Optional type annotation
You can * * optionally * * specify type annotations for function arguments . You don ' t need to do so . * * This will NOT lead to any performance benefits! * * Julia determines types and optimizes automatically .
But you can use type annotations for function arguments if you want to make sure that the user uses the function with arguments of a specific type . It does also help understanding what your function does when knowing the type of its input . In addition , type annotations for function arguments will be important for the next section about multiple dispatch .
"""
# ╔═╡ c5c8f821-8c76-4d2a-9e5e-2030130a42cd
function f_with_type_annotations ( a :: Int64 , b :: Int64 )
return a * b
end
# ╔═╡ 0dfe84bc-5363-41e8-b61a-d4865a9ac696
# This will not work anymore!
# f_with_type_annotations(1.1, 2.5)
# ╔═╡ 9484fac4-2c47-444a-8743-da480bf913e6
# It does only work with Int64
f_with_type_annotations ( 1 , 2 )
# ╔═╡ 8556149d-eb4f-4226-9e2f-d365a2b65d2e
# Lets say that you now need to use BigInt
# Well, then you are not able to use your nice function anymore 😭
# f_with_type_annotations(big(1), big(2))
# ╔═╡ aa11cfa3-349c-48b8-99c5-2fd9cf73b556
md """
You should avoid using type annotations with concrete types when possible . Instead , use * * abstract types * * !
"""
# ╔═╡ d5154233-080e-49c7-8548-abd0ffc79e8f
# Remember the hierarchy
supertypes ( Int64 )
# ╔═╡ 7708a170-e34d-4af4-ad7e-4371d6a0bf3e
# Better than the function above
function f_with_abstract_type_annotations ( a :: Integer , b :: Integer )
return a * b
end
# ╔═╡ 5c79a645-a7f7-4a66-b508-b770c09d83ae
# Now, our lovely function works also with BigInt 😍
f_with_abstract_type_annotations ( big ( 1 ) , big ( 2 ) )
# ╔═╡ 17dc64ff-0141-4792-bced-4e013a127058
md """
## Multiple dispatch
Multiple dispatch is a powerful concept in Julia . It allows defining different behavior of a function with different argument types . It is best explained using an example .
Lets say , we want to define a fancy function that joins two strings into one with a space between them .
* Lets forget that Julia has the function ` join ` for now .*
"""
# ╔═╡ 606e515b-bbc2-4656-96ca-fb7dd0b6262a
# We define our function for abstract strings
function join_to_one_string ( a :: AbstractString , b :: AbstractString )
return a * " " * b
end
# ╔═╡ 944b8bc8-8eb6-4ede-b9cf-23f731298cfe
# Our function does work well with strings ✅
join_to_one_string ( " Hello " , " World " )
# ╔═╡ 9c628141-eca1-4bf4-9d29-d0fdebc23da2
md """
Lets say , we find this function very useful and we want to have a similar function that does the same but with numbers instead of strings .
What would you do then ? You might just go ahead and define a new function called ` number_join_to_one_string ` for example . But what if you also want to define similar behavior for vectors ? What about other types ? Do you want to define a function with a new name for every other type ?
Well , that will not be a good design since you would have many functions with different names that all have the same behavior ( but not the same way of achieving this behavior ) .
What if we could just use the same function name and Julia would know how to deal with the input ? This is where you get into multiple dispatch!
Lets see how we can tell our function how to deal with numbers .
"""
# ╔═╡ 50a74224-fc38-4d41-adff-073c77148b28
# Define the behavior for numbers
"""
function join_to_one_string ( a :: Number , b :: Number )
a_str = string ( a )
b_str = string ( b )
# Call the original function for strings after converting a number to a string
# This is not recursion!
return join_to_one_string ( a_str , b_str )
end
"""
# ╔═╡ ae81d9d4-831b-42fe-8ece-5451c6aa4c25
# This will only work when you define how your function can deal with numbers
join_to_one_string ( 1.1 , 2 )
# ╔═╡ ed2fc914-c4de-4465-9d2d-3d1b7bd15331
md """
Magic 🪄
Why is this supposed to be that powerful ? You could just remember some function names for different types , right ?
Well , consider the case where you want to use your fancy function in another function .
"""
# ╔═╡ f7df20e6-2df5-4b4b-a4db-a0ae85a4a966
# We define a function that uses our fancy function internally
function do_some_stuff_and_join ( a , b )
println ( " This is a placeholder for some instructions on $a and $b " )
return join_to_one_string ( a , b )
end
# ╔═╡ db3865d7-95ae-4c38-8e24-9271d8341294
do_some_stuff_and_join ( " Test " , " OK " )
# ╔═╡ ea67cee1-540b-453f-a484-a303c89316cb
# This will only work when you define how `join_to_one_string` can deal with numbers
do_some_stuff_and_join ( 1.1 , 2 )
# ╔═╡ 49980a06-0e1c-4fc9-8e9d-630021f33cf3
md """
It just works when you define ` join_to_one_string ` for the types you want to use with ` do_some_stuff_and_join ` .
You don ' t have to define also different functions with different names for ` do_some_stuff_and_join ` !
You also don ' t have to check for the type of the arguments of ` do_some_stuff_and_join ` to determine which function to call internally .
More importantly , you can define your own types with * structs * and define how ` join_to_one_string ` should work . Then you can just use all the functions using ` join_to_one_string ` internally!
We will get into that later when structs are explained .
"""
2022-03-29 06:14:36 +02:00
# ╔═╡ bc24a7a5-9638-4502-b24a-fecc406d9658
md """
# I/O
I / O stand for input / output . In this section , we will learn the basics about reading and writing files .
2022-03-29 06:33:25 +02:00
I / O knowledge will especially help us to read some files containing data to analyze .
2022-03-29 06:14:36 +02:00
"""
# ╔═╡ 274342cb-19a9-4e71-a23e-7c7da18a8022
md """
## Reading files
"""
# ╔═╡ 1e75c110-005c-494f-9569-5eca01cb0545
begin
# Open a file by specifying the path to the file and the mode in which it is opened with.
# The mode "r" stands for read-only. This means that we can only read but not change the content of the file.
# For more modes, check the documentation of `open` 📚️
2022-03-31 01:46:49 +02:00
# The returned value is stored in the variable before `open`
# In this case, the variable `lines` stores a vector of the file lines as strings
lines = open ( " resources/test.txt " , " r " ) do io
return readlines ( io )
2022-03-29 06:14:36 +02:00
end
2022-03-31 01:46:49 +02:00
2022-03-29 06:14:36 +02:00
# The file is automatically closed
end
# ╔═╡ 4a10ce80-0053-44c8-aee8-6a1982749fa2
# `lines` is now a vector of strings. Each string is one line in the file that was read.
lines
# ╔═╡ 2e94396b-89e0-44d7-aec4-303ee782a8ee
md """
## Writing files
"""
# ╔═╡ 866e5958-a2bd-4625-aaa7-9e049fe8bbe2
begin
# `lines` is copied here to avoid problems with Pluto
# If you are not using Pluto, you can modify `lines` directly
new_lines = copy ( lines )
# Modify one line
new_lines [ 3 ] = " Meaningful line "
# Open a new file in write mode (w)
open ( " resources/new_test.txt " , " w " ) do io
# Write every line into the file
for line in new_lines
# ⚠️ Make sure you give `println` the argument `io`!
println ( io , line )
end
end
end
2022-03-29 04:22:53 +02:00
# ╔═╡ d75af522-aed2-11ec-0953-bff6f6282a47
md """
# Plotting
Especially after learning about mutating and pure functions , we are now ready to dive into the world of plotting with Julia 🤿
"""
2022-03-29 06:14:36 +02:00
# ╔═╡ 3742316b-19c5-476b-8a25-dbe5b0c6587c
md """
## Line plots
After the setup for plotting , lets see a simple example .
"""
# ╔═╡ 1bb93b3b-1939-408c-9afa-39f7fc556b9b
# Similar to `range`. Read the documentation of `LinRange` to see the difference 📚️
x = LinRange ( 0 , 2 * π , 250 )
# ╔═╡ ee53e8fc-a342-43ee-948e-10c8494afbad
# Broadcasting the function to all elements of x
sin_y = sin . ( x )
2022-03-29 04:22:53 +02:00
2022-03-29 06:14:36 +02:00
# ╔═╡ aa2e51f7-9dd3-4f77-9503-da536c6a8f7b
plot ( x , sin_y )
# ╔═╡ 5f9f92e2-1755-4d66-bc19-53355d5ce01f
md """
Pretty easy , right ? 😍
What if we want more than one plot in one figure ? 🤔
"""
# ╔═╡ 1d038daa-ee1f-4058-8be3-c42dd8236206
cos_y = cos . ( x )
# ╔═╡ a93e1083-b0dd-41bb-a377-d8436bd028ed
begin
plot ( x , sin_y )
# Every plot after the first one has to use an exclamation mark because it is mutating the original plot
plot! ( x , cos_y )
end
# ╔═╡ 64134500-58ed-45b5-884e-e909c99f6e66
md """
Especially for scientific usage , this plot is not enough . It is missing a lot of important elements . Some of them are :
- Axis labels
- Proper legend
- Title
So lets add some more details into the ` sin ` plot!
"""
# ╔═╡ c5e15ad6-8d0b-4c01-9687-0dea750469a1
plot (
x , sin_y ,
xlabel = " x " ,
ylabel = " sin(x) " ,
label = " sin " ,
title = " Plotting example " ,
)
# ╔═╡ ca292895-ea2a-4fc0-975f-d9a8d40ac068
# Setting more options
plot (
x , sin_y ,
xlabel = " x " ,
ylabel = " sin(x) " ,
label = " sin " ,
title = " Simple example " ,
color = " red " , # Change color
2022-03-29 06:33:25 +02:00
linestyle = :dash , # Change line style
2022-03-29 06:14:36 +02:00
)
# ╔═╡ 7cc3b76d-6388-4499-8647-9d1fccc6a8c4
md """
For more information about all possible attributes and values , visit this link :
2022-03-30 02:32:30 +02:00
https : // docs . juliaplots . org / latest / attributes /
2022-03-29 06:14:36 +02:00
"""
# ╔═╡ c61b154c-0e2c-4c19-b5fc-17a68a25ccb0
md """
## Interactive plots
"""
# ╔═╡ 91383d53-1a7e-42f2-a10b-a71b20aa4186
# This is how you implement a slider
@bind a Slider ( 0.1 : 0.1 : 2 )
# ╔═╡ 2f3f0391-6898-4f3d-aa8a-ba33070fc59f
md """
` a = ` $ a
"""
# ╔═╡ 42074ac6-bf37-4551-8769-3c4d2dfb0298
plot (
x , sin . ( x ./ a ) ,
xlabel = " x " ,
ylabel = " sin(x / a) " ,
label = " a = $a " ,
)
# ╔═╡ 62a4765d-d426-442d-92c2-44efb389c7a9
md """
Plotting to be continued 😉
"""
2022-03-29 04:22:53 +02:00
# ╔═╡ 00000000-0000-0000-0000-000000000001
PLUTO_PROJECT_TOML_CONTENTS = """
[ deps ]
Plots = " 91a5bcdd-55d7-5caf-9e0b-520d859cae80 "
PlutoUI = " 7f904dfe-b85e-4ff6-b463-dae2292396a8 "
[ compat ]
2024-05-15 02:18:58 +02:00
Plots = " ~1.40.4 "
PlutoUI = " ~0.7.59 "
2022-03-29 04:22:53 +02:00
"""
# ╔═╡ 00000000-0000-0000-0000-000000000002
PLUTO_MANIFEST_TOML_CONTENTS = """
# This file is machine-generated - editing it directly is not advised
2024-05-15 02:18:58 +02:00
julia_version = " 1.10.3 "
2022-03-29 04:22:53 +02:00
manifest_format = " 2.0 "
2024-05-15 02:18:58 +02:00
project_hash = " 6b5e71cfbbdab042913b245e0240323634276cd7 "
2022-03-29 04:22:53 +02:00
[ [ deps . AbstractPlutoDingetjes ] ]
deps = [ " Pkg " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a "
2022-03-29 04:22:53 +02:00
uuid = " 6e696c72-6542-2067-7265-42206c756150 "
2024-05-15 02:18:58 +02:00
version = " 1.3.2 "
2022-03-29 04:22:53 +02:00
[ [ deps . ArgTools ] ]
uuid = " 0dad84c5-d112-42e6-8d28-ef12dabb789f "
2024-05-15 02:18:58 +02:00
version = " 1.1.1 "
2022-03-29 04:22:53 +02:00
[ [ deps . Artifacts ] ]
uuid = " 56f22d72-fd6d-98f1-02f0-08ddc0907c33 "
[ [ deps . Base64 ] ]
uuid = " 2a0f44e3-6c83-55bd-87e4-b1978d98bd5f "
2024-05-15 02:18:58 +02:00
[ [ deps . BitFlags ] ]
git - tree - sha1 = " 2dc09997850d68179b69dafb58ae806167a32b1b "
uuid = " d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35 "
version = " 0.1.8 "
2022-03-29 04:22:53 +02:00
[ [ deps . Bzip2_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Pkg " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 9e2a6b69137e6969bab0152632dcb3bc108c8bdd "
2022-03-29 04:22:53 +02:00
uuid = " 6e34b625-4abd-537c-b88f-471c36dfa7a0 "
2024-05-15 02:18:58 +02:00
version = " 1.0.8+1 "
2022-03-29 04:22:53 +02:00
[ [ deps . Cairo_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Bzip2_jll " , " CompilerSupportLibraries_jll " , " Fontconfig_jll " , " FreeType2_jll " , " Glib_jll " , " JLLWrappers " , " LZO_jll " , " Libdl " , " Pixman_jll " , " Xorg_libXext_jll " , " Xorg_libXrender_jll " , " Zlib_jll " , " libpng_jll " ]
git - tree - sha1 = " a4c43f59baa34011e303e76f5c8c91bf58415aaf "
2022-03-29 04:22:53 +02:00
uuid = " 83423d85-b0ee-5818-9007-b63ccbeb887a "
2024-05-15 02:18:58 +02:00
version = " 1.18.0+1 "
2022-03-29 04:22:53 +02:00
2024-05-15 02:18:58 +02:00
[ [ deps . CodecZlib ] ]
deps = [ " TranscodingStreams " , " Zlib_jll " ]
git - tree - sha1 = " 59939d8a997469ee05c4b4944560a820f9ba0d73 "
uuid = " 944b1d66-785c-5afd-91f1-9de20f533193 "
version = " 0.7.4 "
2022-03-29 04:22:53 +02:00
[ [ deps . ColorSchemes ] ]
2024-05-15 02:18:58 +02:00
deps = [ " ColorTypes " , " ColorVectorSpace " , " Colors " , " FixedPointNumbers " , " PrecompileTools " , " Random " ]
git - tree - sha1 = " 4b270d6465eb21ae89b732182c20dc165f8bf9f2 "
2022-03-29 04:22:53 +02:00
uuid = " 35d6a980-a343-548e-a6ea-1d62b119f2f4 "
2024-05-15 02:18:58 +02:00
version = " 3.25.0 "
2022-03-29 04:22:53 +02:00
[ [ deps . ColorTypes ] ]
deps = [ " FixedPointNumbers " , " Random " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " b10d0b65641d57b8b4d5e234446582de5047050d "
2022-03-29 04:22:53 +02:00
uuid = " 3da002f7-5984-5a60-b8a6-cbb66c0b333f "
2024-05-15 02:18:58 +02:00
version = " 0.11.5 "
[ [ deps . ColorVectorSpace ] ]
deps = [ " ColorTypes " , " FixedPointNumbers " , " LinearAlgebra " , " Requires " , " Statistics " , " TensorCore " ]
git - tree - sha1 = " a1f44953f2382ebb937d60dafbe2deea4bd23249 "
uuid = " c3611d14-8923-5661-9e6a-0046d554d3a4 "
version = " 0.10.0 "
[ deps . ColorVectorSpace . extensions ]
SpecialFunctionsExt = " SpecialFunctions "
[ deps . ColorVectorSpace . weakdeps ]
SpecialFunctions = " 276daf66-3868-5448-9aa4-cd146d93841b "
2022-03-29 04:22:53 +02:00
[ [ deps . Colors ] ]
deps = [ " ColorTypes " , " FixedPointNumbers " , " Reexport " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 362a287c3aa50601b0bc359053d5c2468f0e7ce0 "
2022-03-29 04:22:53 +02:00
uuid = " 5ae59095-9a9b-59fe-a467-6f913c188581 "
2024-05-15 02:18:58 +02:00
version = " 0.12.11 "
2022-03-29 04:22:53 +02:00
[ [ deps . Compat ] ]
2024-05-15 02:18:58 +02:00
deps = [ " TOML " , " UUIDs " ]
git - tree - sha1 = " b1c55339b7c6c350ee89f2c1604299660525b248 "
2022-03-29 04:22:53 +02:00
uuid = " 34da2185-b29b-5c13-b0c7-acf172513d20 "
2024-05-15 02:18:58 +02:00
version = " 4.15.0 "
weakdeps = [ " Dates " , " LinearAlgebra " ]
[ deps . Compat . extensions ]
CompatLinearAlgebraExt = " LinearAlgebra "
2022-03-29 04:22:53 +02:00
[ [ deps . CompilerSupportLibraries_jll ] ]
deps = [ " Artifacts " , " Libdl " ]
uuid = " e66e0078-7015-5450-92f7-15fbd957f2ae "
2024-05-15 02:18:58 +02:00
version = " 1.1.1+0 "
[ [ deps . ConcurrentUtilities ] ]
deps = [ " Serialization " , " Sockets " ]
git - tree - sha1 = " 6cbbd4d241d7e6579ab354737f4dd95ca43946e1 "
uuid = " f0e56b4a-5159-44fe-b623-3e5288b988bb "
version = " 2.4.1 "
2022-03-29 04:22:53 +02:00
[ [ deps . Contour ] ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 439e35b0b36e2e5881738abc8857bd92ad6ff9a8 "
2022-03-29 04:22:53 +02:00
uuid = " d38c429a-6771-53c6-b99e-75d170b6e991 "
2024-05-15 02:18:58 +02:00
version = " 0.6.3 "
2022-03-29 04:22:53 +02:00
[ [ deps . DataAPI ] ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " abe83f3a2f1b857aac70ef8b269080af17764bbe "
2022-03-29 04:22:53 +02:00
uuid = " 9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a "
2024-05-15 02:18:58 +02:00
version = " 1.16.0 "
2022-03-29 04:22:53 +02:00
[ [ deps . DataStructures ] ]
deps = [ " Compat " , " InteractiveUtils " , " OrderedCollections " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 1d0a14036acb104d9e89698bd408f63ab58cdc82 "
2022-03-29 04:22:53 +02:00
uuid = " 864edb3b-99cc-5e75-8d2d-829cb0a9cfe8 "
2024-05-15 02:18:58 +02:00
version = " 0.18.20 "
2022-03-29 04:22:53 +02:00
[ [ deps . Dates ] ]
deps = [ " Printf " ]
uuid = " ade2ca70-3891-5945-98fb-dc099432e06a "
[ [ deps . DelimitedFiles ] ]
deps = [ " Mmap " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 9e2f36d3c96a820c678f2f1f1782582fcf685bae "
2022-03-29 04:22:53 +02:00
uuid = " 8bb1440f-4735-579b-a4ab-409b98df4dab "
2024-05-15 02:18:58 +02:00
version = " 1.9.1 "
2022-03-29 04:22:53 +02:00
[ [ deps . DocStringExtensions ] ]
deps = [ " LibGit2 " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 2fb1e02f2b635d0845df5d7c167fec4dd739b00d "
2022-03-29 04:22:53 +02:00
uuid = " ffbed154-4ef7-542d-bbb7-c09d3a79fcae "
2024-05-15 02:18:58 +02:00
version = " 0.9.3 "
2022-03-29 04:22:53 +02:00
[ [ deps . Downloads ] ]
2024-05-15 02:18:58 +02:00
deps = [ " ArgTools " , " FileWatching " , " LibCURL " , " NetworkOptions " ]
2022-03-29 04:22:53 +02:00
uuid = " f43a241f-c20a-4ad4-852c-f6b1247861c6 "
2024-05-15 02:18:58 +02:00
version = " 1.6.0 "
2022-03-29 04:22:53 +02:00
2024-05-15 02:18:58 +02:00
[ [ deps . EpollShim_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " 8e9441ee83492030ace98f9789a654a6d0b1f643 "
uuid = " 2702e6a9-849d-5ed8-8c21-79e8b8f9ee43 "
version = " 0.0.20230411+0 "
[ [ deps . ExceptionUnwrapping ] ]
deps = [ " Test " ]
git - tree - sha1 = " dcb08a0d93ec0b1cdc4af184b26b591e9695423a "
uuid = " 460bff9d-24e4-43bc-9d9f-a8973cb893f4 "
version = " 0.1.10 "
2022-03-29 04:22:53 +02:00
[ [ deps . Expat_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " 1c6317308b9dc757616f0b5cb379db10494443a7 "
2022-03-29 04:22:53 +02:00
uuid = " 2e619515-83b5-522b-bb60-26c02a35a201 "
2024-05-15 02:18:58 +02:00
version = " 2.6.2+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . FFMPEG ] ]
deps = [ " FFMPEG_jll " ]
git - tree - sha1 = " b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8 "
uuid = " c87230d0-a227-11e9-1b43-d7ebe4e7570a "
version = " 0.4.1 "
[ [ deps . FFMPEG_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Bzip2_jll " , " FreeType2_jll " , " FriBidi_jll " , " JLLWrappers " , " LAME_jll " , " Libdl " , " Ogg_jll " , " OpenSSL_jll " , " Opus_jll " , " PCRE2_jll " , " Zlib_jll " , " libaom_jll " , " libass_jll " , " libfdk_aac_jll " , " libvorbis_jll " , " x264_jll " , " x265_jll " ]
git - tree - sha1 = " 466d45dc38e15794ec7d5d63ec03d776a9aff36e "
2022-03-29 04:22:53 +02:00
uuid = " b22a6f82-2f65-5046-a5b2-351ab43fb4e5 "
2024-05-15 02:18:58 +02:00
version = " 4.4.4+1 "
[ [ deps . FileWatching ] ]
uuid = " 7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee "
2022-03-29 04:22:53 +02:00
[ [ deps . FixedPointNumbers ] ]
deps = [ " Statistics " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 05882d6995ae5c12bb5f36dd2ed3f61c98cbb172 "
2022-03-29 04:22:53 +02:00
uuid = " 53c48c17-4a7d-5ca2-90c5-79b7896eea93 "
2024-05-15 02:18:58 +02:00
version = " 0.8.5 "
2022-03-29 04:22:53 +02:00
[ [ deps . Fontconfig_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Bzip2_jll " , " Expat_jll " , " FreeType2_jll " , " JLLWrappers " , " Libdl " , " Libuuid_jll " , " Zlib_jll " ]
git - tree - sha1 = " db16beca600632c95fc8aca29890d83788dd8b23 "
2022-03-29 04:22:53 +02:00
uuid = " a3f928ae-7b40-5064-980b-68af3947d34b "
2024-05-15 02:18:58 +02:00
version = " 2.13.96+0 "
2022-03-29 04:22:53 +02:00
2024-05-15 02:18:58 +02:00
[ [ deps . Format ] ]
git - tree - sha1 = " 9c68794ef81b08086aeb32eeaf33531668d5f5fc "
uuid = " 1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8 "
version = " 1.3.7 "
2022-03-29 04:22:53 +02:00
[ [ deps . FreeType2_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Bzip2_jll " , " JLLWrappers " , " Libdl " , " Zlib_jll " ]
git - tree - sha1 = " d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0 "
2022-03-29 04:22:53 +02:00
uuid = " d7e528f0-a631-5988-bf34-fe36492bcfd7 "
2024-05-15 02:18:58 +02:00
version = " 2.13.1+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . FriBidi_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " 1ed150b39aebcc805c26b93a8d0122c940f64ce2 "
2022-03-29 04:22:53 +02:00
uuid = " 559328eb-81f9-559d-9380-de523a88c83c "
2024-05-15 02:18:58 +02:00
version = " 1.0.14+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . GLFW_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Libglvnd_jll " , " Xorg_libXcursor_jll " , " Xorg_libXi_jll " , " Xorg_libXinerama_jll " , " Xorg_libXrandr_jll " ]
git - tree - sha1 = " ff38ba61beff76b8f4acad8ab0c97ef73bb670cb "
2022-03-29 04:22:53 +02:00
uuid = " 0656b61e-2033-5cc2-a64a-77c0f6c09b89 "
2024-05-15 02:18:58 +02:00
version = " 3.3.9+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . GR ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Base64 " , " DelimitedFiles " , " Downloads " , " GR_jll " , " HTTP " , " JSON " , " Libdl " , " LinearAlgebra " , " Preferences " , " Printf " , " Random " , " Serialization " , " Sockets " , " TOML " , " Tar " , " Test " , " p7zip_jll " ]
git - tree - sha1 = " ddda044ca260ee324c5fc07edb6d7cf3f0b9c350 "
2022-03-29 04:22:53 +02:00
uuid = " 28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71 "
2024-05-15 02:18:58 +02:00
version = " 0.73.5 "
2022-03-29 04:22:53 +02:00
[ [ deps . GR_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Bzip2_jll " , " Cairo_jll " , " FFMPEG_jll " , " Fontconfig_jll " , " FreeType2_jll " , " GLFW_jll " , " JLLWrappers " , " JpegTurbo_jll " , " Libdl " , " Libtiff_jll " , " Pixman_jll " , " Qt6Base_jll " , " Zlib_jll " , " libpng_jll " ]
git - tree - sha1 = " 278e5e0f820178e8a26df3184fcb2280717c79b1 "
2022-03-29 04:22:53 +02:00
uuid = " d2c73de3-f751-5644-a686-071e5b155ba9 "
2024-05-15 02:18:58 +02:00
version = " 0.73.5+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Gettext_jll ] ]
deps = [ " Artifacts " , " CompilerSupportLibraries_jll " , " JLLWrappers " , " Libdl " , " Libiconv_jll " , " Pkg " , " XML2_jll " ]
git - tree - sha1 = " 9b02998aba7bf074d14de89f9d37ca24a1a0b046 "
uuid = " 78b55507-aeef-58d4-861c-77aaff3498b1 "
version = " 0.21.0+0 "
[ [ deps . Glib_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Gettext_jll " , " JLLWrappers " , " Libdl " , " Libffi_jll " , " Libiconv_jll " , " Libmount_jll " , " PCRE2_jll " , " Zlib_jll " ]
git - tree - sha1 = " 7c82e6a6cd34e9d935e9aa4051b66c6ff3af59ba "
2022-03-29 04:22:53 +02:00
uuid = " 7746bdde-850d-59dc-9ae8-88ece973131d "
2024-05-15 02:18:58 +02:00
version = " 2.80.2+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Graphite2_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Pkg " ]
git - tree - sha1 = " 344bf40dcab1073aca04aa0df4fb092f920e4011 "
uuid = " 3b182d85-2403-5c21-9c21-1e1f0cc25472 "
version = " 1.3.14+0 "
[ [ deps . Grisu ] ]
git - tree - sha1 = " 53bb909d1151e57e2484c3d1b53e19552b887fb2 "
uuid = " 42e2da0e-8278-4e71-bc24-59509adca0fe "
version = " 1.0.2 "
[ [ deps . HTTP ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Base64 " , " CodecZlib " , " ConcurrentUtilities " , " Dates " , " ExceptionUnwrapping " , " Logging " , " LoggingExtras " , " MbedTLS " , " NetworkOptions " , " OpenSSL " , " Random " , " SimpleBufferStream " , " Sockets " , " URIs " , " UUIDs " ]
git - tree - sha1 = " d1d712be3164d61d1fb98e7ce9bcbc6cc06b45ed "
2022-03-29 04:22:53 +02:00
uuid = " cd3eb016-35fb-5094-929b-558a96fad6f3 "
2024-05-15 02:18:58 +02:00
version = " 1.10.8 "
2022-03-29 04:22:53 +02:00
[ [ deps . HarfBuzz_jll ] ]
deps = [ " Artifacts " , " Cairo_jll " , " Fontconfig_jll " , " FreeType2_jll " , " Glib_jll " , " Graphite2_jll " , " JLLWrappers " , " Libdl " , " Libffi_jll " , " Pkg " ]
git - tree - sha1 = " 129acf094d168394e80ee1dc4bc06ec835e510a3 "
uuid = " 2e76f6c2-a576-52d4-95c1-20adfe4de566 "
version = " 2.8.1+1 "
[ [ deps . Hyperscript ] ]
deps = [ " Test " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 179267cfa5e712760cd43dcae385d7ea90cc25a4 "
2022-03-29 04:22:53 +02:00
uuid = " 47d2ed2b-36de-50cf-bf87-49c2cf4b8b91 "
2024-05-15 02:18:58 +02:00
version = " 0.0.5 "
2022-03-29 04:22:53 +02:00
[ [ deps . HypertextLiteral ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Tricks " ]
git - tree - sha1 = " 7134810b1afce04bbc1045ca1985fbe81ce17653 "
2022-03-29 04:22:53 +02:00
uuid = " ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2 "
2024-05-15 02:18:58 +02:00
version = " 0.9.5 "
2022-03-29 04:22:53 +02:00
[ [ deps . IOCapture ] ]
deps = [ " Logging " , " Random " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 8b72179abc660bfab5e28472e019392b97d0985c "
2022-03-29 04:22:53 +02:00
uuid = " b5f81e59-6552-4d32-b1f0-c071b021bf89 "
2024-05-15 02:18:58 +02:00
version = " 0.2.4 "
2022-03-29 04:22:53 +02:00
[ [ deps . InteractiveUtils ] ]
deps = [ " Markdown " ]
uuid = " b77e0a4c-d291-57a0-90e8-8db25a27a240 "
[ [ deps . IrrationalConstants ] ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 630b497eafcc20001bba38a4651b327dcfc491d2 "
2022-03-29 04:22:53 +02:00
uuid = " 92d709cd-6900-40b7-9082-c6be49f344b6 "
2024-05-15 02:18:58 +02:00
version = " 0.2.2 "
2022-03-29 04:22:53 +02:00
2024-05-15 02:18:58 +02:00
[ [ deps . JLFzf ] ]
deps = [ " Pipe " , " REPL " , " Random " , " fzf_jll " ]
git - tree - sha1 = " a53ebe394b71470c7f97c2e7e170d51df21b17af "
uuid = " 1019f520-868f-41f5-a6de-eb00f4b6a39c "
version = " 0.1.7 "
2022-03-29 04:22:53 +02:00
[ [ deps . JLLWrappers ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " Preferences " ]
git - tree - sha1 = " 7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca "
2022-03-29 04:22:53 +02:00
uuid = " 692b3bcd-3c85-4b1f-b108-f13ce0eb3210 "
2024-05-15 02:18:58 +02:00
version = " 1.5.0 "
2022-03-29 04:22:53 +02:00
[ [ deps . JSON ] ]
deps = [ " Dates " , " Mmap " , " Parsers " , " Unicode " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a "
2022-03-29 04:22:53 +02:00
uuid = " 682c06a0-de6a-54ab-a142-c8b1cf79cde6 "
2024-05-15 02:18:58 +02:00
version = " 0.21.4 "
2022-03-29 04:22:53 +02:00
[ [ deps . JpegTurbo_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " c84a835e1a09b289ffcd2271bf2a337bbdda6637 "
2022-03-29 04:22:53 +02:00
uuid = " aacddb02-875f-59d6-b918-886e6ef4fbf8 "
2024-05-15 02:18:58 +02:00
version = " 3.0.3+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . LAME_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " 170b660facf5df5de098d866564877e119141cbd "
2022-03-29 04:22:53 +02:00
uuid = " c1c5ebd0-6772-5130-a774-d5fcae4a789d "
2024-05-15 02:18:58 +02:00
version = " 3.100.2+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . LERC_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Pkg " ]
git - tree - sha1 = " bf36f528eec6634efc60d7ec062008f171071434 "
uuid = " 88015f11-f218-50d7-93a8-a6af411a945d "
version = " 3.0.0+1 "
2024-05-15 02:18:58 +02:00
[ [ deps . LLVMOpenMP_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " d986ce2d884d49126836ea94ed5bfb0f12679713 "
uuid = " 1d63c593-3942-5779-bab2-d838dc0a180e "
version = " 15.0.7+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . LZO_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " 70c5da094887fd2cae843b8db33920bac4b6f07d "
2022-03-29 04:22:53 +02:00
uuid = " dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac "
2024-05-15 02:18:58 +02:00
version = " 2.10.2+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . LaTeXStrings ] ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 50901ebc375ed41dbf8058da26f9de442febbbec "
2022-03-29 04:22:53 +02:00
uuid = " b964fa9f-0449-5b57-a5c2-d3ea65f4040f "
2024-05-15 02:18:58 +02:00
version = " 1.3.1 "
2022-03-29 04:22:53 +02:00
[ [ deps . Latexify ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Format " , " InteractiveUtils " , " LaTeXStrings " , " MacroTools " , " Markdown " , " OrderedCollections " , " Requires " ]
git - tree - sha1 = " e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4 "
2022-03-29 04:22:53 +02:00
uuid = " 23fbe1c1-3f47-55db-b15f-69d7ec21a316 "
2024-05-15 02:18:58 +02:00
version = " 0.16.3 "
[ deps . Latexify . extensions ]
DataFramesExt = " DataFrames "
SymEngineExt = " SymEngine "
[ deps . Latexify . weakdeps ]
DataFrames = " a93c6f00-e57d-5684-b7b6-d8193f3e46c0 "
SymEngine = " 123dc426-2d89-5057-bbad-38513e3affd8 "
2022-03-29 04:22:53 +02:00
[ [ deps . LibCURL ] ]
deps = [ " LibCURL_jll " , " MozillaCACerts_jll " ]
uuid = " b27032c2-a3e7-50c8-80cd-2d36dbcbfd21 "
2024-05-15 02:18:58 +02:00
version = " 0.6.4 "
2022-03-29 04:22:53 +02:00
[ [ deps . LibCURL_jll ] ]
deps = [ " Artifacts " , " LibSSH2_jll " , " Libdl " , " MbedTLS_jll " , " Zlib_jll " , " nghttp2_jll " ]
uuid = " deac9b47-8bc7-5906-a0fe-35ac56dc84c0 "
2024-05-15 02:18:58 +02:00
version = " 8.4.0+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . LibGit2 ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Base64 " , " LibGit2_jll " , " NetworkOptions " , " Printf " , " SHA " ]
2022-03-29 04:22:53 +02:00
uuid = " 76f85450-5226-5b5a-8eaa-529ad045b433 "
2024-05-15 02:18:58 +02:00
[ [ deps . LibGit2_jll ] ]
deps = [ " Artifacts " , " LibSSH2_jll " , " Libdl " , " MbedTLS_jll " ]
uuid = " e37daf67-58a4-590a-8e99-b0245dd2ffc5 "
version = " 1.6.4+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . LibSSH2_jll ] ]
deps = [ " Artifacts " , " Libdl " , " MbedTLS_jll " ]
uuid = " 29816b5a-b9ab-546f-933c-edad1886dfa8 "
2024-05-15 02:18:58 +02:00
version = " 1.11.0+1 "
2022-03-29 04:22:53 +02:00
[ [ deps . Libdl ] ]
uuid = " 8f399da3-3557-5675-b5ff-fb832c97cbdb "
[ [ deps . Libffi_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Pkg " ]
git - tree - sha1 = " 0b4a5d71f3e5200a7dff793393e09dfc2d874290 "
uuid = " e9f186c6-92d2-5b65-8a66-fee21dc1b490 "
version = " 3.2.2+1 "
[ [ deps . Libgcrypt_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Libgpg_error_jll " ]
git - tree - sha1 = " 9fd170c4bbfd8b935fdc5f8b7aa33532c991a673 "
2022-03-29 04:22:53 +02:00
uuid = " d4300ac3-e22c-5743-9152-c294e39db1e4 "
2024-05-15 02:18:58 +02:00
version = " 1.8.11+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Libglvnd_jll ] ]
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " , " Pkg " , " Xorg_libX11_jll " , " Xorg_libXext_jll " ]
2024-05-15 02:18:58 +02:00
git - tree - sha1 = " 6f73d1dd803986947b2c750138528a999a6c7733 "
2022-03-29 04:22:53 +02:00
uuid = " 7e76a0d4-f3c7-5321-8279-8d96eeed0f29 "
2024-05-15 02:18:58 +02:00
version = " 1.6.0+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Libgpg_error_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " fbb1f2bef882392312feb1ede3615ddc1e9b99ed "
2022-03-29 04:22:53 +02:00
uuid = " 7add5ba3-2f88-524e-9cd5-f83b8a55f7b8 "
2024-05-15 02:18:58 +02:00
version = " 1.49.0+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Libiconv_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " f9557a255370125b405568f9767d6d195822a175 "
2022-03-29 04:22:53 +02:00
uuid = " 94ce4f54-9a6c-5748-9c1c-f9c7231a4531 "
2024-05-15 02:18:58 +02:00
version = " 1.17.0+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Libmount_jll ] ]
2024-05-15 02:18:58 +02:00
deps = [ " Artifacts " , " JLLWrappers " , " Libdl " ]
git - tree - sha1 = " 0c4f9c4f1a50d8f35048fa0532dabbadf702f81e "
2022-03-29 04:22:53 +02:00
uuid = " 4b2f31a3-9ecc-558c-b454-b3730dcb73e9 "
2024-05-15 02:18:58 +02:00
version = " 2.40.1+0 "
2022-03-29 04:22:53 +02:00
[ [ deps . Libtiff_jll ] ]
2024-05-15 02:18:58 +02:00