├── Algorithm.md
├── README.md
├── RSA - Audio implementation.ipynb
├── boing2.wav
├── decrypted.wav
└── encrypted.wav
/Algorithm.md:
--------------------------------------------------------------------------------
1 | # ALGORITHM:
2 |
3 | Select two prime no's.
4 |
5 | Suppose P = a and Q = b.
6 | Now First part of the Public key : n = P*Q = ab.
7 |
8 | Now take an integer e such that , it is an integer and not a factor of n
9 |
10 | Also , 1 < e < Ф
11 | [Ф = (a-1)*(b-1)]
12 |
13 | Such that Φ(n) = (a-1)(b-1)
14 |
15 | Calculate Private Key, d:
16 |
17 | d = (k*Φ(n) + 1) / e
18 |
19 | ## This gives the keys as:
20 | Public Key: n and e
21 |
22 | Private Key: d
23 |
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Audio-Encryption-and-Communication
2 |
3 | ## Generic Procedure of communicating using Texts:
4 | 1. A client (for example browser) sends its public key to the server and requests for some data.
5 | 2. The server encrypts the data using client’s public key and sends the encrypted data.
6 | 3. Client receives this data and decrypts it.
7 |
8 | ## Why prefer RSA algorithm?
9 | The idea of RSA is based on the fact that it is difficult to factorize a large integer.
10 |
11 | The public key consists of two numbers where one number is multiplication of two large prime numbers. And private key is also derived from the same two prime numbers.
12 |
13 | So if somebody can factorize the large number, the private key is compromised.
14 |
15 | Therefore encryption strength totally lies on the key size and if we double or triple the key size, the strength of encryption increases exponentially.
16 |
17 | RSA keys can be typically 1024 or 2048 bits long, but experts believe that 1024 bit keys could be broken in the near future. But till now it seems to be an infeasible task.
18 |
19 |
--------------------------------------------------------------------------------
/RSA - Audio implementation.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Getting Dependencies"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 2,
13 | "metadata": {},
14 | "outputs": [],
15 | "source": [
16 | "from scipy.io import wavfile\n",
17 | "import numpy as np\n",
18 | "import matplotlib.pyplot as plt"
19 | ]
20 | },
21 | {
22 | "cell_type": "markdown",
23 | "metadata": {},
24 | "source": [
25 | "# Accessing and plotting audio (wav file)"
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "execution_count": 30,
31 | "metadata": {},
32 | "outputs": [
33 | {
34 | "data": {
35 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEICAYAAAC55kg0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXmcFMXZx3/P3sByLCzLDcspN4grAUXFExAVJd6J4BVNxBhjEgNewaiJiUYTk2iixuuNEW9BQSOixgNQlhvkvhcWWO5j2Wum3j+6e7anp3v6npmeeb6fD+xMT3XVMzUzz1P1VNXzkBACDMMwTGaSlWwBGIZhmOTBRoBhGCaDYSPAMAyTwbARYBiGyWDYCDAMw2QwbAQYhmEyGDYCTFIhonuI6Hmvy1qoSxBRLy/qstDWS0T0sPz4DCJa52cbDGMHNgKMZxDR9US0koiqiWg3ET1DRK3i3SOE+J0Q4mYr9dsp6wWyYm0goo5e1SmE+FIIcZJDeT4nohoiOkZE+4joHSLq4KCehBlAJvVhI8B4AhH9AsAfAPwKQEsAIwB0AzCXiPIM7slJnIT2IKJmAL4P4DCAHyRZHDW3CyEKAfQB0ArAk0mWhwk4bAQY1xBRCwAPAvipEOIjIUS9EGIrgCshGYIfyuWmE9FbRPRvIjoC4Hr52r9VdU0iom1EtJ+I7ieirUR0nur+f8uPS+UR7WQi2i6PjO9V1TOciBYQ0SEiqiSivxkZIwO+D+AQgN8CmKx5v1GuFyIaTUQVqucnE9ESIjpKRK8DKIhTtp88wj9ERKuJ6BIrwgkhDgB4G8BAvdeJ6EdEtJGIDhDRLGU2Q0RfyEWWyzOKq6y0x6QvbAQYLzgNkqJ7R31RCHEMwIcAzlddngDgLUij2FfV5YmoP4CnIY28O0CaUXQyaXsUgJMAnAvgASLqJ18PAfg5gGIAI+XXb7PxniYDeA3ADAB9iWiYlZtkQ/MegP8D0BrAm5AMil7ZXADvA/gYQAmAnwJ4lYhM3UVEVCzXu1TntXMA/B6SEe4AYJv8PiCEOFMuNkQIUSiEeN3K+2LSFzYCjBcUA9gnhGjQea1Sfl1hgRDiPSFEWAhxQlP2cgDvCyG+EkLUAXgAgFlwqweFECeEEMsBLAcwBACEEIuFEAuFEA3yrOSfAM6y8maIqCuAswH8RwixB8A8aGYDcRgBIBfAn+UZ0VsAFsUpWwjgUSFEnRDiUwAfALgmTv1PEdEhSO+1EsBdOmV+AOAFIcQSIUQtgGkARhJRqcX3wGQQbAQYL9gHoNjAx99Bfl1hR5x6OqpfF0JUA9hv0vZu1eNqSEoVRNSHiD6QF6iPAPgdoo1RPK4DsEYIsUx+/iqAa+WRuxkdAewU0ZEZt8Upu0MIEdaUjTf7uUMI0UoI0UkI8QMhRJVBvZE25RnZfpN6mQyFjQDjBQsA1AKYqL4oL66OgzSSVog3sq8E0Fl1fxMAbRzK9AyAtQB6CyFaALgHAFm8dxKAHrIB2Q3gCUgGZJz8+nEATVXl26seVwLoRETqtroatLMLQBciytKU3WlRTiN2QVqLARD5HNp4UC+ThrARYFwjhDgMaWH4r0Q0lohyZdfDmwAqIPnHrfAWgIuJ6DTZt/4grCtuLc0BHAFwjIj6AviJlZuIaCSAngCGAxgq/xsI4D9odAktA3AhEbUmovYA7lRVsQBAA4A7iCiHiCbKdenxDSSDcrfcZ6MBXAzZf++C/wC4gYiGElE+pFnQN7JbDAD2AOjhsg0mTWAjwHiCEOKPkEbbj0NSvt9Acu2cK/ulrdSxGtLi6AxII+qjAPZCmmXY5ZcArpXreA6A1QXQyQBmCiFWCiF2K/8A/AXARUTUGpJRWw5gK6RF3Ujd8lrGRADXAzgI4CpoFsw1ZS+BNMPYB2lRfJIQYq2tdxpb7zwA90PaPVQJyahdrSoyHcDL8o6kK920xQQf4qQyTKpCRIWQtmn2FkJsSbY8DJOO8EyASSmI6GIiair7sR8HsBLSiJthGB9gI8CkGhMgLWzuAtAbwNWCp6sM4xvsDmIYhslgeCbAMAyTwaREAK/i4mJRWlqabDEYhmECxeLFi/cJIdq6qSMljEBpaSnKy8uTLQbDMEygICKj0+iWYXcQwzBMBsNGgGEYJoNhI8AwDJPBsBFgGIbJYNgIMAzDZDBsBBiGYTIYNgIMwzAZTEqcE0gmry/ajlG926JTqyaYvaISp/Vsg6JmjfnIdxyoxkvzt6JFQS6IgOwsQs+2hRg7sD0+W7cXLZvkYljXokj5d5dW4HhtCGf0Lka3Ns0AAKGwwFuLd0AIYOKwzsjLycLWfcexZPtBTBzWOUqeNZVHUF3XgFO6tY5ce/Wbbdh58AQmDuuMysMnsLnqOM7v3w4dWzWJlNl3rBb//N8mtCjIRVYWoahpHq79Xlcs23EI/1tXhXP6luB4XQOKC/Ow92gtFm4+gOO1DWjdLA/XDu+KuWv2YMLQjpi5bBeuOKUzlJwo+4/VYtHWA2jZROqTkT31c7ws2X4Qs5btwt6jNRgzoD0mDNVPYhUKC/z9s404cLwOhfk5uP2cXijIzdYtu6byCJ7+fBPO7F2MK8q6GH6GDMM4J6ONwKHqOvz67ZU4s09b/OH7gzDlP0swskcbvHbLiEiZu99agQWbYzMcrn5wDG54UUodu/XR8QCA+lAYP399eaSMcn3Gou24991VAIBdh2tw1/l98LPXl2H5jkO4aHBH5OU0TsjG/eXLqHv3H6uN3PvR6t3YXHUcAPDUvA1YfH9j/vbHPlqH18ujMzeOGdAOV/xjPupDAk9+st6wHx777zoAwF8+2YCdh04gPycrosRvfGkRllccjnlPWiY+PT/yeM7K3Rg7sD3yc2KV+2vfbscTcxtlqW0I4d7x/XXrVPri/eW72AgwjE+YuoOIqAsRfUZEa4hoNRH9TL4+nYh2EtEy+d+FqnumEdFGIlpHRGP8fANuaAhLwfNW7TyMugYpzevOQ9G5z5ftOKR7b30oHHPNKBbf/mN1qsdSfpTlcr0N4dh61IRUlSoGAAD2H6+LKrd53zHde+tD1gMEKu/9SE1jvvgdB7W54K3RYNDuoepouauOOskXwzCMV1iZCTQA+IUQYgkRNQewmIjmyq89KYR4XF2YiPpDymI0AFLC60+IqI8QIuSl4ImCDJIbKgZEjTBInxuOE6lVrx4nkF4WRg+qdprb0av3xTCMv5jOBIQQlUKIJfLjowDWANB3+EpMADBDCFErZ4PaCOMcq0lFrZvtRtQO21ByemUV42I0Yo5gtRmn2tonQhb7h00FwyQXW7uD5OThJ0PKHwsAtxPRCiJ6gYiU1dFOkHLLKlRAx2gQ0S1EVE5E5VVVVbYF95IDx+vw1cZ9tu65/bWlMde0hqQhFMbEp7/GFxti687JkrT2p2v34trnFqI+FLZlWLTo2QAvFKzRTMiMBh13mR4zl+2ybDAYhvEey0ZAzvf6NoA7hRBHADwDKYH1UEjJrP+kFNW5PeZXLoR4VghRJoQoa9vWVSRUR+w7VotTH/kk8vy+91bZuv/bLQdMy+w9Wosl2w9FrSsoHaG4b+59dyXmb9qPQ9X1+KmeYbEllbf8d/Vu7DsW7cO/c0asjHrYkfuYag2CYZjEYskIEFEuJAPwqhDiHQAQQuwRQoSEEGEAz6HR5VMBQL2VozOkVIEpxbb91brXtSNfN14WK6Po2obGEfPslZWetuU2adys5bEf23vLUu6jZBjGBVZ2BxGAfwFYI4R4QnW9g6rYZQCUofQsAFcTUT4RdYeUJ/Zb70T2Bqdujnhola7uYq1SVjNWNlpUdiWPyzr9WGbgbKYMk1pY2R10OoDrAKwkomXytXsAXENEQyHN/LcCuBUAhBCriegNAN9B2lk0xa+dQXNWVuK2V5egRUEOVkz3Zycq+WEtbGBVacYzOAzDMEaYGgEhxFfQHxTOiXPPIwAecSGXJRQFeSRFfMrakbct++HDCDmdRt1CiKQbZIZJRzI2dlAi1EkibYAf+pGVLsOkPxlrBPzAzsjbalk3fv00mggwDOMTGWsEjEa52l1DVsbC5VsPYO/RGp1G9MvX1IdiTtS6dd14OWjftFcKQeGmSq9dUU7q2324BnuP6HwuDMNECLQRcKP44t26uSo2Dk88Lv/HAgx/ZJ7lkbfemQRfdgc51MQvzd/q+N5UYsTv52H47+YlWwyGSWkCbQT8Imqh2ZWh0b95yfaDMdeMdG6ydgeFhTsj64dRYxjGezLWCFhVcLYWd4W13UHZPiy4en1YrCEcTqlNp2xSGMYfMtYIJAIjJZqlo7FTTcmZRLg2JQ28SQyTEbAR8BCt3jNafM7K0jECBlozWbo0xPvyGSYjCLQRsKOiQmERFa3SzIde1+ByKGyAEICODXCNnsLWS3xjFbeRPesa3EVF1WK2UG3182oIhTlqKcOoCLQRsEO/+z/C2Y9/bqnsp2v2oM99H2LVzsO2RsNWXSDZujMBy81Y5pw//c/xvW4V5ejHP8cNLy1yVYdVFm87iD73fYgvN5iHJO9174e47OmvEyAVwwSDjDECdaEwth9oPAMQEy1U9fzj7/YAAFaocus6QW/0SuRusTmRuJ2w/G99YvJEKGG9reaEcPu5Mkw6kTFGwAy1wlPSQeZkkefxf4RIvUVgPVLtnEA8aXg7KsM4J9BGwIqCrq5rwL5j5snM1W4fxRWi57aJhzbZu55qqjion8fA6TmBioPVvvi4BZByKSsZhvEeK6GkA81FT32FzfuOx1yPZ0CcGoHLnp5vWuZLnVSTgLPR7I4D1Tjjj5/hjnN62b43leCRPMMkj0DPBKygZwCA2BG2Hzt27ODE+7JHjovz9ab9HkuTevv8rcjDORUYxj5pbwSsolYgymEutyPUVFOkdkjk6DzI/cQwQSdjjUCqnYNiPegcNiIM45yAGwHnmtyK4kikckm13TiJtEpWmrIyM0k1w84wQSDtF4Yto1IgRusIdnHjUhny4Mc4WlOPsQPbG5a5/B8LpHZSzYAEgJr6EApys5MtBsMknYDPBLxDbxCZ0JmA5vnhE/UIC2DOyt2JEyKOPH7WmwwjtnhbbDhvhslE2AjEwbVq8iHdZKJId3lS7f0xTLJgI2BCRruZE6QoWR8zTPIItBHwciEw+W6K1Eoozwe4GCYzCLQR8BQfdJ6dKlPNPZHYnVHe1GMvzFOKdTjDJImMNAKfrd2L+ZusRZx0w5yVlZbLbqryZkeSl7y/YpfrOo7VNpgXChDvLq3Aqp0chZRJHzJyi6jVOPdux4oPvv+d5bI//vdil615iwBQH3I/Wv79nDV45LJBJm25PZmduFH9z19fDgDY+uj4hLXJMH4S6JlARi/aBoTDJ+o9qcdS7CAbX4hUc78xTLIItBHQY9v+4/hs3V7b97GPOBqvRteWUlxy1zNM0kg7I3DWY5/jhhftpzXUc30QMlc/xbMBv3xzOY7WWBvhN1h0Kb1RvgPvLd1p+PqirQdM63h3ifH9qcyfPl6HJdv58BqTHNLOCGQiiXZtvLW4Ai98tdVSWSsuGgHg7rdW4M7XlxmWmfTCt8b3y+9/1+EaSzIpbaYKf/10IyZayEXBMH5gagSIqAsRfUZEa4hoNRH9TL7emojmEtEG+W+RfJ2I6Cki2khEK4homN9vgkk8Vt1n7HtnmNTGykygAcAvhBD9AIwAMIWI+gOYCmCeEKI3gHnycwAYB6C3/O8WAM94LrUMcdhI3zBT3l4qdzYUDJM8TI2AEKJSCLFEfnwUwBoAnQBMAPCyXOxlAJfKjycAeEVILATQiog6eC45k1SCrrfNFr43VR3DWY99Zik/tR5frK/C+Ke+tLYwzjBJxNaaABGVAjgZwDcA2gkhKgHJUAAokYt1ArBDdVuFfE1b1y1EVE5E5VVVVfYlZ3zF1N1jcfjuVa6ARPPcF5uxbX815n63x9H9v357BVbvOoKqo86MCMMkCstGgIgKAbwN4E4hxJF4RXWuxfzKhRDPCiHKhBBlbdu2tSpGQmF3kzFO1XZQXD9BkZNh3GLJCBBRLiQD8KoQ4h358h7FzSP/VTbnVwDoorq9MwD38QeSQJCStXgtq1drAlbMaCp2szI7cTsMSMG3xjBRWNkdRAD+BWCNEOIJ1UuzAEyWH08GMFN1fZK8S2gEgMOK28hreJzuH2bKy/LuIPeipEQbDJOuWIkddDqA6wCsJCJlI/c9AB4F8AYR3QRgO4Ar5NfmALgQwEYA1QBu8FTiBMLuIGM83R3kXVUp1yZ/g5hUx9QICCG+gvF3+Vyd8gLAFJdyMUnGzL3keE0gION25e27HQcE490ymUzGnRi+6w3jU6laquuCEQbZn6QyJq9bbFQIgQaTbZJqgzNvjbPdOFp2HjrhST1WmPLqEjw5d72ndYbCAuGw80+2IRRO2prWKwu24upnFySlbcY+gTYCTkZp79iIL/PAzNU4VO1NFExfScKP3eqI/rN1Veh174c4bjGvwH3vrbIvi44o8eIQSTfZbsaQ2Ssr8Zd5G6KuVcohLGZ8u91RnT3vmYObXyl3dO+JuhB63fshnvxkg3lhH3hg5mos3Gwe64lJDQJtBBj/MLUrNpVovJDS6rZSxYeuiEQuJZq5zPnGuE/X2o+GCyAS3O81hwaIySzYCDAG+DO7MN166kurySOZayCpuPWWST3S2gg8Mtt6Zi8mmvOe+MLT+i7529eGr9326hLP2vlm835L5dTKedHWAyidOhulU2d7JoeC25mEmq37jqN06mwstPgeGcYKaW0EnvtyS7JFYGTixeBZ6WHO3vccuF/01g9Eoz8oZVggK3/T9Q6GsUGgjQBv42cAfZeLnZ0xeiW9OzGcBJ8M/y4YGwTaCDDBw0wlutdf6e8IZ18/4yVsBBhHpJMeCsrAOShyMsEibY3Aygrv/MxM8LATAE+3aOTEsHXVe6IuZFuOdMbNYTcmcQTaCMTbeXHzK/aTzTPBJFUU7RNz1yVbhJTi8/XOzjkwiSXQRiAee45kTjKPpARgc6p5E6Sxk7Fp4FhtYmYCQYm/VFPPWdWCQFoZgd3yUX3Gf75Yv8+Xer2K3Oo2H4LeDlFz90bs64mMYRRLtDwLNu3Htv3Ho641hMJ4e3EFu24ymLQyAhf/7atki5AUkuEOWbfnaMLbXJ+ENtW8taQiqe1bxchNes1zC3HWY59HXXtp/lb84s3leKN8h+49TPqTVkYgU/O5Zsp5iaM15kHoFIPoh13cf6zO8zrtuNX8+Jyr5EN8B6r9eG+eV8n4QLCNQIYov3TCjV7wMjSyeahs+bCY6jsWFF+8HZRZQyavXWQ6wTYCDIDMsYVGKiVRqiZoI1sr8vo5iwxaf2UqbAQYx9Q2hHDlPxdg8baDlu/566cb476+89AJ1BskoQnJi5dvL67AXa/HTw5kpoDunLFU9/qWfcd1r0t1slZj0g82AoxjNu49hm+3HMDUt1d4Wu/2A9W618OyEv7Fm8vxjssgasd1DnYBwF8/lRKxRHYHqd1BLnccJfOeZBAQMTMeNgKMY8I+bQN/a3GF7unb+95dhZr6xuvvL5cjhqq04tLthwDYc3NEKVWN5lLvtDHbRelEOdeZpN5Us/uwtY0Pen3nBe8urYgkrGHSh0AbgUzxhZuSpO1BIZ+GpM98vgm//SA2F8Tmfcdx9uOfR57/9LVYl46ydVUt2uJt1lMdhuO8J7OFTicLocrMwwpPfrJebic+98+UUnTuP26+40f55pi5ulbtPIyfv74cU99ZaVqnArvPgkGgjQAjk6Qfm58/8qqj+gf/Kh0cCDyuc5LXCOUd6b01P97uvqP2t2aaHezaa2OrtNXxQ7U8u9h7JDkHMqfPWo3xT32ZlLbTnZxkC8AEl1Qe5zndnqg9ZxC9JpAa77jexAg4mRdafWvJ6oKX5m9NTsMZAM8E0oDahjC+3OBPGId4+KkQrNbtd7iDtxY3nhI2a8mJKGbGqrYhdhbTYLKOYMc76Db95fNfbsYOg4V8JhgE2gh4FWcm6KzdnaxwCskfGTdY0Lx2pNSWVRvXeOsFgD87fV5duD3mmtl7TtTP4sDxOjw8ew1++K9vdF9PkYkTY0KgjQCTXPwchFutWhiMpaPyBdhJNSmX1bsnGUqttsH+Fiwno3vTjG8UW04xiscshPNgUhc2Aoxj/HUHWavcaxni7w7yHid1mr1nW+4gRbm7eHM84A82bAQYx5i5RxKBFRHsSBnv7IOpO8gHdWgwz4l7j515gBvPkdm9HDsoGLARYBxznewL3rD3mKXyH6zYZbluq+ojLESMIVi7+4jldvTqM2zffjqBKD5duwelU2fjgGr/vhd2NBwWKJ06Gy8rO2hsTAWe/2qLJIeJ8F+srwIA7D8Wu/00VXZNMc4wNQJE9AIR7SWiVapr04loJxEtk/9dqHptGhFtJKJ1RDTGL8EBPiyWbOpD9n78f/9sk+cy6EkwZ0WleSEb9Vmtxuz1576QFO7aSutGysp5hRp5B9Hv5qwxvMlIUVdbPF38gmwstu5v3AmkbMwwDOzHtiEQWJkJvARgrM71J4UQQ+V/cwCAiPoDuBrAAPmep4ko2ythmWBjZzun5S2iBgXt6Z/G0vFGtWYjXq9GxHbrqZXTOOZkSUpZr5vdiqZXZ+NpY3d1M8nF1AgIIb4AYPXc/QQAM4QQtUKILQA2AhjuQj4mjbATZsLqeoPuSDnmufV2I9svVbcoxsts5uPonIDqDZyoC0Fo3Fu6u5Q0z5WZQHaWMjI3vydWjli51OcRTtTHzhjMvE5sHIKBmzWB24lohewuKpKvdQKgzlNXIV9jmEgoaCtYPfzm9VbOz9dVxVzrcc8c1IfCpqdWZy23uOZhoDyHPTQXD32wJkph672XT9fujXquJHRXjIDe4vb8TfH7U9vM/y3chl73foiqo7WoPKyfJzlyutpih5+oC7lar2H8wakReAZATwBDAVQC+JN8Xe/rrfsNIaJbiKiciMqrqmJ/eEz60eBD2FE9/RMWwvNhqFGOAzuYzUhO1Ifwwtdb7LuDYmYCsXy7xWQyr2lz1jLJoG3ZdxwVBw2MgIlc2tfvmLEUY//8Jarr+FxBKuHICAgh9gghQkKIMIDn0OjyqQDQRVW0MwDd4ZEQ4lkhRJkQoqxt27ZOxEjJuC6MMSGbC8lWsOI2cnSS13HsIWEwO2l086gPc7ldbAZiZwJ67WeZ+G60dzTJk5byTtSH0GDwuUUO1lmQEQDKtx6IktcJ6/ccxfNfbsaMb2NPUjPOcGQEiKiD6ullAJSdQ7MAXE1E+UTUHUBvAN+6E9Ealz09PxHNMC6wEuLBLno1Pv159C6kJz9Zj9Kps23VO2fl7qjneqKP/fMXuP0/S6Ku/eiVckx+cVFM2e7T5uAbeTR+zXMLI/KY+fyNDFh9KIzSqbPxyoKtqJX99dnKbh3VPaVTZ2Pp9oMRA2GENuNbXrakGrbuOx6T86B06uyovA5GVkD73rKzpDobQmGcqAtFbZW1Sm19GA/PXmMrpDUTH9MookT0GoDRAIqJqALAbwCMJqKhkD7+rQBuBQAhxGoiegPAdwAaAEwRQviT4ULDsh2HEtEM4wI/wkyEhVHgiEZW7ZT80FqlJIQAEVmaKYSFQHYWRa1rrN19NCZu0ydr9mpvtY0VeQ6fkJK7PDF3Pf5+7TDpPpWsat5cXIFOrZrYkqGkRYEsi0B1baz75mB1HXKz7Y0hld1L9WGBS//+NdbtOYrnJ5VhZM82aJZvLaAxH0DzHtOeF0Jco3P5X3HKPwLgETdCMenJPp2DRm6x4+rRzhC27q+OSlITt50w0CQ3G8dkhThbexYh3r02/VHqPMdGSu+7XZJhO1Rdj8c/XgfA+KDbsZqGqJlAbUMI095eaajEt++vxmuyu6U+JHTPEjSEBHKyFBmlz/bZLzbj7jEnqWSPJidbkqGuIRxJ/nPzK+W4ZEhHPHXNyQCAT77bg5tfKcd94/vh5jN6xLTLXl/vCXQ+AbdhcJngY0cpPPbfdVHPJz79teV7Q0JEzQKmaNxA8Yh3olpP/B883xiV02j2NOmFRi+rklLTaLdObUMIJc3zI89nLt0VN0fzjS83urMawkI3BWYoHD0Du/+9Vfhw1W6M7NHGsF5lJlCnCYq3TRWK+uZXygEAD89eo28EDGtnnMJhI5hAoxc2ArCmLPT2vsdrx2mspHi36b1Wq5LLziwicsQhZs9/9HOz8xpqf39YCN21HBH5T5JRiXYar4+U2UhMjgQHUV4Z72AjwASaRKmEcFjf2FjBrh9bXdqO4THarSMQfUbDZI041mjozAQaQmHzd6UpoLiftDMBO73DJsB72AgwgcYoFIWlxV4bOxXDwp+oqWY12llMV0b4enKqL9lJxhQO688E1NcEjHY5RV9Trwk4hScC3sNGgMlY7IaxsFNejRvFZcfwKAZRzx2klt30zICqrHYtJHJdNTMyElF7XdkiWuvq4F38/li+4xBKp87GZ+v2Rg6l7T9WiyM19S7aTG8CbQQ4uyTjZnRuJ4xFyIU7KB7mQens1CX/1XEIqd+r2c7OKHdUnJmA0o6AsDS7MFoYtoNZf3z8nXS+44YXF2GifHbolIc/weDpH8dtd9byXVi/J1lpWpNLoI0AwyTKPZBIN4TaMNiKvBq5X1tfdJ3mM4HGx/Vho5lAWLdPok7xa14zMgK2DJ3Z66oC2jMcT8xdH3kcDgs89MF3qDhYjbqGMO54bSluejn2kF8mwEaACTTSYTH/ceoKAuzPVkIad4zddmKMAOzNetQ9GjKaCYRElNGxsmtHWROwmzdZXbcbY7xbFQhv5c7D+NdXW/CzGcsiu5V2HNCPkZTusBFgAs2x2gY883lsshqvfcDrdjt3FRgp4GO1DboGTF1eCOCjVZWYt2aPaTvKoS6t0dlzpAbq8D9GMwEhBL7cUBW1GP3x6t0I6aygh8KNJ4mNlPruwzU4XtuAj1btxqHqOqyplPrQrjvILLS2VfT6oKY+ZFmehZv3exJIMNUI9GExhnn+yy261/c7iEujsGDT/phrP/73Ysf1fbNZP4Ln3z7daHryuCEcxo//beNg2p6jqDxcE3Vt9a4jGDewMfTDN1ti3x8APDVvI578ZH3Uta1UXjRMAAAgAElEQVT7q7FNlU2sUS6Be95tjN+jKNg9RxpPhf9l3gZkZ1GUGwYA6jTnBAQEFm87iD1HouVWUBs1tQlQwn5E12WMuh5lVtIQEpZmJqt3HcbVzy7ETaO64/6L+keu1zWE8edP1uO6kd3QoaW90BypQqCNAK8LM4dO6I/4v95oLR+BHtqgcG55REn7qOGN8h2615vkZqM+JCntNxZV2GproUHI6IUqQ7R+j/4J5s/X68c92ns0NtzHpBe+1Q1KN00T2G25Tkwv7QnkVTuP4PvPxAaAfKN8B7btP46fndsnck29RnLn68vw5JVDUdsQRpO8bDz8wXeRnMl6CCGtA8xavguXDu0IAKgPh2NmAnUNYWQRkJOdhZr6EPKys3CoWvqeKeE6FBZs3o+nP9+Eg9X1+P3EQYZtpzKBNgIMc8IgNr3yo3WCVYdDXnYW8nOycFQnwJoV8nP0vbHqmD56IRvi8eFK/ZmFOjHMoq36huKwgUHdazBC717cDBvlkBh6LiMAurkIllcc1i2r5e63VgAAyrq1jly7VhVSY+ayXZgp5z2458K+ugZg4G/+G3msjgz7nDyD3Fx1PCoZ0NuLK/CLN5cDADq0LEDl4Rp0L26GCwe1ByDNCJ75fBP+8NFaXPu9riiUA999u2V/ZFbXLL8xo24WEUJCoKYuFAnPraVL66bo2bbQtD/8glLhGHZZWZkoLy+3fd/8jfuivhQMk0g6FzXBniM1pmkn83KyLPudC3KzXMXb71HcDJtVAegU8nOybC/IKrRqmuvKqDbNy7ac0D4T+fFZPTF1XF9H9xLRYiFEmZv2eSbAMA4RQj/vcBZFn/S1sxDavCAXNfWx7pfmBTk4WhM94+jZthk2VUUrfD1FT2R/R46aehf3AsDATi11M5v1LimMG1wPAPq2bx6z1RMASprn67qprNCnXWGMS+y20T0xZkB7TPh7dFDBRycO0s1d8PKNwzFZDuJ3+Smd8dbiRrfdO7edFnl8zzsrsXb3UTTPz8HLN+mnW28nh+1OFsE2ArwowFikuDDf81DWRuky83Kcj+aNXERaAwAAbQrzLRmBgpxsW8HytJjNdMxo0yxP9/op3YoiRqC4MA/7jsUu5j9x5VD079giJilQQa6+a0WNMgP54+WD8eWGfXhfdvs8eMlAXPPcQgCNBuHkrkUY0qVVTB3DuhWhV0lhxO2lcFafxmyIYwa0x7w1e3BQni0N61oUee2jO880lTPZBNsIMIxFjJSruzr1FVFedqwR6NiyALtUu3YUBXX2SW3xmSq5vR05c7OjR0F5OVmxEToB06xiZthdl7Dafo5KfrW/XO260r5HszrVSGsr0sKu2u2dp9PHRv1OAHYdalzX+OjOM7Bbs/tqSJeWmDllFGYs2o4RcUJppyp8ToDJCIyUiR915ukYh2xNWeWZEk9Hwciw6KG9Ny9b3++f7PAqhkZAJX+B6n2rR/k5BjEurLwlRdkTRS/256nqVNx22pnFzaO6A5AyrF11qpQ2/b0pp6Nv+xYYfVIJAGDcQGmxuKR5Abq2aYq7x/bFmX2c5UtPJjwTYDICu6kQ9cjJoqjTs0Z16o0qczQKW9nfnpMVO5q3Sq7Ovcd0diqZhYnwGyMjkGswEyjIzYKymcnI0Fp5S4qyFwIxW77+8P1B+GxtFY7U1GPj3mNoXhCtCqec3Qv3yecBHrioP3415iQ0zYsu8/QPhpkLEQDYCDAZgSdGINu5ETDyXmhnCHbcQVrlaqQwXXqDXKM1dJHrqv5Tj8TVsyGjPrbiDurdrhA7D51A84KcqJO+TfKycNWpXXHVqV2xaudhvLt0J3qXSFs0T+/VBl9v3I+mqm2eRBRjAJTr6UCgjQCnl2SskuvBmoA0mm9UJsbuoNi2tApDeaodzedbWPCMyKNpP9tAKSV/JmCgyFVyqY1fE7U7yEDZq9/T4M4tsULn7MGtZ/bExGGdcVaftvjPN1LO5InDOkXtyR/YqSUGdmoZef7ElUOxpvKILbdc0Am0EWAYq+R7MBPQjj6N/NV6RkCry4zWBPJsyKl1MWlnFZG2kzwVMFLkatTvOz+38bFRH6uN5cs3DMfRmgYUFuRg2ENzI9cHdGqBFgW5AIAWTaS/o08qiTuCb9eiIOlbNhMNGwEmI8jNca8ItSN/w5mAjuIyGo1rFaRaAZqhvVdrFBrbtlylLxi5btRdonb7DOtahC37jqN9iwK0KNBXUd3bNI2EpMjLyULXNk1jyigGAACmXdgX2VmEC/q3c/IW0ho2AkxG4M3CcHQdRnXqzQS00SeVSKHa0budmYBWuRpFK02+O8jACKgeF+RmRU5WF+bnYOX0MXHrvKKsC96TQ0ZYWR8oaV6Ax68YYlnmTCLQW0TTZF2GSQDavd1O0PrglcVELXqLu9pDXcflMApa/WVHYX+iCS+9/UBstE8AOGAjompxof7BLjVqmQsszFwM3UGq91qQm43/u3E4iIBTSov0y6toCAvccW5vAPqGU7vbhzEm0EaAYazi9sATEKtshnbRV1ZN860roN4lzaOe600Exg/uoHvvQU08H6MRsZ2QEYvuPc+0TMsmjW6W4sJ8LL4v/j1WFrtvHNUd3+vRBmsfGouz5X34euRlZ6EwPwf9OjTHXef3wdZHx+uueZS2aWbaJiPBRoDJCHIN/OV20Cqboqa5uuWaWzAC/Tq0kOrQhFTQmwmUddM3NqdqRszxlKdVrGx7PK1XceTx4M4tDdciInUavaA6xdunnWQMjXblPD+pDK/9aATWPzIOqx4cg5Lm+ou3fdpJszN1zH8mPmwEmIzA7sLwC9fHBmbU+txP61WMu87vE3Xt1jN76O4uefCSAVHPn7xqCF664dSoUTUQbWi+vfdc3HpWD1x/WmlUmQcu6o+ryrrgHz88Jer6U9cMjWn3scsHRx4/P6kMX959dkwZAHjx+lMjgc86tIyVv23z/MjjhycMxAc/HYV/XncKHr9iiGnfdi92Pyo/r387jOxpHpJBMaKFNmZjmU7aGAG38VGY1Kddi3zzQgbYWXAFgFZNY33jeqkFz+vXuNvk5RuHY9qF/XTLFRdGy96hRZNI+AE1ytc4O4tQ0rwA08b1AxFF7UTq1qYp/nD5YLTR1Kl3oEntGx/atRW6tI7dRQNIMe2VwGd6RkAZYQPS7GVgp5YYM6A9mublGPbt6JOkEAotm+SiVGf3jp/weqF1Am0E1J+znUTaTOZh5GboXGQ9JWDHVrFl9TwheonZWzTRKGgTJaX9Pp9ssP5gRmF+ruqxtdGxnqFopmNgFJQBmHY7p9JfhQU5KMmwvfdBItBGgEk+o1T+Yb9xc0LcKCaP1qXS2FY0v50wIMb1A+j78LX5Ax6+dCBO6xndT3oT17zsrKgwxGr+dKWz7Y2n92p0oSgj9vdvH4UPfjrK8J5HJw7G+MEdohZ89QygAhHhxetPxczbo+u8f3x//PmqoSjrVhRJmqJeL/Fj2JYCObICh6kRIKIXiGgvEa1SXWtNRHOJaIP8t0i+TkT0FBFtJKIVRJQeEZYYQ0b1TpwREC7UhtGefu3CrBGTRpZG+cUV1MpcCVesdQf9cES3GHelnvH4Xo/WkQVSZeFYwciNY4Z6oVdZbxjUOTpUgpYmedn4+7XDotxNZofYzu5bEuNGapKXjUtP7gQiihggoxSLXsPuIOtYmQm8BGCs5tpUAPOEEL0BzJOfA8A4AL3lf7cAeMYbMRnGHYYB3FxqC73dNA0WkrAot6nvTvahrnhYCbsRb11OGaE3k2cC/TVGziuUgQLHFbOO6ScrhPgCgDY33AQAL8uPXwZwqer6K0JiIYBWRKS/yZlhbOLmh20UQM7osJPVCJFq94Zyj14IAy16Cr93SWFkt9CgTs6UpJ0NEupdO2aHq6zEH4oXI0hZE/le99aYNq4vnrxqqC+uG6XOFLanKYfTNYF2QohKAJD/KtscOgHYoSpXIV+LgYhuIaJyIiqvqqrSK2JKiB2AjEWa5GbjuUmx2z7Vu4Ca5WXjiSuH4H+/Gm25Xr0FzxtP7256n56S+vHonujSuine/slp+O2EgbbuVVgw7Rz86Azz9gHglRsbc956ETSNiPDGrSN1X+vWphne/slpeHDCANx6Vk+c1L65bjkm8Xi9MKz39dTV1EKIZ4UQZUKIsrZtHWbjYRvAWEQIKQ1gPLq0boqJwzqjm8vTplb83nozAcU1dUq3Iks5dPUoaV6AHm31w1losbPOYHUWNrx7a8PXTulW5HuI5mkX9kVR01x0KUrsltQg49QI7FHcPPLfvfL1CgBdVOU6A9jlXDyGacTNFF8I4bufWNiYmepJ4pULI2gT5PP6uT/prHBO33ZY+sAFCVuATgecGoFZACbLjycDmKm6PkneJTQCwGHFbcQwbnGj3MJCJD2kshplJqBW/FaNlFk5N7uoDNv0oe8UOYd0buV95YxlrGwRfQ3AAgAnEVEFEd0E4FEA5xPRBgDny88BYA6AzQA2AngOwG2+SM2kDCmkVyNowywAwOWndDHdfaNeDNYb1Zu9V7PF5Daq7aheK1X1oTet6Jed3AntHfr8Lx7SER11ThB7CS/iJhfTI4RCiGsMXjpXp6wAMMWtUExm07Nts5jQy4B1ZTH9kgH45ZiTMPA3/41cG9W7GIeqrYdU1sPt+PquC/rg3nel4za6BsOFMlQbPq2cT14VG1PIKn+95mTp77wNjuswImhuq3SFTwwzKYdfCbzN6k3GgNQXRehDpTxaT1/YCDBpiZ7OMlsTUCs6PTXqVg+a6WbPFoa9qYbJENgIMK7RizrpBqu68JrhXXX9/4C+QvVrhqEwtIu7BU6vpBszoL1HNTXiQU4eQ/z+XJj4sBFgXPOXq0/2tD6rOuH3EwdhuiZOfzzszAScoM0N4Bsmcnpx8EtLTUPI8zp5xpIapI0RaMb7gpOGHwM5O3We2zd2n7neNkrt7qARPaIPNqnvScaipdURsd5BKL9H04PjBJxjgk3aGIFXbhpuXojxjLE+uBwUCISP7zxT57o+v5s4KLasqrBeGOkl95+Pl27w/zszTQ6h7CW9VAnurxne1fP69Rg3yHoIsFUPjsHK6Rf4KA3jJYHOwaYerPl9HJ2Jpktr68lYnGDnxGe8wGVAo5tGbRha64SQ9mMwbZTHQA8nzRsFwEsmnNoxWKTeN8ghnF4yOfjlCvLDvWEvVLP3/iCzGjNtfZTPCaQGgTYCQYnFztjHzqdp1WCYnvi10WaqwIqUcUug523q7z9PBNILtzZdff8fvz8YgPPZ4p3n9XYnjEWcBLi7/rRSfLJmDy4eHO2zv6B/O4zs2cbgLoZpJNBGQA3vNU4fiMh1xE/1/WfLu4dMvyOkvzvovH7trN2fBEqLm+GrX58Tc/1ZndwJqUoKdmtGEWh3kBqeCaQPBHuHvbz66I3qSZSSyjRl6Ee0U8Y+gTYC6t8MLwwnFvVI2UrPXzKkI04tLbJcv9NPU9ky6aVC5Xy1TDoTaCOgHkcQCNMv7h/1utfhDBjnPHXNyXjzx6dZKksEx1bgttE9pTqc3R4h6rvllQ3gVVwmBQm0EVCTaVPpZON3f9sZfXsli1E9buq3t8vJeTtBpK+cZ7iXxXSYjD+kzcIwk1j8HNRK5wSc3yv99U6jutl+zGN/Yy4d2gl927dAvw4tki1KRpM2MwEmfXC/N8iZO0h9j901Dy/ItLUHImIDkAKktRHIrJ9UemFnJO+V8kz2FtBMcwcxqQG7gxhX+DF6JXJuwJURvKe7g0zq+urXZ+NEnfehlhkmEaTNTIBHUd4zyGL4YK/73uicgN9Eu4NEzCtGInUuaore7Zqb1m8aO8i0BobxnrQxAoz3xFPEbQrzAQAtm3qfSKVDyya6MwxDeeIcLPMi2qlyBIUXeYEWBew8SDf4E2UMiTcy/dEZ3dGmMA+XD+uMpTsOetruH68YrLv7iEhKBLNw8wFL9Tw/qQyDOltPhmKUY7iFxxnDzuhdbNB+4ucCzfKycdyiK+vFG05FHwszHiZYpI0R0PsBJXuhL53Jyc7ClWVdfKm7RUEujtTU67727KQyDJ7+seG96o/8vP7tbLWrN/to36IAxfKsR/2q1VSSet/A0jbNIo9jnU6JZf60c1FrMXXk2SfFZnBjgk/aGAE9BJ/QdEcSjaheywRC09zYZDN+itm1TWwqRzuk+jdQMmYJyo3MpCRpsybAY/70Qn9m53ejjQ/Nxg9OZPGjToZxS9oYAcZ7kqmTjCN6xpfKzeRPf/bhDt06WdkzKUTaGAH+YaUXuqGk4Y+i9hM7NonXsJhkkDZGQA/+UbnDevf5cGBMd4uoeTtefeQc657JFNLaCBQ14wWvoOJHRE8nbRq1d05faztljA+gxb7OMMkg0EYgOshX7M+ppHkBhnVtlUCJYvnrNScntf0gsfyBC7DsgfPjlvFzK7BZCAylmdxswqMTB3vSpvIV7l3C4ZSZ5ODKCBDRViJaSUTLiKhcvtaaiOYS0Qb5r/V0Uj7QsZX7E6NusLqfPBVJ9Ci1ZdNctGqaZ/h6QuWJ4w3q0LIJ8nK8HT+15wRITJLw4pt8thBiqBBCyWw9FcA8IURvAPPk576gHgAaDQaT7dkN8rJEyq2pGLmIfGhK+d74EiDP8xoZxjl+uIMmAHhZfvwygEt9aEOXYd2iJx0EJN0KBDlGvFeSD+wUjJjxftg87XeSYVINt0ZAAPiYiBYT0S3ytXZCiEoAkP/qrqAR0S1EVE5E5VVVVc4a1yj4wZ1b4fErhpjed8mQjo7ac0IiBtOTRnbD1af6E8LBLWsfGouZU0ZFnk8d11e33MRhnaKe52XHfjXvv0jKIT2kSys8drm+T76kuXO3ys/O7R339fYtC9CxZQF+o8llHY/BnRvXpMYO7IDmBTn44YhujmVkGK9xGzbidCHELiIqATCXiNZavVEI8SyAZwGgrKzM9Xhd0bW52dFaV2+r39iB7TFr+S63TVoiEfOA304YiFBYYMaiHZ7Wa9WAGZW7b3w/FGjCPEwa2Q2Pfhj7NXngomjFmpVF6FVSiI17j0WuKbFrZk453bB9N776stLWkcd6eQnyc7Ixf9q5jutv37IAK6ePcXw/w/iBq5mAEGKX/HcvgHcBDAewh4g6AID8d69bIY2woqQyJXxQUJxOqeweS13JGMY/HBsBImpGRM2VxwAuALAKwCwAk+VikwHMdCukNYF8KeoenxvrXtzMvJBDEqmwU9k4pAoXDe6AHm39+7yZzMSNO6gdgHflHSQ5AP4jhPiIiBYBeIOIbgKwHcAV7sXUx8ooP9kzgSyfFwU+/cVZAFJzF5KtPMEu5qTe5Ri2di1Z/O3aYckWgUlDHBsBIcRmADGrsEKI/QCcO07TDN8DX6aSltJgJ3ia38aSYRh9An1iWI0yGtSO/JMdAyZRSjoVjYEdkbJSQHx1Hyb7e8MwiSJtjIARRmkKE0UK6uaEYeetu5kJ+BpPiNcqmDQnbYxAqirbFBUrIaTi7IRhmGjSxggoaKfxyZ7UZ4IeNE4AY72OVFsTSNSGgq6tpfSVZ/Vpm5gGGUZD2hgBIxWS7N1BVkfDD1060GdJHGAg+uw7Rum/4IJUWBPQw2/b1L24GRbdex5uGtXd34YYxoC0TjRvTCL3v1ujbWG+r3J4SYsCa5FR3a4J6MXfTxSJbLlt8+B89kz6kTYzAWP0fs6J+4lntF/czjmBDO4mhkkmaWMEFGUbs0U02e6g5DbvDoO+sxxTyMa9bowlGxCGcU7aGAGFc/qWoEPLAmRnEX5xwUnJFiflFNTYAe2tF7YcQE6/oNeJV7zg4UsHYvzgDqblkumKYphEkjZrAooaatU0DwtUkR71fspWR51/uXoofjZjmXvhLHBevxIUNc3Fwep6X9sZO7A9Kg5VY9XOI6ZltRFZFaz232UndzIvBGuL4p2LvMkQ98MR3WyFcs5odx6TEaTeUC0BWP1ZTxhqTYl5QU52Fu46v4/v7SRq22bb5vnI1ckJoMd1FpTypXE+Cz7QxTDOSXsjkOxpfZAVVLYP+zad9keit5CyM4jJFNLGCNjJMcxTfGt0SHLy86jPLsGfWWG+5Cltx9s3mTQn0GsCToN8sQmIz2e/HI3F2w5i/KAOeO3b2GxlXvbfBz+1dvAs3kzAD/tQ1q0IT1w5BGMH2lhIZ5gAEmgjoMbIzZDsAHJBpHtxM1+T1ajpVVJoqVyiw0oQESYO65zQNhkmGQTaHWTFv6zvDvJelqCQsNDWhu17Wx/DMO4ItBGIIkW1RKoZnBQTx3L/ZMXxB6Xae2KYIBFoI2BlTUBvd1CQd+x4QRDff6oZU4ZJFwJtBByTwQqFyPusWXa2bzrt+pxUDTPKMAEnbYyA2Ujx9xMHNZa1Ue8d5/RyJpADahvCvrfhxyxgYMeWju+1Ks91I0qN63A5TZg55XT8aoy3IUZe+9EI/Obi/p7WyTB+EGgjYGlhWB70dmrVJPJD79TKegiCm0b1cCSbE3q2tbZTxg1KEhMvycqimF0+Xh+2apKX7XGNjQzp0gpTzvbW2I/s2QY3nM45ApjUJ9BGQO3WMDMHRMBPzuqJL351Nnq3a269kQR6Ic7uW+Jr6Ijz+7fDoM7OR+3xcHoyO+4gXq7y3dtOc1Q3wzDmBNoIWEFtKLKyCF3beD8S9pJuPspXKtft1iVkxftivEXUftstmsRPYsOrBQzjnPQ3ArINcKz40iiIjJ9nBPzsJo7qzDD+EWgjoFbsZgqOtxim5og5FWVimEwi0EbA2jkB/9sIDLLG9eU9+dhNZgacDTzDOCfQRkCNkR5QFB7ridQ4JKaVwIqLit1BDOMfaWMEjBjVqxgA0NHCttAXrz815ppbBaTVcXPuOAMzbhkRde2sPm1t1fn2T0a6k8kHY+CHng7Lne9HXgOGYSTS3gjcNroX5k89B6UWomKO7NnG8/a1Crd/xxYYrNmm+c/rTrFVZ4eWzlItxht0r5h+gaM6/aQhLBsB0/UeNhIM45S0MQJGeiAriyzNAozqcDrCLYmTjERrGApy7R2E8iMSZ4uC+NswzXB8TiBundLfrLT5ljJM6uHbz4uIxhLROiLaSERT/WrHS7x0k6SiCyMVBsx2ZAjJM4FE5xJgmEzCFyNARNkA/g5gHID+AK4hIl8DqXihwPX0ttMRbjwjEHa50OD0vXpl5PTqcfqO4un3kNxPHDyOYfzDr5nAcAAbhRCbhRB1AGYAmOB1I16PtokI5/Uriblmhbyc6K588JIB6Nq6KXq0jV2LUBuBNs3yDOscfZL+gnF+ThamjeuLc/uW6L5uhBJ/pyhOm1bQ65L2LaLzEbdq6s69BEjvE4ifS0BNXjb7jRjGLn6ll+wEQJ2ctgLA99QFiOgWALcAQNeuXR01UtatNU7u2gqdi5qiINeeAnjphlPx0vytyMnKQn5OFnq2bYbsLMLzk0/FW4sr0LGVpNRaN8vDr8achKXbDyI/Jxu1DSEUNc3DhYM6YN7aPaiuDaFNYR5uHNUdP399GepDAt/r3hrn9muHc/u1i7T13tKdGD+4IwCgeUEu7h57EtbtPorrRnSLkmvswPa45cweuP2cXsgiwpRXl6BZfjZq6sM4VtOAU7sXoVXTXNx6Vk/celbPqHt/PbYvZi3fhSySUkTeeV5v9CppjoPH6/DE3PW4ZrjUz/de2A8AcLSmHrX1YVxZJqVRfPjSgTFG6aEJA/DR6t2YNq4fWhTk4v0Vu3TXOx66dCCmvr0Cx2obkJOVhecml+n2OxFh0shueGXBNkwe2S2ukf33Td/D7JWVKC40T/Z+3/h+ONPmLiuGYQBy6u6IWynRFQDGCCFulp9fB2C4EOKneuXLyspEeXm553IwDMOkM0S0WAihP+KyiF/z5woAXVTPOwPY5VNbDMMwjEP8MgKLAPQmou5ElAfgagCzfGqLYRiGcYgvawJCiAYiuh3AfwFkA3hBCLHaj7YYhmEY5/i1MAwhxBwAc/yqn2EYhnEP76ljGIbJYNgIMAzDZDBsBBiGYTIYNgIMwzAZjC+HxWwLQVQFYJvD24sB7PNQHK9h+ZyTyrIBLJ8bUlk2IDjydRNCuDoqnxJGwA1EVO72xJyfsHzOSWXZAJbPDaksG5BZ8rE7iGEYJoNhI8AwDJPBpIMReDbZApjA8jknlWUDWD43pLJsQAbJF/g1AYZhGMY56TATYBiGYRzCRoBhGCaDCbQRSIVk9kS0lYhWEtEyIiqXr7UmorlEtEH+WyRfJyJ6SpZ3BREN80GeF4hoLxGtUl2zLQ8RTZbLbyCiyT7LN52Idsp9uIyILlS9Nk2Wbx0RjVFd9/yzJ6IuRPQZEa0hotVE9DP5ekr0Xxz5kt5/RFRARN8S0XJZtgfl692J6Bu5H16XQ8uDiPLl5xvl10vNZPZJvpeIaIuq74bK15Px28gmoqVE9IH8PDF9J4QI5D9IIao3AegBIA/AcgD9kyDHVgDFmmt/BDBVfjwVwB/kxxcC+BAAARgB4Bsf5DkTwDAAq5zKA6A1gM3y3yL5cZGP8k0H8Eudsv3lzzUfQHf5887267MH0AHAMPlxcwDrZRlSov/iyJf0/pP7oFB+nAvgG7lP3gBwtXz9HwB+Ij++DcA/5MdXA3g9nswe9J2RfC8BuFynfDJ+G3cB+A+AD+TnCem7IM8EEpLM3iETALwsP34ZwKWq668IiYUAWhFRBy8bFkJ8AeCAS3nGAJgrhDgghDgIYC6AsT7KZ8QEADOEELVCiC0ANkL63H357IUQlUKIJfLjowDWQMqXnRL9F0c+IxLWf3IfHJOf5sr/BIBzALwlX9f2ndKnbwE4l4gojsyuiCOfEQn9bImoM4DxAJ6XnxMS1HdBNgJ6yezj/SD8QgD4mIgWE9Et8rV2QohKQPrhAiiRrydLZrvyJEPO2+Vp9wuKuyWZ8slT7JMhjRhTrv808gEp0H+yO2MZgL2QlOMmAIeEEA067URkkH3fczYAAAKdSURBVF8/DKCNX7LpySeEUPruEbnvniSifK18Gjn8ku/PAO4GEJaft0GC+i7IRoB0riVjv+vpQohhAMYBmEJEZ8YpmyoyKxjJk2g5nwHQE8BQAJUA/iRfT4p8RFQI4G0AdwohjsQraiBHouVLif4TQoSEEEMh5RQfDqBfnHYS3nda+YhoIIBpAPoCOBWSi+fXiZaPiC4CsFcIsVh9OU47nsoWZCOQEsnshRC75L97AbwL6cu/R3HzyH/3ysWTJbNdeRIqpxBij/wDDQN4Do1T2ITLR0S5kBTsq0KId+TLKdN/evKlUv/J8hwC8DkkX3orIlIyGKrbicggv94SkpvQ9++eSr6xsotNCCFqAbyI5PTd6QAuIaKtkFxz50CaGSSm77xY0EjGP0ipMTdDWgBRFrcGJFiGZgCaqx7Ph+QffAzRC4l/lB+PR/Ri07c+yVWK6IVXW/JAGhFtgbTwVSQ/bu2jfB1Uj38Oya8JAAMQvdC1GdKipi+fvdwPrwD4s+Z6SvRfHPmS3n8A2gJoJT9uAuBLABcBeBPRi5u3yY+nIHpx8414MnvQd0bydVD17Z8BPJrk38ZoNC4MJ6TvPFdAifwHaQV/PSTf471JaL+H3OnLAaxWZIDkn5sHYIP8t7Xqi/Z3Wd6VAMp8kOk1SC6Bekgjg5ucyAPgRkgLSxsB3OCzfP8nt78CwCxEK7V7ZfnWARjn52cPYBSk6fMKAMvkfxemSv/FkS/p/QdgMIClsgyrADyg+o18K/fDmwDy5esF8vON8us9zGT2Sb5P5b5bBeDfaNxBlPDfhlz3aDQagYT0HYeNYBiGyWCCvCbAMAzDuISNAMMwTAbDRoBhGCaDYSPAMAyTwbARYBiGyWDYCDAMw2QwbAQYhmEymP8HDAx1VGXH8vsAAAAASUVORK5CYII=\n",
36 | "text/plain": [
37 | ""
38 | ]
39 | },
40 | "metadata": {
41 | "needs_background": "light"
42 | },
43 | "output_type": "display_data"
44 | }
45 | ],
46 | "source": [
47 | "fs, data = wavfile.read('boing2.wav')\n",
48 | "plt.plot(data)\n",
49 | "plt.title(\"Original Audio Plot\")\n",
50 | "k = np.asarray(data, dtype = np.int32)"
51 | ]
52 | },
53 | {
54 | "cell_type": "markdown",
55 | "metadata": {},
56 | "source": [
57 | "# Generate Public and Private Key"
58 | ]
59 | },
60 | {
61 | "cell_type": "code",
62 | "execution_count": 5,
63 | "metadata": {},
64 | "outputs": [
65 | {
66 | "name": "stdout",
67 | "output_type": "stream",
68 | "text": [
69 | "Enter first prime number: 53\n",
70 | "Enter second prime number: 59\n",
71 | "n = p1*p2 = 3127\n",
72 | "Enter a small, odd number, co-prime with n: 3\n",
73 | "Enter value of k:2\n",
74 | "phi = 3016\n",
75 | "d= 2011\n",
76 | "Public Key = (3127, 3)\n",
77 | "Private Key = (3127, 2011)\n"
78 | ]
79 | }
80 | ],
81 | "source": [
82 | "p1 = int(input(\"Enter first prime number: \"))\n",
83 | "p2 = int(input(\"Enter second prime number: \"))\n",
84 | "\n",
85 | "n = p1*p2\n",
86 | "print(\"n = p1*p2 = \",n)\n",
87 | "\n",
88 | "e = int(input(\"Enter a small, odd number, co-prime with n: \"))\n",
89 | "k = int(input(\"Enter value of k:\"))\n",
90 | "\n",
91 | "phi = (p1-1)*(p2-1)\n",
92 | "print(\"phi = \",phi)\n",
93 | "\n",
94 | "d = int((k*phi+1)/e)\n",
95 | "\n",
96 | "print(\"d= \",d)\n",
97 | "\n",
98 | "public_key = n,e\n",
99 | "private_key = n,d\n",
100 | "\n",
101 | "print(\"Public Key = \", public_key)\n",
102 | "print(\"Private Key = \",private_key)"
103 | ]
104 | },
105 | {
106 | "cell_type": "markdown",
107 | "metadata": {},
108 | "source": [
109 | "# Encrypt message using public key"
110 | ]
111 | },
112 | {
113 | "cell_type": "code",
114 | "execution_count": 31,
115 | "metadata": {},
116 | "outputs": [
117 | {
118 | "data": {
119 | "text/plain": [
120 | "Text(0.5,1,'Encrypted Audio Plot')"
121 | ]
122 | },
123 | "execution_count": 31,
124 | "metadata": {},
125 | "output_type": "execute_result"
126 | },
127 | {
128 | "data": {
129 | "image/png": "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\n",
130 | "text/plain": [
131 | ""
132 | ]
133 | },
134 | "metadata": {
135 | "needs_background": "light"
136 | },
137 | "output_type": "display_data"
138 | }
139 | ],
140 | "source": [
141 | "encrypted = (k**e)%n\n",
142 | "plt.plot(encrypted)\n",
143 | "plt.title(\"Encrypted Audio Plot\")"
144 | ]
145 | },
146 | {
147 | "cell_type": "markdown",
148 | "metadata": {},
149 | "source": [
150 | "# Write the Encrpyted File into an audio file"
151 | ]
152 | },
153 | {
154 | "cell_type": "code",
155 | "execution_count": 32,
156 | "metadata": {},
157 | "outputs": [
158 | {
159 | "name": "stdout",
160 | "output_type": "stream",
161 | "text": [
162 | "A file titled 'encrypted.wav' is generated which is the encrypted audio to be communicated\n"
163 | ]
164 | }
165 | ],
166 | "source": [
167 | "encrypted = np.asarray(encrypted,dtype=np.int16)\n",
168 | "wavfile.write('encrypted.wav',fs,encrypted)\n",
169 | "print(\"A file titled 'encrypted.wav' is generated which is the encrypted audio to be communicated\")"
170 | ]
171 | },
172 | {
173 | "cell_type": "markdown",
174 | "metadata": {},
175 | "source": [
176 | "# Decryption"
177 | ]
178 | },
179 | {
180 | "cell_type": "code",
181 | "execution_count": 33,
182 | "metadata": {},
183 | "outputs": [
184 | {
185 | "data": {
186 | "image/png": "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\n",
187 | "text/plain": [
188 | ""
189 | ]
190 | },
191 | "metadata": {
192 | "needs_background": "light"
193 | },
194 | "output_type": "display_data"
195 | }
196 | ],
197 | "source": [
198 | "fs, Data = wavfile.read('encrypted.wav')\n",
199 | "plt.plot(Data)\n",
200 | "ke = np.asarray(Data, dtype = np.int32)"
201 | ]
202 | },
203 | {
204 | "cell_type": "code",
205 | "execution_count": 38,
206 | "metadata": {},
207 | "outputs": [
208 | {
209 | "data": {
210 | "text/plain": [
211 | "Text(0.5,1,'Decrypted Audio Plot')"
212 | ]
213 | },
214 | "execution_count": 38,
215 | "metadata": {},
216 | "output_type": "execute_result"
217 | },
218 | {
219 | "data": {
220 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEICAYAAAC55kg0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXmcFMXZx3/P3sByLLDLDcspN4gLgqLiCYgRJV6YiPGIJmISE98YCMZo1MREo8ZETdQokBjvAxQ0Iko8AGG5Qe57OZf73Gum3j+6e7anp3v6npmeeb6fD+xMT3XVMzUzz1P1VNXzkBACDMMwTGaSlWwBGIZhmOTBRoBhGCaDYSPAMAyTwbARYBiGyWDYCDAMw2QwbAQYhmEyGDYCDKOBiKYS0SMJamsEEVWonq8hohF+tsEwatgIMJYgom1EdJqIjhPRESKaT0Q/IqKU+w4RkSCibj63MUJu5z4v6xVC9BFCzHMgzw+IKEREJ4joGBEtJ6IrHNSTMAPIpAYp9wNmUprvCCEaA+gE4DEAvwLwTy8bIIkgfC9vBnBI/psqLBBCFAJoBulzeZOImidZJibFCcKPjUkxhBBHhRAzAVwP4GYi6gsARJRPRE8Q0Q4i2kdEfyeiBsp9RDRWHqEeI6LNRDRKvj6PiB4loq8BnAJwLxEtUbdJRPcS0fvy46ly3XPkmcn/iKiT/NoX8i0r5FHx9fL1K+S2lVlMf1XdZxLRUrmuNwAUxHv/RNQQwDUAJgLoTkRlqtdiXC/yLOoS+XEDWf7DRPQtgMFxyuYT0dNEtFv+9zQR5ceTDQCEEGEALwNoAKCLjvy95D4/IrufrpSv3wHgewDuk/vuA7O2mODDRoBxjBBiEYAKAOfJl/4IoAeAgQC6AWgH4AEAIKIhAKYD+CWkker5ALapqrsJwB0AGgN4BkBnIuqlev37AP6lev49AA8DaAlgOYBXZZnOl18fIIQoFEK8QUSDICnFOwG0APAPADNlJZsH4H257uYA3gLwXZO3/l0AJ+Sy/wUwwaS8mt8C6Cr/G4n4M4kpAIZC6s8BAIYAuN+sASLKAXC7LONGzWu5AD4A8AmAEgA/AfAqEZ0hhHgBUj/+Se6779h4X0xAYSPAuGU3gOZERAB+CODnQohDQojjAH4P4Aa53G0AXhZCzBFChIUQu4QQ61T1TBVCrBFC1AkhqgG8AUnxg4j6ACgF8KGq/CwhxBdy2SkAhhFRBwMZfwjgH0KIb4QQISHENADVkBTsUAC5AJ4WQtQKId4GsNjkPd8M4A0hRAjAfwCMl5WrFa4D8KjcRzshGTwjvgfgd0KI/UKISgAPQTKWRgwloiMA9gIYD+BqIcRRbRkAhQAeE0LUCCE+g9Sv4y3Kz6QZbAQYt7SD5BsvBtAQwBLZzXAEwMfydQDoAGBznHp2ap5PA3CjbFxuAvCmrPBjygshTsgytDWouxMkF9MRlWwd5PJtAewS0ZEUtxsJKRuaCyHPPADMgOQ+GhPnvalpi+j3atiWXFb9+nYYv0cAWCiEaCaEaCmEGCqE+NSofdllpK63nYncTJrCRoBxDBENhqQ8vgJwAMBpAH1kRdRMCNFUXqgEJMXXNU51UeFshRALAdRAcjXdiGhXECApcUWOQkiunN0Gde+ENPpupvrXUAjxGoA9ANrJxkahYxw5b4L0u/mAiPYC2ALJCCguoZOQjKEiWzbqDSHk9tQzlnht7YZkwNRljd6jVXYD6KBZfO8IYJf8mMMKZxhsBBjbEFETefvh6wD+LYRYJY8sXwTwFBGVyOXaEdFI+bZ/AriFiC4moiz5tZ4mTU0H8DcAdUKIrzSvXU5Ew2Wf/sMAvpHdKwCwD9ELoi8C+BERnS3vPmpERGOIqDGABQDqAPyUiHKIaBwk37sREyC5ZQaq/n0XwBgiagFgA4ACuf5cSD589WLumwAmE1EREbWH5JM34jUA9xNRMRG1hLS+8u845a3wDSRDdR8R5ZJ0JuE7kD5LILbvmDSHjQBjhw+I6DikkfUUAE8CuEX1+q8AbAKwkIiOAfgUwBlAZBH5FgBPATgK4H+IHuXq8S8AfRE7CwAkX/xvIbmBzoLkP1d4EMA02fVznRCiHNK6wN8AHJZl/IEsVw2AcfLzw5B2PL2rJwwRDYW0NvGsEGKv6t9Muc7xsg/+LgAvQRpdn4S0eK7wECT3y1ZIi7N6703hEQDlAFYCWAVgqXzNMfL7vRLAaEizt+cATFCtz/wTQG+579530xYTDIiTyjCpiry9dD+AQUKIjarrUwFUCCFMd8owDBMfngkwqcyPASxWGwCGYbwlJ9kCMIweRLQNAAG4KsmiMExaw+4ghmGYDIbdQQzDMBlMSriDWrZsKUpLS5MtBsMwTKBYsmTJASFEsXlJY1LCCJSWlqK8vDzZYjAMwwQKIop34twS7A5iGIbJYNgIMAzDZDBsBBiGYTIYNgIMwzAZDBsBhmGYDIaNAMMwTAbDRoBhGCaDSYlzAsnkjcU7MLx7Mdo1a4BZK/fgnK4tUNQoL/L6zkOnMHX+NjQpyAURkJ1F6FpciFF9W+Pz9fvRtEEuBnUsipR/b1kFTlaHcF73lujUohEAIBQWeHvJTggBjBvUHnk5Wdh24CSW7jiMcYPaR8mzds8xnKqpw1mdmkeuvfrNduw6fBrjBrXHnqOnsaXyJC7t3Qptm0VyuOPAiWr843+b0aQgF1lZhKKGebjx7I5YvvMI/re+Ehf1LMHJmjq0LMzD/uPVWLjlEE5W16F5ozzcOKQj5qzdh7ED22LG8t249qz2UHKsHDxRjcXbDqFpA6lPhnVtoduPS3ccxszlu7H/eBVG9mmNsQP1E1WFwgLPfr4Jh07WoDA/B3df1A0Fudm6ZdfuOYbn5m3G+d1b4toyo8yRDMO4IaONwJFTNfjVO6twfo9i/PG7/TDxP0sxrEsLvHbH0EiZ+95eiQVbDsbcu+ahkbjlFSkV7bbHpMyCtaEwfv7GikgZ5frri3dgynurAQC7j1bhF5f2wM/eWI4VO4/giv5tkZdTPyEb/Zcvo+49eKI6cu/Ha/ZiS+VJAMAzczdiyW8ujdz3+Mfr8UZ5dIbGkX1a4dq/z0dtSOCpTzcY9sPj/10PAPjLpxux68hp5OdkRZT4rVMXY0VFfZpaRS4t456bH3k8e9VejOrbGvk5scr9tUU78OScelmq60KYMqa3bp1KX3ywYjcbAYbxCVN3EBF1IKLPiWgtEa0hop/J1x8kol1EtFz+d7nqnslEtImI1qsyS6UcdWEpeN7qXUdRUyelXN115HRUmeU7j+jeWxsKx1wzisV38ESN6rGUJneFXG9dOLYeNSFVpYoBAICDJ2uiym05cEL33tqQ9QCByns/VlUXubbz8Gmj4nGpM2j3yKlouSuPV+uWYxgmMViZCdQBuFcIsVROx7eEiObIrz0lhHhCXZiIegO4AUAfSEmtPyWiHkKIkJeCJ4qozLMqFAOiRhikZw3HidSqV48TCDqCelC1wds3xav3xTCMv5jOBIQQe4QQS+XHxwGshZRc3IixAF4XQlQLIbZCSrsXL2dr0lDrZrsRtcM2lJxeWcW4GI2YI1htxqm29omQxf5hU8EwycXW7iAiKgVwJqRk1QBwNxGtJKKXiUhZHW0HKQetQgV0jAYR3UFE5URUXllZaVtwLzl0sgZfbTpg6567X1sWc01rSOpCYYx77mt8sTG27pwsSWt/tm4/bnxxIWpDYVuGRYueDfBCwRrNhMyo03GX6TFj+W7LBoNhGO+xbASIqBDAOwDuEUIcA/A8gK4ABgLYA+DPSlGd22N+5UKIF4QQZUKIsuJiV5FQHXHgRDUGP/pp5Pn976+2df+irYdMy+w/Xo2lO45ErSsoHaG4b6a8twrzNx/EkVO1+ImeYbEllbf8d81eHDgR7cO/5/VYGfWwI/cJ1RoEwzCJxZIRIKJcSAbgVSHEuwAghNgnhAgJIcIAXkS9y6cCgHorR3sAu70T2Ru2Hzyle1078nXjZbEyiq6uqx8xz1q1x9O23CaNm7ki9mN7f3nKfZQMw7jAyu4gAvBPAGuFEE+qrrdRFbsagDKUngngBiLKJ6LOALoDWOSdyN7g1M0RD63S1V2sVcpqxspGi8qu5HFZpx/LDJzNlGFSCyu7g84FcBOAVUS0XL72awDjiWggpJn/NgB3AoAQYg0RvQngW0g7iyb6tTNo9qo9uOvVpWhSkIOVD/qzE5X8sBY2sKo04xkchmEYI0yNgBDiK+gPCmfHuedRAI+6kMsSioI8liI+Ze3I25b98GGEnE6jbiFE0g0yw6QjGRs7KBHqJJE2wA/9yEqXYdKfjDUCfmBn5G21rBu/fhpNBBiG8YmMNQJGo1ztriErY+HybYew/3iVTiP65atqQzEnat26brwctG/eL4WgcFOl164oJ/XtPVqF/cd0PheGYSIE2gi4UXzxbt1SGRuHJx7X/H0Bhjw61/LIW+9Mgi+7gxxq4qnztzm+N5UY+oe5GPL7uckWg2FSmkAbAb+IWmh2ZWj0b16643DMNSOdm6zdQWHhzsj6YdQYhvGejDUCVhWcrcVdYW13ULYPC65eHxarC4dTatMpmxSG8YeMNQKJwEiJZulo7FRTciYRrk1JA28Sw2QEbAQ8RKv3jBafs7J0jICB1kyWLg3xvnyGyQgCbQTsqKhQWERFqzTzodfUuRwKGyAEoGMDXKOnsPUS31jFbWTPmjp3UVG1mC1UW/286kJhjlrKMCoCbQTs0Os3H+PCJ+ZZKvvZ2n3ocf9HWL3rqK3RsFUXSLbuTMByM5a56M//c3yvW0U54ol5uGXqYld1WGXJ9sPocf9H+HKjeUjyblM+wtXPfZ0AqRgmGGSMEagJhbHjUP0ZgJhooarnn3y7DwCwUpVb1wl6o1cid4vNicTthOV/GxKTJ0IJ6201J4Tbz5Vh0omMMQJmqBWekg4yJ4s8j/8jROotAuuRaucE4knD21EZxjmBNgJWFPSpmjocOGGezFzt9lFcIXpum3hok73rqaaKw/p5DJyeE6g4fMoXH7cAUi5lJcMw3mMllHSgueKZr7DlwMmY6/EMiFMjcPVz803LfKmTahJwNprdeegUzvvT5/jpRd1s35tK8EieYZJHoGcCVtAzAEDsCNuPHTt2cOJ92SfHxfl680GPpUm9ff5W5OGcCgxjn7Q3AlZRKxDlMJfbEWqqKVI7JHJ0HuR+Ypigk7FGINXOQbEedA4bEYZxTsCNgHNNbkVxJFK5pNpunERaJStNWZmZpJphZ5ggkPYLw5ZRKRCjdQS7uHGpDHjoExyvqsWovq0Ny1zz9wVSO6lmQAJAVW0IBbnZyRaDYZJOwGcC3qE3iEzoTEDz/OjpWoQFMHvV3sQJEUceP+tNhhFbsj02nDfDZCJsBOLgWjX5kG4yUaS7PKn2/hgmWbARMCGj3cwJUpSsjxkmeQTaCHi5EJh8N0VqJZTnA1wMkxkE2gh4ig86z06VqeaeSOzOKG/qsRfmKcU6nGGSREYagc/X7cf8zdYiTrph9qo9lsturvRmR5KXfLByt+s6TlTXmRcKEO8tq8DqXRyFlEkfMnKLqNU4927Hig998K3lsj/69xKXrXmLAFAbcj9a/sPstXj06n4mbbk9mZ24Uf3P31gBANj22JiEtckwfhLomUBGL9oGhKOnaz2px1LsIBtfiFRzvzFMsgi0EdBj+8GT+Hz9ftv3sY84Gq9G15ZSXHLXM0zSSDsjcMHj83DLK/bTGuq5PgiZq5/i2YD/e2sFjldZG+HXWXQpvVm+E+8v22X4+uJth0zreG+p8f2pzJ8/WY+lO/jwGpMc0s4IZCKJdm28vaQCL3+1zVJZKy4aAeC+t1finjeWG5aZ8PIi4/vl97/7aJUlmZQ2U4W/frYJ4yzkomAYPzA1AkTUgYg+J6K1RLSGiH4mX29ORHOIaKP8t0i+TkT0DBFtIqKVRDTI7zfBJB6r7jP2vTNMamNlJlAH4F4hRC8AQwFMJKLeACYBmCuE6A5grvwcAEYD6C7/uwPA855LLUMcNtI3zJS3l8qdDQXDJA9TIyCE2COEWCo/Pg5gLYB2AMYCmCYXmwbgKvnxWADThcRCAM2IqI3nkjNJJeh622zhe3PlCVzw+OeW8lPr8cWGSox55ktrC+MMk0RsrQkQUSmAMwF8A6CVEGIPIBkKACVysXYAdqpuq5Cvaeu6g4jKiai8srLSvuSMr5i6eywO373KFZBoXvxiC7YfPIU53+5zdP+v3lmJNbuPofK4MyPCMInCshEgokIA7wC4RwhxLF5RnWsxv3IhxAtCiDIhRFlxcbFVMRIKu5uMcaq2g+L6CYqcDOMWS0aAiHIhGYBXhRDvypf3KW4e+a+yOb8CQAfV7e0BuI8/kASClKzFa1m9WhOwYkZTsZuV2YnbYUAKvjWGicLK7iAC8E8Aa4UQT6pemgngZvnxzQBmqK5PkHcJDQVwVHEbeQ2P0/3DTHlZ3h3kXpSUaINh0hUrsYPOBXATgFVEpGzk/jWAxwC8SUS3AdgB4Fr5tdkALgewCcApALd4KnECYXeQMZ7uDvKuqpRrk79BTKpjagSEEF/B+Lt8sU55AWCiS7mYJGPmXnK8JhCQcbvy9t2OA4LxbplMJuNODP/iTeNTqVpO1QQjDLI/SWVMXrfYqBACdSbbJNUGZ+5aZ7txtOw6ctqTeqww8dWleGrOBk/rDIUFwmHnn2xdKJy0Na3pC7bhhhcWJKVtxj6BNgJORmnv2ogv88CMNThyypsomL6ShB+71RH95+sr0W3KRzhpMa/A/e+vti+Ljijx4hBJN9luxpBZq/bgL3M3Rl3bI4eweH3RDkd1dv31bNw+vdzRvadrQug25SM89elG88I+8MCMNVi4xTzWE5MaBNoIMP5haldsKtF4IaXVbaWKD10RiVxKNGO5841xn62zHw0XQCS432sODRCTWbARYAzwZ3ZhuvXUl1aTRzLXQFJx6y2TeqS1EXh0lvXMXkw0lzz5haf1Xfm3rw1fu+vVpZ61882Wg5bKqZXz4m2HUDppFkonzfJMDgW3Mwk12w6cROmkWVho8T0yjBXS2gi8+OXWZIvAyMSLwbPKw5y97ztwv+itH4h6f1DKsEBW/qbrHQxjg0AbAd7GzwD6Lhc7O2P0Snp3YjgJPhn+XTA2CLQRYIKHmUp0r7/S3xHOvn7GS9gIMI5IJz0UlIFzUORkgkXaGoFVFd75mZngYScAnm7RyIlh66r3dE3IthzpjJvDbkziCLQRiLfz4vbp9pPNM8EkVRTtk3PWJ1uElGLeBmfnHJjEEmgjEI99xzInmUdSArA51bwJ0tjJ2DRwojoxM4GgxF+qquWsakEgrYzAXvmoPuM/X2w44Eu9XkVudZsPQW+HqLl7I/b1RMYwiiVangWbD2L7wZNR1+pCYbyzpIJdNxlMWhmB7/ztq2SLkBSS4Q5Zv+94wtvckIQ21by9tCKp7VvFyE06/sWFuODxeVHXps7fhnvfWoE3y3fq3sOkP2llBDI1n2umnJc4XmUehE4xiH7YxYMnajyv045bzY/PuVI+xHfolB/vzfMqGR8IthHIEOWXTrjRC16GRjYPlS0fFlN9x4Lii7eDMmvI5LWLTCfYRoABkDm20EilJErVBG1ka0VeP2eRQeuvTIWNAOOY6roQrvvHAizZftjyPX/9bFPc13cdOY1agyQ0IXnx8p0lFfjFG/GTA5kpoHteX6Z7feuBk7rXpTpZqzHpBxsBxjGb9p/Aoq2HMOmdlZ7Wu+PQKd3rYVkJ3/vWCrzrMojaSZ2DXQDw18+kRCyR3UFqd5DLHUfJvCcZBETMjIeNAOOYsE/bwN9eUqF7+vb+91ajqrb++gcr5IihKq24bMcRAPbcHFFKVaO51DttzHZROlHONSapN9XsPWpt44Ne33nBe8sqIglrmPQh0EYgU3zhpiRpe1DIpyHp8/M243cfxuaC2HLgJC58Yl7k+U9ei3XpKFtX1aIt2W491WE4znsyW+h0shCqzDys8NSnG+R24vObGVKKzoMnzXf8KN8cM1fX6l1H8fM3VmDSu6tM61Rg91kwCLQRYGSS9GPz80deeVz/4N8eBwcCT+qc5DVCeUd6b82Pt3vguP2tmWYHu/bb2CptdfxwSp5d7D+WnAOZD85cgzHPfJmUttOdnGQLwASXVB7nOd2eqD1nEL0mkBrvuNbECDiZF1p9a8nqgqnztyWn4QyAZwJpQHVdGF9u9CeMQzz8VAhW6/Y73MHbS+pPCZu15EQUM2NVXRc7i6kzWUew4x10m/7ypS+3YKfBQj4TDAJtBLyKMxN01u1NVjiF5I+M6yxoXjtSasuqjWu89QLAn50+ry7cEXPN7D0n6mdx6GQNHpm1Ft//5ze6r6fIxIkxIdBGgEkufg7CrVYtDMbSUfkC7KSalMvq3ZMMpVZdZ38LlpPRvWnGN4otpxjFExbCeTCpCxsBxjH+uoOsVe61DPF3B3mPkzrN3rMtd5Ci3F28OR7wBxs2AoxjzNwjicCKCHakjHf2wdQd5IM6NJjnxL3HzjzAjefI7F6OHRQM2AgwjrlJ9gVv3H/CUvkPV+62XLdV9REWIsYQrNt7zHI7evUZtm8/nUAUn63bh9JJs3BItX/fCzsaDguUTpqFacoOGhtTgZe+2irJYSL8FxsqAQAHT8RuP02VXVOMM0yNABG9TET7iWi16tqDRLSLiJbL/y5XvTaZiDYR0XoiGumX4AAfFks2tSF7P/5nP9/suQx6Esxeuce8kI36rFZj9vqLX0gKd90e60bKynmFKnkH0e9nrzW8yUhRn7J4uvhl2VhsO1i/E0jZmGEY2I9tQyCwMhOYCmCUzvWnhBAD5X+zAYCIegO4AUAf+Z7niCjbK2GZYGNnO6flLaIGBe3pn/rS8Ua1ZiNer0bEduupltM45mRJSlmvm92Kpldn/Wljd3UzycXUCAghvgBg9dz9WACvCyGqhRBbAWwCMMSFfEwaYSfMhNX1Bt2Rcsxz6+1Gtl+qblGMl9nMx9E5AdUbOF0TgtC4t3R3KWmeKzOB7CxlZG5+T6wcsXKpzyOcro2dMZh5ndg4BAM3awJ3E9FK2V1UJF9rB0Cdp65CvsYwkVDQVrB6+M3rrZzz1lfGXOvy69moDYVNT63OXGFxzcNAeQ56eA4e/nBtlMLWey+frdsf9VxJ6K4YAb3F7fmb4/entpl/LdyOblM+QuXxauw5qp8nOXK62mKHn64JuVqvYfzBqRF4HkBXAAMB7AHwZ/m63tdb9xtCRHcQUTkRlVdWxv7wmPSjzoewo3r6JyyE58NQoxwHdjCbkZyuDeHlr7fadwfFzARiWbTVZDKvaXPmcsmgbT1wEhWHDYyAiVza13/6+jKMevpLnKrhcwWphCMjIITYJ4QICSHCAF5EvcunAkAHVdH2AHSHR0KIF4QQZUKIsuLiYidipGRcF8aYkM2FZCtYcRs5OsnrOPaQMJid1Lt51Ie53C42A7EzAb32s0x8N9o7GuRJS3mna0OoM/jcIgfrLMgIAOXbDkXJ64QN+47jpS+34PVFsSepGWc4MgJE1Eb19GoAys6hmQBuIKJ8IuoMoDuARe5EtMbVz81PRDOMC6yEeLCLXo3PzYvehfTUpxtQOmmWrXpnr9ob9VxP9FFPf4G7/7M06toPp5fj5lcWx5TtPHk2vpFH4+NfXBiRx8znb2TAakNhlE6ahekLtqFa9tdnK7t1VPeUTpqFZTsORwyEEdqMb3nZkmrYduBkTM6D0kmzovI6GFkB7XvLzpLqrAuFcbomFLVV1irVtWE8MmutrZDWTHxMo4gS0WsARgBoSUQVAH4LYAQRDYT08W8DcCcACCHWENGbAL4FUAdgohDCnwwXGpbvPJKIZhgX+BFmIiyMAkfUs3qX5IfWKiUhBIjI0kwhLASysyhqXWPd3uMxcZs+Xbtfe6ttrMhz9LSU3OXJORvw7I2DpPtUsqp5a0kF2jVrYEuGkiYFsiwCp6pj3TeHT9UgN9veGFLZvVQbFrjq2a+xft9xvDShDMO6tkCjfGsBjfkAmveY9rwQYrzO5X/GKf8ogEfdCMWkJwd0Dhq5xY6rRztD2HbwVFSSmrjthIEGudk4ISvEWdqzCPHutemPUuc5NlJ63+6WDNuRU7V44pP1AIwPup2oqouaCVTXhTD5nVWGSnzHwVN4TXa31IaE7lmCupBATpYio/TZvvDFFtw38gyV7NHkZEsy1NSFI8l/bp9ejisHtMUz488EAHz67T7cPr0c94/phdvP6xLTLnt9vSfQ+QTchsFlgo8dpfD4f9dHPR/33NeW7w0JETULmKhxA8Uj3olqPfG/91J9VE6j2dOEl+u9rEpKTaPdOtV1IZQ0zo88n7Fsd9wczbdOq3dn1YWFbgrMUDh6Bvab91fjo9V7MaxLC8N6lZlAjSYo3nZVKOrbp5cDAB6ZtVbfCBjWzjiFw0YwgUYvbARgTVno7X2P147TWEnxbtN7rVoll51ZROSIQ8ye/+jnZuc11P7+sBC6azki8p8koxLtNF4fKbORmBwJDqK8Mt7BRoAJNIlSCeGwvrGxgl0/trq0HcNjtFtHIPqMhskacazR0JkJ1IXC5u9KU0BxP2lnAnZ6h02A97ARYAKNUSgKS4u9NnYqhoU/UVPNarSzmK6M8PXkVF+yk4wpHNafCaivCRjtcoq+pl4TcApPBLyHjQCTsdgNY2GnvBo3isuO4VEMop47SC276ZkBVVntWkjkumpmZCSi9rqyRbTa1cG7+P2xYucRlE6ahc/X748cSjt4ohrHqmpdtJneBNoIcHZJxs3o3E4Yi5ALd1A8zIPS2alL/qvjEFK/V7OdnVHuqDgzAaUdAWFpdmG0MGwHs/745FvpfMctryzGOPns0FmPfIr+D34St92ZK3Zjw75kpWlNLoE2AgyTKPdAIt0QasNgK/Jq5H5tfdF1ms8E6h/Xho1mAmHdPok6xa95zcgI2DJ0Zq+rCmjPcDw5Z0PkcTgs8PCH36Li8CnU1IXx09eW4bZpsYf8MgE2AkygkQ6L+Y9TVxBgf7YS0rhj7LYTYwRgb9aj7tGQ0UwgJKKMjpVdO8qagN28yeq63RjjvapAeKt2HcWHgYTNAAAgAElEQVQ/v9qKn72+PLJbaech/RhJ6Q4bASbQnKiuw/PzYpPVeO0DXr/XuavASAGfqK7TNWDq8kIAH6/eg7lr95m2oxzq0hqdfceqoA7/YzQTEELgy42VUYvRn6zZi5DOCnooXH+S2Eip7z1ahZPVdfh49V4cOVWDtXukPrTrDjILrW0VvT6oqg1ZlmfhloOeBBJMNQJ9WIxhXvpyq+71gw7i0igs2Hww5tqP/r3EcX3fbNGP4Pm3zzaZnjyuC4fxo3/bOJi27zj2HK2KurZm9zGM7lsf+uGbrbHvDwCembsJT326IeratoOnsF2VTaxeLoFfv1cfv0dRsPuO1Z8K/8vcjcjOoig3DADUaM4JCAgs2X4Y+45Fy62gNmpqE6CE/Yiuyxh1PcqspC4kLM1M1uw+ihteWIjbhnfGb67oHbleUxfG059uwE3DOqFNU3uhOVKFQBsBXhdmjpzWH/F/vclaPgI9tEHh3PKokvZRw5vlO3WvN8jNRm1IUtpvLq6w1dZCg5DRC1WGaMM+/RPM8zboxz3afzw23MeElxfpBqWbrAnstkInppf2BPLqXcfw3edjA0C+Wb4T2w+exM8u7hG5pl4jueeN5XjquoGorgujQV42Hvnw20jOZD2EkNYBZq7YjasGtgUA1IbDMTOBmrowsgjIyc5CVW0IedlZOHJK+p4p4ToUFmw5iOfmbcbhU7X4w7h+hm2nMoE2Agxz2iA2vfKjdYJVh0Nedhbyc7JwXCfAmhXyc/S9seqYPnohG+Lx0Sr9mYU6MczibfqG4qiBQd1vMELv3LIRNskhMfRcRgB0cxGsqDiqW1bLfW+vBACUdWoeuXajKqTGjOW7MUPOe/Dry3vqGoC+v/1v5LE6MuyL8gxyS+XJqGRA7yypwL1vrQAAtGlagD1Hq9C5ZSNc3q81AGlG8Py8zfjjx+tw49kdUSgHvlu09WBkVtcovz6jbhYRQkKgqiYUCc+tpUPzhuhaXGjaH35BqXAMu6ysTJSXl9u+b/6mA1FfCoZJJO2LGmDfsSrTtJN5OVmW/c4FuVmu4u13adkIW1QB6BTyc7JsL8gqNGuY68qoNszLtpzQPhP50QVdMWl0T0f3EtESIUSZm/Z5JsAwDhFCP+9wFkWf9LWzENq4IBdVtbHul8YFOTheFT3j6FrcCJsroxW+nqInsr8jR02ti3sBoG+7prqZzbqXFMYNrgcAPVs3jtnqCQAljfN13VRW6NGqMMYldteIrhjZpzXGPhsdVPCxcf10cxdMu3UIbpaD+F1zVnu8vaTebffuXedEHv/63VVYt/c4GufnYNpt+unWW8lhu5NFsI0ALwowFmlZmO95KGujdJl5Oc5H80YuIq0BAIAWhfmWjEBBTratYHlazGY6ZrRolKd7/axORREj0LIwDwdOxC7mP3ndQPRu2yQmKVBBrr5rRY0yA/nTNf3x5cYD+EB2+zx0ZV+Mf3EhgHqDcGbHIgzo0CymjkGditCtpDDi9lK4oEd9NsSRfVpj7tp9OCzPlgZ1LIq89vE955vKmWyCbQQYxiJGytVdnfqKKC871gi0bVqA3apdO4qCuvCMYnyuSm5vR87c7OhRUF5OVmyETsA0q5gZdtclrLafo5Jf7S9Xu66079GsTjXS2oq0sKt2e+fp9LFRvxOA3Ufq1zU+vuc87NXsvhrQoSlmTByO1xfvwNA4obRTFT4nwGQERsrEjzrzdIxDtqas8kyJp6NgZFj00N6bl63v9092eBVDI6CSv0D1vtWj/ByDGBdW3pKi7ImiF/vzVHUqbjvtzOL24Z0BSBnWrh8spU1/f+K56Nm6CUacUQIAGN1XWiwuaVyAji0a4r5RPXF+D2f50pMJzwSYjMBuKkQ9crIo6vSsUZ16o8ocjcJW9rfnZMWO5q2Sq3PvCZ2dSmZhIvzGyAjkGswECnKzoGxmMjK0Vt6SouyFQMyWrz9+tx8+X1eJY1W12LT/BBoXRKvCiRd2w/3yeYAHruiNX448Aw3zoss8971B5kIEADYCTEbgiRHIdm4EjLwX2hmCHXeQVrkaKUyX3iDXaA1d5Lqq/9QjcfVsyKiPrbiDurcqxK4jp9G4ICfqpG+DvCxcP7gjrh/cEat3HcV7y3ahe4m0RfPcbi3w9aaDaKja5klEMQZAuZ4OBNoIcHpJxiq5HqwJSKP5emVi7A6KbUurMJSn2tF8voUFz4g8mvazDZRS8mcCBopcJZfa+DVQu4MMlL36PfVv3xQrdc4e3Hl+V4wb1B4X9CjGf76RciaPG9Quak9+33ZN0bdd08jzJ68biLV7jtlyywWdQBsBhrFKvgczAe3o08hfrWcEtLrMaE0gz4acWheTdlYRaTvJUwEjRa5G/b7zc+sfG/Wx2lhOu2UIjlfVobAgB4MenhO53qddEzQpyAUANGkg/R1xRkncEXyrJgVJ37KZaNgIMBlBbo57Ragd+RvOBHQUl9FoXKsg1QrQDO29WqNQ37blKn3ByHWj7hK122dQxyJsPXASrZsUoEmBvorq3KJhJCRFXk4WOrZoGFNGMQAAMPnynsjOIlzWu5WTt5DWsBFgMgJvFoaj6zCqU28moI0+qUQK1Y7e7cwEtMrVKFpp8t1BBkZA9bggNytysrowPwerHhwZt85ryzrgfTlkhJX1gZLGBXji2gGWZc4kAr1FNE3WZZgEoN3b7QStD15ZTNSit7irPdR1Ug6joNVfdhT2p5rw0jsOxUb7BIBDNiKqtizUP9ilRi1zgYWZi6E7SPVeC3Kz8a9bh4AIOKu0SL+8irqwwE8v7g5A33Bqd/swxgTaCDCMVdweeAJilc3ADvrKqmG+dQXUvaRx1HO9icCY/m107z2siedjNCK2EzJi8ZRLTMs0bVDvZmlZmI8l98e/x8pi963DO+PsLi2w7uFRuFDeh69HXnYWCvNz0KtNY/zi0h7Y9tgY3TWP0haNTNtkJNgIMBlBroG/3A5aZVPUMFe3XGMLRqBXmyZSHZqQCnozgbJO+sZmsGbEHE95WsXKtsdzurWMPO7fvqnhWkSkTqMXVKd4e7SSjKHRrpyXJpThtR8OxYZHR2P1QyNR0lh/8bZHK2l2po75z8SHjQCTEdhdGH75B7GBGbU+93O6tcQvLu0Rde3O87vo7i556Mo+Uc+fun4Apt4yOGpUDUQbmkVTLsadF3TBD84pjSrzwBW9cX1ZB/z9+2dFXX9m/MCYdh+/pn/k8UsTyvDlfRfGlAGAV34wOBL4rE3TWPmLG+dHHj8yti8+/Mlw/OOms/DEtQNM+7ZzS/ej8kt6t8KwruYhGRQjWmhjNpbppI0RcBsfhUl9WjXJNy9kgJ0FVwBo1jDWN66XWvCSXvW7TabdOgSTL++lW65lYbTsbZo0iIQfUKN8jbOzCCWNCzB5dC8QUdROpE4tGuKP1/RHC02degea1L7xgR2boUPz2F00gBTTXgl8pmcElBE2IM1e+rZripF9WqNhXo5h3444Qwqh0LRBLkp1du/4Ca8XWifQRkD9OdtJpM1kHkZuhvZF1lMCtm0WW1bPE6KXmL1JA42CNlFS2u/zmQbrD2YU5ueqHlsbHesZikY6BkZBGYBpt3Mq/VVYkIOSDNt7HyQCbQSY5DNc5R/2GzcnxI1i8mhdKvVtRfO7sX1iXD+Avg9fmz/gkav64pyu0f2kN3HNy86KCkOs5s/XOdveeG63eheKMmL/4O7h+PAnww3veWxcf4zp3yZqwVfPACoQEV75wWDMuDu6zt+M6Y2nrx+Isk5FkaQp6vUSP4ZtKZAjK3CYGgEiepmI9hPRatW15kQ0h4g2yn+L5OtERM8Q0SYiWklE6RFhiTFkePfEGQHhQm0Y7enXLswaMWFYaZRfXEGtzJVwxVp30PeHdopxV+oZj7O7NI8skCoLxwpGbhwz1Au9ynpDv/bRoRK0NMjLxrM3DopyN5kdYruwZ0mMG6lBXjauOrMdiChigIxSLHoNu4OsY2UmMBXAKM21SQDmCiG6A5grPweA0QC6y//uAPC8N2IyjDsMA7i51BZ6u2nqLCRhUW5T353sQ13xsBJ2I966nDJCbyTPBHprjJxXKAMFjitmHdNPVgjxBQBtbrixAKbJj6cBuEp1fbqQWAigGRHpb3JmGJu4+WEbBZAzOuxkNUKk2r2h3KMXwkCLnsLvXlIY2S3Ur50zJWlng4R6147Z4Sor8YfixQhS1kTO7twck0f3xFPXD/TFdaPUmcL2NOVwuibQSgixBwDkv8o2h3YAdqrKVcjXYiCiO4ionIjKKysr9YqYEmIHIGORBrnZeHFC7LZP9S6gRnnZePK6AfjfL0dYrldvwfPWczub3qenpH40ois6NG+Id358Dn43tq+texUWTL4IPzzPvH0AmH5rfc5bL4KmERHevHOY7mudWjTCOz8+Bw+N7YM7L+iKM1o31i3HJB6vF4b1vp66mloI8YIQokwIUVZc7DAbD9sAxiJCSGkA49GheUOMG9QenVyeNrXi99abCSiuqbM6FVnKoatHSeMCdCnWD2ehxc46g9VZ2JDOzQ1fO6tTke8hmidf3hNFDXPRoSixW1KDjFMjsE9x88h/98vXKwB0UJVrD2C3c/EYph43U3whhO9+YmFjZqoniVcujKBNkC/p5f6ks8JFPVth2QOXJWwBOh1wagRmArhZfnwzgBmq6xPkXUJDARxV3EYM4xY3yi0sRNJDKqtRZgJqxW/VSJmVc7OLyrBNH/pOkXNA+2beV85YxsoW0dcALABwBhFVENFtAB4DcCkRbQRwqfwcAGYD2AJgE4AXAdzli9RMypBCejWCNswCAFxzVgfT3TfqxWC9Ub3ZezVbTG6h2o7qtVJVH3rTin71me3Q2qHP/zsD2qKtzgliL+FF3ORieoRQCDHe4KWLdcoKABPdCsVkNl2LG8WEXgasK4sHr+yD/xt5Bvr+9r+Ra8O7t8SRU9ZDKuvhdnz9i8t6YMp70nEbXYPhQhmqDZ9Wzqeuj40pZJW/jj9T+jt3o+M6jAia2ypd4RPDTMrhVwJvs3qTMSD1RRH6UCmP1tMXNgJMWqKns8zWBNSKTk+NutWDZrrZs4Vhb6phMgQ2Aoxr9KJOusGqLhw/pKOu/x/QV6h+zTAUBnZwt8DplXQj+7T2qKZ6PMjJY4jfnwsTHzYCjGv+csOZntZnVSf8YVw/PKiJ0x8POzMBJ2hzA/iGiZxeHPzSUlUX8rxOnrGkBmljBBrxvuCk4cdAzk6dF/eM3Weut41SuztoaJfog03qe5KxaGl1RKx3EMrv0XT/OAHnmGCTNkZg+m1DzAsxnjHKB5eDAoHwyT3n61zX5/fj+sWWVRXWCyO99DeXYuot/n9nJsshlL2kmyrB/fghHT2vX4/R/ayHAFv90EisevAyH6VhvCTQOdjUgzW/j6Mz0XRobj0ZixPsnPiMF7gMqHfTqA1Dc50Q0n4Mpo3yGOjhpHmjAHjJhFM7BovU+wY5hNNLJge/XEF+uDfshWr23h9kVmOmrY/yOYHUINBGICix2Bn72Pk0rRoM0xO/NtpMFViRMm4J9LxN/f3niUB64damq+//03f7A3A+W7znku7uhLGIkwB3PzinFJ+u3Yfv9I/22V/WuxWGdW1hcBfD1BNoI6CG9xqnD0TkOuKn+v4L5d1Dpt8R0t8ddEmvVtbuTwKlLRvhq19dFHP9BZ3cCalKCnZrRhFod5AangmkDwR7h728+uiN6kmUkso0ZehHtFPGPoE2AurfDC8MJxb1SNlKz185oC0GlxZZrt/pp6lsmfRSoXK+WiadCbQRUI8jCIQHv9M76nWvwxkwznlm/Jl460fnWCpLBMdW4K4RXaU6nN0eIeq75ZUN4FVcJgUJtBFQk2lT6WTjd3/bGX17JYtRPW7qt7fLyXk7QaSnnGe4m8V0mIw/pM3CMJNY/BzUSucEnN8r/fVOo7rZfsxjf2OuGtgOPVs3Qa82TZItSkaTNjMBJn1wvzfImTtIfY/dNQ8vyLS1ByJiA5ACpLURyKyfVHphZyTvlfJM9hbQTHMHMakBu4MYV/gxeiVybsCVEbynu4NM6vrqVxfidI33oZYZJhGkzUyAR1He089i+GCv+97onIDfRLuDRMwrRiK1L2qI7q0am9ZvGjvItAaG8Z60MQKM98RTxC0K8wEATRt6n0ilTdMGujMMQ3niHCzzItqpcgSFF3mBJgXsPEg3+BNlDIk3Mv3heZ3RojAP1wxqj2U7D3va7p+u7a+7+4hISgSzcMshS/W8NKEM/dpbT4ZilGO4iccZw87r3tKg/cTPBRrlZeOkRVfWK7cMRg8LMx4mWKSNEdD7ASV7oS+dycnOwnVlHXypu0lBLo5V1eq+9sKEMvR/8BPDe9Uf+SW9W9lqV2/20bpJAVrKsx71q1ZTSep9A0tbNIo8jnU6JZb5ky9GtcXUkReeEZvBjQk+aWME9BB8QtMdSTSiei0TCA1zY5PN+ClmxxaxqRztkOrfQMmYJSg3MpOSpM2aAI/50wv9mZ3fjdY/NBs/OJHFjzoZxi1pYwQY70mmTjKO6BlfKjeTP/3Zhzt062Rlz6QQaWME+IeVXuiGkoY/itpP7NgkXsNikkHaGAE9+EflDuvd58OBMd0toubtePWRc6x7JlNIayNQ1IgXvIKKHxE9nbRp1N5FPa3tlDE+gBb7OsMkg0AbgeggX7E/p5LGBRjUsVkCJYrlr+PPTGr7QWLFA5dh+QOXxi3j51ZgsxAYSjO52YTHxvX3pE3lK9y9hMMpM8nBlREgom1EtIqIlhNRuXytORHNIaKN8l/r6aR8oG0z9ydG3WB1P3kqkuhRatOGuWjWMM/w9YTKE8cb1KZpA+TleDt+as0JkJgk4cU3+UIhxEAhhJLZehKAuUKI7gDmys99QT0ANBoMJtuzG+RliZRbUzFyEfnQlPK98SVAnuc1Moxz/HAHjQUwTX48DcBVPrShy6BO0ZMOApJuBYIcI94ryfu2C0bMeD9snvY7yTCphlsjIAB8QkRLiOgO+VorIcQeAJD/6q6gEdEdRFROROWVlZXOGtco+P7tm+GJaweY3nflgLaO2nNCIgbTE4Z1wg2D/Qnh4JZ1D4/CjInDI88nje6pW27coHZRz/OyY7+av7lCyiE9oEMzPH6Nvk++pLFzt8rPLu4e9/XWTQvQtmkBfqvJZR2P/u3r16RG9W2DxgU5+P7QTo5lZBivcRs24lwhxG4iKgEwh4jWWb1RCPECgBcAoKyszPV4XdG1udnRWldvq9+ovq0xc8Vut01aIhHzgN+N7YtQWOD1xTs9rdeqATMqd/+YXijQhHmYMKwTHvso9mvywBXRijUri9CtpBCb9p+IXFNi18yYeK5h+2589WWlzSOP9fIS5OdkY/7kix3X37ppAVY9ONLx/QzjB65mAkKI3fLf/QDeAzAEwD4iagMA8t/9boU0woqSypTwQUFxOqWyeyx1JWMY/3BsBIioERE1Vh4DuAzAagAzAdwsF7sZwAy3QloTyJei7vG5sc4tG5kXckgiFXYqG4dU4Yr+bdCl2L/Pm8lM3LiDWgF4T95BkgPgP0KIj4loMYA3ieg2ADsAXOteTH2sjPKTPRPI8nlR4LN7LwCQmruQbOUJdjEn9S7HsLVryeJvNw5KtghMGuLYCAghtgCIWYUVQhwE4Nxxmmb4HvgylbSUBjvB0/w2lgzD6BPoE8NqlNGgduSf7BgwiVLSqWgM7IiUlQLiq/sw2d8bhkkUaWMEjDBKU5goUlA3Jww7b93NTMDXeEK8VsGkOWljBFJV2aaoWAkhFWcnDMNEkzZGQEE7jU/2pD4T9KBxAhjrdaTamkCiNhR0bC6lr7ygR3FiGmQYDWljBIxUSLJ3B1kdDT98VV+fJXGAgeizfjpc/wUXpMKagB5+26bOLRth8ZRLcNvwzv42xDAGpHWieWMSuf/dGsWF+b7K4SVNCqxFRnW7JqAXfz9RJLLl4sbB+eyZ9CNtZgLG6P2cE/cTz2i/uJ1zAhncTQyTTNLGCCjKNmaLaLLdQclt3h0GfWc5ppCNe90YSzYgDOOctDECChf1LEGbpgXIziLce9kZyRYn5RTUqD6trRe2HEBOv6DXiVe84JGr+mJM/zam5ZLpimKYRJI2awKKGmrWMA8LVJEe9X7KVkedf7lhIH72+nL3wlngkl4lKGqYi8Onan1tZ1Tf1qg4cgqrdx0zLauNyKpgtf+uPrOdeSFYWxRvX+RNhrjvD+1kK5RzRrvzmIwg9YZqCcDqz3rsQGtKzAtysrPwi0t7+N5OorZtFjfOR65OTgA9brKglK+K81nwgS6GcU7aG4FkT+uDrKCyfdi36bQ/Er2FlJ1BTKaQNkbATo5hnuJbo02Sk59HfXYJ/swK8yVPaSvevsmkOYFeE3Aa5ItNQHw+/78RWLL9MMb0a4PXFsVmK/Oy/z78ibWDZ/FmAn7Yh7JORXjyugEY1dfGQjrDBJBAGwE1Rm6GZAeQCyKdWzbyNVmNmm4lhZbKJTqsBBFh3KD2CW2TYZJBoN1BVvzL+u4g72UJCgkLbW3Yvrf1MQzjjkAbgShSVEukmsFJMXEs909WHH9Qqr0nhgkSgTYCVtYE9HYHBXnHjhcE8f2nmjFlmHQh0EbAMRmsUIi8z5plZ/um067PSdUwowwTcNLGCJiNFP8wrl99WRv1/vSibs4EckB1Xdj3NvyYBfRt29TxvVbluWloqXEdLqcJMyaei1+O9DbEyGs/HIrffqe3p3UyjB8E2ghYWhiWB73tmjWI/NDbNbMeguC24V0cyeaErsXWdsq4QUli4iVZWRSzy8frw1YN8rI9rrGeAR2aYeKF3hr7YV1b4JZzOUcAk/oE2gio3Rpm5oAI+PEFXfHFLy9E91aNrTeSQC/EhT1LfA0dcWnvVujX3vmoPR5OT2bHHcTLVb531zmO6mYYxpxAGwErqA1FVhahYwvvR8Je0slH+Urlut26hKx4X4y3iNpvu0mD+ElseLWAYZyT/kZAtgGOFV8aBZHx84yAn93EUZ0Zxj8CbQTUit1MwfEWw9QcMaeiTAyTSQTaCFg7J+B/G4FB1ri+vCcfu8nMgLOBZxjnBNoIqDHSA4rCYz2RGofEtBJYcVGxO4hh/CNtjIARw7u1BAC0tbAt9JUfDI655lYBaXXc7J+eh9fvGBp17YIexbbqfOfHw9zJ5IMx8ENPh+XO9yOvAcMwEmlvBO4a0Q3zJ12EUgtRMYd1beF5+1qF27ttE/TXbNP8x01n2aqzTVNnqRbjDbpXPniZozr9pC4sGwHT9R42EgzjlLQxAkZ6ICuLLM0CjOpwOsItiZOMRGsYCnLtHYTyIxJnk4L42zDNcHxOIG6d0t+stPmWMkzq4dvPi4hGEdF6ItpERJP8asdLvHSTpKILIxUGzHZkCMkzgUTnEmCYTMIXI0BE2QCeBTAaQG8A44nI10AqXihwPb3tdIQbzwiEXS40OH2vXhk5vXqcvqN4+j0k9xMHj2MY//BrJjAEwCYhxBYhRA2A1wGM9boRr0fbRIRLepXEXLNCXk50Vz50ZR90bN4QXYpj1yLURqBFozzDOkecob9gnJ+Thcmje+LiniW6rxuhxN8pitOmFfS6pHWT6HzEzRq6cy8B0vsE4ucSUJOXzX4jhrGLX+kl2wFQJ6etAHC2ugAR3QHgDgDo2LGjo0bKOjXHmR2boX1RQxTk2lMAU28ZjKnztyEnKwv5OVnoWtwI2VmEl24ejLeXVKBtM0mpNW+Uh1+OPAPLdhxGfk42qutCKGqYh8v7tcHcdftwqjqEFoV5uHV4Z/z8jeWoDQmc3bk5Lu7VChf3ahVp6/1luzCmf1sAQOOCXNw36gys33scNw3tFCXXqL6tccf5XXD3Rd2QRYSJry5Fo/xsVNWGcaKqDoM7F6FZw1zceUFX3HlB16h7fzWqJ2au2I0sklJE3nNJd3QraYzDJ2vw5JwNGD9E6ucpl/cCAByvqkV1bRjXlUlpFB+5qm+MUXp4bB98vGYvJo/uhSYFufhg5W7d9Y6Hr+qLSe+sxInqOuRkZeHFm8t0+52IMGFYJ0xfsB03D+sU18j++7azMWvVHrQsNE/2fv+YXjjf5i4rhmEAcuruiFsp0bUARgohbpef3wRgiBDiJ3rly8rKRHl5uedyMAzDpDNEtEQIoT/isohf8+cKAB1Uz9sD2O1TWwzDMIxD/DICiwF0J6LORJQH4AYAM31qi2EYhnGIL2sCQog6IrobwH8BZAN4WQixxo+2GIZhGOf4tTAMIcRsALP9qp9hGIZxD++pYxiGyWDYCDAMw2QwbAQYhmEyGDYCDMMwGYwvh8VsC0FUCWC7w9tbAjjgoThew/I5J5VlA1g+N6SybEBw5OskhHB1VD4ljIAbiKjc7Yk5P2H5nJPKsgEsnxtSWTYgs+RjdxDDMEwGw0aAYRgmg0kHI/BCsgUwgeVzTirLBrB8bkhl2YAMki/wawIMwzCMc9JhJsAwDMM4hI0AwzBMBhNoI5AKyeyJaBsRrSKi5URULl9rTkRziGij/LdIvk5E9Iws70oiGuSDPC8T0X4iWq26ZlseIrpZLr+RiG72Wb4HiWiX3IfLiehy1WuTZfnWE9FI1XXPP3si6kBEnxPRWiJaQ0Q/k6+nRP/FkS/p/UdEBUS0iIhWyLI9JF/vTETfyP3whhxaHkSULz/fJL9eaiazT/JNJaKtqr4bKF9Pxm8jm4iWEdGH8vPE9J0QIpD/IIWo3gygC4A8ACsA9E6CHNsAtNRc+xOASfLjSQD+KD++HMBHAAjAUADf+CDP+QAGAVjtVB4AzQFskf8WyY+LfJTvQQD/p1O2t/y55gPoLH/e2X599gDaABgkP24MYIMsQ0r0Xxz5kt5/ch8Uyo9zAXwj98mbAG6Qr/8dwI/lx3cB+Lv8+AYAb8ST2YO+M5JvKoBrdMon47fxCwD/AfCh/DwhfRfkmUBCkrAC/1UAAAN+SURBVNk7ZCyAafLjaQCuUl2fLiQWAmhGRG28bFgI8QWAQy7lGQlgjhDikBDiMIA5AEb5KJ8RYwG8LoSoFkJsBbAJ0ufuy2cvhNgjhFgqPz4OYC2kfNkp0X9x5DMiYf0n98EJ+Wmu/E8AuAjA2/J1bd8pffo2gIuJiOLI7Io48hmR0M+WiNoDGAPgJfk5IUF9F2QjoJfMPt4Pwi8EgE+IaAkR3SFfayWE2ANIP1wAJfL1ZMlsV55kyHm3PO1+WXG3JFM+eYp9JqQRY8r1n0Y+IAX6T3ZnLAewH5Jy3AzgiBCiTqediAzy60cBtPBLNj35hBBK3z0q991TRJSvlU8jh1/yPQ3gPgBh+XkLJKjvgmwESOdaMva7niuEGARgNICJRHR+nLKpIrOCkTyJlvN5AF0BDASwB8Cf5etJkY+ICgG8A+AeIcSxeEUN5Ei0fCnRf0KIkBBiIKSc4kMA9IrTTsL7TisfEfUFMBlATwCDIbl4fpVo+YjoCgD7hRBL1JfjtOOpbEE2AimRzF4IsVv+ux/Ae5C+/PsUN4/8d79cPFky25UnoXIKIfbJP9AwgBdRP4VNuHxElAtJwb4qhHhXvpwy/acnXyr1nyzPEQDzIPnSmxGRksFQ3U5EBvn1ppDchL5/91TyjZJdbEIIUQ3gFSSn784FcCURbYPkmrsI0swgMX3nxYJGMv5BSo25BdICiLK41SfBMjQC0Fj1eD4k/+DjiF5I/JP8eAyiF5sW+SRXKaIXXm3JA2lEtBXSwleR/Li5j/K1UT3+OSS/JgD0QfRC1xZIi5q+fPZyP0wH8LTmekr0Xxz5kt5/AIoBNJMfNwDwJYArALyF6MXNu+THExG9uPlmPJk96Dsj+dqo+vZpAI8l+bcxAvULwwnpO88VUCL/QVrB3wDJ9zglCe13kTt9BYA1igyQ/HNzAWyU/zZXfdGeleVdBaDMB5leg+QSqIU0MrjNiTwAboW0sLQJwC0+y/cvuf2VAGYiWqlNkeVbD2C0n589gOGQps8rASyX/12eKv0XR76k9x+A/gCWyTKsBvCA6jeySO6HtwDky9cL5Oeb5Ne7mMnsk3yfyX23GsC/Ub+DKOG/DbnuEag3AgnpOw4bwTAMk8EEeU2AYRiGcQkbAYZhmAyGjQDDMEwGw0aAYRgmg2EjwDAMk8GwEWAYhslg2AgwDMNkMP8Pp03RZLFGUwUAAAAASUVORK5CYII=\n",
221 | "text/plain": [
222 | ""
223 | ]
224 | },
225 | "metadata": {
226 | "needs_background": "light"
227 | },
228 | "output_type": "display_data"
229 | }
230 | ],
231 | "source": [
232 | "decrypted = (encrypted**d)%n\n",
233 | "plt.plot(k)\n",
234 | "plt.title('Decrypted Audio Plot')"
235 | ]
236 | },
237 | {
238 | "cell_type": "markdown",
239 | "metadata": {},
240 | "source": [
241 | "# Write the Decrpyted File into an audio file"
242 | ]
243 | },
244 | {
245 | "cell_type": "code",
246 | "execution_count": 39,
247 | "metadata": {},
248 | "outputs": [
249 | {
250 | "name": "stdout",
251 | "output_type": "stream",
252 | "text": [
253 | "A file titled 'decrypted.wav' is generated which is analog of the audio\n"
254 | ]
255 | }
256 | ],
257 | "source": [
258 | "encrypted = np.asarray(encrypted,dtype=np.int16)\n",
259 | "wavfile.write('decrypted.wav',fs,encrypted)\n",
260 | "print(\"A file titled 'decrypted.wav' is generated which is analog of the audio\")"
261 | ]
262 | },
263 | {
264 | "cell_type": "code",
265 | "execution_count": null,
266 | "metadata": {},
267 | "outputs": [],
268 | "source": []
269 | }
270 | ],
271 | "metadata": {
272 | "kernelspec": {
273 | "display_name": "Python 3",
274 | "language": "python",
275 | "name": "python3"
276 | },
277 | "language_info": {
278 | "codemirror_mode": {
279 | "name": "ipython",
280 | "version": 3
281 | },
282 | "file_extension": ".py",
283 | "mimetype": "text/x-python",
284 | "name": "python",
285 | "nbconvert_exporter": "python",
286 | "pygments_lexer": "ipython3",
287 | "version": "3.7.0"
288 | }
289 | },
290 | "nbformat": 4,
291 | "nbformat_minor": 2
292 | }
293 |
--------------------------------------------------------------------------------
/boing2.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sumitrj/RSA-Audio-Encryption-and-Decryption/f56339a92003829dd567913819a887581a3dd389/boing2.wav
--------------------------------------------------------------------------------
/decrypted.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sumitrj/RSA-Audio-Encryption-and-Decryption/f56339a92003829dd567913819a887581a3dd389/decrypted.wav
--------------------------------------------------------------------------------
/encrypted.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sumitrj/RSA-Audio-Encryption-and-Decryption/f56339a92003829dd567913819a887581a3dd389/encrypted.wav
--------------------------------------------------------------------------------