diff --git a/content/GA_2_3/CSIRO_Alt_seas_inc.txt b/content/GA_2_3/CSIRO_Alt_seas_inc.txt new file mode 100644 index 0000000000000000000000000000000000000000..9163035c7c484890620f3144d5748f5219d000e0 --- /dev/null +++ b/content/GA_2_3/CSIRO_Alt_seas_inc.txt @@ -0,0 +1,331 @@ +1993.042, -48.70 +1993.125, -52.40 +1993.208, -44.40 +1993.292, -50.40 +1993.375, -46.30 +1993.458, -51.50 +1993.542, -45.70 +1993.625, -44.90 +1993.708, -37.40 +1993.792, -38.50 +1993.875, -39.30 +1993.958, -40.40 +1994.042, -44.30 +1994.125, -49.00 +1994.208, -40.60 +1994.292, -44.10 +1994.375, -48.90 +1994.458, -49.30 +1994.542, -48.10 +1994.625, -41.70 +1994.708, -40.60 +1994.792, -35.00 +1994.875, -43.30 +1994.958, -39.40 +1995.042, -44.80 +1995.125, -42.70 +1995.208, -43.00 +1995.292, -40.60 +1995.375, -49.20 +1995.458, -44.00 +1995.542, -48.90 +1995.625, -38.10 +1995.708, -35.50 +1995.792, -30.80 +1995.875, -36.70 +1995.958, -34.20 +1996.042, -47.20 +1996.125, -37.10 +1996.208, -42.30 +1996.292, -38.40 +1996.375, -40.50 +1996.458, -37.80 +1996.542, -36.20 +1996.625, -33.30 +1996.708, -29.70 +1996.792, -18.80 +1996.875, -24.30 +1996.958, -36.00 +1997.042, -36.50 +1997.125, -39.80 +1997.208, -34.80 +1997.292, -38.20 +1997.375, -34.10 +1997.458, -37.00 +1997.542, -28.00 +1997.625, -27.70 +1997.708, -16.30 +1997.792, -21.60 +1997.875, -19.50 +1997.958, -31.00 +1998.042, -26.20 +1998.125, -29.80 +1998.208, -23.90 +1998.292, -27.70 +1998.375, -26.60 +1998.458, -32.30 +1998.542, -25.10 +1998.625, -25.50 +1998.708, -19.00 +1998.792, -16.70 +1998.875, -19.30 +1998.958, -22.10 +1999.042, -24.60 +1999.125, -24.40 +1999.208, -29.30 +1999.292, -28.50 +1999.375, -32.90 +1999.458, -31.20 +1999.542, -29.90 +1999.625, -22.40 +1999.708, -22.60 +1999.792, -10.30 +1999.875, -21.90 +1999.958, -14.80 +2000.042, -24.80 +2000.125, -20.50 +2000.208, -25.30 +2000.292, -23.50 +2000.375, -30.90 +2000.458, -25.00 +2000.542, -29.70 +2000.625, -18.90 +2000.708, -17.50 +2000.792, -8.10 +2000.875, -15.70 +2000.958, -17.80 +2001.042, -20.30 +2001.125, -21.00 +2001.208, -19.60 +2001.292, -20.50 +2001.375, -22.60 +2001.458, -22.90 +2001.542, -17.10 +2001.625, -17.60 +2001.708, -5.70 +2001.792, -10.50 +2001.875, -7.20 +2001.958, -16.90 +2002.042, -14.80 +2002.125, -16.80 +2002.208, -17.70 +2002.292, -18.70 +2002.375, -17.80 +2002.458, -20.70 +2002.542, -14.20 +2002.625, -8.50 +2002.708, -7.70 +2002.792, -2.30 +2002.875, -7.50 +2002.958, -10.40 +2003.042, -12.70 +2003.125, -12.10 +2003.208, -13.30 +2003.292, -14.70 +2003.375, -15.20 +2003.458, -18.50 +2003.542, -15.40 +2003.625, -11.70 +2003.708, -2.80 +2003.792, -2.80 +2003.875, -5.30 +2003.958, -8.40 +2004.042, -8.10 +2004.125, -12.20 +2004.208, -10.60 +2004.292, -11.90 +2004.375, -14.40 +2004.458, -15.10 +2004.542, -11.20 +2004.625, -9.10 +2004.708, -1.50 +2004.792, -3.10 +2004.875, -4.60 +2004.958, -4.30 +2005.042, -9.00 +2005.125, -8.20 +2005.208, -7.30 +2005.292, -10.10 +2005.375, -10.20 +2005.458, -9.90 +2005.542, -8.70 +2005.625, -4.80 +2005.708, 0.10 +2005.792, 2.70 +2005.875, 3.80 +2005.958, 1.10 +2006.042, -7.10 +2006.125, -5.70 +2006.208, -7.10 +2006.292, -7.30 +2006.375, -8.50 +2006.458, -7.70 +2006.542, -5.60 +2006.625, -2.10 +2006.708, 2.80 +2006.792, 5.80 +2006.875, 0.40 +2006.958, 0.10 +2007.042, -6.60 +2007.125, -6.30 +2007.208, -6.50 +2007.292, -2.60 +2007.375, -7.70 +2007.458, -8.30 +2007.542, -8.10 +2007.625, -3.00 +2007.708, 0.90 +2007.792, 4.20 +2007.875, 6.10 +2007.958, -0.70 +2008.042, -1.00 +2008.125, -5.40 +2008.208, -1.40 +2008.292, -3.60 +2008.375, 1.30 +2008.458, -1.90 +2008.542, -0.20 +2008.625, 2.20 +2008.708, 8.60 +2008.792, 10.10 +2008.875, 10.60 +2008.958, 6.00 +2009.042, 6.90 +2009.125, 3.90 +2009.208, 0.00 +2009.292, 3.80 +2009.375, 1.40 +2009.458, 2.80 +2009.542, 2.40 +2009.625, 4.70 +2009.708, 7.90 +2009.792, 14.30 +2009.875, 16.20 +2009.958, 15.30 +2010.042, 12.10 +2010.125, 5.30 +2010.208, 5.00 +2010.292, 4.90 +2010.375, 5.40 +2010.458, 5.90 +2010.542, 8.70 +2010.625, 8.10 +2010.708, 10.30 +2010.792, 10.90 +2010.875, 15.00 +2010.958, 11.70 +2011.042, 9.40 +2011.125, 4.80 +2011.208, 3.70 +2011.292, -0.00 +2011.375, 2.40 +2011.458, 0.90 +2011.542, 5.60 +2011.625, 4.60 +2011.708, 12.60 +2011.792, 13.50 +2011.875, 19.10 +2011.958, 15.10 +2012.042, 15.70 +2012.125, 16.70 +2012.208, 13.30 +2012.292, 12.50 +2012.375, 11.30 +2012.458, 12.40 +2012.542, 15.20 +2012.625, 19.60 +2012.708, 20.70 +2012.792, 25.30 +2012.875, 27.40 +2012.958, 27.40 +2013.042, 25.60 +2013.125, 23.10 +2013.208, 18.50 +2013.292, 21.00 +2013.375, 17.30 +2013.458, 17.90 +2013.542, 16.00 +2013.625, 20.10 +2013.708, 19.70 +2013.792, 25.20 +2013.875, 26.50 +2013.958, 28.30 +2014.042, 23.40 +2014.125, 21.90 +2014.208, 20.90 +2014.292, 21.60 +2014.375, 18.70 +2014.458, 18.30 +2014.542, 20.20 +2014.625, 23.50 +2014.708, 28.30 +2014.792, 29.70 +2014.875, 33.40 +2014.958, 29.20 +2015.042, 32.60 +2015.125, 27.40 +2015.208, 30.40 +2015.292, 27.60 +2015.375, 29.70 +2015.458, 26.60 +2015.542, 31.50 +2015.625, 32.40 +2015.708, 38.90 +2015.792, 42.40 +2015.875, 47.00 +2015.958, 43.50 +2016.042, 41.30 +2016.125, 37.80 +2016.208, 36.60 +2016.292, 35.80 +2016.375, 33.50 +2016.458, 35.20 +2016.542, 36.60 +2016.625, 36.60 +2016.708, 41.80 +2016.792, 43.20 +2016.875, 47.10 +2016.958, 41.90 +2017.042, 37.00 +2017.125, 32.70 +2017.208, 35.60 +2017.292, 36.90 +2017.375, 34.70 +2017.458, 34.70 +2017.542, 38.20 +2017.625, 42.60 +2017.708, 46.90 +2017.792, 47.70 +2017.875, 50.70 +2017.958, 46.40 +2018.042, 41.80 +2018.125, 38.90 +2018.208, 40.20 +2018.292, 36.00 +2018.375, 40.00 +2018.458, 38.20 +2018.542, 42.60 +2018.625, 44.00 +2018.708, 51.90 +2018.792, 54.00 +2018.875, 53.00 +2018.958, 48.40 +2019.042, 47.50 +2019.125, 45.70 +2019.208, 47.70 +2019.292, 45.40 +2019.375, 47.50 +2019.458, 46.90 +2019.542, 49.30 +2019.625, 54.40 +2019.708, 57.80 +2019.792, 59.30 +2019.875, 58.60 +2019.958, 56.20 +2020.042, 49.00 +2020.125, 51.10 +2020.208, 48.00 +2020.292, 49.70 +2020.375, 49.10 +2020.458, 50.30 +2020.542, 52.10 diff --git a/content/GA_2_3/P7.ipynb b/content/GA_2_3/P7.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..b3ec5ec1534654e8148c9a3573bb9ac9d20131fa --- /dev/null +++ b/content/GA_2_3/P7.ipynb @@ -0,0 +1,899 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Project 7: Signal Processing\n", + "\n", + "<h1 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\" style=\"width:100px\"\\>\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\" style=\"width:100px\"\\>\n", + "</h1>\n", + "<h2 style=\"height: 10px\">\n", + "</h2>\n", + "\n", + "*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/): week 2.3. Due: Friday December 1, 2023.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analyzing cantilever-beam accelerations and global Mean Sea-Level measurements\n", + "\n", + "This project covers the week on Signal Processing (week 2.3).\n", + "\n", + "As a warming up you will create and analyze some elementary signals yourself, and next, you will carry out frequency domain analyses on two given data-sets, namely acceleration measurements of a Cantilever-Beam experiment, and (in optional Task 10) Global Mean Sea-Level measurements.\n", + "\n", + "Most of the Tasks in this notebook consist of both coding, producing a plot, and answering (open) questions. Typically, as you work your way through the Tasks, you can often re-use code, or part of it, from earlier Tasks and assignments." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0491cc69" + }, + "source": [ + "<div style=\"background-color:#facb8e; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\"> <p>In many of the code blocks below, template code to create figures is provided. Note that there is a lot of code missing, and one line of <code>YOUR_CODE_HERE</code> does not imply that only one line of code is missing!</p></div>" + ] + }, + { + "attachments": { + "verticalcantileverbeam.png": { + "image/png": "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Bi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYuKwrpzAgGLisK6cwIBi4rCunMCAYu68871yOIGeEoz7tX/7riWj6Ftnwebfk82vJ5tOXzaMvnsU3LRebfAIt+pFUH3+/odQ/8sOan9eo/X2TVwfc7et0DP6yP6Vl9+I+XWXXw/Y5e98CP6tWntei9ZtXB9zt63QM/rNfpWS1Muebg+x297oEf1vyxsehprTr4fkeve+CHNT+tfuuJ58fGx6Knterg+x297oEf1fwNYNGXuVUH3+/odQ/8sPqt52nMHxuLntaqg+939LoHfljz01r0sbHq4Psdve6BH9b8sbHoaa06uN96rqvfep5Gv/U8jfljY9HTWnXw/Y5e98APa35aiz42Vh18v6PXPfDDmj82Fj2tVQf3W8+VzU/Lf7zMqoPvd/S6B35U/dbzNOaPjUVPa9XB9zt63QM/rKZ8GvPTWvQNYNXB9zt63QM/rH7reRb91vM0mvJpzB8bi57WqoPvd/S6B35Y89Pqt5548zeARU9r1cH3O3rdAz+q/mXl0+i3nqcxf2wselqrDr7f0ese+GHNT2vRx8aqg+939LoHfljzx8aip7Xq4H7rua5+63ka/dbzNOaPjUVPa9XB9zt63QM/rPlpLfrYWHXw/Y5e98APa/7YWPS0Vh3cbz3X1W89T6Pfep7G/LGx6GmtOvh+R6974Ic1P61FHxurDr7f0ese+GH5tJZ9A1h18P2OXvfAD2vVN4B1Xx/udnS/9Rzpt56H4u/QZU9r1cH3O3rdAz+u6ffowqe16uD7Hb3ugR/Y+MQWfwNYdfD9jl73wA/sfc03gFUH3+/odQ9ctaU/f/4PDvMXtjrnOloAAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Data Acquisition System\n", + "\n", + "A data acquisition (DAQ) system usually consists of four components:\n", + "\n", + "<img src=\"https://gitlab.com/JelleKnibbe/public-files/-/raw/main/SP_Practical/DAQ.png\" style=\"margin:auto\"/>\n", + "\n", + "<ol>\n", + " <li>A sensor transforms a physical signal into a small voltage. The transformation is often frequency dependent or nonlinear, and can show drift or bias.</li>\n", + " <li>Signal conditioning electronics (often included in the sensor housing) filter unwanted frequencies, such as the 50 Hz line frequency caused by power plant generators, using low-pass or notch filters. In addition the sensor voltage may be amplified.</li>\n", + " <li>An analog-to-digital (A/D) converter samples the analog voltage with a certain rate, such as 100 Hz. The A/D converter can measure analog voltages within a certain range, the measurement range. The measured voltage is quantized with a certain resolution, such as 14-bit, which means that the full measurement range is divided into $2^{14}=16,384$ discrete intervals. Together, the resolution and measurement range determine the precision. Usually the sample rate, the measurement range, and the sample resolution are configurable. Sampling and quantizing together turns an analog signal into a digital signal.</li>\n", + " <li>A digital computer reads the sampled data from the A/D converter at specific times, and allows for further processing, analysis and storage of the (digital) signal.</li>\n", + "</ol>\n", + "\n", + "The result is that an analog, physical signal, is turned into a series of numbers (samples of the signal, in the time domain), ready for processing and analysis in a digital computer.\n", + "\n", + "\n", + "\n", + "One of the data sets that you will analyze during this MUDE Q2 project was acquired by an accelerometer in a smartphone, on top of a vertical cantilever-beam. The accelerometer measures the side-ward accelerations, expressed in m/s<sup>2</sup>, and sampled at 50 Hz. Detailed information about the experiment and the sensor can be found in \"Experimental evaluation of smartphone accelerometer and low-cost dual frequency GNSS sensors for deformation monitoring\", by Alexandru Lapadat, Christian Tiberius and Peter Teunissen, Sensors 2021, 21, 7946, https://doi.org/10.3390/s21237946.\n", + "\n", + "A quick impression of the test setup can be gained by watching the short video [Cantilever Beam Experiment](https://youtu.be/o4moRwvlBLU?si=aKelBMWm3HB2Of26) (1 minute).\n", + "\n", + "A theoretical description of the motion of the smartphone accelerometer fixed to the cantilever beam is presented in Appendix A. Pulling the beam at the tip and releasing it, results in a (nearly) horizontal side-ward motion of the smartphone, and the (horizontal) position can be described by a *damped harmonic* as a function of time. Consequently, also the first and second derivative with respect to time, the velocity and acceleration as a function of time as the smartphone will measure it, are harmonics.\n", + "\n", + "### Basic sinusoid signal\n", + "\n", + "You will start with first creating (and analyzing) a few simple signals yourself. In the first few Tasks of this project, we will take the damping ratio zero and use a fairly short measurement time (duration), and hence the acceleration measured by the smartphone is a plain (undamped) sinusoid as shown in Appendix A (a stationary signal). In the following Tasks we also add a phase offset $\\varphi$ to the plain sinusoid:\n", + "\n", + "$$\n", + "x(t) = A \\sin(2 \\pi f_c t + \\varphi)\n", + "$$\n", + "\n", + "The result is taken from the last equation in Appendix A. We consider here acceleration, though for convenience, we omit the dots on top of the $x(t)$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 1:</b>\n", + "\n", + "- Create a time-array starting at $t=0$ s, ending at $t=5.0$ s, with a sampling rate of 100 Hz. Hint: what is the number of samples $N$? And what should then be the last value in the time-array? Note that, for example, with $N=10$ samples at a sampling rate of $f_s = 100$ Hz, we have signal samples at times $t=0.00, 0.01, 0.02, ... , 0.08, 0.09$ seconds, hence $T_{meas}= N \\Delta t =0.1$ seconds (the sample-and-hold convention).\n", + "- Create a sinusoidal signal $x(t) = A \\sin(2 \\pi f_c t + \\varphi)$, with amplitude $A=1.0$ Volt, carrier frequency $f_c=1.0$ Hz, and initial phase $\\varphi = 5$ degrees, to be converted into radians.\n", + "- Make a plot of the signal against time. Note that this is strictly a *sampled signal* $x_n$ rather than $x(t)$, but since we use a rather high sampling rate, the signal shown is close to continuous in time.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0491cc69" + }, + "source": [ + "<div style=\"background-color:#facb8e; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\"> <p>We will give you the answers in this code cell for free!</p></div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "T_meas = 5\n", + "f_s = 100 #sampling rate [Hz]\n", + "\n", + "t_vec = np.arange(0, T_meas, 1 / f_s) # ends at 4.99, length 500 according to the sample-and-hold convention\n", + "\n", + "A = 1 \n", + "f_c = 1 \n", + "phi = 5 * np.pi / 180\n", + "x = A * np.sin(2 * np.pi * f_c * t_vec + phi)\n", + "\n", + "plt.plot(t_vec, x, color='b', label='signal')\n", + "plt.xlabel('$t \\: [s]$')\n", + "plt.ylabel('$x(t) \\: [V]$')\n", + "plt.legend(loc='upper right')\n", + "plt.title(fr'Sinusoidal signal with $A$={A} V, $f_c$={f_c} Hz and initial phase $\\phi$={phi:.3f} °')\n", + "plt.grid()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Discrete Fourier Transform (chapter 5)\n", + "\n", + "To discover which frequencies are contained in the signal $x(t)$, we can transform it from the time domain to the frequency domain using the Fourier transform:\n", + "\n", + "$$\n", + "X(f) = \\int_{-\\infty}^{\\infty} x(t) e^{-j 2\\pi f t} dt\n", + "$$\n", + "\n", + "Which can then be expressed in terms of magnitude and phase:\n", + "\n", + "$$\n", + "X(f) = |X(f)|e^{j\\theta(f)}\n", + "$$\n", + "\n", + "Where $|X(f)|$ plotted against frequency $f$ is called the *magnitude spectrum* (and practically often referred to as amplitude spectrum).\n", + "\n", + "The set and number of sinusoids required to approximate or re-create a given signal $x(t)$ depends on the shape of that signal. Of course, when the signal is a pure sinusoid, we only need one term. For an example, consider a 2 Hz sinusoidal signal and its magnitude spectrum below:\n", + "\n", + "<img src=\"https://gitlab.com/JelleKnibbe/public-files/-/raw/main/SP_Practical/SignalSpectrumExample.png\" style=\"margin:auto\" width=800/>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can see a sharp spike in the magnitude plot (which has two logarithmic axes, and we only plot the spectrum for positive frequencies $f>0$). A continuous time sinusoid with amplitude $A$ will produce a magnitude of $\\frac{A T_{meas}}{2}$ in the amplitude spectrum (with $T_{meas}$ the *measurement time* or duration), rather than $\\frac{A}{2}$ which you would expect (in a double-sided spectrum). This is because of the limited time duration of the input signal, which actually implies multiplication of $x(t)$ by a *rectangular time window* $w(t)=\\Pi(\\frac{t}{T_{meas}})$. Since the sinusoid has an amplitude of $A=1$ V, and was measured for $T_{meas}=5$ seconds, the magnitude becomes 2.5. The magnitude at all other frequencies is very small, approximately $10^{-15}$, or approximately zero.\n", + "\n", + "The Fourier transform is a continuous-time operation, mapping the continuous time-domain to the continuous frequency domain. Usually, we don't have continuous-time signals, but discrete time signals $x_n$ sampled at a certain sampling rate. The discrete Fourier Transform (DFT) is the discrete-time equivalent of the continuous time-Fourier transform:\n", + "\n", + "$$\n", + "X_k = \\sum_{n=0}^{N-1}x_ne^{-j2\\pi kn/N}, k=0,1,...,N-1\n", + "$$\n", + "\n", + "Where $X_k$ is the sequence of frequency domain samples. NumPy contains a function to perform the DFT using a fast numerical algorithm, the Fast Fourier Transform:\n", + "\n", + "<code>X_discr = np.fft.fft(x)</code>\n", + "\n", + "For more information on the function see [here](https://numpy.org/doc/stable/reference/generated/numpy.fft.fft.html).\n", + "\n", + "The discrete-time signal $x_n$ and the frequency domain samples $X_k$ returned by Python are of equal length ($N$ samples in, $N$ samples out). When you compare the equations of the DFT with the continuous Fourier Transform, you will see that in the continuous equation we integrate over time $t$, while in the DFT *no information* about the time or sample rate is required (there is no $\\Delta t$, as noted at the end of Chapter 5). This results in a *scale factor* in the spectrum when the DFT of signals with different sample rates are compared. To solve this, we have to multiply the DFT as calculated by NumPy by the sample time interval $\\Delta t = 1/f_s$ to restore the time dimension and obtain a *discrete approximation of the continuous Fourier Transform*. To account for the measurement duration as described above, we have to divide by $T_{meas} = N \\Delta t$. So, in total, we have to divide the NumPy result by the number of samples $N$:\n", + "\n", + "<code>X_cont = np.fft.fft(x) / N</code>\n", + "\n", + "The DFT only contains information (the complex value of $X_k$) at discrete frequencies, known as the *analysis frequencies*, which are integer multiples of the frequency resolution $f_0$. If we have a sampled signal $x_n$ consisting of $N$ samples, sampled at $f_s$ Hz with $f_s=1/ \\Delta t$, the frequency resolution is:\n", + "\n", + "$$\n", + "f_0 = \\frac{1}{T_{meas}} = \\frac{1}{N \\Delta t} = \\frac{f_s}{N}\n", + "$$\n", + "\n", + "The first value of the complex vector $X_n$ returned by NumPy is the mean of the time-domain signal corresponding to $f=0$ Hz. So, the frequency vector corresponding to the discrete Fourier transform starts at zero and has $N$ elements, the analysis frequencies:\n", + "\n", + "<code>f_vec = np.arange(0, f_s, f_0)</code>\n", + "\n", + "With task 2 you visualize the entire output as you get it from the `np.fft.fft`, hence for frequencies $[0,f_s)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 2:</b> \n", + "\n", + "- Calculate the Fast Fourier Transform of the signal you generated in Task 1. Remember: the signal has 500 samples and thus does *not* end at exactly 5 second.\n", + "- Create the frequency vector $f$ with the analysis frequencies.\n", + "- Plot the modulus of the Fourier Transform against the frequency $f$ using a log scale on both axes. Use plot markers to see at which frequencies the Fourier transform was calculated.\n", + "\n", + "On top of that, answer to the following questions:\n", + "<ol>\n", + " <li>Describe the amplitude spectrum.</li>\n", + " <li>What is the magnitude of $X(f)$ at $f$ = 1 Hz?</li>\n", + " <li>Do you notice anything peculiar about the amplitude spectrum?</li>\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE\n", + "\n", + "# Write your own code or use the template below to create your figure(s)\n", + "\n", + "# f, axes = plt.subplots(1,1,figsize=(10,5))\n", + "\n", + "# axes[0].plot(YOUR_CODE_HERE, YOUR_CODE_HERE, 'x', color='b', label='Fourier transform')\n", + "# axes[0].loglog()\n", + "# axes[0].set_xlabel('$f \\: \\: [Hz]$')\n", + "# axes[0].set_ylabel('$|X(f)| \\: [V]$')\n", + "# axes[0].grid()\n", + "# axes[0].set_title('Log/Log')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Symmetry\n", + "\n", + "\n", + "Due to symmetry properties of the DFT, the following holds for a real signal $x(t)$:\n", + "\n", + "$$\n", + "|X_k| = |X_{-k}|\n", + "$$\n", + "\n", + "Which means that the modulus of the Fourier coefficients is symmetric about $f=0$. The NumPy <code>fft</code> command appends the Fourier coefficients for $k<0$ to the right side of the Fourier coefficients for $k \\ge 0$. This is called the *two-sided* spectrum.\n", + "\n", + "Since we are working with real signals, the symmetry property is valid, and we can just ignore the coefficients for $k<0$. This means that we consider the following range in the frequency domain:\n", + "\n", + "$[0, \\frac{f_s}{2}]$ for even values of $N$\n", + "\n", + "$[0, \\frac{f_s}{2})$ for odd values of $N$\n", + "\n", + "In other words, we are only considering frequencies up to half of $f_s$. This is easily implemented in Python using the floor division operator <code>//</code>:\n", + "\n", + "<code>X_cont = X_cont[:N//2]</code>\n", + "\\\n", + "<code>f_vec = f_vec[:N//2]</code>\n", + "\n", + "If you're unfamiliar with this, consider that <code>A//B</code> returns the number of times <code>B</code> 'fits into' <code>A</code>. In principle, this will always return an integer, so it can be easily used for indexing an array. In this specifc example, <code>N//2</code> will return $\\frac{N}{2}$ for even $N$ and $\\frac{N-1}{2}$ for odd N, which is exactly what we want. See the example below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "N = 100\n", + "print(f'{N} floor divided by 2: {N//2}')\n", + "print(f'{N+1} floor divided by 2: {(N+1)//2}')\n", + "print(f'{N-1} floor divided by 2: {(N-1)//2}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "\n", + "<p>\n", + "<b>Task 3:</b> \n", + "\n", + "- Repeat Task 2 with different measurement times $T_{meas}$ for the signal. Use measurement times such that the oscillation fits *exactly* 1 time, 5 times and 20 times.\n", + "- Plot the amplitude spectrum for all three measurement times, **only for positive frequencies**, in separate graphs (log-log scale) with the same domains and answer to the following questions:\n", + "<ol>\n", + " <li>What is the effect of changing $T_{meas}$ on the frequency range in the amplitude spectrum? Does the highest analysis frequency change?</li>\n", + " <li>Does the frequency resolution change?</li>\n", + " <li>Does the magnitude of at the peaks change?</li>\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE\n", + "\n", + "# Write your own code or use the template below to create your figure(s)\n", + "\n", + "plt.figure(figsize=(12,4))\n", + "for i, T_meas in enumerate(YOUR_CODE_HERE):\n", + " YOUR_CODE_HERE\n", + "\n", + " plt.subplot(1, 3, i+1)\n", + " \n", + " YOUR_CODE_HERE\n", + " \n", + " plt.grid()\n", + " plt.tight_layout()\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Aliasing (chapter 4)\n", + "\n", + "So far we have been analyzing a signal with a fairly low frequency, just $1$ or $2$ Hz. Now suppose, due to some unexpected source, our signal contains a second sinusoid with a much higher frequency. This is often caused by the line frequency ($50$ Hz) due to power plant generators providing the $220$ V current in regular buildings, or by electrical interference. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "\n", + "<p>\n", + "<b>Task 4:</b> \n", + "\n", + "- Create a time-array starting $t=0$, with a sampling rate of 100 Hz, and ending such that a sinusoid with a frequency of 1 Hz fits exactly 5 times in the measurement time.\n", + "\n", + "- Re-create the signal $x(t) = A \\sin(2 \\pi f_c t + \\varphi)$ from the first Task, with amplitude $A=1.0$ V, carrier frequency $f_c=1.0$ Hz, and initial phase $\\varphi = 5$ degrees, to be converted into radians.\n", + "\n", + "- Add to this signal a second sinusoid with a frequency of $80$ Hz and amplitude of $0.1$ V (and zero initial phase).\n", + "\n", + "- Create a plot of the signal against time, and of the amplitude spectrum as in the previous Tasks. \n", + "\n", + "Then answer to the following questions:\n", + "<ol>\n", + " <li>What do you see in the frequency plot? Are there peaks? How many? Where?</li>\n", + " <li>Does this match what you see in the time plot?</li>\n", + " <li>Does changing the measurement time (duration) help?</li>\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE\n", + "\n", + "# Write your own code or use the template below to create your figure(s)\n", + "\n", + "# plt.figure(figsize=(12,6))\n", + "# plt.subplot(211)\n", + "# YOUR_CODE_HERE\n", + "# plt.grid()\n", + "# plt.title('Time signal')\n", + "# plt.legend()\n", + "\n", + "# plt.subplot(212)\n", + "# YOUR_CODE_HERE\n", + "# plt.loglog()\n", + "# YOUR_CODE_HERE\n", + "# plt.grid()\n", + "# plt.tight_layout()\n", + "# plt.title('Amplitude spectrum')\n", + "# plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The effect seen in Task 4 is called *aliasing*, and the cause is that if your sample rate is too low for the signals you're measuring, you will not capture their oscillation period sufficiently - with at least two samples per cycle. Instead, the signal will appear at a much lower frequency, as you can see in the figure below. Here $f_c = 5$ Hz, and the signal was sampled with $f_c = 7$ Hz, and based on the discrete time samples we incorrectly conclude that there is a frequency component at $2$ Hz (at the end of Chapter 4).\n", + "\n", + "<img src=\"https://gitlab.com/JelleKnibbe/public-files/-/raw/main/SP_Practical/NewSlide38.png\" style=\"margin:auto\" width=800/>\n", + "<img src=\"https://gitlab.com/JelleKnibbe/public-files/-/raw/main/SP_Practical/NewSlide51.png\" style=\"margin:auto\" width=800/>\n", + "\n", + "So, how fast do we need to sample to capture an $80$ Hz signal?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 5:</b> \n", + "\n", + "Repeat Task 4 with different sample rates: $110, 150, 160,$ and $200$ Hz. Plot the signal and amplitude spectrum for each one (you might want to use a loop). \n", + "\n", + "Then answer the following questions:\n", + "<ol>\n", + " <li>At what frequency does the (aliased) 80 Hz signal appear in the spectrum, for the above values of $f_s$?</li>\n", + " <li>Can you figure out the relationship between the sample rate and the frequency of the aliased signal?</li>\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE\n", + "\n", + "# Write your own code or use the template below to create your figure(s)\n", + "\n", + "# for YOUR_CODE_HERE:\n", + " \n", + "# YOUR_CODE_HERE\n", + " \n", + "# plt.figure(figsize=(12,6))\n", + "# plt.suptitle(f'$f_s = {YOUR_CODE_HERE}$ Hz')\n", + "# plt.subplot(211)\n", + "# YOUR_CODE_HERE\n", + "# plt.grid()\n", + "# plt.legend()\n", + " \n", + "# plt.subplot(212)\n", + "# YOUR_CODE_HERE\n", + "# plt.loglog()\n", + "# plt.grid()\n", + "# plt.tight_layout()\n", + "# plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you probably figured out, the sample rate needs to be faster than twice the largest frequency in the signal. In other words, you can measure signals with a frequency up to half the sample rate without aliasing becoming a problem. The frequency above which aliasing occurs (half the sampling rate) is called the *Nyquist frequency* (Chapter 4)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Damped vibrations\n", + "\n", + "We now know how to create an amplitude/magnitude spectrum. We've seen that we get aliasing if our signal has components at frequencies higher than the *Nyquist frequency* (and leakage if the measurement time is too short). Now, let's consider the damped vibration aceleration signal that an accelerometer would measure (see *Appendix A*). In this case the damping ratio is not equal to zero, unlike in Tasks 1 to 5." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 6:</b> \n", + "\n", + "- Create a time-array starting at $t=0$ s, ending at $t = 50$ s, with a sampling rate of $100$ Hz.\n", + "- Create a damped harmonic acceleration signal $x(t) = \\frac{x(0)}{\\sqrt{1-\\zeta^2}} e^{-\\zeta \\omega_0 t} \\sin(\\omega_d t)$ with $\\zeta = 0.05$, $\\omega_0 = 10 \\pi$ rad/s (corresponding to $5$ Hz), $\\omega_d = \\omega_0 \\sqrt{1-\\zeta^2} = 9.987 \\pi$ rad/s, and initial displacement $x(0)=1$ (for convenience the initial phase of the signal is kept to zero).\n", + "- Create a plot of the signal against time, and of the amplitude spectrum as in the previous Tasks.\n", + "\n", + "Then answer the following questions:\n", + "<ol>\n", + " <li>Do you see any changes in the time plot, compared to the earlier plot? Describe them!</li>\n", + " <li>What is the dominant frequency of the signal now?</li>\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE\n", + "\n", + "# # Write your own code or use the template below to create your figure(s)\n", + "\n", + "# plt.figure(figsize=(12,6))\n", + "# plt.subplot(211)\n", + "# YOUR_CODE_HERE\n", + "# plt.grid()\n", + "# plt.legend()\n", + "\n", + "# plt.subplot(212)\n", + "# YOUR_CODE_HERE\n", + "# plt.loglog()\n", + "# YOUR_CODE_HERE\n", + "# plt.grid()\n", + "# plt.tight_layout()\n", + "# plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cantilever-beam acceleration measurements\n", + "\n", + "Now you're ready to start analyzing the cantilever-beam acceleration measurements.\n", + "\n", + "Read in the data-file: *cantileverbeam_acc50Hz.csv*.\n", + "\n", + "This dataset contains 5 minutes of measurements with a sampling rate of $50$ Hz (a total of $N=15001$ samples). The first column in the file contains the UTC time of day (in seconds), the second column contains the measured acceleration (in m/s<sup>2</sup>)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Detrending\n", + "\n", + "In this project the signal of interest is the damped, harmonic motion of the cantilever-beam. In addition the measurements may contain (unwanted) effects of the sensor (think of an offset, due to imperfect manufacturing and/or prior calibration, or a drift over time, for instance due to temperature changes in the electronics during the experiment). By detrending we mean to remove such effects, prior to our spectral analysis, so that we can start with a nice, zero mean signal.\n", + "\n", + "There are built-in functions in Python to remove such an offset and/or trend (and you're free to use them). But, earlier in the MUDE, in week 1.3, you learned about least-squares parameter estimation, and that's what you can apply to do the detrending (and actually built-in functions just apply the very same principle). Next week, on Time Series Analysis, you will actually be covering (again) the estimation of a trend in a time series of measurements.\n", + "As a re-cap for week 1.3: when a series of observations $y_1, …, y_m$ (in our case with $m=N$) is supposed or expected to exhibit a functional linear trend (a straight line in terms of a graph), this can be modelled as\n", + "\n", + "$$\n", + "\\mathbb{E} = \\begin{pmatrix} \\begin{bmatrix} Y_{1} \\\\ Y_{2} \\\\ \\vdots \\\\ Y_{m} \\end{bmatrix} \\end{pmatrix} \n", + " = \n", + " \\begin{bmatrix} 1 & t_1 - t_1 \\\\ 1 & t_2 - t_1 \\\\ \\vdots & \\vdots \\\\ 1 & t_m - t_1 \\end{bmatrix} \n", + " \\begin{pmatrix} x_{1} \\\\ x_{2} \\end{pmatrix}\n", + "$$\n", + "\n", + "with $x_1$ the offset at time $t_1$ (rather than $t=0$), and $x_2$ the slope of the line. The two unknown parameters in this vector $x$ can be estimated through (unweighted) least-squares, $\\hat{x}=(A^T A)^{-1} A^T y$, and next the residuals are obtained as $\\hat{\\epsilon}=y-\\hat{y}=y-A\\hat{x}$. The residuals are the 'left-over part' of the observations, once the (estimated) trend has been taken out; these residuals are of interest for further spectral analysis!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 7:</b> \n", + "\n", + "- For the cantilever-beam acceleration measurements, perform a least-squares estimation according to the above model, and report the estimated offset and slope of the trend.\n", + "- The detrended acceleration measurements, hence the elements of vector $\\hat{\\epsilon}$ are the input to your spectral analysis, so from here on, we denote them by $x(t)$ (in continuous time), and by $x_n$ (in discrete time) with $n=0,…,N-1$.\n", + "- Make a plot of the input signal as a function of time, hence of the detrended accelerations.\n", + "\n", + "Report the estimated offset and slope of the trend (i.e. numerical values).\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('cantileverbeam_acc50Hz.csv', header=0)\n", + "\n", + "t = np.array(df['time']) #\n", + "dat = np.array(df['acceleration']) #\n", + "\n", + "N = len(t)\n", + "\n", + "# observation record length (as N*dt, according to sample-and-hold convention)\n", + "T = (t[N-1] - t[0])*N/(N - 1)\n", + "dt = T/N\n", + "plt.figure()\n", + "plt.plot(t, dat, color='b', label='acceleration signal')\n", + "plt.xlabel('time [s]')\n", + "plt.ylabel('acceleration [m/s2]')\n", + "plt.title('Vertical cantilever beam acceleration')\n", + "plt.legend()\n", + "\n", + "YOUR_CODE_HERE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 8:</b> \n", + "\n", + "Previously, in Task 3, you computed and plotted the magnitude spectrum $|X_k|$ of a signal for positive frequencies $f>0$ (putting a lot of attention to correctly labelling the horizontal frequency axis of the plot!), and now, with the material of Chapter 6 on spectral estimation, you will estimate the power spectral density $S$ of the signal through the periodogram, which is just: $S(k\\Delta f)=\\frac{|X_k|^2}{T}$ (in [W/Hz] when $x_n$ is a voltage signal; and $|X_k|$ being the result straight from the <code>np.fft</code>, multiplied by sampling interval $\\Delta t$), for frequency $k\\Delta f$, with frequency resolution $\\Delta f=\\frac{1}{T}$, and $k=0,…,N-1$ (hence, pretty much the same procedure as with the magnitude spectrum, though just taking the square of the modulus, and dividing by $T$).\n", + "\n", + "Compute and plot the periodogram (if you prefer, feel free to use a linear scaling of the axes here, rather a log-log). Please, pay attention to correctly labelling the axes, and stating dimensions of the quantities along the axes!\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 9:</b> \n", + "\n", + "Answer the following questions:\n", + "<ol>\n", + " <li>Report the damped natural frequency (in Hertz) of this one-degree-of-freedom (1DOF) mechanical system. Does it match the motion of the beam shown in the cantilever-beam video?</li>\n", + " <li>The acceleration was measured at quite a high sample rate of $50$ Hz. What is the minimum sampling frequency to correctly identify the damped natural frequency in the periodogram?</li>\n", + "</ol>\n", + "<p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Task 10: Global Mean Sea-Level (GMSL) data (optional)\n", + "\n", + "Repeat the steps with Tasks 7-9, but now with the Global Mean Sea Level data set. Data is from the Australia's National Science Agency (CSIRO): [GMSL data](https://www.cmar.csiro.au/sealevel/sl_hist_last_decades.html). \n", + "\n", + "These data result from nearly 3 decades of satellite altimetry (with satellite missions such as TOPEX/Poseidon and the Jason-series). The first column contains the time tag or epoch (in decimal years), the second column is the global mean sea level (in mm). There is one measurement per month (monthly average, so that for instance tide-effects are averaged out, and the measurement typically refers to the middle of the month, hence 1993.042 is mid January in 1993). The single monthly measurement is the global mean sea level, so, the average of the entire world.\n", + "\n", + "The sampling frequency $f_s = 12$ per year ($\\Delta t = 1/12 \\sim 0.083$ year), and there are $N=331$ measurements in total." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_csv('CSIRO_Alt_seas_inc.txt', names=['month', 'sl'])\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# create time-array, time relative to t0 [yr] (epoch-time of the first observation;\n", + "# t0=1993.042 refers to mid January 1993)\n", + "t = data.iloc[:, 0] - data.iloc[0, 0]\n", + "\n", + "# number of observations\n", + "N = len(t)\n", + "\n", + "# observation record length (as N * dt, according to sample-and-hold convention)\n", + "T = (t[N - 1] - t[0]) * N / (N - 1)\n", + "\n", + "# Delta t [yr]; dt = T/N = (N*dt)/N\n", + "dt = T / N\n", + "\n", + "# observed sea-level height\n", + "y = data.iloc[:,1]\n", + "\n", + "# plot observed time-series, as it is, versus epoch-time in [year]\n", + "plt.plot(data.iloc[:,0],y, color='b', label='sea level')\n", + "plt.xlabel('time [yr]')\n", + "plt.ylabel('sea-level height [mm]')\n", + "plt.title('Global Mean Sea-Level (GMSL) rise')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>Task 10 (Optional!):</b> \n", + "\n", + "Detrend the data. \n", + "\n", + "Estimate and plot power spectral density (PSD), hence the periodogram, for the (detrended) global mean sea-level data. \n", + "\n", + "Identify the largest peak in the spectrum, what is the frequency, and can you come up with a physical explanation of this behaviour?\n", + "</ol>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%;\">\n", + "<p>\n", + "<b>End of task.</b>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**You may write your answer in this Markdown cell, but remember that it needs to be included in your `Report.md`.** " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<div style=\"background-color:#C8FFFF; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Appendix A: Cantilever-beam dynamics:</b> \n", + "\n", + "The dynamics of the smartphone suspended on a cantilever beam can be considered as the mass-spring-damper system shown below:\n", + "\n", + "<img src=\"https://gitlab.com/JelleKnibbe/public-files/-/raw/main/SP_Practical/mass_spring_damper.png\" style=\"margin:auto\" width=200/>\n", + "\n", + "The equation of motion of the deflection $x$ of this mass-spring-damper system (a damped harmonic oscillator) can be described by the following second order differential equation:\n", + "\n", + "$$\n", + "\\ddot{x}(t) + \\frac{c}{m} \\dot{x}(t) + \\frac{k}{m} x(t) =0\n", + "$$\n", + "\n", + "Where $\\ddot{x}(t)$, $\\dot{x}(t)$ and $x(t)$ are the acceleration, velocity and displacement as a function of time of the oscillating mass $m$ [kg] respectively. (with a unit transfer function, $x(t)$ describes the motion of the proof mass inside the smartphone accelerometer). For simplicity, we consider here the homogeneous equation, corresponding to free motion. The other parameters are the damping coefficient $c$ [kg/s] and spring constant $k$ [N/m]. The damping ratio can be obtained from the system parameters: $\\zeta = \\frac{c}{2 \\sqrt{mk}}$, which is dimensionless. The undamped natural frequency is $\\omega_0 = \\sqrt{\\frac{k}{m}}$ [rad/s]. The differential equation becomes:\n", + "\n", + "$$\n", + "\\ddot{x}(t) + 2 \\zeta \\omega_0 \\dot{x}(t) + \\omega_0^2 x(t) =0\n", + "$$\n", + "\n", + "For the under-damped case ($0 \\le \\zeta \\le 1)$ of our smartphone and assuming an initial zero tip velocity $\\dot{x}(t=0)=0$ (release from stand-still), the solution for the position as a function of time is given by:\n", + "\n", + "$$\n", + "x(t)=e^{-\\zeta \\omega_0 t} \\frac{x(0)}{\\sqrt{1-\\zeta^2}}\\sin(\\omega_d t + \\varphi)\n", + "$$\n", + "\n", + "Where $x(0)$ is the initial position $x(t=0)$, $\\omega_d$ is the damped natural frequency $\\omega_d = \\omega_0 \\sqrt{1-\\zeta^2}$, and the phase shift $\\varphi = \\arctan \\left( \\frac{\\sqrt{1-\\zeta^2}}{\\zeta} \\right)$. The sinusoid term represents the harmonic motion, and the exponential term represents the damping of that motion over time. Next, the velocity of the smartphone's oscillation can be derived as:\n", + "\n", + "$\\dot{x}(t) = e^{-\\zeta \\omega_0 t} \\frac{x(0)}{\\sqrt{1-\\zeta^2}}\\sin(\\omega_d t)$.\n", + "\n", + "The acceleration of the smartphone (which is what is being measured) is found as:\n", + "\n", + "$\\ddot{x}(t) = e^{-\\zeta \\omega_0 t} \\frac{x(0)}{\\sqrt{1-\\zeta^2}} \\sin (\\omega_d t - \\phi)$.\n", + "\n", + "Note that $\\omega_0$ and $\\omega_d$ are the angular frequencies expressed in radians per second. $\\ddot{x}(t)$ is a damped harmonic signal where the rate of damping is determined by the damping ratio $\\zeta$.\n", + "\n", + "In order to get a pure harmonic signal (as used in Tasks 1 to 5), set the damping ratio $\\zeta=0$, and optionally set the phase-shift $\\phi$ to zero as well, then the tip acceleration is given by the following simple sinusoidal expression:\n", + "\n", + "$$\n", + "\\ddot{x}(t)=x(0) \\sin(\\omega_0 t).\n", + "$$\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**End of notebook.**\n", + "<h2 style=\"height: 60px\">\n", + "</h2>\n", + "<h3 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">\n", + " <img alt=\"Creative Commons License\" style=\"border-width:; width:88px; height:auto; padding-top:10px\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" />\n", + " </a>\n", + " <a rel=\"TU Delft\" href=\"https://www.tudelft.nl/en/ceg\">\n", + " <img alt=\"TU Delft\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\"/>\n", + " </a>\n", + " <a rel=\"MUDE\" href=\"http://mude.citg.tudelft.nl/\">\n", + " <img alt=\"MUDE\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\"/>\n", + " </a>\n", + " \n", + "</h3>\n", + "<span style=\"font-size: 75%\">\n", + "© Copyright 2023 <a rel=\"MUDE Team\" href=\"https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595\">MUDE Teaching Team</a> TU Delft. This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>." + ] + } + ], + "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" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/content/GA_2_3/P7_solution.pdf b/content/GA_2_3/P7_solution.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d282036b53b58b10f4f11017c293f0e7cded846f Binary files /dev/null and b/content/GA_2_3/P7_solution.pdf differ diff --git a/content/GA_2_3/README.md b/content/GA_2_3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a563f132b4193780027514ffa76a015fce7013dc --- /dev/null +++ b/content/GA_2_3/README.md @@ -0,0 +1,48 @@ +# Project 7: Signal Processing + +*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/).* + + +## Project 7 Info + +The focus of this assignment is on signal processing, and specifically on spectral analysis (i.e. analysis of signals in the frequency domain). + +**Your primary objective is to complete all tasks in the notebook `P7.ipynb` and summarize your answers in `Report.md`.** + +### Overview of material + +- this `README.md` with instructions +- `Report.md`, primary notebook in which you are supposed to copy your plots and include your answers to the questions (typically a short, one-line answer each time; though a simple 'yes' or 'no' is not sufficient, please include a short reasoning, justification or argumentation). +- `P7.ipynb`, the secondary Jupyter notebook with description and tasks, to be used for actual coding +- `cantileverbeam_acc50Hz.csv`, data file with acceleration measurements from the cantilever beam (tasks 7-9) +- `CSIRO_Alt_seas_inc.txt`, data file with Global Mean Sea Level measurements (task 10; optional) +- [Cantilever Beam Experiment Video](https://youtu.be/o4moRwvlBLU?si=aKelBMWm3HB2Of26): a short supplementary one minute movie illustrating the cantilever-beam experiment. + +We will use `pandas` to import the dataset, so make sure this is included in your `mude` environment before starting Jupyter Lab. + +## Grading + +This project will be graded with the following weights for each assessment category: + +* 0.40 for **Interpretation** and 0.40 for **Application** +* 0.10 for **Documentation** and 0.10 for **Programming**. + +All 10 tasks are weighted equally (1 point each) and the maximum grade is 10 (points). Task 10 is optional; each group will receive 1 point by default for this one. + +### Submission and deadline + +- Submit your answers, together with any relevant plots, in the Markdown file `Report.md`. This is the primary document that will be used to determine your grade; however, the auxiliary files (e.g., `*.ipynb` or `*.py` files) may be checked in case something is not clear. +- The deadline is to submit your work by making commits to your Group's GitLab repository by Friday at 12:30h. + +### Repository, Formatting and Static Check + +There is no static check for this project. Be sure to leave the outputs from your code cells in your `*.ipynb` file so that they are readable. + +You are always expected to provide well-formatted figures and Markdown text in your `Report.md` file, as well as logically organize any auxiliary files you may use (e.g., try to put your figures in a sub-directory, if there are a lot of them). If you run out of time it is OK if your `*ipynb` files do not run. + +**Importing figures into a Markdown file:** in Project 5 and 6 we noticed a lot of figures not rendering properly in the Markdown file (i.e., broken image links); this was typically due to spaces in the file name. To avoid rendering issues in your Markdown reports, we recommend *not* including spaces in the filename as a general rule (e.g., `my_image.png` instead of `my image.png`). If you need to include an image in Markdown with a space in it, replace the space with `%20`. For example, to show file `my image.png` you should use: `` + +**End of file.** + +<span style="font-size: 75%"> +© Copyright 2023 <a rel="MUDE Team" href="https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595">MUDE Teaching Team</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0 License</a>. diff --git a/content/GA_2_3/Report.md b/content/GA_2_3/Report.md new file mode 100644 index 0000000000000000000000000000000000000000..ce5b335d10de24a62535c595798f8b9500d8e52c --- /dev/null +++ b/content/GA_2_3/Report.md @@ -0,0 +1,70 @@ +# Project 7 Report: Signal Processing + +*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/).* + +**YOUR GROUP NAME HERE** + + +## Primary Task + +**Complete the notebook `P7.ipynb`, copy the plots and write your answers to the questions below.** Typically a short, one-line answer is sufficient; though a simple 'yes' or 'no' is _not_ sufficient, please include a short reasoning, justification or argumentation. + +_You will be graded on the plots and answers provided in this file. You can delete the instructions and any other unnecessary text prior to submission._ + +## Report Instructions + +Remember to use Markdown features to clearly indicate your answers for each question below. + +**Importing figures into a Markdown file:** in Project 5 and 6 we noticed a lot of figures not rendering properly in the Markdown file (i.e., broken image links); this was typically due to spaces in the file name. To avoid rendering issues in your Markdown reports, we recommend *not* including spaces in the filename as a general rule (e.g., `my_image.png` instead of `my image.png`). If you need to include an image in Markdown with a space in it, replace the space with `%20`. For example, to show file `my image.png` you should use: `` + +## Answers to Questions + +### Task 1 + +_Your answer here._ + +### Task 2 + +_Your answer here._ + +### Task 3 + +_Your answer here._ + +### Task 4 + +_Your answer here._ + +### Task 5 + +_Your answer here._ + +### Task 6 + +_Your answer here._ + +### Task 7 + +_Your answer here._ + +### Task 8 + +_Your answer here._ + +### Task 9 + +_Your answer here._ + +### Task 10 (optional) + +_Your answer here._ + + +## General Comments on the Assignment [optional] + +_Use this space to let us know if you encountered any issues completing this assignment (but please keep it short!). For example, if you encountered an error that could not be fixed in your Python code, or perhaps there was a problem submitting something via GitLab. You can also let us know if the instructions were unclear. You can delete this section if you don't use it._ + +**End of file.** + +<span style="font-size: 75%"> +© Copyright 2023 <a rel="MUDE Team" href="https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595">MUDE Teaching Team</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0 License</a>. diff --git a/content/GA_2_3/cantileverbeam_acc50Hz.csv b/content/GA_2_3/cantileverbeam_acc50Hz.csv new file mode 100644 index 0000000000000000000000000000000000000000..771c7fd6a28f4e69e63bfa67631ad18bc5a0ea29 --- /dev/null +++ b/content/GA_2_3/cantileverbeam_acc50Hz.csv @@ -0,0 +1,15002 @@ +time,acceleration +66720.001,-0.447958 +66720.021,-0.452749 +66720.041,-0.45754 +66720.061,-0.452749 +66720.081,-0.464727 +66720.101,-0.462331 +66720.121,-0.452749 +66720.141,-0.450354 +66720.161,-0.445563 +66720.181,-0.447958 +66720.201,-0.435981 +66720.221,-0.440772 +66720.241,-0.445563 +66720.261,-0.443167 +66720.281,-0.443167 +66720.301,-0.443167 +66720.321,-0.459936 +66720.341,-0.464727 +66720.361,-0.45754 +66720.381,-0.443167 +66720.401,-0.440772 +66720.421,-0.447958 +66720.441,-0.452747151 +66720.461,-0.440772 +66720.481,-0.447958 +66720.501,-0.443167 +66720.521,-0.445563 +66720.541,-0.443167 +66720.561,-0.445563 +66720.581,-0.440772 +66720.601,-0.452749 +66720.621,-0.450354 +66720.641,-0.450354 +66720.661,-0.452749 +66720.681,-0.447958 +66720.701,-0.459936 +66720.721,-0.459936 +66720.741,-0.445563 +66720.761,-0.447958 +66720.781,-0.447958 +66720.801,-0.455145 +66720.821,-0.447958 +66720.841,-0.452749 +66720.861,-0.455145 +66720.881,-0.455145 +66720.901,-0.447958 +66720.921,-0.450354 +66720.941,-0.445563 +66720.961,-0.424003 +66720.981,-0.450354 +66721.001,-0.455145 +66721.021,-0.440772 +66721.041,-0.440772 +66721.061,-0.440772 +66721.081,-0.43119 +66721.101,-0.428794 +66721.121,-0.447958 +66721.141,-0.445563 +66721.161,-0.455145 +66721.181,-0.455145 +66721.201,-0.453225557 +66721.221,-0.439151703 +66721.241,-0.445020411 +66721.261,-0.462543715 +66721.281,-0.446584413 +66721.30099,-0.452484896 +66721.321,-0.445563 +66721.341,-0.446217787 +66721.361,-0.462785037 +66721.381,-0.45947879 +66721.401,-0.449879849 +66721.421,-0.445797695 +66721.441,-0.452730453 +66721.461,-0.44807021 +66721.481,-0.457933162 +66721.501,-0.457221177 +66721.521,-0.452877744 +66721.541,-0.451866235 +66721.561,-0.425658378 +66721.581,-0.432032266 +66721.601,-0.44587773 +66721.621,-0.442737795 +66721.641,-0.433137994 +66721.661,-0.428891811 +66721.681,-0.433710829 +66721.701,-0.433667488 +66721.721,-0.435901389 +66721.741,-0.4310143 +66721.761,-0.431289695 +66721.781,-0.436512204 +66721.801,-0.442753708 +66721.821,-0.425909399 +66721.841,-0.429151672 +66721.861,-0.436512552 +66721.881,-0.442837565 +66721.901,-0.439437598 +66721.921,-0.469810023 +66721.941,-0.45231838 +66721.961,-0.460102135 +66721.981,-0.45240997 +66722.001,-0.452913938 +66722.021,-0.452427381 +66722.041,-0.445555138 +66722.061,-0.450434948 +66722.081,-0.445176401 +66722.101,-0.440801344 +66722.121,-0.44590319 +66722.141,-0.453172511 +66722.161,-0.454510344 +66722.181,-0.438196817 +66722.201,-0.445652267 +66722.221,-0.440866376 +66722.241,-0.445164202 +66722.261,-0.428341806 +66722.281,-0.434155179 +66722.301,-0.440756949 +66722.321,-0.441288866 +66722.341,-0.455351544 +66722.361,-0.444756845 +66722.381,-0.433336925 +66722.401,-0.436445815 +66722.421,-0.448572527 +66722.441,-0.452285884 +66722.461,-0.438037697 +66722.481,-0.443687363 +66722.501,-0.447650356 +66722.521,-0.438263358 +66722.541,-0.443311665 +66722.561,-0.440612984 +66722.581,-0.443694923 +66722.601,-0.45541745 +66722.621,-0.455235939 +66722.641,-0.457279509 +66722.661,-0.450518109 +66722.681,-0.462793536 +66722.701,-0.462023769 +66722.721,-0.452007122 +66722.741,-0.440798224 +66722.761,-0.453562344 +66722.781,-0.462265791 +66722.801,-0.457601038 +66722.821,-0.459449015 +66722.841,-0.448305488 +66722.861,-0.467523012 +66722.881,-0.456814061 +66722.901,-0.45036071 +66722.921,-0.455573178 +66722.941,-0.459652079 +66722.961,-0.45023865 +66722.981,-0.455277074 +66723.001,-0.455415969 +66723.021,-0.45947134 +66723.041,-0.442801663 +66723.061,-0.448245416 +66723.081,-0.445084775 +66723.101,-0.441304308 +66723.121,-0.455069035 +66723.141,-0.440333948 +66723.161,-0.446095209 +66723.181,-0.45009932 +66723.201,-0.445980642 +66723.221,-0.454549571 +66723.241,-0.43075528 +66723.261,-0.443969008 +66723.281,-0.450419362 +66723.301,-0.453087802 +66723.321,-0.457212305 +66723.341,-0.439789627 +66723.361,-0.43432289 +66723.381,-0.45276711 +66723.401,-0.443585862 +66723.421,-0.465055322 +66723.441,-0.449436092 +66723.461,-0.446105072 +66723.481,-0.46303497 +66723.501,-0.46968174 +66723.521,-0.469182917 +66723.541,-0.459605822 +66723.561,-0.46022546 +66723.581,-0.461877854 +66723.601,-0.444790043 +66723.621,-0.438399881 +66723.641,-0.443573373 +66723.661,-0.447744731 +66723.681,-0.443545729 +66723.701,-0.46058796 +66723.721,-0.459339014 +66723.741,-0.442264563 +66723.761,-0.431122571 +66723.781,-0.438970829 +66723.801,-0.445404975 +66723.821,-0.435533783 +66723.841,-0.436553471 +66723.861,-0.447996076 +66723.881,-0.443398259 +66723.901,-0.452607543 +66723.921,-0.437817346 +66723.941,-0.441476094 +66723.961,-0.449942382 +66723.981,-0.430485171 +66724.001,-0.428915496 +66724.021,-0.434217296 +66724.041,-0.448250191 +66724.061,-0.442661606 +66724.081,-0.435897368 +66724.101,-0.438568232 +66724.121,-0.443577274 +66724.141,-0.447560176 +66724.161,-0.438734369 +66724.181,-0.458144239 +66724.201,-0.457497011 +66724.221,-0.459879592 +66724.241,-0.452228597 +66724.261,-0.448318487 +66724.281,-0.4546682 +66724.301,-0.438312333 +66724.321,-0.450576732 +66724.341,-0.445691615 +66724.361,-0.452456694 +66724.381,-0.438182557 +66724.401,-0.448480897 +66724.421,-0.447424391 +66724.441,-0.430163573 +66724.461,-0.422352304 +66724.481,-0.448784116 +66724.501,-0.447667101 +66724.521,-0.445523567 +66724.541,-0.442896675 +66724.561,-0.438402218 +66724.581,-0.44340252 +66724.601,-0.44287944 +66724.621,-0.435759734 +66724.641,-0.436128069 +66724.661,-0.441158976 +66724.681,-0.445303532 +66724.701,-0.43580934 +66724.721,-0.443877371 +66724.741,-0.449836841 +66724.761,-0.430559774 +66724.781,-0.431495696 +66724.801,-0.438914038 +66724.821,-0.442485342 +66724.841,-0.426637434 +66724.861,-0.454230419 +66724.881,-0.464202503 +66724.901,-0.447646305 +66724.921,-0.450108871 +66724.941,-0.438126999 +66724.961,-0.443453156 +66724.981,-0.442954991 +66725.001,-0.446504045 +66725.021,-0.464527703 +66725.041,-0.445139766 +66725.061,-0.453037664 +66725.081,-0.450271464 +66725.101,-0.455598575 +66725.121,-0.456866069 +66725.141,-0.440720465 +66725.161,-0.453120319 +66725.181,-0.447478495 +66725.201,-0.443277598 +66725.221,-0.448065182 +66725.241,-0.44810199 +66725.261,-0.447273063 +66725.281,-0.433923001 +66725.301,-0.453044025 +66725.321,-0.440103781 +66725.341,-0.441442828 +66725.361,-0.449843282 +66725.381,-0.430916337 +66725.401,-0.441150573 +66725.421,-0.438124931 +66725.441,-0.435888658 +66725.461,-0.43903326 +66725.481,-0.452813145 +66725.501,-0.44557031 +66725.521,-0.455533183 +66725.541,-0.452177324 +66725.561,-0.440445407 +66725.581,-0.440942428 +66725.601,-0.445961566 +66725.621,-0.44725144 +66725.641,-0.434097698 +66725.661,-0.463457726 +66725.681,-0.46695508 +66725.701,-0.461800985 +66725.721,-0.45562016 +66725.741,-0.466607158 +66725.761,-0.44546737 +66725.781,-0.462789379 +66725.801,-0.454668052 +66725.821,-0.450024228 +66725.841,-0.443150763 +66725.861,-0.453626641 +66725.881,-0.461707379 +66725.901,-0.44036622 +66725.921,-0.448259289 +66725.941,-0.442638843 +66725.961,-0.441525206 +66725.981,-0.454575905 +66726.001,-0.430998594 +66726.021,-0.451286273 +66726.041,-0.455093663 +66726.061,-0.452324781 +66726.081,-0.440286312 +66726.101,-0.438657428 +66726.12099,-0.448483615 +66726.141,-0.452483933 +66726.161,-0.442878201 +66726.181,-0.443220632 +66726.201,-0.443241869 +66726.221,-0.448358575 +66726.241,-0.44973547 +66726.261,-0.439316533 +66726.281,-0.458521995 +66726.301,-0.448073474 +66726.321,-0.446784335 +66726.341,-0.449530693 +66726.361,-0.446137706 +66726.381,-0.450450531 +66726.401,-0.452312687 +66726.421,-0.460613548 +66726.441,-0.451486716 +66726.461,-0.44364745 +66726.481,-0.456468971 +66726.501,-0.470439089 +66726.521,-0.471843845 +66726.541,-0.448220268 +66726.561,-0.442887675 +66726.581,-0.452683778 +66726.601,-0.44359236 +66726.621,-0.447567881 +66726.641,-0.454036192 +66726.661,-0.448881477 +66726.681,-0.441771962 +66726.701,-0.442976125 +66726.721,-0.440111321 +66726.741,-0.439959679 +66726.761,-0.439247001 +66726.781,-0.451471259 +66726.801,-0.436316017 +66726.821,-0.432546468 +66726.841,-0.441583764 +66726.861,-0.454574905 +66726.881,-0.442311941 +66726.901,-0.425575577 +66726.921,-0.436723003 +66726.941,-0.461795766 +66726.961,-0.454343432 +66726.981,-0.44620024 +66727.001,-0.437905664 +66727.021,-0.445113529 +66727.041,-0.462077722 +66727.061,-0.453552642 +66727.081,-0.443247397 +66727.101,-0.445563156 +66727.121,-0.452597707 +66727.141,-0.447189733 +66727.161,-0.451203358 +66727.181,-0.457489834 +66727.201,-0.458081935 +66727.221,-0.454662012 +66727.24101,-0.461698013 +66727.261,-0.451931271 +66727.281,-0.455471621 +66727.301,-0.469244404 +66727.321,-0.464652743 +66727.341,-0.449848123 +66727.361,-0.442599834 +66727.381,-0.444957658 +66727.401,-0.433385081 +66727.421,-0.4411743 +66727.441,-0.45173845 +66727.461,-0.44637437 +66727.481,-0.447868483 +66727.501,-0.441231386 +66727.521,-0.429600929 +66727.541,-0.44445274 +66727.561,-0.449573868 +66727.581,-0.451080732 +66727.601,-0.449555064 +66727.621,-0.438653822 +66727.641,-0.445125764 +66727.661,-0.432508065 +66727.681,-0.430244946 +66727.701,-0.444166162 +66727.721,-0.454473936 +66727.741,-0.449562562 +66727.761,-0.454763418 +66727.781,-0.464035932 +66727.801,-0.453033569 +66727.821,-0.44498935 +66727.841,-0.459320459 +66727.861,-0.454253387 +66727.881,-0.444311993 +66727.901,-0.461468069 +66727.921,-0.455787157 +66727.941,-0.463693219 +66727.961,-0.46467095 +66727.981,-0.445468799 +66728.001,-0.43835592 +66728.021,-0.461822551 +66728.041,-0.455863208 +66728.061,-0.446131205 +66728.081,-0.447523903 +66728.101,-0.441419995 +66728.121,-0.443359945 +66728.141,-0.436789643 +66728.161,-0.446625663 +66728.181,-0.453753293 +66728.201,-0.442719321 +66728.221,-0.443762665 +66728.241,-0.444847432 +66728.261,-0.451335922 +66728.281,-0.435498501 +66728.301,-0.443559091 +66728.321,-0.445889771 +66728.341,-0.439692716 +66728.361,-0.45179911 +66728.381,-0.443870145 +66728.401,-0.447500307 +66728.421,-0.443791856 +66728.441,-0.446527727 +66728.461,-0.450289236 +66728.481,-0.457975686 +66728.501,-0.475287234 +66728.521,-0.457191666 +66728.541,-0.456147802 +66728.561,-0.453885911 +66728.581,-0.454338011 +66728.601,-0.457656917 +66728.621,-0.462597676 +66728.641,-0.474973005 +66728.661,-0.471691463 +66728.681,-0.448218771 +66728.701,-0.447195228 +66728.721,-0.447315842 +66728.741,-0.438325474 +66728.761,-0.4551628 +66728.781,-0.452766765 +66728.801,-0.449284188 +66728.821,-0.445173438 +66728.841,-0.44765335 +66728.861,-0.449229017 +66728.881,-0.449115314 +66728.901,-0.45029158 +66728.921,-0.440977057 +66728.941,-0.450580061 +66728.961,-0.440972516 +66728.981,-0.443290328 +66729.001,-0.444432274 +66729.021,-0.439197017 +66729.041,-0.433614904 +66729.061,-0.443731561 +66729.081,-0.455987511 +66729.101,-0.449315516 +66729.121,-0.453024853 +66729.141,-0.4510312 +66729.161,-0.447048492 +66729.181,-0.449488974 +66729.201,-0.452190464 +66729.221,-0.451898174 +66729.241,-0.447164694 +66729.261,-0.456827795 +66729.281,-0.46741434 +66729.301,-0.462485732 +66729.321,-0.458151271 +66729.341,-0.454728429 +66729.361,-0.450045429 +66729.381,-0.455635268 +66729.401,-0.466105086 +66729.421,-0.451461232 +66729.441,-0.449197412 +66729.461,-0.475804322 +66729.481,-0.464820616 +66729.501,-0.449400173 +66729.521,-0.453216905 +66729.541,-0.459609663 +66729.561,-0.466684803 +66729.581,-0.462272153 +66729.601,-0.447656812 +66729.621,-0.438711941 +66729.641,-0.44085481 +66729.661,-0.447220549 +66729.681,-0.444660711 +66729.701,-0.432687692 +66729.721,-0.437010906 +66729.741,-0.44262641 +66729.761,-0.446805812 +66729.781,-0.444650785 +66729.801,-0.433142132 +66729.821,-0.433229341 +66729.841,-0.428303337 +66729.861,-0.431893765 +66729.881,-0.45136352 +66729.901,-0.453249523 +66729.921,-0.45897402 +66729.941,-0.450525381 +66729.961,-0.458899203 +66729.981,-0.460750565 +66730.001,-0.444979286 +66730.021,-0.461288101 +66730.041,-0.461997069 +66730.061,-0.447758369 +66730.081,-0.437661572 +66730.101,-0.453055873 +66730.121,-0.454203982 +66730.141,-0.44724309 +66730.161,-0.460644568 +66730.181,-0.460995968 +66730.201,-0.457085852 +66730.221,-0.463942179 +66730.241,-0.461715486 +66730.261,-0.447198805 +66730.281,-0.446068304 +66730.301,-0.460062232 +66730.321,-0.444896658 +66730.341,-0.449060193 +66730.361,-0.448713961 +66730.381,-0.445852298 +66730.401,-0.441043059 +66730.421,-0.438375495 +66730.441,-0.440772 +66730.461,-0.435981 +66730.481,-0.447958 +66730.501,-0.447958 +66730.521,-0.438376 +66730.541,-0.433585 +66730.561,-0.438376 +66730.581,-0.438376 +66730.601,-0.447958 +66730.621,-0.440772 +66730.641,-0.462331 +66730.661,-0.45754 +66730.681,-0.455145 +66730.701,-0.455145 +66730.721,-0.467122 +66730.741,-0.459936 +66730.761,-0.440772 +66730.781,-0.455145 +66730.801,-0.462331 +66730.821,-0.459936 +66730.841,-0.464727 +66730.861,-0.459936 +66730.881,-0.462331 +66730.901,-0.459936 +66730.921,-0.452749 +66730.94099,-0.452749 +66730.961,-0.447958 +66730.981,-0.452749 +66731.001,-0.438376 +66731.021,-0.452749 +66731.041,-0.447958 +66731.061,-0.450354 +66731.081,-0.450354 +66731.101,-0.450354 +66731.121,-0.450354 +66731.141,-0.435981 +66731.161,-0.447958 +66731.181,-0.443167 +66731.201,-0.440772 +66731.221,-0.438376 +66731.241,-0.445563 +66731.261,-0.447958 +66731.281,-0.440772 +66731.301,-0.433585 +66731.321,-0.438376 +66731.341,-0.45754 +66731.361,-0.45754 +66731.381,-0.450354 +66731.401,-0.450354 +66731.421,-0.443167 +66731.441,-0.45754 +66731.461,-0.45754 +66731.481,-0.455145 +66731.501,-0.45754 +66731.521,-0.450354 +66731.541,-0.45754 +66731.561,-0.471913 +66731.581,-0.464727 +66731.601,-0.455145 +66731.621,-0.467122 +66731.641,-0.45754 +66731.661,-0.462331 +66731.681,-0.445563 +66731.701,-0.447958 +66731.721,-0.45754 +66731.741,-0.438376 +66731.761,-0.440772 +66731.781,-0.452749 +66731.801,-0.45754 +66731.821,-0.450354 +66731.841,-0.450354 +66731.861,-0.440772 +66731.881,-0.426399 +66731.901,-0.450354 +66731.921,-0.450354 +66731.941,-0.447958 +66731.961,-0.433585 +66731.981,-0.440772 +66732.001,-0.443167 +66732.021,-0.445563 +66732.041,-0.452749 +66732.06101,-0.450354 +66732.081,-0.452749 +66732.101,-0.440772 +66732.121,-0.445563 +66732.141,-0.450354 +66732.161,-0.447958 +66732.181,-0.447958 +66732.201,-0.452749 +66732.221,-0.450354 +66732.241,-0.455145 +66732.261,-0.452749 +66732.281,-0.459936 +66732.301,-0.467122 +66732.321,-0.455145 +66732.341,-0.459936 +66732.361,-0.464727 +66732.381,-0.455145 +66732.401,-0.447958 +66732.421,-0.438376 +66732.441,-0.440772 +66732.461,-0.455145 +66732.481,-0.450354 +66732.501,-0.433585 +66732.521,-0.440772 +66732.541,-0.440772 +66732.561,-0.435981 +66732.581,-0.443167 +66732.601,-0.443167 +66732.621,-0.428794 +66732.641,-0.440772 +66732.661,-0.424006097 +66732.681,-0.428794 +66732.701,-0.438376 +66732.721,-0.438376 +66732.741,-0.447958 +66732.761,-0.425790221 +66732.781,-0.432264417 +66732.801,-0.443010825 +66732.821,-0.452261339 +66732.841,-0.441617824 +66732.861,-0.441151757 +66732.881,-0.452031643 +66732.901,-0.467388408 +66732.921,-0.459108972 +66732.941,-0.463590343 +66732.961,-0.467472447 +66732.981,-0.47091999 +66733.001,-0.472758552 +66733.021,-0.45275745 +66733.041,-0.445699096 +66733.061,-0.46342427 +66733.081,-0.456633161 +66733.101,-0.46185719 +66733.121,-0.46233788 +66733.141,-0.441949017 +66733.161,-0.432645507 +66733.181,-0.435207516 +66733.201,-0.448502429 +66733.221,-0.450138832 +66733.241,-0.435260994 +66733.261,-0.449711952 +66733.281,-0.454599549 +66733.301,-0.434280251 +66733.321,-0.439303901 +66733.341,-0.441655017 +66733.361,-0.445606817 +66733.381,-0.438602204 +66733.401,-0.43076079 +66733.421,-0.434520027 +66733.441,-0.439664221 +66733.461,-0.446872744 +66733.481,-0.442408907 +66733.501,-0.428352747 +66733.521,-0.437833968 +66733.541,-0.444800909 +66733.561,-0.446353211 +66733.581,-0.434710776 +66733.601,-0.445177413 +66733.621,-0.467616229 +66733.641,-0.468541918 +66733.661,-0.456447556 +66733.681,-0.449932644 +66733.701,-0.470415558 +66733.721,-0.473533476 +66733.741,-0.469441761 +66733.761,-0.464043545 +66733.781,-0.449808469 +66733.801,-0.455595659 +66733.821,-0.456283392 +66733.841,-0.462328231 +66733.861,-0.452388853 +66733.881,-0.446414517 +66733.901,-0.456507295 +66733.921,-0.441005376 +66733.941,-0.413828561 +66733.961,-0.423669652 +66733.981,-0.422612246 +66734.001,-0.44021095 +66734.021,-0.421562856 +66734.041,-0.426218008 +66734.061,-0.433872512 +66734.081,-0.426674607 +66734.101,-0.422458594 +66734.121,-0.429044032 +66734.141,-0.426407293 +66734.161,-0.433168389 +66734.181,-0.437774448 +66734.201,-0.425925371 +66734.221,-0.424083253 +66734.241,-0.439641521 +66734.261,-0.439098104 +66734.281,-0.450626443 +66734.301,-0.457564686 +66734.321,-0.459524811 +66734.341,-0.465788551 +66734.361,-0.45065541 +66734.381,-0.455538611 +66734.401,-0.464018004 +66734.421,-0.454310069 +66734.441,-0.458598785 +66734.461,-0.455231896 +66734.481,-0.449481726 +66734.501,-0.459867366 +66734.521,-0.456483194 +66734.541,-0.472033603 +66734.561,-0.469078356 +66734.581,-0.453312894 +66734.601,-0.453023341 +66734.621,-0.44817592 +66734.641,-0.445491556 +66734.661,-0.456916209 +66734.681,-0.440175553 +66734.701,-0.436497613 +66734.721,-0.433303405 +66734.741,-0.425879241 +66734.761,-0.437726145 +66734.781,-0.425761885 +66734.801,-0.436074141 +66734.821,-0.444080888 +66734.841,-0.437502261 +66734.861,-0.427372534 +66734.881,-0.439169388 +66734.901,-0.440131184 +66734.921,-0.44265521 +66734.941,-0.426386593 +66734.961,-0.440432362 +66734.981,-0.440109679 +66735.001,-0.446749403 +66735.021,-0.459147023 +66735.041,-0.447320594 +66735.061,-0.4536152 +66735.081,-0.452259615 +66735.101,-0.453897835 +66735.121,-0.460908852 +66735.141,-0.462503261 +66735.161,-0.465958976 +66735.181,-0.46890245 +66735.201,-0.460782098 +66735.221,-0.453351632 +66735.241,-0.452311726 +66735.261,-0.466470049 +66735.281,-0.462715278 +66735.301,-0.450562838 +66735.321,-0.445434321 +66735.341,-0.448857358 +66735.361,-0.449721625 +66735.381,-0.449128104 +66735.401,-0.454949032 +66735.421,-0.450082992 +66735.441,-0.445059897 +66735.461,-0.425958388 +66735.481,-0.42561448 +66735.501,-0.438522686 +66735.521,-0.442254657 +66735.541,-0.43965592 +66735.561,-0.439841208 +66735.581,-0.425006952 +66735.601,-0.442516162 +66735.621,-0.436853561 +66735.641,-0.433407649 +66735.661,-0.437619106 +66735.681,-0.442981792 +66735.701,-0.437631798 +66735.721,-0.443416936 +66735.741,-0.460755033 +66735.761,-0.466487957 +66735.781,-0.45887421 +66735.801,-0.461348763 +66735.821,-0.463433946 +66735.841,-0.454515892 +66735.861,-0.458359549 +66735.881,-0.456021344 +66735.901,-0.454746197 +66735.921,-0.46840901 +66735.941,-0.461877425 +66735.961,-0.449167276 +66735.981,-0.453321643 +66736.001,-0.460547379 +66736.021,-0.444100532 +66736.041,-0.443921507 +66736.061,-0.451368417 +66736.081,-0.450659114 +66736.101,-0.44750588 +66736.121,-0.436374855 +66736.141,-0.429243148 +66736.161,-0.436935416 +66736.181,-0.453100467 +66736.201,-0.439063676 +66736.221,-0.419198125 +66736.241,-0.433300742 +66736.261,-0.448209954 +66736.281,-0.446967531 +66736.301,-0.439884922 +66736.321,-0.433474556 +66736.341,-0.433441989 +66736.361,-0.450223415 +66736.381,-0.441180248 +66736.401,-0.430525818 +66736.421,-0.452759057 +66736.441,-0.454697738 +66736.461,-0.45504631 +66736.481,-0.450044564 +66736.501,-0.450328545 +66736.521,-0.456859374 +66736.541,-0.47159711 +66736.561,-0.44907941 +66736.581,-0.433229028 +66736.601,-0.471028927 +66736.621,-0.475538319 +66736.641,-0.45153266 +66736.661,-0.440653866 +66736.681,-0.445489181 +66736.701,-0.446588041 +66736.721,-0.44718879 +66736.741,-0.434565976 +66736.761,-0.431658187 +66736.781,-0.438971444 +66736.801,-0.4562815 +66736.821,-0.447089883 +66736.841,-0.430787375 +66736.861,-0.442022898 +66736.88101,-0.453894874 +66736.901,-0.453488973 +66736.921,-0.454297857 +66736.941,-0.443379912 +66736.961,-0.451001687 +66736.981,-0.453240899 +66737.001,-0.436835156 +66737.021,-0.442076446 +66737.041,-0.433031069 +66737.061,-0.43944023 +66737.081,-0.458265618 +66737.101,-0.439586544 +66737.121,-0.433424453 +66737.141,-0.452566924 +66737.161,-0.468991108 +66737.181,-0.469085134 +66737.201,-0.448201669 +66737.221,-0.449734535 +66737.241,-0.464199185 +66737.261,-0.460499919 +66737.281,-0.445559869 +66737.301,-0.439185749 +66737.321,-0.44531872 +66737.341,-0.459797139 +66737.361,-0.455713138 +66737.381,-0.449273083 +66737.401,-0.450085056 +66737.421,-0.453545549 +66737.441,-0.452823724 +66737.461,-0.437320267 +66737.481,-0.427769574 +66737.501,-0.434140427 +66737.521,-0.453508093 +66737.541,-0.449886786 +66737.561,-0.430708227 +66737.581,-0.434272483 +66737.601,-0.449618087 +66737.621,-0.451382395 +66737.641,-0.441473404 +66737.661,-0.427412203 +66737.681,-0.436113463 +66737.701,-0.445474794 +66737.721,-0.448694936 +66737.741,-0.437606191 +66737.761,-0.432211131 +66737.781,-0.450679188 +66737.801,-0.461463221 +66737.821,-0.453673128 +66737.841,-0.451303043 +66737.861,-0.462441027 +66737.881,-0.46098257 +66737.901,-0.455561814 +66737.921,-0.442328885 +66737.941,-0.434624525 +66737.961,-0.448529549 +66737.981,-0.470542038 +66738.001,-0.457699628 +66738.021,-0.44662074 +66738.041,-0.445098534 +66738.061,-0.466424939 +66738.081,-0.46211614 +66738.101,-0.4347979 +66738.121,-0.430827979 +66738.141,-0.441465864 +66738.161,-0.455775782 +66738.181,-0.442382954 +66738.201,-0.430763556 +66738.221,-0.439522376 +66738.241,-0.44724807 +66738.261,-0.45568973 +66738.281,-0.444036988 +66738.301,-0.432648222 +66738.321,-0.446104509 +66738.341,-0.458188199 +66738.361,-0.460309464 +66738.381,-0.437518794 +66738.401,-0.432520984 +66738.421,-0.451252444 +66738.441,-0.455375215 +66738.461,-0.446348384 +66738.481,-0.433547042 +66738.501,-0.455069066 +66738.521,-0.468191311 +66738.541,-0.442435522 +66738.561,-0.431801794 +66738.581,-0.444919742 +66738.601,-0.455879709 +66738.621,-0.468391319 +66738.641,-0.467749894 +66738.661,-0.435553338 +66738.681,-0.442255532 +66738.701,-0.451608569 +66738.721,-0.450792243 +66738.741,-0.448244522 +66738.761,-0.449191895 +66738.781,-0.454120667 +66738.801,-0.459591125 +66738.821,-0.450107327 +66738.841,-0.430042213 +66738.861,-0.438890417 +66738.881,-0.453892926 +66738.901,-0.433324478 +66738.921,-0.423862834 +66738.941,-0.426050684 +66738.961,-0.448837856 +66738.981,-0.451781252 +66739.001,-0.427492398 +66739.021,-0.423124803 +66739.041,-0.426671021 +66739.061,-0.444603218 +66739.081,-0.449970323 +66739.101,-0.436977955 +66739.121,-0.443318649 +66739.141,-0.450572769 +66739.161,-0.46346866 +66739.181,-0.43598243 +66739.201,-0.418756781 +66739.221,-0.44709588 +66739.241,-0.458799916 +66739.261,-0.449625479 +66739.281,-0.444282577 +66739.301,-0.439260494 +66739.321,-0.458465064 +66739.341,-0.462921635 +66739.361,-0.443561034 +66739.381,-0.440140843 +66739.401,-0.441887146 +66739.421,-0.454590469 +66739.441,-0.461706977 +66739.461,-0.442961134 +66739.481,-0.430970566 +66739.501,-0.457720897 +66739.521,-0.46196075 +66739.541,-0.45422347 +66739.561,-0.444999195 +66739.581,-0.441166976 +66739.601,-0.457997286 +66739.621,-0.45175277 +66739.641,-0.434430779 +66739.661,-0.423879619 +66739.681,-0.455139938 +66739.701,-0.472036573 +66739.721,-0.446569714 +66739.741,-0.427883284 +66739.761,-0.426238952 +66739.781,-0.446997532 +66739.801,-0.448684527 +66739.821,-0.429821775 +66739.841,-0.423116158 +66739.861,-0.450978857 +66739.881,-0.452402238 +66739.901,-0.448243334 +66739.921,-0.442814304 +66739.941,-0.43494257 +66739.961,-0.450107986 +66739.981,-0.450132152 +66740.001,-0.439008901 +66740.021,-0.427712388 +66740.041,-0.465165165 +66740.061,-0.452423649 +66740.081,-0.4529996 +66740.101,-0.450694038 +66740.121,-0.441708408 +66740.141,-0.459507657 +66740.161,-0.460403594 +66740.181,-0.463647974 +66740.201,-0.44266363 +66740.221,-0.437980417 +66740.241,-0.453514535 +66740.261,-0.45186769 +66740.281,-0.447960833 +66740.301,-0.449384843 +66740.321,-0.456240165 +66740.341,-0.45740964 +66740.361,-0.439205419 +66740.381,-0.434329311 +66740.401,-0.445648874 +66740.421,-0.451641138 +66740.441,-0.437146246 +66740.461,-0.426159854 +66740.481,-0.433893419 +66740.501,-0.442788213 +66740.521,-0.45805957 +66740.541,-0.435010093 +66740.561,-0.421098435 +66740.581,-0.446499711 +66740.601,-0.447709955 +66740.621,-0.440311783 +66740.641,-0.427451664 +66740.661,-0.434871823 +66740.681,-0.447892976 +66740.701,-0.441194071 +66740.721,-0.449036975 +66740.741,-0.446058795 +66740.761,-0.454325275 +66740.781,-0.466415607 +66740.801,-0.46141477 +66740.821,-0.437151427 +66740.841,-0.434838491 +66740.861,-0.456817105 +66740.881,-0.459505769 +66740.901,-0.449404138 +66740.921,-0.446972576 +66740.941,-0.455436199 +66740.961,-0.46142165 +66740.981,-0.446974783 +66741.001,-0.452208875 +66741.021,-0.442421535 +66741.041,-0.450447283 +66741.061,-0.468395781 +66741.081,-0.443459848 +66741.101,-0.438134948 +66741.121,-0.449685528 +66741.141,-0.443994058 +66741.161,-0.427862334 +66741.181,-0.431198084 +66741.201,-0.442858104 +66741.221,-0.455185483 +66741.241,-0.443487434 +66741.261,-0.437458725 +66741.281,-0.42348354 +66741.301,-0.42769102 +66741.321,-0.445264852 +66741.341,-0.451574994 +66741.361,-0.438983266 +66741.381,-0.431623615 +66741.401,-0.451268763 +66741.421,-0.45745226 +66741.441,-0.441033987 +66741.461,-0.437242167 +66741.481,-0.445293479 +66741.501,-0.459136923 +66741.521,-0.451154923 +66741.541,-0.438173848 +66741.561,-0.432540316 +66741.581,-0.466043887 +66741.601,-0.472307767 +66741.621,-0.458267695 +66741.641,-0.442643231 +66741.661,-0.442850948 +66741.681,-0.460174118 +66741.70101,-0.463503726 +66741.721,-0.448282069 +66741.741,-0.452749 +66741.761,-0.452749 +66741.781,-0.462331 +66741.801,-0.462331 +66741.821,-0.438376 +66741.841,-0.447958 +66741.861,-0.459936 +66741.881,-0.455145 +66741.901,-0.435981 +66741.921,-0.440772 +66741.941,-0.455145 +66741.961,-0.455144875 +66741.981,-0.450354 +66742.001,-0.426399 +66742.021,-0.438376 +66742.041,-0.440772 +66742.061,-0.433585 +66742.081,-0.433585 +66742.101,-0.433585 +66742.121,-0.443167 +66742.141,-0.462331 +66742.161,-0.462331 +66742.181,-0.443167 +66742.201,-0.443167 +66742.221,-0.464727 +66742.241,-0.464727 +66742.261,-0.455145 +66742.281,-0.45754 +66742.301,-0.464725025 +66742.321,-0.471913 +66742.341,-0.467122 +66742.361,-0.435981 +66742.381,-0.445563 +66742.401,-0.471913 +66742.421,-0.464727 +66742.441,-0.452749 +66742.461,-0.445563 +66742.481,-0.455145 +66742.501,-0.467122 +66742.521,-0.455145 +66742.541,-0.445563 +66742.561,-0.447958 +66742.581,-0.459936 +66742.601,-0.443167 +66742.621,-0.447958 +66742.641,-0.433585 +66742.661,-0.438376 +66742.681,-0.459936 +66742.701,-0.445563 +66742.721,-0.435981 +66742.741,-0.440772 +66742.761,-0.435981 +66742.781,-0.455145 +66742.801,-0.452749 +66742.821,-0.455145 +66742.841,-0.452749 +66742.861,-0.459936 +66742.881,-0.464727 +66742.901,-0.450354 +66742.921,-0.452749 +66742.941,-0.469518 +66742.961,-0.471913 +66742.981,-0.462331 +66743.001,-0.450354 +66743.021,-0.469518 +66743.041,-0.481495 +66743.061,-0.471913 +66743.081,-0.469518 +66743.101,-0.452749 +66743.121,-0.452749 +66743.141,-0.474309 +66743.161,-0.462331 +66743.181,-0.45754 +66743.201,-0.471913 +66743.221,-0.464727 +66743.241,-0.459936 +66743.261,-0.443167 +66743.281,-0.450354 +66743.301,-0.440772 +66743.321,-0.443167 +66743.341,-0.445563 +66743.361,-0.426399 +66743.381,-0.43119 +66743.401,-0.447958 +66743.421,-0.438376 +66743.441,-0.426399 +66743.461,-0.426399 +66743.481,-0.440772 +66743.501,-0.450354 +66743.521,-0.445563 +66743.541,-0.440772 +66743.561,-0.450354 +66743.581,-0.455145 +66743.601,-0.467122 +66743.621,-0.450354 +66743.641,-0.450354 +66743.661,-0.452749 +66743.681,-0.464727 +66743.701,-0.459936 +66743.721,-0.45754 +66743.741,-0.464727 +66743.761,-0.471913 +66743.781,-0.459936 +66743.801,-0.467122 +66743.821,-0.455145 +66743.841,-0.469518 +66743.861,-0.469518 +66743.881,-0.45754 +66743.901,-0.440772 +66743.921,-0.447958 +66743.941,-0.450354 +66743.961,-0.450354 +66743.981,-0.445563 +66744.001,-0.445563 +66744.021,-0.445563 +66744.041,-0.445563 +66744.061,-0.433585 +66744.081,-0.433585 +66744.101,-0.433585 +66744.121,-0.447958 +66744.141,-0.455145 +66744.161,-0.443167 +66744.181,-0.440772 +66744.201,-0.440773936 +66744.221,-0.452749 +66744.241,-0.452749 +66744.261,-0.455145 +66744.281,-0.455145 +66744.301,-0.462331 +66744.321,-0.455145 +66744.341,-0.45754 +66744.361,-0.459936 +66744.381,-0.467122 +66744.401,-0.471913 +66744.421,-0.459936 +66744.441,-0.464727 +66744.461,-0.45754 +66744.481,-0.45754 +66744.501,-0.459936 +66744.521,-0.45754 +66744.541,-0.450351954 +66744.561,-0.469518 +66744.581,-0.467122 +66744.601,-0.452749 +66744.621,-0.443167 +66744.641,-0.450354 +66744.661,-0.442967561 +66744.681,-0.445854335 +66744.701,-0.445320655 +66744.721,-0.437961538 +66744.741,-0.433803827 +66744.761,-0.45562484 +66744.781,-0.453120406 +66744.801,-0.436930209 +66744.821,-0.426753957 +66744.841,-0.442330731 +66744.861,-0.452461831 +66744.881,-0.440590912 +66744.901,-0.441033625 +66744.921,-0.452398514 +66744.941,-0.442179581 +66744.961,-0.44289226 +66744.981,-0.446111812 +66745.001,-0.45230034 +66745.021,-0.446511989 +66745.041,-0.450845098 +66745.061,-0.456196845 +66745.081,-0.453378507 +66745.101,-0.448932494 +66745.121,-0.454816899 +66745.141,-0.464642558 +66745.161,-0.463819807 +66745.181,-0.455236079 +66745.201,-0.458618725 +66745.221,-0.470669573 +66745.241,-0.452454492 +66745.261,-0.440473016 +66745.281,-0.454046232 +66745.301,-0.459492486 +66745.321,-0.439179473 +66745.341,-0.434188709 +66745.361,-0.4502399 +66745.381,-0.44188826 +66745.401,-0.437607875 +66745.421,-0.433223248 +66745.441,-0.440707733 +66745.461,-0.441273477 +66745.481,-0.423976504 +66745.501,-0.432443258 +66745.521,-0.436838369 +66745.541,-0.434383529 +66745.561,-0.435858778 +66745.581,-0.442545549 +66745.601,-0.436266791 +66745.621,-0.4266044 +66745.641,-0.440007947 +66745.661,-0.448432837 +66745.681,-0.446517305 +66745.701,-0.449739071 +66745.721,-0.438538674 +66745.741,-0.450203897 +66745.761,-0.448471778 +66745.781,-0.435745117 +66745.801,-0.447525096 +66745.821,-0.45636421 +66745.841,-0.453055736 +66745.861,-0.45193132 +66745.881,-0.459144586 +66745.901,-0.450024585 +66745.921,-0.45315133 +66745.941,-0.458350087 +66745.961,-0.456982865 +66745.981,-0.452386445 +66746.001,-0.44636417 +66746.021,-0.445345227 +66746.041,-0.445996899 +66746.061,-0.437164056 +66746.081,-0.435527606 +66746.101,-0.46012561 +66746.121,-0.450373468 +66746.141,-0.424346406 +66746.161,-0.439436645 +66746.181,-0.446861509 +66746.201,-0.43890476 +66746.221,-0.443703626 +66746.241,-0.429226273 +66746.261,-0.417848746 +66746.281,-0.434544329 +66746.301,-0.433603876 +66746.321,-0.431572944 +66746.341,-0.423122333 +66746.361,-0.430842524 +66746.381,-0.440530972 +66746.401,-0.436123477 +66746.421,-0.444582512 +66746.441,-0.447482292 +66746.461,-0.452297393 +66746.481,-0.454916152 +66746.501,-0.446601744 +66746.52099,-0.44207592 +66746.541,-0.44814304 +66746.561,-0.466037343 +66746.581,-0.456423594 +66746.601,-0.458720889 +66746.621,-0.463323211 +66746.641,-0.46438693 +66746.661,-0.474425439 +66746.681,-0.456856092 +66746.701,-0.457208712 +66746.721,-0.458804525 +66746.741,-0.460346365 +66746.761,-0.456721031 +66746.781,-0.442928717 +66746.801,-0.448870612 +66746.821,-0.44658022 +66746.841,-0.441597667 +66746.861,-0.439076334 +66746.881,-0.430169651 +66746.901,-0.436544102 +66746.921,-0.442987844 +66746.941,-0.433510912 +66746.961,-0.425265986 +66746.981,-0.431559751 +66747.001,-0.441267873 +66747.021,-0.446082709 +66747.041,-0.429802076 +66747.061,-0.427614458 +66747.081,-0.434612163 +66747.101,-0.450108625 +66747.121,-0.4596224 +66747.141,-0.457467584 +66747.161,-0.43984253 +66747.181,-0.449468673 +66747.201,-0.469082793 +66747.221,-0.456314659 +66747.241,-0.4522993 +66747.261,-0.468959357 +66747.281,-0.4688298 +66747.301,-0.471947866 +66747.321,-0.46537228 +66747.341,-0.448157261 +66747.361,-0.444293426 +66747.381,-0.450365738 +66747.401,-0.457727022 +66747.421,-0.442273876 +66747.441,-0.448278881 +66747.461,-0.477388137 +66747.481,-0.469662075 +66747.501,-0.453115611 +66747.521,-0.442207887 +66747.541,-0.444579695 +66747.561,-0.452717424 +66747.581,-0.450722576 +66747.601,-0.433573352 +66747.621,-0.430628685 +66747.641,-0.437241741 +66747.661,-0.446004774 +66747.681,-0.438258729 +66747.701,-0.431313853 +66747.721,-0.443914877 +66747.741,-0.451757827 +66747.761,-0.439509837 +66747.781,-0.435727482 +66747.801,-0.452172993 +66747.821,-0.438983332 +66747.841,-0.438690357 +66747.861,-0.445310511 +66747.881,-0.446469646 +66747.901,-0.459798473 +66747.921,-0.465038464 +66747.941,-0.462985152 +66747.961,-0.457391311 +66747.981,-0.446903972 +66748.001,-0.466083657 +66748.021,-0.465508912 +66748.041,-0.451808641 +66748.061,-0.452297601 +66748.081,-0.470373259 +66748.101,-0.461709645 +66748.121,-0.448706341 +66748.141,-0.466534133 +66748.161,-0.448335735 +66748.181,-0.459915287 +66748.201,-0.467882132 +66748.221,-0.44327316 +66748.241,-0.430504098 +66748.261,-0.439212182 +66748.281,-0.441008934 +66748.301,-0.443760416 +66748.321,-0.452842768 +66748.341,-0.441720264 +66748.361,-0.431287049 +66748.381,-0.436310699 +66748.401,-0.442765451 +66748.421,-0.423307256 +66748.441,-0.43487503 +66748.461,-0.437803024 +66748.481,-0.430066065 +66748.501,-0.424509532 +66748.521,-0.427814912 +66748.541,-0.451427462 +66748.561,-0.456468426 +66748.581,-0.44847121 +66748.601,-0.433219725 +66748.621,-0.451685777 +66748.641,-0.453037999 +66748.661,-0.462699266 +66748.681,-0.46045585 +66748.701,-0.447962174 +66748.721,-0.460414406 +66748.741,-0.476376705 +66748.761,-0.466400837 +66748.781,-0.449042748 +66748.801,-0.454688731 +66748.821,-0.463682574 +66748.841,-0.447742039 +66748.861,-0.450949758 +66748.881,-0.452844043 +66748.901,-0.455337347 +66748.921,-0.446461048 +66748.941,-0.430852829 +66748.961,-0.427479051 +66748.981,-0.438242685 +66749.001,-0.447450927 +66749.021,-0.443681606 +66749.041,-0.427283127 +66749.061,-0.43748794 +66749.081,-0.446699735 +66749.101,-0.453554184 +66749.121,-0.4399972 +66749.141,-0.446072264 +66749.161,-0.444796009 +66749.181,-0.439379917 +66749.201,-0.433689525 +66749.221,-0.439253921 +66749.241,-0.444171463 +66749.261,-0.45412285 +66749.281,-0.451388089 +66749.301,-0.451762241 +66749.321,-0.455240948 +66749.341,-0.454042023 +66749.361,-0.465574016 +66749.381,-0.463532115 +66749.401,-0.461125334 +66749.421,-0.449569221 +66749.441,-0.452455199 +66749.461,-0.464235145 +66749.481,-0.457675013 +66749.501,-0.449732883 +66749.521,-0.459890198 +66749.541,-0.465548597 +66749.561,-0.45841907 +66749.581,-0.457016363 +66749.601,-0.439938327 +66749.621,-0.4482126 +66749.641,-0.446605919 +66749.661,-0.448036002 +66749.681,-0.440049337 +66749.701,-0.439557968 +66749.721,-0.446023893 +66749.741,-0.456736333 +66749.761,-0.452206327 +66749.781,-0.445050904 +66749.801,-0.433990207 +66749.821,-0.443016226 +66749.841,-0.445762282 +66749.861,-0.428338391 +66749.881,-0.431549226 +66749.901,-0.437316896 +66749.921,-0.444897581 +66749.941,-0.44050606 +66749.961,-0.431843847 +66749.981,-0.434011891 +66750.001,-0.446019663 +66750.021,-0.447984076 +66750.041,-0.432048322 +66750.061,-0.442832364 +66750.081,-0.446849853 +66750.101,-0.460679136 +66750.121,-0.455002866 +66750.141,-0.450789905 +66750.161,-0.446892499 +66750.181,-0.462075772 +66750.201,-0.463384455 +66750.221,-0.45986805 +66750.241,-0.440754408 +66750.261,-0.444970085 +66750.281,-0.454618581 +66750.301,-0.453876377 +66750.321,-0.445495377 +66750.341,-0.435814583 +66750.361,-0.44681288 +66750.381,-0.459529775 +66750.401,-0.453335322 +66750.421,-0.440598023 +66750.441,-0.452667945 +66750.461,-0.451505515 +66750.481,-0.432604441 +66750.501,-0.438752871 +66750.521,-0.44082249 +66750.541,-0.443738752 +66750.561,-0.434237438 +66750.581,-0.443262799 +66750.601,-0.445755512 +66750.621,-0.448223571 +66750.641,-0.44011114 +66750.661,-0.43912319 +66750.681,-0.446474963 +66750.701,-0.432812951 +66750.721,-0.441225473 +66750.741,-0.454963333 +66750.761,-0.429549887 +66750.781,-0.437423917 +66750.801,-0.442532421 +66750.821,-0.452676986 +66750.841,-0.439112328 +66750.861,-0.438376 +66750.881,-0.455145 +66750.901,-0.462331 +66750.921,-0.462331 +66750.941,-0.45754 +66750.961,-0.464727 +66750.981,-0.447958 +66751.001,-0.467122 +66751.021,-0.455145 +66751.041,-0.447958 +66751.061,-0.455145 +66751.081,-0.45754 +66751.101,-0.464727 +66751.121,-0.445563 +66751.141,-0.440772 +66751.161,-0.445563 +66751.181,-0.443167 +66751.201,-0.440772 +66751.221,-0.445563 +66751.241,-0.445563 +66751.261,-0.438376 +66751.281,-0.452749 +66751.301,-0.435981 +66751.321,-0.428794 +66751.34099,-0.452749 +66751.361,-0.452749 +66751.381,-0.459936 +66751.401,-0.440772 +66751.421,-0.443167 +66751.441,-0.447958 +66751.461,-0.438376 +66751.481,-0.455145 +66751.501,-0.447958 +66751.521,-0.452749 +66751.541,-0.438376 +66751.561,-0.450354 +66751.581,-0.450354 +66751.601,-0.455146815 +66751.621,-0.459936 +66751.641,-0.45754 +66751.661,-0.447958 +66751.681,-0.426399 +66751.701,-0.440772 +66751.721,-0.464727 +66751.741,-0.452749 +66751.761,-0.452749 +66751.781,-0.440772 +66751.801,-0.443167 +66751.821,-0.462331 +66751.841,-0.447958 +66751.861,-0.447958 +66751.881,-0.440772 +66751.901,-0.445563 +66751.921,-0.452749 +66751.941,-0.440773285 +66751.961,-0.445563 +66751.981,-0.445563 +66752.001,-0.450354 +66752.021,-0.433585 +66752.041,-0.438376 +66752.061,-0.438376 +66752.081,-0.450354 +66752.101,-0.445563 +66752.121,-0.435981 +66752.141,-0.455145 +66752.161,-0.447958 +66752.181,-0.45754 +66752.201,-0.443167 +66752.221,-0.43119 +66752.241,-0.440772 +66752.261,-0.469518 +66752.281,-0.452749 +66752.301,-0.445563 +66752.321,-0.447958 +66752.341,-0.447958 +66752.361,-0.447958 +66752.381,-0.447958 +66752.401,-0.450354 +66752.421,-0.455145 +66752.441,-0.464727 +66752.46101,-0.462331 +66752.481,-0.440772 +66752.501,-0.459936 +66752.521,-0.455145 +66752.541,-0.45754 +66752.561,-0.462331 +66752.581,-0.455145 +66752.601,-0.447958 +66752.621,-0.450354 +66752.641,-0.445563 +66752.661,-0.447958 +66752.681,-0.443167 +66752.701,-0.445563 +66752.721,-0.45754 +66752.741,-0.452749 +66752.761,-0.447958 +66752.781,-0.45754 +66752.801,-0.45754 +66752.821,-0.435981 +66752.841,-0.438376 +66752.861,-0.438376 +66752.881,-0.445563 +66752.901,-0.452749 +66752.921,-0.45754 +66752.941,-0.464727 +66752.961,-0.45754 +66752.981,-0.447958 +66753.001,-0.440772 +66753.021,-0.445563 +66753.041,-0.459936 +66753.061,-0.447958 +66753.081,-0.45754 +66753.101,-0.471913 +66753.121,-0.452749 +66753.141,-0.459936 +66753.161,-0.452749 +66753.181,-0.45754 +66753.201,-0.450354 +66753.221,-0.452749 +66753.241,-0.450354 +66753.261,-0.438376 +66753.281,-0.452749 +66753.301,-0.445563 +66753.321,-0.450354 +66753.341,-0.447958 +66753.361,-0.445563 +66753.381,-0.452749 +66753.401,-0.445563 +66753.421,-0.45754 +66753.441,-0.459936 +66753.461,-0.445563 +66753.481,-0.443167 +66753.501,-0.435981 +66753.521,-0.455145 +66753.541,-0.452749 +66753.561,-0.450354 +66753.581,-0.428580859 +66753.601,-0.44819601 +66753.621,-0.458907923 +66753.641,-0.443337028 +66753.661,-0.444504208 +66753.681,-0.451121539 +66753.701,-0.449434722 +66753.721,-0.449257444 +66753.741,-0.458837983 +66753.761,-0.455667151 +66753.781,-0.451545958 +66753.801,-0.456101376 +66753.821,-0.445238824 +66753.841,-0.450598247 +66753.861,-0.44797558 +66753.881,-0.450556969 +66753.901,-0.450712953 +66753.921,-0.45277714 +66753.941,-0.449345998 +66753.961,-0.449144653 +66753.981,-0.451137349 +66754.001,-0.444095888 +66754.021,-0.452657323 +66754.041,-0.444617891 +66754.061,-0.445928344 +66754.081,-0.445027567 +66754.101,-0.443256606 +66754.121,-0.442155601 +66754.141,-0.443156894 +66754.161,-0.455509158 +66754.181,-0.446032523 +66754.201,-0.44366296 +66754.221,-0.448972822 +66754.241,-0.453942953 +66754.261,-0.457421911 +66754.281,-0.45091589 +66754.301,-0.441495465 +66754.321,-0.438884697 +66754.341,-0.443838604 +66754.361,-0.442290735 +66754.381,-0.442034362 +66754.401,-0.460055795 +66754.421,-0.469653683 +66754.441,-0.447466554 +66754.461,-0.449617022 +66754.481,-0.45526759 +66754.501,-0.45242009 +66754.521,-0.4527728 +66754.541,-0.453001876 +66754.561,-0.455777311 +66754.581,-0.449334358 +66754.601,-0.440248567 +66754.621,-0.455822397 +66754.641,-0.450601412 +66754.661,-0.450315042 +66754.681,-0.439010412 +66754.701,-0.451687958 +66754.721,-0.454386756 +66754.741,-0.462283851 +66754.761,-0.449153472 +66754.781,-0.446327828 +66754.801,-0.461964512 +66754.821,-0.441300501 +66754.841,-0.430343438 +66754.861,-0.440161059 +66754.881,-0.459143541 +66754.901,-0.449206889 +66754.921,-0.442643745 +66754.941,-0.447118445 +66754.961,-0.425396156 +66754.981,-0.446600794 +66755.001,-0.457975836 +66755.021,-0.438663599 +66755.041,-0.44599064 +66755.061,-0.455540946 +66755.081,-0.452519224 +66755.101,-0.456204854 +66755.121,-0.456289872 +66755.141,-0.442144786 +66755.161,-0.434307354 +66755.181,-0.444615432 +66755.201,-0.445428878 +66755.221,-0.44995888 +66755.241,-0.453427353 +66755.261,-0.447328381 +66755.281,-0.464096619 +66755.301,-0.457489864 +66755.321,-0.442217918 +66755.341,-0.438162694 +66755.361,-0.450357384 +66755.381,-0.442983643 +66755.401,-0.452674766 +66755.421,-0.452829591 +66755.441,-0.444090023 +66755.461,-0.452215294 +66755.481,-0.446448675 +66755.501,-0.451180804 +66755.521,-0.437151327 +66755.541,-0.437771376 +66755.561,-0.429755057 +66755.581,-0.430021499 +66755.601,-0.440573249 +66755.621,-0.453522689 +66755.641,-0.457501677 +66755.661,-0.438544325 +66755.681,-0.446961054 +66755.701,-0.455744666 +66755.721,-0.439368635 +66755.741,-0.439978841 +66755.761,-0.441437695 +66755.781,-0.462472201 +66755.801,-0.453014688 +66755.821,-0.439377624 +66755.841,-0.449893045 +66755.861,-0.444929115 +66755.881,-0.461608289 +66755.901,-0.451369984 +66755.921,-0.437698717 +66755.941,-0.444879066 +66755.961,-0.44749789 +66755.981,-0.450501039 +66756.001,-0.454420371 +66756.021,-0.439630189 +66756.041,-0.455624563 +66756.061,-0.443828105 +66756.081,-0.447404491 +66756.101,-0.452119389 +66756.121,-0.444706938 +66756.141,-0.450267827 +66756.16099,-0.457013753 +66756.181,-0.449766233 +66756.201,-0.449667051 +66756.221,-0.441423754 +66756.241,-0.44335358 +66756.261,-0.455435102 +66756.281,-0.442012653 +66756.301,-0.438585526 +66756.321,-0.448794666 +66756.341,-0.432483953 +66756.361,-0.443650224 +66756.381,-0.441897117 +66756.401,-0.431303579 +66756.421,-0.455019287 +66756.441,-0.444610251 +66756.461,-0.440776023 +66756.481,-0.43957545 +66756.501,-0.425487128 +66756.521,-0.451810444 +66756.541,-0.449657167 +66756.561,-0.430352464 +66756.581,-0.449223731 +66756.601,-0.455921662 +66756.621,-0.439407516 +66756.641,-0.456413464 +66756.661,-0.45471291 +66756.681,-0.429807458 +66756.701,-0.447455074 +66756.721,-0.445201415 +66756.741,-0.44374466 +66756.761,-0.455466541 +66756.781,-0.439718045 +66756.801,-0.449204103 +66756.821,-0.455747115 +66756.841,-0.437575639 +66756.861,-0.440510618 +66756.881,-0.450602329 +66756.901,-0.447687686 +66756.921,-0.454334713 +66756.941,-0.448710935 +66756.961,-0.435563796 +66756.981,-0.44868324 +66757.001,-0.441279571 +66757.021,-0.436750002 +66757.041,-0.449431219 +66757.061,-0.461207273 +66757.081,-0.441955337 +66757.101,-0.440361116 +66757.121,-0.450063809 +66757.141,-0.42789125 +66757.161,-0.445728361 +66757.181,-0.448219467 +66757.201,-0.441517243 +66757.221,-0.456193649 +66757.241,-0.447977896 +66757.261,-0.44040931 +66757.28101,-0.445702244 +66757.301,-0.438208044 +66757.321,-0.454415431 +66757.341,-0.455595204 +66757.361,-0.445856289 +66757.381,-0.447499822 +66757.401,-0.45528396 +66757.421,-0.443647246 +66757.441,-0.440936287 +66757.461,-0.437958446 +66757.481,-0.454636319 +66757.501,-0.454960653 +66757.521,-0.458442388 +66757.541,-0.429092081 +66757.561,-0.451757717 +66757.581,-0.448545039 +66757.601,-0.449405788 +66757.621,-0.4675601 +66757.641,-0.434926959 +66757.661,-0.437158344 +66757.681,-0.459640477 +66757.701,-0.4486752 +66757.721,-0.441104472 +66757.741,-0.435748723 +66757.761,-0.449654969 +66757.781,-0.455230529 +66757.801,-0.452692462 +66757.821,-0.455320067 +66757.841,-0.445909431 +66757.861,-0.447563863 +66757.881,-0.454982876 +66757.901,-0.450951886 +66757.921,-0.438607429 +66757.941,-0.444898491 +66757.961,-0.455076316 +66757.981,-0.450468894 +66758.001,-0.452768707 +66758.021,-0.44807158 +66758.041,-0.45029133 +66758.061,-0.448060657 +66758.081,-0.443878829 +66758.101,-0.432755344 +66758.121,-0.470560631 +66758.141,-0.463910885 +66758.161,-0.436273977 +66758.181,-0.447642721 +66758.201,-0.444992636 +66758.221,-0.469073271 +66758.241,-0.453723333 +66758.261,-0.44371496 +66758.281,-0.435348596 +66758.301,-0.463739956 +66758.321,-0.460680488 +66758.341,-0.450479516 +66758.361,-0.452668231 +66758.381,-0.450517731 +66758.401,-0.45015616 +66758.421,-0.455089611 +66758.441,-0.448649057 +66758.461,-0.436109939 +66758.481,-0.440766151 +66758.501,-0.437860298 +66758.521,-0.455198151 +66758.541,-0.434326468 +66758.561,-0.440116144 +66758.581,-0.443579907 +66758.601,-0.433578347 +66758.621,-0.442920542 +66758.641,-0.438546228 +66758.661,-0.442801416 +66758.681,-0.447814005 +66758.701,-0.444037897 +66758.721,-0.426203731 +66758.741,-0.449484965 +66758.761,-0.45026058 +66758.781,-0.461862501 +66758.801,-0.460361619 +66758.821,-0.448807502 +66758.841,-0.435749433 +66758.861,-0.454373383 +66758.881,-0.45134331 +66758.901,-0.431488631 +66758.921,-0.442289084 +66758.941,-0.456822097 +66758.961,-0.467243245 +66758.981,-0.453523307 +66759.001,-0.445628388 +66759.021,-0.44771235 +66759.041,-0.454661452 +66759.061,-0.462355482 +66759.081,-0.451316941 +66759.101,-0.438090601 +66759.121,-0.458924696 +66759.141,-0.460877801 +66759.161,-0.438692401 +66759.181,-0.449828545 +66759.201,-0.450258575 +66759.221,-0.457420755 +66759.241,-0.450821311 +66759.261,-0.445625417 +66759.281,-0.445600303 +66759.301,-0.447405384 +66759.321,-0.462077599 +66759.341,-0.455475669 +66759.361,-0.451096242 +66759.381,-0.431377911 +66759.401,-0.445033301 +66759.421,-0.443181855 +66759.441,-0.450174206 +66759.461,-0.44376651 +66759.481,-0.437970327 +66759.501,-0.452476515 +66759.521,-0.44376969 +66759.541,-0.440480284 +66759.561,-0.447875084 +66759.581,-0.445398269 +66759.601,-0.454895923 +66759.621,-0.447958 +66759.641,-0.438709815 +66759.661,-0.453456053 +66759.681,-0.449855245 +66759.701,-0.450398728 +66759.721,-0.450690013 +66759.741,-0.456219393 +66759.761,-0.459581976 +66759.781,-0.454888426 +66759.801,-0.454660421 +66759.821,-0.450109964 +66759.841,-0.453598277 +66759.861,-0.457744517 +66759.881,-0.454078008 +66759.901,-0.447426518 +66759.921,-0.448393805 +66759.941,-0.454008522 +66759.961,-0.459965426 +66759.981,-0.454069799 +66760.001,-0.446685638 +66760.021,-0.4405012 +66760.041,-0.443980999 +66760.061,-0.444701477 +66760.081,-0.438278061 +66760.101,-0.44411017 +66760.121,-0.44857899 +66760.141,-0.446339175 +66760.161,-0.435742309 +66760.181,-0.444821551 +66760.201,-0.454052559 +66760.221,-0.456783331 +66760.241,-0.446611586 +66760.261,-0.439530452 +66760.281,-0.437130299 +66760.301,-0.456149309 +66760.321,-0.462499904 +66760.341,-0.445945497 +66760.361,-0.456919031 +66760.381,-0.446225342 +66760.401,-0.464253319 +66760.421,-0.464053323 +66760.441,-0.459177856 +66760.461,-0.458189937 +66760.481,-0.461979503 +66760.501,-0.450419348 +66760.521,-0.440651649 +66760.541,-0.449850019 +66760.561,-0.45775918 +66760.581,-0.458492973 +66760.601,-0.464326264 +66760.621,-0.450014068 +66760.641,-0.441413622 +66760.661,-0.454429242 +66760.681,-0.457237956 +66760.701,-0.455290328 +66760.721,-0.450257126 +66760.741,-0.432718854 +66760.761,-0.443036648 +66760.781,-0.449796505 +66760.801,-0.439532693 +66760.821,-0.439001851 +66760.841,-0.45069569 +66760.861,-0.45445783 +66760.881,-0.427424682 +66760.901,-0.43711884 +66760.921,-0.435588413 +66760.941,-0.443700022 +66760.961,-0.452942472 +66760.98099,-0.434066178 +66761.001,-0.454479193 +66761.021,-0.445463533 +66761.041,-0.436295033 +66761.061,-0.447081799 +66761.081,-0.446457131 +66761.101,-0.438931266 +66761.121,-0.452062196 +66761.141,-0.451173869 +66761.161,-0.443838001 +66761.181,-0.460090851 +66761.201,-0.459377016 +66761.221,-0.44090689 +66761.241,-0.449278673 +66761.261,-0.42928203 +66761.281,-0.439813062 +66761.301,-0.456922021 +66761.321,-0.439168829 +66761.341,-0.441340191 +66761.361,-0.443728739 +66761.381,-0.44487961 +66761.401,-0.441453714 +66761.421,-0.451355814 +66761.441,-0.44933823 +66761.461,-0.442549425 +66761.481,-0.440253455 +66761.501,-0.438927915 +66761.521,-0.439349745 +66761.541,-0.432414247 +66761.561,-0.44935007 +66761.581,-0.447611574 +66761.601,-0.43702262 +66761.621,-0.420868297 +66761.641,-0.451460915 +66761.661,-0.450571898 +66761.681,-0.438105379 +66761.701,-0.443311237 +66761.721,-0.437479498 +66761.741,-0.443651475 +66761.761,-0.45636944 +66761.781,-0.440515828 +66761.801,-0.450964818 +66761.821,-0.448268855 +66761.841,-0.456045049 +66761.861,-0.457617396 +66761.881,-0.453595866 +66761.901,-0.442252291 +66761.921,-0.447413138 +66761.941,-0.458087881 +66761.961,-0.454485545 +66761.981,-0.449056594 +66762.001,-0.447164858 +66762.021,-0.460302086 +66762.041,-0.455194145 +66762.061,-0.459939287 +66762.081,-0.447205428 +66762.10101,-0.437619201 +66762.121,-0.455961485 +66762.141,-0.446761838 +66762.161,-0.441874453 +66762.181,-0.429598454 +66762.201,-0.437934288 +66762.221,-0.45841632 +66762.241,-0.428397518 +66762.261,-0.429175573 +66762.281,-0.432795813 +66762.301,-0.443379733 +66762.321,-0.43445946 +66762.341,-0.431875865 +66762.361,-0.4426277 +66762.381,-0.450820626 +66762.401,-0.443042739 +66762.421,-0.43166319 +66762.441,-0.448009581 +66762.461,-0.451673577 +66762.481,-0.442917173 +66762.501,-0.448806537 +66762.521,-0.457560588 +66762.541,-0.465436968 +66762.561,-0.447148491 +66762.581,-0.459978336 +66762.601,-0.459458862 +66762.621,-0.440700106 +66762.641,-0.453690716 +66762.661,-0.446437651 +66762.681,-0.451312679 +66762.701,-0.464726444 +66762.721,-0.439503439 +66762.741,-0.447879312 +66762.761,-0.447658228 +66762.781,-0.430573124 +66762.801,-0.443230719 +66762.821,-0.45621224 +66762.841,-0.445945164 +66762.861,-0.441412105 +66762.881,-0.453042071 +66762.901,-0.465811128 +66762.921,-0.458517448 +66762.941,-0.443034694 +66762.961,-0.442192403 +66762.981,-0.436684283 +66763.001,-0.443053024 +66763.021,-0.442983523 +66763.041,-0.431338744 +66763.061,-0.440367784 +66763.081,-0.447260321 +66763.101,-0.461996859 +66763.121,-0.456394815 +66763.141,-0.440203081 +66763.161,-0.435680944 +66763.181,-0.438192426 +66763.201,-0.453578883 +66763.221,-0.450287299 +66763.241,-0.444352239 +66763.261,-0.448066027 +66763.281,-0.459412581 +66763.301,-0.458661904 +66763.321,-0.444335418 +66763.341,-0.450723309 +66763.361,-0.460218586 +66763.381,-0.458587019 +66763.401,-0.456507385 +66763.421,-0.45240944 +66763.441,-0.460953142 +66763.461,-0.460865222 +66763.481,-0.460581096 +66763.501,-0.459172668 +66763.521,-0.460044548 +66763.541,-0.450976583 +66763.561,-0.45537999 +66763.581,-0.454655356 +66763.601,-0.441790075 +66763.621,-0.444090944 +66763.641,-0.45003398 +66763.661,-0.449884222 +66763.681,-0.449595718 +66763.701,-0.444671217 +66763.721,-0.437917613 +66763.741,-0.421050601 +66763.761,-0.442856549 +66763.781,-0.449813433 +66763.801,-0.435503876 +66763.821,-0.436789707 +66763.841,-0.43367561 +66763.861,-0.43383868 +66763.881,-0.453761297 +66763.901,-0.464821776 +66763.921,-0.447091616 +66763.941,-0.447723315 +66763.961,-0.460350994 +66763.981,-0.451421528 +66764.001,-0.461821594 +66764.021,-0.464066596 +66764.041,-0.466103609 +66764.061,-0.455871142 +66764.081,-0.455653818 +66764.101,-0.462118729 +66764.121,-0.455951709 +66764.141,-0.455045623 +66764.161,-0.455496213 +66764.181,-0.459629482 +66764.201,-0.461636863 +66764.221,-0.461011483 +66764.241,-0.45966196 +66764.261,-0.445433438 +66764.281,-0.447772743 +66764.301,-0.451764781 +66764.321,-0.439439846 +66764.341,-0.450534534 +66764.361,-0.446521316 +66764.381,-0.439418203 +66764.401,-0.449400197 +66764.421,-0.438814996 +66764.441,-0.44280869 +66764.461,-0.445753657 +66764.481,-0.446341638 +66764.501,-0.447739646 +66764.521,-0.444102781 +66764.541,-0.444503498 +66764.561,-0.448714643 +66764.581,-0.446967518 +66764.601,-0.445681431 +66764.621,-0.449927027 +66764.641,-0.440981805 +66764.661,-0.435719311 +66764.681,-0.458464203 +66764.701,-0.457550109 +66764.721,-0.458217044 +66764.741,-0.463802128 +66764.761,-0.455444016 +66764.781,-0.456153683 +66764.801,-0.456950835 +66764.821,-0.455246268 +66764.841,-0.465283585 +66764.861,-0.469243675 +66764.881,-0.452109109 +66764.901,-0.455367361 +66764.921,-0.463827732 +66764.941,-0.462975941 +66764.961,-0.467029506 +66764.981,-0.455350191 +66765.001,-0.454514646 +66765.021,-0.458427053 +66765.041,-0.45868417 +66765.061,-0.439339198 +66765.081,-0.440318047 +66765.101,-0.457210267 +66765.121,-0.453182459 +66765.141,-0.434371828 +66765.161,-0.431253437 +66765.181,-0.450785653 +66765.201,-0.453434228 +66765.221,-0.437464492 +66765.241,-0.434670575 +66765.261,-0.435776207 +66765.281,-0.441150888 +66765.301,-0.442483928 +66765.321,-0.444614088 +66765.341,-0.445945949 +66765.361,-0.453604948 +66765.381,-0.453496804 +66765.401,-0.448388321 +66765.421,-0.441927369 +66765.441,-0.454577044 +66765.461,-0.461702514 +66765.481,-0.460976571 +66765.501,-0.456445376 +66765.521,-0.454213111 +66765.541,-0.458538006 +66765.561,-0.458747307 +66765.581,-0.450763354 +66765.601,-0.454578461 +66765.621,-0.44930566 +66765.641,-0.451638626 +66765.661,-0.445862345 +66765.681,-0.445048703 +66765.701,-0.44497119 +66765.721,-0.450801028 +66765.741,-0.45550838 +66765.761,-0.446391128 +66765.781,-0.447766602 +66765.801,-0.450689096 +66765.821,-0.442560205 +66765.841,-0.435423519 +66765.861,-0.451181013 +66765.881,-0.457323357 +66765.901,-0.446990697 +66765.921,-0.458585965 +66765.941,-0.448815375 +66765.961,-0.434889872 +66765.981,-0.452346967 +66766.001,-0.45525216 +66766.021,-0.444273783 +66766.041,-0.44536491 +66766.061,-0.451318673 +66766.081,-0.456476723 +66766.101,-0.459705822 +66766.121,-0.452286929 +66766.141,-0.451421139 +66766.161,-0.465324386 +66766.181,-0.45859135 +66766.201,-0.461225525 +66766.221,-0.461065504 +66766.241,-0.456757918 +66766.261,-0.468871548 +66766.281,-0.457813144 +66766.301,-0.457691619 +66766.321,-0.465098251 +66766.341,-0.475696592 +66766.361,-0.464528227 +66766.381,-0.455047604 +66766.401,-0.451241827 +66766.421,-0.456014644 +66766.441,-0.462178181 +66766.461,-0.451188346 +66766.481,-0.448746137 +66766.501,-0.439457208 +66766.521,-0.451286775 +66766.541,-0.453729407 +66766.561,-0.441091315 +66766.581,-0.445677573 +66766.601,-0.446840809 +66766.621,-0.445613633 +66766.641,-0.443527343 +66766.661,-0.446181595 +66766.681,-0.447767865 +66766.701,-0.439530344 +66766.721,-0.443859189 +66766.741,-0.452061942 +66766.761,-0.452147075 +66766.781,-0.445537156 +66766.801,-0.453645584 +66766.821,-0.456082824 +66766.841,-0.447201566 +66766.861,-0.44545028 +66766.881,-0.444683413 +66766.901,-0.452483252 +66766.92101,-0.465327668 +66766.941,-0.465424008 +66766.961,-0.466512012 +66766.981,-0.452387445 +66767.001,-0.453418783 +66767.021,-0.456895839 +66767.041,-0.455699301 +66767.061,-0.461380831 +66767.081,-0.460831547 +66767.101,-0.460288109 +66767.121,-0.455760975 +66767.141,-0.448604551 +66767.161,-0.450364105 +66767.181,-0.456782755 +66767.201,-0.45439459 +66767.221,-0.44036624 +66767.241,-0.434506518 +66767.261,-0.451500577 +66767.281,-0.447867342 +66767.301,-0.444548514 +66767.321,-0.452999252 +66767.341,-0.458018412 +66767.361,-0.452300959 +66767.381,-0.452212747 +66767.401,-0.448749883 +66767.421,-0.452920177 +66767.441,-0.441150223 +66767.461,-0.451306673 +66767.481,-0.452162215 +66767.501,-0.450629367 +66767.521,-0.449738003 +66767.541,-0.449790622 +66767.561,-0.44652632 +66767.581,-0.451839966 +66767.601,-0.465605591 +66767.621,-0.452880365 +66767.641,-0.462809903 +66767.661,-0.45486071 +66767.681,-0.452093391 +66767.701,-0.461142554 +66767.721,-0.454980961 +66767.741,-0.452083162 +66767.761,-0.454146535 +66767.781,-0.45727155 +66767.801,-0.455662268 +66767.821,-0.456431235 +66767.841,-0.44629602 +66767.861,-0.446632114 +66767.881,-0.442949938 +66767.901,-0.456799047 +66767.921,-0.456070448 +66767.941,-0.447490875 +66767.961,-0.447814441 +66767.981,-0.449760091 +66768.001,-0.449682322 +66768.021,-0.454847622 +66768.041,-0.447336318 +66768.061,-0.443191394 +66768.081,-0.449518519 +66768.101,-0.448926387 +66768.121,-0.448563394 +66768.141,-0.45411762 +66768.161,-0.441825671 +66768.181,-0.445536712 +66768.201,-0.450180019 +66768.221,-0.447222528 +66768.241,-0.46151691 +66768.261,-0.45948113 +66768.281,-0.463256344 +66768.301,-0.443379854 +66768.321,-0.444293624 +66768.341,-0.448527162 +66768.361,-0.458263543 +66768.381,-0.455703967 +66768.401,-0.448355716 +66768.421,-0.45548414 +66768.441,-0.458157003 +66768.461,-0.457584613 +66768.481,-0.474065156 +66768.501,-0.472380194 +66768.521,-0.453304397 +66768.541,-0.465079289 +66768.561,-0.465982202 +66768.581,-0.458509925 +66768.601,-0.453141668 +66768.621,-0.452679663 +66768.641,-0.45117902 +66768.661,-0.445404231 +66768.681,-0.453712689 +66768.701,-0.454683732 +66768.721,-0.438806983 +66768.741,-0.44942242 +66768.761,-0.441695534 +66768.781,-0.447276125 +66768.801,-0.443181782 +66768.821,-0.452097044 +66768.841,-0.443486291 +66768.861,-0.438547758 +66768.881,-0.451185265 +66768.901,-0.445954549 +66768.921,-0.44675884 +66768.941,-0.442063789 +66768.961,-0.451352117 +66768.981,-0.469228123 +66769.001,-0.439515736 +66769.021,-0.442936082 +66769.041,-0.450692112 +66769.061,-0.447677682 +66769.081,-0.454362462 +66769.101,-0.453421354 +66769.121,-0.452041624 +66769.141,-0.460798783 +66769.161,-0.46574468 +66769.181,-0.45063414 +66769.201,-0.44037934 +66769.221,-0.449277892 +66769.241,-0.450181337 +66769.261,-0.456500578 +66769.281,-0.458193576 +66769.301,-0.451525549 +66769.321,-0.44721303 +66769.341,-0.455428059 +66769.361,-0.443739073 +66769.381,-0.454045147 +66769.401,-0.447010456 +66769.421,-0.445726608 +66769.441,-0.439079734 +66769.461,-0.442010489 +66769.481,-0.447608838 +66769.501,-0.446577159 +66769.521,-0.438648886 +66769.541,-0.444362856 +66769.561,-0.447915017 +66769.581,-0.448082575 +66769.601,-0.447494599 +66769.621,-0.452629303 +66769.641,-0.448301912 +66769.661,-0.453546597 +66769.681,-0.463424654 +66769.701,-0.466616524 +66769.721,-0.445198376 +66769.741,-0.448577459 +66769.761,-0.454773064 +66769.781,-0.458880298 +66769.801,-0.466480675 +66769.821,-0.465585753 +66769.841,-0.458718588 +66769.861,-0.452703463 +66769.881,-0.457166091 +66769.901,-0.45517951 +66769.921,-0.45953022 +66769.941,-0.459085691 +66769.961,-0.472553666 +66769.981,-0.471897362 +66770.001,-0.453856119 +66770.021,-0.460406646 +66770.041,-0.465555329 +66770.061,-0.457668223 +66770.081,-0.464275167 +66770.101,-0.458345887 +66770.121,-0.459886233 +66770.141,-0.453715966 +66770.161,-0.454065022 +66770.181,-0.460240719 +66770.201,-0.451457465 +66770.221,-0.449041813 +66770.241,-0.437890832 +66770.261,-0.457375486 +66770.281,-0.455270077 +66770.301,-0.441467826 +66770.321,-0.44602223 +66770.341,-0.457259974 +66770.361,-0.449793069 +66770.381,-0.442817144 +66770.401,-0.451095243 +66770.421,-0.459249764 +66770.441,-0.459160159 +66770.461,-0.444118284 +66770.481,-0.450975348 +66770.501,-0.45551827 +66770.521,-0.452698031 +66770.541,-0.45673755 +66770.561,-0.459833294 +66770.581,-0.459909345 +66770.601,-0.461608067 +66770.621,-0.466968413 +66770.641,-0.46306192 +66770.661,-0.459049467 +66770.681,-0.447349839 +66770.701,-0.467031887 +66770.721,-0.464677465 +66770.741,-0.453144703 +66770.761,-0.456680257 +66770.781,-0.459640047 +66770.801,-0.462210458 +66770.821,-0.460406958 +66770.841,-0.457916431 +66770.861,-0.455324328 +66770.881,-0.455282588 +66770.901,-0.454423403 +66770.921,-0.462306902 +66770.941,-0.452123363 +66770.961,-0.45233592 +66770.981,-0.472503025 +66771.001,-0.447599359 +66771.021,-0.460526856 +66771.041,-0.451680516 +66771.061,-0.460268116 +66771.081,-0.461708361 +66771.101,-0.447265445 +66771.121,-0.442858506 +66771.141,-0.446913067 +66771.161,-0.457363296 +66771.181,-0.472493189 +66771.201,-0.449825074 +66771.221,-0.436938638 +66771.241,-0.452449886 +66771.261,-0.440710691 +66771.281,-0.462096458 +66771.301,-0.455759895 +66771.321,-0.443488331 +66771.341,-0.446747486 +66771.361,-0.453006333 +66771.381,-0.446053908 +66771.401,-0.451409219 +66771.421,-0.455442664 +66771.441,-0.452574671 +66771.461,-0.455835766 +66771.481,-0.445456048 +66771.501,-0.459012569 +66771.521,-0.447181154 +66771.541,-0.442982879 +66771.561,-0.452749 +66771.581,-0.474472304 +66771.601,-0.461952678 +66771.621,-0.461971124 +66771.641,-0.450289641 +66771.661,-0.460351263 +66771.681,-0.45415916 +66771.701,-0.435814211 +66771.721,-0.453122701 +66771.74099,-0.457957192 +66771.761,-0.429525837 +66771.781,-0.452879211 +66771.801,-0.447755005 +66771.821,-0.454029862 +66771.841,-0.455203142 +66771.861,-0.459582226 +66771.881,-0.450285844 +66771.901,-0.434659007 +66771.921,-0.454774175 +66771.941,-0.439759464 +66771.961,-0.455298985 +66771.981,-0.455055002 +66772.001,-0.439139577 +66772.021,-0.44979096 +66772.041,-0.445143968 +66772.061,-0.464938185 +66772.081,-0.447099817 +66772.101,-0.448960199 +66772.121,-0.467574492 +66772.141,-0.458446662 +66772.161,-0.468169595 +66772.181,-0.469711768 +66772.201,-0.456754904 +66772.221,-0.470180192 +66772.241,-0.464641485 +66772.261,-0.44500407 +66772.281,-0.455871992 +66772.301,-0.466488205 +66772.321,-0.462281862 +66772.341,-0.455885375 +66772.361,-0.455805826 +66772.381,-0.45200822 +66772.401,-0.444688467 +66772.421,-0.44524737 +66772.441,-0.448008155 +66772.461,-0.452751282 +66772.481,-0.449922721 +66772.501,-0.450339561 +66772.521,-0.450945722 +66772.541,-0.453688821 +66772.561,-0.455824824 +66772.581,-0.45891115 +66772.601,-0.458596994 +66772.621,-0.460585557 +66772.641,-0.472888481 +66772.661,-0.460549263 +66772.681,-0.440783938 +66772.701,-0.454341285 +66772.721,-0.46138661 +66772.741,-0.447500164 +66772.761,-0.451701164 +66772.781,-0.459734591 +66772.801,-0.457117701 +66772.821,-0.469713036 +66772.841,-0.459774681 +66772.861,-0.467558799 +66772.881,-0.465497294 +66772.901,-0.455023737 +66772.921,-0.45778857 +66772.941,-0.446693986 +66772.961,-0.467446157 +66772.981,-0.466193231 +66773.001,-0.445494209 +66773.021,-0.449220952 +66773.041,-0.460455506 +66773.061,-0.461977105 +66773.081,-0.458516389 +66773.101,-0.452956922 +66773.121,-0.456768335 +66773.141,-0.464846025 +66773.161,-0.457543277 +66773.181,-0.454638451 +66773.201,-0.450193674 +66773.221,-0.445085586 +66773.241,-0.45070812 +66773.261,-0.455827764 +66773.281,-0.448879393 +66773.301,-0.44366925 +66773.321,-0.449145792 +66773.341,-0.440286983 +66773.361,-0.448209265 +66773.381,-0.465394867 +66773.401,-0.445743504 +66773.421,-0.447291301 +66773.441,-0.444958732 +66773.461,-0.438032043 +66773.481,-0.459273181 +66773.501,-0.470511337 +66773.521,-0.446718197 +66773.541,-0.448788347 +66773.561,-0.461715382 +66773.581,-0.462751086 +66773.601,-0.456910255 +66773.621,-0.456616208 +66773.641,-0.450590812 +66773.661,-0.453553831 +66773.681,-0.454218033 +66773.701,-0.445118625 +66773.721,-0.453556893 +66773.741,-0.464113004 +66773.761,-0.463115347 +66773.781,-0.450567224 +66773.801,-0.449369672 +66773.821,-0.449251671 +66773.841,-0.44720569 +66773.861,-0.441254153 +66773.881,-0.446417983 +66773.901,-0.457026528 +66773.921,-0.464869448 +66773.941,-0.453695399 +66773.961,-0.454302726 +66773.981,-0.448689556 +66774.001,-0.448894635 +66774.021,-0.449622051 +66774.041,-0.448701701 +66774.061,-0.455456705 +66774.081,-0.461510723 +66774.101,-0.461419113 +66774.121,-0.449076999 +66774.141,-0.459590545 +66774.161,-0.467770451 +66774.181,-0.438180939 +66774.201,-0.450966986 +66774.221,-0.455205217 +66774.241,-0.460045975 +66774.261,-0.456666278 +66774.281,-0.459186914 +66774.301,-0.451209824 +66774.321,-0.448623933 +66774.341,-0.46741343 +66774.361,-0.458371144 +66774.381,-0.463192998 +66774.401,-0.468984306 +66774.421,-0.456823306 +66774.441,-0.46756155 +66774.461,-0.458430127 +66774.481,-0.455204934 +66774.501,-0.46672663 +66774.521,-0.468300467 +66774.541,-0.471555294 +66774.561,-0.452909096 +66774.581,-0.444640926 +66774.601,-0.448828749 +66774.621,-0.456104252 +66774.641,-0.45721068 +66774.661,-0.446333808 +66774.681,-0.453177604 +66774.701,-0.450677791 +66774.721,-0.44338853 +66774.741,-0.446036433 +66774.761,-0.45519816 +66774.781,-0.461081191 +66774.801,-0.451333575 +66774.821,-0.457979165 +66774.841,-0.457238983 +66774.861,-0.470807371 +66774.881,-0.486293611 +66774.901,-0.46123731 +66774.921,-0.456333118 +66774.941,-0.468404937 +66774.961,-0.466793383 +66774.981,-0.455731474 +66775.001,-0.43606286 +66775.021,-0.45657342 +66775.041,-0.47180433 +66775.061,-0.456676742 +66775.081,-0.45073725 +66775.101,-0.462519439 +66775.121,-0.460131799 +66775.141,-0.46971035 +66775.161,-0.45882827 +66775.181,-0.440632195 +66775.201,-0.456341235 +66775.221,-0.474726753 +66775.241,-0.468628237 +66775.261,-0.449798145 +66775.281,-0.447961447 +66775.301,-0.450933206 +66775.321,-0.467779329 +66775.341,-0.457983624 +66775.361,-0.416166502 +66775.381,-0.44017337 +66775.401,-0.459860685 +66775.421,-0.447653645 +66775.441,-0.450314247 +66775.461,-0.442841942 +66775.481,-0.443482839 +66775.501,-0.450545559 +66775.521,-0.447523602 +66775.541,-0.443620315 +66775.561,-0.463283258 +66775.581,-0.469117576 +66775.601,-0.457330944 +66775.621,-0.45706649 +66775.641,-0.443011439 +66775.661,-0.456075844 +66775.681,-0.467144435 +66775.701,-0.453947157 +66775.721,-0.438803384 +66775.741,-0.468740732 +66775.761,-0.480950045 +66775.781,-0.459156285 +66775.801,-0.45497938 +66775.821,-0.444814512 +66775.841,-0.441815448 +66775.861,-0.472700103 +66775.881,-0.461072058 +66775.901,-0.448582871 +66775.921,-0.472388236 +66775.941,-0.461714099 +66775.961,-0.45463954 +66775.981,-0.445671566 +66776.001,-0.458128547 +66776.021,-0.462329552 +66776.041,-0.45965875 +66776.061,-0.449614896 +66776.081,-0.441134063 +66776.101,-0.455328477 +66776.121,-0.447782722 +66776.141,-0.455768344 +66776.161,-0.459394237 +66776.181,-0.442757697 +66776.201,-0.448499279 +66776.221,-0.452428392 +66776.241,-0.440313087 +66776.261,-0.441221537 +66776.281,-0.453294048 +66776.301,-0.460144647 +66776.321,-0.459579912 +66776.341,-0.447289565 +66776.361,-0.443737775 +66776.381,-0.465820226 +66776.401,-0.471171619 +66776.421,-0.449861348 +66776.441,-0.45276275 +66776.461,-0.453531233 +66776.481,-0.477327044 +66776.501,-0.465745851 +66776.521,-0.437342776 +66776.541,-0.437011225 +66776.56099,-0.465818344 +66776.581,-0.466199915 +66776.601,-0.44233836 +66776.621,-0.441216948 +66776.641,-0.453340841 +66776.661,-0.462733977 +66776.681,-0.464264559 +66776.701,-0.447109293 +66776.721,-0.44665557 +66776.741,-0.474965549 +66776.761,-0.469145149 +66776.781,-0.464122757 +66776.801,-0.444655369 +66776.821,-0.441522514 +66776.841,-0.460168406 +66776.861,-0.447121143 +66776.881,-0.438275128 +66776.901,-0.443795894 +66776.921,-0.458069367 +66776.941,-0.462387374 +66776.961,-0.456712073 +66776.981,-0.432389496 +66777.001,-0.430239069 +66777.021,-0.470652862 +66777.041,-0.46102219 +66777.061,-0.443230588 +66777.081,-0.458121645 +66777.101,-0.45997255 +66777.121,-0.459548086 +66777.141,-0.444816754 +66777.161,-0.435797478 +66777.181,-0.438868411 +66777.201,-0.456339188 +66777.221,-0.468897676 +66777.241,-0.445134031 +66777.261,-0.452797719 +66777.281,-0.445693795 +66777.301,-0.460599051 +66777.321,-0.456426883 +66777.341,-0.430495046 +66777.361,-0.439643756 +66777.381,-0.46274556 +66777.401,-0.451731019 +66777.421,-0.438407776 +66777.441,-0.448306386 +66777.461,-0.454237608 +66777.481,-0.470190528 +66777.501,-0.450986246 +66777.521,-0.436282895 +66777.541,-0.457222476 +66777.561,-0.456676434 +66777.581,-0.455737755 +66777.601,-0.436943452 +66777.621,-0.445047763 +66777.641,-0.449016572 +66777.661,-0.449067824 +66777.68101,-0.442087688 +66777.701,-0.440013492 +66777.721,-0.439048794 +66777.741,-0.448908352 +66777.761,-0.453742314 +66777.781,-0.440004641 +66777.801,-0.436745746 +66777.821,-0.450495093 +66777.841,-0.467140851 +66777.861,-0.460919254 +66777.881,-0.44086304 +66777.901,-0.43908771 +66777.921,-0.454678524 +66777.941,-0.451580771 +66777.961,-0.450964345 +66777.981,-0.452224287 +66778.001,-0.451206366 +66778.021,-0.46446261 +66778.041,-0.459691085 +66778.061,-0.432730705 +66778.081,-0.447989861 +66778.101,-0.457669822 +66778.121,-0.475779634 +66778.141,-0.461960847 +66778.161,-0.445591248 +66778.181,-0.451729432 +66778.201,-0.462487838 +66778.221,-0.44771392 +66778.241,-0.435341168 +66778.261,-0.447766877 +66778.281,-0.452207637 +66778.301,-0.446648311 +66778.321,-0.45680851 +66778.341,-0.428427633 +66778.361,-0.442669239 +66778.381,-0.470678113 +66778.401,-0.448869107 +66778.421,-0.434322552 +66778.441,-0.447356061 +66778.461,-0.469018886 +66778.481,-0.458871104 +66778.501,-0.448610254 +66778.521,-0.444695916 +66778.541,-0.443475349 +66778.561,-0.445945437 +66778.581,-0.440430435 +66778.601,-0.438834463 +66778.621,-0.445830746 +66778.641,-0.442646367 +66778.661,-0.46335927 +66778.681,-0.444740801 +66778.701,-0.437680368 +66778.721,-0.45399815 +66778.741,-0.455936016 +66778.761,-0.446125646 +66778.781,-0.442144104 +66778.801,-0.437225735 +66778.821,-0.446134394 +66778.841,-0.462805003 +66778.861,-0.449158424 +66778.881,-0.447586536 +66778.901,-0.459848478 +66778.921,-0.466981832 +66778.941,-0.466387585 +66778.961,-0.445836094 +66778.981,-0.437756084 +66779.001,-0.452523303 +66779.021,-0.467824032 +66779.041,-0.441821805 +66779.061,-0.429843232 +66779.081,-0.44256383 +66779.101,-0.463883652 +66779.121,-0.450923124 +66779.141,-0.448284334 +66779.161,-0.460721038 +66779.181,-0.457891388 +66779.201,-0.463022207 +66779.221,-0.4525523 +66779.241,-0.43761072 +66779.261,-0.449232993 +66779.281,-0.458634447 +66779.301,-0.456304139 +66779.321,-0.447540965 +66779.341,-0.440496766 +66779.361,-0.448503798 +66779.381,-0.46439309 +66779.401,-0.465367625 +66779.421,-0.441425489 +66779.441,-0.438789074 +66779.461,-0.44602623 +66779.481,-0.456957286 +66779.501,-0.456339736 +66779.521,-0.438895067 +66779.541,-0.444388903 +66779.561,-0.476351492 +66779.581,-0.4417485 +66779.601,-0.453396761 +66779.621,-0.453874235 +66779.641,-0.455539064 +66779.661,-0.459440571 +66779.681,-0.44003601 +66779.701,-0.438444216 +66779.721,-0.447896611 +66779.741,-0.463406654 +66779.761,-0.455095397 +66779.781,-0.445057556 +66779.801,-0.438273956 +66779.821,-0.445427588 +66779.841,-0.455374474 +66779.861,-0.459076609 +66779.881,-0.446525088 +66779.901,-0.447551241 +66779.921,-0.456933058 +66779.941,-0.436205713 +66779.961,-0.442285972 +66779.981,-0.452196164 +66780.001,-0.46089459 +66780.021,-0.453994476 +66780.041,-0.457064695 +66780.061,-0.437761915 +66780.081,-0.440149378 +66780.101,-0.446682461 +66780.121,-0.452674463 +66780.141,-0.451593311 +66780.161,-0.437984901 +66780.181,-0.452212911 +66780.201,-0.454947594 +66780.221,-0.446512869 +66780.241,-0.455659978 +66780.261,-0.453182297 +66780.281,-0.458248488 +66780.301,-0.456967686 +66780.321,-0.449793457 +66780.341,-0.438717859 +66780.361,-0.45174453 +66780.381,-0.463872903 +66780.401,-0.448956795 +66780.421,-0.446520766 +66780.441,-0.453883391 +66780.461,-0.459433848 +66780.481,-0.458638565 +66780.501,-0.45127812 +66780.521,-0.448406916 +66780.541,-0.458425669 +66780.561,-0.466392668 +66780.581,-0.446457117 +66780.601,-0.428632876 +66780.621,-0.439000652 +66780.641,-0.460520274 +66780.661,-0.451644288 +66780.681,-0.440109198 +66780.701,-0.455478075 +66780.721,-0.441079442 +66780.741,-0.444969896 +66780.761,-0.458573573 +66780.781,-0.45276974 +66780.801,-0.460438923 +66780.821,-0.453375966 +66780.841,-0.446908625 +66780.861,-0.448011777 +66780.881,-0.461528579 +66780.901,-0.457329477 +66780.921,-0.452960972 +66780.941,-0.445202733 +66780.961,-0.450862381 +66780.981,-0.453383143 +66781.001,-0.447071177 +66781.021,-0.441771248 +66781.041,-0.443168386 +66781.061,-0.448624935 +66781.081,-0.441658461 +66781.101,-0.437237365 +66781.121,-0.441374635 +66781.141,-0.446410407 +66781.161,-0.451328637 +66781.181,-0.464812801 +66781.201,-0.447894544 +66781.221,-0.435556141 +66781.241,-0.455976457 +66781.261,-0.463493376 +66781.281,-0.450379053 +66781.301,-0.440011612 +66781.321,-0.438520757 +66781.341,-0.461280733 +66781.361,-0.469841222 +66781.38099,-0.441074497 +66781.401,-0.437338877 +66781.421,-0.45009311 +66781.441,-0.458002758 +66781.461,-0.459027016 +66781.481,-0.443017265 +66781.501,-0.440440185 +66781.521,-0.456507865 +66781.541,-0.45866397 +66781.561,-0.459704888 +66781.581,-0.454016877 +66781.601,-0.449249431 +66781.621,-0.464252871 +66781.641,-0.45890697 +66781.661,-0.448195521 +66781.681,-0.449162332 +66781.701,-0.463972611 +66781.721,-0.447937467 +66781.741,-0.43546391 +66781.761,-0.442908421 +66781.781,-0.440075264 +66781.801,-0.450748834 +66781.821,-0.451098385 +66781.841,-0.424594442 +66781.861,-0.427429389 +66781.881,-0.460179787 +66781.901,-0.464101864 +66781.921,-0.444500188 +66781.941,-0.43193414 +66781.961,-0.445871509 +66781.981,-0.445834394 +66782.001,-0.446490234 +66782.021,-0.431041027 +66782.041,-0.437585499 +66782.061,-0.448130976 +66782.081,-0.440473211 +66782.101,-0.436990468 +66782.121,-0.44410279 +66782.141,-0.441244356 +66782.161,-0.439599662 +66782.181,-0.462547766 +66782.201,-0.446340833 +66782.221,-0.446914377 +66782.241,-0.448795488 +66782.261,-0.462127757 +66782.281,-0.46710291 +66782.301,-0.445232134 +66782.321,-0.444328496 +66782.341,-0.462003895 +66782.361,-0.459461395 +66782.381,-0.452747112 +66782.401,-0.463462441 +66782.421,-0.456132838 +66782.441,-0.458650539 +66782.461,-0.458790279 +66782.481,-0.440667159 +66782.50101,-0.447327341 +66782.521,-0.46438206 +66782.541,-0.444419124 +66782.561,-0.436276685 +66782.581,-0.447037932 +66782.601,-0.44504249 +66782.621,-0.442657422 +66782.641,-0.443535236 +66782.661,-0.440230178 +66782.681,-0.425554551 +66782.701,-0.445175188 +66782.721,-0.432528083 +66782.741,-0.421677624 +66782.761,-0.431189947 +66782.781,-0.440742676 +66782.801,-0.441532695 +66782.821,-0.443589984 +66782.841,-0.433680329 +66782.861,-0.429839593 +66782.881,-0.452644037 +66782.901,-0.449655315 +66782.921,-0.426278484 +66782.941,-0.421599063 +66782.961,-0.442605877 +66782.981,-0.468087317 +66783.001,-0.467418257 +66783.021,-0.443698453 +66783.041,-0.452224013 +66783.061,-0.452394912 +66783.081,-0.460962278 +66783.101,-0.465723835 +66783.121,-0.447848224 +66783.141,-0.454030795 +66783.161,-0.463404322 +66783.181,-0.458821407 +66783.201,-0.456961673 +66783.221,-0.447366045 +66783.241,-0.452693099 +66783.261,-0.459585116 +66783.281,-0.450403741 +66783.301,-0.437469355 +66783.321,-0.440394364 +66783.341,-0.449579124 +66783.361,-0.450244524 +66783.381,-0.451344943 +66783.401,-0.437672392 +66783.421,-0.437036327 +66783.441,-0.44675311 +66783.461,-0.449215146 +66783.481,-0.433804321 +66783.501,-0.426568385 +66783.521,-0.454016127 +66783.541,-0.459187174 +66783.561,-0.447022785 +66783.581,-0.444193938 +66783.601,-0.458749437 +66783.621,-0.46235729 +66783.641,-0.455145 +66783.661,-0.428423897 +66783.681,-0.446892894 +66783.701,-0.467954358 +66783.721,-0.465532734 +66783.741,-0.428294024 +66783.761,-0.449095376 +66783.781,-0.457730805 +66783.801,-0.459778207 +66783.821,-0.45517401 +66783.841,-0.457273553 +66783.861,-0.445057982 +66783.881,-0.446142047 +66783.901,-0.450812506 +66783.921,-0.43551135 +66783.941,-0.446652727 +66783.961,-0.446214797 +66783.981,-0.443954356 +66784.001,-0.449354234 +66784.021,-0.43896288 +66784.041,-0.442132757 +66784.061,-0.464025935 +66784.081,-0.450688347 +66784.101,-0.443618575 +66784.121,-0.44556808 +66784.141,-0.450527393 +66784.161,-0.452883446 +66784.181,-0.462097508 +66784.201,-0.437309465 +66784.221,-0.418890846 +66784.241,-0.445622923 +66784.261,-0.435499261 +66784.281,-0.429287745 +66784.301,-0.43467736 +66784.321,-0.438092059 +66784.341,-0.444938356 +66784.361,-0.438464132 +66784.381,-0.420902916 +66784.401,-0.431189599 +66784.421,-0.464015828 +66784.441,-0.461410018 +66784.461,-0.439105891 +66784.481,-0.439738474 +66784.501,-0.454382741 +66784.521,-0.46335289 +66784.541,-0.453439613 +66784.561,-0.423501176 +66784.581,-0.444612364 +66784.601,-0.477087414 +66784.621,-0.451435649 +66784.641,-0.438896518 +66784.661,-0.446673892 +66784.681,-0.452012967 +66784.701,-0.466084169 +66784.721,-0.464244345 +66784.741,-0.444121553 +66784.761,-0.441638915 +66784.781,-0.465876185 +66784.801,-0.458346147 +66784.821,-0.448889796 +66784.841,-0.449105757 +66784.861,-0.44255432 +66784.881,-0.462523216 +66784.901,-0.455385975 +66784.921,-0.43504577 +66784.941,-0.450964971 +66784.961,-0.453875575 +66784.981,-0.444704884 +66785.001,-0.440270663 +66785.021,-0.44071519 +66785.041,-0.435913702 +66785.061,-0.447468387 +66785.081,-0.453508794 +66785.101,-0.425060306 +66785.121,-0.436519135 +66785.141,-0.446559983 +66785.161,-0.437383191 +66785.181,-0.436383881 +66785.201,-0.424789042 +66785.221,-0.429608377 +66785.241,-0.452794535 +66785.261,-0.448089011 +66785.281,-0.433226262 +66785.301,-0.449190511 +66785.321,-0.448314238 +66785.341,-0.449996638 +66785.361,-0.462886226 +66785.381,-0.441593014 +66785.401,-0.453155974 +66785.421,-0.472718475 +66785.441,-0.456800099 +66785.461,-0.454766586 +66785.481,-0.465807257 +66785.501,-0.464222245 +66785.521,-0.462272179 +66785.541,-0.464623623 +66785.561,-0.457957189 +66785.581,-0.468588194 +66785.601,-0.476318404 +66785.621,-0.462746789 +66785.641,-0.449384197 +66785.661,-0.456077793 +66785.681,-0.452568047 +66785.701,-0.459679474 +66785.721,-0.442534115 +66785.741,-0.430664694 +66785.761,-0.450579921 +66785.781,-0.464359679 +66785.801,-0.445116092 +66785.821,-0.436066041 +66785.841,-0.442384756 +66785.861,-0.44329575 +66785.881,-0.442571105 +66785.901,-0.433736904 +66785.921,-0.426536467 +66785.941,-0.444964895 +66785.961,-0.450825181 +66785.981,-0.438548495 +66786.001,-0.446600312 +66786.021,-0.446865353 +66786.041,-0.462583445 +66786.061,-0.481720438 +66786.081,-0.487386405 +66786.101,-0.496222383 +66786.121,-0.54308276 +66786.141,-0.618010534 +66786.161,-0.65868776 +66786.181,-0.696783872 +66786.20099,-0.75543364 +66786.221,-0.799586723 +66786.241,-0.816447887 +66786.261,-0.783538171 +66786.281,-0.778979438 +66786.301,-0.830119417 +66786.321,-0.899893266 +66786.341,-0.970509346 +66786.361,-0.98862003 +66786.381,-0.917810684 +66786.401,-0.923603237 +66786.421,-0.987448821 +66786.441,-0.961751098 +66786.461,-0.81866887 +66786.481,-0.64640635 +66786.501,-0.631466299 +66786.521,-0.705870838 +66786.541,-0.697198576 +66786.561,-0.579057403 +66786.581,-0.592286981 +66786.601,-0.82185567 +66786.621,-0.881579545 +66786.641,-0.269151794 +66786.661,0.326307066 +66786.681,0.004687023 +66786.701,-0.319012734 +66786.721,0.073970027 +66786.741,0.413248215 +66786.761,0.233017962 +66786.781,-0.014003845 +66786.801,-0.039304264 +66786.821,0.200733111 +66786.841,0.132282913 +66786.861,-0.322531822 +66786.881,-0.073929204 +66786.901,1.009688308 +66786.921,1.50559966 +66786.941,1.014510054 +66786.961,0.564270644 +66786.981,0.860618724 +66787.001,1.165310925 +66787.021,1.123266185 +66787.041,1.111320868 +66787.061,1.318640045 +66787.081,1.420649641 +66787.101,1.091148404 +66787.121,0.895722639 +66787.141,1.432965926 +66787.161,2.194642445 +66787.181,2.682614587 +66787.201,3.025722661 +66787.221,3.664326326 +66787.241,4.267682169 +66787.261,4.333694338 +66787.281,4.315418574 +66787.301,4.745399052 +66787.32101,5.903994277 +66787.341,8.964610385 +66787.361,13.87138711 +66787.381,17.82481301 +66787.401,20.22394847 +66787.421,22.2244042 +66787.441,21.71034667 +66787.461,18.66570554 +66787.481,14.84851901 +66787.501,10.94548633 +66787.521,7.029225296 +66787.541,3.227965918 +66787.561,0.056482748 +66787.581,-4.119191573 +66787.601,-9.563436355 +66787.621,-14.19104133 +66787.641,-16.44495727 +66787.661,-18.45260339 +66787.681,-21.56057554 +66787.701,-24.70664441 +66787.721,-26.01687507 +66787.741,-25.41801196 +66787.761,-24.60136121 +66787.781,-24.3483792 +66787.801,-23.32878884 +66787.821,-20.17104638 +66787.841,-16.00780908 +66787.861,-12.77712715 +66787.881,-10.2594005 +66787.901,-6.617517674 +66787.921,-1.278908876 +66787.941,3.674828712 +66787.961,7.225111562 +66787.981,9.606368169 +66788.001,12.29814024 +66788.021,17.02948474 +66788.041,21.34644188 +66788.061,22.70745242 +66788.081,22.36187841 +66788.101,23.04251608 +66788.121,24.78743205 +66788.141,24.88929028 +66788.161,21.97265876 +66788.181,18.44085962 +66788.201,16.60629455 +66788.221,15.11123143 +66788.241,11.17865417 +66788.261,5.179562348 +66788.281,0.913813339 +66788.301,-0.346133881 +66788.321,-3.115676684 +66788.341,-9.417700731 +66788.361,-15.37954131 +66788.381,-17.35488632 +66788.401,-17.46671347 +66788.421,-19.96923043 +66788.441,-24.28732561 +66788.461,-26.2177312 +66788.481,-24.46535859 +66788.501,-22.37790486 +66788.521,-22.58625934 +66788.541,-23.06402604 +66788.561,-20.13445597 +66788.581,-14.51877087 +66788.601,-10.52345571 +66788.621,-9.1529374 +66788.641,-6.782710842 +66788.661,-1.171858913 +66788.681,4.92286687 +66788.701,8.294437391 +66788.721,9.266525543 +66788.741,11.19173274 +66788.761,16.77380664 +66788.781,21.8438023 +66788.801,22.43188039 +66788.821,20.74930296 +66788.841,21.34858941 +66788.861,24.29649778 +66788.881,24.79723631 +66788.901,20.6958865 +66788.921,16.25500785 +66788.941,15.23259255 +66788.961,14.99225042 +66788.981,10.83028761 +66789.001,3.836136936 +66789.021,-0.410784888 +66789.041,-0.50856802 +66789.061,-2.780321079 +66789.081,-9.52831008 +66789.101,-15.95970433 +66789.121,-17.31994839 +66789.141,-16.57517813 +66789.161,-18.9466401 +66789.181,-24.06015878 +66789.201,-26.12402131 +66789.221,-23.38837343 +66789.241,-20.47468039 +66789.261,-21.430143 +66789.281,-22.51658648 +66789.301,-18.48011178 +66789.321,-12.05337696 +66789.341,-8.727787051 +66789.361,-8.4265509 +66789.381,-5.870639286 +66789.401,0.739629634 +66789.421,6.863219699 +66789.441,8.90049084 +66789.461,8.82139791 +66789.481,11.52989348 +66789.501,18.13097323 +66789.521,22.39904768 +66789.541,21.22101042 +66789.561,19.11455143 +66789.581,20.9087379 +66789.601,24.40662399 +66789.621,23.54696801 +66789.641,18.1190511 +66789.661,14.22086642 +66789.681,14.58694272 +66789.701,14.22452684 +66789.721,8.53388142 +66789.741,1.532104135 +66789.761,-1.188264126 +66789.781,-0.447989613 +66789.801,-3.986980473 +66789.821,-11.61907525 +66789.841,-16.65531367 +66789.861,-16.648726 +66789.881,-15.69364441 +66789.901,-18.40443026 +66789.921,-23.77975968 +66789.941,-25.56477242 +66789.961,-22.1020402 +66789.981,-19.16969459 +66790.001,-20.40004541 +66790.021,-21.97860081 +66790.041,-17.975832 +66790.061,-10.72331824 +66790.081,-7.888093171 +66790.101,-8.102969132 +66790.121,-4.892379613 +66790.141,2.284274407 +66790.161,7.751278496 +66790.181,8.698995248 +66790.201,8.435783983 +66790.221,11.98590849 +66790.241,18.8218226 +66790.261,21.99755441 +66790.281,19.81276688 +66790.301,18.03696849 +66790.321,20.73737304 +66790.341,24.00013331 +66790.361,21.93479808 +66790.381,16.12652506 +66790.401,13.16648198 +66790.421,14.25564423 +66790.441,13.15416527 +66790.461,6.696111726 +66790.481,0.325090272 +66790.501,-1.195301998 +66790.521,-0.63111665 +66790.541,-5.1235137 +66790.561,-12.62493008 +66790.581,-16.62686546 +66790.601,-15.58649937 +66790.621,-15.48974707 +66790.641,-19.72547138 +66790.661,-24.31438176 +66790.681,-23.7692028 +66790.701,-19.79166959 +66790.721,-18.38537346 +66790.741,-20.47657922 +66790.761,-20.54882528 +66790.781,-15.39201792 +66790.801,-9.397658838 +66790.821,-7.614159224 +66790.841,-7.745014243 +66790.861,-4.161220564 +66790.881,2.905655685 +66790.901,7.774937978 +66790.921,8.371316981 +66790.941,8.236593826 +66790.961,12.01139139 +66790.981,18.55197961 +66791.001,21.17323952 +66791.021,18.85278148 +66791.041,17.38352146 +66791.061,20.21527323 +66791.081,23.06933612 +66791.101,20.68049287 +66791.121,15.07130886 +66791.141,12.59098876 +66791.161,13.7271014 +66791.181,12.22451296 +66791.201,5.789851172 +66791.221,0.033589539 +66791.241,-1.08384012 +66791.261,-0.895138747 +66791.281,-5.55612806 +66791.301,-12.7351004 +66791.321,-16.07397297 +66791.341,-14.92416361 +66791.361,-15.1615933 +66791.381,-19.47349178 +66791.401,-23.53871359 +66791.421,-22.59118642 +66791.441,-18.82918264 +66791.461,-17.85383203 +66791.481,-19.8917591 +66791.501,-19.47285573 +66791.521,-14.1995021 +66791.541,-8.741997496 +66791.561,-7.396257391 +66791.581,-7.347314123 +66791.601,-3.44015774 +66791.621,3.403516906 +66791.641,7.680099562 +66791.661,7.991870765 +66791.681,8.109337298 +66791.701,12.11971749 +66791.721,18.21112828 +66791.741,20.26314806 +66791.761,17.93841589 +66791.781,16.90901793 +66791.801,19.7496892 +66791.821,22.12496183 +66791.841,19.42637466 +66791.861,14.17232578 +66791.881,12.18617468 +66791.901,13.18592404 +66791.921,11.26600348 +66791.941,5.027640783 +66791.961,-0.118583526 +66791.981,-0.947561238 +66792.001,-1.255677882 +66792.021,-6.056382889 +66792.041,-12.68119358 +66792.061,-15.37978968 +66792.081,-14.343533 +66792.101,-15.02549144 +66792.121,-19.21398239 +66792.14101,-22.63560139 +66792.161,-21.37465639 +66792.181,-18.06093838 +66792.201,-17.47556723 +66792.221,-19.25699824 +66792.241,-18.35367598 +66792.261,-13.15897462 +66792.281,-8.312301057 +66792.301,-7.250042381 +66792.321,-6.699659184 +66792.341,-1.95863958 +66792.361,4.572587411 +66792.381,7.604955801 +66792.401,7.577937265 +66792.421,8.732594323 +66792.441,13.36166789 +66792.461,18.3495148 +66792.481,18.99577388 +66792.501,16.83267265 +66792.521,16.77916598 +66792.541,19.51504 +66792.561,21.02802677 +66792.581,18.2506609 +66792.601,13.50658572 +66792.621,11.91279396 +66792.641,12.47455279 +66792.661,9.373020656 +66792.681,3.284367278 +66792.701,-0.420134581 +66792.721,-0.793306707 +66792.741,-2.357040151 +66792.761,-7.783663554 +66792.781,-13.18808888 +66792.801,-14.54178665 +66792.821,-13.84704513 +66792.841,-15.63399217 +66792.861,-19.73617022 +66792.881,-21.75862775 +66792.901,-19.49653207 +66792.921,-16.9647234 +66792.941,-17.93495545 +66792.961,-18.47971567 +66792.981,-14.91556773 +66793.001,-9.746106145 +66793.021,-7.302049465 +66793.041,-7.026570371 +66793.061,-4.560034212 +66793.081,1.097605947 +66793.101,5.871309124 +66793.121,7.325602081 +66793.141,7.521465463 +66793.161,9.886991689 +66793.181,14.88802073 +66793.201,18.23788679 +66793.221,17.48188727 +66793.241,15.99622596 +66793.261,17.38544387 +66793.281,19.8184849 +66793.301,18.99200052 +66793.321,14.88861612 +66793.341,11.89539401 +66793.361,11.90793158 +66793.381,11.03688816 +66793.401,6.755718717 +66793.421,1.631553436 +66793.441,-0.526533489 +66793.461,-1.084695931 +66793.481,-4.236552723 +66793.501,-9.709742381 +66793.521,-13.38680847 +66793.541,-13.67276653 +66793.561,-13.88307213 +66793.581,-16.73446042 +66793.601,-20.07581045 +66793.621,-20.2765285 +66793.641,-17.88665616 +66793.661,-16.62456491 +66793.681,-17.57591966 +66793.701,-17.44062485 +66793.721,-13.86830693 +66793.741,-9.35417962 +66793.761,-7.302598386 +66793.781,-6.657056014 +66793.801,-3.799786552 +66793.821,1.462491022 +66793.841,5.569920361 +66793.861,6.923045698 +66793.881,7.549905965 +66793.901,10.09365787 +66793.921,14.53315517 +66793.941,17.27836033 +66793.961,16.72768054 +66793.981,15.73630764 +66794.001,17.05617395 +66794.021,18.92157291 +66794.041,17.84784122 +66794.061,14.2216589 +66794.081,11.70533359 +66794.101,11.45880112 +66794.121,10.11813789 +66794.141,6.080711606 +66794.161,1.661049569 +66794.181,-0.297726032 +66794.201,-1.394398205 +66794.221,-4.767640308 +66794.241,-9.673721549 +66794.261,-12.68754209 +66794.281,-13.11130043 +66794.301,-13.845756 +66794.321,-16.64318768 +66794.341,-19.31049247 +66794.361,-19.19481698 +66794.381,-17.22175602 +66794.401,-16.40315411 +66794.421,-17.1190445 +66794.441,-16.44192448 +66794.461,-12.93436024 +66794.481,-9.062534051 +66794.501,-7.276057907 +66794.521,-6.218074122 +66794.541,-3.116505981 +66794.561,1.713263185 +66794.581,5.228743759 +66794.601,6.591134311 +66794.621,7.62167398 +66794.641,10.24472155 +66794.661,14.09703546 +66794.681,16.37386255 +66794.701,16.09125083 +66794.721,15.58725758 +66794.741,16.71106265 +66794.761,17.9553449 +66794.781,16.81625789 +66794.801,13.72656587 +66794.821,11.53838831 +66794.841,10.93050623 +66794.861,9.218455128 +66794.881,5.601577846 +66794.901,1.809072757 +66794.921,-0.174471474 +66794.941,-1.807170454 +66794.961,-5.245758074 +66794.981,-9.431479683 +66795.001,-11.92464128 +66795.021,-12.70686425 +66795.041,-13.94007875 +66795.061,-16.45700137 +66795.081,-18.39958906 +66795.101,-18.1492112 +66795.121,-16.77833325 +66795.141,-16.31458208 +66795.161,-16.55015903 +66795.181,-15.34984393 +66795.201,-12.15622801 +66795.221,-8.987571842 +66795.241,-7.259297479 +66795.261,-5.666516619 +66795.281,-2.406588137 +66795.301,1.774638053 +66795.321,4.788154301 +66795.341,6.35707665 +66795.361,7.815222346 +66795.381,10.47529001 +66795.401,13.77167451 +66795.421,15.55371273 +66795.441,15.51096758 +66795.461,15.58532274 +66795.481,16.46855104 +66795.501,16.92180104 +66795.521,15.71994712 +66795.541,13.37670104 +66795.561,11.44470075 +66795.581,10.2605267 +66795.601,8.089385035 +66795.621,4.734097313 +66795.641,1.556600319 +66795.661,-0.434728038 +66795.681,-2.855053782 +66795.701,-6.435261613 +66795.721,-9.58290206 +66795.741,-11.4203389 +66795.761,-12.63104517 +66795.781,-14.713161 +66795.801,-16.90638626 +66795.821,-17.49090561 +66795.841,-16.78265834 +66795.861,-16.2412558 +66795.881,-16.15084752 +66795.901,-15.31426887 +66795.921,-12.9863051 +66795.941,-10.16868363 +66795.961,-8.072737351 +66795.981,-6.260539598 +66796.001,-3.55252209 +66796.021,0.035269295 +66796.041,3.174712872 +66796.061,5.320458842 +66796.081,7.079369887 +66796.101,9.159206274 +66796.121,11.69681901 +66796.141,13.8604035 +66796.161,14.9814574 +66796.181,15.28813693 +66796.201,15.60491074 +66796.221,15.97890519 +66796.241,15.62941866 +66796.261,14.13841861 +66796.281,12.17808495 +66796.301,10.49054046 +66796.321,8.680397762 +66796.341,6.236348881 +66796.361,3.618867689 +66796.381,1.145413369 +66796.401,-1.308359141 +66796.421,-4.324165964 +66796.441,-7.386646482 +66796.461,-9.644271653 +66796.481,-11.32959287 +66796.501,-13.13810375 +66796.521,-15.04978993 +66796.541,-16.32135402 +66796.561,-16.56380353 +66796.581,-16.2961952 +66796.601,-16.11274254 +66796.621,-15.71522723 +66796.641,-14.40111393 +66796.661,-12.22879499 +66796.681,-9.993976456 +66796.701,-8.061288778 +66796.721,-5.863066079 +66796.741,-2.933947963 +66796.761,0.193366585 +66796.781,2.811677085 +66796.801,5.058254002 +66796.821,7.212966219 +66796.841,9.260548571 +66796.861,11.29136693 +66796.881,13.05945729 +66796.901,14.4262613 +66796.921,15.14471959 +66796.941,15.29472574 +66796.96099,15.16242112 +66796.981,14.7326284 +66797.001,13.73656293 +66797.021,12.07990388 +66797.041,10.05895332 +66797.061,7.916469528 +66797.081,5.838111523 +66797.101,3.74660914 +66797.121,1.304718949 +66797.141,-1.620632543 +66797.161,-4.718381705 +66797.181,-7.191052998 +66797.201,-9.021697992 +66797.221,-10.9172714 +66797.241,-13.17434803 +66797.261,-14.92116857 +66797.281,-15.59841503 +66797.301,-15.6953243 +66797.321,-15.87761659 +66797.341,-15.99927319 +66797.361,-15.2650032 +66797.381,-13.51136812 +66797.401,-11.56112439 +66797.421,-9.923841506 +66797.441,-8.047059501 +66797.461,-5.402831426 +66797.481,-2.368146131 +66797.501,0.255698614 +66797.521,2.436511505 +66797.541,4.831957924 +66797.561,7.342974854 +66797.581,9.327781908 +66797.601,10.85064821 +66797.621,12.28569997 +66797.641,13.93183798 +66797.661,15.00202625 +66797.681,14.95867478 +66797.701,14.36081248 +66797.721,13.9317435 +66797.741,13.38774053 +66797.761,11.951688 +66797.781,9.612352931 +66797.801,7.226103665 +66797.821,5.486960377 +66797.841,3.866863541 +66797.861,1.420152541 +66797.881,-1.941835714 +66797.901,-5.022733974 +66797.921,-6.938961143 +66797.941,-8.465625645 +66797.961,-10.66930056 +66797.981,-13.12678687 +66798.001,-14.63188217 +66798.021,-14.87187077 +66798.041,-14.96908701 +66798.061,-15.57447092 +66798.081,-15.80492979 +66798.101,-14.6927452 +66798.121,-12.72067122 +66798.141,-11.0786702 +66798.161,-9.82439231 +66798.181,-7.91907601 +66798.201,-4.965850116 +66798.221,-1.945889071 +66798.241,0.220003217 +66798.261,2.141803394 +66798.281,4.739330647 +66798.301,7.469072387 +66798.321,9.26753062 +66798.341,10.37053709 +66798.361,11.65204419 +66798.381,13.55287881 +66798.401,14.78497577 +66798.421,14.50457011 +66798.441,13.61620882 +66798.461,13.26995211 +66798.481,13.07189187 +66798.501,11.71052116 +66798.521,9.090245983 +66798.541,6.635906671 +66798.561,5.221327925 +66798.581,3.72011669 +66798.601,0.789585413 +66798.621,-2.940154208 +66798.641,-5.532920236 +66798.661,-6.845749215 +66798.681,-8.399116847 +66798.701,-11.05256123 +66798.721,-13.50338856 +66798.741,-14.30162559 +66798.761,-14.11025902 +66798.781,-14.51118612 +66798.801,-15.46339273 +66798.821,-15.38509208 +66798.841,-13.65128873 +66798.861,-11.62123587 +66798.881,-10.51595352 +66798.901,-9.506723199 +66798.921,-7.143480273 +66798.941,-3.82143874 +66798.961,-1.209844472 +66798.981,0.381471715 +66799.001,2.352162981 +66799.021,5.336751179 +66799.041,7.97208568 +66799.061,9.279058469 +66799.081,10.01105963 +66799.101,11.49484702 +66799.121,13.64108401 +66799.141,14.57456277 +66799.161,13.82046835 +66799.181,12.81866988 +66799.201,12.71965503 +66799.221,12.74920078 +66799.241,10.9353366 +66799.261,7.708956717 +66799.281,5.654580008 +66799.301,4.785121628 +66799.321,3.017275142 +66799.341,-0.460362977 +66799.361,-3.955639917 +66799.381,-5.722913181 +66799.401,-6.695378707 +66799.421,-8.743414167 +66799.441,-11.708555 +66799.461,-13.60655508 +66799.481,-13.64924368 +66799.501,-13.45082149 +66799.521,-14.40659257 +66799.541,-15.3963861 +66799.561,-14.58563629 +66799.581,-12.39441979 +66799.601,-10.79059765 +66799.621,-10.21466326 +66799.641,-8.939198559 +66799.661,-5.926965642 +66799.681,-2.653184729 +66799.701,-0.743308395 +66799.721,0.542348486 +66799.741,2.957776508 +66799.761,6.206348756 +66799.781,8.361244387 +66799.801,9.05060376 +66799.821,9.754618002 +66799.841,11.7306032 +66799.861,13.81279704 +66799.881,14.0333774 +66799.901,12.80027844 +66799.921,12.13438001 +66799.941,12.53821342 +66799.961,12.13578965 +66799.981,9.759230576 +66800.001,6.880446032 +66800.021,5.430848639 +66800.041,4.78011487 +66800.061,2.934094588 +66800.081,-0.677067566 +66800.101,-4.063624608 +66800.121,-5.52868904 +66800.141,-6.346062706 +66800.161,-8.537085293 +66800.181,-11.62296791 +66800.201,-13.29824516 +66800.221,-13.09523427 +66800.241,-12.95170538 +66800.261,-14.09573866 +66800.281,-15.10538281 +66800.301,-14.07964086 +66800.321,-11.7908438 +66800.341,-10.41489243 +66800.361,-10.08152359 +66800.381,-8.736200468 +66800.401,-5.564518147 +66800.421,-2.384707617 +66800.441,-0.776629925 +66800.461,0.371046413 +66800.481,2.916285845 +66800.501,6.233900237 +66800.521,8.207918384 +66800.541,8.660405836 +66800.561,9.358516806 +66800.581,11.42776482 +66800.601,13.50923821 +66800.621,13.59937928 +66800.641,12.25335911 +66800.661,11.68876302 +66800.681,12.23134111 +66800.701,11.8085812 +66800.721,9.326642415 +66800.741,6.50577843 +66800.761,5.298200492 +66800.781,4.743745021 +66800.801,2.779876508 +66800.821,-0.853704179 +66800.841,-4.074301131 +66800.861,-5.30431334 +66800.881,-6.063380091 +66800.901,-8.380884732 +66800.921,-11.46108827 +66800.941,-12.90636529 +66800.961,-12.54680144 +66800.981,-12.52432679 +66801.001,-13.84302907 +66801.021,-14.77427665 +66801.041,-13.55794449 +66801.061,-11.28007418 +66801.081,-10.13192483 +66801.101,-9.926073647 +66801.121,-8.473340999 +66801.141,-5.213929123 +66801.161,-2.203756458 +66801.181,-0.843750607 +66801.201,0.26055877 +66801.221,2.905614015 +66801.241,6.214749924 +66801.261,7.999038442 +66801.281,8.270424868 +66801.301,9.020376389 +66801.321,11.17005174 +66801.341,13.15082665 +66801.361,13.09191849 +66801.381,11.73010809 +66801.401,11.32097975 +66801.421,11.96080699 +66801.441,11.45583683 +66801.461,8.871191324 +66801.481,6.231781805 +66801.501,5.209964732 +66801.521,4.661884586 +66801.541,2.641152936 +66801.561,-1.013055029 +66801.581,-4.00579376 +66801.601,-5.005143763 +66801.621,-5.901663147 +66801.641,-8.556610904 +66801.661,-11.58727153 +66801.681,-12.49236673 +66801.701,-11.99052366 +66801.721,-12.43475331 +66801.741,-13.9992742 +66801.761,-14.169382 +66801.78099,-12.13162219 +66801.801,-10.26919473 +66801.821,-9.885922723 +66801.841,-9.385054355 +66801.861,-6.989465798 +66801.881,-3.606470313 +66801.901,-1.471422538 +66801.921,-0.609297994 +66801.941,1.093823672 +66801.961,4.301065627 +66801.981,7.051464331 +66802.001,7.882109261 +66802.021,8.0654944 +66802.041,9.516883659 +66802.061,11.85871052 +66802.081,12.98574322 +66802.101,12.07547877 +66802.121,10.97721922 +66802.141,11.2837906 +66802.161,11.6893948 +66802.181,10.17197225 +66802.201,7.34447554 +66802.221,5.521672678 +66802.241,5.014910836 +66802.261,3.924585541 +66802.281,1.077972919 +66802.301,-2.457396709 +66802.321,-4.408595162 +66802.341,-5.02388309 +66802.361,-6.527336891 +66802.381,-9.42476779 +66802.401,-11.70564591 +66802.421,-11.97414503 +66802.441,-11.59932226 +66802.461,-12.40874816 +66802.481,-13.78326726 +66802.501,-13.61003781 +66802.521,-11.67609713 +66802.541,-10.03093941 +66802.561,-9.716565119 +66802.581,-9.110418158 +66802.601,-6.661802345 +66802.621,-3.45576748 +66802.641,-1.530262608 +66802.661,-0.664303308 +66802.681,1.144265881 +66802.701,4.291099076 +66802.721,6.84785363 +66802.741,7.562468884 +66802.761,7.814946705 +66802.781,9.344416286 +66802.801,11.57378829 +66802.821,12.49984722 +66802.841,11.59613658 +66802.861,10.68793769 +66802.881,11.03118183 +66802.901,11.30630773 +66802.921,9.734391677 +66802.941,7.082783339 +66802.961,5.442734311 +66802.981,4.921490958 +66803.001,3.71921644 +66803.021,0.901498625 +66803.041,-2.39553525 +66803.061,-4.215459003 +66803.081,-4.890625594 +66803.101,-6.477242739 +66803.121,-9.255801339 +66803.141,-11.30927532 +66803.161,-11.54745577 +66803.181,-11.32421155 +66803.201,-12.19031779 +66803.221,-13.41193716 +66803.241,-13.11351863 +66803.261,-11.29253579 +66803.281,-9.818589604 +66803.301,-9.508271246 +66803.321,-8.777759904 +66803.341,-6.355080529 +66803.361,-3.364096639 +66803.381,-1.585078788 +66803.401,-0.66396331 +66803.421,1.211052132 +66803.441,4.245212779 +66803.461,6.593374661 +66803.481,7.26561174 +66803.501,7.616304413 +66803.521,9.176323479 +66803.541,11.2566225 +66803.561,12.00735256 +66803.581,11.17106272 +66803.601,10.44266343 +66803.621,10.78871128 +66803.641,10.90324704 +66803.661,9.303249426 +66803.681,6.916541268 +66803.701,5.41923449 +66803.721,4.799144781 +66803.741,3.489960073 +66803.761,0.760709145 +66803.781,-2.280475024 +66803.801,-3.982122386 +66803.821,-4.790373461 +66803.841,-6.436321096 +66803.861,-9.047218558 +66803.881,-10.89200252 +66803.901,-11.17665115 +66803.921,-11.11902062 +66803.941,-11.97585546 +66803.961,-13.01173294 +66803.981,-12.61181247 +66804.001,-10.94688883 +66804.021,-9.666110488 +66804.041,-9.336412212 +66804.061,-8.454686434 +66804.081,-6.08068433 +66804.101,-3.312996458 +66804.121,-1.65922809 +66804.141,-0.63052151 +66804.161,1.309191354 +66804.181,4.173446745 +66804.201,6.316626176 +66804.221,6.998203247 +66804.241,7.484231771 +66804.261,9.027353326 +66804.281,10.9370549 +66804.301,11.52537739 +66804.321,10.7701748 +66804.341,10.21876404 +66804.361,10.5596461 +66804.381,10.50649971 +66804.401,8.911980303 +66804.421,6.734265478 +66804.441,5.389316638 +66804.461,4.671996736 +66804.481,3.261076456 +66804.501,0.621890395 +66804.521,-2.180758177 +66804.541,-3.775108285 +66804.561,-4.709008203 +66804.581,-6.40636072 +66804.601,-8.840074207 +66804.621,-10.51263745 +66804.641,-10.79167191 +66804.661,-10.89285018 +66804.681,-11.74962489 +66804.701,-12.61063831 +66804.721,-12.15275438 +66804.741,-10.65831964 +66804.761,-9.526114874 +66804.781,-9.101588763 +66804.801,-8.117737054 +66804.821,-5.826700814 +66804.841,-3.286599139 +66804.861,-1.707874727 +66804.881,-0.582104559 +66804.901,1.384346134 +66804.921,4.073834712 +66804.941,6.04397669 +66804.961,6.752095231 +66804.981,7.353604168 +66805.001,8.865474364 +66805.021,10.59982652 +66805.041,11.07634242 +66805.061,10.39889449 +66805.081,9.999845934 +66805.101,10.33545007 +66805.121,9.839339729 +66805.141,7.909831095 +66805.161,6.093225738 +66805.181,5.067357775 +66805.201,4.180663893 +66805.221,2.368157116 +66805.241,-0.305423577 +66805.261,-2.655292239 +66805.281,-3.9391934 +66805.301,-5.066462378 +66805.321,-7.027920073 +66805.341,-9.204436154 +66805.361,-10.34415417 +66805.381,-10.50001959 +66805.401,-10.87789623 +66805.421,-11.81424019 +66805.441,-12.23361931 +66805.461,-11.38005498 +66805.481,-10.01431881 +66805.501,-9.202786947 +66805.521,-8.660238496 +66805.541,-7.242894198 +66805.561,-4.861012667 +66805.581,-2.695767461 +66805.601,-1.392319027 +66805.621,-0.040337587 +66805.641,2.194590048 +66805.661,4.645805199 +66805.681,6.114008086 +66805.701,6.670694134 +66805.721,7.565807842 +66805.741,9.220875245 +66805.761,10.54363228 +66805.781,10.56275228 +66805.801,9.910783725 +66805.821,9.80631656 +66805.841,10.05219373 +66805.861,9.421061527 +66805.881,7.69547204 +66805.901,5.949547657 +66805.921,4.940332146 +66805.941,4.017715905 +66805.961,2.237190463 +66805.981,-0.334300358 +66806.001,-2.571956959 +66806.021,-3.837084886 +66806.041,-4.996380279 +66806.061,-6.90003112 +66806.081,-8.96222468 +66806.101,-10.05989811 +66806.121,-10.24740012 +66806.141,-10.61430216 +66806.161,-11.49261071 +66806.181,-11.87450073 +66806.201,-11.06028456 +66806.221,-9.762772674 +66806.241,-8.977751542 +66806.261,-8.40121188 +66806.281,-7.006302193 +66806.301,-4.718778123 +66806.321,-2.657082429 +66806.341,-1.35667306 +66806.361,0.000488263 +66806.381,2.156827719 +66806.401,4.508116887 +66806.421,5.939366593 +66806.441,6.530869228 +66806.461,7.403331251 +66806.481,8.966894476 +66806.501,10.21263208 +66806.521,10.25611822 +66806.541,9.623767755 +66806.561,9.492067197 +66806.581,9.732982057 +66806.60099,9.143551862 +66806.621,7.519105771 +66806.641,5.784269786 +66806.661,4.729004705 +66806.681,3.840123633 +66806.701,2.165796933 +66806.721,-0.331994134 +66806.741,-2.554038078 +66806.761,-3.809257485 +66806.781,-4.885865973 +66806.801,-6.698108911 +66806.821,-8.745393091 +66806.841,-9.863154719 +66806.861,-10.0248724 +66806.881,-10.32428459 +66806.901,-11.16240336 +66806.921,-11.57442078 +66806.941,-10.81245816 +66806.961,-9.497688029 +66806.981,-8.682937999 +66807.001,-8.160485697 +66807.021,-6.842138835 +66807.041,-4.605897541 +66807.061,-2.549343847 +66807.081,-1.256218552 +66807.101,0.013983692 +66807.121,2.066995454 +66807.141,4.376821286 +66807.161,5.823064332 +66807.181,6.401740878 +66807.201,7.19228664 +66807.221,8.677026489 +66807.241,9.934243814 +66807.261,10.020786 +66807.281,9.379007377 +66807.301,9.14451424 +66807.321,9.367026375 +66807.341,8.919513833 +66807.361,7.36456062 +66807.381,5.600385738 +66807.401,4.484520077 +66807.421,3.676088414 +66807.441,2.172027344 +66807.461,-0.298040651 +66807.481,-2.587671002 +66807.501,-3.834051086 +66807.521,-4.757502538 +66807.541,-6.461397742 +66807.561,-8.530523845 +66807.581,-9.704134625 +66807.601,-9.822122074 +66807.621,-9.987000663 +66807.641,-10.8118197 +66807.661,-11.32329124 +66807.681,-10.51322636 +66807.701,-9.073409038 +66807.72101,-8.285504544 +66807.741,-7.764185523 +66807.761,-6.400821645 +66807.781,-4.230581129 +66807.801,-2.283148991 +66807.821,-1.126215362 +66807.841,-0.025183694 +66807.861,1.99356521 +66807.881,4.418714984 +66807.901,5.861099752 +66807.921,6.348391652 +66807.941,7.184759967 +66807.961,8.680153913 +66807.981,9.798570312 +66808.001,9.795815237 +66808.021,9.11191579 +66808.041,8.79824896 +66808.061,9.046080097 +66808.081,8.588990993 +66808.101,6.724630501 +66808.121,4.953350183 +66808.141,4.040359762 +66808.161,3.240861583 +66808.181,1.496981133 +66808.201,-1.092868459 +66808.221,-3.127432509 +66808.241,-4.055779329 +66808.261,-5.007645557 +66808.281,-6.897294504 +66808.301,-8.882307231 +66808.321,-9.671896327 +66808.341,-9.558331178 +66808.361,-9.849533366 +66808.381,-10.75119714 +66808.401,-11.04782915 +66808.421,-9.97589556 +66808.441,-8.56491172 +66808.461,-7.93974067 +66808.481,-7.516755207 +66808.501,-6.043412387 +66808.521,-3.678061834 +66808.541,-1.76658306 +66808.561,-0.767055244 +66808.581,0.406968392 +66808.601,2.568001123 +66808.621,4.800862104 +66808.641,5.943042259 +66808.661,6.257658559 +66808.681,7.039292146 +66808.701,8.613450042 +66808.721,9.713732566 +66808.741,9.451973866 +66808.761,8.64761121 +66808.781,8.499031066 +66808.801,8.786640312 +66808.821,8.227031177 +66808.841,6.479281085 +66808.861,4.692595982 +66808.881,3.771767182 +66808.901,3.139600742 +66808.921,1.494467911 +66808.941,-1.147972792 +66808.961,-3.229899644 +66808.981,-4.03639388 +66809.001,-4.834263775 +66809.021,-6.711105346 +66809.041,-8.778891777 +66809.061,-9.560544994 +66809.081,-9.285002189 +66809.101,-9.496409448 +66809.121,-10.48338516 +66809.141,-10.85887428 +66809.161,-9.754844235 +66809.181,-8.244059956 +66809.201,-7.624079723 +66809.221,-7.341011598 +66809.241,-5.96105925 +66809.261,-3.519259131 +66809.281,-1.575260451 +66809.301,-0.687909989 +66809.321,0.356626823 +66809.341,2.484440309 +66809.361,4.782941681 +66809.381,5.916241935 +66809.401,6.110428343 +66809.421,6.79094902 +66809.441,8.376214026 +66809.461,9.54304157 +66809.481,9.269673278 +66809.501,8.359986825 +66809.521,8.172195089 +66809.541,8.560790683 +66809.561,8.093244486 +66809.581,6.307490455 +66809.601,4.442784525 +66809.621,3.551914062 +66809.641,3.049894271 +66809.661,1.471664739 +66809.681,-1.221239612 +66809.701,-3.322935776 +66809.721,-4.010754509 +66809.741,-4.664811893 +66809.761,-6.545800332 +66809.781,-8.685093116 +66809.801,-9.433560736 +66809.821,-9.027375138 +66809.841,-9.173375975 +66809.861,-10.24145164 +66809.881,-10.68991862 +66809.901,-9.514749395 +66809.921,-7.918308515 +66809.941,-7.348652589 +66809.961,-7.186685872 +66809.981,-5.828849971 +66810.001,-3.352456564 +66810.021,-1.397804035 +66810.041,-0.616867728 +66810.061,0.302864462 +66810.081,2.439405657 +66810.101,4.780769601 +66810.121,5.860896556 +66810.141,5.921357491 +66810.161,6.550805651 +66810.181,8.187245376 +66810.201,9.386598477 +66810.221,9.067432055 +66810.241,8.047682488 +66810.261,7.846028478 +66810.281,8.333155284 +66810.301,7.931700823 +66810.321,6.098379713 +66810.341,4.178917244 +66810.361,3.355296214 +66810.381,2.978072074 +66810.401,1.415511368 +66810.421,-1.333969423 +66810.441,-3.414975752 +66810.461,-3.969939142 +66810.481,-4.528335596 +66810.501,-6.436165614 +66810.521,-8.614481595 +66810.541,-9.277022652 +66810.561,-8.770567302 +66810.581,-8.892541592 +66810.601,-10.02411881 +66810.621,-10.49855788 +66810.641,-9.255695478 +66810.661,-7.598224863 +66810.681,-7.090172465 +66810.701,-7.050544804 +66810.721,-5.709463463 +66810.741,-3.16572344 +66810.761,-1.234977878 +66810.781,-0.575851762 +66810.801,0.264482871 +66810.821,2.394229188 +66810.841,4.831602632 +66810.861,5.815108496 +66810.881,5.772980986 +66810.901,6.617688659 +66810.921,8.338717174 +66810.941,9.270889952 +66810.961,8.622656023 +66810.981,7.623529865 +66811.001,7.65883204 +66811.021,8.169392743 +66811.041,7.469631672 +66811.061,5.430764013 +66811.081,3.653591861 +66811.101,3.118522601 +66811.121,2.721035365 +66811.141,0.854354651 +66811.161,-1.985389091 +66811.181,-3.671020522 +66811.201,-3.933783542 +66811.221,-4.666478726 +66811.241,-6.823093186 +66811.261,-8.808345877 +66811.281,-9.033284103 +66811.301,-8.418897954 +66811.321,-8.811994609 +66811.341,-10.04602175 +66811.361,-10.18215483 +66811.381,-8.612389856 +66811.401,-7.097259072 +66811.42099,-6.903144242 +66811.441,-6.780346732 +66811.461,-5.091273164 +66811.481,-2.472616317 +66811.501,-0.886835408 +66811.521,-0.475217361 +66811.541,0.550115912 +66811.561,2.934255908 +66811.581,5.121575198 +66811.601,5.730865496 +66811.621,5.595723029 +66811.641,6.424343698 +66811.661,8.198080322 +66811.681,9.11301958 +66811.701,8.369539141 +66811.721,7.325694846 +66811.741,7.418881524 +66811.761,7.968733391 +66811.781,7.267582059 +66811.801,5.195173765 +66811.821,3.445684187 +66811.841,2.982059607 +66811.861,2.669969575 +66811.881,0.737341184 +66811.901,-2.093350841 +66811.921,-3.679139115 +66811.941,-3.837822582 +66811.961,-4.579185911 +66811.981,-6.757850697 +66812.001,-8.700712705 +66812.021,-8.829663456 +66812.041,-8.152202673 +66812.061,-8.600894325 +66812.081,-9.883585607 +66812.101,-9.950350174 +66812.121,-8.306306566 +66812.141,-6.820130144 +66812.161,-6.708897007 +66812.181,-6.637372002 +66812.201,-4.880491157 +66812.221,-2.258768362 +66812.241,-0.769482655 +66812.261,-0.452098328 +66812.281,0.552743628 +66812.301,2.975490608 +66812.321,5.102100886 +66812.341,5.629830086 +66812.361,5.428178513 +66812.381,6.285733698 +66812.401,8.073308296 +66812.421,8.929634753 +66812.441,8.102040628 +66812.461,7.048772797 +66812.481,7.204140725 +66812.501,7.803631283 +66812.521,7.036503604 +66812.54101,4.936156018 +66812.561,3.23072459 +66812.581,2.875125969 +66812.601,2.573908599 +66812.621,0.591560512 +66812.641,-2.232548141 +66812.661,-3.687570695 +66812.681,-3.733418203 +66812.701,-4.497178569 +66812.721,-6.747312735 +66812.741,-8.615752052 +66812.761,-8.594639318 +66812.781,-7.900734924 +66812.801,-8.42534363 +66812.821,-9.711577597 +66812.841,-9.706724296 +66812.861,-7.996920611 +66812.881,-6.554556506 +66812.901,-6.555139859 +66812.921,-6.457441935 +66812.941,-4.640176206 +66812.961,-2.032808961 +66812.981,-0.671425772 +66813.001,-0.451038187 +66813.021,0.604964613 +66813.041,3.048351473 +66813.061,5.099000493 +66813.081,5.497403221 +66813.101,5.265363724 +66813.121,6.167267671 +66813.141,7.962791068 +66813.161,8.73560007 +66813.181,7.816481867 +66813.201,6.799489957 +66813.221,7.045325998 +66813.241,7.621530841 +66813.261,6.796201963 +66813.281,4.652531338 +66813.301,3.035853379 +66813.321,2.787251028 +66813.341,2.465091906 +66813.361,0.392866065 +66813.381,-2.377458906 +66813.401,-3.660575488 +66813.421,-3.64422553 +66813.441,-4.480045138 +66813.461,-6.740454147 +66813.481,-8.503308806 +66813.501,-8.369767915 +66813.521,-7.66436792 +66813.541,-8.409324839 +66813.561,-9.675425 +66813.581,-9.156005782 +66813.601,-7.28183176 +66813.621,-6.236979316 +66813.641,-6.476888566 +66813.661,-6.051559829 +66813.681,-3.845387503 +66813.701,-1.435671526 +66813.721,-0.522750015 +66813.741,-0.261703275 +66813.761,1.46725104 +66813.781,4.098538414 +66813.801,5.352912039 +66813.821,5.192680697 +66813.841,5.336695344 +66813.861,6.815966928 +66813.881,8.351294523 +66813.901,8.257896682 +66813.921,7.031558437 +66813.941,6.524365008 +66813.961,7.168793702 +66813.981,7.309656667 +66814.001,5.663036978 +66814.021,3.360046215 +66814.041,2.674246043 +66814.061,2.595120214 +66814.081,0.974745499 +66814.101,-1.79194339 +66814.121,-3.480065587 +66814.141,-3.573315138 +66814.161,-4.022394585 +66814.181,-6.043502055 +66814.201,-8.105649554 +66814.221,-8.345012833 +66814.241,-7.556023516 +66814.261,-7.814948281 +66814.281,-9.123039645 +66814.301,-9.437093827 +66814.321,-7.918093463 +66814.341,-6.331387605 +66814.361,-6.193597307 +66814.381,-6.316480834 +66814.401,-4.840218144 +66814.421,-2.282550904 +66814.441,-0.724939062 +66814.461,-0.512432694 +66814.481,0.239520794 +66814.501,2.47890884 +66814.521,4.667201261 +66814.541,5.260825398 +66814.561,4.957699849 +66814.581,5.590291499 +66814.601,7.315984692 +66814.621,8.321137936 +66814.641,7.619234346 +66814.661,6.487474619 +66814.681,6.523606843 +66814.701,7.214368204 +66814.721,6.712394974 +66814.741,4.72204383 +66814.761,2.973577926 +66814.781,2.615092893 +66814.801,2.470826444 +66814.821,0.749111251 +66814.841,-1.967632193 +66814.861,-3.47319664 +66814.881,-3.489563487 +66814.901,-4.042548282 +66814.921,-6.096883363 +66814.941,-8.012477542 +66814.961,-8.107396895 +66814.981,-7.330525298 +66815.001,-7.711214927 +66815.021,-9.02215338 +66815.041,-9.158695551 +66815.061,-7.561185125 +66815.081,-6.103760349 +66815.101,-6.085584162 +66815.121,-6.15684309 +66815.141,-4.56038553 +66815.161,-2.038042229 +66815.181,-0.655725759 +66815.201,-0.498718177 +66815.221,0.337176942 +66815.241,2.60871536 +66815.261,4.676165031 +66815.281,5.107713918 +66815.301,4.822215784 +66815.321,5.555714077 +66815.341,7.255508068 +66815.361,8.125961047 +66815.381,7.334285522 +66815.401,6.267204482 +66815.421,6.410760786 +66815.441,7.048023305 +66815.461,6.415945686 +66815.481,4.415279402 +66815.501,2.797013617 +66815.521,2.538931705 +66815.541,2.31949452 +66815.561,0.488143827 +66815.581,-2.142905296 +66815.601,-3.44846755 +66815.621,-3.414936891 +66815.641,-4.077636247 +66815.661,-6.172583464 +66815.681,-7.918663608 +66815.701,-7.849481281 +66815.721,-7.139553129 +66815.741,-7.642762677 +66815.761,-8.897839275 +66815.781,-8.877875206 +66815.801,-7.221495761 +66815.821,-5.899908167 +66815.841,-5.983073848 +66815.861,-5.946842571 +66815.881,-4.235007524 +66815.901,-1.800301344 +66815.921,-0.611101136 +66815.941,-0.482763394 +66815.961,0.476679159 +66815.981,2.775667501 +66816.001,4.681160267 +66816.021,4.954815686 +66816.041,4.687636292 +66816.061,5.541302776 +66816.081,7.216286924 +66816.101,7.90150787 +66816.121,7.013678091 +66816.141,6.044581337 +66816.161,6.304184913 +66816.181,6.892919543 +66816.201,6.116416971 +66816.221,4.10714199 +66816.241,2.627662565 +66816.261,2.468037654 +66816.281,2.158649832 +66816.301,0.213636154 +66816.321,-2.319359426 +66816.341,-3.400246053 +66816.361,-3.327823229 +66816.381,-4.1536697 +66816.401,-6.271530367 +66816.421,-7.803483357 +66816.441,-7.587164666 +66816.461,-6.96076699 +66816.481,-7.593540224 +66816.501,-8.770867901 +66816.521,-8.536178103 +66816.541,-6.876280164 +66816.561,-5.73577208 +66816.581,-5.891701074 +66816.601,-5.714964191 +66816.621,-3.893736829 +66816.641,-1.582261218 +66816.661,-0.571006183 +66816.681,-0.457295324 +66816.701,0.632294737 +66816.721,2.943520241 +66816.741,4.656656226 +66816.761,4.799327072 +66816.781,4.612408326 +66816.801,5.567534088 +66816.821,7.173416318 +66816.841,7.676217088 +66816.861,6.725980087 +66816.881,5.878266358 +66816.901,6.221916982 +66816.921,6.711166714 +66816.941,5.773409828 +66816.961,3.781572593 +66816.981,2.502507976 +66817.001,2.419918997 +66817.021,1.9607085 +66817.041,-0.086045783 +66817.061,-2.452644285 +66817.081,-3.331364128 +66817.101,-3.316003223 +66817.121,-4.511567075 +66817.141,-6.730863015 +66817.161,-7.728003652 +66817.181,-7.162431866 +66817.201,-6.838132291 +66817.221,-7.810302908 +66817.241,-8.71629736 +66817.261,-7.92221823 +66817.281,-6.22660289 +66817.301,-5.556110615 +66817.321,-5.841694679 +66817.341,-5.206396667 +66817.36101,-3.057463871 +66817.381,-1.073661959 +66817.401,-0.525750201 +66817.421,-0.299206581 +66817.441,1.24078343 +66817.461,3.527037113 +66817.481,4.708666324 +66817.501,4.564018187 +66817.521,4.654666819 +66817.541,5.931251145 +66817.561,7.315188679 +66817.581,7.274559309 +66817.601,6.197918225 +66817.621,5.726713621 +66817.641,6.288782059 +66817.661,6.440987832 +66817.681,5.064569159 +66817.701,3.160984735 +66817.721,2.330826728 +66817.741,2.341949073 +66817.761,1.402780107 +66817.781,-0.89761061 +66817.801,-2.868749745 +66817.821,-3.273410565 +66817.841,-3.379436431 +66817.861,-4.786085384 +66817.881,-6.794222516 +66817.901,-7.529986144 +66817.921,-6.918279972 +66817.941,-6.75456122 +66817.961,-7.797463476 +66817.981,-8.498528265 +66818.001,-7.538655526 +66818.021,-5.958582787 +66818.041,-5.463288512 +66818.061,-5.714218413 +66818.081,-4.888763414 +66818.101,-2.725210042 +66818.121,-0.95602498 +66818.141,-0.530028616 +66818.161,-0.176760573 +66818.181,1.470783033 +66818.201,3.638476206 +66818.221,4.597353016 +66818.241,4.418398245 +66818.261,4.639317989 +66818.281,5.970394266 +66818.301,7.197882804 +66818.321,6.99126911 +66818.341,5.943450397 +66818.361,5.618010677 +66818.381,6.179458177 +66818.401,6.155296758 +66818.421,4.700780074 +66818.441,2.932429665 +66818.461,2.265107531 +66818.481,2.230088273 +66818.501,1.120187548 +66818.521,-1.179776623 +66818.541,-2.889012428 +66818.561,-3.176544281 +66818.581,-3.41664482 +66818.601,-4.930885393 +66818.621,-6.790312123 +66818.641,-7.300250459 +66818.661,-6.683580697 +66818.681,-6.701538706 +66818.701,-7.738428009 +66818.721,-8.241555865 +66818.741,-7.163275514 +66818.761,-5.71368586 +66818.781,-5.388590936 +66818.801,-5.55565005 +66818.821,-4.551090347 +66818.841,-2.399746657 +66818.861,-0.837928385 +66818.881,-0.531972786 +66818.901,-0.030988391 +66818.921,1.710994804 +66818.941,3.722496708 +66818.961,4.466507223 +66818.981,4.282539385 +66819.001,4.65502202 +66819.021,6.006567815 +66819.041,7.049087562 +66819.061,6.675916985 +66819.081,5.695404125 +66819.101,5.538030469 +66819.121,6.077885593 +66819.141,5.866734456 +66819.161,4.323019645 +66819.181,2.718728213 +66819.201,2.211402346 +66819.221,2.088517059 +66819.241,0.794403092 +66819.261,-1.443922019 +66819.281,-2.912373892 +66819.301,-3.107571446 +66819.321,-3.474813497 +66819.341,-5.088442161 +66819.361,-6.784223515 +66819.381,-7.070333279 +66819.401,-6.486447244 +66819.421,-6.666528167 +66819.441,-7.700967087 +66819.461,-7.991513811 +66819.481,-6.784080308 +66819.501,-5.484569549 +66819.521,-5.312113699 +66819.541,-5.373820983 +66819.561,-4.184532166 +66819.581,-2.102136806 +66819.601,-0.770628142 +66819.621,-0.509641267 +66819.641,0.126270852 +66819.661,1.928408203 +66819.681,3.772358601 +66819.701,4.336956487 +66819.721,4.186329388 +66819.741,4.692109164 +66819.761,6.029661283 +66819.781,6.860189094 +66819.801,6.375696029 +66819.821,5.502024556 +66819.841,5.457961263 +66819.861,5.952246198 +66819.881,5.442910407 +66819.901,3.733510448 +66819.921,2.382429991 +66819.941,2.155620356 +66819.961,1.748843356 +66819.981,0.049138176 +66820.001,-2.041002666 +66820.021,-2.980126232 +66820.041,-3.075505966 +66820.061,-3.857318887 +66820.081,-5.617836471 +66820.101,-6.86945008 +66820.121,-6.726207436 +66820.141,-6.292698579 +66820.161,-6.842852345 +66820.181,-7.751977454 +66820.201,-7.512390404 +66820.221,-6.148463968 +66820.241,-5.22647638 +66820.261,-5.274996954 +66820.281,-5.001564828 +66820.301,-3.419114141 +66820.321,-1.501548841 +66820.341,-0.634263685 +66820.361,-0.397375834 +66820.381,0.627050689 +66820.401,2.55618572 +66820.421,3.985534006 +66820.441,4.152757734 +66820.461,4.139499582 +66820.481,4.998423461 +66820.501,6.261890829 +66820.521,6.620772701 +66820.541,5.887481606 +66820.561,5.261433355 +66820.581,5.507077179 +66820.601,5.777293771 +66820.621,4.925337989 +66820.641,3.306778323 +66820.661,2.257163999 +66820.681,2.070586859 +66820.701,1.482164906 +66820.721,-0.287844347 +66820.741,-2.183110309 +66820.761,-2.922177536 +66820.781,-3.064642425 +66820.801,-4.025000341 +66820.821,-5.72883885 +66820.841,-6.722758092 +66820.861,-6.47676935 +66820.881,-6.194879363 +66820.901,-6.848913921 +66820.921,-7.608457006 +66820.941,-7.14658081 +66820.961,-5.830195994 +66820.981,-5.115819358 +66821.001,-5.18559664 +66821.021,-4.714037488 +66821.041,-3.053781775 +66821.061,-1.317212485 +66821.081,-0.626859864 +66821.101,-0.308404091 +66821.121,0.88462202 +66821.141,2.73907532 +66821.161,3.926373159 +66821.181,4.003971671 +66821.201,4.129020446 +66821.221,5.072101616 +66821.241,6.193500386 +66821.261,6.358655599 +66821.281,5.609122229 +66821.301,5.143588025 +66821.321,5.446173948 +66821.341,5.552164247 +66821.361,4.572332616 +66821.381,3.027240252 +66821.401,2.165305581 +66821.421,1.95791093 +66821.441,1.19493495 +66821.461,-0.612293341 +66821.481,-2.288886621 +66821.501,-2.87046646 +66821.521,-3.109004762 +66821.541,-4.198255374 +66821.561,-5.804811249 +66821.581,-6.547588348 +66821.601,-6.260485862 +66821.621,-6.150814916 +66821.641,-6.860461035 +66821.661,-7.429063216 +66821.681,-6.784978542 +66821.701,-5.55718293 +66821.721,-5.0178554 +66821.741,-5.047898201 +66821.761,-4.372434334 +66821.781,-2.680697042 +66821.801,-1.164573924 +66821.821,-0.594328166 +66821.841,-0.156316874 +66821.861,1.152240622 +66821.881,2.898832499 +66821.901,3.850225758 +66821.921,3.908507197 +66821.941,4.149835767 +66821.961,5.141484598 +66821.981,6.127113605 +66822.001,6.100486202 +66822.021,5.369956516 +66822.041,5.063775255 +66822.061,5.365787374 +66822.081,5.29589737 +66822.101,4.201982435 +66822.121,2.804192153 +66822.141,2.083488233 +66822.161,1.83141741 +66822.18099,0.891651432 +66822.201,-0.89565047 +66822.221,-2.354905959 +66822.241,-2.81212489 +66822.261,-3.178788268 +66822.281,-4.3902996 +66822.301,-5.856988548 +66822.321,-6.389182002 +66822.341,-6.080411134 +66822.361,-6.122849731 +66822.381,-6.847670805 +66822.401,-7.205563639 +66822.421,-6.43181591 +66822.441,-5.334305926 +66822.461,-4.935175976 +66822.481,-4.872007867 +66822.501,-4.04380214 +66822.521,-2.371859312 +66822.541,-1.047901298 +66822.561,-0.560136746 +66822.581,-0.004168539 +66822.601,1.418673022 +66822.621,3.022917809 +66822.641,3.765811131 +66822.661,3.805399378 +66822.681,4.18485196 +66822.701,5.190137642 +66822.721,5.985105729 +66822.741,5.789924 +66822.761,5.120525377 +66822.781,5.01943808 +66822.801,5.286570344 +66822.821,4.841960681 +66822.841,3.57427302 +66822.861,2.408380658 +66822.881,1.939540307 +66822.901,1.540797512 +66822.921,0.239258083 +66822.941,-1.483609271 +66822.961,-2.521300059 +66822.981,-2.851631119 +66823.001,-3.497786426 +66823.021,-4.839100881 +66823.041,-6.003498439 +66823.061,-6.140794554 +66823.081,-5.908255435 +66823.101,-6.22793295 +66823.121,-6.887112194 +66823.141,-6.854283508 +66823.161,-5.892041487 +66823.181,-5.026228262 +66823.201,-4.846023647 +66823.221,-4.557814263 +66823.241,-3.386214864 +66823.261,-1.79475682 +66823.281,-0.824000759 +66823.301,-0.4072751 +66823.321,0.439623363 +66823.341,1.961804268 +66823.361,3.279888806 +66823.381,3.709035333 +66823.401,3.819353456 +66823.421,4.448578378 +66823.441,5.422481724 +66823.461,5.853424339 +66823.481,5.454850363 +66823.501,4.952875261 +66823.521,4.966977282 +66823.541,5.111694332 +66823.561,4.525851045 +66823.581,3.280659966 +66823.601,2.256461627 +66823.621,1.860228472 +66823.641,1.288093749 +66823.661,-0.072448505 +66823.681,-1.663413141 +66823.701,-2.531942891 +66823.721,-2.881496531 +66823.741,-3.653097822 +66823.761,-4.964631348 +66823.781,-5.93722696 +66823.801,-5.988005429 +66823.821,-5.808184504 +66823.841,-6.227437958 +66823.861,-6.774749646 +66823.881,-6.54047518 +66823.901,-5.597847715 +66823.921,-4.879557042 +66823.941,-4.724634374 +66823.961,-4.297151238 +66823.981,-3.025287986 +66824.001,-1.570205617 +66824.021,-0.750285384 +66824.041,-0.293523775 +66824.061,0.649103868 +66824.081,2.161812619 +66824.101,3.282393994 +66824.121,3.619866996 +66824.141,3.80967362 +66824.161,4.513816698 +66824.181,5.399351961 +66824.201,5.642123452 +66824.221,5.211666276 +66824.241,4.825488828 +66824.261,4.893697675 +66824.281,4.919423258 +66824.301,4.198107811 +66824.321,3.007444888 +66824.341,2.15811877 +66824.361,1.738998146 +66824.381,1.026248712 +66824.401,-0.372556612 +66824.421,-1.799963493 +66824.441,-2.521727692 +66824.461,-2.937785739 +66824.481,-3.813111371 +66824.501,-5.060456721 +66824.521,-5.804068543 +66824.541,-5.79713299 +66824.561,-5.760692761 +66824.581,-6.217182323 +66824.601,-6.632780184 +66824.621,-6.227037669 +66824.641,-5.330277416 +66824.661,-4.75193428 +66824.681,-4.571709213 +66824.701,-4.000564448 +66824.721,-2.701276493 +66824.741,-1.391109058 +66824.761,-0.689938136 +66824.781,-0.140985505 +66824.801,0.913811679 +66824.821,2.319766288 +66824.841,3.264412163 +66824.861,3.56619937 +66824.881,3.844451046 +66824.901,4.576165162 +66824.921,5.351618626 +66824.941,5.443926177 +66824.961,5.010276629 +66824.981,4.743004632 +66825.001,4.81893429 +66825.021,4.694938427 +66825.041,3.889738142 +66825.061,2.76672416 +66825.081,2.008951705 +66825.101,1.570675833 +66825.121,0.735506136 +66825.141,-0.675863512 +66825.161,-1.911386465 +66825.181,-2.523506613 +66825.201,-3.015421313 +66825.221,-3.974458516 +66825.241,-5.134653634 +66825.261,-5.700340936 +66825.281,-5.651283021 +66825.301,-5.727856756 +66825.321,-6.19747972 +66825.341,-6.434012891 +66825.361,-5.936380859 +66825.381,-5.110346373 +66825.401,-4.650923719 +66825.421,-4.411123885 +66825.441,-3.689039675 +66825.461,-2.405125252 +66825.481,-1.225388675 +66825.501,-0.604644537 +66825.521,0.02240499 +66825.541,1.149369613 +66825.561,2.459251303 +66825.581,3.238863856 +66825.601,3.505863708 +66825.621,3.929152589 +66825.641,4.724075505 +66825.661,5.292561281 +66825.681,5.159566554 +66825.701,4.749120832 +66825.721,4.633294774 +66825.741,4.686525225 +66825.761,4.328329993 +66825.781,3.359197355 +66825.801,2.37755329 +66825.821,1.800123609 +66825.841,1.258678489 +66825.861,0.19687125 +66825.881,-1.166512972 +66825.901,-2.158278079 +66825.921,-2.687657357 +66825.941,-3.414817701 +66825.961,-4.574475135 +66825.981,-5.413841213 +66826.001,-5.574296054 +66826.021,-5.560279697 +66826.041,-5.878307929 +66826.061,-6.257310968 +66826.081,-6.055445392 +66826.101,-5.326707538 +66826.121,-4.716041586 +66826.141,-4.427226331 +66826.161,-3.946220298 +66826.181,-2.890704759 +66826.201,-1.579746823 +66826.221,-0.715152941 +66826.241,-0.056426323 +66826.261,1.007500844 +66826.281,2.262862758 +66826.301,3.068194088 +66826.321,3.38986824 +66826.341,3.773879085 +66826.361,4.451777205 +66826.381,5.060280747 +66826.401,5.107110374 +66826.421,4.743969078 +66826.441,4.548693464 +66826.461,4.582357231 +66826.481,4.353823545 +66826.501,3.570283951 +66826.521,2.581126718 +66826.541,1.907083912 +66826.561,1.401351105 +66826.581,0.516920901 +66826.601,-0.771741532 +66826.621,-1.859675642 +66826.641,-2.469987271 +66826.661,-3.046542131 +66826.681,-3.979345995 +66826.701,-4.952552598 +66826.721,-5.426498669 +66826.741,-5.437599591 +66826.761,-5.585099419 +66826.781,-5.987004784 +66826.801,-6.092094027 +66826.821,-5.583960497 +66826.841,-4.885999064 +66826.861,-4.467068034 +66826.881,-4.140977921 +66826.901,-3.369641513 +66826.921,-2.206062284 +66826.941,-1.189385768 +66826.961,-0.556350639 +66826.981,0.147337105 +66827.00099,1.247852721 +66827.021,2.382483452 +66827.041,3.062834414 +66827.061,3.378267087 +66827.081,3.813682949 +66827.101,4.486406852 +66827.121,4.95550777 +66827.141,4.909889375 +66827.161,4.584628999 +66827.181,4.445814261 +66827.201,4.444633304 +66827.221,4.089212258 +66827.241,3.269439356 +66827.261,2.38180541 +66827.281,1.775854815 +66827.301,1.186161135 +66827.321,0.20070278 +66827.341,-1.017435759 +66827.361,-1.952104697 +66827.381,-2.529710014 +66827.401,-3.178240206 +66827.421,-4.124265894 +66827.441,-4.969871804 +66827.461,-5.312115373 +66827.481,-5.345458615 +66827.501,-5.568701655 +66827.521,-5.909149409 +66827.541,-5.871674067 +66827.561,-5.314170558 +66827.581,-4.704981788 +66827.601,-4.344440012 +66827.621,-3.927775164 +66827.641,-3.058515321 +66827.661,-1.927389678 +66827.681,-1.047972712 +66827.701,-0.430168883 +66827.721,0.353514134 +66827.741,1.439725933 +66827.761,2.46658046 +66827.781,3.034683194 +66827.801,3.365635831 +66827.821,3.881077748 +66827.841,4.483928384 +66827.861,4.811967905 +66827.881,4.703894118 +66827.901,4.440184766 +66827.921,4.349771133 +66827.941,4.261980707 +66827.961,3.831459625 +66827.981,3.000116258 +66828.001,2.183115091 +66828.021,1.616277058 +66828.041,0.944161767 +66828.061,-0.062901893 +66828.081,-1.199109621 +66828.101,-2.036625584 +66828.121,-2.611451143 +66828.141,-3.307237251 +66828.161,-4.220976444 +66828.181,-4.933242903 +66828.201,-5.181435382 +66828.221,-5.263730796 +66828.241,-5.509292364 +66828.261,-5.776421724 +66828.281,-5.611793574 +66828.301,-5.034632446 +66828.321,-4.511727065 +66828.341,-4.197677421 +66828.361,-3.678949659 +66828.381,-2.754586797 +66828.401,-1.703723423 +66828.421,-0.922420538 +66828.441,-0.283256284 +66828.461,0.569566136 +66828.481,1.624332924 +66828.501,2.507878693 +66828.521,3.002810606 +66828.541,3.374514382 +66828.561,3.913203338 +66828.581,4.455162602 +66828.601,4.658941048 +66828.621,4.5117087 +66828.641,4.309944626 +66828.661,4.227833662 +66828.681,4.060032585 +66828.701,3.534213726 +66828.721,2.716859078 +66828.741,1.997714197 +66828.761,1.438211746 +66828.781,0.652364867 +66828.801,-0.445783934 +66828.821,-1.499583 +66828.841,-2.226569391 +66828.861,-2.816728558 +66828.881,-3.590854 +66828.901,-4.383161649 +66828.921,-4.896879683 +66828.941,-5.072446145 +66828.961,-5.19585164 +66828.981,-5.487766275 +66829.001,-5.63187542 +66829.021,-5.289264 +66829.041,-4.694806654 +66829.061,-4.291100868 +66829.081,-3.940597 +66829.101,-3.305461082 +66829.121,-2.399898448 +66829.141,-1.492829811 +66829.161,-0.774024791 +66829.181,-0.034418502 +66829.201,0.990455045 +66829.221,2.043802345 +66829.241,2.704765748 +66829.261,3.102110041 +66829.281,3.557279925 +66829.301,4.109455422 +66829.321,4.47024379 +66829.341,4.475286231 +66829.361,4.290264587 +66829.381,4.169661868 +66829.401,4.055706249 +66829.421,3.69906905 +66829.441,3.006923021 +66829.461,2.262223508 +66829.481,1.647083608 +66829.501,1.034242986 +66829.521,0.147037322 +66829.541,-0.904714829 +66829.561,-1.734724494 +66829.581,-2.337598413 +66829.601,-3.030994212 +66829.621,-3.845563971 +66829.641,-4.526600777 +66829.661,-4.888002285 +66829.681,-5.036209958 +66829.701,-5.232853184 +66829.721,-5.471328781 +66829.741,-5.385468391 +66829.761,-4.957615713 +66829.781,-4.492209645 +66829.801,-4.103628842 +66829.821,-3.622660051 +66829.841,-2.837525487 +66829.861,-1.889976974 +66829.881,-1.080034732 +66829.901,-0.43549756 +66829.921,0.33452969 +66829.941,1.291299718 +66829.961,2.162445281 +66829.981,2.726726875 +66830.001,3.131592148 +66830.021,3.611388598 +66830.041,4.105969935 +66830.061,4.366906682 +66830.081,4.315763607 +66830.101,4.162007707 +66830.121,4.058674811 +66830.141,3.893825028 +66830.161,3.448799588 +66830.181,2.754011626 +66830.201,2.06038894 +66830.221,1.48825402 +66830.241,0.785816412 +66830.261,-0.144943704 +66830.281,-1.096734759 +66830.301,-1.864051645 +66830.321,-2.481049507 +66830.341,-3.173626213 +66830.361,-3.952345607 +66830.381,-4.524966794 +66830.401,-4.798208747 +66830.421,-4.97765227 +66830.441,-5.214176503 +66830.461,-5.353923591 +66830.481,-5.185441049 +66830.501,-4.737836691 +66830.521,-4.29931369 +66830.541,-3.91384803 +66830.561,-3.348898002 +66830.581,-2.551736991 +66830.601,-1.674702456 +66830.621,-0.936903989 +66830.641,-0.251481419 +66830.661,0.551919423 +66830.681,1.460998707 +66830.701,2.240779379 +66830.721,2.72183995 +66830.741,3.169292493 +66830.761,3.649153743 +66830.781,4.06319183 +66830.801,4.225511981 +66830.821,4.169523335 +66830.841,4.05615228 +66830.861,3.938295185 +66830.881,3.691079846 +66830.901,3.179599564 +66830.921,2.505633032 +66830.941,1.883621055 +66830.961,1.275077145 +66830.981,0.507644187 +66831.001,-0.379071984 +66831.021,-1.254812402 +66831.041,-1.966010297 +66831.061,-2.598200155 +66831.081,-3.306601902 +66831.101,-4.025806596 +66831.121,-4.491285535 +66831.141,-4.736319395 +66831.161,-4.935527635 +66831.181,-5.157232406 +66831.201,-5.189138228 +66831.221,-4.940438536 +66831.241,-4.537025118 +66831.261,-4.139520674 +66831.281,-3.716318461 +66831.301,-3.090397987 +66831.321,-2.271185235 +66831.341,-1.464954256 +66831.361,-0.763131411 +66831.381,-0.060977718 +66831.401,0.758717573 +66831.421,1.620175468 +66831.441,2.291873148 +66831.461,2.770300704 +66831.481,3.219625711 +66831.501,3.693804139 +66831.521,4.002453466 +66831.541,4.086432521 +66831.561,4.041253392 +66831.581,3.934311833 +66831.601,3.780691412 +66831.621,3.47715537 +66831.641,2.920421346 +66831.661,2.281327819 +66831.681,1.678723637 +66831.701,1.057205141 +66831.721,0.254979111 +66831.741,-0.615759522 +66831.761,-1.404692347 +66831.781,-2.050783026 +66831.801,-2.729314722 +66831.82099,-3.450752972 +66831.841,-4.071597447 +66831.861,-4.447211994 +66831.881,-4.666631067 +66831.901,-4.890389662 +66831.921,-5.063617026 +66831.941,-5.008065034 +66831.961,-4.723589364 +66831.981,-4.3453379 +66832.001,-3.977593316 +66832.021,-3.492950187 +66832.041,-2.806988962 +66832.061,-2.022015104 +66832.081,-1.284576175 +66832.101,-0.602595424 +66832.121,0.145839267 +66832.141,0.971129058 +66832.161,1.735024018 +66832.181,2.343485622 +66832.201,2.812616633 +66832.221,3.267279311 +66832.241,3.691393412 +66832.261,3.936175452 +66832.281,3.979925347 +66832.301,3.925344024 +66832.321,3.807310581 +66832.341,3.60853518 +66832.361,3.228804643 +66832.381,2.680851022 +66832.401,2.088631803 +66832.421,1.502053125 +66832.441,0.801100015 +66832.461,-0.006040057 +66832.481,-0.815754676 +66832.501,-1.544590089 +66832.521,-2.186051518 +66832.541,-2.891261757 +66832.561,-3.559029974 +66832.581,-4.057779113 +66832.601,-4.405677966 +66832.621,-4.665106927 +66832.641,-4.899402545 +66832.661,-4.961197853 +66832.681,-4.822691042 +66832.701,-4.544794143 +66832.721,-4.172998183 +66832.741,-3.767107954 +66832.761,-3.244570646 +66832.781,-2.555597171 +66832.801,-1.80911243 +66832.821,-1.106124347 +66832.841,-0.397254706 +66832.861,0.377764927 +66832.881,1.160752646 +66832.901,1.845704699 +66832.921,2.384738804 +66832.94101,2.869440924 +66832.961,3.321127484 +66832.981,3.661597894 +66833.001,3.826932035 +66833.021,3.864990636 +66833.041,3.811777658 +66833.061,3.686372291 +66833.081,3.410772527 +66833.101,2.975481615 +66833.121,2.460226234 +66833.141,1.891243082 +66833.161,1.263710779 +66833.181,0.5276091 +66833.201,-0.238494868 +66833.221,-0.978163821 +66833.241,-1.682267548 +66833.261,-2.370071995 +66833.281,-3.045505748 +66833.301,-3.620856121 +66833.321,-4.059872119 +66833.341,-4.382026766 +66833.361,-4.634242089 +66833.381,-4.794051354 +66833.401,-4.810131738 +66833.421,-4.623318799 +66833.441,-4.345684626 +66833.461,-4.010849255 +66833.481,-3.581206285 +66833.501,-2.989046978 +66833.521,-2.289832218 +66833.541,-1.601593962 +66833.561,-0.917920683 +66833.581,-0.189920518 +66833.601,0.5699038 +66833.621,1.300313015 +66833.641,1.912917196 +66833.661,2.447303189 +66833.681,2.941690618 +66833.701,3.341039938 +66833.721,3.607438873 +66833.741,3.73611567 +66833.761,3.761093237 +66833.781,3.719109195 +66833.801,3.540550069 +66833.821,3.19608553 +66833.841,2.753543243 +66833.861,2.256600889 +66833.881,1.70444863 +66833.901,1.02783682 +66833.921,0.272069849 +66833.941,-0.437445174 +66833.961,-1.12847623 +66833.981,-1.816132477 +66834.001,-2.513260402 +66834.021,-3.171346958 +66834.041,-3.660339633 +66834.061,-4.044601124 +66834.081,-4.367841596 +66834.101,-4.610516259 +66834.121,-4.727204148 +66834.141,-4.646348132 +66834.161,-4.430016844 +66834.181,-4.189873218 +66834.201,-3.822452108 +66834.221,-3.328047213 +66834.241,-2.713226821 +66834.261,-2.061275714 +66834.281,-1.412438655 +66834.301,-0.71434516 +66834.321,0.042148078 +66834.341,0.769493744 +66834.361,1.416080486 +66834.381,1.999859319 +66834.401,2.510719278 +66834.421,3.001570869 +66834.441,3.347692716 +66834.461,3.528041435 +66834.481,3.633991389 +66834.501,3.673184468 +66834.521,3.599428806 +66834.541,3.350603944 +66834.561,2.98755908 +66834.581,2.557856577 +66834.601,2.074280374 +66834.621,1.490427462 +66834.641,0.776210604 +66834.661,0.054922495 +66834.681,-0.620775921 +66834.701,-1.276173734 +66834.721,-1.97473903 +66834.741,-2.681834127 +66834.761,-3.251156452 +66834.781,-3.678055836 +66834.801,-4.040502223 +66834.821,-4.364698526 +66834.841,-4.594742269 +66834.861,-4.60399428 +66834.881,-4.437015511 +66834.901,-4.253616545 +66834.921,-3.988229619 +66834.941,-3.537099403 +66834.961,-2.956698367 +66834.981,-2.348796644 +66835.001,-1.744884117 +66835.021,-1.091608838 +66835.041,-0.349290647 +66835.061,0.386671867 +66835.081,1.029856274 +66835.101,1.616179129 +66835.121,2.1791254 +66835.141,2.702120429 +66835.161,3.115157167 +66835.181,3.342981798 +66835.201,3.470086136 +66835.221,3.580884085 +66835.241,3.597960318 +66835.261,3.4193498 +66835.281,3.078059131 +66835.301,2.675737668 +66835.321,2.266338344 +66835.341,1.773291287 +66835.361,1.110248004 +66835.381,0.370458359 +66835.401,-0.302283874 +66835.421,-0.919074449 +66835.441,-1.580158711 +66835.461,-2.312245746 +66835.481,-2.946751183 +66835.501,-3.388433075 +66835.521,-3.762304603 +66835.541,-4.138094105 +66835.561,-4.42811197 +66835.581,-4.515941631 +66835.601,-4.435560828 +66835.621,-4.288441307 +66835.641,-4.118705229 +66835.661,-3.811350176 +66835.681,-3.30493541 +66835.701,-2.716360271 +66835.721,-2.143855337 +66835.741,-1.568446552 +66835.761,-0.88596825 +66835.781,-0.127854379 +66835.801,0.574386627 +66835.821,1.161885865 +66835.841,1.717067772 +66835.861,2.270436719 +66835.881,2.779476596 +66835.901,3.114610337 +66835.921,3.277085095 +66835.941,3.405331358 +66835.961,3.502266509 +66835.981,3.472582719 +66836.001,3.238048854 +66836.021,2.878543229 +66836.041,2.482397372 +66836.061,2.088789889 +66836.081,1.553806868 +66836.101,0.838952207 +66836.121,0.137399333 +66836.141,-0.463049943 +66836.161,-1.082962535 +66836.181,-1.764803285 +66836.201,-2.479906669 +66836.221,-3.03933396 +66836.241,-3.42965717 +66836.261,-3.773153481 +66836.281,-4.151496246 +66836.301,-4.408020905 +66836.321,-4.419139505 +66836.341,-4.284920385 +66836.361,-4.155429644 +66836.381,-3.982199158 +66836.401,-3.618374341 +66836.421,-3.064882187 +66836.441,-2.475558357 +66836.461,-1.949634454 +66836.481,-1.360550247 +66836.501,-0.650165721 +66836.521,0.093075561 +66836.541,0.736196809 +66836.561,1.27032007 +66836.581,1.804184251 +66836.601,2.380939112 +66836.621,2.84250657 +66836.64099,3.081158935 +66836.661,3.212466224 +66836.681,3.340795985 +66836.701,3.435180614 +66836.721,3.338932257 +66836.741,3.035255671 +66836.761,2.669140864 +66836.781,2.33001609 +66836.801,1.904629069 +66836.821,1.29849695 +66836.841,0.572923849 +66836.861,-0.066761504 +66836.881,-0.618942812 +66836.901,-1.236092011 +66836.921,-1.962163925 +66836.941,-2.635900753 +66836.961,-3.103003404 +66836.981,-3.43795731 +66837.001,-3.823789584 +66837.021,-4.188112626 +66837.041,-4.344712853 +66837.061,-4.29622335 +66837.081,-4.15662192 +66837.101,-4.031113056 +66837.121,-3.816569288 +66837.141,-3.3761154 +66837.161,-2.811315083 +66837.181,-2.264722093 +66837.201,-1.767312684 +66837.221,-1.155478583 +66837.241,-0.409497146 +66837.261,0.293355881 +66837.281,0.852738919 +66837.301,1.367401518 +66837.321,1.928746949 +66837.341,2.495737716 +66837.361,2.857963171 +66837.381,3.032966384 +66837.401,3.161928981 +66837.421,3.299072008 +66837.441,3.350974839 +66837.461,3.179871479 +66837.481,2.848077754 +66837.501,2.49263515 +66837.521,2.156885589 +66837.541,1.701443477 +66837.561,1.028585468 +66837.581,0.335998944 +66837.601,-0.232176636 +66837.621,-0.773201446 +66837.641,-1.428731184 +66837.661,-2.148584043 +66837.681,-2.723948125 +66837.701,-3.104904229 +66837.721,-3.458968648 +66837.741,-3.863515691 +66837.76101,-4.181784695 +66837.781,-4.240486033 +66837.801,-4.143281232 +66837.821,-4.039009262 +66837.841,-3.928465674 +66837.861,-3.695277952 +66837.881,-3.243641049 +66837.901,-2.666683124 +66837.921,-2.158558759 +66837.941,-1.632945689 +66837.961,-0.940309032 +66837.981,-0.164146546 +66838.001,0.460932168 +66838.021,0.975188197 +66838.041,1.489900958 +66838.061,2.069484996 +66838.081,2.576837512 +66838.101,2.856794611 +66838.121,2.985993537 +66838.141,3.128330912 +66838.161,3.259569986 +66838.181,3.236941946 +66838.201,2.993726774 +66838.221,2.639895467 +66838.241,2.328205985 +66838.261,1.992589824 +66838.281,1.46761749 +66838.301,0.787078514 +66838.321,0.162387358 +66838.341,-0.34167668 +66838.361,-0.841632217 +66838.381,-1.474582561 +66838.401,-2.201470988 +66838.421,-2.795221847 +66838.441,-3.172540386 +66838.461,-3.554997756 +66838.481,-3.939545433 +66838.501,-4.161642309 +66838.521,-4.120506361 +66838.541,-3.998004243 +66838.561,-3.922973217 +66838.581,-3.769752164 +66838.601,-3.365001011 +66838.621,-2.828629906 +66838.641,-2.330167914 +66838.661,-1.855524583 +66838.681,-1.296168007 +66838.701,-0.582830432 +66838.721,0.111358258 +66838.741,0.65535049 +66838.761,1.133823333 +66838.781,1.680943875 +66838.801,2.242634245 +66838.821,2.649195352 +66838.841,2.835952079 +66838.861,2.958440483 +66838.881,3.12455898 +66838.901,3.205200289 +66838.921,3.08028839 +66838.941,2.768798174 +66838.961,2.435619599 +66838.981,2.152075653 +66839.001,1.762999346 +66839.021,1.142028996 +66839.041,0.451736461 +66839.061,-0.099959789 +66839.081,-0.592961483 +66839.101,-1.223312311 +66839.121,-1.926804754 +66839.141,-2.506153148 +66839.161,-2.890334879 +66839.181,-3.222259624 +66839.201,-3.628980956 +66839.221,-3.970340577 +66839.241,-4.086350548 +66839.261,-4.000981035 +66839.281,-3.906226343 +66839.301,-3.829639856 +66839.321,-3.587744809 +66839.341,-3.130252932 +66839.361,-2.601545913 +66839.381,-2.145581612 +66839.401,-1.680207577 +66839.421,-1.054083862 +66839.441,-0.347378439 +66839.461,0.270762559 +66839.481,0.755329927 +66839.501,1.250220775 +66839.521,1.834133699 +66839.541,2.346475538 +66839.561,2.648371869 +66839.581,2.799306348 +66839.601,2.944127658 +66839.621,3.09607745 +66839.641,3.103852091 +66839.661,2.899459546 +66839.681,2.593560258 +66839.701,2.317062061 +66839.721,2.009935649 +66839.741,1.51643764 +66839.761,0.868583215 +66839.781,0.250921992 +66839.801,-0.254411724 +66839.821,-0.774162473 +66839.841,-1.428268784 +66839.861,-2.10108487 +66839.881,-2.597318952 +66839.901,-2.94769466 +66839.921,-3.291327804 +66839.941,-3.680523961 +66839.961,-3.953559659 +66839.981,-3.97494141 +66840.001,-3.876527261 +66840.021,-3.816088953 +66840.041,-3.718890137 +66840.061,-3.401335537 +66840.081,-2.911763802 +66840.101,-2.409030911 +66840.121,-1.975516796 +66840.141,-1.480726441 +66840.161,-0.817924772 +66840.181,-0.132878368 +66840.201,0.417493803 +66840.221,0.87533591 +66840.241,1.392599859 +66840.261,1.963124483 +66840.281,2.4076387 +66840.301,2.634580799 +66840.321,2.775356658 +66840.341,2.934077645 +66840.361,3.053738103 +66840.381,2.9893931 +66840.401,2.734140748 +66840.421,2.437391612 +66840.441,2.161843942 +66840.461,1.815785437 +66840.481,1.274043024 +66840.501,0.629297268 +66840.521,0.084436105 +66840.541,-0.395050942 +66840.561,-0.974350589 +66840.581,-1.650460979 +66840.601,-2.238296778 +66840.621,-2.657374609 +66840.641,-2.998261966 +66840.661,-3.379578552 +66840.681,-3.754061455 +66840.701,-3.906177179 +66840.721,-3.857102748 +66840.741,-3.794351827 +66840.761,-3.745415271 +66840.781,-3.568775547 +66840.801,-3.169331766 +66840.821,-2.684173024 +66840.841,-2.248425386 +66840.861,-1.809610729 +66840.881,-1.249067774 +66840.901,-0.568737356 +66840.921,0.03883098 +66840.941,0.528727164 +66840.961,1.012066174 +66840.981,1.568380479 +66841.001,2.117445619 +66841.021,2.47322439 +66841.041,2.639973905 +66841.061,2.795349226 +66841.081,2.959662416 +66841.101,2.98331467 +66841.121,2.792126717 +66841.141,2.502733318 +66841.161,2.248666968 +66841.181,1.950420027 +66841.201,1.494152493 +66841.221,0.88343487 +66841.241,0.30739617 +66841.261,-0.172768155 +66841.281,-0.702006834 +66841.301,-1.326611551 +66841.321,-1.950043304 +66841.341,-2.416090526 +66841.361,-2.784528673 +66841.381,-3.153154352 +66841.401,-3.52278445 +66841.421,-3.777452986 +66841.441,-3.807400803 +66841.461,-3.747793951 +66841.481,-3.716929253 +66841.501,-3.606117958 +66841.521,-3.303732076 +66841.541,-2.844869798 +66841.561,-2.397390074 +66841.581,-1.993990677 +66841.601,-1.506423396 +66841.621,-0.867178332 +66841.641,-0.220145022 +66841.661,0.291789775 +66841.681,0.74199524 +66841.701,1.261819802 +66841.721,1.802412965 +66841.741,2.223158159 +66841.761,2.471593613 +66841.781,2.637273823 +66841.801,2.803799926 +66841.821,2.903289008 +66841.841,2.833416839 +66841.861,2.60487349 +66841.881,2.35773506 +66841.901,2.118175453 +66841.921,1.757178978 +66841.941,1.238641102 +66841.961,0.654123707 +66841.981,0.146751833 +66842.001,-0.328758668 +66842.021,-0.899840587 +66842.041,-1.522758541 +66842.061,-2.075659796 +66842.081,-2.493882312 +66842.101,-2.858696728 +66842.121,-3.234168167 +66842.141,-3.566629966 +66842.161,-3.715449692 +66842.181,-3.709011831 +66842.201,-3.674986203 +66842.221,-3.624319672 +66842.241,-3.436327719 +66842.261,-3.070733805 +66842.281,-2.651374851 +66842.301,-2.243383438 +66842.321,-1.812452569 +66842.341,-1.264806623 +66842.361,-0.624274187 +66842.381,-0.034651916 +66842.401,0.420212247 +66842.421,0.894749224 +66842.441,1.436403982 +66842.461,1.923754881 +66842.481,2.253576519 +66842.501,2.455570009 +66842.521,2.62759532 +66842.541,2.799496767 +66842.561,2.833957182 +66842.58101,2.695551889 +66842.601,2.473343212 +66842.621,2.240273652 +66842.641,1.973101738 +66842.661,1.532585133 +66842.681,0.980479381 +66842.701,0.456716984 +66842.721,-0.014907578 +66842.741,-0.521744899 +66842.761,-1.127303122 +66842.781,-1.724455184 +66842.801,-2.18901981 +66842.821,-2.571915213 +66842.841,-2.944314251 +66842.861,-3.324413801 +66842.881,-3.554488214 +66842.901,-3.621955848 +66842.921,-3.643881476 +66842.941,-3.632984754 +66842.961,-3.523964463 +66842.981,-3.26792849 +66843.001,-2.87456197 +66843.021,-2.467570134 +66843.041,-2.076549582 +66843.061,-1.607754774 +66843.081,-1.016231616 +66843.101,-0.413802567 +66843.121,0.087942692 +66843.141,0.535700163 +66843.161,1.061772194 +66843.181,1.582603378 +66843.201,1.989459187 +66843.221,2.252886483 +66843.241,2.444843753 +66843.261,2.650682753 +66843.281,2.762003339 +66843.301,2.717194787 +66843.321,2.552498316 +66843.341,2.341079616 +66843.361,2.11696901 +66843.381,1.772643653 +66843.401,1.289471502 +66843.421,0.771096102 +66843.441,0.28761106 +66843.461,-0.175324001 +66843.481,-0.733810492 +66843.501,-1.334445656 +66843.521,-1.853398973 +66843.541,-2.272526834 +66843.561,-2.660716212 +66843.581,-3.046720332 +66843.601,-3.358376813 +66843.621,-3.526297668 +66843.641,-3.560335525 +66843.661,-3.56402319 +66843.681,-3.533119876 +66843.701,-3.393628141 +66843.721,-3.071461116 +66843.741,-2.682684268 +66843.761,-2.299873936 +66843.781,-1.848142562 +66843.801,-1.286939152 +66843.821,-0.688019599 +66843.841,-0.14504863 +66843.861,0.314731624 +66843.881,0.800930632 +66843.901,1.325005942 +66843.921,1.76333063 +66843.941,2.078122013 +66843.961,2.294832279 +66843.981,2.511662492 +66844.001,2.665706613 +66844.021,2.686044254 +66844.041,2.561120426 +66844.061,2.373418505 +66844.081,2.180648914 +66844.101,1.89490884 +66844.121,1.46992455 +66844.141,0.962051996 +66844.161,0.483878515 +66844.181,0.036337849 +66844.201,-0.493195016 +66844.221,-1.074796651 +66844.241,-1.602810759 +66844.261,-2.046919196 +66844.281,-2.443711378 +66844.301,-2.842157246 +66844.321,-3.176180462 +66844.341,-3.396971909 +66844.361,-3.485913265 +66844.381,-3.507774387 +66844.401,-3.493026022 +66844.421,-3.339139864 +66844.441,-3.046086151 +66844.461,-2.70196853 +66844.481,-2.339698166 +66844.501,-1.930489531 +66844.521,-1.422228179 +66844.541,-0.861254651 +66844.561,-0.334877312 +66844.581,0.149057974 +66844.601,0.610068282 +66844.621,1.14641895 +66844.641,1.593388746 +66844.661,1.913807795 +66844.681,2.173221538 +66844.701,2.398772902 +66844.721,2.569855841 +66844.741,2.609625418 +66844.761,2.525340399 +66844.781,2.390490223 +66844.801,2.206390482 +66844.821,1.958987453 +66844.841,1.550545612 +66844.861,1.098502695 +66844.881,0.646151169 +66844.901,0.192459952 +66844.921,-0.307893022 +66844.941,-0.887282326 +66844.961,-1.408372915 +66844.981,-1.861820119 +66845.001,-2.255162489 +66845.021,-2.655423286 +66845.041,-3.032067398 +66845.061,-3.274487279 +66845.081,-3.381245485 +66845.101,-3.438940537 +66845.121,-3.476940258 +66845.141,-3.403899393 +66845.161,-3.168726841 +66845.181,-2.851195781 +66845.201,-2.538896091 +66845.221,-2.181063995 +66845.241,-1.721175385 +66845.261,-1.172181051 +66845.281,-0.666504126 +66845.301,-0.188900699 +66845.321,0.27425026 +66845.341,0.773327004 +66845.361,1.285743759 +66845.381,1.674989249 +66845.401,1.944797034 +66845.421,2.191752185 +66845.441,2.415259794 +66845.461,2.558258303 +66845.481,2.524612815 +66845.501,2.408314895 +66845.521,2.264893525 +66845.541,2.099642995 +66845.561,1.790581945 +66845.581,1.359817999 +66845.601,0.904797246 +66845.621,0.46494479 +66845.641,0.016360741 +66845.661,-0.518753105 +66845.681,-1.081495932 +66845.701,-1.550516177 +66845.721,-1.945589997 +66845.741,-2.365551972 +66845.761,-2.768656281 +66845.781,-3.085817448 +66845.801,-3.261628095 +66845.821,-3.342191493 +66845.841,-3.402189082 +66845.861,-3.413174916 +66845.881,-3.280518233 +66845.901,-2.997387705 +66845.921,-2.70007604 +66845.941,-2.388129834 +66845.961,-2.013630149 +66845.981,-1.508633969 +66846.001,-0.984866808 +66846.021,-0.495685859 +66846.041,-0.030989518 +66846.061,0.427715721 +66846.081,0.938091038 +66846.101,1.3891814 +66846.121,1.713719087 +66846.141,1.969657472 +66846.161,2.228589685 +66846.181,2.425698887 +66846.201,2.488944605 +66846.221,2.406721096 +66846.241,2.305521181 +66846.261,2.171506193 +66846.281,1.938138953 +66846.301,1.579444609 +66846.321,1.138378423 +66846.341,0.711591564 +66846.361,0.294885389 +66846.381,-0.184630116 +66846.401,-0.741119483 +66846.421,-1.25045154 +66846.441,-1.680153476 +66846.461,-2.064161814 +66846.481,-2.494186118 +66846.501,-2.853393598 +66846.521,-3.090566444 +66846.541,-3.232611483 +66846.561,-3.31319225 +66846.581,-3.370309953 +66846.601,-3.307098064 +66846.621,-3.119671134 +66846.641,-2.85249813 +66846.661,-2.572392933 +66846.681,-2.241143191 +66846.701,-1.803740875 +66846.721,-1.287875666 +66846.741,-0.771632965 +66846.761,-0.300332181 +66846.781,0.194157286 +66846.801,0.707492947 +66846.821,1.176854273 +66846.841,1.528587168 +66846.861,1.808269661 +66846.881,2.069984659 +66846.901,2.290345122 +66846.921,2.419162518 +66846.941,2.396103642 +66846.961,2.282049006 +66846.981,2.182843207 +66847.001,2.007537526 +66847.021,1.692466902 +66847.041,1.287453926 +66847.061,0.863113642 +66847.081,0.454660361 +66847.101,0.024093002 +66847.121,-0.506530208 +66847.141,-1.021935383 +66847.161,-1.462626793 +66847.181,-1.863014933 +66847.201,-2.272061514 +66847.221,-2.674118587 +66847.241,-2.96275362 +66847.261,-3.121309141 +66847.281,-3.21911879 +66847.301,-3.299413962 +66847.321,-3.306805693 +66847.341,-3.156434378 +66847.361,-2.915509672 +66847.381,-2.650416636 +66847.40099,-2.351222444 +66847.421,-1.962635252 +66847.441,-1.483549979 +66847.461,-1.007145305 +66847.481,-0.554537668 +66847.501,-0.096158549 +66847.521,0.374501533 +66847.541,0.860574091 +66847.561,1.273326589 +66847.581,1.574818961 +66847.601,1.850030942 +66847.621,2.11630883 +66847.641,2.304046845 +66847.661,2.35240377 +66847.681,2.300487668 +66847.701,2.208184761 +66847.721,2.077870307 +66847.741,1.848046836 +66847.761,1.50112087 +66847.781,1.107612663 +66847.801,0.712391891 +66847.821,0.283748931 +66847.841,-0.188467496 +66847.861,-0.70924556 +66847.881,-1.181109979 +66847.901,-1.584002871 +66847.921,-1.991390581 +66847.941,-2.398462964 +66847.961,-2.749796668 +66847.981,-2.977285001 +66848.001,-3.102142907 +66848.021,-3.202731259 +66848.041,-3.253785374 +66848.061,-3.200512607 +66848.081,-3.019055624 +66848.101,-2.770442989 +66848.121,-2.494345381 +66848.141,-2.180621432 +66848.161,-1.770007426 +66848.181,-1.282322255 +66848.201,-0.822142339 +66848.221,-0.400523428 +66848.241,0.065188576 +66848.261,0.549244354 +66848.281,0.999701041 +66848.301,1.350620747 +66848.321,1.632561845 +66848.341,1.907259663 +66848.361,2.160049645 +66848.381,2.282054635 +66848.401,2.270594793 +66848.421,2.211458781 +66848.441,2.122553244 +66848.461,1.963244278 +66848.481,1.679456099 +66848.501,1.306527372 +66848.521,0.931204872 +66848.541,0.539219512 +66848.561,0.109774241 +66848.581,-0.368375459 +66848.601,-0.885769989 +66848.621,-1.319658062 +66848.641,-1.694663649 +66848.661,-2.098820892 +66848.681,-2.506940274 +66848.701,-2.785593503 +66848.721,-2.954190493 +66848.741,-3.098863269 +66848.761,-3.194899646 +66848.781,-3.19634777 +66848.801,-3.076210209 +66848.821,-2.871758116 +66848.841,-2.638384757 +66848.861,-2.358255065 +66848.881,-1.991784972 +66848.901,-1.556163509 +66848.921,-1.099482181 +66848.941,-0.671665497 +66848.961,-0.217161374 +66848.981,0.244571236 +66849.001,0.694733705 +66849.021,1.106024418 +66849.041,1.433549756 +66849.061,1.714801312 +66849.081,1.978825687 +66849.101,2.15234347 +66849.121,2.214246957 +66849.141,2.198581191 +66849.161,2.152446053 +66849.181,2.030602947 +66849.201,1.806743724 +66849.221,1.49786918 +66849.241,1.144109956 +66849.261,0.774747096 +66849.281,0.374986092 +66849.301,-0.093918689 +66849.321,-0.578510291 +66849.341,-1.029703935 +66849.361,-1.443683389 +66849.381,-1.841881922 +66849.401,-2.21721977 +66849.421,-2.574467441 +66849.441,-2.823211958 +66849.461,-2.962271007 +66849.481,-3.074867888 +66849.501,-3.158070774 +66849.521,-3.120953366 +66849.541,-2.947096026 +66849.561,-2.731212915 +66849.581,-2.50885509 +66849.601,-2.207465543 +66849.621,-1.799909288 +66849.641,-1.345989223 +66849.661,-0.914273001 +66849.681,-0.501354446 +66849.701,-0.066849326 +66849.721,0.384634691 +66849.741,0.81488958 +66849.761,1.185922795 +66849.781,1.495109485 +66849.801,1.790840677 +66849.821,2.022357214 +66849.841,2.133921433 +66849.861,2.159517658 +66849.881,2.119721973 +66849.901,2.026210864 +66849.921,1.865318601 +66849.941,1.592738669 +66849.961,1.265322779 +66849.981,0.913677985 +66850.001,0.532092693 +66850.021,0.136386062 +66850.041,-0.316781205 +66850.061,-0.77390171 +66850.081,-1.162899538 +66850.101,-1.566664811 +66850.121,-1.995448198 +66850.141,-2.386953803 +66850.161,-2.673926845 +66850.181,-2.850697482 +66850.201,-2.991301169 +66850.221,-3.08890309 +66850.241,-3.080786993 +66850.261,-2.932508971 +66850.281,-2.741259505 +66850.301,-2.530699504 +66850.321,-2.238971087 +66850.341,-1.858896368 +66850.361,-1.424505896 +66850.381,-1.000889674 +66850.401,-0.604252407 +66850.421,-0.165130339 +66850.441,0.286177576 +66850.461,0.709400254 +66850.481,1.076097141 +66850.501,1.395410024 +66850.521,1.670519794 +66850.541,1.912869848 +66850.561,2.060033969 +66850.581,2.092718619 +66850.601,2.094305006 +66850.621,2.02499309 +66850.641,1.901239399 +66850.661,1.653902564 +66850.681,1.355007891 +66850.701,1.022035199 +66850.721,0.668446501 +66850.741,0.268169859 +66850.761,-0.186371578 +66850.781,-0.63737686 +66850.801,-1.054960467 +66850.821,-1.448522351 +66850.841,-1.849384707 +66850.861,-2.221034696 +66850.881,-2.525904931 +66850.901,-2.731586878 +66850.921,-2.881911416 +66850.941,-3.000304536 +66850.961,-3.04613691 +66850.981,-2.972847465 +66851.001,-2.805038794 +66851.021,-2.627410436 +66851.041,-2.390329522 +66851.061,-2.066029256 +66851.081,-1.677212002 +66851.101,-1.258260705 +66851.121,-0.837251522 +66851.141,-0.434583974 +66851.161,0.017720435 +66851.181,0.444927656 +66851.201,0.833317316 +66851.221,1.175735673 +66851.241,1.469531304 +66851.261,1.728155346 +66851.281,1.909851064 +66851.301,2.033448353 +66851.321,2.055165352 +66851.341,2.021557177 +66851.361,1.953263642 +66851.381,1.774169567 +66851.401,1.508188967 +66851.421,1.205098066 +66851.441,0.876634565 +66851.461,0.485176564 +66851.481,0.067142664 +66851.501,-0.374984659 +66851.521,-0.789558804 +66851.541,-1.19008661 +66851.561,-1.592423231 +66851.581,-1.976330716 +66851.601,-2.305555921 +66851.621,-2.574894818 +66851.641,-2.746910149 +66851.661,-2.885975399 +66851.681,-2.985159005 +66851.701,-2.973188752 +66851.721,-2.854026141 +66851.741,-2.703048338 +66851.761,-2.497304255 +66851.781,-2.233981017 +66851.801,-1.884590412 +66851.821,-1.490774102 +66851.841,-1.095498869 +66851.861,-0.69423072 +66851.881,-0.259853172 +66851.901,0.177841019 +66851.921,0.582409566 +66851.941,0.950464234 +66851.961,1.265633484 +66851.981,1.537355829 +66852.001,1.772059998 +66852.021,1.928228587 +66852.041,1.978765763 +66852.061,1.99766486 +66852.081,1.967501016 +66852.101,1.838765281 +66852.121,1.623488173 +66852.141,1.350194511 +66852.161,1.048646424 +66852.181,0.70481845 +66852.201,0.313651448 +66852.22099,-0.106316897 +66852.241,-0.546809486 +66852.261,-0.938835333 +66852.281,-1.325475512 +66852.301,-1.721078386 +66852.321,-2.078994569 +66852.341,-2.370134305 +66852.361,-2.605919648 +66852.381,-2.769713164 +66852.401,-2.891563679 +66852.421,-2.938319274 +66852.441,-2.89096577 +66852.461,-2.77322491 +66852.481,-2.590633729 +66852.501,-2.374577705 +66852.521,-2.069583122 +66852.541,-1.706108776 +66852.561,-1.309800227 +66852.581,-0.935623301 +66852.601,-0.546663802 +66852.621,-0.107304646 +66852.641,0.326851605 +66852.661,0.699230287 +66852.681,1.042409541 +66852.701,1.361863549 +66852.721,1.630373292 +66852.741,1.813695519 +66852.761,1.915561862 +66852.781,1.953957414 +66852.801,1.943058847 +66852.821,1.84425109 +66852.841,1.675359672 +66852.861,1.433667082 +66852.881,1.157703529 +66852.901,0.829617488 +66852.921,0.462582162 +66852.941,0.056867705 +66852.961,-0.360504641 +66852.981,-0.749260495 +66853.001,-1.106239872 +66853.021,-1.494284685 +66853.041,-1.857186711 +66853.061,-2.174041678 +66853.081,-2.429159455 +66853.101,-2.629623032 +66853.121,-2.817350334 +66853.141,-2.897198077 +66853.161,-2.88731068 +66853.181,-2.780793548 +66853.201,-2.635681853 +66853.221,-2.452574308 +66853.241,-2.169893167 +66853.261,-1.822002561 +66853.281,-1.457554652 +66853.301,-1.101343789 +66853.321,-0.699668095 +66853.341,-0.256125229 +66853.361,0.145701406 +66853.381,0.530662195 +66853.401,0.862899198 +66853.421,1.191400456 +66853.441,1.482120896 +66853.461,1.696901931 +66853.481,1.832820245 +66853.501,1.892705782 +66853.521,1.925553056 +66853.541,1.890014005 +66853.561,1.745729532 +66853.581,1.546854171 +66853.601,1.297178688 +66853.621,1.021219359 +66853.641,0.684564097 +66853.661,0.29307425 +66853.681,-0.10870245 +66853.701,-0.523943226 +66853.721,-0.898952959 +66853.741,-1.285309499 +66853.761,-1.684886909 +66853.781,-2.007271811 +66853.801,-2.28016967 +66853.821,-2.502663969 +66853.841,-2.687464897 +66853.861,-2.798807586 +66853.881,-2.845911919 +66853.901,-2.795517008 +66853.921,-2.67762557 +66853.941,-2.531151023 +66853.961,-2.313420375 +66853.981,-1.999972235 +66854.001,-1.668007487 +66854.021,-1.302129295 +66854.041,-0.941459268 +66854.061,-0.524861184 +66854.081,-0.097020454 +66854.101,0.281957948 +66854.121,0.618066434 +66854.141,0.958115909 +66854.161,1.278751224 +66854.181,1.539317169 +66854.201,1.706310357 +66854.221,1.813967323 +66854.241,1.876279141 +66854.261,1.882084979 +66854.281,1.805578065 +66854.301,1.631998708 +66854.321,1.411095804 +66854.341,1.151418376 +66854.361,0.862036229 +66854.381,0.496057178 +66854.401,0.112304525 +66854.421,-0.265635392 +66854.441,-0.663030395 +66854.461,-1.046928475 +66854.481,-1.43025191 +66854.501,-1.794257737 +66854.521,-2.096785403 +66854.541,-2.344133831 +66854.561,-2.532733881 +66854.581,-2.700134612 +66854.601,-2.788796498 +66854.621,-2.788066898 +66854.641,-2.712489463 +66854.661,-2.579932477 +66854.681,-2.419974041 +66854.701,-2.164066021 +66854.721,-1.835099612 +66854.741,-1.49764345 +66854.761,-1.14379187 +66854.781,-0.778587537 +66854.801,-0.36902552 +66854.821,0.057274287 +66854.841,0.402835205 +66854.861,0.735669389 +66854.881,1.057447062 +66854.901,1.356807346 +66854.921,1.579787607 +66854.941,1.707836785 +66854.961,1.791212624 +66854.981,1.825122123 +66855.001,1.797777267 +66855.021,1.686598432 +66855.041,1.514398635 +66855.061,1.291167809 +66855.081,1.030737242 +66855.101,0.695413259 +66855.121,0.344168031 +66855.141,-0.042524678 +66855.161,-0.427242828 +66855.181,-0.784304721 +66855.201,-1.168055253 +66855.221,-1.564997571 +66855.241,-1.894367578 +66855.261,-2.167827101 +66855.281,-2.385300741 +66855.301,-2.57669186 +66855.321,-2.698004928 +66855.341,-2.74513992 +66855.361,-2.710117788 +66855.381,-2.628367174 +66855.401,-2.494918036 +66855.421,-2.29050653 +66855.441,-2.006513215 +66855.461,-1.676659578 +66855.481,-1.348557053 +66855.501,-0.99636272 +66855.521,-0.59750955 +66855.541,-0.20160663 +66855.561,0.176580494 +66855.581,0.503538951 +66855.601,0.838680381 +66855.621,1.145593352 +66855.641,1.390806888 +66855.661,1.575449035 +66855.681,1.708143567 +66855.701,1.77235344 +66855.721,1.8115527 +66855.741,1.740110729 +66855.761,1.597478125 +66855.781,1.381491475 +66855.801,1.157139196 +66855.821,0.882613423 +66855.841,0.545390037 +66855.861,0.158103 +66855.881,-0.245396554 +66855.901,-0.63900603 +66855.921,-1.01030663 +66855.941,-1.392477718 +66855.961,-1.730259324 +66855.981,-2.012531781 +66856.001,-2.259933893 +66856.021,-2.447321061 +66856.041,-2.614314536 +66856.061,-2.691522375 +66856.081,-2.682810152 +66856.101,-2.602665631 +66856.121,-2.505809382 +66856.141,-2.344629605 +66856.161,-2.082436859 +66856.181,-1.782712697 +66856.201,-1.458984488 +66856.221,-1.134383885 +66856.241,-0.760146889 +66856.261,-0.341762595 +66856.281,0.075361237 +66856.301,0.403503428 +66856.321,0.709128846 +66856.341,1.040682786 +66856.361,1.309600343 +66856.381,1.497590569 +66856.401,1.607170978 +66856.421,1.691410673 +66856.441,1.747391733 +66856.461,1.712517617 +66856.481,1.575196823 +66856.501,1.401536659 +66856.521,1.186563272 +66856.541,0.921043726 +66856.561,0.610736542 +66856.581,0.250208298 +66856.601,-0.104546125 +66856.621,-0.453592705 +66856.641,-0.82690774 +66856.661,-1.208454738 +66856.681,-1.558883724 +66856.701,-1.862763975 +66856.721,-2.106788367 +66856.741,-2.325996465 +66856.761,-2.507982106 +66856.781,-2.617183851 +66856.801,-2.631408432 +66856.821,-2.593157854 +66856.841,-2.509942758 +66856.861,-2.38547108 +66856.881,-2.170301331 +66856.901,-1.889305688 +66856.921,-1.595606172 +66856.941,-1.279667564 +66856.961,-0.929301567 +66856.981,-0.559641729 +66857.001,-0.167374175 +66857.021,0.182514384 +66857.04099,0.497487659 +66857.061,0.820621388 +66857.081,1.121386124 +66857.101,1.346467568 +66857.121,1.497263918 +66857.141,1.60626366 +66857.161,1.665432467 +66857.181,1.678825276 +66857.201,1.615999136 +66857.221,1.452312038 +66857.241,1.257910195 +66857.261,1.048786796 +66857.281,0.784547178 +66857.301,0.442398316 +66857.321,0.089387836 +66857.341,-0.263886463 +66857.361,-0.617638183 +66857.381,-0.962051472 +66857.401,-1.323159996 +66857.421,-1.645065045 +66857.441,-1.913525241 +66857.461,-2.151007193 +66857.481,-2.36502861 +66857.501,-2.522042072 +66857.521,-2.593249586 +66857.541,-2.59106878 +66857.561,-2.526704033 +66857.581,-2.424547702 +66857.601,-2.269107822 +66857.621,-2.026746857 +66857.641,-1.753011595 +66857.661,-1.462045075 +66857.681,-1.134666782 +66857.701,-0.786681182 +66857.721,-0.409129069 +66857.741,-0.037977568 +66857.761,0.300078363 +66857.781,0.599094431 +66857.801,0.903604332 +66857.821,1.177672242 +66857.841,1.385640801 +66857.861,1.501264874 +66857.881,1.580391653 +66857.901,1.643315118 +66857.921,1.62303495 +66857.941,1.502784248 +66857.961,1.352765343 +66857.981,1.16692506 +66858.001,0.929463254 +66858.021,0.623772809 +66858.041,0.286690198 +66858.061,-0.046530395 +66858.081,-0.383411444 +66858.101,-0.742273669 +66858.121,-1.106097876 +66858.141,-1.444491437 +66858.16101,-1.734968116 +66858.181,-1.96949316 +66858.201,-2.191686756 +66858.221,-2.385941886 +66858.241,-2.496326623 +66858.261,-2.531371501 +66858.281,-2.516569412 +66858.301,-2.458293344 +66858.321,-2.332661345 +66858.341,-2.132210702 +66858.361,-1.885534634 +66858.381,-1.607685036 +66858.401,-1.304120112 +66858.421,-0.99125761 +66858.441,-0.62444258 +66858.461,-0.24691527 +66858.481,0.080866708 +66858.501,0.392902805 +66858.521,0.698287881 +66858.541,0.984017882 +66858.561,1.216739019 +66858.581,1.37698435 +66858.601,1.497792308 +66858.621,1.563910125 +66858.641,1.579838481 +66858.661,1.514904523 +66858.681,1.382144737 +66858.701,1.200580185 +66858.721,0.99359869 +66858.741,0.72604143 +66858.761,0.409944966 +66858.781,0.080584581 +66858.801,-0.252582914 +66858.821,-0.604725878 +66858.841,-0.964604461 +66858.861,-1.321350686 +66858.881,-1.648428786 +66858.901,-1.890363197 +66858.921,-2.108620734 +66858.941,-2.305739655 +66858.961,-2.430341753 +66858.981,-2.470368746 +66859.001,-2.45532387 +66859.021,-2.4144392 +66859.041,-2.301568661 +66859.061,-2.13224496 +66859.081,-1.908027782 +66859.101,-1.638996428 +66859.121,-1.354094782 +66859.141,-1.043415865 +66859.161,-0.688061643 +66859.181,-0.325001983 +66859.201,0.014871103 +66859.221,0.333836363 +66859.241,0.629900621 +66859.261,0.93609795 +66859.281,1.187823261 +66859.301,1.343316709 +66859.321,1.45862746 +66859.341,1.53380164 +66859.361,1.541264561 +66859.381,1.476147062 +66859.401,1.351586746 +66859.421,1.189154327 +66859.441,0.996682007 +66859.461,0.751593427 +66859.481,0.448287002 +66859.501,0.134841276 +66859.521,-0.190063252 +66859.541,-0.519306083 +66859.561,-0.870247045 +66859.581,-1.209213294 +66859.601,-1.507187214 +66859.621,-1.77734442 +66859.641,-1.995688686 +66859.661,-2.209066892 +66859.681,-2.352564331 +66859.701,-2.41425942 +66859.721,-2.42294299 +66859.741,-2.393660473 +66859.761,-2.304471 +66859.781,-2.160741 +66859.801,-1.947541 +66859.821,-1.705596 +66859.841,-1.400699052 +66859.861,-1.105370614 +66859.881,-0.766082692 +66859.901,-0.429037456 +66859.921,-0.098473553 +66859.941,0.222116246 +66859.961,0.509495341 +66859.981,0.790044205 +66860.001,1.053109156 +66860.021,1.233761565 +66860.041,1.352905727 +66860.061,1.446620253 +66860.081,1.489279718 +66860.101,1.460321147 +66860.121,1.375612155 +66860.141,1.239014405 +66860.161,1.061041755 +66860.181,0.832158317 +66860.201,0.540720326 +66860.221,0.253217958 +66860.241,-0.048229258 +66860.261,-0.362381262 +66860.281,-0.701698568 +66860.301,-1.049386796 +66860.321,-1.358128128 +66860.341,-1.624473441 +66860.361,-1.869761264 +66860.381,-2.075930729 +66860.401,-2.238450518 +66860.421,-2.357927158 +66860.441,-2.393903094 +66860.461,-2.377438128 +66860.481,-2.332210093 +66860.501,-2.217845668 +66860.521,-2.033463986 +66860.541,-1.800570311 +66860.561,-1.550835542 +66860.581,-1.279183914 +66860.601,-0.945569299 +66860.621,-0.604205999 +66860.641,-0.269817413 +66860.661,0.023511087 +66860.681,0.329655191 +66860.701,0.60787612 +66860.721,0.866912965 +66860.741,1.092372214 +66860.761,1.240280987 +66860.781,1.353690472 +66860.801,1.446555493 +66860.821,1.458128147 +66860.841,1.401006707 +66860.861,1.28395792 +66860.881,1.126864819 +66860.901,0.95633022 +66860.921,0.699378815 +66860.941,0.398495812 +66860.961,0.114287313 +66860.981,-0.180280847 +66861.001,-0.518478645 +66861.021,-0.830645767 +66861.041,-1.148510124 +66861.061,-1.437233807 +66861.081,-1.68906316 +66861.101,-1.910922832 +66861.121,-2.100384011 +66861.141,-2.259708878 +66861.161,-2.329005055 +66861.181,-2.357346467 +66861.201,-2.318862735 +66861.221,-2.22830984 +66861.241,-2.0908212 +66861.261,-1.892526212 +66861.281,-1.663017465 +66861.301,-1.438822953 +66861.321,-1.146223205 +66861.341,-0.8019074 +66861.361,-0.476428141 +66861.381,-0.159264887 +66861.401,0.138680895 +66861.421,0.414840145 +66861.441,0.694204387 +66861.461,0.953089107 +66861.481,1.123392693 +66861.501,1.252547666 +66861.521,1.361507945 +66861.541,1.409655957 +66861.561,1.397660737 +66861.581,1.318387919 +66861.601,1.19215931 +66861.621,1.042929971 +66861.641,0.833473197 +66861.661,0.559995061 +66861.681,0.27303507 +66861.701,0.002366735 +66861.721,-0.312604311 +66861.741,-0.640080332 +66861.761,-0.958019803 +66861.781,-1.258008201 +66861.801,-1.507580922 +66861.821,-1.757926213 +66861.841,-1.986360209 +66861.86099,-2.14021702 +66861.881,-2.250370386 +66861.901,-2.301087897 +66861.921,-2.299328737 +66861.941,-2.260147804 +66861.961,-2.161037791 +66861.981,-1.98122279 +66862.001,-1.777768181 +66862.021,-1.540309693 +66862.041,-1.292498158 +66862.061,-0.999380108 +66862.081,-0.672801624 +66862.101,-0.360634637 +66862.121,-0.056586007 +66862.141,0.230265659 +66862.161,0.518870279 +66862.181,0.775285133 +66862.201,0.982112847 +66862.221,1.154045512 +66862.241,1.2798279 +66862.261,1.352752328 +66862.281,1.37800164 +66862.301,1.322979129 +66862.321,1.236759417 +66862.341,1.117074597 +66862.361,0.921112291 +66862.381,0.688993237 +66862.401,0.422252306 +66862.421,0.13551994 +66862.441,-0.134126468 +66862.461,-0.436029501 +66862.481,-0.790816265 +66862.501,-1.109977305 +66862.521,-1.389281352 +66862.541,-1.653042555 +66862.561,-1.873589763 +66862.581,-2.042961925 +66862.601,-2.184868667 +66862.621,-2.250910729 +66862.641,-2.268905522 +66862.661,-2.2480337 +66862.681,-2.163197381 +66862.701,-2.015281739 +66862.721,-1.82715134 +66862.741,-1.611838016 +66862.761,-1.37375413 +66862.781,-1.095803552 +66862.801,-0.784437565 +66862.821,-0.468997772 +66862.841,-0.174936204 +66862.861,0.109777115 +66862.881,0.385342575 +66862.901,0.644460802 +66862.921,0.886087918 +66862.941,1.066104285 +66862.961,1.198952303 +66862.98101,1.290984193 +66863.001,1.321327998 +66863.021,1.304651516 +66863.041,1.237769786 +66863.061,1.129267059 +66863.081,0.969674553 +66863.101,0.760150761 +66863.121,0.505682317 +66863.141,0.242858411 +66863.161,-0.025114973 +66863.181,-0.313849678 +66863.201,-0.633526742 +66863.221,-0.946371339 +66863.241,-1.224820875 +66863.261,-1.477808387 +66863.281,-1.704767496 +66863.301,-1.899398657 +66863.321,-2.058393922 +66863.341,-2.16294513 +66863.361,-2.207348937 +66863.381,-2.21435397 +66863.401,-2.171129304 +66863.421,-2.071773088 +66863.441,-1.923258538 +66863.461,-1.72038776 +66863.481,-1.499756898 +66863.501,-1.252180424 +66863.521,-0.95205547 +66863.541,-0.643365436 +66863.561,-0.371814716 +66863.581,-0.070061903 +66863.601,0.235729303 +66863.621,0.489401062 +66863.641,0.727293426 +66863.661,0.924833539 +66863.681,1.079919294 +66863.701,1.209780356 +66863.721,1.280624789 +66863.741,1.285077234 +66863.761,1.240536079 +66863.781,1.157117035 +66863.801,1.039019344 +66863.821,0.862082995 +66863.841,0.630054439 +66863.861,0.367866124 +66863.881,0.117738662 +66863.901,-0.155140794 +66863.921,-0.456131343 +66863.941,-0.759993715 +66863.961,-1.04850747 +66863.981,-1.318547635 +66864.001,-1.570987722 +66864.021,-1.784039452 +66864.041,-1.960520815 +66864.061,-2.075037791 +66864.081,-2.142442808 +66864.101,-2.182919165 +66864.121,-2.170653475 +66864.141,-2.101624395 +66864.161,-1.972690867 +66864.181,-1.809637166 +66864.201,-1.622169501 +66864.221,-1.392565089 +66864.241,-1.112239947 +66864.261,-0.825196685 +66864.281,-0.524184552 +66864.301,-0.238773066 +66864.321,0.038320286 +66864.341,0.311741067 +66864.361,0.562752636 +66864.381,0.775611048 +66864.401,0.955346617 +66864.421,1.09343923 +66864.441,1.208143467 +66864.461,1.251555448 +66864.481,1.235921818 +66864.501,1.176674054 +66864.521,1.081539567 +66864.541,0.936520969 +66864.561,0.752598232 +66864.581,0.521620454 +66864.601,0.261604281 +66864.621,0.00044768 +66864.641,-0.281283593 +66864.661,-0.583857563 +66864.681,-0.877648112 +66864.701,-1.153429049 +66864.721,-1.411962083 +66864.741,-1.638081891 +66864.761,-1.838415385 +66864.781,-1.984299543 +66864.801,-2.083982289 +66864.821,-2.137407516 +66864.841,-2.160337206 +66864.861,-2.127483233 +66864.881,-2.029129511 +66864.901,-1.890099985 +66864.921,-1.71009455 +66864.941,-1.510109278 +66864.961,-1.265676986 +66864.981,-0.978140453 +66865.001,-0.692612718 +66865.021,-0.419931327 +66865.041,-0.138725763 +66865.061,0.149357741 +66865.081,0.404470026 +66865.101,0.624087202 +66865.121,0.827451895 +66865.141,0.994927922 +66865.161,1.119407307 +66865.181,1.190894765 +66865.201,1.218119253 +66865.221,1.192807498 +66865.241,1.102632116 +66865.261,0.998941397 +66865.281,0.829399757 +66865.301,0.614550294 +66865.321,0.381203335 +66865.341,0.142346083 +66865.361,-0.12190432 +66865.381,-0.427273162 +66865.401,-0.717293575 +66865.421,-0.989245767 +66865.441,-1.238234772 +66865.461,-1.472016404 +66865.481,-1.701698298 +66865.501,-1.882149249 +66865.521,-1.997084857 +66865.541,-2.079062057 +66865.561,-2.123986016 +66865.581,-2.113714515 +66865.601,-2.033194045 +66865.621,-1.912033103 +66865.641,-1.762621462 +66865.661,-1.5685106 +66865.681,-1.34180708 +66865.701,-1.073306564 +66865.721,-0.788837895 +66865.741,-0.528256253 +66865.761,-0.241075767 +66865.781,0.042133906 +66865.801,0.296884522 +66865.821,0.537084376 +66865.841,0.74824598 +66865.861,0.916012865 +66865.881,1.04877958 +66865.901,1.145266012 +66865.921,1.182246539 +66865.941,1.166886276 +66865.961,1.125417101 +66865.981,1.035326108 +66866.001,0.884096463 +66866.021,0.68200017 +66866.041,0.455649686 +66866.061,0.219633189 +66866.081,-0.022275642 +66866.101,-0.300134071 +66866.121,-0.59263653 +66866.141,-0.866585962 +66866.161,-1.118445036 +66866.181,-1.363751485 +66866.201,-1.593813657 +66866.221,-1.777867582 +66866.241,-1.927834719 +66866.261,-2.019374034 +66866.281,-2.071122426 +66866.301,-2.097182976 +66866.321,-2.057297578 +66866.341,-1.95600559 +66866.361,-1.834579701 +66866.381,-1.671560933 +66866.401,-1.457371647 +66866.421,-1.221029441 +66866.441,-0.959073545 +66866.461,-0.687934423 +66866.481,-0.419407195 +66866.501,-0.138015548 +66866.521,0.123968026 +66866.541,0.37520332 +66866.561,0.596741697 +66866.581,0.77248839 +66866.601,0.937556612 +66866.621,1.069882719 +66866.641,1.147400123 +66866.661,1.168916233 +66866.681,1.13199709 +66866.701,1.051399798 +66866.721,0.942276881 +66866.741,0.775637941 +66866.761,0.575609143 +66866.781,0.354394734 +66866.801,0.119042508 +66866.821,-0.112187631 +66866.841,-0.414837148 +66866.861,-0.726363871 +66866.881,-0.97835067 +66866.901,-1.222400056 +66866.921,-1.451605925 +66866.941,-1.662187158 +66866.961,-1.828620664 +66866.981,-1.938989849 +66867.001,-2.010989644 +66867.021,-2.056838889 +66867.041,-2.053536655 +66867.061,-1.984682787 +66867.081,-1.870265688 +66867.101,-1.736972915 +66867.121,-1.562826815 +66867.141,-1.349395561 +66867.161,-1.087861656 +66867.181,-0.819447927 +66867.201,-0.568902733 +66867.221,-0.293624645 +66867.241,-0.020489333 +66867.261,0.234322082 +66867.281,0.456323164 +66867.301,0.655708849 +66867.321,0.83153295 +66867.341,0.982025685 +66867.361,1.081152314 +66867.381,1.116262456 +66867.401,1.119691409 +66867.421,1.090121904 +66867.441,0.999891018 +66867.461,0.854636483 +66867.481,0.667922812 +66867.501,0.461803459 +66867.521,0.242395082 +66867.541,0.004437851 +66867.561,-0.25330014 +66867.581,-0.545811384 +66867.601,-0.825201637 +66867.621,-1.076536823 +66867.641,-1.302084579 +66867.661,-1.506389797 +66867.681,-1.696609245 +66867.701,-1.855886332 +66867.721,-1.960795388 +66867.741,-2.020015149 +66867.761,-2.03255718 +66867.781,-1.992984983 +66867.80101,-1.92083132 +66867.821,-1.806030528 +66867.841,-1.647767975 +66867.861,-1.45154569 +66867.881,-1.238820056 +66867.901,-0.991955764 +66867.921,-0.715619187 +66867.941,-0.448564013 +66867.961,-0.185536786 +66867.981,0.084530156 +66868.001,0.320725299 +66868.021,0.531432613 +66868.041,0.720791078 +66868.061,0.875375043 +66868.081,0.991384988 +66868.101,1.071033824 +66868.121,1.096188121 +66868.141,1.071596659 +66868.161,1.023497478 +66868.181,0.914453354 +66868.201,0.755586235 +66868.221,0.558270027 +66868.241,0.35299649 +66868.261,0.144314336 +66868.281,-0.101085897 +66868.301,-0.387844503 +66868.321,-0.658471947 +66868.341,-0.900244986 +66868.361,-1.145398193 +66868.381,-1.378978631 +66868.401,-1.592138317 +66868.421,-1.746529107 +66868.441,-1.855249558 +66868.461,-1.945395357 +66868.481,-1.995824369 +66868.501,-1.997003752 +66868.521,-1.947488527 +66868.541,-1.841280192 +66868.561,-1.710653931 +66868.581,-1.54995853 +66868.601,-1.345119455 +66868.621,-1.110283217 +66868.641,-0.864605232 +66868.661,-0.616117246 +66868.681,-0.338569229 +66868.701,-0.057163406 +66868.721,0.185504907 +66868.741,0.395882116 +66868.761,0.594962626 +66868.781,0.767331533 +66868.801,0.909447968 +66868.821,1.012788057 +66868.841,1.065263699 +66868.861,1.059526049 +66868.881,1.026995949 +66868.901,0.953060105 +66868.921,0.832273817 +66868.941,0.667001273 +66868.961,0.45744462 +66868.981,0.239492484 +66869.001,0.037595549 +66869.021,-0.222503014 +66869.041,-0.510844003 +66869.061,-0.761334523 +66869.081,-0.998333068 +66869.101,-1.246678552 +66869.121,-1.470136065 +66869.141,-1.65464834 +66869.161,-1.787115578 +66869.181,-1.885693772 +66869.201,-1.958439829 +66869.221,-1.982603554 +66869.241,-1.947891732 +66869.261,-1.877060393 +66869.281,-1.770880723 +66869.301,-1.618739579 +66869.321,-1.442167698 +66869.341,-1.217674156 +66869.361,-0.977941509 +66869.381,-0.742965002 +66869.401,-0.485735367 +66869.421,-0.224470917 +66869.441,0.019234466 +66869.461,0.26081168 +66869.481,0.47370982 +66869.501,0.645999254 +66869.521,0.821179816 +66869.541,0.941795716 +66869.561,1.018615162 +66869.581,1.048921218 +66869.601,1.025743429 +66869.621,0.983348254 +66869.641,0.887715329 +66869.661,0.742104771 +66869.681,0.555314058 +66869.701,0.359755239 +66869.721,0.157487285 +66869.741,-0.08745248 +66869.761,-0.348321568 +66869.781,-0.600173376 +66869.801,-0.854975307 +66869.821,-1.097656497 +66869.841,-1.324329912 +66869.861,-1.534223033 +66869.881,-1.678109189 +66869.901,-1.793016624 +66869.921,-1.89333079 +66869.941,-1.941714887 +66869.961,-1.941719108 +66869.981,-1.903286649 +66870.001,-1.822732634 +66870.021,-1.703326609 +66870.041,-1.537741842 +66870.061,-1.3376894 +66870.081,-1.113067448 +66870.101,-0.878547343 +66870.121,-0.639631979 +66870.141,-0.369629734 +66870.161,-0.108668978 +66870.181,0.133904837 +66870.201,0.346816869 +66870.221,0.518310119 +66870.241,0.690529693 +66870.261,0.847704303 +66870.281,0.956964332 +66870.301,1.014295506 +66870.321,1.01980434 +66870.341,0.986384717 +66870.361,0.917758277 +66870.381,0.80198414 +66870.401,0.64553967 +66870.421,0.460062384 +66870.441,0.262544747 +66870.461,0.048504963 +66870.481,-0.194253185 +66870.501,-0.467702954 +66870.521,-0.712539146 +66870.541,-0.945429172 +66870.561,-1.183071374 +66870.581,-1.399323336 +66870.601,-1.588633544 +66870.621,-1.727428354 +66870.641,-1.825753157 +66870.661,-1.906234787 +66870.681,-1.939323171 +66870.701,-1.897308211 +66870.721,-1.838441383 +66870.741,-1.744150154 +66870.761,-1.610390162 +66870.781,-1.441588474 +66870.801,-1.230361324 +66870.821,-1.005419583 +66870.841,-0.770834712 +66870.861,-0.530629113 +66870.881,-0.26967639 +66870.901,-0.017130398 +66870.921,0.209103732 +66870.941,0.401265586 +66870.961,0.578719021 +66870.981,0.746781785 +66871.001,0.874961311 +66871.021,0.955280049 +66871.041,0.996462151 +66871.061,0.998986488 +66871.081,0.945201412 +66871.101,0.849572724 +66871.121,0.716033446 +66871.141,0.553207234 +66871.161,0.370478562 +66871.181,0.164647165 +66871.201,-0.065235523 +66871.221,-0.318446781 +66871.241,-0.560428245 +66871.261,-0.802329927 +66871.281,-1.046601443 +66871.301,-1.262237678 +66871.321,-1.455243281 +66871.341,-1.625327237 +66871.361,-1.761377794 +66871.381,-1.852384643 +66871.401,-1.898369721 +66871.421,-1.897589698 +66871.441,-1.856712071 +66871.461,-1.782284217 +66871.481,-1.680020942 +66871.501,-1.52357373 +66871.521,-1.324051819 +66871.541,-1.113967826 +66871.561,-0.894048145 +66871.581,-0.665764938 +66871.601,-0.412050106 +66871.621,-0.150595577 +66871.641,0.084696158 +66871.661,0.28672768 +66871.681,0.46524873 +66871.701,0.631369542 +66871.721,0.781742249 +66871.741,0.884073865 +66871.761,0.95000453 +66871.781,0.976864542 +66871.801,0.951012028 +66871.821,0.877832796 +66871.841,0.768499461 +66871.861,0.632291002 +66871.881,0.456153981 +66871.901,0.263425241 +66871.921,0.059248019 +66871.941,-0.168598985 +66871.961,-0.425475022 +66871.981,-0.669983798 +66872.001,-0.909457588 +66872.021,-1.145022528 +66872.041,-1.335599162 +66872.061,-1.509740181 +66872.081,-1.668664614 +66872.101,-1.77680324 +66872.121,-1.838362125 +66872.141,-1.870609237 +66872.161,-1.853879637 +66872.181,-1.804310556 +66872.201,-1.715860181 +66872.221,-1.587140102 +66872.241,-1.419471265 +66872.261,-1.225113379 +66872.281,-1.019179349 +66872.301,-0.795768565 +66872.321,-0.562504852 +66872.341,-0.304690831 +66872.361,-0.054904386 +66872.381,0.154270101 +66872.401,0.357154001 +66872.421,0.522177487 +66872.441,0.669470408 +66872.461,0.798459806 +66872.481,0.897418281 +66872.501,0.940631797 +66872.521,0.929306429 +66872.541,0.899286713 +66872.561,0.822671398 +66872.581,0.689286714 +66872.601,0.539650892 +66872.62101,0.379419167 +66872.641,0.170858335 +66872.661,-0.056976538 +66872.681,-0.294902604 +66872.701,-0.540785187 +66872.721,-0.763913355 +66872.741,-0.989910607 +66872.761,-1.215244885 +66872.781,-1.404879666 +66872.801,-1.559015527 +66872.821,-1.686379855 +66872.841,-1.782282196 +66872.861,-1.832442965 +66872.881,-1.847370607 +66872.901,-1.820099858 +66872.921,-1.757812547 +66872.941,-1.649273077 +66872.961,-1.507940979 +66872.981,-1.334270606 +66873.001,-1.123000086 +66873.021,-0.905334595 +66873.041,-0.686919963 +66873.061,-0.451084084 +66873.081,-0.199739245 +66873.101,0.023978309 +66873.121,0.235480515 +66873.141,0.418335304 +66873.161,0.579309005 +66873.181,0.727694056 +66873.201,0.818177805 +66873.221,0.886806172 +66873.241,0.907620431 +66873.261,0.890138211 +66873.281,0.839895876 +66873.301,0.739028905 +66873.321,0.610750186 +66873.341,0.455638733 +66873.361,0.27734491 +66873.381,0.066319866 +66873.401,-0.151025019 +66873.421,-0.38817034 +66873.441,-0.635764228 +66873.461,-0.857489429 +66873.481,-1.080196717 +66873.501,-1.295902737 +66873.521,-1.467835098 +66873.541,-1.600080696 +66873.561,-1.704221914 +66873.581,-1.787941326 +66873.601,-1.824259323 +66873.621,-1.807444319 +66873.641,-1.767352811 +66873.661,-1.690505298 +66873.681,-1.570787884 +66873.701,-1.410985261 +66873.721,-1.220033053 +66873.741,-1.030076286 +66873.761,-0.819517318 +66873.781,-0.574864992 +66873.801,-0.327114532 +66873.821,-0.096884643 +66873.841,0.105538918 +66873.861,0.298093014 +66873.881,0.480535902 +66873.901,0.633564864 +66873.921,0.755053176 +66873.941,0.828298345 +66873.961,0.869730291 +66873.981,0.883371452 +66874.001,0.860766776 +66874.021,0.786853843 +66874.041,0.674660654 +66874.061,0.529268277 +66874.081,0.358876224 +66874.101,0.16917375 +66874.121,-0.03593254 +66874.141,-0.258292964 +66874.161,-0.499310643 +66874.181,-0.732090735 +66874.201,-0.948474103 +66874.221,-1.163112178 +66874.241,-1.345044053 +66874.261,-1.496278658 +66874.281,-1.616315418 +66874.301,-1.724844998 +66874.321,-1.785715946 +66874.341,-1.793450319 +66874.361,-1.776676029 +66874.381,-1.723198383 +66874.401,-1.624864475 +66874.421,-1.483186497 +66874.441,-1.32412477 +66874.461,-1.131392525 +66874.481,-0.927967665 +66874.501,-0.721184886 +66874.521,-0.484618823 +66874.541,-0.241261193 +66874.561,-0.014154773 +66874.581,0.183736244 +66874.601,0.375188884 +66874.621,0.549807649 +66874.641,0.69597357 +66874.661,0.775725881 +66874.681,0.841535531 +66874.701,0.870006418 +66874.721,0.840443017 +66874.741,0.773021735 +66874.761,0.68135392 +66874.781,0.559204774 +66874.801,0.413970266 +66874.821,0.240003178 +66874.841,0.037341039 +66874.861,-0.184849473 +66874.881,-0.413120475 +66874.901,-0.637443751 +66874.921,-0.869492786 +66874.941,-1.072526731 +66874.961,-1.255921542 +66874.981,-1.427974962 +66875.001,-1.565098377 +66875.021,-1.680356951 +66875.041,-1.748408632 +66875.061,-1.778172741 +66875.081,-1.766983466 +66875.101,-1.723212534 +66875.121,-1.647963413 +66875.141,-1.523024955 +66875.161,-1.364108422 +66875.181,-1.195334605 +66875.201,-1.014887971 +66875.221,-0.788434841 +66875.241,-0.57109215 +66875.261,-0.341782763 +66875.281,-0.099005262 +66875.301,0.104037836 +66875.321,0.27671257 +66875.341,0.441222698 +66875.361,0.580983497 +66875.381,0.705623593 +66875.401,0.77970327 +66875.421,0.815797703 +66875.441,0.827758136 +66875.461,0.793228473 +66875.481,0.723929552 +66875.501,0.604800866 +66875.521,0.467858875 +66875.541,0.32391782 +66875.561,0.140444344 +66875.581,-0.072608041 +66875.601,-0.289733366 +66875.621,-0.515263415 +66875.641,-0.742138287 +66875.661,-0.959533719 +66875.681,-1.154028868 +66875.701,-1.319048745 +66875.721,-1.474063432 +66875.741,-1.595981885 +66875.761,-1.677071982 +66875.781,-1.735381139 +66875.801,-1.747891335 +66875.821,-1.721663066 +66875.841,-1.663411464 +66875.861,-1.567475626 +66875.881,-1.422646312 +66875.901,-1.276243797 +66875.921,-1.092463781 +66875.941,-0.895485515 +66875.961,-0.687805626 +66875.981,-0.478115403 +66876.001,-0.250861558 +66876.021,-0.020527991 +66876.041,0.16731157 +66876.061,0.342907367 +66876.081,0.48675387 +66876.101,0.620611702 +66876.121,0.707483088 +66876.141,0.756930119 +66876.161,0.801239922 +66876.181,0.784045803 +66876.201,0.730807711 +66876.221,0.662454055 +66876.241,0.535532928 +66876.261,0.388428591 +66876.281,0.220726082 +66876.301,0.03271944 +66876.321,-0.172088281 +66876.341,-0.386108425 +66876.361,-0.608872205 +66876.381,-0.83547016 +66876.401,-1.034280606 +66876.421,-1.215617228 +66876.441,-1.370820186 +66876.461,-1.50774537 +66876.481,-1.611602786 +66876.501,-1.678970595 +66876.521,-1.717369193 +66876.541,-1.72442796 +66876.561,-1.687589015 +66876.581,-1.597692761 +66876.601,-1.491848642 +66876.621,-1.349354184 +66876.641,-1.17859126 +66876.661,-0.9896039 +66876.681,-0.797766751 +66876.701,-0.582592534 +66876.721,-0.350262868 +66876.741,-0.141405135 +66876.761,0.046888734 +66876.781,0.230869234 +66876.801,0.385413424 +66876.821,0.5328466 +66876.841,0.655218518 +66876.861,0.72676753 +66876.881,0.761852035 +66876.901,0.786334158 +66876.921,0.755503521 +66876.941,0.689092773 +66876.961,0.590421917 +66876.981,0.4625207 +66877.001,0.307583159 +66877.021,0.136823916 +66877.041,-0.056727009 +66877.061,-0.263886379 +66877.081,-0.492410256 +66877.101,-0.717989441 +66877.121,-0.908004388 +66877.141,-1.094252399 +66877.161,-1.268230062 +66877.181,-1.418699186 +66877.201,-1.536969581 +66877.221,-1.626678384 +66877.241,-1.676394788 +66877.261,-1.701142446 +66877.281,-1.690961739 +66877.301,-1.624516941 +66877.321,-1.546431262 +66877.341,-1.400080995 +66877.361,-1.24939535 +66877.381,-1.098228619 +66877.401,-0.905114738 +66877.421,-0.695254712 +66877.44099,-0.477844289 +66877.461,-0.253445414 +66877.481,-0.061443867 +66877.501,0.120359631 +66877.521,0.292557294 +66877.541,0.447424302 +66877.561,0.568604751 +66877.581,0.665327893 +66877.601,0.735259952 +66877.621,0.762013974 +66877.641,0.732834756 +66877.661,0.681265408 +66877.681,0.594665161 +66877.701,0.47571814 +66877.721,0.345230106 +66877.741,0.174565801 +66877.761,-0.010285237 +66877.781,-0.18896561 +66877.801,-0.403717181 +66877.821,-0.607748877 +66877.841,-0.822703192 +66877.861,-1.032403396 +66877.881,-1.202497044 +66877.901,-1.334852638 +66877.921,-1.471548837 +66877.941,-1.581482467 +66877.961,-1.644026609 +66877.981,-1.663772125 +66878.001,-1.682309186 +66878.021,-1.630190019 +66878.041,-1.554230708 +66878.061,-1.448509739 +66878.081,-1.303749219 +66878.101,-1.141739931 +66878.121,-0.956044741 +66878.141,-0.757196029 +66878.161,-0.561246858 +66878.181,-0.344051131 +66878.201,-0.131949175 +66878.221,0.050939632 +66878.241,0.228789969 +66878.261,0.379003692 +66878.281,0.502098683 +66878.301,0.60864682 +66878.321,0.68653324 +66878.341,0.743159679 +66878.361,0.749116872 +66878.381,0.690624716 +66878.401,0.631395721 +66878.421,0.532569917 +66878.441,0.418239769 +66878.461,0.274420896 +66878.481,0.088400514 +66878.501,-0.091500247 +66878.521,-0.286542191 +66878.541,-0.504139931 +66878.561,-0.711426999 +66878.581,-0.896132529 +66878.601,-1.085804817 +66878.621,-1.247688356 +66878.641,-1.390308873 +66878.661,-1.497322359 +66878.681,-1.582160451 +66878.701,-1.639159281 +66878.721,-1.653203734 +66878.741,-1.633042349 +66878.761,-1.584455434 +66878.781,-1.495488082 +66878.801,-1.372148063 +66878.821,-1.229464539 +66878.841,-1.058694282 +66878.861,-0.862333122 +66878.881,-0.680010588 +66878.901,-0.480252989 +66878.921,-0.26207234 +66878.941,-0.06655413 +66878.961,0.110746901 +66878.981,0.286980918 +66879.001,0.413618423 +66879.021,0.526177666 +66879.041,0.628430236 +66879.061,0.683311756 +66879.081,0.708538349 +66879.101,0.700998969 +66879.121,0.650283032 +66879.141,0.5676843 +66879.161,0.461247201 +66879.181,0.327941471 +66879.201,0.187048923 +66879.221,0.025755133 +66879.241,-0.167290323 +66879.261,-0.370203443 +66879.281,-0.590493323 +66879.301,-0.792898827 +66879.321,-0.976063639 +66879.341,-1.134988403 +66879.361,-1.290413442 +66879.381,-1.436541493 +66879.401,-1.517391931 +66879.421,-1.594965987 +66879.441,-1.623404774 +66879.461,-1.631965737 +66879.481,-1.593508102 +66879.501,-1.521130124 +66879.521,-1.4094909 +66879.541,-1.293147346 +66879.561,-1.136516236 +66879.581,-0.973785837 +66879.601,-0.795147553 +66879.621,-0.595379449 +66879.641,-0.372225551 +66879.661,-0.18367831 +66879.681,-0.002454087 +66879.701,0.188159754 +66879.721,0.326445108 +66879.741,0.458831485 +66879.761,0.556257553 +66879.781,0.634239076 +66879.801,0.672090065 +66879.821,0.684892398 +66879.841,0.672830416 +66879.861,0.605296612 +66879.881,0.52006563 +66879.901,0.397646705 +66879.921,0.242814188 +66879.941,0.084305639 +66879.961,-0.074723556 +66879.981,-0.281392007 +66880.001,-0.490696849 +66880.021,-0.682875733 +66880.041,-0.869992438 +66880.061,-1.045718435 +66880.081,-1.200305718 +66880.101,-1.334623663 +66880.121,-1.46572515 +66880.141,-1.53529015 +66880.161,-1.586072942 +66880.181,-1.612028654 +66880.201,-1.596733765 +66880.221,-1.555886907 +66880.241,-1.457062808 +66880.261,-1.351943004 +66880.281,-1.217593649 +66880.301,-1.044108951 +66880.321,-0.861401097 +66880.341,-0.694014214 +66880.361,-0.498881243 +66880.381,-0.297370838 +66880.401,-0.102922502 +66880.421,0.077981238 +66880.441,0.23193332 +66880.461,0.379427491 +66880.481,0.479496325 +66880.501,0.570301622 +66880.521,0.647131125 +66880.541,0.656471056 +66880.561,0.656861371 +66880.581,0.621423092 +66880.601,0.534063864 +66880.621,0.441327641 +66880.641,0.313758545 +66880.661,0.165754058 +66880.681,0.006128348 +66880.701,-0.170866868 +66880.721,-0.353616825 +66880.741,-0.582106 +66880.761,-0.775568316 +66880.781,-0.954531481 +66880.801,-1.12974133 +66880.821,-1.28325791 +66880.841,-1.403203417 +66880.861,-1.490721093 +66880.881,-1.542425308 +66880.901,-1.580387967 +66880.921,-1.582793846 +66880.941,-1.539363872 +66880.961,-1.473845586 +66880.981,-1.376820861 +66881.001,-1.251227402 +66881.021,-1.112782164 +66881.041,-0.922840269 +66881.061,-0.744652675 +66881.081,-0.564933463 +66881.101,-0.373067251 +66881.121,-0.160287922 +66881.141,0.007470542 +66881.161,0.17049355 +66881.181,0.322928739 +66881.201,0.441653155 +66881.221,0.526499906 +66881.241,0.59686078 +66881.261,0.642945087 +66881.281,0.643777364 +66881.301,0.623402799 +66881.321,0.549909074 +66881.341,0.461599686 +66881.361,0.365995642 +66881.381,0.223184994 +66881.401,0.066153145 +66881.421,-0.09846414 +66881.441,-0.311126425 +66881.461,-0.495708312 +66881.481,-0.675389228 +66881.501,-0.868301163 +66881.521,-1.038266089 +66881.541,-1.191763175 +66881.561,-1.314564447 +66881.581,-1.426844321 +66881.601,-1.494814445 +66881.621,-1.55157894 +66881.641,-1.568815198 +66881.661,-1.550909452 +66881.681,-1.502618317 +66881.701,-1.409524923 +66881.721,-1.311128355 +66881.741,-1.166326685 +66881.761,-1.014377101 +66881.781,-0.829606885 +66881.801,-0.652527743 +66881.821,-0.47692644 +66881.841,-0.2737454 +66881.861,-0.086981692 +66881.881,0.067808749 +66881.901,0.216662757 +66881.921,0.356199968 +66881.941,0.460042295 +66881.961,0.544905871 +66881.981,0.598053094 +66882.001,0.628382584 +66882.021,0.622617039 +66882.041,0.565551937 +66882.061,0.491778443 +66882.081,0.394007812 +66882.101,0.294251386 +66882.121,0.1334572 +66882.141,-0.023249969 +66882.161,-0.193751801 +66882.181,-0.396619729 +66882.201,-0.589014156 +66882.221,-0.767020865 +66882.241,-0.926098472 +66882.26099,-1.096615287 +66882.281,-1.234537125 +66882.301,-1.354026607 +66882.321,-1.437920293 +66882.341,-1.516454891 +66882.361,-1.551997534 +66882.381,-1.548321668 +66882.401,-1.517603149 +66882.421,-1.439079584 +66882.441,-1.343778967 +66882.461,-1.216947068 +66882.481,-1.085464423 +66882.501,-0.932406901 +66882.521,-0.762032479 +66882.541,-0.563060872 +66882.561,-0.378639424 +66882.581,-0.185346637 +66882.601,-0.017261013 +66882.621,0.128985967 +66882.641,0.270867777 +66882.661,0.398485243 +66882.681,0.47942022 +66882.701,0.554637452 +66882.721,0.588479314 +66882.741,0.596519932 +66882.761,0.559052589 +66882.781,0.514533306 +66882.801,0.444548706 +66882.821,0.336175757 +66882.841,0.201682015 +66882.861,0.057034767 +66882.881,-0.103107373 +66882.901,-0.291821754 +66882.921,-0.4751557 +66882.941,-0.654042313 +66882.961,-0.828825894 +66882.981,-0.995656501 +66883.001,-1.140770459 +66883.021,-1.277572062 +66883.041,-1.37463914 +66883.061,-1.460027819 +66883.081,-1.506146389 +66883.101,-1.516571293 +66883.121,-1.502226089 +66883.141,-1.455662581 +66883.161,-1.385444105 +66883.181,-1.280115567 +66883.201,-1.162524967 +66883.221,-1.003412129 +66883.241,-0.842418316 +66883.261,-0.670950212 +66883.281,-0.488692592 +66883.301,-0.295444183 +66883.321,-0.120689147 +66883.341,0.039163874 +66883.361,0.18221939 +66883.38101,0.316909866 +66883.401,0.406453927 +66883.421,0.482440148 +66883.441,0.55841546 +66883.461,0.575851305 +66883.481,0.569240354 +66883.501,0.525693878 +66883.521,0.46236773 +66883.541,0.385602544 +66883.561,0.261833264 +66883.581,0.117539208 +66883.601,-0.027802101 +66883.621,-0.204386695 +66883.641,-0.405336857 +66883.661,-0.588948931 +66883.681,-0.762181479 +66883.701,-0.925795944 +66883.721,-1.090293315 +66883.741,-1.227257354 +66883.761,-1.326273528 +66883.781,-1.411614696 +66883.801,-1.479821372 +66883.821,-1.495105922 +66883.841,-1.490899058 +66883.861,-1.45665511 +66883.881,-1.390285906 +66883.901,-1.297805144 +66883.921,-1.181415459 +66883.941,-1.039129854 +66883.961,-0.865319463 +66883.981,-0.699298035 +66884.001,-0.535802239 +66884.021,-0.349369667 +66884.041,-0.157298478 +66884.061,0.006428233 +66884.081,0.150471859 +66884.101,0.276296114 +66884.121,0.384040679 +66884.141,0.467396013 +66884.161,0.518274796 +66884.181,0.539821743 +66884.201,0.54837765 +66884.221,0.5190834 +66884.241,0.447933693 +66884.261,0.373273863 +66884.281,0.268898915 +66884.301,0.131193516 +66884.321,-0.012746592 +66884.341,-0.181043164 +66884.361,-0.351522413 +66884.381,-0.526676556 +66884.401,-0.699296335 +66884.421,-0.863082451 +66884.441,-1.018963559 +66884.461,-1.159778512 +66884.481,-1.28385306 +66884.501,-1.376717919 +66884.521,-1.439538357 +66884.541,-1.4754556 +66884.561,-1.483660983 +66884.581,-1.463572073 +66884.601,-1.410520325 +66884.621,-1.3146373 +66884.641,-1.207651904 +66884.661,-1.082386041 +66884.681,-0.933907393 +66884.701,-0.775244363 +66884.721,-0.61512355 +66884.741,-0.432816154 +66884.761,-0.248764592 +66884.781,-0.093667899 +66884.801,0.055535034 +66884.821,0.192413816 +66884.841,0.316020042 +66884.861,0.400741175 +66884.881,0.469335008 +66884.901,0.525504419 +66884.921,0.523292147 +66884.941,0.504307751 +66884.961,0.465680829 +66884.981,0.398199386 +66885.001,0.314559407 +66885.021,0.19576999 +66885.041,0.048615426 +66885.061,-0.108186717 +66885.081,-0.26819614 +66885.101,-0.436183241 +66885.121,-0.603531841 +66885.141,-0.770129955 +66885.161,-0.91685078 +66885.181,-1.066891136 +66885.201,-1.212045176 +66885.221,-1.31373508 +66885.241,-1.383892649 +66885.261,-1.425808933 +66885.281,-1.456316148 +66885.301,-1.448384776 +66885.321,-1.408908107 +66885.341,-1.366335161 +66885.361,-1.275027628 +66885.381,-1.14371448 +66885.401,-1.00618624 +66885.421,-0.859482107 +66885.441,-0.703981093 +66885.461,-0.534772429 +66885.481,-0.358242607 +66885.501,-0.178332791 +66885.521,-0.025734612 +66885.541,0.101311046 +66885.561,0.233381691 +66885.581,0.341329603 +66885.601,0.428914956 +66885.621,0.479908184 +66885.641,0.509072565 +66885.661,0.517739096 +66885.681,0.482373682 +66885.701,0.430442188 +66885.721,0.359875945 +66885.741,0.251136331 +66885.761,0.116261618 +66885.781,-0.018424742 +66885.801,-0.175480301 +66885.821,-0.337091827 +66885.841,-0.509768177 +66885.861,-0.671286771 +66885.881,-0.831711102 +66885.901,-0.986401834 +66885.921,-1.115990424 +66885.941,-1.230377171 +66885.961,-1.325845241 +66885.981,-1.388959733 +66886.001,-1.426672378 +66886.021,-1.445698367 +66886.041,-1.427794876 +66886.061,-1.376141916 +66886.081,-1.289778585 +66886.101,-1.194399629 +66886.121,-1.076273577 +66886.141,-0.938808891 +66886.161,-0.794666772 +66886.181,-0.633591505 +66886.201,-0.463869141 +66886.221,-0.29041094 +66886.241,-0.130679679 +66886.261,0.013846689 +66886.281,0.141443716 +66886.301,0.25825989 +66886.321,0.355835759 +66886.341,0.428616539 +66886.361,0.470090977 +66886.381,0.489207486 +66886.401,0.488438858 +66886.421,0.445201002 +66886.441,0.381402221 +66886.461,0.293774656 +66886.481,0.172899113 +66886.501,0.044967167 +66886.521,-0.092749902 +66886.541,-0.246735986 +66886.561,-0.425959475 +66886.581,-0.595744067 +66886.601,-0.751136217 +66886.621,-0.91027283 +66886.641,-1.067976967 +66886.661,-1.180879853 +66886.681,-1.279817081 +66886.701,-1.343365525 +66886.721,-1.39754621 +66886.741,-1.422515073 +66886.761,-1.415669906 +66886.781,-1.37005921 +66886.801,-1.299762623 +66886.821,-1.223865748 +66886.841,-1.10741863 +66886.861,-0.955379147 +66886.881,-0.827450328 +66886.901,-0.680778229 +66886.921,-0.515047365 +66886.941,-0.337808264 +66886.961,-0.177452377 +66886.981,-0.036792136 +66887.001,0.101617842 +66887.021,0.236123049 +66887.041,0.323068884 +66887.061,0.393765806 +66887.08099,0.445230173 +66887.101,0.4794538 +66887.121,0.465892253 +66887.141,0.451219896 +66887.161,0.405102425 +66887.181,0.315391514 +66887.201,0.193700344 +66887.221,0.07866161 +66887.241,-0.046537254 +66887.261,-0.207817502 +66887.281,-0.365493504 +66887.301,-0.530585467 +66887.321,-0.689904674 +66887.341,-0.826534446 +66887.361,-0.964361307 +66887.381,-1.096171888 +66887.401,-1.20451417 +66887.421,-1.281291977 +66887.441,-1.349205251 +66887.461,-1.386822521 +66887.481,-1.385570463 +66887.501,-1.368306907 +66887.521,-1.323031004 +66887.541,-1.240824547 +66887.561,-1.142527088 +66887.581,-1.029529631 +66887.601,-0.886768621 +66887.621,-0.747617165 +66887.641,-0.590966314 +66887.661,-0.439770516 +66887.681,-0.282531042 +66887.701,-0.124358285 +66887.721,0.023848009 +66887.741,0.147019701 +66887.761,0.254759438 +66887.781,0.334350157 +66887.801,0.405801278 +66887.821,0.437797795 +66887.841,0.448526684 +66887.861,0.430695562 +66887.881,0.391278348 +66887.901,0.344296954 +66887.921,0.245439119 +66887.941,0.130934804 +66887.961,0.014676227 +66887.981,-0.11777193 +66888.001,-0.265980522 +66888.021,-0.436428794 +66888.041,-0.597415316 +66888.061,-0.743876628 +66888.081,-0.878475624 +66888.101,-1.019991171 +66888.121,-1.140651455 +66888.141,-1.224777694 +66888.161,-1.311578112 +66888.181,-1.344116108 +66888.20101,-1.374722033 +66888.221,-1.366036449 +66888.241,-1.321215766 +66888.261,-1.262178357 +66888.281,-1.190092055 +66888.301,-1.078205469 +66888.321,-0.956099614 +66888.341,-0.820506419 +66888.361,-0.670514163 +66888.381,-0.532990556 +66888.401,-0.368152224 +66888.421,-0.211846361 +66888.441,-0.061374066 +66888.461,0.062275268 +66888.481,0.167034574 +66888.501,0.275549716 +66888.521,0.354132327 +66888.541,0.40750282 +66888.561,0.431418923 +66888.581,0.435622989 +66888.601,0.415215889 +66888.621,0.361074879 +66888.641,0.278621064 +66888.661,0.189316366 +66888.681,0.084237302 +66888.701,-0.037767933 +66888.721,-0.184280178 +66888.741,-0.33882965 +66888.761,-0.517758645 +66888.781,-0.666068896 +66888.801,-0.790975535 +66888.821,-0.928801058 +66888.841,-1.055460063 +66888.861,-1.156897128 +66888.881,-1.252146455 +66888.901,-1.312741255 +66888.921,-1.345593604 +66888.941,-1.356683626 +66888.961,-1.329250845 +66888.981,-1.292545461 +66889.001,-1.217519888 +66889.021,-1.117711207 +66889.041,-1.014394002 +66889.061,-0.895321298 +66889.081,-0.741193319 +66889.101,-0.594933768 +66889.121,-0.451584608 +66889.141,-0.286478582 +66889.161,-0.14271769 +66889.181,-0.011093113 +66889.201,0.113692579 +66889.221,0.212355924 +66889.241,0.284979446 +66889.261,0.353173528 +66889.281,0.404003613 +66889.301,0.407898661 +66889.321,0.396885057 +66889.341,0.369482221 +66889.361,0.307151748 +66889.381,0.239149992 +66889.401,0.132715284 +66889.421,0.004971717 +66889.441,-0.120410777 +66889.461,-0.259831624 +66889.481,-0.411224133 +66889.501,-0.569598764 +66889.521,-0.71797956 +66889.541,-0.849721808 +66889.561,-0.975105114 +66889.581,-1.079679235 +66889.601,-1.180874587 +66889.621,-1.263394697 +66889.641,-1.29890475 +66889.661,-1.314607427 +66889.681,-1.318994462 +66889.701,-1.287351505 +66889.721,-1.229425535 +66889.741,-1.153697558 +66889.761,-1.067473419 +66889.781,-0.950868702 +66889.801,-0.815179961 +66889.821,-0.680657595 +66889.841,-0.555984817 +66889.861,-0.388488091 +66889.881,-0.219308667 +66889.901,-0.075702423 +66889.921,0.051617242 +66889.941,0.160232346 +66889.961,0.254527732 +66889.981,0.325374168 +66890.001,0.369642911 +66890.021,0.392448187 +66890.041,0.390728384 +66890.061,0.375831873 +66890.081,0.312085048 +66890.101,0.257559855 +66890.121,0.158721265 +66890.141,0.053497013 +66890.161,-0.072113463 +66890.181,-0.215640876 +66890.201,-0.356838715 +66890.221,-0.507513976 +66890.241,-0.651832443 +66890.261,-0.786252342 +66890.281,-0.918278371 +66890.301,-1.036762064 +66890.321,-1.131172316 +66890.341,-1.21305054 +66890.361,-1.279296606 +66890.381,-1.304994659 +66890.401,-1.308331022 +66890.421,-1.292186168 +66890.441,-1.260620147 +66890.461,-1.178084 +66890.481,-1.097013577 +66890.501,-0.985683719 +66890.521,-0.868471527 +66890.541,-0.737599364 +66890.561,-0.592094925 +66890.581,-0.440760098 +66890.601,-0.299865407 +66890.621,-0.139254078 +66890.641,-0.01258564 +66890.661,0.084460244 +66890.681,0.167529431 +66890.701,0.273608939 +66890.721,0.326446976 +66890.741,0.360231147 +66890.761,0.378513917 +66890.781,0.362861762 +66890.801,0.335121606 +66890.821,0.274370332 +66890.841,0.195852453 +66890.861,0.101396898 +66890.881,-0.02036797 +66890.901,-0.137270485 +66890.921,-0.282360736 +66890.941,-0.424475839 +66890.961,-0.560366269 +66890.981,-0.71797859 +66891.001,-0.858876432 +66891.021,-0.9647278 +66891.041,-1.07781153 +66891.061,-1.158091634 +66891.081,-1.232897615 +66891.101,-1.275752366 +66891.121,-1.285978313 +66891.141,-1.291646204 +66891.161,-1.262235772 +66891.181,-1.208407241 +66891.201,-1.123577856 +66891.221,-1.025068064 +66891.241,-0.932617717 +66891.261,-0.797868872 +66891.281,-0.657900036 +66891.301,-0.531937165 +66891.321,-0.365210519 +66891.341,-0.219633588 +66891.361,-0.099109542 +66891.381,0.017537991 +66891.401,0.143635532 +66891.421,0.212384774 +66891.441,0.288481351 +66891.461,0.345716072 +66891.481,0.359240556 +66891.501,0.359404433 +66891.521,0.348821434 +66891.541,0.298073695 +66891.561,0.222032579 +66891.581,0.142681525 +66891.601,0.060483796 +66891.621,-0.072013813 +66891.641,-0.208550704 +66891.661,-0.354604981 +66891.681,-0.49129856 +66891.701,-0.637034891 +66891.721,-0.776898477 +66891.741,-0.897225869 +66891.761,-1.01277347 +66891.781,-1.105168036 +66891.801,-1.179562229 +66891.821,-1.25045611 +66891.841,-1.273772053 +66891.861,-1.286201465 +66891.881,-1.273533957 +66891.901,-1.229331799 +66891.921,-1.16122588 +66891.941,-1.068221127 +66891.961,-0.975524959 +66891.981,-0.856176705 +66892.001,-0.746324793 +66892.021,-0.602030022 +66892.041,-0.445675905 +66892.061,-0.308665154 +66892.081,-0.167518236 +66892.101,-0.03486603 +66892.121,0.072387725 +66892.141,0.149000506 +66892.161,0.242947704 +66892.181,0.292608076 +66892.201,0.338069035 +66892.221,0.361889724 +66892.241,0.339203652 +66892.261,0.313018208 +66892.281,0.262526686 +66892.301,0.170051173 +66892.321,0.081137559 +66892.341,-0.018343391 +66892.361,-0.14185061 +66892.381,-0.278282145 +66892.401,-0.414444267 +66892.421,-0.562894369 +66892.441,-0.695820132 +66892.461,-0.813261213 +66892.481,-0.933514713 +66892.501,-1.032366823 +66892.521,-1.128971143 +66892.541,-1.192959 +66892.561,-1.240133308 +66892.581,-1.258885083 +66892.601,-1.26056196 +66892.621,-1.230125283 +66892.641,-1.17531243 +66892.661,-1.090789808 +66892.681,-0.996000937 +66892.701,-0.888362316 +66892.721,-0.774173654 +66892.741,-0.654418111 +66892.761,-0.499853257 +66892.781,-0.355994236 +66892.801,-0.210605812 +66892.821,-0.098516996 +66892.841,0.010960801 +66892.861,0.106926391 +66892.881,0.192109507 +66892.901,0.265630501 +66892.921,0.312301421 +66892.941,0.337442276 +66892.961,0.332390736 +66892.981,0.298031071 +66893.001,0.258314139 +66893.02101,0.209294666 +66893.041,0.111831866 +66893.061,0.013780247 +66893.081,-0.097442769 +66893.101,-0.224342591 +66893.121,-0.352007924 +66893.141,-0.510344313 +66893.161,-0.657117443 +66893.181,-0.77667841 +66893.201,-0.891438993 +66893.221,-0.988953437 +66893.241,-1.062557438 +66893.261,-1.153382977 +66893.281,-1.205862213 +66893.301,-1.251846174 +66893.321,-1.251379048 +66893.341,-1.234936532 +66893.361,-1.190406492 +66893.381,-1.1154183 +66893.401,-1.039901363 +66893.421,-0.930026868 +66893.441,-0.82752831 +66893.461,-0.711867872 +66893.481,-0.57474866 +66893.501,-0.429200205 +66893.521,-0.304515545 +66893.541,-0.191209903 +66893.561,-0.049223116 +66893.581,0.062096216 +66893.601,0.139485303 +66893.621,0.207668609 +66893.641,0.279561686 +66893.661,0.314185721 +66893.681,0.32164434 +66893.701,0.315602938 +66893.721,0.27818285 +66893.741,0.222799076 +66893.761,0.15194316 +66893.781,0.066021422 +66893.801,-0.051428357 +66893.821,-0.165007506 +66893.841,-0.279606228 +66893.861,-0.420895921 +66893.881,-0.578196028 +66893.901,-0.714075379 +66893.921,-0.833254432 +66893.941,-0.931382621 +66893.961,-1.025740479 +66893.981,-1.115029263 +66894.001,-1.173372115 +66894.021,-1.219599596 +66894.041,-1.217372753 +66894.061,-1.223184964 +66894.081,-1.201001004 +66894.101,-1.15963704 +66894.121,-1.073217099 +66894.141,-0.981516658 +66894.161,-0.892209603 +66894.181,-0.768583181 +66894.201,-0.639873914 +66894.221,-0.511667366 +66894.241,-0.375528289 +66894.261,-0.253032322 +66894.281,-0.135252953 +66894.301,-0.016599344 +66894.321,0.090042644 +66894.341,0.177095328 +66894.361,0.222861846 +66894.381,0.271677109 +66894.401,0.287503721 +66894.421,0.286217923 +66894.441,0.282925797 +66894.461,0.225555988 +66894.481,0.168686837 +66894.501,0.09693433 +66894.521,-0.006428137 +66894.541,-0.111541937 +66894.561,-0.220876926 +66894.581,-0.352768708 +66894.601,-0.501976546 +66894.621,-0.627866325 +66894.641,-0.758745852 +66894.661,-0.864273367 +66894.681,-0.956778199 +66894.701,-1.060791439 +66894.721,-1.132293789 +66894.741,-1.176360004 +66894.761,-1.201103829 +66894.781,-1.214841788 +66894.801,-1.201758265 +66894.821,-1.166369227 +66894.841,-1.100290369 +66894.861,-1.016445649 +66894.881,-0.930173143 +66894.901,-0.849651672 +66894.921,-0.718265279 +66894.941,-0.573853465 +66894.961,-0.448335624 +66894.981,-0.324922339 +66895.001,-0.206035124 +66895.021,-0.074666799 +66895.041,0.02998638 +66895.061,0.107348014 +66895.081,0.183004544 +66895.101,0.239010512 +66895.121,0.272723807 +66895.141,0.293977368 +66895.161,0.282793998 +66895.181,0.244547868 +66895.201,0.213690319 +66895.221,0.138988805 +66895.241,0.039084426 +66895.261,-0.051713394 +66895.281,-0.16748174 +66895.301,-0.276541589 +66895.321,-0.411955798 +66895.341,-0.551461285 +66895.361,-0.674791944 +66895.381,-0.788727561 +66895.401,-0.885836568 +66895.421,-1.00049601 +66895.441,-1.08659711 +66895.461,-1.144909765 +66895.481,-1.180671155 +66895.501,-1.202213616 +66895.521,-1.203814428 +66895.541,-1.183732701 +66895.561,-1.138794167 +66895.581,-1.061905015 +66895.601,-0.966232006 +66895.621,-0.879964884 +66895.641,-0.779228988 +66895.661,-0.661114708 +66895.681,-0.529384391 +66895.701,-0.40141546 +66895.721,-0.269535701 +66895.741,-0.16072323 +66895.761,-0.044769759 +66895.781,0.058596174 +66895.801,0.129680201 +66895.821,0.193627846 +66895.841,0.246160895 +66895.861,0.275883022 +66895.881,0.279026187 +66895.901,0.256144974 +66895.921,0.209462687 +66895.941,0.14247439 +66895.961,0.071420152 +66895.981,-0.004272767 +66896.001,-0.115961659 +66896.021,-0.236381524 +66896.041,-0.358004868 +66896.061,-0.482594114 +66896.081,-0.620883358 +66896.101,-0.737456182 +66896.121,-0.834278044 +66896.141,-0.916957445 +66896.161,-1.015130072 +66896.181,-1.086089115 +66896.201,-1.133836915 +66896.221,-1.180489201 +66896.241,-1.188532316 +66896.261,-1.179666187 +66896.281,-1.137933401 +66896.301,-1.086206229 +66896.321,-1.014954588 +66896.341,-0.923360042 +66896.361,-0.833066138 +66896.381,-0.716318737 +66896.401,-0.587480307 +66896.421,-0.46819691 +66896.441,-0.342388295 +66896.461,-0.216874603 +66896.481,-0.10256132 +66896.501,0.00096179 +66896.521,0.073097723 +66896.541,0.150782909 +66896.561,0.21538518 +66896.581,0.242569969 +66896.601,0.257844243 +66896.621,0.253579861 +66896.641,0.225835438 +66896.661,0.191804639 +66896.681,0.12100337 +66896.701,0.027359513 +66896.721,-0.059363196 +66896.741,-0.169702467 +66896.761,-0.29839092 +66896.781,-0.405776461 +66896.801,-0.520561869 +66896.821,-0.654897365 +66896.841,-0.758827643 +66896.861,-0.871107773 +66896.881,-0.96379111 +66896.901,-1.044240847 +66896.921,-1.109051852 +66896.941,-1.139215351 +66896.961,-1.162523271 +66896.981,-1.170541774 +66897.001,-1.147258803 +66897.021,-1.103885856 +66897.041,-1.044206374 +66897.061,-0.969913777 +66897.081,-0.878961803 +66897.101,-0.773792982 +66897.121,-0.658114679 +66897.141,-0.543432534 +66897.161,-0.420648905 +66897.181,-0.289132759 +66897.201,-0.181695716 +66897.221,-0.065612361 +66897.241,0.017507971 +66897.261,0.085868963 +66897.281,0.162970267 +66897.301,0.20240124 +66897.321,0.221451566 +66897.341,0.236864822 +66897.361,0.216827358 +66897.381,0.188461962 +66897.401,0.13347257 +66897.421,0.058474922 +66897.441,-0.021103035 +66897.461,-0.126067973 +66897.481,-0.228535288 +66897.501,-0.33547588 +66897.521,-0.461491977 +66897.541,-0.598442025 +66897.561,-0.708103808 +66897.581,-0.802432172 +66897.601,-0.881088217 +66897.621,-0.981413288 +66897.641,-1.050520977 +66897.661,-1.099287112 +66897.681,-1.137087101 +66897.701,-1.143820639 +66897.721,-1.125153737 +66897.741,-1.099207131 +66897.761,-1.053326868 +66897.781,-0.986824842 +66897.801,-0.90425454 +66897.821,-0.829224139 +66897.84101,-0.715507437 +66897.861,-0.600445886 +66897.881,-0.476559238 +66897.901,-0.35136711 +66897.921,-0.238894261 +66897.941,-0.122453848 +66897.961,-0.032007116 +66897.981,0.041783958 +66898.001,0.123626607 +66898.021,0.158702256 +66898.041,0.203161488 +66898.061,0.235043114 +66898.081,0.228669514 +66898.101,0.193675534 +66898.121,0.155698361 +66898.141,0.092237457 +66898.161,0.017723393 +66898.181,-0.061197107 +66898.201,-0.165720908 +66898.221,-0.286619935 +66898.241,-0.408999185 +66898.261,-0.530101495 +66898.281,-0.641860878 +66898.301,-0.75511145 +66898.321,-0.85490413 +66898.341,-0.925095539 +66898.361,-1.015901416 +66898.381,-1.075522768 +66898.401,-1.110613227 +66898.421,-1.127780326 +66898.441,-1.128987787 +66898.461,-1.111991894 +66898.481,-1.091250522 +66898.501,-1.025386985 +66898.521,-0.944181485 +66898.541,-0.866606356 +66898.561,-0.769829079 +66898.581,-0.651662853 +66898.601,-0.530046412 +66898.621,-0.429292284 +66898.641,-0.306587775 +66898.661,-0.187748209 +66898.681,-0.094082368 +66898.701,-0.003760918 +66898.721,0.072243274 +66898.741,0.130576118 +66898.761,0.174136159 +66898.781,0.189323283 +66898.801,0.201040647 +66898.821,0.186860378 +66898.841,0.165237589 +66898.861,0.115456195 +66898.881,0.046702857 +66898.901,-0.028603149 +66898.921,-0.117949297 +66898.941,-0.231561152 +66898.961,-0.35226147 +66898.981,-0.459819008 +66899.001,-0.571705142 +66899.021,-0.674740919 +66899.041,-0.785458259 +66899.061,-0.881732468 +66899.081,-0.955684828 +66899.101,-1.036124772 +66899.121,-1.08837833 +66899.141,-1.107856818 +66899.161,-1.113087461 +66899.181,-1.123952641 +66899.201,-1.095477959 +66899.221,-1.019472285 +66899.241,-0.965585831 +66899.261,-0.905376649 +66899.281,-0.810189443 +66899.301,-0.717757348 +66899.321,-0.609617595 +66899.341,-0.498016652 +66899.361,-0.366072891 +66899.381,-0.263741445 +66899.401,-0.146188616 +66899.421,-0.048672432 +66899.441,0.032276714 +66899.461,0.095325649 +66899.481,0.143835283 +66899.501,0.170525178 +66899.521,0.20025488 +66899.541,0.186272619 +66899.561,0.163308061 +66899.581,0.121755698 +66899.601,0.065919014 +66899.621,0.006863406 +66899.641,-0.069948392 +66899.661,-0.164318346 +66899.681,-0.278489517 +66899.701,-0.396978739 +66899.721,-0.517403702 +66899.741,-0.618393978 +66899.761,-0.716493005 +66899.781,-0.818949433 +66899.801,-0.916701562 +66899.821,-0.978323816 +66899.841,-1.050763279 +66899.861,-1.083222681 +66899.881,-1.096782248 +66899.901,-1.107351016 +66899.921,-1.095796583 +66899.941,-1.052949968 +66899.961,-0.981578885 +66899.981,-0.907130317 +66900.001,-0.856229618 +66900.021,-0.755284142 +66900.041,-0.649985382 +66900.061,-0.541970604 +66900.081,-0.43036942 +66900.101,-0.314294021 +66900.121,-0.212040319 +66900.141,-0.1066845 +66900.161,-0.017605003 +66900.181,0.048812917 +66900.201,0.112590917 +66900.221,0.150093146 +66900.241,0.191052684 +66900.261,0.194720988 +66900.281,0.173715786 +66900.301,0.142189162 +66900.321,0.090131059 +66900.341,0.037656001 +66900.361,-0.026083082 +66900.381,-0.120644579 +66900.401,-0.220193131 +66900.421,-0.32897457 +66900.441,-0.472276028 +66900.461,-0.576920348 +66900.481,-0.664217174 +66900.501,-0.751850134 +66900.521,-0.851007082 +66900.541,-0.944989948 +66900.561,-1.013592747 +66900.581,-1.046066733 +66900.601,-1.072200034 +66900.621,-1.088244167 +66900.641,-1.081117779 +66900.661,-1.068638295 +66900.681,-1.036370307 +66900.701,-0.963480155 +66900.721,-0.886081232 +66900.741,-0.798543917 +66900.761,-0.703660053 +66900.781,-0.600116328 +66900.801,-0.493351497 +66900.821,-0.371299366 +66900.841,-0.256562726 +66900.861,-0.169512761 +66900.881,-0.065578443 +66900.901,0.005205198 +66900.921,0.071916641 +66900.941,0.11932522 +66900.961,0.14101452 +66900.981,0.176956775 +66901.001,0.178302377 +66901.021,0.141932055 +66901.041,0.11642426 +66901.061,0.060288111 +66901.081,0.000906127 +66901.101,-0.071321591 +66901.121,-0.175319648 +66901.141,-0.272277392 +66901.161,-0.388709307 +66901.181,-0.493307599 +66901.201,-0.595343626 +66901.221,-0.7137434 +66901.241,-0.791312115 +66901.261,-0.885075392 +66901.281,-0.955149849 +66901.301,-1.00581585 +66901.321,-1.048006883 +66901.341,-1.074975939 +66901.361,-1.07203594 +66901.381,-1.061427447 +66901.401,-1.033382934 +66901.421,-0.977797852 +66901.441,-0.911502233 +66901.461,-0.83706111 +66901.481,-0.754116707 +66901.501,-0.649190407 +66901.521,-0.54998111 +66901.541,-0.423982718 +66901.561,-0.324319973 +66901.581,-0.214709822 +66901.601,-0.12652407 +66901.621,-0.045434396 +66901.641,0.025658687 +66901.661,0.077604013 +66901.681,0.128087228 +66901.701,0.150540594 +66901.721,0.155519624 +66901.741,0.142650253 +66901.761,0.116629289 +66901.781,0.089273264 +66901.801,0.02519219 +66901.821,-0.046486599 +66901.841,-0.123216899 +66901.861,-0.22131713 +66901.881,-0.329736391 +66901.901,-0.452965797 +66901.921,-0.573871312 +66901.941,-0.673530386 +66901.961,-0.764925454 +66901.981,-0.858593432 +66902.001,-0.933989217 +66902.021,-0.988839333 +66902.041,-1.016197198 +66902.061,-1.060009985 +66902.081,-1.080180837 +66902.101,-1.053584653 +66902.121,-1.032411224 +66902.141,-0.987933225 +66902.161,-0.91955596 +66902.181,-0.851898225 +66902.201,-0.781264665 +66902.221,-0.684602705 +66902.241,-0.587079002 +66902.261,-0.476589361 +66902.281,-0.373980811 +66902.301,-0.266017466 +66902.321,-0.164398367 +66902.341,-0.07976855 +66902.361,-0.018915966 +66902.381,0.04421003 +66902.401,0.089387786 +66902.421,0.135257631 +66902.441,0.144238647 +66902.461,0.135416896 +66902.481,0.123379913 +66902.501,0.082745827 +66902.521,0.035651037 +66902.541,-0.028606555 +66902.561,-0.11397289 +66902.581,-0.195282144 +66902.601,-0.288411672 +66902.621,-0.410457354 +66902.641,-0.520435654 +66902.66099,-0.608885286 +66902.681,-0.704866388 +66902.701,-0.797455331 +66902.721,-0.876834829 +66902.741,-0.938941158 +66902.761,-0.998592136 +66902.781,-1.041319501 +66902.801,-1.04608865 +66902.821,-1.051817811 +66902.841,-1.027033382 +66902.861,-0.993903648 +66902.881,-0.950830526 +66902.901,-0.888335749 +66902.921,-0.810419699 +66902.941,-0.727214885 +66902.961,-0.633867434 +66902.981,-0.527017142 +66903.001,-0.428603311 +66903.021,-0.323947127 +66903.041,-0.206074111 +66903.061,-0.127884156 +66903.081,-0.056052362 +66903.101,0.008024591 +66903.121,0.063948868 +66903.141,0.115155201 +66903.161,0.136221253 +66903.181,0.13825605 +66903.201,0.11863319 +66903.221,0.08665499 +66903.241,0.055278466 +66903.261,-0.003889297 +66903.281,-0.070300274 +66903.301,-0.150247448 +66903.321,-0.252511305 +66903.341,-0.341866333 +66903.361,-0.445730602 +66903.381,-0.556192375 +66903.401,-0.647046253 +66903.421,-0.742719369 +66903.441,-0.822669519 +66903.461,-0.896928868 +66903.481,-0.952894323 +66903.501,-0.989967731 +66903.521,-1.019153754 +66903.541,-1.028711939 +66903.561,-1.027202163 +66903.581,-1.015781412 +66903.601,-0.961184852 +66903.621,-0.89012351 +66903.641,-0.841141364 +66903.661,-0.770104479 +66903.681,-0.676352037 +66903.701,-0.57834323 +66903.721,-0.480656816 +66903.741,-0.379477362 +66903.761,-0.279967491 +66903.781,-0.177583675 +66903.801,-0.102793768 +66903.821,-0.027474209 +66903.841,0.034092305 +66903.861,0.083554388 +66903.881,0.115235559 +66903.901,0.124724477 +66903.921,0.11981096 +66903.941,0.102849516 +66903.961,0.073341362 +66903.981,0.021394108 +66904.001,-0.035617133 +66904.021,-0.113725377 +66904.041,-0.206635855 +66904.061,-0.312652362 +66904.081,-0.408057922 +66904.101,-0.503905075 +66904.121,-0.59739805 +66904.141,-0.697658453 +66904.161,-0.780993924 +66904.181,-0.851408752 +66904.201,-0.916460641 +66904.221,-0.957909069 +66904.241,-0.9954687 +66904.261,-1.030513587 +66904.281,-1.029629981 +66904.301,-1.008348303 +66904.321,-0.981082336 +66904.341,-0.935568483 +66904.361,-0.864359644 +66904.381,-0.807703369 +66904.401,-0.727475981 +66904.421,-0.624382384 +66904.441,-0.530617626 +66904.461,-0.438454841 +66904.481,-0.335323409 +66904.501,-0.24068752 +66904.521,-0.153965856 +66904.541,-0.076364271 +66904.561,0.001423738 +66904.581,0.033222423 +66904.601,0.072141478 +66904.621,0.106555485 +66904.641,0.103645787 +66904.661,0.092275314 +66904.681,0.067017395 +66904.701,0.036737535 +66904.721,-0.016855646 +66904.741,-0.097107494 +66904.761,-0.176612489 +66904.781,-0.268139111 +66904.801,-0.379179544 +66904.821,-0.478583138 +66904.841,-0.571082836 +66904.861,-0.664643414 +66904.881,-0.747297035 +66904.901,-0.833519468 +66904.921,-0.896344606 +66904.941,-0.94809406 +66904.961,-0.995203346 +66904.981,-1.020171501 +66905.001,-1.024746441 +66905.021,-1.002999767 +66905.041,-0.974950126 +66905.061,-0.93479705 +66905.081,-0.880264874 +66905.101,-0.813113632 +66905.121,-0.746401462 +66905.141,-0.66039118 +66905.161,-0.561311028 +66905.181,-0.464610995 +66905.201,-0.358389958 +66905.221,-0.265996558 +66905.241,-0.185551453 +66905.261,-0.093728069 +66905.281,-0.021214099 +66905.301,0.024558197 +66905.321,0.062588402 +66905.341,0.092405566 +66905.361,0.110840233 +66905.381,0.099061807 +66905.401,0.071384213 +66905.421,0.035139655 +66905.441,-0.011788843 +66905.461,-0.071596183 +66905.481,-0.150806977 +66905.501,-0.235974791 +66905.521,-0.327155798 +66905.541,-0.426170277 +66905.561,-0.528826606 +66905.581,-0.628548361 +66905.601,-0.710737653 +66905.621,-0.78108283 +66905.641,-0.848973588 +66905.661,-0.91579567 +66905.681,-0.96344507 +66905.701,-0.992796333 +66905.721,-0.99460602 +66905.741,-0.998774176 +66905.761,-0.986693937 +66905.781,-0.946965655 +66905.801,-0.903223624 +66905.821,-0.847769882 +66905.841,-0.76997403 +66905.861,-0.687951435 +66905.881,-0.598181801 +66905.901,-0.49559351 +66905.921,-0.412254515 +66905.941,-0.324125036 +66905.961,-0.231265092 +66905.981,-0.141017078 +66906.001,-0.076516263 +66906.021,-0.029125306 +66906.041,0.039857983 +66906.061,0.074622225 +66906.081,0.075131265 +66906.101,0.076870365 +66906.121,0.066990448 +66906.141,0.051015712 +66906.161,0.010892238 +66906.181,-0.050685169 +66906.201,-0.115745481 +66906.221,-0.182419685 +66906.241,-0.255459919 +66906.261,-0.358325696 +66906.281,-0.474578482 +66906.301,-0.567004682 +66906.321,-0.660954465 +66906.341,-0.745964971 +66906.361,-0.805483108 +66906.381,-0.863609428 +66906.401,-0.924558646 +66906.421,-0.961111034 +66906.441,-0.984542993 +66906.461,-0.996446511 +66906.481,-0.981368375 +66906.501,-0.963334079 +66906.521,-0.92418589 +66906.541,-0.868850868 +66906.561,-0.805457651 +66906.581,-0.728736217 +66906.601,-0.644981397 +66906.621,-0.560290606 +66906.641,-0.472167541 +66906.661,-0.373981906 +66906.681,-0.272794812 +66906.701,-0.192152939 +66906.721,-0.116604259 +66906.741,-0.046083145 +66906.761,0.006146171 +66906.781,0.046764658 +66906.801,0.071872249 +66906.821,0.085012966 +66906.841,0.081423314 +66906.861,0.054137906 +66906.881,0.020796644 +66906.901,-0.021615462 +66906.921,-0.092957206 +66906.941,-0.160923861 +66906.961,-0.232525921 +66906.981,-0.315356511 +66907.001,-0.410282516 +66907.021,-0.510390781 +66907.041,-0.590307348 +66907.061,-0.673840197 +66907.081,-0.766988836 +66907.101,-0.844016736 +66907.121,-0.893939753 +66907.141,-0.93794839 +66907.161,-0.968683873 +66907.181,-0.981205743 +66907.201,-0.975738272 +66907.221,-0.967895992 +66907.241,-0.935562205 +66907.261,-0.884903374 +66907.281,-0.844527789 +66907.301,-0.785209653 +66907.321,-0.701825545 +66907.341,-0.602497941 +66907.361,-0.510256539 +66907.381,-0.420512036 +66907.401,-0.322094156 +66907.421,-0.234253281 +66907.441,-0.164784534 +66907.461,-0.082772877 +66907.48099,-0.014899396 +66907.501,0.02110688 +66907.521,0.044491062 +66907.541,0.073621373 +66907.561,0.079948145 +66907.581,0.056689721 +66907.601,0.028678158 +66907.621,-0.010604135 +66907.641,-0.070565112 +66907.661,-0.137729903 +66907.681,-0.217516407 +66907.701,-0.306007423 +66907.721,-0.395688059 +66907.741,-0.492027484 +66907.761,-0.576675257 +66907.781,-0.657750411 +66907.801,-0.735179412 +66907.821,-0.805844137 +66907.841,-0.867885035 +66907.861,-0.913986842 +66907.881,-0.936901142 +66907.901,-0.964201814 +66907.921,-0.977612631 +66907.941,-0.967610601 +66907.961,-0.933686646 +66907.981,-0.905135181 +66908.001,-0.850379718 +66908.021,-0.788050429 +66908.041,-0.709853441 +66908.061,-0.623011856 +66908.081,-0.549900137 +66908.101,-0.454156612 +66908.121,-0.35580194 +66908.141,-0.246625343 +66908.161,-0.173983147 +66908.181,-0.103525623 +66908.201,-0.031696919 +66908.221,0.004333747 +66908.241,0.035579112 +66908.261,0.054153619 +66908.281,0.059580678 +66908.301,0.056979813 +66908.321,0.023244568 +66908.341,-0.0134447 +66908.361,-0.052007934 +66908.381,-0.120001061 +66908.401,-0.188101897 +66908.421,-0.283704503 +66908.441,-0.355657247 +66908.461,-0.461413982 +66908.481,-0.54806009 +66908.501,-0.627058535 +66908.521,-0.701620469 +66908.541,-0.778052153 +66908.561,-0.847538434 +66908.581,-0.887372295 +66908.60101,-0.930195481 +66908.621,-0.962717212 +66908.641,-0.982077905 +66908.661,-0.963883553 +66908.681,-0.931871003 +66908.701,-0.911016002 +66908.721,-0.86516542 +66908.741,-0.81345333 +66908.761,-0.740618559 +66908.781,-0.664998191 +66908.801,-0.567864641 +66908.821,-0.480089246 +66908.841,-0.398503793 +66908.861,-0.31581862 +66908.881,-0.224775164 +66908.901,-0.174138172 +66908.921,-0.085315679 +66908.941,-0.025306215 +66908.961,0.006628482 +66908.981,0.032337135 +66909.001,0.033401597 +66909.021,0.040493847 +66909.041,0.032437402 +66909.061,0.015355696 +66909.081,-0.036698527 +66909.101,-0.099491916 +66909.121,-0.158636512 +66909.141,-0.235732726 +66909.161,-0.324051099 +66909.181,-0.410990705 +66909.201,-0.492020247 +66909.221,-0.58474128 +66909.241,-0.670489606 +66909.261,-0.738317643 +66909.281,-0.809471294 +66909.301,-0.87663438 +66909.321,-0.908245444 +66909.341,-0.931347672 +66909.361,-0.959202031 +66909.381,-0.955158855 +66909.401,-0.93616265 +66909.421,-0.915400281 +66909.441,-0.879055956 +66909.461,-0.825274054 +66909.481,-0.759722698 +66909.501,-0.680457612 +66909.521,-0.611662081 +66909.541,-0.517371167 +66909.561,-0.432126132 +66909.581,-0.346714127 +66909.601,-0.257601811 +66909.621,-0.183071907 +66909.641,-0.130818885 +66909.661,-0.056971075 +66909.681,-0.010364372 +66909.701,0.017185419 +66909.721,0.032048693 +66909.741,0.047206031 +66909.761,0.040500187 +66909.781,0.010769956 +66909.801,-0.027034293 +66909.821,-0.075221133 +66909.841,-0.14456138 +66909.861,-0.199889923 +66909.881,-0.278093508 +66909.901,-0.370639474 +66909.921,-0.439957539 +66909.941,-0.536531972 +66909.961,-0.619833119 +66909.981,-0.700976584 +66910.001,-0.776561021 +66910.021,-0.837706956 +66910.041,-0.887228023 +66910.061,-0.91740842 +66910.081,-0.939864209 +66910.101,-0.948300969 +66910.121,-0.947327338 +66910.141,-0.925433186 +66910.161,-0.890162127 +66910.181,-0.848236206 +66910.201,-0.788082706 +66910.221,-0.715396327 +66910.241,-0.656580638 +66910.261,-0.566604109 +66910.281,-0.497945136 +66910.301,-0.41255895 +66910.321,-0.309138396 +66910.341,-0.226763198 +66910.361,-0.167549193 +66910.381,-0.088010164 +66910.401,-0.046190656 +66910.421,-0.008978735 +66910.441,0.026870158 +66910.461,0.029398639 +66910.481,0.026231794 +66910.501,0.025214061 +66910.521,-0.002875545 +66910.541,-0.050396628 +66910.561,-0.099131397 +66910.581,-0.17451773 +66910.601,-0.242193154 +66910.621,-0.323453581 +66910.641,-0.420183581 +66910.661,-0.493600108 +66910.681,-0.571466331 +66910.701,-0.651375827 +66910.721,-0.719440526 +66910.741,-0.783875736 +66910.761,-0.845843368 +66910.781,-0.877659353 +66910.801,-0.912685 +66910.821,-0.935010608 +66910.841,-0.937706354 +66910.861,-0.9156619 +66910.881,-0.89791066 +66910.901,-0.855035555 +66910.921,-0.804676386 +66910.941,-0.744572029 +66910.961,-0.660653798 +66910.981,-0.58847537 +66911.001,-0.502112379 +66911.021,-0.431877637 +66911.041,-0.354304766 +66911.061,-0.256063541 +66911.081,-0.196203776 +66911.101,-0.11627697 +66911.121,-0.073761287 +66911.141,-0.014861345 +66911.161,0.00958073 +66911.181,0.029071317 +66911.201,0.018166202 +66911.221,0.017045406 +66911.241,0.00642228 +66911.261,-0.040493704 +66911.281,-0.090560895 +66911.301,-0.167244986 +66911.321,-0.223983783 +66911.341,-0.295183425 +66911.361,-0.374460062 +66911.381,-0.456664399 +66911.401,-0.545042878 +66911.421,-0.626344965 +66911.441,-0.706660297 +66911.461,-0.767319498 +66911.481,-0.819287243 +66911.501,-0.864366685 +66911.521,-0.904064231 +66911.541,-0.922564553 +66911.561,-0.920389674 +66911.581,-0.926373759 +66911.601,-0.899371731 +66911.621,-0.858097247 +66911.641,-0.814901197 +66911.661,-0.771985376 +66911.681,-0.718550442 +66911.701,-0.630898815 +66911.721,-0.553251021 +66911.741,-0.471928009 +66911.761,-0.375139257 +66911.781,-0.309645164 +66911.801,-0.23371777 +66911.821,-0.159442947 +66911.841,-0.112444694 +66911.861,-0.053574194 +66911.881,-0.001310335 +66911.901,0.008987106 +66911.921,0.006035769 +66911.941,0.024555817 +66911.961,0.006381338 +66911.981,-0.02667953 +66912.001,-0.060364671 +66912.021,-0.12568241 +66912.041,-0.178461093 +66912.061,-0.249241675 +66912.081,-0.327494292 +66912.101,-0.423837734 +66912.121,-0.505240964 +66912.141,-0.575999539 +66912.161,-0.657912183 +66912.181,-0.710749767 +66912.201,-0.788190774 +66912.221,-0.845773572 +66912.241,-0.88407316 +66912.261,-0.89660692 +66912.281,-0.907264908 +66912.30099,-0.922595702 +66912.321,-0.904604742 +66912.341,-0.865896524 +66912.361,-0.835755095 +66912.381,-0.796543998 +66912.401,-0.723719465 +66912.421,-0.665137508 +66912.441,-0.601034855 +66912.461,-0.51862392 +66912.481,-0.434476983 +66912.501,-0.352182444 +66912.521,-0.28470834 +66912.541,-0.203158451 +66912.561,-0.137724956 +66912.581,-0.080823781 +66912.601,-0.037854109 +66912.621,-0.016621514 +66912.641,0.008636177 +66912.661,0.009159903 +66912.681,-0.002280992 +66912.701,-0.028057831 +66912.721,-0.043511392 +66912.741,-0.092262887 +66912.761,-0.154456335 +66912.781,-0.215237662 +66912.801,-0.290078657 +66912.821,-0.368220429 +66912.841,-0.464440206 +66912.861,-0.546450009 +66912.881,-0.618069524 +66912.901,-0.689490919 +66912.921,-0.74745839 +66912.941,-0.796331538 +66912.961,-0.854942542 +66912.981,-0.88722095 +66913.001,-0.916715762 +66913.021,-0.913682715 +66913.041,-0.896755774 +66913.061,-0.882279492 +66913.081,-0.856382817 +66913.101,-0.812244099 +66913.121,-0.760390028 +66913.141,-0.689902505 +66913.161,-0.62085928 +66913.181,-0.550694066 +66913.201,-0.470850514 +66913.221,-0.386704709 +66913.241,-0.303580154 +66913.261,-0.233086488 +66913.281,-0.17098937 +66913.301,-0.109202603 +66913.321,-0.063857693 +66913.341,-0.037709349 +66913.361,-0.004298886 +66913.381,0.009599398 +66913.401,-0.001570871 +66913.42101,-0.018619764 +66913.441,-0.041001868 +66913.461,-0.079447489 +66913.481,-0.139130493 +66913.501,-0.204954328 +66913.521,-0.280961903 +66913.541,-0.351653723 +66913.561,-0.425577585 +66913.581,-0.51598239 +66913.601,-0.598625941 +66913.621,-0.654258562 +66913.641,-0.728096555 +66913.661,-0.786891858 +66913.681,-0.83279889 +66913.701,-0.87293204 +66913.721,-0.885587219 +66913.741,-0.890076613 +66913.761,-0.907574081 +66913.781,-0.887162135 +66913.801,-0.864621229 +66913.821,-0.81914871 +66913.841,-0.771467783 +66913.861,-0.722851707 +66913.881,-0.661655959 +66913.901,-0.57360171 +66913.921,-0.483980247 +66913.941,-0.422946451 +66913.961,-0.334739961 +66913.981,-0.245273389 +66914.001,-0.178063916 +66914.021,-0.121426318 +66914.041,-0.08604026 +66914.061,-0.038685179 +66914.081,-0.009675563 +66914.101,-0.001462848 +66914.121,0.003446462 +66914.141,-0.012724386 +66914.161,-0.032948664 +66914.181,-0.074456461 +66914.201,-0.126054358 +66914.221,-0.164156284 +66914.241,-0.230609806 +66914.261,-0.306254944 +66914.281,-0.391735116 +66914.301,-0.469372407 +66914.321,-0.553601924 +66914.341,-0.615229414 +66914.361,-0.680776934 +66914.381,-0.744836885 +66914.401,-0.795330234 +66914.421,-0.831094813 +66914.441,-0.859887012 +66914.461,-0.874053338 +66914.481,-0.882915444 +66914.501,-0.870367786 +66914.521,-0.867993435 +66914.541,-0.830222705 +66914.561,-0.790019205 +66914.581,-0.733215615 +66914.601,-0.671039823 +66914.621,-0.591865041 +66914.641,-0.517571261 +66914.661,-0.449128163 +66914.681,-0.37245719 +66914.701,-0.287190811 +66914.721,-0.223489289 +66914.741,-0.178065906 +66914.761,-0.122455771 +66914.781,-0.069808242 +66914.801,-0.040797224 +66914.821,-0.01323214 +66914.841,-0.001461618 +66914.861,-0.010368225 +66914.881,-0.038541852 +66914.901,-0.057452787 +66914.921,-0.09618461 +66914.941,-0.134736201 +66914.961,-0.2059426 +66914.981,-0.281561244 +66915.001,-0.351479584 +66915.021,-0.432958937 +66915.041,-0.505669643 +66915.061,-0.581505531 +66915.081,-0.660957441 +66915.101,-0.724063086 +66915.121,-0.770343762 +66915.141,-0.824062672 +66915.161,-0.854136062 +66915.181,-0.870222428 +66915.201,-0.88342067 +66915.221,-0.88461028 +66915.241,-0.875106764 +66915.261,-0.843445471 +66915.281,-0.815962504 +66915.301,-0.768966499 +66915.321,-0.700726496 +66915.341,-0.645459653 +66915.361,-0.573628349 +66915.381,-0.492439325 +66915.401,-0.408757253 +66915.421,-0.333781561 +66915.441,-0.271827927 +66915.461,-0.201357933 +66915.481,-0.137945119 +66915.501,-0.10570061 +66915.521,-0.063078377 +66915.541,-0.04644974 +66915.561,-0.036900836 +66915.581,-0.020941982 +66915.601,-0.036873256 +66915.621,-0.056386868 +66915.641,-0.089952971 +66915.661,-0.142502497 +66915.681,-0.192354158 +66915.701,-0.242360913 +66915.721,-0.305163895 +66915.741,-0.388575466 +66915.761,-0.466635548 +66915.781,-0.540849633 +66915.801,-0.611549785 +66915.821,-0.678370284 +66915.841,-0.730270293 +66915.861,-0.783373452 +66915.881,-0.823213274 +66915.901,-0.853038711 +66915.921,-0.878065592 +66915.941,-0.889046554 +66915.961,-0.869237836 +66915.981,-0.854835815 +66916.001,-0.824335184 +66916.021,-0.774548127 +66916.041,-0.728626593 +66916.061,-0.681408902 +66916.081,-0.607682915 +66916.101,-0.537841645 +66916.121,-0.465246033 +66916.141,-0.377418567 +66916.161,-0.304039249 +66916.181,-0.247708572 +66916.201,-0.179683661 +66916.221,-0.139383217 +66916.241,-0.096492343 +66916.261,-0.05255816 +66916.281,-0.025796348 +66916.301,-0.027852799 +66916.321,-0.044727057 +66916.341,-0.052489132 +66916.361,-0.07543727 +66916.381,-0.121303865 +66916.401,-0.163872825 +66916.421,-0.217064256 +66916.441,-0.285533824 +66916.461,-0.357699527 +66916.481,-0.436154663 +66916.501,-0.516260789 +66916.521,-0.587304052 +66916.541,-0.655006753 +66916.561,-0.722784561 +66916.581,-0.768747878 +66916.601,-0.806373427 +66916.621,-0.841073664 +66916.641,-0.864671891 +66916.661,-0.879020281 +66916.681,-0.875580208 +66916.701,-0.853424234 +66916.721,-0.825838078 +66916.741,-0.796840092 +66916.761,-0.751011253 +66916.781,-0.675677737 +66916.801,-0.60494875 +66916.821,-0.541922282 +66916.841,-0.461966538 +66916.861,-0.391569656 +66916.881,-0.317400917 +66916.901,-0.250176527 +66916.921,-0.203625932 +66916.941,-0.148169193 +66916.961,-0.090534134 +66916.981,-0.066313291 +66917.001,-0.0481768 +66917.021,-0.039875441 +66917.041,-0.043890111 +66917.061,-0.051683504 +66917.081,-0.079534431 +66917.101,-0.105618889 +66917.121,-0.163603054 +66917.141,-0.222880442 +66917.161,-0.287606795 +66917.181,-0.354507253 +66917.201,-0.421643633 +66917.221,-0.493827174 +66917.241,-0.56312588 +66917.261,-0.636392128 +66917.281,-0.693642022 +66917.301,-0.74971187 +66917.321,-0.797762488 +66917.341,-0.823430589 +66917.361,-0.854836559 +66917.381,-0.865781403 +66917.401,-0.86313586 +66917.421,-0.842614196 +66917.441,-0.815058919 +66917.461,-0.786636931 +66917.481,-0.747061375 +66917.501,-0.698081224 +66917.521,-0.64562951 +66917.541,-0.579239923 +66917.561,-0.510153214 +66917.581,-0.421404132 +66917.601,-0.36320291 +66917.621,-0.305827982 +66917.641,-0.239017115 +66917.661,-0.16506878 +66917.681,-0.119831911 +66917.701,-0.095819656 +66917.721,-0.072065178 +66917.741,-0.048749945 +66917.761,-0.050503476 +66917.781,-0.063340691 +66917.801,-0.065310845 +66917.821,-0.096623277 +66917.841,-0.149609845 +66917.861,-0.187836136 +66917.881,-0.246923681 +66917.901,-0.313466253 +66917.921,-0.383857182 +66917.941,-0.462746928 +66917.961,-0.537422353 +66917.981,-0.591043204 +66918.001,-0.662048831 +66918.021,-0.725888891 +66918.041,-0.757554456 +66918.061,-0.794150326 +66918.081,-0.821510616 +66918.101,-0.850179625 +66918.121,-0.849238872 +66918.141,-0.846916775 +66918.161,-0.842216352 +66918.181,-0.813347898 +66918.201,-0.764074617 +66918.221,-0.722549305 +66918.24101,-0.667122709 +66918.261,-0.614607774 +66918.281,-0.551101575 +66918.301,-0.467637401 +66918.321,-0.393652125 +66918.341,-0.339605941 +66918.361,-0.265185408 +66918.381,-0.202007607 +66918.401,-0.162751381 +66918.421,-0.119396542 +66918.441,-0.07791374 +66918.461,-0.071509839 +66918.481,-0.04897646 +66918.501,-0.040278691 +66918.521,-0.07608373 +66918.541,-0.097269716 +66918.561,-0.131147278 +66918.581,-0.179631762 +66918.601,-0.230070343 +66918.621,-0.288230163 +66918.641,-0.349914134 +66918.661,-0.4151211 +66918.681,-0.486526511 +66918.701,-0.555799383 +66918.721,-0.630700719 +66918.741,-0.689096416 +66918.761,-0.730539006 +66918.781,-0.785047791 +66918.801,-0.821140415 +66918.821,-0.836758269 +66918.841,-0.849730244 +66918.861,-0.85619672 +66918.881,-0.846319712 +66918.901,-0.825576469 +66918.921,-0.789673273 +66918.941,-0.744609275 +66918.961,-0.710041934 +66918.981,-0.651955049 +66919.001,-0.582126265 +66919.021,-0.51874692 +66919.041,-0.444846694 +66919.061,-0.371636496 +66919.081,-0.309140486 +66919.101,-0.242413526 +66919.121,-0.197661196 +66919.141,-0.154450915 +66919.161,-0.105791742 +66919.181,-0.084905552 +66919.201,-0.068272278 +66919.221,-0.05417729 +66919.241,-0.069536248 +66919.261,-0.102170693 +66919.281,-0.122968974 +66919.301,-0.153850058 +66919.321,-0.205019247 +66919.341,-0.266504033 +66919.361,-0.327433272 +66919.381,-0.399843932 +66919.401,-0.464736565 +66919.421,-0.5276695 +66919.441,-0.616296236 +66919.461,-0.667126482 +66919.481,-0.709040054 +66919.501,-0.759230902 +66919.521,-0.80360593 +66919.541,-0.83194092 +66919.561,-0.838889781 +66919.581,-0.831421834 +66919.601,-0.834137112 +66919.621,-0.81668846 +66919.641,-0.793913248 +66919.661,-0.749399516 +66919.681,-0.711015453 +66919.701,-0.657635344 +66919.721,-0.602305563 +66919.741,-0.529076166 +66919.761,-0.476519947 +66919.781,-0.404159561 +66919.801,-0.328347798 +66919.821,-0.275081151 +66919.841,-0.20860709 +66919.861,-0.15697226 +66919.881,-0.127123305 +66919.901,-0.100944027 +66919.921,-0.07420431 +66919.941,-0.057969967 +66919.961,-0.06322011 +66919.981,-0.081659513 +66920.001,-0.106946738 +66920.021,-0.144639356 +66920.041,-0.182637015 +66920.061,-0.235133656 +66920.081,-0.311174769 +66920.101,-0.37881595 +66920.121,-0.450850088 +66920.141,-0.511178254 +66920.161,-0.576552027 +66920.181,-0.624223756 +66920.201,-0.69360342 +66920.221,-0.733915604 +66920.241,-0.7815755 +66920.261,-0.807923477 +66920.281,-0.82864356 +66920.301,-0.851987141 +66920.321,-0.841064715 +66920.341,-0.815906589 +66920.361,-0.806970265 +66920.381,-0.768601407 +66920.401,-0.728012093 +66920.421,-0.675698058 +66920.441,-0.628736936 +66920.461,-0.557621796 +66920.481,-0.503631482 +66920.501,-0.438598123 +66920.521,-0.365853414 +66920.541,-0.304037707 +66920.561,-0.228895176 +66920.581,-0.18955405 +66920.601,-0.155579422 +66920.621,-0.106452827 +66920.641,-0.08808181 +66920.661,-0.065246506 +66920.681,-0.079873214 +66920.701,-0.083440921 +66920.721,-0.101935012 +66920.741,-0.144030706 +66920.761,-0.185471641 +66920.781,-0.223364581 +66920.801,-0.272234803 +66920.821,-0.331777134 +66920.841,-0.393070725 +66920.861,-0.471085163 +66920.881,-0.544534868 +66920.901,-0.60296126 +66920.921,-0.656359881 +66920.941,-0.698189864 +66920.961,-0.737721613 +66920.981,-0.789103834 +66921.001,-0.808701887 +66921.021,-0.820574314 +66921.041,-0.828253955 +66921.061,-0.83165751 +66921.081,-0.817132388 +66921.101,-0.782703292 +66921.121,-0.737832531 +66921.141,-0.691402675 +66921.161,-0.654153092 +66921.181,-0.587367153 +66921.201,-0.519786463 +66921.221,-0.478208426 +66921.241,-0.393317044 +66921.261,-0.340468237 +66921.281,-0.27502434 +66921.301,-0.218169267 +66921.321,-0.169802093 +66921.341,-0.13184151 +66921.361,-0.114514871 +66921.381,-0.088718556 +66921.401,-0.074291933 +66921.421,-0.084330735 +66921.441,-0.105634828 +66921.461,-0.12524018 +66921.481,-0.143669656 +66921.501,-0.181050036 +66921.521,-0.24802051 +66921.541,-0.294470633 +66921.561,-0.362598876 +66921.581,-0.446838493 +66921.601,-0.486248785 +66921.621,-0.557783607 +66921.641,-0.619645475 +66921.661,-0.675546008 +66921.681,-0.714814902 +66921.701,-0.755826771 +66921.721,-0.781457271 +66921.741,-0.7986654 +66921.761,-0.81264151 +66921.781,-0.827215675 +66921.801,-0.800302128 +66921.821,-0.787213292 +66921.841,-0.758420389 +66921.861,-0.718278638 +66921.881,-0.670803956 +66921.901,-0.621191666 +66921.921,-0.559737349 +66921.941,-0.497376759 +66921.961,-0.434587414 +66921.981,-0.377900022 +66922.001,-0.303900615 +66922.021,-0.247258575 +66922.041,-0.19355913 +66922.061,-0.163055096 +66922.081,-0.132734087 +66922.101,-0.102578716 +66922.121,-0.093583553 +66922.141,-0.093204153 +66922.161,-0.097643661 +66922.181,-0.107880715 +66922.201,-0.144021015 +66922.221,-0.187683416 +66922.241,-0.22747203 +66922.261,-0.284394868 +66922.281,-0.332614787 +66922.301,-0.395205003 +66922.321,-0.469423118 +66922.341,-0.535795556 +66922.361,-0.58639703 +66922.381,-0.646054251 +66922.401,-0.701881 +66922.421,-0.737033229 +66922.441,-0.772862534 +66922.461,-0.807364992 +66922.481,-0.81990008 +66922.501,-0.821298539 +66922.521,-0.816726175 +66922.541,-0.806893273 +66922.561,-0.761708177 +66922.581,-0.719767409 +66922.601,-0.680349654 +66922.621,-0.627420645 +66922.641,-0.58235978 +66922.661,-0.52445613 +66922.681,-0.445745739 +66922.701,-0.387093996 +66922.721,-0.327119142 +66922.741,-0.269527316 +66922.761,-0.216374858 +66922.781,-0.183740539 +66922.801,-0.139507607 +66922.821,-0.112453151 +66922.841,-0.105467453 +66922.861,-0.088231468 +66922.881,-0.094742 +66922.901,-0.109905229 +66922.921,-0.134705024 +66922.941,-0.174298993 +66922.961,-0.220038652 +66922.981,-0.27635641 +66923.001,-0.334990315 +66923.021,-0.407154449 +66923.041,-0.462681081 +66923.06101,-0.529316605 +66923.081,-0.583594269 +66923.101,-0.627110992 +66923.121,-0.689277491 +66923.141,-0.723154988 +66923.161,-0.76658756 +66923.181,-0.785770735 +66923.201,-0.801531982 +66923.221,-0.818800265 +66923.241,-0.805539425 +66923.261,-0.797957993 +66923.281,-0.767379887 +66923.301,-0.72078278 +66923.321,-0.69547793 +66923.341,-0.65041915 +66923.361,-0.582249539 +66923.381,-0.518828616 +66923.401,-0.458978058 +66923.421,-0.402153487 +66923.441,-0.356569924 +66923.461,-0.28990025 +66923.481,-0.230694367 +66923.501,-0.183259182 +66923.521,-0.147478472 +66923.541,-0.140566704 +66923.561,-0.106209479 +66923.581,-0.085357132 +66923.601,-0.099468813 +66923.621,-0.123622849 +66923.641,-0.140277935 +66923.661,-0.172961389 +66923.681,-0.207558837 +66923.701,-0.253385538 +66923.721,-0.316622902 +66923.741,-0.366382511 +66923.761,-0.424331694 +66923.781,-0.499245114 +66923.801,-0.574343462 +66923.821,-0.6287834 +66923.841,-0.667051228 +66923.861,-0.715566539 +66923.881,-0.759533898 +66923.901,-0.773990367 +66923.921,-0.790172198 +66923.941,-0.808696126 +66923.961,-0.806197293 +66923.981,-0.794771692 +66924.001,-0.775315588 +66924.021,-0.743361532 +66924.041,-0.702717098 +66924.061,-0.667622886 +66924.081,-0.610621454 +66924.101,-0.543229198 +66924.121,-0.485330253 +66924.141,-0.44350162 +66924.161,-0.374038238 +66924.181,-0.297886533 +66924.201,-0.266972272 +66924.221,-0.21807706 +66924.241,-0.170351186 +66924.261,-0.142349449 +66924.281,-0.126109849 +66924.301,-0.119131172 +66924.321,-0.105233318 +66924.341,-0.112153205 +66924.361,-0.14225064 +66924.381,-0.172716394 +66924.401,-0.208216956 +66924.421,-0.25577847 +66924.441,-0.307633455 +66924.461,-0.359001655 +66924.481,-0.412202849 +66924.501,-0.469490719 +66924.521,-0.532484038 +66924.541,-0.592304613 +66924.561,-0.638628548 +66924.581,-0.68943623 +66924.601,-0.720561165 +66924.621,-0.759876455 +66924.641,-0.788565463 +66924.661,-0.785343379 +66924.681,-0.798394014 +66924.701,-0.794429732 +66924.721,-0.768618953 +66924.741,-0.750934181 +66924.761,-0.716223822 +66924.781,-0.662681194 +66924.801,-0.60858112 +66924.821,-0.563310313 +66924.841,-0.522019227 +66924.861,-0.471913361 +66924.881,-0.400139456 +66924.901,-0.344011371 +66924.921,-0.301530992 +66924.941,-0.246868619 +66924.961,-0.199436215 +66924.981,-0.157634894 +66925.001,-0.138591105 +66925.021,-0.121289701 +66925.041,-0.115511444 +66925.061,-0.115388309 +66925.081,-0.122347025 +66925.101,-0.154844895 +66925.121,-0.175874017 +66925.141,-0.208736609 +66925.161,-0.272323461 +66925.181,-0.322420679 +66925.201,-0.378503731 +66925.221,-0.445437448 +66925.241,-0.493191178 +66925.261,-0.550948036 +66925.281,-0.618628005 +66925.301,-0.66268083 +66925.321,-0.705163047 +66925.341,-0.743236938 +66925.361,-0.77756078 +66925.381,-0.786789289 +66925.401,-0.796554505 +66925.421,-0.798397779 +66925.441,-0.773564011 +66925.461,-0.759787306 +66925.481,-0.734525441 +66925.501,-0.695252833 +66925.521,-0.636895386 +66925.541,-0.586384963 +66925.561,-0.54197966 +66925.581,-0.457934623 +66925.601,-0.410523303 +66925.621,-0.355261584 +66925.641,-0.289036376 +66925.661,-0.237253272 +66925.681,-0.190023206 +66925.701,-0.162121277 +66925.721,-0.130946481 +66925.741,-0.115501863 +66925.761,-0.112695552 +66925.781,-0.114984 +66925.801,-0.137691908 +66925.821,-0.159432629 +66925.841,-0.190752687 +66925.861,-0.225138987 +66925.881,-0.283162183 +66925.901,-0.330007012 +66925.921,-0.371950468 +66925.941,-0.446599636 +66925.961,-0.500739126 +66925.981,-0.556556701 +66926.001,-0.61803793 +66926.021,-0.65611076 +66926.041,-0.703931001 +66926.061,-0.731643103 +66926.081,-0.750792719 +66926.101,-0.772453993 +66926.121,-0.791190144 +66926.141,-0.792213315 +66926.161,-0.767638862 +66926.181,-0.749320319 +66926.201,-0.733616854 +66926.221,-0.680049994 +66926.241,-0.640538806 +66926.261,-0.605854884 +66926.281,-0.540680782 +66926.301,-0.485776813 +66926.321,-0.426230222 +66926.341,-0.375188028 +66926.361,-0.301118218 +66926.381,-0.259405359 +66926.401,-0.217735917 +66926.421,-0.168663738 +66926.441,-0.157356858 +66926.461,-0.133072487 +66926.481,-0.124691741 +66926.501,-0.132088514 +66926.521,-0.136850691 +66926.541,-0.146750505 +66926.561,-0.169637923 +66926.581,-0.214997769 +66926.601,-0.246588701 +66926.621,-0.304531063 +66926.641,-0.346897995 +66926.661,-0.393299264 +66926.681,-0.461309051 +66926.701,-0.535142089 +66926.721,-0.586251492 +66926.741,-0.620497902 +66926.761,-0.683319806 +66926.781,-0.72742876 +66926.801,-0.747909798 +66926.821,-0.755141139 +66926.841,-0.772263672 +66926.861,-0.780619524 +66926.881,-0.763233142 +66926.901,-0.749173977 +66926.921,-0.731731039 +66926.941,-0.697601147 +66926.961,-0.661946203 +66926.981,-0.625150305 +66927.001,-0.564673201 +66927.021,-0.50736156 +66927.041,-0.450079856 +66927.061,-0.399882872 +66927.081,-0.344414417 +66927.101,-0.284469132 +66927.121,-0.230048878 +66927.141,-0.192393775 +66927.161,-0.166952455 +66927.181,-0.154633402 +66927.201,-0.128531437 +66927.221,-0.124430597 +66927.241,-0.128025366 +66927.261,-0.159220803 +66927.281,-0.168100215 +66927.301,-0.188455599 +66927.321,-0.229873335 +66927.341,-0.278018315 +66927.361,-0.328091175 +66927.381,-0.376648008 +66927.401,-0.443993338 +66927.421,-0.501029135 +66927.441,-0.555948054 +66927.461,-0.606323924 +66927.481,-0.65861327 +66927.501,-0.688280497 +66927.521,-0.706024544 +66927.541,-0.748806965 +66927.561,-0.760017222 +66927.581,-0.779270904 +66927.601,-0.777687431 +66927.621,-0.753477351 +66927.641,-0.737026119 +66927.661,-0.714723534 +66927.681,-0.675728282 +66927.701,-0.632876555 +66927.721,-0.594215286 +66927.741,-0.54377602 +66927.761,-0.492628982 +66927.781,-0.418102287 +66927.801,-0.358966561 +66927.821,-0.306690422 +66927.841,-0.263617939 +66927.861,-0.221294833 +66927.88099,-0.202677049 +66927.901,-0.175632277 +66927.921,-0.1449468 +66927.941,-0.131397441 +66927.961,-0.129528071 +66927.981,-0.139776854 +66928.001,-0.158963079 +66928.021,-0.178740725 +66928.041,-0.220377966 +66928.061,-0.268221765 +66928.081,-0.31096299 +66928.101,-0.354978971 +66928.121,-0.422608547 +66928.141,-0.478888978 +66928.161,-0.519888024 +66928.181,-0.577699172 +66928.201,-0.622207992 +66928.221,-0.658639747 +66928.241,-0.706073806 +66928.261,-0.729375113 +66928.281,-0.753002447 +66928.301,-0.762288348 +66928.321,-0.768556695 +66928.341,-0.751648407 +66928.361,-0.746801062 +66928.381,-0.724677426 +66928.401,-0.697491012 +66928.421,-0.652190529 +66928.441,-0.623323397 +66928.461,-0.569516267 +66928.481,-0.509628639 +66928.501,-0.452597123 +66928.521,-0.394882548 +66928.541,-0.320340633 +66928.561,-0.287411562 +66928.581,-0.243036481 +66928.601,-0.203637828 +66928.621,-0.169879536 +66928.641,-0.145148667 +66928.661,-0.13888981 +66928.681,-0.142617391 +66928.701,-0.131784972 +66928.721,-0.16286007 +66928.741,-0.181494707 +66928.761,-0.219884674 +66928.781,-0.276161119 +66928.801,-0.313797414 +66928.821,-0.368131344 +66928.841,-0.418098766 +66928.861,-0.467809859 +66928.881,-0.526489142 +66928.901,-0.570194795 +66928.921,-0.609618413 +66928.941,-0.66428759 +66928.961,-0.70507771 +66928.981,-0.71590299 +66929.001,-0.735955466 +66929.021,-0.763040927 +66929.041,-0.764114059 +66929.061,-0.763353353 +66929.081,-0.753421342 +66929.101,-0.726142948 +66929.121,-0.687135129 +66929.141,-0.649687039 +66929.161,-0.597792391 +66929.181,-0.552187721 +66929.201,-0.50808489 +66929.221,-0.452971882 +66929.241,-0.401515445 +66929.261,-0.337644066 +66929.281,-0.287392071 +66929.301,-0.259285608 +66929.321,-0.215692722 +66929.341,-0.182311245 +66929.361,-0.164683274 +66929.381,-0.136638417 +66929.401,-0.135742045 +66929.421,-0.145864736 +66929.441,-0.162101663 +66929.461,-0.193500678 +66929.481,-0.213437354 +66929.501,-0.249547399 +66929.521,-0.299939193 +66929.541,-0.347320829 +66929.561,-0.394463856 +66929.581,-0.438243778 +66929.601,-0.492076398 +66929.621,-0.560526981 +66929.641,-0.607604238 +66929.661,-0.638272442 +66929.681,-0.672980728 +66929.701,-0.712427717 +66929.721,-0.730923934 +66929.741,-0.751300415 +66929.761,-0.768606543 +66929.781,-0.762770229 +66929.801,-0.744967607 +66929.821,-0.72858222 +66929.841,-0.712169191 +66929.861,-0.671532006 +66929.881,-0.624972325 +66929.901,-0.581802576 +66929.921,-0.542687774 +66929.941,-0.495465629 +66929.961,-0.421549206 +66929.981,-0.374830373 +66930.001,-0.323942842 +66930.021,-0.274695855 +66930.041,-0.244277144 +66930.061,-0.202089484 +66930.081,-0.175132931 +66930.101,-0.15737638 +66930.121,-0.148743566 +66930.141,-0.14655152 +66930.161,-0.150660936 +66930.181,-0.170783109 +66930.201,-0.205082118 +66930.221,-0.242383212 +66930.241,-0.272306553 +66930.261,-0.320159088 +66930.281,-0.358259837 +66930.301,-0.409318256 +66930.321,-0.477801347 +66930.341,-0.533641316 +66930.361,-0.567908395 +66930.381,-0.622284131 +66930.401,-0.676330676 +66930.421,-0.693103744 +66930.441,-0.717949756 +66930.461,-0.739945217 +66930.481,-0.752152534 +66930.501,-0.767679975 +66930.521,-0.749652387 +66930.541,-0.721875814 +66930.561,-0.715696245 +66930.581,-0.682350498 +66930.601,-0.644072738 +66930.621,-0.603659355 +66930.641,-0.554430049 +66930.661,-0.505529399 +66930.681,-0.445141218 +66930.701,-0.393228599 +66930.721,-0.358045965 +66930.741,-0.318955293 +66930.761,-0.259664817 +66930.781,-0.207403313 +66930.801,-0.184187477 +66930.821,-0.166686868 +66930.841,-0.160916303 +66930.861,-0.170410874 +66930.881,-0.162593194 +66930.901,-0.173142832 +66930.921,-0.205779448 +66930.941,-0.22434906 +66930.961,-0.247645403 +66930.981,-0.295034547 +66931.001,-0.351002528 +66931.021,-0.399436568 +66931.041,-0.442582017 +66931.061,-0.489176026 +66931.081,-0.551479178 +66931.101,-0.605645777 +66931.121,-0.634015482 +66931.141,-0.669334722 +66931.161,-0.711980576 +66931.181,-0.73650078 +66931.201,-0.740505965 +66931.221,-0.751537429 +66931.241,-0.753112477 +66931.261,-0.734756458 +66931.281,-0.713168564 +66931.301,-0.687698739 +66931.321,-0.659351967 +66931.341,-0.623280082 +66931.361,-0.577407001 +66931.381,-0.531127103 +66931.401,-0.490764467 +66931.421,-0.436554387 +66931.441,-0.382960351 +66931.461,-0.331577427 +66931.481,-0.28952629 +66931.501,-0.245418291 +66931.521,-0.212911665 +66931.541,-0.192179589 +66931.561,-0.168429133 +66931.581,-0.159632671 +66931.601,-0.156975079 +66931.621,-0.169649646 +66931.641,-0.185102731 +66931.661,-0.196431742 +66931.681,-0.231503144 +66931.701,-0.268410524 +66931.721,-0.302080638 +66931.741,-0.34484382 +66931.761,-0.402608653 +66931.781,-0.457155802 +66931.801,-0.505438779 +66931.821,-0.558840387 +66931.841,-0.598109392 +66931.861,-0.640895584 +66931.881,-0.681069906 +66931.901,-0.71095476 +66931.921,-0.745429548 +66931.941,-0.750609781 +66931.961,-0.746901398 +66931.981,-0.74651336 +66932.001,-0.731266618 +66932.021,-0.7031685 +66932.041,-0.670746178 +66932.061,-0.635152086 +66932.081,-0.600108631 +66932.101,-0.550301388 +66932.121,-0.494301686 +66932.141,-0.467830929 +66932.161,-0.416370526 +66932.181,-0.353591016 +66932.201,-0.314002543 +66932.221,-0.268884603 +66932.241,-0.248731686 +66932.261,-0.216840453 +66932.281,-0.178583345 +66932.301,-0.166285373 +66932.321,-0.162993273 +66932.341,-0.178218246 +66932.361,-0.18387977 +66932.381,-0.195438203 +66932.401,-0.223116921 +66932.421,-0.259434698 +66932.441,-0.287431172 +66932.461,-0.336374799 +66932.481,-0.400731408 +66932.501,-0.445549392 +66932.521,-0.497854679 +66932.541,-0.546065767 +66932.561,-0.583873855 +66932.581,-0.622354967 +66932.601,-0.66120731 +66932.621,-0.704612693 +66932.641,-0.722958262 +66932.661,-0.730201172 +66932.681,-0.753309021 +66932.70099,-0.747176182 +66932.721,-0.735729965 +66932.741,-0.717903251 +66932.761,-0.686422465 +66932.781,-0.660775926 +66932.801,-0.626985491 +66932.821,-0.583440812 +66932.841,-0.539537478 +66932.861,-0.491994237 +66932.881,-0.426522528 +66932.901,-0.372225936 +66932.921,-0.339300941 +66932.941,-0.291613895 +66932.961,-0.257289994 +66932.981,-0.223134986 +66933.001,-0.182012176 +66933.021,-0.185438195 +66933.041,-0.185977966 +66933.061,-0.172033767 +66933.081,-0.177341601 +66933.101,-0.196500751 +66933.121,-0.223516391 +66933.141,-0.23733898 +66933.161,-0.275037354 +66933.181,-0.335384853 +66933.201,-0.370957633 +66933.221,-0.412993183 +66933.241,-0.476318297 +66933.261,-0.530163047 +66933.281,-0.578152777 +66933.301,-0.618328903 +66933.321,-0.641026161 +66933.341,-0.660609351 +66933.361,-0.693098702 +66933.381,-0.723110593 +66933.401,-0.736729993 +66933.421,-0.742667164 +66933.441,-0.72979378 +66933.461,-0.716417037 +66933.481,-0.706192927 +66933.501,-0.674842617 +66933.521,-0.643695366 +66933.541,-0.605154157 +66933.561,-0.546617207 +66933.581,-0.499452911 +66933.601,-0.463351966 +66933.621,-0.404168901 +66933.641,-0.354380327 +66933.661,-0.327033507 +66933.681,-0.279359768 +66933.701,-0.247289074 +66933.721,-0.220192018 +66933.741,-0.182628112 +66933.761,-0.166624983 +66933.781,-0.174890332 +66933.801,-0.17858463 +66933.82101,-0.181921141 +66933.841,-0.199760926 +66933.861,-0.229310183 +66933.881,-0.277825399 +66933.901,-0.317691247 +66933.921,-0.341725952 +66933.941,-0.401988446 +66933.961,-0.454910581 +66933.981,-0.489449998 +66934.001,-0.551825476 +66934.021,-0.59470402 +66934.041,-0.627445492 +66934.061,-0.674685349 +66934.081,-0.689359214 +66934.101,-0.710462651 +66934.121,-0.730694678 +66934.141,-0.726046443 +66934.161,-0.726566712 +66934.181,-0.720928371 +66934.201,-0.702924563 +66934.221,-0.687428364 +66934.241,-0.66574772 +66934.261,-0.62522341 +66934.281,-0.586250274 +66934.301,-0.546626436 +66934.321,-0.495749658 +66934.341,-0.443490806 +66934.361,-0.387003509 +66934.381,-0.334165162 +66934.401,-0.291814942 +66934.421,-0.255167669 +66934.441,-0.223969305 +66934.461,-0.204160889 +66934.481,-0.179217655 +66934.501,-0.175168961 +66934.521,-0.181536627 +66934.541,-0.184893842 +66934.561,-0.214727253 +66934.581,-0.235915379 +66934.601,-0.256527324 +66934.621,-0.287227513 +66934.641,-0.331711641 +66934.661,-0.36913608 +66934.681,-0.414692024 +66934.701,-0.472658904 +66934.721,-0.522220252 +66934.741,-0.572632181 +66934.761,-0.61277743 +66934.781,-0.641707912 +66934.801,-0.673250455 +66934.821,-0.696503879 +66934.841,-0.719532216 +66934.861,-0.725588038 +66934.881,-0.731261304 +66934.901,-0.731745901 +66934.921,-0.709050811 +66934.941,-0.68151609 +66934.961,-0.642734 +66934.981,-0.623838207 +66935.001,-0.599372344 +66935.021,-0.552754299 +66935.041,-0.495639716 +66935.061,-0.443824792 +66935.081,-0.407639054 +66935.101,-0.358547726 +66935.121,-0.310713933 +66935.141,-0.281496761 +66935.161,-0.253958743 +66935.181,-0.211308097 +66935.201,-0.198606369 +66935.221,-0.19497038 +66935.241,-0.195940626 +66935.261,-0.193339396 +66935.281,-0.191658398 +66935.301,-0.224713841 +66935.321,-0.23913641 +66935.341,-0.267747385 +66935.361,-0.320483589 +66935.381,-0.364257352 +66935.401,-0.404412044 +66935.421,-0.460419003 +66935.441,-0.507688913 +66935.461,-0.546469064 +66935.481,-0.58239316 +66935.501,-0.620151282 +66935.521,-0.643775009 +66935.541,-0.686169838 +66935.561,-0.699166953 +66935.581,-0.710335382 +66935.601,-0.71517213 +66935.621,-0.710894709 +66935.641,-0.716615611 +66935.661,-0.700965424 +66935.681,-0.660715223 +66935.701,-0.61765395 +66935.721,-0.602464665 +66935.741,-0.574008188 +66935.761,-0.527626973 +66935.781,-0.475332577 +66935.801,-0.427037377 +66935.821,-0.389845196 +66935.841,-0.349903449 +66935.861,-0.298665635 +66935.881,-0.263623621 +66935.901,-0.230749914 +66935.921,-0.205384021 +66935.941,-0.192624454 +66935.961,-0.1935711 +66935.981,-0.191875004 +66936.001,-0.198349727 +66936.021,-0.224751181 +66936.041,-0.234056018 +66936.061,-0.247129372 +66936.081,-0.298417228 +66936.101,-0.353353573 +66936.121,-0.390218775 +66936.141,-0.421121813 +66936.161,-0.470213287 +66936.181,-0.521608163 +66936.201,-0.573035545 +66936.221,-0.609717439 +66936.241,-0.630899761 +66936.261,-0.662464609 +66936.281,-0.689521037 +66936.301,-0.70951782 +66936.321,-0.721687603 +66936.341,-0.71095122 +66936.361,-0.712644784 +66936.381,-0.691752911 +66936.401,-0.677171432 +66936.421,-0.663339956 +66936.441,-0.629192604 +66936.461,-0.597141926 +66936.481,-0.543858614 +66936.501,-0.494770538 +66936.521,-0.448862967 +66936.541,-0.411338094 +66936.561,-0.35559214 +66936.581,-0.319695125 +66936.601,-0.291045125 +66936.621,-0.257801642 +66936.641,-0.224829574 +66936.661,-0.218495938 +66936.681,-0.193221845 +66936.701,-0.201461555 +66936.721,-0.202423746 +66936.741,-0.195237663 +66936.761,-0.225863522 +66936.781,-0.266328733 +66936.801,-0.286332202 +66936.821,-0.321935646 +66936.841,-0.363021993 +66936.861,-0.410109989 +66936.881,-0.450390925 +66936.901,-0.493332187 +66936.921,-0.540822029 +66936.941,-0.577865196 +66936.961,-0.632944891 +66936.981,-0.657127226 +66937.001,-0.66993322 +66937.021,-0.694241423 +66937.041,-0.708133258 +66937.061,-0.710003952 +66937.081,-0.718945763 +66937.101,-0.703279732 +66937.121,-0.684387762 +66937.141,-0.663296078 +66937.161,-0.632407724 +66937.181,-0.5901664 +66937.201,-0.55275305 +66937.221,-0.5134804 +66937.241,-0.47064338 +66937.261,-0.411320517 +66937.281,-0.371725288 +66937.301,-0.351038488 +66937.321,-0.302363949 +66937.341,-0.252486326 +66937.361,-0.245587356 +66937.381,-0.225295205 +66937.401,-0.206388045 +66937.421,-0.210494711 +66937.441,-0.204479393 +66937.461,-0.212978684 +66937.481,-0.232344447 +66937.501,-0.250885997 +66937.52099,-0.260437019 +66937.541,-0.298874396 +66937.561,-0.343796117 +66937.581,-0.389435299 +66937.601,-0.42643608 +66937.621,-0.472701709 +66937.641,-0.526310344 +66937.661,-0.575320257 +66937.681,-0.615144157 +66937.701,-0.636260418 +66937.721,-0.659760829 +66937.741,-0.686511601 +66937.761,-0.696959602 +66937.781,-0.701205612 +66937.801,-0.718335688 +66937.821,-0.707675474 +66937.841,-0.688423126 +66937.861,-0.66737491 +66937.881,-0.633968995 +66937.901,-0.607441808 +66937.921,-0.572321461 +66937.941,-0.52701 +66937.961,-0.485816044 +66937.981,-0.42441171 +66938.001,-0.399905444 +66938.021,-0.362075126 +66938.041,-0.31657429 +66938.061,-0.279868276 +66938.081,-0.25925448 +66938.101,-0.236828343 +66938.121,-0.21144495 +66938.141,-0.203068444 +66938.161,-0.201797576 +66938.181,-0.211548896 +66938.201,-0.216224777 +66938.221,-0.235940379 +66938.241,-0.279258614 +66938.261,-0.306686847 +66938.281,-0.336623972 +66938.301,-0.381020164 +66938.321,-0.434456855 +66938.341,-0.48232771 +66938.361,-0.5060098 +66938.381,-0.545437808 +66938.401,-0.58353377 +66938.421,-0.621685123 +66938.441,-0.654582112 +66938.461,-0.680003523 +66938.481,-0.696027062 +66938.501,-0.701369451 +66938.521,-0.695009116 +66938.541,-0.704717994 +66938.561,-0.692039594 +66938.581,-0.660903167 +66938.601,-0.64288942 +66938.621,-0.615968832 +66938.64101,-0.569656025 +66938.661,-0.549979756 +66938.681,-0.500890306 +66938.701,-0.459954961 +66938.721,-0.410499011 +66938.741,-0.37665823 +66938.761,-0.32259289 +66938.781,-0.286404699 +66938.801,-0.283022354 +66938.821,-0.252274135 +66938.841,-0.244547812 +66938.861,-0.217020043 +66938.881,-0.222623111 +66938.901,-0.216149842 +66938.921,-0.227489177 +66938.941,-0.22745438 +66938.961,-0.269607751 +66938.981,-0.294852816 +66939.001,-0.32666589 +66939.021,-0.36071409 +66939.041,-0.404913221 +66939.061,-0.452147689 +66939.081,-0.487072589 +66939.101,-0.524478403 +66939.121,-0.571408201 +66939.141,-0.596380881 +66939.161,-0.62338634 +66939.181,-0.654856328 +66939.201,-0.685313847 +66939.221,-0.699755329 +66939.241,-0.697179138 +66939.261,-0.702170065 +66939.281,-0.692364604 +66939.301,-0.666776403 +66939.321,-0.657052417 +66939.341,-0.629549662 +66939.361,-0.600214672 +66939.381,-0.558418892 +66939.401,-0.516153987 +66939.421,-0.482756655 +66939.441,-0.437669131 +66939.461,-0.386991687 +66939.481,-0.363728581 +66939.501,-0.323682876 +66939.521,-0.284474926 +66939.541,-0.261025895 +66939.561,-0.234903792 +66939.581,-0.219217725 +66939.601,-0.213220846 +66939.621,-0.212327424 +66939.641,-0.210332151 +66939.661,-0.241650768 +66939.681,-0.250408714 +66939.701,-0.273180195 +66939.721,-0.303515406 +66939.741,-0.342522588 +66939.761,-0.359990655 +66939.781,-0.413733569 +66939.801,-0.474564541 +66939.821,-0.513823246 +66939.841,-0.543279544 +66939.861,-0.567341906 +66939.881,-0.625668839 +66939.901,-0.652031645 +66939.921,-0.652984412 +66939.941,-0.680496276 +66939.961,-0.695648961 +66939.981,-0.696019465 +66940.001,-0.681977484 +66940.021,-0.679655582 +66940.041,-0.663969238 +66940.061,-0.641976562 +66940.081,-0.608774991 +66940.101,-0.564650179 +66940.121,-0.54672419 +66940.141,-0.515612624 +66940.161,-0.463861406 +66940.181,-0.412704027 +66940.201,-0.383258192 +66940.221,-0.352793124 +66940.241,-0.304438736 +66940.261,-0.270755464 +66940.281,-0.251784485 +66940.301,-0.23097601 +66940.321,-0.224304988 +66940.341,-0.216262323 +66940.361,-0.21926064 +66940.381,-0.229594135 +66940.401,-0.243375787 +66940.421,-0.287151064 +66940.441,-0.306006633 +66940.461,-0.334649189 +66940.481,-0.368080121 +66940.501,-0.411323827 +66940.521,-0.45598141 +66940.541,-0.49528338 +66940.561,-0.529329324 +66940.581,-0.576639048 +66940.601,-0.621674438 +66940.621,-0.626872929 +66940.641,-0.65507617 +66940.661,-0.684831683 +66940.681,-0.684465415 +66940.701,-0.679406343 +66940.721,-0.688822836 +66940.741,-0.680170936 +66940.761,-0.66314142 +66940.781,-0.648584259 +66940.801,-0.628919418 +66940.821,-0.590682821 +66940.841,-0.55009455 +66940.861,-0.506942103 +66940.881,-0.462025039 +66940.901,-0.427329491 +66940.921,-0.378066371 +66940.941,-0.340620149 +66940.961,-0.316888033 +66940.981,-0.272594594 +66941.001,-0.258203465 +66941.021,-0.265138295 +66941.041,-0.243405856 +66941.061,-0.219497408 +66941.081,-0.220383889 +66941.101,-0.239548662 +66941.121,-0.250635215 +66941.141,-0.259887479 +66941.161,-0.287549496 +66941.181,-0.332338414 +66941.201,-0.365370099 +66941.221,-0.406145567 +66941.241,-0.445970135 +66941.261,-0.474666643 +66941.281,-0.517683418 +66941.301,-0.559164684 +66941.321,-0.593066722 +66941.341,-0.624986053 +66941.361,-0.649656817 +66941.381,-0.669969554 +66941.401,-0.677834091 +66941.421,-0.677867331 +66941.441,-0.694425086 +66941.461,-0.686849201 +66941.481,-0.665858861 +66941.501,-0.652594356 +66941.521,-0.615552842 +66941.541,-0.595224901 +66941.561,-0.566254928 +66941.581,-0.513517636 +66941.601,-0.479450027 +66941.621,-0.443578757 +66941.641,-0.40463807 +66941.661,-0.367202465 +66941.681,-0.333704321 +66941.701,-0.303910499 +66941.721,-0.276620681 +66941.741,-0.250585025 +66941.761,-0.240084092 +66941.781,-0.226974607 +66941.801,-0.226733479 +66941.821,-0.224937353 +66941.841,-0.234758485 +66941.861,-0.270333215 +66941.881,-0.283810472 +66941.901,-0.306018492 +66941.921,-0.341739945 +66941.941,-0.375472228 +66941.961,-0.413830393 +66941.981,-0.456334074 +66942.001,-0.490804936 +66942.021,-0.535593431 +66942.041,-0.578586466 +66942.061,-0.603471832 +66942.081,-0.629219833 +66942.101,-0.660044335 +66942.121,-0.672695951 +66942.141,-0.678700737 +66942.161,-0.678559975 +66942.181,-0.673417611 +66942.201,-0.66568181 +66942.221,-0.650577787 +66942.241,-0.625302061 +66942.261,-0.607650821 +66942.281,-0.586450903 +66942.301,-0.542177443 +66942.321,-0.500322327 +66942.34099,-0.469172376 +66942.361,-0.423324793 +66942.381,-0.373762575 +66942.401,-0.341180157 +66942.421,-0.310865548 +66942.441,-0.285042525 +66942.461,-0.268332976 +66942.481,-0.251401446 +66942.501,-0.227139988 +66942.521,-0.215353601 +66942.541,-0.223580609 +66942.561,-0.235695212 +66942.581,-0.250275919 +66942.601,-0.273863237 +66942.621,-0.292493634 +66942.641,-0.318050978 +66942.661,-0.348405706 +66942.681,-0.389176699 +66942.701,-0.439480122 +66942.721,-0.481362188 +66942.741,-0.506973251 +66942.761,-0.54710181 +66942.781,-0.589147885 +66942.801,-0.614694399 +66942.821,-0.637250268 +66942.841,-0.650238403 +66942.861,-0.655378996 +66942.881,-0.667342988 +66942.901,-0.677229677 +66942.921,-0.665843553 +66942.941,-0.654188861 +66942.961,-0.64092763 +66942.981,-0.625978246 +66943.001,-0.596030512 +66943.021,-0.551705833 +66943.041,-0.518803407 +66943.061,-0.48483354 +66943.081,-0.44431006 +66943.101,-0.412202471 +66943.121,-0.370650306 +66943.141,-0.333906681 +66943.161,-0.307437222 +66943.181,-0.267702683 +66943.201,-0.249194797 +66943.221,-0.231807254 +66943.241,-0.227637186 +66943.261,-0.232060628 +66943.281,-0.231241939 +66943.301,-0.250473097 +66943.321,-0.261044552 +66943.341,-0.284845714 +66943.361,-0.31396121 +66943.381,-0.351179848 +66943.401,-0.379621087 +66943.421,-0.429346857 +66943.441,-0.456275281 +66943.46101,-0.493997198 +66943.481,-0.54372007 +66943.501,-0.592148988 +66943.521,-0.603614955 +66943.541,-0.617378658 +66943.561,-0.65334627 +66943.581,-0.666203796 +66943.601,-0.66838734 +66943.621,-0.682528812 +66943.641,-0.666081566 +66943.661,-0.649586425 +66943.681,-0.648013361 +66943.701,-0.621309229 +66943.721,-0.590458286 +66943.741,-0.54993788 +66943.761,-0.518242962 +66943.781,-0.483099235 +66943.801,-0.452749 +66943.821,-0.407363277 +66943.841,-0.364398209 +66943.861,-0.322569952 +66943.881,-0.302835287 +66943.901,-0.284877491 +66943.921,-0.256447165 +66943.941,-0.240292473 +66943.961,-0.230384065 +66943.981,-0.242615954 +66944.001,-0.242098071 +66944.021,-0.250222867 +66944.041,-0.268864581 +66944.061,-0.302051238 +66944.081,-0.320577742 +66944.101,-0.345114224 +66944.121,-0.375055975 +66944.141,-0.418827983 +66944.161,-0.468408711 +66944.181,-0.526149607 +66944.201,-0.545300422 +66944.221,-0.568265412 +66944.241,-0.602516968 +66944.261,-0.631835471 +66944.281,-0.643458913 +66944.301,-0.659831217 +66944.321,-0.660746236 +66944.341,-0.662397133 +66944.361,-0.672497128 +66944.381,-0.649041211 +66944.401,-0.627862092 +66944.421,-0.613053361 +66944.441,-0.608411328 +66944.461,-0.562859649 +66944.481,-0.527058286 +66944.501,-0.501418167 +66944.521,-0.453781403 +66944.541,-0.42858549 +66944.561,-0.390432941 +66944.581,-0.343764422 +66944.601,-0.318498612 +66944.621,-0.292421385 +66944.641,-0.276624242 +66944.661,-0.26783904 +66944.681,-0.256027233 +66944.701,-0.229158596 +66944.721,-0.244022045 +66944.741,-0.256784127 +66944.761,-0.262657935 +66944.781,-0.287581691 +66944.801,-0.311777093 +66944.821,-0.340156991 +66944.841,-0.361896723 +66944.861,-0.400259262 +66944.881,-0.452416022 +66944.901,-0.48073525 +66944.921,-0.502027104 +66944.941,-0.547238722 +66944.961,-0.573541154 +66944.981,-0.614262487 +66945.001,-0.633475092 +66945.021,-0.643333567 +66945.041,-0.660449242 +66945.061,-0.671121981 +66945.081,-0.667579404 +66945.101,-0.657631819 +66945.121,-0.642344091 +66945.141,-0.624346756 +66945.161,-0.616012898 +66945.181,-0.580498783 +66945.201,-0.542516925 +66945.221,-0.506666068 +66945.241,-0.473896475 +66945.261,-0.447394168 +66945.281,-0.413284538 +66945.301,-0.373870658 +66945.321,-0.326454717 +66945.341,-0.300526593 +66945.361,-0.290643892 +66945.381,-0.265557713 +66945.401,-0.248921844 +66945.421,-0.25706287 +66945.441,-0.258673178 +66945.461,-0.252409702 +66945.481,-0.246027293 +66945.501,-0.281071099 +66945.521,-0.301159752 +66945.541,-0.323858204 +66945.561,-0.355056186 +66945.581,-0.384253885 +66945.601,-0.420031397 +66945.621,-0.458100165 +66945.641,-0.511055497 +66945.661,-0.530078651 +66945.681,-0.570818653 +66945.701,-0.588831418 +66945.721,-0.613098525 +66945.741,-0.631887453 +66945.761,-0.64456445 +66945.781,-0.6457276 +66945.801,-0.661114011 +66945.821,-0.645450017 +66945.841,-0.645094346 +66945.861,-0.645408819 +66945.881,-0.617210822 +66945.901,-0.589360736 +66945.921,-0.561391752 +66945.941,-0.515836738 +66945.961,-0.489181088 +66945.981,-0.462996594 +66946.001,-0.415374505 +66946.021,-0.387493158 +66946.041,-0.350653466 +66946.061,-0.318737501 +66946.081,-0.30253621 +66946.101,-0.280055952 +66946.121,-0.257151068 +66946.141,-0.251545033 +66946.161,-0.254256803 +66946.181,-0.259593497 +66946.201,-0.27207561 +66946.221,-0.280246123 +66946.241,-0.284812836 +66946.261,-0.325705364 +66946.281,-0.35813148 +66946.301,-0.366738137 +66946.321,-0.414858358 +66946.341,-0.455714711 +66946.361,-0.479188824 +66946.381,-0.51487345 +66946.401,-0.558777988 +66946.421,-0.576843909 +66946.441,-0.601225311 +66946.461,-0.616984904 +66946.481,-0.629605353 +66946.501,-0.653438853 +66946.521,-0.654469208 +66946.541,-0.648847602 +66946.561,-0.647362491 +66946.581,-0.630856981 +66946.601,-0.610461999 +66946.621,-0.592420232 +66946.641,-0.567458242 +66946.661,-0.538689792 +66946.681,-0.49596872 +66946.701,-0.4602706 +66946.721,-0.438884816 +66946.741,-0.396374485 +66946.761,-0.364924271 +66946.781,-0.343430412 +66946.801,-0.30907959 +66946.821,-0.287215746 +66946.841,-0.273864801 +66946.861,-0.264048183 +66946.881,-0.259119143 +66946.901,-0.252696339 +66946.921,-0.266947505 +66946.941,-0.285846265 +66946.961,-0.28652766 +66946.981,-0.311079545 +66947.001,-0.333589192 +66947.021,-0.368825821 +66947.041,-0.403813686 +66947.061,-0.431108502 +66947.081,-0.474692837 +66947.101,-0.513544053 +66947.121,-0.539878619 +66947.141,-0.571771226 +66947.161,-0.599393157 +66947.181,-0.625551436 +66947.201,-0.621981113 +66947.221,-0.642906445 +66947.241,-0.641720972 +66947.261,-0.646613708 +66947.281,-0.652415047 +66947.301,-0.639867732 +66947.321,-0.614191194 +66947.341,-0.593747409 +66947.361,-0.5686737 +66947.381,-0.543589382 +66947.401,-0.51284811 +66947.421,-0.47827984 +66947.441,-0.431875834 +66947.461,-0.415662764 +66947.481,-0.385030147 +66947.501,-0.353185965 +66947.521,-0.332907667 +66947.541,-0.313732701 +66947.561,-0.282356941 +66947.581,-0.264446697 +66947.601,-0.264165307 +66947.621,-0.264413032 +66947.641,-0.266367318 +66947.661,-0.261339945 +66947.681,-0.292454804 +66947.701,-0.310627461 +66947.721,-0.340429624 +66947.741,-0.368630793 +66947.761,-0.39628012 +66947.781,-0.423434524 +66947.801,-0.445586788 +66947.821,-0.503542608 +66947.841,-0.536450793 +66947.861,-0.546835539 +66947.881,-0.577751168 +66947.901,-0.600734345 +66947.921,-0.619514983 +66947.941,-0.642214319 +66947.961,-0.639420554 +66947.981,-0.642826068 +66948.001,-0.645420503 +66948.021,-0.63528983 +66948.041,-0.615516882 +66948.061,-0.618963851 +66948.081,-0.605883123 +66948.101,-0.571768335 +66948.121,-0.533294275 +66948.141,-0.502868431 +66948.161,-0.478613064 +66948.181,-0.427477507 +66948.201,-0.396617846 +66948.221,-0.37094205 +66948.241,-0.343051144 +66948.261,-0.317440495 +66948.28101,-0.301464904 +66948.301,-0.286388732 +66948.321,-0.272065841 +66948.341,-0.261499526 +66948.361,-0.274746691 +66948.381,-0.270122768 +66948.401,-0.266374005 +66948.421,-0.297326643 +66948.441,-0.314811211 +66948.461,-0.342630872 +66948.481,-0.38129713 +66948.501,-0.409717773 +66948.521,-0.427989227 +66948.541,-0.470804285 +66948.561,-0.502635961 +66948.581,-0.532566358 +66948.601,-0.569447916 +66948.621,-0.58349955 +66948.641,-0.601264263 +66948.661,-0.608018165 +66948.681,-0.633152034 +66948.701,-0.643685965 +66948.721,-0.636723944 +66948.741,-0.640168878 +66948.761,-0.639108344 +66948.781,-0.619804734 +66948.801,-0.593961696 +66948.821,-0.58355306 +66948.841,-0.54158983 +66948.861,-0.511783048 +66948.881,-0.490448295 +66948.901,-0.463000588 +66948.921,-0.413324137 +66948.941,-0.380450635 +66948.961,-0.362459064 +66948.981,-0.33630198 +66949.001,-0.322928727 +66949.021,-0.297658487 +66949.041,-0.286502263 +66949.061,-0.272638727 +66949.081,-0.272847188 +66949.101,-0.26809093 +66949.121,-0.278885833 +66949.141,-0.285175226 +66949.161,-0.307368165 +66949.181,-0.330411557 +66949.201,-0.36194074 +66949.221,-0.383967007 +66949.241,-0.41666507 +66949.261,-0.448081815 +66949.281,-0.494313008 +66949.301,-0.524512135 +66949.321,-0.538257592 +66949.341,-0.573749874 +66949.361,-0.600991539 +66949.381,-0.620922347 +66949.401,-0.636126573 +66949.421,-0.633181589 +66949.441,-0.640299436 +66949.461,-0.638513805 +66949.481,-0.618787227 +66949.501,-0.615661633 +66949.521,-0.600306809 +66949.541,-0.589857102 +66949.561,-0.549954695 +66949.581,-0.533632122 +66949.601,-0.505586802 +66949.621,-0.450565292 +66949.641,-0.412780185 +66949.661,-0.390100409 +66949.681,-0.36821293 +66949.701,-0.334868819 +66949.721,-0.312663712 +66949.741,-0.296056204 +66949.761,-0.279152828 +66949.781,-0.274389491 +66949.801,-0.256407381 +66949.821,-0.277626567 +66949.841,-0.291660843 +66949.861,-0.3002906 +66949.881,-0.321154393 +66949.901,-0.34077445 +66949.921,-0.363075653 +66949.941,-0.402098647 +66949.961,-0.417118136 +66949.981,-0.453516248 +66950.001,-0.484098748 +66950.021,-0.507054937 +66950.041,-0.546974313 +66950.061,-0.579434171 +66950.081,-0.59875363 +66950.101,-0.593008296 +66950.121,-0.628003976 +66950.141,-0.654269519 +66950.161,-0.636104711 +66950.181,-0.639074509 +66950.201,-0.633603377 +66950.221,-0.620044284 +66950.241,-0.594338139 +66950.261,-0.57551579 +66950.281,-0.570173634 +66950.301,-0.526569072 +66950.321,-0.496358023 +66950.341,-0.460861881 +66950.361,-0.432226388 +66950.381,-0.391520123 +66950.401,-0.370257456 +66950.421,-0.354157966 +66950.441,-0.329017924 +66950.461,-0.295059434 +66950.481,-0.276589226 +66950.501,-0.270285792 +66950.521,-0.279778101 +66950.541,-0.27602706 +66950.561,-0.278851165 +66950.581,-0.297819181 +66950.601,-0.308024808 +66950.621,-0.325422083 +66950.641,-0.360120644 +66950.661,-0.398994264 +66950.681,-0.430332571 +66950.701,-0.460747708 +66950.721,-0.465949405 +66950.741,-0.49624395 +66950.761,-0.539920617 +66950.781,-0.570401846 +66950.801,-0.587622792 +66950.821,-0.606537563 +66950.841,-0.621980311 +66950.861,-0.626907323 +66950.881,-0.63497817 +66950.901,-0.623742967 +66950.921,-0.624674188 +66950.941,-0.623995742 +66950.961,-0.605530453 +66950.981,-0.589106033 +66951.001,-0.559014023 +66951.021,-0.529790058 +66951.041,-0.501135739 +66951.061,-0.472498587 +66951.081,-0.439725756 +66951.101,-0.402817159 +66951.121,-0.38480928 +66951.141,-0.365958993 +66951.161,-0.344054112 +66951.181,-0.297441529 +66951.201,-0.296270333 +66951.221,-0.293100127 +66951.241,-0.282463249 +66951.261,-0.255387302 +66951.281,-0.266754192 +66951.301,-0.309188173 +66951.321,-0.307392237 +66951.341,-0.314293879 +66951.361,-0.337411335 +66951.381,-0.36965343 +66951.401,-0.41128892 +66951.421,-0.429827812 +66951.441,-0.451693074 +66951.461,-0.490381995 +66951.481,-0.514156602 +66951.501,-0.55714278 +66951.521,-0.571999525 +66951.541,-0.584532461 +66951.561,-0.614855828 +66951.581,-0.636877835 +66951.601,-0.626637938 +66951.621,-0.620315395 +66951.641,-0.622825593 +66951.661,-0.616945812 +66951.681,-0.604059866 +66951.701,-0.602976682 +66951.721,-0.566906159 +66951.741,-0.540489468 +66951.761,-0.524684666 +66951.781,-0.491929254 +66951.801,-0.463288389 +66951.821,-0.424800305 +66951.841,-0.404116166 +66951.861,-0.381423955 +66951.881,-0.348504945 +66951.901,-0.316126838 +66951.921,-0.30425254 +66951.941,-0.303241086 +66951.961,-0.277761378 +66951.981,-0.27185597 +66952.001,-0.290514207 +66952.021,-0.302877036 +66952.041,-0.316152989 +66952.061,-0.308588922 +66952.081,-0.334093514 +66952.101,-0.366162041 +66952.121,-0.394270836 +66952.141,-0.428915257 +66952.161,-0.43962753 +66952.181,-0.465404023 +66952.201,-0.512607947 +66952.221,-0.550965 +66952.241,-0.563741516 +66952.261,-0.586731881 +66952.281,-0.605563951 +66952.301,-0.627663331 +66952.321,-0.6384785 +66952.341,-0.616904794 +66952.361,-0.621038186 +66952.381,-0.626165352 +66952.401,-0.625303723 +66952.421,-0.588863282 +66952.441,-0.573276844 +66952.461,-0.551119974 +66952.481,-0.529463795 +66952.501,-0.502522088 +66952.521,-0.47096655 +66952.541,-0.434412544 +66952.561,-0.400099965 +66952.581,-0.383750443 +66952.601,-0.356151317 +66952.621,-0.328619167 +66952.641,-0.321074555 +66952.661,-0.316846443 +66952.681,-0.296258845 +66952.701,-0.291959496 +66952.721,-0.268085216 +66952.741,-0.283088282 +66952.761,-0.312995525 +66952.781,-0.319031958 +66952.801,-0.329223766 +66952.821,-0.35944588 +66952.841,-0.394282111 +66952.861,-0.422954849 +66952.881,-0.434163306 +66952.901,-0.459311979 +66952.921,-0.508059306 +66952.941,-0.545563743 +66952.961,-0.565589423 +66952.981,-0.583142516 +66953.001,-0.600982877 +66953.021,-0.621356713 +66953.041,-0.637821236 +66953.061,-0.626958066 +66953.081,-0.621702066 +66953.10099,-0.62587249 +66953.121,-0.626346766 +66953.141,-0.59477737 +66953.161,-0.567903313 +66953.181,-0.559592985 +66953.201,-0.543732676 +66953.221,-0.520234371 +66953.241,-0.476002165 +66953.261,-0.43847573 +66953.281,-0.412428402 +66953.301,-0.38186298 +66953.321,-0.365876456 +66953.341,-0.322653924 +66953.361,-0.31045813 +66953.381,-0.306069642 +66953.401,-0.299923617 +66953.421,-0.293562421 +66953.441,-0.277088567 +66953.461,-0.293538988 +66953.481,-0.311038594 +66953.501,-0.315752898 +66953.521,-0.320416617 +66953.541,-0.34094975 +66953.561,-0.368149778 +66953.581,-0.407469749 +66953.601,-0.425029846 +66953.621,-0.445293693 +66953.641,-0.486888348 +66953.661,-0.521609244 +66953.681,-0.540427024 +66953.701,-0.55927217 +66953.721,-0.589820832 +66953.741,-0.609408171 +66953.761,-0.617431314 +66953.781,-0.614226898 +66953.801,-0.62212734 +66953.821,-0.627670058 +66953.841,-0.626584137 +66953.861,-0.608512232 +66953.881,-0.588347014 +66953.901,-0.561575565 +66953.921,-0.556135915 +66953.941,-0.541222916 +66953.961,-0.494066383 +66953.981,-0.457493934 +66954.001,-0.436578208 +66954.021,-0.423935745 +66954.041,-0.397897566 +66954.061,-0.352947774 +66954.081,-0.320654795 +66954.101,-0.325207914 +66954.121,-0.311691448 +66954.141,-0.29254829 +66954.161,-0.280132184 +66954.181,-0.290665296 +66954.201,-0.305297585 +66954.221,-0.315947407 +66954.241,-0.307383378 +66954.261,-0.327405434 +66954.281,-0.364517733 +66954.301,-0.388720767 +66954.321,-0.4205583 +66954.341,-0.434436767 +66954.361,-0.471648798 +66954.381,-0.516501864 +66954.401,-0.539889913 +66954.421,-0.555125879 +66954.441,-0.570575499 +66954.461,-0.590803302 +66954.481,-0.612721649 +66954.501,-0.622635211 +66954.521,-0.617892647 +66954.541,-0.620739334 +66954.561,-0.620932534 +66954.581,-0.617681795 +66954.601,-0.594687055 +66954.621,-0.570167467 +66954.641,-0.558095413 +66954.661,-0.532881014 +66954.681,-0.509732457 +66954.701,-0.480571801 +66954.721,-0.439321244 +66954.741,-0.419043189 +66954.761,-0.3834281 +66954.781,-0.35298324 +66954.801,-0.336977674 +66954.821,-0.324712741 +66954.841,-0.324392071 +66954.861,-0.31178339 +66954.881,-0.298325012 +66954.901,-0.290633653 +66954.921,-0.301712299 +66954.941,-0.325524406 +66954.961,-0.328468619 +66954.981,-0.337954197 +66955.001,-0.362183026 +66955.021,-0.384393491 +66955.041,-0.40954948 +66955.061,-0.447241581 +66955.081,-0.476462207 +66955.101,-0.488383558 +66955.121,-0.51361031 +66955.141,-0.552832384 +66955.161,-0.56235327 +66955.181,-0.583620877 +66955.201,-0.601354398 +66955.221,-0.608543034 +66955.241,-0.606166433 +66955.261,-0.614379685 +66955.281,-0.620218565 +66955.301,-0.604923532 +66955.321,-0.589675598 +66955.341,-0.582608426 +66955.361,-0.571425126 +66955.381,-0.541384319 +66955.401,-0.502650347 +66955.421,-0.484008167 +66955.441,-0.464959486 +66955.461,-0.435337228 +66955.481,-0.404071313 +66955.501,-0.370138486 +66955.521,-0.355465674 +66955.541,-0.335436854 +66955.561,-0.318749496 +66955.581,-0.307861339 +66955.601,-0.284966541 +66955.621,-0.295798842 +66955.641,-0.302802495 +66955.661,-0.305182922 +66955.681,-0.310507376 +66955.701,-0.339838177 +66955.721,-0.363183492 +66955.741,-0.373207027 +66955.761,-0.417800562 +66955.781,-0.435260746 +66955.801,-0.450133467 +66955.821,-0.484612266 +66955.841,-0.520222151 +66955.861,-0.53022534 +66955.881,-0.557879889 +66955.901,-0.577323391 +66955.921,-0.608315798 +66955.941,-0.620136284 +66955.961,-0.622733712 +66955.981,-0.620970712 +66956.001,-0.610435699 +66956.021,-0.58996579 +66956.041,-0.592666867 +66956.061,-0.567124197 +66956.081,-0.564108067 +66956.101,-0.534601985 +66956.121,-0.51916972 +66956.141,-0.491449785 +66956.161,-0.46959496 +66956.181,-0.435368372 +66956.201,-0.39412301 +66956.221,-0.364097156 +66956.241,-0.344050516 +66956.261,-0.333515365 +66956.281,-0.325485889 +66956.301,-0.296671718 +66956.321,-0.293887508 +66956.341,-0.297429681 +66956.361,-0.290224557 +66956.381,-0.295583355 +66956.401,-0.312380748 +66956.421,-0.325956481 +66956.441,-0.358235688 +66956.461,-0.386079135 +66956.481,-0.403069979 +66956.501,-0.424097933 +66956.521,-0.449492992 +66956.541,-0.485604897 +66956.561,-0.506404601 +66956.581,-0.524337529 +66956.601,-0.557284801 +66956.621,-0.582712164 +66956.641,-0.59227136 +66956.661,-0.581778155 +66956.681,-0.603432924 +66956.701,-0.616038767 +66956.721,-0.606535877 +66956.741,-0.610391677 +66956.761,-0.603671271 +66956.781,-0.57430751 +66956.801,-0.56893432 +66956.821,-0.541788568 +66956.841,-0.523789014 +66956.861,-0.501202831 +66956.881,-0.468364196 +66956.901,-0.433815001 +66956.921,-0.414115915 +66956.941,-0.386404834 +66956.961,-0.357182766 +66956.981,-0.33630098 +66957.001,-0.335311854 +66957.021,-0.329451446 +66957.041,-0.313300826 +66957.061,-0.301125062 +66957.081,-0.323401783 +66957.101,-0.331685786 +66957.121,-0.316464754 +66957.141,-0.330997625 +66957.161,-0.345613133 +66957.181,-0.367244973 +66957.201,-0.380680841 +66957.221,-0.420289826 +66957.241,-0.443800579 +66957.261,-0.46667665 +66957.281,-0.49397617 +66957.301,-0.50808783 +66957.321,-0.535214695 +66957.341,-0.539089529 +66957.361,-0.583516095 +66957.381,-0.587780707 +66957.401,-0.588444247 +66957.421,-0.598003696 +66957.441,-0.603556318 +66957.461,-0.60164832 +66957.481,-0.595408905 +66957.501,-0.575048225 +66957.521,-0.554210504 +66957.541,-0.551995154 +66957.561,-0.527588725 +66957.581,-0.50112132 +66957.601,-0.471573313 +66957.621,-0.460909188 +66957.641,-0.439696383 +66957.661,-0.39657935 +66957.681,-0.372726963 +66957.701,-0.362014319 +66957.721,-0.360536261 +66957.741,-0.33227826 +66957.761,-0.29810588 +66957.781,-0.307667843 +66957.801,-0.311209117 +66957.821,-0.319777103 +66957.841,-0.329922457 +66957.861,-0.33476523 +66957.881,-0.345595824 +66957.901,-0.366740465 +66957.92099,-0.386211214 +66957.941,-0.408832523 +66957.961,-0.441485081 +66957.981,-0.446342591 +66958.001,-0.484186762 +66958.021,-0.517617888 +66958.041,-0.533361631 +66958.061,-0.540232426 +66958.081,-0.558418512 +66958.101,-0.576142418 +66958.121,-0.583854071 +66958.141,-0.591130788 +66958.161,-0.593947266 +66958.181,-0.59614103 +66958.201,-0.597179658 +66958.221,-0.583534025 +66958.241,-0.568960702 +66958.261,-0.543778 +66958.281,-0.55054544 +66958.301,-0.512099082 +66958.321,-0.466588513 +66958.341,-0.457669683 +66958.361,-0.450303941 +66958.381,-0.410168071 +66958.401,-0.37893938 +66958.421,-0.364722771 +66958.441,-0.349445547 +66958.461,-0.348148165 +66958.481,-0.318228336 +66958.501,-0.303611885 +66958.521,-0.311305525 +66958.541,-0.336781503 +66958.561,-0.334571397 +66958.581,-0.327613362 +66958.601,-0.335713252 +66958.621,-0.374806133 +66958.641,-0.393571973 +66958.661,-0.401935957 +66958.681,-0.428768596 +66958.701,-0.450838584 +66958.721,-0.481281902 +66958.741,-0.498225545 +66958.761,-0.523801362 +66958.781,-0.530232907 +66958.801,-0.548754 +66958.821,-0.57457257 +66958.841,-0.581297715 +66958.861,-0.578753995 +66958.881,-0.586389547 +66958.901,-0.594172836 +66958.921,-0.601594722 +66958.941,-0.577881613 +66958.961,-0.553183491 +66958.981,-0.55300116 +66959.001,-0.542553598 +66959.021,-0.518333752 +66959.04101,-0.482909275 +66959.061,-0.453565436 +66959.081,-0.441017981 +66959.101,-0.427414898 +66959.121,-0.395948117 +66959.141,-0.367025731 +66959.161,-0.354621456 +66959.181,-0.337875918 +66959.201,-0.328283784 +66959.221,-0.324756019 +66959.241,-0.327340485 +66959.261,-0.335018403 +66959.281,-0.343865145 +66959.301,-0.330851025 +66959.321,-0.336173611 +66959.341,-0.366281667 +66959.361,-0.399951771 +66959.381,-0.409594291 +66959.401,-0.41632744 +66959.421,-0.446155475 +66959.441,-0.483272514 +66959.461,-0.508403396 +66959.481,-0.512634293 +66959.501,-0.526479735 +66959.521,-0.542029416 +66959.541,-0.559392168 +66959.561,-0.578565881 +66959.581,-0.574559541 +66959.601,-0.576682795 +66959.621,-0.590152893 +66959.641,-0.581944231 +66959.661,-0.584002446 +66959.681,-0.57351312 +66959.701,-0.545956032 +66959.721,-0.526796078 +66959.741,-0.512980807 +66959.761,-0.490644318 +66959.781,-0.45921685 +66959.801,-0.453892505 +66959.821,-0.436610859 +66959.841,-0.396997954 +66959.861,-0.386648517 +66959.881,-0.376037593 +66959.901,-0.360549473 +66959.921,-0.351338845 +66959.941,-0.340081738 +66959.961,-0.327516226 +66959.981,-0.328172135 +66960.001,-0.336868459 +66960.021,-0.324653988 +66960.041,-0.328920163 +66960.061,-0.348886911 +66960.081,-0.378818136 +66960.101,-0.39410425 +66960.121,-0.417916672 +66960.141,-0.43054914 +66960.161,-0.453638206 +66960.181,-0.489657053 +66960.201,-0.501329432 +66960.221,-0.504878157 +66960.241,-0.527439549 +66960.261,-0.548669199 +66960.281,-0.571293678 +66960.301,-0.579550706 +66960.321,-0.568070945 +66960.341,-0.578413114 +66960.361,-0.582869333 +66960.381,-0.569315176 +66960.401,-0.560585196 +66960.421,-0.555743408 +66960.441,-0.540548988 +66960.461,-0.519452569 +66960.481,-0.50448984 +66960.501,-0.483484401 +66960.521,-0.470704702 +66960.541,-0.455305472 +66960.561,-0.41845534 +66960.581,-0.397146954 +66960.601,-0.371130974 +66960.621,-0.361992638 +66960.641,-0.358675025 +66960.661,-0.332962612 +66960.681,-0.331831212 +66960.701,-0.331367002 +66960.721,-0.341100592 +66960.741,-0.34364262 +66960.761,-0.330871544 +66960.781,-0.346011044 +66960.801,-0.368612246 +66960.821,-0.391925091 +66960.841,-0.416469111 +66960.861,-0.438980064 +66960.881,-0.443437897 +66960.901,-0.460721389 +66960.921,-0.479597364 +66960.941,-0.516357507 +66960.961,-0.531674534 +66960.981,-0.543170052 +66961.001,-0.572476125 +66961.021,-0.56873241 +66961.041,-0.5667431 +66961.061,-0.583362375 +66961.081,-0.58956494 +66961.101,-0.583195185 +66961.121,-0.571307767 +66961.141,-0.559189153 +66961.161,-0.559585395 +66961.181,-0.536333283 +66961.201,-0.510513072 +66961.221,-0.495115862 +66961.241,-0.471027623 +66961.261,-0.443687062 +66961.281,-0.430859976 +66961.301,-0.411359896 +66961.321,-0.383720705 +66961.341,-0.36573634 +66961.361,-0.362999402 +66961.381,-0.353521064 +66961.401,-0.331658947 +66961.421,-0.334026819 +66961.441,-0.329255907 +66961.461,-0.333936396 +66961.481,-0.349019139 +66961.501,-0.349027753 +66961.521,-0.35597245 +66961.541,-0.381825009 +66961.561,-0.414086947 +66961.581,-0.433596955 +66961.601,-0.446366162 +66961.621,-0.465524447 +66961.641,-0.506764596 +66961.661,-0.519708752 +66961.681,-0.515765146 +66961.701,-0.538719199 +66961.721,-0.565985042 +66961.741,-0.576143856 +66961.761,-0.569912772 +66961.781,-0.569825791 +66961.801,-0.575196255 +66961.821,-0.581780787 +66961.841,-0.574161453 +66961.861,-0.551947291 +66961.881,-0.545073065 +66961.901,-0.544478555 +66961.921,-0.523584341 +66961.941,-0.500571827 +66961.961,-0.48090232 +66961.981,-0.459922622 +66962.001,-0.453414113 +66962.021,-0.435118038 +66962.041,-0.392370574 +66962.061,-0.370699458 +66962.081,-0.374625944 +66962.101,-0.374035924 +66962.121,-0.355530128 +66962.141,-0.331526525 +66962.161,-0.334893949 +66962.181,-0.350696712 +66962.201,-0.348739211 +66962.221,-0.352629077 +66962.241,-0.369537817 +66962.261,-0.375513342 +66962.281,-0.401698262 +66962.301,-0.419725109 +66962.321,-0.433213036 +66962.341,-0.455594609 +66962.361,-0.482578602 +66962.381,-0.502776383 +66962.401,-0.507645674 +66962.421,-0.519233186 +66962.441,-0.548847568 +66962.461,-0.560213791 +66962.481,-0.568729499 +66962.501,-0.57858983 +66962.521,-0.583065534 +66962.541,-0.582074388 +66962.561,-0.567456948 +66962.581,-0.562372363 +66962.601,-0.549745407 +66962.621,-0.543744457 +66962.641,-0.524550884 +66962.661,-0.505317365 +66962.681,-0.495180558 +66962.701,-0.469392538 +66962.721,-0.452079137 +66962.74099,-0.427308538 +66962.761,-0.400950223 +66962.781,-0.378934803 +66962.801,-0.376819725 +66962.821,-0.370615593 +66962.841,-0.360234783 +66962.861,-0.344623628 +66962.881,-0.327934386 +66962.901,-0.345893517 +66962.921,-0.353834156 +66962.941,-0.347403836 +66962.961,-0.348088571 +66962.981,-0.366170873 +66963.001,-0.385968259 +66963.021,-0.407974764 +66963.041,-0.42289802 +66963.061,-0.436980195 +66963.081,-0.457178846 +66963.101,-0.47719014 +66963.121,-0.500188491 +66963.141,-0.515835568 +66963.161,-0.5374151 +66963.181,-0.561892383 +66963.201,-0.571337976 +66963.221,-0.56515377 +66963.241,-0.576287656 +66963.261,-0.588625022 +66963.281,-0.580668687 +66963.301,-0.564492831 +66963.321,-0.541429623 +66963.341,-0.541543415 +66963.361,-0.544144238 +66963.381,-0.519062513 +66963.401,-0.497550181 +66963.421,-0.488024692 +66963.441,-0.47596562 +66963.461,-0.457339694 +66963.481,-0.422345109 +66963.501,-0.401189438 +66963.521,-0.377727147 +66963.541,-0.370026366 +66963.561,-0.360897004 +66963.581,-0.335569483 +66963.601,-0.33110269 +66963.621,-0.332978215 +66963.641,-0.336227563 +66963.661,-0.346806021 +66963.681,-0.35061044 +66963.701,-0.360477037 +66963.721,-0.383149926 +66963.741,-0.406028307 +66963.761,-0.415487795 +66963.781,-0.422570285 +66963.801,-0.451625379 +66963.821,-0.476405715 +66963.841,-0.490405563 +66963.86101,-0.512862673 +66963.881,-0.532355936 +66963.901,-0.540087423 +66963.921,-0.543480725 +66963.941,-0.55360499 +66963.961,-0.570981827 +66963.981,-0.562366053 +66964.001,-0.554428934 +66964.021,-0.569531486 +66964.041,-0.55533907 +66964.061,-0.544263145 +66964.081,-0.538998384 +66964.101,-0.520559041 +66964.121,-0.48980899 +66964.141,-0.465749025 +66964.161,-0.450809303 +66964.181,-0.4371497 +66964.201,-0.430643729 +66964.221,-0.401259542 +66964.241,-0.388071 +66964.261,-0.366511 +66964.281,-0.359454783 +66964.301,-0.355171633 +66964.321,-0.34820193 +66964.341,-0.344995918 +66964.361,-0.346462762 +66964.381,-0.35453578 +66964.401,-0.37094105 +66964.421,-0.364119756 +66964.441,-0.380884 +66964.461,-0.397653 +66964.481,-0.397653 +66964.501,-0.414421 +66964.521,-0.443167 +66964.541,-0.469518 +66964.561,-0.474309 +66964.581,-0.486286 +66964.601,-0.507846 +66964.621,-0.534196 +66964.641,-0.55336 +66964.661,-0.555756 +66964.681,-0.560547 +66964.701,-0.567733 +66964.721,-0.572524 +66964.741,-0.567733 +66964.761,-0.541383 +66964.781,-0.543778 +66964.801,-0.543779383 +66964.821,-0.534196 +66964.841,-0.512637 +66964.861,-0.486286 +66964.881,-0.476704 +66964.901,-0.440772 +66964.921,-0.433585 +66964.941,-0.407235 +66964.961,-0.390466 +66964.981,-0.373698 +66965.001,-0.366511 +66965.021,-0.359325 +66965.041,-0.328183 +66965.061,-0.344952 +66965.081,-0.347347 +66965.101,-0.349743 +66965.121,-0.340161 +66965.141,-0.364116 +66965.161,-0.378489 +66965.181,-0.390466 +66965.201,-0.392862 +66965.221,-0.421608 +66965.241,-0.440778262 +66965.261,-0.471913 +66965.281,-0.488682 +66965.301,-0.500659 +66965.321,-0.524614 +66965.341,-0.536592 +66965.361,-0.548569 +66965.381,-0.548569 +66965.401,-0.560547 +66965.421,-0.560547 +66965.441,-0.570129 +66965.461,-0.570129 +66965.481,-0.546174 +66965.501,-0.541383 +66965.521,-0.543778 +66965.541,-0.531801 +66965.561,-0.510241 +66965.581,-0.493474878 +66965.601,-0.483891 +66965.621,-0.447958 +66965.641,-0.445563 +66965.661,-0.416817 +66965.681,-0.397653 +66965.701,-0.390466 +66965.721,-0.373698 +66965.741,-0.359325 +66965.761,-0.354534 +66965.781,-0.344952 +66965.801,-0.340161 +66965.821,-0.332974 +66965.841,-0.354534 +66965.861,-0.347347 +66965.881,-0.380884 +66965.901,-0.378489 +66965.921,-0.402444 +66965.941,-0.404839 +66965.961,-0.414421 +66965.981,-0.452749 +66966.001,-0.481495 +66966.021,-0.4791 +66966.041,-0.491077 +66966.061,-0.522219 +66966.081,-0.546174 +66966.101,-0.546174 +66966.121,-0.555756 +66966.141,-0.562942 +66966.161,-0.562942 +66966.181,-0.555756 +66966.201,-0.555756 +66966.221,-0.550965 +66966.241,-0.55336 +66966.261,-0.536592 +66966.281,-0.510241 +66966.301,-0.503055 +66966.321,-0.493473 +66966.341,-0.467122 +66966.361,-0.447958 +66966.381,-0.435981 +66966.401,-0.412026 +66966.421,-0.404839 +66966.441,-0.404839 +66966.461,-0.354534 +66966.481,-0.354534 +66966.501,-0.366511 +66966.521,-0.349743 +66966.541,-0.344952 +66966.561,-0.347347 +66966.581,-0.352138 +66966.601,-0.349743 +66966.621,-0.385675 +66966.641,-0.380884 +66966.661,-0.402444 +66966.681,-0.424003 +66966.701,-0.450358567 +66966.721,-0.455145 +66966.741,-0.462331 +66966.761,-0.503055 +66966.781,-0.507846 +66966.801,-0.515032 +66966.821,-0.546174 +66966.841,-0.548569 +66966.861,-0.548569 +66966.881,-0.55336 +66966.901,-0.565338 +66966.921,-0.555756 +66966.941,-0.543778 +66966.961,-0.546215547 +66966.981,-0.537188286 +66967.001,-0.513901415 +66967.021,-0.503822786 +66967.041,-0.509208843 +66967.061,-0.484165697 +66967.081,-0.44900173 +66967.101,-0.432318 +66967.121,-0.425938653 +66967.141,-0.402235365 +66967.161,-0.38273404 +66967.181,-0.37147006 +66967.201,-0.371637912 +66967.221,-0.378092382 +66967.241,-0.354336879 +66967.261,-0.354318891 +66967.281,-0.35693278 +66967.301,-0.369645581 +66967.321,-0.370663735 +66967.341,-0.381531126 +66967.361,-0.378359944 +66967.381,-0.389606763 +66967.401,-0.410494483 +66967.421,-0.437848911 +66967.441,-0.469095208 +66967.461,-0.453644834 +66967.481,-0.482396983 +66967.501,-0.501598657 +66967.521,-0.518422165 +66967.541,-0.526749138 +66967.56099,-0.534838764 +66967.581,-0.562088877 +66967.601,-0.547757801 +66967.621,-0.545425081 +66967.641,-0.557300132 +66967.661,-0.55368183 +66967.681,-0.542059708 +66967.701,-0.538677882 +66967.721,-0.531286581 +66967.741,-0.511034344 +66967.761,-0.500050089 +66967.781,-0.491703613 +66967.801,-0.465781068 +66967.821,-0.451107243 +66967.841,-0.43124237 +66967.861,-0.428212319 +66967.881,-0.410467404 +66967.901,-0.383905491 +66967.921,-0.387930625 +66967.941,-0.379267121 +66967.961,-0.371643868 +66967.981,-0.359575798 +66968.001,-0.358437635 +66968.021,-0.371187824 +66968.041,-0.380505551 +66968.061,-0.385024603 +66968.081,-0.381698764 +66968.101,-0.396501156 +66968.121,-0.416144642 +66968.141,-0.434015578 +66968.161,-0.445644869 +66968.181,-0.460900464 +66968.201,-0.477342818 +66968.221,-0.495760848 +66968.241,-0.518386551 +66968.261,-0.524966885 +66968.281,-0.528683364 +66968.301,-0.537479796 +66968.321,-0.540201228 +66968.341,-0.550801279 +66968.361,-0.555321162 +66968.381,-0.550607976 +66968.401,-0.550451597 +66968.421,-0.545154274 +66968.441,-0.536047507 +66968.461,-0.519588947 +66968.481,-0.506912939 +66968.501,-0.483409859 +66968.521,-0.461701017 +66968.541,-0.458166386 +66968.561,-0.454342385 +66968.581,-0.424573706 +66968.601,-0.398914982 +66968.621,-0.388680318 +66968.641,-0.383028371 +66968.661,-0.378367679 +66968.68101,-0.365582225 +66968.701,-0.373975085 +66968.721,-0.380147724 +66968.741,-0.37362542 +66968.761,-0.379381692 +66968.781,-0.37729049 +66968.801,-0.374322298 +66968.821,-0.390700087 +66968.841,-0.419912467 +66968.861,-0.429955815 +66968.881,-0.422663291 +66968.901,-0.450949838 +66968.921,-0.478686524 +66968.941,-0.485731793 +66968.961,-0.509805414 +66968.981,-0.508726654 +66969.001,-0.52290693 +66969.021,-0.54117909 +66969.041,-0.555940942 +66969.061,-0.547553695 +66969.081,-0.553097463 +66969.101,-0.560909101 +66969.121,-0.553401629 +66969.141,-0.546145647 +66969.161,-0.543812457 +66969.181,-0.522897247 +66969.201,-0.51609834 +66969.221,-0.516987193 +66969.241,-0.487345856 +66969.261,-0.467062607 +66969.281,-0.457333965 +66969.301,-0.443574429 +66969.321,-0.436743664 +66969.341,-0.418684269 +66969.361,-0.394938341 +66969.381,-0.388648262 +66969.401,-0.380616628 +66969.421,-0.378999395 +66969.441,-0.368280982 +66969.461,-0.367393403 +66969.481,-0.363474909 +66969.501,-0.38133857 +66969.521,-0.385802355 +66969.541,-0.394159122 +66969.561,-0.414680733 +66969.581,-0.416418251 +66969.601,-0.422329662 +66969.621,-0.441040973 +66969.641,-0.45043152 +66969.661,-0.472960389 +66969.681,-0.499725965 +66969.701,-0.509074639 +66969.721,-0.513140095 +66969.741,-0.524189741 +66969.761,-0.550319301 +66969.781,-0.550215304 +66969.801,-0.54096197 +66969.821,-0.559854089 +66969.841,-0.554596298 +66969.861,-0.54926327 +66969.881,-0.536068119 +66969.901,-0.521950742 +66969.921,-0.514842284 +66969.941,-0.513288875 +66969.961,-0.491901927 +66969.981,-0.463773435 +66970.001,-0.445339028 +66970.021,-0.432393538 +66970.041,-0.419068226 +66970.061,-0.409002783 +66970.081,-0.405402876 +66970.101,-0.38987257 +66970.121,-0.384993524 +66970.141,-0.372819918 +66970.161,-0.361619099 +66970.181,-0.37427086 +66970.201,-0.384058995 +66970.221,-0.384006947 +66970.241,-0.375500825 +66970.261,-0.381128583 +66970.281,-0.405609264 +66970.301,-0.409980887 +66970.321,-0.409142142 +66970.341,-0.44675942 +66970.361,-0.461732856 +66970.381,-0.469280006 +66970.401,-0.484047742 +66970.421,-0.504297561 +66970.441,-0.524200612 +66970.461,-0.531254141 +66970.481,-0.54216236 +66970.501,-0.543811362 +66970.521,-0.550953177 +66970.541,-0.552589066 +66970.561,-0.540282366 +66970.581,-0.539310088 +66970.601,-0.537127516 +66970.621,-0.533875216 +66970.641,-0.532662604 +66970.661,-0.501364201 +66970.681,-0.480917935 +66970.701,-0.494426875 +66970.721,-0.473121611 +66970.741,-0.457062607 +66970.761,-0.450118394 +66970.781,-0.43034769 +66970.801,-0.412695894 +66970.821,-0.407561509 +66970.841,-0.394947486 +66970.861,-0.361655035 +66970.881,-0.366085462 +66970.901,-0.379565852 +66970.921,-0.365215545 +66970.941,-0.376980775 +66970.961,-0.39578189 +66970.981,-0.396218799 +66971.001,-0.398360521 +66971.021,-0.413733038 +66971.041,-0.418095384 +66971.061,-0.428256858 +66971.081,-0.452010185 +66971.101,-0.456301754 +66971.121,-0.471148255 +66971.141,-0.480445579 +66971.161,-0.494352997 +66971.181,-0.52969208 +66971.201,-0.527339098 +66971.221,-0.518755769 +66971.241,-0.525890913 +66971.261,-0.535390211 +66971.281,-0.539623202 +66971.301,-0.538333525 +66971.321,-0.534546036 +66971.341,-0.531171676 +66971.361,-0.525726996 +66971.381,-0.511382701 +66971.401,-0.498604088 +66971.421,-0.490722284 +66971.441,-0.482153391 +66971.461,-0.461566246 +66971.481,-0.437845776 +66971.501,-0.422405892 +66971.521,-0.411776962 +66971.541,-0.400858283 +66971.561,-0.393072185 +66971.581,-0.385903048 +66971.601,-0.37142775 +66971.621,-0.368292159 +66971.641,-0.372426391 +66971.661,-0.378169781 +66971.681,-0.373407244 +66971.701,-0.389417339 +66971.721,-0.396888081 +66971.741,-0.404978528 +66971.761,-0.413172086 +66971.781,-0.419240416 +66971.801,-0.446774545 +66971.821,-0.470966268 +66971.841,-0.469181104 +66971.861,-0.477809502 +66971.881,-0.505677905 +66971.901,-0.518208431 +66971.921,-0.519920925 +66971.941,-0.526738853 +66971.961,-0.530220046 +66971.981,-0.536075874 +66972.001,-0.544605234 +66972.021,-0.534318478 +66972.041,-0.533474695 +66972.061,-0.531364238 +66972.081,-0.53223833 +66972.101,-0.522994073 +66972.121,-0.496181226 +66972.141,-0.482880606 +66972.161,-0.479743413 +66972.181,-0.457317476 +66972.201,-0.44186225 +66972.221,-0.434160514 +66972.241,-0.422278813 +66972.261,-0.418904136 +66972.281,-0.398443994 +66972.301,-0.375748264 +66972.321,-0.389580821 +66972.341,-0.388260269 +66972.361,-0.382219161 +66972.381,-0.38221444 +66972.401,-0.371372919 +66972.421,-0.377835444 +66972.441,-0.390651859 +66972.461,-0.395779978 +66972.481,-0.409306989 +66972.501,-0.421112985 +66972.521,-0.426803981 +66972.541,-0.455934752 +66972.561,-0.466044547 +66972.581,-0.464410697 +66972.601,-0.478587283 +66972.621,-0.505785012 +66972.641,-0.517002223 +66972.661,-0.525558521 +66972.681,-0.542163202 +66972.701,-0.55001505 +66972.721,-0.544857757 +66972.741,-0.529963808 +66972.761,-0.528380731 +66972.781,-0.520309112 +66972.801,-0.511624513 +66972.821,-0.504599516 +66972.841,-0.50495277 +66972.861,-0.492533607 +66972.881,-0.47632511 +66972.901,-0.465393443 +66972.921,-0.444593202 +66972.941,-0.437562621 +66972.961,-0.422911389 +66972.981,-0.410180517 +66973.001,-0.399576892 +66973.021,-0.389420991 +66973.041,-0.387776654 +66973.061,-0.37612818 +66973.081,-0.38187486 +66973.101,-0.392291936 +66973.121,-0.380652546 +66973.141,-0.381924219 +66973.161,-0.386416476 +66973.181,-0.404997981 +66973.201,-0.409437658 +66973.221,-0.418418214 +66973.241,-0.443774599 +66973.261,-0.443541555 +66973.281,-0.446107414 +66973.301,-0.467167004 +66973.321,-0.49077089 +66973.341,-0.505189863 +66973.361,-0.502086358 +66973.381,-0.520281303 +66973.401,-0.519687199 +66973.421,-0.530818971 +66973.441,-0.525341526 +66973.461,-0.529258533 +66973.481,-0.519485219 +66973.50101,-0.513975232 +66973.521,-0.524350579 +66973.541,-0.513011713 +66973.561,-0.499374865 +66973.581,-0.494273315 +66973.601,-0.487234584 +66973.621,-0.479493732 +66973.641,-0.453332556 +66973.661,-0.446198371 +66973.681,-0.435222904 +66973.701,-0.429589672 +66973.721,-0.419105461 +66973.741,-0.402702644 +66973.761,-0.386919335 +66973.781,-0.386912066 +66973.801,-0.396171697 +66973.821,-0.401305881 +66973.841,-0.383473102 +66973.861,-0.37904964 +66973.881,-0.397466108 +66973.901,-0.408306462 +66973.921,-0.418431904 +66973.941,-0.417258746 +66973.961,-0.421434121 +66973.981,-0.444885966 +66974.001,-0.45496946 +66974.021,-0.458109857 +66974.041,-0.479656215 +66974.061,-0.503645017 +66974.081,-0.505812608 +66974.101,-0.508674062 +66974.121,-0.522525959 +66974.141,-0.533060468 +66974.161,-0.537355095 +66974.181,-0.524592235 +66974.201,-0.514882172 +66974.221,-0.51991962 +66974.241,-0.514221329 +66974.261,-0.529435716 +66974.281,-0.502172057 +66974.301,-0.474461649 +66974.321,-0.487345611 +66974.341,-0.477779839 +66974.361,-0.455813999 +66974.381,-0.437779095 +66974.401,-0.432878262 +66974.421,-0.438832345 +66974.441,-0.421578512 +66974.461,-0.390656058 +66974.481,-0.389194865 +66974.501,-0.397723798 +66974.521,-0.416012114 +66974.541,-0.403465377 +66974.561,-0.388336174 +66974.581,-0.394179876 +66974.601,-0.395670494 +66974.621,-0.397598168 +66974.641,-0.420227367 +66974.661,-0.411196437 +66974.681,-0.421088146 +66974.701,-0.461089821 +66974.721,-0.462013741 +66974.741,-0.456122418 +66974.761,-0.47561795 +66974.781,-0.495211199 +66974.801,-0.512923294 +66974.821,-0.496840675 +66974.841,-0.511976357 +66974.861,-0.518021925 +66974.881,-0.516819509 +66974.901,-0.522202226 +66974.921,-0.516033866 +66974.941,-0.516167345 +66974.961,-0.527624629 +66974.981,-0.53019097 +66975.001,-0.493711132 +66975.021,-0.479084067 +66975.041,-0.480628793 +66975.061,-0.486727127 +66975.081,-0.469692691 +66975.101,-0.437764563 +66975.121,-0.445991215 +66975.141,-0.443608239 +66975.161,-0.421783119 +66975.181,-0.411242761 +66975.201,-0.39527696 +66975.221,-0.387243721 +66975.241,-0.397353298 +66975.261,-0.38744526 +66975.281,-0.386450529 +66975.301,-0.398954666 +66975.321,-0.399916466 +66975.341,-0.407511592 +66975.361,-0.420697147 +66975.381,-0.418277444 +66975.401,-0.414292655 +66975.421,-0.446066015 +66975.441,-0.458785807 +66975.461,-0.469702109 +66975.481,-0.459120867 +66975.501,-0.489940829 +66975.521,-0.513840978 +66975.541,-0.517285417 +66975.561,-0.517900917 +66975.581,-0.514199385 +66975.601,-0.527940117 +66975.621,-0.525821949 +66975.641,-0.522174753 +66975.661,-0.520956012 +66975.681,-0.509211663 +66975.701,-0.504433403 +66975.721,-0.489836332 +66975.741,-0.49298572 +66975.761,-0.485984748 +66975.781,-0.473525136 +66975.801,-0.462165437 +66975.821,-0.443794703 +66975.841,-0.427453369 +66975.861,-0.428035338 +66975.881,-0.428128712 +66975.901,-0.408213441 +66975.921,-0.391804558 +66975.941,-0.387680273 +66975.961,-0.395451653 +66975.981,-0.409318568 +66976.001,-0.398100664 +66976.021,-0.385609817 +66976.041,-0.396861402 +66976.061,-0.417319998 +66976.081,-0.418659257 +66976.101,-0.408084826 +66976.121,-0.436772364 +66976.141,-0.445376472 +66976.161,-0.453641185 +66976.181,-0.459378884 +66976.201,-0.46854431 +66976.221,-0.495994261 +66976.241,-0.494270178 +66976.261,-0.49785437 +66976.281,-0.492003027 +66976.301,-0.492572314 +66976.321,-0.517428 +66976.341,-0.522792009 +66976.361,-0.533751695 +66976.381,-0.512160174 +66976.401,-0.520229754 +66976.421,-0.519696814 +66976.441,-0.511601697 +66976.461,-0.485384499 +66976.481,-0.48439828 +66976.501,-0.490735396 +66976.521,-0.470781406 +66976.541,-0.45464205 +66976.561,-0.44757856 +66976.581,-0.438376 +66976.601,-0.433539509 +66976.621,-0.430866855 +66976.641,-0.396932299 +66976.661,-0.392388564 +66976.681,-0.411809956 +66976.701,-0.399273985 +66976.721,-0.392587891 +66976.741,-0.39667822 +66976.761,-0.408890415 +66976.781,-0.41467038 +66976.801,-0.414557132 +66976.821,-0.420921712 +66976.841,-0.439500972 +66976.861,-0.459271689 +66976.881,-0.462653934 +66976.901,-0.461132049 +66976.921,-0.456012299 +66976.941,-0.4791428 +66976.961,-0.501293503 +66976.981,-0.496249331 +66977.001,-0.506351624 +66977.021,-0.512470398 +66977.041,-0.534866536 +66977.061,-0.536404324 +66977.081,-0.512826967 +66977.101,-0.513597179 +66977.121,-0.520941481 +66977.141,-0.520724955 +66977.161,-0.502618986 +66977.181,-0.490070299 +66977.201,-0.485133603 +66977.221,-0.479190457 +66977.241,-0.473384726 +66977.261,-0.43823538 +66977.281,-0.424343906 +66977.301,-0.431017679 +66977.321,-0.427089828 +66977.341,-0.429100266 +66977.361,-0.397214138 +66977.381,-0.385489654 +66977.401,-0.408442097 +66977.421,-0.398558581 +66977.441,-0.391144788 +66977.461,-0.387670456 +66977.481,-0.412851375 +66977.501,-0.414793843 +66977.521,-0.399143938 +66977.541,-0.406511264 +66977.561,-0.426341599 +66977.581,-0.45451026 +66977.601,-0.449368647 +66977.621,-0.451650402 +66977.641,-0.464288423 +66977.661,-0.475962716 +66977.681,-0.488485317 +66977.701,-0.494916478 +66977.721,-0.494039327 +66977.741,-0.525402517 +66977.761,-0.529387692 +66977.781,-0.525413029 +66977.801,-0.518063525 +66977.821,-0.534531766 +66977.841,-0.540224172 +66977.861,-0.528889235 +66977.881,-0.527932116 +66977.901,-0.503153108 +66977.921,-0.479969687 +66977.941,-0.485764962 +66977.961,-0.489628509 +66977.981,-0.465110707 +66978.001,-0.440426388 +66978.021,-0.430266208 +66978.041,-0.429392485 +66978.061,-0.429962457 +66978.081,-0.411035883 +66978.101,-0.397410269 +66978.121,-0.406403027 +66978.141,-0.405145515 +66978.161,-0.382341279 +66978.181,-0.374734161 +66978.201,-0.390011801 +66978.221,-0.399326162 +66978.241,-0.407160674 +66978.261,-0.395072505 +66978.281,-0.400901878 +66978.301,-0.450349387 +66978.32099,-0.447365811 +66978.341,-0.434100009 +66978.361,-0.457083363 +66978.381,-0.482149729 +66978.401,-0.494457005 +66978.421,-0.495651678 +66978.441,-0.496705791 +66978.461,-0.50724959 +66978.481,-0.519239407 +66978.501,-0.527464629 +66978.521,-0.519799103 +66978.541,-0.511564148 +66978.561,-0.531714476 +66978.581,-0.533444521 +66978.601,-0.522200483 +66978.621,-0.502329656 +66978.641,-0.49492041 +66978.661,-0.515142176 +66978.681,-0.512076939 +66978.701,-0.478136037 +66978.721,-0.458088114 +66978.741,-0.472615985 +66978.761,-0.459558443 +66978.781,-0.439996016 +66978.801,-0.418609817 +66978.821,-0.406754798 +66978.841,-0.413861983 +66978.861,-0.414168152 +66978.881,-0.391235118 +66978.901,-0.392782823 +66978.921,-0.39851277 +66978.941,-0.423022784 +66978.961,-0.411963105 +66978.981,-0.401986431 +66979.001,-0.409421312 +66979.021,-0.433447157 +66979.041,-0.452455646 +66979.061,-0.436806973 +66979.081,-0.443083718 +66979.101,-0.463035402 +66979.121,-0.481622105 +66979.141,-0.495017745 +66979.161,-0.488902725 +66979.181,-0.477634791 +66979.201,-0.513850331 +66979.221,-0.52663582 +66979.241,-0.517678169 +66979.261,-0.518184107 +66979.281,-0.526598787 +66979.301,-0.541035945 +66979.321,-0.529008892 +66979.341,-0.497582033 +66979.361,-0.500743802 +66979.381,-0.504595676 +66979.401,-0.490940378 +66979.421,-0.484537612 +66979.441,-0.464496858 +66979.461,-0.454562046 +66979.481,-0.458108999 +66979.501,-0.445283061 +66979.521,-0.416099802 +66979.541,-0.400296442 +66979.561,-0.416052827 +66979.581,-0.427240477 +66979.601,-0.407698139 +66979.621,-0.39892591 +66979.641,-0.40103882 +66979.661,-0.40858364 +66979.681,-0.402591966 +66979.701,-0.387447985 +66979.721,-0.393339561 +66979.741,-0.407659354 +66979.761,-0.439236021 +66979.781,-0.434847633 +66979.801,-0.418893745 +66979.821,-0.437200298 +66979.841,-0.474092161 +66979.861,-0.480205519 +66979.881,-0.469304704 +66979.901,-0.481003049 +66979.921,-0.49947496 +66979.941,-0.519777142 +66979.961,-0.521479976 +66979.981,-0.508268697 +66980.001,-0.505021111 +66980.021,-0.53033409 +66980.041,-0.527935912 +66980.061,-0.503541179 +66980.081,-0.503992013 +66980.101,-0.509110954 +66980.121,-0.501417344 +66980.141,-0.49373547 +66980.161,-0.480615435 +66980.181,-0.468136903 +66980.201,-0.462218995 +66980.221,-0.468174158 +66980.241,-0.439124629 +66980.261,-0.424429727 +66980.281,-0.434254562 +66980.301,-0.41656577 +66980.321,-0.410734714 +66980.341,-0.415693658 +66980.361,-0.420886754 +66980.381,-0.422702554 +66980.401,-0.431751906 +66980.421,-0.410565053 +66980.441,-0.391752369 +66980.461,-0.416754424 +66980.481,-0.439692795 +66980.501,-0.437495296 +66980.521,-0.446127412 +66980.541,-0.455585984 +66980.561,-0.465165806 +66980.581,-0.489879694 +66980.601,-0.475982247 +66980.621,-0.468522321 +66980.641,-0.492245157 +66980.661,-0.505238163 +66980.681,-0.520864436 +66980.701,-0.50355902 +66980.721,-0.499162975 +66980.741,-0.506533407 +66980.761,-0.523240092 +66980.781,-0.507466972 +66980.801,-0.49108463 +66980.821,-0.504544123 +66980.841,-0.508614293 +66980.861,-0.493594347 +66980.881,-0.463525175 +66980.901,-0.465126882 +66980.921,-0.477765849 +66980.941,-0.467641154 +66980.961,-0.45002468 +66980.981,-0.430766285 +66981.001,-0.426579405 +66981.021,-0.435421064 +66981.041,-0.433494907 +66981.061,-0.413785365 +66981.081,-0.40976113 +66981.101,-0.419369228 +66981.121,-0.431589201 +66981.141,-0.428266827 +66981.161,-0.419482661 +66981.181,-0.426800914 +66981.201,-0.442368611 +66981.221,-0.446134019 +66981.241,-0.444499583 +66981.261,-0.449964577 +66981.281,-0.468837866 +66981.301,-0.48326885 +66981.321,-0.472741746 +66981.341,-0.464935998 +66981.361,-0.495211485 +66981.381,-0.503901493 +66981.401,-0.508697312 +66981.421,-0.503701288 +66981.441,-0.492455706 +66981.461,-0.506438604 +66981.481,-0.513894517 +66981.501,-0.513597916 +66981.521,-0.500793845 +66981.541,-0.505811989 +66981.561,-0.510838739 +66981.581,-0.498107113 +66981.601,-0.474275223 +66981.621,-0.467134538 +66981.641,-0.481034926 +66981.661,-0.47340823 +66981.681,-0.441951825 +66981.701,-0.439233787 +66981.721,-0.424862096 +66981.741,-0.423981239 +66981.761,-0.442151965 +66981.781,-0.413799307 +66981.801,-0.392351292 +66981.821,-0.418607424 +66981.841,-0.418300933 +66981.861,-0.41919343 +66981.881,-0.411017475 +66981.901,-0.417622223 +66981.921,-0.433215951 +66981.941,-0.455402272 +66981.961,-0.453904953 +66981.981,-0.429139243 +66982.001,-0.436476916 +66982.021,-0.467643696 +66982.041,-0.480566462 +66982.061,-0.478872228 +66982.081,-0.484642723 +66982.101,-0.499517783 +66982.121,-0.514004511 +66982.141,-0.504650365 +66982.161,-0.492327356 +66982.181,-0.507389533 +66982.201,-0.520514984 +66982.221,-0.52112142 +66982.241,-0.501293732 +66982.261,-0.505939869 +66982.281,-0.511707547 +66982.301,-0.495059953 +66982.321,-0.48765242 +66982.341,-0.476318905 +66982.361,-0.463516606 +66982.381,-0.465643698 +66982.401,-0.46160766 +66982.421,-0.440284873 +66982.441,-0.424338467 +66982.461,-0.431079486 +66982.481,-0.45208501 +66982.501,-0.43672751 +66982.521,-0.405469328 +66982.541,-0.407643301 +66982.561,-0.41996802 +66982.581,-0.421095491 +66982.601,-0.425440201 +66982.621,-0.421045745 +66982.641,-0.428346372 +66982.661,-0.444091893 +66982.681,-0.438049943 +66982.701,-0.441093374 +66982.721,-0.454733056 +66982.741,-0.466851259 +66982.761,-0.466488865 +66982.781,-0.470768119 +66982.801,-0.49729536 +66982.821,-0.504342874 +66982.841,-0.509721175 +66982.861,-0.503031815 +66982.881,-0.491301296 +66982.901,-0.495542893 +66982.921,-0.513726598 +66982.941,-0.511859226 +66982.961,-0.501955572 +66982.981,-0.499379367 +66983.001,-0.505001386 +66983.021,-0.497948176 +66983.041,-0.477890465 +66983.061,-0.470352051 +66983.081,-0.463673353 +66983.101,-0.462891676 +66983.121,-0.45718985 +66983.14099,-0.441719254 +66983.161,-0.441319587 +66983.181,-0.4386041 +66983.201,-0.440453483 +66983.221,-0.427587055 +66983.241,-0.416941934 +66983.261,-0.423578355 +66983.281,-0.426077979 +66983.301,-0.423237353 +66983.321,-0.434211717 +66983.341,-0.436235109 +66983.361,-0.424927249 +66983.381,-0.432180786 +66983.401,-0.445178887 +66983.421,-0.447167817 +66983.441,-0.455814628 +66983.461,-0.473788812 +66983.481,-0.483010482 +66983.501,-0.482510663 +66983.521,-0.483325524 +66983.541,-0.500138734 +66983.561,-0.518274746 +66983.581,-0.505434484 +66983.601,-0.48545578 +66983.621,-0.494978326 +66983.641,-0.498155593 +66983.661,-0.491073407 +66983.681,-0.481999622 +66983.701,-0.485346906 +66983.721,-0.508549828 +66983.741,-0.496099147 +66983.761,-0.481819046 +66983.781,-0.471456899 +66983.801,-0.459742902 +66983.821,-0.465309498 +66983.841,-0.449024875 +66983.861,-0.434929823 +66983.881,-0.435971455 +66983.901,-0.437687071 +66983.921,-0.435693968 +66983.941,-0.424408918 +66983.961,-0.415839127 +66983.981,-0.431786478 +66984.001,-0.431296292 +66984.021,-0.417465425 +66984.041,-0.433206402 +66984.061,-0.440757443 +66984.081,-0.439720108 +66984.101,-0.44708334 +66984.121,-0.445563261 +66984.141,-0.452244159 +66984.161,-0.458070215 +66984.181,-0.470934656 +66984.201,-0.4883068 +66984.221,-0.484425654 +66984.241,-0.473731012 +66984.261,-0.484260557 +66984.281,-0.508228133 +66984.301,-0.518268088 +66984.321,-0.513675958 +66984.341,-0.507802999 +66984.361,-0.510685257 +66984.381,-0.521119009 +66984.401,-0.514762218 +66984.421,-0.496422698 +66984.441,-0.495949338 +66984.461,-0.496362029 +66984.481,-0.491503085 +66984.501,-0.480262023 +66984.521,-0.45459125 +66984.541,-0.452694526 +66984.561,-0.462969358 +66984.581,-0.451561239 +66984.601,-0.444052353 +66984.621,-0.44691709 +66984.641,-0.439664449 +66984.661,-0.427981488 +66984.681,-0.428236508 +66984.701,-0.424649009 +66984.721,-0.423735731 +66984.741,-0.436275255 +66984.761,-0.450418859 +66984.781,-0.430408729 +66984.801,-0.425348923 +66984.821,-0.440959995 +66984.841,-0.441415903 +66984.861,-0.4554129 +66984.881,-0.455027512 +66984.901,-0.462396976 +66984.921,-0.465015127 +66984.941,-0.46381709 +66984.961,-0.471902329 +66984.981,-0.483845089 +66985.001,-0.511244165 +66985.021,-0.511157355 +66985.041,-0.490661256 +66985.061,-0.495448176 +66985.081,-0.508274349 +66985.101,-0.512046377 +66985.121,-0.510862084 +66985.141,-0.494142899 +66985.161,-0.4938413 +66985.181,-0.501937613 +66985.201,-0.481835555 +66985.221,-0.468717395 +66985.241,-0.468833856 +66985.261,-0.464351354 +66985.281,-0.450748067 +66985.301,-0.4376558 +66985.321,-0.436384225 +66985.341,-0.441470037 +66985.361,-0.433507045 +66985.381,-0.430688027 +66985.401,-0.423330005 +66985.421,-0.427077503 +66985.441,-0.43879931 +66985.461,-0.430488976 +66985.481,-0.423832598 +66985.501,-0.426518395 +66985.521,-0.430178571 +66985.541,-0.433219712 +66985.561,-0.431587521 +66985.581,-0.445309004 +66985.601,-0.459009175 +66985.621,-0.465002093 +66985.641,-0.480378911 +66985.661,-0.471978639 +66985.681,-0.467723439 +66985.701,-0.488031727 +66985.721,-0.484037373 +66985.741,-0.49365853 +66985.761,-0.499103071 +66985.781,-0.496590547 +66985.801,-0.499020486 +66985.821,-0.504497612 +66985.841,-0.501299555 +66985.861,-0.489360575 +66985.881,-0.48795611 +66985.901,-0.492539138 +66985.921,-0.497152393 +66985.941,-0.491810261 +66985.961,-0.477125233 +66985.981,-0.463009622 +66986.001,-0.467491722 +66986.021,-0.46205074 +66986.041,-0.44508838 +66986.061,-0.445514933 +66986.081,-0.447380509 +66986.101,-0.434832007 +66986.121,-0.436099887 +66986.141,-0.447622681 +66986.161,-0.426936003 +66986.181,-0.420655819 +66986.201,-0.432765329 +66986.221,-0.426884857 +66986.241,-0.433558437 +66986.261,-0.444459773 +66986.281,-0.438850904 +66986.301,-0.445463429 +66986.321,-0.447418279 +66986.341,-0.443915419 +66986.361,-0.463738753 +66986.381,-0.481043257 +66986.401,-0.478137281 +66986.421,-0.480870121 +66986.441,-0.491536652 +66986.461,-0.501921401 +66986.481,-0.496296022 +66986.501,-0.492740641 +66986.521,-0.49614332 +66986.541,-0.507575307 +66986.561,-0.507277609 +66986.581,-0.499599095 +66986.601,-0.508293577 +66986.621,-0.506917111 +66986.641,-0.491139824 +66986.661,-0.477683938 +66986.681,-0.47130175 +66986.701,-0.468386444 +66986.721,-0.473494156 +66986.741,-0.468201871 +66986.761,-0.459294156 +66986.781,-0.443337538 +66986.801,-0.43827698 +66986.821,-0.443961449 +66986.841,-0.435305388 +66986.861,-0.437686702 +66986.881,-0.43809326 +66986.901,-0.429943963 +66986.921,-0.428846028 +66986.941,-0.426676936 +66986.961,-0.411645868 +66986.981,-0.413482859 +66987.001,-0.436403453 +66987.021,-0.445192454 +66987.041,-0.439285308 +66987.061,-0.443609843 +66987.081,-0.466904276 +66987.101,-0.472287187 +66987.121,-0.464660042 +66987.141,-0.474452399 +66987.161,-0.478888417 +66987.181,-0.485096643 +66987.201,-0.48502883 +66987.221,-0.484026336 +66987.241,-0.493261226 +66987.261,-0.506859606 +66987.281,-0.494925231 +66987.301,-0.483190525 +66987.321,-0.495284019 +66987.341,-0.508342959 +66987.361,-0.520954707 +66987.381,-0.498867254 +66987.401,-0.478581761 +66987.421,-0.467241705 +66987.441,-0.460453296 +66987.461,-0.477653456 +66987.481,-0.474569612 +66987.501,-0.455264087 +66987.521,-0.447509629 +66987.541,-0.451195925 +66987.561,-0.449927018 +66987.581,-0.441183265 +66987.601,-0.445118538 +66987.621,-0.444990009 +66987.641,-0.428723737 +66987.661,-0.426090606 +66987.681,-0.436613428 +66987.701,-0.437113822 +66987.721,-0.447322403 +66987.741,-0.457529765 +66987.761,-0.441384185 +66987.781,-0.441565895 +66987.801,-0.448787685 +66987.821,-0.460456238 +66987.841,-0.464170064 +66987.861,-0.462488672 +66987.881,-0.479436935 +66987.901,-0.481152023 +66987.921,-0.475213589 +66987.941,-0.489388812 +66987.96099,-0.495286966 +66987.981,-0.49622449 +66988.001,-0.495928622 +66988.021,-0.490425845 +66988.041,-0.484685309 +66988.061,-0.503079875 +66988.081,-0.506994055 +66988.101,-0.487985063 +66988.121,-0.477985913 +66988.141,-0.472273737 +66988.161,-0.475663484 +66988.181,-0.47279066 +66988.201,-0.450828398 +66988.221,-0.446283878 +66988.241,-0.468969461 +66988.261,-0.456627097 +66988.281,-0.43119 +66988.301,-0.438887042 +66988.321,-0.443520654 +66988.341,-0.441501012 +66988.361,-0.427664416 +66988.381,-0.429440231 +66988.401,-0.430958417 +66988.421,-0.432443164 +66988.441,-0.448155274 +66988.461,-0.453922502 +66988.481,-0.443068663 +66988.501,-0.451026677 +66988.521,-0.454185496 +66988.541,-0.461706263 +66988.561,-0.456291249 +66988.581,-0.473760267 +66988.601,-0.477110293 +66988.621,-0.485970389 +66988.641,-0.492384101 +66988.661,-0.485019162 +66988.681,-0.498459551 +66988.701,-0.491066316 +66988.721,-0.499003309 +66988.741,-0.494452155 +66988.761,-0.489036554 +66988.781,-0.49677915 +66988.801,-0.501895918 +66988.821,-0.50382223 +66988.841,-0.483596623 +66988.861,-0.480452459 +66988.881,-0.488042223 +66988.901,-0.475474171 +66988.921,-0.470362656 +66988.941,-0.459409307 +66988.961,-0.462573568 +66988.981,-0.455525081 +66989.001,-0.441794373 +66989.021,-0.445158587 +66989.041,-0.450976541 +66989.061,-0.428973618 +66989.08101,-0.429929192 +66989.101,-0.436397545 +66989.121,-0.4323089 +66989.141,-0.426508218 +66989.161,-0.431727587 +66989.181,-0.441708177 +66989.201,-0.459813947 +66989.221,-0.447331905 +66989.241,-0.45319234 +66989.261,-0.449840297 +66989.281,-0.454716141 +66989.301,-0.471692498 +66989.321,-0.483450198 +66989.341,-0.490573089 +66989.361,-0.483986735 +66989.381,-0.484816896 +66989.401,-0.474945109 +66989.421,-0.490334137 +66989.441,-0.490593687 +66989.461,-0.488655953 +66989.481,-0.484685152 +66989.501,-0.473720881 +66989.521,-0.484545457 +66989.541,-0.494295438 +66989.561,-0.472075626 +66989.581,-0.472900479 +66989.601,-0.480129663 +66989.621,-0.476710559 +66989.641,-0.462326676 +66989.661,-0.472734924 +66989.681,-0.468692666 +66989.701,-0.463810982 +66989.721,-0.456485666 +66989.741,-0.449019563 +66989.761,-0.443131592 +66989.781,-0.449115877 +66989.801,-0.448781877 +66989.821,-0.434678991 +66989.841,-0.429968887 +66989.861,-0.431988824 +66989.881,-0.452452768 +66989.901,-0.43830107 +66989.921,-0.447861353 +66989.941,-0.434022718 +66989.961,-0.439378081 +66989.981,-0.464159221 +66990.001,-0.461780757 +66990.021,-0.459069337 +66990.041,-0.455831146 +66990.061,-0.469553032 +66990.081,-0.479421027 +66990.101,-0.476403282 +66990.121,-0.483955888 +66990.141,-0.499126573 +66990.161,-0.495187624 +66990.181,-0.489520581 +66990.201,-0.478046251 +66990.221,-0.487567202 +66990.241,-0.508230173 +66990.261,-0.490114222 +66990.281,-0.479279919 +66990.301,-0.483406668 +66990.321,-0.476647464 +66990.341,-0.478212442 +66990.361,-0.461868804 +66990.381,-0.449795232 +66990.401,-0.453535502 +66990.421,-0.458332021 +66990.441,-0.459005388 +66990.461,-0.442012294 +66990.481,-0.426214411 +66990.501,-0.430506902 +66990.521,-0.425146456 +66990.541,-0.439020662 +66990.561,-0.425691733 +66990.581,-0.422473881 +66990.601,-0.445314382 +66990.621,-0.424519852 +66990.641,-0.430419887 +66990.661,-0.439610203 +66990.681,-0.453671198 +66990.701,-0.469384605 +66990.721,-0.456025445 +66990.741,-0.455499954 +66990.761,-0.458186532 +66990.781,-0.464649343 +66990.801,-0.474257346 +66990.821,-0.470516513 +66990.841,-0.467119431 +66990.861,-0.492125076 +66990.881,-0.504191596 +66990.901,-0.494784382 +66990.921,-0.488309548 +66990.941,-0.480369736 +66990.961,-0.491306934 +66990.981,-0.495034486 +66991.001,-0.487358422 +66991.021,-0.477679537 +66991.041,-0.489121457 +66991.061,-0.481474991 +66991.081,-0.463886045 +66991.101,-0.459906877 +66991.121,-0.45951038 +66991.141,-0.454394977 +66991.161,-0.448981651 +66991.181,-0.441448533 +66991.201,-0.432771065 +66991.221,-0.436992077 +66991.241,-0.440544592 +66991.261,-0.425780126 +66991.281,-0.431060502 +66991.301,-0.430523408 +66991.321,-0.437026155 +66991.341,-0.435181512 +66991.361,-0.432546924 +66991.381,-0.437415035 +66991.401,-0.453433421 +66991.421,-0.46647448 +66991.441,-0.467054934 +66991.461,-0.458302639 +66991.481,-0.474385864 +66991.501,-0.498434074 +66991.521,-0.495582054 +66991.541,-0.484855012 +66991.561,-0.483373897 +66991.581,-0.495552203 +66991.601,-0.512275636 +66991.621,-0.5110007 +66991.641,-0.489040305 +66991.661,-0.494975993 +66991.681,-0.494523184 +66991.701,-0.492712225 +66991.721,-0.496457086 +66991.741,-0.477335904 +66991.761,-0.483258498 +66991.781,-0.486614418 +66991.801,-0.465202879 +66991.821,-0.44630259 +66991.841,-0.447413051 +66991.861,-0.455699157 +66991.881,-0.454968766 +66991.901,-0.439806438 +66991.921,-0.428753009 +66991.941,-0.424994567 +66991.961,-0.425699721 +66991.981,-0.433640837 +66992.001,-0.424286959 +66992.021,-0.423966841 +66992.041,-0.446136474 +66992.061,-0.443150209 +66992.081,-0.434063908 +66992.101,-0.433704813 +66992.121,-0.466584607 +66992.141,-0.463752862 +66992.161,-0.447751406 +66992.181,-0.464837561 +66992.201,-0.477899861 +66992.221,-0.469652355 +66992.241,-0.486189248 +66992.261,-0.490662611 +66992.281,-0.486324538 +66992.301,-0.504044452 +66992.321,-0.510856427 +66992.341,-0.498899002 +66992.361,-0.494665295 +66992.381,-0.506157833 +66992.401,-0.498079359 +66992.421,-0.49541763 +66992.441,-0.484883506 +66992.461,-0.473932704 +66992.481,-0.480810591 +66992.501,-0.463705305 +66992.521,-0.444714844 +66992.541,-0.449776373 +66992.561,-0.451914619 +66992.581,-0.458284612 +66992.601,-0.437040262 +66992.621,-0.432189237 +66992.641,-0.433093147 +66992.661,-0.418685203 +66992.681,-0.42945924 +66992.701,-0.419179135 +66992.721,-0.413836076 +66992.741,-0.426860135 +66992.761,-0.427438879 +66992.78099,-0.435784636 +66992.801,-0.430847705 +66992.821,-0.429177545 +66992.841,-0.434919628 +66992.861,-0.455146574 +66992.881,-0.457453118 +66992.901,-0.458615641 +66992.921,-0.470801532 +66992.941,-0.483768013 +66992.961,-0.484078377 +66992.981,-0.48250375 +66993.001,-0.484179307 +66993.021,-0.498952966 +66993.041,-0.511379713 +66993.061,-0.515310266 +66993.081,-0.509499669 +66993.101,-0.49472757 +66993.121,-0.491316967 +66993.141,-0.49742043 +66993.161,-0.488990153 +66993.181,-0.483677858 +66993.201,-0.484364145 +66993.221,-0.479295636 +66993.241,-0.458791099 +66993.261,-0.454419683 +66993.281,-0.442055798 +66993.301,-0.449053677 +66993.321,-0.454287496 +66993.341,-0.441266811 +66993.361,-0.42570869 +66993.381,-0.413032909 +66993.401,-0.425866603 +66993.421,-0.415049349 +66993.441,-0.423464828 +66993.461,-0.427843028 +66993.481,-0.424329605 +66993.501,-0.431651837 +66993.521,-0.437166878 +66993.541,-0.427492533 +66993.561,-0.428233379 +66993.581,-0.454363576 +66993.601,-0.457166777 +66993.621,-0.460091415 +66993.641,-0.476356194 +66993.661,-0.487503864 +66993.681,-0.492839826 +66993.701,-0.500292788 +66993.721,-0.495716467 +66993.741,-0.506496008 +66993.761,-0.512467209 +66993.781,-0.509772734 +66993.801,-0.500851228 +66993.821,-0.504833672 +66993.841,-0.497982602 +66993.861,-0.488436754 +66993.881,-0.498355582 +66993.90101,-0.491600806 +66993.921,-0.475647973 +66993.941,-0.462519504 +66993.961,-0.462190665 +66993.981,-0.454140494 +66994.001,-0.440145402 +66994.021,-0.445916584 +66994.041,-0.442869532 +66994.061,-0.434585698 +66994.081,-0.442495512 +66994.101,-0.417921627 +66994.121,-0.416026321 +66994.141,-0.423255015 +66994.161,-0.405505651 +66994.181,-0.418158119 +66994.201,-0.428991779 +66994.221,-0.419332865 +66994.241,-0.4282517 +66994.261,-0.431391032 +66994.281,-0.426442519 +66994.301,-0.434992345 +66994.321,-0.458924349 +66994.341,-0.469418503 +66994.361,-0.471471287 +66994.381,-0.485724589 +66994.401,-0.490820586 +66994.421,-0.498070838 +66994.441,-0.494054625 +66994.461,-0.485930196 +66994.481,-0.504692211 +66994.501,-0.509947487 +66994.521,-0.511717997 +66994.541,-0.491520678 +66994.561,-0.510590619 +66994.581,-0.506453098 +66994.601,-0.501390426 +66994.621,-0.489808698 +66994.641,-0.472139565 +66994.661,-0.470927793 +66994.681,-0.482590138 +66994.701,-0.458189843 +66994.721,-0.449243693 +66994.741,-0.453170869 +66994.761,-0.44311519 +66994.781,-0.442766386 +66994.801,-0.430787921 +66994.821,-0.426948662 +66994.841,-0.407533539 +66994.861,-0.419112807 +66994.881,-0.423053655 +66994.901,-0.4055194 +66994.921,-0.411003886 +66994.941,-0.416517226 +66994.961,-0.42573513 +66994.981,-0.425047787 +66995.001,-0.427188974 +66995.021,-0.44794366 +66995.041,-0.454711776 +66995.061,-0.449930594 +66995.081,-0.454388817 +66995.101,-0.461847686 +66995.121,-0.473294691 +66995.141,-0.485400239 +66995.161,-0.477707088 +66995.181,-0.480503064 +66995.201,-0.503813594 +66995.221,-0.492217076 +66995.241,-0.496838836 +66995.261,-0.503945188 +66995.281,-0.512033975 +66995.301,-0.504950053 +66995.321,-0.49910778 +66995.341,-0.490747825 +66995.361,-0.498663108 +66995.381,-0.486177274 +66995.401,-0.489315671 +66995.421,-0.473452588 +66995.441,-0.464783618 +66995.461,-0.460526455 +66995.481,-0.460099045 +66995.501,-0.444504724 +66995.521,-0.437353122 +66995.541,-0.431023771 +66995.561,-0.414497325 +66995.581,-0.409753381 +66995.601,-0.426915949 +66995.621,-0.419227388 +66995.641,-0.403623704 +66995.661,-0.398606561 +66995.681,-0.390562769 +66995.701,-0.414915973 +66995.721,-0.421253763 +66995.741,-0.420246102 +66995.761,-0.432572345 +66995.781,-0.450451457 +66995.801,-0.4686065 +66995.821,-0.473590559 +66995.841,-0.469822295 +66995.861,-0.480172355 +66995.881,-0.494154081 +66995.901,-0.492592836 +66995.921,-0.490769981 +66995.941,-0.511675006 +66995.961,-0.504811995 +66995.981,-0.512968498 +66996.001,-0.506931888 +66996.021,-0.488712919 +66996.041,-0.512640469 +66996.061,-0.517905379 +66996.081,-0.49167114 +66996.101,-0.492602045 +66996.121,-0.486067024 +66996.141,-0.468532438 +66996.161,-0.470384754 +66996.181,-0.457415281 +66996.201,-0.446095215 +66996.221,-0.432404357 +66996.241,-0.432796918 +66996.261,-0.428747705 +66996.281,-0.42216998 +66996.301,-0.410160579 +66996.321,-0.420232953 +66996.341,-0.410742358 +66996.361,-0.393193663 +66996.381,-0.386866506 +66996.401,-0.406104077 +66996.421,-0.414682904 +66996.441,-0.401668213 +66996.461,-0.408616979 +66996.481,-0.419362713 +66996.501,-0.447957605 +66996.521,-0.458628834 +66996.541,-0.441547416 +66996.561,-0.441184906 +66996.581,-0.459228881 +66996.601,-0.477996022 +66996.621,-0.494252344 +66996.641,-0.49235676 +66996.661,-0.506851071 +66996.681,-0.521062922 +66996.701,-0.5254999 +66996.721,-0.513494059 +66996.741,-0.504227238 +66996.761,-0.507922475 +66996.781,-0.51652743 +66996.801,-0.513730551 +66996.821,-0.503918159 +66996.841,-0.48477645 +66996.861,-0.473847408 +66996.881,-0.475764559 +66996.901,-0.452776207 +66996.921,-0.431749239 +66996.941,-0.441011414 +66996.961,-0.432136018 +66996.981,-0.412418802 +66997.001,-0.396786742 +66997.021,-0.399214076 +66997.041,-0.405687135 +66997.061,-0.405695515 +66997.081,-0.407214306 +66997.101,-0.408676872 +66997.121,-0.408134932 +66997.141,-0.417693009 +66997.161,-0.42497462 +66997.181,-0.426244329 +66997.201,-0.448774879 +66997.221,-0.459525606 +66997.241,-0.462260367 +66997.261,-0.463946516 +66997.281,-0.471264787 +66997.301,-0.494287548 +66997.321,-0.504927502 +66997.341,-0.500925699 +66997.361,-0.50370512 +66997.381,-0.50877042 +66997.401,-0.51483168 +66997.421,-0.526410581 +66997.441,-0.515747562 +66997.461,-0.504918149 +66997.481,-0.506681171 +66997.501,-0.501083392 +66997.521,-0.486202076 +66997.541,-0.470680424 +66997.561,-0.481608509 +66997.581,-0.48023239 +66997.601,-0.458690627 +66997.621,-0.450600264 +66997.641,-0.443624244 +66997.661,-0.436418839 +66997.681,-0.428162979 +66997.701,-0.419560599 +66997.721,-0.411065914 +66997.741,-0.41215556 +66997.761,-0.41038042 +66997.781,-0.399310723 +66997.801,-0.401885793 +66997.821,-0.40119855 +66997.841,-0.407957781 +66997.861,-0.41580777 +66997.881,-0.419496106 +66997.901,-0.413200933 +66997.921,-0.417668972 +66997.941,-0.451963954 +66997.961,-0.464162153 +66997.981,-0.448432804 +66998.001,-0.45543662 +66998.021,-0.466455515 +66998.041,-0.478636833 +66998.061,-0.488987952 +66998.081,-0.487603794 +66998.101,-0.500901614 +66998.121,-0.51468767 +66998.141,-0.512582661 +66998.161,-0.510148771 +66998.181,-0.502916868 +66998.201,-0.521130136 +66998.221,-0.531276387 +66998.241,-0.520662252 +66998.261,-0.498161255 +66998.281,-0.479233342 +66998.301,-0.492294254 +66998.321,-0.487861002 +66998.341,-0.47376826 +66998.361,-0.445397312 +66998.381,-0.435369673 +66998.401,-0.437872371 +66998.421,-0.422025422 +66998.441,-0.408020953 +66998.461,-0.409307122 +66998.481,-0.418402371 +66998.501,-0.407815069 +66998.521,-0.389635099 +66998.541,-0.390420106 +66998.561,-0.405270892 +66998.581,-0.40590202 +66998.601,-0.399820261 +66998.621,-0.40472002 +66998.641,-0.416101399 +66998.661,-0.42937631 +66998.681,-0.448941788 +66998.701,-0.455970459 +66998.72101,-0.448787323 +66998.741,-0.46174564 +66998.761,-0.487621327 +66998.781,-0.490607362 +66998.801,-0.487771826 +66998.821,-0.491887204 +66998.841,-0.511975182 +66998.861,-0.521352868 +66998.881,-0.511957998 +66998.901,-0.508688387 +66998.921,-0.509321149 +66998.941,-0.51501464 +66998.961,-0.511200464 +66998.981,-0.495646369 +66999.001,-0.494167947 +66999.021,-0.502292549 +66999.041,-0.483105951 +66999.061,-0.460638253 +66999.081,-0.455044961 +66999.101,-0.460024207 +66999.121,-0.453886724 +66999.141,-0.429210228 +66999.161,-0.416323571 +66999.181,-0.419079038 +66999.201,-0.42832396 +66999.221,-0.422934788 +66999.241,-0.403342623 +66999.261,-0.400338407 +66999.281,-0.409704582 +66999.301,-0.410240056 +66999.321,-0.412650028 +66999.341,-0.412067197 +66999.361,-0.425342226 +66999.381,-0.433920216 +66999.401,-0.437638537 +66999.421,-0.437043013 +66999.441,-0.438273379 +66999.461,-0.454704949 +66999.481,-0.475831975 +66999.501,-0.480564359 +66999.521,-0.475193057 +66999.541,-0.48077601 +66999.561,-0.49669683 +66999.581,-0.509507802 +66999.601,-0.507823583 +66999.621,-0.499467235 +66999.641,-0.501628227 +66999.661,-0.518701429 +66999.681,-0.513985495 +66999.701,-0.495500689 +66999.721,-0.503350911 +66999.741,-0.496894276 +66999.761,-0.486649498 +66999.781,-0.471963017 +66999.801,-0.455564734 +66999.821,-0.451681409 +66999.841,-0.466137773 +66999.861,-0.438500115 +66999.881,-0.41579567 +66999.901,-0.406958619 +66999.921,-0.423525278 +66999.941,-0.426584112 +66999.961,-0.395633074 +66999.981,-0.388270048 +67000.001,-0.403124718 +67000.021,-0.421654068 +67000.041,-0.416754657 +67000.061,-0.410080084 +67000.081,-0.407229693 +67000.101,-0.432048382 +67000.121,-0.451865128 +67000.141,-0.451546605 +67000.161,-0.444694908 +67000.181,-0.463537768 +67000.201,-0.480158748 +67000.221,-0.48595274 +67000.241,-0.487931222 +67000.261,-0.498133819 +67000.281,-0.514211981 +67000.301,-0.511984996 +67000.321,-0.526066592 +67000.341,-0.51674672 +67000.361,-0.518128056 +67000.381,-0.525423751 +67000.401,-0.508837676 +67000.421,-0.49203457 +67000.441,-0.494207007 +67000.461,-0.502098181 +67000.481,-0.480860175 +67000.501,-0.48602831 +67000.521,-0.470190004 +67000.541,-0.460458333 +67000.561,-0.452629045 +67000.581,-0.435351482 +67000.601,-0.429898859 +67000.621,-0.416284862 +67000.641,-0.411747044 +67000.661,-0.412549718 +67000.681,-0.408746725 +67000.701,-0.419747686 +67000.721,-0.399826691 +67000.741,-0.408228287 +67000.761,-0.42660173 +67000.781,-0.410227182 +67000.801,-0.404803046 +67000.821,-0.431688951 +67000.841,-0.449725948 +67000.861,-0.446777957 +67000.881,-0.442258277 +67000.901,-0.457125125 +67000.921,-0.470886919 +67000.941,-0.475596624 +67000.961,-0.48702815 +67000.981,-0.493213115 +67001.001,-0.496621233 +67001.021,-0.512929428 +67001.041,-0.517976072 +67001.061,-0.511644219 +67001.081,-0.503329622 +67001.101,-0.50719007 +67001.121,-0.507772349 +67001.141,-0.508780366 +67001.161,-0.496826197 +67001.181,-0.501632326 +67001.201,-0.502685723 +67001.221,-0.483405192 +67001.241,-0.481623608 +67001.261,-0.471779679 +67001.281,-0.462046214 +67001.301,-0.466391093 +67001.321,-0.438030834 +67001.341,-0.425622159 +67001.361,-0.431778155 +67001.381,-0.416893207 +67001.401,-0.411021784 +67001.421,-0.420735044 +67001.441,-0.41533357 +67001.461,-0.391289807 +67001.481,-0.406676403 +67001.501,-0.412376776 +67001.521,-0.413758887 +67001.541,-0.41990106 +67001.561,-0.435716678 +67001.581,-0.449487705 +67001.601,-0.450304145 +67001.621,-0.454321562 +67001.641,-0.460454706 +67001.661,-0.477271456 +67001.681,-0.481172281 +67001.701,-0.489219126 +67001.721,-0.498342843 +67001.741,-0.493161131 +67001.761,-0.504419756 +67001.781,-0.500839488 +67001.801,-0.510729863 +67001.821,-0.516925738 +67001.841,-0.520327586 +67001.861,-0.508240682 +67001.881,-0.492288794 +67001.901,-0.493770935 +67001.921,-0.50947279 +67001.941,-0.496284634 +67001.961,-0.460158269 +67001.981,-0.464937536 +67002.001,-0.468460767 +67002.021,-0.45656368 +67002.041,-0.451306492 +67002.061,-0.438785958 +67002.081,-0.420867595 +67002.101,-0.418397939 +67002.121,-0.422340687 +67002.141,-0.410911567 +67002.161,-0.409880721 +67002.181,-0.4029731 +67002.201,-0.409634256 +67002.221,-0.423549859 +67002.241,-0.416173172 +67002.261,-0.411248209 +67002.281,-0.423467395 +67002.301,-0.441867931 +67002.321,-0.439739842 +67002.341,-0.43661011 +67002.361,-0.45880325 +67002.381,-0.474799691 +67002.401,-0.487783116 +67002.421,-0.483601855 +67002.441,-0.471712254 +67002.461,-0.487296482 +67002.481,-0.506942405 +67002.501,-0.500726907 +67002.521,-0.488268831 +67002.541,-0.503095762 +67002.561,-0.509690478 +67002.581,-0.513765176 +67002.601,-0.494194358 +67002.621,-0.484069974 +67002.641,-0.483824045 +67002.661,-0.481943789 +67002.681,-0.471913 +67002.701,-0.476408535 +67002.721,-0.461992593 +67002.741,-0.459155536 +67002.761,-0.435332455 +67002.781,-0.433164197 +67002.801,-0.416170258 +67002.821,-0.417434732 +67002.841,-0.428852001 +67002.861,-0.418562517 +67002.881,-0.40929623 +67002.901,-0.407477513 +67002.921,-0.417346525 +67002.941,-0.421608 +67002.961,-0.414386882 +67002.981,-0.425106965 +67003.001,-0.432953276 +67003.021,-0.438987507 +67003.041,-0.450549008 +67003.061,-0.44060536 +67003.081,-0.462331 +67003.101,-0.475029561 +67003.121,-0.486017562 +67003.141,-0.474463172 +67003.161,-0.487373984 +67003.181,-0.490645293 +67003.201,-0.501722763 +67003.221,-0.496639049 +67003.241,-0.497941564 +67003.261,-0.510684749 +67003.281,-0.505645691 +67003.301,-0.495466095 +67003.321,-0.512253646 +67003.341,-0.495781272 +67003.361,-0.475826125 +67003.381,-0.481238182 +67003.401,-0.467717115 +67003.421,-0.46056941 +67003.441,-0.453204255 +67003.461,-0.44568145 +67003.481,-0.446860569 +67003.501,-0.434291435 +67003.521,-0.437933402 +67003.54099,-0.434936525 +67003.561,-0.446022441 +67003.581,-0.420410511 +67003.601,-0.408382908 +67003.621,-0.421488043 +67003.641,-0.42080405 +67003.661,-0.415189143 +67003.681,-0.423958627 +67003.701,-0.418333882 +67003.721,-0.425888082 +67003.741,-0.438415275 +67003.761,-0.44382655 +67003.781,-0.443517436 +67003.801,-0.454405553 +67003.821,-0.468674608 +67003.841,-0.467709199 +67003.861,-0.47121374 +67003.881,-0.481253235 +67003.901,-0.47563273 +67003.921,-0.486387717 +67003.941,-0.50680569 +67003.961,-0.498567737 +67003.981,-0.499218761 +67004.001,-0.492317748 +67004.021,-0.486596078 +67004.041,-0.496588602 +67004.061,-0.488864769 +67004.081,-0.49403404 +67004.101,-0.481349085 +67004.121,-0.464329978 +67004.141,-0.464697169 +67004.161,-0.470607616 +67004.181,-0.461393511 +67004.201,-0.450234699 +67004.221,-0.451000878 +67004.241,-0.441368647 +67004.261,-0.435570144 +67004.281,-0.438539976 +67004.301,-0.422015174 +67004.321,-0.418645174 +67004.341,-0.425231832 +67004.361,-0.42289332 +67004.381,-0.42751951 +67004.401,-0.422046775 +67004.421,-0.40742263 +67004.441,-0.423635259 +67004.461,-0.431974104 +67004.481,-0.428266757 +67004.501,-0.446543562 +67004.521,-0.455869106 +67004.541,-0.451113319 +67004.561,-0.457455745 +67004.581,-0.466278836 +67004.601,-0.469775671 +67004.621,-0.475634288 +67004.641,-0.491860578 +67004.661,-0.504554511 +67004.681,-0.479387425 +67004.701,-0.473670286 +67004.721,-0.497522576 +67004.741,-0.500411913 +67004.761,-0.498020604 +67004.781,-0.495572823 +67004.801,-0.486233976 +67004.821,-0.492691851 +67004.841,-0.494540961 +67004.861,-0.488701016 +67004.881,-0.480771955 +67004.901,-0.472583157 +67004.921,-0.460911624 +67004.941,-0.447618699 +67004.961,-0.434215244 +67004.981,-0.440239205 +67005.001,-0.435680912 +67005.021,-0.433344756 +67005.041,-0.421759553 +67005.061,-0.415627479 +67005.081,-0.419162146 +67005.101,-0.427271234 +67005.121,-0.42598547 +67005.141,-0.422483982 +67005.161,-0.427505475 +67005.181,-0.42470217 +67005.201,-0.42627538 +67005.221,-0.42680541 +67005.241,-0.43334658 +67005.261,-0.447932742 +67005.281,-0.457460813 +67005.301,-0.465798462 +67005.321,-0.466995412 +67005.341,-0.471195354 +67005.361,-0.46780319 +67005.381,-0.478742248 +67005.401,-0.481592628 +67005.421,-0.494036216 +67005.441,-0.496584716 +67005.461,-0.501791208 +67005.481,-0.501164006 +67005.501,-0.483020401 +67005.521,-0.489433974 +67005.541,-0.488879713 +67005.561,-0.488401032 +67005.581,-0.481001767 +67005.601,-0.463638132 +67005.621,-0.451392663 +67005.641,-0.453166083 +67005.661,-0.4625578 +67005.681,-0.438198058 +67005.701,-0.434888392 +67005.721,-0.434146646 +67005.741,-0.434578647 +67005.761,-0.428553469 +67005.781,-0.415676359 +67005.801,-0.415563049 +67005.821,-0.42816403 +67005.841,-0.425459105 +67005.861,-0.41352064 +67005.881,-0.411719599 +67005.901,-0.412734186 +67005.921,-0.419827327 +67005.941,-0.429437673 +67005.961,-0.441970036 +67005.981,-0.45520675 +67006.001,-0.456552509 +67006.021,-0.454952008 +67006.041,-0.454662741 +67006.061,-0.459854061 +67006.081,-0.483779527 +67006.101,-0.499403727 +67006.121,-0.50253443 +67006.141,-0.490330761 +67006.161,-0.483315319 +67006.181,-0.500968372 +67006.201,-0.500342922 +67006.221,-0.496248052 +67006.241,-0.488933942 +67006.261,-0.502586276 +67006.281,-0.494176048 +67006.301,-0.484479515 +67006.321,-0.477421085 +67006.341,-0.464030408 +67006.361,-0.459340338 +67006.381,-0.466348422 +67006.401,-0.455959835 +67006.421,-0.447039279 +67006.441,-0.430411624 +67006.461,-0.427720466 +67006.481,-0.436727477 +67006.501,-0.412501413 +67006.521,-0.400795217 +67006.541,-0.427760226 +67006.561,-0.411971709 +67006.581,-0.402317785 +67006.601,-0.409968602 +67006.621,-0.434709291 +67006.641,-0.430019088 +67006.661,-0.425752781 +67006.681,-0.4390327 +67006.701,-0.450666131 +67006.721,-0.438961483 +67006.741,-0.448373106 +67006.761,-0.465999158 +67006.781,-0.468082381 +67006.801,-0.457401274 +67006.821,-0.474247975 +67006.841,-0.489122579 +67006.861,-0.4766958 +67006.881,-0.495930265 +67006.901,-0.509278669 +67006.921,-0.515966681 +67006.941,-0.493208986 +67006.961,-0.48772087 +67006.981,-0.498189326 +67007.001,-0.489398048 +67007.021,-0.487281365 +67007.041,-0.468423824 +67007.061,-0.468958511 +67007.081,-0.467940726 +67007.101,-0.456458843 +67007.121,-0.444269791 +67007.141,-0.436144161 +67007.161,-0.436594552 +67007.181,-0.422892898 +67007.201,-0.415329875 +67007.221,-0.403141077 +67007.241,-0.406175098 +67007.261,-0.414456655 +67007.281,-0.409483846 +67007.301,-0.416982548 +67007.321,-0.4034705 +67007.341,-0.406372247 +67007.361,-0.411595074 +67007.381,-0.41827481 +67007.401,-0.424522524 +67007.421,-0.416044866 +67007.441,-0.440947378 +67007.461,-0.44942133 +67007.481,-0.464398532 +67007.501,-0.453520049 +67007.521,-0.462639646 +67007.541,-0.482359118 +67007.561,-0.492793389 +67007.581,-0.498053904 +67007.601,-0.496456279 +67007.621,-0.491013436 +67007.641,-0.497556144 +67007.661,-0.498806442 +67007.681,-0.491555579 +67007.701,-0.489231623 +67007.721,-0.481558352 +67007.741,-0.486544338 +67007.761,-0.471401163 +67007.781,-0.463729485 +67007.801,-0.480645985 +67007.821,-0.471662228 +67007.841,-0.449984551 +67007.861,-0.434313307 +67007.881,-0.433381125 +67007.901,-0.43194061 +67007.921,-0.420445033 +67007.941,-0.413967798 +67007.961,-0.42356948 +67007.981,-0.417813583 +67008.001,-0.413864929 +67008.021,-0.423427054 +67008.041,-0.420229716 +67008.061,-0.41029367 +67008.081,-0.410851975 +67008.101,-0.427505997 +67008.121,-0.431364419 +67008.141,-0.430977669 +67008.161,-0.435355148 +67008.181,-0.445856524 +67008.201,-0.470519705 +67008.221,-0.4682258 +67008.241,-0.462154948 +67008.261,-0.472239609 +67008.281,-0.496301818 +67008.301,-0.505551496 +67008.321,-0.502879281 +67008.341,-0.509673348 +67008.36099,-0.510332715 +67008.381,-0.510434605 +67008.401,-0.504136269 +67008.421,-0.492161363 +67008.441,-0.486101608 +67008.461,-0.49101527 +67008.481,-0.482956378 +67008.501,-0.470118089 +67008.521,-0.469594304 +67008.541,-0.463385347 +67008.561,-0.453409364 +67008.581,-0.448374609 +67008.601,-0.438376 +67008.621,-0.438130253 +67008.641,-0.427986665 +67008.661,-0.426616944 +67008.681,-0.419301506 +67008.701,-0.400714738 +67008.721,-0.432033842 +67008.741,-0.442023843 +67008.761,-0.419757329 +67008.781,-0.414774204 +67008.801,-0.422465095 +67008.821,-0.432508571 +67008.841,-0.44037545 +67008.861,-0.437295015 +67008.881,-0.457819005 +67008.901,-0.450354 +67008.921,-0.464364441 +67008.941,-0.456432524 +67008.961,-0.453779031 +67008.981,-0.477751277 +67009.001,-0.495868 +67009.021,-0.49589352 +67009.041,-0.491786699 +67009.061,-0.480492849 +67009.081,-0.509489718 +67009.101,-0.501291625 +67009.121,-0.488079076 +67009.141,-0.488964383 +67009.161,-0.491338347 +67009.181,-0.493577765 +67009.201,-0.490248043 +67009.221,-0.477723708 +67009.241,-0.469463463 +67009.261,-0.468503739 +67009.281,-0.457729985 +67009.301,-0.464073457 +67009.321,-0.443637095 +67009.341,-0.432817541 +67009.361,-0.432166118 +67009.381,-0.44330221 +67009.401,-0.43534801 +67009.421,-0.430053523 +67009.441,-0.415985589 +67009.461,-0.42057418 +67009.481,-0.427951862 +67009.501,-0.411131584 +67009.521,-0.415091816 +67009.541,-0.426025257 +67009.561,-0.443282486 +67009.581,-0.436342819 +67009.601,-0.445186147 +67009.621,-0.436599581 +67009.641,-0.456743783 +67009.661,-0.46287732 +67009.681,-0.473226425 +67009.701,-0.478242058 +67009.721,-0.467273608 +67009.741,-0.483226793 +67009.761,-0.494220483 +67009.781,-0.495170686 +67009.801,-0.489022996 +67009.821,-0.495601351 +67009.841,-0.485823296 +67009.861,-0.495363055 +67009.881,-0.504207058 +67009.901,-0.48315192 +67009.921,-0.488600639 +67009.941,-0.478315197 +67009.961,-0.473349425 +67009.981,-0.461724563 +67010.001,-0.459280141 +67010.021,-0.449791931 +67010.041,-0.450663809 +67010.061,-0.452854999 +67010.081,-0.449476494 +67010.101,-0.443571831 +67010.121,-0.450009864 +67010.141,-0.437361816 +67010.161,-0.4331612 +67010.181,-0.42544583 +67010.201,-0.419146135 +67010.221,-0.421660444 +67010.241,-0.418931518 +67010.261,-0.419644147 +67010.281,-0.433692235 +67010.301,-0.452610928 +67010.321,-0.437556593 +67010.341,-0.4410809 +67010.361,-0.444197661 +67010.381,-0.455291286 +67010.401,-0.456799189 +67010.421,-0.480191804 +67010.441,-0.476388513 +67010.461,-0.476220038 +67010.481,-0.472607262 +67010.501,-0.487413689 +67010.521,-0.491343304 +67010.541,-0.496544901 +67010.561,-0.494170838 +67010.581,-0.479714188 +67010.601,-0.499240904 +67010.621,-0.495753752 +67010.641,-0.494682005 +67010.661,-0.478463116 +67010.681,-0.484649454 +67010.701,-0.479591378 +67010.721,-0.462263905 +67010.741,-0.475216343 +67010.761,-0.473985574 +67010.781,-0.465127069 +67010.801,-0.441658046 +67010.821,-0.435153351 +67010.841,-0.426133038 +67010.861,-0.432061013 +67010.881,-0.435623142 +67010.901,-0.425112101 +67010.921,-0.419783825 +67010.941,-0.425798704 +67010.961,-0.414276437 +67010.981,-0.421895449 +67011.001,-0.419375742 +67011.021,-0.427174183 +67011.041,-0.437823866 +67011.061,-0.452691791 +67011.081,-0.446155253 +67011.101,-0.466760767 +67011.121,-0.470724153 +67011.141,-0.460695736 +67011.161,-0.480292323 +67011.181,-0.481949766 +67011.201,-0.485483128 +67011.221,-0.474447605 +67011.241,-0.487217141 +67011.261,-0.485668598 +67011.281,-0.487843632 +67011.301,-0.506115482 +67011.321,-0.496866505 +67011.341,-0.482144168 +67011.361,-0.475675008 +67011.381,-0.493430498 +67011.401,-0.478385497 +67011.421,-0.481276411 +67011.441,-0.471003219 +67011.461,-0.466804358 +67011.481,-0.458446607 +67011.501,-0.445176466 +67011.521,-0.444686679 +67011.541,-0.427178566 +67011.561,-0.422254435 +67011.581,-0.429728655 +67011.601,-0.427409393 +67011.621,-0.423896847 +67011.641,-0.422615013 +67011.661,-0.419652701 +67011.681,-0.425891942 +67011.701,-0.423965438 +67011.721,-0.415672322 +67011.741,-0.428253665 +67011.761,-0.444928776 +67011.781,-0.443759554 +67011.801,-0.449365737 +67011.821,-0.460477947 +67011.841,-0.467334171 +67011.861,-0.46719685 +67011.881,-0.485393854 +67011.901,-0.469369459 +67011.921,-0.481974731 +67011.941,-0.479640937 +67011.961,-0.488732139 +67011.981,-0.484237368 +67012.001,-0.493034687 +67012.021,-0.48562111 +67012.041,-0.47563941 +67012.061,-0.490749049 +67012.081,-0.492334827 +67012.101,-0.48556271 +67012.121,-0.485006057 +67012.141,-0.477028089 +67012.161,-0.462816262 +67012.181,-0.448890043 +67012.201,-0.435491218 +67012.221,-0.450766981 +67012.241,-0.450027366 +67012.261,-0.42358543 +67012.281,-0.414610756 +67012.301,-0.422755908 +67012.321,-0.428506779 +67012.341,-0.435079796 +67012.361,-0.435651905 +67012.381,-0.417758752 +67012.401,-0.420832906 +67012.421,-0.420076981 +67012.441,-0.415962312 +67012.461,-0.432096159 +67012.481,-0.437747268 +67012.501,-0.438787559 +67012.521,-0.443329908 +67012.541,-0.446790732 +67012.561,-0.462842512 +67012.581,-0.463082389 +67012.601,-0.459629729 +67012.621,-0.465615201 +67012.641,-0.480336518 +67012.661,-0.488089837 +67012.681,-0.477377121 +67012.701,-0.493612327 +67012.721,-0.488881746 +67012.741,-0.486833885 +67012.761,-0.500966161 +67012.781,-0.49637237 +67012.801,-0.487803141 +67012.821,-0.47465651 +67012.841,-0.484287552 +67012.861,-0.481027853 +67012.881,-0.467359637 +67012.901,-0.455719058 +67012.921,-0.452759993 +67012.941,-0.456645766 +67012.961,-0.443666932 +67012.981,-0.438982467 +67013.001,-0.438646624 +67013.021,-0.430063858 +67013.041,-0.423424155 +67013.061,-0.422314534 +67013.081,-0.409366995 +67013.101,-0.404231307 +67013.121,-0.42481376 +67013.141,-0.427210056 +67013.161,-0.416737816 +67013.18099,-0.425350592 +67013.201,-0.444263695 +67013.221,-0.451511111 +67013.241,-0.45557304 +67013.261,-0.448566667 +67013.281,-0.447764804 +67013.301,-0.454890633 +67013.321,-0.447752847 +67013.341,-0.467001313 +67013.361,-0.478309854 +67013.381,-0.472733706 +67013.401,-0.489462156 +67013.421,-0.48350868 +67013.441,-0.4809229 +67013.461,-0.482785158 +67013.481,-0.48333763 +67013.501,-0.479725608 +67013.521,-0.473177524 +67013.541,-0.468860697 +67013.561,-0.476984899 +67013.581,-0.47291522 +67013.601,-0.465306394 +67013.621,-0.469690398 +67013.641,-0.464720251 +67013.661,-0.446002221 +67013.681,-0.439146614 +67013.701,-0.442603489 +67013.721,-0.435849026 +67013.741,-0.437909092 +67013.761,-0.435507077 +67013.781,-0.428824407 +67013.801,-0.424948062 +67013.821,-0.430510109 +67013.841,-0.431627898 +67013.861,-0.429283083 +67013.881,-0.425301792 +67013.901,-0.436439071 +67013.921,-0.432584744 +67013.941,-0.416463301 +67013.961,-0.435900218 +67013.981,-0.44963784 +67014.001,-0.44974749 +67014.021,-0.452416422 +67014.041,-0.457156878 +67014.061,-0.462260845 +67014.081,-0.474805598 +67014.101,-0.485656919 +67014.121,-0.476534564 +67014.141,-0.477787724 +67014.161,-0.487112806 +67014.181,-0.487662807 +67014.201,-0.480511768 +67014.221,-0.480417745 +67014.241,-0.473272783 +67014.261,-0.482393485 +67014.281,-0.489286313 +67014.30101,-0.484190541 +67014.321,-0.477183353 +67014.341,-0.470969957 +67014.361,-0.470640855 +67014.381,-0.45762675 +67014.401,-0.4546697 +67014.421,-0.44867394 +67014.441,-0.455540692 +67014.461,-0.455414163 +67014.481,-0.425951884 +67014.501,-0.41541325 +67014.521,-0.424174145 +67014.541,-0.42201457 +67014.561,-0.424125542 +67014.581,-0.418174103 +67014.601,-0.408494267 +67014.621,-0.413808068 +67014.641,-0.423809087 +67014.661,-0.43811553 +67014.681,-0.426523539 +67014.701,-0.427415453 +67014.721,-0.440747665 +67014.741,-0.447055273 +67014.761,-0.448512728 +67014.781,-0.470589628 +67014.801,-0.470001092 +67014.821,-0.46614256 +67014.841,-0.474984221 +67014.861,-0.467863958 +67014.881,-0.493184136 +67014.901,-0.486219233 +67014.921,-0.484758778 +67014.941,-0.494768375 +67014.961,-0.495420803 +67014.981,-0.477674058 +67015.001,-0.486804802 +67015.021,-0.48768812 +67015.041,-0.477853503 +67015.061,-0.472663689 +67015.081,-0.464355539 +67015.101,-0.453979228 +67015.121,-0.473255229 +67015.141,-0.456685559 +67015.161,-0.440176808 +67015.181,-0.42729401 +67015.201,-0.428649567 +67015.221,-0.422879566 +67015.241,-0.41885689 +67015.261,-0.425022599 +67015.281,-0.433010143 +67015.301,-0.429153223 +67015.321,-0.406103194 +67015.341,-0.413298977 +67015.361,-0.43119 +67015.381,-0.419212 +67015.401,-0.421608 +67015.421,-0.447958 +67015.441,-0.443167 +67015.461,-0.438376 +67015.481,-0.450354 +67015.501,-0.45754 +67015.521,-0.471913 +67015.541,-0.462331 +67015.561,-0.471913 +67015.581,-0.476704 +67015.601,-0.481495 +67015.621,-0.476704 +67015.641,-0.4791 +67015.661,-0.491077 +67015.681,-0.476700897 +67015.701,-0.476704 +67015.721,-0.481495 +67015.741,-0.474309 +67015.761,-0.471913 +67015.781,-0.464727 +67015.801,-0.471913 +67015.821,-0.471913 +67015.841,-0.445563 +67015.861,-0.447958 +67015.881,-0.438376 +67015.901,-0.433585 +67015.921,-0.435981 +67015.941,-0.43119 +67015.961,-0.438376 +67015.981,-0.421608 +67016.001,-0.433585 +67016.021,-0.416820042 +67016.041,-0.419212 +67016.061,-0.416817 +67016.081,-0.412026 +67016.101,-0.416817 +67016.121,-0.421608 +67016.141,-0.426399 +67016.161,-0.452749 +67016.181,-0.443167 +67016.201,-0.462331 +67016.221,-0.462331 +67016.241,-0.450354 +67016.261,-0.471913 +67016.281,-0.471913 +67016.301,-0.471913 +67016.321,-0.483891 +67016.341,-0.474309 +67016.361,-0.462331 +67016.381,-0.476704 +67016.401,-0.486286 +67016.421,-0.483891 +67016.441,-0.481495 +67016.461,-0.488682 +67016.481,-0.4791 +67016.501,-0.462331 +67016.521,-0.464727 +67016.541,-0.471913 +67016.561,-0.462331 +67016.581,-0.440772 +67016.601,-0.447958 +67016.621,-0.459936 +67016.641,-0.438376 +67016.661,-0.438376 +67016.681,-0.421608 +67016.701,-0.424003 +67016.721,-0.433585 +67016.741,-0.419212 +67016.761,-0.421608 +67016.781,-0.426399 +67016.801,-0.428794 +67016.821,-0.43119 +67016.841,-0.428794 +67016.861,-0.428794 +67016.881,-0.43119 +67016.901,-0.440772 +67016.921,-0.45754 +67016.941,-0.445563 +67016.961,-0.459936 +67016.981,-0.455145 +67017.001,-0.464727 +67017.021,-0.459936 +67017.041,-0.459936 +67017.061,-0.483891 +67017.081,-0.486286 +67017.101,-0.481495 +67017.121,-0.474309 +67017.141,-0.48149702 +67017.161,-0.483891 +67017.181,-0.476704 +67017.201,-0.469518 +67017.221,-0.4791 +67017.241,-0.471913 +67017.261,-0.469518 +67017.281,-0.45754 +67017.301,-0.447958 +67017.321,-0.455145 +67017.341,-0.452749 +67017.361,-0.440772 +67017.381,-0.447958 +67017.401,-0.433585 +67017.421,-0.428794 +67017.441,-0.440772 +67017.461,-0.419212 +67017.481,-0.428794 +67017.501,-0.42933459 +67017.521,-0.44288671 +67017.541,-0.423763557 +67017.561,-0.415876553 +67017.581,-0.423334692 +67017.601,-0.445668927 +67017.621,-0.444809424 +67017.641,-0.447340419 +67017.661,-0.459687069 +67017.681,-0.469432116 +67017.701,-0.480857786 +67017.721,-0.483748699 +67017.741,-0.480976808 +67017.761,-0.486700261 +67017.781,-0.490534836 +67017.801,-0.478202073 +67017.821,-0.482128966 +67017.841,-0.477965203 +67017.861,-0.500111725 +67017.881,-0.491308574 +67017.901,-0.498555218 +67017.921,-0.496807563 +67017.941,-0.469990268 +67017.961,-0.471632453 +67017.981,-0.474060104 +67018.00099,-0.46395305 +67018.021,-0.457856039 +67018.041,-0.457951385 +67018.061,-0.444217028 +67018.081,-0.438959703 +67018.101,-0.438288751 +67018.121,-0.427086523 +67018.141,-0.424386989 +67018.161,-0.426897163 +67018.181,-0.418866361 +67018.201,-0.405493033 +67018.221,-0.421732539 +67018.241,-0.431531348 +67018.261,-0.420308357 +67018.281,-0.437310432 +67018.301,-0.438995964 +67018.321,-0.430773497 +67018.341,-0.43578027 +67018.361,-0.451209165 +67018.381,-0.46052843 +67018.401,-0.461403436 +67018.421,-0.461003553 +67018.441,-0.467402208 +67018.461,-0.475666678 +67018.481,-0.484616791 +67018.501,-0.484839797 +67018.521,-0.486899749 +67018.541,-0.482731286 +67018.561,-0.477318881 +67018.581,-0.487670405 +67018.601,-0.494009587 +67018.621,-0.497664488 +67018.641,-0.485674155 +67018.661,-0.475056826 +67018.681,-0.468554286 +67018.701,-0.481322486 +67018.721,-0.475463539 +67018.741,-0.461813221 +67018.761,-0.462999594 +67018.781,-0.453660027 +67018.801,-0.445967002 +67018.821,-0.444453327 +67018.841,-0.439303732 +67018.861,-0.442730811 +67018.881,-0.441781409 +67018.901,-0.441098289 +67018.921,-0.440390107 +67018.941,-0.440245524 +67018.961,-0.432141676 +67018.981,-0.434767485 +67019.001,-0.429685138 +67019.021,-0.424008669 +67019.041,-0.440088898 +67019.061,-0.456548539 +67019.081,-0.457780834 +67019.101,-0.456226644 +67019.12101,-0.450172679 +67019.141,-0.455572609 +67019.161,-0.473736732 +67019.181,-0.479158432 +67019.201,-0.482408822 +67019.221,-0.496984833 +67019.241,-0.497213551 +67019.261,-0.485326605 +67019.281,-0.490811062 +67019.301,-0.500077194 +67019.321,-0.488842451 +67019.341,-0.484365236 +67019.361,-0.49649231 +67019.381,-0.493568414 +67019.401,-0.484972796 +67019.421,-0.475271347 +67019.441,-0.472423647 +67019.461,-0.473872423 +67019.481,-0.464583245 +67019.501,-0.461637469 +67019.521,-0.455284857 +67019.541,-0.435213248 +67019.561,-0.435116293 +67019.581,-0.439610602 +67019.601,-0.435509161 +67019.621,-0.44326324 +67019.641,-0.436566759 +67019.661,-0.42365074 +67019.681,-0.445332537 +67019.701,-0.433920934 +67019.721,-0.420514613 +67019.741,-0.419894053 +67019.761,-0.435783749 +67019.781,-0.442105838 +67019.801,-0.441957988 +67019.821,-0.463343114 +67019.841,-0.45701954 +67019.861,-0.464570974 +67019.881,-0.470910814 +67019.901,-0.459366371 +67019.921,-0.478449613 +67019.941,-0.486083089 +67019.961,-0.490356693 +67019.981,-0.488892793 +67020.001,-0.466757227 diff --git a/content/Week_2_3/Lecture_Slides.pdf b/content/Week_2_3/Lecture_Slides.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc5cb4496da8d829f715e9a833c8ae463d069116 Binary files /dev/null and b/content/Week_2_3/Lecture_Slides.pdf differ diff --git a/content/Week_2_3/PA11_iter_remoto.ipynb b/content/Week_2_3/PA11_iter_remoto.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..7c6d5f2086e0698d4cfdb2da0b51af6bed7ad7d5 --- /dev/null +++ b/content/Week_2_3/PA11_iter_remoto.ipynb @@ -0,0 +1,803 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c96d6259-08d6-4289-aea2-589d67cdb5ee", + "metadata": {}, + "source": [ + "# Programming Assignment 11: iTer-remoto\n", + "\n", + "<h1 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\" style=\"width:100px\" />\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\" style=\"width:100px\" />\n", + "</h1>\n", + "<h2 style=\"height: 10px\">\n", + "</h2>\n", + "\n", + "*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/): Week 2.3. Due: complete this PA prior to class on Friday, Dec 1, 2023 (but better if you do it by Wed, Nov 29!).*" + ] + }, + { + "cell_type": "markdown", + "id": "7a28e541-d2d0-48a9-abf6-7b73075c8fd3", + "metadata": { + "tags": [] + }, + "source": [ + "## Overview of Assignment\n", + "\n", + "This assignment will address a few simple, but useful, topics related to indexing and iterating in Python, illustrated with an annotated stem figure. The content of this PA is simple, but will be used directly in the Wednesday workshop this week.\n", + "\n", + "Specifically, we will look at:\n", + "- iterables and iterable objects\n", + "- iterables `range`, `enumerate` and `zip`\n", + "- the modulo operator `%`\n", + "- plot type `stem`\n", + "\n", + "## Assignment Criteria\n", + "\n", + "**You will pass this assignment as long as your respository fulfills the following criteria:** \n", + "\n", + "- You have completed this notebook and it runs without errors" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75681df5-7a73-469a-ad83-ebd05451e0b7", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "b0584fa2-7f4b-4566-9217-e6ca58d0e191", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Suppose we are writing code to summarize some simple data, perhaps a group of teams that each have a score for a particular game." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d6bb586-3ade-473e-8dd7-19dd350fa3f6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "team = ['green', 'red', 'blue']\n", + "score = [5, 9, 7]" + ] + }, + { + "cell_type": "markdown", + "id": "07ed2fba-5f83-47d8-af7e-b3a83bebbbbf", + "metadata": {}, + "source": [ + "Suppose we want to list the names of each team. One typical approach is to loop over each item in the list:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "878ff8c2-fe3c-421a-b1d8-400450fc6bf5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "N_teams = len(team)\n", + "print('The team names are:')\n", + "for i in range(N_teams):\n", + " print(f'{team[i]}')" + ] + }, + { + "cell_type": "markdown", + "id": "172fea58-dd93-4af0-a09c-f4129338ab54", + "metadata": {}, + "source": [ + "However, this is not the most efficient way to do this, as we need to define two extra variables: `N_teams` and the iteration index `i`. There is a better way! \n", + "\n", + "## Iterable Objects\n", + "\n", + "Python supports what is referred to as _iterable_ objects: generally, this means objects that can be easily used by Python's built-in and efficient iteration schemes. Examples are: list, tuple, dictionaries, and strings. You may be interested in reading about all of [the technical details here](https://docs.python.org/3/glossary.html#term-iterator); however, for this assignment the explanations here and examples below are sufficient. It is important to recognize this type of object exists in Python, so we can take advantage of it in our code, or so you can recognize the algorithms in other authors code.\n", + "\n", + "Let's see an iterable object in action. First, an easy way to test if an object is iterable is to use it as an argument of the `iter()` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc48118b-014b-4044-95fc-787e110de380", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "iter(team)" + ] + }, + { + "cell_type": "markdown", + "id": "111ef874-1b80-45fc-bb2c-ce9f7982681b", + "metadata": {}, + "source": [ + "Other objects can also be made into an iterator, like numpy arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee686157-6923-4d2e-b74f-35ed1049c70f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "iter(np.array([1, 5, 67]))" + ] + }, + { + "cell_type": "markdown", + "id": "e4302934-4828-4dcd-bc3b-eafbc59ad199", + "metadata": {}, + "source": [ + "The cell above should return `iterator`, which indicates the object (argument) is iterable. An integer, however, is _not_ iterable. " + ] + }, + { + "cell_type": "markdown", + "id": "41269037-161e-4c50-9dd7-5346bfc41b7a", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 1:</b> \n", + " \n", + "Try running the code below to confirm that an integer is not iterable (an error will occur), then fix it by converting the argument to an iterable object. Experiment by turning the integer into a list, string and np.array. \n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b65450f-dd18-4456-ac6b-d4856ae47b23", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "iter(5)" + ] + }, + { + "cell_type": "markdown", + "id": "47cf00b4-6946-44e6-bbeb-4176eb1e5674", + "metadata": {}, + "source": [ + "Great, you can make an iterator! But what do you _do_ with it? \n", + "\n", + "_Most of the time we simply use it in a `for` loop, but it is worthwhile to understand this object a bit more deeply._\n", + "\n", + "One simple way to understand an iterator is to imagine that it is a way of (efficiently!) turning your iterable object into something that can go sequentially through all its values. To do this it has two \"abilities\":\n", + "\n", + "1. the iterator knows its current value, and \n", + "2. the iterator knows its next value\n", + "\n", + "Let's try using the iterator by running the following cells:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f98b14ac-aa6b-4342-ba0f-faef9bc3f2b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "letters = 'abcde'\n", + "letter_iterator = iter(letters)" + ] + }, + { + "cell_type": "markdown", + "id": "6a48aadf-4e61-4c01-a23c-f0c28f7615e9", + "metadata": {}, + "source": [ + "Nothing new yet, but now watch what happens when we use the Python built-in command `next()`\n", + "\n", + "_Run the cell multiple times._" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a925cca3-ad71-4744-a6c8-7d578c7b69f0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "next(letter_iterator)" + ] + }, + { + "cell_type": "markdown", + "id": "fbc2e084-0032-42ec-9d21-9cec68d4e6ec", + "metadata": {}, + "source": [ + "There are two key things to note here:\n", + "\n", + "1. The iterator \"knows\" how to go through all of its values, and\n", + "2. Calls to `next` returns to value itself, _not the index!_\n", + "\n", + "This is a very useful feature, as we can see in this simple example below:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59642a7a-df92-44e0-984d-f054f1e5162d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for i in letters:\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "5629acaa-81b5-43e3-bd27-7713ad5b2ae2", + "metadata": {}, + "source": [ + "Obviously this is a simple `for` loop, but hopefully the explanation above indicates what is actually happening \"under the hood\" of the `for` loop:\n", + " \n", + "1. identifies `letters` as an iterable object\n", + "2. converts it into an iterator, and then it\n", + "3. finds the next value in the sequence and assigns it to variable `i`\n", + "4. stop once there is no next value\n", + " \n", + "This is a bit of a simplification of what happens in reality, but it gets the idea across.\n", + "\n", + "Now let's take a look at something you have probably used a lot: the `range()` method:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16660b30-08ba-43dd-8ddd-d34f5fa8f094", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "print(type(range(5)))\n", + "print(range(5))" + ] + }, + { + "cell_type": "markdown", + "id": "0531da9d-bec3-4d57-a653-0b1e58f54523", + "metadata": {}, + "source": [ + "Although it looks like it produces a tuple, `range` is a special iterable object that simply counts. As we can see it works the same as our `for` loop above:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "04019b3e-9853-449c-a230-4c9033f55311", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for i in range(5):\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "09db8005-1a9b-45b0-aac8-9821ea087fd9", + "metadata": {}, + "source": [ + "Hopefully this explains why `range` is such a useful feature for accessing sequential indexed elements of arrays.\n", + "\n", + "It turns out there are two more built-in Python methods that produce useful iterable objects: `enumerate` and `zip`. Let's take a look ath their doc strings." + ] + }, + { + "cell_type": "markdown", + "id": "0eb9605e-b4bf-4dc1-9a38-b64e78ff8563", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 2:</b> \n", + " \n", + "Read the docstrings below for the two methods. Confirm that they produce an iterable, but compare them to observe how the input and output of each is different. Can you imagine why one could be more useful than another in certain situations?\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "045f749d-1d12-4f70-954e-301ddcd9be32", + "metadata": {}, + "source": [ + "\n", + "`enumerate`:\n", + "\n", + "```Python\n", + "Init signature: enumerate(iterable, start=0)\n", + "Docstring: \n", + "Return an enumerate object.\n", + "\n", + " iterable\n", + " an object supporting iteration\n", + "\n", + "The enumerate object yields pairs containing a count (from start, which\n", + "defaults to zero) and a value yielded by the iterable argument.\n", + "\n", + "enumerate is useful for obtaining an indexed list:\n", + " (0, seq[0]), (1, seq[1]), (2, seq[2]), ...\n", + "```\n", + "\n", + "And `zip`:\n", + "\n", + "```Python\n", + "Init signature: zip(self, /, *args, **kwargs)\n", + "Docstring: \n", + "zip(*iterables, strict=False) --> Yield tuples until an input is exhausted.\n", + "\n", + " >>> list(zip('abcdefg', range(3), range(4)))\n", + " [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]\n", + "\n", + "The zip object yields n-length tuples, where n is the number of iterables\n", + "passed as positional arguments to zip(). The i-th element in every tuple\n", + "comes from the i-th iterable argument to zip(). This continues until the\n", + "shortest argument is exhausted.\n", + "\n", + "If strict is true and one of the arguments is exhausted before the others,\n", + "raise a ValueError.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "f7b34d40-e7c3-477c-9a78-68d26ea2dd81", + "metadata": {}, + "source": [ + "<br><br><br><br><br><br><br><br><br><br><br>\n", + "\n", + "The main takeaways, should be as follows:\n", + "\n", + "1. Yes, they both produce an iterator\n", + "2. `enumerate` takes one iterable object and returns indices along with the value\n", + "3. `zip` takes two iterable objects and returns their values\n", + "\n", + "Let's try them out by running the next cell. Does it behave as expected?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bdea9148-e2b0-4107-92b5-61a83de02efc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "thing_1 = 'roberts_string'\n", + "thing_2 = [2, 3, 36, 3., 1., 's', 7, '3']\n", + "\n", + "test_1 = enumerate(thing_1)\n", + "print(f'We created: {test_1}')\n", + "print(next(test_1), next(test_1), next(test_1))\n", + "\n", + "test_2 = zip(thing_1, thing_2)\n", + "print(f'We created: {test_2}')\n", + "print(next(test_2), next(test_2), next(test_2))" + ] + }, + { + "cell_type": "markdown", + "id": "d72f609b-0167-40f4-8e8f-c4476acf6417", + "metadata": {}, + "source": [ + "Can you see the difference?\n", + "\n", + "Looking at them in a for loop will also illustrate what's going on:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3687fdf-c949-44f7-b5df-961e63703d59", + "metadata": {}, + "outputs": [], + "source": [ + "print('First, enumerate:')\n", + "for i, j in enumerate(thing_1):\n", + " print(i, j)\n", + "print('\\nThen, zip:') \n", + "for i, j in zip(thing_1, thing_2):\n", + " print(i, j)" + ] + }, + { + "cell_type": "markdown", + "id": "3eedb9f0-29f9-4fea-b9ab-742f40ea8813", + "metadata": {}, + "source": [ + "Now let's return to our teams from the beginning of this assignment: let's apply our knowledge of `enumerate` and `zip` to see if we can print out the points per team in an efficient way." + ] + }, + { + "cell_type": "markdown", + "id": "bf6e780a-d153-4e68-b7f5-c4b83ffd564f", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 3:</b> \n", + " \n", + "Use <code>enumerate</code> to print out the summary of points per team according to the print statement.\n", + "<br><br>\n", + "<em>Hint: you only need to use one of the lists as an argument.</em>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73ea50cb-5c87-4f84-b618-4dd9ae38cc0c", + "metadata": {}, + "outputs": [], + "source": [ + "team = ['green', 'red', 'blue']\n", + "score = [5, 9, 7]\n", + "\n", + "for YOUR_CODE_WITH_enumerate_HERE:\n", + " print(f'Team {} has {} points.')" + ] + }, + { + "cell_type": "markdown", + "id": "ac1ef287-e43a-4c78-9536-bdba4828906f", + "metadata": {}, + "source": [ + "You may have noticed that `enumerate` is a bit awkward for this case, since we still need to define an unnecessary iteration index to access the team name. Let's see if `zip` makes things easier:" + ] + }, + { + "cell_type": "markdown", + "id": "0bdfde09-88cf-4358-9af0-edc9c75acabf", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 4:</b> \n", + " \n", + "Use <code>zip</code> to print out the summary of points per team according to the print statement.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6bcfc8a9-57a1-41db-8449-fe689def8b5a", + "metadata": {}, + "outputs": [], + "source": [ + "team = ['green', 'red', 'blue']\n", + "score = [5, 9, 7]\n", + "\n", + "for YOUR_CODE_WITH_zip_HERE:\n", + " print(f'Team {} has {} points.')" + ] + }, + { + "cell_type": "markdown", + "id": "edd3cf5a-4ad3-47ed-be1d-6aa8dc1cbd88", + "metadata": {}, + "source": [ + "That's really compact!" + ] + }, + { + "cell_type": "markdown", + "id": "bf60de78-247e-458e-9235-25ca4e2e4eb0", + "metadata": {}, + "source": [ + "## Modulo Operator `%`\n", + "\n", + "The modulo operator `%` is common in programming languanges, but not so much in our typical engineering problems. It turns out it can be very useful in iteration loops. It's actually quite simple: _the expression_ `a % b` _returns the remainder of `a/b`._ That's it!\n", + "\n", + "Take a look at the folloiwing examples that illustrate the operator:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3db0d267-1440-4846-aca1-5a1fcb2d6c0f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "print(6 % 5)\n", + "print(5 % 6)\n", + "print(1 % 10)\n", + "print(5 % 5)\n", + "print(0 % 5)" + ] + }, + { + "cell_type": "markdown", + "id": "123bf24c-913e-43dd-ae19-630711f2c8e6", + "metadata": {}, + "source": [ + "You can't divide by zero, just as in normal division.\n", + "\n", + "Below is an illustration for how the modulo is useful for doing things in a `for` loop that doesn't need to be done on every iteration." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "55f4af15-fc83-4233-ad80-93487141ca11", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "for i in range(100):\n", + " if i%25 == 0:\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "d2fe6e7b-b3ef-47f4-8798-44e21e9a9545", + "metadata": { + "tags": [] + }, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 5:</b> \n", + " \n", + "Experiment with the two Python cells above and make sure you understand what the modulo operator is and how it works.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "dfef5493-eae2-43e2-88fe-9d0328c9c0b1", + "metadata": {}, + "source": [ + "We won't do anything else with `%` now, but will apply this in the last task of the assignment." + ] + }, + { + "cell_type": "markdown", + "id": "9df653a5-7e35-402c-a89c-4c1ef10802c0", + "metadata": { + "tags": [] + }, + "source": [ + "## Stem Plot Type\n", + "\n", + "You have probably used the matplotlib plot types `plot`, `hist` and `scatter` frequently; another type is `stem`, which is useful for indicating the magnitude of various points along a number line. As with a scatter plot, the data does not need to be ordered, and missing values are easy to handle." + ] + }, + { + "cell_type": "markdown", + "id": "76776113-9f57-473e-b39c-dffea2f7ad5b", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 6:</b> \n", + " \n", + "Run the cell below and play with the values to make sure you are comfortable with the stem plot type. Do you see how it can handle two values with the same index?\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "835f184e-005a-4d2e-a673-0257a10660ad", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "value = [2, 7, 5, 1, 8]\n", + "index = [0, 2, 2, 6, 4]\n", + "plt.plot(index, value, 'o')\n", + "plt.stem(index, value);" + ] + }, + { + "cell_type": "markdown", + "id": "793f0d58-c8ba-492f-a450-29654d0a754b", + "metadata": {}, + "source": [ + "## Bringing it all together: Earthquake analysis\n", + "\n", + "To put the ideas above into practice, consider the following data, in the form of three lists, that describes the largest earthquakes in the world since 2025, that are also located on the ring of fire (Source: [Wikipedia](https://en.wikipedia.org/wiki/Lists_of_earthquakes))." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0228a5a7-49a8-475a-a63a-bd07f8128e01", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "year = [2003, 2011, 2013,\n", + " 2006, 2022,\n", + " 2017, 2019, 2001, 2010, 2015,\n", + " 2014, 2022, 2016,\n", + " 2000, 2007, 2012, 2005, 2004]\n", + "\n", + "magn = [8.3, 9.1, 8.3,\n", + " 8.3, 7.6,\n", + " 8.2, 8.0, 8.4, 8.8, 8.3,\n", + " 8.2, 7.6, 7.9,\n", + " 8.0, 8.4, 8.6, 8.6, 9.1]\n", + "\n", + "site = ['Japan, HokkaidÅ',\n", + " 'Japan, Honshu',\n", + " 'Russia, Sea of Okhotsk',\n", + " 'Russia, Kuril Islands',\n", + " 'Mexico, Michoacán',\n", + " 'Mexico, Chiapas',\n", + " 'Peru, Loreto',\n", + " 'Peru, Arequipa',\n", + " 'Chile, Concepción',\n", + " 'Chile, Coquimbo',\n", + " 'Chile, Iquique',\n", + " 'Papua New Guinea, Morobe',\n", + " 'Papua New Guinea, New Ireland',\n", + " 'Papua New Guinea',\n", + " 'Indonesia, Sumatra',\n", + " 'Indonesia, Indian Ocean',x\n", + " 'Indonesia, Simeulue',\n", + " 'Indonesia, Sumatra']" + ] + }, + { + "cell_type": "markdown", + "id": "7addd27e-f9c8-4966-83ce-df66a516c2ab", + "metadata": {}, + "source": [ + "We can visualize the data in the following figure. Can you find an easy way to recreate this plot?\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "8aa46742-7241-4788-a344-2a8d878c2746", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 7:</b> \n", + " \n", + "Using the tools described in this assignment, recreate the plot above. Note that to avoid cluttering the figure, the detailed earthquake information is only plotted for years that are a multiple of 5 (i.e., 2000, 2005, etc.).\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "33264465-fd6d-487a-9663-9b25e71dc5dc", + "metadata": {}, + "source": [ + "**Hints:** create a for loop using 3 iterables (`x`, `y` and `z`) based on _one_ of these iterable tools: `range`, `enumerate` or `zip`. Use the modulo operator `%` to choose the 5-year multiples. An outline of the solution in pseudo-code is also provided here, each of which should be one line in your code (except item 5):\n", + "```\n", + "1 for each iterable item\n", + "2 if the year is a multiple of 5\n", + "3 create the label (string)\n", + "4 annotate the plot (i.e., annotate(...))\n", + "5 include any additional formatting (more than one line)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de8d3186-1025-46f5-874b-16ef0a79c280", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "YOUR_CODE_HERE" + ] + }, + { + "cell_type": "markdown", + "id": "80580ab9-4d79-46b1-ae6e-775af04d43ad", + "metadata": {}, + "source": [ + "**End of notebook.**\n", + "<h2 style=\"height: 60px\">\n", + "</h2>\n", + "<h3 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">\n", + " <img alt=\"Creative Commons License\" style=\"border-width:; width:88px; height:auto; padding-top:10px\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" />\n", + " </a>\n", + " <a rel=\"TU Delft\" href=\"https://www.tudelft.nl/en/ceg\">\n", + " <img alt=\"TU Delft\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\"/>\n", + " </a>\n", + " <a rel=\"MUDE\" href=\"http://mude.citg.tudelft.nl/\">\n", + " <img alt=\"MUDE\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\"/>\n", + " </a>\n", + " \n", + "</h3>\n", + "<span style=\"font-size: 75%\">\n", + "© Copyright 2023 <a rel=\"MUDE Team\" href=\"https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595\">MUDE Teaching Team</a> TU Delft. This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>." + ] + } + ], + "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" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/content/Week_2_3/PA11_solution.ipynb b/content/Week_2_3/PA11_solution.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..9a5994cfa71c00bab8cf4f03a8eccc73fb7b6920 --- /dev/null +++ b/content/Week_2_3/PA11_solution.ipynb @@ -0,0 +1,1028 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c96d6259-08d6-4289-aea2-589d67cdb5ee", + "metadata": {}, + "source": [ + "# Programming Assignment 11: iTer-remoto\n", + "\n", + "<h1 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\" style=\"width:100px\" />\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\" style=\"width:100px\" />\n", + "</h1>\n", + "<h2 style=\"height: 10px\">\n", + "</h2>\n", + "\n", + "*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/): Week 2.2. Due: complete this PA prior to class on Friday, Dec 1, 2023 (but better if you do it by Wed, Nov 29!).*" + ] + }, + { + "cell_type": "markdown", + "id": "7a28e541-d2d0-48a9-abf6-7b73075c8fd3", + "metadata": { + "tags": [] + }, + "source": [ + "## Overview of Assignment\n", + "\n", + "This assignment will address a few simple, but useful, topics related to indexing and iterating in Python, illustrated with an annotated stem figure. The content of this PA is simple, but will be used directly in the Wednesday workshop this week.\n", + "\n", + "Specifically, we will look at:\n", + "- iterables and iterable objects\n", + "- iterables `range`, `enumerate` and `zip`\n", + "- the modulo operator `%`\n", + "- plot type `stem`\n", + "\n", + "## Assignment Criteria\n", + "\n", + "**You will pass this assignment as long as your respository fulfills the following criteria:** \n", + "\n", + "- You have completed this notebook and it runs without errors" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "75681df5-7a73-469a-ad83-ebd05451e0b7", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "b0584fa2-7f4b-4566-9217-e6ca58d0e191", + "metadata": {}, + "source": [ + "## Introduction\n", + "\n", + "Suppose we are writing code to summarize some simple data, perhaps a group of teams that each have a score for a particular game." + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "id": "4d6bb586-3ade-473e-8dd7-19dd350fa3f6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "team = ['green', 'red', 'blue']\n", + "score = [5, 9, 7]" + ] + }, + { + "cell_type": "markdown", + "id": "07ed2fba-5f83-47d8-af7e-b3a83bebbbbf", + "metadata": {}, + "source": [ + "Suppose we want to list the names of each team. One typical approach is to loop over each item in the list:" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "id": "878ff8c2-fe3c-421a-b1d8-400450fc6bf5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The team names are:\n", + "green\n", + "red\n", + "blue\n" + ] + } + ], + "source": [ + "N_teams = len(team)\n", + "print('The team names are:')\n", + "for i in range(N_teams):\n", + " print(f'{team[i]}')" + ] + }, + { + "cell_type": "markdown", + "id": "172fea58-dd93-4af0-a09c-f4129338ab54", + "metadata": {}, + "source": [ + "However, this is not the most efficient way to do this, as we need to define two extra variables: `N_teams` and the iteration index `i`. There is a better way! \n", + "\n", + "## Iterable Objects\n", + "\n", + "Python supports what is referred to as _iterable_ objects: generally, this means objects that can be easily used by Python's built-in and efficient iteration schemes. Examples are: list, tuple, dictionaries, and strings. You may be interested in reading about all of [the technical details here](https://docs.python.org/3/glossary.html#term-iterator); however, for this assignment the explanations here and examples below are sufficient. It is important to recognize this type of object exists in Python, so we can take advantage of it in our code, or so you can recognize the algorithms in other authors code.\n", + "\n", + "Let's see an iterable object in action. First, an easy way to test if an object is iterable is to use it as an argument of the `iter()` method:" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "id": "fc48118b-014b-4044-95fc-787e110de380", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "<list_iterator at 0x18960118820>" + ] + }, + "execution_count": 170, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iter(team)" + ] + }, + { + "cell_type": "markdown", + "id": "111ef874-1b80-45fc-bb2c-ce9f7982681b", + "metadata": {}, + "source": [ + "Other objects can also be made into an iterator, like numpy arrays:" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "id": "ee686157-6923-4d2e-b74f-35ed1049c70f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "<iterator at 0x189601199c0>" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "iter(np.array([1, 5, 67]))" + ] + }, + { + "cell_type": "markdown", + "id": "e4302934-4828-4dcd-bc3b-eafbc59ad199", + "metadata": {}, + "source": [ + "The cell above should return `iterator`, which indicates the object (argument) is iterable. An integer, however, is _not_ iterable. " + ] + }, + { + "cell_type": "markdown", + "id": "41269037-161e-4c50-9dd7-5346bfc41b7a", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 1:</b> \n", + " \n", + "Try running the code below to confirm that an integer is not iterable (an error will occur), then fix it by converting the argument to an iterable object. Experiment by turning the integer into a list, string and np.array. \n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "5b65450f-dd18-4456-ac6b-d4856ae47b23", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "<iterator at 0x1896011b1c0>" + ] + }, + "execution_count": 175, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# iter(5)\n", + "iter([5])\n", + "iter('5')\n", + "iter(np.array([5]))" + ] + }, + { + "cell_type": "markdown", + "id": "47cf00b4-6946-44e6-bbeb-4176eb1e5674", + "metadata": {}, + "source": [ + "Great, you can make an iterator! But what do you _do_ with it? \n", + "\n", + "_Most of the time we simply use it in a `for` loop, but it is worthwhile to understand this object a bit more deeply._\n", + "\n", + "One simple way to understand an iterator is to imagine that it is a way of (efficiently!) turning your iterable object into something that can go sequentially through all its values. To do this it has two \"abilities\":\n", + "\n", + "1. the iterator knows its current value, and \n", + "2. the iterator knows its next value\n", + "\n", + "Let's try using the iterator by running the following cells:" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "id": "f98b14ac-aa6b-4342-ba0f-faef9bc3f2b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "letters = 'abcde'\n", + "letter_iterator = iter(letters)" + ] + }, + { + "cell_type": "markdown", + "id": "6a48aadf-4e61-4c01-a23c-f0c28f7615e9", + "metadata": {}, + "source": [ + "Nothing new yet, but now watch what happens when we use the Python built-in command `next()`\n", + "\n", + "_Run the cell multiple times._" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "id": "a925cca3-ad71-4744-a6c8-7d578c7b69f0", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'a'" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "next(letter_iterator)" + ] + }, + { + "cell_type": "markdown", + "id": "fbc2e084-0032-42ec-9d21-9cec68d4e6ec", + "metadata": {}, + "source": [ + "There are two key things to note here:\n", + "\n", + "1. The iterator \"knows\" how to go through all of its values, and\n", + "2. Calls to `next` returns to value itself, _not the index!_\n", + "\n", + "This is a very useful feature, as we can see in this simple example below:" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "id": "59642a7a-df92-44e0-984d-f054f1e5162d", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\n", + "b\n", + "c\n", + "d\n", + "e\n" + ] + } + ], + "source": [ + "for i in letters:\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "5629acaa-81b5-43e3-bd27-7713ad5b2ae2", + "metadata": {}, + "source": [ + "Obviously this is a simple `for` loop, but hopefully the explanation above indicates what is actually happening \"under the hood\" of the `for` loop:\n", + " \n", + "1. identifies `letters` as an iterable object\n", + "2. converts it into an iterator, and then it\n", + "3. finds the next value in the sequence and assigns it to variable `i`\n", + "4. stop once there is no next value\n", + " \n", + "This is a bit of a simplification of what happens in reality, but it gets the idea across.\n", + "\n", + "Now let's take a look at something you have probably used a lot: the `range()` method:" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "16660b30-08ba-43dd-8ddd-d34f5fa8f094", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<class 'range'>\n", + "range(0, 5)\n" + ] + } + ], + "source": [ + "print(type(range(5)))\n", + "print(range(5))" + ] + }, + { + "cell_type": "markdown", + "id": "0531da9d-bec3-4d57-a653-0b1e58f54523", + "metadata": {}, + "source": [ + "Although it looks like it produces a tuple, `range` is a special iterable object that simply counts. As we can see it works the same as our `for` loop above:" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "id": "04019b3e-9853-449c-a230-4c9033f55311", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n" + ] + } + ], + "source": [ + "for i in range(5):\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "09db8005-1a9b-45b0-aac8-9821ea087fd9", + "metadata": {}, + "source": [ + "Hopefully this explains why `range` is such a useful feature for accessing sequential indexed elements of arrays.\n", + "\n", + "It turns out there are two more built-in Python methods that produce useful iterable objects: `enumerate` and `zip`. Let's take a look ath their doc strings." + ] + }, + { + "cell_type": "markdown", + "id": "0eb9605e-b4bf-4dc1-9a38-b64e78ff8563", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 2:</b> \n", + " \n", + "Read the docstrings below for the two methods. Confirm that they produce an iterable, but compare them to observe how the input and output of each is different. Can you imagine why one could be more useful than another in certain situations?\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "045f749d-1d12-4f70-954e-301ddcd9be32", + "metadata": {}, + "source": [ + "\n", + "`enumerate`:\n", + "\n", + "```Python\n", + "Init signature: enumerate(iterable, start=0)\n", + "Docstring: \n", + "Return an enumerate object.\n", + "\n", + " iterable\n", + " an object supporting iteration\n", + "\n", + "The enumerate object yields pairs containing a count (from start, which\n", + "defaults to zero) and a value yielded by the iterable argument.\n", + "\n", + "enumerate is useful for obtaining an indexed list:\n", + " (0, seq[0]), (1, seq[1]), (2, seq[2]), ...\n", + "```\n", + "\n", + "And `zip`:\n", + "\n", + "```Python\n", + "Init signature: zip(self, /, *args, **kwargs)\n", + "Docstring: \n", + "zip(*iterables, strict=False) --> Yield tuples until an input is exhausted.\n", + "\n", + " >>> list(zip('abcdefg', range(3), range(4)))\n", + " [('a', 0, 0), ('b', 1, 1), ('c', 2, 2)]\n", + "\n", + "The zip object yields n-length tuples, where n is the number of iterables\n", + "passed as positional arguments to zip(). The i-th element in every tuple\n", + "comes from the i-th iterable argument to zip(). This continues until the\n", + "shortest argument is exhausted.\n", + "\n", + "If strict is true and one of the arguments is exhausted before the others,\n", + "raise a ValueError.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "f7b34d40-e7c3-477c-9a78-68d26ea2dd81", + "metadata": {}, + "source": [ + "<br><br><br><br><br><br><br><br><br><br><br>\n", + "\n", + "The main takeaways, should be as follows:\n", + "\n", + "1. Yes, they both produce an iterator\n", + "2. `enumerate` takes one iterable object and returns indices along with the value\n", + "3. `zip` takes two iterable objects and returns their values\n", + "\n", + "Let's try them out by running the next cell. Does it behave as expected?" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "id": "bdea9148-e2b0-4107-92b5-61a83de02efc", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "We created: <enumerate object at 0x000001896037AED0>\n", + "(0, 'r') (1, 'o') (2, 'b')\n", + "We created: <zip object at 0x0000018960392680>\n", + "('r', 2) ('o', 3) ('b', 36)\n" + ] + } + ], + "source": [ + "thing_1 = 'roberts_string'\n", + "thing_2 = [2, 3, 36, 3., 1., 's', 7, '3']\n", + "\n", + "test_1 = enumerate(thing_1)\n", + "print(f'We created: {test_1}')\n", + "print(next(test_1), next(test_1), next(test_1))\n", + "\n", + "test_2 = zip(thing_1, thing_2)\n", + "print(f'We created: {test_2}')\n", + "print(next(test_2), next(test_2), next(test_2))" + ] + }, + { + "cell_type": "markdown", + "id": "d72f609b-0167-40f4-8e8f-c4476acf6417", + "metadata": {}, + "source": [ + "Can you see the difference?\n", + "\n", + "Looking at them in a for loop will also illustrate what's going on:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3687fdf-c949-44f7-b5df-961e63703d59", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First, enumerate:\n", + "0 r\n", + "1 o\n", + "2 b\n", + "3 e\n", + "4 r\n", + "5 t\n", + "6 s\n", + "7 _\n", + "8 s\n", + "9 t\n", + "10 r\n", + "11 i\n", + "12 n\n", + "13 g\n", + "\n", + "Then, zip:\n", + "r 2\n", + "o 3\n", + "b 36\n", + "e 3.0\n", + "r 1.0\n", + "t s\n", + "s 7\n", + "_ 3\n" + ] + } + ], + "source": [ + "print('First, enumerate:')\n", + "for i, j in enumerate(thing_1):\n", + " print(i, j)\n", + "print('\\nThen, zip:') \n", + "for i, j in zip(thing_1, thing_2):\n", + " print(i, j)" + ] + }, + { + "cell_type": "markdown", + "id": "3eedb9f0-29f9-4fea-b9ab-742f40ea8813", + "metadata": {}, + "source": [ + "Now let's return to our teams from the beginning of this assignment: let's apply our knowledge of `enumerate` and `zip` to see if we can print out the points per team in an efficient way." + ] + }, + { + "cell_type": "markdown", + "id": "bf6e780a-d153-4e68-b7f5-c4b83ffd564f", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 3:</b> \n", + " \n", + "Use <code>enumerate</code> to print out the summary of points per team according to the print statement.\n", + "<br><br>\n", + "<em>Hint: you only need to use one of the lists as an argument.</em>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73ea50cb-5c87-4f84-b618-4dd9ae38cc0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Team green has 5 points.\n", + "Team red has 9 points.\n", + "Team blue has 7 points.\n" + ] + } + ], + "source": [ + "team = ['green', 'red', 'blue']\n", + "score = [5, 9, 7]\n", + "\n", + "# for YOUR_CODE_WITH_enumerate_HERE:\n", + "# print(f'Team {} has {} points.')\n", + "\n", + "for i, j in enumerate(score):\n", + " print(f'Team {team[i]} has {j} points.')" + ] + }, + { + "cell_type": "markdown", + "id": "ac1ef287-e43a-4c78-9536-bdba4828906f", + "metadata": {}, + "source": [ + "You may have noticed that `enumerate` is a bit awkward for this case, since we still need to define an unnecessary iteration index to access the team name. Let's see if `zip` makes things easier:" + ] + }, + { + "cell_type": "markdown", + "id": "0bdfde09-88cf-4358-9af0-edc9c75acabf", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 4:</b> \n", + " \n", + "Use <code>zip</code> to print out the summary of points per team according to the print statement.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 203, + "id": "6bcfc8a9-57a1-41db-8449-fe689def8b5a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Team green has 5 points.\n", + "Team red has 9 points.\n", + "Team blue has 7 points.\n" + ] + } + ], + "source": [ + "team = ['green', 'red', 'blue']\n", + "score = [5, 9, 7]\n", + "\n", + "# for YOUR_CODE_WITH_zip_HERE:\n", + "# print(f'Team {} has {} points.')\n", + "\n", + "for i, j in zip(team, score):\n", + " print(f'Team {i} has {j} points.')" + ] + }, + { + "cell_type": "markdown", + "id": "edd3cf5a-4ad3-47ed-be1d-6aa8dc1cbd88", + "metadata": {}, + "source": [ + "That's really compact!" + ] + }, + { + "cell_type": "markdown", + "id": "bf60de78-247e-458e-9235-25ca4e2e4eb0", + "metadata": {}, + "source": [ + "## Modulo Operator `%`\n", + "\n", + "The modulo operator `%` is common in programming languanges, but not so much in our typical engineering problems. It turns out it can be very useful in iteration loops. It's actually quite simple: _the expression_ `a % b` _returns the remainder of `a/b`._ That's it!\n", + "\n", + "Take a look at the folloiwing examples that illustrate the operator:" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "id": "3db0d267-1440-4846-aca1-5a1fcb2d6c0f", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "5\n", + "1\n", + "0\n", + "0\n" + ] + } + ], + "source": [ + "print(6 % 5)\n", + "print(5 % 6)\n", + "print(1 % 10)\n", + "print(5 % 5)\n", + "print(0 % 5)" + ] + }, + { + "cell_type": "markdown", + "id": "123bf24c-913e-43dd-ae19-630711f2c8e6", + "metadata": {}, + "source": [ + "You can't divide by zero, just as in normal division.\n", + "\n", + "Below is an illustration for how the modulo is useful for doing things in a `for` loop that doesn't need to be done on every iteration." + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "id": "55f4af15-fc83-4233-ad80-93487141ca11", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "25\n", + "50\n", + "75\n" + ] + } + ], + "source": [ + "for i in range(100):\n", + " if i%25 == 0:\n", + " print(i)" + ] + }, + { + "cell_type": "markdown", + "id": "c2277b2c-19ed-41ca-912c-c62ed8b836a8", + "metadata": { + "tags": [] + }, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 5:</b> \n", + " \n", + "Experiment with the two Python cells above and make sure you understand what the modulo operator is and how it works.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "688ce8a1-c990-4f9c-b750-43c6b235a8e4", + "metadata": {}, + "source": [ + "We won't do anything else with `%` now, but will apply this in the last task of the assignment." + ] + }, + { + "cell_type": "markdown", + "id": "9df653a5-7e35-402c-a89c-4c1ef10802c0", + "metadata": { + "tags": [] + }, + "source": [ + "## Stem Plot Type\n", + "\n", + "You have probably used the matplotlib plot types `plot`, `hist` and `scatter` frequently; another type is `stem`, which is useful for indicating the magnitude of various points along a number line. As with a scatter plot, the data does not need to be ordered, and missing values are easy to handle." + ] + }, + { + "cell_type": "markdown", + "id": "f0ec055f-0e8a-469d-8463-afba0379d839", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 6:</b> \n", + " \n", + "Run the cell below and play with the values to make sure you are comfortable with the stem plot type. Do you see how it can handle two values with the same index?\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "835f184e-005a-4d2e-a673-0257a10660ad", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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IBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASCbvsPjDH/4Qn//85+OMM86IYcOGxQUXXBBbt27tj9kAgEGmNJ/Ff/zjH2PGjBlx2WWXxZo1a2LkyJHx3//933H66af303gAwGCSV1jcc889UV1dHcuWLevaN27cuNQzAQCDVF5vhTz66KMxbdq0uPrqq2PkyJFx4YUXRmNjY6/PaWtri9bW1m4bAHBiyissXn755WhoaIhzzz031q5dGwsWLIivfOUrsWLFiiM+J5vNRmVlZddWXV193EMDAMUpr7Do7OyMiy66KO6666648MIL40tf+lLMnz8/Ghoajvic+vr6aGlp6dqam5uPe2gAoDjlFRajRo2KiRMndtv34Q9/OHbv3n3E55SXl0dFRUW3DQA4MeUVFjNmzIjnn3++274XXnghxo4dm3QoAGBwyissbrnllti0aVPcdddd8dJLL8WDDz4YS5cujYULF/bXfADAIJJXWHzkIx+JVatWxc9//vOYPHly3HHHHfGDH/wgrr322v6aDwAYRPK6j0VExKc//en49Kc/3R+zAACDnO8KAQCSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLOAI2js6u/55+f97pdtjAN5bXmFx2223RSaT6badffbZ/TUbFEx29Y646I6mrsf3rH0+Jty6JrKrdxRwKoDiV5rvEyZNmhSPP/541+MhQ4YkHQgKLbt6R9y3fmeP/Z256NpfP3viQI8FMCjk/VZIaWlpnH322V3bmWee2R9zQUG0d3RG44aeUfFOjRt2elsE4AjyDosXX3wxqqqqoqamJj73uc/Fyy+/3Ov6tra2aG1t7bZBsbp/4yvRmet9TWfu0DoAesorLC6++OJYsWJFrF27NhobG2PPnj0xffr0eOONN474nGw2G5WVlV1bdXX1cQ8N/WXXmweSrgM42eQVFnV1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bt064HOcEGHx0EMPxc033xzf+MY34umnn46ZM2dGXV1d7N69u9CjFZX9+/fH+eefH/fee2+hRyl669ati4ULF8amTZuiqakpOjo6YtasWbF///5Cj1Z0Ro8eHXfffXds2bIltmzZEp/4xCfiqquuimeeeabQoxW1zZs3x9KlS2PKlCmFHqWoTZo0KV577bWubfv27YUeqSj98Y9/jBkzZsT73ve+WLNmTezYsSO+973vxemnnz7ww+ROAH/2Z3+WW7BgQbd9EyZMyH3ta18r0ETFLyJyq1atKvQYg8bevXtzEZFbt25doUcZFN7//vfnfvKTnxR6jKK1b9++3LnnnptramrKffzjH88tWrSo0CMVpW9961u5888/v9BjDApLlizJXXLJJYUeI5fL5XKD/oxFe3t7bN26NWbNmtVt/6xZs+Lf//3fCzQVJ5qWlpaIiBgxYkSBJyluBw8ejJUrV8b+/fujtra20OMUrYULF8aVV14ZV1xxRaFHKXovvvhiVFVVRU1NTXzuc5+Ll19+udAjFaVHH300pk2bFldffXWMHDkyLrzwwmhsbCzILIM+LF5//fU4ePBgnHXWWd32n3XWWbFnz54CTcWJJJfLxeLFi+OSSy6JyZMnF3qcorR9+/Y47bTTory8PBYsWBCrVq2KiRMnFnqsorRy5cp46qmnIpvNFnqUonfxxRfHihUrYu3atdHY2Bh79uyJ6dOnxxtvvFHo0YrOyy+/HA0NDXHuuefG2rVrY8GCBfGVr3wlVqxYMeCzDPi3m/aXd38Fey6XS/q17Jy8brrppvj9738fv/3tbws9StEaP358bNu2Ld56663453/+55g3b16sW7dOXLxLc3NzLFq0KH7961/HKaecUuhxil5dXV3XP5933nlRW1sbH/rQh2L58uWxePHiAk5WfDo7O2PatGlx1113RUTEhRdeGM8880w0NDTE3/zN3wzoLIP+jMUHPvCBGDJkSI+zE3v37u1xFgPy9eUvfzkeffTReOKJJ2L06NGFHqdolZWVxTnnnBPTpk2LbDYb559/fvzwhz8s9FhFZ+vWrbF3796YOnVqlJaWRmlpaaxbty7+4R/+IUpLS+PgwYOFHrGonXrqqXHeeefFiy++WOhRis6oUaN6hPyHP/zhglzEMOjDoqysLKZOnRpNTU3d9jc1NcX06dMLNBWDXS6Xi5tuuikefvjh+M1vfhM1NTWFHmlQyeVy0dbWVugxis7ll18e27dvj23btnVt06ZNi2uvvTa2bdsWQ4YMKfSIRa2trS2effbZGDVqVKFHKTozZszocUn8Cy+8EGPHjh3wWU6It0IWL14cc+fOjWnTpkVtbW0sXbo0du/eHQsWLCj0aEXl7bffjpdeeqnr8c6dO2Pbtm0xYsSIGDNmTAEnKz4LFy6MBx98MH75y1/G8OHDu86IVVZWxtChQws8XXH5+te/HnV1dVFdXR379u2LlStXxpNPPhmPPfZYoUcrOsOHD+/xOZ1TTz01zjjjDJ/feQ9f/epXY86cOTFmzJjYu3dvfOc734nW1taYN29eoUcrOrfccktMnz497rrrrvjrv/7r+I//+I9YunRpLF26dOCHKexFKen86Ec/yo0dOzZXVlaWu+iii1wW+B6eeOKJXET02ObNm1fo0YrOe71OEZFbtmxZoUcrOtdff33X//fOPPPM3OWXX5779a9/XeixBg2Xmx7ZZz/72dyoUaNy73vf+3JVVVW5v/zLv8w988wzhR6raP3Lv/xLbvLkybny8vLchAkTckuXLi3IHL42HQBIZtB/xgIAKB7CAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIJn/D1NPidlz6EpfAAAAAElFTkSuQmCC", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "value = [2, 7, 5, 1, 8]\n", + "index = [0, 2, 2, 6, 4]\n", + "plt.plot(index, value, 'o')\n", + "plt.stem(index, value);" + ] + }, + { + "cell_type": "markdown", + "id": "793f0d58-c8ba-492f-a450-29654d0a754b", + "metadata": {}, + "source": [ + "## Bringing it all together: Earthquake analysis\n", + "\n", + "To put the ideas above into practice, consider the following data, in the form of three lists, that describes the largest earthquakes in the world since 2025, that are also located on the ring of fire (Source: [Wikipedia](https://en.wikipedia.org/wiki/Lists_of_earthquakes))." + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "0228a5a7-49a8-475a-a63a-bd07f8128e01", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "year = [2003, 2011, 2013,\n", + " 2006, 2022,\n", + " 2017, 2019, 2001, 2010, 2015,\n", + " 2014, 2022, 2016,\n", + " 2000, 2007, 2012, 2005, 2004]\n", + "\n", + "magn = [8.3, 9.1, 8.3,\n", + " 8.3, 7.6,\n", + " 8.2, 8.0, 8.4, 8.8, 8.3,\n", + " 8.2, 7.6, 7.9,\n", + " 8.0, 8.4, 8.6, 8.6, 9.1]\n", + "\n", + "site = ['Japan, HokkaidÅ',\n", + " 'Japan, Honshu',\n", + " 'Russia, Sea of Okhotsk',\n", + " 'Russia, Kuril Islands',\n", + " 'Mexico, Michoacán',\n", + " 'Mexico, Chiapas',\n", + " 'Peru, Loreto',\n", + " 'Peru, Arequipa',\n", + " 'Chile, Concepción',\n", + " 'Chile, Coquimbo',\n", + " 'Chile, Iquique',\n", + " 'Papua New Guinea, Morobe',\n", + " 'Papua New Guinea, New Ireland',\n", + " 'Papua New Guinea',\n", + " 'Indonesia, Sumatra',\n", + " 'Indonesia, Indian Ocean',x\n", + " 'Indonesia, Simeulue',\n", + " 'Indonesia, Sumatra']" + ] + }, + { + "cell_type": "markdown", + "id": "7addd27e-f9c8-4966-83ce-df66a516c2ab", + "metadata": {}, + "source": [ + "We can visualize the data in the following figure. Can you find an easy way to recreate this plot?\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "8aa46742-7241-4788-a344-2a8d878c2746", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px\">\n", + "<p>\n", + "<b>Task 1:</b> \n", + " \n", + "Using the tools described in this assignment, recreate the plot above. Note that to avoid cluttering the figure, the detailed earthquake information is only plotted for years that are a multiple of 5 (i.e., 2000, 2005, etc.).\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "f380a6f2-3de3-4e58-8495-cc4db2d5e232", + "metadata": {}, + "source": [ + "**Hints:** create a for loop using 3 iterables (`x`, `y` and `z`) based on _one_ of these iterable tools: `range`, `enumerate` or `zip`. Use the modulo operator `%` to choose the 5-year multiples. An outline of the solution in pseudo-code is also provided here, each of which should be one line in your code (except item 5):\n", + "```\n", + "1 for each iterable item\n", + "2 if the year is a multiple of 5\n", + "3 create the label (string)\n", + "4 annotate the plot (i.e., annotate(...))\n", + "5 include any additional formatting (more than one line)\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "de8d3186-1025-46f5-874b-16ef0a79c280", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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v6TKZEjr5JVC3LlfAre6Ne4erGhGDcxIRERE5jdz03GDy60b84SJo7FP7FVHRERk5bLyf5e1HFXGhIiIiMjKBXjUk7UcVcaEiIiIyMolDAuTtRxVxoSIiIjIyrnVdUR7v/rVlmnvV58dqmuBCREREZEN2Da1e5VJEcchqj2mkkRERDZi29TuuPzbXYS/sxcA0KNFQ7w/6nFeGZIBrxARERHZENe6DtLPK4d1YDIkEyZEREREpHhMiIiIiEjxmBARERGR4jEhIiIiIsVjQkRERESKx4SIiIiIFI8JERERESkeEyIiIiJSPCZEREREpHhMiIiIiEjxmBARERGR4jEhIiIiIsVjQkRERESKx4SIiIiIFI8JERERESkeEyIiIiJSPCZEREREpHhMiIiIiEjxmBARERGR4jEhIiIiIsVjQkRERESKx4SIiIiIFI8JERERESkeEyIiIiJSPCZEREREpHhMiIiIiEjxmBARERGR4jEhIiIiIsVjQkRERESKx4SIiIiIFI8JERERESkeEyIiIiJSPCZEREREpHhMiIiIiEjxmBARERGR4jEhIiIiIsVjQkRERESKx4SIiIiIFI8JERERESkeEyIiIiJSPCZEREREpHhMiIiIiEjxmBARERGR4jEhIiIiIsVjQkRERESKx4SIiIiIFI8JERERESme1SdEV69exUsvvQQvLy+4uLggNDQUx44ds3RYREREZEccLR1AdfLz89G1a1f06tULX3/9NRo3boyMjAw0aNDA0qERERGRHbHqhCg+Ph7+/v5ISkqSlgUFBVkuICIiIrJLVn3LbNu2bejUqROGDBmCxo0bIywsDOvWrbN0WERERGRnrDohunTpEj744AO0aNEC33zzDSZNmoTp06fjX//6V5XrFBUVobCwUOdFREREVB2rvmVWVlaGTp064e233wYAhIWF4cyZM/jggw8wevRovevExsZi4cKF5gyTiIiIbJxVXyHy8fFBmzZtdJY99thjyMrKqnKdefPmoaCgQHplZ2ebOkwiIiKycVZ9hahr1644d+6czrLz588jMDCwynWcnZ3h7Oxs6tCIiIjIjlj1FaKZM2fi0KFDePvtt3Hx4kVs3LgRa9euxZQpUywdGhEREdkRq06InnjiCWzZsgWfffYZQkJCsHjxYiQmJmLUqFGWDo2IiIjsiFXfMgOAfv36oV+/fpYO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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(year, magn, 'o')\n", + "plt.stem(year, magn)\n", + "\n", + "\n", + "for x, y, z in zip(year, magn, site):\n", + " if x%5 == 0:\n", + " label = f\"M_w = {y} in {x} at {z}\"\n", + " plt.annotate(label, \n", + " (x,y), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", \n", + " xytext=(15,50),\n", + " fontsize=8,\n", + " ha='left',\n", + " rotation=35,\n", + " arrowprops=dict(facecolor='black', shrink=0.1, width=0.5, headwidth=5)) \n", + "plt.xlim(1999, 2025)\n", + "plt.ylim(5,15)\n", + "plt.xlabel('Year of Earthquake')\n", + "plt.ylabel('Magnitude of Earthquake')\n", + "plt.title('Biggest earthquakes each year since 2000 on Ring of Fire');\n", + "# plt.savefig('earthquakes.svg')" + ] + }, + { + "cell_type": "markdown", + "id": "80580ab9-4d79-46b1-ae6e-775af04d43ad", + "metadata": {}, + "source": [ + "**End of notebook.**\n", + "<h2 style=\"height: 60px\">\n", + "</h2>\n", + "<h3 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">\n", + " <img alt=\"Creative Commons License\" style=\"border-width:; width:88px; height:auto; padding-top:10px\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" />\n", + " </a>\n", + " <a rel=\"TU Delft\" href=\"https://www.tudelft.nl/en/ceg\">\n", + " <img alt=\"TU Delft\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\"/>\n", + " </a>\n", + " <a rel=\"MUDE\" href=\"http://mude.citg.tudelft.nl/\">\n", + " <img alt=\"MUDE\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\"/>\n", + " </a>\n", + " \n", + "</h3>\n", + "<span style=\"font-size: 75%\">\n", + "© Copyright 2023 <a rel=\"MUDE Team\" href=\"https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595\">MUDE Teaching Team</a> TU Delft. This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>." + ] + } + ], + "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" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/content/Week_2_3/WS11_DFT_you_try_meow.ipynb b/content/Week_2_3/WS11_DFT_you_try_meow.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..46437f7a9d8910be29a8c46e413fa656661c61e3 --- /dev/null +++ b/content/Week_2_3/WS11_DFT_you_try_meow.ipynb @@ -0,0 +1,469 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4af6b45f-f7aa-46a8-9d79-c1579ae0a799", + "metadata": {}, + "source": [ + "# WS11: Discrete Fourier Transform (DFT): You Try Meow (Miauw)\n", + "\n", + "<h1 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\" style=\"width:100px\" />\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\" style=\"width:100px\" />\n", + "</h1>\n", + "<h2 style=\"height: 10px\">\n", + "</h2>\n", + "\n", + "*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/): Week 2.3, Signal Processing. For: November 29, 2023*" + ] + }, + { + "cell_type": "markdown", + "id": "eff9791a", + "metadata": {}, + "source": [ + "The goal of this workshop to work with the _Discrete Fourier Transform_ (DFT), implemented in Python as the _Fast Fourier Transform_ (FFT) through `np.fft.fft`, and to understand and interpret its output.\n", + "\n", + "The notebook consists of two parts:\n", + "- The first part (Task 0) is a demonstration of the use of the DFT (_you read and execute the code cells_),\n", + "- The second part is a simple exercise with the DFT (_you write the code_).\n", + "\n", + "To start off, let's do a quick quiz question: _what is the primary purpose of the DFT?_\n", + "\n", + "_Run the code cell below to find the answer._" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36a05bbd-69a1-4805-a4ad-e84de89de560", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "%%html\n", + "<iframe src=\"https://tudelft.h5p.com/content/1292126914399042257/embed\" aria-label=\"Meow\" width=\"1088\" height=\"637\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" allow=\"autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *\"></iframe><script src=\"https://tudelft.h5p.com/js/h5p-resizer.js\" charset=\"UTF-8\"></script>" + ] + }, + { + "cell_type": "markdown", + "id": "03f3b3c6-d3f6-4121-9f39-c30c8bf70ea5", + "metadata": {}, + "source": [ + "That's right! We convert our signal into the frequency domain.\n", + "\n", + "And if you would like an additional explanation of the key frequencies, you can find it [here](https://medium.com/@kovalenko.alx/fun-with-fourier-591662576a77)." + ] + }, + { + "cell_type": "markdown", + "id": "bfca25a5-75ce-4837-9387-01f95be10bd0", + "metadata": { + "id": "0491cc69" + }, + "source": [ + "<div style=\"background-color:#facb8e; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\"> <p>Note the use of <code>zip</code>, <code>stem</code>, <code>annotate</code> and the modulo operator\n", + "<code>%</code>. Refer to PA11 if you do not understand these tools. Furthermore, note that the term _modulus_ is also used here (and in the textbook), which is another term for _absolute value._</p></div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da13fbf3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "13234855", + "metadata": {}, + "source": [ + "## Task 0: Demonstration of DFT using pulse function\n", + "\n", + "In the first part of this notebook, we use $x(t)=\\Pi(\\frac{t}{4})$, and its Fourier transform $X(f)=4 \\,\\textrm{sinc}(4f)$, as an example (see the first worked example in Chapter 3 on the Fourier transform). The pulse lasts for 4 seconds in the time domain; for convenience, below it is not centered at $t$ = 0, but shifted (delayed) to the right.\n", + "\n", + "The signal $x(t)$ clearly is non-periodic and is an energy signal; apart from a short time span of 'activity' it is zero elsewhere.\n", + "\n", + "We create a pulse function $x(t)$ in discrete time $x_n$ by numpy. The total signal duration is $T$ = 20 seconds (observation or record length). The sampling interval is $\\Delta t$ = 1 second. There are $N$ = 20 samples, and each sample represents 1 second, hence $N \\Delta t = T$.\n", + "\n", + "Note that the time array starts at $t$ = 0 s, and hence, the last sample is at $t$ = 19 s (and not at $t$ = 20 s, as then we would have 21 samples).\n", + "\n", + "### Task 0.1: Visualize the Signal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b33e1be2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "t = np.arange(0,20,1)\n", + "xt = np.concatenate((np.zeros(8), np.ones(4), np.zeros(8)))\n", + "\n", + "plt.plot(t, xt,'o')\n", + "plt.stem(t[8:12], xt[8:12]) \n", + "plt.xticks(ticks=np.arange(0,21,5), labels=np.arange(0,21,5))\n", + "plt.xlabel('time [s]')\n", + "plt.ylabel('xn');" + ] + }, + { + "cell_type": "markdown", + "id": "a338eede", + "metadata": {}, + "source": [ + "### Task 0.2: Evaluate (and visualize) the DFT\n", + "\n", + "We use `numpy.fft.fft` to compute the one-dimensional Discrete Fourier Transform (DFT) of $x_n$, which takes a signal as argument and returns an array of coefficients (refer to the [documentation](https://numpy.org/doc/stable/reference/generated/numpy.fft.fft.html) as needed).\n", + "\n", + "The DFT converts $N$ samples of the time domain signal $x_n$, into $N$ samples of the frequency domain. In this case, it produces $X_k$ with $k = 0, 1, 2, \\ldots, N-1$, with $N$ = 20, which are complex numbers. " + ] + }, + { + "cell_type": "markdown", + "id": "26d0f558-caa7-41f2-9477-60d74940fc10", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.2:</b> \n", + "Read the code cell below before executing it and identify the following:\n", + "<ol>\n", + " <li>Where is the DFT computed, and what is the output?</li>\n", + " <li>Why is the modulus (absolute value) used on the DFT output?</li>\n", + " <li>What are the values are used for the x and y axes of the plot?</li>\n", + " <li>How is frequency information found and added to the plot (mathematically)?</li>\n", + "</ol>\n", + "Once you understand the figure, continue reading to understand <em>what do these 20 complex numbers mean, and how should we interpret them?</em>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3acb465b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "abs_fft = np.abs(np.fft.fft(xt))\n", + "index_fft = np.arange(0,20,1)\n", + "plt.plot(index_fft, abs_fft, 'o')\n", + "\n", + "freq = np.arange(0, 1, 0.05)\n", + "for x,y in zip(index_fft, abs_fft):\n", + " if x%5 == 0 or x==19:\n", + " label = f\"f={freq[x]:.2f} Hz\"\n", + " plt.annotate(label, \n", + " (x,y),\n", + " textcoords=\"offset points\", \n", + " xytext=(0,10),\n", + " fontsize=10,\n", + " ha='center') \n", + "plt.ylim(0,5)\n", + "plt.xlim(-2,21)\n", + "plt.xlabel('fft-index')\n", + "plt.ylabel('$|X_k|$')\n", + "plt.stem(index_fft, abs_fft);" + ] + }, + { + "cell_type": "markdown", + "id": "09c72cdd", + "metadata": {}, + "source": [ + "The frequency resolution $\\Delta f$ equals one-over-the-measurement-duration, hence $\\Delta f = 1/T$. With that knowledge, we can reconstruct the frequencies expressed in Hertz.\n", + "\n", + "The spectrum of the sampled signal is periodic in the sampling frequency $f_s$ which equals 1 Hz ($\\Delta t$ = 1 s). Therefore, it is computed just for one period $[0,f_s)$. The last value, with index 19, represents the component with frequency $f$ = 0.95 Hz. A spectrum is commonly presented and interpreted as double-sided, so in the above graph we can interpret the spectral components with indices 10 to 19 corresponding to negative frequencies. \n", + "\n", + "### Task 0.3: Identify negative frequencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df1f483b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "abs_fft = np.abs(np.fft.fft(xt))\n", + "plt.stem(index_fft, abs_fft)\n", + "plt.plot(index_fft, abs_fft, 'o')\n", + "\n", + "freq = np.concatenate((np.arange(0, 0.5, 0.05), np.arange(-0.5, 0, 0.05)))\n", + "for x,y in zip(index_fft, abs_fft):\n", + " if x%5 == 0 or x==19:\n", + " label = f\"f={freq[x]:.2f} Hz\"\n", + " plt.annotate(label, \n", + " (x,y),\n", + " textcoords=\"offset points\", \n", + " xytext=(0,10),\n", + " fontsize=10,\n", + " ha='center') \n", + "plt.ylim(0,5)\n", + "plt.xlim(-2,21)\n", + "plt.xlabel('fft-index')\n", + "plt.ylabel('$|X_k|$');" + ] + }, + { + "cell_type": "markdown", + "id": "2d87a9a6", + "metadata": { + "tags": [] + }, + "source": [ + "Now we can interpret the DFT of the $x(t)=\\Pi(\\frac{t}{4})$. The sampling interval is $\\Delta t$ = 1 second, and the obsesrvation length is T=20 seconds, and we have N=20 samples. \n", + "- We can recognize a bit of a sinc function.\n", + "- The DFT is computed from 0 Hz, for positive frequencies up to $\\frac{fs}{2} = 0.5$ Hz, after which the negative frequencies follow from -0.5 to -0.05 Hz.\n", + "- $X(f)=4 \\textrm{sinc}(4f)$ has its first null at $f=0.25$Hz.\n", + "\n", + "### Task 0.4: Create symmetric plot\n", + "\n", + "For convenient visualization, we may want to explicitly shift the negative frequencies to the left-hand side to create a symmetric plot. We can use `numpy.fft.fftshift` to do that. In other words, the zero-frequency component appears in the center of the spectrum. Now, it nicely shows a symmetric sprectrum. It well resembles the sinc-function (taking into account that we plot the modulus/absolute value). The output of the DFT still consists of $N$ = 20 elements. To enable this, we set up a new frequency array (in Hz) on the interval $[-fs/2,fs/2)$." + ] + }, + { + "cell_type": "markdown", + "id": "e1eef6b6-1e90-43db-b059-6521b2a840d3", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.4:</b> \n", + "Read the code cell below before executing it and identify how the plot is modified based on the (new) specification of frequency. Note that it is more than just the <code>freq</code> variable!\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8aac894", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "abs_fft_shift = np.abs(np.fft.fftshift(np.fft.fft(xt)))\n", + "freq = np.arange(-0.5, 0.5, 0.05)\n", + "plt.stem(freq, abs_fft_shift)\n", + "plt.plot(freq, abs_fft_shift, 'o')\n", + "plt.ylabel('|Xk|')\n", + "plt.xlabel('frequency [Hz]');" + ] + }, + { + "cell_type": "markdown", + "id": "569ca2d3", + "metadata": {}, + "source": [ + "### Task 0.5: Showing spectrum only for positive frequencies\n", + "\n", + "In practice, because of the symmetry, one typically plots only the right-hand side of the (double-sided) spectrum, hence only the part for positive frequencies $f \\geq 0$. This is simply a matter of preference, and a way to save some space." + ] + }, + { + "cell_type": "markdown", + "id": "a26e361d-c5fa-47a2-b32c-416cc3d10659", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.5:</b> \n", + "Can you identify what has changed (in the code and visually), compared to the previous plot?\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b9608638", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "N=len(xt)\n", + "abs_fft = np.abs(np.fft.fft(xt))\n", + "freq = np.arange(0.0, 1.0, 0.05)\n", + "plt.plot(freq[:int(N/2)], abs_fft[:int(N/2)], 'o')\n", + "plt.stem(freq[:int(N/2)], abs_fft[:int(N/2)])\n", + "plt.ylabel('$|X_k|$')\n", + "plt.xlabel('frequency [Hz]');" + ] + }, + { + "cell_type": "markdown", + "id": "83c4ca67-9234-4741-a56f-294a12bcd98a", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.6:</b> \n", + "Confirm that you understand how we have arrived at the plot above, which illustrates the magnitude (amplitude) spectrum for frequencies $f \\in [0,f_s/2)$, rather than $[0,f_s)$.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "9f5558b4", + "metadata": {}, + "source": [ + "## Task 1: Application of DFT using simple cosine" + ] + }, + { + "cell_type": "markdown", + "id": "46dd5c0c", + "metadata": {}, + "source": [ + "It is always a good idea, in spectral analysis, to run a test with a very simple, basic signal. In this way you can test and verify your coding and interpretation of the results. \n", + "\n", + "Our basic signal is just a plain cosine. We take the amplitude equal to one, and zero initial phase, so the signal reads $x(t) = \\cos(2 \\pi f_c t)$, with $f_c$ = 3 Hz in this exercise. With such a simple signal, we know in advance how the spectrum should look like. Namely just a spike at $f$ = 3 Hz, and also one at $f$ = -3 Hz, as we're, for mathematical convenience, working with double sided spectra. The spectrum should be zero at all other frequencies.\n", + "\n", + "As a side note: the cosine is strictly a periodic function, not a-periodic (as above); still, the Fourier transform of the cosine is defined as two Dirac delta pulses or peaks (at 3 Hz and -3 Hz). You may want to check out the second worked example in Chapter 3 on the Fourier transform: Fourier transform in the limit." + ] + }, + { + "cell_type": "markdown", + "id": "87de3cc5", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 1:</b> \n", + " \n", + "Create a sampled (discrete time) cosine signal by sampling at $f_s$ = 10 Hz, for a duration of $T$ = 2 seconds (make sure you use exactly $N$ = 20 samples). Plot the sampled signal, compute its DFT and plot its magnitude spectrum $|X_k|$ with proper labeling of the axes (just like we did in the first part of this notebook). Include a plot of the spectrum of the sampled cosine signal using only the positive frequencies (up to $f_s/2$, as in the last plot of the previous task).\n", + "\n", + "<em>Note: you are expected to produce three separate plots.</em>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28ad034e", + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE_PLOT_1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "af87d120", + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE_PLOT_2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6fd9014c", + "metadata": {}, + "outputs": [], + "source": [ + "YOUR_CODE_HERE_PLOT_3" + ] + }, + { + "cell_type": "markdown", + "id": "6a4a306d-a372-460e-b312-e8fa138a9797", + "metadata": {}, + "source": [ + "**End of notebook.**\n", + "<h2 style=\"height: 60px\">\n", + "</h2>\n", + "<h3 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">\n", + " <img alt=\"Creative Commons License\" style=\"border-width:; width:88px; height:auto; padding-top:10px\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" />\n", + " </a>\n", + " <a rel=\"TU Delft\" href=\"https://www.tudelft.nl/en/ceg\">\n", + " <img alt=\"TU Delft\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\"/>\n", + " </a>\n", + " <a rel=\"MUDE\" href=\"http://mude.citg.tudelft.nl/\">\n", + " <img alt=\"MUDE\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\"/>\n", + " </a>\n", + " \n", + "</h3>\n", + "<span style=\"font-size: 75%\">\n", + "© Copyright 2023 <a rel=\"MUDE Team\" href=\"https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595\">MUDE Teaching Team</a> TU Delft. This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>." + ] + } + ], + "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" + }, + "latex_envs": { + "LaTeX_envs_menu_present": true, + "autoclose": false, + "autocomplete": true, + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 1, + "hotkeys": { + "equation": "Ctrl-E", + "itemize": "Ctrl-I" + }, + "labels_anchors": false, + "latex_user_defs": false, + "report_style_numbering": false, + "user_envs_cfg": false + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/content/Week_2_3/WS11_solution.ipynb b/content/Week_2_3/WS11_solution.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..e96f8fdd6a2fc8e153e51ed8adec4174b32b0662 --- /dev/null +++ b/content/Week_2_3/WS11_solution.ipynb @@ -0,0 +1,568 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4af6b45f-f7aa-46a8-9d79-c1579ae0a799", + "metadata": {}, + "source": [ + "# WS11: Discrete Fourier Transform (DFT): You Try Meow (Miauw)\n", + "\n", + "<h1 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\" style=\"width:100px\" />\n", + " <img src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\" style=\"width:100px\" />\n", + "</h1>\n", + "<h2 style=\"height: 10px\">\n", + "</h2>\n", + "\n", + "*[CEGM1000 MUDE](http://mude.citg.tudelft.nl/): Week 2.3, Signal Processing. For: November 29, 2023*" + ] + }, + { + "cell_type": "markdown", + "id": "eff9791a", + "metadata": {}, + "source": [ + "The goal of this workshop to work with the _Discrete Fourier Transform_ (DFT), implemented in Python as the _Fast Fourier Transform_ (FFT) through `np.fft.fft`, and to understand and interpret its output.\n", + "\n", + "The notebook consists of two parts:\n", + "- The first part (Task 0) is a demonstration of the use of the DFT (_you read and execute the code cells_),\n", + "- The second part is a simple exercise with the DFT (_you write the code_).\n", + "\n", + "To start off, let's do a quick quiz question: _what is the primary purpose of the DFT?_\n", + "\n", + "_Find the answer [here](https://tudelft.h5p.com/content/1292126914399042257/embed)._" + ] + }, + { + "cell_type": "markdown", + "id": "03f3b3c6-d3f6-4121-9f39-c30c8bf70ea5", + "metadata": {}, + "source": [ + "That's right! We convert our signal into the frequency domain. And if you would like an additional explanation of the key frequencies, you can find it [here](https://medium.com/@kovalenko.alx/fun-with-fourier-591662576a77)." + ] + }, + { + "cell_type": "markdown", + "id": "bfca25a5-75ce-4837-9387-01f95be10bd0", + "metadata": { + "id": "0491cc69" + }, + "source": [ + "<div style=\"background-color:#facb8e; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\"> <p>Note the use of <code>zip</code>, <code>stem</code>, <code>annotate</code> and the modulo operator\n", + "<code>%</code>. Refer to PA11 if you do not understand these tools. Furthermore, note that the term _modulus_ is also used here (and in the textbook), which is another term for _absolute value._</p></div>" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "da13fbf3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "13234855", + "metadata": {}, + "source": [ + "## Task 0: Demonstration of DFT using pulse function\n", + "\n", + "In the first part of this notebook, we use $x(t)=\\Pi(\\frac{t}{4})$, and its Fourier transform $X(f)=4 \\,\\textrm{sinc}(4f)$, as an example (see the first worked example in Chapter 3 on the Fourier transform). The pulse lasts for 4 seconds in the time domain; for convenience, below it is not centered at $t$ = 0, but shifted (delayed) to the right.\n", + "\n", + "The signal $x(t)$ clearly is non-periodic and is an energy signal; apart from a short time span of 'activity' it is zero elsewhere.\n", + "\n", + "We create a pulse function $x(t)$ in discrete time $x_n$ by numpy. The total signal duration is $T$ = 20 seconds (observation or record length). The sampling interval is $\\Delta t$ = 1 second. There are $N$ = 20 samples, and each sample represents 1 second, hence $N \\Delta t = T$.\n", + "\n", + "Note that the time array starts at $t$ = 0 s, and hence, the last sample is at $t$ = 19 s (and not at $t$ = 20 s, as then we would have 21 samples).\n", + "\n", + "### Task 0.1: Visualize the Signal" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b33e1be2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "t = np.arange(0,20,1)\n", + "xt = np.concatenate((np.zeros(8), np.ones(4), np.zeros(8)))\n", + "\n", + "plt.plot(t, xt,'o')\n", + "plt.stem(t[8:12], xt[8:12]) \n", + "plt.xticks(ticks=np.arange(0,21,5), labels=np.arange(0,21,5))\n", + "plt.xlabel('time [s]')\n", + "plt.ylabel('xn');" + ] + }, + { + "cell_type": "markdown", + "id": "a338eede", + "metadata": {}, + "source": [ + "### Task 0.2: Evaluate (and visualize) the DFT\n", + "\n", + "We use `numpy.fft.fft` to compute the one-dimensional Discrete Fourier Transform (DFT) of $x_n$, which takes a signal as argument and returns an array of coefficients (refer to the [documentation](https://numpy.org/doc/stable/reference/generated/numpy.fft.fft.html) as needed).\n", + "\n", + "The DFT converts $N$ samples of the time domain signal $x_n$, into $N$ samples of the frequency domain. In this case, it produces $X_k$ with $k = 0, 1, 2, \\ldots, N-1$, with $N$ = 20, which are complex numbers. " + ] + }, + { + "cell_type": "markdown", + "id": "26d0f558-caa7-41f2-9477-60d74940fc10", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.2:</b> \n", + "Read the code cell below before executing it and identify the following:\n", + "<ol>\n", + " <li>Where is the DFT computed, and what is the output?</li>\n", + " <li>Why is the modulus (absolute value) used on the DFT output?</li>\n", + " <li>What are the values are used for the x and y axes of the plot?</li>\n", + " <li>How is frequency information found and added to the plot (mathematically)?</li>\n", + "</ol>\n", + "Once you understand the figure, continue reading to understand <em>what do these 20 complex numbers mean, and how should we interpret them?</em>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3acb465b", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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4OBgDRgwwGMZScrIyHAvEx0drfDwcI82ZWVlyszMrLbf2jh79qxGjRqlnj17auHChfXuDwCAxsapon+qzakip9OphIQEPf3002rTpo1cLpdmzZqlvn37asSIEe52w4cP1+jRozV9+nRJUlJSkiZMmKCBAwcqJiZGb775pvLy8jR16lRJ508RJSYmav78+erWrZu6deum+fPnq0WLFho/fny9X+Pjjz+u/Px8ffbZZ/rpp588XntwcHC9+wcAoKERXOrolVdeUVBQkMaOHaszZ85o+PDhSktLU2BgoLvNvn37dPjwYff0uHHjdOTIEc2dO9d947v09HSPUzrPPPOMzpw5oyeffFLHjh3Trbfeqk8//VShoaH1rjkzM1MFBQXq1auXx/yNGzdWeS0MAAB247Au/eqJwUpKSuR0OlVcXKzWrVv7uhwAAHAFavP5zTUuAADAGAQXAABgDIILAAAwBsEFAAAYg+ACAACMQXABAMDLLMvSlClT5HK55HA4tGPHDl+X1GQQXAAA8LL169crLS1NH330kfu+XbVVWlqqGTNmqG3btmrZsqVGjhypgwcP1rjMiRMnlJiYqKioKDVv3lyDBw9Wdna2R5tJkybJ4XB4PAYNGlRjvykpKerfv3+l+fv372/0YEZw8YGy8gq9lfUP/Z8Pd+qtrH+orLzC1yUBALxo3759ioiI0ODBgxUeHq6goNrf7zUxMVFr167VqlWrtGXLFp08eVL33Xefzp07V+0yjz32mDIyMrRy5Url5OQoLi5OI0aM0KFDhzza3X333SooKHA/0tPTa12fr9g2uKSmprpvgd+UpKbvVs/n/qoXPt6jFV8c0Asf71HP5/6q1PTdvi4NAOAFkyZN0owZM5SXlyeHw6HOnTvXuo/i4mK99dZbevnllzVixAjdeOONevfdd5WTk6MNGzZUucyZM2f0l7/8RQsWLNBtt92mrl27KiUlRdHR0VqyZIlH25CQEIWHh7sfV/qTN5dT1dEch8OhTZs2eaV/yabBJTs7W2+++aZuuOEGX5fiVanpu/XG5lxVXHKv4gpLemNzLuEFAJqARYsWae7cuerQoYMKCgrcp2rmz5+vVq1a1fjIysqSJG3btk0///yz4uLi3P1GRkaqT58++vzzz6v8d8vLy3Xu3DldddVVHvObN2+uLVu2eMzbtGmTwsLC1L17d02ePFlF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AABjEFxge5ZlacqUKXK5XHI4HNqxY4evS0INGC+zMF4wDcEFtrd+/XqlpaXpo48+UkFBgfr06VPrPkpLSzVjxgy1bdtWLVu21MiRI3Xw4MEal0lNTdXNN9+s0NBQhYWF6YEHHtB3333n0WbSpElyOBwej0GDBtXYb0pKivr3719p/v79+5vEB4evxislJaXSWISHh3u0sSxLKSkpioyMVPPmzTVs2DDt2rXrsv0yXjWry3h17ty50ng5HA5NmzbN3aau+9egmwdUmt9UxgsEFxhg3759ioiI0ODBgxUeHq6goKBa95GYmKi1a9dq1apV2rJli06ePKn77rtP586dq3aZzMxMTZs2TVu3blVGRobKy8sVFxenU6dOebS7++67VVBQ4H6kp6fXur6mxFfjJUm9e/f2GIucnByP5xcsWKCFCxdq8eLFys7OVnh4uO68806dOHGi1jU2Fb4ar+zsbI+xysjIkCQ99NBDHu3Yv3ApggtsbdKkSZoxY4by8vLkcDjUuXPnWvdRXFyst956Sy+//LJGjBihG2+8Ue+++65ycnK0YcOGapdbv369Jk2apN69e6tfv35avny58vLytG3bNo92ISEhCg8Pdz9cLleta6xKVX9tOhwObdq0ySv9NwRfjpckBQUFeYxFu3bt3M9ZlqVXX31Vc+bM0ZgxY9SnTx+98847On36tN5///1a13kpxqt249WuXTuPsfroo4/UpUsXDR061KMd+xcuRXCBrS1atEhz585Vhw4dVFBQoOzsbEnS/Pnz1apVq0qPMNfVylv4S+Ut/KX+35YtkqRt27bp559/VlxcnLvfyMhI9enTR59//vkV11JcXCxJld44N23apLCwMHXv3l2TJ09WUVFRfV+2pPOv/eK/NGfOnKmwsDD17NnTK/03hNqM18VjFea6WllZWZLqN1579+5VZGSkoqOj9atf/Ur/+Mc/3M/l5uaqsLDQo9+QkBANHTq0VttBTa+d8TqvtvtXWVmZ3n33XT366KNyOBwez7F/4VK1PyYINCKn06nQ0FAFBgZ6XK8wdepUjR07tlL7M2XlunvR+TfUmwacP89dWFio4OBgXXPNNR5t27dvr8LCwiuqw7IsJSUlaciQIR7XAMTHx+uhhx5SVFSUcnNz9dxzz+mOO+7Qtm3bFBISUm1/OTk5CnNdrdNl5w+lhy0OlGVZlV67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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "abs_fft = np.abs(np.fft.fft(xt))\n", + "index_fft = np.arange(0,20,1)\n", + "plt.plot(index_fft, abs_fft, 'o')\n", + "\n", + "freq = np.arange(0, 1, 0.05)\n", + "for x,y in zip(index_fft, abs_fft):\n", + " if x%5 == 0 or x==19:\n", + " label = f\"f={freq[x]:.2f} Hz\"\n", + " plt.annotate(label, \n", + " (x,y),\n", + " textcoords=\"offset points\", \n", + " xytext=(0,10),\n", + " fontsize=10,\n", + " ha='center') \n", + "plt.ylim(0,5)\n", + "plt.xlim(-2,21)\n", + "plt.xlabel('fft-index')\n", + "plt.ylabel('$|X_k|$')\n", + "plt.stem(index_fft, abs_fft);" + ] + }, + { + "cell_type": "markdown", + "id": "09c72cdd", + "metadata": {}, + "source": [ + "The frequency resolution $\\Delta f$ equals one-over-the-measurement-duration, hence $\\Delta f = 1/T$. With that knowledge, we can reconstruct the frequencies expressed in Hertz.\n", + "\n", + "The spectrum of the sampled signal is periodic in the sampling frequency $f_s$ which equals 1 Hz ($\\Delta t$ = 1 s). Therefore, it is computed just for one period $[0,f_s)$. The last value, with index 19, represents the component with frequency $f$ = 0.95 Hz. A spectrum is commonly presented and interpreted as double-sided, so in the above graph we can interpret the spectral components with indices 10 to 19 corresponding to negative frequencies. \n", + "\n", + "### Task 0.3: Identify negative frequencies" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "df1f483b", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAG2CAYAAABYlw1sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0xklEQVR4nO3de1hVdd7//9cGBEFxFxJuGBFpPGVYplbiaNHJUStNZia7bUjv2zAnj0NeFXn3k9sp6G5mLO9xsrIpO9joNd9bp6YhJjIFm7RhVMpTjnmjUEHmCc8gsn5/OO5xuzkIbNjrw34+rmtdutb+rMV7r89ae79YJxyWZVkCAAAwQJC/CwAAALhUBBcAAGAMggsAADAGwQUAABiD4AIAAIxBcAEAAMYguAAAAGMQXAAAgDEILgAAwBgEFwAAYAxbBZesrCw5HA6PweVy+bssAABgEyH+LuBiV199tT788EP3eHBwsB+rAQAAdmK74BISEsJRFgAAUCfbBZfdu3crLi5OYWFhuvHGG5Wdna0rr7yyzrZVVVWqqqpyj9fW1urQoUPq2rWrHA5HW5UMAABawLIsHTt2THFxcQoKavgqFodlWVYb1dWo999/XydPnlSfPn307bff6qmnntIXX3yh7du3q2vXrl7ts7Ky9F//9V9+qBQAAPhaWVmZunfv3mAbWwWXi504cULf//739eijjyojI8Pr9YuPuFRWVqpHjx4qKytTly5d2rJUAADQTEePHlV8fLyOHDkip9PZYFvbnSq6UKdOnTRgwADt3r27ztfDwsIUFhbmNb1Lly4EFwAADHMpl3nY6nboi1VVVWnnzp2KjY31dykAAMAGbBVc5s6dq4KCApWUlOjTTz/Vj3/8Yx09elSTJk3yd2kAAMAGbHWq6KuvvtK//du/6cCBA7riiis0dOhQbdy4UQkJCf4uDQAA2ICtgsuKFSv8XQIAALAxW50qAgAAaAjBBQAAGIPgAgAAjEFwAQAAxiC4AAAAYxBcAACAMQguAADAGAQXAABgDIILAAAwBsEFAAAYg+ACAACMQXABAADGILgAAABjEFwAAIAxCC4AAMAYBBcAAGAMggsAADAGwQUAABiD4AIAAIxBcAEAAMYguAAAAGMQXAAAgDEILgAAwBgEFwAAYAyCCwAAMAbBBQAAGIPgAgAAjEFwAQAAxiC4AAAAYxBcAACAMQguAADAGAQXAABgDIILAAAwBsEFAAAYg+ACAACMQXABAADGILgAAABjEFwAAIAxCC4AAMAYBBcAAGAMggsAADAGwQUAABiD4AIAAIwRkMHFsixNnTpVUVFRcjgcKi4u9ndJAADgEgRkcMnLy9OyZcv03nvvqby8XElJSU1eRlVVlWbOnKno6Gh16tRJY8eO1VdffdXofC+88IISExPVsWNHDR48WOvXr/d43bIsZWVlKS4uTuHh4UpJSdH27dsbXGZWVpYGDhzoNX3v3r0EMwBAuxKQwWXPnj2KjY3VsGHD5HK5FBIS0uRlzJkzR6tXr9aKFSv08ccf6/jx47rrrrt09uzZeudZuXKl5syZo3nz5mnLli0aMWKERo8erdLSUnebZ599VgsXLtTixYtVVFQkl8ulO+64Q8eOHWvWewUAoF2x2pHKykpLklVZWVlvm0mTJlmS3ENCQkKTf86RI0esDh06WCtWrHBP+/rrr62goCArLy+v3vluuOEGa9q0aR7T+vXrZz3++OOWZVlWbW2t5XK5rGeeecb9+unTpy2n02m9+OKL9S53/vz51rXXXus1vaSkxJJkbdmyxbIs7/d+fli7du0lvGsAAFrHpXx/nxdwR1wWLVqkBQsWqHv37iovL1dRUZEkKTs7W507d25wOH9aZ9OmTTpz5oxGjhzpXm5cXJySkpL0ySef1Plzq6urtWnTJo95JGnkyJHueUpKSlRRUeHRJiwsTDfffHO9y23qey8vL3cPs2fPVkxMjPr169fiZQMA0Baafo7EcE6nU5GRkQoODpbL5XJPnzZtmu69994G5/3e974nSaqoqFBoaKguv/xyj9e7deumioqKOuc9cOCAzp49q27dutU7z/l/62qzb9++BmvbunWrOnfu7DHNsiyPcafTKafTKUlatWqVXnzxRX344Yce6wEAADsLuOBSn6ioKEVFRbVoGZZlyeFwNNjm4tfrmudS2lysb9++evfddz2mff3110pJSfFqu2XLFj3wwAP67W9/q+HDhze4XAAA7CTgThXVpymnilwul6qrq3X48GGPZezfv9/raMl50dHRCg4O9joic+E85498NNSmPqGhoerVq5fHkJCQ4NWuoqJCY8eO1ZQpUzRlypQGlwkAgN0QXP5p2rRpKi4ubnAYMmSIJGnw4MHq0KGD8vPz3fOXl5dr27ZtGjZsWJ3LDw0N1eDBgz3mkaT8/Hz3PImJiXK5XB5tqqurVVBQUO9ym+L06dMaN26c+vXrp4ULF7Z4eQAAtDVOFf1TU04VOZ1OTZkyRY888oi6du2qqKgozZ07VwMGDNDtt9/ubnfbbbdp/PjxmjFjhiQpIyNDaWlpGjJkiJKTk/Xyyy+rtLRU06ZNk3TuFNGcOXOUnZ2t3r17q3fv3srOzlZERIQmTpzY4vf40EMPqaysTGvWrNF3333n8d5DQ0NbvHwAAFobwaWZnnvuOYWEhOjee+/VqVOndNttt2nZsmUKDg52t9mzZ48OHDjgHp8wYYIOHjyoBQsWuB98l5ub63FK59FHH9WpU6f08MMP6/Dhw7rxxhv1wQcfKDIyssU1FxQUqLy8XP379/eYvnbt2jqvhQEAwG4c1sW3nhjs6NGjcjqdqqysVJcuXfxdDgAAuARN+f7mGhcAAGAMggsAADAGwQUAABiD4AIAAIxBcAEAAMYguAAA4COWZWnq1KmKioqSw+FQcXGxv0tqdwguAAD4SF5enpYtW6b33nvP/bwuXzh8+LDS0tLcfyw3LS1NR44caXAey7KUlZWluLg4hYeHKyUlRdu3b/dok5KSIofD4THcd999DS538uTJuueee7ymr1u3Tg6Ho9G6Worg4gfVNbX63fr/0//3zjb9bv3/qbqm1t8lAQB8YM+ePYqNjdWwYcPkcrkUEuKb57xOnDhRxcXFysvLU15enoqLi5WWltbgPM8++6wWLlyoxYsXq6ioSC6XS3fccYeOHTvm0S49PV3l5eXu4aWXXvJJza3FtsElJyfH/Qj89iQnd4f6Pfm+fvHnnXpjwz794s871e/J95WTu8PfpQEAWmDy5MmaOXOmSktL5XA41LNnT58sd+fOncrLy9Mrr7yi5ORkJScna+nSpXrvvfe0a9euOuexLEvPP/+85s2bp9TUVCUlJen111/XyZMn9fbbb3u0jYiIkMvlcg9Op9Mnddd1NMfhcGjv3r0tWq4tg0tRUZFefvllXXPNNf4uxadycnfopcIS1V70rOJaS3qpsITwAgAGW7RokRYsWKDu3burvLxcRUVFkqTs7Gx17ty5wWH9+vX1LnfDhg1yOp268cYb3dOGDh0qp9OpTz75pM55SkpKVFFRoZEjR7qnhYWF6eabb/aaZ/ny5YqOjtbVV1+tuXPneh2Raa5Vq1Z5HMlJTU1V37591a1btxYt13Z/q+j48eO6//77tXTpUj311FP+LsdnqmtqtXR9SYNtlq4v0SMj+yk0xJZ5EgDQAKfTqcjISAUHB8vlcrmnT5s2Tffee2+D837ve9+r97WKigrFxMR4TY+JiVFFRUW980jyCgndunXTvn373OP333+/EhMT5XK5tG3bNmVmZuqzzz5Tfn5+g/W+99576ty5s8e0s2fPeoxf+IeLn3vuOX300Uf69NNPFR4e3uCyG2O74DJ9+nTdeeeduv322xsNLlVVVaqqqnKPHz16tLXLa7Y3N+z1OtJysVrrXLspI65sm6IAAK0uKirK40u8IdOmTdNbb73lHj9+/LgkyeFweLW1LKvO6Re6+PWL50lPT3f/PykpSb1799aQIUO0efNmDRo0qN7l3nLLLVqyZInHtE8//VQ//elPvdq+//77evzxx/WnP/1Jffr0abDeS2GrX+1XrFihzZs3Kycn55La5+TkuK+wdjqdio+Pb+UKm2/foZM+bQcAMENTThUtWLBAxcXF7kGSXC6Xvv32W6/lfvfdd/Wedjl/xOfiIzL79+9v8FTNoEGD1KFDB+3evbvB99SpUyf16tXLY6jrqNGOHTt033336ZlnnvE4bdUStjniUlZWptmzZ+uDDz5Qx44dL2mezMxMZWRkuMePHj1q2/CSEBXh03YAADM05VRRTEyM12mh5ORkVVZW6m9/+5tuuOEGSeeOblRWVmrYsGF1Lu/86Z/8/Hxdd911kqTq6moVFBTov//7v+utY/v27Tpz5oxiY2Mv+f3V5+DBg7r77ruVmpqqn//85y1e3nm2CS6bNm3S/v37NXjwYPe0s2fPqrCwUIsXL1ZVVZWCg4M95gkLC1NYWFhbl9osack99XTuzgZPFwU5zrUDALQfTTlVVJerrrpKo0aNUnp6uvtW5alTp+quu+5S37593e369eunnJwcjR8/3n1XbnZ2tnr37q3evXsrOztbERERmjhxoqRzt24vX75cY8aMUXR0tHbs2KFHHnlE1113nX7wgx+07E1LSk1NVXh4uLKysjyO/FxxxRVe3+dNYZvgctttt2nr1q0e0/793/9d/fr102OPPdaiN2kHoSFBSh+RqJcK679AN31EIhfmAgC8LF++XLNmzXKfbhk7dqwWL17s0WbXrl2qrKx0jz/66KM6deqUHn74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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "abs_fft = np.abs(np.fft.fft(xt))\n", + "plt.stem(index_fft, abs_fft)\n", + "plt.plot(index_fft, abs_fft, 'o')\n", + "\n", + "freq = np.concatenate((np.arange(0, 0.5, 0.05), np.arange(-0.5, 0, 0.05)))\n", + "for x,y in zip(index_fft, abs_fft):\n", + " if x%5 == 0 or x==19:\n", + " label = f\"f={freq[x]:.2f} Hz\"\n", + " plt.annotate(label, \n", + " (x,y),\n", + " textcoords=\"offset points\", \n", + " xytext=(0,10),\n", + " fontsize=10,\n", + " ha='center') \n", + "plt.ylim(0,5)\n", + "plt.xlim(-2,21)\n", + "plt.xlabel('fft-index')\n", + "plt.ylabel('$|X_k|$');" + ] + }, + { + "cell_type": "markdown", + "id": "2d87a9a6", + "metadata": { + "tags": [] + }, + "source": [ + "Now we can interpret the DFT of the $x(t)=\\Pi(\\frac{t}{4})$. The sampling interval is $\\Delta t$ = 1 second, and the obsesrvation length is T=20 seconds, and we have N=20 samples. \n", + "- We can recognize a bit of a sinc function.\n", + "- The DFT is computed from 0 Hz, for positive frequencies up to $\\frac{fs}{2} = 0.5$ Hz, after which the negative frequencies follow from -0.5 to -0.05 Hz.\n", + "- $X(f)=4 \\textrm{sinc}(4f)$ has its first null at $f=0.25$Hz.\n", + "\n", + "### Task 0.4: Create symmetric plot\n", + "\n", + "For convenient visualization, we may want to explicitly shift the negative frequencies to the left-hand side to create a symmetric plot. We can use `numpy.fft.fftshift` to do that. In other words, the zero-frequency component appears in the center of the spectrum. Now, it nicely shows a symmetric sprectrum. It well resembles the sinc-function (taking into account that we plot the modulus/absolute value). The output of the DFT still consists of $N$ = 20 elements. To enable this, we set up a new frequency array (in Hz) on the interval $[-fs/2,fs/2)$." + ] + }, + { + "cell_type": "markdown", + "id": "e1eef6b6-1e90-43db-b059-6521b2a840d3", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.4:</b> \n", + "Read the code cell below before executing it and identify how the plot is modified based on the (new) specification of frequency. Note that it is more than just the <code>freq</code> variable!\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a8aac894", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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GS1fvlyXX365evfurcGDB2vWrFn68ssvO69oL7Zq1SpFRESoR48eio6OVmFhYYv98/PzFR0drR49emj48OFavXp1J1VqnraM/datWzV58mQNHDhQgYGBiomJ0TvvvNOJ1Zqjrev8Oe+//758fX01duxY1xboYoSbLu6uu+5SaWmpduzYoR07dqi0tFQJCQmtWvbNN9/UBx98oMGDB7u4SvO0ddxPnz6tPXv26PHHH9eePXu0detW/f3vf9fNN9/ciVV7py1btmjJkiV69NFHVVJSotjYWE2bNk0VFRVN9i8vL1d8fLxiY2NVUlKiFStWaPHixcrKyurkyr1fW8e+oKBAkydPVnZ2tnbv3q1rr71WN910k0pKSjq5cu/W1nE/p7q6WrNmzdKkSZM6qVIXstBllZWVWZKsXbt2OdqKioosSdZnn33W4rJffPGF9S//8i/WJ598Yg0bNsx68cUXXVytOS5l3M/34YcfWpKsw4cPu6JMY1x11VXWwoULndouu+wy65FHHmmyf1JSknXZZZc5tS1YsMC6+uqrXVajqdo69k0ZNWqU9dRTT3V0aUZr77jPnDnTeuyxx6wnnnjCuuKKK1xYoeux56YLKyoqUlBQkH7+85872q6++moFBQXpb3/7W7PL2e12JSQk6OGHH1ZUVFRnlGqU9o77haqrq2Wz2dS3b18XVGmGuro67d69W1OmTHFqnzJlSrNjXVRU1Kj/1KlTVVxcrDNnzrisVtO0Z+wvZLfbdfLkSfXr188VJRqpveO+YcMGHTx4UE888YSrS+wUXfKHM3FWVVWVgoODG7UHBwerqqqq2eV+97vfydfXV4sXL3ZlecZq77if74cfftAjjzyiu+66y+t+9K4zHT9+XA0NDQoJCXFqDwkJaXasq6qqmuxfX1+v48ePKzQ01GX1mqQ9Y3+hF154QadOndIdd9zhihKN1J5xP3DggB555BEVFhbK19eMWMCeGwM9+eSTstlsLU7FxcWSJJvN1mh5y7KabJek3bt366WXXlJmZmazfboqV477+c6cOaM777xTdrtdq1at6vDnYaILx/ViY91U/6bacXFtHftz3njjDT355JPasmVLk/8MoGWtHfeGhgbdddddeuqpp/STn/yks8pzOTMiGpw88MADuvPOO1vsEx4ero8//lhfffVVo9v+7//+r1HqP6ewsFDHjh3T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edE67r33XiUkJOjFF1/Uhg0bNHPmTPXq1atVz+FCgwYN0ogRI5zaAgIC9O233zq1PfPMM9qxY4c+/PDDRuENwKUj3ABok5/+9KfKyspSeHi4fH0bf4SMGDFC3bt3165duzR06FBJ0jfffKO///3vTntQBg4cqMrKSsf8gQMHdPr0aafH2bJli4KDgxUYGNiuWi+//HLZ7Xbl5+c32qNyTnx8vHr37q309HS9/fbbKigoaNdjtVZWVpaefvppvf322y45rwcAJxQDaKNFixbpxIkT+vd//3d9+OGH+sc//qGdO3dq7ty5amhoUJ8+fTRv3jw9/PDD+t///V998sknmjNnTqNDL9ddd51efvll7dmzR8XFxVq4cKHTXpi7775bAwYM0PTp01VYWKjy8nLl5+froYce0hdffNGqWsPDwzV79mzNnTtXb775psrLy5WXl6c//vGPjj7dunXTnDlzlJycrBEjRjgdTuton3zyiWbNmqXly5crKipKVVVVqqqq0okTJ1z2mEBXRLgB0CaDBw/W+++/r4aGBk2dOlWjR4/WQw89pKCgIEeAef755xUXF6ebb75Z119/vcaPH6/o6Gin+3nhhRcUFhamuLg43XXXXVq2bJnT4aBevXqpoKBAQ4cO1a233qqRI0dq7ty5+v7779u0Jyc9PV233Xab7r//fl122WWaP3++Tp065dRn3rx5qqur09y5cy9hZC6uuLhYp0+f1jPPPKPQ0FDHdOutt7r0cYGuxmZdeNAbAFxg4sSJGjt2rNLS0txdSiPvv/++Jk6cqC+++EIhISEt9p0zZ46+/fbbDv/phc5+DMBk7LkB0GXV1tbq888/1+OPP6477rjjosHmnO3bt6tPnz7avn17h9ZTWFioPn36NHkSNYDW44RiAF3WG2+8oXnz5mns2LHauHFjq5Z57rnn9Nhjj0k6++2wjjRu3DjHD5Y29VV7AK3DYSkAAGAUDksBAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIxCuAEAAEb5f+MVs8jcKRfhAAAAAElFTkSuQmCC", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "abs_fft_shift = np.abs(np.fft.fftshift(np.fft.fft(xt)))\n", + "freq = np.arange(-0.5, 0.5, 0.05)\n", + "plt.stem(freq, abs_fft_shift)\n", + "plt.plot(freq, abs_fft_shift, 'o')\n", + "plt.ylabel('|Xk|')\n", + "plt.xlabel('frequency [Hz]');" + ] + }, + { + "cell_type": "markdown", + "id": "569ca2d3", + "metadata": {}, + "source": [ + "### Task 0.5: Showing spectrum only for positive frequencies\n", + "\n", + "In practice, because of the symmetry, one typically plots only the right-hand side of the (double-sided) spectrum, hence only the part for positive frequencies $f \\geq 0$. This is simply a matter of preference, and a way to save some space." + ] + }, + { + "cell_type": "markdown", + "id": "a26e361d-c5fa-47a2-b32c-416cc3d10659", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.5:</b> \n", + "Can you identify what has changed (in the code and visually), compared to the previous plot?\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b9608638", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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E9zmjxw5okOHDqlfv35Naj/99FN9/fXXcjqdio2NdY0PGDBAUVFRrXrdI0eO6JNPPlH//v3dxv/2t7+57WKKjo5Wr169XPOhoaH68MMPJUnHjh1Tr169FB8f7/E1QkNDdf/992vr1q367ne/qzfffFN/+9vf9OCDD7aq16uef/553XvvvW5jjz/+uBoaGprULliwQBcuXFBubq58fNjoDngTYQdAq/Tt29dtvrGxUdOmTdOvf/3rJrWhoaE6depUi57X4XDIsiy3sWuPtWlsbFRMTIx+//vfN1l20KBBrv/u3bt3k+dtbGyUJAUEBNywj4ULF2r27Nl6/vnntW3bNs2cOVOBgYEteg/fNGTIEI0cOdJtrH///vryyy/dxn75y1/qwIEDeu+995qEOQDtR9gB0C7f+c53lJ2drYiICPn6Nv2TMnLkSPXu3VuHDx/W8OHDJUn/8z//o48//thtC8ugQYNUVVXlmj916pQuXbrk9jqvvvqqBg8erKCgoDb1esstt6ixsVH5+flNtrhclZSUpL59+2rjxo3av3+/CgoK2vRaLZWdna01a9Zo//79HXJcEAAOUAbQTosXL9b58+f14x//WO+9957+/Oc/6+DBg5o/f74aGhrUr18/LViwQD/72c/0X//1X/roo480b968Jrtq7rnnHr344os6evSoiouLlZyc7LaV5uGHH9bNN9+s6dOnq7CwUGVlZcrPz9eyZcv0l7/8pUW9RkREaO7cuZo/f75ee+01lZWVKS8vT//+7//uqunVq5fmzZun1NRUjRw50m33m7d99NFHmjNnjh5//HFFR0erurpa1dXVOn/+fIe9JtATEXYAtMvQoUP1zjvvqKGhQVOmTNHYsWO1bNkyBQcHuwLNv/3bv2nSpEn6h3/4B91777266667FBMT4/Y8zz33nMLCwjRp0iTNmjVLK1eudNt9FBgYqIKCAg0fPlw/+tGPNHr0aM2fP19ff/11q7b0bNy4Uf/4j/+oRx99VKNGjdKiRYt08eJFt5oFCxbI6XRq/vz57fhkbqy4uFiXLl3SL3/5S4WGhrqmH/3oRx36ukBP47C+uZMcADpBQkKCxo0bp/T09K5upYl33nlHCQkJ+stf/qKQkJBma+fNm6cvv/zS67eK6OzXAEzGlh0A+F91dXX65JNP9NRTT+mhhx66YdC56s0331S/fv305ptverWfwsJC9evXz+NB2QBajgOUAeB/vfLKK1qwYIHGjRunHTt2tGiZ3/zmN/r5z38u6crZZ940YcIE1w1YPZ3aD6Bl2I0FAACMxm4sAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBo/x/fK7l1H/ZV1AAAAABJRU5ErkJggg==", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "N=len(xt)\n", + "abs_fft = np.abs(np.fft.fft(xt))\n", + "freq = np.arange(0.0, 1.0, 0.05)\n", + "plt.plot(freq[:int(N/2)], abs_fft[:int(N/2)], 'o')\n", + "plt.stem(freq[:int(N/2)], abs_fft[:int(N/2)])\n", + "plt.ylabel('$|X_k|$')\n", + "plt.xlabel('frequency [Hz]');" + ] + }, + { + "cell_type": "markdown", + "id": "83c4ca67-9234-4741-a56f-294a12bcd98a", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 0.6:</b> \n", + "Confirm that you understand how we have arrived at the plot above, which illustrates the magnitude (amplitude) spectrum for frequencies $f \\in [0,f_s/2)$, rather than $[0,f_s)$.\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "id": "9f5558b4", + "metadata": {}, + "source": [ + "## Task 1: Application of DFT using simple cosine" + ] + }, + { + "cell_type": "markdown", + "id": "46dd5c0c", + "metadata": {}, + "source": [ + "It is always a good idea, in spectral analysis, to run a test with a very simple, basic signal. In this way you can test and verify your coding and interpretation of the results. \n", + "\n", + "Our basic signal is just a plain cosine. We take the amplitude equal to one, and zero initial phase, so the signal reads $x(t) = \\cos(2 \\pi f_c t)$, with $f_c$ = 3 Hz in this exercise. With such a simple signal, we know in advance how the spectrum should look like. Namely just a spike at $f$ = 3 Hz, and also one at $f$ = -3 Hz, as we're, for mathematical convenience, working with double sided spectra. The spectrum should be zero at all other frequencies.\n", + "\n", + "As a side note: the cosine is strictly a periodic function, not a-periodic (as above); still, the Fourier transform of the cosine is defined as two Dirac delta pulses or peaks (at 3 Hz and -3 Hz). You may want to check out the second worked example in Chapter 3 on the Fourier transform: Fourier transform in the limit." + ] + }, + { + "cell_type": "markdown", + "id": "87de3cc5", + "metadata": {}, + "source": [ + "<div style=\"background-color:#AABAB2; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%\">\n", + "<p>\n", + "<b>Task 1:</b> \n", + " \n", + "Create a sampled (discrete time) cosine signal by sampling at $f_s$ = 10 Hz, for a duration of $T$ = 2 seconds (make sure you use exactly $N$ = 20 samples). Plot the sampled signal, compute its DFT and plot its magnitude spectrum $|X_k|$ with proper labeling of the axes (just like we did in the first part of this notebook). Include a plot of the spectrum of the sampled cosine signal using only the positive frequencies (up to $f_s/2$, as in the last plot of the previous task).\n", + "\n", + "<em>Note: you are expected to produce three separate plots.</em>\n", + "</p>\n", + "</div>" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "28ad034e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### SOLUTION\n", + "\n", + "fc=3\n", + "fs=10\n", + "dt=1/fs\n", + "T=2\n", + "N=T*fs\n", + "t=np.arange(0,T,dt)\n", + "xt=np.cos(2*np.pi*fc*t)\n", + "\n", + "plt.plot(t,xt)\n", + "plt.xlabel('time [s]')\n", + "plt.ylabel('xn');" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "af87d120", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### SOLUTION\n", + "\n", + "abs_fft = np.abs(np.fft.fft(xt))\n", + "freq=np.arange(0,fs,1/T)\n", + "plt.stem(freq, abs_fft)\n", + "plt.plot(freq, abs_fft, 'o')\n", + "plt.ylabel('|Xk|')\n", + "plt.xlabel('frequency [Hz]');" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6fd9014c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### SOLUTION\n", + "\n", + "abs_fft = np.abs(np.fft.fft(xt))\n", + "freq=np.arange(0,fs,1/T)\n", + "plt.stem(freq[:int(N/2)], abs_fft[:int(N/2)])\n", + "plt.plot(freq[:int(N/2)], abs_fft[:int(N/2)], 'o')\n", + "plt.ylabel('|Xk|')\n", + "plt.xlabel('frequency [Hz]');" + ] + }, + { + "cell_type": "markdown", + "id": "6a4a306d-a372-460e-b312-e8fa138a9797", + "metadata": {}, + "source": [ + "**End of notebook.**\n", + "<h2 style=\"height: 60px\">\n", + "</h2>\n", + "<h3 style=\"position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0\">\n", + " <style>\n", + " .markdown {width:100%; position: relative}\n", + " article { position: relative }\n", + " </style>\n", + " <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">\n", + " <img alt=\"Creative Commons License\" style=\"border-width:; width:88px; height:auto; padding-top:10px\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" />\n", + " </a>\n", + " <a rel=\"TU Delft\" href=\"https://www.tudelft.nl/en/ceg\">\n", + " <img alt=\"TU Delft\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png\"/>\n", + " </a>\n", + " <a rel=\"MUDE\" href=\"http://mude.citg.tudelft.nl/\">\n", + " <img alt=\"MUDE\" style=\"border-width:0; width:100px; height:auto; padding-bottom:0px\" src=\"https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png\"/>\n", + " </a>\n", + " \n", + "</h3>\n", + "<span style=\"font-size: 75%\">\n", + "© Copyright 2023 <a rel=\"MUDE Team\" href=\"https://studiegids.tudelft.nl/a101_displayCourse.do?course_id=65595\">MUDE Teaching Team</a> TU Delft. This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>." + ] + } + ], + "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" + }, + "latex_envs": { + "LaTeX_envs_menu_present": true, + "autoclose": false, + "autocomplete": true, + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 1, + "hotkeys": { + "equation": "Ctrl-E", + "itemize": "Ctrl-I" + }, + "labels_anchors": false, + "latex_user_defs": false, + "report_style_numbering": false, + "user_envs_cfg": false + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version_major": 2, + "version_minor": 0 + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/content/Week_2_3/earthquakes.svg b/content/Week_2_3/earthquakes.svg new file mode 100644 index 0000000000000000000000000000000000000000..8b4125d702da20417c53d4b821b57594a609d616 --- /dev/null +++ b/content/Week_2_3/earthquakes.svg @@ -0,0 +1,1705 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="460.8pt" height="345.6pt" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <metadata> + <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <cc:Work> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:date>2023-11-26T15:19:54.674362</dc:date> + <dc:format>image/svg+xml</dc:format> + <dc:creator> + <cc:Agent> + <dc:title>Matplotlib v3.7.1, https://matplotlib.org/</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <defs> + <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style> + </defs> + <g id="figure_1"> + <g id="patch_1"> + <path d="M 0 345.6 +L 460.8 345.6 +L 460.8 0 +L 0 0 +z +" style="fill: #ffffff"/> + </g> + <g id="axes_1"> + <g id="patch_2"> + <path d="M 57.6 307.584 +L 414.72 307.584 +L 414.72 41.472 +L 57.6 41.472 +z +" style="fill: #ffffff"/> + </g> + <g id="matplotlib.axis_1"> + <g id="xtick_1"> + <g id="line2d_1"> + <defs> + <path id="m2cfb075dc8" d="M 0 0 +L 0 3.5 +" style="stroke: #000000; stroke-width: 0.8"/> + </defs> + <g> + <use xlink:href="#m2cfb075dc8" x="71.335385" y="307.584" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_1"> + <!-- 2000 --> + <g transform="translate(58.610385 322.182437) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-32" d="M 1228 531 +L 3431 531 +L 3431 0 +L 469 0 +L 469 531 +Q 828 903 1448 1529 +Q 2069 2156 2228 2338 +Q 2531 2678 2651 2914 +Q 2772 3150 2772 3378 +Q 2772 3750 2511 3984 +Q 2250 4219 1831 4219 +Q 1534 4219 1204 4116 +Q 875 4013 500 3803 +L 500 4441 +Q 881 4594 1212 4672 +Q 1544 4750 1819 4750 +Q 2544 4750 2975 4387 +Q 3406 4025 3406 3419 +Q 3406 3131 3298 2873 +Q 3191 2616 2906 2266 +Q 2828 2175 2409 1742 +Q 1991 1309 1228 531 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-30" d="M 2034 4250 +Q 1547 4250 1301 3770 +Q 1056 3291 1056 2328 +Q 1056 1369 1301 889 +Q 1547 409 2034 409 +Q 2525 409 2770 889 +Q 3016 1369 3016 2328 +Q 3016 3291 2770 3770 +Q 2525 4250 2034 4250 +z +M 2034 4750 +Q 2819 4750 3233 4129 +Q 3647 3509 3647 2328 +Q 3647 1150 3233 529 +Q 2819 -91 2034 -91 +Q 1250 -91 836 529 +Q 422 1150 422 2328 +Q 422 3509 836 4129 +Q 1250 4750 2034 4750 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-32"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + <use xlink:href="#DejaVuSans-30" x="127.246094"/> + <use xlink:href="#DejaVuSans-30" x="190.869141"/> + </g> + </g> + </g> + <g id="xtick_2"> + <g id="line2d_2"> + <g> + <use xlink:href="#m2cfb075dc8" x="140.012308" y="307.584" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_2"> + <!-- 2005 --> + <g transform="translate(127.287308 322.182437) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-35" d="M 691 4666 +L 3169 4666 +L 3169 4134 +L 1269 4134 +L 1269 2991 +Q 1406 3038 1543 3061 +Q 1681 3084 1819 3084 +Q 2600 3084 3056 2656 +Q 3513 2228 3513 1497 +Q 3513 744 3044 326 +Q 2575 -91 1722 -91 +Q 1428 -91 1123 -41 +Q 819 9 494 109 +L 494 744 +Q 775 591 1075 516 +Q 1375 441 1709 441 +Q 2250 441 2565 725 +Q 2881 1009 2881 1497 +Q 2881 1984 2565 2268 +Q 2250 2553 1709 2553 +Q 1456 2553 1204 2497 +Q 953 2441 691 2322 +L 691 4666 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-32"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + <use xlink:href="#DejaVuSans-30" x="127.246094"/> + <use xlink:href="#DejaVuSans-35" x="190.869141"/> + </g> + </g> + </g> + <g id="xtick_3"> + <g id="line2d_3"> + <g> + <use xlink:href="#m2cfb075dc8" x="208.689231" y="307.584" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_3"> + <!-- 2010 --> + <g transform="translate(195.964231 322.182437) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-31" d="M 794 531 +L 1825 531 +L 1825 4091 +L 703 3866 +L 703 4441 +L 1819 4666 +L 2450 4666 +L 2450 531 +L 3481 531 +L 3481 0 +L 794 0 +L 794 531 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-32"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + <use xlink:href="#DejaVuSans-31" x="127.246094"/> + <use xlink:href="#DejaVuSans-30" x="190.869141"/> + </g> + </g> + </g> + <g id="xtick_4"> + <g id="line2d_4"> + <g> + <use xlink:href="#m2cfb075dc8" x="277.366154" y="307.584" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_4"> + <!-- 2015 --> + <g transform="translate(264.641154 322.182437) scale(0.1 -0.1)"> + <use xlink:href="#DejaVuSans-32"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + <use xlink:href="#DejaVuSans-31" x="127.246094"/> + <use xlink:href="#DejaVuSans-35" x="190.869141"/> + </g> + </g> + </g> + <g id="xtick_5"> + <g id="line2d_5"> + <g> + <use xlink:href="#m2cfb075dc8" x="346.043077" y="307.584" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_5"> + <!-- 2020 --> + <g transform="translate(333.318077 322.182437) scale(0.1 -0.1)"> + <use xlink:href="#DejaVuSans-32"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + <use xlink:href="#DejaVuSans-32" x="127.246094"/> + <use xlink:href="#DejaVuSans-30" x="190.869141"/> + </g> + </g> + </g> + <g id="xtick_6"> + <g id="line2d_6"> + <g> + <use xlink:href="#m2cfb075dc8" x="414.72" y="307.584" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_6"> + <!-- 2025 --> + <g transform="translate(401.995 322.182437) scale(0.1 -0.1)"> + <use xlink:href="#DejaVuSans-32"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + <use xlink:href="#DejaVuSans-32" x="127.246094"/> + <use xlink:href="#DejaVuSans-35" x="190.869141"/> + </g> + </g> + </g> + <g id="text_7"> + <!-- Year of Earthquake --> + <g transform="translate(188.969375 335.860562) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-59" d="M -13 4666 +L 666 4666 +L 1959 2747 +L 3244 4666 +L 3922 4666 +L 2272 2222 +L 2272 0 +L 1638 0 +L 1638 2222 +L -13 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-65" d="M 3597 1894 +L 3597 1613 +L 953 1613 +Q 991 1019 1311 708 +Q 1631 397 2203 397 +Q 2534 397 2845 478 +Q 3156 559 3463 722 +L 3463 178 +Q 3153 47 2828 -22 +Q 2503 -91 2169 -91 +Q 1331 -91 842 396 +Q 353 884 353 1716 +Q 353 2575 817 3079 +Q 1281 3584 2069 3584 +Q 2775 3584 3186 3129 +Q 3597 2675 3597 1894 +z +M 3022 2063 +Q 3016 2534 2758 2815 +Q 2500 3097 2075 3097 +Q 1594 3097 1305 2825 +Q 1016 2553 972 2059 +L 3022 2063 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-61" d="M 2194 1759 +Q 1497 1759 1228 1600 +Q 959 1441 959 1056 +Q 959 750 1161 570 +Q 1363 391 1709 391 +Q 2188 391 2477 730 +Q 2766 1069 2766 1631 +L 2766 1759 +L 2194 1759 +z +M 3341 1997 +L 3341 0 +L 2766 0 +L 2766 531 +Q 2569 213 2275 61 +Q 1981 -91 1556 -91 +Q 1019 -91 701 211 +Q 384 513 384 1019 +Q 384 1609 779 1909 +Q 1175 2209 1959 2209 +L 2766 2209 +L 2766 2266 +Q 2766 2663 2505 2880 +Q 2244 3097 1772 3097 +Q 1472 3097 1187 3025 +Q 903 2953 641 2809 +L 641 3341 +Q 956 3463 1253 3523 +Q 1550 3584 1831 3584 +Q 2591 3584 2966 3190 +Q 3341 2797 3341 1997 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-72" d="M 2631 2963 +Q 2534 3019 2420 3045 +Q 2306 3072 2169 3072 +Q 1681 3072 1420 2755 +Q 1159 2438 1159 1844 +L 1159 0 +L 581 0 +L 581 3500 +L 1159 3500 +L 1159 2956 +Q 1341 3275 1631 3429 +Q 1922 3584 2338 3584 +Q 2397 3584 2469 3576 +Q 2541 3569 2628 3553 +L 2631 2963 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-20" transform="scale(0.015625)"/> + <path id="DejaVuSans-6f" d="M 1959 3097 +Q 1497 3097 1228 2736 +Q 959 2375 959 1747 +Q 959 1119 1226 758 +Q 1494 397 1959 397 +Q 2419 397 2687 759 +Q 2956 1122 2956 1747 +Q 2956 2369 2687 2733 +Q 2419 3097 1959 3097 +z +M 1959 3584 +Q 2709 3584 3137 3096 +Q 3566 2609 3566 1747 +Q 3566 888 3137 398 +Q 2709 -91 1959 -91 +Q 1206 -91 779 398 +Q 353 888 353 1747 +Q 353 2609 779 3096 +Q 1206 3584 1959 3584 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-66" d="M 2375 4863 +L 2375 4384 +L 1825 4384 +Q 1516 4384 1395 4259 +Q 1275 4134 1275 3809 +L 1275 3500 +L 2222 3500 +L 2222 3053 +L 1275 3053 +L 1275 0 +L 697 0 +L 697 3053 +L 147 3053 +L 147 3500 +L 697 3500 +L 697 3744 +Q 697 4328 969 4595 +Q 1241 4863 1831 4863 +L 2375 4863 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-45" d="M 628 4666 +L 3578 4666 +L 3578 4134 +L 1259 4134 +L 1259 2753 +L 3481 2753 +L 3481 2222 +L 1259 2222 +L 1259 531 +L 3634 531 +L 3634 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-74" d="M 1172 4494 +L 1172 3500 +L 2356 3500 +L 2356 3053 +L 1172 3053 +L 1172 1153 +Q 1172 725 1289 603 +Q 1406 481 1766 481 +L 2356 481 +L 2356 0 +L 1766 0 +Q 1100 0 847 248 +Q 594 497 594 1153 +L 594 3053 +L 172 3053 +L 172 3500 +L 594 3500 +L 594 4494 +L 1172 4494 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-68" d="M 3513 2113 +L 3513 0 +L 2938 0 +L 2938 2094 +Q 2938 2591 2744 2837 +Q 2550 3084 2163 3084 +Q 1697 3084 1428 2787 +Q 1159 2491 1159 1978 +L 1159 0 +L 581 0 +L 581 4863 +L 1159 4863 +L 1159 2956 +Q 1366 3272 1645 3428 +Q 1925 3584 2291 3584 +Q 2894 3584 3203 3211 +Q 3513 2838 3513 2113 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-71" d="M 947 1747 +Q 947 1113 1208 752 +Q 1469 391 1925 391 +Q 2381 391 2643 752 +Q 2906 1113 2906 1747 +Q 2906 2381 2643 2742 +Q 2381 3103 1925 3103 +Q 1469 3103 1208 2742 +Q 947 2381 947 1747 +z +M 2906 525 +Q 2725 213 2448 61 +Q 2172 -91 1784 -91 +Q 1150 -91 751 415 +Q 353 922 353 1747 +Q 353 2572 751 3078 +Q 1150 3584 1784 3584 +Q 2172 3584 2448 3432 +Q 2725 3281 2906 2969 +L 2906 3500 +L 3481 3500 +L 3481 -1331 +L 2906 -1331 +L 2906 525 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-75" d="M 544 1381 +L 544 3500 +L 1119 3500 +L 1119 1403 +Q 1119 906 1312 657 +Q 1506 409 1894 409 +Q 2359 409 2629 706 +Q 2900 1003 2900 1516 +L 2900 3500 +L 3475 3500 +L 3475 0 +L 2900 0 +L 2900 538 +Q 2691 219 2414 64 +Q 2138 -91 1772 -91 +Q 1169 -91 856 284 +Q 544 659 544 1381 +z +M 1991 3584 +L 1991 3584 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-6b" d="M 581 4863 +L 1159 4863 +L 1159 1991 +L 2875 3500 +L 3609 3500 +L 1753 1863 +L 3688 0 +L 2938 0 +L 1159 1709 +L 1159 0 +L 581 0 +L 581 4863 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-59"/> + <use xlink:href="#DejaVuSans-65" x="47.833984"/> + <use xlink:href="#DejaVuSans-61" x="109.357422"/> + <use xlink:href="#DejaVuSans-72" x="170.636719"/> + <use xlink:href="#DejaVuSans-20" x="211.75"/> + <use xlink:href="#DejaVuSans-6f" x="243.537109"/> + <use xlink:href="#DejaVuSans-66" x="304.71875"/> + <use xlink:href="#DejaVuSans-20" x="339.923828"/> + <use xlink:href="#DejaVuSans-45" x="371.710938"/> + <use xlink:href="#DejaVuSans-61" x="434.894531"/> + <use xlink:href="#DejaVuSans-72" x="496.173828"/> + <use xlink:href="#DejaVuSans-74" x="537.287109"/> + <use xlink:href="#DejaVuSans-68" x="576.496094"/> + <use xlink:href="#DejaVuSans-71" x="639.875"/> + <use xlink:href="#DejaVuSans-75" x="703.351562"/> + <use xlink:href="#DejaVuSans-61" x="766.730469"/> + <use xlink:href="#DejaVuSans-6b" x="828.009766"/> + <use xlink:href="#DejaVuSans-65" x="882.294922"/> + </g> + </g> + </g> + <g id="matplotlib.axis_2"> + <g id="ytick_1"> + <g id="line2d_7"> + <defs> + <path id="m50f2c4f428" d="M 0 0 +L -3.5 0 +" style="stroke: #000000; stroke-width: 0.8"/> + </defs> + <g> + <use xlink:href="#m50f2c4f428" x="57.6" y="280.9728" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_8"> + <!-- 6 --> + <g transform="translate(44.2375 284.772019) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-36" d="M 2113 2584 +Q 1688 2584 1439 2293 +Q 1191 2003 1191 1497 +Q 1191 994 1439 701 +Q 1688 409 2113 409 +Q 2538 409 2786 701 +Q 3034 994 3034 1497 +Q 3034 2003 2786 2293 +Q 2538 2584 2113 2584 +z +M 3366 4563 +L 3366 3988 +Q 3128 4100 2886 4159 +Q 2644 4219 2406 4219 +Q 1781 4219 1451 3797 +Q 1122 3375 1075 2522 +Q 1259 2794 1537 2939 +Q 1816 3084 2150 3084 +Q 2853 3084 3261 2657 +Q 3669 2231 3669 1497 +Q 3669 778 3244 343 +Q 2819 -91 2113 -91 +Q 1303 -91 875 529 +Q 447 1150 447 2328 +Q 447 3434 972 4092 +Q 1497 4750 2381 4750 +Q 2619 4750 2861 4703 +Q 3103 4656 3366 4563 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-36"/> + </g> + </g> + </g> + <g id="ytick_2"> + <g id="line2d_8"> + <g> + <use xlink:href="#m50f2c4f428" x="57.6" y="227.7504" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_9"> + <!-- 8 --> + <g transform="translate(44.2375 231.549619) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-38" d="M 2034 2216 +Q 1584 2216 1326 1975 +Q 1069 1734 1069 1313 +Q 1069 891 1326 650 +Q 1584 409 2034 409 +Q 2484 409 2743 651 +Q 3003 894 3003 1313 +Q 3003 1734 2745 1975 +Q 2488 2216 2034 2216 +z +M 1403 2484 +Q 997 2584 770 2862 +Q 544 3141 544 3541 +Q 544 4100 942 4425 +Q 1341 4750 2034 4750 +Q 2731 4750 3128 4425 +Q 3525 4100 3525 3541 +Q 3525 3141 3298 2862 +Q 3072 2584 2669 2484 +Q 3125 2378 3379 2068 +Q 3634 1759 3634 1313 +Q 3634 634 3220 271 +Q 2806 -91 2034 -91 +Q 1263 -91 848 271 +Q 434 634 434 1313 +Q 434 1759 690 2068 +Q 947 2378 1403 2484 +z +M 1172 3481 +Q 1172 3119 1398 2916 +Q 1625 2713 2034 2713 +Q 2441 2713 2670 2916 +Q 2900 3119 2900 3481 +Q 2900 3844 2670 4047 +Q 2441 4250 2034 4250 +Q 1625 4250 1398 4047 +Q 1172 3844 1172 3481 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-38"/> + </g> + </g> + </g> + <g id="ytick_3"> + <g id="line2d_9"> + <g> + <use xlink:href="#m50f2c4f428" x="57.6" y="174.528" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_10"> + <!-- 10 --> + <g transform="translate(37.875 178.327219) scale(0.1 -0.1)"> + <use xlink:href="#DejaVuSans-31"/> + <use xlink:href="#DejaVuSans-30" x="63.623047"/> + </g> + </g> + </g> + <g id="ytick_4"> + <g id="line2d_10"> + <g> + <use xlink:href="#m50f2c4f428" x="57.6" y="121.3056" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_11"> + <!-- 12 --> + <g transform="translate(37.875 125.104819) scale(0.1 -0.1)"> + <use xlink:href="#DejaVuSans-31"/> + <use xlink:href="#DejaVuSans-32" x="63.623047"/> + </g> + </g> + </g> + <g id="ytick_5"> + <g id="line2d_11"> + <g> + <use xlink:href="#m50f2c4f428" x="57.6" y="68.0832" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_12"> + <!-- 14 --> + <g transform="translate(37.875 71.882419) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-34" d="M 2419 4116 +L 825 1625 +L 2419 1625 +L 2419 4116 +z +M 2253 4666 +L 3047 4666 +L 3047 1625 +L 3713 1625 +L 3713 1100 +L 3047 1100 +L 3047 0 +L 2419 0 +L 2419 1100 +L 313 1100 +L 313 1709 +L 2253 4666 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-31"/> + <use xlink:href="#DejaVuSans-34" x="63.623047"/> + </g> + </g> + </g> + <g id="text_13"> + <!-- Magnitude of Earthquake --> + <g transform="translate(31.795312 237.620969) rotate(-90) scale(0.1 -0.1)"> + <defs> + <path id="DejaVuSans-4d" d="M 628 4666 +L 1569 4666 +L 2759 1491 +L 3956 4666 +L 4897 4666 +L 4897 0 +L 4281 0 +L 4281 4097 +L 3078 897 +L 2444 897 +L 1241 4097 +L 1241 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-67" d="M 2906 1791 +Q 2906 2416 2648 2759 +Q 2391 3103 1925 3103 +Q 1463 3103 1205 2759 +Q 947 2416 947 1791 +Q 947 1169 1205 825 +Q 1463 481 1925 481 +Q 2391 481 2648 825 +Q 2906 1169 2906 1791 +z +M 3481 434 +Q 3481 -459 3084 -895 +Q 2688 -1331 1869 -1331 +Q 1566 -1331 1297 -1286 +Q 1028 -1241 775 -1147 +L 775 -588 +Q 1028 -725 1275 -790 +Q 1522 -856 1778 -856 +Q 2344 -856 2625 -561 +Q 2906 -266 2906 331 +L 2906 616 +Q 2728 306 2450 153 +Q 2172 0 1784 0 +Q 1141 0 747 490 +Q 353 981 353 1791 +Q 353 2603 747 3093 +Q 1141 3584 1784 3584 +Q 2172 3584 2450 3431 +Q 2728 3278 2906 2969 +L 2906 3500 +L 3481 3500 +L 3481 434 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-6e" d="M 3513 2113 +L 3513 0 +L 2938 0 +L 2938 2094 +Q 2938 2591 2744 2837 +Q 2550 3084 2163 3084 +Q 1697 3084 1428 2787 +Q 1159 2491 1159 1978 +L 1159 0 +L 581 0 +L 581 3500 +L 1159 3500 +L 1159 2956 +Q 1366 3272 1645 3428 +Q 1925 3584 2291 3584 +Q 2894 3584 3203 3211 +Q 3513 2838 3513 2113 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-69" d="M 603 3500 +L 1178 3500 +L 1178 0 +L 603 0 +L 603 3500 +z +M 603 4863 +L 1178 4863 +L 1178 4134 +L 603 4134 +L 603 4863 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-64" d="M 2906 2969 +L 2906 4863 +L 3481 4863 +L 3481 0 +L 2906 0 +L 2906 525 +Q 2725 213 2448 61 +Q 2172 -91 1784 -91 +Q 1150 -91 751 415 +Q 353 922 353 1747 +Q 353 2572 751 3078 +Q 1150 3584 1784 3584 +Q 2172 3584 2448 3432 +Q 2725 3281 2906 2969 +z +M 947 1747 +Q 947 1113 1208 752 +Q 1469 391 1925 391 +Q 2381 391 2643 752 +Q 2906 1113 2906 1747 +Q 2906 2381 2643 2742 +Q 2381 3103 1925 3103 +Q 1469 3103 1208 2742 +Q 947 2381 947 1747 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-4d"/> + <use xlink:href="#DejaVuSans-61" x="86.279297"/> + <use xlink:href="#DejaVuSans-67" x="147.558594"/> + <use xlink:href="#DejaVuSans-6e" x="211.035156"/> + <use xlink:href="#DejaVuSans-69" x="274.414062"/> + <use xlink:href="#DejaVuSans-74" x="302.197266"/> + <use xlink:href="#DejaVuSans-75" x="341.40625"/> + <use xlink:href="#DejaVuSans-64" x="404.785156"/> + <use xlink:href="#DejaVuSans-65" x="468.261719"/> + <use xlink:href="#DejaVuSans-20" x="529.785156"/> + <use xlink:href="#DejaVuSans-6f" x="561.572266"/> + <use xlink:href="#DejaVuSans-66" x="622.753906"/> + <use xlink:href="#DejaVuSans-20" x="657.958984"/> + <use xlink:href="#DejaVuSans-45" x="689.746094"/> + <use xlink:href="#DejaVuSans-61" x="752.929688"/> + <use xlink:href="#DejaVuSans-72" x="814.208984"/> + <use xlink:href="#DejaVuSans-74" x="855.322266"/> + <use xlink:href="#DejaVuSans-68" x="894.53125"/> + <use xlink:href="#DejaVuSans-71" x="957.910156"/> + <use xlink:href="#DejaVuSans-75" x="1021.386719"/> + <use xlink:href="#DejaVuSans-61" x="1084.765625"/> + <use xlink:href="#DejaVuSans-6b" x="1146.044922"/> + <use xlink:href="#DejaVuSans-65" x="1200.330078"/> + </g> + </g> + </g> + <g id="line2d_12"> + <defs> + <path id="m3be1192eab" d="M 0 3 +C 0.795609 3 1.55874 2.683901 2.12132 2.12132 +C 2.683901 1.55874 3 0.795609 3 0 +C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132 +C 1.55874 -2.683901 0.795609 -3 0 -3 +C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132 +C -2.683901 -1.55874 -3 -0.795609 -3 0 +C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132 +C -1.55874 2.683901 -0.795609 3 0 3 +z +" style="stroke: #1f77b4"/> + </defs> + <g clip-path="url(#p73de366123)"> + <use xlink:href="#m3be1192eab" x="112.541538" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="222.424615" y="198.47808" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="249.895385" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="153.747692" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="373.513846" y="238.39488" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="304.836923" y="222.42816" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="332.307692" y="227.7504" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="85.070769" y="217.10592" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="208.689231" y="206.46144" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="277.366154" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="263.630769" y="222.42816" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="373.513846" y="238.39488" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="291.101538" y="230.41152" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="71.335385" y="227.7504" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="167.483077" y="217.10592" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="236.16" y="211.78368" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="140.012308" y="211.78368" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="126.276923" y="198.47808" style="fill: #1f77b4; stroke: #1f77b4"/> + </g> + </g> + <g id="LineCollection_1"> + <path d="M 112.541538 346.6 +L 112.541538 219.76704 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 222.424615 346.6 +L 222.424615 198.47808 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 249.895385 346.6 +L 249.895385 219.76704 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 153.747692 346.6 +L 153.747692 219.76704 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 373.513846 346.6 +L 373.513846 238.39488 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 304.836923 346.6 +L 304.836923 222.42816 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 332.307692 346.6 +L 332.307692 227.7504 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 85.070769 346.6 +L 85.070769 217.10592 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 208.689231 346.6 +L 208.689231 206.46144 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 277.366154 346.6 +L 277.366154 219.76704 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 263.630769 346.6 +L 263.630769 222.42816 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 373.513846 346.6 +L 373.513846 238.39488 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 291.101538 346.6 +L 291.101538 230.41152 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 71.335385 346.6 +L 71.335385 227.7504 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 167.483077 346.6 +L 167.483077 217.10592 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 236.16 346.6 +L 236.16 211.78368 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 140.012308 346.6 +L 140.012308 211.78368 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + <path d="M 126.276923 346.6 +L 126.276923 198.47808 +" clip-path="url(#p73de366123)" style="fill: none; stroke: #1f77b4; stroke-width: 1.5"/> + </g> + <g id="line2d_13"> + <g clip-path="url(#p73de366123)"> + <use xlink:href="#m3be1192eab" x="112.541538" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="222.424615" y="198.47808" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="249.895385" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="153.747692" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="373.513846" y="238.39488" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="304.836923" y="222.42816" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="332.307692" y="227.7504" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="85.070769" y="217.10592" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="208.689231" y="206.46144" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="277.366154" y="219.76704" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="263.630769" y="222.42816" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="373.513846" y="238.39488" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="291.101538" y="230.41152" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="71.335385" y="227.7504" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="167.483077" y="217.10592" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="236.16" y="211.78368" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="140.012308" y="211.78368" style="fill: #1f77b4; stroke: #1f77b4"/> + <use xlink:href="#m3be1192eab" x="126.276923" y="198.47808" style="fill: #1f77b4; stroke: #1f77b4"/> + </g> + </g> + <g id="line2d_14"> + <path clip-path="url(#p73de366123)" style="fill: none; stroke: #d62728; stroke-width: 1.5; stroke-linecap: square"/> + </g> + <g id="patch_3"> + <path d="M 57.6 307.584 +L 57.6 41.472 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_4"> + <path d="M 414.72 307.584 +L 414.72 41.472 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_5"> + <path d="M 57.6 307.584 +L 414.72 307.584 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_6"> + <path d="M 57.6 41.472 +L 414.72 41.472 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_7"> + <path d="M 221.804825 165.232042 +Q 217.901772 177.751409 213.998719 190.270775 +L 216.146751 190.940448 +Q 213.168175 196.294664 210.1896 201.648881 +Q 210.781474 195.550584 211.373348 189.452286 +L 213.521379 190.121959 +Q 217.424432 177.602593 221.327484 165.083226 +L 221.804825 165.232042 +z +" style="stroke: #000000; stroke-linecap: round"/> + </g> + <g id="text_14"> + <!-- M_w = 8.8 in 2010 at Chile, Concepción --> + <g transform="translate(227.359403 156.802564) rotate(-35) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-5f" d="M 3263 -1063 +L 3263 -1509 +L -63 -1509 +L -63 -1063 +L 3263 -1063 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-77" d="M 269 3500 +L 844 3500 +L 1563 769 +L 2278 3500 +L 2956 3500 +L 3675 769 +L 4391 3500 +L 4966 3500 +L 4050 0 +L 3372 0 +L 2619 2869 +L 1863 0 +L 1184 0 +L 269 3500 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-3d" d="M 678 2906 +L 4684 2906 +L 4684 2381 +L 678 2381 +L 678 2906 +z +M 678 1631 +L 4684 1631 +L 4684 1100 +L 678 1100 +L 678 1631 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-2e" d="M 684 794 +L 1344 794 +L 1344 0 +L 684 0 +L 684 794 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-43" d="M 4122 4306 +L 4122 3641 +Q 3803 3938 3442 4084 +Q 3081 4231 2675 4231 +Q 1875 4231 1450 3742 +Q 1025 3253 1025 2328 +Q 1025 1406 1450 917 +Q 1875 428 2675 428 +Q 3081 428 3442 575 +Q 3803 722 4122 1019 +L 4122 359 +Q 3791 134 3420 21 +Q 3050 -91 2638 -91 +Q 1578 -91 968 557 +Q 359 1206 359 2328 +Q 359 3453 968 4101 +Q 1578 4750 2638 4750 +Q 3056 4750 3426 4639 +Q 3797 4528 4122 4306 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-6c" d="M 603 4863 +L 1178 4863 +L 1178 0 +L 603 0 +L 603 4863 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-2c" d="M 750 794 +L 1409 794 +L 1409 256 +L 897 -744 +L 494 -744 +L 750 256 +L 750 794 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-63" d="M 3122 3366 +L 3122 2828 +Q 2878 2963 2633 3030 +Q 2388 3097 2138 3097 +Q 1578 3097 1268 2742 +Q 959 2388 959 1747 +Q 959 1106 1268 751 +Q 1578 397 2138 397 +Q 2388 397 2633 464 +Q 2878 531 3122 666 +L 3122 134 +Q 2881 22 2623 -34 +Q 2366 -91 2075 -91 +Q 1284 -91 818 406 +Q 353 903 353 1747 +Q 353 2603 823 3093 +Q 1294 3584 2113 3584 +Q 2378 3584 2631 3529 +Q 2884 3475 3122 3366 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-70" d="M 1159 525 +L 1159 -1331 +L 581 -1331 +L 581 3500 +L 1159 3500 +L 1159 2969 +Q 1341 3281 1617 3432 +Q 1894 3584 2278 3584 +Q 2916 3584 3314 3078 +Q 3713 2572 3713 1747 +Q 3713 922 3314 415 +Q 2916 -91 2278 -91 +Q 1894 -91 1617 61 +Q 1341 213 1159 525 +z +M 3116 1747 +Q 3116 2381 2855 2742 +Q 2594 3103 2138 3103 +Q 1681 3103 1420 2742 +Q 1159 2381 1159 1747 +Q 1159 1113 1420 752 +Q 1681 391 2138 391 +Q 2594 391 2855 752 +Q 3116 1113 3116 1747 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-f3" d="M 1959 3097 +Q 1497 3097 1228 2736 +Q 959 2375 959 1747 +Q 959 1119 1226 758 +Q 1494 397 1959 397 +Q 2419 397 2687 759 +Q 2956 1122 2956 1747 +Q 2956 2369 2687 2733 +Q 2419 3097 1959 3097 +z +M 1959 3584 +Q 2709 3584 3137 3096 +Q 3566 2609 3566 1747 +Q 3566 888 3137 398 +Q 2709 -91 1959 -91 +Q 1206 -91 779 398 +Q 353 888 353 1747 +Q 353 2609 779 3096 +Q 1206 3584 1959 3584 +z +M 2394 5119 +L 3016 5119 +L 1997 3944 +L 1519 3944 +L 2394 5119 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-4d"/> + <use xlink:href="#DejaVuSans-5f" x="86.279297"/> + <use xlink:href="#DejaVuSans-77" x="136.279297"/> + <use xlink:href="#DejaVuSans-20" x="218.066406"/> + <use xlink:href="#DejaVuSans-3d" x="249.853516"/> + <use xlink:href="#DejaVuSans-20" x="333.642578"/> + <use xlink:href="#DejaVuSans-38" x="365.429688"/> + <use xlink:href="#DejaVuSans-2e" x="429.052734"/> + <use xlink:href="#DejaVuSans-38" x="460.839844"/> + <use xlink:href="#DejaVuSans-20" x="524.462891"/> + <use xlink:href="#DejaVuSans-69" x="556.25"/> + <use xlink:href="#DejaVuSans-6e" x="584.033203"/> + <use xlink:href="#DejaVuSans-20" x="647.412109"/> + <use xlink:href="#DejaVuSans-32" x="679.199219"/> + <use xlink:href="#DejaVuSans-30" x="742.822266"/> + <use xlink:href="#DejaVuSans-31" x="806.445312"/> + <use xlink:href="#DejaVuSans-30" x="870.068359"/> + <use xlink:href="#DejaVuSans-20" x="933.691406"/> + <use xlink:href="#DejaVuSans-61" x="965.478516"/> + <use xlink:href="#DejaVuSans-74" x="1026.757812"/> + <use xlink:href="#DejaVuSans-20" x="1065.966797"/> + <use xlink:href="#DejaVuSans-43" x="1097.753906"/> + <use xlink:href="#DejaVuSans-68" x="1167.578125"/> + <use xlink:href="#DejaVuSans-69" x="1230.957031"/> + <use xlink:href="#DejaVuSans-6c" x="1258.740234"/> + <use xlink:href="#DejaVuSans-65" x="1286.523438"/> + <use xlink:href="#DejaVuSans-2c" x="1348.046875"/> + <use xlink:href="#DejaVuSans-20" x="1379.833984"/> + <use xlink:href="#DejaVuSans-43" x="1411.621094"/> + <use xlink:href="#DejaVuSans-6f" x="1481.445312"/> + <use xlink:href="#DejaVuSans-6e" x="1542.626953"/> + <use xlink:href="#DejaVuSans-63" x="1606.005859"/> + <use xlink:href="#DejaVuSans-65" x="1660.986328"/> + <use xlink:href="#DejaVuSans-70" x="1722.509766"/> + <use xlink:href="#DejaVuSans-63" x="1785.986328"/> + <use xlink:href="#DejaVuSans-69" x="1840.966797"/> + <use xlink:href="#DejaVuSans-f3" x="1868.75"/> + <use xlink:href="#DejaVuSans-6e" x="1929.931641"/> + </g> + </g> + <g id="patch_8"> + <path d="M 290.481748 178.537642 +Q 286.578695 191.057009 282.675643 203.576375 +L 284.823674 204.246048 +Q 281.845098 209.600264 278.866523 214.954481 +Q 279.458397 208.856184 280.050271 202.757886 +L 282.198302 203.427559 +Q 286.101355 190.908193 290.004407 178.388826 +L 290.481748 178.537642 +z +" style="stroke: #000000; stroke-linecap: round"/> + </g> + <g id="text_15"> + <!-- M_w = 8.3 in 2015 at Chile, Coquimbo --> + <g transform="translate(295.852782 170.108164) rotate(-35) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-33" d="M 2597 2516 +Q 3050 2419 3304 2112 +Q 3559 1806 3559 1356 +Q 3559 666 3084 287 +Q 2609 -91 1734 -91 +Q 1441 -91 1130 -33 +Q 819 25 488 141 +L 488 750 +Q 750 597 1062 519 +Q 1375 441 1716 441 +Q 2309 441 2620 675 +Q 2931 909 2931 1356 +Q 2931 1769 2642 2001 +Q 2353 2234 1838 2234 +L 1294 2234 +L 1294 2753 +L 1863 2753 +Q 2328 2753 2575 2939 +Q 2822 3125 2822 3475 +Q 2822 3834 2567 4026 +Q 2313 4219 1838 4219 +Q 1578 4219 1281 4162 +Q 984 4106 628 3988 +L 628 4550 +Q 988 4650 1302 4700 +Q 1616 4750 1894 4750 +Q 2613 4750 3031 4423 +Q 3450 4097 3450 3541 +Q 3450 3153 3228 2886 +Q 3006 2619 2597 2516 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-6d" d="M 3328 2828 +Q 3544 3216 3844 3400 +Q 4144 3584 4550 3584 +Q 5097 3584 5394 3201 +Q 5691 2819 5691 2113 +L 5691 0 +L 5113 0 +L 5113 2094 +Q 5113 2597 4934 2840 +Q 4756 3084 4391 3084 +Q 3944 3084 3684 2787 +Q 3425 2491 3425 1978 +L 3425 0 +L 2847 0 +L 2847 2094 +Q 2847 2600 2669 2842 +Q 2491 3084 2119 3084 +Q 1678 3084 1418 2786 +Q 1159 2488 1159 1978 +L 1159 0 +L 581 0 +L 581 3500 +L 1159 3500 +L 1159 2956 +Q 1356 3278 1631 3431 +Q 1906 3584 2284 3584 +Q 2666 3584 2933 3390 +Q 3200 3197 3328 2828 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-62" d="M 3116 1747 +Q 3116 2381 2855 2742 +Q 2594 3103 2138 3103 +Q 1681 3103 1420 2742 +Q 1159 2381 1159 1747 +Q 1159 1113 1420 752 +Q 1681 391 2138 391 +Q 2594 391 2855 752 +Q 3116 1113 3116 1747 +z +M 1159 2969 +Q 1341 3281 1617 3432 +Q 1894 3584 2278 3584 +Q 2916 3584 3314 3078 +Q 3713 2572 3713 1747 +Q 3713 922 3314 415 +Q 2916 -91 2278 -91 +Q 1894 -91 1617 61 +Q 1341 213 1159 525 +L 1159 0 +L 581 0 +L 581 4863 +L 1159 4863 +L 1159 2969 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-4d"/> + <use xlink:href="#DejaVuSans-5f" x="86.279297"/> + <use xlink:href="#DejaVuSans-77" x="136.279297"/> + <use xlink:href="#DejaVuSans-20" x="218.066406"/> + <use xlink:href="#DejaVuSans-3d" x="249.853516"/> + <use xlink:href="#DejaVuSans-20" x="333.642578"/> + <use xlink:href="#DejaVuSans-38" x="365.429688"/> + <use xlink:href="#DejaVuSans-2e" x="429.052734"/> + <use xlink:href="#DejaVuSans-33" x="460.839844"/> + <use xlink:href="#DejaVuSans-20" x="524.462891"/> + <use xlink:href="#DejaVuSans-69" x="556.25"/> + <use xlink:href="#DejaVuSans-6e" x="584.033203"/> + <use xlink:href="#DejaVuSans-20" x="647.412109"/> + <use xlink:href="#DejaVuSans-32" x="679.199219"/> + <use xlink:href="#DejaVuSans-30" x="742.822266"/> + <use xlink:href="#DejaVuSans-31" x="806.445312"/> + <use xlink:href="#DejaVuSans-35" x="870.068359"/> + <use xlink:href="#DejaVuSans-20" x="933.691406"/> + <use xlink:href="#DejaVuSans-61" x="965.478516"/> + <use xlink:href="#DejaVuSans-74" x="1026.757812"/> + <use xlink:href="#DejaVuSans-20" x="1065.966797"/> + <use xlink:href="#DejaVuSans-43" x="1097.753906"/> + <use xlink:href="#DejaVuSans-68" x="1167.578125"/> + <use xlink:href="#DejaVuSans-69" x="1230.957031"/> + <use xlink:href="#DejaVuSans-6c" x="1258.740234"/> + <use xlink:href="#DejaVuSans-65" x="1286.523438"/> + <use xlink:href="#DejaVuSans-2c" x="1348.046875"/> + <use xlink:href="#DejaVuSans-20" x="1379.833984"/> + <use xlink:href="#DejaVuSans-43" x="1411.621094"/> + <use xlink:href="#DejaVuSans-6f" x="1481.445312"/> + <use xlink:href="#DejaVuSans-71" x="1542.626953"/> + <use xlink:href="#DejaVuSans-75" x="1606.103516"/> + <use xlink:href="#DejaVuSans-69" x="1669.482422"/> + <use xlink:href="#DejaVuSans-6d" x="1697.265625"/> + <use xlink:href="#DejaVuSans-62" x="1794.677734"/> + <use xlink:href="#DejaVuSans-6f" x="1858.154297"/> + </g> + </g> + <g id="patch_9"> + <path d="M 84.450978 186.521002 +Q 80.547926 199.040369 76.644873 211.559735 +L 78.792905 212.229408 +Q 75.814329 217.583624 72.835754 222.937841 +Q 73.427628 216.839544 74.019502 210.741246 +L 76.167533 211.410919 +Q 80.070586 198.891553 83.973638 186.372186 +L 84.450978 186.521002 +z +" style="stroke: #000000; stroke-linecap: round"/> + </g> + <g id="text_16"> + <!-- M_w = 8.0 in 2000 at Papua New Guinea --> + <g transform="translate(89.822012 178.091524) rotate(-35) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-50" d="M 1259 4147 +L 1259 2394 +L 2053 2394 +Q 2494 2394 2734 2622 +Q 2975 2850 2975 3272 +Q 2975 3691 2734 3919 +Q 2494 4147 2053 4147 +L 1259 4147 +z +M 628 4666 +L 2053 4666 +Q 2838 4666 3239 4311 +Q 3641 3956 3641 3272 +Q 3641 2581 3239 2228 +Q 2838 1875 2053 1875 +L 1259 1875 +L 1259 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-4e" d="M 628 4666 +L 1478 4666 +L 3547 763 +L 3547 4666 +L 4159 4666 +L 4159 0 +L 3309 0 +L 1241 3903 +L 1241 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-47" d="M 3809 666 +L 3809 1919 +L 2778 1919 +L 2778 2438 +L 4434 2438 +L 4434 434 +Q 4069 175 3628 42 +Q 3188 -91 2688 -91 +Q 1594 -91 976 548 +Q 359 1188 359 2328 +Q 359 3472 976 4111 +Q 1594 4750 2688 4750 +Q 3144 4750 3555 4637 +Q 3966 4525 4313 4306 +L 4313 3634 +Q 3963 3931 3569 4081 +Q 3175 4231 2741 4231 +Q 1884 4231 1454 3753 +Q 1025 3275 1025 2328 +Q 1025 1384 1454 906 +Q 1884 428 2741 428 +Q 3075 428 3337 486 +Q 3600 544 3809 666 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-4d"/> + <use xlink:href="#DejaVuSans-5f" x="86.279297"/> + <use xlink:href="#DejaVuSans-77" x="136.279297"/> + <use xlink:href="#DejaVuSans-20" x="218.066406"/> + <use xlink:href="#DejaVuSans-3d" x="249.853516"/> + <use xlink:href="#DejaVuSans-20" x="333.642578"/> + <use xlink:href="#DejaVuSans-38" x="365.429688"/> + <use xlink:href="#DejaVuSans-2e" x="429.052734"/> + <use xlink:href="#DejaVuSans-30" x="460.839844"/> + <use xlink:href="#DejaVuSans-20" x="524.462891"/> + <use xlink:href="#DejaVuSans-69" x="556.25"/> + <use xlink:href="#DejaVuSans-6e" x="584.033203"/> + <use xlink:href="#DejaVuSans-20" x="647.412109"/> + <use xlink:href="#DejaVuSans-32" x="679.199219"/> + <use xlink:href="#DejaVuSans-30" x="742.822266"/> + <use xlink:href="#DejaVuSans-30" x="806.445312"/> + <use xlink:href="#DejaVuSans-30" x="870.068359"/> + <use xlink:href="#DejaVuSans-20" x="933.691406"/> + <use xlink:href="#DejaVuSans-61" x="965.478516"/> + <use xlink:href="#DejaVuSans-74" x="1026.757812"/> + <use xlink:href="#DejaVuSans-20" x="1065.966797"/> + <use xlink:href="#DejaVuSans-50" x="1097.753906"/> + <use xlink:href="#DejaVuSans-61" x="1153.556641"/> + <use xlink:href="#DejaVuSans-70" x="1214.835938"/> + <use xlink:href="#DejaVuSans-75" x="1278.3125"/> + <use xlink:href="#DejaVuSans-61" x="1341.691406"/> + <use xlink:href="#DejaVuSans-20" x="1402.970703"/> + <use xlink:href="#DejaVuSans-4e" x="1434.757812"/> + <use xlink:href="#DejaVuSans-65" x="1509.5625"/> + <use xlink:href="#DejaVuSans-77" x="1571.085938"/> + <use xlink:href="#DejaVuSans-20" x="1652.873047"/> + <use xlink:href="#DejaVuSans-47" x="1684.660156"/> + <use xlink:href="#DejaVuSans-75" x="1762.150391"/> + <use xlink:href="#DejaVuSans-69" x="1825.529297"/> + <use xlink:href="#DejaVuSans-6e" x="1853.3125"/> + <use xlink:href="#DejaVuSans-65" x="1916.691406"/> + <use xlink:href="#DejaVuSans-61" x="1978.214844"/> + </g> + </g> + <g id="patch_10"> + <path d="M 153.127901 170.554282 +Q 149.224849 183.073649 145.321796 195.593015 +L 147.469828 196.262688 +Q 144.491252 201.616904 141.512677 206.971121 +Q 142.104551 200.872824 142.696425 194.774526 +L 144.844456 195.444199 +Q 148.747509 182.924833 152.650561 170.405466 +L 153.127901 170.554282 +z +" style="stroke: #000000; stroke-linecap: round"/> + </g> + <g id="text_17"> + <!-- M_w = 8.6 in 2005 at Indonesia, Simeulue --> + <g transform="translate(158.498935 162.124804) rotate(-35) scale(0.08 -0.08)"> + <defs> + <path id="DejaVuSans-49" d="M 628 4666 +L 1259 4666 +L 1259 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-73" d="M 2834 3397 +L 2834 2853 +Q 2591 2978 2328 3040 +Q 2066 3103 1784 3103 +Q 1356 3103 1142 2972 +Q 928 2841 928 2578 +Q 928 2378 1081 2264 +Q 1234 2150 1697 2047 +L 1894 2003 +Q 2506 1872 2764 1633 +Q 3022 1394 3022 966 +Q 3022 478 2636 193 +Q 2250 -91 1575 -91 +Q 1294 -91 989 -36 +Q 684 19 347 128 +L 347 722 +Q 666 556 975 473 +Q 1284 391 1588 391 +Q 1994 391 2212 530 +Q 2431 669 2431 922 +Q 2431 1156 2273 1281 +Q 2116 1406 1581 1522 +L 1381 1569 +Q 847 1681 609 1914 +Q 372 2147 372 2553 +Q 372 3047 722 3315 +Q 1072 3584 1716 3584 +Q 2034 3584 2315 3537 +Q 2597 3491 2834 3397 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-53" d="M 3425 4513 +L 3425 3897 +Q 3066 4069 2747 4153 +Q 2428 4238 2131 4238 +Q 1616 4238 1336 4038 +Q 1056 3838 1056 3469 +Q 1056 3159 1242 3001 +Q 1428 2844 1947 2747 +L 2328 2669 +Q 3034 2534 3370 2195 +Q 3706 1856 3706 1288 +Q 3706 609 3251 259 +Q 2797 -91 1919 -91 +Q 1588 -91 1214 -16 +Q 841 59 441 206 +L 441 856 +Q 825 641 1194 531 +Q 1563 422 1919 422 +Q 2459 422 2753 634 +Q 3047 847 3047 1241 +Q 3047 1584 2836 1778 +Q 2625 1972 2144 2069 +L 1759 2144 +Q 1053 2284 737 2584 +Q 422 2884 422 3419 +Q 422 4038 858 4394 +Q 1294 4750 2059 4750 +Q 2388 4750 2728 4690 +Q 3069 4631 3425 4513 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-4d"/> + <use xlink:href="#DejaVuSans-5f" x="86.279297"/> + <use xlink:href="#DejaVuSans-77" x="136.279297"/> + <use xlink:href="#DejaVuSans-20" x="218.066406"/> + <use xlink:href="#DejaVuSans-3d" x="249.853516"/> + <use xlink:href="#DejaVuSans-20" x="333.642578"/> + <use xlink:href="#DejaVuSans-38" x="365.429688"/> + <use xlink:href="#DejaVuSans-2e" x="429.052734"/> + <use xlink:href="#DejaVuSans-36" x="460.839844"/> + <use xlink:href="#DejaVuSans-20" x="524.462891"/> + <use xlink:href="#DejaVuSans-69" x="556.25"/> + <use xlink:href="#DejaVuSans-6e" x="584.033203"/> + <use xlink:href="#DejaVuSans-20" x="647.412109"/> + <use xlink:href="#DejaVuSans-32" x="679.199219"/> + <use xlink:href="#DejaVuSans-30" x="742.822266"/> + <use xlink:href="#DejaVuSans-30" x="806.445312"/> + <use xlink:href="#DejaVuSans-35" x="870.068359"/> + <use xlink:href="#DejaVuSans-20" x="933.691406"/> + <use xlink:href="#DejaVuSans-61" x="965.478516"/> + <use xlink:href="#DejaVuSans-74" x="1026.757812"/> + <use xlink:href="#DejaVuSans-20" x="1065.966797"/> + <use xlink:href="#DejaVuSans-49" x="1097.753906"/> + <use xlink:href="#DejaVuSans-6e" x="1127.246094"/> + <use xlink:href="#DejaVuSans-64" x="1190.625"/> + <use xlink:href="#DejaVuSans-6f" x="1254.101562"/> + <use xlink:href="#DejaVuSans-6e" x="1315.283203"/> + <use xlink:href="#DejaVuSans-65" x="1378.662109"/> + <use xlink:href="#DejaVuSans-73" x="1440.185547"/> + <use xlink:href="#DejaVuSans-69" x="1492.285156"/> + <use xlink:href="#DejaVuSans-61" x="1520.068359"/> + <use xlink:href="#DejaVuSans-2c" x="1581.347656"/> + <use xlink:href="#DejaVuSans-20" x="1613.134766"/> + <use xlink:href="#DejaVuSans-53" x="1644.921875"/> + <use xlink:href="#DejaVuSans-69" x="1708.398438"/> + <use xlink:href="#DejaVuSans-6d" x="1736.181641"/> + <use xlink:href="#DejaVuSans-65" x="1833.59375"/> + <use xlink:href="#DejaVuSans-75" x="1895.117188"/> + <use xlink:href="#DejaVuSans-6c" x="1958.496094"/> + <use xlink:href="#DejaVuSans-75" x="1986.279297"/> + <use xlink:href="#DejaVuSans-65" x="2049.658203"/> + </g> + </g> + <g id="text_18"> + <!-- Biggest earthquakes each year since 2000 on Ring of Fire --> + <g transform="translate(62.950312 35.472) scale(0.12 -0.12)"> + <defs> + <path id="DejaVuSans-42" d="M 1259 2228 +L 1259 519 +L 2272 519 +Q 2781 519 3026 730 +Q 3272 941 3272 1375 +Q 3272 1813 3026 2020 +Q 2781 2228 2272 2228 +L 1259 2228 +z +M 1259 4147 +L 1259 2741 +L 2194 2741 +Q 2656 2741 2882 2914 +Q 3109 3088 3109 3444 +Q 3109 3797 2882 3972 +Q 2656 4147 2194 4147 +L 1259 4147 +z +M 628 4666 +L 2241 4666 +Q 2963 4666 3353 4366 +Q 3744 4066 3744 3513 +Q 3744 3084 3544 2831 +Q 3344 2578 2956 2516 +Q 3422 2416 3680 2098 +Q 3938 1781 3938 1306 +Q 3938 681 3513 340 +Q 3088 0 2303 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-79" d="M 2059 -325 +Q 1816 -950 1584 -1140 +Q 1353 -1331 966 -1331 +L 506 -1331 +L 506 -850 +L 844 -850 +Q 1081 -850 1212 -737 +Q 1344 -625 1503 -206 +L 1606 56 +L 191 3500 +L 800 3500 +L 1894 763 +L 2988 3500 +L 3597 3500 +L 2059 -325 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-52" d="M 2841 2188 +Q 3044 2119 3236 1894 +Q 3428 1669 3622 1275 +L 4263 0 +L 3584 0 +L 2988 1197 +Q 2756 1666 2539 1819 +Q 2322 1972 1947 1972 +L 1259 1972 +L 1259 0 +L 628 0 +L 628 4666 +L 2053 4666 +Q 2853 4666 3247 4331 +Q 3641 3997 3641 3322 +Q 3641 2881 3436 2590 +Q 3231 2300 2841 2188 +z +M 1259 4147 +L 1259 2491 +L 2053 2491 +Q 2509 2491 2742 2702 +Q 2975 2913 2975 3322 +Q 2975 3731 2742 3939 +Q 2509 4147 2053 4147 +L 1259 4147 +z +" transform="scale(0.015625)"/> + <path id="DejaVuSans-46" d="M 628 4666 +L 3309 4666 +L 3309 4134 +L 1259 4134 +L 1259 2759 +L 3109 2759 +L 3109 2228 +L 1259 2228 +L 1259 0 +L 628 0 +L 628 4666 +z +" transform="scale(0.015625)"/> + </defs> + <use xlink:href="#DejaVuSans-42"/> + <use xlink:href="#DejaVuSans-69" x="68.603516"/> + <use xlink:href="#DejaVuSans-67" x="96.386719"/> + <use xlink:href="#DejaVuSans-67" x="159.863281"/> + <use xlink:href="#DejaVuSans-65" x="223.339844"/> + <use xlink:href="#DejaVuSans-73" x="284.863281"/> + <use xlink:href="#DejaVuSans-74" x="336.962891"/> + <use xlink:href="#DejaVuSans-20" x="376.171875"/> + <use xlink:href="#DejaVuSans-65" x="407.958984"/> + <use xlink:href="#DejaVuSans-61" x="469.482422"/> + <use xlink:href="#DejaVuSans-72" x="530.761719"/> + <use xlink:href="#DejaVuSans-74" x="571.875"/> + <use xlink:href="#DejaVuSans-68" x="611.083984"/> + <use xlink:href="#DejaVuSans-71" x="674.462891"/> + <use xlink:href="#DejaVuSans-75" x="737.939453"/> + <use xlink:href="#DejaVuSans-61" x="801.318359"/> + <use xlink:href="#DejaVuSans-6b" x="862.597656"/> + <use xlink:href="#DejaVuSans-65" x="916.882812"/> + <use xlink:href="#DejaVuSans-73" x="978.40625"/> + <use xlink:href="#DejaVuSans-20" x="1030.505859"/> + <use xlink:href="#DejaVuSans-65" x="1062.292969"/> + <use xlink:href="#DejaVuSans-61" x="1123.816406"/> + <use xlink:href="#DejaVuSans-63" x="1185.095703"/> + <use xlink:href="#DejaVuSans-68" x="1240.076172"/> + <use xlink:href="#DejaVuSans-20" x="1303.455078"/> + <use xlink:href="#DejaVuSans-79" x="1335.242188"/> + <use xlink:href="#DejaVuSans-65" x="1394.421875"/> + <use xlink:href="#DejaVuSans-61" x="1455.945312"/> + <use xlink:href="#DejaVuSans-72" x="1517.224609"/> + <use xlink:href="#DejaVuSans-20" x="1558.337891"/> + <use xlink:href="#DejaVuSans-73" x="1590.125"/> + <use xlink:href="#DejaVuSans-69" x="1642.224609"/> + <use xlink:href="#DejaVuSans-6e" x="1670.007812"/> + <use xlink:href="#DejaVuSans-63" x="1733.386719"/> + <use xlink:href="#DejaVuSans-65" x="1788.367188"/> + <use xlink:href="#DejaVuSans-20" x="1849.890625"/> + <use xlink:href="#DejaVuSans-32" x="1881.677734"/> + <use xlink:href="#DejaVuSans-30" x="1945.300781"/> + <use xlink:href="#DejaVuSans-30" x="2008.923828"/> + <use xlink:href="#DejaVuSans-30" x="2072.546875"/> + <use xlink:href="#DejaVuSans-20" x="2136.169922"/> + <use xlink:href="#DejaVuSans-6f" x="2167.957031"/> + <use xlink:href="#DejaVuSans-6e" x="2229.138672"/> + <use xlink:href="#DejaVuSans-20" x="2292.517578"/> + <use xlink:href="#DejaVuSans-52" x="2324.304688"/> + <use xlink:href="#DejaVuSans-69" x="2393.787109"/> + <use xlink:href="#DejaVuSans-6e" x="2421.570312"/> + <use xlink:href="#DejaVuSans-67" x="2484.949219"/> + <use xlink:href="#DejaVuSans-20" x="2548.425781"/> + <use xlink:href="#DejaVuSans-6f" x="2580.212891"/> + <use xlink:href="#DejaVuSans-66" x="2641.394531"/> + <use xlink:href="#DejaVuSans-20" x="2676.599609"/> + <use xlink:href="#DejaVuSans-46" x="2708.386719"/> + <use xlink:href="#DejaVuSans-69" x="2758.65625"/> + <use xlink:href="#DejaVuSans-72" x="2786.439453"/> + <use xlink:href="#DejaVuSans-65" x="2825.302734"/> + </g> + </g> + </g> + </g> + <defs> + <clipPath id="p73de366123"> + <rect x="57.6" y="41.472" width="357.12" height="266.112"/> + </clipPath> + </defs> +</svg>