diff --git a/.github/workflows/deploy-changed-samples.yml b/.github/workflows/deploy-changed-samples.yml
index e8985ece..624ce432 100644
--- a/.github/workflows/deploy-changed-samples.yml
+++ b/.github/workflows/deploy-changed-samples.yml
@@ -76,6 +76,7 @@ jobs:
TEST_DATABASE_USERNAME: ${{ secrets.TEST_DATABASE_USERNAME }}
TEST_HASURA_GRAPHQL_ADMIN_SECRET: ${{ secrets.TEST_HASURA_GRAPHQL_ADMIN_SECRET }}
TEST_HASURA_GRAPHQL_DATABASE_URL: ${{ secrets.TEST_HASURA_GRAPHQL_DATABASE_URL }}
+ TEST_JUPYTER_TOKEN: ${{ secrets.TEST_JUPYTER_TOKEN }}
TEST_HF_TOKEN: ${{ secrets.TEST_HF_TOKEN }}
TEST_MB_DB_DBNAME: ${{ secrets.TEST_MB_DB_DBNAME }}
TEST_MB_DB_HOST: ${{ secrets.TEST_MB_DB_HOST }}
diff --git a/samples/jupyter-postgres/.devcontainer/Dockerfile b/samples/jupyter-postgres/.devcontainer/Dockerfile
new file mode 100644
index 00000000..ec4e707f
--- /dev/null
+++ b/samples/jupyter-postgres/.devcontainer/Dockerfile
@@ -0,0 +1 @@
+FROM mcr.microsoft.com/devcontainers/python:3.12-bookworm
diff --git a/samples/jupyter-postgres/.devcontainer/devcontainer.json b/samples/jupyter-postgres/.devcontainer/devcontainer.json
new file mode 100644
index 00000000..67cac5b2
--- /dev/null
+++ b/samples/jupyter-postgres/.devcontainer/devcontainer.json
@@ -0,0 +1,11 @@
+{
+ "build": {
+ "dockerfile": "Dockerfile",
+ "context": ".."
+ },
+ "features": {
+ "ghcr.io/defanglabs/devcontainer-feature/defang-cli:1.0.4": {},
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {},
+ "ghcr.io/devcontainers/features/aws-cli:1": {}
+ }
+}
\ No newline at end of file
diff --git a/samples/jupyter-postgres/.github/workflows/deploy.yaml b/samples/jupyter-postgres/.github/workflows/deploy.yaml
new file mode 100644
index 00000000..6ab7ca98
--- /dev/null
+++ b/samples/jupyter-postgres/.github/workflows/deploy.yaml
@@ -0,0 +1,26 @@
+name: Deploy
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ deploy:
+ environment: playground
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ id-token: write
+
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v4
+
+ - name: Deploy
+ with:
+ config-env-vars: POSTGRES_PASSWORD JUPYTER_TOKEN
+ uses: DefangLabs/defang-github-action@v1.2.0
+ env:
+ POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
+ JUPYTER_TOKEN: ${{ secrets.JUPYTER_TOKEN }}
\ No newline at end of file
diff --git a/samples/jupyter-postgres/README.md b/samples/jupyter-postgres/README.md
new file mode 100644
index 00000000..b047942d
--- /dev/null
+++ b/samples/jupyter-postgres/README.md
@@ -0,0 +1,69 @@
+# Jupyter & Postgres
+
+[](https://portal.defang.dev/redirect?url=https%3A%2F%2Fgithub.com%2Fnew%3Ftemplate_name%3Dsample-jupyter-postgres-template%26template_owner%3DDefangSamples)
+
+This sample shows you how to spin up a postgres database and a Jupyter notebook server. This is useful if you need to use Jupyter notebooks to read data from or persist data to a database.
+
+## Prerequisites
+
+1. Download [Defang CLI](https://github.com/DefangLabs/defang)
+2. (Optional) If you are using [Defang BYOC](https://docs.defang.io/docs/concepts/defang-byoc) authenticate with your cloud provider account
+3. (Optional for local development) [Docker CLI](https://docs.docker.com/engine/install/)
+
+## Development
+
+To run the application locally, you can use the following command:
+
+```bash
+docker compose -f compose.dev.yaml up --build
+```
+
+## Configuration
+
+For this sample, you will need to provide the following [configuration](https://docs.defang.io/docs/concepts/configuration):
+
+> Note that if you are using the 1-click deploy option, you can set these values as secrets in your GitHub repository and the action will automatically deploy them for you.
+
+### `POSTGRES_PASSWORD`
+The password to use for the postgres database.
+```bash
+defang config set POSTGRES_PASSWORD
+```
+
+### `JUPYTER_TOKEN`
+The token to access your Jupyter notebook server.
+```bash
+defang config set JUPYTER_TOKEN
+```
+
+## Deployment
+
+> [!NOTE]
+> Download [Defang CLI](https://github.com/DefangLabs/defang)
+
+### Defang Playground
+
+Deploy your application to the Defang Playground by opening up your terminal and typing:
+```bash
+defang compose up
+```
+
+### BYOC (AWS)
+
+If you want to deploy to your own cloud account, you can use Defang BYOC:
+
+1. [Authenticate your AWS account](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html), and check that you have properly set your environment variables like `AWS_PROFILE`, `AWS_REGION`, `AWS_ACCESS_KEY_ID`, and `AWS_SECRET_ACCESS_KEY`.
+2. Run in a terminal that has access to your AWS environment variables:
+ ```bash
+ defang --provider=aws compose up
+ ```
+
+---
+
+Title: Jupyter & Postgres
+
+Short Description: This sample shows you how to spin up a postgres database and a Jupyter notebook server.
+
+Tags: Jupyter, Postgres, Database
+
+Languages: Python, SQL
diff --git a/samples/jupyter-postgres/compose.dev.yaml b/samples/jupyter-postgres/compose.dev.yaml
new file mode 100644
index 00000000..aeacf810
--- /dev/null
+++ b/samples/jupyter-postgres/compose.dev.yaml
@@ -0,0 +1,22 @@
+services:
+ jupyter:
+ extends:
+ service: jupyter
+ file: compose.yaml
+ environment:
+ JUPYTER_TOKEN: jupyter
+ POSTGRES_PASSWORD: password
+ volumes:
+ - ./jupyter/notebooks:/home/jovyan/work
+
+ db:
+ extends:
+ service: db
+ file: compose.yaml
+ environment:
+ POSTGRES_PASSWORD: password
+ volumes:
+ - postgres_data:/var/lib/postgresql/data
+
+volumes:
+ postgres_data:
diff --git a/samples/jupyter-postgres/compose.yaml b/samples/jupyter-postgres/compose.yaml
new file mode 100644
index 00000000..6f3531ca
--- /dev/null
+++ b/samples/jupyter-postgres/compose.yaml
@@ -0,0 +1,35 @@
+services:
+ jupyter:
+ # Uncomment the following line and run `defang cert generate` to generate an ssl certificate for your domain
+ # domainname: notebooks.mycompany.com
+ build:
+ context: ./jupyter
+ ports:
+ - mode: ingress
+ target: 8888
+ published: 8888
+ deploy:
+ resources:
+ limits:
+ cpus: '1.0'
+ memory: 1G
+ environment:
+ JUPYTER_TOKEN:
+ POSTGRES_PASSWORD:
+ DATABASE_HOST: db
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://localhost:8888/login" ]
+ depends_on:
+ - db
+
+ db:
+ image: postgres:14
+ x-defang-postgres: true
+ ports:
+ - mode: host
+ target: 5432
+ published: 5432
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
+ environment:
+ POSTGRES_PASSWORD:
diff --git a/samples/jupyter-postgres/jupyter/Dockerfile b/samples/jupyter-postgres/jupyter/Dockerfile
new file mode 100644
index 00000000..33b231fe
--- /dev/null
+++ b/samples/jupyter-postgres/jupyter/Dockerfile
@@ -0,0 +1,15 @@
+FROM jupyter/datascience-notebook
+
+# 4.002 Error: pg_config executable not found.
+# make sure the development packages are installed
+
+USER root
+
+RUN apt-get update && apt-get install -y libpq-dev
+
+USER 1000
+
+COPY requirements.txt /tmp/
+RUN pip install --no-cache-dir -r /tmp/requirements.txt
+
+COPY ./notebooks /home/jovyan/work
\ No newline at end of file
diff --git a/samples/jupyter-postgres/jupyter/notebooks/.ipynb_checkpoints/Titanic-checkpoint.ipynb b/samples/jupyter-postgres/jupyter/notebooks/.ipynb_checkpoints/Titanic-checkpoint.ipynb
new file mode 100644
index 00000000..3351b655
--- /dev/null
+++ b/samples/jupyter-postgres/jupyter/notebooks/.ipynb_checkpoints/Titanic-checkpoint.ipynb
@@ -0,0 +1,506 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "83f52f0f-6051-4689-86be-d24eabd27730",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Install our dependencies"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "a363c298-c4b7-4015-b91d-4e5631e2ca93",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Requirement already satisfied: sqlalchemy in /opt/conda/lib/python3.11/site-packages (2.0.22)\n",
+ "Requirement already satisfied: psycopg2 in /opt/conda/lib/python3.11/site-packages (2.9.10)\n",
+ "Requirement already satisfied: pandas in /opt/conda/lib/python3.11/site-packages (2.1.1)\n",
+ "Requirement already satisfied: seaborn in /opt/conda/lib/python3.11/site-packages (0.13.0)\n",
+ "Requirement already satisfied: ipywidgets in /opt/conda/lib/python3.11/site-packages (8.1.1)\n",
+ "Requirement already satisfied: typing-extensions>=4.2.0 in /opt/conda/lib/python3.11/site-packages (from sqlalchemy) (4.8.0)\n",
+ "Requirement already satisfied: greenlet!=0.4.17 in /opt/conda/lib/python3.11/site-packages (from sqlalchemy) (3.0.0)\n",
+ "Requirement already satisfied: numpy>=1.23.2 in /opt/conda/lib/python3.11/site-packages (from pandas) (1.24.4)\n",
+ "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.11/site-packages (from pandas) (2.8.2)\n",
+ "Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.11/site-packages (from pandas) (2023.3.post1)\n",
+ "Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.11/site-packages (from pandas) (2023.3)\n",
+ "Requirement already satisfied: matplotlib!=3.6.1,>=3.3 in /opt/conda/lib/python3.11/site-packages (from seaborn) (3.8.0)\n",
+ "Requirement already satisfied: comm>=0.1.3 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (0.1.4)\n",
+ "Requirement already satisfied: ipython>=6.1.0 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (8.16.1)\n",
+ "Requirement already satisfied: traitlets>=4.3.1 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (5.11.2)\n",
+ "Requirement already satisfied: widgetsnbextension~=4.0.9 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (4.0.9)\n",
+ "Requirement already satisfied: jupyterlab-widgets~=3.0.9 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (3.0.9)\n",
+ "Requirement already satisfied: backcall in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.2.0)\n",
+ "Requirement already satisfied: decorator in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n",
+ "Requirement already satisfied: jedi>=0.16 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n",
+ "Requirement already satisfied: matplotlib-inline in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n",
+ "Requirement already satisfied: pickleshare in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.7.5)\n",
+ "Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.39)\n",
+ "Requirement already satisfied: pygments>=2.4.0 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.16.1)\n",
+ "Requirement already satisfied: stack-data in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.2)\n",
+ "Requirement already satisfied: pexpect>4.3 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.8.0)\n",
+ "Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (1.1.1)\n",
+ "Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (0.12.1)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (4.43.1)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (1.4.5)\n",
+ "Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (23.2)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (10.1.0)\n",
+ "Requirement already satisfied: pyparsing>=2.3.1 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (3.1.1)\n",
+ "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
+ "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /opt/conda/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n",
+ "Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n",
+ "Requirement already satisfied: wcwidth in /opt/conda/lib/python3.11/site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets) (0.2.8)\n",
+ "Requirement already satisfied: executing>=1.2.0 in /opt/conda/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (1.2.0)\n",
+ "Requirement already satisfied: asttokens>=2.1.0 in /opt/conda/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.0)\n",
+ "Requirement already satisfied: pure-eval in /opt/conda/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
+ "source": [
+ "pip install sqlalchemy psycopg2 pandas seaborn ipywidgets"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "0f663e69-0d11-4bbc-b594-df4cc0497aeb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "DB_USER = 'postgres'\n",
+ "DB_PASSWORD = os.getenv('POSTGRES_PASSWORD')\n",
+ "DB_HOST = 'db' # Docker Compose service name\n",
+ "DB_PORT = '5432'\n",
+ "DB_NAME = 'postgres'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "453b61a7-7be1-493c-ac57-680884b3b82b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loading Titanic dataset...\n",
+ "Dataset loaded with 891 rows and 15 columns.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " survived | \n",
+ " pclass | \n",
+ " sex | \n",
+ " age | \n",
+ " sibsp | \n",
+ " parch | \n",
+ " fare | \n",
+ " embarked | \n",
+ " class | \n",
+ " who | \n",
+ " adult_male | \n",
+ " deck | \n",
+ " embark_town | \n",
+ " alive | \n",
+ " alone | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 7.2500 | \n",
+ " S | \n",
+ " Third | \n",
+ " man | \n",
+ " True | \n",
+ " NaN | \n",
+ " Southampton | \n",
+ " no | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 71.2833 | \n",
+ " C | \n",
+ " First | \n",
+ " woman | \n",
+ " False | \n",
+ " C | \n",
+ " Cherbourg | \n",
+ " yes | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 7.9250 | \n",
+ " S | \n",
+ " Third | \n",
+ " woman | \n",
+ " False | \n",
+ " NaN | \n",
+ " Southampton | \n",
+ " yes | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 53.1000 | \n",
+ " S | \n",
+ " First | \n",
+ " woman | \n",
+ " False | \n",
+ " C | \n",
+ " Southampton | \n",
+ " yes | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 8.0500 | \n",
+ " S | \n",
+ " Third | \n",
+ " man | \n",
+ " True | \n",
+ " NaN | \n",
+ " Southampton | \n",
+ " no | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " survived pclass sex age sibsp parch fare embarked class \\\n",
+ "0 0 3 male 22.0 1 0 7.2500 S Third \n",
+ "1 1 1 female 38.0 1 0 71.2833 C First \n",
+ "2 1 3 female 26.0 0 0 7.9250 S Third \n",
+ "3 1 1 female 35.0 1 0 53.1000 S First \n",
+ "4 0 3 male 35.0 0 0 8.0500 S Third \n",
+ "\n",
+ " who adult_male deck embark_town alive alone \n",
+ "0 man True NaN Southampton no False \n",
+ "1 woman False C Cherbourg yes False \n",
+ "2 woman False NaN Southampton yes True \n",
+ "3 woman False C Southampton yes False \n",
+ "4 man True NaN Southampton no True "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Connecting to PostgreSQL...\n",
+ "Writing Titanic dataset to the PostgreSQL database...\n",
+ "Data successfully loaded into the 'titanic' table.\n",
+ "Querying data from PostgreSQL...\n",
+ "Query results:\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " pclass | \n",
+ " survived | \n",
+ " avg_age | \n",
+ " avg_fare | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 35.368197 | \n",
+ " 95.608029 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 3 | \n",
+ " 0 | \n",
+ " 26.555556 | \n",
+ " 13.669364 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 20.646118 | \n",
+ " 13.694887 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 43.695312 | \n",
+ " 64.684008 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 33.544444 | \n",
+ " 19.412328 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 25.901566 | \n",
+ " 22.055700 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " pclass survived avg_age avg_fare\n",
+ "0 1 1 35.368197 95.608029\n",
+ "1 3 0 26.555556 13.669364\n",
+ "2 3 1 20.646118 13.694887\n",
+ "3 1 0 43.695312 64.684008\n",
+ "4 2 0 33.544444 19.412328\n",
+ "5 2 1 25.901566 22.055700"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAIhCAYAAABwnkrAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRR0lEQVR4nO3dd3gUVf/+8XshFVLoCb0ZkBZKKII+9NCRiEoVQfAR6UhTQAERAalReQALRZFmAVQEJCqELh2kKkqHEDpJgASS8/vDX/bLTgIkmGQDvl/Xtdflnjkz89nZZdw7Z+aszRhjBAAAAACwy+LsAgAAAAAgsyEoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBmcwHH3wgm82m8uXLO7uUTK1KlSqy2WyaNGmSU+sYNWqUbDabLly4kK776dKli2w2m/3h7u6u0qVLa+TIkbp582a67vvfKDY2VtOmTdNTTz2lnDlzys3NTQULFlSbNm0UHh5u77d27VrZbDatXbvWecU6WbFixdSlS5f79rt48aKGDh2qsmXLKnv27PL19dXjjz+uTp06ae/evelfaDKOHTsmm82muXPnpts+UvMZOXjwoDp16qQSJUrIw8NDefLkUZUqVdS7d29du3bN3m/BggUKDQ39R3VNnz49XV838ChwcXYBABzNnj1bkrR//379+uuvqlGjhpMrynx2796tXbt2SZJmzZqlQYMGObmijOHp6alffvlFknT58mUtXLhQo0eP1qFDh7R48WInV/fouHDhgpo0aaK9e/eqa9euGjx4sHLlyqXTp0/r22+/VYMGDbRjxw5VrFjR2aU+NKKjo/XEE08oOjpagwcPVsWKFXXjxg39/vvvWrJkiXbv3q3AwMAMryt//vzavHmzSpYsmeH7ttq1a5eefPJJlSlTRiNGjFCxYsV04cIF7dmzR4sWLdKgQYPk4+Mj6e+gtG/fPvXv3/+B9zd9+nTlyZMnRSEX+LciKAGZyPbt27Vnzx41b95cP/zwg2bNmpXhQckYo5s3b8rT0zND95san376qSTZj9OmTZtUq1YtJ1eV/rJkyaInnnjC/rxp06Y6duyYvvzyS02ZMkUFCxZ0YnUPj/j4eN2+fVvu7u7JLn/xxRe1Z88e/fjjj6pfv77Dsnbt2mnAgAHKmTNnRpT6yPjqq6905MgR/fLLL6pXr57DsgEDBighISFN9pPa85e7u7vDvylnCg0NVZYsWbR27Vp5e3vb25977jm98847MsY4sTrg34lL74BMZNasWZKk8ePHq1atWlq0aJGuX78uSbp165by5cunTp06JVnvypUr8vT01IABA+xt165d06BBg1S8eHH7ZUP9+/dXTEyMw7o2m029e/fWzJkzVaZMGbm7u+uzzz6TJL399tuqUaOGcuXKJR8fH1WpUkWzZs1K8j/s2NhYDRw4UP7+/sqWLZtq166tHTt2JHtJTkREhLp3765ChQrJzc1NxYsX19tvv63bt2+n6BjdvHlTCxYsUFBQkKZOnSrp/0bhrL799lsFBgbK3d1dJUqU0Pvvv2+/VO5OxhhNnz5dlSpVkqenp3LmzKnnnntOf/31V4pqkqSTJ0+qdevW8vHxka+vr1544QWdP3/evrxbt27KlSuX/f28U/369VWuXLkU7+tOiV/yjh8/rvPnz6tnz54qW7asvLy8lC9fPtWvX1/r169Pst6MGTNUsWJFeXl5ydvbW48//riGDRtmX379+nX758fDw0O5cuVS1apVtXDhQoftbN++XU8//bRy5colDw8PVa5cWV9++aVDn7lz58pms2nNmjXq0aOH8uTJo9y5c6t169Y6c+aMQ9+0/iwlXlo1YcIEjRkzRsWLF5e7u7vWrFmT7PHcsWOHVq5cqW7duiUJSYmqVaumIkWKJLss8Zi0a9dOxYoVk6enp4oVK6b27dvr+PHjDv1Scoz/+usvtWvXTgUKFJC7u7v8/PzUoEED7d69+677T00NqXlvbt26pSFDhtjfm6eeekpbt269Zx2JLl68KOnvEZzkZMnyf19HunTpomLFiiXpk9y/3eTOX59++mmKz5XWS++WLVsmm82mn3/+Ocm6M2bMkM1ms18mmNJjnFIXL16Uj4+PvLy8kl2e+Nrr1q2rH374QcePH3e4HDdRSs7bxYoV0/79+xUeHm5fP/GYJ34mjh075rD/5C4h3LVrl1q0aKF8+fLJ3d1dBQoUUPPmzXXq1KkHOgZAZsOIEpBJ3LhxQwsXLlS1atVUvnx5de3aVS+//LK++uorde7cWa6urnrhhRc0c+ZM/e9//7NfgiFJCxcu1M2bN/XSSy9J+vsLWJ06dXTq1CkNGzZMgYGB2r9/v0aMGKHffvtNP/30k8P/WJctW6b169drxIgR8vf3V758+ST9/SWie/fu9i+FW7ZsUZ8+fXT69GmNGDHCvv5LL72kxYsXa8iQIapfv74OHDigZ555xuGaeunvL7bVq1dXlixZNGLECJUsWVKbN2/WmDFjdOzYMc2ZM+e+x2nJkiW6fPmyunbtqoCAAD311FNavHixQkNDHb5grFq1Sq1bt1bt2rW1ePFi3b59W5MmTdK5c+eSbLN79+6aO3eu+vbtq/fee0+XLl3S6NGjVatWLe3Zs0d+fn73reuZZ55RmzZt9Oqrr2r//v166623dODAAf36669ydXVVv379NHv2bC1YsEAvv/yyfb0DBw5ozZo1+t///nfffSTnyJEjkqS8efPq0qVLkqSRI0fK399f0dHRWrp0qerWrauff/5ZdevWlSQtWrRIPXv2VJ8+fTRp0iRlyZJFR44c0YEDB+zbHTBggObNm6cxY8aocuXKiomJ0b59++xfeCVpzZo1atKkiWrUqKGZM2fK19dXixYtUtu2bXX9+vUkwebll19W8+bNtWDBAp08eVKDBw/WCy+8YL+cUEq/z9IHH3ygUqVKadKkSfLx8VFAQECyx3P16tWSpJCQkJS/CRbHjh1T6dKl1a5dO+XKlUtnz57VjBkzVK1aNR04cEB58uSRlLJj3KxZM8XHx2vChAkqUqSILly4oE2bNunKlStpUkOilLw3//3vf/X5559r0KBBCg4O1r59+9S6dWtFRUXd95jUrFlT0t+jdcOGDdN//vMf5c6dO6WH9J6SO38dPXo0RedKq8Qv/XPmzFGDBg0cls2dO1dVqlSxXyKY2mN8PzVr1tQPP/ygjh07qnv37qpevXqyI2PTp0/XK6+8oj///FNLly5Nsjwl5+2lS5fqueeek6+vr6ZPny5Jdx1hvZuYmBgFBwerePHi+t///ic/Pz9FRERozZo1KfpMAA8FAyBT+Pzzz40kM3PmTGOMMVFRUcbLy8v85z//sffZu3evkWQ+/vhjh3WrV69ugoKC7M/HjRtnsmTJYrZt2+bQ7+uvvzaSzIoVK+xtkoyvr6+5dOnSPeuLj483t27dMqNHjza5c+c2CQkJxhhj9u/fbySZ119/3aH/woULjSTTuXNne1v37t2Nl5eXOX78uEPfSZMmGUlm//7996zBGGPq169vPDw8zOXLl40xxsyZM8dIMrNmzXLoV61aNVO4cGETGxtrb4uKijK5c+c2d576Nm/ebCSZyZMnO6x/8uRJ4+npaYYMGXLPekaOHGkkmddee82hff78+UaS+eKLL+xtderUMZUqVXLo16NHD+Pj42OioqLuuZ/OnTub7Nmzm1u3bplbt26Z8+fPm/fff9/YbDZTrVq1ZNe5ffu2uXXrlmnQoIF55pln7O29e/c2OXLkuOf+ypcvb0JCQu7Z5/HHHzeVK1c2t27dcmhv0aKFyZ8/v4mPjzfG/N971LNnT4d+EyZMMJLM2bNnjTHp81k6evSokWRKlixp4uLi7vl6jDHm1VdfNZLMoUOH7tvXGGPWrFljJJk1a9bctc/t27dNdHS0yZ49u3n//fft7fc7xhcuXDCSTGhoaIpquZe71ZDS9+bgwYP3/Jzf+d7czejRo42bm5uRZCSZ4sWLm1dffdXs2bPHoV/nzp1N0aJFk6yf+G/tTnc7f6X0XJn4+ZgzZ469bcCAAcbT09NcuXLF3nbgwAEjyXz44Yd3fX13O8Yp+YwYY8zNmzdNSEiI/fhkzZrVVK5c2QwfPtxERkY69G3evHmyx8jqbudtY4wpV66cqVOnTpJ1Ej8TR48edWi3vo7t27cbSWbZsmX3rQN4WHHpHZBJzJo1S56enmrXrp0kycvLS88//7zWr1+vP/74Q5JUoUIFBQUFOfy1/ODBg9q6dau6du1qb1u+fLnKly+vSpUq6fbt2/ZH48aNk519qX79+snec/HLL7+oYcOG8vX1VdasWeXq6qoRI0bo4sWLioyMlCT7DGBt2rRxWPe5556Ti4vjoPXy5ctVr149FShQwKGupk2bOmzrbo4ePao1a9aodevWypEjhyTp+eefl7e3t8PldzExMdq+fbtCQkLk5uZmb/fy8lLLli2T1GSz2fTCCy841OTv76+KFSumeDazjh07Ojxv06aNXFxcHC7x6tevn3bv3q2NGzdK+vvyyHnz5qlz5853vdzmTjExMXJ1dZWrq6vy5s2r/v37q2nTpg5/VZ45c6aqVKkiDw8Pubi4yNXVVT///LMOHjxo71O9enVduXJF7du317fffpvsjH3Vq1fXypUr9cYbb2jt2rW6ceOGw/IjR47o0KFD9td957Fr1qyZzp49q8OHDzus8/TTTzs8T/zLfOKlSun5WXr66afl6uqa3GFNc9HR0Xr99df12GOPycXFRS4uLvLy8lJMTEyS9+FexzhXrlwqWbKkJk6cqClTpmjXrl0pvpcnpTUkut97k/g5vtvnPCXeeustnThxQrNnz1b37t3l5eWlmTNnKigoKMklnamR3PkrpefK5HTt2lU3btxwmCBlzpw5cnd3V4cOHextqT3G9+Pu7q6lS5fqwIEDmjp1qtq1a6fz58/r3XffVZkyZZL8e7qblJy308Jjjz2mnDlz6vXXX9fMmTMdRqSBRwVBCcgEjhw5onXr1ql58+YyxujKlSu6cuWKnnvuOUmO9+B07dpVmzdv1qFDhyT93//A27dvb+9z7tw57d271/6lOvHh7e0tY0ySL8bJ3TewdetWNWrUSJL0ySefaOPGjdq2bZuGDx8uSfYvdYmXCVkvT3NxcUlyac25c+f0/fffJ6kr8f6c+02xPXv2bBlj9Nxzz9mP0a1bt/T0009r48aN9mNy+fJlGWOSvWTO2nbu3Dl7X2tdW7ZsSfG03/7+/sm+/jsvo2rVqpWKFStmv8xu7ty5iomJUa9evVK0D09PT23btk3btm3T3r17deXKFf3www/2SRymTJmiHj16qEaNGvrmm2+0ZcsWbdu2TU2aNHH4Et6pUyfNnj1bx48f17PPPqt8+fKpRo0aCgsLs/f54IMP9Prrr2vZsmWqV6+ecuXKpZCQEHtoT7yEcdCgQUmOW8+ePSUlfT+tn4fES30y4rN0t3tjrBIvVzp69GiK+ienQ4cOmjZtml5++WX9+OOP2rp1q7Zt26a8efM6vA/3O8aJ98o0btxYEyZMUJUqVZQ3b1717dv3vpc2pbSGRCl9b+72OU8pPz8/vfTSS5o5c6b27t2r8PBwubm5qV+/finehtXd3tuUnCuTU65cOVWrVs0esuLj4/XFF1+oVatWypUrl71fao9xSpUpU0b9+/fXF198oRMnTmjKlCm6ePGi3nrrrfuum9Lzdlrw9fVVeHi4KlWqpGHDhqlcuXIqUKCARo4cqVu3bqXZfgBn4h4lIBNIDABff/21vv766yTLP/vsM40ZM0ZZs2ZV+/btNWDAAM2dO1fvvvuu5s2bp5CQEIe/qObJk0eenp53neTAeu289QZp6e/7WFxdXbV8+XJ5eHjY25ctW+bQL/FL0rlz5xxmXbt9+7ZDSEjcb2BgoN59991k6ypQoECy7ZKUkJBgv+G6devWyfaZPXu2JkyYoJw5c8pmsyV7P1JERESSmmw2m9avX5/sNfopvW4/IiIi2dd/55fILFmyqFevXho2bJgmT56s6dOnq0GDBipdunSK9pElSxZVrVr1rsu/+OIL1a1bVzNmzHBoT+5L9UsvvaSXXnpJMTExWrdunUaOHKkWLVro999/V9GiRZU9e3a9/fbbevvtt3Xu3Dn7yEfLli116NAh+2do6NChd30/Uvq6EqXnZym5z3hyGjdurGHDhmnZsmVq0qRJasqXJF29elXLly/XyJEj9cYbb9jbY2Nj7feQJbrfMZakokWL2id5+f333/Xll19q1KhRiouL08yZM/9xDSmV+N7c7XP+oGrXrq1GjRpp2bJlioyMVL58+eTh4aHY2Ngkfe/2R4u7vbcpOVfezUsvvaSePXvq4MGD+uuvv3T27FmH+5rS4xgnx2az6bXXXtPo0aO1b9+++/ZP6Xn7XhLXs74HyR3/ChUqaNGiRTLGaO/evZo7d65Gjx4tT09Ph+MCPKwISoCTxcfH67PPPlPJkiXt017fafny5Zo8ebJWrlypFi1aKGfOnAoJCdHnn3+umjVrKiIiIsmlJC1atNDYsWOVO3duFS9e/IHqstlscnFxUdasWe1tN27c0Lx58xz61a5dW5K0ePFiValSxd7+9ddfJ5nJrkWLFlqxYoVKliyZ6umVf/zxR506dUq9evWyj7TdqXfv3vr88881duxYZc+eXVWrVtWyZcs0adIk++V30dHRWr58eZKaxo8fr9OnTye55Cs15s+fr6CgIPvzL7/8Urdv37ZPoJDo5Zdf1qhRo9SxY0cdPnxY77333gPv0yrxh2jvtHfvXm3evFmFCxdOdp3s2bOradOmiouLU0hIiPbv36+iRYs69PHz81OXLl20Z88ehYaG6vr16ypdurQCAgK0Z88ejR07Nk3qz6jP0r1UqVJFTZs21axZs9SmTZtkZ77bvn278uXLl+zMdzabTcaYJO/Dp59+qvj4+LvuN7ljnC1bNoc+pUqV0ptvvqlvvvlGO3fuvOu2HrSGe0n8HN/tc34/586dU968eR1mt5P+Pv/98ccfypYtm/1y2mLFiikyMlLnzp2zjy7GxcXpxx9/TFXNKTlX3s2dIeuvv/5SwYIF7SM1Uvoc47NnzyY7OnbmzBldu3bN4bi7u7snOzqU0vP2vbaROPvd3r17Hf7Y8d133921dpvNpooVK2rq1KmaO3fuPT+fwMOEoAQ42cqVK3XmzBm99957Sb5US1L58uU1bdo0zZo1Sy1atJD09yUlixcvVu/evVWoUCE1bNjQYZ3+/fvrm2++Ue3atfXaa68pMDBQCQkJOnHihFavXq2BAwfe9/eZmjdvrilTpqhDhw565ZVXdPHiRU2aNCnJF4Ny5cqpffv2mjx5srJmzar69etr//79mjx5snx9fR2+GI0ePVphYWGqVauW+vbtq9KlS+vmzZs6duyYVqxYoZkzZ6pQoULJ1jNr1iy5uLho2LBhyY48de/eXX379tUPP/ygVq1aafTo0WrevLkaN26sfv36KT4+XhMnTpSXl5fDX3yffPJJvfLKK3rppZe0fft21a5dW9mzZ9fZs2e1YcMGVahQQT169LjnsZL+no3PxcVFwcHB9lnvKlasmCR85ciRQy+++KJmzJihokWLJrln6p9o0aKF3nnnHY0cOVJ16tTR4cOHNXr0aBUvXtzhy+x///tfeXp66sknn1T+/PkVERGhcePGydfXV9WqVZMk1ahRQy1atFBgYKBy5sypgwcPat68eapZs6b9C/xHH32kpk2bqnHjxurSpYsKFiyoS5cu6eDBg9q5c6e++uqrVNWfUZ+l+/n888/VpEkTNW3aVF27dlXTpk2VM2dOnT17Vt9//70WLlyoHTt2JBuUfHx8VLt2bU2cOFF58uRRsWLFFB4erlmzZtmDQKL7HeO9e/eqd+/eev755xUQECA3Nzf98ssv2rt37z3/Wp+aGlKqTJkyeuGFFxQaGipXV1c1bNhQ+/bts88ieD/z5s3TRx99pA4dOqhatWry9fXVqVOn9Omnn9pn5Ez8g0bbtm01YsQItWvXToMHD9bNmzf1wQcfPFAAud+58m5y5MihZ555RnPnztWVK1c0aNAgh89fehzjV155RVeuXNGzzz6r8uXLK2vWrDp06JCmTp2qLFmy6PXXX7f3rVChgpYsWaIZM2YoKCjIPtqc0vN24jYWLVqkxYsXq0SJEvLw8FCFChVUrVo1lS5dWoMGDdLt27eVM2dOLV26VBs2bHBYf/ny5Zo+fbpCQkJUokQJGWO0ZMkSXblyRcHBwQ90DIBMx0mTSAD4/0JCQoybm1uSWY3u1K5dO+Pi4mIiIiKMMX/PZFS4cGEjyQwfPjzZdaKjo82bb75pSpcubdzc3Iyvr6+pUKGCee211+zbMebvWaN69eqV7DZmz55tSpcubdzd3U2JEiXMuHHjzKxZs5LMiHTz5k0zYMAAky9fPuPh4WGeeOIJs3nzZuPr65tklqzz58+bvn37muLFixtXV1eTK1cuExQUZIYPH26io6OTreP8+fPGzc3tnjOEXb582Xh6epqWLVva25YuXWoqVKhg3NzcTJEiRcz48eNN3759Tc6cOZN9rTVq1DDZs2c3np6epmTJkubFF18027dvv+s+jfm/mbh27NhhWrZsaby8vIy3t7dp3769OXfuXLLrrF271kgy48ePv+e275Q46929xMbGmkGDBpmCBQsaDw8PU6VKFbNs2bIks4h99tlnpl69esbPz8+4ubmZAgUKmDZt2pi9e/fa+7zxxhumatWqJmfOnPb3/7XXXjMXLlxw2OeePXtMmzZtTL58+Yyrq6vx9/c39evXt8/eaMz/zaJlnYUxudnA0vqzlDir2cSJE1N0nBPduHHDfPDBB6ZmzZrGx8fHuLi4mAIFCpjWrVubH3744Z6v4dSpU+bZZ581OXPmNN7e3qZJkyZm3759pmjRog6zw93vGJ87d8506dLFPP744yZ79uzGy8vLBAYGmqlTp5rbt2/fs/6U1pCa9yY2NtYMHDgwyXtj3WZyDhw4YAYOHGiqVq1q8ubNa1xcXEzOnDlNnTp1zLx585L0X7FihalUqZLx9PQ0JUqUMNOmTbvrrHd3O38Zc/9zZXKz3iVavXq1fQa633//PcnylB7jlM569+OPP5quXbuasmXLGl9fX+Pi4mLy589vWrdubTZv3uzQ99KlS+a5554zOXLkMDabzeG4pPS8fezYMdOoUSPj7e1tJDmcI37//XfTqFEj4+PjY/LmzWv69OljfvjhB4fXcejQIdO+fXtTsmRJ4+npaXx9fU316tXN3Llz7/k6gYeJzRh+6hlA2tu0aZOefPJJzZ8/32GmKGe6deuWKlWqpIIFC9p/L8cZBg4cqBkzZujkyZNp9lsyj7LM+FkCADz6uPQOwD8WFhamzZs3KygoSJ6entqzZ4/Gjx+vgICAu97onxG6deum4OBg++VlM2fO1MGDB/X+++87pZ4tW7bo999/1/Tp09W9e3dCUjIy62cJAPDvQ1AC8I/5+Pho9erVCg0NVVRUlPLkyaOmTZtq3LhxDjMvZbSoqCgNGjRI58+fl6urq6pUqaIVK1ak+D6FtJZ470mLFi00ZswYp9SQ2WXWzxIA4N+HS+8AAAAAwIIfnAUAAAAAC4ISAAAAAFgQlAAAAADA4pGfzCEhIUFnzpyRt7e3bDabs8sBAAAA4CTGGEVFRalAgQIOPySdnEc+KJ05c0aFCxd2dhkAAAAAMomTJ0+qUKFC9+zzyAclb29vSX8fDB8fHydXAwAAAMBZrl27psKFC9szwr088kEp8XI7Hx8fghIAAACAFN2Sw2QOAAAAAGBBUAIAAAAAC4ISAAAAAFg88vcoAQAAAI8iY4xu376t+Ph4Z5eSaWTNmlUuLi5p8rNABCUAAADgIRMXF6ezZ8/q+vXrzi4l08mWLZvy588vNze3f7QdghIAAADwEElISNDRo0eVNWtWFShQQG5ubmkygvKwM8YoLi5O58+f19GjRxUQEHDfH5W9F4ISAAAA8BCJi4tTQkKCChcurGzZsjm7nEzF09NTrq6uOn78uOLi4uTh4fHA22IyBwAAAOAh9E9GSx5laXVcOLoAAAAAYEFQAgAAAAALghIAAACAf2zt2rWy2Wy6cuVKuu6nS5cuCgkJSdd9SAQlAAAA4JESGRmp7t27q0iRInJ3d5e/v78aN26szZs3p+t+a9WqpbNnz8rX1zdd95NRmPUOAAAAeIQ8++yzunXrlj777DOVKFFC586d088//6xLly490PaMMYqPj5eLy72jg5ubm/z9/R9oH5kRI0oAAADAI+LKlSvasGGD3nvvPdWrV09FixZV9erVNXToUDVv3lzHjh2TzWbT7t27Hdax2Wxau3atpP+7hO7HH39U1apV5e7urlmzZslms+nQoUMO+5syZYqKFSsmY4zDpXdXr16Vp6enVq1a5dB/yZIlyp49u6KjoyVJp0+fVtu2bZUzZ07lzp1brVq10rFjx+z94+PjNWDAAOXIkUO5c+fWkCFDZIxJl2NnRVACAAAAHhFeXl7y8vLSsmXLFBsb+4+2NWTIEI0bN04HDx7Uc889p6CgIM2fP9+hz4IFC9ShQ4ckP3jr6+ur5s2bJ9u/VatW8vLy0vXr11WvXj15eXlp3bp12rBhg7y8vNSkSRPFxcVJkiZPnqzZs2dr1qxZ2rBhgy5duqSlS5f+o9eVUgQlAAAA4BHh4uKiuXPn6rPPPlOOHDn05JNPatiwYdq7d2+qtzV69GgFBwerZMmSyp07tzp27KgFCxbYl//+++/asWOHXnjhhWTX79ixo5YtW6br169Lkq5du6YffvjB3n/RokXKkiWLPv30U1WoUEFlypTRnDlzdOLECfvoVmhoqIYOHapnn31WZcqU0cyZMzPsHiiCEgAAAPAIefbZZ3XmzBl99913aty4sdauXasqVapo7ty5qdpO1apVHZ63a9dOx48f15YtWyRJ8+fPV6VKlVS2bNlk12/evLlcXFz03XffSZK++eYbeXt7q1GjRpKkHTt26MiRI/L29raPhOXKlUs3b97Un3/+qatXr+rs2bOqWbOmfZsuLi5J6kovBCUAAADgEePh4aHg4GCNGDFCmzZtUpcuXTRy5EhlyfL31/877/O5detWstvInj27w/P8+fOrXr169lGlhQsX3nU0Sfp7cofnnnvO3n/BggVq27atfVKIhIQEBQUFaffu3Q6P33//XR06dHjwF59GCEoAAADAI65s2bKKiYlR3rx5JUlnz561L7tzYof76dixoxYvXqzNmzfrzz//VLt27e7bf9WqVdq/f7/WrFmjjh072pdVqVJFf/zxh/Lly6fHHnvM4eHr6ytfX1/lz5/fPoIlSbdv39aOHTtSXO8/wfTgaSho8OfOLgF3sWPii84uAQAAIN1dvHhRzz//vLp27arAwEB5e3tr+/btmjBhglq1aiVPT0898cQTGj9+vIoVK6YLFy7ozTffTPH2W7durR49eqhHjx6qV6+eChYseM/+derUkZ+fnzp27KhixYrpiSeesC/r2LGjJk6cqFatWmn06NEqVKiQTpw4oSVLlmjw4MEqVKiQ+vXrp/HjxysgIEBlypTRlClT0v0HbRMxogQAAAA8Iry8vFSjRg1NnTpVtWvXVvny5fXWW2/pv//9r6ZNmyZJmj17tm7duqWqVauqX79+GjNmTIq37+Pjo5YtW2rPnj0Oo0N3Y7PZ1L59+2T7Z8uWTevWrVORIkXUunVrlSlTRl27dtWNGzfk4+MjSRo4cKBefPFFdenSRTVr1pS3t7eeeeaZVByRB2czGTURuZNcu3ZNvr6+unr1qv2ApxdGlDIvRpQAAMCj4ubNmzp69KiKFy8uDw8PZ5eT6dzr+KQmGzCiBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYuzi4AAAAAQPoKGvx5hu5vx8QXM3R/6YERJQAAAACZwvTp01W8eHF5eHgoKChI69evd1otBCUAAAAATrd48WL1799fw4cP165du/Sf//xHTZs21YkTJ5xSD0EJAAAAgNNNmTJF3bp108svv6wyZcooNDRUhQsX1owZM5xSD0EJAAAAgFPFxcVpx44datSokUN7o0aNtGnTJqfURFACAAAA4FQXLlxQfHy8/Pz8HNr9/PwUERHhlJoISgAAAAAyBZvN5vDcGJOkLaMQlAAAAAA4VZ48eZQ1a9Yko0eRkZFJRpkyCkEJAAAAgFO5ubkpKChIYWFhDu1hYWGqVauWU2riB2cBAAAAON2AAQPUqVMnVa1aVTVr1tTHH3+sEydO6NVXX3VKPQQlAAAA4BG3Y+KLzi7hvtq2bauLFy9q9OjROnv2rMqXL68VK1aoaNGiTqmHoAQAAAAgU+jZs6d69uzp7DIkcY8SAAAAACRBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYOHi7AISjRs3TsOGDVO/fv0UGhoqSTLG6O2339bHH3+sy5cvq0aNGvrf//6ncuXKObdYAAAA4CFyYnSFDN1fkRG/Zej+0kOmGFHatm2bPv74YwUGBjq0T5gwQVOmTNG0adO0bds2+fv7Kzg4WFFRUU6qFAAAAEB6WLdunVq2bKkCBQrIZrNp2bJlTq3H6UEpOjpaHTt21CeffKKcOXPa240xCg0N1fDhw9W6dWuVL19en332ma5fv64FCxY4sWIAAAAAaS0mJkYVK1bUtGnTnF2KpEwQlHr16qXmzZurYcOGDu1Hjx5VRESEGjVqZG9zd3dXnTp1tGnTprtuLzY2VteuXXN4AAAAAMjcmjZtqjFjxqh169bOLkWSk+9RWrRokXbu3Klt27YlWRYRESFJ8vPzc2j38/PT8ePH77rNcePG6e23307bQgEAAAD8qzhtROnkyZPq16+fvvjiC3l4eNy1n81mc3hujEnSdqehQ4fq6tWr9sfJkyfTrGYAAAAA/w5OG1HasWOHIiMjFRQUZG+Lj4/XunXrNG3aNB0+fFjS3yNL+fPnt/eJjIxMMsp0J3d3d7m7u6df4QAAAAAeeU4bUWrQoIF+++037d692/6oWrWqOnbsqN27d6tEiRLy9/dXWFiYfZ24uDiFh4erVq1aziobAAAAwL+A00aUvL29Vb58eYe27NmzK3fu3Pb2/v37a+zYsQoICFBAQIDGjh2rbNmyqUOHDs4oGQAAAMC/RKb5wdnkDBkyRDdu3FDPnj3tPzi7evVqeXt7O7s0AAAAAGkoOjpaR44csT8/evSodu/erVy5cqlIkSIZXo/NGGMyfK8Z6Nq1a/L19dXVq1fl4+OTrvsKGvx5um4fD27HxBedXQIAAECauHnzpo4eParixYvfc1K0h83atWtVr169JO2dO3fW3LlzU7ydex2f1GSDTD2iBAAAAODfoW7duspMYzhO/8FZAAAAAMhsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAgIdQZpr4IDNJq+NCUAIAAAAeIq6urpKk69evO7mSzCnxuCQepwfF9OAAAADAQyRr1qzKkSOHIiMjJUnZsmWTzWZzclXOZ4zR9evXFRkZqRw5cihr1qz/aHsEJQAAAOAh4+/vL0n2sIT/kyNHDvvx+ScISgAAAMBDxmazKX/+/MqXL59u3brl7HIyDVdX1388kpSIoAQAAAA8pLJmzZpmwQCOmMwBAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwMLF2QUAGeHE6ArOLgH3UGTEb84uAQAAwAEjSgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYOHi7AIA4FESNPhzZ5eAe9gx8UVnlwAAeEgwogQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYODUozZgxQ4GBgfLx8ZGPj49q1qyplStX2pcbYzRq1CgVKFBAnp6eqlu3rvbv3+/EigEAAAD8Gzg1KBUqVEjjx4/X9u3btX37dtWvX1+tWrWyh6EJEyZoypQpmjZtmrZt2yZ/f38FBwcrKirKmWUDAAAAeMQ5NSi1bNlSzZo1U6lSpVSqVCm9++678vLy0pYtW2SMUWhoqIYPH67WrVurfPny+uyzz3T9+nUtWLDAmWUDAAAAeMRlmnuU4uPjtWjRIsXExKhmzZo6evSoIiIi1KhRI3sfd3d31alTR5s2bbrrdmJjY3Xt2jWHBwAAAACkhtOD0m+//SYvLy+5u7vr1Vdf1dKlS1W2bFlFRERIkvz8/Bz6+/n52ZclZ9y4cfL19bU/ChcunK71AwAAAHj0OD0olS5dWrt379aWLVvUo0cPde7cWQcOHLAvt9lsDv2NMUna7jR06FBdvXrV/jh58mS61Q4AAADg0eTi7ALc3Nz02GOPSZKqVq2qbdu26f3339frr78uSYqIiFD+/Pnt/SMjI5OMMt3J3d1d7u7u6Vs0AAAAgEea00eUrIwxio2NVfHixeXv76+wsDD7sri4OIWHh6tWrVpOrBAAAADAo86pI0rDhg1T06ZNVbhwYUVFRWnRokVau3atVq1aJZvNpv79+2vs2LEKCAhQQECAxo4dq2zZsqlDhw7OLBsAAADAI86pQencuXPq1KmTzp49K19fXwUGBmrVqlUKDg6WJA0ZMkQ3btxQz549dfnyZdWoUUOrV6+Wt7e3M8sGAAAA8IhzalCaNWvWPZfbbDaNGjVKo0aNypiCAAAAAECZ8B4lAAAAAHA2ghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgMUDBaU///xTb775ptq3b6/IyEhJ0qpVq7R///40LQ4AAAAAnCHVQSk8PFwVKlTQr7/+qiVLlig6OlqStHfvXo0cOTLNCwQAAACAjJbqoPTGG29ozJgxCgsLk5ubm729Xr162rx5c5oWBwAAAADOkOqg9Ntvv+mZZ55J0p43b15dvHgxTYoCAAAAAGdKdVDKkSOHzp49m6R9165dKliwYJoUBQAAAADO5JLaFTp06KDXX39dX331lWw2mxISErRx40YNGjRIL774YnrUCAAA8FAJGvy5s0vAXeyYyPdVpEyqR5TeffddFSlSRAULFlR0dLTKli2r2rVrq1atWnrzzTfTo0YAAAAAyFCpHlFydXXV/PnzNXr0aO3atUsJCQmqXLmyAgIC0qM+AAAAAMhwqQ5KiUqWLKmSJUumZS0AAAAAkCmkOigNGDAg2XabzSYPDw899thjatWqlXLlyvWPiwMAAAAAZ0h1UNq1a5d27typ+Ph4lS5dWsYY/fHHH8qaNasef/xxTZ8+XQMHDtSGDRtUtmzZ9KgZAAAAANJVqidzaNWqlRo2bKgzZ85ox44d2rlzp06fPq3g4GC1b99ep0+fVu3atfXaa6+lR70AAAAAkO5SPaI0ceJEhYWFycfHx97m4+OjUaNGqVGjRurXr59GjBihRo0apWmhAAD8UydGV3B2CbiLIiN+c3YJAOAg1SNKV69eVWRkZJL28+fP69q1a5L+/lHauLi4f14dAAAAADjBA11617VrVy1dulSnTp3S6dOntXTpUnXr1k0hISGSpK1bt6pUqVJpXSsAAAAAZIhUX3r30Ucf6bXXXlO7du10+/btvzfi4qLOnTtrypQpkqTHH39cn376adpWCgAAAAAZJNVBycvLS5988ommTp2qv/76S8YYlSxZUl5eXvY+lSpVSssaAQAAACBDpfrSu0ReXl4KDAxUxYoVlS1bNn3//ff2S+8AAAAA4GH2wEFJkv744w8NHTpUhQoVUps2bdKqJgAAAABwqlRfenfjxg19+eWXmjVrlrZs2aL4+HhNnTpVXbt2dbj8DgAAAAAeVikeUdq6dateeeUV+fv7a9q0aXr22Wd18uRJZcmSRQ0bNiQkAQAAAHhkpHhEqVatWurTp4+2bt2q0qVLp2dNAAAAAOBUKQ5K9evX16xZsxQZGalOnTqpcePGstls6VkbAAAAADhFii+9W716tfbv36/SpUurR48eyp8/v/r16ydJBCYAAAAAj5RUzXpXuHBhjRgxQkePHtW8efMUGRkpFxcXtWrVSsOGDdPOnTvTq04AAAAAyDAPPD14cHCwFi5cqDNnzqhPnz5auXKlqlWrlpa1AQAAAIBT/KPfUZKknDlzqk+fPtq1a5e2bduWFjUBAAAAgFP946B0pypVqqTl5gAAAADAKdI0KAEAAADAo4CgBAAAAAAWBCUAAAAAsHigoHT79m399NNP+uijjxQVFSVJOnPmjKKjo9O0OAAAAABwBpfUrnD8+HE1adJEJ06cUGxsrIKDg+Xt7a0JEybo5s2bmjlzZnrUCQAAAAAZJtUjSv369VPVqlV1+fJleXp62tufeeYZ/fzzz2laHAAAAAA4Q6pHlDZs2KCNGzfKzc3Nob1o0aI6ffp0mhUGAAAAAM6S6hGlhIQExcfHJ2k/deqUvL2906QoAAAAAHCmVAel4OBghYaG2p/bbDZFR0dr5MiRatasWVrWBgAAAABOkepL76ZOnap69eqpbNmyunnzpjp06KA//vhDefLk0cKFC9OjRgAAAADIUKkOSgUKFNDu3bu1cOFC7dy5UwkJCerWrZs6duzoMLkDAAAAADysUh2UJMnT01Ndu3ZV165d07oeAAAAAHC6VAel7777Ltl2m80mDw8PPfbYYypevPg/LgwAAAAAnCXVQSkkJEQ2m03GGIf2xDabzaannnpKy5YtU86cOdOsUAAAAADIKKme9S4sLEzVqlVTWFiYrl69qqtXryosLEzVq1fX8uXLtW7dOl28eFGDBg1Kj3oBAAAAIN2lekSpX79++vjjj1WrVi17W4MGDeTh4aFXXnlF+/fvV2hoKPcvAQAAAHhopXpE6c8//5SPj0+Sdh8fH/3111+SpICAAF24cOGfVwcAAAAATpDqoBQUFKTBgwfr/Pnz9rbz589ryJAhqlatmiTpjz/+UKFChdKuSgAAAADIQKm+9G7WrFlq1aqVChUqpMKFC8tms+nEiRMqUaKEvv32W0lSdHS03nrrrTQvFgAAAAAyQqqDUunSpXXw4EH9+OOP+v3332WM0eOPP67g4GBlyfL3AFVISEha1wkAAAAAGeaBfnDWZrOpSZMmatKkSVrXAwAAAABO90BBKSYmRuHh4Tpx4oTi4uIclvXt2zdNCgMAAAAAZ0l1UNq1a5eaNWum69evKyYmRrly5dKFCxeULVs25cuXj6AEAAAA4KGX6lnvXnvtNbVs2VKXLl2Sp6entmzZouPHjysoKEiTJk1KjxoBAAAAIEOlOijt3r1bAwcOVNasWZU1a1bFxsaqcOHCmjBhgoYNG5YeNQIAAABAhkp1UHJ1dZXNZpMk+fn56cSJE5IkX19f+38DAAAAwMMs1fcoVa5cWdu3b1epUqVUr149jRgxQhcuXNC8efNUoUKF9KgRAAAAADJUqkeUxo4dq/z580uS3nnnHeXOnVs9evRQZGSkPv744zQvEAAAAAAyWqpGlIwxyps3r8qVKydJyps3r1asWJEuhQEAAACAs6RqRMkYo4CAAJ06dSq96gEAAAAAp0tVUMqSJYsCAgJ08eLF9KoHAAAAAJwu1fcoTZgwQYMHD9a+ffvSox4AAAAAcLpUz3r3wgsv6Pr166pYsaLc3Nzk6enpsPzSpUtpVhwAAAAAOEOqg1JoaGg6lAEAAAAAmUeqg1Lnzp3Tow4AAAAAyDRSfY+SJP35559688031b59e0VGRkqSVq1apf3796dpcQAAAADgDKkOSuHh4apQoYJ+/fVXLVmyRNHR0ZKkvXv3auTIkWleIAAAAABktFRfevfGG29ozJgxGjBggLy9ve3t9erV0/vvv5+mxQEAAABp6cToCs4uAXdRZMRvzi7BQapHlH777Tc988wzSdrz5s3L7ysBAAAAeCSkOijlyJFDZ8+eTdK+a9cuFSxYMFXbGjdunKpVqyZvb2/ly5dPISEhOnz4sEMfY4xGjRqlAgUKyNPTU3Xr1uVeKAAAAADpKtVBqUOHDnr99dcVEREhm82mhIQEbdy4UYMGDdKLL76Yqm2Fh4erV69e2rJli8LCwnT79m01atRIMTEx9j4TJkzQlClTNG3aNG3btk3+/v4KDg5WVFRUaksHAAAAgBRJ9T1K7777rrp06aKCBQvKGKOyZcsqPj5eHTp00Jtvvpmqba1atcrh+Zw5c5QvXz7t2LFDtWvXljFGoaGhGj58uFq3bi1J+uyzz+Tn56cFCxaoe/fuqS0fAAAAAO4r1UHJ1dVV8+fP1+jRo7Vr1y4lJCSocuXKCggI+MfFXL16VZKUK1cuSdLRo0cVERGhRo0a2fu4u7urTp062rRpU7JBKTY2VrGxsfbn165d+8d1AQAAAPh3SXVQCg8PV506dVSyZEmVLFkyzQoxxmjAgAF66qmnVL58eUlSRESEJMnPz8+hr5+fn44fP57sdsaNG6e33347zeoCAAAA8O+T6nuUgoODVaRIEb3xxhvat29fmhXSu3dv7d27VwsXLkyyzGazOTw3xiRpSzR06FBdvXrV/jh58mSa1QgAAADg3yHVQenMmTMaMmSI1q9fr8DAQAUGBmrChAk6derUAxfRp08ffffdd1qzZo0KFSpkb/f395f0fyNLiSIjI5OMMiVyd3eXj4+PwwMAAAAAUiPVQSlPnjzq3bu3Nm7cqD///FNt27bV559/rmLFiql+/fqp2pYxRr1799aSJUv0yy+/qHjx4g7LixcvLn9/f4WFhdnb4uLiFB4erlq1aqW2dAAAAABIkVTfo3Sn4sWL64033lDFihX11ltvKTw8PFXr9+rVSwsWLNC3334rb29v+8iRr6+vPD09ZbPZ1L9/f40dO1YBAQEKCAjQ2LFjlS1bNnXo0OGflA4AAAAAd/XAQWnjxo2aP3++vv76a928eVNPP/20xo4dm6ptzJgxQ5JUt25dh/Y5c+aoS5cukqQhQ4boxo0b6tmzpy5fvqwaNWpo9erV8vb2ftDSAQAAAOCeUh2Uhg0bpoULF+rMmTNq2LChQkNDFRISomzZsqV658aY+/ax2WwaNWqURo0alertAwAAAMCDSHVQWrt2rQYNGqS2bdsqT548Dst2796tSpUqpVVtAAAAAOAUqQ5KmzZtcnh+9epVzZ8/X59++qn27Nmj+Pj4NCsOAAAAAJwh1bPeJfrll1/0wgsvKH/+/Prwww/VrFkzbd++PS1rAwAAAACnSNWI0qlTpzR37lzNnj1bMTExatOmjW7duqVvvvlGZcuWTa8aAQAAACBDpXhEqVmzZipbtqwOHDigDz/8UGfOnNGHH36YnrUBAAAAgFOkeERp9erV6tu3r3r06KGAgID0rAkAAAAAnCrFI0rr169XVFSUqlatqho1amjatGk6f/58etYGAAAAAE6R4qBUs2ZNffLJJzp79qy6d++uRYsWqWDBgkpISFBYWJiioqLSs04AAAAAyDCpnvUuW7Zs6tq1qzZs2KDffvtNAwcO1Pjx45UvXz49/fTT6VEjAAAAAGSoB54eXJJKly6tCRMm6NSpU1q4cGFa1QQAAAAATvWPglKirFmzKiQkRN99911abA4AAAAAnCpNghIAAAAAPEoISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsHBqUFq3bp1atmypAgUKyGazadmyZQ7LjTEaNWqUChQoIE9PT9WtW1f79+93TrEAAAAA/jWcGpRiYmJUsWJFTZs2LdnlEyZM0JQpUzRt2jRt27ZN/v7+Cg4OVlRUVAZXCgAAAODfxMWZO2/atKmaNm2a7DJjjEJDQzV8+HC1bt1akvTZZ5/Jz89PCxYsUPfu3TOyVAAAAAD/Ipn2HqWjR48qIiJCjRo1sre5u7urTp062rRp013Xi42N1bVr1xweAAAAAJAamTYoRURESJL8/Pwc2v38/OzLkjNu3Dj5+vraH4ULF07XOgEAAAA8ejJtUEpks9kcnhtjkrTdaejQobp69ar9cfLkyfQuEQAAAMAjxqn3KN2Lv7+/pL9HlvLnz29vj4yMTDLKdCd3d3e5u7une30AAAAAHl2ZdkSpePHi8vf3V1hYmL0tLi5O4eHhqlWrlhMrAwAAAPCoc+qIUnR0tI4cOWJ/fvToUe3evVu5cuVSkSJF1L9/f40dO1YBAQEKCAjQ2LFjlS1bNnXo0MGJVQMAAAB41Dk1KG3fvl316tWzPx8wYIAkqXPnzpo7d66GDBmiGzduqGfPnrp8+bJq1Kih1atXy9vb21klAwAAAPgXcGpQqlu3rowxd11us9k0atQojRo1KuOKAgAAAPCvl2nvUQIAAAAAZyEoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACABUEJAAAAACwISgAAAABgQVACAAAAAAuCEgAAAABYEJQAAAAAwIKgBAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADAgqAEAAAAABYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAAAAAFgQlAAAAALAgKAEAAACAxUMRlKZPn67ixYvLw8NDQUFBWr9+vbNLAgAAAPAIy/RBafHixerfv7+GDx+uXbt26T//+Y+aNm2qEydOOLs0AAAAAI+oTB+UpkyZom7duunll19WmTJlFBoaqsKFC2vGjBnOLg0AAADAI8rF2QXcS1xcnHbs2KE33njDob1Ro0batGlTsuvExsYqNjbW/vzq1auSpGvXrqVfof9ffOyNdN8HHkyUa7yzS8A9ZMS/z4zCeSBz41yQeT1K5wGJc0Fmxnkg88qI80DiPowx9+2bqYPShQsXFB8fLz8/P4d2Pz8/RUREJLvOuHHj9PbbbydpL1y4cLrUiIdDeWcXgHsb5+vsCvAvwbkgE+M8gAzCeSATy8DzQFRUlHx9772/TB2UEtlsNofnxpgkbYmGDh2qAQMG2J8nJCTo0qVLyp07913XwaPt2rVrKly4sE6ePCkfHx9nlwPASTgXAOA8AGOMoqKiVKBAgfv2zdRBKU+ePMqaNWuS0aPIyMgko0yJ3N3d5e7u7tCWI0eO9CoRDxEfHx9OigA4FwDgPPAvd7+RpESZejIHNzc3BQUFKSwszKE9LCxMtWrVclJVAAAAAB51mXpESZIGDBigTp06qWrVqqpZs6Y+/vhjnThxQq+++qqzSwMAAADwiMr0Qalt27a6ePGiRo8erbNnz6p8+fJasWKFihYt6uzS8JBwd3fXyJEjk1ySCeDfhXMBAM4DSA2bScnceAAAAADwL5Kp71ECAAAAAGcgKAEAAACABUEJAAAAACwISgAAAABgQVDCI2vdunVq2bKlChQoIJvNpmXLljm7JAAZbNy4capWrZq8vb2VL18+hYSE6PDhw84uC0AGmjFjhgIDA+0/MluzZk2tXLnS2WXhIUBQwiMrJiZGFStW1LRp05xdCgAnCQ8PV69evbRlyxaFhYXp9u3batSokWJiYpxdGoAMUqhQIY0fP17bt2/X9u3bVb9+fbVq1Ur79+93dmnI5JgeHP8KNptNS5cuVUhIiLNLAeBE58+fV758+RQeHq7atWs7uxwATpIrVy5NnDhR3bp1c3YpyMQy/Q/OAgCQVq5evSrp7y9JAP594uPj9dVXXykmJkY1a9Z0djnI5AhKAIB/BWOMBgwYoKeeekrly5d3djkAMtBvv/2mmjVr6ubNm/Ly8tLSpUtVtmxZZ5eFTI6gBAD4V+jdu7f27t2rDRs2OLsUABmsdOnS2r17t65cuaJvvvlGnTt3Vnh4OGEJ90RQAgA88vr06aPvvvtO69atU6FChZxdDoAM5ubmpscee0ySVLVqVW3btk3vv/++PvroIydXhsyMoAQAeGQZY9SnTx8tXbpUa9euVfHixZ1dEoBMwBij2NhYZ5eBTI6ghEdWdHS0jhw5Yn9+9OhR7d69W7ly5VKRIkWcWBmAjNKrVy8tWLBA3377rby9vRURESFJ8vX1laenp5OrA5ARhg0bpqZNm6pw4cKKiorSokWLtHbtWq1atcrZpSGTY3pwPLLWrl2revXqJWnv3Lmz5s6dm/EFAchwNpst2fY5c+aoS5cuGVsMAKfo1q2bfv75Z509e1a+vr4KDAzU66+/ruDgYGeXhkyOoAQAAAAAFlmcXQAAAAAAZDYEJQAAAACwICgBAAAAgAVBCQAAAAAsCEoAAAAAYEFQAgAAAAALghIAAAAAWBCUAAAAAMCCoAQAQDobNWqUKlWq5OwyAACpQFACADjo0qWLbDabbDabXF1dVaJECQ0aNEgxMTHOLi3T+uabb1S3bl35+vrKy8tLgYGBGj16tC5duuTs0gAAD4igBABIokmTJjp79qz++usvjRkzRtOnT9egQYOcXZbTxMfHKyEhIdllw4cPV9u2bVWtWjWtXLlS+/bt0+TJk7Vnzx7NmzcvgysFAKQVghIAIAl3d3f5+/urcOHC6tChgzp27Khly5ZJkr744gtVrVpV3t7e8vf3V4cOHRQZGWlf9/Lly+rYsaPy5s0rT09PBQQEaM6cOZKkuLg49e7dW/nz55eHh4eKFSumcePG2de9evWqXnnlFeXLl08+Pj6qX7++9uzZY1+eeAnbvHnzVKxYMfn6+qpdu3aKioqy94mKilLHjh2VPXt25c+fX1OnTlXdunXVv39/e5+4uDgNGTJEBQsWVPbs2VWjRg2tXbvWvnzu3LnKkSOHli9frrJly8rd3V3Hjx9Pcpy2bt2qsWPHavLkyZo4caJq1aqlYsWKKTg4WN988406d+6c7PHdtm2bgoODlSdPHvn6+qpOnTrauXOnQ59Ro0apSJEicnd3V4ECBdS3b1/7sunTpysgIEAeHh7y8/PTc889d493EwDwIAhKAID78vT01K1btyT9HTLeeecd7dmzR8uWLdPRo0fVpUsXe9+33npLBw4c0MqVK3Xw4EHNmDFDefLkkSR98MEH+u677/Tll1/q8OHD+uKLL1SsWDFJkjFGzZs3V0REhFasWKEdO3aoSpUqatCggcMlbH/++aeWLVum5cuXa/ny5QoPD9f48ePtywcMGKCNGzfqu+++U1hYmNavX58khLz00kvauHGjFi1apL179+r5559XkyZN9Mcff9j7XL9+XePGjdOnn36q/fv3K1++fEmOy/z58+Xl5aWePXsme9xy5MiRbHtUVJQ6d+6s9evXa8uWLQoICFCzZs3sge/rr7/W1KlT9dFHH+mPP/7QsmXLVKFCBUnS9u3b1bdvX40ePVqHDx/WqlWrVLt27WT3AwD4BwwAAHfo3LmzadWqlf35r7/+anLnzm3atGmTbP+tW7caSSYqKsoYY0zLli3NSy+9lGzfPn36mPr165uEhIQky37++Wfj4+Njbt686dBesmRJ89FHHxljjBk5cqTJli2buXbtmn354MGDTY0aNYwxxly7ds24urqar776yr78ypUrJlu2bKZfv37GGGOOHDlibDabOX36tMN+GjRoYIYOHWqMMWbOnDlGktm9e3eyryNR06ZNTWBg4D37JNZdsWLFuy6/ffu28fb2Nt9//70xxpjJkyebUqVKmbi4uCR9v/nmG+Pj4+NwDAAAaY8RJQBAEsuXL5eXl5c8PDxUs2ZN1a5dWx9++KEkadeuXWrVqpWKFi0qb29v1a1bV5J04sQJSVKPHj20aNEiVapUSUOGDNGmTZvs2+3SpYt2796t0qVLq2/fvlq9erV92Y4dOxQdHa3cuXPLy8vL/jh69Kj+/PNPe79ixYrJ29vb/jx//vz2S//++usv3bp1S9WrV7cv9/X1VenSpe3Pd+7cKWOMSpUq5bCf8PBwh/24ubkpMDDwnsfJGCObzZbi45ooMjJSr776qkqVKiVfX1/5+voqOjrafgyff/553bhxQyVKlNB///tfLV26VLdv35YkBQcHq2jRoipRooQ6deqk+fPn6/r166muAQBwby7OLgAAkPnUq1dPM2bMkKurqwoUKCBXV1dJUkxMjBo1aqRGjRrpiy++UN68eXXixAk1btxYcXFxkqSmTZvq+PHj+uGHH/TTTz+pQYMG6tWrlyZNmqQqVaro6NGjWrlypX766Se1adNGDRs21Ndff62EhATlz5/f4V6hRHdewpZYSyKbzWafaMEYY2+7U2K7JCUkJChr1qzasWOHsmbN6tDPy8vL/t+enp73DUGlSpXShg0bdOvWrSR13UuXLl10/vx5hYaGqmjRonJ3d1fNmjXtx7Bw4cI6fPiwwsLC9NNPP6lnz56aOHGiwsPD5e3trZ07d2rt2rVavXq1RowYoVGjRmnbtm13vdQPAJB6jCgBAJLInj27HnvsMRUtWtQhABw6dEgXLlzQ+PHj9Z///EePP/64w0QOifLmzasuXbroiy++UGhoqD7++GP7Mh8fH7Vt21affPKJFi9erG+++UaXLl1SlSpVFBERIRcXFz322GMOj8R7nO6nZMmScnV11datW+1t165dc7j3qHLlyoqPj1dkZGSS/fj7+6fqOHXo0EHR0dGaPn16ssuvXLmSbPv69evVt29fNWvWTOXKlZO7u7suXLjg0MfT01NPP/20PvjgA61du1abN2/Wb7/9JklycXFRw4YNNWHCBO3du1fHjh3TL7/8kqraAQD3xogSACDFihQpIjc3N3344Yd69dVXtW/fPr3zzjsOfUaMGKGgoCCVK1dOsbGxWr58ucqUKSNJmjp1qvLnz69KlSopS5Ys+uqrr+Tv768cOXKoYcOGqlmzpkJCQvTee++pdOnSOnPmjFasWKGQkBBVrVr1vvV5e3urc+fOGjx4sHLlyqV8+fJp5MiRypIli310qFSpUurYsaNefPFFTZ48WZUrV9aFCxf0yy+/qEKFCmrWrFmKj0eNGjU0ZMgQDRw4UKdPn9YzzzyjAgUK6MiRI5o5c6aeeuop9evXL8l6jz32mObNm6eqVavq2rVrGjx4sDw9Pe3L586dq/j4eNWoUUPZsmXTvHnz5OnpqaJFi2r58uX666+/VLt2beXMmVMrVqxQQkKCw+WFAIB/jhElAECK5c2bV3PnztVXX32lsmXLavz48Zo0aZJDHzc3Nw0dOlSBgYGqXbu2smbNqkWLFkn6+9K29957T1WrVlW1atV07NgxrVixwh5kVqxYodq1a6tr164qVaqU2rVrp2PHjsnPzy/FNU6ZMkU1a9ZUixYt1LBhQz355JMqU6aMPDw87H3mzJmjF198UQMHDlTp0qX19NNP69dff1XhwoVTfUzee+89LViwQL/++qsaN26scuXKacCAAQoMDLzr9OCzZ8/W5cuXVblyZXXq1El9+/Z1mFUvR44c+uSTT/Tkk08qMDBQP//8s77//nvlzp1bOXLk0JIlS1S/fn2VKVNGM2fO1MKFC1WuXLlU1w4AuDubufPCbQAAHjExMTEqWLCgJk+erG7dujm7HADAQ4JL7wAAj5Rdu3bp0KFDql69uq5evarRo0dLklq1auXkygAADxOCEgDgkTNp0iQdPnxYbm5uCgoK0vr161M8IQQAABKX3gEAAABAEkzmAAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADA4v8Bbgi2GIfE8mgAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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cOHCGjx4sPLly2efXSpbtqw6duyoZ599VmPGjNF9992n48eP64cfflCVKlXUvHnzbI9H7dq11b9/f/Xr109//fWX2rZtq7CwMO3Zs0eTJk1S3bp19fLLL2e6X5kyZfTll1+qZs2aOnPmjF577TV5eXnZ98fFxSktLU21a9eWt7e3vvzyS3l5ealEiRJatGiR/vzzT9WrV08FChTQ4sWLlZ6e7nD5IgDgn2NGCgCQYwoVKqS4uDh99dVXqlixokaMGKH333/foY+7u7sGDhyoqlWrql69enJxcdHs2bMlXb10buTIkapZs6Zq1aql/fv3a/Hixfags3jxYtWrV09du3ZV2bJl9eSTT2r//v0KDg7Odo1jx45VVFSUWrZsqYcfflh16tRRhQoV5Onpae8zdepUPfvss+rXr5/KlSunRx55RL/88ouKFStmeUxGjhypmTNn6pdfflGTJk1UqVIl9e3bV1WrVr3u8ueff/65Tp06pfvuu0/PPPOMevfu7bAqYEBAgD799FPVqVNHVatW1fLly7Vw4UIFBQUpICBAc+fO1UMPPaQKFSpo0qRJmjVrlipVqmS5dgDA9dnMtReGAwBwjzl//ryKFCmiMWPGqFu3bnldDgDgDsGlfQCAe8rmzZv1+++/6/7771dycrKGDh0qSWrdunUeVwYAuJMQpAAA95z3339fu3btkru7uyIjI7Vy5cpsL1gBAIDEpX0AAAAAYBmLTQAAAACARQQpAAAAALCIIAUAAAAAFhGkAAAAAMAighQAAAAAWESQAgAAAACLCFIAAAAAYBFBCgAAAAAs+n++hbw4bKNkWwAAAABJRU5ErkJggg==",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Required imports\n",
+ "import pandas as pd\n",
+ "import seaborn as sns\n",
+ "from sqlalchemy import create_engine\n",
+ "\n",
+ "# Step 1: Load a public dataset\n",
+ "print(\"Loading Titanic dataset...\")\n",
+ "titanic = sns.load_dataset('titanic')\n",
+ "print(f\"Dataset loaded with {titanic.shape[0]} rows and {titanic.shape[1]} columns.\")\n",
+ "\n",
+ "# Display the first few rows of the dataset\n",
+ "display(titanic.head())\n",
+ "\n",
+ "# Step 2: Connect to PostgreSQL\n",
+ "print(\"Connecting to PostgreSQL...\")\n",
+ "\n",
+ "connection_string = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}'\n",
+ "engine = create_engine(connection_string)\n",
+ "\n",
+ "# Step 3: Load the dataset into the database\n",
+ "print(\"Writing Titanic dataset to the PostgreSQL database...\")\n",
+ "titanic.to_sql('titanic', engine, if_exists='replace', index=False)\n",
+ "\n",
+ "print(\"Data successfully loaded into the 'titanic' table.\")\n",
+ "\n",
+ "# Step 4: Query the data from PostgreSQL\n",
+ "print(\"Querying data from PostgreSQL...\")\n",
+ "query = \"SELECT pclass, survived, AVG(age) as avg_age, AVG(fare) as avg_fare FROM titanic GROUP BY pclass, survived;\"\n",
+ "results = pd.read_sql(query, engine)\n",
+ "\n",
+ "# Display the query results\n",
+ "print(\"Query results:\")\n",
+ "display(results)\n",
+ "\n",
+ "# Step 5: Visualize the data\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "\n",
+ "# Create a bar plot showing average fare and age by class and survival\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "sns.barplot(data=results, x='pclass', y='avg_age', hue='survived')\n",
+ "plt.title(\"Average Age by Passenger Class and Survival Status\")\n",
+ "plt.xlabel(\"Passenger Class\")\n",
+ "plt.ylabel(\"Average Age\")\n",
+ "plt.legend(title=\"Survived\", loc='upper right')\n",
+ "plt.show()\n",
+ "\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "sns.barplot(data=results, x='pclass', y='avg_fare', hue='survived')\n",
+ "plt.title(\"Average Fare by Passenger Class and Survival Status\")\n",
+ "plt.xlabel(\"Passenger Class\")\n",
+ "plt.ylabel(\"Average Fare\")\n",
+ "plt.legend(title=\"Survived\", loc='upper right')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "13b77774-3b0c-43fa-bf3c-35a5fa36950a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Fetching all rows from the 'titanic' table...\n",
+ "Full Titanic table (891 rows, 15 columns):\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "5b226ac840594e21881e231f18b63304",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Output()"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Step 6: Print the entire Titanic table from PostgreSQL\n",
+ "import ipywidgets as widgets\n",
+ "\n",
+ "print(\"Fetching all rows from the 'titanic' table...\")\n",
+ "query_all = \"SELECT * FROM titanic;\"\n",
+ "full_table = pd.read_sql(query_all, engine)\n",
+ "\n",
+ "# Display the entire table\n",
+ "print(f\"Full Titanic table ({full_table.shape[0]} rows, {full_table.shape[1]} columns):\")\n",
+ "\n",
+ "output = widgets.Output()\n",
+ "\n",
+ "with output:\n",
+ " display(full_table)\n",
+ "\n",
+ "display(output)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0da0cc42-2b12-44ed-bf36-9183ddc66467",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/samples/jupyter-postgres/jupyter/notebooks/Titanic.ipynb b/samples/jupyter-postgres/jupyter/notebooks/Titanic.ipynb
new file mode 100644
index 00000000..3c557223
--- /dev/null
+++ b/samples/jupyter-postgres/jupyter/notebooks/Titanic.ipynb
@@ -0,0 +1,506 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "83f52f0f-6051-4689-86be-d24eabd27730",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Install our dependencies"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "a363c298-c4b7-4015-b91d-4e5631e2ca93",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Requirement already satisfied: sqlalchemy in /opt/conda/lib/python3.11/site-packages (2.0.22)\n",
+ "Requirement already satisfied: psycopg2 in /opt/conda/lib/python3.11/site-packages (2.9.10)\n",
+ "Requirement already satisfied: pandas in /opt/conda/lib/python3.11/site-packages (2.1.1)\n",
+ "Requirement already satisfied: seaborn in /opt/conda/lib/python3.11/site-packages (0.13.0)\n",
+ "Requirement already satisfied: ipywidgets in /opt/conda/lib/python3.11/site-packages (8.1.1)\n",
+ "Requirement already satisfied: typing-extensions>=4.2.0 in /opt/conda/lib/python3.11/site-packages (from sqlalchemy) (4.8.0)\n",
+ "Requirement already satisfied: greenlet!=0.4.17 in /opt/conda/lib/python3.11/site-packages (from sqlalchemy) (3.0.0)\n",
+ "Requirement already satisfied: numpy>=1.23.2 in /opt/conda/lib/python3.11/site-packages (from pandas) (1.24.4)\n",
+ "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/conda/lib/python3.11/site-packages (from pandas) (2.8.2)\n",
+ "Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.11/site-packages (from pandas) (2023.3.post1)\n",
+ "Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.11/site-packages (from pandas) (2023.3)\n",
+ "Requirement already satisfied: matplotlib!=3.6.1,>=3.3 in /opt/conda/lib/python3.11/site-packages (from seaborn) (3.8.0)\n",
+ "Requirement already satisfied: comm>=0.1.3 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (0.1.4)\n",
+ "Requirement already satisfied: ipython>=6.1.0 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (8.16.1)\n",
+ "Requirement already satisfied: traitlets>=4.3.1 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (5.11.2)\n",
+ "Requirement already satisfied: widgetsnbextension~=4.0.9 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (4.0.9)\n",
+ "Requirement already satisfied: jupyterlab-widgets~=3.0.9 in /opt/conda/lib/python3.11/site-packages (from ipywidgets) (3.0.9)\n",
+ "Requirement already satisfied: backcall in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.2.0)\n",
+ "Requirement already satisfied: decorator in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n",
+ "Requirement already satisfied: jedi>=0.16 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.1)\n",
+ "Requirement already satisfied: matplotlib-inline in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.6)\n",
+ "Requirement already satisfied: pickleshare in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.7.5)\n",
+ "Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.39)\n",
+ "Requirement already satisfied: pygments>=2.4.0 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (2.16.1)\n",
+ "Requirement already satisfied: stack-data in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.2)\n",
+ "Requirement already satisfied: pexpect>4.3 in /opt/conda/lib/python3.11/site-packages (from ipython>=6.1.0->ipywidgets) (4.8.0)\n",
+ "Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (1.1.1)\n",
+ "Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (0.12.1)\n",
+ "Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (4.43.1)\n",
+ "Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (1.4.5)\n",
+ "Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (23.2)\n",
+ "Requirement already satisfied: pillow>=6.2.0 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (10.1.0)\n",
+ "Requirement already satisfied: pyparsing>=2.3.1 in /opt/conda/lib/python3.11/site-packages (from matplotlib!=3.6.1,>=3.3->seaborn) (3.1.1)\n",
+ "Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n",
+ "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /opt/conda/lib/python3.11/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.3)\n",
+ "Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.11/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n",
+ "Requirement already satisfied: wcwidth in /opt/conda/lib/python3.11/site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=6.1.0->ipywidgets) (0.2.8)\n",
+ "Requirement already satisfied: executing>=1.2.0 in /opt/conda/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (1.2.0)\n",
+ "Requirement already satisfied: asttokens>=2.1.0 in /opt/conda/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (2.4.0)\n",
+ "Requirement already satisfied: pure-eval in /opt/conda/lib/python3.11/site-packages (from stack-data->ipython>=6.1.0->ipywidgets) (0.2.2)\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ }
+ ],
+ "source": [
+ "pip install sqlalchemy psycopg2 pandas seaborn ipywidgets"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0f663e69-0d11-4bbc-b594-df4cc0497aeb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "DB_USER = 'postgres'\n",
+ "DB_PASSWORD = os.getenv('POSTGRES_PASSWORD')\n",
+ "DB_HOST = os.getenv('DATABASE_HOST') # Docker Compose service name\n",
+ "DB_PORT = '5432'\n",
+ "DB_NAME = 'postgres'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "453b61a7-7be1-493c-ac57-680884b3b82b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loading Titanic dataset...\n",
+ "Dataset loaded with 891 rows and 15 columns.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " survived | \n",
+ " pclass | \n",
+ " sex | \n",
+ " age | \n",
+ " sibsp | \n",
+ " parch | \n",
+ " fare | \n",
+ " embarked | \n",
+ " class | \n",
+ " who | \n",
+ " adult_male | \n",
+ " deck | \n",
+ " embark_town | \n",
+ " alive | \n",
+ " alone | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " male | \n",
+ " 22.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 7.2500 | \n",
+ " S | \n",
+ " Third | \n",
+ " man | \n",
+ " True | \n",
+ " NaN | \n",
+ " Southampton | \n",
+ " no | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " female | \n",
+ " 38.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 71.2833 | \n",
+ " C | \n",
+ " First | \n",
+ " woman | \n",
+ " False | \n",
+ " C | \n",
+ " Cherbourg | \n",
+ " yes | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 3 | \n",
+ " female | \n",
+ " 26.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 7.9250 | \n",
+ " S | \n",
+ " Third | \n",
+ " woman | \n",
+ " False | \n",
+ " NaN | \n",
+ " Southampton | \n",
+ " yes | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " female | \n",
+ " 35.0 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 53.1000 | \n",
+ " S | \n",
+ " First | \n",
+ " woman | \n",
+ " False | \n",
+ " C | \n",
+ " Southampton | \n",
+ " yes | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0 | \n",
+ " 3 | \n",
+ " male | \n",
+ " 35.0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 8.0500 | \n",
+ " S | \n",
+ " Third | \n",
+ " man | \n",
+ " True | \n",
+ " NaN | \n",
+ " Southampton | \n",
+ " no | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " survived pclass sex age sibsp parch fare embarked class \\\n",
+ "0 0 3 male 22.0 1 0 7.2500 S Third \n",
+ "1 1 1 female 38.0 1 0 71.2833 C First \n",
+ "2 1 3 female 26.0 0 0 7.9250 S Third \n",
+ "3 1 1 female 35.0 1 0 53.1000 S First \n",
+ "4 0 3 male 35.0 0 0 8.0500 S Third \n",
+ "\n",
+ " who adult_male deck embark_town alive alone \n",
+ "0 man True NaN Southampton no False \n",
+ "1 woman False C Cherbourg yes False \n",
+ "2 woman False NaN Southampton yes True \n",
+ "3 woman False C Southampton yes False \n",
+ "4 man True NaN Southampton no True "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Connecting to PostgreSQL...\n",
+ "Writing Titanic dataset to the PostgreSQL database...\n",
+ "Data successfully loaded into the 'titanic' table.\n",
+ "Querying data from PostgreSQL...\n",
+ "Query results:\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " pclass | \n",
+ " survived | \n",
+ " avg_age | \n",
+ " avg_fare | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 35.368197 | \n",
+ " 95.608029 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 3 | \n",
+ " 0 | \n",
+ " 26.555556 | \n",
+ " 13.669364 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 20.646118 | \n",
+ " 13.694887 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 1 | \n",
+ " 0 | \n",
+ " 43.695312 | \n",
+ " 64.684008 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2 | \n",
+ " 0 | \n",
+ " 33.544444 | \n",
+ " 19.412328 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ " 25.901566 | \n",
+ " 22.055700 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " pclass survived avg_age avg_fare\n",
+ "0 1 1 35.368197 95.608029\n",
+ "1 3 0 26.555556 13.669364\n",
+ "2 3 1 20.646118 13.694887\n",
+ "3 1 0 43.695312 64.684008\n",
+ "4 2 0 33.544444 19.412328\n",
+ "5 2 1 25.901566 22.055700"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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LdPRo0fVpUsXe9+33npLBw4c0MqVK3Xw4EHNmDFDefLkkSR98MEH+u677/Tll1/q8OHD+uKLL1SsWDFJkjFGzZs3V0REhFasWKEdO3aoSpUqatCggcMlbH/++aeWLVum5cuXa/ny5QoPD9f48ePtywcMGKCNGzfqu+++U1hYmNavX58khLz00kvauHGjFi1apL179+r5559XkyZN9Mcff9j7XL9+XePGjdOnn36q/fv3K1++fEmOy/z58+Xl5aWePXsme9xy5MiRbHtUVJQ6d+6s9evXa8uWLQoICFCzZs3sge/rr7/W1KlT9dFHH+mPP/7QsmXLVKFCBUnS9u3b1bdvX40ePVqHDx/WqlWrVLt27WT3AwD4BwwAAHfo3LmzadWqlf35r7/+anLnzm3atGmTbP+tW7caSSYqKsoYY0zLli3NSy+9lGzfPn36mPr165uEhIQky37++Wfj4+Njbt686dBesmRJ89FHHxljjBk5cqTJli2buXbtmn354MGDTY0aNYwxxly7ds24urqar776yr78ypUrJlu2bKZfv37GGGOOHDlibDabOX36tMN+GjRoYIYOHWqMMWbOnDlGktm9e3eyryNR06ZNTWBg4D37JNZdsWLFuy6/ffu28fb2Nt9//70xxpjJkyebUqVKmbi4uCR9v/nmG+Pj4+NwDAAAaY8RJQBAEsuXL5eXl5c8PDxUs2ZN1a5dWx9++KEkadeuXWrVqpWKFi0qb29v1a1bV5J04sQJSVKPHj20aNEiVapUSUOGDNGmTZvs2+3SpYt2796t0qVLq2/fvlq9erV92Y4dOxQdHa3cuXPLy8vL/jh69Kj+/PNPe79ixYrJ29vb/jx//vz2S//++usv3bp1S9WrV7cv9/X1VenSpe3Pd+7cKWOMSpUq5bCf8PBwh/24ubkpMDDwnsfJGCObzZbi45ooMjJSr776qkqVKiVfX1/5+voqOjrafgyff/553bhxQyVKlNB///tfLV26VLdv35YkBQcHq2jRoipRooQ6deqk+fPn6/r166muAQBwby7OLgAAkPnUq1dPM2bMkKurqwoUKCBXV1dJUkxMjBo1aqRGjRrpiy++UN68eXXixAk1btxYcXFxkqSmTZvq+PHj+uGHH/TTTz+pQYMG6tWrlyZNmqQqVaro6NGjWrlypX766Se1adNGDRs21Ndff62EhATlz5/f4V6hRHdewpZYSyKbzWafaMEYY2+7U2K7JCUkJChr1qzasWOHsmbN6tDPy8vL/t+enp73DUGlSpXShg0bdOvWrSR13UuXLl10/vx5hYaGqmjRonJ3d1fNmjXtx7Bw4cI6fPiwwsLC9NNPP6lnz56aOHGiwsPD5e3trZ07d2rt2rVavXq1RowYoVGjRmnbtm13vdQPAJB6jCgBAJLInj27HnvsMRUtWtQhABw6dEgXLlzQ+PHj9Z///EePP/64w0QOifLmzasuXbroiy++UGhoqD7++GP7Mh8fH7Vt21affPKJFi9erG+++UaXLl1SlSpVFBERIRcXFz322GMOj8R7nO6nZMmScnV11datW+1t165dc7j3qHLlyoqPj1dkZGSS/fj7+6fqOHXo0EHR0dGaPn16ssuvXLmSbPv69evVt29fNWvWTOXKlZO7u7suXLjg0MfT01NPP/20PvjgA61du1abN2/Wb7/9JklycXFRw4YNNWHCBO3du1fHjh3TL7/8kqraAQD3xogSACDFihQpIjc3N3344Yd69dVXtW/fPr3zzjsOfUaMGKGgoCCVK1dOsbGxWr58ucqUKSNJmjp1qvLnz69KlSopS5Ys+uqrr+Tv768cOXKoYcOGqlmzpkJCQvTee++pdOnSOnPmjFasWKGQkBBVrVr1vvV5e3urc+fOGjx4sHLlyqV8+fJp5MiRypIli310qFSpUurYsaNefPFFTZ48WZUrV9aFCxf0yy+/qEKFCmrWrFmKj0eNGjU0ZMgQDRw4UKdPn9YzzzyjAgUK6MiRI5o5c6aeeuop9evXL8l6jz32mObNm6eqVavq2rVrGjx4sDw9Pe3L586dq/j4eNWoUUPZsmXTvHnz5OnpqaJFi2r58uX666+/VLt2beXMmVMrVqxQQkKCw+WFAIB/jhElAECK5c2bV3PnztVXX32lsmXLavz48Zo0aZJDHzc3Nw0dOlSBgYGqXbu2smbNqkWLFkn6+9K29957T1WrVlW1atV07NgxrVixwh5kVqxYodq1a6tr164qVaqU2rVrp2PHjsnPzy/FNU6ZMkU1a9ZUixYt1LBhQz355JMqU6aMPDw87H3mzJmjF198UQMHDlTp0qX19NNP69dff1XhwoVTfUzee+89LViwQL/++qsaN26scuXKacCAAQoMDLzr9OCzZ8/W5cuXVblyZXXq1El9+/Z1mFUvR44c+uSTT/Tkk08qMDBQP//8s77//nvlzp1bOXLk0JIlS1S/fn2VKVNGM2fO1MKFC1WuXLlU1w4AuDubufPCbQAAHjExMTEqWLCgJk+erG7dujm7HADAQ4JL7wAAj5Rdu3bp0KFDql69uq5evarRo0dLklq1auXkygAADxOCEgDgkTNp0iQdPnxYbm5uCgoK0vr161M8IQQAABKX3gEAAABAEkzmAAAAAAAWBCUAAAAAsCAoAQAAAIAFQQkAAAAALAhKAAAAAGBBUAIAAAAAC4ISAAAAAFgQlAAAAADA4v8Bbgi2GIfE8mgAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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cOHCGjx4sPLly2efXSpbtqw6duyoZ599VmPGjNF9992n48eP64cfflCVKlXUvHnzbI9H7dq11b9/f/Xr109//fWX2rZtq7CwMO3Zs0eTJk1S3bp19fLLL2e6X5kyZfTll1+qZs2aOnPmjF577TV5eXnZ98fFxSktLU21a9eWt7e3vvzyS3l5ealEiRJatGiR/vzzT9WrV08FChTQ4sWLlZ6e7nD5IgDgn2NGCgCQYwoVKqS4uDh99dVXqlixokaMGKH333/foY+7u7sGDhyoqlWrql69enJxcdHs2bMlXb10buTIkapZs6Zq1aql/fv3a/Hixfags3jxYtWrV09du3ZV2bJl9eSTT2r//v0KDg7Odo1jx45VVFSUWrZsqYcfflh16tRRhQoV5Onpae8zdepUPfvss+rXr5/KlSunRx55RL/88ouKFStmeUxGjhypmTNn6pdfflGTJk1UqVIl9e3bV1WrVr3u8ueff/65Tp06pfvuu0/PPPOMevfu7bAqYEBAgD799FPVqVNHVatW1fLly7Vw4UIFBQUpICBAc+fO1UMPPaQKFSpo0qRJmjVrlipVqmS5dgDA9dnMtReGAwBwjzl//ryKFCmiMWPGqFu3bnldDgDgDsGlfQCAe8rmzZv1+++/6/7771dycrKGDh0qSWrdunUeVwYAuJMQpAAA95z3339fu3btkru7uyIjI7Vy5cpsL1gBAIDEpX0AAAAAYBmLTQAAAACARQQpAAAAALCIIAUAAAAAFhGkAAAAAMAighQAAAAAWESQAgAAAACLCFIAAAAAYBFBCgAAAAAs+n++hbw4bKNkWwAAAABJRU5ErkJggg==",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Required imports\n",
+ "import pandas as pd\n",
+ "import seaborn as sns\n",
+ "from sqlalchemy import create_engine\n",
+ "\n",
+ "# Step 1: Load a public dataset\n",
+ "print(\"Loading Titanic dataset...\")\n",
+ "titanic = sns.load_dataset('titanic')\n",
+ "print(f\"Dataset loaded with {titanic.shape[0]} rows and {titanic.shape[1]} columns.\")\n",
+ "\n",
+ "# Display the first few rows of the dataset\n",
+ "display(titanic.head())\n",
+ "\n",
+ "# Step 2: Connect to PostgreSQL\n",
+ "print(\"Connecting to PostgreSQL...\")\n",
+ "\n",
+ "connection_string = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}'\n",
+ "engine = create_engine(connection_string)\n",
+ "\n",
+ "# Step 3: Load the dataset into the database\n",
+ "print(\"Writing Titanic dataset to the PostgreSQL database...\")\n",
+ "titanic.to_sql('titanic', engine, if_exists='replace', index=False)\n",
+ "\n",
+ "print(\"Data successfully loaded into the 'titanic' table.\")\n",
+ "\n",
+ "# Step 4: Query the data from PostgreSQL\n",
+ "print(\"Querying data from PostgreSQL...\")\n",
+ "query = \"SELECT pclass, survived, AVG(age) as avg_age, AVG(fare) as avg_fare FROM titanic GROUP BY pclass, survived;\"\n",
+ "results = pd.read_sql(query, engine)\n",
+ "\n",
+ "# Display the query results\n",
+ "print(\"Query results:\")\n",
+ "display(results)\n",
+ "\n",
+ "# Step 5: Visualize the data\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "\n",
+ "# Create a bar plot showing average fare and age by class and survival\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "sns.barplot(data=results, x='pclass', y='avg_age', hue='survived')\n",
+ "plt.title(\"Average Age by Passenger Class and Survival Status\")\n",
+ "plt.xlabel(\"Passenger Class\")\n",
+ "plt.ylabel(\"Average Age\")\n",
+ "plt.legend(title=\"Survived\", loc='upper right')\n",
+ "plt.show()\n",
+ "\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "sns.barplot(data=results, x='pclass', y='avg_fare', hue='survived')\n",
+ "plt.title(\"Average Fare by Passenger Class and Survival Status\")\n",
+ "plt.xlabel(\"Passenger Class\")\n",
+ "plt.ylabel(\"Average Fare\")\n",
+ "plt.legend(title=\"Survived\", loc='upper right')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "13b77774-3b0c-43fa-bf3c-35a5fa36950a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Fetching all rows from the 'titanic' table...\n",
+ "Full Titanic table (891 rows, 15 columns):\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "5b226ac840594e21881e231f18b63304",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Output()"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Step 6: Print the entire Titanic table from PostgreSQL\n",
+ "import ipywidgets as widgets\n",
+ "\n",
+ "print(\"Fetching all rows from the 'titanic' table...\")\n",
+ "query_all = \"SELECT * FROM titanic;\"\n",
+ "full_table = pd.read_sql(query_all, engine)\n",
+ "\n",
+ "# Display the entire table\n",
+ "print(f\"Full Titanic table ({full_table.shape[0]} rows, {full_table.shape[1]} columns):\")\n",
+ "\n",
+ "output = widgets.Output()\n",
+ "\n",
+ "with output:\n",
+ " display(full_table)\n",
+ "\n",
+ "display(output)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0da0cc42-2b12-44ed-bf36-9183ddc66467",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.6"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/samples/jupyter-postgres/jupyter/requirements.txt b/samples/jupyter-postgres/jupyter/requirements.txt
new file mode 100644
index 00000000..b96e6348
--- /dev/null
+++ b/samples/jupyter-postgres/jupyter/requirements.txt
@@ -0,0 +1,5 @@
+sqlalchemy
+psycopg2
+pandas
+seaborn
+ipywidgets