{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "b9a738d5",
   "metadata": {},
   "source": [
    "# 哲学の道「疎水」が流れる高さを眺めてみる('24.05.27)\n",
    "\n",
    "\n",
    "## 京都の北東を流れる「疎水分線」を3D地図上で眺める\n",
    "\n",
    "京都の街、北から南に下る斜度が割とあるのにも関わらず、琵琶湖から蹴上経由で白川にグルリと向かう疎水分線(いわゆる哲学の道沿いを流れる疎水)は、京都の外れを北上して流れている。\n",
    "そこで、国土地理院の[地理院地図](https://maps.gsi.go.jp/#15/35.026236/135.773249/&base=pale&ls=pale%7Cort_USA10%2C0.13%7Crelief_free%2C0.17%7Chillshademap%2C0.52&blend=010&disp=1111&lcd=hillshademap&vs=c1g1j0h0k0l0u0t0z0r0s0m0f1&reliefdata=239.8G0000FFG3CG0095FFG3E.8G00EEFFG41G91FF00G43.8GFFFF00G46GFF8C00GGFF4400)で、京都の北東を流れる「疎水分線」が流れるあたりを、[インタラクティブな3D地図上](https://hirax.github.io/wow/appendix/day_240527_webgl/)で眺めてみた。\n",
    "\n",
    "標高情報を使い色づけや高さ強調をしてみると、まるでジェットコースターのように、疎水分線は京都北東の斜面を流れ下っていることがわかる。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "3dcdba77",
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "        <iframe\n",
       "            width=\"800\"\n",
       "            height=\"600\"\n",
       "            src=\"https://hirax.github.io/wow/appendix/day_240527_webgl/\"\n",
       "            frameborder=\"0\"\n",
       "            allowfullscreen\n",
       "            \n",
       "        ></iframe>\n",
       "        "
      ],
      "text/plain": [
       "<IPython.lib.display.IFrame at 0x141453150>"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import IFrame\n",
    "IFrame('https://hirax.github.io/wow/appendix/day_240527_webgl/', width=800, height=600)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5f49f263",
   "metadata": {},
   "source": [
    "## 疎水分線の標高を地図上で眺めてみる\n",
    "\n",
    "せっかくなので、地理院地図の「ツール-計測」機能をて、疎水が流れる場所や標高をGeoJSONファイルやCSVファイルに出力してみた。\n",
    "それらのファイルを、インタラクティブな2D地図上に読み込んで、その場所の標高を数値にして重ねて描いてみる。\n",
    "\n",
    "疎水分線の場所ごとの標高値を地図上で眺めると、比較的斜度があるのは、北白川近くを北上するあたりだということがわかる。\n",
    "ずっと昔、銀閣地道近くの天下一品近くから天下一品本店に向かおうとした時に、よく通ったルートだ。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "41afcd04",
   "metadata": {
    "tags": [
     "hide-input",
     "hide-output"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['lat', 'lng', 'elevation', 'distance'], dtype='object')\n"
     ]
    }
   ],
   "source": [
    "# foliumパッケージを使う\n",
    "import folium\n",
    "import pandas as pd\n",
    "\n",
    "# 中心とする緯度経度\n",
    "kyoto = [35.029607283171565, 135.78063320502486]\n",
    "\n",
    "# 疎水GeoJsonデータ\n",
    "geojson_file='data/day_240527_csline20240527074909247.geojson'\n",
    "# 疎水csvデータ(緯度、経度、標高、距離)\n",
    "csv_file='data/day_240527_csdata20240527074922881.csv'\n",
    "csv_df = pd.read_csv(csv_file)\n",
    "\n",
    "# 列名を確認する\n",
    "print(csv_df.columns) # 'hide-output'属性をつけておく"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "6c9afb93",
   "metadata": {
    "scrolled": true,
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
       "&lt;html&gt;\n",
       "&lt;head&gt;\n",
       "    \n",
       "    &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
       "    \n",
       "        &lt;script&gt;\n",
       "            L_NO_TOUCH = false;\n",
       "            L_DISABLE_3D = false;\n",
       "        &lt;/script&gt;\n",
       "    \n",
       "    &lt;style&gt;html, body {width: 100%;height: 100%;margin: 0;padding: 0;}&lt;/style&gt;\n",
       "    &lt;style&gt;#map {position:absolute;top:0;bottom:0;right:0;left:0;}&lt;/style&gt;\n",
       "    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;script src=&quot;https://code.jquery.com/jquery-3.7.1.min.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
       "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
       "    \n",
       "            &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
       "                initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
       "            &lt;style&gt;\n",
       "                #map_5817f4247571d7d007057898036fa026 {\n",
       "                    position: relative;\n",
       "                    width: 100.0%;\n",
       "                    height: 100.0%;\n",
       "                    left: 0.0%;\n",
       "                    top: 0.0%;\n",
       "                }\n",
       "                .leaflet-container { font-size: 1rem; }\n",
       "            &lt;/style&gt;\n",
       "        \n",
       "&lt;/head&gt;\n",
       "&lt;body&gt;\n",
       "    \n",
       "    \n",
       "            &lt;div class=&quot;folium-map&quot; id=&quot;map_5817f4247571d7d007057898036fa026&quot; &gt;&lt;/div&gt;\n",
       "        \n",
       "&lt;/body&gt;\n",
       "&lt;script&gt;\n",
       "    \n",
       "    \n",
       "            var map_5817f4247571d7d007057898036fa026 = L.map(\n",
       "                &quot;map_5817f4247571d7d007057898036fa026&quot;,\n",
       "                {\n",
       "                    center: [35.029607283171565, 135.78063320502486],\n",
       "                    crs: L.CRS.EPSG3857,\n",
       "                    zoom: 13,\n",
       "                    zoomControl: true,\n",
       "                    preferCanvas: false,\n",
       "                }\n",
       "            );\n",
       "\n",
       "            \n",
       "\n",
       "        \n",
       "    \n",
       "            var tile_layer_0deec5566159f401863db7cbf18edd92 = L.tileLayer(\n",
       "                &quot;https://tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
       "                {&quot;attribution&quot;: &quot;OpenStreetMap \\u0026 \\u56fd\\u571f\\u5730\\u7406\\u9662\\u5730\\u56f3&quot;, &quot;detectRetina&quot;: false, &quot;maxNativeZoom&quot;: 19, &quot;maxZoom&quot;: 19, &quot;minZoom&quot;: 0, &quot;noWrap&quot;: false, &quot;opacity&quot;: 1, &quot;subdomains&quot;: &quot;abc&quot;, &quot;tms&quot;: false}\n",
       "            );\n",
       "        \n",
       "    \n",
       "            tile_layer_0deec5566159f401863db7cbf18edd92.addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "        function geo_json_8492c0b11b3986311eecfdfe3a544bb7_styler(feature) {\n",
       "            switch(feature.id) {\n",
       "                default:\n",
       "                    return {&quot;color&quot;: &quot;#0000FF60&quot;, &quot;weight&quot;: 10};\n",
       "            }\n",
       "        }\n",
       "\n",
       "        function geo_json_8492c0b11b3986311eecfdfe3a544bb7_onEachFeature(feature, layer) {\n",
       "            layer.on({\n",
       "            });\n",
       "        };\n",
       "        var geo_json_8492c0b11b3986311eecfdfe3a544bb7 = L.geoJson(null, {\n",
       "                onEachFeature: geo_json_8492c0b11b3986311eecfdfe3a544bb7_onEachFeature,\n",
       "            \n",
       "                style: geo_json_8492c0b11b3986311eecfdfe3a544bb7_styler,\n",
       "        });\n",
       "\n",
       "        function geo_json_8492c0b11b3986311eecfdfe3a544bb7_add (data) {\n",
       "            geo_json_8492c0b11b3986311eecfdfe3a544bb7\n",
       "                .addData(data);\n",
       "        }\n",
       "            geo_json_8492c0b11b3986311eecfdfe3a544bb7_add({&quot;features&quot;: [{&quot;geometry&quot;: {&quot;coordinates&quot;: [[135.79496383666995, 35.0182231857198, 76.17], [135.79376220703128, 35.01998048489671, 75.60000000000001], [135.7944488525391, 35.02219462808735, 75.07000000000001], [135.79586505889895, 35.023073239719906, 76.39], [135.79629421234134, 35.023881554082664, 76.3], [135.79642295837405, 35.024584429641024, 75.15], [135.79616546630862, 35.02525215582416, 75.53], [135.7954788208008, 35.02599016262869, 74.83], [135.79526424407962, 35.027079589068, 74.61], [135.79350471496585, 35.027641868001226, 74.48], [135.78891277313235, 35.028660988709646, 75.02], [135.7881832122803, 35.029855803704, 73.63], [135.7880544662476, 35.031577712237244, 71.43], [135.78886985778811, 35.03270220435138, 71.28], [135.7885265350342, 35.03663780490961, 68.14], [135.78668117523196, 35.039800203724404, 68.08], [135.78444957733157, 35.04155703906854, 67.53], [135.7759523391724, 35.04700298855902, 65.83], [135.77457904815677, 35.04728405997036, 65.25], [135.7729482650757, 35.04752999666191, 65.52], [135.77037334442142, 35.04703812253835, 66.31], [135.7690000534058, 35.04580842427111, 66.39], [135.7674551010132, 35.04415708604935, 65.81], [135.76427936553958, 35.04278680133221, 66.12], [135.7619619369507, 35.04173272052526, 65.43], [135.7612752914429, 35.04127594795207, 65.48], [135.76028823852542, 35.040292121428635, 65.28], [135.75809955596927, 35.03983534080149, 64.9], [135.75595378875735, 35.03934342034715, 65.26], [135.7543230056763, 35.03857039650663, 64.54], [135.75191974639895, 35.03804333060411, 64.3], [135.75114727020267, 35.036286419708496, 62.9], [135.75187683105472, 35.03365098253829, 60.34], [135.75179100036624, 35.028590704930764, 54.24], [135.7515335083008, 35.00887371923034, 35.75], [135.7514047622681, 35.008170708624554, 35.980000000000004]], &quot;type&quot;: &quot;LineString&quot;}, &quot;id&quot;: &quot;0&quot;, &quot;properties&quot;: {}, &quot;type&quot;: &quot;Feature&quot;}], &quot;type&quot;: &quot;FeatureCollection&quot;});\n",
       "\n",
       "        \n",
       "    \n",
       "            geo_json_8492c0b11b3986311eecfdfe3a544bb7.addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var layer_control_336b522db6859c3172f52b588626e76d_layers = {\n",
       "                base_layers : {\n",
       "                    &quot;openstreetmap&quot; : tile_layer_0deec5566159f401863db7cbf18edd92,\n",
       "                },\n",
       "                overlays :  {\n",
       "                    &quot;\\u54f2\\u5b66\\u306e\\u9053\\u758e\\u6c34&quot; : geo_json_8492c0b11b3986311eecfdfe3a544bb7,\n",
       "                },\n",
       "            };\n",
       "            let layer_control_336b522db6859c3172f52b588626e76d = L.control.layers(\n",
       "                layer_control_336b522db6859c3172f52b588626e76d_layers.base_layers,\n",
       "                layer_control_336b522db6859c3172f52b588626e76d_layers.overlays,\n",
       "                {&quot;autoZIndex&quot;: true, &quot;collapsed&quot;: true, &quot;position&quot;: &quot;topright&quot;}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "\n",
       "        \n",
       "    \n",
       "            var marker_4ad22b3e6720b1ef947e168e44f1d39f = L.marker(\n",
       "                [35.018223, 135.794964],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_7a59b3d635ccfae410a205f23a63cbf7 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#E90016;\\&quot;\\u003e76.17\\u003c/div\\u003e&quot;});\n",
       "            marker_4ad22b3e6720b1ef947e168e44f1d39f.setIcon(div_icon_7a59b3d635ccfae410a205f23a63cbf7);\n",
       "        \n",
       "    \n",
       "            var marker_d97c55f8e73491b295fb328e7f6c2781 = L.marker(\n",
       "                [35.020999, 135.794078],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_8c045807fdf9dea89c84486c8c17f77e = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#E80017;\\&quot;\\u003e75.99\\u003c/div\\u003e&quot;});\n",
       "            marker_d97c55f8e73491b295fb328e7f6c2781.setIcon(div_icon_8c045807fdf9dea89c84486c8c17f77e);\n",
       "        \n",
       "    \n",
       "            var marker_4b388079ca4daa426f1e6bfcf6ab9694 = L.marker(\n",
       "                [35.023416, 135.796047],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_290044ebd291cf3025028b6cf72ea34d = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#EB0014;\\&quot;\\u003e76.58\\u003c/div\\u003e&quot;});\n",
       "            marker_4b388079ca4daa426f1e6bfcf6ab9694.setIcon(div_icon_290044ebd291cf3025028b6cf72ea34d);\n",
       "        \n",
       "    \n",
       "            var marker_1893037f7927b2992c5c7d62a09a857a = L.marker(\n",
       "                [35.026205, 135.795436],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_ae81a7e7f498e555c4302c9167b94448 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#E4001B;\\&quot;\\u003e75.36\\u003c/div\\u003e&quot;});\n",
       "            marker_1893037f7927b2992c5c7d62a09a857a.setIcon(div_icon_ae81a7e7f498e555c4302c9167b94448);\n",
       "        \n",
       "    \n",
       "            var marker_b0c488dbb0ec5c1b337d275f80a2bfbf = L.marker(\n",
       "                [35.027806, 135.792767],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_758df9c9170f5fb8fdbe61751a5d0ed3 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#E0001F;\\&quot;\\u003e74.66\\u003c/div\\u003e&quot;});\n",
       "            marker_b0c488dbb0ec5c1b337d275f80a2bfbf.setIcon(div_icon_758df9c9170f5fb8fdbe61751a5d0ed3);\n",
       "        \n",
       "    \n",
       "            var marker_7a1dc3e13523cd59d2a69333885a5742 = L.marker(\n",
       "                [35.028605, 135.789167],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_fe030d3e4937b5d4b9eb7284ee7932cf = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#E1001E;\\&quot;\\u003e74.81\\u003c/div\\u003e&quot;});\n",
       "            marker_7a1dc3e13523cd59d2a69333885a5742.setIcon(div_icon_fe030d3e4937b5d4b9eb7284ee7932cf);\n",
       "        \n",
       "    \n",
       "            var marker_f17b50c355f5b854e118cd1ddf7be028 = L.marker(\n",
       "                [35.031366, 135.78807],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_d033e86bd8795f208f2f0b8bd778d478 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#D1002E;\\&quot;\\u003e72.01\\u003c/div\\u003e&quot;});\n",
       "            marker_f17b50c355f5b854e118cd1ddf7be028.setIcon(div_icon_d033e86bd8795f208f2f0b8bd778d478);\n",
       "        \n",
       "    \n",
       "            var marker_8660aae4742cfa53e4fa96711e81776e = L.marker(\n",
       "                [35.034244, 135.788735],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_a9fb4c2ea75437188e45419bf0149654 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#BE0041;\\&quot;\\u003e68.66\\u003c/div\\u003e&quot;});\n",
       "            marker_8660aae4742cfa53e4fa96711e81776e.setIcon(div_icon_a9fb4c2ea75437188e45419bf0149654);\n",
       "        \n",
       "    \n",
       "            var marker_86b02fdfdffd31f8b07474ce19bc72e6 = L.marker(\n",
       "                [35.037239, 135.788175],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_c50ed62e2a7cf8fcfd1758fca1ab2537 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#B0004F;\\&quot;\\u003e66.19\\u003c/div\\u003e&quot;});\n",
       "            marker_86b02fdfdffd31f8b07474ce19bc72e6.setIcon(div_icon_c50ed62e2a7cf8fcfd1758fca1ab2537);\n",
       "        \n",
       "    \n",
       "            var marker_ef9276311c1d21fe94c988bdb5264b64 = L.marker(\n",
       "                [35.039957, 135.786482],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_cd4dbb0b2b3cb1f9e0615f6be3d4dcd8 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#B90046;\\&quot;\\u003e67.82\\u003c/div\\u003e&quot;});\n",
       "            marker_ef9276311c1d21fe94c988bdb5264b64.setIcon(div_icon_cd4dbb0b2b3cb1f9e0615f6be3d4dcd8);\n",
       "        \n",
       "    \n",
       "            var marker_0dd1da2558b8f51ce4ad06cebfa2964a = L.marker(\n",
       "                [35.04202, 135.783727],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_c36c7806192827bf11cfbd20b76436c1 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#B70048;\\&quot;\\u003e67.34\\u003c/div\\u003e&quot;});\n",
       "            marker_0dd1da2558b8f51ce4ad06cebfa2964a.setIcon(div_icon_c36c7806192827bf11cfbd20b76436c1);\n",
       "        \n",
       "    \n",
       "            var marker_ebfdcae38dc5c1b7fe3bd37a7d586d0d = L.marker(\n",
       "                [35.043905, 135.780786],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_6e0e40d09d384a6c9e7aa1bb1b67c994 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#BA0045;\\&quot;\\u003e67.96\\u003c/div\\u003e&quot;});\n",
       "            marker_ebfdcae38dc5c1b7fe3bd37a7d586d0d.setIcon(div_icon_6e0e40d09d384a6c9e7aa1bb1b67c994);\n",
       "        \n",
       "    \n",
       "            var marker_afd4a5ad1a428b0bc4935c987cfde26f = L.marker(\n",
       "                [35.045791, 135.777844],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_f0778b5e4a517567727a1ea448996f3d = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#B90046;\\&quot;\\u003e67.69\\u003c/div\\u003e&quot;});\n",
       "            marker_afd4a5ad1a428b0bc4935c987cfde26f.setIcon(div_icon_f0778b5e4a517567727a1ea448996f3d);\n",
       "        \n",
       "    \n",
       "            var marker_47fc44ba2d040debaacde9de9c6ee027 = L.marker(\n",
       "                [35.047267, 135.774661],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_0f4111a1944a45f897a724be0ace3f06 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#AB0054;\\&quot;\\u003e65.31\\u003c/div\\u003e&quot;});\n",
       "            marker_47fc44ba2d040debaacde9de9c6ee027.setIcon(div_icon_0f4111a1944a45f897a724be0ace3f06);\n",
       "        \n",
       "    \n",
       "            var marker_544ba9657a5f5bb23ec7d1eb4d7cb609 = L.marker(\n",
       "                [35.04716, 135.771013],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_b2022f744d44aeeac4686b32871ad3d8 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#AC0053;\\&quot;\\u003e65.38\\u003c/div\\u003e&quot;});\n",
       "            marker_544ba9657a5f5bb23ec7d1eb4d7cb609.setIcon(div_icon_b2022f744d44aeeac4686b32871ad3d8);\n",
       "        \n",
       "    \n",
       "            var marker_902009c5008498c404b1877a0647f888 = L.marker(\n",
       "                [35.045129, 135.768364],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_aa443d904e9149bbebea769339135fcb = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#AA0055;\\&quot;\\u003e65.04\\u003c/div\\u003e&quot;});\n",
       "            marker_902009c5008498c404b1877a0647f888.setIcon(div_icon_aa443d904e9149bbebea769339135fcb);\n",
       "        \n",
       "    \n",
       "            var marker_72e47c1f0c351480e0bb8d82c5eeab19 = L.marker(\n",
       "                [35.043302, 135.765473],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_b0ef024c09bebba277efb8cfcbaad654 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#AC0053;\\&quot;\\u003e65.42\\u003c/div\\u003e&quot;});\n",
       "            marker_72e47c1f0c351480e0bb8d82c5eeab19.setIcon(div_icon_b0ef024c09bebba277efb8cfcbaad654);\n",
       "        \n",
       "    \n",
       "            var marker_8631f141e167acdc6282d4d97af468e1 = L.marker(\n",
       "                [35.041839, 135.762195],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_8c9eeae0eaaef750f8050efe6e79380c = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#AC0053;\\&quot;\\u003e65.52\\u003c/div\\u003e&quot;});\n",
       "            marker_8631f141e167acdc6282d4d97af468e1.setIcon(div_icon_8c9eeae0eaaef750f8050efe6e79380c);\n",
       "        \n",
       "    \n",
       "            var marker_55be516c8ab308320203bbcf32322d45 = L.marker(\n",
       "                [35.040084, 135.759291],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_b03a930d4cf27501ca72dd842e04f638 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#A90056;\\&quot;\\u003e64.96\\u003c/div\\u003e&quot;});\n",
       "            marker_55be516c8ab308320203bbcf32322d45.setIcon(div_icon_b03a930d4cf27501ca72dd842e04f638);\n",
       "        \n",
       "    \n",
       "            var marker_7756ffec8d6f45568c82be6cbc8fc5f8 = L.marker(\n",
       "                [35.039232, 135.755718],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_11acdf7bde4c04e4760c80e6bb57fb3c = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#AF0050;\\&quot;\\u003e66.01\\u003c/div\\u003e&quot;});\n",
       "            marker_7756ffec8d6f45568c82be6cbc8fc5f8.setIcon(div_icon_11acdf7bde4c04e4760c80e6bb57fb3c);\n",
       "        \n",
       "    \n",
       "            var marker_5d59b7c50aa07e8500c06f0f6f896e76 = L.marker(\n",
       "                [35.038121, 135.752276],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_0ce2aa0b0e2d334a1f363709c176b986 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#A5005A;\\&quot;\\u003e64.24\\u003c/div\\u003e&quot;});\n",
       "            marker_5d59b7c50aa07e8500c06f0f6f896e76.setIcon(div_icon_0ce2aa0b0e2d334a1f363709c176b986);\n",
       "        \n",
       "    \n",
       "            var marker_01efed51a97a54c9cc5e844a26bbf8c7 = L.marker(\n",
       "                [35.035413, 135.751389],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_6e3cda3a59e07af2a30e859ad302c291 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#980067;\\&quot;\\u003e61.99\\u003c/div\\u003e&quot;});\n",
       "            marker_01efed51a97a54c9cc5e844a26bbf8c7.setIcon(div_icon_6e3cda3a59e07af2a30e859ad302c291);\n",
       "        \n",
       "    \n",
       "            var marker_742a48535a64abe1f4e21248cabea6ee = L.marker(\n",
       "                [35.032391, 135.751855],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_f8b0b840028f49fb3159eaaac1409033 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#860079;\\&quot;\\u003e58.68\\u003c/div\\u003e&quot;});\n",
       "            marker_742a48535a64abe1f4e21248cabea6ee.setIcon(div_icon_f8b0b840028f49fb3159eaaac1409033);\n",
       "        \n",
       "    \n",
       "            var marker_8d058c9766cbc95d005bb6c462d60611 = L.marker(\n",
       "                [35.029324, 135.751803],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_ef93abf46f8b42ef2ad3e88297dc2165 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#71008E;\\&quot;\\u003e55.03\\u003c/div\\u003e&quot;});\n",
       "            marker_8d058c9766cbc95d005bb6c462d60611.setIcon(div_icon_ef93abf46f8b42ef2ad3e88297dc2165);\n",
       "        \n",
       "    \n",
       "            var marker_15144999c80ed18b7604ce19cff49618 = L.marker(\n",
       "                [35.026257, 135.751761],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_a48e1f5979e78a8947454998d4fe02a0 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#60009F;\\&quot;\\u003e52.0\\u003c/div\\u003e&quot;});\n",
       "            marker_15144999c80ed18b7604ce19cff49618.setIcon(div_icon_a48e1f5979e78a8947454998d4fe02a0);\n",
       "        \n",
       "    \n",
       "            var marker_08f16465887d7fdbf337ba043d867d84 = L.marker(\n",
       "                [35.023191, 135.75172],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_e7dc4924931ec8315b76d90e612b643f = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#4B00B4;\\&quot;\\u003e48.36\\u003c/div\\u003e&quot;});\n",
       "            marker_08f16465887d7fdbf337ba043d867d84.setIcon(div_icon_e7dc4924931ec8315b76d90e612b643f);\n",
       "        \n",
       "    \n",
       "            var marker_ef65427e26ed20329fb15fff9a9bae28 = L.marker(\n",
       "                [35.020124, 135.75168],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_50d00aa39c5e2c0df468eeb8a4ab3c53 = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#3900C6;\\&quot;\\u003e45.15\\u003c/div\\u003e&quot;});\n",
       "            marker_ef65427e26ed20329fb15fff9a9bae28.setIcon(div_icon_50d00aa39c5e2c0df468eeb8a4ab3c53);\n",
       "        \n",
       "    \n",
       "            var marker_81e01eca16aea05a39cbb915858938ab = L.marker(\n",
       "                [35.017057, 135.75164],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_239c29e8433501f7b4465e362557f86b = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#2400DB;\\&quot;\\u003e41.42\\u003c/div\\u003e&quot;});\n",
       "            marker_81e01eca16aea05a39cbb915858938ab.setIcon(div_icon_239c29e8433501f7b4465e362557f86b);\n",
       "        \n",
       "    \n",
       "            var marker_353cc025bcc7252ebce853e3ce1e43d2 = L.marker(\n",
       "                [35.01399, 135.7516],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_e1a25ba4a57957f8d2957618250c101d = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#1600E9;\\&quot;\\u003e39.03\\u003c/div\\u003e&quot;});\n",
       "            marker_353cc025bcc7252ebce853e3ce1e43d2.setIcon(div_icon_e1a25ba4a57957f8d2957618250c101d);\n",
       "        \n",
       "    \n",
       "            var marker_bf3703dd44998a540ae7973e0463a67e = L.marker(\n",
       "                [35.010923, 135.75156],\n",
       "                {}\n",
       "            ).addTo(map_5817f4247571d7d007057898036fa026);\n",
       "        \n",
       "    \n",
       "            var div_icon_5c0434040aabb5d5efb08616fb4d9a0b = L.divIcon({&quot;className&quot;: &quot;empty&quot;, &quot;html&quot;: &quot;\\u003cdiv style=\\&quot;font-size:9pt;color:#0C00F3;\\&quot;\\u003e37.18\\u003c/div\\u003e&quot;});\n",
       "            marker_bf3703dd44998a540ae7973e0463a67e.setIcon(div_icon_5c0434040aabb5d5efb08616fb4d9a0b);\n",
       "        \n",
       "&lt;/script&gt;\n",
       "&lt;/html&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
      ],
      "text/plain": [
       "<folium.folium.Map at 0x14148bd90>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 地図を作る\n",
    "def create_map(zoom_level,step,min_val,max_val):\n",
    "    fmap = folium.Map(\n",
    "        location=kyoto,\n",
    "        zoom_start=zoom_level,\n",
    "        attr='OpenStreetMap & 国土地理院地図'\n",
    "    )\n",
    "    style = {\n",
    "        #'fillColor':'#0000FF90',\n",
    "        'color':'#0000FF60',\n",
    "        'weight':10}\n",
    "    \n",
    "    folium.GeoJson(\n",
    "            open(geojson_file).read(),\n",
    "            name='哲学の道疎水',\n",
    "            style_function=lambda x:style\n",
    "        ).add_to(fmap)    \n",
    "    folium.LayerControl().add_to(fmap)\n",
    "    for idx, row in csv_df.iterrows():\n",
    "        r=int(255*(row['elevation']-min_val)/(max_val-min_val))\n",
    "        b=255-r\n",
    "        g=0#255-2*abs(r-128)\n",
    "        val='{:06X}'.format(256*256*r+256*g+b)\n",
    "        if idx%step == 0:\n",
    "            folium.Marker(\n",
    "                location=[row['lat'],row['lng']],\n",
    "                icon=folium.DivIcon(\n",
    "                    html=f\"\"\"<div style=\"font-size:9pt;color:#{val};\">{row['elevation']}</div>\"\"\")\n",
    "            ).add_to(fmap)    \n",
    "    return fmap # 表示\n",
    "\n",
    "# 地図を描く\n",
    "create_map(13,10,35,80)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "67204015",
   "metadata": {},
   "source": [
    "## 斜度があるのは北白川近くを北上するあたり\n",
    "\n",
    "せっかくなので、横軸が距離、縦軸は標高のグラフも描いてみる。\n",
    "眺めると、最初の2kmほど、哲学の道沿いを北上するあたりは疎水分線の流れは緩やかだ。\n",
    "その後、天下一品の銀閣寺道店から、やっぱり本店で口直しをしようと歩く北白川あたりで、斜度が急になる。\n",
    "\n",
    "その後、北大路通と向きを同じくして東から西に回るあたりの4kmは、緩やかな流れに戻る。\n",
    "\n",
    "最後に、「堀川」となって北から南に京都の坂道を流れていくようになると、北白川あたりと同じ「1kmあたり10m程度下がる」という斜度になる。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "4dbfcd11",
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Elevation(m)')"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHFCAYAAAAHcXhbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABWxUlEQVR4nO3deVzVVfoH8M8Vr1d2EBBEUTApNdBQXEJza1wmbdHJCi21bBottxxHM2vEfqXpmFlUamWm44hlaTlOi1iICyoomoqmmIDKEojIaoBwfn/QvXG5+7593q8Xr5Hv9/C9zz3S3MdznnOORAghQEREROSgWtk6ACIiIiJTMJkhIiIih8ZkhoiIiBwakxkiIiJyaExmiIiIyKExmSEiIiKHxmSGiIiIHBqTGSIiInJoTGaIiIjIoTGZISKFY8eOYfz48ejcuTNkMhmCg4Nx77334u9//7utQ8Onn34KiUSC3NxcW4dikv3790MikWD//v22DoXIaTCZISIAwP/+9z/ExcWhoqICq1atwt69e/HOO+9g0KBB+Oyzz2wdHsaOHYsjR46gQ4cOtg6FiOyMhGczEREADB06FPn5+fj555/RunVrpXuNjY1o1Yr/9jGH/fv3Y/jw4UhJScGwYcNsHQ6RU+D/OxERAKC0tBSBgYEqiQwAlUSmsbERq1atQvfu3SGTydC+fXtMmTIF165dU2p38uRJjBs3Du3bt4dMJkNoaCjGjh2raJebmwuJRIJPP/1U5TUlEgkSEhIU3xsyzfTzzz8jPj4ewcHBkMlk6Ny5M6ZMmYLa2loAQElJCZ5//nn07NkTXl5eaN++PUaMGIGDBw8qPUce3+rVq7FmzRpERETAy8sL9957L44eParU9vjx43jiiScQHh4Od3d3hIeHIz4+Hnl5eTrjJSLTqP6/FhG5pHvvvRcff/wx5syZg8mTJ6NPnz6QSqVq286cORMffvghZs2ahXHjxiE3Nxevvvoq9u/fj8zMTAQGBqK6uhojR45EREQE3n//fQQHB6OoqAgpKSmorKy02Pv46aefMHjwYAQGBuK1115DZGQkCgsLsXv3btTV1UEmk+HGjRsAgKVLlyIkJARVVVXYtWsXhg0bhh9++EFlxOT9999H9+7dsXbtWgDAq6++igceeAA5OTnw9fUF0JT43HXXXXjiiSfQrl07FBYWYt26dejXrx/OnTuHwMBAi71nIpcniIiEENevXxeDBw8WAAQAIZVKRVxcnFixYoWorKxUtDt//rwAIJ5//nmlnz927JgAIF5++WUhhBDHjx8XAMRXX32l8TVzcnIEALFp0yaVewDE0qVLFd9v2rRJABA5OTla38eIESOEn5+fKC4u1v2mf3f79m1RX18v7r//fjF+/HiV+KKjo8Xt27cV19PT0wUAkZSUpPWZVVVVwtPTU7zzzjuK6ykpKQKASElJ0Ts+ItKO00xEBAAICAjAwYMHkZGRgTfffBMPP/wwLl68iMWLFyM6OhrXr18HAKSkpAAApk2bpvTz/fv3R48ePfDDDz8AALp16wZ/f38sWrQI69evx7lz5yz+HmpqapCamorHHnsMQUFBWtuuX78effr0Qdu2bdG6dWtIpVL88MMPOH/+vErbsWPHws3NTfF9r169AEBpCqmqqgqLFi1Ct27d0Lp1a7Ru3RpeXl6orq5W+0wiMh8mM0SkJDY2FosWLcKOHTtQUFCAF198Ebm5uVi1ahWAptoaAGpXFYWGhiru+/r6IjU1Fffccw9efvll3H333QgNDcXSpUtRX19vkdjLysrQ0NCATp06aW23Zs0azJw5EwMGDMCXX36Jo0ePIiMjA2PGjMGtW7dU2gcEBCh9L5PJAECp7aRJk/Dee+/h2Wefxffff4/09HRkZGQgKChI7TOJyHxYM0NEGkmlUixduhRvv/02zp49C+CPD/bCwkKVpKGgoECpNiQ6Ohrbt2+HEAKnT5/Gp59+itdeew3u7u546aWX0LZtWwBQFObKyRMiQ7Vr1w5ubm4qhcgtbd26FcOGDcO6deuUrhtby1NeXo49e/Zg6dKleOmllxTXa2trFfU5RGQ5HJkhIgBNyYk68imS0NBQAMCIESMANCUEzWVkZOD8+fO4//77VZ4hkUjQu3dvvP322/Dz80NmZiYAIDg4GG3btsXp06eV2n/99ddGvQd3d3cMHToUO3bsUEyLqSORSBSjK3KnT5/GkSNHjHpdiUQCIYTKMz/++GM0NDQY9Uwi0h9HZogIADB69Gh06tQJDz74ILp3747GxkacOnUKb731Fry8vDB37lwAwF133YXnnnsOiYmJaNWqFf785z8rVjOFhYXhxRdfBADs2bMHH3zwAR555BF07doVQgjs3LkTN2/exMiRIwE0JQFPPvkkPvnkE9xxxx3o3bs30tPTsW3bNqPfx5o1azB48GAMGDAAL730Erp164Zff/0Vu3fvxoYNG+Dt7Y1x48bh//7v/7B06VIMHToUFy5cwGuvvYaIiAjcvn3b4Nf08fHBkCFD8K9//QuBgYEIDw9HamoqNm7cCD8/P6PfCxHph8kMEQEAXnnlFXz99dd4++23UVhYiNraWnTo0AF/+tOfsHjxYvTo0UPRdt26dbjjjjuwceNGvP/++/D19cWYMWOwYsUKxTRUZGQk/Pz8sGrVKhQUFKBNmza466678Omnn2Lq1KmKZ7311lsAgFWrVqGqqgojRozAnj17EB4ebtT7kCdES5cuxeLFi1FZWYmQkBCMGDECbdq0AQAsWbIENTU12LhxI1atWoWePXti/fr12LVrl9HHDGzbtg1z587FwoULcfv2bQwaNAjJyckYO3asUc8jIv1xB2AiIiJyaKyZISIiIofGZIaIiIgcGpMZIiIicmhMZoiIiMihMZkhIiIih8ZkhoiIiBya0+8z09jYiIKCAnh7e0Mikdg6HCIiItKDEAKVlZUIDQ1Fq1bax16cPpkpKChAWFiYrcMgIiIiI1y9elXn4bFOn8x4e3sDaOoMHx8fsz67vr4ee/fuxahRoyCVSs36bGL/WgP72PLYx5bF/rU8W/VxRUUFwsLCFJ/j2jh9MiOfWvLx8bFIMuPh4QEfHx/+R2QB7F/LYx9bHvvYsti/lmfrPtanRIQFwEREROTQmMwQERGRQ2MyQ0RERA6NyQwRERE5NCYzRERE5NCYzBAREZFDYzJDREREDo3JDBERETk0JjNERETk0JjMEBERkUNz+uMMrOVySRXybtQgPMATQgjFnyMCPW0dGhERkVNjMmMGf/v3Cfx4sVTtvSGRQUiMj4GvB88MISIisgROM5nB0cvqExkAOHzpOmYnnbRiNERERK6FyYwJcq9XAwAahNDYpkEIHMguQc7vbc3hckkVUi4Um/WZREREjorTTCa4Wlajd9vc0mqT62du1tRhTtIpHMguUVzjNBYREbk6jswY6WZNHT46cFnv9uEBphcCz0k6hcOXritdO5RdwmksIiJyaUxmjDQn6RROXbups52bRIIhkUFGj8rIp5QOXCzBgewSlSmtRgAHsktwWo9YiIiInBGnmYzw09UyHMgugcxNd9s+nf2QGB9j8Guom1LS5u87TiH5xWEGvw4REZGj48iMEZbsOqt324y8MsxOOonymnoAyiMt2op41U0paZP9azUmrk9TvI6lsPiYiIjsDUdmDHS5pApnCyoM+pnDl65jxtYTuN3YiIzcMpX7sV388XRcOHp29EVEoCcul1TpPSLT3InfE6ct0/sb/LO6sPiYiIjsFZMZA+Xd0H8Fk1yDEDiiZS+a43llOJ7XlOQMiQzC47GdjIqtUUCxDFyeFJlrJ2J1I0XyPXQskTwRERHpi8mMgbq087Do8w9ll6DilmlTRWcLyrH06yyzjaJoGilqvocOj20gIiJbYc2MgboGeWFIZBDcJBKLPL8R0GuVlDZvfX8Bhy4pJx+m7ESsazQqt7SatTRERGQzHJkxQmJ8DGYnncSxy8WKa/4eUpRZuPhWX7mlqsmHfBTlwMWm5d2GTD3pGo1as/cCzuT/UUfUsgaIiIjIkpjMGMHXQ4ot0/vjUlE5so7tx/9m34duIb7IuV6NrIJyvLMvG9nFVbYOU60pn6Qr/qzv1JN8NOrwpesq+9y0kkApkQFUa4BYJExERJbEaSYTdAnwUPrfiEBPjOsVig1P9bVaDKsejTb6Zw2ZekqMj8GgboEq1xs1H0sFoKkGaPLHRzn9REREFsNkxgK6Bnkhtou/xV8nqqMPgrzbGv3z8qmng3osA5ePRvULN+x9NQI4W1CB4av349F1afjfTwVMbIiIyKw4zWQhT8eFK6Za1Gkl0T2qocvy8dHwkpn+V/jUxnREh/pgxtA7tNa5XC6pUrtPjr44/URERJbAkRkL6RHqo/V+XxNGblqhKRno1clPUc9iqjMFFXgh6SSGr96PKRvT1e4kfCxH8145hjp8iQdkEhGReXBkxkI0Fc26SSQY1C0QW6b3R871auSWViM8wBMVt+ox+eOjqKptUHpOKzRN8TRfKTX491ENucT4GMzYekLrxnyGaL4ZnnzJ9fb0q2Ytam5oscEfERGRsZjMWJB8CXfzDecGdQtUJCIRgX8sj56yMR01LRIZoCmR2b9gOG7U1CkSn5Yf/r4eUiQ9NxA516vx3JbjuFRSBWHCFJa8lmbE6v24bOH6ltxSJjNERGQaJjMWJC+abT4Co+6DW9tZTGU19bhRU6eU+GgSEeiJL2bEqSRQxjIkkbmzvRc8Za1x8upNg14jPICJDBERmYbJjBXoSkT02WFX39ELeQK1Pf0KXtp5xqA4jTEtLhxT48IV8eVcr8bZgnJ8cvAyTl4t1/qz/cL9OSpDREQmYwGwHdC1w66u0Qt1Rwn0j2in9Wd82ponj22eyABNiduOjGs4fU37yeL+HlJ8PKWfWWIgIiLXxpEZO6CrWFjT6MXNmjrMSTql9kBJXc9MjI/Bs1syjF5q3UoCDO4WpBKbtikzuX5d/PHx1H5clk1ERGbBkRk7oW6H3ebFwurMSTqFw5euK11rvquvtmf6ekixY0YcUhYMQ1RHHxh6bObgbkFqY9M1ZbZiQjR2zIxjIkNERGbDkRk7oW+xsJymERD5SiT5kmddzxRC4Gy+9imh5nqEeGPlX3qhV5if2vu6pswGdg3Q+7WIiIj0wWTGzuizagkwrGhY2zN1PQcAPKSt8I/R3TGse3udsRk7ZXa5pAp5N2oMOs2biIgIYDLjsEwtGtb3OdEdfbB1+kCDpoV07a/TPHHx95BqrPvhTBQREemDyYyDMnYERN/ntELTkQs7ZsYZHJumKbObNXWYsjFdKXHx95Ci4pby0Qnyup+NUzTXCxEREcmxANiBGVM0rO9zBkcG4eOppi2djgj0xPC7/piaUlewXFZTj4YWuxXL637ySnVPgREREXFkxoEZWjRs6edoo8+S7Zau3LDsUQpEROQcmMw4AX2Lhq31HHX0KTRuqZ1nG1RaIBYiInIunGZyQep2DLY0XYXG6qz69mcLREJERM6GIzMuRNuOwZbexE5TobE2J67exOMdgIpb9QiQcmkTERGpx5EZF6Jrx2BLS4yP0XlmlDr/+OK0BaIhIiJnwWTGRcgLcFuOijTfMdjSfD2kkLq1MvjohMO/XLfqlBgRETkWJjMuQp8dgy1NnlDpN8mk7OjlUrPHQ0REzoHJjIsw147BpjBmRZPc4p1nMGVjOspr6nU3JiIil8JkxkXIC3DdJMqTPG4SCYZEBlnlPCR9jk7QNgVlzfoeIiJyHExmXIi5dgw2lq6Eauv0gfDTsqrKmvU9RETkOLg024VYY6dfXbQdQllaXYsyPaaRsgrKIYTgKdtERASAyYxLsuROv7poS6gyr5bp9YyXd55BxW+3Fd9ba68cIiKyT5xmIptoeQgloP8uwc0TGYC1NEREro7JDNkNTTU1urCWhojItTGZIbuirkhZX9bYK4eIiOwPkxmyK/KampQFw9Czg49BP9u6laF7CxMRkTNgMkN2KSLQEx9PiTXoZ57amM6N9YiIXBCTGbJbPu5Nq5OWPXi33j/DYmAiItfDZIbsXt8u/nq3ZTEwEZHrYTJDdi880BNDIoNgSEkMi4GJiFwHkxmye+W36lDf0IhGA47btsbBmUREZB+4AzDZvYVfnEF6zg292raSAIO7WefgTCIisg8cmSG7d/iX62gQ+g3L9Az1sdrBmUREZB+YzJBTWTSmO89oIiJyMUxmyKlwrxkiItdj02QmPDwcEolE5euFF14AAAghkJCQgNDQULi7u2PYsGHIysqyZchkA4PuCDTovCbuNUNE5FpsmsxkZGSgsLBQ8ZWcnAwAmDhxIgBg1apVWLNmDd577z1kZGQgJCQEI0eORGVlpS3DJiv716O9VM5rGhIZhHWT+6htz71miIhci01XMwUFBSl9/+abb+KOO+7A0KFDIYTA2rVrsWTJEkyYMAEAsHnzZgQHB2Pbtm3429/+ZouQyQZ83JvOa8q5Xo3c0mqEB3giItATKReKtf5cbmk1VzUREbkAu1maXVdXh61bt2L+/PmQSCS4fPkyioqKMGrUKEUbmUyGoUOHIi0tTWMyU1tbi9raWsX3FRUVAID6+nrU15u3jkL+PHM/l5q07N9Ovm3QybeN4lonnzaQuWle5fTR/ovo1cFLcSwCqeLvsOWxjy2L/Wt5tupjQ15PIoSea14t7PPPP8ekSZNw5coVhIaGIi0tDYMGDUJ+fj5CQ0MV7Z577jnk5eXh+++/V/uchIQELFu2TOX6tm3b4OHhYbH4iYiIyHxqamowadIklJeXw8fHR2tbuxmZ2bhxI/785z8rJS4AIGlR+CmEULnW3OLFizF//nzF9xUVFQgLC8OoUaN0doah6uvrkZycjJEjR0Iq5b/+zU2f/q24VY9Z2zKRefWmxuf8b/Z96BLARFYd/g5bHvvYsti/lmerPpbPrOjDLpKZvLw87Nu3Dzt37lRcCwkJAQAUFRWhQ4cOiuvFxcUIDg7W+CyZTAaZTKZyXSqVWuwvwZLPJu39GyCV4rnhd+LpTRkaf/7n4mp0C/G1VHhOgb/Dlsc+tiz2r+VZu48NeS272Gdm06ZNaN++PcaOHau4FhERgZCQEMUKJ6CpriY1NRVxcXG2CJPsVJd22kddNqflWicQIiKyCZsnM42Njdi0aROmTp2K1q3/GCiSSCSYN28eli9fjl27duHs2bOYNm0aPDw8MGnSJBtGTPama5AXYrv4a7yfkVvGZdpERE7M5tNM+/btw5UrV/DMM8+o3Fu4cCFu3bqF559/HmVlZRgwYAD27t0Lb29vG0RK9uzpuHAczyvTeD+3tBpCCOTdqFEs7SYiIudg82Rm1KhR0LSgSiKRICEhAQkJCdYNihxOj1Dtxd0fpFxCRu4fyc6QyCAkxsfwHCciIidg82kmInPoGuSFIZFBKsceSAB4tHHDiRajNjzygIjIeTCZIaeRGB+jcuyBAFBT14DGFoN/8iMPDlwsQcqFYtbUEBE5MJtPMxGZi69H07EHE9enKU0paTPlk3TFnzn1RETkmDgyQ07lckmV3olMS4cvXcf0zRlmH6m5XFLF0R8iIgviyAw5lbwbNUb/bIMQOJ5XptiAz9SRmps1dZiTdAoHsksU1zj6Q0RkfhyZIaeiawM9Q5haJDwn6RQOX7qudO1Qdgme3ax5t2IiIjIckxlyKvJVTeYgLxI2ZnrockkVDmSXoKHFtgONADLyyvBg4kH876cCs089cUqLiFwRp5nI6STGx2DG1hM4crnULM/LLa02aJO9yyVV+OjgZa1tzuRX4IXfR33MMfXEKS0icmVMZsjp+HpIkfTcQORcr0bKz8VISr+C7OIqo58XHqBfInOzpg4zt2YanETJp7O2TO9vTHgA1E9pyZ+b8FBPvXc+vlxShWM5NyABMKBrAHdKbuFySRV3kSayQ0xmyGlFBHoiYnAEnhkcgZzr1ZidlIms/Aqo329avSGRQVo/tJp/uC39Osuo0aDm01nGfEDKp7Q0PXfEW6mKa/26+OPjqf1URmvOXLuJl3efx8+FlUrX4+4IwLrJfV1+dIcjX0T2jTUz5BIiAj3xn+kD4WfgB8+C0XeqvX6zpg5TNqZjxFupeHpTBoav3q82oTDE5rRco2pdDFnBlZFXhkErf8DpqzcBAOW36gAA8R8fU0lkACDtl1LulAztI19EZHscmSGXUVpdi7KaegN/pk7tdXUfbqb6NC0Xn6blIibMD88OjoC3uxT5N2+pTPm0nOowdAVXVW0DHnr/cFOhtLiNv+iolzZl1MgZ6Br5cuW+IbIXTGbIZRizB426ehlNH27mcvLqTUVxcHP9wv0hdWuFtF/+mMqK7eKPp+PC0S/cH5l5N1VWT2lzMLsEbdyEzmQGAGYnZeI/0we65JSKrt8bQwvEicj8mMyQyzBkBKMVgJ4aTuI2ZWM+U6jb2fh4XhmO/36Ipk/b1qj47bbezzOkduhcQYXJRcqOStfvjb4F4kRkOayZIZeh6WTtVgD8W4w4NAI4W1CB4av3Y8rGdJQ3m54ydFqnR4g3tk0fYLb9bzRpnsj06+KPmDA/sz27UcDoPXccnabfGzeJRGeBOBFZB5MZcinqTtYeHBmE/QuGI2XBMER19EEr5c8slUJP+YebPv/xrJgQjW/nDUFcZCC2TO+veA2J7h81SeaVm2grdVNJ0kyVVVBu1uc5CnW/N4O6BSIxPsZGERFRc5xmIpciP1k753o1ckurlfYLKa2uxdn8CpWfaV7oKYRA3o0aLBh9J2rqbiumeDQZ2DVA6XshhNrXMLcGIXDkcil2zxqE/9tzzujDN1vanJaLcb1CzfIse9ayyFrb7w0R2R6TGXJJEYGqH0a6amFmJ2UqJSJDIoMQE+aHk78vc25J3RSEtettSqvrsGNGHE5fu4nZSZnIK71l0vMycsusunqneVIhTyQtmUjo2k9G3e8NEdkekxmi3+mqhTlXoDyicjC7BN1DvBET5ouTV5WnX+LuCFA7BWHOgzD1IS9O7dXJD5um9VfaQE+dVhLgzmBv/FykuueMnDVWNp26UoZXvj6rcRTLUhvWadtPxhWLn4kcBWtmiH6nrUAYaCqCbU4AOF9UiZNXy9Gviz+WjuuBNydEI2XBMGz7q/oPe0OKkO9sb/wIQCtJ07Lt3NJqRdGuPodwDu4WhJV/6aW1jXxlkyXINyN85IM0rdNxh7JLzB6DpsNBTTlwlIisg8kMUTPqCj01LdFuLvPKTaRcuI4n+nfWOQ2hqwh509P9kLJgGPbOH2b0CihfdymO55UpdieWr8hKjI/BvS3qeADgrvbe2P3CIGyZ3h+9w/y0FjhbcmXTnKRTOKjHHj6NaIrhu7OFZnttffaTISL7xGkmomaaF3oevVwKCYBQP3dM+SRd688ZshustmJSeV2GnKYTwGPC/DCpfxg+P3FNqbg3KtQHUrdWOH1Nedqr+VSJ/BDOo5dLIWlsAH49jS+fj4NU+sfIUGJ8DCZ/fBRnCzSPjph7s7j/nS4weDPCGVszzTblpO9+Mjxsksj+MJkhauFmTR2Wfp2l9MHatnUr/Ha7UefPGvIBr08xafMTwOXJVfOjDSb266yUFAkh1NbFtEy25F/19fX45pvTal/33fgYrTU25tosTl3RrSEOXSoxS02LfBru8KXrSlNNbhIJBnULhL+HFFM2ptv8sEl5MuUmkaBBCCZVRGAyQ6RCXRGoPokMYLndYLUlPs3vpVwo1vocQ5ItTR/urdA0LWauD9A5SadwyITjIZpPezWPyZgRlMT4GMxOOqmUsMj3k5mddNKmxcHakj6e4E2ujskMUTPGnrsk/9e7rf+FbO6t99VNczUCqPytHv/7qQA9O/qa9J7Nec5VbmnTPkBZhRXYkparNP2m74e9pilAezhsUtvhpvKCaK64IlfFZIaoGWP3gbGX3WB1TZUY+oHr6yGF1K0VWkmUV3M1PwzT2FGByyVV+O/pAoN+RpvX95zDLyXqi3QNHUFpORJm68MmdSV98oLo09duolcnP4vFQWSvmMwQNWPIPjD/erQXAr1ldlezoG2qxFD6jJwYmigYUiMjQdMS86mDwrG5xWhLS5oSGUD9Ls7NR110TUfZ+rBJfZPsl3edwZ7Z91k0FiJ7xGSGqBn5yMah7BLoqpIJ9JZh+F3trRKXIcy59b4+H6LyROFgdgnu07CUvHnR6qrvf0aWnkc63Nds1Gdcr1B8e6YQM/+TadB7aG7apnTklf7xnlqeNB4V6oPl46PRS80hnVEdfXCuoEJlvyEAmLMtE+NjOsJD1lqpQNtc9E2yz+ZXWHWHZiJ7wWSGqAV1IxvqWPpf46Yyx9b7hoxUPbUxXSUZMHalUo8Qb6z8Sy+VpKJtGzeDntNS80QGUD5pHGg6Kf2h9w+jXxd/fDy1HwSEXvGfKajAmWbL2OPuCMC6yX3NVpCrafpQHUtPeRHZI26aR9SCfGRj96xB8JKpfni6SdSfu+SMNO1YrIk8GZBv0jcn6RQOXTIskZEACPJuq3Z0xFrHQWTklWHY6hQ8/59MjUW32qT9UopH16c1jY79vrlgy0RK7nJJFVIuFOvchFDdZovq2HuSTWQJTGaINOjVyQ+HF92PfuH+StcHdQuyi2Jfa0mMj0FMZz+DfuZgdgnGJh7AgewStdMy2gho3mHY0OTKFGU19Uj7pVTnSIgm2cVVGL56P8a9dwgAMDbxIMa9exCnfz+YVH50w4i3UlV2alZHnmSnLBiGqI4+aNWiC9wkEpdJsola4jQTkRa+HlLsmBFnlvoTR+XrIcULI7rh6U0Zev+MAHCt7DeTXlfTdIm+04D2SD5yFdneE40CKgnbwewSPLo+DR9OiVX73uW1R8vHR2P19xfNUuRN5AyYzBDpwRz1J47M2qd9A5qnS+QjFBPXp+F4bhmMGzexrexi9VNKAn+M6DSvu1FXezQkMgi7XxiE0po6l0yyiZrjNBMR6WTN6R19pksul1Qhw0qJTMvpnFYAWre8aAFpv5QqTgZXt2He4UvXsXrvRQy/qz0TGXJ5TGaISC/6FqAaQgKoFFnrM11i7OaGhnCTAPd2DcDgbsrLzQdHBiHl78NUaqks4UB2CT7LuIID2SUqtTvN985pTt+CYiJnwmkmItJL8/1rZidlatxzxRDyfWRu1NQZVJOka9qrX7g/MvNuqi3eVbe3zMt/7oG3f7iotCmfvNDb10OqtmaqeS1V61YSvPbfc8gurtL3rett0ZdntN6XH+OQcqEY29OvKsUQHepj0f1viOwFkxkiMkhEoCf+M32gUUW4QyKDsGDUnSp1Hr4eUoM+aHUd26CuSLj5HjjqkpO4yECNhd6aaqaaX/9iRpzKOVbW8O6+izh5tVztvZb738j37/Fq29rgQziJ7BmTGSInZMyJ0YZoucvwBymXNI6EAJo3wTOFtmMbdO2CrE9yYihfDymSnhuInOvVSPm5GEnpVywyUiPnJpHAx721xkRGnfNFlXjo/cNK1+QbBPLEbXJkTGaInIimVS/GHASpD/mHf58wf5XEIrK9Jyb174Jh3S1ToKrPsQ22WIUWEeiJiMEReGZwBHKuVyOnuByV2Rn47LmBWPzVOZwvrDTL68R09sPxPM1nVelLvkHg/gXDmdCQw2IyQ+RENK16MeQgSGOY8zwoQ9nzsvmIQE908m2Db7KBu0N98e3cIci5Xo2jl0shAdDR3x23GwXCAzxx9UYNpnySrvezH+3bySzJDNC0QeCzWzKwY0acWZ5HZG1MZoichKYTrpuverH0h749Jxb2QtsUV1SoD84W6HcIp7mXpWfklvGQSnJYXJpN5CR0LVfOLeVSXWNYc6nzG+Oj9W47sGsAhmg4pdxYs5MyNR6nQGTPmMwQOQldy5V5AKFhDD07yRx6h/lhSGSQykZ9zTXfVDAxPgb3dg0w2+tn5VcoNuojciScZiJyErqWK3P6wDC2qj/SdfZU800Fm6+gktfhDPg9uZHvf5P9axVW772AmroGna8tP+Tz9LWb6NXJz0zviMjymMwQORFty5VJf7asP1JXTA1Aa2G1ujoc+ff3RQbhL3064dktGUqbAmrz9x2nkPziMJPeB5E1MZkhciK2XFXkTPSpP7J2MbUpr9fy9Hc3iUTryqnsX6sxcX0aPp7C/WfIMbBmhsgJRQR68gBCEzhr/ZH892LInUGICvXR2vZ4bhnrZ8hhMJkhImpB0ynh+pzo7Sh0rZyS1898d7bQOgERmYDJDBGRGupOCXem+iP5yiktC6cAADO2Zlp8FReRqVgzQ0SkhivUHyXGx2D65gydOwkfulRi8VVcRKbgyAwRkRryzfIAOG39ka+HFF/MjENkey+t7RoFFKu4iOwRR2aIiJqx9mGd9mD1xN54uMVp2upYYxUXkTE4MkNE1Iy2zfKclb71M466ioucH5MZIqLfyTfLa76DMqC8WZ6zSoyPwX1aznrykrmh8haLgMk+MZkhIvqdKx/WKS943j1rELxkbir3q2ob8ND7h7myiewSkxkiot8562Z5hvCStUZVreZznA5mlzj1lBs5JiYzRES/c4XN8nTRNTrV/DBKInvBZIaIqBln3yxPF12jU3Iv7zpj4UiI9Mel2UREzbjCZnnayEenDmWXoFFLu7P5FRY9PZzIEByZISJSw5UP60yMj8FgLSub5GYnZbIYmOwCkxkiIlIiH51aN7mP1nbnCipYDEx2gckMERGp9efoDlo30+MxB2QvmMwQEZFGifExuDvUR2ubrIJyK0VDpB6TGSIi0sjXQ4p3dazk2pD6i5WiIVKPyQwREWnVNcgLsV38Nd4/k1+BievTWAxMNmPU0uzy8nLs2rULBw8eRG5uLmpqahAUFISYmBiMHj0acXFx5o6TiIhs6Om4cBzPK9N4/3huGWYnncSW6f2tGBVRE4NGZgoLC/HXv/4VHTp0wGuvvYbq6mrcc889uP/++9GpUyekpKRg5MiR6NmzJz777DNLxUxERFbWQ0fdjHxn4O/OFlonIKJmDBqZ6d27N6ZMmYL09HRERUWpbXPr1i189dVXWLNmDa5evYoFCxaYJVAiIrIdfTfTm7E1E0Mig5AYHwNfD6nV4iPXZlAyk5WVhaAg7Rspubu7Iz4+HvHx8SgpKTEpOCIish+J8TGYvjlD63QTABy6VMIpJ7Iqg6aZdCUyprYnIiL75eshxRcz4xDZ3ktrO+4/Q9Zm0tlM+fn5OHz4MIqLi9HYqDzwOGfOHJMCIyIi+7R6Ym88/P5hne2yCspd8jgIsj6jk5lNmzZhxowZaNOmDQICAiCR/LFHpEQi0TuZyc/Px6JFi/Dtt9/i1q1buPPOO7Fx40b07dsXACCEwLJly/Dhhx+irKwMAwYMwPvvv4+7777b2NCJiMgEvcP8MCQyCAezSyC0tNuclotxvUKtFhe5LqP3mfnnP/+Jf/7znygvL0dubi5ycnIUX5cvX9brGWVlZRg0aBCkUim+/fZbnDt3Dm+99Rb8/PwUbVatWoU1a9bgvffeQ0ZGBkJCQjBy5EhUVlYaGzoREZkoMT4G9+k4jDIjt4xTTWQVRiczNTU1eOKJJ9CqlfH77q1cuRJhYWHYtGkT+vfvj/DwcNx///244447ADSNyqxduxZLlizBhAkTEBUVhc2bN6Ompgbbtm0z+nWJiMg08sMolz7YU2u73FImM2R5Rk8zTZ8+HTt27MBLL71k9Ivv3r0bo0ePxsSJE5GamoqOHTvi+eefx1//+lcAQE5ODoqKijBq1CjFz8hkMgwdOhRpaWn429/+pvLM2tpa1NbWKr6vqKgAANTX16O+3ry7U8qfZ+7nUhP2r+Wxjy3P2ft4cFd/yNw0TzZ9tP8ienXwgo+7ZZZpO3v/2gNb9bEhrycRQmib8tSooaEB48aNw61btxAdHQ2pVPkXdc2aNTqf0bZtWwDA/PnzMXHiRKSnp2PevHnYsGEDpkyZgrS0NAwaNAj5+fkIDf1j3vW5555DXl4evv/+e5VnJiQkYNmyZSrXt23bBg8PD0PfJhEREdlATU0NJk2ahPLycvj4aN+00eiRmeXLl+P777/HXXfdBQAqBcD6aGxsRGxsLJYvXw4AiImJQVZWFtatW4cpU6ZofJ4QQuNrLF68GPPnz1d8X1FRgbCwMIwaNUpnZxiqvr4eycnJGDlypEoyR6Zj/1oe+9jyXKGPK27VY9a2TGRevamxzf9m34cuAeb/B6Ur9K+t2aqP5TMr+jA6mVmzZg0++eQTTJs2zdhHoEOHDujZU3m+tUePHvjyyy8BACEhIQCAoqIidOjQQdGmuLgYwcHBap8pk8kgk8lUrkulUov9JVjy2cT+tQb2seU5cx8HSKV4bvideHpThsY2V8tr0S3E12IxOHP/2gtr97Ehr2V09a5MJsOgQYOM/XEAwKBBg3DhwgWlaxcvXkSXLl0AABEREQgJCUFycrLifl1dHVJTU3mYJRGRHenSTvuoS4BnGytFQq7I6GRm7ty5SExMNOnFX3zxRRw9ehTLly/HpUuXsG3bNnz44Yd44YUXADRNL82bNw/Lly/Hrl27cPbsWUybNg0eHh6YNGmSSa9NRETmIz+7SZPV31+0YjTkaoyeZkpPT8ePP/6IPXv24O6771YZDtq5c6fOZ/Tr1w+7du3C4sWL8dprryEiIgJr167F5MmTFW0WLlyIW7du4fnnn1dsmrd37154e3sbGzoREVnA30fdiQPZ6s/kkx9vwB2ByRKMTmb8/PwwYcIEkwMYN24cxo0bp/G+RCJBQkICEhISTH4tIiKynBs1dVrvz07KxH+mD+Rp2mR2Jh1nQEREJKerbiYrv4KnaZNFGL99LxERUTPyuhlNHywCTdNNp6/dtGJU5AoMSmbGjBmDtLQ0ne0qKyuxcuVKvP/++0YHRkREjicxPgY9Q7Xv6fXyrjNWioZchUHTTBMnTsRjjz0Gb29vPPTQQ4iNjUVoaCjatm2LsrIynDt3DocOHcI333yDcePG4V//+pel4iYiIjvk6yHFu/ExGPFWqsY2Z/MrWAxMZmVQMjN9+nQ89dRT+OKLL/DZZ5/ho48+ws2bNwE0Fer27NkTo0ePxokTJxQ7AxMRkWvpGuSFqFAfnC3QvINrbimTGTIfgwuA27Rpg0mTJin2eSkvL8etW7cQEBDA3ReJiAgA8Mb4aDz8/mGN9z9IuYQ+Yf5c2URmYXIBsK+vL0JCQpjIEBGRQu8wv6ZiYA1H9WXm3cTspJPWDYqcltFLs4Gmowf279+P4uJiNDY2Kt375z//aVJgRETk2BLjYzB9cwaO55Wp3GsQghvpkdkYncx89NFHmDlzJgIDAxESEqJyajaTGSIi1+brIcULI7ppPYAyq6CcyQyZzOhk5vXXX8cbb7yBRYsWmTMeIiJyIro20tuclotxvUKtFA05K6NrZsrKyjBx4kRzxkJERE6ma5AXYrv4a7yfkVuGnOvVVoyInJHRyczEiROxd+9ec8ZCRERO6Om4cK33c0uZzJBpjJ5m6tatG1599VUcPXoU0dHRKquZ5syZY3JwRETk+Hro2BGYy7TJVEYnMx9++CG8vLyQmpqK1FTlnR4lEgmTGSIiAvDHmU2HL11HgxAq9+XLtHkAJRnL6GQmJyfHnHEQEZET4zJtsiSznJothIBQk20TEREBfyzT1iaroNxK0ZCzMSmZ2bJlC6Kjo+Hu7g53d3f06tUL//73v80VGxERORF9lmkTGcPoZGbNmjWYOXMmHnjgAXz++ef47LPPMGbMGMyYMQNvv/22OWMkIiInwGXaZClG18wkJiZi3bp1mDJliuLaww8/jLvvvhsJCQl48cUXzRIgERE5j6fjwtXWzcjxNG0yhtEjM4WFhYiLi1O5HhcXh8LCQpOCIiIi56RrmXZ4ABMZMpzRyUy3bt3w+eefq1z/7LPPEBkZaVJQRETknOTLtN0k6o/TXvp1Fspr6q0cFTk6o6eZli1bhscffxwHDhzAoEGDIJFIcOjQIfzwww9qkxwiIiKgaZn27KSTOJBdonLvUHYJ95whgxk9MvOXv/wFx44dQ2BgIL766ivs3LkTgYGBSE9Px/jx480ZIxERORFfDykSHuqp9l4jgAPZJTh97aZVYyLHZvTIDAD07dsXW7duNVcsRETkIvJu1Gi9//cdp5D84jCrxEKOz6CRmYqKCqU/a/siIiLSRNeeM9m/VmPi+jTWz5BeDEpm/P39UVxcDADw8/ODv7+/ypf8OhERkSZdg7wQpWNl0/HcMsxOOmmliMiRGTTN9OOPP6Jdu3YAgJSUFIsEREREruGN8dF4+P3DGu8LNNXPfHe2EGOiOlgvMHI4BiUzQ4cOVfw5IiICYWFhkLRYXieEwNWrV80THREROa3eYX4YEhmEg9kl0Ha634ytmRgSGYTE+Bj4ekitFh85DqNXM0VERKCkRHVZ3Y0bNxAREWFSUERE5BoS42PQV8sRB3KHLpVwyok0MjqZEUKojMoAQFVVFdq2bWtSUERE5Bp8PaT4YmYcItt7aW3XKJqmnHh2E6lj8NLs+fPnAwAkEgleffVVeHj8UZHe0NCAY8eO4Z577jFbgERE5PxWT+yttX5Gjmc3kToGJzMnTzYN8wkhcObMGbRp00Zxr02bNujduzcWLFhgvgiJiMjp6Vs/E+DZRstdclUGJzPyVUxPP/003nnnHfj4aF9aR0REpA9txxzIrf7+Io86IBVG18xs2rSJiQwREZmNr4cUW6b3x7rJfTS2Yd0MqWPScQYZGRnYsWMHrly5grq6OqV7O3fuNCkwIiJyTW3buGm9PzspE/+ZPpDLtEnB6JGZ7du3Y9CgQTh37hx27dqF+vp6nDt3Dj/++CN8fX3NGSMREbkQXUcdZOVXYPLHRzlCQwpGJzPLly/H22+/jT179qBNmzZ45513cP78eTz22GPo3LmzOWMkIiIX0jXIC0MigzR+QAkAZwsqMHz1fvzt3yesGRrZKaOTmV9++QVjx44FAMhkMlRXV0MikeDFF1/Ehx9+aLYAiYjI9STGx6CnjrObAODo5VIrREP2zuhkpl27dqisrAQAdOzYEWfPngUA3Lx5EzU12o92JyIi0sbXQ4p342N0tmsQTQu580r5uePKjE5m7rvvPiQnJwMAHnvsMcydOxd//etfER8fj/vvv99sARIRkWvqGuSFWD2OOgCAKzdYP+PKjF7N9N577+G3334DACxevBhSqRSHDh3ChAkT8Oqrr5otQCIicl1Px4XjeF6ZznbtuJmeSzM6mWnXrp3iz61atcLChQuxcOFCswRFREQEAD30qJsBgHd/uIRPngm0cDRkr4yeZho+fDg2btyI8vJyc8ZDRESkIF/Z5KbmYOPmDv9ynUu1XZjRyUx0dDReeeUVhISE4C9/+Qu++uorlY3ziIiITJUYH4NB3XSPusxOykR5Tb0VIiJ7Y3Qy8+677yI/Px9ff/01vL29MXXqVISEhOC5555DamqqOWMkIiIXJj/mYMsz2s9kysqvwOykk1aKiuyJ0ckM0FQrM2rUKHz66af49ddfsWHDBqSnp2PEiBHmio+IiAgAMOTOIJ2b6R3ILsHpazetGBXZA5OSGbmioiKsX78eK1euxOnTpxEbG2uOxxIRESnRZzO9v+84ZZ1gyG4YncxUVFRg06ZNGDlyJMLCwrBu3To8+OCDuHjxIo4dO2bOGImIiADot5le9q/VmLg+jfUzLsTopdnBwcHw9/fHY489huXLl6Nfv37mjIuIiEitrkFeiAr1wdmCCo1tjueW4dnNGdgxM86KkZGtGD0y8/XXX+PatWtYu3YtExkiIrKqN8ZHa70vAGTklXGExkUYncyMGjUKjY2N2LdvHzZs2KA4p6mgoABVVVVmC5CIiKil3mF+GBIZBO27zwAn8sq4wskFGJ3M5OXlITo6Gg8//DBeeOEFlJSUAABWrVqFBQsWmC1AIiIidRLjYxAT5qe1TaNoWuHEDfWcm9HJzNy5cxEbG4uysjK4u7srro8fPx4//PCDWYIjIiLSpGn/mQEAoHOEJquAu9U7M6OTmUOHDuGVV15BmzbKh3t16dIF+fn5JgdGRESkL10jNJvTcq0SB9mG0clMY2MjGhoaVK5fu3YN3t7eJgVFRERkiC3TByC6o+b9ZzJyyzjV5MSMTmZGjhyJtWvXKr6XSCSoqqrC0qVL8cADD5gjNiIiIr3NGHKH1vs8u8l5GZ3MvP3220hNTUXPnj3x22+/YdKkSQgPD0d+fj5WrlxpzhiJiIh06qFjZ+BzBTy7yVkZvWleaGgoTp06haSkJGRmZqKxsRHTp0/H5MmTlQqCiYiIrKFrkBeGRAbhUHYJGtXcb76yKSLQ0+rxkeUYncwAgLu7O5555hk888wz5oqHiIjIaInxMZj88VGtuwNnFZQzmXEyBiUzu3fv1rvtQw89ZHAwREREppCf3TTirVSNbTan5WJcr1ArRkWWZlAy88gjj+jVTiKRqF3pREREZGldg7wQ28Ufx/PK1N6Xr2zi6IzzMKgAuLGxUa8vJjJERGRLT8eFa73PlU3OxeDVTA888ADKy//YSfGNN97AzZs3Fd+XlpaiZ8+eZgmOiIjIGFzZ5FoMTma+++471NbWKr5fuXIlbty4ofj+9u3buHDhgnmiIyIiMoJ8ZZOmDzme2eRcjN5nRk4IYY44iIiIzCoxPgY9dYzQpPz8q5WiIUsyOZkhIiKyR/KVTdq8tuc8pmxMZ/2MgzM4mZFIJJBIJCrXiIiI7I18ZZM2hy6VsH7GwRm8aZ4QAtOmTYNMJgMA/Pbbb5gxYwY8PZuWuDWvpyEiIrK1p+PCNS7TBrgzsDMwOJmZOnWq0vdPPvmkSpspU6YYHxEREZEZ6VrZJJdbymTGURmczGzatMkScRAREVmErjOb5MIDmMg4KpsWACckJChqcORfISEhivtCCCQkJCA0NBTu7u4YNmwYsrKybBgxERE5osT4GAyODNJ4399DinYebawYEZmTzVcz3X333SgsLFR8nTlzRnFv1apVWLNmDd577z1kZGQgJCQEI0eORGVlpQ0jJiIiR+PrIcWW6f2xe9YgeMncVO5X3KpnEbADs3ky07p1a4SEhCi+goKaMmchBNauXYslS5ZgwoQJiIqKwubNm1FTU4Nt27bZOGoiInJEXrLWqKpVPXKngZvoOTSbJzPZ2dkIDQ1FREQEnnjiCVy+fBkAkJOTg6KiIowaNUrRViaTYejQoUhLS7NVuERE5MDybtRovc8zmxyTwQXA5jRgwABs2bIFd955J3799Ve8/vrriIuLQ1ZWFoqKigAAwcHBSj8THByMvLw8jc+sra1VWh5eUVEBAKivr0d9vXl/QeXPM/dzqQn71/LYx5bHPrYsQ/u3k08byNw071z/y6/leHH7CWx4qq9Z4nMGtvodNuT1JMKOziOorq7GHXfcgYULF2LgwIEYNGgQCgoK0KFDB0Wbv/71r7h69Sq+++47tc9ISEjAsmXLVK5v27YNHh4eFoudiIiIzKempgaTJk1CeXk5fHy0L6+36chMS56enoiOjkZ2djYeeeQRAEBRUZFSMlNcXKwyWtPc4sWLMX/+fMX3FRUVCAsLw6hRo3R2hqHq6+uRnJyMkSNHQiqVmvXZxP61Bvax5bGPLcuY/q24VY9nNx/HuaIKjW1WT+yNMXeHaLzvSmz1OyyfWdGHXSUztbW1OH/+PO677z5EREQgJCQEycnJiIlpOlujrq4OqampWLlypcZnyGQyxe7EzUmlUov9JVjy2cT+tQb2seWxjy3LkP4NkErx1hN9MOKtVI1tthy9igfvCTNXeE7B2r/DhryWTQuAFyxYgNTUVOTk5ODYsWN49NFHUVFRgalTp0IikWDevHlYvnw5du3ahbNnz2LatGnw8PDApEmTbBk2ERE5OF1nNmXklnFlkwOx6cjMtWvXEB8fj+vXryMoKAgDBw7E0aNH0aVLFwDAwoULcevWLTz//PMoKyvDgAEDsHfvXnh7e9sybCIicgK6zmzi8QaOw6bJzPbt27Xel0gkSEhIQEJCgnUCIiIil6HrzKYPUi6hT5g/fD04PWjvbL7PDBERkS3Iz2xyk0jU3j+RW8ZdgR0EkxkiInJZifExiOnsp/ZeI5p2BT597aY1QyIjMJkhIiKX5eshxQsjumlt8/KuM1rvk+0xmSEiIpfWpZ32DVXP5ldwZZOdYzJDREQurWuQF6J0FAPzzCb7xmSGiIhc3hvjo7Xez8qvYDGwHWMyQ0RELq93mB+GRAZB/bomQIDFwPaMyQwRERGaVjbdrWO6icXA9onJDBEREZpWNr0bH6O1DYuB7ROTGSIiot+xGNgxMZkhIiJqRlcx8LkCFgPbGyYzREREzegqBm4UTcXAnG6yH0xmiIiIWtCnGDiroNxK0ZAuTGaIiIha0KcYeHNarnWCIZ2YzBAREanRNcgLsV38Nd7PyC3jVJOdYDJDRESkwdNx4Vrv55YymbEHTGaIiIg06KGjbuaDlEtcpm0HmMwQERFp0DXIC0Mig+AmUb+26URuGZdp2wEmM0RERFokxscgprOf2nuN4JlN9oDJDBERkRa+HlK8MKKb1jZ/33HKOsGQWkxmiIiIdOjSzkPr/exfqzFxfRrrZ2yEyQwREZEO+pzZdJz1MzbDZIaIiEgPus5sEmD9jK0wmSEiItKDrjOb5F7edcYq8dAfmMwQERHpKTE+Bn217AoMAGfzK7gzsJUxmSEiItKTr4cUX8yMQ2R7L63tZidlshjYipjMEBERGWj1xN5a758rqGAxsBUxmSEiIjKQrvqZRtFUDMzpJutgMkNERGSExPgY3K1juXZWQbmVonFtTGaIiIiM4OshxbvxMVrbbEj9xUrRuDYmM0REREbqGuSFWC2rm87kV3BnYCtgMkNERGSCp+PCtd4/kcedgS2NyQwREZEJeuiom2ExsOUxmSEiIjJB1yAvDIkM0vmBymJgy2EyQ0REZKLE+Bj00bEz8Oa0XOsE44KYzBAREZlIvjNwdEfNU04ZuWWcarIQJjNERERmMmPIHVrv55YymbEEJjNERERmoqsY+IOUS1ymbQFMZoiIiMxEXgzsJlF/0EFm3k0u07YAJjNERERmlBgfg5jOfmrvNQjBZdoWwGSGiIjIjHw9pHhhRDetbVg7Y15MZoiIiMysSzsPrffDAzytFIlrYDJDRERkZto20vP3kKKdRxurx+TMmMwQERFZQGJ8DHw9pCrXy2vq8ezmDBtE5LyYzBAREVlAaXUtytQsw24EkJFXxtO0zYjJDBERkQXk3ajRep+naZsPkxkiIiIL0FUEzNO0zYfJDBERkQXwNG3rYTJDRERkITxN2zqYzBAREVkIT9O2DiYzREREFsbTtC2LyQwREZGF8TRty2IyQ0REZGE8TduymMwQERFZAU/TthwmM0RERFagz2naXKZtHCYzREREVqJrI73V3//M0RkjMJkhIiKykq5BXojVsu9MbuktDF+9H5M+OsqCYAMwmSEiIrKip+PCdbZJ+6WUBcEGYDJDRERkRbqWacuxIFh/TGaIiIisSN8zmwBupqcvJjNERERWps+ZTQDQupX6fWlIGZMZIiIiK5Of2dQvXHtC89TGdBYD64HJDBERkY18PKUf7u0aoLVN2i+leHZzhpUickxMZoiIiGzE10OKpOcGYssz/bW2y8grw8T1aRyh0YDJDBERkY01CKGzzfHcMi7X1oDJDBERkY3p2hkYAASalmufvnbT4vE4GiYzRERENiZfrq2Pv+84ZdlgHBCTGSIiIjuQGB+jsxgYALJ/rcaDiQdZP9MMkxkiIiI7IC8GTlkwDKG+bbW2PZNfgWGrU5jQ/I7JDBERkR2JCPTEuif76mxXVlOPZ7dwyTbAZIaIiMju9A7zw5DIIOja/zcjt4znN8GOkpkVK1ZAIpFg3rx5imtCCCQkJCA0NBTu7u4YNmwYsrKybBckERGRlSTGx6CvHkce8PwmO0lmMjIy8OGHH6JXr15K11etWoU1a9bgvffeQ0ZGBkJCQjBy5EhUVlbaKFIiIiLrkB95EN1R+ynb4QGeVorIftk8mamqqsLkyZPx0Ucfwd//jwxUCIG1a9diyZIlmDBhAqKiorB582bU1NRg27ZtNoyYiIjIerZOHwh/D6nG+0u/znL5QuDWtg7ghRdewNixY/GnP/0Jr7/+uuJ6Tk4OioqKMGrUKMU1mUyGoUOHIi0tDX/729/UPq+2tha1tbWK7ysqKgAA9fX1qK8371+2/Hnmfi41Yf9aHvvY8tjHluUK/eshBfbNG4zZSZk4ceWmyv3jOSV4cfsJbHhKd9GwMWzVx4a8nk2Tme3btyMzMxMZGarV2EVFRQCA4OBgpevBwcHIy8vT+MwVK1Zg2bJlKtf37t0LDw/dOywaIzk52SLPpSbsX8tjH1se+9iyXKF/Hw9p+lLvV3zzzTcWfX1r93FNTY3ebW2WzFy9ehVz587F3r170bat5vX0EolyLbcQQuVac4sXL8b8+fMV31dUVCAsLAyjRo2Cj4/2eUdD1dfXIzk5GSNHjoRUqnkIkIzD/rU89rHlsY8ty5X692B2CWb+J1Pj/ZdG34Un7w03++vaqo/lMyv6sFkyc+LECRQXF6Nv3z+GxRoaGnDgwAG89957uHDhAoCmEZoOHToo2hQXF6uM1jQnk8kgk8lUrkulUov9JVjy2cT+tQb2seWxjy3LFfo3PMgHtQ2a/zG/7JuLSMkuQ2J8DHy11NgYy9p9bMhr2awA+P7778eZM2dw6tQpxVdsbCwmT56MU6dOoWvXrggJCVEa1qqrq0Nqairi4uJsFTYREZFNdA3yQqyOpdoHs0tc8mRtm43MeHt7IyoqSumap6cnAgICFNfnzZuH5cuXIzIyEpGRkVi+fDk8PDwwadIkW4RMRERkU0/HheN4XpnG+/KTtb87W4gxUR00tnM2Nl/NpM3ChQtx69YtPP/88ygrK8OAAQOwd+9eeHt72zo0IiIiq+sRql/t54ytmRgSGWSxKSd7Y1fJzP79+5W+l0gkSEhIQEJCgk3iISIisiddg7wwJDIIh7JL0KijrXzKacv0/laJzZZsvmkeERER6S8xPgaDI4N0tms+5eTsmMwQERE5EF8PKbZM7491k/vo1X7G1kxM2Zju1LsEM5khIiJyQH+O7qDXydqA869yYjJDRETkoBLjY3CfAVNOp6/dtHhMtsBkhoiIyEEZOuX09x2nLBuQjTCZISIicnD6Tjll/1qNBxMPOl39DJMZIiIiJ6DvlNOZ/AoMW53iVAkNkxkiIiInYMiUU1lNPZ7ceNQKUVkHkxkiIiInou+U05n8Ckxcn+YUIzRMZoiIiJxMYnwM+uo4lBIAjueWOcWSbSYzRERETsbXQ4ovZsYhuqP2s5ycZck2kxkiIiIntXX6QPjrcdDky7vOWCEay2EyQ0RE5KR8PaTYv2C4zhGas/kVOHCxBCkXipFzvdpK0ZmPXZ2aTURERObl6yHFf2ffh5FrUpFdXKWx3ZRP0hV/HhIZhMT4GPjqMapjDzgyQ0RE5AJWT+ytd9vDl647VGEwkxkiIiIX0DvMT++DKRuEwIHsEoeZcmIyQ0RE5CIS42Nwd6j2+pnmjl4utWA05sNkhoiIyEX4ekjxbnyM3u0X7zyDv/37hAUjMg8mM0RERC6ka5AXYvXYUE/uyC/XLRiNeTCZISIicjEbp/bTa/8ZAGj8/X+zCsotF5CJmMwQERG5GPn+M/3C9R+hseeN9ZjMEBERuSBfDyl2zIjDlmf669X+l5Jquz2YkskMERGRCxtyZxCGRAbBTaJ70XbLgykvl1TZxa7B3AGYiIjIxSXGx2B20kkcyC7R2k5+MOXre7Lw07VyZOSWKe7ZctdgjswQERG5OF8PKbZM74+UBcMQ1dFH58Z6Hx/KVUpkANvuGsxkhoiIiAAAEYGe+M/0gehrwNJtOVvuGsxkhoiIiBR8PaT4YmYcItt7GfXzuaVMZoiIiMgOGHIwZXPhAZ5mjkQ3JjNERESkwpCDKeWiOvogIpDJDBEREdmJxPgYxN0RqHf75eOjLRiNZkxmiIiISC1fDyk2PNUXAHBXsLfGdq3QtDS7Vyc/6wTWAveZISIiIp2+nBmHa+V1SPm5GEnpV5BdXKW4N/j3PWZshckMERER6SUi0BMRgyPwzOAI5FyvRm5pNcIDPG1SJ9MckxkiIiIyWESg7ZMYOdbMEBERkUNjMkNEREQOjckMEREROTQmM0REROTQmMwQERGRQ2MyQ0RERA6NyQwRERE5NCYzRERE5NCYzBAREZFDYzJDREREDs3pjzMQQgAAKioqzP7s+vp61NTUoKKiAlKp1OzPd3XsX8tjH1se+9iy2L+WZ6s+ln9uyz/HtXH6ZKayshIAEBYWZuNIiIiIyFCVlZXw9fXV2kYi9El5HFhjYyMKCgrg7e0NiURi1mdXVFQgLCwMV69ehY+Pj1mfTexfa2AfWx772LLYv5Znqz4WQqCyshKhoaFo1Up7VYzTj8y0atUKnTp1suhr+Pj48D8iC2L/Wh772PLYx5bF/rU8W/SxrhEZORYAExERkUNjMkNEREQOjcmMCWQyGZYuXQqZTGbrUJwS+9fy2MeWxz62LPav5TlCHzt9ATARERE5N47MEBERkUNjMkNEREQOjckMEREROTQmM0REROTQmMwY6YMPPkBERATatm2Lvn374uDBg7YOye6sWLEC/fr1g7e3N9q3b49HHnkEFy5cUGojhEBCQgJCQ0Ph7u6OYcOGISsrS6lNbW0tZs+ejcDAQHh6euKhhx7CtWvXlNqUlZXhqaeegq+vL3x9ffHUU0/h5s2bln6LdmfFihWQSCSYN2+e4hr72HT5+fl48sknERAQAA8PD9xzzz04ceKE4j772Hi3b9/GK6+8goiICLi7u6Nr16547bXX0NjYqGjD/jXMgQMH8OCDDyI0NBQSiQRfffWV0n1r9ueVK1fw4IMPwtPTE4GBgZgzZw7q6urM/6YFGWz79u1CKpWKjz76SJw7d07MnTtXeHp6iry8PFuHZldGjx4tNm3aJM6ePStOnTolxo4dKzp37iyqqqoUbd58803h7e0tvvzyS3HmzBnx+OOPiw4dOoiKigpFmxkzZoiOHTuK5ORkkZmZKYYPHy569+4tbt++rWgzZswYERUVJdLS0kRaWpqIiooS48aNs+r7tbX09HQRHh4uevXqJebOnau4zj42zY0bN0SXLl3EtGnTxLFjx0ROTo7Yt2+fuHTpkqIN+9h4r7/+uggICBB79uwROTk5YseOHcLLy0usXbtW0Yb9a5hvvvlGLFmyRHz55ZcCgNi1a5fSfWv15+3bt0VUVJQYPny4yMzMFMnJySI0NFTMmjXL7O+ZyYwR+vfvL2bMmKF0rXv37uKll16yUUSOobi4WAAQqampQgghGhsbRUhIiHjzzTcVbX777Tfh6+sr1q9fL4QQ4ubNm0IqlYrt27cr2uTn54tWrVqJ7777TgghxLlz5wQAcfToUUWbI0eOCADi559/tsZbs7nKykoRGRkpkpOTxdChQxXJDPvYdIsWLRKDBw/WeJ99bJqxY8eKZ555RunahAkTxJNPPimEYP+aqmUyY83+/Oabb0SrVq1Efn6+ok1SUpKQyWSivLzcrO+T00wGqqurw4kTJzBq1Cil66NGjUJaWpqNonIM5eXlAIB27doBAHJyclBUVKTUlzKZDEOHDlX05YkTJ1BfX6/UJjQ0FFFRUYo2R44cga+vLwYMGKBoM3DgQPj6+rrM38kLL7yAsWPH4k9/+pPSdfax6Xbv3o3Y2FhMnDgR7du3R0xMDD766CPFffaxaQYPHowffvgBFy9eBAD89NNPOHToEB544AEA7F9zs2Z/HjlyBFFRUQgNDVW0GT16NGpra5Wmac3B6Q+aNLfr16+joaEBwcHBSteDg4NRVFRko6jsnxAC8+fPx+DBgxEVFQUAiv5S15d5eXmKNm3atIG/v79KG/nPFxUVoX379iqv2b59e5f4O9m+fTsyMzORkZGhco99bLrLly9j3bp1mD9/Pl5++WWkp6djzpw5kMlkmDJlCvvYRIsWLUJ5eTm6d+8ONzc3NDQ04I033kB8fDwA/g6bmzX7s6ioSOV1/P390aZNG7P3OZMZI0kkEqXvhRAq1+gPs2bNwunTp3Ho0CGVe8b0Zcs26tq7wt/J1atXMXfuXOzduxdt27bV2I59bLzGxkbExsZi+fLlAICYmBhkZWVh3bp1mDJliqId+9g4n332GbZu3Ypt27bh7rvvxqlTpzBv3jyEhoZi6tSpinbsX/OyVn9aq885zWSgwMBAuLm5qWSVxcXFKhkoNZk9ezZ2796NlJQUdOrUSXE9JCQEALT2ZUhICOrq6lBWVqa1za+//qryuiUlJU7/d3LixAkUFxejb9++aN26NVq3bo3U1FS8++67aN26teL9s4+N16FDB/Ts2VPpWo8ePXDlyhUA/D021T/+8Q+89NJLeOKJJxAdHY2nnnoKL774IlasWAGA/Wtu1uzPkJAQldcpKytDfX292fucyYyB2rRpg759+yI5OVnpenJyMuLi4mwUlX0SQmDWrFnYuXMnfvzxR0RERCjdj4iIQEhIiFJf1tXVITU1VdGXffv2hVQqVWpTWFiIs2fPKtrce++9KC8vR3p6uqLNsWPHUF5e7vR/J/fffz/OnDmDU6dOKb5iY2MxefJknDp1Cl27dmUfm2jQoEEqWwpcvHgRXbp0AcDfY1PV1NSgVSvljyI3NzfF0mz2r3lZsz/vvfdenD17FoWFhYo2e/fuhUwmQ9++fc37xsxaTuwi5EuzN27cKM6dOyfmzZsnPD09RW5urq1DsyszZ84Uvr6+Yv/+/aKwsFDxVVNTo2jz5ptvCl9fX7Fz505x5swZER8fr3aJYKdOncS+fftEZmamGDFihNolgr169RJHjhwRR44cEdHR0U655FIfzVczCcE+NlV6erpo3bq1eOONN0R2drb4z3/+Izw8PMTWrVsVbdjHxps6daro2LGjYmn2zp07RWBgoFi4cKGiDfvXMJWVleLkyZPi5MmTAoBYs2aNOHnypGL7EGv1p3xp9v333y8yMzPFvn37RKdOnbg02568//77okuXLqJNmzaiT58+iuXG9AcAar82bdqkaNPY2CiWLl0qQkJChEwmE0OGDBFnzpxRes6tW7fErFmzRLt27YS7u7sYN26cuHLlilKb0tJSMXnyZOHt7S28vb3F5MmTRVlZmRXepf1pmcywj0333//+V0RFRQmZTCa6d+8uPvzwQ6X77GPjVVRUiLlz54rOnTuLtm3biq5du4olS5aI2tpaRRv2r2FSUlLU/n/v1KlThRDW7c+8vDwxduxY4e7uLtq1aydmzZolfvvtN7O/Z4kQQph3rIeIiIjIelgzQ0RERA6NyQwRERE5NCYzRERE5NCYzBAREZFDYzJDREREDo3JDBERETk0JjNERETk0JjMEBERkUNjMkNEJpNIJPjqq69sHYZZ/Pjjj+jevbvibCBj1NbWonPnzjhx4oQZIyMiTZjMEJFG06ZNg0QigUQigVQqRXBwMEaOHIlPPvlE6cO+sLAQf/7zn/V6pr0nPgsXLsSSJUtUDj80hEwmw4IFC7Bo0SIzRkZEmjCZISKtxowZg8LCQuTm5uLbb7/F8OHDMXfuXIwbNw63b98GAISEhEAmk9k4UtOlpaUhOzsbEydONPlZkydPxsGDB3H+/HkzREZE2jCZISKtZDIZQkJC0LFjR/Tp0wcvv/wyvv76a3z77bf49NNPASiPttTV1WHWrFno0KED2rZti/DwcKxYsQIAEB4eDgAYP348JBKJ4vtffvkFDz/8MIKDg+Hl5YV+/fph3759SnGEh4dj+fLleOaZZ+Dt7Y3OnTvjww8/VGpz7do1PPHEE2jXrh08PT0RGxuLY8eOKe7/97//Rd++fdG2bVt07doVy5YtUyRkALB9+3aMGjUKbdu2VVxLSEjAPffcg08++QSdO3eGl5cXZs6ciYaGBqxatQohISFo37493njjDaVYAgICEBcXh6SkJKP7noj0w2SGiAw2YsQI9O7dGzt37lS59+6772L37t34/PPPceHCBWzdulWRtGRkZAAANm3ahMLCQsX3VVVVeOCBB7Bv3z6cPHkSo0ePxoMPPogrV64oPfutt95CbGwsTp48ieeffx4zZ87Ezz//rHjG0KFDUVBQgN27d+Onn37CwoULFdNh33//PZ588knMmTMH586dw4YNG/Dpp58qJSEHDhxAbGysynv65Zdf8O233+K7775DUlISPvnkE4wdOxbXrl1DamoqVq5ciVdeeQVHjx5V+rn+/fvj4MGDRvYyEenN7OdwE5HTmDp1qnj44YfV3nv88cdFjx49hBBCABC7du0SQggxe/ZsMWLECNHY2Kj255q31aZnz54iMTFR8X2XLl3Ek08+qfi+sbFRtG/fXqxbt04IIcSGDRuEt7e3KC0tVfu8++67Tyxfvlzp2r///W/RoUMHxfe+vr5iy5YtSm2WLl0qPDw8REVFheLa6NGjRXh4uGhoaFBcu+uuu8SKFSuUfvadd94R4eHhOt8rEZmmta2TKSJyTEIISCQSlevTpk3DyJEjcdddd2HMmDEYN24cRo0apfVZ1dXVWLZsGfbs2YOCggLcvn0bt27dUhmZ6dWrl+LPEokEISEhKC4uBgCcOnUKMTExaNeundrXOHHiBDIyMpRGYhoaGvDbb7+hpqYGHh4euHXrltIUk1x4eDi8vb0V3wcHB8PNzU2pSDg4OFgRi5y7uztqamq0vnciMh2TGSIyyvnz5xEREaFyvU+fPsjJycG3336Lffv24bHHHsOf/vQnfPHFFxqf9Y9//APff/89Vq9ejW7dusHd3R2PPvoo6urqlNpJpVKl7yUSiWIayd3dXWu8jY2NWLZsGSZMmKByT57ABAYGoqysTOW+utfVFovcjRs3EBQUpDUuIjIdkxkiMtiPP/6IM2fO4MUXX1R738fHB48//jgef/xxPProoxgzZgxu3LiBdu3aQSqVoqGhQan9wYMHMW3aNIwfPx5AU/1Lbm6uQTH16tULH3/8seJ1WurTpw8uXLiAbt26aXxGTEwMzp07Z9DranP27FnExMSY7XlEpB4LgIlIq9raWhQVFSE/Px+ZmZlYvnw5Hn74YYwbNw5TpkxRaf/2229j+/bt+Pnnn3Hx4kXs2LEDISEh8PPzA9A0ZfPDDz+gqKhIMQrSrVs37Ny5E6dOncJPP/2ESZMmGbxpXXx8PEJCQvDII4/g8OHDuHz5Mr788kscOXIEAPDPf/4TW7ZsQUJCArKysnD+/Hl89tlneOWVVxTPGD16NA4dOmRkT6k6ePCgzik2IjIdkxki0uq7775Dhw4dEB4ejjFjxiAlJQXvvvsuvv76a7i5uam09/LywsqVKxEbG4t+/fohNzcX33zzjaK+5K233kJycjLCwsIUoxZvv/02/P39ERcXhwcffBCjR49Gnz59DIqzTZs22Lt3L9q3b48HHngA0dHRePPNNxUxjh49Gnv27EFycjL69euHgQMHYs2aNejSpYviGU8++STOnTuHCxcuGNtdCkeOHEF5eTkeffRRk59FRNpJhBDC1kEQEdmLhQsXory8HBs2bDDpORMnTkRMTAxefvllM0VGRJpwZIaIqJklS5agS5cuKnU9hqitrUXv3r011hQRkXlxZIaIiIgcGkdmiIiIyKExmSEiIiKHxmSGiIiIHBqTGSIiInJoTGaIiIjIoTGZISIiIofGZIaIiIgcGpMZIiIicmhMZoiIiMih/T97tgJus5GC9wAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 距離に応じた高さを描く\n",
    "ax=csv_df.plot.scatter(x='distance', y='elevation', title='Sosui canal')\n",
    "ax.set_xlabel(\"Distance(m)\")\n",
    "ax.grid()\n",
    "ax.set_ylabel(\"Elevation(m)\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73a03401",
   "metadata": {},
   "source": [
    "## 画家マウリッツ・エッシャーの父も疎水設計に関わった\n",
    "\n",
    "疎水を設計したヨハニス・デ・レーケは、お雇い外国人として1873年に来日した。\n",
    "オランダから一緒に来たのが、ジョージ・エッシャー、画家マウリッツ・エッシャーの父だ。\n",
    "\n",
    "\n",
    "北東に下る斜面に広がる京都盆地を南から北に流れる疎水は、エッシャーが描いた「滝」のように、少し不思議だ。\n",
    "立体的な地形を3Dプリントして、そこに枯山水のように疎水の流れを再現してみても面白いかもしれない。\n",
    "\n",
    "%<img style=\"float:center;transform: rotate(0deg); height:14cm\" src=\"./images/day_240527_Escher_Waterfall.jpg\" />\n",
    "```{figure} ./images/day_240527_Escher_Waterfall.jpg\n",
    "---\n",
    "height: 14cm\n",
    "---\n",
    "Waterfall (M. C. Escher)\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cc7d16b1",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "jupyter-book-py311",
   "language": "python",
   "name": "jupyter-book-py311"
  },
  "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.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}