Skip to content

Commit

Permalink
[skip ci] Updates
Browse files Browse the repository at this point in the history
  • Loading branch information
ci-build committed Feb 11, 2025
1 parent 5aeb1de commit b00b9d5
Show file tree
Hide file tree
Showing 406 changed files with 496,299 additions and 483,654 deletions.
Binary file modified _downloads/029881e221949484b26146d507a804ad/example_depth.zip
Binary file not shown.
Binary file modified _downloads/033af0d93f9b09e836d807ac3b9561f7/example_relative.zip
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,61 +15,7 @@
},
"outputs": [],
"source": [
"import numpy as np\nfrom datetime import timedelta, datetime\nfrom opendrift.readers import reader_schism_native\nfrom opendrift.readers import reader_global_landmask\nfrom opendrift.models.oceandrift import OceanDrift"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## MODEL\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"o = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## READERS\n Creating and adding reader using a native SCHISM netcdf output file\n SCHISM reader\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"reader_landmask = reader_global_landmask.Reader()\n\n# NZTM proj4 string found at https://spatialreference.org/ref/epsg/nzgd2000-new-zealand-transverse-mercator-2000/\nproj4str_nztm = '+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'\nschism_native = reader_schism_native.Reader(\n\tfilename = 'https://thredds.met.no/thredds/dodsC/metusers/knutfd/thredds/netcdf_unstructured_samples/schism_marl20080101_00z_3D.nc',\n\tproj4 = proj4str_nztm,\n\tuse_3d = True)\n# schism_native.plot_mesh(variable = ['sea_floor_depth_below_sea_level']) # check reader was correctly loaded\n\no.add_reader([reader_landmask,schism_native])\no.set_config('general:use_auto_landmask', False) # prevent opendrift from making a new dynamical landmask with global_landmask\n\n# Seed elements at defined positions, depth and time\no.seed_elements(lon=174.046669, lat=-40.928116, radius=20, number=100,\n z=np.linspace(0,-10, 100), time=schism_native.start_time)\n\no.seed_elements(lon= 173.8839, lat=-40.9160, radius=20, number=100,\n z=np.linspace(0,-10, 100), time=schism_native.start_time)\n\no.seed_elements(lon=174.2940, lat=-41.0888, radius=20, number=100,\n z=np.linspace(0,-10, 100), time=schism_native.start_time)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Running model\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"o.run(time_step=900,\n\t end_time = schism_native.start_time+timedelta(days=0.1))\n\t # outfile='schism_native_output.nc')\n\n# Print and plot results\nprint(o)\no.plot(fast=True)\no.animation()\no.animation_profile()"
"import numpy as np\nfrom datetime import timedelta, datetime\nfrom opendrift.readers import reader_schism_native\nfrom opendrift.readers import reader_global_landmask\nfrom opendrift.models.oceandrift import OceanDrift\n\no = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information\n\n\ntry:\n # NZTM proj4 string found at https://spatialreference.org/ref/epsg/nzgd2000-new-zealand-transverse-mercator-2000/\n proj4str_nztm = '+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'\n schism_native = reader_schism_native.Reader(\n filename = 'https://thredds.met.no/thredds/dodsC/metusers/knutfd/thredds/netcdf_unstructured_samples/schism_marl20080101_00z_3D.nc',\n proj4 = proj4str_nztm,\n use_3d = True)\nexcept:\n print('Thredds server not available, cannot run example')\n schism_native = None\n\n\nif schism_native is not None:\n o.add_reader([schism_native])\n o.set_config('general:use_auto_landmask', False) # prevent opendrift from making a new dynamical landmask with global_landmask\n\n # Seed elements at defined positions, depth and time\n o.seed_elements(lon=174.046669, lat=-40.928116, radius=20, number=100,\n z=np.linspace(0,-10, 100), time=schism_native.start_time)\n\n o.seed_elements(lon= 173.8839, lat=-40.9160, radius=20, number=100,\n z=np.linspace(0,-10, 100), time=schism_native.start_time)\n\n o.seed_elements(lon=174.2940, lat=-41.0888, radius=20, number=100,\n z=np.linspace(0,-10, 100), time=schism_native.start_time)\n\n #%%\n # Running model\n o.run(time_step=900,\n end_time = schism_native.start_time+timedelta(days=0.1))\n # outfile='schism_native_output.nc')\n\n # Print and plot results\n print(o)\n o.plot(fast=True)\n o.animation()\n o.animation_profile()"
]
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
},
"outputs": [],
"source": [
"import os\nfrom datetime import timedelta\nfrom opendrift.readers import reader_netCDF_CF_generic\nfrom opendrift.models.openoil import OpenOil\n\n\no = OpenOil(loglevel=20) # Set loglevel to 0 for debug information\n\nncfile = 'oilmixing.nc'\nimport_file = False # Set to True to import previous run\n\nif import_file is True:\n o.io_import_file(ncfile)\nelse:\n reader_arome = reader_netCDF_CF_generic.Reader('https://thredds.met.no/thredds/dodsC/mepslatest/meps_lagged_6_h_latest_2_5km_latest.nc')\n reader_norkyst = reader_netCDF_CF_generic.Reader('https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be')\n\n o.add_reader([reader_norkyst, reader_arome])\n\n # Adjusting some configuration\n #o.set_config('vertical_mixing:diffusivitymodel', 'windspeed_Sundby1983')\n\n # Seed oil elements at defined position and time\n o.seed_elements(lon=4.9, lat=62.1, z=0, radius=1000, number=2000,\n time=reader_arome.start_time)\n\n # Running model\n o.run(end_time=reader_arome.start_time + timedelta(hours=12),\n time_step=900, time_step_output=1800, outfile=ncfile)"
"import os\nfrom datetime import timedelta\nfrom opendrift.readers import reader_netCDF_CF_generic\nfrom opendrift.models.openoil import OpenOil\n\n\no = OpenOil(loglevel=20) # Set loglevel to 0 for debug information\n\nncfile = 'oilmixing.nc'\nimport_file = False # Set to True to import previous run\n\nif import_file is True:\n o.io_import_file(ncfile)\nelse:\n reader_arome = reader_netCDF_CF_generic.Reader('https://thredds.met.no/thredds/dodsC/mepslatest/meps_lagged_6_h_latest_2_5km_latest.nc')\n reader_norkyst = reader_netCDF_CF_generic.Reader('https://thredds.met.no/thredds/dodsC/sea/norkyst800m/1h/aggregate_be')\n\n o.add_reader([reader_norkyst, reader_arome])\n\n # Adjusting some configuration\n #o.set_config('vertical_mixing:diffusivitymodel', 'windspeed_Sundby1983')\n\n # Seed oil elements at defined position and time\n o.seed_elements(lon=4.9, lat=62.1, z=0, radius=1000, number=5000,\n time=reader_arome.start_time, oil_type='GENERIC DIESEL')\n\n # Running model\n o.run(end_time=reader_arome.start_time + timedelta(hours=12),\n time_step=900, time_step_output=1800, outfile=ncfile)"
]
},
{
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified _downloads/1e965db755ac760751848acdb71bc467/example_oil_ice.zip
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# 2. forwards simulation from a uniform grid of possible initial locations, selecting the origins of particles actually hitting the observed target
#
# We use 24 hours from the NorKyst ocean model (800m pixel size) and Arome atmospheric model (2.5km pixel size)
o = Leeway(loglevel=50)
o = Leeway(loglevel=10)
reader_arome = reader_netCDF_CF_generic.Reader(o.test_data_folder() +
'16Nov2015_NorKyst_z_surface/arome_subset_16Nov2015.nc')
reader_norkyst = reader_netCDF_CF_generic.Reader(o.test_data_folder() +
Expand All @@ -47,7 +47,7 @@

#%%
# Simulating first backwards for 24 hours:
o.seed_elements(lon=ilon, lat=ilat, radius=5000, radius_type='uniform', number=30000,
o.seed_elements(lon=ilon, lat=ilat, radius=5000, radius_type='uniform', number=10000,
time=end_time, object_type=object_type)
o.run(duration=duration, time_step=-900, time_step_output=3600, outfile=outfile)
#od = opendrift.open_xarray(outfile)
Expand All @@ -62,7 +62,7 @@

#%%
# Simulating then forwards, starting at a uniform grid 24 hours earlier (440 x 320 = 140800 elements at ~500m separation)
o = Leeway(loglevel=50)
o = Leeway(loglevel=10)
o.add_reader([reader_norkyst, reader_arome])
o.seed_elements(lon=lons, lat=lats, radius=0,
time=start_time, object_type=object_type)
Expand All @@ -71,7 +71,8 @@

#%%
# Finding the elements actually hitting the target (within 5 km) after 24 hours:
lon, lat = o.get_lonlats()
lon = o.result.lon
lat = o.result.lat
lonend = lon[:, -1]
latend = lat[:, -1]
geod = pyproj.Geod(ellps='WGS84')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
#o.set_config('vertical_mixing:diffusivitymodel', 'windspeed_Sundby1983')

# Seed oil elements at defined position and time
o.seed_elements(lon=4.9, lat=62.1, z=0, radius=1000, number=2000,
time=reader_arome.start_time)
o.seed_elements(lon=4.9, lat=62.1, z=0, radius=1000, number=5000,
time=reader_arome.start_time, oil_type='GENERIC DIESEL')

# Running model
o.run(end_time=reader_arome.start_time + timedelta(hours=12),
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified _downloads/2f279a49c6164050f7f6f735325d2c2c/example_plast.zip
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
},
"outputs": [],
"source": [
"radius = 100\nnumber = 100\n \no = OceanDrift(loglevel=20)\no.add_reader([reader_norkyst])\no.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)\no.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)\n\no2 = OceanDrift(loglevel=20)\no2.set_config('drift:max_speed', 10) #Necessary for the moment because of a bug to be solved\no2.add_reader([c, reader_norkyst])\no2.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)\no2.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)\n\no.plot(fast = False, compare=o2, background=['x_sea_water_velocity', 'y_sea_water_velocity'], legend=['Norkyst only', 'Gaussian measurement'], buffer = .023, markersize = 70, linewidth = 1, title = \"\", xlocs = mpl.ticker.MaxNLocator(5), ylocs = mpl.ticker.MaxNLocator(5), clabel = r\"Wind speed $\\mathrm{(m.s^{-1})}$\", cpad = 0.08, text=text)\n\nlon_drifters_1, lat_drifters_1 = o.get_lonlats()\nlon_drifters_2, lat_drifters_2 = o2.get_lonlats()\n\nskillscores = phy.skillscore_liu_weissberg(lon_drifters_1, lat_drifters_1, lon_drifters_2, lat_drifters_2)\n\nplt.figure()\nplt.hist(skillscores, bins = 100, range = (0, 1), facecolor = 'none', edgecolor = 'C0')\nplt.xlabel(\"Skillscore\")\nplt.ylabel(\"Histogram (percentages)\")\nplt.show()\n\nplt.figure()\nplt.hist(skillscores, bins = 100, range = (0.9, 0.95), facecolor = 'none', edgecolor = 'C0')\nplt.xlabel(\"Skillscore\")\nplt.ylabel(\"Histogram (percentages)\")\nplt.show()"
"radius = 100\nnumber = 100\n \no = OceanDrift(loglevel=20)\no.add_reader([reader_norkyst])\no.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)\no.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)\n\no2 = OceanDrift(loglevel=20)\no2.set_config('drift:max_speed', 10) #Necessary for the moment because of a bug to be solved\no2.add_reader([c, reader_norkyst])\no2.seed_elements(lon=lon, lat=lat, radius=radius, number=number, time=time_start, wind_drift_factor=wind_drift_factor)\no2.run(end_time=time_end, time_step=time_step, time_step_output=time_step_output)\n\no.plot(fast = False, compare=o2, background=['x_sea_water_velocity', 'y_sea_water_velocity'], legend=['Norkyst only', 'Gaussian measurement'], buffer = .023, markersize = 70, linewidth = 1, title = \"\", xlocs = mpl.ticker.MaxNLocator(5), ylocs = mpl.ticker.MaxNLocator(5), clabel = r\"Wind speed $\\mathrm{(m.s^{-1})}$\", cpad = 0.08, text=text)\n\nskillscores = phy.skillscore_liu_weissberg(o.result.lon, o.result.lat, o2.result.lon, o2.result.lat)\n\nplt.figure()\nplt.hist(skillscores, bins = 100, range = (0, 1), facecolor = 'none', edgecolor = 'C0')\nplt.xlabel(\"Skillscore\")\nplt.ylabel(\"Histogram (percentages)\")\nplt.show()\n\nplt.figure()\nplt.hist(skillscores, bins = 100, range = (0.9, 0.95), facecolor = 'none', edgecolor = 'C0')\nplt.xlabel(\"Skillscore\")\nplt.ylabel(\"Histogram (percentages)\")\nplt.show()"
]
}
],
Expand Down
Binary file modified _downloads/36debc3f4a32a890e68397fb8f9a3de4/example_grid.zip
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
},
"outputs": [],
"source": [
"print('Final speciation:')\nfor isp,sp in enumerate(o.name_species):\n print ('{:32}: {:>6}'.format(sp,sum(o.elements.specie==isp)))\n\nprint('Number of transformations:')\nfor isp in range(o.nspecies):\n print('{}'.format(['{:>9}'.format(np.int32(item)) for item in o.ntransformations[isp,:]]) )\n\nmass = o.get_property('mass')\nmass_d = o.get_property('mass_degraded')\nmass_v = o.get_property('mass_volatilized')\n\nm_pre = sum(mass[0][-1])\nm_deg = sum(mass_d[0][-1])\nm_vol = sum(mass_v[0][-1])\nm_tot = m_pre + m_deg + m_vol\n\nprint('Mass budget for target chemical:')\nprint('mass preserved : {:.3f}'.format(m_pre * 1e-6),' g {:.3f}'.format(m_pre/m_tot*100),'%')\nprint('mass degraded : {:.3f}'.format(m_deg * 1e-6),' g {:.3f}'.format(m_deg/m_tot*100),'%')\nprint('mass volatilized : {:.3f}'.format(m_vol * 1e-6),' g {:.3f}'.format(m_vol/m_tot*100),'%')\n\nlegend=['dissolved', '', 'SPM', 'sediment', '']\n\no.animation_profile(color='specie',\n markersize='mass',\n markersize_scaling=30,\n alpha=.5,\n vmin=0,vmax=o.nspecies-1,\n legend = legend,\n legend_loc = 3,\n fps = 10\n )"
"print('Final speciation:')\nfor isp,sp in enumerate(o.name_species):\n print ('{:32}: {:>6}'.format(sp,sum(o.elements.specie==isp)))\n\nprint('Number of transformations:')\nfor isp in range(o.nspecies):\n print('{}'.format(['{:>9}'.format(np.int32(item)) for item in o.ntransformations[isp,:]]) )\n\nm_pre = o.result.mass.isel(time=-1).sum()\nm_deg = o.result.mass_degraded.isel(time=-1).sum()\nm_vol = o.result.mass_volatilized.isel(time=-1).sum()\nm_tot = m_pre + m_deg + m_vol\n\nprint('Mass budget for target chemical:')\nprint('mass preserved : {:.3f}'.format(m_pre * 1e-6),' g {:.3f}'.format(m_pre/m_tot*100),'%')\nprint('mass degraded : {:.3f}'.format(m_deg * 1e-6),' g {:.3f}'.format(m_deg/m_tot*100),'%')\nprint('mass volatilized : {:.3f}'.format(m_vol * 1e-6),' g {:.3f}'.format(m_vol/m_tot*100),'%')\n\nlegend=['dissolved', '', 'SPM', 'sediment', '']\n\no.animation_profile(color='specie',\n markersize='mass',\n markersize_scaling=30,\n alpha=.5,\n vmin=0,vmax=o.nspecies-1,\n legend = legend,\n legend_loc = 3,\n fps = 10\n )"
]
},
{
Expand Down
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@
},
"outputs": [],
"source": [
"b = o.get_oil_budget()\nimport matplotlib.pyplot as plt\ntime, time_relative = o.get_time_array()\ntime = np.array([t.total_seconds() / 3600. for t in time_relative])\nfig, ax = plt.subplots()\nax.plot(time, b['mass_submerged'], label='Submerged oil mass')\nax.plot(time, b['mass_surface'], label='Surface oil mass')\nax.plot(time, b['mass_biodegraded'], label='Biodegraded oil mass')\nax.set_title(f'{o.get_oil_name()}, {b[\"oil_density\"].max():.2f} kg/m3')\nplt.legend()\nplt.xlabel('Time [hours]')\nplt.ylabel('Mass oil [kg]')\nplt.show()"
"b = o.get_oil_budget()\nimport matplotlib.pyplot as plt\ntime = (o.result.time-o.result.time[0]).dt.total_seconds()/3600 # Hours since start\nfig, ax = plt.subplots()\nax.plot(time, b['mass_submerged'], label='Submerged oil mass')\nax.plot(time, b['mass_surface'], label='Surface oil mass')\nax.plot(time, b['mass_biodegraded'], label='Biodegraded oil mass')\nax.set_title(f'{o.get_oil_name()}, {b[\"oil_density\"].max():.2f} kg/m3')\nplt.legend()\nplt.xlabel('Time [hours]')\nplt.ylabel('Mass oil [kg]')\nplt.show()"
]
},
{
Expand Down
Binary file not shown.
Binary file not shown.
Binary file modified _downloads/455f4a0d6f55d57bec7b1548941dfe56/example_plot.zip
Binary file not shown.
Binary file modified _downloads/46b4cb42d5bb56cc39e2b5b2b520b38d/gallery_python.zip
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified _downloads/540eb5641f8ad1d8bbba63da7a6f1b55/example_openberg.zip
Binary file not shown.
Binary file not shown.
Binary file modified _downloads/55c56f11981bc8994b23dd67ccffd4ea/example_larvae.zip
Binary file not shown.
Binary file not shown.
Binary file modified _downloads/57d7c3a68ca90906235269c0c377050a/example_compare.zip
Binary file not shown.
67 changes: 1 addition & 66 deletions _downloads/5b1fee5ef5de914da20853ebfde0ca4b/example_fvcom.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -15,61 +15,7 @@
},
"outputs": [],
"source": [
"from datetime import timedelta\nimport urllib.request as urllib_request\nimport numpy as np\nfrom opendrift.readers import reader_netCDF_CF_unstructured\nfrom opendrift.readers import reader_global_landmask\nfrom opendrift.models.oceandrift import OceanDrift\n\no = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information\n\nproj = \"+proj=utm +zone=33 +north +ellps=WGS84 +datum=WGS84 +units=m +no_defs\"\nfvcom = reader_netCDF_CF_unstructured.Reader(filename = 'https://thredds.met.no/thredds/dodsC/metusers/knutfd/thredds/netcdf_unstructured_samples/AkvaplanNiva_sample_lonlat_fixed.nc', proj4 = proj)\no.add_reader(fvcom)\nprint(fvcom)\n\n# Seed elements at defined positions, depth and time\nN = 1000\nz = -10*np.random.uniform(0, 1, N)\no.seed_elements(lon=18.0, lat=69.8, radius=2000, number=N,\n z=z, time=fvcom.start_time)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Running model\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"o.run(time_step=1800, duration=timedelta(hours=12))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Print and plot results\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"print(o)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Animation (current as background not yet working).\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"o.animation(color='z')"
"from datetime import timedelta\nimport urllib.request as urllib_request\nimport numpy as np\nfrom opendrift.readers import reader_netCDF_CF_unstructured\nfrom opendrift.readers import reader_global_landmask\nfrom opendrift.models.oceandrift import OceanDrift\n\no = OceanDrift(loglevel=20) # Set loglevel to 0 for debug information\n\ntry:\n proj = \"+proj=utm +zone=33 +north +ellps=WGS84 +datum=WGS84 +units=m +no_defs\"\n fvcom = reader_netCDF_CF_unstructured.Reader(filename = 'https://thredds.met.no/thredds/dodsC/metusers/knutfd/thredds/netcdf_unstructured_samples/AkvaplanNiva_sample_lonlat_fixed.nc', proj4 = proj)\n o.add_reader(fvcom)\n print(fvcom)\nexcept:\n print('Thredds server not available, cannot run example')\n fvcom = None\n\nif fvcom is not None:\n # Seed elements at defined positions, depth and time\n N = 1000\n z = -10*np.random.uniform(0, 1, N)\n o.seed_elements(lon=18.0, lat=69.8, radius=2000, number=N,\n z=z, time=fvcom.start_time)\n\n #%%\n # Running model\n o.run(time_step=1800, duration=timedelta(hours=12))\n\n #%%\n # Print and plot results\n print(o)\n\n #%%\n # Animation (current as background not yet working).\n o.animation(color='z')\n\n o.plot(fast=True, buffer = 1.)"
]
},
{
Expand All @@ -78,17 +24,6 @@
"source": [
"<img src=\"file://gallery/animations/example_fvcom_0.gif\">\n\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"o.plot(fast=True, buffer = 1.)"
]
}
],
"metadata": {
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading

0 comments on commit b00b9d5

Please sign in to comment.