{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import scipy.signal as sp\n",
    "import IPython\n",
    "from scipy.io import wavfile"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.rcParams[\"figure.figsize\"] = (14,4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def MagPhaseFIR(h):\n",
    "    # plot the magnitude and phase of an odd-length (2L+1) FIR filter, placing\n",
    "    #  the center tap (h[L]) in n = 0\n",
    "    PTS = 300 # change this to increase the resolution\n",
    "\n",
    "    if (len(h) % 2 == 0):\n",
    "        raise Exception('filter length must be odd')\n",
    "    L = int((len(h) - 1) / 2)\n",
    "    # points used to compute the FFT\n",
    "    N = 2 * PTS + 1\n",
    "    \n",
    "    # compute the DFT of the causal filter\n",
    "    H = np.fft.fft(h, N)\n",
    "    # compensate for causal shift\n",
    "    H = H * np.exp(1j * (2 * np.pi / N) * L * np.arange(0, N))\n",
    "    # swap the frequencies in DTFT order\n",
    "    H = np.r_[H[PTS+1:], H[0:PTS+1]]\n",
    "    \n",
    "    # discretization of the frequency axis\n",
    "    w = 2 * np.pi * np.arange(-PTS, PTS+1) / (2*PTS+1)  \n",
    "    plt.subplot(1, 2, 1) \n",
    "    plt.plot(w, np.abs(H))\n",
    "    plt.subplot(1, 2, 2) \n",
    "    plt.plot(w, np.unwrap(np.angle(H)), 'green');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sq_rc(K, beta, L=6, wc=0):\n",
    "    # Type-I FIR truncation of a root-raised-cosine impulse response with\n",
    "    #  cutoff frequency pi/K and rolloff beta. By default the impulse is \n",
    "    #  truncated after 6 bauds (ie, the filter will have 2LK + 1 taps)\n",
    "    # The filter can be shifted to a center frequency 0 < wc < pi\n",
    "    N = int(L * K)\n",
    "    h = np.zeros(2 * N + 1)\n",
    "    for n in range(-N, N+1):   \n",
    "        ix = n + N # make causal\n",
    "        t = n / K  # from baud rate to sampling rate\n",
    "        if n == 0:\n",
    "            h[ix] = 1.0 - beta + (4 * beta / np.pi)\n",
    "        elif np.abs(n) == K / (4 * beta):\n",
    "            h[ix] = (beta / np.sqrt(2)) * (((1 + 2 / np.pi) * \\\n",
    "                     (np.sin(np.pi / (4 * beta)))) + ((1 - 2 / np.pi) * (np.cos(np.pi / (4 * beta)))))\n",
    "        else:\n",
    "            h[ix] = (np.sin(np.pi * (1 - beta) * t) + 4 * beta * t * np.cos(np.pi * (1 + beta) * t)) / \\\n",
    "                    (np.pi * t * (1 - (4 * beta * t) * (4 * beta * t)))\n",
    "        h[ix] = h[ix] * np.cos(wc * n)\n",
    "    return h"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Python\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:2: UserWarning: In Matplotlib 3.3 individual lines on a stem plot will be added as a LineCollection instead of individual lines. This significantly improves the performance of a stem plot. To remove this warning and switch to the new behaviour, set the \"use_line_collection\" keyword argument to True.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sqrc = sq_rc(3, 0.3, 6, np.pi / 2)\n",
    "plt.stem(sqrc);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "MagPhaseFIR(sqrc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x20ca6a1f288>]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzIAAAD4CAYAAAA3rtNiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3ib530v/O+NTYIL4BS3KGrLWoRkyZZkx/KQ7diOHSe2EzvJSVLXTZ2c87anbXrSK2+b5vRtk9OrOW2Spm5WnWE7HkmkeMh7yZIlkprUpCjuTYDgADGf+/0DIEVLlAiSIG+M7+e6eJkgHpNfUdD94HdPIaUEERERERFRItGpDkBERERERDRTLGSIiIiIiCjhsJAhIiIiIqKEw0KGiIiIiIgSDgsZIiIiIiJKOAZVPzgvL09WVlaq+vFERERERBTn6urq+qWU+VM9p6yQqaysRG1traofT0REREREcU4I0XKl5zi1jIiIiIiIEg4LGSIiIiIiSjgsZIiIiIiIKOGwkCEiIiIiooTDQoaIiIiIiBIOCxkiIiIiIko4LGSIiIiIiCjhKDtHhmi+eAMh9I/44Bz1Y9ATwOBYAG6PH6P+EEKaREiT0KREmlEPq9mATIsBVpMB2elG2NKNyE4zISfdCKM+NnW+LxjCoCcA56gfrlE/nB4/XJ4AAkENIU0iqEnoBJBm0iPNqEe6yYB0sx7ZacaPfMQij5QS3oAGl8cPl8cPtycAlyeAwTE//JE8gZCEEECaUT+RyfqRPCZkpxlhMsTm9zPmD2Fg1IeBET+co370j/gw7A0iENLgD2oIaBImvYDFqIfFqEemxYC8DDNyM0zItZpht5qg14mYZAHCvyMhYvf9iFKVpkm4PH70j/gx6PFH2uIA3GMBBDQNmiYR0gC9DsgwG2A1G5BhNiDTYkROevjDlm5Cukkfk3+TmiYx5I20xZ7ARHvs8QURjNwbQlLCYgi3femR9i/TEmn70sP/tcYoTzCkwT0WboPdY364RgNwefzw+EMIhLSJPGaDPtIe65BmNCDLYkBWWvj3k51mRIbZEJM8ocjf13g7PH7P8gU1+IIaAiENQPjeYIncH+zpJuRmmJCXYUZehhlpJv2cc4xjW0zRYCFDC2bYG8Cbp3tR3+LC0XY3utxjcI0GENQ0GPQ6GHUCaaZwYRG+qemRYTYiw6xHhsUw8bnZoMdYIASPPwSPPwjnqB99wz70jfjQNxx+ExwLmWYDcqzhG2lOugm2dCNy0ozISQ8XOgJAMFKIePwhuCMFisvjj9ycwjemEV9s8qSb9MiyXCxssi4pdKxmPYKahC+gwRcMYSwQLqAGRv1wjvrgHPFjIHJTioU0o37iRpqVFv7dZE+6uWZajAhqEv5guCAZ9gbgjNwkXaP+SK7wTXsudALISTch12qC3WqaKHBs6eFiy6DXwaAT4b8nXxAefwij/hCGvQEMeYMYGgtMfD7sDcAb0JBmDBduVflWLCvMxPXVedi+NA8WY+xu0kSqSClxpG0Q+xr7cbh1EOf7RjAw4seIPwiDTkCvEzAb9JGi4mKBMfEx8bVwmzPmD7fHQ2MB9I9cbIv7R/wIaXLOeU163URRM97hNLldTjPpEQhJhDQNgZAMt7+j4cJp0HOxaHF5/IhBHBh0YqL9/Wg7bJj4XEDAFwxNFAHD3sBEZ40zUkANegJzDwNArxOXdXyNt8PjHwadgD/SOTQWCMHlCcA54p9ok52R34+c4+8n3aSPtMPmj7TJVpMBep2AUS+gEyJy/w5hzB/EsDcYbou9gfDnkTZ52Bd+PaabDCjOScOywgysL8vBzhWFKM9Nj8nvjhKfkHN91c6Sw+GQtbW1Sn42LazWAQ9++HYjfnu4A76gBqtJjzUl2Si3p8OeYYJRp0NQkwiENHj8IYz4ghjxBjDqC2HYF8SoLxj5WhD+0MU34Sa9LtwjZDUhP8OM/MzwR16GCfmZZtgjb2Zz0sM3mwxzuCHVCwEhBLyBEEZ9QQxHvveQNzI64bnYMzZ+ExycVKRcqVAav3nkpJuQkxa+2dqtZtitRtisJtjTTeH/WsPPmw166PUCBp1AKFIMeSMF2ogv3Ji7r/AxdMl/Ry8pBoz68BuRnHTjxM1kchbbeGEWKcpy0kywGHXQ6wQMOh0kwm9OxgLhTCO+0MWfHynUBiM9q4OTsox/bSxweXFiMeomRlDCvw8jcjPCj/MywvnCRYgJWZZwEWIyhIuQQEjCGwxnGRoLYmDEh4FIr2H/sG+iKBoY8WNg1DfR43qp8ZGmdJMBWWnhnt8siwFZFuPEY4tBh7FACM7RABr7RnC2exhjgRCy04x4YFMZHrthCexW0xz/VRAtPH9Qw/P17Xji3SZc6B8FACzJt2LFoizkZ5iRaTFMjFqPBUIT7e6oP/zfkUlt8eQ2RwggPTJyMbkNzs80Iz/DPPHvfLyNzEozwqTXQSfCRVNQ0zDqC0209UORdmVyuzs40SaHR5DH2+VA6PL3MGaDLlLoXBzV+WgbHP6aPdIWWs0GGCJtsS5yb7j4RjuEIW8gqvbYPRbuEJlcvAkBWAzh0f+LbfHFD1t6uE3OTovkTDfBatZPdMDodQK+oDYpU/iN/6An0uaO+Sd+9nj7O/nxkDdwWXGiE7j457eG21yb1YS8icIjXITkZphhsxphMeph0utg0usgEZ5l4A1oGPUFIyNu4aJ1YOTiSM7AqB8Dkz73T9GBNn4Pz7RcbIszI21xlsWITIsBQU1ixBtEm8uDs93D6HR7AQDXV+fiT2+sxnXVeTH4l0HxTghRJ6V0TPkcCxmaL/6ghu+/1YgfvX0eEMAnN5bi/poSrC+zzXoqkC8Ygj8Y7jE3xGjq10wFQxqGvEEIAHq9gFEXfsMdy+lNMxUIafD4QhNv/lVmAcJ/TyPeIAyR342KTFKGR8uCIYmApsGo08Fi1M14qoIvGMKHTU48U9uGl493wWoy4C9vX4GHry3ntAdKGLXNTvz1C8dxrncEa0uz8ciWCty6qgjZ6cZZfT9Nkxj1B2HU62A2zPzfVSxIKTEa6QAy6nThYiTSiaOKlHJiFN5i1MOgE0rbCU2TGPYGEZIy3BbrdTDqFz5TKNJZGYxM7U6f5T28ZWAUe4524lcftqLL7cXNKwvwD/deg4IsyzykpnjBQoYWXJd7DF/5VT0Otw7invXF+MYdK9nQUMJr7B3G3+4+ifcb+3HzygJ878ENyDBzhi7FLykl/uPdJnznldNYlJ2Gv7t7NXauLGARTgnNGwjh5x80419eO4t0kx7f/8xGXM/RmaTFQoYW1LmeYTzyk4MY8QXxnfvX4o5rFqmORBQzUkr8bF8z/vdLp7C0IANPfnEzi3SKSyFN4hu/PY6nD7XhzrWL8E+fXMvCm5JKY+8IvvKrOjT1jeIfP7kW99eUqo5E8+BqhQy3X6aYauwdxqf/Yz9CUuK5P9nKIoaSjhACX9y2GD/7wia0Oj146D8PoG/YpzoW0UdomsT/fPYonj7Uhq/eVI3vP8TRQ0o+1QUZeO5PrsOWqlz8xXNH8Wxtm+pItMBYyFDMdA6O4ZGfHIRep8Ozf7wVK4qyVEcimjc7luXjZ1/YhM5BL/7bzw/C44/N7nREsfDtF0/ht4c78Oe3LMOf37qcU8koaWVZjPjx5x3YVp2Hv3r+GN483aM6Ei0gFjIUE75gCH/yyzoMe4N48oubUZlnVR2JaN5dW5WLH3x2A052DuG/P30EWiz2diWao2dr2/DTfRfwhesq8fhN1arjEM07i1GP/3ikBquKs/D4rw/jVNeQ6ki0QFjIUEx8+w+ncLTdjf/zqbVYVcyRGEodN60oxDfuXIXXTvbgZx80q45DKe5k5xD+5ncnsLUqF39z50qOxFDKSDcZ8JPPb0KG2YDHf13PUfIUwUKG5mzP0U784kAL/mj7YuxawzUxlHq+eH0lbl5ZiH98+RROdLhVx6EUNeoL4iu/qkN2mhH/+tAGZVvUE6lSmGXBvzywHk39o/j7P5xUHYcWAFs5mpP+ER+++fsTWF+Wg7/ctUJ1HCIlhBD4zv1rYbea8LWnDsM7xYGgRPPtu3vPoMXpwb89tAH5mWbVcYiUuL46D4/dsARPHWzDKye6VMeheTZtISOE+KkQolcIcWKa6zYJIUJCiPtjF4/i3d/tOYlRXwjfvX8tjOz9oxRmt5rwz58K9wT+4K1G1XEoxdS1OPFf+5vxuS0VuLYqV3UcIqX+7JZlWF2chW/+vgHD3oDqODSPonnn+XMAu652gRBCD+CfAOyNQSZKEK+f7MGeo514/KZqLC3MVB2HSLltS/Nw74YS/Oid82jsHVYdh1KELxjCXz53DMXZafgLjowTwajX4R/uvQZ9Iz7886tnVceheTRtISOlfBeAc5rLvgrgeQC9sQhF8c8bCOHv/tCAZYUZeOyGJarjEMWNb9y5EmlGPb7x2xNQdeAwpZaf72vG+b5RfPveNTwrhihiXVkOHtlSgSf3N+NY+6DqODRP5jwXSAhRAuBeAD+K4tpHhRC1Qojavr6+uf5oUujnHzSjzTmGb358NUwGTikjGpeXYcbXb1+JDy848fKJbtVxKMn1j/jw/TcbcdOKAnxseYHqOERx5X/ethy5GWZ8a89JdiwlqVi8A/0egL+SUk67ulVK+YSU0iGldOTn58fgR5MKfcPhG+fOFQXYtjRPdRyiuPPApjIsL8zEd145DX9QUx2Hkti/vHYWY4EQ/tcdK1VHIYo7WRYj/p+bl6G2xYVXT/KgzGQUi0LGAeBpIUQzgPsB/FAI8YkYfF+KU997/Sy8gRD+1528cRJNRa8T+PrtK9A84MFTB1tVx6Ekda5nGE8dbMXDWypQXZChOg5RXPq0oxRL8q34p1dOIxhix1KymXMhI6VcLKWslFJWAngOwFeklL+bczKKS21OD5451IYHN5dhST5vnERXcuPyfGytysW/vnGOu+bQvPje6+eQZtTjazuXqo5CFLcMeh2+fvtKNPWN4ulDbarjUIxFs/3yUwD2A1guhGgXQnxJCPGYEOKx+Y9H8eb7bzZCpxP4049Vq45CFNeECI/KDIz68eT+FtVxKMmc6hrCi8e78MVti2G3mlTHIYprN68sgKPChu+/2QhfkOd8JZNodi17SEq5SEpplFKWSil/IqX8kZTyssX9UsovSCmfm5+opFrLwCieq2/HZzaXY1F2muo4RHFvXVkOblpRgP98rwkjvqDqOJREvvf6WWRaDPjytirVUYjinhAC/+PmZege8uLZ2nbVcSiGuN0URe3f3myEUS/wlY9xu2WiaH31pmoMegL45QGOylBsNHS6sbehB1/eVoXsdKPqOEQJ4frqXGwsz8G/v32em7AkERYyFJXOwTH87nAHHtpcjoJMi+o4RAljQ7kNO5bl4z/fbYLHz1EZmrsfvdOETLMB/21bpeooRAlDCIGv7VyKjsExvFDPUZlkwUKGovLT9y9AAvjydk5jIJqp/76zGgOjfjzDhaY0R21OD1481onPbClHloWjMUQzccOyfKwrzca/v3MeIY3nyiQDFjI0LbcngKcOtuLudcUoyeHaGKKZqqmww1Fhw0/3XeDNk+bkx+81Qa8T+OL1i1VHIUo4Qgj88Q1L0DLgwWs8VyYpsJChaf3ywxaM+kN4dAdHY4hm68vbq9DmHMPehm7VUShBDYz48ExtG+7dUILCLE7xJZqN21YXocyehh+/16Q6CsUACxm6Km8ghJ/tu4AbluVj5aIs1XGIEtYtqwpRkZuOJ95tgpQclaGZe3J/C7wBjZ1KRHMwPqJZ2+JCfatLdRyaIxYydFW/PdyB/hE//vgG3jiJ5kKvE/jStsU40jaIuhbePGlmxvwhPLm/GTevLER1QabqOEQJ7dOOMmRZDByVSQIsZOiKpJT4+b5mrC7OwtaqXNVxiBLe/TWlyE4z4ol3efOkmdl9tAMuTwB/tJ1rY4jmymo24DPXVuCVE91oHfCojkNzwEKGrujDC06c6RnG56+rhBBCdRyihJduMuCRLRV47VQPWgZGVcehBCGlxH990IIVRZnYvNiuOg5RUvjCdZXQ6wR+9sEF1VFoDljI0BU9ub8ZOelG3L2uWHUUoqTx8JYK6ITArz9sVR2FEkRdiwsnu4bYqUQUQ0XZFuxaswjP1bXzjK8ExkKGptTlHsPehh484CiDxahXHYcoaRRlW3DrqkI8U9sGbyCkOg4lgP/a34JMiwH3rGenElEsfW5rBYa9Qew+0qk6Cs0SCxma0q8/bIUmJR7eUqE6ClHSeWRLBQY9Abx4rEt1FIpzvUNevHy8C592lCHdZFAdhyipOCpsWFGUiSf3t3A3yQTFQoYu4wuG8NTBVuxcUYAye7rqOERJZ+uSXFTlW/GLAy2qo1Cc+/XBVgQ1iUfYqUQUc0IIPLylAie7hnC4bVB1HJoFFjJ0mZePd6N/xI/Pba1UHYUoKQkh8MiWChxpG8TxdrfqOBSn/EENv/qwFTcuz0dlnlV1HKKk9IkNJcgwG/DL/exYSkQsZOgy/7W/GVV5VmyrzlMdhShp3bexFGlGPX7JURm6gr0N3egb9uHz7FQimjcZZgPu21iCPxzrgnPUrzoOzRALGfqIk51DONw6iM9uqYBOx91xiOZLdpoRn9hQgt8f7YDbE1Adh+LQrz9sRZk9DTcsy1cdhSipPbKlAv6Qht/UtqmOQjPEQoY+4je1bTAZdPjkxhLVUYiS3sNbyuENaHi2jjdP+qjm/lHsbxrAg5vK2alENM+WFmZiS5UdvzzQAk3jov9EMm0hI4T4qRCiVwhx4grPf1YIcSzy8YEQYl3sY9JC8AZCeKG+HbtWFyEn3aQ6DlHSW12cjQ3lOXjmUBt3zKGP+E1tG3QCuL+mVHUUopTw2Wsr0O4aw77z/aqj0AxEMyLzcwC7rvL8BQA3SCnXAvh7AE/EIBcpsLehG0PeIB7cVKY6ClHKeMBRhnO9I9wxhyYEQxqerWvHTSsKUJhlUR2HKCXcuroQOelGPHOII+SJZNpCRkr5LgDnVZ7/QErpijw8AIDdRwnq6YNtKLenY0tVruooRCnj4+uKkW7S45mDvHlS2Ftn+tA37MMDm8pVRyFKGWaDHvduKMGrDT1wcdF/woj1GpkvAXj5Sk8KIR4VQtQKIWr7+vpi/KNpLsbnYz+wqYzzsYkWUIbZgI+vXYQ9xzox4guqjkNx4JlDrSjINONjy7nIn2ghPbCpDP6Qht8e7lAdhaIUs0JGCPExhAuZv7rSNVLKJ6SUDimlIz+fDXQ84XxsInUe2FQOjz+EF491qo5CinW7vXjzdC/urymFQc/9eIgW0oqiLKwr47rFRBKTVlIIsRbAjwHcI6UciMX3pIXD+dhEam0sz0F1QQbnZhOer2+HJoFPO7hWkUiFBxxlONMzjKM8rDghzLmQEUKUA3gBwCNSyrNzj0QLjfOxidQSQuABRxnqWwdxrmdYdRxSRNMknjnUhq1VuajMs6qOQ5SS7lq3CGlGPTuWEkQ02y8/BWA/gOVCiHYhxJeEEI8JIR6LXPJNALkAfiiEOCKEqJ3HvDQPOB+bSL17N5bAqBe8eaawA00DaHV68OBmjsYQqZJpMeLOtYuw52gnPH6uW4x30exa9pCUcpGU0iilLJVS/kRK+SMp5Y8iz39ZSmmTUq6PfDjmPzbFSs8Q52MTxYO8DDNuXlmIFw53wB/UVMchBZ4+1IbsNCNuW12kOgpRSntgUxlGfEG8eKxLdRSaBt+5prjfHe6AJrnInygefNpRBueoH2+f6VUdhRbYkDeAvQ3duHtdMSxGveo4RCnNUWHD4jwrnq9vVx2FpsFCJoVJKfF8fTs2luegKj9DdRyilLd9aR7yMkx4oZ5bf6aal493wRfU8El2KhEpJ4TAfRtKcKDJiXaXR3UcugoWMimsoXMIZ3tGcO9G3jiJ4oFBr8M960vwxukeDHp4IFsqeb6+A1V5VqwrzVYdhYgAfGJDCYDwzBWKXyxkUtgL9R0w6gXuWrtIdRQiirhvYwkCIYk9nJudMtqcHhy84MR9G0sgBA8kJooHZfZ0XLvYjhfqO3imTBxjIZOiAiENu492YOeKQuSkm1THIaKIVYuysKIoEy9wbnbKGD9FfLwHmIjiwyc3lqKpfxRH2gZVR6ErYCGTot4714f+ET/u28gbJ1E8EULg3g0lONw6iKa+EdVxaJ5JKfFCfTu2VNlRaktXHYeIJrn9miKYDTquW4xjLGRS1PP1HbClG3Hj8gLVUYjoEp/YUAKduNhTT8mrvnUQzQMe3Me1ikRxJ9NixK2ri7DnWCd8wZDqODQFFjIpyD0WwGsne3D3umKYDHwJEMWbwiwLrq/Owwv1HdA0zs1OZi/Ut8Ni1OH2NTw7hige3bexBIOeAN463ac6Ck2B72JT0EvHu+APauwBJIpjn9xYio7BMRxsdqqOQvPEFwxhz9FO3La6CJkWo+o4RDSF7dV5yMswc91inGIhk4J+d7gDVflWrOU2n0Rx69bVhbCa9Nz6M4m9faYPQ94g7uUif6K4Fd4WvxhvnemF2xNQHYcuwUImxXS7vTjY7MQ967jNJ1E8SzcZcMuqQrzS0A1/UFMdh+bBnqOdsFtN2FadpzoKEV3FPeuLEQhJ7G3oVh2FLsFCJsW8eLwLUgIfX8ezY4ji3V3rijHoCWBfY7/qKBRjHn8Qb5zqxR3XFMGg562YKJ5dU5KNitx07DnWqToKXYKtZ4rZfbQTq4uzsCQ/Q3UUIprG9qX5yLIYsPsob57J5rWTPRgLhHDX2mLVUYhoGkII3LW2GPsa+9E37FMdhyZhIZNCWgc8ONo2iLvW8cZJlAhMBh1uX7MIrzZ0wxvg1p/JZM/RLhRmmbGp0q46ChFF4a51xdAk8PKJLtVRaBIWMilkfEj0zms4rYwoUdy1rhij/hDeOt2rOgrFiNsTwDtne/HxtcXQ6bhWkSgRLC/KxPLCTOzhCHlcYSGTQvYc7cTG8hyU2Xl6NFGi2FJlR16GiXOzk8jek90IhCRHx4kSzF3rFuFQswudg2Oqo1AEC5kUca5nGKe7h3njJEowBr0Od1yzCG+c6sWIL6g6DsXAnqOdKLOnYR23wCdKKB+PrGl78Rinl8WLaQsZIcRPhRC9QogTV3heCCH+VQjRKIQ4JoTYGPuYNFd7jnVBJzitjCgR3bWuGL6ghtdP9qiOQnPUP+LDB+cHcNfaYm6BT5RgKvPCZ/BxhDx+RDMi83MAu67y/O0AlkY+HgXw73OPRbEkpcQfjnZiS1UuCrIsquMQ0QzVlNtQnG3h3Owk8PKJboQ0ibvXc3ScKBHdtbYYx9rdaO4fVR2FEEUhI6V8F4DzKpfcA+BJGXYAQI4Qgt3+ceRU1zCa+kcnhkSJKLHodAJ3rl2Ed8/1wT3Gk6UT2YvHOlFdkIHlhZmqoxDRLIyfw/ficU4viwexWCNTAqBt0uP2yNcoTrzS0A2dAG5dXag6ChHN0u3XLEIgJLl7WQIbGPHh4AUn7lhTxGllRAlqUXYaNpTnYG9Dt+oohNgUMlO1xnLKC4V4VAhRK4So7evri8GPpmjsPdGNTZV25GWYVUchollaX5qDwiwzXjnBm2eiev1UDzQJ3LamSHUUIpqDXauLcKzdjQ7uXqZcLAqZdgBlkx6XAphyIreU8gkppUNK6cjPz4/Bj6bpNPWN4EzPMHbxxkmU0HQ6gdtWF+Hts73w+Ll7WSJ6+UQ3yuxpWLUoS3UUIpqD21aH31OxY0m9WBQyuwF8LrJ72RYAbiklJw7GiVciQ5/j/+iIKHHtWl0Eb0DDu2c5op1ohrwB7Gvsx67VnFZGlOgq86xYUZSJvSxklItm++WnAOwHsFwI0S6E+JIQ4jEhxGORS14C0ASgEcB/AvjKvKWlGdt7ohvrSrNRnJOmOgoRzdHmxXbkpBvZC5iA3jrdi0BIcnScKEnctroIh1qc6Bv2qY6S0gzTXSClfGia5yWAP41ZIoqZjsExHG134y93LVcdhYhiwKDX4ZaVhXjlRDf8QQ0mA880ThSvnOhGfqYZG8psqqMQUQzsWlOE//vGObx2sgefubZcdZyUxbtgEns1Mq1sF6eVESWNXWuKMOwL4oPz/aqjUJTG/CG8faYPt60uhE7HaWVEyWBFUSYqctMnpvCTGixkktgrJ7qxrDADVfkZqqMQUYxcX50Hq0nP6WUJ5N1zfRgLhLBrNY9YI0oWQgjsWl2EDxr7eb6XQixkktSgx49DzU7cuoqjMUTJxGLU48blBXjjdC80bcqd7inOvH6yB5kWA66tsquOQkQxdOvqQgQ1iXe4AYsyLGSS1Dtn+6BJYOfKAtVRiCjGdq4sQN+wDyc63aqj0DQ0TeKtM724cXkBjHrecomSyfoyG+xWE9481aM6Sspiq5qk3jjVi1yrCetKc1RHIaIYu3F5AYQI/zun+Hasw43+ET92rmCnElGy0esEblyej7fP9iEY0lTHSUksZJJQMKTh7TO9+NiKAi4sJUpCdqsJG8ttePM0C5l49+apHugEcMMyHgJNlIx2rijEoCeAw22DqqOkJBYySaiuxYUhb5A9gERJ7KYVBTje4UbPkFd1FLqKN073oqbCBpvVpDoKEc2D7cvyYNAJjpArwkImCb15uhdGvcB29gASJa2bVxYCCB+0SPGp2+1FQ+cQdkb+rogo+WRZjLi2yo43T3OdjAosZJLQ66d6sKUqFxnmac87JaIEtawwAyU5aXidvYBx643IGxuOjhMlt5tWFOJszwjanB7VUVIOC5kk09w/ivN9o7iJN06ipCaEwM6VBdjX2A9vIKQ6Dk3hzVO9KLOnobqAZ3kRJbPxzoo3uHvZgmMhk2TGF/+ykCFKfjetKMBYIIT9TQOqo9AlxvwhvN/Yj50rCiEEN10hSmaVeVZU5VvxBqf6LjgWMknmrTO9WJJvRUWuVXUUIppnW6pykWbUc51MHDpwYQC+oIaPsVOJKCXsXFGAD5uc8PiDqqOkFBYyScQbCOHgBSduWMYbJ1EqsBj12FJlx/vn+lVHoUu8d7YfZoMO1y62q45CRAtgx7J8+EMaPrzgVB0lpbCQSSIHLzjhC2rYvixPdRQiWiDbl+ajqX+Ui0zjzLvn+rB5sWX5DFEAACAASURBVB0Wo151FCJaAJsq7TAbdHj3bJ/qKCmFhUwSee9cH0x6HbYszlUdhYgWyI7INuvvcVQmbnQOjqGxdwQ7lnILfKJUYTHqcW1VLtviBcZCJom8d64fmxbbkGZiDyBRqliSb0VxtgXvnWMvYLwYn+q3g2d5EaWUHUvz0Ng7gs7BMdVRUgYLmSTRM+TF6e5hbGcPIFFKEUJg+9J8vN/Yj2BIUx2HALxzrg8FmWYsK+S2y0SpZPw9GDuWFg4LmSQxPpTJqQxEqWfHsnwMe4M42u5WHSXlhTSJfY392L40n9suE6WYZYUZKMwy411OL1swURUyQohdQogzQohGIcTXp3i+XAjxlhDisBDimBDijthHpat571wf8jLMWFGUqToKES2w66tzIQR7AePBiQ43Bj0B7OCmK0QpZ3yEfF9jP0KaVB0nJUxbyAgh9AB+AOB2AKsAPCSEWHXJZX8D4DdSyg0AHgTww1gHpSvTNIn3z/Vj+9I86HTsASRKNTnpJqwtzeEi0zgwXkxeX81ChigVbV+ah0FPACc6OEK+EKIZkdkMoFFK2SSl9AN4GsA9l1wjAWRFPs8G0Bm7iDSdk11DGBj1Y/tS3jiJUtWOpXk40jYI91hAdZSU9u7ZfqwpyUJehll1FCJSYFt1HoQAt2FeINEUMiUA2iY9bo98bbK/BfCwEKIdwEsAvjrVNxJCPCqEqBVC1Pb18S84VsZ7YbexkCFKWTuW5SOkSew/P6A6Ssoa9QVR3+rCtmquVSRKVbkZZqwpzsZ7jRwhXwjRFDJTzVW6dOLfQwB+LqUsBXAHgF8IIS773lLKJ6SUDimlIz+fDX2s7G8awLLCDBRkWlRHISJF1pXmIM2ox4EmFjKqHGp2IqhJXF/Ns7yIUtl1S3JxpHUQY/6Q6ihJL5pCph1A2aTHpbh86tiXAPwGAKSU+wFYAHB4YAH4gxpqm53YUsUbJ1EqMxl0cFTa8MF59gKqsr9pAEa9gKPCrjoKESm0ZUku/CENdS0u1VGSXjSFzCEAS4UQi4UQJoQX8+++5JpWADsBQAixEuFChnPHFsCx9kF4/CFsZSFDlPK2LsnF2Z4R9I/4VEdJSfvPD2B9WQ4PJSZKcZsq7dDrBPY3sWNpvk1byEgpgwAeB7AXwCmEdydrEEJ8Swhxd+SyPwfwR0KIowCeAvAFKSX3nVsA4/Phr2UhQ5Tyxjs0OL1s4Q15w7sUsVOJiDLMBqwtzeaaxQVgiOYiKeVLCC/in/y1b076/CSA62MbjaKxv2kAK4oyYbeaVEchIsWuKclGhtmA/ecH8PG1xarjpJSDTU5oMjylhIhoa1Uunni3CaO+IKzmqN5u0yxEdSAmxSdfMIS6Fhe28sZJRAAMeh02VdqwnyMyC25/0wBMBh02lttURyGiOLB1SS6CmsShZqfqKEmNhUwCO9w6CF9Q41QGIpqwdUkumvpG0TPkVR0lpew/P4CN5TmwGLk+hogAR4UdRr1gx9I8YyGTwPafH4AQwLWLWcgQUdjWqvCGkVwns3AGPX6c6h6a+N0TEaWZ9FhfloMDXCczr1jIJLD9TQNYXZyF7HSj6ihEFCdWFWchy2LgItMFdKDJCSnBab5E9BFbq3JxvMONIW9AdZSkxUImQXkDIRxpHeS0MiL6CL1OYPPiXE5nWEAHmgZgMeqwrixbdRQiiiNbluRCk8ChC1wnM19YyCSo+lYX/CGNB2ES0WW2LslFy4AHXe4x1VFSwoGmAdRU2GA2cH0MEV20sdwGk0HHqb7ziIVMgqprDp8WyxOkiehSmyvD7cJB9gLOuyFvAGd6hrGpkm0xEX2UxajHutJsHIy8Z6PYYyGToOpaXVhakMH1MUR0mZWLMmE16VHLm+e8O9I6CCmBmgpuu0xEl9tUaUdDhxsef1B1lKTEQiYBaZpEfYsLjkreOInocga9DhsrbDy/YAHUtrigE8D6shzVUYgoDm2qtCOoSRxpHVQdJSmxkElAjX0jGPIGefAaEV3Rpko7zvQMw+3hbjnzqb7FheVFWci0cHSciC63scIGIYBDHCGfFyxkEtD4dBEH52QT0RU4Km2QEqhr5ajMfAmGNBxudcHBaWVEdAXZaUYsL8zkCPk8YSGTgOpaXMi1mlCZm646ChHFqQ1lNhh0gr2A8+hMzzBG/SGujyGiq9q82I76VheCIU11lKTDQiYB1bU4I0OVQnUUIopTaSY91pRk8/yCeVTXEi4SWcgQ0dU4Ku3w+EM42TWkOkrSYSGTYPpHfGge8PDGSUTT2rzYjmPtbngDIdVRklJdiwsFmWaU2tJURyGiOLYpsjkTR8hjj4VMghnvAeScbCKajqPCBn9Iw7F2t+ooSam2Obx7JEfHiehqFmWnodSWxhHyecBCJsHUt7hg0uuwpiRbdRQiinPjG4JwkWnsdbu96Bgc4+6RRBSVzZV21LY4IaVUHSWpsJBJMLUtLqwpyYLFqFcdhYjinN1qQnVBBguZeTAxOs7dI4koCo5KO/pH/LjQP6o6SlKJqpARQuwSQpwRQjQKIb5+hWs+LYQ4KYRoEEL8OrYxCQB8wRCOt7u5PoaIorap0o66FhdCGnsBY6muxQWzQYdVi7JURyGiBLB5cfi9Wy3XycTUtIWMEEIP4AcAbgewCsBDQohVl1yzFMBfA7heSrkawP+Yh6wp70SHG/6QhpoK9gASUXQ2L7Zh2BvEme5h1VGSSl2LE+vKcmAycGIDEU1vSX4GbOlGHOQIeUxF0wJvBtAopWySUvoBPA3gnkuu+SMAP5BSugBAStkb25gEcKtPIpo5RwXXycTamD+Ehs4htsVEFDUhBByVdrbFMRZNIVMCoG3S4/bI1yZbBmCZEGKfEOKAEGLXVN9ICPGoEKJWCFHb19c3u8QprLbZhYrcdORnmlVHIaIEUWpLQ1GWBbUtnM4QK0fbBxHUJHePJKIZ2VRpQ8uAB33DPtVRkkY0hcxU+0peOtnaAGApgBsBPATgx0KInMv+JymfkFI6pJSO/Pz8mWZNaVJK1Le6UMMdcohoBoQQqKm0oY69gDEzPjrOHcuIaCbGlwbUtbA9jpVoCpl2AGWTHpcC6Jzimt9LKQNSygsAziBc2FCMtAx40D/iR00lb5xENDOOChs63V50Do6pjpIU6lpcWJJvhc1qUh2FiBLImpIsmAw6LviPoWgKmUMAlgohFgshTAAeBLD7kmt+B+BjACCEyEN4qllTLIOmOq6PIaLZGl8nw+llc6dpkdFxtsVENENmgx7rSrPZFsfQtIWMlDII4HEAewGcAvAbKWWDEOJbQoi7I5ftBTAghDgJ4C0AfyGlHJiv0KmotsWFTLMBywoyVUchogSzclEm0k16Ti+Lgab+EQx6AhPFIRHRTNRU2NHQ6YY3EFIdJSkYorlISvkSgJcu+do3J30uAfxZ5IPmQX2LCxsqbNDpplqyRER0ZQa9DuvLctgLGAMT62M4IkNEs+CosOFH70gcbRvEtVW5quMkPG6AnwDcYwGc7R3mDjlENGuOChtOdQ1hxBdUHSWh1Ta7kJNuxJJ8q+ooRJSAxjtB2LEUGyxkEsDhVhek5PoYIpq9jRU2aBI42jaoOkpCq4vsHikER8eJaObsVhOq8q2oZyETEyxkEkBdiws6Aawvu2xHayKiqGyssEEIcLecOXCO+tHUN8rdI4loThwVNtS1uqBpl55mQjPFQiYB1LW4sHJRFqzmqJY0ERFdJstixPLCTNTy/IJZG+9B5XleRDQXjgo7Bj0BNPWPqI6S8FjIxLlgSMORtkGujyGiOaupsOFw6yBC7AWcldoWFww6gXUcHSeiORgf1eUI+dyxkIlzp7uH4fGHuEMOEc2Zo9KGEV8QZ7qHVUdJSPUtLqwuyYbFqFcdhYgSWFWeFXariQv+Y4CFTJwb3+rTUckzC4hobsbPPqnj9LIZ8wc1HG3n6DgRzZ0QAhvLbRPv8Wj2WMjEudoWF4qyLCjOtqiOQkQJrtSWhoJMM3sBZ6Gh0w1fUOPukUQUE45KGy70j6J/xKc6SkJjIRPn6ltcqKnkVp9ENHdCCDgqbZyXPQvjPacsZIgoFsZHdzkqMzcsZOJYl3sMHYNj3CGHiGKmpsKOjsExdLu9qqMklLoWF0ptaSjM4ug4Ec3dmpJsmPQ6FjJzxEImjl1cH8NChohiwzFxqjTXyURLSonaFhfXxxBRzFiMelxTmo3aZrbFc8FCJo7VNruQZtRj5aIs1VGIKEmsKs5CmlHP6WUz0O4aQ9+wj9PKiCimHBU2nOgYgjcQUh0lYbGQiWP1rS6sK8uGUc+/JiKKDaNeh3Vl2ZzOMAMX18dw90giip2aChv8IQ3HO9yqoyQsvkOOUx5/EA2dQ+wBJKKYq6mw4WTXEEZ9QdVREkJtixMZZgOWF2WqjkJESWT8jECOkM8eC5k4dbTNjZAmJ859ICKKFUeFHSFN4mj7oOooCaGuZRAbynOg13H3SCKKnbwMMxbnWTlCPgcsZOLU+IF1G8pzFCchomSzMbITYh17Aac17A3gTPfQxO+MiCiWaipsqG91QUqpOkpCYiETp+paXFhakIGcdJPqKESUZLLTjVhWmMGDMaNwpG0QmuTukUQ0PxwVNjhH/WjqH1UdJSFFVcgIIXYJIc4IIRqFEF+/ynX3CyGkEMIRu4ipR9Mk6lpcXB9DRPOmpsKO+lYXNI29gFdT2+yCTgDryzg6TkSxN95JwhHy2Zm2kBFC6AH8AMDtAFYBeEgIsWqK6zIBfA3Ah7EOmWrO941gyBtkIUNE88ZRYcOwN4izvcOqo8S1+lYXlhdlIdNiVB2FiJJQVV4GctKNPNtrlqIZkdkMoFFK2SSl9AN4GsA9U1z39wC+A4DHRc9R7cRWnyxkiGh+jPcCcrecKwtpEodbB1FTwdEYIpofOp1ATbmNU31nKZpCpgRA26TH7ZGvTRBCbABQJqX8w9W+kRDiUSFErRCitq+vb8ZhU0Vdiwt2qwmL86yqoxBRkiq3pyMvw8zdcq7iTPcwRnxB7h5JRPOqptKGpr5ROEf9qqMknGgKman2m5yYVC2E0AH4FwB/Pt03klI+IaV0SCkd+fn50adMMXUtLmwst0EIbvVJRPNDCAFHhY3TGa5ifPdIjo4T0Xwa7yxhx9LMRVPItAMom/S4FEDnpMeZANYAeFsI0QxgC4DdXPA/OwMjPlzoH+UOOUQ07xyVNrQ5x9A7xBnBU6lrcaEg04xSW5rqKESUxNaWZsOoF+xYmoVoCplDAJYKIRYLIUwAHgSwe/xJKaVbSpknpayUUlYCOADgbill7bwkTnJ1XB9DRAtkvJ3h3Oyp1UZ2j+ToOBHNJ4tRjzUl2dy5bBamLWSklEEAjwPYC+AUgN9IKRuEEN8SQtw93wFTTV2rC0a9wDUl2aqjEFGSW12cDbNBxwX/U+gZ8qLdNcZOJSJaEI4KG451uOELhlRHSShRnSMjpXxJSrlMSrlESvm/I1/7ppRy9xTX3sjRmNmrbXZhTUk2LEa96ihElORMBh3WleZMrAWhi8aLOxYyRLQQaips8Ac1nOhwq46SUKIqZGhheAMhHGsfxOZK7pBDRAujptKGhs4hjPnZCzjZoWYnLEYd1nB0nIgWQE1kwT9HyGeGhUwcOdbuRiAk4WAhQ0QLxFFhQ1CTONo+qDpKXKltcWJDmQ1GPW+TRDT/8jPNqMhN585lM8QWOo4cag5P73BwKgMRLZDxqVO8eV404gviZOcQNnH3SCJaQDUVNtS1uCClnP5iAsBCJq7UNjuxtCADNqtJdRQiShE56SZUF2SgtpnrZMYdbnVBk8CmxRwdJ6KF46iwY2DUj+YBj+ooCYOFTJzQNInaFhenlRHRgnNEegE1jb2AAHCo2QWdADaUc0SGiBbO+BmC7FiKHguZOHG2dxjD3iCnMhDRgqupsGHIG0Rj34jqKHGhttmJVcVZyDAbVEchohRSnZ+BLIuBU31ngIVMnDgU2aViE0dkiGiBjY8Ec7ccIBDScLh1EI4KtsVEtLB0OoGaChsPKZ4BFjJx4tAFJwqzzCi1pamOQkQppjI3HblWE2p5nkx4K+pAiJ1KRKSEo9KOxt4RDHr8qqMkBBYycaK22QlHpR1CCNVRiCjFCCEmdstJdeNz0x2c5ktECnAnyZlhIRMHOgbH0On2YhO3XSYiRRyVNrQMeNA37FMdRalDzU6U29NRmGVRHYWIUtC60hwYdILTy6LEQiYOHLow3gPIqQxEpMbFXsDUnV4mpURts4ujMUSkTJpJj9XFWajjmsWosJCJAx9eGECmxYCVi7JURyGiFLWmJBsmgy6lF/w39o5gYNSPa3l+DBEpVFNhx9H2QfiDmuoocY+FTBzYf34A1y62Q6/j+hgiUsNs0GNtSXZKT2fY3zQAANhalac4CRGlMkelDb6ghhOdbtVR4h4LGcW63GNoHvBgS1Wu6ihElOJqKm1o6HTDGwipjqLE/vMDKMlJQ5mdu0cSkTqO8am+KTxCHi0WMortPx/pAVzCQoaI1HJU2BEISRxrT71eQE2TONA0gC1Vudw9koiUKsiyoMyexp3LosBCRrH95weQk27EyiKujyEitcYX/KfieTJneobh8gTYqUREccFRYUdtiwtSStVR4hoLGcX2N4XXx+i4PoaIFLNbTViSb8WHTalXyHB0nIjiiaPShv4RH5r6R1VHiWssZBRqc3rQ7hrDVq6PIaI4cX11Hg5ecMIXTK11MvubBlBuT0dJDtfHEJF61y8Jbzqyr7FfcZL4FlUhI4TYJYQ4I4RoFEJ8fYrn/0wIcVIIcUwI8YYQoiL2UZPPxA45S7hDDhHFh23VeRgLhFDfMqg6yoIJaRIHLzjZqUREcaMiNx2ltjS8d46FzNVMW8gIIfQAfgDgdgCrADwkhFh1yWWHATiklGsBPAfgO7EOmoz2NfYjL8OEZYUZqqMQEQEAtizJhV4n8H5jn+ooC+ZEhxvusQCuq2YhQ0TxQQiB7UvzcOD8AIIhnidzJdGMyGwG0CilbJJS+gE8DeCeyRdIKd+SUnoiDw8AKI1tzOQT0iTePduHHUvzuUMOEcWNLIsR68ty8H4K9QK+c7YPQgDbl+arjkJENGFbdT6GfUEcbU+dEfKZiqaQKQHQNulxe+RrV/IlAC9P9YQQ4lEhRK0QoravL3V6+6ZyosMNlyeAG5bzxklE8WVbdR6Odbgx6PGrjrIg3jnbh7Ul2bBbTaqjEBFNuG5JLoQAp5ddRTSFzFTDBVPuBSeEeBiAA8B3p3peSvmElNIhpXTk56f2G/h3Iz2A26q5PoaI4suOZXmQEvggspNXMnN7Ajjc6sINy1L7nkRE8cdmNWFtSXZKjZDPVDSFTDuAskmPSwF0XnqREOJmAN8AcLeU0hebeMnrnbN9uKYkG7kZZtVRiIg+Yl1pDjLNhpToBdx3vh+aBHawkCGiOLRtaR4Otw1i2BtQHSUuRVPIHAKwVAixWAhhAvAggN2TLxBCbADwHwgXMb2xj5lc3J4A6tkDSERxyqDX4brqXLx9pjfpD2N750wfMi0GrC/LUR2FiOgyO5bmI6RJjspcwbSFjJQyCOBxAHsBnALwGyllgxDiW0KIuyOXfRdABoBnhRBHhBC7r/DtCOwBJKL4t3NlIbrcXjR0DqmOMm+klHjnbB+2VefBoOexakQUf2oqbMhOM+K1Uz2qo8QlQzQXSSlfAvDSJV/75qTPb45xrqT21uleZFoM2MAeQCKKUzetKIAQwOunerCmJFt1nHlxunsY3UNejo4TUdwy6HW4aUUB3jrdi2BIY6fLJfjbWGDBkIbXT/Vg54oCvhiJKG7lZZixsdyG15O4F3BvQzeECI8+ERHFq5tXFsLlCaC+ldswX4rvpBfYwWYnXJ4Adq0pUh2FiOiqbl5ZiBMdQ+hyj6mOMi9eOdENR4UN+ZncdIWI4teOZXkw6gXeSOKOpdliIbPA9p7ohsWo4/oYIop7t6wqAAC8cSr59nBp7h/F6e5h3LaanUpEFN8yLUZsqcrlOpkpsJBZQJomsbehBzcsy0e6KarlSUREyizJz0BlbjpeO5l8N8+9Dd0AwEKGiBLCLasK0dQ3ivN9I6qjxBUWMgvoaPsguoe8vHESUUIQQuC21UXY19gP16hfdZyYeqWhG2tKslBmT1cdhYhoWresKoQQwIvHulRHiSssZBbQKw3dMOgEdq7gwlIiSgx3rStGUJN4+US36igx0+324nDrIG5bxU4lIkoMi7LTsKnSjt1HO5P+fK+ZYCGzQDRNYs+RTmxbmofsdKPqOEREUVldnIWqPCt2H+1QHSVm9hztBADcsXaR4iRERNG7a10xGntHcKprWHWUuMFCZoEcaBpAp9uL+zaWqo5CRBQ1IQTuWleMDy840e32qo4zZ1JKPF/fjvVlOViSn6E6DhFR1O5YUwS9TmB3pDOGWMgsmOfrO5BpNuDWVZxWRkSJ5d4NJZASeL6+XXWUOTvZNYTT3cP45MYS1VGIiGYkN8OMG5fl44X6dgRDmuo4cYGFzAIY8QXx8oku3Ll2ESxGveo4REQzUplnxZYqO54+1ApNS+y52c/VtcOoD48yERElmgc2laF32Ic3TyfftvizwUJmAbxQ3w6PP4QHNpWpjkJENCsPbS5Hm3MMH5wfUB1l1kZ9QTxX145daxYhJ92kOg4R0YzdtKIABZlmPH2oTXWUuMBCZp5JKfFfHzRjXWk2NpTbVMchIpqV21YXwZZuxJP7m1VHmbXfHu7AsDeIL1xXoToKEdGsGPQ6fNpRhrfP9KJ1wKM6jnIsZObZ+439ON83is9fV6k6ChHRrFmMejy8pQKvnepBUwIeyCalxJP7m7GmJAsb2alERAnska0V0OsEfvx+k+ooyrGQmWfff7MRBZlm3MltPokowX1uayWMeh3+870LqqPM2Ksne3C2ZwRfvH4xhBCq4xARzVphlgX3bijBb2rbMDDiUx1HKRYy8+iD8/348IITX7lxCcwGLvInosSWn2nG/TWleL6uHW3OxJnSoGkS33v9HBbnWXE3F/kTURJ4dEcVfEENT7yX2qMyLGTmiZQS//zqWRRmmfHg5nLVcYiIYuKrN1VDCOD/vHpGdZSovXSiC6e6hvDVm6ph0PO2R0SJr7ogE/euL8HP9jWj3ZU4HUuxxhZ9FjRN4kL/KOpanDje7oY3ELrsmufq2lHX4sKf3bKMWy4TUdJYlJ2GL29fjN8f6UR9q+uy50d8QRxudaGuxYV2lwdSzu92zW5PAEfaBlHb7ETv0OUHdo74gvj2H05h5aIsjsYQUVL589uWAwC+88rlHUuaJnG+bwSHmp1o6Jz6vWoyMERzkRBiF4D/C0AP4MdSyn+85HkzgCcB1AAYAPCAlLI5tlHnh6ZJ/HTfBWRZjCjIMmN1cTbyM82XXSelxAfnB/BsbRveON2LYW9w4jmjXuD2NYvw+E3VWFaYif4RH/7hpVOoqbDhUzXccpmIkstjNyzB83Ud+Itnj+LFr22HxahHbbMT//ZmI94914fJtUt+phl3XrMI924owbqynCm/X5d7DCc7h9A95IUmAXu6CVX5ViwvzIROd/l6lt4hL54+1IaXjnfhdPfwR56rLsjAo9ur8MmaUuh1Av/86hn0DHvxw4c3cjSGiJJKSU4aHrthCf71jXO4c+0i3La6CO6xAH7yXhN+caAFLk9g4lqDTmDrklx8Yn0Jbr+mCOmmy0sAbyCE4x1utA54UJhlwbaleQv5x5kVMV1vmRBCD+AsgFsAtAM4BOAhKeXJSdd8BcBaKeVjQogHAdwrpXzgat/X4XDI2traueafs2FvANf87asf+do1JdnYtaYI920sgd1qwp6jXfjxe0043T2M7DQjbl1VCEelDUXZaRj1BXHwghPP1rbBF9Tw+E3V+LDJifpWF3Y/vg3LizIV/cmIiObP++f68fBPPsRDm8uRn2nGv715DrlWEx7YVIZ1pTkwGnRod3rwwfkBvHG6F/6gho3lOXh0xxLcsqoQbU4PnjrUitdP9uB83+iUPyPXasKOZfn4VE0pti7JxenuYfzk/QvYfaQTAU3Dpgo7bliej2WFmTDqBc73jeL5unac7BrChvIc3HnNInz7xVP43NYKfOueNQv8GyIimn/+oIZ7f7gPXW4v/vG+a/CtP5xEx+AYbllZiJtXFaIoy4IhbwDH2t146XgX2l1jyE4z4uEt5fj8dZXIshjx0vEu/O5IJz5sGoAvqAEA7rimCD/8bI3iP12YEKJOSumY8rkoCpmtAP5WSnlb5PFfA4CU8v+bdM3eyDX7hRAGAN0A8uVVvnm8FDJSSoz4ghjyBtHm9OBw6yBePdmNw62D0Akg3WTAiC+I5YWZ+NL2xbhnffGUC/edo3783Z4G/P5IJwDgu/evxaccHI0houT17T+cxI/fD+9gdn9NKb51z+ope/ncYwH87nAHfvx+E9qcY8iyGDDkDUKvE7i+Og87luZhQ7kNJTlp0OmAgRE/TnYO4f3GfrxxqgdD3iCy04xwjwWQZtTj045SfHHbYlTkWi/7WVJK/P5IJ/7f3Q1wjwWwriwHv/njLdxwhYiS1rmeYdz1/ffhDWgozrbg+5/dOOU281JKHGp24afvX8Dek90w6ASMeh08/hDK7em4aUUBrq/OQ3VBBopzLHHTbs61kLkfwC4p5Zcjjx8BcK2U8vFJ15yIXNMeeXw+ck3/Jd/rUQCPAkB5eXlNS0vL7P9U86x1wIOnD7XC5fHj9jWLsH1pXlRbdr5xqgc9Qz585lou8Cei5BYMhXfMWV6YiZ0rC6O6/pWGbrx9pg+Vuen4lKMMhVmWq/4/3kAILx3vwvuN/VhRlIkHHOXITjdO+7N6h7341YFWfOba8ml/BhFRovuwaQB1rS58ZnM5ctJN017f1DeCZw61YcgbwF1ri7GlKnfKqbzxYK6FzKcA3HZJIbNZSvnVSdc0RK6ZXMhsllIOi1MV2gAABf1JREFUXOn7xsuIDBERERERxaerFTLRrHxsBzB5jlQpgM4rXROZWpYNwDnzqERERERERNOLppA5BGCpEGKxEMIE4EEAuy+5ZjeAz0c+vx/Am1dbH0NERERERDQX026/LKUMCiEeB7AX4e2XfyqlbBBCfAtArZRyN4CfAPiFEKIR4ZGYB+czNBERERERpbaozpGRUr4E4KVLvvbNSZ97AXwqttGIiIiIiIimxtPBiIiIiIgo4bCQISIiIiKihMNChoiIiIiIEg4LGSIiIiIiSjjTHog5bz9YiD4ALUp++NTyAPSrDkEJga8VigZfJxQtvlYoWnytULSS6bVSIaXMn+oJZYVMvBFC1F7p1FCiyfhaoWjwdULR4muFosXXCkUrVV4rnFpGREREREQJh4UMERERERElHBYyFz2hOgAlDL5WKBp8nVC0+FqhaPG1QtFKidcK18gQEREREVHC4YgMERERERElHBYyRERERESUcFK+kBFC7BJCnBFCNAohvq46D6klhCgTQrwlhDglxP/fzt2FWFWFYRz/P4yZaZRaFKWFStIHQSlR9kGIhn1JdmFkFIkZ3QRZFFHdSBdeBJEVhTd+ZBFWmJR0UYgFdZOUCWUZKBY6ZSqMWhRk0tPFXjMex5lyQGZ3Zj8/GM5Z714X6zAv7znv3mtvfStpUYmPlbRB0vbyOqbEJenlkj9fS5pa7yeIwSSpQ9IWSR+U8URJm0qevC1peImfWsY7yvEJda47Bp+k0ZLWSvq+1JdrU1eiN0mPle+erZLWSBqRuhIAklZK2idpa0tswDVE0vwyf7uk+XV8lpOp0Y2MpA7gVeBW4DLgHkmX1buqqNkR4HHblwLTgIdLTjwFbLQ9GdhYxlDlzuTy9xCwbPCXHDVaBGxrGT8HLC15cgBYWOILgQO2LwKWlnnRLC8BH9q+BLiCKm9SV6KHpHHAI8BVti8HOoB5pK5E5TXgll6xAdUQSWOBxcA1wNXA4u7mp101upGh+ifusL3T9mHgLWBOzWuKGtneY/ur8v43qh8b46jyYnWZthq4s7yfA7zuyufAaEnnDfKyowaSxgO3A8vLWMAMYG2Z0jtPuvNnLTCzzI8GkHQGcCOwAsD2YdsHSV2J4w0DTpM0DBgJ7CF1JQDbnwJdvcIDrSE3Axtsd9k+AGzg+OaorTS9kRkH7G4Zd5ZYBOUy/RRgE3Cu7T1QNTvAOWVacqi5XgSeBP4u47OAg7aPlHFrLvTkSTl+qMyPZpgE7AdWla2IyyWNInUlWtj+CXge2EXVwBwCNpO6Ev0baA0ZcrWl6Y1MX2cu8jzqQNLpwLvAo7Z//bepfcSSQ0OcpNnAPtubW8N9TPUJHIuhbxgwFVhmewrwO0e3gPQl+dJAZYvPHGAicD4wimqLUG+pK/Ff+suNIZczTW9kOoELWsbjgZ9rWkv8T0g6haqJedP2uhLe2721o7zuK/HkUDNdD9wh6UeqLakzqK7QjC5bQuDYXOjJk3L8TI7fIhBDVyfQaXtTGa+lamxSV6LVTcAPtvfb/gtYB1xH6kr0b6A1ZMjVlqY3Ml8Ak8sTQYZT3VS3vuY1RY3K/uIVwDbbL7QcWg90P91jPvB+S/z+8oSQacCh7su8MXTZftr2eNsTqOrGx7bvBT4B5pZpvfOkO3/mlvltfRYsTpztX4Ddki4uoZnAd6SuxLF2AdMkjSzfRd15kroS/RloDfkImCVpTLkCOKvE2paanvOSbqM6k9oBrLS9pOYlRY0k3QB8BnzD0XsfnqG6T+Yd4EKqL5u7bHeVL5tXqG6W+wNYYPvLQV941EbSdOAJ27MlTaK6QjMW2ALcZ/tPSSOAN6juueoC5tneWdeaY/BJupLqwRDDgZ3AAqqTiakr0UPSs8DdVE/Q3AI8SHUPQ+pKw0laA0wHzgb2Uj197D0GWEMkPUD1uwZgie1Vg/k5TrbGNzIREREREdF+mr61LCIiIiIi2lAamYiIiIiIaDtpZCIiIiIiou2kkYmIiIiIiLaTRiYiIiIiItpOGpmIiIiIiGg7aWQiIiIiIqLt/AN7axcGE6SveQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1008x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(abs(np.fft.fft(sqrc, 1024)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "rc = sp.convolve(sqrc, sqrc, )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Python\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: UserWarning: In Matplotlib 3.3 individual lines on a stem plot will be added as a LineCollection instead of individual lines. This significantly improves the performance of a stem plot. To remove this warning and switch to the new behaviour, set the \"use_line_collection\" keyword argument to True.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.stem(rc);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1008x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "MagPhaseFIR(sqrc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sq_rc(alpha, samples_per_symbol, L):\n",
    "    K = samples_per_symbol\n",
    "    N = L * K\n",
    "    h = np.zeros(2 * N + 1)\n",
    "    for n in range(-N, N+1):   \n",
    "        ix = n + N\n",
    "        #t = (x-N/2)*T_delta\n",
    "        if n == 0:\n",
    "            h[ix] = 1.0 - alpha + (4 * alpha / np.pi)\n",
    "        elif np.abs(n) == K / (4 * alpha):\n",
    "            h[ix] = (alpha / np.sqrt(2)) * (((1 + 2 / np.pi) * \\\n",
    "                     (np.sin(np.pi / (4 * alpha)))) + ((1 - 2 / np.pi) * (np.cos(np.pi / (4 * alpha)))))\n",
    "#        elif alpha != 0 and n == -K /(4 * alpha):\n",
    "#            h[ix] = (alpha / np.sqrt(2)) * (((1 + 2 / np.pi)* \\\n",
    "#                     (np.sin(np.pi / (4 * alpha)))) + ((1 - 2 / np.pi) * (np.cos(np.pi / (4 * alpha)))))\n",
    "        else:\n",
    "            h[ix] = (np.sin(np.pi * n * (1-alpha) / K) +  \\\n",
    "                    4 * alpha * n / K * np.cos(np.pi * n * (1+alpha) / K))/ \\\n",
    "                    (np.pi * n / K * (1 - (4*alpha * n / K) * (4 * alpha * n / K)))\n",
    "    return h"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}