Most Active Speaker

Marco Minerva

Marco Minerva

Microsoft MVP, Freelance Consultant. Passionate .NET Developer, Speaker & Writer.

Microsoft MVP, Freelance Consultant. Passionate .NET Developer, Speaker & Writer.

Taggia, Italy

Actions

Marco Minerva has been using .NET since its first introduction. Today he proudly lives in Taggia, Italy, works as a freelance consultant and is involved in designing and developing solutions for the Microsoft ecosystem. His greatest expertise is backend development as a software architect. He holds training courses. He is a speaker at technical events, writes books and articles about developing and regularly makes live streaming about coding on Twitch. He is a Microsoft MVP since 2013.

Marco Minerva si è dedicato a .NET fin dalla sua prima introduzione. Attualmente vive con orgoglio a Taggia, in Italia, lavora come consulente freelance e si occupa di progettazione e sviluppo di soluzioni per l'ecosistema Microsoft. La sua maggiore esperienza riguarda lo sviluppo di backend in qualità di software architect. Organizza e tiene corsi di formazione. È speaker ad eventi tecnici, scrive libri e articoli sullo sviluppo e organizza regolarmente streaming sullo sviluppo su Twitch. È Microsoft MVP dal 2013.

Awards

Area of Expertise

  • Information & Communications Technology

Topics

  • .NET
  • Windows Development
  • Back-End Development
  • Mobile Desktop and Native Clients
  • Microsoft Azure
  • Azure Cognitive Services
  • ASP.NET Core
  • ASP.NET Core Web API
  • Visual Studio
  • C#
  • Software Architecture
  • OpenAI

Minimal API: facciamo il punto della situazione

Rilasciate nel 2021, le Minimal API si sono rapidamente evolute fino a diventare la scelta consigliata per lo sviluppo di Web API con .NET. In questa sessione faremo il punto della situazione su quello che offrono, presentando gli strumenti a disposizione e fornendo alcune linee guida per un utilizzo efficace.

Intelligenza artificiale: amica o nemica?

È innegabile che l'intelligenza artificiale è ormai entrata prepotentemente nelle nostre vite. Ma abbiamo davvero capito la portata di questa rivoluzione? Nel corso della sessione cercheremo di fare chiarezza sull'argomento e mostreremo alcuni scenari per dimostrare come l'intelligenza artificiale può aiutarci nella vita di tutti i giorni.

Le novità di .NET 8.0

Come ormai avviene ogni anno, a Novembre Microsoft ha rilasciato la nuova versione di .NET, la 8.0, insieme a C# 12. Le novità sono numerose e riguardano tutti gli aspetti del framework. Nel corso di questa sessione analizzeremo le principali e scopriremo come cambierà il nostro modo di sviluppare applicazioni .NET.

Guida pratica a Kernel Memory

In questa sessione introdurremo Kernel Memory, un vero e proprio complemento di Semantic Kernel per gestire l'estrazione, l'embedding e l'indicizzazione di contenuti da utilizzare con i nostri sistemi di intelligenza artificiale. Mostreremo come sfruttarlo per integrare il Retrieval Augmented Generation (RAG) e realizzare una chat alimentata dai nostri documenti personali.

Le novità di Entity Framework Core 8.0

Come ogni anno, lo scorso novembre è stata rilasciata la nuova versione di Entity Framework Core. In questa sessione analizzeremo le principali novità della release 8.0, tra cui il migliorato supporto alle query raw, nuove funzionalità per i dati in formato JSON e la gestione nativa delle colonne DATE e TIME di SQL Server.

Le novità di .NET 8.0

Microsoft ha rilasciato .NET 8.0 lo scorso Novembre. Le novità sono numerose e riguardano tutti gli aspetti del framework. Nel corso di questa sessione scopriremo cosa abbiamo a disposizione nella Base Class Library, in ASP.NET Core e in Entity Framework Core.

Pubblicare servizi e database su Azure non è mai stato così facile con le GitHub Actions

La fase di deploy di applicazioni Web e database è da sempre una delle attività più noiose e ripetitive nel lavoro di uno sviluppatore. Nel corso di questa sessione mostreremo come utilizzare le GitHub Actions per automatizzare la pubblicazione di servizi e le operazioni di aggiornamento di un database su Azure. Pubblicare sul Cloud di Microsoft non sarà più la stessa cosa!

Unit test in the real world for C# developer

Quando si parla di Unit Test, molto spesso ci si limita a mostrare come effettuarlo su un singolo metodo di una classe scritta allo scopo. Ma cosa vuol dire effettuare Unit Test di una vera applicazione, sviluppata con un'architettura a layer, con utilizzo di servizi e database? Scopriamolo insieme in questo laboratorio, in cui partiremo da una Web API .NET e mostreremo cosa dobbiamo fare per aggiungere Unit Test (e non solo)

Le novità di Entity Framework Core 7.0

Entity Framework Core è giunto alla versione 7.0. Nel corso di questa sessione analizzeremo le sue principali novità, tra cui il supporto alle colonne JSON e i nuovi metodi per l'esecuzione di Update e Delete.

Le novità di ASP.NET Core 7.0

La versione 7.0 di ASP.NET Core introduce numerose novità molto interessanti: supporto a HTTP/3, Rate Limiter e Output Cache solo per citarne alcune. In questa sessione capiremo come sfruttarle al meglio.

Le novità di .NET 7.0 sotto l'albero

Come ogni anno, Microsoft ci ha regalato una nuova versione di .NET. Ma siamo stati davvero dei bravi sviluppatori, e quindi Microsoft ci ha portato tutto quello che ci aveva promesso? Spacchettiamo insieme le novità nel corso di questa sessione.

Cosa ci aspetta in .NET 7.0

Come ogni anno, a Novembre sarà rilasciata la nuova versione di .NET, la 7.0, insieme a C# 11. In questa sessione presenteremo in anteprima le novità del linguaggio e le principali funzionalità che avremo presto a disposizione.

Le novità di C# 11 e .NET 7.0

Manca ancora qualche settimana prima del rilascio della versione finale di C# 11 e .NET 7.0, ma sappiamo già quali saranno le novità principali del linguaggio. In questa sessione daremo uno sguardo a quello che ci aspetta nei prossimi mesi.

Auditing con Entity Framework Core

L'auditing, cioè la necessità di sapere quando un dato è stato modificato, come e da chi, è molto spesso un requisito fondamentale per le nostre applicazioni. In questa sessione presenteremo gli strumenti che Entity Framework Core ci offre per gestire tale requisito.

Applicazioni multi-tenant su Azure con ASP.NET Core

In questa sessione mostreremo come sviluppare applicazioni multi-tenant con ASP.NET Core, con isolamento di database e storage, e come gestirne la pubblicazione su Azure.

Sviluppare servizi multi-tenant su Azure

In questa sessione mostreremo diverse possibili soluzioni per lo sviluppo di backend che devono supportare scenari multi-tenant, per quanto riguarda il database e lo storage di dati

Advanced scenarios with Minimal API

Le Minimal API sono una delle novità più interessanti di .NET 6.0. Ma sono davvero così minimali? In questa sessione analizzeremo le principali limitazioni che le caratterizzano e scopriremo come superarle. Per ottenere il massimo dalle Minimal API.

IoT all'opera con Azure Custom Commands

Azure Custom Commands permette di sfruttare i servizi Cognitive di Speech e Language Understanding per realizzare sistemi che seguono la filosofia degli assistenti vocali. Sia che stiamo parlando di domotica, di automotive o del mondo retail, aggiungere alle nostre applicazioni funzionalità di riconoscimento del parlato ed esecuzione di azioni non è mai stato così facile. Nel corso di questa sessione mostreremo come sfruttare questa tecnologia per realizzare sistemi IoT controllati a voce.

Follow the white Rabbit(MQ)

RabbitMQ è un'ottima soluzione per la gestione delle code nelle nostre applicazioni, ad esempio per gestire elaborazioni asincrone. Tuttavia, per la sua adozione spesso vengono proposti pattern complessi che richiedono molto codice e sono di difficile manutenibilità, non giustificabile in caso di scenari semplici, che sono i più comuni. Per gestire queste casistiche, nel corso della sessione mostreremo con quanta facilità è possibile creare una soluzione riutilizzabile ed estendibile per integrare RabbitMQ in un'applicazione .NET.

Entity Framework Core and Dapper... Live together in perfect harmony

Oggi Entity Framework Core è sempre di più la scelta consigliata per l'accesso ai dati nelle nostre applicazioni .NET. Tuttavia, ci sono ancora numerosi scenari in cui abbiamo bisogno delle prestazioni di Dapper. Nel corso di questa sessione mostreremo come creare un layer unico di accesso ai dati che ci permetta di sfruttare Entity Framework Core o Dapper in base alle nostre esigenze, senza duplicazione di configurazione.

Sing and Song of Christmas with DAPR microservices

Costruiamo con l'aiuto di Spotify una playlist a tema.
Dove? su DAPR, con un pò di container docker, un frontend in blazor, Kubernetes e se riusciamo Azure Container Apps preview!

OpenTelemetry with Minimal APIs in .NET 6

Minimal APIs is new feature of .NET 6. We want to talk about integration of OpenTelemetry in Minimal APIs.

Le novità di Entity Framework Core 6.0

Supporto alle tabelle temporali, aggiunta delle convenzioni sul modello, migration bundle, sono solo alcune delle novità di Entity Framework Core 6.0, che analizzeremo insieme nel corso di questa sessione, con il classico approccio basato sul codice!

Minimal API, per molti ma non per tutti (gli scenari)

Le Minimal API sono una delle novità più interessanti di .NET 6.0. Tuttavia, data la loro natura e le funzionalità supportate, è necessario valutare attentamente gli scenari in cui ha senso adottarle. Nel corso di questa sessione daremo uno sguardo alle più importanti caratteristiche, capiremo come organizzare efficacemente un progetto Minimal API e valuteremo quando conviene seguire questa architettura.

Minimal IoT

Grazie alle Minimal API di .NET 6.0 possiamo creare Web API in pochissime righe di codice, ottenendo nel contempo il massimo delle performance. Si tratta quindi di una soluzione perfetta per realizzare servizi da eseguire su dispositivi IoT. In questa sessione svilupperemo con le Minimal API un servizio per gestire alcuni sensori collegati ad una scheda Raspberry Pi.

Versionamento e pubblicazione di librerie con Git e GitHub Action

In questa sessione mostreremo alcuni strumenti che ci permettono di automatizzare la gestione del versionamento di una libreria utilizzando il GitVersioning, direttamente da Visual Studio, e come sfruttare una GitHub Action per la pubblicazione automatica su NuGet.

Logging con .NET Core

Spesso sottovalutato, il logging è una parte fondamentale di ogni applicazione moderna. .NET Core offre una completa infrastruttura di logging che possiamo utilizzare in ogni tipo di applicazione, sia essa Web, Desktop o Mobile. In questa sessione scopriremo come utilizzarlo, come personalizzarlo in base alle nostre necessità e come estenderlo con provider di terze parti.
Per arrivare là dove nessuno ha mai loggato prima.

Minimal API, il nuovo modo di creare servizi con ASP.NET Core

Minimal API è una nuova modalità di scrittura di Web API con ASP.NET Core, che semplifica la creazione dell'applicazione e rende molto più leggeri i servizi, senza rinunciare alle classiche funzionalità a cui ormai siamo abituati. Nel corso di questa sessione capiremo di cosa si tratta e valuteremo i pro e i contro della nuova soluzione.

On-premise o Azure, (NON) è questo il problema

In questa sessione mostreremo come scrivere le nostre applicazioni Web in modo che possano adattarsi automaticamente ad un'installazione on-premise oppure su Azure, risolvendo alcuni problemi comuni che spesso ostacolano il passaggio da una piattaforma all'altra.

Le novità di C# 9.0

Rilasciata in concomitanza con .NET 5, la versione 9.0 di C# porta con sé un gran numero di novità: a partire dal tipo record, in questa sessione analizzeremo tutte le principali nuove feature del linguaggio.

Documentiamo le nostre API con Swagger

La documentazione delle API è uno degli aspetti più importanti nello sviluppo di un servizio REST: uno sviluppatore backend che si rispetti deve sempre inserire Swagger all'interno dei propri progetti. Nel corso di questa sessione scopriremo come integrarlo al meglio in un'applicazione ASP.NET Core e come sfruttare alcune delle sue funzionalità più avanzate.

Guida galattica su come non reinventare la ruota quando si sviluppa

Praticamente in ogni applicazione che sviluppiamo dobbiamo affrontare alcuni problemi tipici: invocazione di servizi remoti, mapping e validazione dei dati, logging, gestione degli errori, problematiche legate alla lingua e chi più ne ha più ne metta. Alzi la mano chi non ha mai scritto del codice, magari anche un po' intricato, per gestire almeno uno di questi aspetti... Ebbene, oggi tutto questo non è più necessario: nel corso di questo Live Coding mostreremo una serie di librerie open source in grado di semplificare il lavoro di tutti di giorni e migliorare la qualità del nostro software.

Le novità di Entity Framework Core 5.0

Entity Framework Core 5.0 fornisce tantissime nuove funzionalità, alcune delle quali erano da lungo richieste, come il Filtered Include, le relazioni Many-To-Many senza dichiarare la classe intermedia e il supporto al Table-Per-Type. Nel corso di questa sessione daremo uno sguardo alle principali novità e capiremo come sfruttarle al meglio.

Comandiamo i nostri sistemi a voce con Azure Custom Commands

Azure Custom Commands permette di sfruttare i servizi Cognitive di Speech e Language Understanding per realizzare sistemi che seguono la filosofia degli assistenti vocali. Sia che stiamo parlando di domotica, di automotive o del mondo retail, aggiungere alle nostre applicazioni funzionalità di riconoscimento del parlato ed esecuzione di azioni non è mai stato così facile.

.NET Core Everywhere

HostBuilder, ServiceProvider, Dependency Injection, Logging e molto altro: oggi possiamo sfruttare le caratteristiche di .NET Core in ogni tipo di applicazione: non solo Web, ma anche Console, Desktop e Xamarin. Nel corso di questa sessione mostreremo come avere accesso a tutto quello che .NET Core ci offre, indipendentemente dalla piattaforma con cui lavoriamo.

Azure Cognitive Search Deep Dive

Oltrepassiamo la barriera della ricerca testuale e recuperiamo informazioni apparentemente nascoste nei documenti e nelle immagini. In questa sessione di approfondimento scopriremo come arricchire un indice di Azure Search utilizzando i nostri algoritmi di intelligenza artificiale per creare un sistema di ricerca visivo nello spazio e nel tempo.

Xamarin Loves .NET Core

HostBuilder, ServiceProvider, Dependency Injection, Logging e molto altro: oggi possiamo sfruttare le caratteristiche di .NET Core in ogni tipo di applicazione, comprese quelle Xamarin. Nel corso di questa sessione mostreremo come avere accesso a tutto quello che .NET Core ci offre.

Usiamo Dapper al 110%

Dapper è il micro OR/M sviluppato e utilizzato da StackOverflow e rappresenta la soluzione ideale quando vogliamo avere il massimo controllo sulle query SQL che eseguiamo, mantenendo il mapping automatico dei parametri e dei risultati sulle classi di dominio. In questa sessione mostreremo come usarlo efficacemente nelle nostre applicazioni, come si rapporta con altre soluzioni di accesso ai dati e come integrarlo con librerie di terze parti, in modo da sfruttarlo davvero al 110%.

Azure Cognitive Search oltre la prima demo

Con Azure Cognitive Search possiamo creare con grande facilità indici di ricerca sfruttando potenti algoritmi di intelligenza artificiale. Nel corso di questa sessione approfondiremo alcune delle funzionalità più avanzate che ci vengono messe a disposizione, tra cui il Knowledge Store: andremo oltre la prima classica demo e mostreremo cosa si può davvero fare con Azure Cognitive Search.

Accesso ai dati con .NET Core 3.0

Accesso ai dati con .NET Core 3.0

Auguri in tutte le lingue del mondo

Prendiamo i Cognitive Services, aggiungiamo un pizzico di SignalR e distribuiamo il tutto su Azure: ecco la ricetta perfetta per un sistema di scambio messaggi vocali con traduzione in tempo reale. Per farci di auguri di Natale in tutte le lingue del mondo.

Costruiamo un assistente personale con LUIS e il Bot Framework

Tutti noi conosciamo Cortana, Siri, Alexa e Google Assistant. Vi siete mai chiesti quanto è complesso realizzare sistemi del genere? Sfruttando LUIS (Language Understanding Intelligent Service) e il Bot Framework di Microsoft (e non solo…) scopriremo che si tratta di un progetto alla portata di tutti.

Il desktop alla riscossa: la rivincita di Windows Forms e WPF

In questa sessione cercheremo di capire quale futuro si prospetta per lo sviluppo di applicazioni desktop per Windows e scopriremo quali nuovi scenari ci vengono offerti da .NET Core 3.0 e da tecnologie come XAML Island.

Ricerche intelligenti con Cognitive Search

Combinando la potenza di Azure Search con gli algoritmi di intelligenza artificiale dei Cognitive Services possiamo creare un motore di ricerca che sfrutta l'analisi del linguaggio e delle immagini per riconoscere gli argomenti di un documento, le entità, le persone, i luoghi raffigurati in una fotografia e molto altro. In questa sessione mostreremo come realizzare un sistema del genere e come sfruttarlo nelle nostre applicazioni.

La rinascita di WPF

Dopo diversi anni in cui lo sviluppo di WPF era stato sostanzialmente abbandonato, stiamo assistendo ad una sua rinascita: oggi possiamo sviluppare applicazioni WPF che integrano controlli e componenti di Windows 10 e persino Xamarin.Forms consente di creare app WPF in grado di funzionare su qualuque versione di Windows. Senza dimenticare il nuovo .NET Core 3.0, che permetterà di creare applicazioni per questo framework, portando con sé tutta una serie di vantaggi e benefici. Insomma, questo mondo sta conoscendo un rinnovato interesse. Nel corso della sessione analizzeremo gli strumenti attualmente disponibili per dare nuova linfa allo sviluppo di applicazioni desktop.

Niente più barriere linguistiche con i Cognitive Services

Ormai siamo sempre più cosmopoliti: per lavoro o per svago è sempre più frequente dover comunicare con persone dall'altro capo del mondo. Sfruttando i servizi Speech e Translator di Microsoft è oggi possibile abbattere tutte le barriere linguistiche realizzando applicazioni con funzionalità di riconoscimento vocale e traduzione in tempo reale. Nel corso di questa sessione scopriremo come sviluppare un'app che ci permetta di dialogare con tutti i nostri interlocutori, indipendentemente dalla loro lingua.

Computer Vision come strumento per scoprire la storia delle nostre città

La Computer Vision può essere utilizzata per una grande quantità di scopi. Quindi, perché non adottarla per aiutare le persone a scoprire la storia delle città che visitano? Grazie a Microsoft Custom Vision, ci bastano una manciata di immagini per rendere tutto questo reale.

AI on The Edge

Il Machine Learning sta prendendo sempre più campo, tant'è che molte delle applicazioni che comunemente usiamo si appoggiano a tale tecnologia. Vedremo in questa sessione come portare l'AI e il Machine Learning "On the Edge" su applicazioni Windows e Mobile grazie a ONNX, TensorFlow e CoreML.

Custom Vision: introduzione e casi d'uso reali

Sfruttando il servizio Custom Vision di Microsoft possiamo realizzare applicazioni in grado di riconoscere le nostre immagini, configurando l'analisi in base ai nostri scenari. Negli ultimi tempi questo servizio è stato notevolmente ampliato, passando dalla semplice classificazione di immagini online all'aggiunta della object detection, all'ottimizzazione in base al tipo di classificazione e al funzionamento offline con supporto ai container Docker. Nel corso di questa sessione analizzeremo in dettaglio tutte le potenzialità che abbiamo a disposizione e cercheremo di capire quale è il vero valore aggiunto che può dare alle nostre applicazioni.

Realizziamo un assistente personale con LUIS e il Bot Framework

Tutti noi conosciamo Cortana, Siri, Alexa e Google Assistant. Vi siete mai chiesti quanto è complesso realizzare sistemi del genere? Sfruttando il Language Understanding Intelligent Service e il Bot Framework di Microsoft, scopriremo che si tratta di un progetto alla portata di tutti.

Azure Day Torino 2024 Sessionize Event

October 2024 Turin, Italy

.NET Conf 2023 1nn0va Sessionize Event

January 2024 Pordenone, Italy

XmasDev 2023 Sessionize Event

December 2023 Rome, Italy

WPC 2023 Sessionize Event

November 2023 Assago, Italy

Data Saturday Parma 2023 Sessionize Event

November 2023 Parma, Italy

Azure Day Torino 2023 Sessionize Event

October 2023 Turin, Italy

1nn0va Saturday 2023 Sessionize Event

September 2023 Pordenone, Italy

Global Azure - Verona 2023 Sessionize Event

May 2023 Verona, Italy

datasaturdays.com Pordenone 2023 Sessionize Event

February 2023 Pordenone, Italy

Codegen 2023 Sessionize Event

February 2023 Verona, Italy

.NET Conf 2022 1nn0va Sessionize Event

January 2023 Pordenone, Italy

XmasDev 2022 Sessionize Event

December 2022 Rome, Italy

Data Saturday Parma 2022 Sessionize Event

November 2022 Parma, Italy

WPC 2022 Sessionize Event

October 2022 Assago, Italy

1nn0va Saturday 2022 Sessionize Event

September 2022 Pordenone, Italy

Azure Day Rome 2022 Sessionize Event

June 2022 Rome, Italy

SQL Start! 2022 Sessionize Event

June 2022

Global Azure - Verona 2022 Sessionize Event

May 2022

Rome .NET Conference 2022 Sessionize Event

March 2022

Web Day 2022 Sessionize Event

March 2022

datasaturdays.com Pordenone 2022 Sessionize Event

February 2022

.NET Virtual Conference 2022 Sessionize Event

January 2022

XmasDev 2021 Sessionize Event

December 2021

IoT After Hour 2021 Sessionize Event

November 2021

.NET Conf 2021 Sessionize Event

November 2021

DevOps Conf 2021 Sessionize Event

October 2021

Visual Studio Tour 2021 Sessionize Event

October 2021

Cloudgen 2021 Sessionize Event

September 2021

Azure Day Rome 2021 Sessionize Event

June 2021

SQL Start! 2021 Sessionize Event

June 2021

Virtual Global Azure - Verona 2021 Sessionize Event

April 2021

A.I. Day 2021 Sessionize Event

March 2021

Web Day 2021 Sessionize Event

March 2021

datasaturdays.com Pordenone 2021 #0001 Sessionize Event

February 2021

Virtual Scottish Summit 2021 Sessionize Event

February 2021

CodeGen 2021 Sessionize Event

February 2021

Rome .NET Conference 2020 Sessionize Event

December 2020

.NET Conf By DotNetToscana Sessionize Event

December 2020

IoT Saturday 2020 Sessionize Event

November 2020

RoboGen Automation Sessionize Event

October 2020

Visual Studio Tour 2020 - Live Sessionize Event

June 2020 Rome, Italy

Azure Day Rome 2020 Sessionize Event

June 2020

Global Azure 2020 Sessionize Event

April 2020 Verona, Italy

Global Azure Virtual 2020 Sessionize Event

April 2020 Turin, Italy

Global Azure Virtual Sessionize Event

April 2020 Seattle, Washington, United States

WPC2019 Sessionize Event

December 2019 Assago, Italy

Azure Day Rome 2019 Reloaded Sessionize Event

November 2019 Rome, Italy

Visual Studio Saturday 2019 Sessionize Event

November 2019 Pordenone, Italy

Azure Saturday Pordenone 2019 Sessionize Event

October 2019 Pordenone, Italy

AIDay Sessionize Event

September 2019 Rome, Italy

Global Azure Bootcamp Italia Sessionize Event

April 2019 Milan, Italy

Digital 1nn0vation Saturday 2019 Sessionize Event

January 2019 Pordenone, Italy

XmasDev 2018 Sessionize Event

December 2018 Rome, Italy

WPC2018 Sessionize Event

November 2018 Assago, Italy

Azure Conference 2018 by DNL Sessionize Event

November 2018 Milan, Italy

Visual Studio Saturday 2018 Sessionize Event

November 2018 Pordenone, Italy

Azure Saturday 2018 Sessionize Event

October 2018 Pordenone, Italy

CodeGen 2018 Sessionize Event

September 2018 Verona, Italy

Global Azure Bootcamp Rome 2018 Sessionize Event

April 2018 Rome, Italy

Visual Studio Saturday 2017 Sessionize Event

October 2017

Marco Minerva

Microsoft MVP, Freelance Consultant. Passionate .NET Developer, Speaker & Writer.

Taggia, Italy

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top