Skip to content

Commit

Permalink
New features in rules: applying filters and applying replacement valu…
Browse files Browse the repository at this point in the history
…e for DBNull
  • Loading branch information
SiebeBosch committed Nov 14, 2024
1 parent 89970fa commit 46a9902
Show file tree
Hide file tree
Showing 78 changed files with 5,258 additions and 5,724 deletions.
44 changes: 25 additions & 19 deletions Documentatie/_quarto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,48 @@ project:

website:
title: "Klimaatatlas"
search: true
navbar:
left:
- index.qmd
sidebar:
logo: img/rijnland_logo.jpg
logo-href: https://www.rijnland.net
- text: "Handleiding"
href: handleiding.qmd
- text: "Implementatie Rijnland"
href: rijnland.qmd

sidebar:

style: "docked"
search: true
collapse-level: 1
contents:
- section: "Tutorial"
contents:
- section: "Gebruikershandleiding"
- section: "Gebruikshandleiding"
collapse: true
contents:
- href: gebruikershandleiding/installatie.qmd
- href: gebruikshandleiding/installatie.qmd
text: "Klimaatatlas installeren"
- href: gebruikershandleiding/basisgebruik.qmd
- href: gebruikshandleiding/basisgebruik.qmd
text: "Basisgebruik"
- section: "Risicofactoren"
contents:
- href: risicofactoren/inleiding.qmd
text: "Inleiding"
- href: risicofactoren/biomassa.qmd
text: "Biomassa"
- section: "Technische documentatie"
- section: "Technisch"
collapse: true
contents:
- href: technische_documentatie/configuratiebestand.qmd
text: "Configuratiebestand"
- section: "voorbewerkingen"
- section: "Voorbewerkingen"
collapse: true
contents:
- href: voorbewerkingen/sobek.qmd
text: "SOBEK exporteren"
- section: "Nabewerkingen"
collapse: true
contents:
- href: nabewerkingen/arcgis_online.qmd
text: "ArcGIS online"

- section: "Implementatie Rijnland"
collapse: true
contents:
- href: rijnland.qmd
text: "Inleiding"
- href: rijnland/biomassa.qmd
text: "Biomassa"

format:
html:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ format: html

## Stappenplan

Het installatiebestand van Klimaatatlas versie 1.2.0, inclusief voorbeeldbestanden, vindt u <a href="https://www.dropbox.com/scl/fi/96cz0e10j3xoodfcyyzif/KlimaatatlasSetup-v1.2.0-x64.zip?rlkey=4dvc8u8ws2c3rhb1qm4dgj2wu&dl=0>hier</a>.

U installeert het programma door het bestand KlimaatatlasSetup-[versienummer]-x64.exe te starten.
Het installatiebestand van Klimaatatlas versie 1.2.0, inclusief voorbeeldbestanden, vindt u [hier](https://www.dropbox.com/scl/fi/96cz0e10j3xoodfcyyzif/KlimaatatlasSetup-v1.2.0-x64.zip?rlkey=4dvc8u8ws2c3rhb1qm4dgj2wu&dl=0).
Pak het .zip-bestand uit en installeer het programma door het bestand KlimaatatlasSetup-[versienummer]-x64.exe te starten.

volg de instructies:

Expand Down Expand Up @@ -40,16 +39,6 @@ volg de instructies:
:::
:::

::: {.columns}
::: {.column width="50%"}
* neem kennis van de locatie waar het programma wordt geïnstalleerd en klik op 'installeren'
:::
::: {.column width="50%"}
![Kennis nemen van de installatielocatie.](img/frm_installatiemap.png)
:::
:::


::: {.columns}
::: {.column width="50%"}
* als de installatie compleet is hebt u de optie om het programma automatisch te starten.
Expand Down
50 changes: 50 additions & 0 deletions Documentatie/handleiding.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: "Handleiding"
author: "Siebe Bosch"
date: "`r Sys.Date()`" # This will print the current date
format: html
---

## Inleiding

De klimaatatlas werd ontwikkeld in opdracht van het Hoogheemraadschap van Rijnland.
Het programma is ontworpen om te identificeren welke regio's en locaties in het beheergebied gevoelig zijn voor slechte waterkwaliteit.

Denk hierbij aan het risico op:

* drijflagen
* algen
* zuurstofloosheid
* botulisme
* eutrofiëring

## Toepassing
Dit instrument kan worden gebruikt om in te schatten wat de impact is van klimaatverandering op de waterkwaliteit, maar ook om bij ingrepen in het watersysteem, bijvoorbeeld door nieuwbouwprojecten, te bepalen of aanvullende maatregelen nodig zijn om een goede waterkwaliteit te kunnen (blijven) garanderen.
Hiermee sluit het Hoogheemraadschap van Rijnland aan op De Nieuwe Omgevingswet, die op 1 januari 2024 is ingegaan.

## Werkwijze
Invoer is een watervlakkenkaart in Geopackage-formaat.

In een JSON-bestand definieert de gebruiker vervolgens zogeheten 'maatlatten' waarvan het resultaat altijd tussen 0 (geen risico) en 1 (maximaal risico) ligt. Voorbeeld voor een maatlat is de invloed van de watertemperatuur op algengroei. Onder 15 graden celcius is algengroei nihil (waarde 0), bij 27 graden is algengroei maximaal (waarde 1) en boven 27 graden loopt de algengroei weer terug. Bij 35 graden is het risico weer terug op 0.

Enkele voorbeelden van maatlatten voor algengroei:

* waterdiepte: geringe waterdiepte = hoog risico; grote waterdiepte = klein risico
* doodlopendheid watergang: doodlopend = hoog risico; vrij doorstromend = klein risico
* fractie riooloverstort: groot aandeel overstortwater = hoog risico; klein aandeel = klein risico

Voor elke waterkwaliteitsgrootheid kan de gebruiker één of meerdere maatlatten combineren. Iedere maatlat krijgt daarbij zijn eigen weegfactor mee. Bijvoorbeeld: watertemperatuur weegfactor 3; doodlopendheid watergang weegfactor 1.

Het Geopackage-bestand wordt samen met het json-bestand ingevoerd in de desktopapplicatie 'Klimaatatlas'. Het resultaat van de berekening wordt weer weggeschreven naar de geopackage en bestaat voor ieder watervlak en grootheid uit een risicowaarde die altijd tussen 0 en 1 ligt. Dit risico kan op een kaart worden getoond en de totstandkoming van het risicogetal kan altijd worden herleid naar de bijdrage van de individuele maatlatten.


## Architectuur
De software bestaat uit een verzameling aan tools en scripts.
In deze handleiding leggen we de werking ervan uit en werken we een aantal workflows uit waarmee het risico op slechte waterkwaliteit in kaart kan worden gebracht.

* Klimaatatlas: dit is de desktopapplicatie die voor ieder watervlak en waterkwaliteitsgrootheid het risicogetal berekent en wegschrijft
* HydroToolbox: een externe desktopapplicatie van Hydroconsult waarmee waterkwaliteitsresultaten uit SOEK kunnen worden vertaald naar input voor de klimaatatlas.
* Geopackage: een GIS-bestand met watervlakken
* .json-bestand: een tekstbestand waarin de gebruiker de maatlatten definieert. Samen met de geopackage vormt dit bestand de input voor het programma 'Klimaatatlas'.

Het rekenresultaat wordt weer weggeschreven naar de geopackage. Dit bestand kan verder worden gebruikt voor visualisatie, presentatie en analyse.
50 changes: 50 additions & 0 deletions Documentatie/handleiding.qmd backup
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: "Handleiding"
author: "Siebe Bosch"
date: "`r Sys.Date()`" # This will print the current date
format: html
---

## Inleiding

De klimaatatlas werd ontwikkeld in opdracht van het Hoogheemraadschap van Rijnland.
Het programma is ontworpen om te identificeren welke regio's en locaties in het beheergebied gevoelig zijn voor slechte waterkwaliteit.

Denk hierbij aan het risico op:

* drijflagen
* algen
* zuurstofloosheid
* botulisme
* eutrofiëring

## Toepassing
Dit instrument kan worden gebruikt om in te schatten wat de impact is van klimaatverandering op de waterkwaliteit, maar ook om bij ingrepen in het watersysteem, bijvoorbeeld door nieuwbouwprojecten, te bepalen of aanvullende maatregelen nodig zijn om een goede waterkwaliteit te kunnen (blijven) garanderen.
Hiermee sluit het Hoogheemraadschap van Rijnland aan op De Nieuwe Omgevingswet, die op 1 januari 2024 is ingegaan.

## Werkwijze
Invoer is een watervlakkenkaart in Geopackage-formaat.

In een JSON-bestand definieert de gebruiker vervolgens zogeheten 'maatlatten' waarvan het resultaat altijd tussen 0 (geen risico) en 1 (maximaal risico) ligt. Voorbeeld voor een maatlat is de invloed van de watertemperatuur op algengroei. Onder 15 graden celcius is algengroei nihil (waarde 0), bij 27 graden is algengroei maximaal (waarde 1) en boven 27 graden loopt de algengroei weer terug. Bij 35 graden is het risico weer terug op 0.

Enkele voorbeelden van maatlatten voor algengroei:

* waterdiepte: geringe waterdiepte = hoog risico; grote waterdiepte = klein risico
* doodlopendheid watergang: doodlopend = hoog risico; vrij doorstromend = klein risico
* fractie riooloverstort: groot aandeel overstortwater = hoog risico; klein aandeel = klein risico

Voor elke waterkwaliteitsgrootheid kan de gebruiker één of meerdere maatlatten combineren. Iedere maatlat krijgt daarbij zijn eigen weegfactor mee. Bijvoorbeeld: watertemperatuur weegfactor 3; doodlopendheid watergang weegfactor 1.

Het Geopackage-bestand wordt samen met het json-bestand ingevoerd in de desktopapplicatie 'Klimaatatlas'. Het resultaat van de berekening wordt weer weggeschreven naar de geopackage en bestaat voor ieder watervlak en grootheid uit een risicowaarde die altijd tussen 0 en 1 ligt. Dit risico kan op een kaart worden getoond en de totstandkoming van het risicogetal kan altijd worden herleid naar de bijdrage van de individuele maatlatten.


## Architectuur
De software bestaat uit een verzameling aan tools en scripts.
In deze handleiding leggen we de werking ervan uit en werken we een aantal workflows uit waarmee het risico op slechte waterkwaliteit in kaart kan worden gebracht.

* Klimaatatlas: dit is de desktopapplicatie die voor ieder watervlak en waterkwaliteitsgrootheid het risicogetal berekent en wegschrijft
* HydroToolbox: een externe desktopapplicatie van Hydroconsult waarmee waterkwaliteitsresultaten uit SOEK kunnen worden vertaald naar input voor de klimaatatlas.
* Geopackage: een GIS-bestand met watervlakken
* .json-bestand: een tekstbestand waarin de gebruiker de maatlatten definieert. Samen met de geopackage vormt dit bestand de input voor het programma 'Klimaatatlas'.

Het rekenresultaat wordt weer weggeschreven naar de geopackage. Dit bestand kan verder worden gebruikt voor visualisatie, presentatie en analyse.
2 changes: 1 addition & 1 deletion Documentatie/index.qmd
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Klimaatatlas"
title: "Handleiding"
author: "Siebe Bosch"
date: "`r Sys.Date()`" # This will print the current date
format: html
Expand Down
19 changes: 19 additions & 0 deletions Documentatie/rijnland.qmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: "Implementatie Rijnland"
author: "Siebe Bosch"
date: "`r Sys.Date()`" # This will print the current date
format: html
---

## Inleiding

Deze sectie beschrijft hoe het Hoogheemraadschap van Rijnland de klimaatatlas heeft geïmplementeerd.

Het hoogheemraadschap van Rijnland definieert de volgende risicofactoren voor slechte waterkwaliteit:

* biomassa (de hoeveelheid algen in de waterkolom)
* kroos
* zuurstofloosheid

In de volgende hoofstukken werken we elk van deze risicofactoren uit en beschrijven we de maatlatten waarmee het risico-oordeel wordt berekend.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ format: html

## Inleiding

De risicofactor 'biomassa' gaat onder meer over de hoeveelheid algen die de waterkwaliteit kan verslechteren. Deze hoeveelheid biomassa hangt af van allerlei factoren zoals: watertemperatuur en de aanwezigheid van vermestende stoffen. In dit hoofdstuk werken we deze risicofactor uit.
De risicofactor 'biomassa' beschrijft de hoeveelheid algen die zich in de waterkolom kunnen bevinden. Hoe meer algen, hoe slechter de waterkwaliteit.

## Maatlatten

Expand Down
14 changes: 0 additions & 14 deletions Documentatie/risicofactoren/inleiding.qmd

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"RootPath":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas","ProjectFileName":"Klimaatatlas.vbproj","Configuration":"Debug|x64","FrameworkPath":"","Sources":[{"SourceFile":"Classes\\clsBenchmark.vb"},{"SourceFile":"Classes\\clsClassification.vb"},{"SourceFile":"Classes\\clsClassificationClass.vb"},{"SourceFile":"Classes\\clsColorGradient.vb"},{"SourceFile":"Classes\\clsColorScale.vb"},{"SourceFile":"Classes\\clsDataset.vb"},{"SourceFile":"Classes\\clsFeatureValue.vb"},{"SourceFile":"Classes\\clsFilter.vb"},{"SourceFile":"Classes\\clsFlowchart.vb"},{"SourceFile":"Classes\\clsFlowchartConnection.vb"},{"SourceFile":"Classes\\clsFlowchartNode.vb"},{"SourceFile":"Classes\\clsGeneralFunctions.vb"},{"SourceFile":"Classes\\clsGeopackage.vb"},{"SourceFile":"Classes\\clsKlimaatatlas.vb"},{"SourceFile":"Classes\\clsLog.vb"},{"SourceFile":"Classes\\clsLookupTable.vb"},{"SourceFile":"Classes\\clsLookupTableRecord.vb"},{"SourceFile":"Classes\\clsOldRule.vb"},{"SourceFile":"Classes\\clsRating.vb"},{"SourceFile":"Classes\\clsRule.vb"},{"SourceFile":"Classes\\clsScenario.vb"},{"SourceFile":"Classes\\clsShapefile.vb"},{"SourceFile":"Classes\\clsSpatialFeature.vb"},{"SourceFile":"Classes\\SQLiteFunctions.vb"},{"SourceFile":"frmAbout.vb"},{"SourceFile":"frmAbout.Designer.vb"},{"SourceFile":"frmKlimaatatlas.vb"},{"SourceFile":"frmKlimaatatlas.Designer.vb"},{"SourceFile":"frmSpatialInterpolation.vb"},{"SourceFile":"frmSpatialInterpolation.Designer.vb"},{"SourceFile":"MessageEventArgs.vb"},{"SourceFile":"My Project\\AssemblyInfo.vb"},{"SourceFile":"My Project\\Application.Designer.vb"},{"SourceFile":"My Project\\Resources.Designer.vb"},{"SourceFile":"My Project\\Settings.Designer.vb"},{"SourceFile":"obj\\x64\\Debug\\.NETFramework,Version=v4.8.AssemblyAttributes.vb"}],"References":[{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\EntityFramework.6.4.4\\lib\\net45\\EntityFramework.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\EntityFramework.6.4.4\\lib\\net45\\EntityFramework.SqlServer.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\Newtonsoft.Json.13.0.3\\lib\\net45\\Newtonsoft.Json.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\System.Buffers.4.4.0\\lib\\netstandard2.0\\System.Buffers.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.ComponentModel.DataAnnotations.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\Stub.System.Data.SQLite.Core.NetFramework.1.0.118.0\\lib\\net46\\System.Data.SQLite.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\System.Data.SQLite.EF6.1.0.118.0\\lib\\net46\\System.Data.SQLite.EF6.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\System.Data.SQLite.Linq.1.0.118.0\\lib\\net46\\System.Data.SQLite.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\System.Memory.4.5.3\\lib\\netstandard2.0\\System.Memory.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Numerics.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\System.Numerics.Vectors.4.4.0\\lib\\net46\\System.Numerics.Vectors.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\packages\\System.Runtime.CompilerServices.Unsafe.4.5.2\\lib\\netstandard2.0\\System.Runtime.CompilerServices.Unsafe.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\bin\\x64\\Debug\\Klimaatatlas.exe","OutputItemRelativePath":"Klimaatatlas.exe"},{"OutputItemFullPath":"C:\\GITHUB\\klimaatatlas\\Frontend\\4.8\\Klimaatatlas\\bin\\x64\\Debug\\Klimaatatlas.pdb","OutputItemRelativePath":"Klimaatatlas.pdb"}],"CopyToOutputEntries":[]}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
Binary file modified Frontend/4.8/Klimaatatlas/.vs/Klimaatatlas/v17/.suo
Binary file not shown.
Loading

0 comments on commit 46a9902

Please sign in to comment.