Skip to main content

Architecture

Discover the architecture of the back-end!

eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1PjyJL9Pr+CmP16rVuV9b5cdTAwMTFcdTAwMWJcdTAwMWKAMW9o84adXHLC+Fx1MDAwMVx1MDAwNr/aNmC4cf/7ZppuLFtcdTAwMGZkkFx1MDAxYblcdTAwMTnPRDdtXHS5LGWePFmVeerffywt/Tl86tX//NfSn/VRtdJq1vqVxz//Qe8/1PuDZreDh2D870H3vl9cdTAwMWSfeTNcdTAwMWP2XHUwMDA2//rnP9uV/l192GtVqnXvoTm4r7RcdTAwMDbD+1qz61W77X82h/X24H/oz71Ku/7fvW67Nux7k1x1MDAwZinUa81ht//yWfVWvV3vXGZcdTAwMDd49f/Ffy8t/Xv8p290/Xp1WOlcXLfq419cdTAwMThcdTAwMWaaXGbQSJh9d6/bXHUwMDE5XHUwMDBmVmttQTphXk9oXHUwMDBlivhxw3pcco82cMj1yVx1MDAxMXrrT7lxdCiqzyfF3upcdTAwMTU7XHUwMDExh5X6oF6ZfGqj2WpcdTAwMWRcdTAwMGWfWi93olK9ue/7xjRcdTAwMTj2u3f102ZteIPH+cz7r7836OJNmPxWv3t/fdOpXHUwMDBmXHUwMDA2U7/T7VWqzeFcdTAwMTO9x9jruy834V9Lk3dG9Iik8IA7ycBcdTAwMTlcdTAwMGLO6tej49+XxjNOcWtcdTAwMTRXRlxiOzOu1W5cdTAwMGKfXHUwMDA0juu/uDO8XG6TkV1VqnfXOLxO7fWcYb/SXHUwMDE59Cp9fF6T81x1MDAxZX98Y2u0Z502nDsm8ONeT7ipN69vhniGYtazQlx1MDAxYilcdTAwMTiepqVcdTAwMTWTwdTHXHUwMDBmXHUwMDA1uGTMWakmXHUwMDBmlYbQ26yN7eP/Jo+ij5a1Sb/SuW+1/HezU/txN3/a0cSSxI93/jP5jnT+2qxcdTAwMDX6rXDKXHUwMDEyh/XR5Iv77KbwcNReWzPXW993i2blyVx1MDAxY1a2XHUwMDBmb/58Pe8//1xiv+zLL++3hvvVUqXT3FhtlkbPh7ykSuvTn/Lz8yv9fvfRd91cdTAwMWY/TW7Lfa9WeTFvbpjR2nErnZtYRKvZuZu9Z61u9W7iXHUwMDExf/hcdTAwMDZcdTAwMWPwxKnv73NCKU2UXHUwMDEzclx1MDAwYlxcc2OYSOyF4Xcz516ohfY0XHUwMDE4Y61cdTAwMTJcdTAwMDBWu2kvVJCeXHUwMDE3/ldF1WyjXHUwMDEx9EDHPGZcdTAwMWNcIlx1MDAwMX6URS+SQVx1MDAxN1x1MDAwNDXrclx1MDAxY0cuLT4g9nGXmzpcdTAwMTDwrTTNdDKqbmd42HymXHUwMDA3XHUwMDAybOrdUqXdbD1NPdCx/eJcdTAwMWRcXMGbWljr+FxmgI4st5rXZM1/VnHE9f6UoVx1MDAwZptcdTAwMTi8Xk9cdTAwMTh2e5OjVfysSrNT728miSHdfvO62am0jlwih4Jfvr7x83lxz/fEriqDOlx1MDAxZFx1MDAxZLtVrKPGhkxh9Oy7P71VOomWY9jkM99y1o3yxk7rfGNX3FxcnV7sPYptXVtcdTAwMTaf66zyzYhphWeV0lxundVcdOFcdTAwMGJVY3Nx4DF8XHUwMDFmlMaTlIOZYU38XHUwMDEwXHUwMDFhri5lvK9eQVx1MDAwM66ugr5cblx1MDAxOJfBWqaVMEZbMcGLV1+VYD3JXHUwMDA1XHUwMDE3XHUwMDE4N61zXHUwMDE4XHUwMDFiZ31X4jg1SL5Y0bJSObtcdTAwMWbJU1k+u7Xt/e2jh+9PK7U5o1x1MDAxYdNcdTAwMWH8XHUwMDFlk0VUXHUwMDEzPNJPjFx1MDAxNk4o8D21t/wk/Evn20+EZp5izlxiJzUzxvBcdTAwMTk/MSn6SWRMXHUwMDEznsOYxiQ30jKpQ/wkXHUwMDE407TAU1x1MDAxNTD5cb/4QEib00Y/XHUwMDE20iq93tL4S2ZcdTAwMTHT3lx1MDAwMPnZmFx1MDAxNjKWzINcdTAwMWFcdTAwMDcx++4rXHUwMDA1lUZcdTAwMDPjTk/u2lveent8rdldZVS77125LnQ29+vXe3mnoIJLz3ImkYNqLZHTTbkrKExcdTAwMDRcdTAwMTmGPGNcdTAwMDQ6XHUwMDE0xp1oXHUwMDBlWqf/3uev3CpPXHUwMDE4K0FcdC2k5r70/NVhNSaKXHUwMDEyNJNCO4ZUOZBcdTAwMDZy0FxuM0HQXHUwMDEznrxcYoHtodY4smdcdTAwMTenbXG7cdqXx5f3Vt0nTVx1MDAwMy+vr0v9PdHvs2G7z1ZcdTAwMGL9R7haS5ZcdTAwMDbGXvf5jNfFud26rH+/3l51XHUwMDBmjYe9aiGF6zbu9trqdv2ssm7PXHUwMDA1394oVu5cdTAwMWZXU7iu2fm+VVx1MDAxZKo7vv9w1Wt/L98sXHUwMDE3T1l66fCvIFx1MDAwZTYyXHUwMDFiXHUwMDA2hkROoG0nz4bDjSrvUGS0J5E5IOiAQTRyk0g8xlwiYylZ5sRqQcmZYc1cdTAwMDVEsVNSXHUwMDFhPI5Yh0ROMlxyITNSIekwk1x1MDAxMlx0tYXPTYd/KXdod2v11uC9xKHdrNX8MXmGO7xcdTAwMTFKZ7nD7FiyJ1x1MDAwZSqS5TvuXHUwMDFjpYnJJ5BV+WzzuVpb7egtUbjt8ue97dXl3DvrLG+YnkHGKO6BRFx1MDAwNo5hXTCQeeZccsI566z/kS5cdTAwMDJv6HeWTWd9VW+Oulx1MDAxYuuNw9FjuVW4/ez4vnl7eyzW2fahXHUwMDE0peXu8/daY7s9/Du+jyHDN7M6m2so5K5SzTPdXHUwMDFk/vTzjlx1MDAxOVZ4yGUwhEtG88cwPYcmtMHIy4RUTlx1MDAxYqWNb4ot7Vx1MDAxOC8tgpdzUoN1c1x1MDAwNHlLs1x0X2h+4KFZf8wqxL9cdTAwMTH1ZkP8zFAyj/BIuqPcVYBcdTAwMDMurE4+331XKbLh1Wj3omR55fauUVx1MDAxY7R65dx7a3yEl1x1MDAwMjwjpOBGMYQu//R/7kI8Qlxyx8xCLtbMQOP+kT/XXHUwMDBmXHUwMDFmXHUwMDFma1ujrjNyUFFnjaRcdTAwMTHzZu/wYv/qglXPeiu367t2c93unaRcdTAwMTCJ61x1MDAwN8d7nfLlSeXyrHh8entcboffO61cdTAwMTSu21lure7ru9HZ1tXuTe26dtWvPD98LiPJXHUwMDBic1x1MDAwMFx1MDAxNr1QjtHSXHUwMDAy8ORQXHUwMDE0blR5h1wiZTztcLROXHSujJleJ5dKeFx1MDAxYVMu7tD9XHUwMDAx0Sg73uCcpzBbIP5cIoBcdFx1MDAxZVx1MDAwMkZB4mBcdTAwMTU4o4z+QsRhUO83Ky38rX5W9OGNkDpLXHUwMDFmQlx1MDAwN5Q9iVx1MDAxMGz23cn6gmBCMZ58mqBXXHUwMDFhqu31ldPByWn3srrb3jjdXr7KvefGk1xiXHUwMDA13HOOOc2AcYtROr9cdTAwMWOC02qm1WnQ/1/IIY72i5e1ldG5Oy0929L35uGuZatJY+fezTdTOWqWXHUwMDFixeL9XHSciqI7371IISZ/oHjtU7jJXHUwMDA3uFRuOEQ0XHUwMDEygVx1MDAxNcJcdTAwMTiwyZEo3KjyjkTWeVI5w4XC3Fx1MDAwZVx1MDAxOcX05IOS4DlcdTAwMGWgXHUwMDAxMztEXG49M7D0OITQ44I7pZmSOrTkNazezoFcdTAwMTDCfqXJh/t+ZstcdTAwMGJvhNJZ8jA9kjRYw1x1MDAwYkyE+ClcdTAwMDdfwUxgmtByTa/kbD9+fTivnmq4p5E4MK2MY1x1MDAxOLKnXHUwMDFjlTPk4DTdXHUwMDAwjlx1MDAxYlx1MDAwMSajpVx1MDAwNeYp5FxuXHUwMDA0i8T3nbEhfkpl8jg+TiV5XGJcdTAwMWNcXPhA44ffYr5imPanJCmyXHUwMDA2eJs1ZOLOg2GlP1xcaXZqzc719MB+9GW8eNmwvFaobarWs7hbXW2Wb/jtbvvJXHUwMDE3Nlx1MDAxMVx1MDAwMKr3g/G9xlx1MDAxMYE2yFx1MDAwMTFcdTAwMTRpmNxrul+VXHUwMDFl2YRHk7VSajRcdTAwMGVcdTAwMDP4RILfvd6pvT2m+IVF35hcbowoo5OcgbSOKc55YFDc41x1MDAxYejx4q2UxnCpXHUwMDAyg2pVXHUwMDA2w9Vuu91cdTAwMWPivf/WbXaGs/d4fDOXXHRcdTAwMGZu6pWAXHUwMDAx4JfyXHUwMDFmm1x1MDAwNY5cdTAwMWVdcZpcdTAwMWVOflqa+NX4XHUwMDFmrz//3z/Cz440eXpcdTAwMDWNfXK9P/x/z4151s2++Yp44IBqXHUwMDA1efKSSbFfWtnbrKrtQeXRbovKVVtcdTAwMWb08o940sMsyHGmkZ1YpaYrXHUwMDFmXHUwMDA0XGLPSONcZlx1MDAxZVx1MDAwNLD8Y8VcdTAwMGbRkFx1MDAxN0S4yVs/e22cUVIym0lcdTAwMTaUXHUwMDAynk2CwfvxbNZcdTAwMDEjjiyUa0ec/THHdZGOi1ZipZYm+YJm/Ip0bv1We1I7q1x1MDAxZIVSafhMXHUwMDExXHUwMDA0aKIqVnDGKUTENPB8iKlQwZTFjzF4z1x1MDAwNVx1MDAwNtGQXHUwMDE2XHUwMDFlblx1MDAxMUE4IL00+KdTXHUwMDEwmN/QUmtJXHUwMDA1lL+xZ3+YXHUwMDE1IClgUlqEQCWUZMhaQkiBo/5cdTAwMTDkXGZcdTAwMThKOU04vY+pxK+PzjBcdTAwMTUhlbHaSIufxyc9UZNBLTQxKcSYOL2Cxp09NVx1MDAxMfhpTsxRsVx1MDAxMb9cdTAwMTCVW4CTXHUwMDFl8i+Ft58jiInpZlx1MDAwZcmlx1x1MDAxY/Xkclx1MDAwNUiQIZslYOZRe69B3ulcdTAwMDDpvyCkXG5BOONpXHSIXHUwMDE2XHUwMDAyXdMp61s0+4lwTFImZjNZXHUwMDA1zjnCJUZcdTAwMTNcdTAwMDRcdTAwMTOJTmapRodxZVxcXCI0SYRo8Us2M4hGTYVSYcbH8Vx1MDAwNrmQ3GuhXHUwMDExLc6k6Vx1MDAxNTTmtFx1MDAxMFxyWGTLXHUwMDBiMFx1MDAwMMGUTp5sxU+M51x1MDAxNtOEJ2megVx0Ibhm09NLimFcdTAwMWGMOZZcdTAwMDSGIcXpXHUwMDBmzVx1MDAwM0evSHlcXFwiQ0ZcdTAwMGLntFwiZVhcYqBcdTAwMDFHcFXWXGLM9/BcdTAwMTT/qtVr5aqUwih/y+HXQbTEaEJgwtDHXHUwMDA0085cdTAwMThMSnzc4WOAXHUwMDE2P408XHUwMDAzaI5mt4AglYGw7LfjaNEmTa+gMadcdTAwMDVoXHUwMDEyYupqldXk4clcdTAwMTEtfskzt4hcdTAwMDZcdTAwMWXHjINaXHUwMDBmJGZcdTAwMDBsevpIOeaNY1xyPlx1MDAxNsxabFYsXHJcdTAwMTGVWUHMXHUwMDAxOaFPQGdC0ThcIq9iXGKqhmGKpHhwnVx1MDAwYjhyNExkvmJcdTAwMTb6Jpy84Fx1MDAwNHjUpiysdcjKndKTXHUwMDEykmnQs1x1MDAwMvGGclQtJcA7Ie5ordXndfewfvPt4GLj6bRQXHUwMDFiPW1cdTAwMDTHhM/VXHUwMDE5hsZcdTAwMDWSuqaMPz/zo6DBJIJRzTVg7qCCz2ORXHUwMDEwL9Lg6Vx1MDAxNTT11PBORONcdTAwMWTjoJE3zyFeXHUwMDE1X4qRU7zDXHUwMDFi63FjMSslnVx1MDAwMcWnXHUwMDE5nHZcbqMtN0hnkV0zyIrBWYtcdC+ztF6FIT00JWXCs9pcblx1MDAxMFTtZYRcdTAwMGWkpPi8jCHbyUSMI+d4l1x1MDAxMFs4IF3HXHUwMDFirVx1MDAxMPJcdTAwMDRwbf3JoFx1MDAwZluUYDRyMFx1MDAxY/3SWlx1MDAxZPjy6XC6nyCsrcPhSId0h2EmXHUwMDExPiZ87GAtgqJcdTAwMDIwQkKwzmuRXHUwMDEwr1x1MDAxMG30L4dcdTAwMDP2nlx1MDAxNujZyGZcZqrK45rPMVx1MDAxMVx1MDAxN18lllfIk9RcdTAwMWI9npmxxGkneDFmeNwhvcZcdTAwMWPHoT1cdTAwMWGbXHUwMDEx5DEkXHUwMDFlRD2UVVx1MDAwZbFcdTAwMDFNYXLT/Vx1MDAwYlxyXG5Bl5N6hsOhssBCXHUwMDAzZlx1MDAwMYBcYm6+YtKaOGOkhFEwXHUwMDBihp61piWkXHUwMDEwXGKyTlhgVIBArWz8nVx1MDAwYlxy80zLSXR7LvGpoiVyXHUwMDEwv91KQ4yJ06tcdTAwMTC07rRcdTAwMTDORSqSSmGoKEYkR7j4XprcXCKcwSRcdTAwMTZjhjFMXHTfWulLs1x1MDAxOceAS1PBYKlnMzOAoypvgU9WOKBWT1x1MDAxN1b15Vx1MDAxMIlcdTAwMTEnMJ1cdTAwMTbSXHUwMDE4qUI6RS2AU/A7XHUwMDE3SaQwLYesztJcXJAzlnH8OYglXHUwMDFlWlx1MDAwMinVcUdKXspcdTAwMDbp0+9RnlGIs7zxXHRBo0tcdTAwMGJ4uK9cdTAwMDJ5lluRYp3TKnm9aXyffm6Rx3pcdTAwMDKTXHUwMDBiTChBaWfNdD6Jd9zDOCCAaepcIs1KysJDXHUwMDBlS1x1MDAxM8NcYn1jyYyQXHUwMDFlXHUwMDE1bjzMalx1MDAxZFx1MDAxYVxupVx1MDAxNFxcy0C9KVpcdTAwMDa5uPiK3GqOJU6J4ZRbXHRcdTAwMWPdzXDmfCf95FZcYk5cdTAwMDZPXCL6xdiPau5Mq00lV4pEsPHBjuXWQtBQSWExPuLQlUNIXFzs6bNCtMW/XHUwMDFjXHUwMDBlXHUwMDE4e2qI55dSXHUwMDBltOVpQcaRnGzFS5rlXHUwMDE28lx1MDAxNHJ5TFx1MDAxOSzHNFx1MDAxZNys1JaSXHUwMDFl54qRXGKiXHUwMDA2KWJkOj9YY68kSb9cdTAwMGLBlVx1MDAwM6fD1lxmMPG1RsrxRFx1MDAxOWhcdTAwMTYsXFxzRFx1MDAxOUH71MS/XHUwMDBl5s1RuCYxYVx1MDAxOVeIcUXqv1x1MDAwMXhcdTAwMTGeclxmU3NnkFx1MDAxMVx1MDAwMEk+vlx1MDAwZvPmqPpXmEBqXHUwMDFjXHUwMDE0XHUwMDFhITJ+XHUwMDE3hGEk/cZcdTAwMTn8XHUwMDFmXHJcdTAwMTVcdTAwMWOV/y825EVcdTAwMWL8+HDQ1ueEvHhcdTAwMDVvXHUwMDFiWfnBneXSXHUwMDAxXHUwMDA2oMSwd7G7ezfaW2byrLxRgr2HLXPU+mRJkzeliZXCXHUwMDE00yrJtdJcdTAwMTZp9MymXHUwMDE3TnjGcU5Kp9aymFwi+8wlvLVcdTAwMDeGmp9gXFxpyoPLXHUwMDA2iC5MXHUwMDE5Llx1MDAxNkvDu8Dv6o2j7TtxKpsnq1x1MDAxYqPus9P38zfLzlx1MDAwM6ix7lx1MDAxMqnhXHUwMDFks8SGSVx1MDAwMlx1MDAxMjAmk5dcdTAwMTSEf+t8e4pcdTAwMTbgWeakw7uO/FiZXHUwMDE5T7EpekqkiLf2XHUwMDE4pp9cXJOKfdI+WWQzUlx1MDAxOPn5QpzvivrvXHUwMDE28a4/TLVcdTAwMWGnJ+L9XHUwMDA2zIeJeM+MJXstTlx1MDAxYjmBwVx1MDAwMVx1MDAwNK2Hz9E/VkXrvd48aj+d6Yu1k6v+xVx1MDAwZT/PfZk2sjWPpK9cdTAwMDVcdTAwMDZcciVViIi3IFx1MDAxZE7BOC0omIxmMFJR2VDkQLTCsFCRbb/Fnta3ty7uy+5ai0r1fnu7mngvJ719XGK37d3R8dPt43FZXHUwMDFj1s6ao8H0p7xPZuOxvvJt3bRGrdWd0071UjbO1EpcbtflR5dcdTAwMDej5XKfPXfWz2vNu4M7efaYwnXrt8PTtUbP1rqiwzaH3zqHRzyhOHhemFx1MDAwM5fRvaxaoodcYlx1MDAwMck5drhV5Vx1MDAxY4u0dFx1MDAxZW3+gVx1MDAwNFtoa2agyFiMXHUwMDAwjlx1MDAwYsWdXHUwMDExTH1oXiFtXHUwMDE1b0P7X6lUXHUwMDE0flx1MDAxNoU7ZCri/UYo/XRcdTAwMTFv4DG6enysQzBHQrxShaPd0mapUCpubTV0S2yuXFxs591Z44mDkMpTSL8xXHUwMDA1QKdVkE3/akrqXFxU26/dgol4n6z298sn94fbZ43h4+63/vJl+3b5s+P7XfH66OniaOfu+Pthqb6x9m10XHUwMDBmf8f3XHUwMDFmkFx1MDAxMSmjhWHG0npF8lQj/OHnXHUwMDFjMbTSnuROYlx1MDAxZUFcdTAwMWLu2OlCNIGOKlx1MDAxZFx1MDAxZUCaw6TTXHUwMDFmyjSyUPBcdTAwMTZcXCGYfaHZgSwlvN9cYnmfLuGto8k4I62DuUTvhmeNldPHWmvzvsxcdTAwMWVcdTAwMWLdXHJdN4OjvHtrfHynqiorhaWuXHInjL88PXfxnVM/XHUwMDBid3ax5lx1MDAwNdxxo1Wqn1+cXHL5we7G3kHp7OZpM2m8fGCVi7tyeTC8MW25clQ4fzw7v0whXHUwMDBlf/s+qJ50zveaXHUwMDFkUWpdnTDeq16fp3Dd2lbhcbW8ZYS5vK98b/dcdTAwMWKVh+HVgsV3XHUwMDEzXHUwMDE531x1MDAwNahxXXvyyoDwh59zxNCIXHRcZpxiXHUwMDA2JEPAmJXaXHUwMDA2z9A2e1Ir6mjNLn9/l9I28i9m8dfSXHUwMDEw+l+UXHUwMDAwn73U9lx1MDAxYpEvJ1LbLlpqm0tOvYk6ueten43qvfLtoHLYld/vL1x1MDAwYnuXXHUwMDE3zXbeXTc+2JPUtlx1MDAwNrxNiop6pMmmpCeVYFx1MDAwZk5Lqfx7uy9CrL8+3FvrPqw89VxcvWlK5XX7POh+/+xY32pcXN6OoIiPrVO7PHnqXHKLcuMghesur5af7WbvdOPpwsrnjd7ZZvM8YazPipvkhkNEt3KAnldhJdyoclx1MDAwZURaI0uwTlx1MDAxYY54Y+VM9Vx1MDAwMCltKymBXHUwMDFlXHQyevahrCN9pW1kXHUwMDBmRoFOQ+FyUShEhkrbb1x1MDAwNNLPVNpcdTAwMTbRSkhcdTAwMTZZsJF2jtmB+DXcvPqpolJ4y1x1MDAxOFX6ypk2es5cZok6SIGcetyImFlccrBcdTAwMDbtQFqw3El/fuWrXHUwMDAxtlx1MDAxZalDWytcdTAwMDTSXHUwMDFhboNKSLTQZ42/l+XrXHUwMDE0XHUwMDAxz1Fxy7TF/1x1MDAxYylSaFx1MDAwYr7m3CWffKVA/MZIxTR1XHUwMDFhiHe2PsQv/vlcdTAwMDb1Q76SevtBurFcdTAwMDB4yKDw6VxuTlx1MDAxNZOMqvNdsDZ50eqAI4yeXkFzn1xc8Fx1MDAwZv/f82OeiqQmVlC7i7XJXHUwMDE3PHXzYleP+k9cdTAwMDdcdTAwMTfyYH1/48C2YG0n95CH91x1MDAxNsZl51x1MDAwMimIf7nwp9C2QMbArXGGyYwmRJPobHNDJeJM/9adXFx/XHUwMDBibU89lVx1MDAxONFGXHUwMDFi6bdcbjNtNZfEWfyycW791iEmXHUwMDFhzFx1MDAxNvClnFxiXG5tc0FcdTAwMTVcdTAwMDBgNVUsZCSQj5GK4a1mkqpKuZA2XFxpXHUwMDFiOVx1MDAxM7fSXGKSZ7BB0Vx1MDAxZicpXHUwMDA1zKh4Pyeu/WFaMLfSNpKHd3YsxS9jXHUwMDA2qcrvrbRcdTAwMWRp4vRcblx1MDAxYXdqXHUwMDEwx6JcdTAwMTdrMVx1MDAwYqFgbZP3oceXsORcdTAwMTbjjKckMObo9s7mY/hvzIA5Sc1pbbi/mytlXHJcZq2UXCL5Z66NXHUwMDAyJ8OEzayHXHUwMDE5oST1K4ZESftcbsN+bHlqXHUwMDE0o7qMryi1nVx1MDAxOE5mpLYtXHUwMDBmbnv0hmrjwtKkQoyZ0StgYKnBjIms+UTmoCSy/uSTPvGT9rlFXHUwMDE5O+6rwnTaXHUwMDAyXHUwMDA2z5mSXHUwMDEwhzyLdjnFXHUwMDA0ibZayCpcdTAwMDXyXHUwMDEwzpDVao6JvVKCQ5hcdTAwMDA2o7lcYqmsJo1Nn0DM67bujnT+Mqr5zDnKxC/KTqNcZt5p5fBuO4zmxoiQSZ/3XHUwMDExp/jJ3Vx1MDAxOeJkSc2Blia5MdY5k2BcdTAwMTBcdTAwMGKGaJEmTa+AMaeFaCpO/1x1MDAxYUj33O/jb0Fa/HphbiFNeZRcdTAwMTOi6yE9Um66ZoXkr1x1MDAxNcdD1ow1kbPSg1x1MDAwNYRMTE9cdTAwMWRiKymWTNDKp1x1MDAwNztcdTAwMTZxtEjgpODMyuDqXHUwMDEzXHUwMDEyJ7BSZLP0nXNIe1x1MDAxM07C9K/F1N4gU/LXjLZcdTAwMGalXCJPpZV+Qzrso1x1MDAxYbXo3ZxcdTAwMTYzgbRIXHUwMDAxIEyTm0hcdTAwMGZpWThcdTAwMTL4YVxuf4G5hca8aJtcdTAwMWZcdTAwMWZcclh7WpCneXTHr1H4cczOMVx1MDAxZlx1MDAxNl/KkFPIQytcInkkpGpcZok0m1li11x1MDAwZTmelVJoLtH2IaNaXHUwMDFmj1x1MDAxNLS0kpivXHUwMDFhTFon32RcbvFcdTAwMWM4XGb8luGDXHQwOI5WQ7NcdF9cdTAwMTHuXHUwMDEyQlx1MDAwYj5nXHSCZN2Z08BsuNo/Pm0g8Wu84VxcMlx1MDAwN++cXG5LXGbBXHUwMDEz9WtcZrdTK3ZT6teWMcucJVFVZ1x1MDAxNlxc/TrS3OlVmLX0tLBcdTAwMGVMZJVcdTAwMDJH16Gba5NjXXx5VY6xXHUwMDBlmSymL4pkviZcdTAwMWIx/9C+toiEmFx00lPBXHUwMDA0PqNNNkOwzSFcdTAwMTFcdTAwMDEtMPpcdTAwMDG5n1xiNi1gvsWdU3+zubjkcFbqmlx1MDAwNVPDXHUwMDE5qWtcdTAwMTaiXHUwMDAzlkybLGnSXHUwMDFjkLrm8neb6p86u1x1MDAxMDTm1Fx1MDAwMCymy1x1MDAxYcmwMpLPIc9cdTAwMTLfY5JXXHUwMDAwXHUwMDAz2kxeXHRN2/yZaalFKZiHaYpmtIBF61lZTbgxQ6WN+Fx0XHUwMDAwXG5IVDNcdTAwMDTRLO1cdTAwMTNFe1x1MDAwNpEuJ/dcdTAwMTdgv9ZZacqlNHzFif05ptympa2FXHUwMDBimdmf1rZmr1x1MDAxYlx1MDAwNP1uU/0xlkevQtDo0kJcdTAwMWX/jHFcdTAwMDB5kMCSynzycqf47vXcXCJcdTAwMGayVsfIYfH281x1MDAxMGVrTrvSXHUwMDE4iym6yErfwePcXHUwMDFhvDxSZzEurVx1MDAwZUFcdTAwMWVD+qRcdTAwMTh7jGJcdTAwMWGBUFx1MDAwNCs8qVx1MDAxNlx1MDAwMFx1MDAwZqWhzrJwyDPHkuKvkraep77zK0pbR5j8y+GAtadcdTAwMDV53K9cXD3bfEI2wXXytYB4na/cXCKe9Fx1MDAxNHNgLVIt6/RkpvBFXG5PecbSXHUwMDAyjFNW0D5WXHUwMDE5sS1cZmlSaIzwQCq/LFxm8qTxLC3KXHUwMDE5Lmhjclx1MDAxZrC9ylUgXHUwMDFktNa/wcjXgbw5XG7FpKG2Rlx0tKwoSVgsXHUwMDE0X5yW1PsoXHUwMDE1OFx1MDAxN5x2T1fammb6ncGAy1x1MDAxNaJcdTAwMWEpOfNg+lximPc6pEPUj0nPXHUwMDE5glxmcKFAL9rox4eD9j4n6MWLW8vIXG5ZrpzlXG49P3n7b/HsumBOllx1MDAwNyVl959LO9e3tXa//7nI96ZkL4Z7z1x1MDAxOKBaXCKHLFtMz5KRuDVVXG47Wn82msdwvV+gbq1cdTAwMTiziM2Y9YJcdNlcdTAwMTRTW4nYZ9Lo4v+V6tZ9tq6/mcJ1ye1fqrarbj5cXNzmsD9VsEhXXHUwMDExXHUwMDE4M501alx1MDAwZXHr0C+dc0+xwqP2XHUwMDFiyShcdTAwMTYg75zxXHUwMDE0m6anRGZFyERcdTAwMTTebC1cdTAwMTXjTiVcdTAwMTS44JxcdTAwMDPtXHUwMDA295W6U0lTeqnfxTCIw3h3n2qcyPVcdTAwMWJwXHUwMDFmJnJcdTAwMWQ2oOyVrlWMLj0mVowrk5zeXHUwMDE3K537g+39Yv9x/+TusLh8vHbz7TDv9N5qWu1BK8Qoh4YoZ/et0Z7GwCFccm1cdTAwMTbCTJ6Vrqm/kmlMRVx1MDAxNkvRqraz0VlVR+XtneeDKi8+NI6/7W8nVqzsnenCxe7u8vfW6LZ+ftVcdTAwMWaxy+fpT3mXasTqxfJKo7Grz1x1MDAxZWF/beO0dXByvmrSuC63urJcXNsv6b1uubTG7+3d02FcbteVa8PLh4fT58u7slx1MDAxYVx1MDAxNau1R/3tfDeF6/b5cP+8VbTn6qjCd3q3T98ujraSXTcv7ITz6ElboWkmiZk5lotCrTXnXHUwMDE451x1MDAwNPNcdTAwMDTyXHUwMDEzpl8o8jQ/XHUwMDAxY5A4UINcdTAwMDVn1imeK1x0bW6BpFx1MDAwNCCNgp5F4SeZami/XHUwMDExpD9dQ5vb6H5cbqTPtFx1MDAwMJa8a+vp6OL2yI72bi7Ojtx2x15cZrc+e0+pjzJcdTAwMTKS0Fx1MDAwNsaoQVx1MDAxN1x1MDAxM1x1MDAwZeHfKzhvhFx1MDAwNH9LUrVcdTAwMTZfLNmt5+fzYe16fXTav1x1MDAxNevtm4OWKT+3Pps4XGLYq5y2V66Xn9ZKe6KyudY6v2nkmDg81+47xW1lYE9cZrabp5vy4dK300TsdXNDXHUwMDFjTHRyJC36sdNzXHUwMDE0XHUwMDA1h1tVzqHIXHTjIdZYh19VXHUwMDBi/+zbT21uKjdgmivhfCQqXHUwMDBm0tyYs41liFLoiV9cdTAwMTTekKUy91x1MDAxYpH005W5J01cdTAwMWJcdTAwMDHWoLQkIaDEnnqx0jve7IjqbuOmf9VcXG1s1G9Wc7/leDxpIF1ubZU1RtNcdTAwMWGSzbNUJ0NXXHUwMDE30v+NXHUwMDE3gTRcZp9Oud6UW8WT/lXje3Vnp3WycpJYU7M4gkbtuoLcYVx1MDAwYlxupfZK9/IxjVmMg5vyk74qnu5cZtZ7V8PBztrqXa2VwnVVf7k6qJ7rtZu66/e/jfRNcX0thetcdTAwMWWxp6Oz69VS9XZ1fXS32z2T/a00SM5cdTAwMDfIU17ISJxcdTAwMWGxoKXheSYxwo0151xi5zhiXHUwMDE4R8TAuy6nui5/6ohrZjitNmmteXZcdTAwMWGg79JcdTAwMTF3XFxcdTAwMTlFPWtfh41kLyP+RqDOiYy4ipShXHUwMDAx54CWXHKTr7BcXD7po0v7fH5xWVs+fq4/NdfrXHUwMDA3pbw7bjw1UdTHrjn1tEhcdTAwMDZWzI4rT9REM8U5qMXaI7tsznY3draGx5Wt7eduudPZ7Ir7z2Ym7PH2rNd6OGs0SrVcdTAwMTPF9nfWT1bXU7iuq9TuxFnv4fpQb3dcdTAwMGJVflL8ftTJMZO6Plx1MDAxZT31Teu41Fx1MDAwN3XbcSvbu/dXdsGYiY5mJlx1MDAwNn1NkPJXYoRcdTAwMGK31pwjnJOk8qlJoFxcXHRl+FxmwknukVx1MDAxOK2m3mRcdTAwMGL6Q1x1MDAxNaLpy5NLZlx1MDAwNG26/oVcbkAylCd/I0J/pjw5mMg5XHUwMDEyXGa/diyNOIfoZ+zKe15cdTAwMWRVXGJvrFx1MDAxMlx1MDAwNoyUoeVMoVx1MDAxNqe2d/RfvFNcYlrWZtT563FqjdHgjEA2hJlBaDG3RNKEqZ2hylft34Dop1winiDyqHya81+nlnueumll8Elro0jJlclcdTAwMTCBcukpkI5JKZB/SvlaRjxnLXf8wur0mFx1MDAwNKOd55Dy0i6zpI1cdTAwMTlcdTAwMThcdTAwMTSGXGZFXHUwMDE16I5Tr5twZrF7g1x1MDAwYjFGT6+guU+u+If/7/lhj0fLgCrahFhLSF7HvbMuV4bo5Pvr19XCJnv+tn93sp571IOx+CFDv9SWwYzcXHUwMDAxSZQzwVx1MDAxOGVnoLjLpsItkUQ54pl0WutMpn5zXHUwMDAyaX9LlE89lVx1MDAxOMe1kY6LLFtoXHUwMDBic+ycXHUwMDE4vyyfV79cdTAwMTXMXHUwMDAzg1SFXG5flJgwgFx1MDAxN7dVnlSkVoaRxNdccpS6PrlGsoTIwKRCvFxmab8gtVx1MDAxNOo6XHUwMDA3Y2gxWEGwXHUwMDBlRNFcdTAwMTKyzqhcdTAwMGUkJ379YVowq0+uQ2RLplx1MDAwNcpcdTAwMDVcdTAwMGX9fVxcJX41d4arTFx0lNtcdTAwMTCqsujMJMrG6Vx1MDAxNbTu1PBNRuKbkM7SpiHJtVx1MDAwNOJXuPKKb8hLODV3gZvaXHLqpzg55mDALJq7XHUwMDAyyKbMjUSjkV5zjY5cdTAwMDfKalx1MDAxZNZfxo2HXHUwMDFjXHUwMDExsUJQXHUwMDEzj1xuK3Sj3neJeeVXXHUwMDA0uMRYMqNOblxcUErgnbLB8Vx1MDAwYkEzcCbdXHUwMDE4YDlJ4JnfUDQ40qLpXHUwMDE1tOW04FxmfF1vs3lcdTAwMTZITlx1MDAxYm2x5LNL8etcdTAwMGU5xjNSX0CqRlwihmxmhZpcdTAwMTaOXHUwMDAx7Vx1MDAxZlx1MDAxOIVcdTAwMWKVzUJcdTAwMTfzJDO0Y69xXHUwMDA2XHUwMDFmsF9cdTAwMDTAL4MuMapcdTAwMWKjxtvfOFx1MDAxYmiYtVx1MDAwMrNwjHhfXHUwMDExz1x1MDAxMoNJhjro8bPIM4D2XHUwMDA1dNAjTJpeQWNOXHUwMDBi0fzKj1x1MDAwMUQjVVQzz1x1MDAwNuDxK565RTTtXHTkvGjnXHUwMDE0VuQ0RyNcdTAwMWR0htxHYbhcdTAwMTHcv3iQJqJcdTAwMDFyxJfyY4VGXHUwMDAw3LdNjU9cdTAwMTXYeaT3hSFPXHUwMDFiQFx1MDAxZVx1MDAxNqBoSiGnttp9xS2y3kSTn/IhyLZcdTAwMTVcdPBcboPZXHUwMDFls75cdTAwMTnaXHUwMDE5XHUwMDFkdItnWNJcdTAwMTlxXHUwMDE4I95cdTAwMDdxXHTFiu14XHUwMDEzXHUwMDA0TVpOyNhCdYFp70sjXHJmzFJIzpVcXGzZk2h7p1fQ0tOCO1x1MDAwNdGymmhcdTAwMTOMoVx1MDAwYiXvvIovxMgp3OFcdTAwMTlcbu1cdTAwMWIpmpRcbjNSMyuCrj2tueVcdTAwMDCgreLZLFx1MDAwZlxuXHUwMDBmjERWgTydRFx1MDAxZlx1MDAxZFx1MDAwZsU77XE0esyigGzEXHUwMDA01O1cdTAwMWPVXHUwMDAwKJFNXHUwMDE1dc7xLulcdTAwMTZcdTAwMGK0XHSwpK2LXHIjX2J+Tc1cdLhcdTAwMTgptUZ3c1x1MDAwMEyE6MilQ+jmk0FcdTAwMDdS27PWcoPZhFhwXHUwMDE59EK0xY9cdTAwMGZcdTAwMDeNPS3Ii9lcdTAwMDVcdTAwMTWHojhcdTAwMWFGcoJcdTAwMTdfXCKWX8RjXHUwMDFlRyqLTkmyMTPqdiSFTpJcdTAwMTLCUkuGzUpKOFx1MDAwNOCspzBcdTAwMDdVXHUwMDFhk1x1MDAxYur4tcE5N8ekpi1cdTAwMDC+Yo6aOD/8hVLo80zCfTEp9IAxp1x1MDAwNmAsskWVRNAtieMlXHUwMDA2sPiunjxcdTAwMDOY00jIwHFcZoV2uriBxNA15Vx1MDAwZlpcdTAwMWHAXHUwMDE0IauKLob8gfiBXHUwMDEzXHUwMDFhqJoobFx1MDAxOcHhWVxisYIptIVppdCfkMalsqR4+Fx1MDAwNSFtjmm3v7XQJydEW1x1MDAxZb1cbkGjS1xyenT0llnCUvFcdTAwMWFjybEnXoYgv9hcdTAwMDOkRc+FQ59Fi5wmT5gseEZLa1x1MDAxOYZdy7NS6vBo9Vx1MDAxMVx1MDAxMz2EQMWpojBcdTAwMDR6XGZt7YUpIcni41x1MDAxOTJcYj1IXHUwMDAwmFDmS24hP8dcbua0XHUwMDE4OufBaohcdTAwMTk1dPNcdTAwMDbypFFNOqOGXHUwMDFlVkw6pYYuTLDEdZFAr1x1MDAxMG3zL4dcdTAwMDPmnlx1MDAxNuhx/15cdTAwMDPBSTIgis2To168XHUwMDFhXFx+UU95yGW1Ia1TdM/pRVx1MDAwMVx1MDAxMkTnXHUwMDE4fJ1cdTAwMDMq+Zqaik+Vclx1MDAwMVo9bVx1MDAxNYkw66RcdTAwMTahNfTaw9AomVx1MDAxM9R9XHUwMDE4olx1MDAxMaIknuN8XHUwMDE1wl9cdTAwMDf05qhLk0bSXHUwMDFk5LQxJKdpmDCAYZJcdTAwMTI6wFOBg33n5qjz1PVcdTAwMWKJMGxomtw4THCDJJB6skhNQlx1MDAxM/+zerF3Ro22d3pcdTAwMTVcdTAwMDKmPifixbYwW4gu7ZDk4bRcdTAwMDKYXHUwMDE49OKfcU5BXHUwMDBmpPC0Jlx1MDAxMXLay57PlOI6j9TplVx1MDAwNcxHqH7zQ4jXaNSrzlx1MDAwNVx1MDAxMc9cdTAwMWHhWWedwYxcdTAwMDdcdTAwMDRAyOaoerxrNbrgz1eA5ml0TzSkXHUwMDA1XHUwMDEzQmemUayM6v2L8ua3i62rVdW9LVx1MDAxNJO22F5eX5f6e6LfZ8N2n61cdTAwMTb6j3CVhlhJ426vrW7Xzyrr9lxc8O2NYuX+cTWF6+rtQ7ht746On25cdTAwMWaPy+KwdtZcdTAwMWNcclK4bvzmK++/bmZcdTAwMTK8XHUwMDE5SeU+slx1MDAxYmWWd1xc+biy0i7vsPJQXzdcdTAwMTer5VrL6NxcdTAwMWI5sZVcdTAwMGWBKDEgh3tXOCDPXHUwMDAw62fBMYZcdTAwMWNcdTAwMGZjP9O07Vx1MDAwM/fvZzNep8VgqYVcdTAwMWJXrXxcdTAwMWOPo1x1MDAxOKijbeaQ5VplLVUnhEz5hXRbXHUwMDFi2rPRXG79hbqti5VhhfqXM+q4foNPzHZcXFx1MDAwN0eTvaSti1x1MDAxNpJEkOO0y3Pydcb41e3c8idDK1FcdTAwMWGTRpKEVWK6slx1MDAwMu3SQ5aJXHUwMDA3lDNcbsnWXHUwMDA3XHUwMDE5VNVVw1x1MDAxOJSmrc+FUI5RxWZIXYWTXHUwMDFlXHUwMDA3hYhCdYRcdTAwMDZEwH8tLVJjXHUwMDFhtFhcdTAwMTIwUlXv1dpw9Xyjd/h0tHJ+djXsbyWNl3s330zlqFluXHUwMDE0i/cncCqK7nz3XCKFONxqXFzejqCIXHUwMDBmrVO7PHnqXHKLcuMghesur5af7WbvdOPpwsrnjd7ZZvP8KoXrLppkzX5ruF8tVTrNjdVmafR8yEuqlHC8eeE53NfhXHUwMDE52FiIZl/n2ak+3Fx0co6bWkjkMlSQXHRGIDRNr25cdTAwMWFcdJ7AjJCDo7k29jGiXHUwMDEztVx1MDAwNZdTXHUwMDFl5ZL4QchcXGj3yUREXHUwMDA3wZ4jlKeBlItCdEp9PL601qllxHTeiPyzTCdkONlcbsxIXHUwMDE3OU9cdTAwMDRcXEhahUxOc+LTtJy6K1x1MDAwN8Y8JqhcdTAwMTODqlt8JYUvXHUwMDAyM0Bzks5cdTAwMDC1XHUwMDBmUFx1MDAwM/vHKuajeFx1MDAwZe3nwYSi+mGS2/BVsU72zFx1MDAxM56jY1xc0lwilf+U11x1MDAwNUHydp2KLNTCzY1cdTAwMGZOOnv3q9ptj3qPXHUwMDE1s8FcdTAwMTmvVf3UZLqUiVx0QSmoUILT/LfvtFx1MDAxZpPjmI7icU59d9yZ99ZXzTM3To1cdTAwMGVaMCWpIIb7N1x1MDAwYn7VvHH4bKmwXHUwMDBm+TCJ41x1MDAwNMa0SJPjhUiLXHUwMDFmXHUwMDFmXHJcdTAwMTj75Hp/+P+el55IXHUwMDFlXX1lqVx1MDAxM0Gr5GuB8TaXW7wj48akyFGsXHUwMDA3OT0vzpmlbatcdTAwMTlcdTAwMWVGXHUwMDEzo1xykrNJ64znXHUwMDA0SamOO7KYXHUwMDBi6XhUQa1cdTAwMTlcdTAwMDVGO8PS2P09np/EcfR8zUV+jP1cdTAwMWNcdTAwMGW7/fpSpdX6q4NcdTAwMDOpvJdcdTAwMDPFbKs4NfRZtlx1MDAxM/nxiTiPXHUwMDE07+Q8jEVPxTpjXHUwMDEwg/lcdTAwMWObn8Zvt5ZXXHUwMDEw4Fx1MDAwNv2cilulNJii2GlcdTAwMTSgLVx1MDAxNFxyXGI6ZPBlP6ZUXHUwMDEzXHUwMDA1XHUwMDAynDtPMy5cdTAwMTTmjFxmR1x1MDAwNCGkXHUwMDA38Fx1MDAxNORcXKBcYp01RotA11xmMGWss+xLsp7at5WTXHK9fXvb727d1KDXKFx1MDAwZopcdTAwMTdhXHUwMDA0gyguqXQxvJdSSOHTXGZLm/TMo56jXHUwMDE5Pl1cZkNU+qkn2ik+ziNp810z7iNW2i52m2Ah2uLpXHUwMDE1tPWUSI+K3p+NqiyUQ0efYzvFWJvLLeBZakuVIKyhLelmpGuAcc9cdTAwMThNXHUwMDFiS+JcdTAwMDPg7GObrURcdTAwMDKeQFg1zjo+lmpcdTAwMTBhQlx1MDAwZiZY8cSowUNmv9tzXHUwMDFj68l+U9HJ18ua9ezg9Zeu6sPHer3zV2d4U1+q/Vhg+qtT6dSWek/Dm27nV5OheUeViCPpd85cdTAwMGJcdTAwMTlcdTAwMTfZZWdcdTAwMTn12jqRvK84fl+53Fx1MDAwMobWmHBLSarDXHUwMDBl/5hcdTAwMDZcZoH8yTEjjbJcdTAwMDJTXHUwMDEy/9YmqVwiXHUwMDA2c1x1MDAxZbpcdTAwMDd3jpbahFxiW7FmnqLOR+NojUxcdTAwMDKTwYkhTGoxn7NpbKyWXHRFepfvJ6RIp+dcdTAwMGa1/Z2a7VZPr/ebZq+/XHUwMDBmlU5cdTAwMThcdTAwMWRcdTAwMTnr3Vx1MDAxYVxuu0g2JJXB6sw40lx1MDAxY+XrTFDZOlx1MDAwMEZpx2mvnMCYwHOSxIk1OEWiK2LRS8UjjX78+1x1MDAwMXNPiSVJXHUwMDE3uXLFqWFHKqaTg1682eVcdTAwMTb0jPFIVpHj/cdvrKeX/Fx1MDAwNXBPMmc5NchcYp3Rkj/XklRSLWB2gOBqw1iS/6v8VIvBXHUwMDExU3fqZ7Kk7HdQ/XUsaVx1MDAxN3nLUuO+U1x1MDAxZKIj/OuvXHUwMDBlcop6dTgmJf/4q/Myup//qt7Uq3dLvXq/3Vx1MDAxY5DfvHunhveSp5RcdTAwMDabiFO59847cVx1MDAxN72tXHUwMDE0ulx1MDAxM5e0vJRcdTAwMThg4jfeyy3AKOFcdTAwMDElWErSpnAwoyDqmOeEpb2eXHUwMDA0Rjp/XHUwMDExVppcYkMlQ1x1MDAwMixtTKtpP7gwtVx1MDAxNuMhXHUwMDAzVExRXHUwMDE3MtKnXHUwMDAwp1KaJs+dzatYS5aUqmm/b1V2XHUwMDBiT5dcdTAwMDXV7O3DXHUwMDFk6y1PlTtPUSprrdCAXHUwMDBmXHUwMDFlYZGZsMZf5C9GkJqsYFxi9k78XHUwMDAyRVHkUY5ZKy1cdTAwMWI32amwXHUwMDFkJjBcdTAwMDIxxVx1MDAxY8NzNTPBR7JQnCrS5MdHXHUwMDAz1j4npYrOI1kkp6JFTtrlI/nEU/zGW7lFPG09ZDNyrIhMkjlTiIdHPEQ6PKgp7cgqi9RcdTAwMWVtsznWJzJW2JByIGE82iDdMqulXG6KiyqHSY/4kmint67NQVnfXHUwMDBic7a/L1x1MDAwZU9cdTAwMGJHsLJcdTAwMWSBK2K83TmMN8RcdTAwMDBcdTAwMDMhasmYP1xuXGZvXFzS1Fx1MDAwMZOv0pdcdTAwMTmqjUpwhmma9teYXHUwMDFlWlxiljtcdTAwMTjPXHUwMDE4KTHPRFxmXHUwMDAw0rFabLCLtvfx4WlTn1x1MDAxM+pcIrNHXHUwMDExuaVcdTAwMWU+b1x1MDAxY1xuzLGjXrzJ5Vx1MDAxNulcZu1ZQ1wiytpcYibcdPKIyZknOVx1MDAwMIJcdTAwMWTNr2Q1YaaRtnOCW011NFx1MDAxMIJ0IYVcdTAwMDVcdTAwMDC0W1x1MDAwMk9DXHUwMDBi/v3JY/b7Sv665HG5WsXbsTR266VGt/8yod1cdTAwMThXN9bfX2z53vQw8XDSKDyI3HRTRrfkXG4rSfpcdTAwMDaSzy/Fc/DcQoTWXHUwMDFlZnWC4Vx1MDAwZpz2/p5O/5TzkJRz2s1XMPWxXTejIYKAXGI5XHUwMDE3bUg+Lo9OtFxup6hD3kmd+W7gcVx1MDAxMFx1MDAxMZ/zT1lh7iHiiHZFRV9sXHUwMDBm/uq0u7V6a7A07C5tXHUwMDFk7u/91en2xz/QXHUwMDFiL4d+NWC8c3Bzrcn98eNp/Fnp9Vx1MDAwZYf4LF7pXHUwMDFlmlaz9uOGTob550Oz/rhcdTAwMTJq6PSiZz2GJPL9+php/+eP//w/t6ah0iJ9Back-Endapp groupmodelsviewsserializersurlsapp eventmodelsviewsserializersurlsapp roommatesmodelsviewsserializersurlsDatabaseFront EndStore alldataLink betweenthe databaseand pythonMain function:select data,update data,check permissionsAccess point forthe front endTransformsmodels to JSONor JSON to models

What's the back-end?

The back-end is the part of the application that runs on the server. Its role is to:

  • send data from the database to the front-end
  • receive data from the front-end and store it in the database
  • check if the user is authenticated
  • check the permissions of the user to access content

In our case, the back-end is built with the Django framework.

How is it organized?

Each feature is stored in an app. For example, we currently have these apps on Nantral Platform: account, groups, events, roommates, mentorship...

Then, each app is organized as explained in the schema above. We have:

  • the models in the models.py files
  • the views in the views.py or api_views.py files
  • the serializers in the serializers.py files
  • the urls in the urls.py or api_urls.py files

The old (legacy) back-end

In some apps, you can also find two other types of files: forms and templates. Their job is to replace the serializers, to return a full HTML page instead of just some data.

These files replace the front-end. They were used on Nantral Platform before the React front-end was created, but today, we try to remove these files and only use React for the front-end.

The helper files

There are 2 other types of files that are important, which are used to help developers:

  • admin.py: they are used to configure the admin interface of django, which you can access with an admin account
  • tests.py: they are used to write tests for the app, which are very important to be sure we don't break anything when we modify the code