diff --git a/f23/Gurmail_Lecture_Notes/29_Web-1/campus_weather.csv b/f23/Gurmail_Lecture_Notes/29_Web-1/campus_weather.csv
new file mode 100644
index 0000000000000000000000000000000000000000..fe7c9fe12217450cebffcfbfcc1891f597215215
--- /dev/null
+++ b/f23/Gurmail_Lecture_Notes/29_Web-1/campus_weather.csv
@@ -0,0 +1,15 @@
+number,name,startTime,endTime,isDaytime,temperature,temperatureUnit,temperatureTrend,probabilityOfPrecipitation,dewpoint,relativeHumidity,windSpeed,windDirection,icon,shortForecast,detailedForecast
+1,Tonight,2023-11-14T22:00:00-06:00,2023-11-15T06:00:00-06:00,False,43,F,,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -1.1111111111111112}","{'unitCode': 'wmoUnit:percent', 'value': 57}",10 to 15 mph,SW,https://api.weather.gov/icons/land/night/sct?size=medium,Partly Cloudy,"Partly cloudy, with a low around 43. Southwest wind 10 to 15 mph."
+2,Wednesday,2023-11-15T06:00:00-06:00,2023-11-15T18:00:00-06:00,True,64,F,falling,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': 6.666666666666667}","{'unitCode': 'wmoUnit:percent', 'value': 65}",5 to 10 mph,SW,https://api.weather.gov/icons/land/day/skc?size=medium,Sunny,"Sunny. High near 64, with temperatures falling to around 57 in the afternoon. Southwest wind 5 to 10 mph."
+3,Wednesday Night,2023-11-15T18:00:00-06:00,2023-11-16T06:00:00-06:00,False,43,F,,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': 6.666666666666667}","{'unitCode': 'wmoUnit:percent', 'value': 89}",5 to 10 mph,S,https://api.weather.gov/icons/land/night/sct?size=medium,Partly Cloudy,"Partly cloudy, with a low around 43. South wind 5 to 10 mph."
+4,Thursday,2023-11-16T06:00:00-06:00,2023-11-16T18:00:00-06:00,True,63,F,,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': 7.777777777777778}","{'unitCode': 'wmoUnit:percent', 'value': 86}",10 to 25 mph,S,https://api.weather.gov/icons/land/day/wind_bkn?size=medium,Partly Sunny,"Partly sunny, with a high near 63. South wind 10 to 25 mph, with gusts as high as 40 mph."
+5,Thursday Night,2023-11-16T18:00:00-06:00,2023-11-17T06:00:00-06:00,False,34,F,,"{'unitCode': 'wmoUnit:percent', 'value': 30}","{'unitCode': 'wmoUnit:degC', 'value': 7.777777777777778}","{'unitCode': 'wmoUnit:percent', 'value': 69}",15 to 25 mph,W,"https://api.weather.gov/icons/land/night/rain_showers,30?size=medium",Chance Rain Showers,"A chance of rain showers. Mostly cloudy, with a low around 34. West wind 15 to 25 mph, with gusts as high as 40 mph. Chance of precipitation is 30%."
+6,Friday,2023-11-17T06:00:00-06:00,2023-11-17T18:00:00-06:00,True,44,F,falling,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -2.7777777777777777}","{'unitCode': 'wmoUnit:percent', 'value': 67}",10 to 15 mph,NW,https://api.weather.gov/icons/land/day/few?size=medium,Sunny,"Sunny. High near 44, with temperatures falling to around 38 in the afternoon. Northwest wind 10 to 15 mph."
+7,Friday Night,2023-11-17T18:00:00-06:00,2023-11-18T06:00:00-06:00,False,30,F,,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -5.555555555555555}","{'unitCode': 'wmoUnit:percent', 'value': 63}",5 to 10 mph,W,https://api.weather.gov/icons/land/night/few?size=medium,Mostly Clear,"Mostly clear, with a low around 30. West wind 5 to 10 mph."
+8,Saturday,2023-11-18T06:00:00-06:00,2023-11-18T18:00:00-06:00,True,49,F,falling,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -0.5555555555555556}","{'unitCode': 'wmoUnit:percent', 'value': 63}",10 to 15 mph,W,https://api.weather.gov/icons/land/day/few?size=medium,Sunny,"Sunny. High near 49, with temperatures falling to around 43 in the afternoon. West wind 10 to 15 mph."
+9,Saturday Night,2023-11-18T18:00:00-06:00,2023-11-19T06:00:00-06:00,False,28,F,,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -1.1111111111111112}","{'unitCode': 'wmoUnit:percent', 'value': 92}",10 to 15 mph,NW,https://api.weather.gov/icons/land/night/few?size=medium,Mostly Clear,"Mostly clear, with a low around 28."
+10,Sunday,2023-11-19T06:00:00-06:00,2023-11-19T18:00:00-06:00,True,45,F,falling,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -1.1111111111111112}","{'unitCode': 'wmoUnit:percent', 'value': 92}",10 mph,N,https://api.weather.gov/icons/land/day/few?size=medium,Sunny,"Sunny. High near 45, with temperatures falling to around 40 in the afternoon."
+11,Sunday Night,2023-11-19T18:00:00-06:00,2023-11-20T06:00:00-06:00,False,31,F,,"{'unitCode': 'wmoUnit:percent', 'value': None}","{'unitCode': 'wmoUnit:degC', 'value': -1.1111111111111112}","{'unitCode': 'wmoUnit:percent', 'value': 85}",5 to 10 mph,SE,https://api.weather.gov/icons/land/night/sct?size=medium,Partly Cloudy,"Partly cloudy, with a low around 31."
+12,Monday,2023-11-20T06:00:00-06:00,2023-11-20T18:00:00-06:00,True,44,F,,"{'unitCode': 'wmoUnit:percent', 'value': 30}","{'unitCode': 'wmoUnit:degC', 'value': 1.1111111111111112}","{'unitCode': 'wmoUnit:percent', 'value': 82}",5 to 10 mph,SE,"https://api.weather.gov/icons/land/day/bkn/rain_showers,30?size=medium",Mostly Cloudy then Chance Rain Showers,"A chance of rain showers after noon. Mostly cloudy, with a high near 44. Chance of precipitation is 30%."
+13,Monday Night,2023-11-20T18:00:00-06:00,2023-11-21T06:00:00-06:00,False,34,F,,"{'unitCode': 'wmoUnit:percent', 'value': 50}","{'unitCode': 'wmoUnit:degC', 'value': 2.2222222222222223}","{'unitCode': 'wmoUnit:percent', 'value': 92}",10 mph,SW,"https://api.weather.gov/icons/land/night/rain_showers,40/rain_showers,50?size=medium",Chance Rain Showers,"A chance of rain showers. Mostly cloudy, with a low around 34. Chance of precipitation is 50%."
+14,Tuesday,2023-11-21T06:00:00-06:00,2023-11-21T18:00:00-06:00,True,44,F,,"{'unitCode': 'wmoUnit:percent', 'value': 40}","{'unitCode': 'wmoUnit:degC', 'value': 2.2222222222222223}","{'unitCode': 'wmoUnit:percent', 'value': 92}",10 to 15 mph,NW,"https://api.weather.gov/icons/land/day/rain_showers,40/rain_showers,30?size=medium",Chance Rain Showers,"A chance of rain showers. Partly sunny, with a high near 44. Chance of precipitation is 40%."
diff --git a/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1.ipynb b/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1.ipynb
index 655dcaccecfc2fe33bb516bb33af308edad27c19..e3342305dad5c32dc2f618530eb8ca2a3102659a 100644
--- a/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1.ipynb
+++ b/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1.ipynb
@@ -1,5 +1,24 @@
 {
  "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Announcements - Wednesday, November 15\n",
+    "\n",
+    "* Download ALL files for today's lecture\n",
+    "* Q8 released tonight at 5:00 pm - due on Friday at 11:59 pm\n",
+    "* P10 due tonight at 11:59 pm\n",
+    "* <b>If you have any problem with P6 grades, please send me (Gurmail.Singh@wisc.edu) an email by November 15.</b>\n",
+    "* If you have questions, it is almost always faster to \n",
+    "  * Post on Piazza\n",
+    "  * Go to [office hours](https://sites.google.com/wisc.edu/cs220-oh-f23/home?pli=1) \n",
+    "* Exam2 results - you may get your grades by the evening\n",
+    "\n",
+    "### Conflict Form\n",
+    "  * [Final - December 19, 7:45 am](https://cs220.cs.wisc.edu/f23/surveys.html)"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -1230,13 +1249,40 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Warmup 7: Which shortest movies (below average runtime) have highest rating?"
+    "### Warmup 7: What is total revenue from all movies?"
    ]
   },
   {
    "cell_type": "code",
    "execution_count": 11,
    "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "80668270000.0"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "movies[\"Revenue in dollars\"].sum()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 8: Which shortest movies (below average runtime) have highest rating?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -1313,7 +1359,7 @@
        "249   13.18          13180000.0  "
       ]
      },
-     "execution_count": 11,
+     "execution_count": 12,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -1380,7 +1426,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 13,
    "metadata": {},
    "outputs": [
     {
@@ -1388,7 +1434,7 @@
      "output_type": "stream",
      "text": [
       "200\n",
-      "Hello CS220 / CS319 students! Welcome to my website. Hope you are staying safe and healthy!\n",
+      "Hello CS220 / CS319 students! Welcome to our website. Hope you are staying safe and healthy!\n",
       "\n"
      ]
     }
@@ -1402,7 +1448,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 14,
    "metadata": {},
    "outputs": [
     {
@@ -1417,8 +1463,8 @@
       "<ul>\n",
       "<li>Code: AccessDenied</li>\n",
       "<li>Message: Access Denied</li>\n",
-      "<li>RequestId: RSKJ3EYVNRYREDMQ</li>\n",
-      "<li>HostId: l6ZMrsw5g6KOT3fA0zTwyNHdXcngrnGkpT2nJe92rIBllfDi2Vbrz6jLPcUVl3yvQ+45SAg8ebg=</li>\n",
+      "<li>RequestId: M2M20K3WCPD67CH2</li>\n",
+      "<li>HostId: KHgGhwxZd16gmu3IQ89nPfGQfKMIHg4VMI1+gSx1VyyHCa+DaR2mv/vJS9YMLAQ4i/6ZZs5iXiU=</li>\n",
       "</ul>\n",
       "<h3>An Error Occurred While Attempting to Retrieve a Custom Error Document</h3>\n",
       "<ul>\n",
@@ -1445,7 +1491,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 15,
    "metadata": {},
    "outputs": [
     {
@@ -1453,10 +1499,10 @@
      "evalue": "",
      "output_type": "error",
      "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mAssertionError\u001b[0m                            Traceback (most recent call last)",
-      "Input \u001b[0;32mIn [14]\u001b[0m, in \u001b[0;36m<cell line: 4>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      2\u001b[0m typo_url \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://cs220.cs.wisc.edu/hello.txttttt\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m      3\u001b[0m r \u001b[38;5;241m=\u001b[39m requests\u001b[38;5;241m.\u001b[39mget(typo_url)\n\u001b[0;32m----> 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m r\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m200\u001b[39m\n\u001b[1;32m      5\u001b[0m \u001b[38;5;28mprint\u001b[39m(r\u001b[38;5;241m.\u001b[39mstatus_code)\n\u001b[1;32m      6\u001b[0m \u001b[38;5;28mprint\u001b[39m(r\u001b[38;5;241m.\u001b[39mtext)\n",
-      "\u001b[0;31mAssertionError\u001b[0m: "
+      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[1;31mAssertionError\u001b[0m                            Traceback (most recent call last)",
+      "Cell \u001b[1;32mIn[15], line 4\u001b[0m\n\u001b[0;32m      2\u001b[0m typo_url \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://cs220.cs.wisc.edu/hello.txttttt\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m      3\u001b[0m r \u001b[38;5;241m=\u001b[39m requests\u001b[38;5;241m.\u001b[39mget(typo_url)\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m r\u001b[38;5;241m.\u001b[39mstatus_code \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m200\u001b[39m\n\u001b[0;32m      5\u001b[0m \u001b[38;5;28mprint\u001b[39m(r\u001b[38;5;241m.\u001b[39mstatus_code)\n\u001b[0;32m      6\u001b[0m \u001b[38;5;28mprint\u001b[39m(r\u001b[38;5;241m.\u001b[39mtext)\n",
+      "\u001b[1;31mAssertionError\u001b[0m: "
      ]
     }
    ],
@@ -1471,22 +1517,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "HTTPError",
-     "evalue": "403 Client Error: Forbidden for url: https://cs220.cs.wisc.edu/hello.txttttt",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mHTTPError\u001b[0m                                 Traceback (most recent call last)",
-      "Input \u001b[0;32mIn [15]\u001b[0m, in \u001b[0;36m<cell line: 3>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;66;03m# Instead of using an assert, we often use raise_for_status()\u001b[39;00m\n\u001b[1;32m      2\u001b[0m r \u001b[38;5;241m=\u001b[39m requests\u001b[38;5;241m.\u001b[39mget(typo_url)\n\u001b[0;32m----> 3\u001b[0m \u001b[43mr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mraise_for_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m#similar to asserting r.status_code == 200\u001b[39;00m\n\u001b[1;32m      4\u001b[0m r\u001b[38;5;241m.\u001b[39mtext\n",
-      "File \u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/requests/models.py:960\u001b[0m, in \u001b[0;36mResponse.raise_for_status\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m    957\u001b[0m     http_error_msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mu\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m Server Error: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m for url: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstatus_code, reason, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39murl)\n\u001b[1;32m    959\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m http_error_msg:\n\u001b[0;32m--> 960\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m HTTPError(http_error_msg, response\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m)\n",
-      "\u001b[0;31mHTTPError\u001b[0m: 403 Client Error: Forbidden for url: https://cs220.cs.wisc.edu/hello.txttttt"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "# Instead of using an assert, we often use raise_for_status()\n",
     "r = requests.get(typo_url)\n",
@@ -1498,17 +1531,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "oops!! 403 Client Error: Forbidden for url: https://cs220.cs.wisc.edu/hello.txttttt\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "# Let's try to catch that error\n",
     "\n",
@@ -1522,17 +1547,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "oops!! 403 Client Error: Forbidden for url: https://cs220.cs.wisc.edu/hello.txttttt\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "# we often need to prepend the names of exceptions with the name of the module\n",
     "# fix the error from above\n",
@@ -1557,23 +1574,9 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": null,
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "{\n",
-      "  \"alice\": 100,\n",
-      "  \"bob\": 200,\n",
-      "  \"cindy\": 300\n",
-      "}\n",
-      "\n",
-      "<class 'dict'> {'alice': 100, 'bob': 200, 'cindy': 300}\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "# GETting a JSON file, the long way\n",
     "url = \"https://cs220.cs.wisc.edu/scores.json\"\n",
@@ -1587,7 +1590,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 16,
    "metadata": {},
    "outputs": [
     {
@@ -1638,7 +1641,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 17,
    "metadata": {},
    "outputs": [
     {
@@ -1665,7 +1668,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 18,
    "metadata": {},
    "outputs": [
     {
@@ -1690,7 +1693,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 19,
    "metadata": {},
    "outputs": [
     {
@@ -1715,7 +1718,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 20,
    "metadata": {},
    "outputs": [
     {
@@ -1747,6 +1750,9 @@
        "      <th>temperature</th>\n",
        "      <th>temperatureUnit</th>\n",
        "      <th>temperatureTrend</th>\n",
+       "      <th>probabilityOfPrecipitation</th>\n",
+       "      <th>dewpoint</th>\n",
+       "      <th>relativeHumidity</th>\n",
        "      <th>windSpeed</th>\n",
        "      <th>windDirection</th>\n",
        "      <th>icon</th>\n",
@@ -1758,330 +1764,404 @@
        "    <tr>\n",
        "      <th>0</th>\n",
        "      <td>1</td>\n",
-       "      <td>Today</td>\n",
-       "      <td>2022-11-16T08:00:00-06:00</td>\n",
-       "      <td>2022-11-16T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>34</td>\n",
+       "      <td>Tonight</td>\n",
+       "      <td>2023-11-14T22:00:00-06:00</td>\n",
+       "      <td>2023-11-15T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>43</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>5 to 10 mph</td>\n",
-       "      <td>NW</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/snow,60...</td>\n",
-       "      <td>Snow Showers Likely</td>\n",
-       "      <td>Snow showers likely. Cloudy, with a high near ...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -1.11111...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 57}</td>\n",
+       "      <td>10 to 15 mph</td>\n",
+       "      <td>SW</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/sct?s...</td>\n",
+       "      <td>Partly Cloudy</td>\n",
+       "      <td>Partly cloudy, with a low around 43. Southwest...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>1</th>\n",
        "      <td>2</td>\n",
-       "      <td>Tonight</td>\n",
-       "      <td>2022-11-16T18:00:00-06:00</td>\n",
-       "      <td>2022-11-17T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>23</td>\n",
+       "      <td>Wednesday</td>\n",
+       "      <td>2023-11-15T06:00:00-06:00</td>\n",
+       "      <td>2023-11-15T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>64</td>\n",
        "      <td>F</td>\n",
-       "      <td>None</td>\n",
+       "      <td>falling</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 6.666666...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 65}</td>\n",
        "      <td>5 to 10 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/snow?...</td>\n",
-       "      <td>Chance Snow Showers</td>\n",
-       "      <td>A chance of snow showers after 9pm. Mostly clo...</td>\n",
+       "      <td>SW</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/skc?siz...</td>\n",
+       "      <td>Sunny</td>\n",
+       "      <td>Sunny. High near 64, with temperatures falling...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>2</th>\n",
        "      <td>3</td>\n",
-       "      <td>Thursday</td>\n",
-       "      <td>2022-11-17T06:00:00-06:00</td>\n",
-       "      <td>2022-11-17T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>28</td>\n",
+       "      <td>Wednesday Night</td>\n",
+       "      <td>2023-11-15T18:00:00-06:00</td>\n",
+       "      <td>2023-11-16T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>43</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>10 to 15 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/snow,30...</td>\n",
-       "      <td>Chance Snow Showers</td>\n",
-       "      <td>A chance of snow showers. Mostly cloudy, with ...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 6.666666...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 89}</td>\n",
+       "      <td>5 to 10 mph</td>\n",
+       "      <td>S</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/sct?s...</td>\n",
+       "      <td>Partly Cloudy</td>\n",
+       "      <td>Partly cloudy, with a low around 43. South win...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>3</th>\n",
        "      <td>4</td>\n",
-       "      <td>Thursday Night</td>\n",
-       "      <td>2022-11-17T18:00:00-06:00</td>\n",
-       "      <td>2022-11-18T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>17</td>\n",
+       "      <td>Thursday</td>\n",
+       "      <td>2023-11-16T06:00:00-06:00</td>\n",
+       "      <td>2023-11-16T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>63</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>15 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/bkn?s...</td>\n",
-       "      <td>Mostly Cloudy</td>\n",
-       "      <td>Mostly cloudy, with a low around 17. West wind...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 7.777777...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 86}</td>\n",
+       "      <td>10 to 25 mph</td>\n",
+       "      <td>S</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/wind_bk...</td>\n",
+       "      <td>Partly Sunny</td>\n",
+       "      <td>Partly sunny, with a high near 63. South wind ...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>4</th>\n",
        "      <td>5</td>\n",
-       "      <td>Friday</td>\n",
-       "      <td>2022-11-18T06:00:00-06:00</td>\n",
-       "      <td>2022-11-18T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>23</td>\n",
+       "      <td>Thursday Night</td>\n",
+       "      <td>2023-11-16T18:00:00-06:00</td>\n",
+       "      <td>2023-11-17T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>34</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>15 mph</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 30}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 7.777777...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 69}</td>\n",
+       "      <td>15 to 25 mph</td>\n",
        "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/bkn?siz...</td>\n",
-       "      <td>Mostly Cloudy</td>\n",
-       "      <td>Mostly cloudy, with a high near 23. West wind ...</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/rain_...</td>\n",
+       "      <td>Chance Rain Showers</td>\n",
+       "      <td>A chance of rain showers. Mostly cloudy, with ...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>5</th>\n",
        "      <td>6</td>\n",
-       "      <td>Friday Night</td>\n",
-       "      <td>2022-11-18T18:00:00-06:00</td>\n",
-       "      <td>2022-11-19T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>12</td>\n",
+       "      <td>Friday</td>\n",
+       "      <td>2023-11-17T06:00:00-06:00</td>\n",
+       "      <td>2023-11-17T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>44</td>\n",
        "      <td>F</td>\n",
-       "      <td>None</td>\n",
-       "      <td>15 mph</td>\n",
-       "      <td>SW</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/bkn?s...</td>\n",
-       "      <td>Mostly Cloudy</td>\n",
-       "      <td>Mostly cloudy, with a low around 12. Southwest...</td>\n",
+       "      <td>falling</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -2.77777...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 67}</td>\n",
+       "      <td>10 to 15 mph</td>\n",
+       "      <td>NW</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/few?siz...</td>\n",
+       "      <td>Sunny</td>\n",
+       "      <td>Sunny. High near 44, with temperatures falling...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>6</th>\n",
        "      <td>7</td>\n",
-       "      <td>Saturday</td>\n",
-       "      <td>2022-11-19T06:00:00-06:00</td>\n",
-       "      <td>2022-11-19T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>23</td>\n",
+       "      <td>Friday Night</td>\n",
+       "      <td>2023-11-17T18:00:00-06:00</td>\n",
+       "      <td>2023-11-18T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>30</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>15 mph</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -5.55555...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 63}</td>\n",
+       "      <td>5 to 10 mph</td>\n",
        "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/bkn/sno...</td>\n",
-       "      <td>Mostly Cloudy then Slight Chance Snow Showers</td>\n",
-       "      <td>A slight chance of snow showers after noon. Mo...</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/few?s...</td>\n",
+       "      <td>Mostly Clear</td>\n",
+       "      <td>Mostly clear, with a low around 30. West wind ...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>7</th>\n",
        "      <td>8</td>\n",
-       "      <td>Saturday Night</td>\n",
-       "      <td>2022-11-19T18:00:00-06:00</td>\n",
-       "      <td>2022-11-20T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>7</td>\n",
+       "      <td>Saturday</td>\n",
+       "      <td>2023-11-18T06:00:00-06:00</td>\n",
+       "      <td>2023-11-18T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>49</td>\n",
        "      <td>F</td>\n",
-       "      <td>None</td>\n",
+       "      <td>falling</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -0.55555...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 63}</td>\n",
        "      <td>10 to 15 mph</td>\n",
        "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/cold?...</td>\n",
-       "      <td>Mostly Cloudy</td>\n",
-       "      <td>Mostly cloudy, with a low around 7. West wind ...</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/few?siz...</td>\n",
+       "      <td>Sunny</td>\n",
+       "      <td>Sunny. High near 49, with temperatures falling...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>8</th>\n",
        "      <td>9</td>\n",
-       "      <td>Sunday</td>\n",
-       "      <td>2022-11-20T06:00:00-06:00</td>\n",
-       "      <td>2022-11-20T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>23</td>\n",
+       "      <td>Saturday Night</td>\n",
+       "      <td>2023-11-18T18:00:00-06:00</td>\n",
+       "      <td>2023-11-19T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>28</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>10 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/few?siz...</td>\n",
-       "      <td>Sunny</td>\n",
-       "      <td>Sunny, with a high near 23.</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -1.11111...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 92}</td>\n",
+       "      <td>10 to 15 mph</td>\n",
+       "      <td>NW</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/few?s...</td>\n",
+       "      <td>Mostly Clear</td>\n",
+       "      <td>Mostly clear, with a low around 28.</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>9</th>\n",
        "      <td>10</td>\n",
-       "      <td>Sunday Night</td>\n",
-       "      <td>2022-11-20T18:00:00-06:00</td>\n",
-       "      <td>2022-11-21T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>15</td>\n",
+       "      <td>Sunday</td>\n",
+       "      <td>2023-11-19T06:00:00-06:00</td>\n",
+       "      <td>2023-11-19T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>45</td>\n",
        "      <td>F</td>\n",
-       "      <td>rising</td>\n",
+       "      <td>falling</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -1.11111...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 92}</td>\n",
        "      <td>10 mph</td>\n",
-       "      <td>SW</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/sct?s...</td>\n",
-       "      <td>Partly Cloudy</td>\n",
-       "      <td>Partly cloudy. Low around 15, with temperature...</td>\n",
+       "      <td>N</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/few?siz...</td>\n",
+       "      <td>Sunny</td>\n",
+       "      <td>Sunny. High near 45, with temperatures falling...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>10</th>\n",
        "      <td>11</td>\n",
-       "      <td>Monday</td>\n",
-       "      <td>2022-11-21T06:00:00-06:00</td>\n",
-       "      <td>2022-11-21T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>34</td>\n",
+       "      <td>Sunday Night</td>\n",
+       "      <td>2023-11-19T18:00:00-06:00</td>\n",
+       "      <td>2023-11-20T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>31</td>\n",
        "      <td>F</td>\n",
-       "      <td>falling</td>\n",
+       "      <td>None</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': -1.11111...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 85}</td>\n",
        "      <td>5 to 10 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/few?siz...</td>\n",
-       "      <td>Sunny</td>\n",
-       "      <td>Sunny. High near 34, with temperatures falling...</td>\n",
+       "      <td>SE</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/sct?s...</td>\n",
+       "      <td>Partly Cloudy</td>\n",
+       "      <td>Partly cloudy, with a low around 31.</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>11</th>\n",
        "      <td>12</td>\n",
-       "      <td>Monday Night</td>\n",
-       "      <td>2022-11-21T18:00:00-06:00</td>\n",
-       "      <td>2022-11-22T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>18</td>\n",
+       "      <td>Monday</td>\n",
+       "      <td>2023-11-20T06:00:00-06:00</td>\n",
+       "      <td>2023-11-20T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>44</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>5 mph</td>\n",
-       "      <td>SW</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/sct?s...</td>\n",
-       "      <td>Partly Cloudy</td>\n",
-       "      <td>Partly cloudy, with a low around 18.</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 30}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 1.111111...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 82}</td>\n",
+       "      <td>5 to 10 mph</td>\n",
+       "      <td>SE</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/bkn/rai...</td>\n",
+       "      <td>Mostly Cloudy then Chance Rain Showers</td>\n",
+       "      <td>A chance of rain showers after noon. Mostly cl...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>12</th>\n",
        "      <td>13</td>\n",
-       "      <td>Tuesday</td>\n",
-       "      <td>2022-11-22T06:00:00-06:00</td>\n",
-       "      <td>2022-11-22T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>36</td>\n",
+       "      <td>Monday Night</td>\n",
+       "      <td>2023-11-20T18:00:00-06:00</td>\n",
+       "      <td>2023-11-21T06:00:00-06:00</td>\n",
+       "      <td>False</td>\n",
+       "      <td>34</td>\n",
        "      <td>F</td>\n",
-       "      <td>falling</td>\n",
-       "      <td>5 to 10 mph</td>\n",
+       "      <td>None</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 50}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 2.222222...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 92}</td>\n",
+       "      <td>10 mph</td>\n",
        "      <td>SW</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/sct?siz...</td>\n",
-       "      <td>Mostly Sunny</td>\n",
-       "      <td>Mostly sunny. High near 36, with temperatures ...</td>\n",
+       "      <td>https://api.weather.gov/icons/land/night/rain_...</td>\n",
+       "      <td>Chance Rain Showers</td>\n",
+       "      <td>A chance of rain showers. Mostly cloudy, with ...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
        "      <th>13</th>\n",
        "      <td>14</td>\n",
-       "      <td>Tuesday Night</td>\n",
-       "      <td>2022-11-22T18:00:00-06:00</td>\n",
-       "      <td>2022-11-23T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>26</td>\n",
+       "      <td>Tuesday</td>\n",
+       "      <td>2023-11-21T06:00:00-06:00</td>\n",
+       "      <td>2023-11-21T18:00:00-06:00</td>\n",
+       "      <td>True</td>\n",
+       "      <td>44</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>5 mph</td>\n",
-       "      <td>S</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/bkn?s...</td>\n",
-       "      <td>Mostly Cloudy</td>\n",
-       "      <td>Mostly cloudy, with a low around 26.</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 40}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 2.222222...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 92}</td>\n",
+       "      <td>10 to 15 mph</td>\n",
+       "      <td>NW</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/rain_sh...</td>\n",
+       "      <td>Chance Rain Showers</td>\n",
+       "      <td>A chance of rain showers. Partly sunny, with a...</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
        "</div>"
       ],
       "text/plain": [
-       "    number            name                  startTime  \\\n",
-       "0        1           Today  2022-11-16T08:00:00-06:00   \n",
-       "1        2         Tonight  2022-11-16T18:00:00-06:00   \n",
-       "2        3        Thursday  2022-11-17T06:00:00-06:00   \n",
-       "3        4  Thursday Night  2022-11-17T18:00:00-06:00   \n",
-       "4        5          Friday  2022-11-18T06:00:00-06:00   \n",
-       "5        6    Friday Night  2022-11-18T18:00:00-06:00   \n",
-       "6        7        Saturday  2022-11-19T06:00:00-06:00   \n",
-       "7        8  Saturday Night  2022-11-19T18:00:00-06:00   \n",
-       "8        9          Sunday  2022-11-20T06:00:00-06:00   \n",
-       "9       10    Sunday Night  2022-11-20T18:00:00-06:00   \n",
-       "10      11          Monday  2022-11-21T06:00:00-06:00   \n",
-       "11      12    Monday Night  2022-11-21T18:00:00-06:00   \n",
-       "12      13         Tuesday  2022-11-22T06:00:00-06:00   \n",
-       "13      14   Tuesday Night  2022-11-22T18:00:00-06:00   \n",
+       "    number             name                  startTime  \\\n",
+       "0        1          Tonight  2023-11-14T22:00:00-06:00   \n",
+       "1        2        Wednesday  2023-11-15T06:00:00-06:00   \n",
+       "2        3  Wednesday Night  2023-11-15T18:00:00-06:00   \n",
+       "3        4         Thursday  2023-11-16T06:00:00-06:00   \n",
+       "4        5   Thursday Night  2023-11-16T18:00:00-06:00   \n",
+       "5        6           Friday  2023-11-17T06:00:00-06:00   \n",
+       "6        7     Friday Night  2023-11-17T18:00:00-06:00   \n",
+       "7        8         Saturday  2023-11-18T06:00:00-06:00   \n",
+       "8        9   Saturday Night  2023-11-18T18:00:00-06:00   \n",
+       "9       10           Sunday  2023-11-19T06:00:00-06:00   \n",
+       "10      11     Sunday Night  2023-11-19T18:00:00-06:00   \n",
+       "11      12           Monday  2023-11-20T06:00:00-06:00   \n",
+       "12      13     Monday Night  2023-11-20T18:00:00-06:00   \n",
+       "13      14          Tuesday  2023-11-21T06:00:00-06:00   \n",
        "\n",
        "                      endTime  isDaytime  temperature temperatureUnit  \\\n",
-       "0   2022-11-16T18:00:00-06:00       True           34               F   \n",
-       "1   2022-11-17T06:00:00-06:00      False           23               F   \n",
-       "2   2022-11-17T18:00:00-06:00       True           28               F   \n",
-       "3   2022-11-18T06:00:00-06:00      False           17               F   \n",
-       "4   2022-11-18T18:00:00-06:00       True           23               F   \n",
-       "5   2022-11-19T06:00:00-06:00      False           12               F   \n",
-       "6   2022-11-19T18:00:00-06:00       True           23               F   \n",
-       "7   2022-11-20T06:00:00-06:00      False            7               F   \n",
-       "8   2022-11-20T18:00:00-06:00       True           23               F   \n",
-       "9   2022-11-21T06:00:00-06:00      False           15               F   \n",
-       "10  2022-11-21T18:00:00-06:00       True           34               F   \n",
-       "11  2022-11-22T06:00:00-06:00      False           18               F   \n",
-       "12  2022-11-22T18:00:00-06:00       True           36               F   \n",
-       "13  2022-11-23T06:00:00-06:00      False           26               F   \n",
+       "0   2023-11-15T06:00:00-06:00      False           43               F   \n",
+       "1   2023-11-15T18:00:00-06:00       True           64               F   \n",
+       "2   2023-11-16T06:00:00-06:00      False           43               F   \n",
+       "3   2023-11-16T18:00:00-06:00       True           63               F   \n",
+       "4   2023-11-17T06:00:00-06:00      False           34               F   \n",
+       "5   2023-11-17T18:00:00-06:00       True           44               F   \n",
+       "6   2023-11-18T06:00:00-06:00      False           30               F   \n",
+       "7   2023-11-18T18:00:00-06:00       True           49               F   \n",
+       "8   2023-11-19T06:00:00-06:00      False           28               F   \n",
+       "9   2023-11-19T18:00:00-06:00       True           45               F   \n",
+       "10  2023-11-20T06:00:00-06:00      False           31               F   \n",
+       "11  2023-11-20T18:00:00-06:00       True           44               F   \n",
+       "12  2023-11-21T06:00:00-06:00      False           34               F   \n",
+       "13  2023-11-21T18:00:00-06:00       True           44               F   \n",
+       "\n",
+       "   temperatureTrend                      probabilityOfPrecipitation  \\\n",
+       "0              None  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "1           falling  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "2              None  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "3              None  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "4              None    {'unitCode': 'wmoUnit:percent', 'value': 30}   \n",
+       "5           falling  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "6              None  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "7           falling  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "8              None  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "9           falling  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "10             None  {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "11             None    {'unitCode': 'wmoUnit:percent', 'value': 30}   \n",
+       "12             None    {'unitCode': 'wmoUnit:percent', 'value': 50}   \n",
+       "13             None    {'unitCode': 'wmoUnit:percent', 'value': 40}   \n",
+       "\n",
+       "                                             dewpoint  \\\n",
+       "0   {'unitCode': 'wmoUnit:degC', 'value': -1.11111...   \n",
+       "1   {'unitCode': 'wmoUnit:degC', 'value': 6.666666...   \n",
+       "2   {'unitCode': 'wmoUnit:degC', 'value': 6.666666...   \n",
+       "3   {'unitCode': 'wmoUnit:degC', 'value': 7.777777...   \n",
+       "4   {'unitCode': 'wmoUnit:degC', 'value': 7.777777...   \n",
+       "5   {'unitCode': 'wmoUnit:degC', 'value': -2.77777...   \n",
+       "6   {'unitCode': 'wmoUnit:degC', 'value': -5.55555...   \n",
+       "7   {'unitCode': 'wmoUnit:degC', 'value': -0.55555...   \n",
+       "8   {'unitCode': 'wmoUnit:degC', 'value': -1.11111...   \n",
+       "9   {'unitCode': 'wmoUnit:degC', 'value': -1.11111...   \n",
+       "10  {'unitCode': 'wmoUnit:degC', 'value': -1.11111...   \n",
+       "11  {'unitCode': 'wmoUnit:degC', 'value': 1.111111...   \n",
+       "12  {'unitCode': 'wmoUnit:degC', 'value': 2.222222...   \n",
+       "13  {'unitCode': 'wmoUnit:degC', 'value': 2.222222...   \n",
        "\n",
-       "   temperatureTrend     windSpeed windDirection  \\\n",
-       "0              None   5 to 10 mph            NW   \n",
-       "1              None   5 to 10 mph             W   \n",
-       "2              None  10 to 15 mph             W   \n",
-       "3              None        15 mph             W   \n",
-       "4              None        15 mph             W   \n",
-       "5              None        15 mph            SW   \n",
-       "6              None        15 mph             W   \n",
-       "7              None  10 to 15 mph             W   \n",
-       "8              None        10 mph             W   \n",
-       "9            rising        10 mph            SW   \n",
-       "10          falling   5 to 10 mph             W   \n",
-       "11             None         5 mph            SW   \n",
-       "12          falling   5 to 10 mph            SW   \n",
-       "13             None         5 mph             S   \n",
+       "                                relativeHumidity     windSpeed windDirection  \\\n",
+       "0   {'unitCode': 'wmoUnit:percent', 'value': 57}  10 to 15 mph            SW   \n",
+       "1   {'unitCode': 'wmoUnit:percent', 'value': 65}   5 to 10 mph            SW   \n",
+       "2   {'unitCode': 'wmoUnit:percent', 'value': 89}   5 to 10 mph             S   \n",
+       "3   {'unitCode': 'wmoUnit:percent', 'value': 86}  10 to 25 mph             S   \n",
+       "4   {'unitCode': 'wmoUnit:percent', 'value': 69}  15 to 25 mph             W   \n",
+       "5   {'unitCode': 'wmoUnit:percent', 'value': 67}  10 to 15 mph            NW   \n",
+       "6   {'unitCode': 'wmoUnit:percent', 'value': 63}   5 to 10 mph             W   \n",
+       "7   {'unitCode': 'wmoUnit:percent', 'value': 63}  10 to 15 mph             W   \n",
+       "8   {'unitCode': 'wmoUnit:percent', 'value': 92}  10 to 15 mph            NW   \n",
+       "9   {'unitCode': 'wmoUnit:percent', 'value': 92}        10 mph             N   \n",
+       "10  {'unitCode': 'wmoUnit:percent', 'value': 85}   5 to 10 mph            SE   \n",
+       "11  {'unitCode': 'wmoUnit:percent', 'value': 82}   5 to 10 mph            SE   \n",
+       "12  {'unitCode': 'wmoUnit:percent', 'value': 92}        10 mph            SW   \n",
+       "13  {'unitCode': 'wmoUnit:percent', 'value': 92}  10 to 15 mph            NW   \n",
        "\n",
        "                                                 icon  \\\n",
-       "0   https://api.weather.gov/icons/land/day/snow,60...   \n",
-       "1   https://api.weather.gov/icons/land/night/snow?...   \n",
-       "2   https://api.weather.gov/icons/land/day/snow,30...   \n",
-       "3   https://api.weather.gov/icons/land/night/bkn?s...   \n",
-       "4   https://api.weather.gov/icons/land/day/bkn?siz...   \n",
-       "5   https://api.weather.gov/icons/land/night/bkn?s...   \n",
-       "6   https://api.weather.gov/icons/land/day/bkn/sno...   \n",
-       "7   https://api.weather.gov/icons/land/night/cold?...   \n",
-       "8   https://api.weather.gov/icons/land/day/few?siz...   \n",
-       "9   https://api.weather.gov/icons/land/night/sct?s...   \n",
-       "10  https://api.weather.gov/icons/land/day/few?siz...   \n",
-       "11  https://api.weather.gov/icons/land/night/sct?s...   \n",
-       "12  https://api.weather.gov/icons/land/day/sct?siz...   \n",
-       "13  https://api.weather.gov/icons/land/night/bkn?s...   \n",
+       "0   https://api.weather.gov/icons/land/night/sct?s...   \n",
+       "1   https://api.weather.gov/icons/land/day/skc?siz...   \n",
+       "2   https://api.weather.gov/icons/land/night/sct?s...   \n",
+       "3   https://api.weather.gov/icons/land/day/wind_bk...   \n",
+       "4   https://api.weather.gov/icons/land/night/rain_...   \n",
+       "5   https://api.weather.gov/icons/land/day/few?siz...   \n",
+       "6   https://api.weather.gov/icons/land/night/few?s...   \n",
+       "7   https://api.weather.gov/icons/land/day/few?siz...   \n",
+       "8   https://api.weather.gov/icons/land/night/few?s...   \n",
+       "9   https://api.weather.gov/icons/land/day/few?siz...   \n",
+       "10  https://api.weather.gov/icons/land/night/sct?s...   \n",
+       "11  https://api.weather.gov/icons/land/day/bkn/rai...   \n",
+       "12  https://api.weather.gov/icons/land/night/rain_...   \n",
+       "13  https://api.weather.gov/icons/land/day/rain_sh...   \n",
        "\n",
-       "                                    shortForecast  \\\n",
-       "0                             Snow Showers Likely   \n",
-       "1                             Chance Snow Showers   \n",
-       "2                             Chance Snow Showers   \n",
-       "3                                   Mostly Cloudy   \n",
-       "4                                   Mostly Cloudy   \n",
-       "5                                   Mostly Cloudy   \n",
-       "6   Mostly Cloudy then Slight Chance Snow Showers   \n",
-       "7                                   Mostly Cloudy   \n",
-       "8                                           Sunny   \n",
-       "9                                   Partly Cloudy   \n",
-       "10                                          Sunny   \n",
-       "11                                  Partly Cloudy   \n",
-       "12                                   Mostly Sunny   \n",
-       "13                                  Mostly Cloudy   \n",
+       "                             shortForecast  \\\n",
+       "0                            Partly Cloudy   \n",
+       "1                                    Sunny   \n",
+       "2                            Partly Cloudy   \n",
+       "3                             Partly Sunny   \n",
+       "4                      Chance Rain Showers   \n",
+       "5                                    Sunny   \n",
+       "6                             Mostly Clear   \n",
+       "7                                    Sunny   \n",
+       "8                             Mostly Clear   \n",
+       "9                                    Sunny   \n",
+       "10                           Partly Cloudy   \n",
+       "11  Mostly Cloudy then Chance Rain Showers   \n",
+       "12                     Chance Rain Showers   \n",
+       "13                     Chance Rain Showers   \n",
        "\n",
        "                                     detailedForecast  \n",
-       "0   Snow showers likely. Cloudy, with a high near ...  \n",
-       "1   A chance of snow showers after 9pm. Mostly clo...  \n",
-       "2   A chance of snow showers. Mostly cloudy, with ...  \n",
-       "3   Mostly cloudy, with a low around 17. West wind...  \n",
-       "4   Mostly cloudy, with a high near 23. West wind ...  \n",
-       "5   Mostly cloudy, with a low around 12. Southwest...  \n",
-       "6   A slight chance of snow showers after noon. Mo...  \n",
-       "7   Mostly cloudy, with a low around 7. West wind ...  \n",
-       "8                         Sunny, with a high near 23.  \n",
-       "9   Partly cloudy. Low around 15, with temperature...  \n",
-       "10  Sunny. High near 34, with temperatures falling...  \n",
-       "11               Partly cloudy, with a low around 18.  \n",
-       "12  Mostly sunny. High near 36, with temperatures ...  \n",
-       "13               Mostly cloudy, with a low around 26.  "
+       "0   Partly cloudy, with a low around 43. Southwest...  \n",
+       "1   Sunny. High near 64, with temperatures falling...  \n",
+       "2   Partly cloudy, with a low around 43. South win...  \n",
+       "3   Partly sunny, with a high near 63. South wind ...  \n",
+       "4   A chance of rain showers. Mostly cloudy, with ...  \n",
+       "5   Sunny. High near 44, with temperatures falling...  \n",
+       "6   Mostly clear, with a low around 30. West wind ...  \n",
+       "7   Sunny. High near 49, with temperatures falling...  \n",
+       "8                 Mostly clear, with a low around 28.  \n",
+       "9   Sunny. High near 45, with temperatures falling...  \n",
+       "10               Partly cloudy, with a low around 31.  \n",
+       "11  A chance of rain showers after noon. Mostly cl...  \n",
+       "12  A chance of rain showers. Mostly cloudy, with ...  \n",
+       "13  A chance of rain showers. Partly sunny, with a...  "
       ]
      },
-     "execution_count": 23,
+     "execution_count": 20,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -2107,15 +2187,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 21,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Minimum observed temperature is: 7 degree F\n",
-      "Maximum observed temperature is: 36 degree F\n"
+      "Minimum observed temperature is: 28 degree F\n",
+      "Maximum observed temperature is: 64 degree F\n"
      ]
     }
    ],
@@ -2136,12 +2216,12 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "#### Which days `detailedForecast` contains `snow`?"
+    "#### Which days `detailedForecast` contains `sunny`?"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 25,
+   "execution_count": 22,
    "metadata": {},
    "outputs": [
     {
@@ -2173,6 +2253,9 @@
        "      <th>temperature</th>\n",
        "      <th>temperatureUnit</th>\n",
        "      <th>temperatureTrend</th>\n",
+       "      <th>probabilityOfPrecipitation</th>\n",
+       "      <th>dewpoint</th>\n",
+       "      <th>relativeHumidity</th>\n",
        "      <th>windSpeed</th>\n",
        "      <th>windDirection</th>\n",
        "      <th>icon</th>\n",
@@ -2182,138 +2265,108 @@
        "  </thead>\n",
        "  <tbody>\n",
        "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>1</td>\n",
-       "      <td>Today</td>\n",
-       "      <td>2022-11-16T08:00:00-06:00</td>\n",
-       "      <td>2022-11-16T18:00:00-06:00</td>\n",
-       "      <td>True</td>\n",
-       "      <td>34</td>\n",
-       "      <td>F</td>\n",
-       "      <td>None</td>\n",
-       "      <td>5 to 10 mph</td>\n",
-       "      <td>NW</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/snow,60...</td>\n",
-       "      <td>Snow Showers Likely</td>\n",
-       "      <td>Snow showers likely. Cloudy, with a high near ...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>2</td>\n",
-       "      <td>Tonight</td>\n",
-       "      <td>2022-11-16T18:00:00-06:00</td>\n",
-       "      <td>2022-11-17T06:00:00-06:00</td>\n",
-       "      <td>False</td>\n",
-       "      <td>23</td>\n",
-       "      <td>F</td>\n",
-       "      <td>None</td>\n",
-       "      <td>5 to 10 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/night/snow?...</td>\n",
-       "      <td>Chance Snow Showers</td>\n",
-       "      <td>A chance of snow showers after 9pm. Mostly clo...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>3</td>\n",
+       "      <th>3</th>\n",
+       "      <td>4</td>\n",
        "      <td>Thursday</td>\n",
-       "      <td>2022-11-17T06:00:00-06:00</td>\n",
-       "      <td>2022-11-17T18:00:00-06:00</td>\n",
+       "      <td>2023-11-16T06:00:00-06:00</td>\n",
+       "      <td>2023-11-16T18:00:00-06:00</td>\n",
        "      <td>True</td>\n",
-       "      <td>28</td>\n",
+       "      <td>63</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>10 to 15 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/snow,30...</td>\n",
-       "      <td>Chance Snow Showers</td>\n",
-       "      <td>A chance of snow showers. Mostly cloudy, with ...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': None}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 7.777777...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 86}</td>\n",
+       "      <td>10 to 25 mph</td>\n",
+       "      <td>S</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/wind_bk...</td>\n",
+       "      <td>Partly Sunny</td>\n",
+       "      <td>Partly sunny, with a high near 63. South wind ...</td>\n",
        "    </tr>\n",
        "    <tr>\n",
-       "      <th>6</th>\n",
-       "      <td>7</td>\n",
-       "      <td>Saturday</td>\n",
-       "      <td>2022-11-19T06:00:00-06:00</td>\n",
-       "      <td>2022-11-19T18:00:00-06:00</td>\n",
+       "      <th>13</th>\n",
+       "      <td>14</td>\n",
+       "      <td>Tuesday</td>\n",
+       "      <td>2023-11-21T06:00:00-06:00</td>\n",
+       "      <td>2023-11-21T18:00:00-06:00</td>\n",
        "      <td>True</td>\n",
-       "      <td>23</td>\n",
+       "      <td>44</td>\n",
        "      <td>F</td>\n",
        "      <td>None</td>\n",
-       "      <td>15 mph</td>\n",
-       "      <td>W</td>\n",
-       "      <td>https://api.weather.gov/icons/land/day/bkn/sno...</td>\n",
-       "      <td>Mostly Cloudy then Slight Chance Snow Showers</td>\n",
-       "      <td>A slight chance of snow showers after noon. Mo...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 40}</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:degC', 'value': 2.222222...</td>\n",
+       "      <td>{'unitCode': 'wmoUnit:percent', 'value': 92}</td>\n",
+       "      <td>10 to 15 mph</td>\n",
+       "      <td>NW</td>\n",
+       "      <td>https://api.weather.gov/icons/land/day/rain_sh...</td>\n",
+       "      <td>Chance Rain Showers</td>\n",
+       "      <td>A chance of rain showers. Partly sunny, with a...</td>\n",
        "    </tr>\n",
        "  </tbody>\n",
        "</table>\n",
        "</div>"
       ],
       "text/plain": [
-       "   number      name                  startTime                    endTime  \\\n",
-       "0       1     Today  2022-11-16T08:00:00-06:00  2022-11-16T18:00:00-06:00   \n",
-       "1       2   Tonight  2022-11-16T18:00:00-06:00  2022-11-17T06:00:00-06:00   \n",
-       "2       3  Thursday  2022-11-17T06:00:00-06:00  2022-11-17T18:00:00-06:00   \n",
-       "6       7  Saturday  2022-11-19T06:00:00-06:00  2022-11-19T18:00:00-06:00   \n",
+       "    number      name                  startTime                    endTime  \\\n",
+       "3        4  Thursday  2023-11-16T06:00:00-06:00  2023-11-16T18:00:00-06:00   \n",
+       "13      14   Tuesday  2023-11-21T06:00:00-06:00  2023-11-21T18:00:00-06:00   \n",
+       "\n",
+       "    isDaytime  temperature temperatureUnit temperatureTrend  \\\n",
+       "3        True           63               F             None   \n",
+       "13       True           44               F             None   \n",
        "\n",
-       "   isDaytime  temperature temperatureUnit temperatureTrend     windSpeed  \\\n",
-       "0       True           34               F             None   5 to 10 mph   \n",
-       "1      False           23               F             None   5 to 10 mph   \n",
-       "2       True           28               F             None  10 to 15 mph   \n",
-       "6       True           23               F             None        15 mph   \n",
+       "                        probabilityOfPrecipitation  \\\n",
+       "3   {'unitCode': 'wmoUnit:percent', 'value': None}   \n",
+       "13    {'unitCode': 'wmoUnit:percent', 'value': 40}   \n",
        "\n",
-       "  windDirection                                               icon  \\\n",
-       "0            NW  https://api.weather.gov/icons/land/day/snow,60...   \n",
-       "1             W  https://api.weather.gov/icons/land/night/snow?...   \n",
-       "2             W  https://api.weather.gov/icons/land/day/snow,30...   \n",
-       "6             W  https://api.weather.gov/icons/land/day/bkn/sno...   \n",
+       "                                             dewpoint  \\\n",
+       "3   {'unitCode': 'wmoUnit:degC', 'value': 7.777777...   \n",
+       "13  {'unitCode': 'wmoUnit:degC', 'value': 2.222222...   \n",
        "\n",
-       "                                   shortForecast  \\\n",
-       "0                            Snow Showers Likely   \n",
-       "1                            Chance Snow Showers   \n",
-       "2                            Chance Snow Showers   \n",
-       "6  Mostly Cloudy then Slight Chance Snow Showers   \n",
+       "                                relativeHumidity     windSpeed windDirection  \\\n",
+       "3   {'unitCode': 'wmoUnit:percent', 'value': 86}  10 to 25 mph             S   \n",
+       "13  {'unitCode': 'wmoUnit:percent', 'value': 92}  10 to 15 mph            NW   \n",
        "\n",
-       "                                    detailedForecast  \n",
-       "0  Snow showers likely. Cloudy, with a high near ...  \n",
-       "1  A chance of snow showers after 9pm. Mostly clo...  \n",
-       "2  A chance of snow showers. Mostly cloudy, with ...  \n",
-       "6  A slight chance of snow showers after noon. Mo...  "
+       "                                                 icon        shortForecast  \\\n",
+       "3   https://api.weather.gov/icons/land/day/wind_bk...         Partly Sunny   \n",
+       "13  https://api.weather.gov/icons/land/day/rain_sh...  Chance Rain Showers   \n",
+       "\n",
+       "                                     detailedForecast  \n",
+       "3   Partly sunny, with a high near 63. South wind ...  \n",
+       "13  A chance of rain showers. Partly sunny, with a...  "
       ]
      },
-     "execution_count": 25,
+     "execution_count": 22,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
     "# What courses contain the keyword \"programming\"?\n",
-    "snow_days_df = periods_df[periods_df[\"detailedForecast\"].str.contains(\"snow\")]\n",
-    "snow_days_df"
+    "sunny_days_df = periods_df[periods_df[\"detailedForecast\"].str.contains(\"sunny\")]\n",
+    "sunny_days_df"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": 23,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "0       Today\n",
-       "1     Tonight\n",
-       "2    Thursday\n",
-       "6    Saturday\n",
+       "3     Thursday\n",
+       "13     Tuesday\n",
        "Name: name, dtype: object"
       ]
      },
-     "execution_count": 26,
+     "execution_count": 23,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "snow_days_df[\"name\"]"
+    "sunny_days_df[\"name\"]"
    ]
   },
   {
@@ -2325,16 +2378,16 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 27,
+   "execution_count": 24,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "'Thursday'"
+       "'Thursday Night'"
       ]
      },
-     "execution_count": 27,
+     "execution_count": 24,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -2346,16 +2399,16 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 28,
+   "execution_count": 25,
    "metadata": {},
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "'A chance of snow showers. Mostly cloudy, with a high near 28. West wind 10 to 15 mph, with gusts as high as 25 mph. Chance of precipitation is 30%. New snow accumulation of less than half an inch possible.'"
+       "'A chance of rain showers. Mostly cloudy, with a low around 34. West wind 15 to 25 mph, with gusts as high as 40 mph. Chance of precipitation is 30%.'"
       ]
      },
-     "execution_count": 28,
+     "execution_count": 25,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -2375,7 +2428,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 29,
+   "execution_count": 26,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -2427,7 +2480,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.12"
+   "version": "3.11.4"
   }
  },
  "nbformat": 4,
diff --git a/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template_Gurmail_lec1.ipynb b/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template_Gurmail_lec1.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..45181d66eb4d3be1bdb5e330461e60bf3161c0e8
--- /dev/null
+++ b/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template_Gurmail_lec1.ipynb
@@ -0,0 +1,604 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Announcements - Wednesday, November 15\n",
+    "\n",
+    "* Download ALL files for today's lecture\n",
+    "* Q8 released tonight at 5:00 pm - due on Friday at 11:59 pm\n",
+    "* P10 due tonight at 11:59 pm\n",
+    "* <b>If you have any problem with P6 grades, please send me (Gurmail.Singh@wisc.edu) an email by November 15.</b>\n",
+    "* If you have questions, it is almost always faster to \n",
+    "  * Post on Piazza\n",
+    "  * Go to [office hours](https://sites.google.com/wisc.edu/cs220-oh-f23/home?pli=1) \n",
+    "* Exam2 results - you may get your grades by the evening\n",
+    "\n",
+    "### Conflict Form\n",
+    "  * [Final - December 19, 7:45 am](https://cs220.cs.wisc.edu/f23/surveys.html)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Web 1 - How to get data from the Internet\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# New module\n",
+    "import requests\n",
+    "\n",
+    "# Known modules\n",
+    "import json\n",
+    "import pandas as pd\n",
+    "from pandas import Series, DataFrame"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "###  P10 check-in"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# It is very important to check auto-grader test results on p10 in a timely manner.\n",
+    "# Take a few minutes to verify if you hardcoded the slashes in P10 rather than using os.path.join? \n",
+    "       # Your code won't clear auto-grader if you hardcode either \"/\" or \"\\\" \n",
+    "       # for *ANY* relative path in the entire project\n",
+    "# Check your code and check the autograder as soon as possible."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 1: Read the data from \"IMDB-Movie-Data.csv\" into a pandas DataFrame called \"movies\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 2: fixing duplicate index columns\n",
+    "\n",
+    "Notice that there are two index columns\n",
+    "- That happened because when you write a csv from pandas to a file, it writes a new index column\n",
+    "- So if the DataFrame already contains an index, you are going to get two index columns\n",
+    "- Let's fix that problem"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#use slicing to retain all the rows and columns excepting for column with integer position 0\n",
+    "movies = movies.iloc[:, 1:] \n",
+    "movies"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "movies.to_csv(\"better_movies.csv\", index = False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 3: Which movie has highest rating?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 4: Which movies were released in 2020?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 5a: What does this function do?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def format_revenue(revenue):\n",
+    "    if type(revenue) == float: # need this in here if we run code multiple times\n",
+    "        return revenue\n",
+    "    elif revenue[-1] == 'M': # some have an \"M\" at the end\n",
+    "        return float(revenue[:-1]) * 1e6\n",
+    "    else:                    # otherwise, assume millions.\n",
+    "        return float(revenue) * 1e6"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 5b: Using the above function, create a new column called \"Revenue in dollars\" by applying appropriate conversion to Revenue column."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 6: What are the top 10 highest-revenue movies?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 7: What is total revenue from all movies?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 8: Which shortest movies (below average runtime) have highest rating?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Learning Objectives\n",
+    "\n",
+    "- Make a request for data using requests.get(URL)\n",
+    "- Check the status of a request/response\n",
+    "- Extract the text of a response\n",
+    "- Create a json file from a response\n",
+    "- State and practice good etiquette when getting data"
+   ]
+  },
+  {
+   "attachments": {
+    "Client_server.png": {
+     "image/png": "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ICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjU5MjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMzE0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CtqejFIAAAAcaURPVAAAAAIAAAAAAAABKAAAACgAAAEoAAABKAAAQx+mtpFGAABAAElEQVR4AezdCZgkRYEv8OiZYRguQVEQueTc5VI5lBV0YcGncu0CisKDVRHR1QURP3UVXVgQL56+p4DKtyCKgg93HuKK8JZbn6AsKsixoHKoIPcpwtzd+TJqrKuru6en64yoX33f0FVZmRkRv8gkvvh/mZUjRfkKXgQIECBAgAABAgQIECBAgAABAgQIEOiiwIggsou6dk2AAAECBAgQIECAAAECBAgQIECAQEVAEOlAIECAAAECBAgQIECAAAECBAgQIECg6wKCyK4TK4AAAQIECBAgQIAAAQIECBAgQIAAAUGkY4AAAQIECBAgQIAAAQIECBAgQIAAga4LCCK7TqwAAgQIECBAgAABAgQIECBAgAABAgQEkY4BAgQIECBAgAABAgQIECBAgAABAgS6LiCI7DqxAggQIECAAAECBAgQIECAAAECBAgQEEQ6BggQIECAAAECBAgQIECAAAECBAgQ6LqAILLrxAogQIAAAQIECBAgQIAAAQIECBAgQEAQ6RggQIAAAQIECBAgQIAAAQIECBAgQKDrAoLIrhMrgAABAgQIECBAgAABAgQIECBAgAABQaRjgAABAgQIECBAgAABAgQIECBAgACBrgsIIrtOrAACBAgQIECAAAECBAgQIECAAAECBASRjgECBAgQIECAAAECBAgQIECAAAECBLouIIjsOrECCBAgQIAAAQIECBAgQIAAAQIECBAQRDoGCBAgQIAAAQIECBAgQIAAAQIECBDouoAgsuvECiBAgAABAgQIECBAgAABAgQIECBAQBDpGCBAgAABAgQIECBAgAABAgQIECBAoOsCgsiuEyuAAAECBAgQIECAAAECBAgQIECAAAFBpGOAAAECBAgQIECAAAECBAgQIECAAIGuCwgiu06sAAIECBAgQIAAAQIECBAgQIAAAQIEBJGOAQIECBAgQIAAAQIECBAgQIAAAQIEui4giOw6sQIIECBAgAABAgQIECBAgAABAgQIEBBEOgYIECBAgAABAgQIECBAgAABAgQIEOi6gCCy68QKIECAAAECBAgQIECAAAECBAgQIEBAEOkYIECAAAECBAgQIECAAAECBAgQIECg6wKCyK4TK4AAAQIECBAgQIAAAQIECBAgQIAAAUGkY4AAAQIECBAgQIAAAQIECBAgQIAAga4LCCK7TqwAAgQIECBAgAABAgQIECBAgAABAgQEkY4BAgQIECBAgAABAgQIECBAgAABAgS6LiCI7DqxAggQIECAAAECBAgQIECAAAECBAgQEEQ6BggQIECAAAECBAgQIECAAAECBAgQ6LqAILLrxAogQIAAAQIECBAgQIAAAQIECBAgQEAQ6RggQIAAAQIECBAgQIAAAQIECBAgQKDrAoLIrhMrgAABAgQIECBAgAABAgQIECBAgAABQaRjgAABAgQIECBAgAABAgQIECBAgACBrgsIIrtOrAACBAgQIECAAAECBAgQIECAAAECBASRjgECBAgQIECAAAECBAgQ6LjAqaeeGh588MHKfl//+teHAw88sONl2CGBVAWOP3VJWLxkee0P/7s5YfedZ6XaFPUmsFICgsiV4rIyAQIECBAgQIAAAQIECExHYMsttwz33HNPZdVjjz02nH766dPZLNt1FixYEFZfffVs26dhKycwe6sFYWxs+TannzQ3HPu2OSu3A2sTSFRAEJlox6k2AQIECBAgQIAAAQIEBllAEFnvnWOOOSacffbZYbPNNgvz588PO+ywQ/1L74ZSQBA5lN2u0aWAINJhQIAAAQIECBAgQIAAAQIdFxBELif91a9+FbbZZpua71FHHRXOOeec2mdvhlNAEDmc/a7VgkjHAAECBAgQIECAAAECBAh0QUAQuRz14YcfDptssklYunRpZcFHP/rR8JnPfKYL4naZkoAgMqXeUtdOCrgispOa9kWAAAECBAgQIECAAAECFQFBZP1A+MY3vhG++MUv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Ksp2hbDJS0bC2mvVb7XuVruefqYIf3i4qJS18Qb18mIdbi5v641/t996Vlitfsdwt6rSst/xt2bH28BfveOsUD6IJTzyeAjbbjUS1l2nXueWHcxgwcr2Q1z/Z7eOha03GwnrPG96dVlY3tn+63vHwjPPFmH9F46EDV88K6y5+vQqWx56lfbHY2Wrl84K8TZ1LwKTCQgiJ5OxnAABAgQIECBAgAABAgQIECDQIDBREDnR71E2bOItAQINAoLIBgxvCRAgQIAAAQIECBAgQIDAsAmMbLFg2JqsvUMiUNwzzcs6h8RjEJopiByEXlAHAgQIECBAgAABAgQIECDQJwFBZJ/gFdt1AUFk14lXugBB5EqT2YAAAQIECBAgQIAAAQIECOQjIIjMpy+1pFlAENnsMQifBJGD0AvqQIAAAQIECBAgQIAAAQIECAy8gN+IHPguUsEBFxBEDngHqR4BAgQIECBAgAABAgQIECAwGAKCyMHoB7VIV0AQmW7fqTkBAgQIECBAgAABAgQIECDQQ4FbfzUWjj5hSa3E8/7H3PCXW8yqffaGAIGpBQSRU/v4lgABAgQIECBAgAABAgQIECBAgACBDggIIjuAaBcECBAgQIAAAQIECBAgQIAAAQIECEwtIIic2se3BAgQIECAAAECBAgQIECAAAECBAh0QEAQ2QFEuyBAgAABAgQIECBAgAABAgQIECBAYGoBQeTUPr4lQIAAAQIECBAgQIAAAQIECBAgQKADAoLIDiDaBQECBAgQIECAAAECBAgQIECAAAECUwsIIqf28S0BAgQIECBAgAABAgQIECBAgAABAh0QEER2ANEuCBAgQIAAAQIECBAgQIAAAQIECBCYWkAQObWPbwkQIECAAAECBAgQIECAAAECBAgQ6ICAILIDiHZBgAABAgQIECBAgAABAgQIECBAgMDUAoLIqX18S4AAAQIECBAgQIAAAQIECBAgQIBABwQEkR1AtAsCBAgQIECAAAECBAgQIECAAAECBKYWEERO7eNbAgQIECBAgAABAgQIECBAgAABAgQ6ICCI7ACiXRAgQIAAAQIECBAgQIAAAQIECBAgMLWAIHJqH98SIECAAAECBAgQIECAAAECBAgQINABAUFkBxDtggABAgQIECBAgAABAgQIECBAgACBqQUEkVP7+JYAAQIECBAgQIAAAQIECBAgQIAA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kAAJFJiA6+8dCpEFfiBYHAmQAAmQAAmQAAmQAAmQQMMh4PqAsOHcKbaUBEiABMqDgOvvHQqR5fEcshUkQAIkQAIkQAIkQAIkQAL1QMD1AWE9IOMlSYAESIAE8iDg+nuHQmQeN59ZSYAESIAESIAESIAESIAEGjYB1weEDfvusfUkQAIk4B4B1987FCLde+ZYYxIgARIgARIgARIgARIggRIh4PqAsEQwshokQAIkQAIJCbj+3qEQmfBGMxkJkAAJkAAJkAAJkAAJkAAJhAm4PiAMt4fHJEACJEACpU3A9fcOhcjSfr5YOxIgARIgARIgARIgARIggRIm4PqAsITRsmokQAIkQAIRBFx/71CIjLipjCIBEiABEiABEiABEiABEiCBJARcHxAmaSPTkAAJkAAJlA4B1987FCJL51liTUigwRGYO3euPP7445Ht3n777aVbt26R5xhJAiRAAiRAAiRAAqVCwPUBYalwZD1IgARIgASSEXD9vUMhMtl9ZioSKCqBJUuWyKOPPip9+vSRNm3aFPVapVT4a6+9Jn379o2s0g033CAnnHBC5DlGkgAJkAAJkAAJkECpEHB9QFgqHFkPEiABEiCBZARcf+9QiEx2n5mKBIpGACLkoYceKvfcc4+8+OKLstNOOxXtWqVWMIXIUrsjrA8JkAAJkAAJkEC2BFwfEGbbXqYnARIgARKoXwKuv3coRNbv88OrN3ACnufJEUccISNGjNAkKETWPhC0iKxlwT0SIAESIAESIIHSJeD6gLB0ybJmJEACJEACUQRcf+9QiIy6q4wjgTogABHy6KOPlttvv92/GoVIH4VQiKxlwT0SIAESIAESIIHSJeD6gLB0ybJmJEACJEACUQRcf+9QiIy6q4wjgTogcPzxx8vNN98cuBKFyFocFCJrWXCPBEiABEiABEigdAm4PiAsXbKsGQmQAAmQQBQB1987FCKj7mqJx8GS7r333pNPPvlE5syZIz/99JM0adJElltuOVlllVVkm222ke7du2dsxXfffSdffPGFTJkyRaZOnSrNmjXTXoqRF96KW7VqFVvGL7/8Iu+++25KmkaNGsmOO+4olZWVgvUPcY3x48fLhAkTBH8wnTp1kgEDBshaa62Vkhdte+ONN2TcuHEye/ZsXUbHjh2ld+/estFGG6WkR8S8efNkzJgxKedwfay3+Ndff2lWkyZNksmTJ+t2rrbaaroOqEtUmD59uuYSPgcmvXr1CkfLrFmzBOWHQ/PmzQXen8Ph3//+twwbNiwcLeedd55sscUWgfiqqirp169fIC588OGHH+rr//DDD4L/mzZtqjlvuummstVWW2nu4Tw4zsQO9wv35KWXXpKxY8fKzz//rJ8t3N+uXbtGFZlVHNeIzAoXE5MACZAACZAACZQgAdcHhCWIlFUiARIgARKIIeD8e0eJDAyOEFCCmnfBBRd4K6+8sqeeydj/11hjDU8JR5EtGzVqlKcEuNj8KF+JWJ4S+CLLQOTzzz+ftowff/zRUyJTbF0HDx7sKTHTL//tt9/2Vl111bRl9u/f36uurvbTm53HHnssbZ677rrLa9euXeR5JZh6u+22m/ftt9+aovzt6aefHplHiad+Gnvn8ssvj0yvPGDbyfT+KaecEpk23T1FPaOCeR6UIBhbXufOnb3//e9/UUV4cex+//13zUaJwCnlN27c2DvppJMiy8wmcvTo0SllGw7KIjKbopiWBEiABEiABEiABOqFgOm7hLf1UhlelARIgARIoOwJhN835tiVhsPaicEBAspq0YO4aB6wJNvHH3880DJlmejtsMMOWZWhlHZPOVPxlOVcoCwcxAmRJ554oqcsEjNeC2JnTU2NN3z4cE9Z/mVMP2TIkJR6xIlpSTituOKK3jvvvBMot1hC5JlnnpmxjeE6RwmRyrrUW3vttbMqC0IuxEs7xLH75ptvPGUdm/Yam2++uV1UTvsUInPCxkwkQAIkQAIkQAIlRCDcdzPHJVRFVoUESIAESKCMCJj3THjrShMpRDpwpyAIdejQIa0gFH74zLEtRMLyMIkVpMkb3qqpwSmk4oTIcP644x49emTVtmuvvTZQlzgxLe669rn27dt7aqq6X24xhMj//ve/WbXT1C8sRH799dcexFNzPpvtgQce6LcRO3Hs1PT52Guo9S0DZeVyQCEyF2rMQwIkQAIkQAIkUEoE0vXFSqmOrAsJkAAJkED5EHD9vcM1ItUdLPVw5JFHirIYzLqaSoiUPfbYQ+c7/PDDZcSIEVmXYWdAHZR1pB/1wgsv6HUW/Yg62sF6iS+//LJ/NbRTTfP2j3Pd2X///eX+++/X2c844wy58sorU4rCupZY8zIcrrjiClHWjuFoUVOzZe7cuTp+ww031GtVpiTKEKGESFm8eLFOpX469RqSWBMyKmBNzHXWWUc+//xzva5jVJonnnhCBg0apE/lyg7rVn7//ffSunXrqEskjuMakYlRMSEJkAAJkAAJkECJEnB+ra4S5cpqkQAJkAAJRBNw/b1DITL6vpZM7MyZM2XNNdeURYsWRdYJD+DWW28tatq2zJ8/X4tkcMiCYITIOLEH6SDiDRw4UBYsWCB33nmndiyD+HBo2bKlTJs2TYtrOJdEiIQwBocpcK7z+uuvh4tMOVbrGWrxFGIfHKREBWW9qEUwcy5OTFNrGcpBBx0km222mc5z9913C5hGBTh4gYMcZW0oxRAi4VwIDn7gJAiiZ1S45JJLUpzhwBERHM4gxN1LiKh2ufDIDc/c4QBHM4ZtHLtwPvsYAjfy5hvi2kOv2fnSZX4SIAESIAESIIG6IOD6gLAuGPEaJEACJEAChSPg/HunfIxTy7MlJ598ctrpscrzs6e8S6c0HFOM7733Xk95ctbnTjvttLRlKO/Ngfx///23p4TNtOmffvppP32mqdm33367n1ZZ9Hk9e/ZMW676k/QuvPBCD+lMgCMZxEf9r6wMTbLY6cXvv/++nw47M2bMiHWgM3LkSJ2+GFOzdcHqH0y1j2oT4l588UWTLHKLqdVRecEqHJTH8sh1JNWPlqesGXXyuKnZ5jpKCPXWW289r23btv61n3zyyfDlcjrm1OycsDETCZAACZAACZBACREwfabwtoSqyKqQAAmQAAmUEYHw+8Ycu9JErhFZ4ndqu+2288Uf83BhCzEpSoSMag6clNh5zf4yyywT6YTmlVdeiUyPfMpiz79EnBAJpyzhcNZZZ6UtV1kthpN7agpx2vQffPCBnz5OTIPn53C48cYb05Y7dOhQnbxUhUgIgub+2VvcY2URmfK/mqYdmR4eyhHi2KF8OKtRFrY6Lf6BU6EuXbp4Cxcu9OPy2aEQmQ895iUBEiABEiABEigFAnafzN4vhbqxDiRAAiRAAuVHwH7X2PuutJRCZInfqXbt2kUKSauvvnrimqdzUqPWLIws448//oi8Jh7wfffd188TJ0T++OOPfjqzo6bypi0XXsHDYfz48WnT25aOcWJalBD57rvvpi1XraWpq1GqQmSrVq3S1t3+Acq0P2rUKN3OOHbNmjXzPvvss/BtKegxhciC4mRhJEACJEACJEAC9UAgXb+rHqrCS5IACZAACTQAAq6/d7hGpLqDpRywPmBNTU1KFTfYYAP5+OOPU+KjIrBOonF2Yp/ffvvt067bmG7NgZ133lmUAKmLiVsjUgmRoqby2peTMWPGyJZbbhmIMwdKiJRu3bqZQ7398ssvU+JMAiVEiprqrQ/j1jlUQqS0aNHCZNNbrNHYsWPHQJw5+Ne//iVqSnnaNSKxXifqFQ5JnNWYPN9++61gLcyooKZmC9bVTBfS3ct06dPFDxs2TE488US9zmM6Rz9HHXWU3HbbbemKKEg814gsCEYWQgIkQAIkQAIkUI8E0vWb1Vi4HmvFS5MACZAACZQrAdffOxQiS/zJhDgXJXzBkzK8MSfxWqwsIrUTlnBT04lqEBGVJWY4uT5WFpHy4IMP6n1XhUgIuBtttFFk+8477zxRa1WmFSLVdHaBuFlZWRnIf84558ill14aiMOB7TXbnIwTIp955hnZddddTdKU7SqrrCJqjcmUeESk+zGKSnzTTTfJscceGytEfvrpp9KjR4+o7AWLoxBZMJQsiARIgARIgARIoJ4IpOuDUYispxvCy5IACZBAmRNw/r3TAKxWnW6i8maddiquEs0StS3OSYwS5VLKuPXWW9NeE45vTMh2ajamU6vfg8j/o6ZmK8/ZkWlRRj5Ts7EOZLp6wMkPwkUXXZQ2TXi68tixYz1MY44qUwmRBpe/jXNWo7yW++midnr16hV5nZVXXjmndRvjpmZHTWuPqlM+cZyanQ895iUBEiABEiABEigFAlF9QMQxkAAJkAAJkEAxCLj+3uEbshhPRQHLjBMF8fAdffTR3ldffaWvqKZwe8p60rvlllu8QYMGeZdffrmOP//88yPFK+RXU6W9n376ya/xpEmTvA4dOqRND0c2JrggRL711lumuno7ceJEr2XLlmnbZxwAjRgxIm0a42l80aJFHhjE8YoSIv/880/tbCjqx2PttdfWnr1R2fnz53uoh7Le1PcUcRdffHHaeh1yyCEePGXHBQjPEFlNoBBpSHBLAiRAAiRAAiRAArkRiOrTIY6BBEiABEiABIpBwPX3DqdmqztYykF5JxblmEYwnTcuKCcmogQuUeKYnwxTb2+++Wb5+uuvpWvXrugN+efsHUzD3mSTTXTUG2+8IQsWLLBP+/urrrqqKNHTnwLswtRsVH7HHXeUHXbYQTMcOXKknlrtN8ra2WqrrUQ5stExylJP57FOB3aV52jNW4m4gfjwQdTUbKTBGpVYqzJdwNRve13P6667TpQAqtuAayvBMTLrtttuK8riU9CWpk2byvfffy/Tp08XrKl53333iRKadT7khzl3tutrRl40j0hOzc4DHrOSAAmQAAmQAAmUBAHnp8iVBEVWggRIgARIICkB1987FCKT3ul6TKcsHOW4447LugZGiETGU045Ra699tqsy7AzPPHEE6IsLf0oV4RIv8IZdiA+9unTR6eqrq6W9u3byy+//JIhV/zpdEJkv3795NVXX43PbJ01QiSizj33XLnkkkuss6m7+GFKJzwjNYXIVGaMIQESIAESIAESIIFcCLg+IMylzcxDAiRAAiRQfwRcf+9QiKy/ZyfxlWEZBycxjz76aOI8SGgLkfC8DavAN998M6syTOKzzz47RfwqJyFy7733locfftg0V2+POOIIUWs2BuKyPUgnRMLytHfv3omLs4VIPA8DBgyQl19+OXH+cEIKkWEiPCYBEiABEiABEiCB3Ai4PiDMrdXMRQIkQAIkUF8EnH/vFGO+OsssPAE1Rdv7z3/+46kpu2nXCFR/BIFzSogMVERZ+Xmnnnpq2vUJw/lxvNxyy3l33313oBxz4MIakVFtsuPUH7CnLAw9Je6ZZvnbWbNmeWoadICpndfsYz3OM888MzJd1BqR5gJHHXVUZB5Trr1VQqTJprdYn1J56vaU9/TEZaA8PD+77LKLv5Yk14gMYOUBCZAACZAACZAACWRNwO6z2ftZF8QMJEACJEACJJCAgP2usfcTZC2JJFxFuSRuQ/JKTJgwwYOAtdJKK6UVoNR6kJ6ayu1FecTGlVAGHK7A07L90Nr76667rnfZZZd5s2fPTls5OK6x85h9iHs///xzSj44gjFpwlu1jmFKejjhCaczx8apDDLFiWlw7qLWY0wpR0279uCR/Omnn065rh0xdepU7finefPmgTLgJXuLLbbwrr/+ep38mmuuCZw39QTjuKCmu3vdu3ePFIdXWGEFb/Dgwd5DDz3kwcFNVIBzIYjLUW00dWjSpIm38cYba0c3aq3RQDFov0lnbyFwprtmoIA8D+BMyL6uvQ9HTQwkQAIkQAIkQAIkUOoE7P6LvV/q9Wb9SIAESIAE3CRgv2vsfVdaw6nZ6q65GDA9V4mEMmfOHIHDFCWMSevWraVz5856m6RN6iHVeeHQ5IcffhAlWIkSzvT/yrN0kiJKIk0mhytKRJQpU6Zoxy1w5qNEVu0sJpvK//333/LRRx/pNSOVl2xdRuPGjbMpIjYtHA1NnjxZ30/cAzgXggOipAH3ct68edoBDu4lgrJmFdzHNdZYQ6qqqpIWxXQkQAIkQAIkQAIkQAJZEHB+ilwWbWVSEiABEiCB+ifg+nuHQmT9P0OsQZ4EMgmRLVq0yPMKzE4CJEACJEACJEACJEAC0QRcHxBGt4qxJEACJEACpUrA9fcOhchSfbJYr8QEKEQmRsWEJEACJEACJEACJEACBSbg+oCwwDhYHAmQAAmQQJEJuP7eoRBZ5AeExRefAIXI4jPmFUiABEiABEiABEiABKIJuD4gjG4VY0mABEiABEqVgOvvHQqRpfpksV6JCVCITIyKCUmABEiABEiABEiABApMwPUBYYFxsDgSIAESIIEiE3D9vUMhssgPCIsvPgEKkcVnzCuQAAmQAAmQAAmQAAlEE3B9QBjdKsaSAAmQAAmUKgHX3zsUIkv1yWK9EhOgEJkYFROSAAmQAAmQAAmQAAkUmIDrA8IC42BxJEACJEACRSbg+nuHQmSRHxAWX3wC48ePl4svvjjlQpWVlfLAAw9IVVVVyjlGkAAJkAAJkAAJkAAJkEAhCLg+ICwEA5ZBAiRAAiRQdwRcf+9QiKy7Z4VXIgESIAESIAESIAESIAESKDMCrg8Iy+x2sDkkQAIkUPYEXH/vUIgs+0eUDSQBEiABEiABEiABEiABEigWAdcHhMXiwnJJgARIgASKQ8D19w6FyOI8FyyVBEiABEiABEiABEiABEigARBwfUDYAG4Rm0gCJEACZUXA9fcOhciyehzZGBIgARIgARIgARIgARIggbok4PqAsC5Z8VokQAIkQAL5E3D9vUMhMv9ngCWQAAmQAAmQAAmQAAmQAAk0UAKuDwgb6G1js0mABEjAWQKuv3coRDr76LHiJEACJEACJEACJEACJEAC9U3A9QFhffPj9UmABEiABLIj4Pp7h0JkdvebqUmABEiABEiABEiABEiABEjAJ+D6gNBvCHdIgARIgAScIOD6e4dCpBOPGStJAiRAAiRAAiRAAiRAAiRQigRcHxCWIlPWiQRIgARIID0B1987FCLT31ueIQESIAESIAESIAESIAESIIFYAq4PCGMbx5MkQAIkQAIlR8D19w6FyJJ7pFghEiABEiABEiABEiABEiABVwi4PiB0hTPrSQIkQAIksJSA6+8dCpF8kkmABEiABEiABEiABEiABEggRwKuDwhzbDazkQAJkAAJ1BMB1987FCLr6cHhZUmABEiABEiABEiABEiABNwn4PqA0P07wBaQAAmQQMMi4Pp7h0Jkw3pe2VoSIAESIAESIAESIAESIIECEnB9QFhAFCyKBEiABEigDgi4/t6hEFkHDwkvQQIkQAIkQAIkQAIkQAIkUJ4EXB8QluddYatIgARIoHwJuP7eoRBZvs8mW0YCJEACJEACJEACJEACJFBkAq4PCIuMh8WTAAmQAAkUmIDr7x0KkQV+IFgcCZAACZAACZAACZAACZBAwyHg+oCw4dwptpQESIAEyoOA6+8dCpHl8RyyFSRAAiRAAiRAAiRAAiRAAvVAwPUBYT0g4yVJgARIgATyIOD6e4dCZB43n1lJgARIgARIgARIgARIgAQaNgHXB4QN++6x9SRAAiTgHgHX3zsUIt175lhjEiABEiABEiABEiABEiCBEiHg+oCwRDCyGiRAAiRAAgkJuP7eoRCZ8EYzGQmQAAmQAAmQAAmQAAmQAAmECbg+IAy3h8ckQAIkQAKlTcD19w6FyNJ+vlg7EiABEiABEiABEiABEiCBEibg+oCwhNGyaiRAAiRAAhEEXH/vUIiMuKmMIgESIAESIAESIAESIAESIIEkBFwfECZpI9OQAAmQAAmUDgHX3zsUIv+/vXsBvm2qHwC+CjdxDddjJK6EkmJuBj1IuXIVqaRJD5NSQgqJ4lZ60msaZUpJpehBpTI1E1HSgyRXSaIiJeKKULl55fzXd//bx3nsc+75PU737HM+e+Znn73O2mvv9Vn7OrO/sx6j8yy5EwIECBAgQIAAAQIEaiZQ9xfCmnG7XQIECEy8QN1/dwQiJ/4RBkCAAAECBAgQIECAwHQF6v5CON16O48AAQIEVoxA3X93BCJXzHPjqgQIECBAgAABAgQIjIFA3V8Ix6AJVIEAAQITJVD33x2ByIl6XFWWAAECBAgQIECAAIHZFKj7C+FsWiiLAAECBIYvUPffHYHI4T8jrkCAAAECBAgQIECAwJgK1P2FcEybRbUIECAwtgJ1/90RiBzbR1PFCBAgQIAAAQIECBAYtkDdXwiH7aN8AgQIEJhdgbr/7ghEzu7zoDQCBAgQIECAAAECBCZIoO4vhBPUVKpKgACBsRCo+++OQORYPIYqQYAAAQIECBAgQIDAihCo+wvhijBzTQIECBCYvkDdf3cEIqff9s4kQIAAAQIECBAgQGDCBer+Qjjhzaf6BAgQqJ1A3X93BCJr98i5YQIECBAgQIAAAQIERkWg7i+Eo+LoPggQIEBgMIG6/+4IRA7WznIRIECAAAECBAgQIECgS6DuL4RdFZJAgAABAiMtUPffHYHIkX683BwBAgQIECBAgAABAqMsUPcXwlG2dW8ECBAg0C1Q998dgcjuNpVCgAABAgQIECBAgACBgQTq/kI4UCVlIkCAAIGREaj7745A5Mg8Sm6EAAECBAgQIECAAIG6CdT9hbBu3u6XAAECky5Q998dgchJf4LVnwABAgQIECBAgACBaQvU/YVw2hV3IgECBAisEIG6/+4IRK6Qx8ZFCRAgQIAAAQIECBAYB4G6vxCOQxuoAwECBCZJoO6/OwKRk/S0qisBAgQIECBAgAABArMqUPcXwlnFUBgBAgQIDF2g7r87ApFDf0RcgAABAgQIECBAgACBcRWo+wvhuLaLehEgQGBcBer+uyMQOa5PpnoRIECAAAECBAgQIDB0gbq/EA4dyAUIECBAYFYF6v67IxA5q4+DwggQIECAAAECBAgQmCSBur8QTlJbqSsBAgTGQaDuvzsCkePwFKoDAQIECBAgQIAAAQIrRKDuL4QrBM1FCRAgQGDaAnX/3RGInHbTO5EAAQIECBAgQIAAgUkXqPsL4aS3n/oTIECgbgJ1/90RiKzbE+d+CRAgQIAAAQIECBAYGYG6vxCODKQbIUCAAIGBBOr+uyMQOVAzy0SAAAECBAgQIECAAIFugbq/EHbXSAoBAgQIjLJA3X93BCJH+elybwQIECBAgAABAgQIjLRA3V8IRxrXzREgQIBAl0Ddf3cEIruaVAIBAgQIECBAgAABAgQGE6j7C+FgtZSLAAECBEZFoO6/OwKRo/IkuQ8CBAgQIECAAAECBGonUPcXwtqBu2ECBAhMuEDdf3cEIif8AVZ9AgQIECBAgAABAgSmL1D3F8Lp19yZBAgQILAiBOr+uyMQuSKeGtckQIAAAQIECBAgQGAsBOr+QjgWjaASBAgQmCCBuv/uCERO0MOqqgQIECBAgAABAgQIzK5A3V8IZ1dDaQQIECAwbIG6/+4IRA77CVE+AQIECBAgQIAAAQJjK1D3F8KxbRgVI0CAwJgK1P13RyByTB9M1SJAgAABAgQIECBAYPgCvV4Ih39lVyBAgAABAg8JNBqNhw5G+JNA5Ag3jlsjQIAAAQIECBAgQGC0BQQiR7t93B0BAgQmRUAgclJaWj0JECBAgAABAgQIEJhYAYHIiW16FSdAgMBICQhEjlRzuBkCBAgQIECAAAECBAjMvoBA5OybKpEAAQIEpi4gEDl1M2cQIECAAAECBAgQIECgVgICkbVqLjdLgACBsRUQiBzbplUxAgQIECBAgAABAgQI/L+AQKQngQABAgRGQUAgchRawT0QIECAAAECBAgQIECAAAECBAgQIDASAlbNHolmcBMECBAgQIAAAQIECBAgQIAAAQIExltAIHK821ftCBAgQIAAAQIECBAgQIAAAQIECIyEgEDkSDSDmyBAgAABAgQIECBAgAABAgQIECAw3gICkePdvmpHgAABAgQIECBAgAABAgQIECBAYCQEBCJHohncBAECBAgQIECAAAECBAgQIECAAIHxFhCIHO/2VTsCBAgQIECAAAECBAgQIECAAAECIyEgEDkSzeAmCBAgQIAAAQIECBAgQIAAAQIECIy3gEDkeLev2hEgQIAAAQIECBAgQIAAAQIECBAYCQGByJFoBjdBgAABAgQIECBAgAABAgQIECBAYLwFBCLHu33VjgABAgQIECBAgAABAgQIECBAgMBICAhEjkQzuAkCBAgQIECAAAECBAgQIECAAAEC4y0gEDne7at2BAgQIECAAAECBAgQIECAAAECBEZCQCByJJrBTRAgQIAAAQIECBAgQIAAAQIECBAYbwGByPFuX7UjQIAAAQIECBAgQIAAAQIECBAgMBICApEj0QxuggABAgQIECBAgAABAgQIECBAgMB4CwhEjnf7qh0BAgQIECBAgAABAgQIECBAgACBkRAQiByJZnATBAgQIECAAAECBAgQIECAAAECBMZbQCByvNtX7QgQIECAAAECBAgQIECAAAECBAiMhIBA5Eg0g5sgQIAAAQIECBAgQIAAAQIECBAgMN4CApHj3b5qR4AAAQIECBAgQIAAAQIECBAgQGAkBAQiR6IZ3AQBAgQIECBAgAABAgQIECBAgACB8RYQiBzv9lU7AgQIECBAgAABAgQIECBAYMIFli1bls4///x02WWXpRtvvDHdeuutaa211krz589PixYtSgsXLkwPf/jDJ1xJ9f8XAgKR/wtl1yBAgAABAgQIECBAgAABAgRGQuDBBx9MZ511Vtpll13SuuuuOxL3NKybiIDjBz7wgXTKKaekCEb22jbbbLP03e9+Nz3+8Y/vlUU6gVkREIicFUaFECBAgAABAgQIECBAgAABAqMuEEHI/fffP51++unp3HPPTc95znNG/ZandX+NRiOdfPLJafHixemuu+4aqIwIyp5zzjlpu+22Gyi/TASmIyAQOR015xAgQIAAAQIECBAgQIAAAQK1Eojg3AEHHJBOPfXU4r7HORD5j3/8I6255ppTbp+5c+cWQ7if9rSnTflcJxAYREAgchAleQgQIECAAAECBAgQIECAAIHaCkQQ8uCDDy6GKJeVEIgsJdr3z33uc4ueke2pjgjMjoBA5Ow4KoUAAQIECBAgQIAAAQIECBAYUYE3vvGN6aSTTmq7u0kMRK622mrpvvvuSw888ECbRevBwx72sLR06dK03nrrtSb7TGBWBAQiZ4VRIQQIECBAgAABAgQIECAwjgLRk+7iiy9OV1xxRRGcue2229Iqq6yS1lhjjbTxxhunnXbaKT3hCU9YbtX/+te/pt/97nfpmmuuSX/4wx/SqquumrbYYovi3NjHCsb9tjvvvDNddNFFXVlipePddtstrbTSSinmP4xrLFmyJP3yl79MEVDaaKON0h577FG5CEnU7cILLyxWUr7pppuKMjbccMNiBeVtttmm61qRcPvtt6dLLrmk67u4fsy3+O9//7uwuvLKK9PVV19d1POxj31scQ9xL1XbddddV7h0fhcmO+64Y2dyuuGGG1KU37mtvvrqaeedd+5MTm9605vSiSee2JV+7LHHpqc+9alt6XPmzClWkW5L7Dj4xS9+UVz/lltuSfH3iEc8onCOuRV32GGHwr3jlOJweXbRXtEm3/ve99Kll16a/v73vxfPR7TvpptuWlVkz7TWodnz5s1LRx11VNp1113TtttuWwQi3/nOd6aPfOQjPc//2c9+lgzP7snji5kI5IfcRoAAAQIECBAgQIAAAQIECLQI5IBa493vfndjgw02aOR37r5/m2++eSMHjlrOfujjmWee2cgBuL7nR/k5iNXIAb6HTuz4lFc07llGXhm5ccEFF/S91xe/+MWNHMxslvqTn/yksckmm/QsMw/Pbdx7773N/OWHb3zjGz3P+cIXvtBYf/31K7/PAdPGC17wgsaNN95YFtXcv/Wtb608J6/g3MzT+uGDH/xgZf682EprtuLzkUceWZm3V5vGfVZt5fOQA4J9y5s/f37j05/+dFURjX52//znPwubhQsXdpW/8sorNw4//PDKMnsl5gVqinIWLFjQyIHeymx77bVX17VKl29+85uV50gkMFOBiLbbCBAgQIAAAQIECBAgQIAAgf8K5F6LjQgulkGZQfadgZvcM7GRe6BNqYzcI66RF1Np5J5zXW3RLxB52GGHNXKPxOVeK4KdeUhu4zOf+Uwj9/xbbv5999236z76BdMGcVpnnXUaP/3pT9vKHVYg8phjjlluHTvvuSoQmXuXNrbccssplRWB3Ahetm797P7yl780cs/antd4ylOe0lrUcj/HtXNP0MayZct65o1ntrP+5XG/oHjPAn1BYAABQ7PzvzIbAQIECBAgQIAAAQIECBAIgdxjrxiuG0Opp7LloE560YteVJySe6OlrbbaqihrKmWUeRctWpTOO++88rDYn3POOcXw5rbEaRw86UlPSlddddXAZ55wwgnpiCOOaOaPeubelc3j6Xx41KMelS6//PKUe5sWpx999NHpwx/+cFdRuUdkMdS884sPfehDKQcZO5NT7hGZ/va3vxXp733ve9O73vWurjzLS4ih7v/5z3+a2f785z8Xw5ljWPVUt1e+8pXp9NNPb57Wzy6Gz+dgczNv54eY3/KQQw7pTJ7R8fnnn18M668qJKYCmM6q21VlSSPQKiAQ2arhMwECBAgQIECAAAECBAhMtMCBBx6Yco/BKRu0BiJf+9rXplNPPXXKZbSeEPeQe0c2k2YrENkscMAPnUHRfsG0AYsssr3iFa9IX/7yl4vPwwhEPvnJTy7mqpzKPUXe1kBk7txVBKVjTsiqLebEfOITn5h++9vfFvM6VuX51re+lfIQ6OKr6drFvJU333wHvpSNAAAP60lEQVRzWnvttasuMe20T3ziE+nQQw/tOj8PLy/m4ez6QgKBWRAQiJwFREUQIECAAAECBAgQIECAQP0Fovfb4x73uHT//fdXViYWE3nGM56R8rDtdMcddxS99WJBltjKQGSeqzE9+9nPrjw/EqM34fOf//yUh8ymz33uc8XCMlWZozfatddeW/Tyi+8HCURGYCwWTInFdX74wx9WFduWFgGn6MUZC9zEAilVW/RejCBYufULpuW5DNN+++2Xtt9+++Kc0047LYVp1RYLvMQCOXmodhpGIDIWF4pefdGzNYKeVdvxxx/ftRhOLEQUC87E1q8tI4jaWm70WIyVuTu3WGimtO1n13le63G0UZw729s+++yTvv71r3cVGwvZvOc97+lKl0BgVgQGGL4tCwECBAgQIECAAAECBAgQGHuBN7/5zT3nzMsrPzcuu+yyLoMc6Gp88YtfbOSVnIvv3vKWt/QsI+bsa93uueeeRg5s9sz/7W9/u5m93xyROTjQOOWUU5p589DiRl7xuGe5kT8PXW5EvnKLhWQiveovD3cus/VdcCWvtNzMFx+uv/76vgvofP7zny/yD2uOyCg85l6sqlOknXvuucX1e/0nD62uPDesOre8YnnlPJIx72cO5BbZ+80RWd5jDoQ2tt5668Z6663XvPbZZ5/debkZH0fbVM0rmgPEzfud8UUUQKBCwGI1FSiSCBAgQIAAAQIECBAgQGDyBJ71rGc1gz9lYCj2EUyqCkJWCcUiJa3nlp8f+chHVi5Ck+fpq8wf5+Uee81L9AtExqIsndvixYt7lpt7LXZmb+QhxD3z//znP2/m7xdMi5WfO7ePf/zjPcvNczgW2Uc1EBkBwbL9WvfRxrlHZNdfHqZdmT9WKI+tn12UH4vV5B62Rd74Tywq9JjHPKZx3333NdNm68OrX/3qynvNPSFn6xLKIVApYGh2/tduI0CAAAECBAgQIECAAAECMQx56dKlXRCbbbZZMUy664uKhBjuHAvedG4xZ2FefbkzOd19991p7ty5XemR8LKXvSydccYZxXf9hmbfeuutKfegaysj5ibce++929LKg7wqeNpiiy3Kw2Ifi8dsu+22bWnlQe7pmHIPy+Kw3/DiHIjsqksME99xxx3Lotr2MZfmZz/72aEMzS4vFG0RbVK15R6RKYaz99rmzZtXDO/u9f2g6WeeeWZ66UtfWgyv7rXQz6qrrloM0485J4e95Z626YUvfGHXZWIho3gOYk5KG4FhCQhEDktWuQQIECBAgAABAgQIECBQK4GYH/CBBx7ouucFCxakX/3qV13pVQkxT2Lrqstlnp133rnnvI0x92TVtvvuuzdXUp5qIPKSSy5JT3/606uKTVWByN///vddwcny5JkEImOOxg033LAsqm3/ute9LuUh5T0DkTFfZ9xX5zbIqtnlOTMJRPZqy7LsQfcnnnhiOuyww/oGIg866KB08sknD1rktPPFnJ0xh2e5unhZUO6xmy699NJitfcyzZ7AMAQEIoehqkwCBAgQIECAAAECBAgQqJ1A9BKsCnzFSsoRuBlk1eKNNtqoWISls/K9gmrRm3H99dfvzF4cz6RH5KgEIiOAu80221TW79hjj015rsqegcgIjkUvyzyXYdv5b3/729P73//+trQ4WHfddbsCbP0Ckd/5znfSnnvu2VVOmbDxxhunPMdkedi27xU8bsv034NYnfqQQw7pG4j8zW9+k6JH4jC3f/3rX0Xv1F//+tddl4lV3vfff/+udAkEZl2gcsC2RAIECBAgQIAAAQIECBAgMGECeTXrynnz8ot4IwfNBtLot0hMDsp1lfGpT32q5zVj4Zty6zdHZA5mltma+1g4Ju676i/3iGzmKz/klbMr88b5rYvQ9JvnsGqOyJgHsuoeIi0W+Yntfe97X888V111VXmLxT732mvkYcyV+XMgsi1vHPRbrCavWt6VvzUhDymvvM4GG2wwrXkbp2rXei8z/RwLE/VakOhVr3rVTIt3PoGBBfSIzP/3sxEgQIAAAQIECBAgQIAAgRga+/rXv74nxMEHH5zywiopr6BdDL/+4x//mL7//e+n8847r5hD8eijj0458Fb08qsqJIZKRy+8ddZZp/g6esHFHIUxfLlqywvZpF133bX4qg5Ds3/84x+nnXbaqVmVK6+8sji+6667mmmtH/ICQMW8lHn17PSa17ym9avm57zSeProRz9aDJkPjwMOOKCnV1WPyGXLlhXzVuYoSbPM8sOWW25ZDH3fZJNNirkgY17NvLhOiiHj8RzkxYLSO97xjjJ72z4v9pKiF2G/npFXXHFF0d5lGVOdX7PtgjM8OOKII9LHPvaxylIOPPDAtPrqq3d9Fz2BwyCvpN31nQQC0xUQiJyunPMIECBAgAABAgQIECBAYKwE8urEKRamqVpsprWia621VrHIzP33399MjqG3J510UvrTn/6UNt1001QV+IrMMQy7XBTmwgsvTBEoq9oiOBaBzjLQVYdAZNRjt912K4KnYRgBxhhaXbXtsMMO6aKLLiq++sEPftAMuFblzStHF9633XZb1dfNtKpAZHwZc1T2CvbG9zH0u3Vezwh8RgA06hDXfvDBByNb1/bMZz6zCDxHXSJYd/PNN6frrrsuxZyaX/rSl1IEYmOL86MdV1QgMoaGH3rooV33P0jC7bffPtCUBIOUJQ+BEBCI9BwQIECAAAECBAgQIECAAIH/Cnzyk59Mb3jDG6bsUQYi48QjjzwynXDCCVMuo/WE6J231157NZPqEohs3vByPkTwcZdddily3XvvvSlWLL/zzjuXc1b/r3sFIhctWlT0XO1/9kPfloHISInejNErsN8WQcZegec4b0UGIs8+++wUK3X3Cqb2q1d8JxC5PCHfT1VAIHKqYvITIECAAAECBAgQIECAwNgKRM+4WCTmrLPOmlIdWwORsfJ2DKn+0Y9+NKUyysxve9vbuoJf4xSIfMlLXpK+9rWvldUt9jHkOs/Z2JY21YNegcjoebpw4cKBi2sNRMbzsMceexTD7wcuoCPjigpEXnDBBel5z3teuueeezruaPBDgcjBreQcUGDg2SRlJECAAAECBAgQIECAAAECEyCQh2g38px6jTxkt3Kxkvy63ZWeA5FtMrmXX+Ooo45q5N5yXXmrzo+0NdZYo3Haaae1lVMe1GGxml71KtPDIvcwbMTCKZ3bDTfc0MjDoJdrlXuJNo455pjKfDkQ2Vls8/iggw6qPKe8t9Z9DkQ2z4sPeQh+I6/U3chzJg5cRpQXz08OBDZyILIo73+5WM3FF1/cyPM+Tul+Ww3KzzkQ2WbhgMBMBfSIzP+6bAQIECBAgAABAgQIECBAoFMgr3KdYgGbGCadV6bu/Lo4jvkgd99992KBkwULFnTliTJycDF99atfLeYQ7MqQE7baaqu07777pv322y89+tGPrspSDC2OIcadWwwLjl5r8+bNa/tqyZIlabvttmtLKw9iHsO479bt+uuv70orvy8XlYnjfvMcHnfccSmvAp5uuumm8tRiH8Out99++8Ior0ze9l3rwbXXXpvySuEpFqW5++67m1/lVbJT2L785S9Phx9+eDHsPYa/d255Neu+c0HGMOXFixenvEJ411Dq8Iuh4vvss0/ac88902qrrdZZfIrFhaItzzjjjK46lplXWWWVtPXWW6e99947xYI2MT9lucVCRXnl6vKwuY9FYWIuzaprNjNN8UNe8TvlYOQUz2rPHs/WHXfckdZcc832LxwRmIGAQOQM8JxKgAABAgQIECBAgAABAuMvEMNzI7i2dOnSFAumRGBs7bXXTvPnzx94IY/ci6g4NxY0ueWWW1IErCJwFn91CvT0C0RGMC1WX77mmmuKoGss5hNB1tZg3CBPSwwlvvzyy4s5IyMwG2WsvPLKg5w6UJ4Icl599dVFe4Z/BGVjAaJBt2jLCP7GAjjRlrHl3qxFO26++eZpzpw5gxYlH4GJExCInLgmV2ECBAgQIECAAAECBAgQIDA9geUFIufOnTu9gp1FgMBECAhETkQzqyQBAgQIECBAgAABAgQIEJi5gEDkzA2VQGCSBQQiJ7n11Z0AAQIECBAgQIAAAQIECExBQCByCliyEiDQJSAQ2UUigQABAgQIECBAgAABAgQIEKgSEIisUpFGgMCgAgKRg0rJR4AAAQIECBAgQIAAAQIEJlxAIHLCHwDVJzBDAYHIGQI6nQABAgQIECBAgAABAgQITIqAQOSktLR6EhiOgEDkcFyVSoAAAQIECBAgQIAAAQIExk5gyZIl6bjjjuuq10orrZS+8pWvpDlz5nR9J4EAAQKlgEBkKWFPgAABAgQIECBAgAABAgQIECBAgMDQBAQih0arYAIECBAgQIAAAQIECBAgQIAAAQIESgGByFLCngABAgQIECBAgAABAgQIECBAgACBoQkIRA6NVsEECBAgQIAAAQIECBAgQIAAAQIECJQCApGlhD0BAgQIECBAgAABAgQIECBAgAABAkMTEIgcGq2CCRAgQIAAAQIECBAgQIAAAQIECBAoBQQiSwl7AgQIECBAgAABAgQIECBAgAABAgSGJiAQOTRaBRMgQIAAAQIECBAgQIAAAQIECBAgUAoIRJYS9gQIECBAgAABAgQIECBAgAABAgQIDE1AIHJotAomQIAAAQIECBAgQIAAAQIECBAgQKAUEIgsJewJECBAgAABAgQIECBAgAABAgQIEBiagEDk0GgVTIAAAQIECBAgQIAAAQIECBAgQIBAKSAQWUrYEyBAgAABAgQIECBAgAABAgQIECAwNAGByKHRKpgAAQIECBAgQIAAAQIECBAgQIAAgVJAILKUsCdAgAABAgQIECBAgAABAgQIECBAYGgCApFDo1UwAQIECBAgQIAAAQIECBAgQIAAAQKlgEBkKWFPgAABAgQIECBAgAABAgQIECBAgMDQBAQih0arYAIECBAgQIAAAQIECBAgQIAAAQIESgGByFLCngABAgQIECBAgAABAgQIECBAgACBoQkIRA6NVsEECBAgQIAAAQIECBAgQIAAAQIECJQCApGlhD0BAgQIECBAgAABAgQIECBAgAABAkMTEIgcGq2CCRAgQIAAAQIECBAgQIAAAQIECBAoBQQiSwl7AgQIECBAgAABAgQIECBAgAABAgSGJiAQOTRaBRMgQIAAAQIECBAgQIAAAQIECBAgUAoIRJYS9gQIECBAgAABAgQIECBAgAABAgQIDE1AIHJotAomQIAAAQIECBAgQIAAAQIECBAgQKAUEIgsJewJECBAgAABAgQIECBAgAABAgQIEBiagEDk0GgVTIAAAQIECBAgQIAAAQIECBAgQIBAKSAQWUrYEyBAgAABAgQIECBAgAABAgQIECAwNAGByKHRKpgAAQIECBAgQIAAAQIECBAgQIAAgVLg/wCh4qD1COXt5gAAAABJRU5ErkJggg=="
+    }
+   },
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Core Ideas:\n",
+    " - Network structure\n",
+    "     - Client / server\n",
+    "     - Request / response\n",
+    "  \n",
+    "    ![Client_server.png](attachment:Client_server.png)\n",
+    "    \n",
+    " - HTTP protocol\n",
+    "     - URL\n",
+    "     - Headers\n",
+    "     - Status Codes\n",
+    " - The requests module"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## HTTP Status Codes you need to know\n",
+    "- 200: success\n",
+    "- 404: not found\n",
+    "\n",
+    "Here is a list of all status codes, you do NOT need to memorize it: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## requests.get : Simple string example\n",
+    "- URL: https://cs220.cs.wisc.edu/hello.txt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "url = \"https://cs220.cs.wisc.edu/hello.txt\"\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Q: What if the web site does not exist?\n",
+    "typo_url = \"https://cs220.cs.wisc.edu/hello.txttttt\"\n",
+    " "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# We can check for a status_code error by using an assert\n",
+    "typo_url = \"https://cs220.cs.wisc.edu/hello.txttttt\"\n",
+    "r = requests.get(typo_url)\n",
+    " \n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Instead of using an assert, we often use raise_for_status()\n",
+    "r = requests.get(typo_url)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Let's try to catch that error\n",
+    "\n",
+    "try:\n",
+    "\n",
+    "except:\n",
+    "    print(\"oops!!\", e)\n",
+    "    "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# we often need to prepend the names of exceptions with the name of the module\n",
+    "# fix the error from above\n",
+    "\n",
+    "try:\n",
+    "\n",
+    "except:\n",
+    "    print(\"oops!!\", e)\n",
+    "    \n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## requests.get : JSON file example\n",
+    "- URL: https://cs220.cs.wisc.edu/scores.json\n",
+    "- `json.load` (FILE_OBJECT)\n",
+    "- `json.loads` (STRING)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# GETting a JSON file, the long way\n",
+    "url = \"https://cs220.cs.wisc.edu/scores.json\"\n",
+    "r = requests.get(url)\n",
+    "r.raise_for_status()\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# GETting a JSON file, the shortcut way\n",
+    "url = \"https://cs220.cs.wisc.edu/scores.json\"\n",
+    "#Shortcut to bypass using json.loads()\n",
+    "r = requests.get(url)\n",
+    "r.raise_for_status()\n",
+    " "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Good GET Etiquette\n",
+    "\n",
+    "Don't make a lot of requests to the same server all at once.\n",
+    " - Requests use up the server's time\n",
+    " - Major websites will often ban users who make too many requests\n",
+    " - You can break a server....similar to DDoS attacks (DON'T DO THIS)\n",
+    " \n",
+    "In CS220 we will usually give you a link to a copied file to avoid overloading the site.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Explore real-world JSON\n",
+    "\n",
+    "How to explore an unknown JSON?\n",
+    "- If you run into a `dict`, try `.keys()` method to look at the keys of the dictionary, then use lookup process to explore further\n",
+    "- If you run into a `list`, iterate over the list and print each item\n",
+    "\n",
+    "### Weather for UW-Madison campus\n",
+    "- URL: https://api.weather.gov/gridpoints/MKX/37,63/forecast"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# TODO: GET the forecast\n",
+    "\n",
+    "# TODO: explore the type of the data structure \n",
+    "\n",
+    "# display the data\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# TODO: display the keys of the weather_data dict\n",
+    "\n",
+    "# TODO: lookup the value corresponding to the 'properties'\n",
+    "\n",
+    "# TODO: you know what to do next ... explore type again\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# TODO: display the keys of the properties dict\n",
+    "\n",
+    "# TODO: lookup the value corresponding to the 'periods'\n",
+    "\n",
+    "# TODO: you know what to do next ... explore type again\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# TODO: extract periods list into a variable\n",
+    "\n",
+    "# TODO: create a DataFrame using periods_list\n",
+    "# TODO: What does each inner data structure represent in your DataFrame?\n",
+    "#       Keep in mind that outer data structure is a list."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### What is the maximum and minimum observed temperatures? Include the temperatureUnit in your display"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "min_temp = \n",
+    "idx_min = \n",
+    "min_unit = \n",
+    "\n",
+    "max_temp = \n",
+    "idx_max = \n",
+    "max_unit = \n",
+    "\n",
+    "print(\"Minimum observed temperature is: {} degree {}\".format(min_temp, min_unit))\n",
+    "print(\"Maximum observed temperature is: {} degree {}\".format(max_temp, max_unit))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Which days `detailedForecast` contains `sunny`?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sunny_days_df = \n",
+    "sunny_days_df"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Extract only the name column information for the subset DataFrame\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Which day's `detailedForecast` has the most lengthy description?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "idx_max_desc = \n",
+    "periods_df.iloc[idx_max_desc]['name']"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# What was that forecast?\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Write it out to a CSV file on your drive\n",
+    "You now have your own copy!"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Write it all out to a single CSV file\n",
+    "periods_df.to_csv(\"campus_weather.csv\", index=False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Other Cool APIs"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "- City of Madison Transit: http://transitdata.cityofmadison.com/\n",
+    "- Reddit: https://reddit.com/r/UWMadison.json\n",
+    "- Lord of the Rings: https://the-one-api.dev/\n",
+    "- Pokemon: https://pokeapi.co/\n",
+    "\n",
+    "Remember: Be judicious when making requests; don't overwhelm the server! :)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Next Time\n",
+    "What other documents can we get via the Web? HTML is very popular! We'll explore this."
+   ]
+  }
+ ],
+ "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.4"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template.ipynb b/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template_Gurmail_lec2.ipynb
similarity index 98%
rename from f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template.ipynb
rename to f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template_Gurmail_lec2.ipynb
index 85b3f9be167e8cc512873694c8df5797d83fe859..89fdd93bc13c9d3a05f21203a96983491d0960aa 100644
--- a/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template.ipynb
+++ b/f23/Gurmail_Lecture_Notes/29_Web-1/lec_29_web1_template_Gurmail_lec2.ipynb
@@ -1,5 +1,24 @@
 {
  "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Announcements - Wednesday, November 15\n",
+    "\n",
+    "* Download ALL files for today's lecture\n",
+    "* Q8 released tonight at 5:00 pm - due on Friday at 11:59 pm\n",
+    "* P10 due tonight at 11:59 pm\n",
+    "* <b>If you have any problem with P6 grades, please send me (Gurmail.Singh@wisc.edu) an email by November 15.</b>\n",
+    "* If you have questions, it is almost always faster to \n",
+    "  * Post on Piazza\n",
+    "  * Go to [office hours](https://sites.google.com/wisc.edu/cs220-oh-f23/home?pli=1) \n",
+    "* Exam2 results - you may get your grades by the evening\n",
+    "\n",
+    "### Conflict Form\n",
+    "  * [Final - December 19, 7:45 am](https://cs220.cs.wisc.edu/f23/surveys.html)"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -170,7 +189,21 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Warmup 7: Which shortest movies (below average runtime) have highest rating?"
+    "### Warmup 7: What is total revenue from all movies?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Warmup 8: Which shortest movies (below average runtime) have highest rating?"
    ]
   },
   {
@@ -241,10 +274,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "url = \"https://cs220.cs.wisc.edu/hello.txt\"\n",
-    "r = requests.get(url) # r is the response\n",
-    "print(r.status_code)\n",
-    "print(r.text)"
+    "url = \"https://cs220.cs.wisc.edu/hello.txt\"\n"
    ]
   },
   {
@@ -255,11 +285,7 @@
    "source": [
     "# Q: What if the web site does not exist?\n",
     "typo_url = \"https://cs220.cs.wisc.edu/hello.txttttt\"\n",
-    "r = requests.get(typo_url)\n",
-    "print(r.status_code)\n",
-    "print(r.text)\n",
-    "\n",
-    "# A: "
+    " "
    ]
   },
   {
@@ -271,9 +297,7 @@
     "# We can check for a status_code error by using an assert\n",
     "typo_url = \"https://cs220.cs.wisc.edu/hello.txttttt\"\n",
     "r = requests.get(typo_url)\n",
-    "assert r.status_code == 200\n",
-    "print(r.status_code)\n",
-    "print(r.text)\n"
+    " \n"
    ]
   },
   {
@@ -283,11 +307,7 @@
    "outputs": [],
    "source": [
     "# Instead of using an assert, we often use raise_for_status()\n",
-    "r = requests.get(typo_url)\n",
-    "r.raise_for_status() #similar to asserting r.status_code == 200\n",
-    "r.text\n",
-    "\n",
-    "# Note the error you get.... We will use this in the next cell"
+    "r = requests.get(typo_url)\n"
    ]
   },
   {
@@ -340,11 +360,7 @@
     "# GETting a JSON file, the long way\n",
     "url = \"https://cs220.cs.wisc.edu/scores.json\"\n",
     "r = requests.get(url)\n",
-    "r.raise_for_status()\n",
-    "urltext = r.text\n",
-    "print(urltext)\n",
-    "d = json.loads(urltext)\n",
-    "print(type(d), d)"
+    "r.raise_for_status()\n"
    ]
   },
   {
@@ -358,8 +374,7 @@
     "#Shortcut to bypass using json.loads()\n",
     "r = requests.get(url)\n",
     "r.raise_for_status()\n",
-    "d2 = r.json()\n",
-    "print(type(d2), d2)"
+    " "
    ]
   },
   {
@@ -471,7 +486,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "#### Which days `detailedForecast` contains `snow`?"
+    "#### Which days `detailedForecast` contains `sunny`?"
    ]
   },
   {
@@ -480,8 +495,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "snow_days_df = \n",
-    "snow_days_df"
+    "sunny_days_df = \n",
+    "sunny_days_df"
    ]
   },
   {
@@ -581,7 +596,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.12"
+   "version": "3.11.4"
   }
  },
  "nbformat": 4,